diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..1639887 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,59 @@ +[*] +cpp_indent_braces=false +cpp_indent_multi_line_relative_to=innermost_parenthesis +cpp_indent_within_parentheses=indent +cpp_indent_preserve_within_parentheses=false +cpp_indent_case_labels=false +cpp_indent_case_contents=true +cpp_indent_case_contents_when_block=false +cpp_indent_lambda_braces_when_parameter=true +cpp_indent_goto_labels=one_left +cpp_indent_preprocessor=leftmost_column +cpp_indent_access_specifiers=false +cpp_indent_namespace_contents=true +cpp_indent_preserve_comments=false +cpp_new_line_before_open_brace_namespace=ignore +cpp_new_line_before_open_brace_type=ignore +cpp_new_line_before_open_brace_function=ignore +cpp_new_line_before_open_brace_block=ignore +cpp_new_line_before_open_brace_lambda=ignore +cpp_new_line_scope_braces_on_separate_lines=false +cpp_new_line_close_brace_same_line_empty_type=false +cpp_new_line_close_brace_same_line_empty_function=false +cpp_new_line_before_catch=true +cpp_new_line_before_else=true +cpp_new_line_before_while_in_do_while=false +cpp_space_before_function_open_parenthesis=remove +cpp_space_within_parameter_list_parentheses=false +cpp_space_between_empty_parameter_list_parentheses=false +cpp_space_after_keywords_in_control_flow_statements=true +cpp_space_within_control_flow_statement_parentheses=false +cpp_space_before_lambda_open_parenthesis=false +cpp_space_within_cast_parentheses=false +cpp_space_after_cast_close_parenthesis=false +cpp_space_within_expression_parentheses=false +cpp_space_before_block_open_brace=true +cpp_space_between_empty_braces=false +cpp_space_before_initializer_list_open_brace=false +cpp_space_within_initializer_list_braces=true +cpp_space_preserve_in_initializer_list=true +cpp_space_before_open_square_bracket=false +cpp_space_within_square_brackets=false +cpp_space_before_empty_square_brackets=false +cpp_space_between_empty_square_brackets=false +cpp_space_group_square_brackets=true +cpp_space_within_lambda_brackets=false +cpp_space_between_empty_lambda_brackets=false +cpp_space_before_comma=false +cpp_space_after_comma=true +cpp_space_remove_around_member_operators=true +cpp_space_before_inheritance_colon=true +cpp_space_before_constructor_colon=true +cpp_space_remove_before_semicolon=true +cpp_space_after_semicolon=false +cpp_space_remove_around_unary_operator=true +cpp_space_around_binary_operator=insert +cpp_space_around_assignment_operator=insert +cpp_space_pointer_reference_alignment=left +cpp_space_around_ternary_operator=insert +cpp_wrap_preserve_blocks=one_liners diff --git a/.vscode/settings.json b/.vscode/settings.json index f6f2aea..a42c50e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -143,7 +143,9 @@ "modui", "MOTU", "Netplan", + "otype", "Overdriven", + "PCKE", "Pedalboard", "pipedal", "pipedal_0", @@ -154,10 +156,12 @@ "pipedalshutdownd", "pipedaltest", "pipedalui", + "Pkce", "rdfs", "RTAS", "Scarlett", "setlist", + "slimmable", "Sonus", "stompboxes", "ToobAmp", @@ -171,7 +175,7 @@ "cSpell.ignoreWords": [ "nammodel" ], - "cSpell.enabled": true, + "cSpell.enabled": false, // Disable all automatic completion suggestions - only show when Ctrl+Space is pressed "editor.quickSuggestions": { diff --git a/CMakeLists.txt b/CMakeLists.txt index a279c18..7f70fbc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,13 @@ cmake_minimum_required(VERSION 3.16.0) project(pipedal - VERSION 2.0.102 + VERSION 2.0.103 DESCRIPTION "PiPedal Guitar Effect Pedal For Raspberry Pi" HOMEPAGE_URL "https://rerdavies.github.io/pipedal" ) execute_process( COMMAND dpkg --print-architecture COMMAND tr -d '\n' OUTPUT_VARIABLE DEBIAN_ARCHITECTURE ) -set (DISPLAY_VERSION "PiPedal v2.0.102-Alpha") +set (DISPLAY_VERSION "PiPedal v2.0.103-Release") set (PACKAGE_ARCHITECTURE ${DEBIAN_ARCHITECTURE}) set (CMAKE_INSTALL_PREFIX "/usr/") @@ -67,8 +67,8 @@ install ( ) install ( - DIRECTORY ${PROJECT_SOURCE_DIR}/default_presets - DESTINATION /etc/pipedal/config + DIRECTORY ${PROJECT_SOURCE_DIR}/default_presets/presets + DESTINATION /etc/pipedal/config/default_presets ) message(STATUS "CMAKE_SYSTEM_PROCESSOR: ${CMAKE_SYSTEM_PROCESSOR}") diff --git a/LICENSE.md b/LICENSE.md index 580f2b0..2ba81c1 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -2,7 +2,7 @@ Original content in this project is covered under the following license. MIT License -© Robin E. R. Davies +© Robin E.R. Davies Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), @@ -22,13 +22,38 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +--- +The following files are provided under a T3K license. Under an arrangement with +Tone3000.com, permission has been granted +to Robin Davies to distribute these files ONLY with Pipedal. + +- "default_presets/V3 Factory Presets.piBank" (contains compressed versions of the protected files). +- The installed file "/etc/pipedal/config/default_presets/presets/V3 Factory Presets.piBank" +- Files installed in "/var/pipedal/audio_uploads/NeuralAmpModels/Factory Models/" +- Files installed in "/var/pipedal/audio_uploads/IRs/Factory IRs/" + +Please contact the original authors for permission if you would like to distribute +these files for other purposes, or if you would like to distribute these files +in a forked version of PiPedal. + +## T3K License + +Users may download and use the data file in software and publish the resulting outputs without royalties or restrictions. However, they may not upload, republish, or distribute the data file without the author's permission. + +## Original Authors + +- tone3000 - [https://tone3000.com/tone3000](https://tone3000.com/tone3000) +- amalgamaudio - [https://tone3000.com/amalgamaudio](https://tone3000.com/amalgamaudio) +- kenazmusic - [https://tone3000.com/kenazmusic](https://tone3000.com/kenazmusic) +- outmodedelectronics - [https://tone3000.com/outmodedelectronics](https://tone3000.com/outmodedelectronics) + + --- PiPedal also makes use of a wide variety of open-source source-code, data, -and directly- or indirectly-linked libraries that are covered under the following -licenses. +and directly- or indirectly-linked libraries. -Portions of PiPedal are covered by the folling well-known open-source licenses: +Portions of PiPedal are therefore covered by the folling well-known open-source licenses: MIT, MIT-like, BSD variants, Mozilla, LGPL, Apache 2.0, CC BY. SIL @@ -41,148 +66,156 @@ compatible with a GPL license. --- -
- © 1995-2017 Jean-loup Gailly
- © 1995-2017 Mark Adler
- © 2005-2011 David Schultz
- © 2006-2009 Graydon Hoare
- © 2009-2013 Mozilla Foundation
- © 2009-2016 compiler-builtins Developers
- © 2010-2011 Dmitry Vyukov
- © 2010-2020 The Rust Project Developers
- © 2012-2018 Free Software Foundation, Inc.
- © 2013 Koka El Kiwi
- © 2013-2014 The Algebra Developers
- © 2013-2018 The Gtk-rs Project Developers
- © 2013-2018 The Servo Project Developers
- © 2013-2019 Sébastien Crozet
- © 2014 Alex Crichton
- © 2014 Armin Ronacher
- © 2014 Benjamin Sago
- © 2014 Ning Sun
- © 2014 Paho Lurie-Gregg
- © 2014-2016 Simon Sapin
- © 2014-2017 Kang Seonghoon and contributors
- © 2014-2018 Jorge Aparicio
- © 2014-2020 Optimal Computing (NZ) Ltd
- © 2015 Alex Daniel Jones
- © 2015 Bartłomiej Kamiński
- © 2015 Brendan Zabarauskas
- © 2015 Brian Vincent
- © 2015 Connor Hilarides
- © 2015 Corey Richardson
- © 2015 Danny Guo
- © 2015 Dmitry Roschin
- © 2015 Gigih Aji Ibrahim
- © 2015 Johann Hofmann
- © 2015 John Nagle
- © 2015 Jordan Miner
- © 2015 Marvin Löbel
- © 2015 Milo Yip
- © 2015 Pyfisch
- © 2015 Sean McArthur
- © 2015 Steven Allen
- © 2015 THL A29 Limited, a Tencent company
- © 2015 The assert_cli Developers
- © 2015 The quick-error Developers
- © 2015 The rust-unreachable Developers
- © 2015 arcnmx
- © 2015 const-cstr developers
- © 2015 grabbag contributors
- © 2015 nwin
- © 2015 skdltmxn
- © 2015-2016 Kevin B. Knapp
- © 2015-2016 Peter Atashian
- © 2015-2016 Victor Brekenfeld
- © 2015-2016 clap-rs contributors
- © 2015-2017 Andrew Gallant
- © 2015-2017 Doug Tangren
- © 2015-2018 Guillaume Gomez
- © 2015-2018 winapi-rs developers
- © 2015-2020 Ashish Myles and contributors
- © 2015-2021 Ulrik Sverdrup (bluss)
- © 2016 A.J. Gardner
- © 2016 FullContact, Inc.
- © 2016 Itoa Developers
- © 2016 Jan Hudec
- © 2016 Junfeng Liu
- © 2016 Kathryn Long
- © 2016 Martin Geisler
- © 2016 Nika Layzell
- © 2016 Oleksii Rudenko
- © 2016 Remi Rampin and adler32-rs contributors
- © 2016 The multipart Crate Developers
- © 2016 Ticki
- © 2016 Titus Wormer
- © 2016 base-x contributors
- © 2016 bitbegin
- © 2016 lazy-static.rs Developers
- © 2016 oyvindln
- © 2016-2017 The Fuchsia Authors
- © 2016-2018 Nuxi
- © 2017 Aaron Power
- © 2017 Frommi
- © 2017 Jan Bujak
- © 2017 Nick Stevens
- © 2017 Redox OS Developers
- © 2017 Robert Grosse
- © 2017 Serde Developers
- © 2017 Tim Visée
- © 2017 proc-macro-nested contributors
- © 2017-2018 Amanieu d'Antras
- © 2017-2018 Jason Lingle
- © 2017-2018 Sergio Benitez
- © 2017-2019 The proptest developers
- © 2017-2020 Gilad Naaman
- © 2018 Dragoș Tiselice
- © 2018 R. Janis Goldschmidt
- © 2018 Sam Rijs, Alex Crichton and contributors
- © 2018 Syn Developers
- © 2018 The predicates-rs Project Developers
- © 2018 Ulf Adams
- © 2018-2021 Developers of the Rand project
- © 2019 Embark Studios
- © 2019 Hao Hou
- © 2019 Jacob Pratt
- © 2019 Peter Glotfelty
- © 2019-2020 CreepySkeleton
- © 2019-2020 Daniel Gee
- © 2020 Ralf Jung
- © 2021 DutchGhost
- © 2021 matrixmultiply authors
- © Aaron Trent
- © Alexander Huszagh
- © Alexis Beingessner
- © Andreas Longva
- © Bastian Köcher
- © Brook Heisler
- © Darin Morrison
- © David Tolnay
- © Jonas Schievink
- © Jonathan Reem
- © Josh Triplett
- © Michael Layzell
- © Ryan Scheel
- © Steven Fackler
- © Sun Microsystems, Inc.
- © Wadelma
- © Without Boats
+
+
+

PiPedal uses open-source software covered by the following copyright notices and licenses.

+
+

+ © 1995-2017 Jean-loup Gailly
+ © 1995-2017 Mark Adler
+ © 2005-2011 David Schultz
+ © 2006-2009 Graydon Hoare
+ © 2009, Lars Luthman <lars.luthman@gmail.com>
+ © 2009-2013 Mozilla Foundation
+ © 2009-2016 compiler-builtins Developers
+ © 2010-2011 Dmitry Vyukov
+ © 2010-2020 The Rust Project Developers
+ © 2012-2018 Free Software Foundation, Inc.
+ © 2012-2022, David Robillard <d@drobilla.net>
+ © 2013 Koka El Kiwi
+ © 2013-2014 The Algebra Developers
+ © 2013-2018 The Gtk-rs Project Developers
+ © 2013-2018 The Servo Project Developers
+ © 2013-2019 Sébastien Crozet
+ © 2014 Alex Crichton
+ © 2014 Armin Ronacher
+ © 2014 Benjamin Sago
+ © 2014 Ning Sun
+ © 2014 Paho Lurie-Gregg
+ © 2014-2016 Simon Sapin
+ © 2014-2017 Kang Seonghoon and contributors
+ © 2014-2018 Jorge Aparicio
+ © 2014-2020 Optimal Computing (NZ) Ltd
+ © 2015 Alex Daniel Jones
+ © 2015 Bartłomiej Kamiński
+ © 2015 Brendan Zabarauskas
+ © 2015 Brian Vincent
+ © 2015 Connor Hilarides
+ © 2015 Corey Richardson
+ © 2015 Danny Guo
+ © 2015 Dmitry Roschin
+ © 2015 Gigih Aji Ibrahim
+ © 2015 Johann Hofmann
+ © 2015 John Nagle
+ © 2015 Jordan Miner
+ © 2015 Marvin Löbel
+ © 2015 Milo Yip
+ © 2015 Pyfisch
+ © 2015 Sean McArthur
+ © 2015 Steven Allen
+ © 2015 THL A29 Limited, a Tencent company
+ © 2015 The assert_cli Developers
+ © 2015 The quick-error Developers
+ © 2015 The rust-unreachable Developers
+ © 2015 arcnmx
+ © 2015 const-cstr developers
+ © 2015 grabbag contributors
+ © 2015 nwin
+ © 2015 skdltmxn
+ © 2015-2016 Kevin B. Knapp
+ © 2015-2016 Peter Atashian
+ © 2015-2016 Victor Brekenfeld
+ © 2015-2016 clap-rs contributors
+ © 2015-2017 Andrew Gallant
+ © 2015-2017 Doug Tangren
+ © 2015-2018 Guillaume Gomez
+ © 2015-2018 winapi-rs developers
+ © 2015-2020 Ashish Myles and contributors
+ © 2015-2021 Ulrik Sverdrup (bluss)
+ © 2016 A.J. Gardner
+ © 2016 FullContact, Inc.
+ © 2016 Itoa Developers
+ © 2016 Jan Hudec
+ © 2016 Junfeng Liu
+ © 2016 Kathryn Long
+ © 2016 Martin Geisler
+ © 2016 Nika Layzell
+ © 2016 Oleksii Rudenko
+ © 2016 Remi Rampin and adler32-rs contributors
+ © 2016 The multipart Crate Developers
+ © 2016 Ticki
+ © 2016 Titus Wormer
+ © 2016 base-x contributors
+ © 2016 bitbegin
+ © 2016 lazy-static.rs Developers
+ © 2016 oyvindln
+ © 2016-2017 The Fuchsia Authors
+ © 2016-2018 Nuxi
+ © 2017 Aaron Power
+ © 2017 Frommi
+ © 2017 Jan Bujak
+ © 2017 Nick Stevens
+ © 2017 Redox OS Developers
+ © 2017 Robert Grosse
+ © 2017 Serde Developers
+ © 2017 Tim Visée
+ © 2017 proc-macro-nested contributors
+ © 2017-2018 Amanieu d'Antras
+ © 2017-2018 Jason Lingle
+ © 2017-2018 Sergio Benitez
+ © 2017-2019 The proptest developers
+ © 2017-2020 Gilad Naaman
+ © 2018 Dragoș Tiselice
+ © 2018 R. Janis Goldschmidt
+ © 2018 Sam Rijs, Alex Crichton and contributors
+ © 2018 Syn Developers
+ © 2018 The predicates-rs Project Developers
+ © 2018 Ulf Adams
+ © 2018-2021 Developers of the Rand project
+ © 2019 Embark Studios
+ © 2019 Hao Hou
+ © 2019 Jacob Pratt
+ © 2019 Peter Glotfelty
+ © 2019-2020 CreepySkeleton
+ © 2019-2020 Daniel Gee
+ © 2020 Ralf Jung
+ © 2021 DutchGhost
+ © 2021 matrixmultiply authors
+ © Aaron Trent
+ © Alexander Huszagh
+ © Alexis Beingessner
+ © Andreas Longva
+ © Bastian Köcher
+ © Brook Heisler
+ © Darin Morrison
+ © David Tolnay
+ © Jonas Schievink
+ © Jonathan Reem
+ © Josh Triplett
+ © Michael Layzell
+ © Ryan Scheel
+ © Steven Fackler
+ © Sun Microsystems, Inc.
+ © Wadelma
+ © Without Boats +

Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

- © 2003 Bitstream, Inc.
- © 2006-2010 Google Corp.
- © 2009-2011 Understanding Limited
- © 2010-2011 Jakub Steiner
- © 2012-2018 Dave Gandy
- © 2013-2017 Google Inc.
- © Arjen Nienhuis
- © Khaled Hosny
- © Sebastian Kosch
-
+

+ © 2003 Bitstream, Inc.
+ © 2006-2010 Google Corp.
+ © 2009-2011 Understanding Limited
+ © 2010-2011 Jakub Steiner
+ © 2012-2018 Dave Gandy
+ © 2013-2017 Google Inc.
+ © Arjen Nienhuis
+ © Khaled Hosny
+ © Sebastian Kosch +

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

@@ -190,474 +223,454 @@ compatible with a GPL license.

On Debian systems, the complete text of the Apache License Version 2.0 can be found in `/usr/share/common-licenses/Apache-2.0'.

- © 1995-2017 Jean-loup Gailly
- © 1995-2017 Mark Adler
- © 2005-2011 David Schultz
- © 2006-2009 Graydon Hoare
- © 2009-2013 Mozilla Foundation
- © 2009-2016 compiler-builtins Developers
- © 2010-2011 Dmitry Vyukov
- © 2010-2020 The Rust Project Developers
- © 2012, 2014 Advanced Micro Devices, Inc
- © 2012-2018 Free Software Foundation, Inc.
- © 2013 Koka El Kiwi
- © 2013, Naitik Shah
- © 2013-2014 The Algebra Developers
- © 2013-2018 The Gtk-rs Project Developers
- © 2013-2018 The Servo Project Developers
- © 2013-2019 Sébastien Crozet
- © 2014 Alex Crichton
- © 2014 Armin Ronacher
- © 2014 Benjamin Sago
- © 2014 Ning Sun
- © 2014 Paho Lurie-Gregg
- © 2014-2016 Simon Sapin
- © 2014-2017 Kang Seonghoon and contributors
- © 2014-2018 Jorge Aparicio
- © 2014-2020 Optimal Computing (NZ) Ltd
- © 2015 Alex Daniel Jones
- © 2015 Bartłomiej Kamiński
- © 2015 Brendan Zabarauskas
- © 2015 Brian Vincent
- © 2015 Connor Hilarides
- © 2015 Corey Richardson
- © 2015 Danny Guo
- © 2015 Dmitry Roschin
- © 2015 Gigih Aji Ibrahim
- © 2015 Johann Hofmann
- © 2015 John Nagle
- © 2015 Jordan Miner
- © 2015 Marvin Löbel
- © 2015 Milo Yip
- © 2015 Pyfisch
- © 2015 Sean McArthur
- © 2015 Steven Allen
- © 2015 THL A29 Limited, a Tencent company
- © 2015 The assert_cli Developers
- © 2015 The quick-error Developers
- © 2015 The rust-unreachable Developers
- © 2015 arcnmx
- © 2015 const-cstr developers
- © 2015 grabbag contributors
- © 2015 nwin
- © 2015 skdltmxn
- © 2015-2016 Kevin B. Knapp
- © 2015-2016 Peter Atashian
- © 2015-2016 Victor Brekenfeld
- © 2015-2016 clap-rs contributors
- © 2015-2017 Andrew Gallant
- © 2015-2017 Doug Tangren
- © 2015-2018 Guillaume Gomez
- © 2015-2018 winapi-rs developers
- © 2015-2020 Ashish Myles and contributors
- © 2015-2021 Ulrik Sverdrup (bluss)
- © 2016 A.J. Gardner
- © 2016 FullContact, Inc.
- © 2016 Itoa Developers
- © 2016 Jan Hudec
- © 2016 Junfeng Liu
- © 2016 Kathryn Long
- © 2016 Martin Geisler
- © 2016 Nika Layzell
- © 2016 Oleksii Rudenko
- © 2016 Remi Rampin and adler32-rs contributors
- © 2016 The multipart Crate Developers
- © 2016 Ticki
- © 2016 Titus Wormer
- © 2016 base-x contributors
- © 2016 bitbegin
- © 2016 lazy-static.rs Developers
- © 2016 oyvindln
- © 2016-2017 The Fuchsia Authors
- © 2016-2018 Nuxi
- © 2017 Aaron Power
- © 2017 Frommi
- © 2017 Jan Bujak
- © 2017 Nick Stevens
- © 2017 Redox OS Developers
- © 2017 Robert Grosse
- © 2017 Serde Developers
- © 2017 Tim Visée
- © 2017 proc-macro-nested contributors
- © 2017-2018 Amanieu d'Antras
- © 2017-2018 Jason Lingle
- © 2017-2018 Sergio Benitez
- © 2017-2019 The proptest developers
- © 2017-2020 Gilad Naaman
- © 2018 Dragoș Tiselice
- © 2018 R. Janis Goldschmidt
- © 2018 Sam Rijs, Alex Crichton and contributors
- © 2018 Syn Developers
- © 2018 The predicates-rs Project Developers
- © 2018 Ulf Adams
- © 2018-2020 Niall Douglas
- © 2018-2021 Developers of the Rand project
- © 2019 Embark Studios
- © 2019 Hao Hou
- © 2019 Jacob Pratt
- © 2019 Peter Glotfelty
- © 2019-2020 CreepySkeleton
- © 2019-2020 Daniel Gee
- © 2020 A11yance
- © 2020 Ralf Jung
- © 2020, Google LLC
- © 2021 DutchGhost
- © 2021 matrixmultiply authors
- © Aaron Trent
- © Alexander Huszagh
- © Alexis Beingessner
- © Andreas Longva
- © Bastian Köcher
- © Brook Heisler
- © Contributors
- © 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about)
- © 2010-2011 Mikeal Rogers
- © 2018 Google Inc.
- © 2019 ehmicky <ehmicky@gmail.com>
- © 2020 A11yance
- © 2112 Matthew Eernisse (mde@fleegix.org)
- © JS Foundation and other contributors, https://js.foundation
- © Darin Morrison
- © David Tolnay
- © Google LLC
- © JS Foundation and other contributors, https://js.foundation
- © Jonas Schievink
- © Jonathan Reem
- © Josh Triplett
- © Michael Layzell
- © Ryan Scheel
- © Steven Fackler
- © Sun Microsystems, Inc.
- © Wadelma
- © Without Boats
-
+

+ © 1995-2017 Jean-loup Gailly
+ © 1995-2017 Mark Adler
+ © 2004, Apple Computer, Inc.
+ © 2005-2011 David Schultz
+ © 2006-2009 Graydon Hoare
+ © 2009-2013 Mozilla Foundation
+ © 2009-2016 compiler-builtins Developers
+ © 2010-2011 Dmitry Vyukov
+ © 2010-2020 The Rust Project Developers
+ © 2011, Google Inc.
+ © 2012, 2014 Advanced Micro Devices, Inc
+ © 2012, The Android Open Source Project
+ © 2012-2018 Free Software Foundation, Inc.
+ © 2013 Koka El Kiwi
+ © 2013-2014 The Algebra Developers
+ © 2013-2018 The Gtk-rs Project Developers
+ © 2013-2018 The Servo Project Developers
+ © 2013-2019 Sébastien Crozet
+ © 2014 Alex Crichton
+ © 2014 Armin Ronacher
+ © 2014 Benjamin Sago
+ © 2014 Ning Sun
+ © 2014 Paho Lurie-Gregg
+ © 2014-2016 Simon Sapin
+ © 2014-2017 Kang Seonghoon and contributors
+ © 2014-2018 Jorge Aparicio
+ © 2014-2020 Optimal Computing (NZ) Ltd
+ © 2015 Alex Daniel Jones
+ © 2015 Bartłomiej Kamiński
+ © 2015 Brendan Zabarauskas
+ © 2015 Brian Vincent
+ © 2015 Connor Hilarides
+ © 2015 Corey Richardson
+ © 2015 Danny Guo
+ © 2015 Dmitry Roschin
+ © 2015 Gigih Aji Ibrahim
+ © 2015 Johann Hofmann
+ © 2015 John Nagle
+ © 2015 Jordan Miner
+ © 2015 Marvin Löbel
+ © 2015 Milo Yip
+ © 2015 Pyfisch
+ © 2015 Sean McArthur
+ © 2015 Steven Allen
+ © 2015 THL A29 Limited, a Tencent company
+ © 2015 The assert_cli Developers
+ © 2015 The quick-error Developers
+ © 2015 The rust-unreachable Developers
+ © 2015 arcnmx
+ © 2015 const-cstr developers
+ © 2015 grabbag contributors
+ © 2015 nwin
+ © 2015 skdltmxn
+ © 2015-2016 Kevin B. Knapp
+ © 2015-2016 Peter Atashian
+ © 2015-2016 Victor Brekenfeld
+ © 2015-2016 clap-rs contributors
+ © 2015-2017 Andrew Gallant
+ © 2015-2017 Doug Tangren
+ © 2015-2018 Guillaume Gomez
+ © 2015-2018 winapi-rs developers
+ © 2015-2020 Ashish Myles and contributors
+ © 2015-2021 Ulrik Sverdrup (bluss)
+ © 2016 A.J. Gardner
+ © 2016 FullContact, Inc.
+ © 2016 Itoa Developers
+ © 2016 Jan Hudec
+ © 2016 Junfeng Liu
+ © 2016 Kathryn Long
+ © 2016 Martin Geisler
+ © 2016 Nika Layzell
+ © 2016 Oleksii Rudenko
+ © 2016 Remi Rampin and adler32-rs contributors
+ © 2016 The multipart Crate Developers
+ © 2016 Ticki
+ © 2016 Titus Wormer
+ © 2016 base-x contributors
+ © 2016 bitbegin
+ © 2016 lazy-static.rs Developers
+ © 2016 oyvindln
+ © 2016-2017 The Fuchsia Authors
+ © 2016-2018 Nuxi
+ © 2017 Aaron Power
+ © 2017 Frommi
+ © 2017 Jan Bujak
+ © 2017 Nick Stevens
+ © 2017 Redox OS Developers
+ © 2017 Robert Grosse
+ © 2017 Serde Developers
+ © 2017 Tim Visée
+ © 2017 proc-macro-nested contributors
+ © 2017-2018 Amanieu d'Antras
+ © 2017-2018 Jason Lingle
+ © 2017-2018 Sergio Benitez
+ © 2017-2019 The proptest developers
+ © 2017-2020 Gilad Naaman
+ © 2018 Dragoș Tiselice
+ © 2018 R. Janis Goldschmidt
+ © 2018 Sam Rijs, Alex Crichton and contributors
+ © 2018 Syn Developers
+ © 2018 The predicates-rs Project Developers
+ © 2018 Ulf Adams
+ © 2018-2021 Developers of the Rand project
+ © 2018-2022 Niall Douglas
+ © 2019 Embark Studios
+ © 2019 Hao Hou
+ © 2019 Jacob Pratt
+ © 2019 Peter Glotfelty
+ © 2019-2020 CreepySkeleton
+ © 2019-2020 Daniel Gee
+ © 2020 Ralf Jung
+ © 2021 DutchGhost
+ © 2021 matrixmultiply authors
+ © Aaron Trent
+ © Alexander Huszagh
+ © Alexis Beingessner
+ © Andreas Longva
+ © Bastian Köcher
+ © Brook Heisler
+ © Darin Morrison
+ © David Tolnay
+ © Jonas Schievink
+ © Jonathan Reem
+ © Josh Triplett
+ © Michael Layzell
+ © Ryan Scheel
+ © Steven Fackler
+ © Sun Microsystems, Inc.
+ © Wadelma
+ © Without Boats
+ © contributors +

-

This is free software, licensed under:

-

The Apache License, Version 2.0, January 2004

-

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

-

http://www.apache.org/licenses/LICENSE-2.0

-

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS"BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

+

On Debian systems, the complete text of the Apache License can be found in "/usr/share/common-licenses/Apache-2.0".

- © 1995-2017 Jean-loup Gailly
- © 1995-2017 Mark Adler
- © 2005-2011 David Schultz
- © 2006-2009 Graydon Hoare
- © 2009-2011, Mozilla Foundation and contributors
- © 2009-2013 Mozilla Foundation
- © 2009-2016 compiler-builtins Developers
- © 2010-2011 Dmitry Vyukov
- © 2010-2020 The Rust Project Developers
- © 2011, Gary Court.
- © 2012, Yusuke Suzuki (twitter: @Constellation) and other contributors.
- © 2012-2016, Yusuke Suzuki <utatane.tea@gmail.com>
- © 2012-2018 Free Software Foundation, Inc.
- © 2012. Ariya Hidayat <ariya.hidayat@gmail.com>
- © 2013 Koka El Kiwi
- © 2013, [Yusuke Suzuki](http://github.com/Constellation)
- © 2013-2014 The Algebra Developers
- © 2013-2018 The Gtk-rs Project Developers
- © 2013-2018 The Servo Project Developers
- © 2013-2019 Sébastien Crozet
- © 2014 Alex Crichton
- © 2014 Armin Ronacher
- © 2014 Benjamin Sago
- © 2014 Ning Sun
- © 2014 Paho Lurie-Gregg
- © 2014, kumavis
- © 2014-2016 Simon Sapin
- © 2014-2017 Kang Seonghoon and contributors
- © 2014-2018 Jorge Aparicio
- © 2014-2020 Optimal Computing (NZ) Ltd
- © 2015 Alex Daniel Jones
- © 2015 Bartłomiej Kamiński
- © 2015 Brendan Zabarauskas
- © 2015 Brian Vincent
- © 2015 Connor Hilarides
- © 2015 Corey Richardson
- © 2015 Danny Guo
- © 2015 Dmitry Roschin
- © 2015 Gigih Aji Ibrahim
- © 2015 Johann Hofmann
- © 2015 John Nagle
- © 2015 Jordan Miner
- © 2015 Marvin Löbel
- © 2015 Milo Yip
- © 2015 Pyfisch
- © 2015 Sean McArthur
- © 2015 Steven Allen
- © 2015 THL A29 Limited, a Tencent company
- © 2015 The assert_cli Developers
- © 2015 The quick-error Developers
- © 2015 The rust-unreachable Developers
- © 2015 arcnmx
- © 2015 const-cstr developers
- © 2015 grabbag contributors
- © 2015 nwin
- © 2015 skdltmxn
- © 2015, 2016, Scott Motte
- © 2015-2016 Kevin B. Knapp
- © 2015-2016 Peter Atashian
- © 2015-2016 Victor Brekenfeld
- © 2015-2016 clap-rs contributors
- © 2015-2017 Andrew Gallant
- © 2015-2017 Doug Tangren
- © 2015-2018 Guillaume Gomez
- © 2015-2018 winapi-rs developers
- © 2015-2020 Ashish Myles and contributors
- © 2015-2021 Ulrik Sverdrup (bluss)
- © 2016 A.J. Gardner
- © 2016 FullContact, Inc.
- © 2016 Itoa Developers
- © 2016 Jan Hudec
- © 2016 Junfeng Liu
- © 2016 Kathryn Long
- © 2016 Martin Geisler
- © 2016 Nika Layzell
- © 2016 Oleksii Rudenko
- © 2016 Remi Rampin and adler32-rs contributors
- © 2016 The multipart Crate Developers
- © 2016 Ticki
- © 2016 Titus Wormer
- © 2016 base-x contributors
- © 2016 bitbegin
- © 2016 lazy-static.rs Developers
- © 2016 oyvindln
- © 2016-2017 The Fuchsia Authors
- © 2016-2018 Nuxi
- © 2017 Aaron Power
- © 2017 Frommi
- © 2017 Jan Bujak
- © 2017 Nick Stevens
- © 2017 Redox OS Developers
- © 2017 Robert Grosse
- © 2017 Serde Developers
- © 2017 Tim Visée
- © 2017 proc-macro-nested contributors
- © 2017-2018 Amanieu d'Antras
- © 2017-2018 Jason Lingle
- © 2017-2018 Sergio Benitez
- © 2017-2019 The proptest developers
- © 2017-2020 Gilad Naaman
- © 2018 Dragoș Tiselice
- © 2018 R. Janis Goldschmidt
- © 2018 Sam Rijs, Alex Crichton and contributors
- © 2018 Syn Developers
- © 2018 The predicates-rs Project Developers
- © 2018 Ulf Adams
- © 2018, Tadeusz Łazurski
- © 2018-2021 Developers of the Rand project
- © 2019 Embark Studios
- © 2019 Hao Hou
- © 2019 Jacob Pratt
- © 2019 Peter Glotfelty
- © 2019-2020 CreepySkeleton
- © 2019-2020 Daniel Gee
- © 2020 Ralf Jung
- © 2021 DutchGhost
- © 2021 matrixmultiply authors
- © Aaron Trent
- © Alexander Huszagh
- © Alexis Beingessner
- © Andreas Longva
- © Bastian Köcher
- © Brook Heisler
- © 2012-2016 [Yusuke Suzuki](http://github.com/Constellation)
- © 2013, Joel Feenstra
- © Darin Morrison
- © David Tolnay
- © Felix Böhm
- © JS Foundation and other contributors, https:js.foundation
- © JS Foundation and other contributors, https:js.foundation / 2012-2013, Yusuke Suzuki (twitter: @Constellation) and other contributors.
- © Jonas Schievink
- © Jonathan Reem
- © Josh Triplett
- © Julian Viereck and Contributors
- © Meryn Stol ("Author")
- © Michael Layzell
- © Open JS Foundation
- © Ryan Scheel
- © Steven Fackler
- © Sun Microsystems, Inc.
- © Wadelma
- © Without Boats
- © silverwind
+

+ © 2018, Mapbox +

+
+
+

+ © 2011, Gary Court. +

+
+
+
+

+ © 1995-2017 Jean-loup Gailly
+ © 1995-2017 Mark Adler
+ © 2005-2011 David Schultz
+ © 2006-2009 Graydon Hoare
+ © 2009-2013 Mozilla Foundation
+ © 2009-2016 compiler-builtins Developers
+ © 2010-2011 Dmitry Vyukov
+ © 2010-2020 The Rust Project Developers
+ © 2012, 2013, Yusuke Suzuki (twitter: @Constellation) and other contributors.
+ © 2012-2018 Free Software Foundation, Inc.
+ © 2013 Koka El Kiwi
+ © 2013-2014 The Algebra Developers
+ © 2013-2018 The Gtk-rs Project Developers
+ © 2013-2018 The Servo Project Developers
+ © 2013-2019 Sébastien Crozet
+ © 2014 Alex Crichton
+ © 2014 Armin Ronacher
+ © 2014 Benjamin Sago
+ © 2014 Ning Sun
+ © 2014 Paho Lurie-Gregg
+ © 2014-2016 Simon Sapin
+ © 2014-2017 Kang Seonghoon and contributors
+ © 2014-2018 Jorge Aparicio
+ © 2014-2020 Optimal Computing (NZ) Ltd
+ © 2015 Alex Daniel Jones
+ © 2015 Bartłomiej Kamiński
+ © 2015 Brendan Zabarauskas
+ © 2015 Brian Vincent
+ © 2015 Connor Hilarides
+ © 2015 Corey Richardson
+ © 2015 Danny Guo
+ © 2015 Dmitry Roschin
+ © 2015 Gigih Aji Ibrahim
+ © 2015 Johann Hofmann
+ © 2015 John Nagle
+ © 2015 Jordan Miner
+ © 2015 Marvin Löbel
+ © 2015 Milo Yip
+ © 2015 Pyfisch
+ © 2015 Sean McArthur
+ © 2015 Steven Allen
+ © 2015 THL A29 Limited, a Tencent company
+ © 2015 The assert_cli Developers
+ © 2015 The quick-error Developers
+ © 2015 The rust-unreachable Developers
+ © 2015 arcnmx
+ © 2015 const-cstr developers
+ © 2015 grabbag contributors
+ © 2015 nwin
+ © 2015 skdltmxn
+ © 2015-2016 Kevin B. Knapp
+ © 2015-2016 Peter Atashian
+ © 2015-2016 Victor Brekenfeld
+ © 2015-2016 clap-rs contributors
+ © 2015-2017 Andrew Gallant
+ © 2015-2017 Doug Tangren
+ © 2015-2018 Guillaume Gomez
+ © 2015-2018 winapi-rs developers
+ © 2015-2020 Ashish Myles and contributors
+ © 2015-2021 Ulrik Sverdrup (bluss)
+ © 2016 A.J. Gardner
+ © 2016 FullContact, Inc.
+ © 2016 Itoa Developers
+ © 2016 Jan Hudec
+ © 2016 Junfeng Liu
+ © 2016 Kathryn Long
+ © 2016 Martin Geisler
+ © 2016 Nika Layzell
+ © 2016 Oleksii Rudenko
+ © 2016 Remi Rampin and adler32-rs contributors
+ © 2016 The multipart Crate Developers
+ © 2016 Ticki
+ © 2016 Titus Wormer
+ © 2016 base-x contributors
+ © 2016 bitbegin
+ © 2016 lazy-static.rs Developers
+ © 2016 oyvindln
+ © 2016-2017 The Fuchsia Authors
+ © 2016-2018 Nuxi
+ © 2017 Aaron Power
+ © 2017 Frommi
+ © 2017 Jan Bujak
+ © 2017 Nick Stevens
+ © 2017 Redox OS Developers
+ © 2017 Robert Grosse
+ © 2017 Serde Developers
+ © 2017 Tim Visée
+ © 2017 proc-macro-nested contributors
+ © 2017-2018 Amanieu d'Antras
+ © 2017-2018 Jason Lingle
+ © 2017-2018 Sergio Benitez
+ © 2017-2019 The proptest developers
+ © 2017-2020 Gilad Naaman
+ © 2018 Dragoș Tiselice
+ © 2018 R. Janis Goldschmidt
+ © 2018 Sam Rijs, Alex Crichton and contributors
+ © 2018 Syn Developers
+ © 2018 The predicates-rs Project Developers
+ © 2018 Ulf Adams
+ © 2018-2021 Developers of the Rand project
+ © 2019 Embark Studios
+ © 2019 Hao Hou
+ © 2019 Jacob Pratt
+ © 2019 Peter Glotfelty
+ © 2019-2020 CreepySkeleton
+ © 2019-2020 Daniel Gee
+ © 2020 Ralf Jung
+ © 2021 DutchGhost
+ © 2021 matrixmultiply authors
+ © Aaron Trent
+ © Alexander Huszagh
+ © Alexis Beingessner
+ © Andreas Longva
+ © Bastian Köcher
+ © Brook Heisler
+ © Darin Morrison
+ © David Tolnay
+ © JS Foundation and other contributors, https://js.foundation
+ © Jonas Schievink
+ © Jonathan Reem
+ © Josh Triplett
+ © Michael Layzell
+ © Open JS Foundation
+ © Ryan Scheel
+ © Steven Fackler
+ © Sun Microsystems, Inc.
+ © Wadelma
+ © Without Boats +

-

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

-

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

-

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

-

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

+

THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

- © 1995-2017 Jean-loup Gailly
- © 1995-2017 Mark Adler
- © 2005-2011 David Schultz
- © 2005-2011 Thomas Nagy
- © 2005-2017 Thomas Nagy
- © 2006-2009 Graydon Hoare
- © 2007-2014, Alexandru Marasteanu <hello [at) alexei (dot] ro>
- © 2008, Fair Oaks Labs, Inc.
- © 2008-2009 World Wide Web Consortium (Massachusetts Institute of
- © 2009-2013 Mozilla Foundation
- © 2009-2016 compiler-builtins Developers
- © 2010-2011 Dmitry Vyukov
- © 2010-2014, Christian Johansen, christian@cjohansen.no.
- © 2010-2020 The Rust Project Developers
- © 2012-2015, Yahoo! Inc.
- © 2012-2018 Free Software Foundation, Inc.
- © 2013 Koka El Kiwi
- © 2013-2014 The Algebra Developers
- © 2013-2018 The Gtk-rs Project Developers
- © 2013-2018 The Servo Project Developers
- © 2013-2019 Sébastien Crozet
- © 2014 Alex Crichton
- © 2014 Armin Ronacher
- © 2014 Benjamin Sago
- © 2014 Ning Sun
- © 2014 Paho Lurie-Gregg
- © 2014, Naitik Shah.
- © 2014, Nathan LaFreniere and other contributors.
- © 2014-2016 Simon Sapin
- © 2014-2017 Kang Seonghoon and contributors
- © 2014-2018 Jorge Aparicio
- © 2014-2020 Optimal Computing (NZ) Ltd
- © 2015 Alex Daniel Jones
- © 2015 Bartłomiej Kamiński
- © 2015 Brendan Zabarauskas
- © 2015 Brian Vincent
- © 2015 Connor Hilarides
- © 2015 Corey Richardson
- © 2015 Danny Guo
- © 2015 Dmitry Roschin
- © 2015 Gigih Aji Ibrahim
- © 2015 Johann Hofmann
- © 2015 John Nagle
- © 2015 Jordan Miner
- © 2015 Marvin Löbel
- © 2015 Milo Yip
- © 2015 Pyfisch
- © 2015 Sean McArthur
- © 2015 Steven Allen
- © 2015 THL A29 Limited, a Tencent company
- © 2015 The assert_cli Developers
- © 2015 The quick-error Developers
- © 2015 The rust-unreachable Developers
- © 2015 arcnmx
- © 2015 const-cstr developers
- © 2015 grabbag contributors
- © 2015 nwin
- © 2015 skdltmxn
- © 2015, 2018, Gajus Kuizinas (http:gajus.com/)
- © 2015, Espen Hovlandsdal
- © 2015, Salesforce.com, Inc.
- © 2015-2016 Kevin B. Knapp
- © 2015-2016 Peter Atashian
- © 2015-2016 Victor Brekenfeld
- © 2015-2016 clap-rs contributors
- © 2015-2017 Andrew Gallant
- © 2015-2017 Doug Tangren
- © 2015-2018 Guillaume Gomez
- © 2015-2018 winapi-rs developers
- © 2015-2020 Ashish Myles and contributors
- © 2015-2021 Ulrik Sverdrup (bluss)
- © 2016 A.J. Gardner
- © 2016 FullContact, Inc.
- © 2016 Itoa Developers
- © 2016 Jan Hudec
- © 2016 Junfeng Liu
- © 2016 Kathryn Long
- © 2016 Martin Geisler
- © 2016 Nika Layzell
- © 2016 Oleksii Rudenko
- © 2016 Remi Rampin and adler32-rs contributors
- © 2016 The multipart Crate Developers
- © 2016 Ticki
- © 2016 Titus Wormer
- © 2016 base-x contributors
- © 2016 bitbegin
- © 2016 lazy-static.rs Developers
- © 2016 oyvindln
- © 2016, Istanbul Code Coverage
- © 2016-2017 The Fuchsia Authors
- © 2016-2018 Nuxi
- © 2017 Aaron Power
- © 2017 Frommi
- © 2017 Jan Bujak
- © 2017 Nick Stevens
- © 2017 Redox OS Developers
- © 2017 Robert Grosse
- © 2017 Serde Developers
- © 2017 Tim Visée
- © 2017 proc-macro-nested contributors
- © 2017-2018 Amanieu d'Antras
- © 2017-2018 Jason Lingle
- © 2017-2018 Sergio Benitez
- © 2017-2019 The proptest developers
- © 2017-2020 Gilad Naaman
- © 2018 Dragoș Tiselice
- © 2018 R. Janis Goldschmidt
- © 2018 Sam Rijs, Alex Crichton and contributors
- © 2018 Syn Developers
- © 2018 The predicates-rs Project Developers
- © 2018 Ulf Adams
- © 2018, React Community / 2013, -present, Facebook, Inc.
- © 2018, Sinon.JS
- © 2018-2021 Developers of the Rand project
- © 2019 Embark Studios
- © 2019 Hao Hou
- © 2019 Jacob Pratt
- © 2019 Peter Glotfelty
- © 2019, Solutions Paralint inc.
- © 2019-2020 CreepySkeleton
- © 2019-2020 Daniel Gee
- © 2020 Ralf Jung
- © 2020, Jason Mulligan
- © 2021 DutchGhost
- © 2021 matrixmultiply authors
- © Aaron Trent
- © Alexander Huszagh
- © Alexis Beingessner
- © Andreas Longva
- © Bastian Köcher
- © Brook Heisler
- © Darin Morrison
- © David Tolnay
- © Jonas Schievink
- © Jonathan Reem
- © Josh Triplett
- © Mathematics (ERCIM), Keio University)
- © Michael Layzell
- © Ryan Scheel
- © Steven Fackler
- © Sun Microsystems, Inc.
- © Technology, European Research Consortium for Informatics and
- © Wadelma
- © Without Boats
- © header is
-
+

+ © 1987-2002, The Regents of the University of California.
+ © 1995-2017 Jean-loup Gailly
+ © 1995-2017 Mark Adler
+ © 1999-2025, Dieter Baron and Thomas Klausner
+ © 2004-2008, René Nyffenegger
+ © 2005-2009, 2013, 2015, 2017, 2024, Google Inc.
+ © 2005-2011 David Schultz
+ © 2006-2009 Graydon Hoare
+ © 2007, 2008, Johannes Berg
+ © 2007, Andy Lutomirski
+ © 2007, Mike Kershaw
+ © 2008, Luis R. Rodriguez
+ © 2008-2009 World Wide Web Consortium (Massachusetts Institute of
+ © 2009-2013 Mozilla Foundation
+ © 2009-2016 compiler-builtins Developers
+ © 2010-2011 Dmitry Vyukov
+ © 2010-2020 The Rust Project Developers
+ © 2011, Micael Hildenborg
+ © 2012, 2014-2016, Peter Thorson.
+ © 2012-2018 Free Software Foundation, Inc.
+ © 2013 Koka El Kiwi
+ © 2013-2014 The Algebra Developers
+ © 2013-2018 The Gtk-rs Project Developers
+ © 2013-2018 The Servo Project Developers
+ © 2013-2019 Sébastien Crozet
+ © 2014 Alex Crichton
+ © 2014 Armin Ronacher
+ © 2014 Benjamin Sago
+ © 2014 Ning Sun
+ © 2014 Paho Lurie-Gregg
+ © 2014, Peter Thorson.
+ © 2014-2016 Simon Sapin
+ © 2014-2017 Kang Seonghoon and contributors
+ © 2014-2018 Jorge Aparicio
+ © 2014-2020 Optimal Computing (NZ) Ltd
+ © 2015 Alex Daniel Jones
+ © 2015 Bartłomiej Kamiński
+ © 2015 Brendan Zabarauskas
+ © 2015 Brian Vincent
+ © 2015 Connor Hilarides
+ © 2015 Corey Richardson
+ © 2015 Danny Guo
+ © 2015 Dmitry Roschin
+ © 2015 Gigih Aji Ibrahim
+ © 2015 Johann Hofmann
+ © 2015 John Nagle
+ © 2015 Jordan Miner
+ © 2015 Marvin Löbel
+ © 2015 Milo Yip
+ © 2015 Pyfisch
+ © 2015 Sean McArthur
+ © 2015 Steven Allen
+ © 2015 THL A29 Limited, a Tencent company
+ © 2015 The assert_cli Developers
+ © 2015 The quick-error Developers
+ © 2015 The rust-unreachable Developers
+ © 2015 arcnmx
+ © 2015 const-cstr developers
+ © 2015 grabbag contributors
+ © 2015 nwin
+ © 2015 skdltmxn
+ © 2015, Espen Hovlandsdal
+ © 2015-2016 Kevin B. Knapp
+ © 2015-2016 Peter Atashian
+ © 2015-2016 Victor Brekenfeld
+ © 2015-2016 clap-rs contributors
+ © 2015-2017 Andrew Gallant
+ © 2015-2017 Doug Tangren
+ © 2015-2018 Guillaume Gomez
+ © 2015-2018 winapi-rs developers
+ © 2015-2020 Ashish Myles and contributors
+ © 2015-2021 Ulrik Sverdrup (bluss)
+ © 2016 A.J. Gardner
+ © 2016 FullContact, Inc.
+ © 2016 Itoa Developers
+ © 2016 Jan Hudec
+ © 2016 Junfeng Liu
+ © 2016 Kathryn Long
+ © 2016 Martin Geisler
+ © 2016 Nika Layzell
+ © 2016 Oleksii Rudenko
+ © 2016 Remi Rampin and adler32-rs contributors
+ © 2016 The multipart Crate Developers
+ © 2016 Ticki
+ © 2016 Titus Wormer
+ © 2016 base-x contributors
+ © 2016 bitbegin
+ © 2016 lazy-static.rs Developers
+ © 2016 oyvindln
+ © 2016-2017 The Fuchsia Authors
+ © 2016-2018 Nuxi
+ © 2017 Aaron Power
+ © 2017 Frommi
+ © 2017 Jan Bujak
+ © 2017 Nick Stevens
+ © 2017 Redox OS Developers
+ © 2017 Robert Grosse
+ © 2017 Serde Developers
+ © 2017 Tim Visée
+ © 2017 proc-macro-nested contributors
+ © 2017-2018 Amanieu d'Antras
+ © 2017-2018 Jason Lingle
+ © 2017-2018 Sergio Benitez
+ © 2017-2019 The proptest developers
+ © 2017-2020 Gilad Naaman
+ © 2018 Dragoș Tiselice
+ © 2018 R. Janis Goldschmidt
+ © 2018 Sam Rijs, Alex Crichton and contributors
+ © 2018 Syn Developers
+ © 2018 The predicates-rs Project Developers
+ © 2018 Ulf Adams
+ © 2018, React Community
+ © 2018-2021 Developers of the Rand project
+ © 2019 Embark Studios
+ © 2019 Hao Hou
+ © 2019 Jacob Pratt
+ © 2019 Peter Glotfelty
+ © 2019-2020 CreepySkeleton
+ © 2019-2020 Daniel Gee
+ © 2020 Ralf Jung
+ © 2021 DutchGhost
+ © 2021 matrixmultiply authors
+ © 2022, Steinberg Media Technologies GmbH
+ © Aaron Trent
+ © Alexander Huszagh
+ © Alexis Beingessner
+ © Andreas Longva
+ © Bastian Köcher
+ © Brook Heisler
+ © Darin Morrison
+ © David Tolnay
+ © Jonas Schievink
+ © Jonathan Reem
+ © Josh Triplett
+ © Mathematics (ERCIM), Keio University)
+ © Michael Layzell
+ © Robin E.R. Davies
+ © Ryan Scheel
+ © Steven Fackler
+ © Sun Microsystems, Inc.
+ © Technology, European Research Consortium for Informatics and
+ © Wadelma
+ © Without Boats +

-

This is free software, licensed under:

-

The (three-clause) BSD License

-

The BSD License

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

-

* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

-

* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

-

* Neither the name of the licensor nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

-

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+

* Redistributions of [source code/works] must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of [the copyright holder] nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

+

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

- © 1998, 2002-2006 Kiyoshi Matsui
- © 2001-2012 Hartmut Kaiser
-
+

+ © 1998, 2002-2006 Kiyoshi Matsui
+ © 2001-2012 Hartmut Kaiser +

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

- © 2010-2012 D. E. Shaw Research
- © 2015 Muhammad Junaid Muzammil
-
+

+ © 2010-2012 D. E. Shaw Research
+ © 2015 Muhammad Junaid Muzammil +

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer.

@@ -666,1873 +679,2056 @@ compatible with a GPL license.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

- © 2013 Google, Inc
-
+

+ © 2013 Google, Inc +

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

- © (no info) Andrew Lumsdaine
- © (no info) Gautam Sewani
- © (no info) Gennadiy Rozental
- © (no info) Joel Falcou
- © (no info) Paul A. Bristow
- © (no info) Pierre Esterie
- © (no info) Tobias Schwinger
- © (no info) Xiaogang Zhang
- © 1993, 1995 Christopher Seiwald
- © 1993, 1995, 2000 Christopher Seiwald
- © 1993, 2000 Christopher Seiwald
- © 1993-2002 Christopher Seiwald
- © 1993-2002 Perforce Software, Inc
- © 1994 Hewlett-Packard Company
- © 1994, 2002-2003, 2006, 2008 Beman Dawes
- © 1994, 2003, 2006, 2008 Beman Dawes
- © 1994, 2006, 2008 Beman Dawes
- © 1994-2017 Beman Dawes
- © 1995 Gerald I. Evenden
- © 1995 Maarten Hilferink
- © 1995, 2003, 2006, 2008 Gerald I. Evenden
- © 1995, 2007-2015 Barend Gehrels
- © 1995-2001 Beman Dawes
- © 1995-2001 Ullrich Koethe
- © 1995-2010 Geodan
- © 1995-2013 Jean-loup Gailly
- © 1995-2013 Mark Adler
- © 1995-2019 Barend Gehrels
- © 1996 Silicon Graphics Computer Systems, Inc
- © 1996-1997 Silicon Graphics Computer Systems, Inc
- © 1996-1998 Silicon Graphics Computer Systems, Inc
- © 1997-2000 University of Notre Dame
- © 1997-2001 University of Notre Dame
- © 1998 Silicon Graphics Computer Systems, Inc
- © 1998, 2002-2006 Kiyoshi Matsui
- © 1998-1999 Beman Dawes
- © 1998-1999 Greg Colvin
- © 1998-2002, 2007, 2012, 2018 John Maddock
- © 1998-2003 Joel de Guzman
- © 1998-2004 John Maddock
- © 1998-2008 Joel de Guzman
- © 1998-2009 John Maddock
- © 1998-2011 Joel de Guzman
- © 1998-2019 Joel de Guzman
- © 1998-2020 John Maddock
- © 1999 Beman Dawes
- © 1999 Daryle Walker
- © 1999 David Abrahams
- © 1999 Greg Colvin
- © 1999 Jeremy G. Siek
- © 1999 Kevlin Henney
- © 1999 Paul Moore
- © 1999, 2001 Nicolai M. Josuttis
- © 1999, 2001, 2003, 2005, 2013 Hubert Holin
- © 1999, 2002 John Maddock
- © 1999, 2002-2003 Beman Dawes
- © 1999-2000 Jaakko Järvi
- © 1999-2001 Daryle Walker
- © 1999-2001 David Abrahams
- © 1999-2001 Jeremy G. Siek
- © 1999-2003 Daniel Walker
- © 1999-2003 David Abrahams
- © 1999-2003 Gary Powell
- © 1999-2003 Jaakko Järvi
- © 1999-2003 Jeremiah Willcock
- © 1999-2006 Cortex Software GmbH
- © 1999-2006 Jeremy G. Siek
- © 1999-2010 Aleksey Gurtovoy
- © 2000 Aleksey Gurtovoy
- © 2000 Beman Dawes
- © 2000 Cadenza New Zealand Ltd
- © 2000 Darin Adler
- © 2000 David Abrahams
- © 2000 Frank Warmerdam
- © 2000 Gary Powell
- © 2000 Howard Hinnant
- © 2000 Jens Maurer
- © 2000 Jeremy G. Siek
- © 2000 John Maddock
- © 2000 Keld Helsgaun
- © 2000 Kevlin Henney
- © 2000 Maarten Keijzer
- © 2000 Mark Rodgers
- © 2000 Stephen Cleary
- © 2000 Steven Knight
- © 2000, 2002 Frank Warmerdam
- © 2000, 2005, 2007 John Maddock
- © 2000, 2007, 2013 John Maddock
- © 2000, 2010 Beman Dawes
- © 2000, 2010 David Abrahams
- © 2000, 2010 Howard Hinnant
- © 2000, 2010 John Maddock
- © 2000, 2010 Stephen Cleary
- © 2000-2001 Daryle Walker
- © 2000-2001 Jens Maurer
- © 2000-2001 Stephen Cleary
- © 2000-2002 John Maddock
- © 2000-2002 John R. Bandela
- © 2000-2002 Kevlin Henney
- © 2000-2002, 2006 Jens Maurer
- © 2000-2003 Beman Dawes
- © 2000-2003 Brian McNamara
- © 2000-2003 David Abrahams
- © 2000-2003 Gary Powell
- © 2000-2003 Howard Hinnant
- © 2000-2003 Jaakko Järvi
- © 2000-2003 Jens Maurer
- © 2000-2003 John Maddock
- © 2000-2003 Peter Dimov
- © 2000-2003 Stephen Cleary
- © 2000-2003 Yannis Smaragdakis
- © 2000-2004 Aleksey Gurtovoy
- © 2000-2004 Joerg Walter
- © 2000-2004 Mathias Koch
- © 2000-2005 Beman Dawes
- © 2000-2005 Howard Hinnant
- © 2000-2005 John Maddock
- © 2000-2005 Kevlin Henney
- © 2000-2005 Stephen Cleary
- © 2000-2006 David Abrahams
- © 2000-2006 Jeremy G. Siek
- © 2000-2006 Stephen Cleary
- © 2000-2006 Thomas Becker
- © 2000-2006, 2009 David Abrahams
- © 2000-2008 Fernando Luis Cacciola Carballal
- © 2000-2009 Aleksey Gurtovoy
- © 2000-2009 Gunter Winkler
- © 2000-2009 Joerg Walter
- © 2000-2009 Mathias Koch
- © 2000-2009 Michael Stevens
- © 2000-2010 David Bellot
- © 2000-2010 Gunter Winkler
- © 2000-2010 Joerg Walter
- © 2000-2010 Mathias Koch
- © 2000-2011 Aleksey Gurtovoy
- © 2000-2011 David Abrahams
- © 2000-2013 Athanasios Iliopoulos
- © 2000-2013 David Bellot
- © 2000-2013 Joerg Walter
- © 2000-2013 Mathias Koch
- © 2000-2020 CrystalClear Software, Inc
- © 2001 Adobe Systems Incorporated
- © 2001 Alexander Peslyak
- © 2001 Andrei Alexandrescu
- © 2001 Andrew Lumsdaine
- © 2001 Beman Dawes
- © 2001 Bill Kempf
- © 2001 Brian Osman
- © 2001 Bruce Florman
- © 2001 Daniel C. Nuffer
- © 2001 Daniel Nuffer
- © 2001 Darin Adler
- © 2001 Daryle Walker
- © 2001 David Abrahams
- © 2001 Dietmar Kuehl
- © 2001 Douglas Gregor
- © 2001 Eric Ford
- © 2001 Francois Faure
- © 2001 Gennadiy Rozental
- © 2001 Howard Hinnant
- © 2001 Hubert Holin
- © 2001 Jens Maurer
- © 2001 Jeremy G. Siek
- © 2001 Jesse Jones
- © 2001 John Maddock
- © 2001 John R. Bandela
- © 2001 Kevlin Henney
- © 2001 Lie-Quan Lee
- © 2001 Mat Marcus
- © 2001 Multi Media Ltd
- © 2001 Nicolai M. Josuttis
- © 2001 Peter Dimov
- © 2001 Raphael Bossek <bossekr@debian.org>
- © 2001 Ronald Garcia
- © 2001 Sam Tobin-Hochstadt
- © 2001 Terje Slettebo
- © 2001 Thomas Flemming
- © 2001 Toon Knapen
- © 2001 Ullrich Koethe
- © 2001 University of Notre Dame
- © 2001 Université Joseph Fourier, Grenoble
- © 2001 Vesa Karvonen
- © 2001 Vladimir Prus
- © 2001, 2003 Samuel Krempp
- © 2001, 2003-2015 Gennadiy Rozental
- © 2001, 2003-2015 Raffi Enficiaud
- © 2001, 2004 Jeremy G. Siek
- © 2001, 2006 Hubert Holin
- © 2001-2002 Andrew Lumsdaine
- © 2001-2002 Chuck Allison
- © 2001-2002 Daniel C. Nuffer
- © 2001-2002 Darin Adler
- © 2001-2002 Daryle Walker
- © 2001-2002 David Abrahams
- © 2001-2002 Housemarque Oy
- © 2001-2002 Hubert Holin
- © 2001-2002 Indiana University
- © 2001-2002 Jens Maurer
- © 2001-2002 Jeremy G. Siek
- © 2001-2002 Joel de Guzman
- © 2001-2002 John Maddock
- © 2001-2002 Lie-Quan Lee
- © 2001-2002 Multi Media Ltd
- © 2001-2002 Peter Dimov
- © 2001-2002 Stephen Cleary
- © 2001-2002 Vladimir Prus
- © 2001-2002, 2004-2006, 2008-2009 Peter Dimov
- © 2001-2002, 2006 Peter Dimov
- © 2001-2002, 2007, 2014 Peter Dimov
- © 2001-2003 Beman Dawes
- © 2001-2003 Dan Nuffer
- © 2001-2003 Daniel Nuffer
- © 2001-2003 David Abrahams
- © 2001-2003 Douglas Gregor
- © 2001-2003 Hartmut Kaiser
- © 2001-2003 Jens Maurer
- © 2001-2003 Jeremy G. Siek
- © 2001-2003 Joel de Guzman
- © 2001-2003 John Maddock
- © 2001-2003 Mac Murrett
- © 2001-2003 Multi Media Ltd
- © 2001-2003 Peter Dimov
- © 2001-2003 Toon Knapen
- © 2001-2003 William E. Kempf
- © 2001-2004 David Abrahams
- © 2001-2004 Douglas Gregor
- © 2001-2004 John Maddock
- © 2001-2004 Multi Media Ltd
- © 2001-2004 Peter Dimov
- © 2001-2004, 2006 Ralf W. Grosse-Kunstleve
- © 2001-2005 Dan Marsden
- © 2001-2005 David Abrahams
- © 2001-2005 Gennadiy Rozental
- © 2001-2005 Peter Dimov
- © 2001-2005, 2007 David Abrahams
- © 2001-2005, 2007-2008 Peter Dimov
- © 2001-2005, 2015 Peter Dimov
- © 2001-2006 David Abrahams
- © 2001-2006 Douglas Gregor
- © 2001-2006 Peter Dimov
- © 2001-2006, 2008, 2017 Peter Dimov
- © 2001-2006, 2011-2013 Daryle Walker
- © 2001-2007 Dan Marsden
- © 2001-2007 Hartmut Kaiser
- © 2001-2007 Joel de Guzman
- © 2001-2008 Hartmut Kaiser
- © 2001-2008 John Maddock
- © 2001-2008, 2010 Douglas Gregor
- © 2001-2008, 2012 Peter Dimov
- © 2001-2008, 2013, 2015, 2018 Peter Dimov
- © 2001-2009 Daniel Nuffer
- © 2001-2009 Hartmut Kaiser
- © 2001-2009 Joel de Guzman
- © 2001-2010 Hartmut Kaiser
- © 2001-2010 Joel de Guzman
- © 2001-2010 Thomas Heller
- © 2001-2011 Hartmut Kaiser
- © 2001-2011 Joel de Guzman
- © 2001-2011 Thomas Heller
- © 2001-2012 Hartmut Kaiser
- © 2001-2012 Joel de Guzman
- © 2001-2012, 2014 Thomas Bernard
- © 2001-2013 Hartmut Kaiser
- © 2001-2013 Joel de Guzman
- © 2001-2014 Gennadiy Rozental
- © 2001-2014 Joel de Guzman
- © 2001-2014 Steven Ross
- © 2001-2015 Gennadiy Rozental
- © 2001-2015 Hartmut Kaiser
- © 2001-2015 Joel de Guzman
- © 2001-2017 Joel de Guzman
- © 2001-2020 Peter Dimov
- © 2002 Aleksey Gurtovoy
- © 2002 Andrei Alexandrescu
- © 2002 Beman Dawes
- © 2002 Bill Kempf
- © 2002 Brad King
- © 2002 Craig Henderson
- © 2002 Darin Adler
- © 2002 David Abrahams
- © 2002 David Tonge
- © 2002 Douglas Gregor
- © 2002 Eric Friedman
- © 2002 Guillaume Melquiond
- © 2002 Hans Lohninger
- © 2002 Hartmut Kaiser
- © 2002 Hervé Brönnimann
- © 2002 Housemarque Oy
- © 2002 Indiana University
- © 2002 Itay Maman
- © 2002 Jan Langer
- © 2002 Jeff Garland
- © 2002 Jeff Westfahl
- © 2002 Jens Maurer
- © 2002 Jeremy G. Siek
- © 2002 Joel de Guzman
- © 2002 Juan Carlos Arevalo-Baeza
- © 2002 Lars Gullik Bjønnes
- © 2002 Marc Wintermantel
- © 2002 Martin Ecker
- © 2002 Multi Media Ltd
- © 2002 Paul Mensonides
- © 2002 Peter Dimov
- © 2002 Peter Simons
- © 2002 Raghavendra Satish
- © 2002 Rani Sharoni
- © 2002 Rensselaer Polytechnic Institute
- © 2002 Robert Ramey
- © 2002 Ronald Garcia
- © 2002 Sylvain Pion
- © 2002 Takatoshi Kondo
- © 2002 Terje Slettebo
- © 2002 The Trustees of Indiana University
- © 2002 Thomas Witt
- © 2002 Vahan Margaryan
- © 2002 Vladimir Prus
- © 2002, 2004, 2006 Eric Niebler
- © 2002, 2004, 2006 Joel de Guzman
- © 2002, 2004-2009, 2012 Trustees of Indiana University
- © 2002, 2005 Daryle Walker
- © 2002, 2005-2007, 2010 Rene Rivera
- © 2002, 2006 Beman Dawes
- © 2002, 2007, 2014, 2017 Peter Dimov
- © 2002, 2008, 2013 Peter Dimov
- © 2002, 2008-2009, 2014, 2016 Peter Dimov
- © 2002, 2009, 2014 Peter Dimov
- © 2002, 2018-2019 Peter Dimov
- © 2002, 2020 Robert Ramey
- © 2002-2003 Aleksey Gurtovoy
- © 2002-2003 Beman Dawes
- © 2002-2003 Daryle Walker
- © 2002-2003 David Abrahams
- © 2002-2003 David Moore
- © 2002-2003 Eric Friedman
- © 2002-2003 Guillaume Melquiond
- © 2002-2003 Hartmut Kaiser
- © 2002-2003 Hervé Brönnimann
- © 2002-2003 Institute of Transport, Railway Construction and Operation, University of Hanover, Germany
- © 2002-2003 Itay Maman
- © 2002-2003 Joel de Guzman
- © 2002-2003 Joerg Walter
- © 2002-2003 Johan Nilsson
- © 2002-2003 Juan Carlos Arevalo-Baeza
- © 2002-2003 Kresimir Fresl
- © 2002-2003 Markus Schoepflin
- © 2002-2003 Martin Wille
- © 2002-2003 Multi Media Ltd
- © 2002-2003 Pavol Droba
- © 2002-2003 Peter Dimov
- © 2002-2003 Rene Rivera
- © 2002-2003 Sylvain Pion
- © 2002-2003 The Trustees of Indiana University
- © 2002-2003 Thorsten Ottosen
- © 2002-2003 Toon Knapen
- © 2002-2003 Vladimir Prus
- © 2002-2003 William E. Kempf
- © 2002-2003, 2005 Guillaume Melquiond
- © 2002-2003, 2005, 2011-2012 Paul Mensonides
- © 2002-2003, 2005, 2014, 2017-2018 Peter Dimov
- © 2002-2003, 2005, 2016-2018 Rene Rivera
- © 2002-2003, 2005-2006 Rene Rivera
- © 2002-2003, 2006 Beman Dawes
- © 2002-2004 David Abrahams
- © 2002-2004 Guillaume Melquiond
- © 2002-2004 Hervé Brönnimann
- © 2002-2004 Martin Wille
- © 2002-2004 Pavel Vozenilek
- © 2002-2004 The Trustees of Indiana University
- © 2002-2004 Vladimir Prus
- © 2002-2004, 2006 Vladimir Prus
- © 2002-2004, 2006, 2008 Gennaro Prota
- © 2002-2004, 2007 Vladimir Prus
- © 2002-2005 Andreas Huber Doenni
- © 2002-2005 David Abrahams
- © 2002-2005 Thomas Witt
- © 2002-2005 Vladimir Prus
- © 2002-2005, 2008-2010 Beman Dawes
- © 2002-2006 Aleksey Gurtovoy
- © 2002-2006 CrystalClear Software, Inc
- © 2002-2006 Hartmut Kaiser
- © 2002-2006 Pavol Droba
- © 2002-2006 Rene Rivera
- © 2002-2006 Vladimir Prus
- © 2002-2006, 2008 Marcin Kalicinski
- © 2002-2006, 2010 Vladimir Prus
- © 2002-2007 Marcin Kalicinski
- © 2002-2007, 2009 Marcin Kalicinski
- © 2002-2007, 2010 Rene Rivera
- © 2002-2007, 2010 Vladimir Prus
- © 2002-2008 Fernando Luis Cacciola Carballal
- © 2002-2008 Joaquín M López Muñoz
- © 2002-2008 Robert Ramey
- © 2002-2009 Beman Dawes
- © 2002-2009 Robert Ramey
- © 2002-2009 Takatoshi Kondo
- © 2002-2009 Vladimir Prus
- © 2002-2009, 2014 Beman Dawes
- © 2002-2010 Andreas Huber Doenni
- © 2002-2010 Vladimir Prus
- © 2002-2010, 2012 The Trustees of Indiana University
- © 2002-2010, 2014 Beman Dawes
- © 2002-2011 Paul Mensonides
- © 2002-2014 Christopher Kormanyos
- © 2002-2017 Daniel Frey
- © 2002-2017 Peter Dimov
- © 2002-2017 Rene Rivera
- © 2002-2017 Vladimir Prus
- © 2002-2018 Peter Dimov
- © 2002-2018 Steve M. Robbins <smr@debian.org>
- © 2002-2020 Rene Rivera
- © 2002-2020 Robert Ramey
- © 2003 Aleksey Gurtovoy
- © 2003 Andre Hentz
- © 2003 Beman Dawes
- © 2003 Bruce Barr
- © 2003 Christof Meerwald
- © 2003 Christopher Currie
- © 2003 Dan Watkins
- © 2003 Daniel Frey
- © 2003 Daniel Walker
- © 2003 David Abrahams
- © 2003 Douglas Gregor
- © 2003 Eric Friedman
- © 2003 Felix E. Klee
- © 2003 Fernando Luis Cacciola Carballal
- © 2003 Gennaro Prota
- © 2003 Giovanni Bajo
- © 2003 Gottfried Ganßauge
- © 2003 Guillaume Melquiond
- © 2003 Gunter Winkler
- © 2003 Gustavo Guerra
- © 2003 Hartmut Kaiser
- © 2003 Howard Hinnant
- © 2003 Jaap Suter
- © 2003 Jens Maurer
- © 2003 Jeremy G. Siek
- © 2003 Joel de Guzman
- © 2003 Joerg Walter
- © 2003 John Maddock
- © 2003 Jonathan Turkanis
- © 2003 Jonathan de Halleux
- © 2003 Martin Wille
- © 2003 Michael Stevens
- © 2003 Paul Lin
- © 2003 Paul Mensonides
- © 2003 Pavel Baranov
- © 2003 Rational Discovery LLC
- © 2003 Rene Rivera
- © 2003 Robert Ramey
- © 2003 Roland Richter
- © 2003 Sam Nabialek
- © 2003 Synge Todo
- © 2003 Thomas Becker
- © 2003 Thomas Witt
- © 2003 Toon Knapen
- © 2003 Vaclav Vesely
- © 2003 Vesa Karvonen
- © 2003 Vladimir Prus
- © 2003, 2005 David Abrahams
- © 2003, 2005 Douglas Gregor
- © 2003, 2005 Pedro Ferreira
- © 2003, 2005-2006 Daniel Wallin
- © 2003, 2005-2006 David Abrahams
- © 2003, 2005-2006, 2010 Daniel Wallin
- © 2003, 2005-2007 Rene Rivera
- © 2003, 2007 Nikolay Mladenov
- © 2003, 2010 Vladimir Prus
- © 2003-2004 Aleksey Gurtovoy
- © 2003-2004 David Abrahams
- © 2003-2004 Douglas Gregor
- © 2003-2004 Gennaro Prota
- © 2003-2004 Jaakko Järvi
- © 2003-2004 Jeremy B. Maitin-Shepard
- © 2003-2004 Martin Wille
- © 2003-2004 Neil Groves
- © 2003-2004 Pavel Vozenilek
- © 2003-2004 Pavol Droba
- © 2003-2004 Robert Ramey
- © 2003-2004 Thorsten Ottosen
- © 2003-2004, 2006 Vladimir Prus
- © 2003-2004, 2007, 2009-2011, 2014 Neil Groves
- © 2003-2005 Douglas Gregor
- © 2003-2005 Larry Evans
- © 2003-2005 Rani Sharoni
- © 2003-2005 Thorsten Ottosen
- © 2003-2005 Vladimir Prus
- © 2003-2006 Gennaro Prota
- © 2003-2006 Gottfried Ganßauge
- © 2003-2006 Joel de Guzman
- © 2003-2006 Vladimir Prus
- © 2003-2006, 2008 Gennaro Prota
- © 2003-2006, 2010 David Abrahams
- © 2003-2007 John Maddock
- © 2003-2007 Jonathan Turkanis
- © 2003-2008 Fernando Luis Cacciola Carballal
- © 2003-2008 Jan Gaspar
- © 2003-2008 Matthias Christian Schabel
- © 2003-2009 Jan Gaspar
- © 2003-2009 Matthias Christian Schabel
- © 2003-2009 Thorsten Ottosen
- © 2003-2010 Thorsten Ottosen
- © 2003-2010, 2014 Neil Groves
- © 2003-2011 LASMEA UMR 6602 CNRS/Univ. Clermont II
- © 2003-2013 Christopher M. Kohlhoff
- © 2003-2013 Joaquín M López Muñoz
- © 2003-2020 Christopher M. Kohlhoff
- © 2003-2020 Joaquín M López Muñoz
- © 2003-2020 Oliver Kowalke
- © 2004 Aaron W. LaFramboise
- © 2004 Aleksey Gurtovoy
- © 2004 Alexander Nasonov
- © 2004 Angus Leeming
- © 2004 Bertolt Mildner
- © 2004 Brian Ravnsgaard Riis
- © 2004 Christoph Ludwig
- © 2004 Daniel Wallin
- © 2004 David Abrahams
- © 2004 Douglas Gregor
- © 2004 Eric Niebler
- © 2004 Gerald I. Evenden
- © 2004 Howard Hinnant
- © 2004 Jeremiah Willcock
- © 2004 Jeremy G. Siek
- © 2004 Joel de Guzman
- © 2004 Joel de Guzman http://spirit.sourceforge.net/
- © 2004 John Maddock
- © 2004 Jonathan Brandmeyer
- © 2004 Jonathan Graehl
- © 2004 Jonathan Turkanis
- © 2004 João Abecasis
- © 2004 Kristopher Beevers
- © 2004 Martin Ecker
- © 2004 MetaCommunications, Inc.
- © 2004 Michael Glassford
- © 2004 Pavel Vozenilek
- © 2004 Ralf Mattethat
- © 2004 Rani Sharoni
- © 2004 Reece H. Dunn
- © 2004 Rene Rivera
- © 2004 Robert Ramey
- © 2004 Stefan Slapeta
- © 2004 The Trustees of Indiana University
- © 2004 Toon Knapen
- © 2004 Vladimir Prus
- © 2004 Vyacheslav E. Andrejev
- © 2004, 2006 Douglas Gregor
- © 2004, 2006 Michael Stevens
- © 2004, 2007 Joel de Guzman
- © 2004, 2007 Roland Schwarz
- © 2004, 2009 The Trustees of Indiana University
- © 2004, 2009-2010 Chris Hoeppler
- © 2004, 2013, 2017-2019 Cromwell D. Enage
- © 2004-2005 Eric Niebler
- © 2004-2005 Jonathan Turkanis
- © 2004-2005 Markus Schoepflin
- © 2004-2005, 2010-2011, 2014 Eric Niebler
- © 2004-2006 Arkadiy Vertleyb
- © 2004-2006 David Abrahams
- © 2004-2006 João Abecasis
- © 2004-2006 Olaf Krzikalla
- © 2004-2006 Peder Holt
- © 2004-2006 Ralf W. Grosse-Kunstleve
- © 2004-2006 Rene Rivera
- © 2004-2006 The Trustees of Indiana University
- © 2004-2006, 2009 Trustees of Indiana University
- © 2004-2007 Daniel Wallin
- © 2004-2007 Jonathan Turkanis
- © 2004-2008 Domenico Andreoli <cavok@debian.org>
- © 2004-2008 Rene Nyffenegger
- © 2004-2008 The Trustees of Indiana University
- © 2004-2009 Martin Ecker
- © 2004-2009 Robert Ramey
- © 2004-2009 Takatoshi Kondo
- © 2004-2010 Gunter Winkler
- © 2004-2011 David Bellot
- © 2004-2011 Michael Stevens
- © 2004-2012 Ion Gaztañaga
- © 2004-2012, 2014 Eric Niebler
- © 2004-2019 Ion Gaztañaga
- © 2005 Aleksey Gurtovoy
- © 2005 Alexey Pakhunov
- © 2005 Alo Sarv
- © 2005 Arkadiy Vertleyb
- © 2005 Ben Hutchings
- © 2005 Christopher Diggins
- © 2005 Craig Rodrigues
- © 2005 Dan Marsden
- © 2005 Daniel Egloff
- © 2005 Daniel James
- © 2005 Daniel K. O.
- © 2005 Daniel Wallin
- © 2005 David Abrahams
- © 2005 Douglas Gregor
- © 2005 Eric Niebler
- © 2005 Felix Höfling
- © 2005 Guillaume Melquiond
- © 2005 Hartmut Kaiser
- © 2005 Igor Chesnokov
- © 2005 Jim Douglas
- © 2005 Joel de Guzman
- © 2005 John Maddock
- © 2005 Jordan DeLong
- © 2005 João Abecasis
- © 2005 Keith MacDonald
- © 2005 Kevlin Henney
- © 2005 Markus Schoepflin
- © 2005 Matthias Troyer
- © 2005 Michael Gauckler
- © 2005 Pablo Aguilar
- © 2005 Peder Holt
- © 2005 Pedro Ferreira
- © 2005 Reece H. Dunn
- © 2005 Rene Rivera
- © 2005 Robert Ramey
- © 2005 Sergey Shandar
- © 2005 Stefan Arentz
- © 2005 Terje Sletteb
- © 2005 Thomas Guest
- © 2005 Thorsten Ottosen
- © 2005 Toon Knapen
- © 2005 Vladimir Prus
- © 2005 Voipster
- © 2005, 2007 Matthias Troyer
- © 2005, 2007 Rene Rivera
- © 2005, 2007-2008 Aaron Windsor
- © 2005, 2008 Eric Niebler
- © 2005, 2008-2009, 2014, 2016-2019 Peter Dimov
- © 2005, 2009 Carl Barron
- © 2005, 2009 Troy D. Straszheim
- © 2005, 2013-2020 Niall Douglas
- © 2005, 2018 Rene Rivera
- © 2005-2006 Dan Marsden
- © 2005-2006 Daniel Egloff
- © 2005-2006 Daniel Wallin
- © 2005-2006 Danny Havenith
- © 2005-2006 David Abrahams
- © 2005-2006 Douglas Gregor
- © 2005-2006 João Abecasis
- © 2005-2006 Michael Drexl
- © 2005-2006 Olivier Gygi
- © 2005-2006 Peter Dimov
- © 2005-2006 Rene Rivera
- © 2005-2006 Shunsuke Sogame
- © 2005-2006 The Trustees of Indiana University
- © 2005-2006 Trustees of Indiana University
- © 2005-2006, 2013-2015, 2018 Alain Miniussi
- © 2005-2007 Adobe Systems Incorporated
- © 2005-2007 Anthony Williams
- © 2005-2007 Dan Marsden
- © 2005-2007 Douglas Gregor
- © 2005-2007 Hartmut Kaiser
- © 2005-2007 Joel de Guzman
- © 2005-2007 Jonathan Turkanis
- © 2005-2007 Mat Marcus
- © 2005-2007 Matthew Calabrese
- © 2005-2007 Peder Holt
- © 2005-2007, 2009 Alexander Nasonov
- © 2005-2007, 2010 Peder Holt
- © 2005-2007, 2011, 2016, 2018 Stefan Seefeld
- © 2005-2008 Adobe Systems Incorporated
- © 2005-2008 Anthony Williams
- © 2005-2008 Hartmut Kaiser
- © 2005-2008 John Maddock
- © 2005-2008 Matthias Troyer
- © 2005-2008 Redshift Software, Inc
- © 2005-2009 Jong Soo Park
- © 2005-2010 Hartmut Kaiser
- © 2005-2010 Joel de Guzman
- © 2005-2012 Anthony Williams
- © 2005-2012 Ion Gaztañaga
- © 2005-2012 Juergen Hunold
- © 2005-2012, 2014 Ion Gaztañaga
- © 2005-2013 Ion Gaztañaga
- © 2005-2015 Ion Gaztañaga
- © 2005-2016 Daniel James
- © 2005-2018 Daniel James
- © 2005-2018 John Maddock
- © 2005-2020 Christopher M. Kohlhoff
- © 2006 Alexander Nasonov
- © 2006 Alisdair Meredith
- © 2006 Arjan Knepper
- © 2006 Arkadiy Vertleyb
- © 2006 Bojan Resnik
- © 2006 Boris Gubenko
- © 2006 Dan Marsden
- © 2006 Daniel Walker
- © 2006 Daniel Wallin
- © 2006 David Abrahams
- © 2006 Douglas Gregor
- © 2006 Eric Niebler
- © 2006 FILL SOMETHING HERE
- © 2006 Gennaro Prota
- © 2006 Ilya Sokolov
- © 2006 Jeremy G. Siek
- © 2006 Joel de Guzman
- © 2006 Johan Rade
- © 2006 John Maddock
- © 2006 Juergen Hunold
- © 2006 Jürgen Hunold
- © 2006 Michael van der Westhuizen
- © 2006 Olivier Gygi
- © 2006 Paul A. Bristow
- © 2006 Peter Dimov
- © 2006 Piotr Wyderski
- © 2006 Rene Rivera
- © 2006 Roland Schwarz
- © 2006 Stephan Diederich
- © 2006 Stephen Nutt
- © 2006 Steven Watanabe
- © 2006 The Trustees of Indiana University
- © 2006 Thorsten Ottosen
- © 2006 Tiago de Paula Peixoto
- © 2006 Tobias Schwinger
- © 2006 Tomas Puverle
- © 2006 Trustees of Indiana University
- © 2006 Vladimir Prus
- © 2006 Xiaogang Zhang
- © 2006, 2008 Beman Dawes
- © 2006, 2008 John Maddock
- © 2006, 2008, 2011 Johan Rade
- © 2006, 2008, 2011 John Maddock
- © 2006, 2008, 2011 Paul A. Bristow
- © 2006, 2009 Beman Dawes
- © 2006, 2009, 2014 Beman Dawes
- © 2006, 2011 Johan Rade
- © 2006, 2012, 2017 Paul A. Bristow
- © 2006, 2013 Christopher Kormanyos
- © 2006, 2013 John Maddock
- © 2006, 2013 Paul A. Bristow
- © 2006, 2013 Xiaogang Zhang
- © 2006, 2015, 2017 John Maddock
- © 2006-2007 Andreas Kloeckner
- © 2006-2007 Beman Dawes
- © 2006-2007 Boris Gubenko
- © 2006-2007 Dan Marsden
- © 2006-2007 Daryle Walker
- © 2006-2007 Douglas Gregor
- © 2006-2007 Hubert Holin
- © 2006-2007 John Maddock
- © 2006-2007 Julio M. Merino Vidal
- © 2006-2007 Matias Capeletto
- © 2006-2007 Noel Belcourt
- © 2006-2007 Paul A. Bristow
- © 2006-2007 Roland Schwarz
- © 2006-2007 Tobias Schwinger
- © 2006-2007, 2009-2010 Andy Tompkins
- © 2006-2007, 2013-2014 John Maddock
- © 2006-2007, 2016, 2020 Rene Rivera
- © 2006-2008 Johan Rade
- © 2006-2008 Neil Groves
- © 2006-2008 Thorsten Ottosen
- © 2006-2008 Tobias Schwinger
- © 2006-2008, 2010-2019 Paul A. Bristow
- © 2006-2009 Andrey Parfenov
- © 2006-2009 Dmitry Bufistov
- © 2006-2009 Emil Dotchevski
- © 2006-2009 Reverge Studios, Inc
- © 2006-2009, 2012 Alexander Nasonov
- © 2006-2010 Alexander Nasonov
- © 2006-2010 Anthony Williams
- © 2006-2010 Paul A. Bristow
- © 2006-2011 Jens Maurer
- © 2006-2012 Ion Gaztañaga
- © 2006-2012, 2015-2016 Juergen Hunold
- © 2006-2013 Joaquín M López Muñoz
- © 2006-2014 Ion Gaztañaga
- © 2006-2015 Ion Gaztañaga
- © 2006-2017 Emil Dotchevski
- © 2006-2017 Reverge Studios, Inc
- © 2006-2019 Paul A. Bristow
- © 2007 Alexander Nasonov
- © 2007 Alexandre Courpron
- © 2007 Alexey Baskakov
- © 2007 Andreas Kloeckner
- © 2007 Andy Tompkins
- © 2007 Anthony Williams
- © 2007 Baruch Zilber
- © 2007 Bjorn Roald
- © 2007 Boris Gubenko
- © 2007 Christopher M. Kohlhoff
- © 2007 CodeRage
- © 2007 Dan Marsden
- © 2007 Daniel Walker
- © 2007 David Deakins
- © 2007 David Gleich
- © 2007 Douglas Gregor
- © 2007 Emil Dotchevski
- © 2007 Frank Birbacher
- © 2007 Frank Mori Hess
- © 2007 Hartmut Kaiser
- © 2007 Joel de Guzman
- © 2007 John Maddock
- © 2007 Markus Schoepflin
- © 2007 Nikolay Mladenov
- © 2007 Noel Belcourt
- © 2007 Rene Rivera
- © 2007 Robert Ramey
- © 2007 Roland Schwarz
- © 2007 Sebastian Ramacher
- © 2007 Stanford University
- © 2007 Timmo Stange
- © 2007 Tobias Schwinger
- © 2007 University of Karlsruhe
- © 2007 Vladimir Prus
- © 2007, 2009 Tim Blechmann
- © 2007, 2010 Andy Tompkins
- © 2007, 2012-2013 Christian Henning
- © 2007, 2013 John Maddock
- © 2007, 2013-2014 Paul A. Bristow
- © 2007-2008 Anthony Williams
- © 2007-2008 CodeRage, LLC
- © 2007-2008 Dario Senic
- © 2007-2008 David Abrahams
- © 2007-2008 David Jenkins
- © 2007-2008 Eric Niebler
- © 2007-2008 Hartmut Kaiser
- © 2007-2008 Ion Gaztañaga
- © 2007-2008 Joseph Gauterin
- © 2007-2008 Jurko Gospodnetic
- © 2007-2008 Michael Stevens
- © 2007-2008 Niels Dekker
- © 2007-2008 Peter Dimov
- © 2007-2008 Steven Watanabe
- © 2007-2008 Tobias Schwinger
- © 2007-2008 Vladimir Prus
- © 2007-2009 Anthony Williams
- © 2007-2009 Ben Hanson
- © 2007-2009 Frank Mori Hess
- © 2007-2010 Andrew Sutton
- © 2007-2010 Anthony Williams
- © 2007-2010 Hartmut Kaiser
- © 2007-2010 Rene Rivera
- © 2007-2010 Steven Watanabe
- © 2007-2010, 2012 Howard Hinnant
- © 2007-2010, 2012-2013 Christian Henning
- © 2007-2010, 2014 Howard Hinnant
- © 2007-2010, 2019 Frank Mori Hess
- © 2007-2011 Andy Tompkins
- © 2007-2011 Hartmut Kaiser
- © 2007-2012 Andreas Pokorny
- © 2007-2012 Barend Gehrels
- © 2007-2012 Christian Henning
- © 2007-2012 Joachim Faulhaber
- © 2007-2012 Lubomir Bourdev
- © 2007-2013, 2015-2017 Ion Gaztañaga
- © 2007-2014 Ion Gaztañaga
- © 2007-2014, 2017 Barend Gehrels
- © 2007-2014, 2017-2018 Marshall Clow
- © 2007-2015 Andrey Semashev
- © 2007-2015 Barend Gehrels
- © 2007-2016 Barend Gehrels
- © 2007-2017 Barend Gehrels
- © 2007-2017 Rene Rivera
- © 2007-2018 Steven Watanabe
- © 2007-2019 Barend Gehrels
- © 2007-2020 Andrey Semashev
- © 2007-2020 Barend Gehrels
- © 2008 Beman Dawes
- © 2008 Christophe Henry
- © 2008 CodeRage, LLC
- © 2008 Dan Marsden
- © 2008 Eduardo Gurgel
- © 2008 Eric Niebler
- © 2008 Federico J. Fernandez
- © 2008 Francois Barel
- © 2008 Frank Mori Hess
- © 2008 Gautam Sewani
- © 2008 Hailin Jin
- © 2008 Hartmut Kaiser
- © 2008 Howard Hinnant
- © 2008 Ilya Sokolov
- © 2008 Intel Corporation
- © 2008 John Maddock
- © 2008 Jorge Lodos
- © 2008 Joseph Gauterin
- © 2008 Jurko Gospodnetic
- © 2008 Lubomir Bourdev
- © 2008 Matyas W Egyhazy
- © 2008 Michael Marcin
- © 2008 Milan Svoboda
- © 2008 N. Musatti
- © 2008 Rene Rivera
- © 2008 Rep Invariant Systems, Inc.
- © 2008 Robert Ramey
- © 2008 Roelof Naude
- © 2008 Runar Undheim
- © 2008 Steven Watanabe
- © 2008 Vladimir Prus
- © 2008, 2010 Intel Corporation
- © 2008, 2010-2011, 2017 Christophe Henry
- © 2008, 2012 Jurko Gospodnetic
- © 2008, 2014 Peter Dimov
- © 2008, 2017-2019 James E. King III
- © 2008-2009 Ben Hanson
- © 2008-2009 Frank Mori Hess
- © 2008-2009 John Maddock
- © 2008-2009 Niels Dekker
- © 2008-2009 Thijs van den Berg
- © 2008-2009, 2014 Paul A. Bristow
- © 2008-2009, 2016 Cory Nelson
- © 2008-2009, 2016 Tim Blechmann
- © 2008-2010 Gordon Woodhull
- © 2008-2010 Joseph Gauterin
- © 2008-2010 Niels Dekker
- © 2008-2011 Anthony Williams
- © 2008-2011 Hartmut Kaiser
- © 2008-2012 Barend Gehrels
- © 2008-2012 Boris Schaeling
- © 2008-2012 Bruno Lalande
- © 2008-2012 Daniel Walker
- © 2008-2012 Eric Niebler
- © 2008-2012 Michel Morin
- © 2008-2012 Simonson Lucanus
- © 2008-2013 Roland Schwarz
- © 2008-2015 Barend Gehrels
- © 2008-2015 Bruno Lalande
- © 2008-2015 Ion Gaztañaga
- © 2008-2015 Rene Rivera
- © 2008-2016 Bruno Lalande
- © 2008-2016 Emil Dotchevski
- © 2008-2016 Reverge Studios, Inc
- © 2008-2016 Tim Blechmann
- © 2008-2017 Bruno Lalande
- © 2008-2017 Charles Karney
- © 2008-2018 Oliver Kowalke
- © 2008-2018 Vicente J. Botet Escriba
- © 2008-2019 Bruno Lalande
- © 2008-2019 Lorenzo Caminiti
- © 2008-2019 Rene Rivera
- © 2009 Andreas Haberstroh
- © 2009 Andrew Sutton
- © 2009 Andrey Semashev
- © 2009 Arno Schoedl
- © 2009 ArtVPS Ltd
- © 2009 Beman Dawes
- © 2009 Brian Ravnsgaard
- © 2009 Carl Barron
- © 2009 Chris Hoeppler
- © 2009 Daniel Frey
- © 2009 Daniel James
- © 2009 Dean Michael Berris
- © 2009 Dmitry Bufistov
- © 2009 Dustin Spicuzza
- © 2009 Edward Grace
- © 2009 Eric Bose-Wolf
- © 2009 Eric Moyer
- © 2009 Erik Bryan
- © 2009 Francois Barel
- © 2009 Frank Mori Hess
- © 2009 Gunter Winkler
- © 2009 Hartmut Kaiser
- © 2009 Inc
- © 2009 Ion Gaztañaga
- © 2009 Jean-Francois Ostiguy
- © 2009 Jesse Williamson
- © 2009 Joel de Guzman
- © 2009 John Maddock
- © 2009 Kenneth Riddile
- © 2009 Mathias Gaunard
- © 2009 Matthias Vallentin
- © 2009 Nasos Iliopoulos
- © 2009 Neil Groves
- © 2009 Pablo Halpern
- © 2009 Pavel Baranov
- © 2009 Peter Dimov
- © 2009 Phil Endecott
- © 2009 Robert Ramey
- © 2009 Ronald Garcia
- © 2009 Sascha Ochsenknecht
- © 2009 Spirent Communications
- © 2009 Steven Watanabe
- © 2009 The Trustees of Indiana University
- © 2009 Tor Brede Vekterli
- © 2009 Trustees of Indiana University
- © 2009 Vicente J. Botet Escriba
- © 2009 Yuriy Krasnoschek
- © 2009, 2011 Helge Bahmann
- © 2009, 2013, 2015 Sebastian Redl
- © 2009-2010 Christopher Schmidt
- © 2009-2010 Datasim Education BV
- © 2009-2010 Hartmut Kaiser
- © 2009-2010, 2013, 2015 Sebastian Redl
- © 2009-2011 Christopher Schmidt
- © 2009-2011 David Bellot
- © 2009-2011 Frederic Bron
- © 2009-2011 Gunter Winkler
- © 2009-2011 Helge Bahmann
- © 2009-2011 LRI UMR 8623 CNRS/Univ Paris Sud XI
- © 2009-2011 Robert Stewart
- © 2009-2011 Roman Perepelitsa
- © 2009-2011 Steven Watanabe
- © 2009-2011 Vicente J. Botet Escriba
- © 2009-2012 David Abrahams
- © 2009-2012 Mateusz Loskot
- © 2009-2012 Vicente J. Botet Escriba
- © 2009-2012, 2014 Marco Guazzone
- © 2009-2012, 2015 Artyom Beilis
- © 2009-2012, 2018 Mateusz Loskot
- © 2009-2013 Daniel James
- © 2009-2013 Ion Gaztañaga
- © 2009-2013 Karsten Ahnert
- © 2009-2013, 2017-2020 Mateusz Loskot
- © 2009-2014 Ion Gaztañaga
- © 2009-2014 Neil Groves
- © 2009-2015 Barend Gehrels
- © 2009-2015 Bruno Lalande
- © 2009-2015 Charles Karney
- © 2009-2015 Mario Mulansky
- © 2009-2015 Mateusz Loskot
- © 2009-2015, 2018 Artyom Beilis
- © 2009-2016 Karsten Ahnert
- © 2009-2016 Mario Mulansky
- © 2009-2016 Mateusz Loskot
- © 2009-2016 Vladimir Batov
- © 2009-2017 Mateusz Loskot
- © 2009-2018 Abel Sinkovics
- © 2009-2018 Mateusz Loskot
- © 2009-2018 Vicente J. Botet Escriba
- © 2009-2019 Adam Wulkiewicz
- © 2009-2019 Mateusz Loskot
- © 2010 Alfredo Correa
- © 2010 Andreas Huber Doenni
- © 2010 Artyom Beilis
- © 2010 Athanasios Iliopoulos
- © 2010 Beman Dawes
- © 2010 Bryce Lelbach
- © 2010 Carl Philipp Reh
- © 2010 Christian Henning
- © 2010 Christophe Henry
- © 2010 Christopher Schmidt
- © 2010 Daniel James
- © 2010 Daniel Trebbien
- © 2010 Daniel Wallin
- © 2010 Dean Michael Berris
- © 2010 Eric Jourdanneau
- © 2010 Eric Niebler
- © 2010 Fabien Castan
- © 2010 Felipe Tanus
- © 2010 Gaetano Mendola
- © 2010 Georg Fritzsche
- © 2010 Gevorg Voskanyan
- © 2010 Gordon Woodhull
- © 2010 Hartmut Kaiser
- © 2010 Head Geek
- © 2010 Howard Hinnant
- © 2010 Ignacy Gawedzki
- © 2010 Igor R (http://thread.gmane.org/gmane.comp.lib.boost.user/62985)
- © 2010 Ilya Murav'jov
- © 2010 Jeffrey Hellrung
- © 2010 Jeroen Habraken
- © 2010 Joel Falcou
- © 2010 Joel de Guzman
- © 2010 John Maddock
- © 2010 Josh Wilson
- © 2010 Just Software Solutions Ltd
- © 2010 Kenneth Riddile
- © 2010 Larry Evans
- © 2010 Lars Kielhorn
- © 2010 Mathias Gaunard
- © 2010 Matthias Walter
- © 2010 Nicolas Lelong
- © 2010 Niels Dekker
- © 2010 Nuovation System Designs, LLC
- © 2010 Olaf Peter
- © 2010 Paul A. Bristow
- © 2010 Peter Schueller
- © 2010 Sergey "GooRoo" Olendarenko
- © 2010 Steven Watanabe
- © 2010 Thomas Claveirole
- © 2010 Thomas Heller
- © 2010 Vicente J. Botet Escriba
- © 2010 W.P. McNeill
- © 2010, 2012 Christopher Schmidt
- © 2010, 2012 Nathan Ridge
- © 2010, 2013 Vicente J. Botet Escriba
- © 2010, 2015 Michael Caisse
- © 2010-2011 Beman Dawes
- © 2010-2011 Bryce Lelbach
- © 2010-2011 Christopher Schmidt
- © 2010-2011 Daniel James
- © 2010-2011 David Bellot
- © 2010-2011 Eric Niebler
- © 2010-2011 Karsten Ahnert
- © 2010-2011 Michael Caisse
- © 2010-2011 Paul A. Bristow
- © 2010-2011 Steven Watanabe
- © 2010-2011 Thomas Heller
- © 2010-2011 Thomas Mang
- © 2010-2011 Vicente J. Botet Escriba
- © 2010-2012 Ankit Daftery
- © 2010-2012 Barend Gehrels
- © 2010-2012 Christian Henning
- © 2010-2012 D. E. Shaw Research
- © 2010-2012 Jim Bosch
- © 2010-2012 Kenneth Riddile
- © 2010-2012 Mateusz Loskot
- © 2010-2012, 2014-2015 Andrii Sydorchuk
- © 2010-2013 Karsten Ahnert
- © 2010-2013 Mario Mulansky
- © 2010-2013 Thomas Heller
- © 2010-2015 Mario Mulansky
- © 2010-2017 Francisco José Tapia
- © 2010-2018 Justinas Vygintas Daugmaudis
- © 2010-2020 Edward Diener
- © 2011 Aaron Graham
- © 2011 Andrew Ross
- © 2011 Beman Dawes
- © 2011 Boris Schaeling
- © 2011 Brandon Kohn
- © 2011 Brian O'Kennedy
- © 2011 Bryce Lelbach
- © 2011 Christopher Jefferson
- © 2011 Colin Rundel
- © 2011 Daniel James
- © 2011 Daryle Walker
- © 2011 Dean Michael Berris
- © 2011 Emil Dotchevski
- © 2011 Eric Niebler
- © 2011 Francois Mauger
- © 2011 Garmin Ltd. or its subsidiaries
- © 2011 Helge Bahmann
- © 2011 Jamboree
- © 2011 Jan Frederick Eick
- © 2011 Jeroen Habraken
- © 2011 Joerg Becker
- © 2011 John Maddock
- © 2011 Juraj Ivancic
- © 2011 Júlio Hoffimann
- © 2011 Kwan Ting Chan
- © 2011 Laurent Gomila
- © 2011 Matthias Born
- © 2011 Nathan Ridge
- © 2011 Paul A. Bristow
- © 2011 Paul Heil
- © 2011 Robert Nelson
- © 2011 Roji Philip
- © 2011 Ryan Molden
- © 2011 Simon West
- © 2011 Steven Watanabe
- © 2011 Takaya Saito
- © 2011 Thomas Heller
- © 2011, 2013 Jeremiah Willcock
- © 2011, 2013 Paul A. Bristow
- © 2011, 2013 Steven Watanabe
- © 2011, 2013-2014 Edward Diener
- © 2011, 2013-2014 Jamboree
- © 2011, 2014 Eric Niebler
- © 2011, 2017 Steven Watanabe
- © 2011-2012 Akira Takahashi
- © 2011-2012 Ankit Daftery
- © 2011-2012 Barend Gehrels
- © 2011-2012 Brandon Kohn
- © 2011-2012 Jeff Flinn
- © 2011-2012 Mario Mulansky
- © 2011-2012 Marshall Clow
- © 2011-2012 Martin Lambers
- © 2011-2012 Paul A. Bristow
- © 2011-2012 Thomas Bernard
- © 2011-2012 Vicente J. Botet Escriba
- © 2011-2012, 2014 Thomas Bernard
- © 2011-2013 Adam Wulkiewicz
- © 2011-2013 Andrew Hundt
- © 2011-2013 John Maddock
- © 2011-2013 Karsten Ahnert
- © 2011-2013 Mario Mulansky
- © 2011-2013 Thorsten Ottosen
- © 2011-2013 Vicente J. Botet Escriba
- © 2011-2014 Adam Wulkiewicz
- © 2011-2014 Ion Gaztañaga
- © 2011-2014 Karsten Ahnert
- © 2011-2014 Mario Mulansky
- © 2011-2014, 2016 John Maddock
- © 2011-2015 Akira Takahashi
- © 2011-2015 Barend Gehrels
- © 2011-2015 Bruno Lalande
- © 2011-2015 Karsten Ahnert
- © 2011-2015 Mario Mulansky
- © 2011-2017 Adam Wulkiewicz
- © 2011-2017 Antony Polukhin
- © 2011-2018 Adam Wulkiewicz
- © 2011-2018 Vicente J. Botet Escriba
- © 2011-2019 Adam Wulkiewicz
- © 2011-2019 Renato Tegon Forti
- © 2011-2020 Antony Polukhin
- © 2012 Adam D. Walling
- © 2012 Agustin K-ballo Berge
- © 2012 Andrii Sydorchuk
- © 2012 Anthony Williams
- © 2012 Artyom Beilis
- © 2012 Benjamin Schindler
- © 2012 Benjamin Sobotta
- © 2012 Boris Schaeling
- © 2012 Christian Henning
- © 2012 Christoph Koke
- © 2012 Chung-Lin Wen
- © 2012 Daniel James
- © 2012 David Bailey
- © 2012 David Doria
- © 2012 David Stone
- © 2012 Davide Anastasia
- © 2012 Denis Demidov
- © 2012 Duncan Exon Smith
- © 2012 Fernando Vilas
- © 2012 Flavio De Lorenzi
- © 2012 Google, Inc
- © 2012 Hartmut Kaiser
- © 2012 IBM Corp
- © 2012 Jeffrey Lee Hellrung, Jr
- © 2012 Joel Falcou
- © 2012 John Maddock
- © 2012 Jurko Gospodnetic
- © 2012 K R Walker
- © 2012 Karsten Ahnert
- © 2012 Lee Hodgkinson
- © 2012 Leo Goodstadt
- © 2012 Lorenzo Caminiti
- © 2012 Lucanus Simonson
- © 2012 Mario Mulansky
- © 2012 Martin Raspaud
- © 2012 Michele Caini
- © 2012 Nathan Ridge
- © 2012 Olivier Tournaire
- © 2012 Oswin Krause
- © 2012 Paul A. Bristow
- © 2012 Phil Endecott
- © 2012 Philipp Moeller
- © 2012 Pierre Talbot
- © 2012 Steven Watanabe
- © 2012 Sylwester Arabas
- © 2012 Thomas Mang
- © 2012 Tim Blechmann
- © 2012 Vicente J. Botet Escriba
- © 2012 yyyy yyyy
- © 2012, 2014 Pieter Bastiaan Ober
- © 2012, 2014-2018 Paul Fultz II
- © 2012-2013 Adam Wulkiewicz
- © 2012-2013 Andreas Angelopoulos
- © 2012-2013 Andreas Pokorny
- © 2012-2013 Christian Henning
- © 2012-2013 Louis Dionne
- © 2012-2013 Mario Mulansky
- © 2012-2013 Rajeev Singh
- © 2012-2013 Tim Blechmann
- © 2012-2014 Kohei Takahashi
- © 2012-2014, 2016 Christopher Kormanyos
- © 2012-2015 Marshall Clow
- © 2012-2015, 2017 Adam Wulkiewicz
- © 2012-2016, 2019-2020 Christopher Kormanyos
- © 2012-2018 Klemens Morgenstern
- © 2012-2018 Kohei Takahashi
- © 2012-2020 Adam Wulkiewicz
- © 2012-2020 Andrey Semashev
- © 2012-2020 Antony Polukhin
- © 2012-2020 Glen Joseph Fernandes
- © 2012-2020 John Maddock
- © 2012-2020 Mateusz Loskot
- © 2013 Agustin Berge
- © 2013 Agustín Bergé
- © 2013 Akira Takahashi
- © 2013 Alberto Santini
- © 2013 Alex Korobka
- © 2013 Andreas Hehn
- © 2013 Andrey
- © 2013 Andrey Semashev
- © 2013 Ankur Sinha
- © 2013 Anton Bikineev
- © 2013 Antony Polukhin
- © 2013 Beman Dawes
- © 2013 Bjorn Roald
- © 2013 Carl Barron
- © 2013 Christian Henning
- © 2013 Christian Shelton
- © 2013 Christopher Brown
- © 2013 Christopher Kormanyos
- © 2013 Davide Anastasia
- © 2013 Eurodecision
- © 2013 Ion Gaztañaga
- © 2013 Jakob Lykke Andersen
- © 2013 Joaquim Duran
- © 2013 John Maddock
- © 2013 Juan V. Puertos
- © 2013 Karsten Ahnert
- © 2013 Krzysztof Czainski
- © 2013 Kyle Lutz
- © 2013 Maciej Piechotka
- © 2013 Mateusz Loskot
- © 2013 Muhammad Junaid Muzammil
- © 2013 Nakhar Agrawal
- © 2013 Niall Douglas
- © 2013 Oliver Kowalke
- © 2013 Pascal Germroth
- © 2013 Paul A. Bristow
- © 2013 Petr Machata
- © 2013 Pierre Talbot
- © 2013 Red Hat Inc
- © 2013 Ruslan Baratov
- © 2013 Sergue E. Leontiev
- © 2013 Tim Blechmann
- © 2013 University of Warsaw
- © 2013 Vicente J. Botet Escriba
- © 2013, 2015 Oliver Kowalke
- © 2013, 2015-2018 Andrey Semashev
- © 2013, 2017 Andrey Semashev
- © 2013, 2017 Daniel James
- © 2013, 2017-2018 Cray, Inc
- © 2013, 2020 Andrey Semashev
- © 2013-2014 Agustin Berge
- © 2013-2014 Anton Bikineev
- © 2013-2014 Christopher Kormanyos
- © 2013-2014 Damien Buhl
- © 2013-2014 Ion Gaztañaga
- © 2013-2014 Mageswaran.D
- © 2013-2014 Nikhar Agrawal
- © 2013-2014 Rastko Anicic
- © 2013-2014 Vicente J. Botet Escriba
- © 2013-2014, 2017 Denis Demidov
- © 2013-2014, 2018-2020 Andrey Semashev
- © 2013-2015 Adam Wulkiewicz
- © 2013-2015 Kyle Lutz
- © 2013-2015 Nat Goodspeed
- © 2013-2015 Rene Rivera
- © 2013-2016 Louis Dionne
- © 2013-2017 Adam Wulkiewicz
- © 2013-2017 Louis Dionne
- © 2013-2017 Vinnie Falco
- © 2013-2018 Louis Dionne
- © 2013-2019 Antony Polukhin
- © 2013-2019 Canonical Ltd
- © 2013-2019 Eric Niebler
- © 2013-2019 Oracle and/or its affiliates
- © 2013-2019 Paul A. Bristow
- © 2013-2019 Vinnie Falco
- © 2013-2020 Antony Polukhin
- © 2013-2020 Oracle and/or its affiliates
- © 2014 Agustin Berge
- © 2014 Ahmed Charles
- © 2014 Alexander Lauser
- © 2014 Andrey Semashev
- © 2014 Anton Bikineev
- © 2014 Antony Polukhin
- © 2014 Athanasios Iliopoulos
- © 2014 Ben Pope
- © 2014 Benoit
- © 2014 Benoit Dequidt
- © 2014 Bill Gallafent
- © 2014 Boris Rasin
- © 2014 Christoph Weiss
- © 2014 Christopher Kormanyos
- © 2014 Erik Erlandson
- © 2014 Fabian Köhler
- © 2014 Franz Detro
- © 2014 Glen Joseph Fernandes
- © 2014 Ian Forbed
- © 2014 Ion Gaztañaga
- © 2014 Jessica Hamilton
- © 2014 Jim Bell
- © 2014 John Fletcher
- © 2014 John Maddock
- © 2014 Jorge Lodos
- © 2014 LASMEA UMR 6602 CNRS/Univ. Clermont II
- © 2014 LRI UMR 8623 CNRS/Univ Paris Sud XI
- © 2014 Lee Clagett
- © 2014 Marek Kurdej
- © 2014 Matei David
- © 2014 MetaScale SAS
- © 2014 Microsoft Corporation
- © 2014 Neil Groves
- © 2014 NumScale SAS
- © 2014 Oliver Kowalke
- © 2014 Paul A. Bristow
- © 2014 Peter Dimov
- © 2014 Pieter Bastiaan Ober
- © 2014 Renato Tegon Forti
- © 2014 Riccardo Marcangelo
- © 2014 Roshan
- © 2014 Samuel Debionne
- © 2014 Steven Watanabe
- © 2014 Thijs van den Berg
- © 2014 Tomoki Imai
- © 2014 Vicente J. Botet Escriba
- © 2014 iamvfx@gmail.com
- © 2014, 2016-2017 T. Zachary Laine
- © 2014, 2017-2019 Glen Joseph Fernandes
- © 2014, 2017-2019 Peter Dimov
- © 2014, 2018 Glen Joseph Fernandes
- © 2014, 2020 Andrey Semashev
- © 2014-2015 Antony Polukhin
- © 2014-2015 John Fletcher
- © 2014-2015 Rene Rivera
- © 2014-2015 Samuel Debionne
- © 2014-2015, 2018 Kohei Takahashi
- © 2014-2016, 2018 Oracle and/or its affiliates
- © 2014-2017 Vicente J. Botet Escriba
- © 2014-2018 Adam Wulkiewicz
- © 2014-2018 Andrzej Krzemieński
- © 2014-2018 Kohei Takahashi
- © 2014-2018 Oracle and/or its affiliates
- © 2014-2018 Peter Dimov
- © 2014-2018, 2020 Andrey Semashev
- © 2014-2019 Andrzej Krzemieński
- © 2014-2019 Antony Polukhin
- © 2014-2019 Boris Rasin
- © 2014-2019 John Maddock
- © 2014-2019 Peter Dimov
- © 2014-2019 Raffi Enficiaud
- © 2014-2020 Oracle and/or its affiliates
- © 2015 Aaron Boman
- © 2015 Agustin K-ballo Berge
- © 2015 Ahmed Charles
- © 2015 Andrey Semashev
- © 2015 Artur Shepilko
- © 2015 Beman Dawes
- © 2015 Bruno Dutra
- © 2015 Catherine Morton
- © 2015 Charly Chevalier
- © 2015 Deniz Bahadir
- © 2015 Edward Nevill
- © 2015 Glen Joseph Fernandes
- © 2015 Gonzalo Brito Gadeschi
- © 2015 Gregor de Cillia
- © 2015 Ion Gaztañaga
- © 2015 Jakub Pola
- © 2015 Jeremy William Murphy
- © 2015 Joel Falcou
- © 2015 John Fletcher
- © 2015 Klemens Morgenstern
- © 2015 Kohei Takahashi
- © 2015 LRI UMR 8623 CNRS/University Paris Sud XI
- © 2015 Lingxi Li
- © 2015 Louis Dionne
- © 2015 Mario Lang
- © 2015 Mario Mulansky
- © 2015 Markus J. Weber
- © 2015 Muhammad Junaid Muzammil
- © 2015 Nat Goodspeed
- © 2015 NumScale SAS
- © 2015 Nuxi
- © 2015 Oliver Kowalke
- © 2015 Oracle and/or its affiliates
- © 2015 Orson Peters
- © 2015 Peter Dimov
- © 2015 Rene Rivera
- © 2015 Robert Ramey
- © 2015 Robin Eckert
- © 2015 Seth Heeren
- © 2015 Stefan Hammer
- © 2015 Stefan Seefeld
- © 2015, 2017 Andrey Semashev
- © 2015, 2017 Orson Peters
- © 2015, 2017 Wind River Inc
- © 2015, 2018 Kohei Takahashi
- © 2015, 2018-2020 Peter Dimov
- © 2015, 2020 Andrey Semashev
- © 2015-2016 Andrey Semashev
- © 2015-2016 Jason Rice
- © 2015-2016 Jeremy Murphy
- © 2015-2016 Rene Rivera
- © 2015-2017 Barrett Adair
- © 2015-2017 Oracle and/or its affiliates
- © 2015-2018 Adam Wulkiewicz
- © 2015-2018 Barrett Adair
- © 2015-2018 Jakub Szuppe
- © 2015-2018 Kohei Takahashi
- © 2015-2018 Oracle and/or its affiliates
- © 2015-2019 Hans P. Dembinski
- © 2015-2019 Klemens Morgenstern
- © 2015-2019 Oracle and/or its affiliates
- © 2015-2019 Rene Rivera
- © 2015-2020 Hans P. Dembinski
- © 2016 Abel Sinkovics
- © 2016 Adam Wulkiewicz
- © 2016 Andrey Semashev
- © 2016 Arnaud Kapp
- © 2016 Ashish Sadanandan
- © 2016 Barrett Adair
- © 2016 Bogumił Chojnowski
- © 2016 Chris Glover
- © 2016 Daniel James
- © 2016 Frank Hein
- © 2016 Giel van Schijndel
- © 2016 Jason Rhinelander
- © 2016 Jeffrey E. Trull
- © 2016 Jeremy William Murphy
- © 2016 John Maddock
- © 2016 Jorge Lodos
- © 2016 K. Noel Belcourt
- © 2016 Karolin Varner
- © 2016 Klemens Morgenstern
- © 2016 Kohei Takahashi
- © 2016 Lee Clagett
- © 2016 Mikhail Maximov
- © 2016 Nicholas Thompson
- © 2016 Norbert Wenzel
- © 2016 Oliver Kowalke
- © 2016 Paul A. Bristow
- © 2016 Peter Dimov
- © 2016 Robert Ramey
- © 2016 Sergey Nizovtsev
- © 2016 Stefan Seefeld
- © 2016 Steven Watanabe
- © 2016 Szabolcs Toth
- © 2016 Thomas Kent
- © 2016 Thomas Luu
- © 2016 Tony Lewis
- © 2016 Vladimir Prus
- © 2016 arett Adair
- © 2016, 2018 Kohei Takahashi
- © 2016-2017 Alexander Zaitsev
- © 2016-2017 Andrey Semashev
- © 2016-2017 Barrett Adair
- © 2016-2017 Brian Kuhl
- © 2016-2017 Edward Diener
- © 2016-2017 Jason Rice
- © 2016-2017 Joaquín M López Muñoz
- © 2016-2017 Klemens Morgenstern
- © 2016-2017 Mikhail Maximov
- © 2016-2017 Peter Dimov
- © 2016-2018 Paul A. Bristow
- © 2016-2018 Peter Dimov
- © 2016-2018 Rene Rivera
- © 2016-2019 Damian Jarek
- © 2016-2019 Hans P. Dembinski
- © 2016-2019 Klemens Morgenstern
- © 2016-2019 Nikita Kniazev
- © 2016-2019 Oracle and/or its affiliates
- © 2016-2019 Peter Dimov
- © 2016-2019 T. Zachary Laine
- © 2016-2019 Vinnie Falco
- © 2016-2020 Antony Polukhin
- © 2016-2020 Nikita Kniazev
- © 2017 ARM Limited
- © 2017 Adam Wulkiewicz
- © 2017 Alain Miniussi
- © 2017 Albert Sverdlov
- © 2017 Alexander Karzhenkov
- © 2017 Alexander Zaitsev
- © 2017 Andrey Semashev
- © 2017 Austin J. Beer
- © 2017 Balint Cserni
- © 2017 Cromwell D. Enage
- © 2017 Daniel James
- © 2017 Daniela Engert
- © 2017 Dynatrace
- © 2017 Edward Diener
- © 2017 Felix Salfelder
- © 2017 Francisco José Tapia
- © 2017 Glen Joseph Fernandes
- © 2017 James E. King III
- © 2017 John Maddock
- © 2017 Kohei Takahashi
- © 2017 Kristian Popov
- © 2017 Levon Tarakchyan
- © 2017 Michel Morin
- © 2017 NVIDIA CORPORATION
- © 2017 Orson Peters
- © 2017 Peter Dimov
- © 2017 Rene Rivera
- © 2017 Ruslan Baratov
- © 2017 Samuli-Petrus Korhonen
- © 2017 Sergey Krivonos
- © 2017 Shreyans Doshi
- © 2017 Stefan Seefeld
- © 2017 Steffen Hirschmann
- © 2017 Steven Ross
- © 2017 Steven Watanabe
- © 2017 Tom Westerhout
- © 2017 Valentin Noah Hartmann
- © 2017 Vincent Chabannes
- © 2017 Vinnie Falco
- © 2017 think-cell GmbH
- © 2017, 2019 Cromwell D. Enage
- © 2017, 2019-2020 Nick Thompson
- © 2017, 2020 Bjorn Reese
- © 2017, 2020 John Maddock
- © 2017-2018 Adam Wulkiewicz
- © 2017-2018 Cromwell D. Enage
- © 2017-2018 Ion Gaztañaga
- © 2017-2018 James E. King III
- © 2017-2018 Nicholas Thompson
- © 2017-2018 Oracle and/or its affiliates
- © 2017-2018 Peter Dimov
- © 2017-2018 Tom Hughes
- © 2017-2019 James E. King III
- © 2017-2019 Kohei Takahashi
- © 2017-2019 Nikita Kniazev
- © 2017-2019 Oracle and/or its affiliates
- © 2017-2020 Andrzej Krzemieński
- © 2017-2020 Luke Peterson
- © 2017-2020 Niall Douglas
- © 2017-2020 Nick Thompson
- © 2018 Adeel Ahmad
- © 2018 Alexander Grund
- © 2018 Andrzej Krzemieński
- © 2018 Antony Polukhin
- © 2018 Benjamin Worpitz
- © 2018 Damian Jarek
- © 2018 Dmitry Arkhipov
- © 2018 Evgeny Shulgin
- © 2018 Fady Essam
- © 2018 Glen Joseph Fernandes
- © 2018 Ion Gaztañaga
- © 2018 James E. King III
- © 2018 Jiaxun Yang
- © 2018 Kohei Takahashi
- © 2018 Louis Dionne
- © 2018 Mario Suvajac
- © 2018 Mateusz Loskot
- © 2018 Mike Dev
- © 2018 Oracle and/or its affiliates
- © 2018 Oxford Nanopore Technologies
- © 2018 Peter Dimov
- © 2018 Rasmus Ahlberg
- © 2018 Reimar Döffinger
- © 2018 Rene Rivera
- © 2018 Robin Linden
- © 2018 Stefan Seefeld
- © 2018 T. Zachary Laine
- © 2018 Tim Blechmann
- © 2018 Tobias Loew
- © 2018 Vicente J. Botet Escriba
- © 2018 Yaghyavardhan Singh Khangarot
- © 2018 Yi Ji
- © 2018, 2020 Steffen Hirschmann
- © 2018-2019 Cem Bassoy
- © 2018-2019 James E. King III
- © 2018-2019 Mateusz Loskot
- © 2018-2019 Matthew Pulver
- © 2018-2019 Mike Dev
- © 2018-2019 Rene Rivera
- © 2018-2019 agate-pris
- © 2018-2020 Alexander Grund
- © 2018-2020 Andrey Semashev
- © 2018-2020 Emil Dotchevski
- © 2018-2020 Giovanni Mascellani <gio@debian.org>
- © 2018-2020 Hans P. Dembinski
- © 2018-2020 Mateusz Loskot
- © 2018-2020 Niall Douglas
- © 2018-2020 Oracle and/or its affiliates
- © 2018-2020 Rene Rivera
- © 2019 Andreas Schwab
- © 2019 Andrey Semashev
- © 2019 Austin J. Beer
- © 2019 Banco Santander
- © 2019 Christian Mazakas
- © 2019 Dario Menendez
- © 2019 Glen Joseph Fernandes
- © 2019 Hans P. Dembinski
- © 2019 Henry Schreiner
- © 2019 James E. King III
- © 2019 Joel de Guzman
- © 2019 Kris Jusiak
- © 2019 Lichao Xia
- © 2019 Mateusz Loskot
- © 2019 Michał Janiszewski
- © 2019 Mika Fischer (mika.fischer@zoopnet.de)
- © 2019 Mike Dev
- © 2019 Miral Shah
- © 2019 Nick Thompson
- © 2019 Nikita Kniazev
- © 2019 Olzhas Zhumabek
- © 2019 Oracle and/or its affiliates
- © 2019 Paul A. Bristow
- © 2019 Paul A. Bristow additions for more control of serif-italic font etc
- © 2019 Paul Keir
- © 2019 Peter Dimov
- © 2019 Pranam Lashkari
- © 2019 Przemyslaw Bartosik
- © 2019 Ramil Gauss
- © 2019 Rene Rivera
- © 2019 Richard Hodges (hodges dot r at gmail dot com)
- © 2019 Sam Day
- © 2019 Tinko Bartels
- © 2019 Tom Tan
- © 2019 Vicente J. Botet Escriba
- © 2019-2020 Alexander Grund
- © 2019-2020 Andrey Semashev
- © 2019-2020 Antony Polukhin
- © 2019-2020 Christopher Kormanyos
- © 2019-2020 Dmitry Arkhipov
- © 2019-2020 Glen Joseph Fernandes
- © 2019-2020 Krystian Stasiowski (sdkrystian at gmail dot com)
- © 2019-2020 Madhur Chauhan
- © 2020 Aditya Mohan
- © 2020 Alexander Grund
- © 2020 Alexander Karzhenkov
- © 2020 Andrey Semashev
- © 2020 Antony Polukhin
- © 2020 Barrett Adair
- © 2020 Bjorn Reese
- © 2020 Brazil
- © 2020 Caian Benedicto
- © 2020 Campinas
- © 2020 Debabrata Mandal
- © 2020 Digvijay Janartha
- © 2020 Dmitry Arkhipov
- © 2020 Edward Diener
- © 2020 Hamirpur
- © 2020 India
- © 2020 Jeff Trull
- © 2020 Krystian Stasiowski
- © 2020 Krystian Stasiowski (sdkrystian at gmail dot com)
- © 2020 Mateusz Loskot
- © 2020 Nikita Kniazev
- © 2020 Peter Dimov
- © 2020 Rene Rivera
- © 2020 René Ferdinand Rivera Morell
- © 2020 Richard Hodges (hodges.r@gmail.com)
- © 2020 Roman Savchenko
- © 2020 Samuel Debionne
- © 2020 Tarmo Pikaro
- © Abel Sinkovics
- © Adam Wulkiewicz
- © Alain Miniussi
- © Aleksey Gurtovoy
- © Alexander Grund
- © Alexander Nasonov
- © Andreas Huber
- © Andreas Huber Dönni
- © Andrew Lumsdaine
- © Andrey Semashev
- © Andrii Sydorchuk
- © Andrzej Krzemieński
- © Andy Tompkins
- © Anthony Williams
- © Antony Polukhin
- © Arkadiy Vertleyb
- © Artyom Beilis
- © Barend Gehrels
- © Barrett Adair
- © Beman Dawes
- © Boost project contributors
- © Boris Schaeling
- © Brandon Kohn
- © Bruno Lalande
- © Bryce Lelbach
- © Chris Kohlhoff
- © Christian Henning
- © Christophe Henry
- © Christopher Kormanyos
- © Chuck Allison
- © Dan Marsden
- © Dan Nuffer
- © Daniel Frey
- © Daniel James
- © Daniel Walker
- © Daniel Wallin
- © Darin Adler
- © Daryle Walker
- © David Abrahams
- © David Bellot
- © Doug Gregor
- © Douglas Gregor
- © Edward Diener
- © Emil Dotchevski
- © Eric Friedman
- © Eric Niebler
- © Felipe Tanus
- © Fernando Cacciola
- © Frank Mori Hess
- © Gary Powell
- © Gennadiy Rozental
- © Glen Joseph Fernandes
- © Greg Colvin
- © Guillaume Melquiond
- © Hailin Jin
- © Hans P. Dembinski
- © Hartmut Kaiser
- © Helge Bahmann
- © Hervé Brönnimann
- © Howard Hinnant
- © Hubert Holin
- © Ilya Sokolov
- © Ion Gaztañaga
- © Itay Maman
- © Jaakko Järvi
- © Jaako Järvi
- © James E. King III
- © Jan Gaspar
- © Jeff Flinn
- © Jeff Garland
- © Jeffrey Lee Hellrung Jr.
- © Jens Maurer
- © Jeremiah Willcock
- © Jeremy G. Siek
- © Joachim Faulhaber
- © Joaquín M López Muñoz
- © Joel de Guzman
- © Joerg Walter
- © John Bandela
- © John Fletcher
- © John Maddock
- © John R. Bandela
- © Jonathan Turkanis
- © Joseph Gauterin
- © Jürgen Hunold
- © K. Noel Belcourt
- © Karsten Ahnert
- © Kevlin Henney
- © Klemens Morgenstern
- © Krystian Stasiowski
- © Kyle Lutz
- © Lorenzo Caminiti
- © Louis Dionne
- © Lubomir Bourdev
- © Lucanus Simonson
- © Marcin Kalicinski
- © Mario Mulansky
- © Mark Rodgers
- © Marshall Clow
- © Mateusz Loskot
- © Mathias Koch
- © Matias Capeletto
- © Matthias Schabel
- © Matthias Troyer
- © Menelaos Karavelas
- © Merino Vidal
- © Nathan Ridge
- © Neil Groves
- © Niall Douglas
- © Nicolai Josuttis
- © Oliver Kowalke
- © Paul A. Bristow
- © Paul Fultz II
- © Paul Mensonides
- © Paul Moore
- © Pavol Droba
- © Peder Holt
- © Peter Dimov
- © Pranam Lashkari
- © Raffi Enficiaud
- © Ralf Grosse-Kunstleve
- © Renato Tegon Forti
- © Rene Rivera
- © Robert Ramey
- © Ron Garcia
- © Ronald Garcia
- © Samuel Krempp
- © Sebastian Redl
- © Stefan Seefeld
- © Stephen Cleary
- © Steven Ross
- © Steven Watanabe
- © Sylvain Pion
- © T. Zachary Laine
- © Thomas Heller
- © Thomas Jarosch
- © Thomas Witt
- © Thorsten Ottosen
- © Tim Blechmann
- © Tobias Schwinger
- © Vesa Karvonen
- © Vicente J. Botet Escriba
- © Vinnie Falco
- © Vladimir Batov
- © Vladimir Prus
- © Xiaogang Zhang
- © christopher Kormanyos
- © various
-
+

+ © (no info) Andrew Lumsdaine"
+ © (no info) Gennadiy Rozental
+ © (no info) Joel Falcou
+ © (no info) John Maddock 2
+ © (no info) Pierre Esterie
+ © (no info) Tobias Schwinger
+ © (no info) Vinnie Falco (vinnie.falco@gmail.com)
+ © (no info) Xiaogang Zhang
+ © 1993, 1995 Christopher Seiwald
+ © 1993, 1995, 2000 Christopher Seiwald
+ © 1993, 2000 Christopher Seiwald
+ © 1993-1995 Christopher Seiwald
+ © 1993-2002 Christopher Seiwald
+ © 1993-2002 Perforce Software, Inc
+ © 1994 Hewlett-Packard Company
+ © 1994, 2002-2003, 2006, 2008 Beman Dawes
+ © 1994, 2003, 2006, 2008 Beman Dawes
+ © 1994, 2006, 2008 Beman Dawes
+ © 1994-1999 Beman Dawes
+ © 1994-2008, 2011 Beman Dawes
+ © 1994-2017 Beman Dawes
+ © 1995 Gerald I. Evenden
+ © 1995 Maarten Hilferink
+ © 1995, 2003, 2006, 2008 Gerald I. Evenden
+ © 1995, 2007-2015 Barend Gehrels
+ © 1995-2001 Beman Dawes
+ © 1995-2001 Ullrich Koethe
+ © 1995-2010 Geodan
+ © 1995-2011 Geodan
+ © 1995-2013 Jean-loup Gailly
+ © 1995-2013 Mark Adler
+ © 1995-2019 Barend Gehrels
+ © 1996 Silicon Graphics Computer Systems, Inc
+ © 1996-1997 Silicon Graphics Computer Systems, Inc
+ © 1996-1998 Silicon Graphics Computer Systems, Inc
+ © 1997-2000 University of Notre Dame
+ © 1997-2001 University of Notre Dame
+ © 1998 Silicon Graphics Computer Systems, Inc
+ © 1998, 2002-2006 Kiyoshi Matsui
+ © 1998-1999 Beman Dawes
+ © 1998-1999 Greg Colvin
+ © 1998-2002, 2007, 2012 John Maddock
+ © 1998-2003 Joel de Guzman
+ © 1998-2004 John Maddock
+ © 1998-2008 Joel de Guzman
+ © 1998-2009 John Maddock
+ © 1998-2011 Joel de Guzman
+ © 1998-2019 Joel de Guzman
+ © 1998-2022 John Maddock
+ © 1999 Beman Dawes
+ © 1999 Daryle Walker
+ © 1999 David Abrahams
+ © 1999 Greg Colvin
+ © 1999 Jeremy G. Siek
+ © 1999 Kevlin Henney
+ © 1999 Paul Moore
+ © 1999, 2001 Nicolai M. Josuttis
+ © 1999, 2001, 2003, 2005, 2013 Hubert Holin
+ © 1999, 2002-2003 Beman Dawes
+ © 1999-2000 Jaakko Järvi
+ © 1999-2001 Daryle Walker
+ © 1999-2001 David Abrahams
+ © 1999-2001 Jaakko Järvi
+ © 1999-2001 Jeremy G. Siek
+ © 1999-2003 Daniel Walker
+ © 1999-2003 David Abrahams
+ © 1999-2003 Jaakko Järvi
+ © 1999-2003 Jaakko J�rvi
+ © 1999-2003 Jeremiah Willcock
+ © 1999-2006 Cortex Software GmbH
+ © 1999-2006 Jeremy G. Siek
+ © 1999-2010 Aleksey Gurtovoy
+ © 1999-2021 Christopher Kormanyos
+ © 2000 Aleksey Gurtovoy
+ © 2000 Beman Dawes
+ © 2000 Cadenza New Zealand Ltd
+ © 2000 Darin Adler
+ © 2000 David Abrahams
+ © 2000 Frank Warmerdam
+ © 2000 Gary Powell
+ © 2000 Howard Hinnant
+ © 2000 Jens Maurer
+ © 2000 Jeremy G. Siek
+ © 2000 John Maddock
+ © 2000 Keld Helsgaun
+ © 2000 Kevlin Henney
+ © 2000 Maarten Keijzer
+ © 2000 Mark Rodgers
+ © 2000 Stephen Cleary
+ © 2000 Steven Knight
+ © 2000, 2002 Frank Warmerdam
+ © 2000, 2005, 2007 John Maddock
+ © 2000, 2007, 2013 John Maddock
+ © 2000, 2010 Beman Dawes
+ © 2000, 2010 David Abrahams
+ © 2000, 2010 Howard Hinnant
+ © 2000, 2010 John Maddock
+ © 2000, 2010 Stephen Cleary
+ © 2000-2001 Daryle Walker
+ © 2000-2001 Jens Maurer
+ © 2000-2001 Kevlin Henney
+ © 2000-2001 Stephen Cleary
+ © 2000-2002 John Maddock
+ © 2000-2002 John R. Bandela
+ © 2000-2002 Kevlin Henney
+ © 2000-2002, 2006 Jens Maurer
+ © 2000-2003 Beman Dawes
+ © 2000-2003 Brian McNamara
+ © 2000-2003 David Abrahams
+ © 2000-2003 Gary Powell
+ © 2000-2003 Howard Hinnant
+ © 2000-2003 Jaakko Järvi
+ © 2000-2003 Jens Maurer
+ © 2000-2003 John Maddock
+ © 2000-2003 Peter Dimov
+ © 2000-2003 Stephen Cleary
+ © 2000-2003 Yannis Smaragdakis
+ © 2000-2004 Aleksey Gurtovoy
+ © 2000-2004 Joerg Walter
+ © 2000-2004 Mathias Koch
+ © 2000-2005 Beman Dawes
+ © 2000-2005 Howard Hinnant
+ © 2000-2005 John Maddock
+ © 2000-2005 Kevlin Henney
+ © 2000-2005 Stephen Cleary
+ © 2000-2006 David Abrahams
+ © 2000-2006 Jeremy G. Siek
+ © 2000-2006 Stephen Cleary
+ © 2000-2006 Thomas Becker
+ © 2000-2006, 2009 David Abrahams
+ © 2000-2008 Fernando Luis Cacciola Carballal
+ © 2000-2009 Aleksey Gurtovoy
+ © 2000-2009 Gunter Winkler
+ © 2000-2009 Joerg Walter
+ © 2000-2009 Mathias Koch
+ © 2000-2010 David Bellot
+ © 2000-2010 Gunter Winkler
+ © 2000-2010 Joerg Walter
+ © 2000-2010 Mathias Koch
+ © 2000-2011 Aleksey Gurtovoy
+ © 2000-2011 David Abrahams
+ © 2000-2013 Athanasios Iliopoulos
+ © 2000-2013 David Bellot
+ © 2000-2013 Joerg Walter
+ © 2000-2013 Mathias Koch
+ © 2000-2020 CrystalClear Software, Inc
+ © 2000-2021 Jens Maurer
+ © 2001 Adobe Systems Incorporated
+ © 2001 Alexander Peslyak
+ © 2001 Andrei Alexandrescu
+ © 2001 Andrew Lumsdaine
+ © 2001 Beman Dawes
+ © 2001 Bill Kempf
+ © 2001 Brian Osman
+ © 2001 Bruce Florman
+ © 2001 Daniel C. Nuffer
+ © 2001 Daniel Nuffer
+ © 2001 Darin Adler
+ © 2001 Daryle Walker
+ © 2001 David Abrahams
+ © 2001 Dietmar Kuehl
+ © 2001 Douglas Gregor
+ © 2001 Eric Ford
+ © 2001 Francois Faure
+ © 2001 Gennadiy Rozental
+ © 2001 Hubert Holin
+ © 2001 Jaakko J�rvi
+ © 2001 Jens Maurer
+ © 2001 Jeremy G. Siek
+ © 2001 Jesse Jones
+ © 2001 John Maddock
+ © 2001 John R. Bandela
+ © 2001 Kevlin Henney
+ © 2001 Lie-Quan Lee
+ © 2001 Mat Marcus
+ © 2001 Multi Media Ltd
+ © 2001 Nicolai M. Josuttis
+ © 2001 Peter Dimov
+ © 2001 Raphael Bossek <bossekr@debian.org>
+ © 2001 Ronald Garcia
+ © 2001 Ronald Garcia"
+ © 2001 Terje Slettebo
+ © 2001 Thomas Flemming
+ © 2001 Toon Knapen
+ © 2001 Ullrich Koethe
+ © 2001 University of Notre Dame
+ © 2001 Université Joseph Fourier, Grenoble
+ © 2001 Vesa Karvonen
+ © 2001 Vladimir Prus
+ © 2001, 2003 Samuel Krempp
+ © 2001, 2003-2004, 2012 Daryle Walker
+ © 2001, 2003-2015 Gennadiy Rozental
+ © 2001, 2003-2015 Raffi Enficiaud
+ © 2001, 2004 Jeremy G. Siek
+ © 2001, 2006 Hubert Holin
+ © 2001-2002 Andrew Lumsdaine
+ © 2001-2002 Chuck Allison
+ © 2001-2002 Daniel C. Nuffer
+ © 2001-2002 Darin Adler
+ © 2001-2002 Daryle Walker
+ © 2001-2002 David Abrahams
+ © 2001-2002 Housemarque Oy
+ © 2001-2002 Hubert Holin
+ © 2001-2002 Indiana University
+ © 2001-2002 Jens Maurer
+ © 2001-2002 Jeremy G. Siek
+ © 2001-2002 Joel de Guzman
+ © 2001-2002 John Maddock
+ © 2001-2002 Lie-Quan Lee
+ © 2001-2002 Multi Media Ltd
+ © 2001-2002 Peter Dimov
+ © 2001-2002 Stephen Cleary
+ © 2001-2002, 2004-2006, 2008-2009 Peter Dimov
+ © 2001-2002, 2006 Peter Dimov
+ © 2001-2002, 2007, 2014 Peter Dimov
+ © 2001-2003 Beman Dawes
+ © 2001-2003 Dan Nuffer
+ © 2001-2003 Daniel Nuffer
+ © 2001-2003 David Abrahams
+ © 2001-2003 Douglas Gregor
+ © 2001-2003 Hartmut Kaiser
+ © 2001-2003 Jaakko J�rvi
+ © 2001-2003 Jens Maurer
+ © 2001-2003 Jeremy G. Siek
+ © 2001-2003 Joel de Guzman
+ © 2001-2003 John Maddock
+ © 2001-2003 Mac Murrett
+ © 2001-2003 Multi Media Ltd
+ © 2001-2003 Peter Dimov
+ © 2001-2003 Toon Knapen
+ © 2001-2003 William E. Kempf
+ © 2001-2004 David Abrahams
+ © 2001-2004 Douglas Gregor
+ © 2001-2004 John Maddock
+ © 2001-2004 Multi Media Ltd
+ © 2001-2004 Peter Dimov
+ © 2001-2004, 2006 Ralf W. Grosse-Kunstleve
+ © 2001-2005 Dan Marsden
+ © 2001-2005 David Abrahams
+ © 2001-2005 Gennadiy Rozental
+ © 2001-2005 Peter Dimov
+ © 2001-2005, 2007 David Abrahams
+ © 2001-2005, 2007-2008 Peter Dimov
+ © 2001-2005, 2008 Peter Dimov
+ © 2001-2005, 2015 Peter Dimov
+ © 2001-2006 David Abrahams
+ © 2001-2006 Douglas Gregor
+ © 2001-2006 Peter Dimov
+ © 2001-2006, 2011-2013 Daryle Walker
+ © 2001-2007 Dan Marsden
+ © 2001-2007 Hartmut Kaiser
+ © 2001-2007 Joel de Guzman
+ © 2001-2008 Hartmut Kaiser
+ © 2001-2008 John Maddock
+ © 2001-2008, 2010 Douglas Gregor
+ © 2001-2008, 2012 Peter Dimov
+ © 2001-2008, 2013, 2015, 2018 Peter Dimov
+ © 2001-2009 Daniel Nuffer
+ © 2001-2009 Hartmut Kaiser
+ © 2001-2009 Joel de Guzman
+ © 2001-2010 Hartmut Kaiser
+ © 2001-2010 Joel de Guzman
+ © 2001-2010 Thomas Heller
+ © 2001-2011 Hartmut Kaiser
+ © 2001-2011 Joel de Guzman
+ © 2001-2011 Thomas Heller
+ © 2001-2012 Hartmut Kaiser
+ © 2001-2012 Joel de Guzman
+ © 2001-2012, 2014 Thomas Bernard
+ © 2001-2013 Hartmut Kaiser
+ © 2001-2013 Joel de Guzman
+ © 2001-2014 Gennadiy Rozental
+ © 2001-2014 Joel de Guzman
+ © 2001-2014 Steven Ross
+ © 2001-2015 Gennadiy Rozental
+ © 2001-2015 Hartmut Kaiser
+ © 2001-2015 Joel de Guzman
+ © 2001-2017 Joel de Guzman
+ © 2001-2020 Hartmut Kaiser
+ © 2001-2022 Peter Dimov
+ © 2002 Aleksey Gurtovoy
+ © 2002 Andrei Alexandrescu
+ © 2002 Beman Dawes
+ © 2002 Bill Kempf
+ © 2002 Brad King
+ © 2002 Craig Henderson
+ © 2002 Darin Adler
+ © 2002 David Abrahams
+ © 2002 David Tonge
+ © 2002 Douglas Gregor
+ © 2002 Eric Friedman
+ © 2002 Guillaume Melquiond
+ © 2002 Hans Lohninger
+ © 2002 Hartmut Kaiser
+ © 2002 Hervé Brönnimann
+ © 2002 Housemarque Oy
+ © 2002 Indiana University
+ © 2002 Itay Maman
+ © 2002 Jan Langer
+ © 2002 Jeff Garland
+ © 2002 Jeff Westfahl
+ © 2002 Jens Maurer
+ © 2002 Jeremy G. Siek
+ © 2002 Joel de Guzman
+ © 2002 John Maddock
+ © 2002 Juan Carlos Arevalo-Baeza
+ © 2002 Lars Gullik Bjønnes
+ © 2002 Marc Wintermantel
+ © 2002 Martin Ecker
+ © 2002 Multi Media Ltd
+ © 2002 Paul Mensonides
+ © 2002 Peter Dimov
+ © 2002 Peter Simons
+ © 2002 Raghavendra Satish
+ © 2002 Rani Sharoni
+ © 2002 Rensselaer Polytechnic Institute
+ © 2002 Robert Ramey
+ © 2002 Ronald Garcia
+ © 2002 Sylvain Pion
+ © 2002 Takatoshi Kondo
+ © 2002 Terje Slettebo
+ © 2002 The Trustees of Indiana University
+ © 2002 Thomas Witt
+ © 2002 Vahan Margaryan
+ © 2002 Vladimir Prus
+ © 2002, 2004, 2006 Eric Niebler
+ © 2002, 2004, 2006 Joel de Guzman
+ © 2002, 2004-2009, 2012 Trustees of Indiana University
+ © 2002, 2005 Daryle Walker
+ © 2002, 2005-2007, 2010 Rene Rivera
+ © 2002, 2006 Beman Dawes
+ © 2002, 2007, 2014, 2017 Peter Dimov
+ © 2002, 2008-2009, 2014, 2016 Peter Dimov
+ © 2002, 2015-2022 Peter Dimov
+ © 2002, 2020 Peter Dimov
+ © 2002, 2020 Robert Ramey
+ © 2002-2003 Aleksey Gurtovoy
+ © 2002-2003 Beman Dawes
+ © 2002-2003 Daryle Walker
+ © 2002-2003 David Abrahams
+ © 2002-2003 David Moore
+ © 2002-2003 Eric Friedman
+ © 2002-2003 Guillaume Melquiond
+ © 2002-2003 Hartmut Kaiser
+ © 2002-2003 Hervé Brönnimann
+ © 2002-2003 Itay Maman
+ © 2002-2003 Joel de Guzman
+ © 2002-2003 Joerg Walter
+ © 2002-2003 Johan Nilsson
+ © 2002-2003 Juan Carlos Arevalo-Baeza
+ © 2002-2003 Kresimir Fresl
+ © 2002-2003 Markus Schoepflin
+ © 2002-2003 Martin Wille
+ © 2002-2003 Multi Media Ltd
+ © 2002-2003 Pavol Droba
+ © 2002-2003 Peter Dimov
+ © 2002-2003 Rene Rivera
+ © 2002-2003 Sylvain Pion
+ © 2002-2003 The Trustees of Indiana University
+ © 2002-2003 Thorsten Ottosen
+ © 2002-2003 Toon Knapen
+ © 2002-2003 Vladimir Prus
+ © 2002-2003 William E. Kempf
+ © 2002-2003, 2005 Guillaume Melquiond
+ © 2002-2003, 2005, 2011-2012 Paul Mensonides
+ © 2002-2003, 2005, 2014, 2017-2018, 2021 Peter Dimov
+ © 2002-2003, 2005, 2016-2018 Rene Rivera
+ © 2002-2003, 2005-2006 Rene Rivera
+ © 2002-2003, 2006 Beman Dawes
+ © 2002-2004 David Abrahams
+ © 2002-2004 Guillaume Melquiond
+ © 2002-2004 Hervé Brönnimann
+ © 2002-2004 Martin Wille
+ © 2002-2004 Pavel Vozenilek
+ © 2002-2004 The Trustees of Indiana University
+ © 2002-2004 Vladimir Prus
+ © 2002-2004, 2006 Vladimir Prus
+ © 2002-2004, 2006, 2008 Gennaro Prota
+ © 2002-2004, 2007 Vladimir Prus
+ © 2002-2005 Andreas Huber Doenni
+ © 2002-2005 David Abrahams
+ © 2002-2005 Thomas Witt
+ © 2002-2005 Vladimir Prus
+ © 2002-2005, 2008 Beman Dawes
+ © 2002-2005, 2009 Beman Dawes
+ © 2002-2006 Aleksey Gurtovoy
+ © 2002-2006 CrystalClear Software, Inc
+ © 2002-2006 Hartmut Kaiser
+ © 2002-2006 Pavol Droba
+ © 2002-2006 Rene Rivera
+ © 2002-2006 Vladimir Prus
+ © 2002-2006, 2008 Marcin Kalicinski
+ © 2002-2007 Marcin Kalicinski
+ © 2002-2007, 2009 Marcin Kalicinski
+ © 2002-2007, 2010 Rene Rivera
+ © 2002-2008 Fernando Luis Cacciola Carballal
+ © 2002-2008 Joaquín M López Muñoz
+ © 2002-2008 Joaqu�n M Lopez Munoz
+ © 2002-2008 Robert Ramey
+ © 2002-2009 Beman Dawes
+ © 2002-2009 Robert Ramey
+ © 2002-2009 Takatoshi Kondo
+ © 2002-2009 Vladimir Prus
+ © 2002-2009, 2014 Beman Dawes
+ © 2002-2010 Andreas Huber Doenni
+ © 2002-2010 Vladimir Prus
+ © 2002-2010, 2012 The Trustees of Indiana University
+ © 2002-2010, 2014 Beman Dawes
+ © 2002-2011 Paul Mensonides
+ © 2002-2017 Daniel Frey
+ © 2002-2017 Peter Dimov
+ © 2002-2017 Rene Rivera
+ © 2002-2017 Vladimir Prus
+ © 2002-2018 Peter Dimov
+ © 2002-2018 Steve M. Robbins <smr@debian.org>
+ © 2002-2021 Rene Rivera
+ © 2002-2021 Robert Ramey
+ © 2002-2022 Christopher Kormanyos
+ © 2003 Aleksey Gurtovoy
+ © 2003 Andre Hentz
+ © 2003 Beman Dawes
+ © 2003 Bruce Barr
+ © 2003 Christof Meerwald
+ © 2003 Christopher Currie
+ © 2003 Dan Watkins
+ © 2003 Daniel Frey
+ © 2003 Daniel Walker
+ © 2003 David Abrahams
+ © 2003 Douglas Gregor
+ © 2003 Eric Friedman
+ © 2003 Felix E. Klee
+ © 2003 Fernando Luis Cacciola Carballal
+ © 2003 Gennaro Prota
+ © 2003 Giovanni Bajo
+ © 2003 Gottfried Ganßauge
+ © 2003 Guillaume Melquiond
+ © 2003 Gunter Winkler
+ © 2003 Gustavo Guerra
+ © 2003 Hartmut Kaiser
+ © 2003 Howard Hinnant
+ © 2003 Institute of Transport, Railway Construction and Operation, University of Hanover, Germany
+ © 2003 Jaap Suter
+ © 2003 Jens Maurer
+ © 2003 Jeremy G. Siek
+ © 2003 Joel de Guzman
+ © 2003 Joerg Walter
+ © 2003 John Maddock
+ © 2003 Jonathan Turkanis
+ © 2003 Jonathan de Halleux
+ © 2003 Martin Wille
+ © 2003 Michael Stevens
+ © 2003 Nikolay Mladenov
+ © 2003 Paul Lin
+ © 2003 Paul Mensonides
+ © 2003 Pavel Baranov
+ © 2003 Pedro Ferreira
+ © 2003 Rational Discovery LLC
+ © 2003 Rene Rivera
+ © 2003 Roland Richter
+ © 2003 Sam Nabialek
+ © 2003 Synge Todo
+ © 2003 Thomas Becker
+ © 2003 Thomas Witt
+ © 2003 Toon Knapen
+ © 2003 Vaclav Vesely
+ © 2003 Vesa Karvonen
+ © 2003 Vladimir Prus
+ © 2003, 2005 David Abrahams
+ © 2003, 2005 Douglas Gregor
+ © 2003, 2005-2006 Daniel Wallin
+ © 2003, 2005-2006 David Abrahams
+ © 2003, 2005-2006, 2010 Daniel Wallin
+ © 2003, 2005-2007 Rene Rivera
+ © 2003, 2006 Gottfried Ganßauge
+ © 2003, 2010 Vladimir Prus
+ © 2003-2004 Aleksey Gurtovoy
+ © 2003-2004 David Abrahams
+ © 2003-2004 Douglas Gregor
+ © 2003-2004 Gennaro Prota
+ © 2003-2004 Jaakko Järvi
+ © 2003-2004 Jaakko J�rvi
+ © 2003-2004 Jeremy B. Maitin-Shepard
+ © 2003-2004 Martin Wille
+ © 2003-2004 Neil Groves
+ © 2003-2004 Pavel Vozenilek
+ © 2003-2004 Pavol Droba
+ © 2003-2004 Robert Ramey
+ © 2003-2004 Thorsten Ottosen
+ © 2003-2004, 2006 Vladimir Prus
+ © 2003-2004, 2007, 2009-2011, 2014 Neil Groves
+ © 2003-2004, 2008 Gennaro Prota
+ © 2003-2005 Douglas Gregor
+ © 2003-2005 Larry Evans
+ © 2003-2005 Rani Sharoni
+ © 2003-2005 Thorsten Ottosen
+ © 2003-2005 Vladimir Prus
+ © 2003-2006 Gennaro Prota
+ © 2003-2006 Joel de Guzman
+ © 2003-2006 Vladimir Prus
+ © 2003-2006, 2008 Gennaro Prota
+ © 2003-2006, 2010 David Abrahams
+ © 2003-2007 John Maddock
+ © 2003-2007 Jonathan Turkanis
+ © 2003-2008 Fernando Luis Cacciola Carballal
+ © 2003-2008 Jan Gaspar
+ © 2003-2008 Matthias Christian Schabel
+ © 2003-2009 Jan Gaspar
+ © 2003-2009 Matthias Christian Schabel
+ © 2003-2009 Thorsten Ottosen
+ © 2003-2010 Thorsten Ottosen
+ © 2003-2010, 2014 Neil Groves
+ © 2003-2011 LASMEA UMR 6602 CNRS/Univ. Clermont II
+ © 2003-2013 Christopher M. Kohlhoff
+ © 2003-2015 Joaquin M Lopez Munoz
+ © 2003-2020 Joaqu�n M L�pez Mu�oz
+ © 2003-2021 Joaquín M López Muñoz
+ © 2003-2022 Christopher M. Kohlhoff
+ © 2003-2022 Joaquín M López Muñoz
+ © 2003-2022 Joaqu�n M Lopez Munoz
+ © 2004 Aaron W. LaFramboise
+ © 2004 Aleksey Gurtovoy
+ © 2004 Alexander Nasonov
+ © 2004 Angus Leeming
+ © 2004 Bertolt Mildner
+ © 2004 Brian Ravnsgaard Riis
+ © 2004 Christoph Ludwig
+ © 2004 Daniel Wallin
+ © 2004 David Abrahams
+ © 2004 Douglas Gregor
+ © 2004 Eric Niebler
+ © 2004 Gerald I. Evenden
+ © 2004 Howard Hinnant
+ © 2004 Jeremiah Willcock
+ © 2004 Jeremy G. Siek
+ © 2004 Jeremy Siek
+ © 2004 Joel de Guzman
+ © 2004 Joel de Guzman http://spirit.sourceforge.net/
+ © 2004 John Maddock
+ © 2004 Jonathan Brandmeyer
+ © 2004 Jonathan Graehl
+ © 2004 Jonathan Turkanis
+ © 2004 João Abecasis
+ © 2004 Kristopher Beevers
+ © 2004 Martin Ecker
+ © 2004 MetaCommunications, Inc.
+ © 2004 Michael Glassford
+ © 2004 Pavel Vozenilek
+ © 2004 Ralf Mattethat
+ © 2004 Rani Sharoni
+ © 2004 Reece H. Dunn
+ © 2004 Rene Rivera
+ © 2004 Robert Ramey
+ © 2004 Stefan Slapeta
+ © 2004 The Trustees of Indiana University
+ © 2004 Toon Knapen
+ © 2004 Vladimir Prus
+ © 2004 Vyacheslav E. Andrejev
+ © 2004, 2006 Douglas Gregor
+ © 2004, 2006 Michael Stevens
+ © 2004, 2007 Joel de Guzman
+ © 2004, 2007 Roland Schwarz
+ © 2004, 2009 The Trustees of Indiana University
+ © 2004, 2009-2010 Chris Hoeppler
+ © 2004, 2013, 2017-2019 Cromwell D. Enage
+ © 2004-2005 Eric Niebler
+ © 2004-2005 Jonathan Turkanis
+ © 2004-2005 Markus Schoepflin
+ © 2004-2005, 2010-2011, 2014 Eric Niebler
+ © 2004-2006 Arkadiy Vertleyb
+ © 2004-2006 David Abrahams
+ © 2004-2006 João Abecasis
+ © 2004-2006 Olaf Krzikalla
+ © 2004-2006 Peder Holt
+ © 2004-2006 Ralf W. Grosse-Kunstleve
+ © 2004-2006 Rene Rivera
+ © 2004-2006 The Trustees of Indiana University
+ © 2004-2006, 2009 Trustees of Indiana University
+ © 2004-2007 Daniel Wallin
+ © 2004-2007 Jonathan Turkanis
+ © 2004-2008 Domenico Andreoli <cavok@debian.org>
+ © 2004-2008 Rene Nyffenegger
+ © 2004-2008 The Trustees of Indiana University
+ © 2004-2009 Martin Ecker
+ © 2004-2009 Robert Ramey
+ © 2004-2009 Takatoshi Kondo
+ © 2004-2010 Gunter Winkler
+ © 2004-2011 David Bellot
+ © 2004-2011 Michael Stevens
+ © 2004-2012 Ion Gaztañaga
+ © 2004-2012 Ion Gazta�aga
+ © 2004-2012, 2014 Eric Niebler
+ © 2004-2021 Pavel Vozenilek
+ © 2004-2022 Ion Gaztañaga
+ © 2004-2022 Ion Gazta�aga
+ © 2005 Aleksey Gurtovoy
+ © 2005 Alexey Pakhunov
+ © 2005 Alo Sarv
+ © 2005 Arkadiy Vertleyb
+ © 2005 Ben Hutchings
+ © 2005 Christopher Diggins
+ © 2005 Craig Rodrigues
+ © 2005 Dan Marsden
+ © 2005 Daniel Egloff
+ © 2005 Daniel James
+ © 2005 Daniel K. O.
+ © 2005 Daniel Wallin
+ © 2005 David Abrahams
+ © 2005 Douglas Gregor
+ © 2005 Eric Niebler
+ © 2005 Felix Höfling
+ © 2005 Guillaume Melquiond
+ © 2005 Hartmut Kaiser
+ © 2005 Igor Chesnokov
+ © 2005 Jim Douglas
+ © 2005 Joel de Guzman
+ © 2005 John Maddock
+ © 2005 Jordan DeLong
+ © 2005 João Abecasis
+ © 2005 Keith MacDonald
+ © 2005 Kevlin Henney
+ © 2005 Markus Schoepflin
+ © 2005 Matthias Troyer
+ © 2005 Michael Gauckler
+ © 2005 Pablo Aguilar
+ © 2005 Peder Holt
+ © 2005 Reece H. Dunn
+ © 2005 Rene Rivera
+ © 2005 Robert Ramey
+ © 2005 Stefan Arentz
+ © 2005 Terje Sletteb
+ © 2005 Thomas Guest
+ © 2005 Thorsten Ottosen
+ © 2005 Toon Knapen
+ © 2005 Vladimir Prus
+ © 2005 Voipster
+ © 2005, 2007 Matthias Troyer
+ © 2005, 2007 Rene Rivera
+ © 2005, 2007-2008 Aaron Windsor
+ © 2005, 2008 Eric Niebler
+ © 2005, 2008-2009, 2014, 2016-2019 Peter Dimov
+ © 2005, 2009 Carl Barron
+ © 2005, 2009 Troy D. Straszheim
+ © 2005, 2013-2022 Niall Douglas
+ © 2005, 2018 Rene Rivera
+ © 2005-2006 Dan Marsden
+ © 2005-2006 Daniel Egloff
+ © 2005-2006 Daniel Wallin
+ © 2005-2006 Danny Havenith
+ © 2005-2006 David Abrahams
+ © 2005-2006 Douglas Gregor
+ © 2005-2006 FILL SOMETHING HERE
+ © 2005-2006 Ion Gaztañaga
+ © 2005-2006 João Abecasis
+ © 2005-2006 Michael Drexl
+ © 2005-2006 Olivier Gygi
+ © 2005-2006 Peter Dimov
+ © 2005-2006 Rene Rivera
+ © 2005-2006 Shunsuke Sogame
+ © 2005-2006 The Trustees of Indiana University
+ © 2005-2006 Trustees of Indiana University
+ © 2005-2006, 2013-2014, 2018 Alain Miniussi
+ © 2005-2006, 2017 Peter Dimov
+ © 2005-2007 Adobe Systems Incorporated
+ © 2005-2007 Anthony Williams
+ © 2005-2007 Dan Marsden
+ © 2005-2007 Douglas Gregor
+ © 2005-2007 Joel de Guzman
+ © 2005-2007 Jonathan Turkanis
+ © 2005-2007 Mat Marcus
+ © 2005-2007 Matthew Calabrese
+ © 2005-2007 Peder Holt
+ © 2005-2007, 2009 Alexander Nasonov
+ © 2005-2007, 2010 Peder Holt
+ © 2005-2007, 2011, 2016, 2018 Stefan Seefeld
+ © 2005-2008 Adobe Systems Incorporated
+ © 2005-2008 Anthony Williams
+ © 2005-2008 Daniel James
+ © 2005-2008 Hartmut Kaiser
+ © 2005-2008 John Maddock
+ © 2005-2008 Matthias Troyer
+ © 2005-2008 Redshift Software, Inc
+ © 2005-2009 Jong Soo Park
+ © 2005-2010 Hartmut Kaiser
+ © 2005-2010 Joel de Guzman
+ © 2005-2011 Daniel James
+ © 2005-2012 Anthony Williams
+ © 2005-2012 Ion Gaztañaga
+ © 2005-2012 Ion Gazta�aga
+ © 2005-2012 Juergen Hunold
+ © 2005-2012, 2014 Ion Gaztañaga
+ © 2005-2012, 2014 Ion Gazta�aga
+ © 2005-2013 Ion Gaztañaga
+ © 2005-2013 Ion Gazta�aga
+ © 2005-2014 Daniel James
+ © 2005-2015 Ion Gaztañaga
+ © 2005-2015 Ion Gazta�aga
+ © 2005-2016 Daniel James
+ © 2005-2018 Daniel James
+ © 2005-2018 John Maddock
+ © 2005-2021 John Maddock
+ © 2005-2022 Christopher M. Kohlhoff
+ © 2006 2015 John Maddock
+ © 2006 Alexander Nasonov
+ © 2006 Alisdair Meredith
+ © 2006 Arjan Knepper
+ © 2006 Arkadiy Vertleyb
+ © 2006 Bojan Resnik
+ © 2006 Boris Gubenko
+ © 2006 Dan Marsden
+ © 2006 Daniel Walker
+ © 2006 Daniel Wallin
+ © 2006 David Abrahams
+ © 2006 Eric Niebler
+ © 2006 Gennaro Prota
+ © 2006 Ilya Sokolov
+ © 2006 Jeremy G. Siek
+ © 2006 Joel de Guzman
+ © 2006 Johan Rade
+ © 2006 John Maddock
+ © 2006 Juergen Hunold
+ © 2006 Michael van der Westhuizen
+ © 2006 Olivier Gygi
+ © 2006 Paul A. Bristow
+ © 2006 Paul A. Bristow 2011
+ © 2006 Peter Dimov
+ © 2006 Piotr Wyderski
+ © 2006 Rene Ferdinand Rivera Morell
+ © 2006 Rene Rivera
+ © 2006 Roland Schwarz
+ © 2006 Stephan Diederich
+ © 2006 Stephen Nutt
+ © 2006 Steven Watanabe
+ © 2006 The Trustees of Indiana University
+ © 2006 Thorsten Ottosen
+ © 2006 Tiago de Paula Peixoto
+ © 2006 Tobias Schwinger
+ © 2006 Tomas Puverle
+ © 2006 Trustees of Indiana University
+ © 2006 Vladimir Prus
+ © 2006 Xiaogang Zhang
+ © 2006, 2008 Beman Dawes
+ © 2006, 2008 John Maddock
+ © 2006, 2008, 2011 Johan Rade
+ © 2006, 2008, 2011 John Maddock
+ © 2006, 2008, 2011 Paul A. Bristow
+ © 2006, 2009 Beman Dawes
+ © 2006, 2009, 2014 Beman Dawes
+ © 2006, 2011 Johan Rade
+ © 2006, 2012, 2017 Paul A. Bristow
+ © 2006, 2013 Christopher Kormanyos
+ © 2006, 2013 John Maddock
+ © 2006, 2013 Paul A. Bristow
+ © 2006, 2013 Xiaogang Zhang
+ © 2006, 2017 John Maddock
+ © 2006-2007 Beman Dawes
+ © 2006-2007 Boris Gubenko
+ © 2006-2007 Dan Marsden
+ © 2006-2007 Daryle Walker
+ © 2006-2007 Douglas Gregor
+ © 2006-2007 Hubert Holin
+ © 2006-2007 John Maddock
+ © 2006-2007 Julio M. Merino Vidal
+ © 2006-2007 Matias Capeletto
+ © 2006-2007 Noel Belcourt
+ © 2006-2007 Paul A. Bristow
+ © 2006-2007 Roland Schwarz
+ © 2006-2007 Tobias Schwinger
+ © 2006-2007, 2009-2010 Andy Tompkins
+ © 2006-2007, 2013-2020 John Maddock
+ © 2006-2007, 2016-2022 Rene Rivera
+ © 2006-2008 Johan Rade
+ © 2006-2008 Neil Groves
+ © 2006-2008 Thorsten Ottosen
+ © 2006-2008 Tobias Schwinger
+ © 2006-2008, 2010-2019 Paul A. Bristow
+ © 2006-2009 Andrey Parfenov
+ © 2006-2009 Dmitry Bufistov
+ © 2006-2009 Emil Dotchevski
+ © 2006-2009 Reverge Studios, Inc
+ © 2006-2009, 2012 Alexander Nasonov
+ © 2006-2009, 2018-2022 Emil Dotchevski
+ © 2006-2009, 2018-2022 Reverge Studios, Inc
+ © 2006-2010 Alexander Nasonov
+ © 2006-2010 Anthony Williams
+ © 2006-2010 Paul A. Bristow
+ © 2006-2011 Jens Maurer
+ © 2006-2012 Ion Gaztañaga
+ © 2006-2012 Ion Gazta�aga
+ © 2006-2012, 2015-2016 Juergen Hunold
+ © 2006-2013, 2022 Joaquín M López Muñoz
+ © 2006-2013, 2022 Joaqu�n M Lopez Munoz
+ © 2006-2014 Ion Gaztañaga
+ © 2006-2014 Ion Gazta�aga
+ © 2006-2015 Ion Gaztañaga
+ © 2006-2015 Ion Gazta�aga
+ © 2006-2018 Paul A. Bristow
+ © 2006-2021 Ion Gaztañaga
+ © 2006-2021 Ion Gazta�aga
+ © 2006-2022 Emil Dotchevski
+ © 2006-2022 Ion Gaztañaga
+ © 2006-2022 Ion Gazta�aga
+ © 2006-2022 René Ferdinand Rivera Morell
+ © 2006-2022 Reverge Studios, Inc
+ © 2007 Alexandre Courpron
+ © 2007 Alexey Baskakov
+ © 2007 Andreas Kloeckner
+ © 2007 Andy Tompkins
+ © 2007 Anthony Williams
+ © 2007 Baruch Zilber
+ © 2007 Bjorn Roald
+ © 2007 Boris Gubenko
+ © 2007 Christopher M. Kohlhoff
+ © 2007 CodeRage
+ © 2007 Dan Marsden
+ © 2007 Daniel Walker
+ © 2007 David Deakins
+ © 2007 David Gleich
+ © 2007 Douglas Gregor
+ © 2007 Emil Dotchevski
+ © 2007 Frank Birbacher
+ © 2007 Frank Mori Hess
+ © 2007 Hartmut Kaiser
+ © 2007 Joel de Guzman
+ © 2007 John Maddock
+ © 2007 Markus Schoepflin
+ © 2007 Nikolay Mladenov
+ © 2007 Noel Belcourt
+ © 2007 Robert Ramey
+ © 2007 Roland Schwarz
+ © 2007 Sebastian Ramacher
+ © 2007 Stanford University
+ © 2007 Timmo Stange
+ © 2007 Tobias Schwinger
+ © 2007 University of Karlsruhe
+ © 2007, 2009 Paul A. Bristow
+ © 2007, 2010 Andy Tompkins
+ © 2007, 2012-2013 Christian Henning
+ © 2007, 2013 John Maddock
+ © 2007, 2013-2014 Paul A. Bristow
+ © 2007-2008 Anthony Williams
+ © 2007-2008 CodeRage, LLC
+ © 2007-2008 Dario Senic
+ © 2007-2008 David Abrahams
+ © 2007-2008 David Jenkins
+ © 2007-2008 Eric Niebler
+ © 2007-2008 Hartmut Kaiser
+ © 2007-2008 Ion Gaztañaga
+ © 2007-2008 Ion Gazta�aga
+ © 2007-2008 Joseph Gauterin
+ © 2007-2008 Jurko Gospodnetic
+ © 2007-2008 Michael Stevens
+ © 2007-2008 Niels Dekker
+ © 2007-2008 Peter Dimov
+ © 2007-2008 Steven Watanabe
+ © 2007-2008 Tobias Schwinger
+ © 2007-2008 Vladimir Prus
+ © 2007-2009 Anthony Williams
+ © 2007-2009 Ben Hanson
+ © 2007-2009 Frank Mori Hess
+ © 2007-2010 Andrew Sutton
+ © 2007-2010 Anthony Williams
+ © 2007-2010 Hartmut Kaiser
+ © 2007-2010 Rene Rivera
+ © 2007-2010 Steven Watanabe
+ © 2007-2010, 2012 Howard Hinnant
+ © 2007-2010, 2012-2013 Christian Henning
+ © 2007-2010, 2014 Howard Hinnant
+ © 2007-2010, 2019 Frank Mori Hess
+ © 2007-2011 Andy Tompkins
+ © 2007-2011 Hartmut Kaiser
+ © 2007-2012 Andreas Pokorny
+ © 2007-2012 Barend Gehrels
+ © 2007-2012 Christian Henning
+ © 2007-2012 Joachim Faulhaber
+ © 2007-2012 Lubomir Bourdev
+ © 2007-2013, 2015-2017 Ion Gaztañaga
+ © 2007-2013, 2015-2017 Ion Gazta�aga
+ © 2007-2014 Ion Gaztañaga
+ © 2007-2014 Ion Gazta�aga
+ © 2007-2014, 2017-2018 Marshall Clow
+ © 2007-2015 Andrey Semashev
+ © 2007-2015 Barend Gehrels
+ © 2007-2016 Barend Gehrels
+ © 2007-2017 Barend Gehrels
+ © 2007-2017 Rene Rivera
+ © 2007-2018 Steven Watanabe
+ © 2007-2019 Barend Gehrels
+ © 2007-2021 Barend Gehrels
+ © 2007-2021 Ion Gaztañaga
+ © 2007-2021 Ion Gazta�aga
+ © 2007-2022 Andrey Semashev
+ © 2007-2022 Barend Gehrels
+ © 2008 Beman Dawes
+ © 2008 Christophe Henry
+ © 2008 CodeRage, LLC
+ © 2008 Dan Marsden
+ © 2008 Eduardo Gurgel
+ © 2008 Eric Niebler
+ © 2008 Federico J. Fernandez
+ © 2008 Francois Barel
+ © 2008 Frank Mori Hess
+ © 2008 Gautam Sewani
+ © 2008 Hailin Jin
+ © 2008 Hartmut Kaiser
+ © 2008 Howard Hinnant
+ © 2008 Ilya Sokolov
+ © 2008 Intel Corporation
+ © 2008 John Maddock
+ © 2008 Jorge Lodos
+ © 2008 Joseph Gauterin
+ © 2008 Jurko Gospodnetic
+ © 2008 Lubomir Bourdev
+ © 2008 Matyas W Egyhazy
+ © 2008 Michael Marcin
+ © 2008 Milan Svoboda
+ © 2008 N. Musatti
+ © 2008 Rene Rivera
+ © 2008 Rep Invariant Systems, Inc.
+ © 2008 Robert Ramey
+ © 2008 Roelof Naude
+ © 2008 Runar Undheim
+ © 2008 Vladimir Prus
+ © 2008, 2010 Intel Corporation
+ © 2008, 2010-2011, 2017 Christophe Henry
+ © 2008, 2012 Jurko Gospodnetic
+ © 2008, 2014 Peter Dimov
+ © 2008, 2017-2019 James E. King III
+ © 2008-2009 Ben Hanson
+ © 2008-2009 Frank Mori Hess
+ © 2008-2009 John Maddock
+ © 2008-2009 Niels Dekker
+ © 2008-2009 Thijs van den Berg
+ © 2008-2009, 2014 Paul A. Bristow
+ © 2008-2009, 2016 Cory Nelson
+ © 2008-2009, 2016 Tim Blechmann
+ © 2008-2010 Gordon Woodhull
+ © 2008-2010 Joseph Gauterin
+ © 2008-2010 Niels Dekker
+ © 2008-2011 Anthony Williams
+ © 2008-2011 Hartmut Kaiser
+ © 2008-2012 Barend Gehrels
+ © 2008-2012 Boris Schaeling
+ © 2008-2012 Bruno Lalande
+ © 2008-2012 Daniel Walker
+ © 2008-2012 Eric Niebler
+ © 2008-2012 Michel Morin
+ © 2008-2012 Simonson Lucanus
+ © 2008-2013 Roland Schwarz
+ © 2008-2015 Barend Gehrels
+ © 2008-2015 Bruno Lalande
+ © 2008-2015 Rene Rivera
+ © 2008-2016 Bruno Lalande
+ © 2008-2016 Tim Blechmann
+ © 2008-2017 Bruno Lalande
+ © 2008-2017 Charles Karney
+ © 2008-2018 Oliver Kowalke
+ © 2008-2018 Vicente J. Botet Escriba
+ © 2008-2019 Bruno Lalande
+ © 2008-2019 Kostas Savvidis
+ © 2008-2019 Lorenzo Caminiti
+ © 2008-2019 Rene Rivera
+ © 2008-2021 Bruno Lalande
+ © 2008-2022 Emil Dotchevski
+ © 2008-2022 Reverge Studios, Inc
+ © 2009 Andreas Haberstroh
+ © 2009 Andrew Sutton
+ © 2009 Andrey Semashev
+ © 2009 Arno Schoedl
+ © 2009 ArtVPS Ltd
+ © 2009 Beman Dawes
+ © 2009 Brian Ravnsgaard
+ © 2009 Carl Barron
+ © 2009 Chris Hoeppler
+ © 2009 Daniel Frey
+ © 2009 Daniel James
+ © 2009 Dean Michael Berris
+ © 2009 Dmitry Bufistov
+ © 2009 Dustin Spicuzza
+ © 2009 Edward Grace
+ © 2009 Eric Bose-Wolf
+ © 2009 Eric Moyer
+ © 2009 Erik Bryan
+ © 2009 Francois Barel
+ © 2009 Frank Mori Hess
+ © 2009 Gunter Winkler
+ © 2009 Hartmut Kaiser
+ © 2009 Inc
+ © 2009 Ion Gaztañaga
+ © 2009 Ion Gazta�aga
+ © 2009 Jean-Francois Ostiguy
+ © 2009 Jesse Williamson
+ © 2009 Joel de Guzman
+ © 2009 John Maddock
+ © 2009 Kenneth Riddile
+ © 2009 Mathias Gaunard
+ © 2009 Matthias Vallentin
+ © 2009 Nasos Iliopoulos
+ © 2009 Neil Groves
+ © 2009 Oliver Kowalke
+ © 2009 Pablo Halpern
+ © 2009 Pavel Baranov
+ © 2009 Phil Endecott
+ © 2009 Robert Ramey
+ © 2009 Ronald Garcia
+ © 2009 Sascha Ochsenknecht
+ © 2009 Spirent Communications
+ © 2009 Steven Watanabe
+ © 2009 The Trustees of Indiana University
+ © 2009 Tor Brede Vekterli
+ © 2009 Trustees of Indiana University
+ © 2009 Vicente J. Botet Escriba
+ © 2009 Yuriy Krasnoschek
+ © 2009, 2011 Helge Bahmann
+ © 2009, 2013, 2015 Sebastian Redl
+ © 2009-2010 Christopher Schmidt
+ © 2009-2010 Datasim Education BV
+ © 2009-2010 Hartmut Kaiser
+ © 2009-2010 Vicente J. Botet Escriba
+ © 2009-2010, 2013, 2015 Sebastian Redl
+ © 2009-2011 Artyom Beilis
+ © 2009-2011 Christopher Schmidt
+ © 2009-2011 David Bellot
+ © 2009-2011 Frederic Bron
+ © 2009-2011 Gunter Winkler
+ © 2009-2011 Helge Bahmann
+ © 2009-2011 LRI UMR 8623 CNRS/Univ Paris Sud XI
+ © 2009-2011 Robert Stewart
+ © 2009-2011 Roman Perepelitsa
+ © 2009-2011 Steven Watanabe
+ © 2009-2011 Vicente J. Botet Escriba
+ © 2009-2012 David Abrahams
+ © 2009-2012 Mateusz Loskot
+ © 2009-2012 Vicente J. Botet Escriba
+ © 2009-2012, 2014 Marco Guazzone
+ © 2009-2012, 2015 Artyom Beilis
+ © 2009-2013 Ion Gaztañaga
+ © 2009-2013 Ion Gazta�aga
+ © 2009-2013 Karsten Ahnert
+ © 2009-2013 Mateusz Loskot
+ © 2009-2013, 2017-2022 Mateusz Loskot
+ © 2009-2014 Barend Gehrels
+ © 2009-2014 Ion Gaztañaga
+ © 2009-2014 Ion Gazta�aga
+ © 2009-2014 Neil Groves
+ © 2009-2015 Barend Gehrels
+ © 2009-2015 Bruno Lalande
+ © 2009-2015 Charles Karney
+ © 2009-2015 Mario Mulansky
+ © 2009-2015 Mateusz Loskot
+ © 2009-2015, 2018 Artyom Beilis
+ © 2009-2016 Karsten Ahnert
+ © 2009-2016 Mario Mulansky
+ © 2009-2016 Mateusz Loskot
+ © 2009-2017 Mateusz Loskot
+ © 2009-2018 Mateusz Loskot
+ © 2009-2018 Vicente J. Botet Escriba
+ © 2009-2018, 2021 Abel Sinkovics
+ © 2009-2020 Ion Gazta�aga
+ © 2009-2021 Adam Wulkiewicz
+ © 2009-2021 Mateusz Loskot
+ © 2009-2022 Mateusz Loskot
+ © 2009-2022 Vladimir Batov
+ © 2010 2011 Simon West
+ © 2010 Alfredo Correa
+ © 2010 Andreas Huber Doenni
+ © 2010 Artyom Beilis
+ © 2010 Athanasios Iliopoulos
+ © 2010 Beman Dawes
+ © 2010 Botet Escriba
+ © 2010 Bryce Lelbach
+ © 2010 Carl Philipp Reh
+ © 2010 Christian Henning
+ © 2010 Christophe Henry
+ © 2010 Christopher Schmidt
+ © 2010 Daniel James
+ © 2010 Daniel Trebbien
+ © 2010 Daniel Wallin
+ © 2010 Dean Michael Berris
+ © 2010 Eric Jourdanneau
+ © 2010 Eric Niebler
+ © 2010 Fabien Castan
+ © 2010 Felipe Tanus
+ © 2010 Gaetano Mendola
+ © 2010 Georg Fritzsche
+ © 2010 Gevorg Voskanyan
+ © 2010 Gordon Woodhull
+ © 2010 Hartmut Kaiser
+ © 2010 Head Geek
+ © 2010 Howard Hinnant
+ © 2010 Ignacy Gawedzki
+ © 2010 Igor R (http://thread.gmane.org/gmane.comp.lib.boost.user/62985)
+ © 2010 Ilya Murav'jov
+ © 2010 Jeffrey Hellrung
+ © 2010 Jeroen Habraken
+ © 2010 Joel Falcou
+ © 2010 Joel de Guzman
+ © 2010 John Maddock
+ © 2010 Josh Wilson
+ © 2010 Just Software Solutions Ltd
+ © 2010 Kenneth Riddile
+ © 2010 Larry Evans
+ © 2010 Lars Kielhorn
+ © 2010 Mathias Gaunard
+ © 2010 Matthias Walter
+ © 2010 Nicolas Lelong
+ © 2010 Niels Dekker
+ © 2010 Nuovation System Designs, LLC
+ © 2010 Olaf Peter
+ © 2010 Paul A. Bristow
+ © 2010 Peter Schueller
+ © 2010 Sergey "GooRoo" Olendarenko
+ © 2010 Steven Watanabe
+ © 2010 Thomas Claveirole
+ © 2010 Thomas Heller
+ © 2010 Vicente J. Botet Escriba
+ © 2010 Vladimir Prus
+ © 2010 W.P. McNeill
+ © 2010, 2012 Christopher Schmidt
+ © 2010, 2012 Nathan Ridge
+ © 2010, 2013 Vicente J. Botet Escriba
+ © 2010, 2015 Francisco Jose Tapia
+ © 2010, 2015 Michael Caisse
+ © 2010-2011 Beman Dawes
+ © 2010-2011 Bryce Lelbach
+ © 2010-2011 Christopher Schmidt
+ © 2010-2011 Daniel James
+ © 2010-2011 David Bellot
+ © 2010-2011 Eric Niebler
+ © 2010-2011 Karsten Ahnert
+ © 2010-2011 Michael Caisse
+ © 2010-2011 Paul A. Bristow
+ © 2010-2011 Steven Watanabe
+ © 2010-2011 Thomas Heller
+ © 2010-2011 Thomas Mang
+ © 2010-2011 Vicente J. Botet Escriba
+ © 2010-2012 Ankit Daftery
+ © 2010-2012 Barend Gehrels
+ © 2010-2012 Christian Henning
+ © 2010-2012 D. E. Shaw Research
+ © 2010-2012 Jim Bosch
+ © 2010-2012 Kenneth Riddile
+ © 2010-2012 Mateusz Loskot
+ © 2010-2012, 2014-2015 Andrii Sydorchuk
+ © 2010-2013 Daniel James
+ © 2010-2013 Karsten Ahnert
+ © 2010-2013 Mario Mulansky
+ © 2010-2013 Thomas Heller
+ © 2010-2015 Mario Mulansky
+ © 2010-2018 Justinas Vygintas Daugmaudis
+ © 2010-2020 Edward Diener
+ © 2010-2021 Douglas Gregor
+ © 2011 Aaron Graham
+ © 2011 Andrew Ross
+ © 2011 Beman Dawes
+ © 2011 Boris Schaeling
+ © 2011 Brandon Kohn
+ © 2011 Brian O'Kennedy
+ © 2011 Bryce Lelbach
+ © 2011 Christopher Jefferson
+ © 2011 Colin Rundel
+ © 2011 Daniel James
+ © 2011 Daryle Walker
+ © 2011 Dean Michael Berris
+ © 2011 Emil Dotchevski
+ © 2011 Eric Niebler
+ © 2011 Francois Mauger
+ © 2011 Garmin Ltd. or its subsidiaries
+ © 2011 Helge Bahmann
+ © 2011 Jamboree
+ © 2011 Jan Frederick Eick
+ © 2011 Jeroen Habraken
+ © 2011 Joerg Becker
+ © 2011 John Maddock
+ © 2011 Júlio Hoffimann
+ © 2011 Kwan Ting Chan
+ © 2011 Laurent Gomila
+ © 2011 Matthias Born
+ © 2011 Nathan Ridge
+ © 2011 Paul A. Bristow
+ © 2011 Paul Heil
+ © 2011 Robert Nelson
+ © 2011 Roji Philip
+ © 2011 Ryan Molden
+ © 2011 Simon West
+ © 2011 Steven Watanabe
+ © 2011 Takaya Saito
+ © 2011 Thomas Heller
+ © 2011 Vicente J. Botet Escriba
+ © 2011, 2013 Jeremiah Willcock
+ © 2011, 2013 Paul A. Bristow
+ © 2011, 2013 Steven Watanabe
+ © 2011, 2013-2014 Jamboree
+ © 2011, 2014 Eric Niebler
+ © 2011, 2017-2018 Steven Watanabe
+ © 2011-2012 Akira Takahashi
+ © 2011-2012 Ankit Daftery
+ © 2011-2012 Barend Gehrels
+ © 2011-2012 Brandon Kohn
+ © 2011-2012 Jeff Flinn
+ © 2011-2012 Mario Mulansky
+ © 2011-2012 Martin Lambers
+ © 2011-2012 Paul A. Bristow
+ © 2011-2012 Thomas Bernard
+ © 2011-2012 Vicente J. Botet Escriba
+ © 2011-2012, 2014 Thomas Bernard
+ © 2011-2013 Adam Wulkiewicz
+ © 2011-2013 Andrew Hundt
+ © 2011-2013 Karsten Ahnert
+ © 2011-2013 Mario Mulansky
+ © 2011-2013 Thorsten Ottosen
+ © 2011-2013 Vicente J. Botet Escriba
+ © 2011-2013, 2017 Adam Wulkiewicz
+ © 2011-2014 Adam Wulkiewicz
+ © 2011-2014 Ion Gaztañaga
+ © 2011-2014 Ion Gazta�aga
+ © 2011-2014 Karsten Ahnert
+ © 2011-2014 Mario Mulansky
+ © 2011-2015 Akira Takahashi
+ © 2011-2015 Barend Gehrels
+ © 2011-2015 Karsten Ahnert
+ © 2011-2015 Mario Mulansky
+ © 2011-2018 Adam Wulkiewicz
+ © 2011-2018 Vicente J. Botet Escriba
+ © 2011-2018, 2022 Adam Wulkiewicz
+ © 2011-2019 Renato Tegon Forti
+ © 2011-2020 Edward Diener
+ © 2011-2021 John Maddock
+ © 2011-2021 Steven Watanabe
+ © 2011-2022 Adam Wulkiewicz
+ © 2011-2022 Antony Polukhin
+ © 2011-2022 John Maddock
+ © 2012 Adam D. Walling
+ © 2012 Agustin K-ballo Berge
+ © 2012 Andrii Sydorchuk
+ © 2012 Anthony Williams
+ © 2012 Artyom Beilis
+ © 2012 Benjamin Schindler
+ © 2012 Benjamin Sobotta
+ © 2012 Boris Schaeling
+ © 2012 Christian Henning
+ © 2012 Christoph Koke
+ © 2012 Chung-Lin Wen
+ © 2012 Daniel James
+ © 2012 David Bailey
+ © 2012 David Doria
+ © 2012 David Stone
+ © 2012 Davide Anastasia
+ © 2012 Denis Demidov
+ © 2012 Duncan Exon Smith
+ © 2012 Fernando Vilas
+ © 2012 Flavio De Lorenzi
+ © 2012 Google, Inc
+ © 2012 Hartmut Kaiser
+ © 2012 IBM Corp
+ © 2012 Jeffrey Lee Hellrung, Jr
+ © 2012 Joel Falcou
+ © 2012 John Maddock
+ © 2012 K R Walker
+ © 2012 Karsten Ahnert
+ © 2012 Lee Hodgkinson
+ © 2012 Leo Goodstadt
+ © 2012 Lorenzo Caminiti
+ © 2012 Lucanus Simonson
+ © 2012 Mario Mulansky
+ © 2012 Marshall Clow
+ © 2012 Martin Raspaud
+ © 2012 Michele Caini
+ © 2012 Nathan Ridge
+ © 2012 Olivier Tournaire
+ © 2012 Oswin Krause
+ © 2012 Paul A. Bristow
+ © 2012 Phil Endecott
+ © 2012 Philipp Moeller
+ © 2012 Pierre Talbot
+ © 2012 Steven Watanabe
+ © 2012 Sylwester Arabas
+ © 2012 Thomas Mang
+ © 2012 Tim Blechmann
+ © 2012 Vicente J. Botet Escriba
+ © 2012 ohn Maddock
+ © 2012 tienne Dupuis
+ © 2012 yyyy yyyy
+ © 2012, 2014 Pieter Bastiaan Ober
+ © 2012, 2014-2018 Paul Fultz II
+ © 2012-2013 Adam Wulkiewicz
+ © 2012-2013 Andreas Angelopoulos
+ © 2012-2013 Andreas Pokorny
+ © 2012-2013 Christian Henning
+ © 2012-2013 Louis Dionne
+ © 2012-2013 Mario Mulansky
+ © 2012-2013 Rajeev Singh
+ © 2012-2013 Tim Blechmann
+ © 2012-2014 Kohei Takahashi
+ © 2012-2014, 2016, 2021 Christopher Kormanyos
+ © 2012-2015 Marshall Clow
+ © 2012-2015, 2017, 2022 Adam Wulkiewicz
+ © 2012-2016, 2019-2022 Christopher Kormanyos
+ © 2012-2018 Klemens Morgenstern
+ © 2012-2018 Kohei Takahashi
+ © 2012-2020 Adam Wulkiewicz
+ © 2012-2020 John Maddock
+ © 2012-2020 Mateusz Loskot
+ © 2012-2021 Andrey Semashev
+ © 2012-2022 Andrey Semashev
+ © 2012-2022 Antony Polukhin
+ © 2012-2022 Glen Joseph Fernandes
+ © 2013 Agustin Berge
+ © 2013 Akira Takahashi
+ © 2013 Alberto Santini
+ © 2013 Alex Korobka
+ © 2013 Andreas Hehn
+ © 2013 Andrey
+ © 2013 Ankur Sinha
+ © 2013 Anton Bikineev
+ © 2013 Antony Polukhin
+ © 2013 Beman Dawes
+ © 2013 Bjorn Roald
+ © 2013 Carl Barron
+ © 2013 Christian Henning
+ © 2013 Christian Shelton
+ © 2013 Christopher Brown
+ © 2013 Christopher Kormanyos
+ © 2013 Davide Anastasia
+ © 2013 Eurodecision
+ © 2013 Ion Gaztañaga
+ © 2013 Ion Gazta�aga
+ © 2013 Jakob Lykke Andersen
+ © 2013 Joaquim Duran
+ © 2013 John Maddock
+ © 2013 Juan V. Puertos
+ © 2013 Karsten Ahnert
+ © 2013 Krzysztof Czainski
+ © 2013 Kyle Lutz
+ © 2013 Maciej Piechotka
+ © 2013 Mateusz Loskot
+ © 2013 Muhammad Junaid Muzammil
+ © 2013 Nakhar Agrawal
+ © 2013 Niall Douglas
+ © 2013 Oliver Kowalke
+ © 2013 Pascal Germroth
+ © 2013 Paul A. Bristow
+ © 2013 Petr Machata
+ © 2013 Pierre Talbot
+ © 2013 Red Hat Inc
+ © 2013 Ruslan Baratov
+ © 2013 Sergue E. Leontiev
+ © 2013 Steven Watanabe
+ © 2013 Thomas Sailer
+ © 2013 Tim Blechmann
+ © 2013 University of Warsaw
+ © 2013 Vicente J. Botet Escriba
+ © 2013, 2015 Oliver Kowalke
+ © 2013, 2015-2018 Andrey Semashev
+ © 2013, 2017 Andrey Semashev
+ © 2013, 2017 Daniel James
+ © 2013, 2017-2018 Cray, Inc
+ © 2013, 2020 Andrey Semashev
+ © 2013-2014 Agustin Berge
+ © 2013-2014 Anton Bikineev
+ © 2013-2014 Christopher Kormanyos
+ © 2013-2014 Damien Buhl
+ © 2013-2014 Ion Gaztañaga
+ © 2013-2014 Ion Gazta�aga
+ © 2013-2014 John Maddock
+ © 2013-2014 Mageswaran.D
+ © 2013-2014 Nikhar Agrawal
+ © 2013-2014 Paul A. Bristow
+ © 2013-2014 Rastko Anicic
+ © 2013-2014 Vicente J. Botet Escriba
+ © 2013-2014, 2017 Denis Demidov
+ © 2013-2014, 2018-2022 Andrey Semashev
+ © 2013-2014, 2020 Christopher Kormanyos
+ © 2013-2015 Adam Wulkiewicz
+ © 2013-2015 Kyle Lutz
+ © 2013-2015 Nat Goodspeed
+ © 2013-2015 Rene Rivera
+ © 2013-2016 Louis Dionne
+ © 2013-2017 Adam Wulkiewicz
+ © 2013-2017 Louis Dionne
+ © 2013-2017 Vinnie Falco
+ © 2013-2017, 2019 Vinnie Falco
+ © 2013-2018 Louis Dionne
+ © 2013-2019 Canonical Ltd
+ © 2013-2019 Eric Niebler
+ © 2013-2019 Vinnie Falco
+ © 2013-2019, 2021 Paul A. Bristow
+ © 2013-2020 Vinnie Falco
+ © 2013-2020 Vinnie Falco (vinnie.falco@gmail.com)
+ © 2013-2021 Oracle and/or its affiliates
+ © 2013-2021 Rene Ferdinand Rivera Morell
+ © 2013-2022 Adam Wulkiewicz
+ © 2013-2022 Antony Polukhin
+ © 2013-2022 Oracle and/or its affiliates
+ © 2014 Agustin Berge
+ © 2014 Ahmed Charles
+ © 2014 Alexander Lauser
+ © 2014 Andrey Semashev
+ © 2014 Anton Bikineev
+ © 2014 Antony Polukhin
+ © 2014 Athanasios Iliopoulos
+ © 2014 Ben Pope
+ © 2014 Benoit
+ © 2014 Benoit Dequidt
+ © 2014 Bill Gallafent
+ © 2014 Boris Rasin
+ © 2014 Christoph Weiss
+ © 2014 Christopher Kormanyos
+ © 2014 Erik Erlandson
+ © 2014 Fabian Köhler
+ © 2014 Franz Detro
+ © 2014 Glen Joseph Fernandes
+ © 2014 Ian Forbed
+ © 2014 Ion Gaztañaga
+ © 2014 Ion Gazta�aga
+ © 2014 Jessica Hamilton
+ © 2014 Jim Bell
+ © 2014 John Fletcher
+ © 2014 John Maddock
+ © 2014 Jorge Lodos
+ © 2014 LASMEA UMR 6602 CNRS/Univ. Clermont II
+ © 2014 LRI UMR 8623 CNRS/Univ Paris Sud XI
+ © 2014 Lee Clagett
+ © 2014 Marek Kurdej
+ © 2014 Matei David
+ © 2014 MetaScale SAS
+ © 2014 Microsoft Corporation
+ © 2014 Neil Groves
+ © 2014 NumScale SAS
+ © 2014 Oliver Kowalke
+ © 2014 Paul A. Bristow
+ © 2014 Peter Dimov
+ © 2014 Pieter Bastiaan Ober
+ © 2014 Renato Tegon Forti
+ © 2014 Riccardo Marcangelo
+ © 2014 Roshan
+ © 2014 Samuel Debionne
+ © 2014 Steven Watanabe
+ © 2014 Thijs van den Berg
+ © 2014 Tomoki Imai
+ © 2014 Vicente J. Botet Escriba
+ © 2014 iamvfx@gmail.com
+ © 2014, 2016-2017 T. Zachary Laine
+ © 2014, 2017-2019 Glen Joseph Fernandes
+ © 2014, 2017-2022 Peter Dimov
+ © 2014, 2018 Glen Joseph Fernandes
+ © 2014, 2020, 2022 Andrey Semashev
+ © 2014-2015 AlainMiniussi
+ © 2014-2015 Antony Polukhin
+ © 2014-2015 John Fletcher
+ © 2014-2015 Rene Rivera
+ © 2014-2015 Samuel Debionne
+ © 2014-2015, 2017-2018 Peter Dimov
+ © 2014-2015, 2018 Kohei Takahashi
+ © 2014-2017 Adam Wulkiewicz
+ © 2014-2017 Vicente J. Botet Escriba
+ © 2014-2018 Adam Wulkiewicz
+ © 2014-2018 Kohei Takahashi
+ © 2014-2018, 2020-2021 Andrey Semashev
+ © 2014-2019 John Maddock
+ © 2014-2019 Peter Dimov
+ © 2014-2019 Raffi Enficiaud
+ © 2014-2020 Oracle and/or its affiliates
+ © 2014-2021 Andrzej Krzemieński
+ © 2014-2021 Boris Rasin
+ © 2014-2021 Oracle and/or its affiliates
+ © 2014-2022 Andrzej Krzemieński
+ © 2014-2022 Antony Polukhin
+ © 2014-2022 Oracle and/or its affiliates
+ © 2015 Aaron Boman
+ © 2015 Agustin K-ballo Berge
+ © 2015 Ahmed Charles
+ © 2015 Andrey Semashev
+ © 2015 Artur Shepilko
+ © 2015 Beman Dawes
+ © 2015 Bruno Dutra
+ © 2015 Catherine Morton
+ © 2015 Charly Chevalier
+ © 2015 Deniz Bahadir
+ © 2015 Edward Nevill
+ © 2015 Francisco Jose Tapia"
+ © 2015 Glen Joseph Fernandes
+ © 2015 Gonzalo Brito Gadeschi
+ © 2015 Gregor de Cillia
+ © 2015 Ion Gaztañaga
+ © 2015 Ion Gazta�aga
+ © 2015 Jakub Pola
+ © 2015 Jeremy William Murphy
+ © 2015 Joel Falcou
+ © 2015 John Fletcher
+ © 2015 Klemens Morgenstern
+ © 2015 Kohei Takahashi
+ © 2015 LRI UMR 8623 CNRS/University Paris Sud XI
+ © 2015 Lingxi Li
+ © 2015 Louis Dionne
+ © 2015 Mario Lang
+ © 2015 Mario Mulansky
+ © 2015 Markus J. Weber
+ © 2015 Muhammad Junaid Muzammil
+ © 2015 Nat Goodspeed
+ © 2015 NumScale SAS
+ © 2015 Nuxi
+ © 2015 Oliver Kowalke
+ © 2015 Oracle and/or its affiliates
+ © 2015 Orson Peters
+ © 2015 Peter Dimov
+ © 2015 Rene Rivera
+ © 2015 Robert Ramey
+ © 2015 Robin Eckert
+ © 2015 Seth Heeren
+ © 2015 Stefan Hammer
+ © 2015 Stefan Seefeld
+ © 2015, 2017 Andrey Semashev
+ © 2015, 2017 Orson Peters
+ © 2015, 2017 Wind River Inc
+ © 2015, 2018 Kohei Takahashi
+ © 2015, 2018-2020 Peter Dimov
+ © 2015, 2020 Andrey Semashev
+ © 2015-2016 Andrey Semashev
+ © 2015-2016 Benedek Thaler
+ © 2015-2016 Jeremy Murphy
+ © 2015-2016 Rene Rivera
+ © 2015-2016, 2020 Jason Rice
+ © 2015-2017 Barrett Adair
+ © 2015-2017 Francisco José Tapia
+ © 2015-2017 Oracle and/or its affiliates
+ © 2015-2018 Adam Wulkiewicz
+ © 2015-2018 Jakub Szuppe
+ © 2015-2018 Kohei Takahashi
+ © 2015-2019 Hans P. Dembinski
+ © 2015-2019 Rene Rivera
+ © 2015-2019, 2021-2022 Klemens Morgenstern
+ © 2015-2020 Oracle and/or its affiliates
+ © 2015-2020, Kevin Wojniak
+ © 2015-2021 Barrett Adair
+ © 2015-2021 Hans P. Dembinski
+ © 2015-2021 John Maddock
+ © 2015-2021 Oracle and/or its affiliates
+ © 2015-2021 Peter Dimov
+ © 2016 Abel Sinkovics
+ © 2016 Adam Wulkiewicz
+ © 2016 Andrey Semashev
+ © 2016 Arnaud Kapp
+ © 2016 Ashish Sadanandan
+ © 2016 Barrett Adair
+ © 2016 Bogumił Chojnowski
+ © 2016 Chris Glover
+ © 2016 Frank Hein
+ © 2016 Giel van Schijndel
+ © 2016 Jason Rhinelander
+ © 2016 Jeffrey E. Trull
+ © 2016 Jeremy William Murphy
+ © 2016 John Maddock
+ © 2016 Jorge Lodos
+ © 2016 K. Noel Belcourt
+ © 2016 Karolin Varner
+ © 2016 Klemens Morgenstern
+ © 2016 Kohei Takahashi
+ © 2016 Lee Clagett
+ © 2016 Mikhail Maximov
+ © 2016 Nicholas Thompson
+ © 2016 Norbert Wenzel
+ © 2016 Oliver Kowalke
+ © 2016 Paul A. Bristow
+ © 2016 Peter Dimov
+ © 2016 Robert Ramey
+ © 2016 Sergey Nizovtsev
+ © 2016 Stefan Seefeld
+ © 2016 Steven Watanabe
+ © 2016 Szabolcs Toth
+ © 2016 Thomas Kent
+ © 2016 Thomas Luu
+ © 2016 Tony Lewis
+ © 2016 Vladimir Prus
+ © 2016 arett Adair
+ © 2016, 2018 Kohei Takahashi
+ © 2016-2017 Alexander Zaitsev
+ © 2016-2017 Andrey Semashev
+ © 2016-2017 Brian Kuhl
+ © 2016-2017 Jason Rice
+ © 2016-2017 Joaquín M López Muñoz
+ © 2016-2017 Klemens Morgenstern
+ © 2016-2017 Mikhail Maximov
+ © 2016-2017 Peter Dimov
+ © 2016-2017 Vinnie Falco
+ © 2016-2017, 2020-2021 Peter Dimov
+ © 2016-2018 Paul A. Bristow
+ © 2016-2018 Peter Dimov
+ © 2016-2018 Rene Rivera
+ © 2016-2019 Damian Jarek
+ © 2016-2019 Hans P. Dembinski
+ © 2016-2019 Klemens Morgenstern
+ © 2016-2019 Nikita Kniazev
+ © 2016-2019 Vinnie Falco
+ © 2016-2021 Hans P. Dembinski
+ © 2016-2021 Oracle and/or its affiliates
+ © 2016-2021 Peter Dimov
+ © 2016-2021 Vinnie Falco
+ © 2016-2022 Antony Polukhin
+ © 2016-2022 Nikita Kniazev
+ © 2016-2022 T. Zachary Laine
+ © 2017 ARM Limited
+ © 2017 Adam Wulkiewicz
+ © 2017 Alain Miniussi
+ © 2017 Albert Sverdlov
+ © 2017 Alexander Karzhenkov
+ © 2017 Andrey Semashev
+ © 2017 Austin J. Beer
+ © 2017 Balint Cserni
+ © 2017 Cromwell D. Enage
+ © 2017 Daniel James
+ © 2017 Daniela Engert
+ © 2017 Dynatrace
+ © 2017 Edward Diener
+ © 2017 Felix Salfelder
+ © 2017 Francisco José Tapia
+ © 2017 James E. King III
+ © 2017 John Maddock
+ © 2017 Kohei Takahashi
+ © 2017 Kristian Popov
+ © 2017 Levon Tarakchyan
+ © 2017 Michel Morin
+ © 2017 NVIDIA CORPORATION
+ © 2017 Orson Peters
+ © 2017 Peter Dimov
+ © 2017 Rene Rivera
+ © 2017 Ruslan Baratov
+ © 2017 Samuli-Petrus Korhonen
+ © 2017 Sergey Krivonos
+ © 2017 Shreyans Doshi
+ © 2017 Stefan Seefeld
+ © 2017 Steffen Hirschmann
+ © 2017 Steven Ross
+ © 2017 Steven Watanabe
+ © 2017 Tom Westerhout
+ © 2017 Valentin Noah Hartmann
+ © 2017 Vincent Chabannes
+ © 2017 Vinnie Falco
+ © 2017 think-cell GmbH
+ © 2017, 2019 Cromwell D. Enage
+ © 2017, 2019-2021 Nick Thompson
+ © 2017, 2020 Bjorn Reese
+ © 2017, 2020-2021 John Maddock
+ © 2017, 2020-2021 Peter Dimov
+ © 2017, 2021 Orson Peters
+ © 2017-2018 Alexandr Poltavsky
+ © 2017-2018 Chris Beck
+ © 2017-2018 Cromwell D. Enage
+ © 2017-2018 Ion Gaztañaga
+ © 2017-2018 Ion Gazta�aga
+ © 2017-2018 Nicholas Thompson
+ © 2017-2018 Tom Hughes
+ © 2017-2019 James E. King III
+ © 2017-2019 Kohei Takahashi
+ © 2017-2019 Nikita Kniazev
+ © 2017-2019 Oracle and/or its affiliates
+ © 2017-2020 Mateusz Loskot
+ © 2017-2021 Nick Thompson
+ © 2017-2021 Peter Dimov
+ © 2017-2021 Rene Ferdinand Rivera Morell
+ © 2017-2022 Andrzej Krzemieński
+ © 2017-2022 Antony Polukhin
+ © 2017-2022 James E. King III
+ © 2017-2022 Luke Peterson
+ © 2017-2022 Mateusz Loskot
+ © 2017-2022 Niall Douglas
+ © 2017-2022 Oracle and/or its affiliates
+ © 2018 Adam Butcher
+ © 2018 Adeel Ahmad
+ © 2018 Alexander Grund
+ © 2018 Andrzej Krzemieński
+ © 2018 Antony Polukhin
+ © 2018 Benjamin Worpitz
+ © 2018 Damian Jarek
+ © 2018 Dmitry Arkhipov
+ © 2018 Evgeny Shulgin
+ © 2018 Fady Essam
+ © 2018 Glen Joseph Fernandes
+ © 2018 Ion Gaztañaga
+ © 2018 Ion Gazta�aga
+ © 2018 James E. King III
+ © 2018 Jiaxun Yang
+ © 2018 Kohei Takahashi
+ © 2018 Louis Dionne
+ © 2018 Mario Suvajac
+ © 2018 Mateusz Loskot
+ © 2018 Mike Dev
+ © 2018 Oxford Nanopore Technologies
+ © 2018 Peter Dimov
+ © 2018 Rasmus Ahlberg
+ © 2018 Reimar Döffinger
+ © 2018 Rene Rivera
+ © 2018 Robin Linden
+ © 2018 Sergei Fedorov
+ © 2018 Stefan Seefeld
+ © 2018 Tim Blechmann
+ © 2018 Tobias Loew
+ © 2018 Vicente J. Botet Escriba
+ © 2018 Yaghyavardhan Singh Khangarot
+ © 2018 Yi Ji
+ © 2018, 2020 Peter Dimov
+ © 2018, 2020 Richard Hodges
+ © 2018, 2020 Steffen Hirschmann
+ © 2018-2019 Cem Bassoy
+ © 2018-2019 James E. King III
+ © 2018-2019 Mateusz Loskot
+ © 2018-2019 Matthew Pulver
+ © 2018-2019 Mike Dev
+ © 2018-2019 Peter Dimov
+ © 2018-2019 agate-pris
+ © 2018-2020 Emil Dotchevski
+ © 2018-2020 Giovanni Mascellani <gio@debian.org>
+ © 2018-2020 Hans P. Dembinski
+ © 2018-2020 Mateusz Loskot
+ © 2018-2020 Rene Rivera
+ © 2018-2021 Oracle and/or its affiliates
+ © 2018-2021 René Ferdinand Rivera Morell
+ © 2018-2022 Alexander Grund
+ © 2018-2022 Andrey Semashev
+ © 2018-2022 Antony Polukhin
+ © 2018-2022 Emil Dotchevski
+ © 2018-2022 Niall Douglas
+ © 2018-2022 Nick Thompson
+ © 2018-2022 Rene Rivera
+ © 2018-2022 Reverge Studios, Inc
+ © 2019 Andreas Schwab
+ © 2019 Andrey Semashev
+ © 2019 Austin J. Beer
+ © 2019 Banco Santander
+ © 2019 Christian Mazakas
+ © 2019 Dario Menendez
+ © 2019 Glen Joseph Fernandes
+ © 2019 Hans P. Dembinski
+ © 2019 Henry Schreiner
+ © 2019 Ilya Kiselev
+ © 2019 James E. King III
+ © 2019 Joel de Guzman
+ © 2019 Kris Jusiak
+ © 2019 Lichao Xia
+ © 2019 Mateusz Loskot
+ © 2019 Michał Janiszewski
+ © 2019 Mika Fischer (mika.fischer@zoopnet.de)
+ © 2019 Miral Shah
+ © 2019 Nick Thompson
+ © 2019 Nikita Kniazev
+ © 2019 Olzhas Zhumabek
+ © 2019 Paul A. Bristow
+ © 2019 Paul A. Bristow additions for more control of serif-italic font etc
+ © 2019 Paul Dreik
+ © 2019 Paul Keir
+ © 2019 Peter Dimov
+ © 2019 Peter Dimov (pdimov at gmail dot com)
+ © 2019 Przemyslaw Bartosik
+ © 2019 Ramil Gauss
+ © 2019 Rene Rivera
+ © 2019 Richard Hodges (hodges dot r at gmail dot com)
+ © 2019 Sorin Fetche
+ © 2019 T. Zachary Laine
+ © 2019 Tinko Bartels
+ © 2019 Tom Tan
+ © 2019 Vicente J. Botet Escriba
+ © 2019 Vinnie Falco (vinnie.falco@gmail.com)
+ © 2019-2020 Christopher Kormanyos
+ © 2019-2020 Dmitry Arkhipov
+ © 2019-2020 Glen Joseph Fernandes
+ © 2019-2020 Ion Gaztañaga
+ © 2019-2020 Ion Gazta�aga
+ © 2019-2020 Krystian Stasiowski (sdkrystian at gmail dot com)
+ © 2019-2020 Madhur Chauhan
+ © 2019-2020 Olzhas Zhumabek
+ © 2019-2020 Oracle and/or its affiliates
+ © 2019-2021 Andrey Semashev
+ © 2019-2021 Olzhas Zhumabek
+ © 2019-2021 Oracle and/or its affiliates
+ © 2019-2021 Pranam Lashkari
+ © 2019-2021 René Ferdinand Rivera Morell
+ © 2019-2021 Ruslan Arutyunyan
+ © 2019-2022 Alexander Grund
+ © 2019-2022 Andrey Semashev
+ © 2019-2022 Antony Polukhin
+ © 2019-2022 Pranam Lashkari
+ © 2019-2022 Vinnie Falco
+ © 2019-2023 Ruben Perez Hidalgo
+ © 2020 Aditya Mohan
+ © 2020 Alexander Karzhenkov
+ © 2020 Baidyanath Kundu
+ © 2020 Barrett Adair
+ © 2020 Bjorn Reese
+ © 2020 Brazil
+ © 2020 Caian Benedicto
+ © 2020 Campinas
+ © 2020 Debabrata Mandal
+ © 2020 Digvijay Janartha
+ © 2020 Dmitry Arkhipov
+ © 2020 Edward Diener
+ © 2020 Evan Miller
+ © 2020 Haldia
+ © 2020 Hamirpur
+ © 2020 India
+ © 2020 Ion Gaztañaga
+ © 2020 Ion Gazta�aga
+ © 2020 John Maddock
+ © 2020 Krystian Stasiowski (sdkrystian at gmail dot com)
+ © 2020 Krystian Stasiowski (sdkrystian@gmail.com)
+ © 2020 Madhur Chauhan
+ © 2020 Mateusz Loskot
+ © 2020 Nikita Kniazev
+ © 2020 Oracle and/or its affiliates
+ © 2020 Paul Dreik (github@pauldreik.se)
+ © 2020 Peter Dimov
+ © 2020 Peter Dimov (pdimov at gmail dot com)
+ © 2020 Rene Ferdinand Rivera Morell
+ © 2020 Rene Rivera
+ © 2020 René Ferdinand Rivera Morell
+ © 2020 Richard Hodges
+ © 2020 Roman Savchenko
+ © 2020 Samuel Debionne
+ © 2020, 2022 Jeff Trull
+ © 2020, 2022 René Ferdinand Rivera Morell
+ © 2020-2021 Alexander Grund
+ © 2020-2021 Evan Lenz (evan@lenzconsulting.com)
+ © 2020-2021 Nikita Kniazev
+ © 2020-2021 Oracle and/or its affiliates
+ © 2020-2021 Peter Dimov
+ © 2020-2021 Richard Hodges (hodges.r@gmail.com)
+ © 2020-2022 Alexander Grund
+ © 2020-2022 Andrey Semashev
+ © 2020-2022 Antony Polukhin
+ © 2020-2022 Matt Borland
+ © 2020-2023 Peter Dimov
+ © 2021 Alan Freitas
+ © 2021 Alan de Freitas (alandefreitas@gmail.com)
+ © 2021 Andrey Semashev
+ © 2021 Antony Polukhin
+ © 2021 Berlin
+ © 2021 DMitry Arkhipov (grisumbras@gmail.com)
+ © 2021 Daniel Kruegler
+ © 2021 Daniel Steck
+ © 2021 Denis Mikhailov
+ © 2021 Dmitry Arkhipov (grisumbras@gmail.com)
+ © 2021 Germany
+ © 2021 Heiko Hund (heiko at openvpn dot net)
+ © 2021 Ion Gaztañaga
+ © 2021 Ion Gazta�aga
+ © 2021 Iskandarov Lev
+ © 2021 Ivan Matek
+ © 2021 John Maddock
+ © 2021 Klemens D. Morgenstern (klemens dot morgenstern at gmx dot net)
+ © 2021 Konstantin Ivlev
+ © 2021 Marshall Clow
+ © 2021 Matt Borland
+ © 2021 Nikita Kniazev
+ © 2021 Oracle and/or its affiliates
+ © 2021 Paul A. Bristow
+ © 2021 Peter Dimov
+ © 2021 Pranam Lashkari
+ © 2021 Prathamesh Tagore
+ © 2021 Rene Ferdinand Rivera Morell
+ © 2021 Richard Hodges (hodges.r@gmail.com)
+ © 2021 Scramjet911
+ © 2021 Tinko Bartels
+ © 2021 Victor Ananyev
+ © 2021-2022 Alexander Grund
+ © 2021-2022 Andrey Semashev
+ © 2021-2022 Christian Mazakas
+ © 2021-2022 Dmitry Arkhipov (grisumbras@gmail.com)
+ © 2022 Alan de Freitas
+ © 2022 Andrey Semashev
+ © 2022 Christian Mazakas
+ © 2022 Christopher Kormanyos
+ © 2022 Dmitry Arkhipov (grisumbras@yandex.ru)
+ © 2022 Dvir Yitzchaki
+ © 2022 Evan Lenz
+ © 2022 James Folberth
+ © 2022 Joaquín M López Muñoz
+ © 2022 Joaqu�n M Lopez Munoz
+ © 2022 John Maddock
+ © 2022 Khalil Estell
+ © 2022 Klemens Morgenstern
+ © 2022 Marco Langer
+ © 2022 Oracle and/or its affiliates
+ © 2022 René Ferdinand Rivera Morell
+ © 2022 Zhang Na
+ © 2022 niXman (github dot nixman at pm.me)
+ © 2023 Christian Mazakas
+ © 2023 Oracle and/or its affiliates
+ © Abel Sinkovics
+ © Adam Wulkiewicz
+ © Alain Miniussi
+ © Aleksey Gurtovoy
+ © Alexander Grund
+ © Alexander Nasonov
+ © Andreas Huber
+ © Andreas Huber Dönni
+ © Andrew Lumsdaine
+ © Andrey Semashev
+ © Andrii Sydorchuk
+ © Andrzej Krzemieński
+ © Andy Tompkins
+ © Anthony Williams
+ © Antony Polukhin
+ © Arkadiy Vertleyb
+ © Artyom Beilis
+ © Barend Gehrels
+ © Barrett Adair
+ © Beman Dawes
+ © Boost project contributors
+ © Boris Schaeling
+ © Brandon Kohn
+ © Bruno Lalande
+ © Bryce Lelbach
+ © Chris Kohlhoff
+ © Christian Henning
+ © Christophe Henry
+ © Christopher Kormanyos
+ © Chuck Allison
+ © Dan Marsden
+ © Dan Nuffer
+ © Daniel Frey
+ © Daniel James
+ © Daniel Walker
+ © Daniel Wallin
+ © Darin Adler
+ © Daryle Walker
+ © David Abrahams
+ © David Bellot
+ © Doug Gregor
+ © Douglas Gregor
+ © Edward Diener
+ © Emil Dotchevski
+ © Eric Friedman
+ © Eric Niebler
+ © Felipe Tanus
+ © Fernando Cacciola
+ © Frank Mori Hess
+ © Gary Powell
+ © Gennadiy Rozental
+ © Glen Joseph Fernandes
+ © Greg Colvin
+ © Guillaume Melquiond
+ © Hailin Jin
+ © Hans P. Dembinski
+ © Hartmut Kaiser
+ © Helge Bahmann
+ © Hervé Brönnimann
+ © Howard Hinnant
+ © Hubert Holin
+ © Ilya Sokolov
+ © Ion Gaztanaga
+ © Ion Gaztañaga
+ © Ion Gazta�aga
+ © Itay Maman
+ © Jaakko Järvi
+ © Jaakko J�rvi
+ © Jaako Järvi
+ © James E. King III
+ © Jan Gaspar
+ © Jeff Flinn
+ © Jeff Garland
+ © Jeffrey Lee Hellrung Jr.
+ © Jens Maurer
+ © Jeremiah Willcock
+ © Jeremy G. Siek
+ © Joachim Faulhaber
+ © Joaquín M López Muñoz
+ © Joaqu�n M Lopez Munoz
+ © Joel de Guzman
+ © Joerg Walter
+ © John Bandela
+ © John Fletcher
+ © John Maddock
+ © John R. Bandela
+ © Jonathan Turkanis
+ © Joseph Gauterin
+ © Jürgen Hunold
+ © K. Noel Belcourt
+ © Karsten Ahnert
+ © Kevlin Henney
+ © Klemens Morgenstern
+ © Krystian Stasiowski
+ © Kyle Lutz
+ © Lorenzo Caminiti
+ © Louis Dionne
+ © Lubomir Bourdev
+ © Lucanus Simonson
+ © Marcin Kalicinski
+ © Mario Mulansky
+ © Mark Rodgers
+ © Marshall Clow
+ © Mateusz Loskot
+ © Mathias Koch
+ © Matias Capeletto
+ © Matthias Schabel
+ © Matthias Troyer
+ © Menelaos Karavelas
+ © Merino Vidal
+ © Nathan Ridge
+ © Neil Groves
+ © Niall Douglas
+ © Nicolai Josuttis
+ © Oliver Kowalke
+ © Paul A. Bristow
+ © Paul Fultz II
+ © Paul Mensonides
+ © Paul Moore
+ © Pavol Droba
+ © Peder Holt
+ © Peter Dimov
+ © Pranam Lashkari
+ © Raffi Enficiaud
+ © Ralf Grosse-Kunstleve
+ © Renato Tegon Forti
+ © Rene Rivera
+ © René Ferdinand Rivera Morell
+ © Richard Hodges
+ © Robert Ramey
+ © Ron Garcia
+ © Ronald Garcia
+ © Samuel Krempp
+ © Sebastian Redl
+ © Stefan Seefeld
+ © Stephen Cleary
+ © Steven Ross
+ © Steven Watanabe
+ © Sylvain Pion
+ © T. Zachary Laine
+ © Thomas Heller
+ © Thomas Jarosch
+ © Thomas Witt
+ © Thorsten Ottosen
+ © Tim Blechmann
+ © Tobias Schwinger
+ © Vesa Karvonen
+ © Vicente J. Botet Escriba
+ © Vinnie Falco
+ © Vladimir Batov
+ © Vladimir Prus
+ © Xiaogang Zhang
+ © christopher Kormanyos
+ © various +

Boost Software License - Version 1.0 - August 17th, 2003

Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following:

@@ -2540,16 +2736,17 @@ compatible with a GPL license.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- © 2003 Bitstream, Inc.
- © 2006-2010 Google Corp.
- © 2009-2011 Understanding Limited
- © 2010-2011 Jakub Steiner
- © 2012-2018 Dave Gandy
- © 2013-2017 Google Inc.
- © Arjen Nienhuis
- © Khaled Hosny
- © Sebastian Kosch
-
+

+ © 2003 Bitstream, Inc.
+ © 2006-2010 Google Corp.
+ © 2009-2011 Understanding Limited
+ © 2010-2011 Jakub Steiner
+ © 2012-2018 Dave Gandy
+ © 2013-2017 Google Inc.
+ © Arjen Nienhuis
+ © Khaled Hosny
+ © Sebastian Kosch +

Permission is hereby granted, free of charge, to any person obtaining a copy of the fonts accompanying this license ("Fonts") and associated documentation files (the "Font Software"), to reproduce and distribute the Font Software, including without limitation the rights to use, copy, merge, publish, distribute, and/or sell copies of the Font Software, and to permit persons to whom the Font Software is furnished to do so, subject to the following conditions:

The above copyright and trademark notices and this permission notice shall be included in all copies of one or more of the Font Software typefaces.

@@ -2560,262 +2757,156 @@ compatible with a GPL license.

Except as contained in this notice, the names of Gnome, the Gnome Foundation, and Bitstream Inc., shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Font Software without prior written authorization from the Gnome Foundation or Bitstream Inc., respectively. For further information, contact: fonts at gnome dot org.

- © 1995-2017 Jean-loup Gailly
- © 1995-2017 Mark Adler
- © 2005-2011 David Schultz
- © 2006-2009 Graydon Hoare
- © 2009-2013 Mozilla Foundation
- © 2009-2016 compiler-builtins Developers
- © 2010-2011 Dmitry Vyukov
- © 2010-2020 The Rust Project Developers
- © 2012-2018 Free Software Foundation, Inc.
- © 2013 Koka El Kiwi
- © 2013-2014 The Algebra Developers
- © 2013-2018 The Gtk-rs Project Developers
- © 2013-2018 The Servo Project Developers
- © 2013-2019 Sébastien Crozet
- © 2014 Alex Crichton
- © 2014 Armin Ronacher
- © 2014 Benjamin Sago
- © 2014 Ning Sun
- © 2014 Paho Lurie-Gregg
- © 2014-2016 Simon Sapin
- © 2014-2017 Kang Seonghoon and contributors
- © 2014-2018 Jorge Aparicio
- © 2014-2020 Optimal Computing (NZ) Ltd
- © 2015 Alex Daniel Jones
- © 2015 Bartłomiej Kamiński
- © 2015 Brendan Zabarauskas
- © 2015 Brian Vincent
- © 2015 Connor Hilarides
- © 2015 Corey Richardson
- © 2015 Danny Guo
- © 2015 Dmitry Roschin
- © 2015 Gigih Aji Ibrahim
- © 2015 Johann Hofmann
- © 2015 John Nagle
- © 2015 Jordan Miner
- © 2015 Marvin Löbel
- © 2015 Milo Yip
- © 2015 Pyfisch
- © 2015 Sean McArthur
- © 2015 Steven Allen
- © 2015 THL A29 Limited, a Tencent company
- © 2015 The assert_cli Developers
- © 2015 The quick-error Developers
- © 2015 The rust-unreachable Developers
- © 2015 arcnmx
- © 2015 const-cstr developers
- © 2015 grabbag contributors
- © 2015 nwin
- © 2015 skdltmxn
- © 2015-2016 Kevin B. Knapp
- © 2015-2016 Peter Atashian
- © 2015-2016 Victor Brekenfeld
- © 2015-2016 clap-rs contributors
- © 2015-2017 Andrew Gallant
- © 2015-2017 Doug Tangren
- © 2015-2018 Guillaume Gomez
- © 2015-2018 winapi-rs developers
- © 2015-2020 Ashish Myles and contributors
- © 2015-2021 Ulrik Sverdrup (bluss)
- © 2016 A.J. Gardner
- © 2016 FullContact, Inc.
- © 2016 Itoa Developers
- © 2016 Jan Hudec
- © 2016 Junfeng Liu
- © 2016 Kathryn Long
- © 2016 Martin Geisler
- © 2016 Nika Layzell
- © 2016 Oleksii Rudenko
- © 2016 Remi Rampin and adler32-rs contributors
- © 2016 The multipart Crate Developers
- © 2016 Ticki
- © 2016 Titus Wormer
- © 2016 base-x contributors
- © 2016 bitbegin
- © 2016 lazy-static.rs Developers
- © 2016 oyvindln
- © 2016-2017 The Fuchsia Authors
- © 2016-2018 Nuxi
- © 2017 Aaron Power
- © 2017 Frommi
- © 2017 Jan Bujak
- © 2017 Nick Stevens
- © 2017 Redox OS Developers
- © 2017 Robert Grosse
- © 2017 Serde Developers
- © 2017 Tim Visée
- © 2017 proc-macro-nested contributors
- © 2017-2018 Amanieu d'Antras
- © 2017-2018 Jason Lingle
- © 2017-2018 Sergio Benitez
- © 2017-2019 The proptest developers
- © 2017-2020 Gilad Naaman
- © 2018 Dragoș Tiselice
- © 2018 R. Janis Goldschmidt
- © 2018 Sam Rijs, Alex Crichton and contributors
- © 2018 Syn Developers
- © 2018 The predicates-rs Project Developers
- © 2018 Ulf Adams
- © 2018-2021 Developers of the Rand project
- © 2019 Embark Studios
- © 2019 Hao Hou
- © 2019 Jacob Pratt
- © 2019 Peter Glotfelty
- © 2019-2020 CreepySkeleton
- © 2019-2020 Daniel Gee
- © 2020 Ralf Jung
- © 2021 DutchGhost
- © 2021 matrixmultiply authors
- © Aaron Trent
- © Alexander Huszagh
- © Alexis Beingessner
- © Andreas Longva
- © Bastian Köcher
- © Brook Heisler
- © Darin Morrison
- © David Tolnay
- © Jonas Schievink
- © Jonathan Reem
- © Josh Triplett
- © Michael Layzell
- © Ryan Scheel
- © Steven Fackler
- © Sun Microsystems, Inc.
- © Wadelma
- © Without Boats
-
+

+ © 1995-2017 Jean-loup Gailly
+ © 1995-2017 Mark Adler
+ © 2005-2011 David Schultz
+ © 2006-2009 Graydon Hoare
+ © 2009-2013 Mozilla Foundation
+ © 2009-2016 compiler-builtins Developers
+ © 2010-2011 Dmitry Vyukov
+ © 2010-2020 The Rust Project Developers
+ © 2012-2018 Free Software Foundation, Inc.
+ © 2013 Koka El Kiwi
+ © 2013-2014 The Algebra Developers
+ © 2013-2018 The Gtk-rs Project Developers
+ © 2013-2018 The Servo Project Developers
+ © 2013-2019 Sébastien Crozet
+ © 2014 Alex Crichton
+ © 2014 Armin Ronacher
+ © 2014 Benjamin Sago
+ © 2014 Ning Sun
+ © 2014 Paho Lurie-Gregg
+ © 2014-2016 Simon Sapin
+ © 2014-2017 Kang Seonghoon and contributors
+ © 2014-2018 Jorge Aparicio
+ © 2014-2020 Optimal Computing (NZ) Ltd
+ © 2015 Alex Daniel Jones
+ © 2015 Bartłomiej Kamiński
+ © 2015 Brendan Zabarauskas
+ © 2015 Brian Vincent
+ © 2015 Connor Hilarides
+ © 2015 Corey Richardson
+ © 2015 Danny Guo
+ © 2015 Dmitry Roschin
+ © 2015 Gigih Aji Ibrahim
+ © 2015 Johann Hofmann
+ © 2015 John Nagle
+ © 2015 Jordan Miner
+ © 2015 Marvin Löbel
+ © 2015 Milo Yip
+ © 2015 Pyfisch
+ © 2015 Sean McArthur
+ © 2015 Steven Allen
+ © 2015 THL A29 Limited, a Tencent company
+ © 2015 The assert_cli Developers
+ © 2015 The quick-error Developers
+ © 2015 The rust-unreachable Developers
+ © 2015 arcnmx
+ © 2015 const-cstr developers
+ © 2015 grabbag contributors
+ © 2015 nwin
+ © 2015 skdltmxn
+ © 2015-2016 Kevin B. Knapp
+ © 2015-2016 Peter Atashian
+ © 2015-2016 Victor Brekenfeld
+ © 2015-2016 clap-rs contributors
+ © 2015-2017 Andrew Gallant
+ © 2015-2017 Doug Tangren
+ © 2015-2018 Guillaume Gomez
+ © 2015-2018 winapi-rs developers
+ © 2015-2020 Ashish Myles and contributors
+ © 2015-2021 Ulrik Sverdrup (bluss)
+ © 2016 A.J. Gardner
+ © 2016 FullContact, Inc.
+ © 2016 Itoa Developers
+ © 2016 Jan Hudec
+ © 2016 Junfeng Liu
+ © 2016 Kathryn Long
+ © 2016 Martin Geisler
+ © 2016 Nika Layzell
+ © 2016 Oleksii Rudenko
+ © 2016 Remi Rampin and adler32-rs contributors
+ © 2016 The multipart Crate Developers
+ © 2016 Ticki
+ © 2016 Titus Wormer
+ © 2016 base-x contributors
+ © 2016 bitbegin
+ © 2016 lazy-static.rs Developers
+ © 2016 oyvindln
+ © 2016-2017 The Fuchsia Authors
+ © 2016-2018 Nuxi
+ © 2017 Aaron Power
+ © 2017 Frommi
+ © 2017 Jan Bujak
+ © 2017 Nick Stevens
+ © 2017 Redox OS Developers
+ © 2017 Robert Grosse
+ © 2017 Serde Developers
+ © 2017 Tim Visée
+ © 2017 proc-macro-nested contributors
+ © 2017-2018 Amanieu d'Antras
+ © 2017-2018 Jason Lingle
+ © 2017-2018 Sergio Benitez
+ © 2017-2019 The proptest developers
+ © 2017-2020 Gilad Naaman
+ © 2018 Dragoș Tiselice
+ © 2018 R. Janis Goldschmidt
+ © 2018 Sam Rijs, Alex Crichton and contributors
+ © 2018 Syn Developers
+ © 2018 The predicates-rs Project Developers
+ © 2018 Ulf Adams
+ © 2018-2021 Developers of the Rand project
+ © 2019 Embark Studios
+ © 2019 Hao Hou
+ © 2019 Jacob Pratt
+ © 2019 Peter Glotfelty
+ © 2019-2020 CreepySkeleton
+ © 2019-2020 Daniel Gee
+ © 2020 Ralf Jung
+ © 2021 DutchGhost
+ © 2021 matrixmultiply authors
+ © Aaron Trent
+ © Alexander Huszagh
+ © Alexis Beingessner
+ © Andreas Longva
+ © Bastian Köcher
+ © Brook Heisler
+ © Darin Morrison
+ © David Tolnay
+ © Jonas Schievink
+ © Jonathan Reem
+ © Josh Triplett
+ © Michael Layzell
+ © Ryan Scheel
+ © Steven Fackler
+ © Sun Microsystems, Inc.
+ © Wadelma
+ © Without Boats +

Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following:

The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- © Stefan Nilsson
-
-
-

Creative Commons Legal Code

-

Attribution 3.0 Unported

-

CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.

-

License

-

THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.

-

BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.

-

1. Definitions

-

a. "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License. b. "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License. c. "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership. d. "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License. e. "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast. f. "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work. g. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. h. "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images. i. "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium.

-

2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws.

-

3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:

-

a. to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections; b. to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified."; c. to Distribute and Publicly Perform the Work including as incorporated in Collections; and, d. to Distribute and Publicly Perform Adaptations. e. For the avoidance of doubt:

-

i. Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; ii. Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and, iii. Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License.

-

The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved.

-

4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:

-

a. You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(b), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(b), as requested. b. If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Section 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4 (b) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties. c. Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise.

-

5. Representations, Warranties and Disclaimer

-

UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.

-

6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

-

7. Termination

-

a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.

-

8. Miscellaneous

-

a. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. b. Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. c. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. e. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. f. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law.

-

Creative Commons Notice

-

Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor.

-

Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, Creative Commons does not authorize the use by either party of the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. For the avoidance of doubt, this trademark restriction does not form part of this License.

-

Creative Commons may be contacted at https://creativecommons.org/.

-
-
- © caniuse.com
-
+

+ © including, without limitation +

-

Creative Commons Attribution 4.0 International Public License

-

By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.

-

 

-

Section 1 -- Definitions.

-

a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.

-

b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.

-

c. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.

-

d. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.

-

e. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.

-

f. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.

-

g. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.

-

h. Licensor means the individual(s) or entity(ies) granting rights under this Public License.

-

i. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.

-

j. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.

-

k. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.

-

 

-

Section 2 -- Scope.

-

a. License grant.

-

1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:

-

a. reproduce and Share the Licensed Material, in whole or in part; and

-

b. produce, reproduce, and Share Adapted Material.

-

2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.

-

3. Term. The term of this Public License is specified in Section 6(a).

-

4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a) (4) never produces Adapted Material.

-

5. Downstream recipients.

-

a. Offer from the Licensor -- Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.

-

b. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.

-

6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).

-

b. Other rights.

-

1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.

-

2. Patent and trademark rights are not licensed under this Public License.

-

3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties.

-

 

-

Section 3 -- License Conditions.

-

Your exercise of the Licensed Rights is expressly made subject to the following conditions.

-

a. Attribution.

-

1. If You Share the Licensed Material (including in modified form), You must:

-

a. retain the following if it is supplied by the Licensor with the Licensed Material:

-

i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);

-

ii. a copyright notice;

-

iii. a notice that refers to this Public License;

-

iv. a notice that refers to the disclaimer of warranties;

-

v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;

-

b. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and

-

c. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.

-

2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.

-

3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.

-

4. If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License.

-

 

-

Section 4 -- Sui Generis Database Rights.

-

Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:

-

a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database;

-

b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and

-

c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.

-

For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.

-

 

-

Section 5 -- Disclaimer of Warranties and Limitation of Liability.

-

a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.

-

b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.

-

c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.

-

 

-

Section 6 -- Term and Termination.

-

a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.

-

b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:

-

1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or

-

2. upon express reinstatement by the Licensor.

-

For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.

-

c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.

-

d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.

-

 

-

Section 7 -- Other Terms and Conditions.

-

a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.

-

b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.

-

 

-

Section 8 -- Interpretation.

-

a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.

-

b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.

-

c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.

-

d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.

- © 2021 David Robillard
-
+

+ © 2021 David Robillard +

Creative Commons Attribution-ShareAlike 3.0 Unported ․ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. ․ License ․ THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. ․ BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. ․ 1. Definitions ․ a. "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License. ․ b. "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined below) for the purposes of this License. ․ c. "Creative Commons Compatible License" means a license that is listed at http://creativecommons.org/compatiblelicenses that has been approved by Creative Commons as being essentially equivalent to this License, including, at a minimum, because that license: (i) contains terms that have the same purpose, meaning and effect as the License Elements of this License; and, (ii) explicitly permits the relicensing of adaptations of works made available under that license under this License or a Creative Commons jurisdiction license with the same License Elements as this License. ․ d. "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership. ․ e. "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike. ․ f. "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License. ․ g. "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast. ․ h. "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work. ․ i. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. ․ j. "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images. ․ k. "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium. ․ 2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws. ․ 3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: ․ a. to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections; ․ b. to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified."; ․ c. to Distribute and Publicly Perform the Work including as incorporated in Collections; and, ․ d. to Distribute and Publicly Perform Adaptations. ․ e. For the avoidance of doubt: ․ i. Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; ․ ii. Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and, ․ iii. Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License. ․ The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved. ․ 4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: ․ a. You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(c), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(c), as requested. ․ b. You may Distribute or Publicly Perform an Adaptation only under the terms of: (i) this License; (ii) a later version of this License with the same License Elements as this License; (iii) a Creative Commons jurisdiction license (either this or a later license version) that contains the same License Elements as this License (e.g., Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible License. If you license the Adaptation under one of the licenses mentioned in (iv), you must comply with the terms of that license. If you license the Adaptation under the terms of any of the licenses mentioned in (i), (ii) or (iii) (the "Applicable License"), you must comply with the terms of the Applicable License generally and the following provisions: (I) You must include a copy of, or the URI for, the Applicable License with every copy of each Adaptation You Distribute or Publicly Perform; (II) You may not offer or impose any terms on the Adaptation that restrict the terms of the Applicable License or the ability of the recipient of the Adaptation to exercise the rights granted to that recipient under the terms of the Applicable License; (III) You must keep intact all notices that refer to the Applicable License and to the disclaimer of warranties with every copy of the Work as included in the Adaptation You Distribute or Publicly Perform; (IV) when You Distribute or Publicly Perform the Adaptation, You may not impose any effective technological measures on the Adaptation that restrict the ability of a recipient of the Adaptation from You to exercise the rights granted to that recipient under the terms of the Applicable License. This Section 4(b) applies to the Adaptation as incorporated in a Collection, but this does not require the Collection apart from the Adaptation itself to be made subject to the terms of the Applicable License. ․ c. If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Ssection 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties. ․ d. Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise. ․ 5. Representations, Warranties and Disclaimer ․ UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. ․ 6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. ․ 7. Termination ․ a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. ․ b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. ․ 8. Miscellaneous ․ a. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. ․ b. Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. ․ c. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. ․ d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. ․ e. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. ․ f. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law. ․ ․ Creative Commons Notice ․ Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. ․ Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, Creative Commons does not authorize the use by either party of the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. For the avoidance of doubt, this trademark restriction does not form part of the License. ․ Creative Commons may be contacted at http://creativecommons.org/.

- © Myles C. Maxfield
- © Todd Fahrner
-
+

+ © Myles C. Maxfield
+ © Todd Fahrner +

https://www.creativecommons.org/licenses/zero-waive/1.0/us/legalcode

Affirmation and Waiver

@@ -2825,478 +2916,330 @@ compatible with a GPL license.

The Affirmer understands and acknowledges that Creative Commons is not a party to the Waiver and has no duty or obligation with respect to the Waiver or use of the Work.

- © 2018 The Chromium Authors
+

+ © 2001-2010, i.e., " +

+
+
+

+ © 2000-2001 University of Notre Dame
+ © 2002-2003 Trustees of Indiana University +

+
+

Indiana University has the exclusive rights to license this product under the following license.

+

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

+

* All redistributions of source code must retain the above copyright notice, the list of authors in the original source code, this list of conditions and the disclaimer listed in this license;

+

* All redistributions in binary form must reproduce the above copyright notice, this list of conditions and the disclaimer listed in this license in the documentation and/or other materials provided with the distribution;

+

* Any documentation included with all redistributions must include the following acknowledgement:

+

"This product includes software developed at the University of Notre Dame and the Pervasive Technology Labs at Indiana University. For technical information contact Andrew Lumsdaine at the Pervasive Technology Labs at Indiana University. For administrative and license questions contact the Advanced Research and Technology Institute at 351 West 10th Street. Indianapolis, Indiana 46202, phone 317-278-4100, fax 317-274-5902."

+

Alternatively, this acknowledgement may appear in the software itself, and wherever such third-party acknowledgments normally appear.

+

* The name Indiana University, the University of Notre Dame or "Caramel" shall not be used to endorse or promote products derived from this software without prior written permission from Indiana University. For written permission, please contact Indiana University Advanced Research & Technology Institute.

+

* Products derived from this software may not be called "Caramel", nor may Indiana University, the University of Notre Dame or "Caramel" appear in their name, without prior written permission of Indiana University Advanced Research & Technology Institute.

+

Indiana University provides no reassurances that the source code provided does not infringe the patent or any other intellectual property rights of any other entity. Indiana University disclaims any liability to any recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise.

+

LICENSEE UNDERSTANDS THAT SOFTWARE IS PROVIDED "AS IS" FOR WHICH NO WARRANTIES AS TO CAPABILITIES OR ACCURACY ARE MADE. INDIANA UNIVERSITY GIVES NO WARRANTIES AND MAKES NO REPRESENTATION THAT SOFTWARE IS FREE OF INFRINGEMENT OF THIRD PARTY PATENT, COPYRIGHT, OR OTHER PROPRIETARY RIGHTS. INDIANA UNIVERSITY MAKES NO WARRANTIES THAT SOFTWARE IS FREE FROM "BUGS", "VIRUSES", "TROJAN HORSES", "TRAP DOORS", "WORMS", OR OTHER HARMFUL CODE. LICENSEE ASSUMES THE ENTIRE RISK AS TO THE PERFORMANCE OF SOFTWARE AND/OR ASSOCIATED MATERIALS, AND TO THE PERFORMANCE AND VALIDITY OF INFORMATION GENERATED USING SOFTWARE.

+
+
+

+ © 2018 The Chromium Authors +

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

- © 2002-2006 CrystalClear Software, Inc
-
+

+ © 2002-2006 CrystalClear Software, Inc +

Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. CrystalClear Software makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.

- © 2006-2007 Behdad Esfahbod
-
+

+ © 2006-2007 Behdad Esfahbod +

Permission to use, copy, modify, distribute, and sell this example for any purpose is hereby granted without fee. It is provided "as is" without express or implied warranty.

- © 1995-2017 Jean-loup Gailly
- © 1995-2017 Mark Adler
- © 2003-2008 Christopher Schmidt <crschmidt@crschmidt.net>
- © 2005-2008 Uldis Bojars <uldis.bojars@deri.org>
- © 2005-2011 David Schultz
- © 2006-2009 Graydon Hoare
- © 2007-2008 Sergio Fernández <sergio.fernandez@fundacionctic.org>
- © 2007-2019, Diego Perini (http:www.iport.it/)
- © 2008-2011, Pivotal Labs
- © 2008-2014, David Robillard <d@drobilla.net>
- © 2009, Thomas Robinson <280north.com>
- © 2009-2013 Mozilla Foundation
- © 2009-2014, TJ Holowaychuk <tj@vision-media.ca>
- © 2009-2016 compiler-builtins Developers
- © 2009-2017, Kristopher Michael Kowal.
- © 2010, 2013, James Halliday (mail@substack.net)
- © 2010, Benjamin Thomas, Robert Kieffer
- © 2010, James Halliday (mail@substack.net)
- © 2010, James Halliday (mail@substack.net); Modified work Copyright 2014, Contributors (ben@npmjs.com)
- © 2010, Linden Research, Inc.
- © 2010, Sencha Inc.
- © 2010-2011 Dmitry Vyukov
- © 2010-2016, Charlie Robbins, Jarrett Cruger & the Contributors.
- © 2010-2018, Caolan McMahon
- © 2010-2019, Juriy "kangax" Zaytsev
- © 2010-2020 The Rust Project Developers
- © 2011
- © 2011, Alexander Shtuchkin
- © 2011, Debuggable Limited <felix@debuggable.com>
- © 2011, Einar Otto Stangvik <einaros@gmail.com>
- © 2011, Jimmy Cuadra
- © 2011, LearnBoost
- © 2011, Roly Fentanes
- © 2011, TJ Holowaychuk
- © 2011, Troy Goode <troygoode@gmail.com>
- © 2011, VMware, Inc.
- © 2011-2014, 2017, TJ Holowaychuk <tj@vision-media.ca>
- © 2011-2015, Vitaly Puzrin
- © 2011-2016, Heather Arthur <fayearthur@gmail.com>
- © 2011-2017, JP Richardson
- © 2011-2017, whitequark <whitequark@whitequark.org>
- © 2012, 2013, James Halliday
- © 2012, 2013, TJ Holowaychuk
- © 2012, 2013, Thorsten Lorenz <thlorenz@gmx.de>
- © 2012, Ben Ripkens http:bripkens.de
- © 2012, Charlie Robbins
- © 2012, Felix Geisendörfer (felix@debuggable.com) and contributors
- © 2012, Heather Arthur
- © 2012, Irakli Gozalishvili
- © 2012, James Halliday <mail@substack.net>
- © 2012, Joshua Bell
- © 2012, TJ Holowaychuk
- © 2012, Tobias Koppers
- © 2012-2014, Federico Romero
- © 2012-2014, Isaac Z. Schlueter
- © 2012-2014, James Halliday <mail@substack.net>, 2009, Thomas Robinson <280north.com>
- © 2012-2014, Raynos.
- © 2012-2014, Roman Shtylman <shtylman@gmail.com>
- © 2012-2014, TJ Holowaychuk <tj@vision-media.ca>
- © 2012-2015, JP Richardson <jprichardson@gmail.com>
- © 2012-2015, Kit Cambridge.
- © 2012-2015, Thorsten Lorenz
- © 2012-2016, Kir Belevich
- © 2012-2016, Mariusz Nowak
- © 2012-2017, Ingvar Stepanyan
- © 2012-2018 Free Software Foundation, Inc.
- © 2012-2019, Paul Miller (https:paulmillr.com), Elan Shanker
- © 2012-2019, Phil Booth
- © 2012-2019, Thorsten Lorenz, Paul Miller (https:paulmillr.com)
- © 2012-2020, various contributors (see AUTHORS)
- © 2013
- © 2013 Koka El Kiwi
- © 2013, -present, Facebook, Inc.
- © 2013, 2014, Forbes Lindesay
- © 2013, 2014, Jonathan Ong <me@jongleberry.com>
- © 2013, 2014, Roman Shtylman <shtylman+expressjs@gmail.com>
- © 2013, 2017, Andrey Sitnik <andrey@sitnik.ru>
- © 2013, Chris Dickinson <chris@neversaw.us>
- © 2013, Dominic Tarr
- © 2013, Dulin Marat
- © 2013, Jake Luer <jake@alogicalparadox.com> (http:alogicalparadox.com)
- © 2013, James Halliday
- © 2013, Jonathan Ong <me@jongleberry.com>
- © 2013, José
- © 2013, Julian Gruber <julian@juliangruber.com>
- © 2013, Kael Zhang <i@kael.me>, contributors
- © 2013, Max Ogden
- © 2013, Mikola Lysenko
- © 2013, Roman Shtylman <shtylman@gmail.com>
- © 2013, Ryan Day
- © 2013, Thiago de Arruda
- © 2013, Thorsten Lorenz.
- © 2013, Tim Perry
- © 2013-2014 The Algebra Developers
- © 2013-2015, Aria Minaei
- © 2013-2015, Benjamin Tan.
- © 2013-2016, 2018, Mathias Buus
- © 2013-2017, Jared Hanson
- © 2013-2017, Mariusz Nowak (www.medikoo.com)
- © 2013-2018 The Gtk-rs Project Developers
- © 2013-2018 The Servo Project Developers
- © 2013-2018, Petka Antonov
- © 2013-2018, Simon Lydell
- © 2013-2019 Sébastien Crozet
- © 2013-2019, Ivan Nikulin (ifaaan@gmail.com, https:github.com/inikulin)
- © 2013-2020, Jordan Harband
- © 2014 Alex Crichton
- © 2014 Armin Ronacher
- © 2014 Benjamin Sago
- © 2014 Ning Sun
- © 2014 Paho Lurie-Gregg
- © 2014, -present Nicolò Ribaudo and other contributors
- © 2014, -present Oleg Isonen (Slobodskoi) & contributors
- © 2014, -present Oleg Slobodskoi
- © 2014, -present Sebastian McKenzie and other contributors
- © 2014, -present, Facebook, Inc.
- © 2014, -present, Jon Schlinkert.
- © 2014, 2015, Daniel Cousens
- © 2014, 2015, Devon Govett <devongovett@gmail.com>
- © 2014, 2015, Douglas Christopher Wilson
- © 2014, 2015, Douglas Christopher Wilson <doug@somethingdoug.com>
- © 2014, 2017, Maxime Thirouin
- © 2014, Aleksandr Tsertkov <tsertkov@gmail.com>
- © 2014, Andrey Sitnik <andrey@sitnik.ru> and other contributors
- © 2014, Arnout Kazemier
- © 2014, Blake Embrey (hello@blakeembrey.com)
- © 2014, Call-Em-All
- © 2014, Component contributors <dev@component.io>
- © 2014, Contributors (ben@npmjs.com)
- © 2014, Dave Justice
- © 2014, Jameson Little
- © 2014, Jeremiah Senkpiel <fishrock123@rocketmail.com>
- © 2014, Jonathan Ong <me@jongleberry.com>
- © 2014, Jonathan Ong me@jongleberry.com
- © 2014, Maxime Thirouin & Ian Storm Taylor
- © 2014, Nadav Ivgi
- © 2014, Nathan Rajlich <nathan@tootallnate.net>
- © 2014, PostCSS
- © 2014, Robert Kieffer
- © 2014, Sébastien Balayn
- © 2014, TJ Holowaychuk &lt;tj@vision-media.ca&gt;
- © 2014, The cheeriojs contributors
- © 2014, Yehuda Katz, Tom Dale, Stefan Penner and contributors
- © 2014, –present Olivier Lalonde <olalonde@gmail.com>, James Talmage <james@talmage.io>, Ruben Verborgh
- © 2014-2016 Simon Sapin
- © 2014-2016, Douglas Christopher Wilson
- © 2014-2016, GitHub, Inc.
- © 2014-2017 Kang Seonghoon and contributors
- © 2014-2017, Calvin Metcalf & contributors
- © 2014-2017, Calvin Metcalf, Fedor Indutny & contributors
- © 2014-2017, Douglas Christopher Wilson
- © 2014-2017, Douglas Christopher Wilson <doug@somethingdoug.com>
- © 2014-2017, Jon Schlinkert
- © 2014-2017, Vitaly Puzrin and Andrei Tuputcyn
- © 2014-2017, browserify-aes contributors
- © 2014-2017, createECDH contributors
- © 2014-2018 Jorge Aparicio
- © 2014-2018, Jon Schlinkert.
- © 2014-2019, Angelos Pikoulas (agelos.pikoulas@gmail.com)
- © 2014-2019, Luís Couto <hello@luiscouto.pt>
- © 2014-2020 Optimal Computing (NZ) Ltd
- © 2014-2020, Ionică Bizău <bizauionica@gmail.com> (https:ionicabizau.net)
- © 2014-2020, Simon Lydell
- © 2014-2020, Teambition
- © 2014-2021, Denis Pushkarev
- © 2015 Alex Daniel Jones
- © 2015 Bartłomiej Kamiński
- © 2015 Brendan Zabarauskas
- © 2015 Brian Vincent
- © 2015 Connor Hilarides
- © 2015 Corey Richardson
- © 2015 Danny Guo
- © 2015 Dmitry Roschin
- © 2015 Gigih Aji Ibrahim
- © 2015 Johann Hofmann
- © 2015 John Nagle
- © 2015 Jordan Miner
- © 2015 Marvin Löbel
- © 2015 Milo Yip
- © 2015 Pyfisch
- © 2015 Sean McArthur
- © 2015 Steven Allen
- © 2015 THL A29 Limited, a Tencent company
- © 2015 The assert_cli Developers
- © 2015 The quick-error Developers
- © 2015 The rust-unreachable Developers
- © 2015 arcnmx
- © 2015 const-cstr developers
- © 2015 grabbag contributors
- © 2015 nwin
- © 2015 skdltmxn
- © 2015, -present Sergey Berezhnoy <veged@ya.ru>
- © 2015, -present, Brian Woodward.
- © 2015, -present, Jon Schlinkert.
- © 2015, 2016, Douglas Christopher Wilson <doug@somethingdoug.com
- © 2015, 2016, John Hiesey
- © 2015, 2018, Bogdan Chadkin <trysound@yandex.ru>
- © 2015, 2018, Rich Harris
- © 2015, Andreas Lubbe
- © 2015, Andres Suarez <zertosh@gmail.com>
- © 2015, Ben Mosher
- © 2015, Brian Donovan
- © 2015, Christoph Hermann
- © 2015, David Clark
- © 2015, Desmond Brand (dmnd@desmondbrand.com)
- © 2015, Dmitry Ivanov
- © 2015, Douglas Christopher Wilson <doug@somethingdoug.com>
- © 2015, JD Ballard
- © 2015, Jason Quense
- © 2015, Javier Blanco
- © 2015, Jed Watson <jed.watson@me.com>
- © 2015, Joris van der Wel
- © 2015, Keyan Zhang
- © 2015, Kyle E. Mitchell & other authors listed in AUTHORS
- © 2015, Luis Rudge <luis@luisrudge.net>
- © 2015, Maksim Koretskiy <mr.green.tv@gmail.com>
- © 2015, Mark Dalgleish <mark.john.dalgleish@gmail.com>
- © 2015, Matteo Collina
- © 2015, Nikita Gusakov
- © 2015, Roy Riojas
- © 2015, Steven Chim
- © 2015, Tiancheng "Timothy" Gu
- © 2015, Unshift.io, Arnout Kazemier, the Contributors.
- © 2015, xdf
- © 2015-2016 Kevin B. Knapp
- © 2015-2016 Peter Atashian
- © 2015-2016 Victor Brekenfeld
- © 2015-2016 clap-rs contributors
- © 2015-2017 Andrew Gallant
- © 2015-2017 Doug Tangren
- © 2015-2017, Douglas Christopher Wilson <doug@somethingdoug.com>
- © 2015-2018 Guillaume Gomez
- © 2015-2018 winapi-rs developers
- © 2015-2018, Thomas Watson Steen
- © 2015-2020 Ashish Myles and contributors
- © 2015-2021 Ulrik Sverdrup (bluss)
- © 2015-2021, Evgeny Poberezkin
- © 2016 A.J. Gardner
- © 2016 FullContact, Inc.
- © 2016 Itoa Developers
- © 2016 Jan Hudec
- © 2016 Junfeng Liu
- © 2016 Kathryn Long
- © 2016 Martin Geisler
- © 2016 Nika Layzell
- © 2016 Oleksii Rudenko
- © 2016 Remi Rampin and adler32-rs contributors
- © 2016 The multipart Crate Developers
- © 2016 Ticki
- © 2016 Titus Wormer
- © 2016 base-x contributors
- © 2016 bitbegin
- © 2016 lazy-static.rs Developers
- © 2016 oyvindln
- © 2016, -present, Jon Schlinkert.
- © 2016, 2017, crypto-browserify
- © 2016, 2018, Linus Unnebäck
- © 2016, 2019, Ben Holloway
- © 2016, Airbnb
- © 2016, Alex Indigo
- © 2016, Christian Speckner <cnspeckn@googlemail.com>
- © 2016, Dmitry Semigradsky <semigradskyd@gmail.com>
- © 2016, Douglas Christopher Wilson doug@somethingdoug.com
- © 2016, Jonas Kello
- © 2016, Joshua Holbrook
- © 2016, Justineo <justice360@gmail.com>
- © 2016, Kirill Fomichev
- © 2016, Matthias Müller <MattDiMu@users.noreply.github.com>
- © 2016, Nuno Rodrigues
- © 2016, Titus Wormer <tituswormer@gmail.com>
- © 2016-2017 The Fuchsia Authors
- © 2016-2018 Nuxi
- © 2016-2018, Ari Porad
- © 2016-2019, Roman Dvornov
- © 2017 Aaron Power
- © 2017 Frommi
- © 2017 Jan Bujak
- © 2017 Nick Stevens
- © 2017 Redox OS Developers
- © 2017 Robert Grosse
- © 2017 Serde Developers
- © 2017 Tim Visée
- © 2017 proc-macro-nested contributors
- © 2017, -present, Jon Schlinkert.
- © 2017, 2018, Fredrik Nicol
- © 2017, AUTHOR_NAME <AUTHOR_EMAIL>
- © 2017, Calvin Metcalf
- © 2017, Cameron Lakenen
- © 2017, CoderPuppy
- © 2017, ECMAScript Shims
- © 2017, Eric Wendelin and other contributors
- © 2017, Evgeny Poberezkin
- © 2017, Fedor Indutny
- © 2017, Ilya Kantor
- © 2017, JS Foundation
- © 2017, JakubPawlowicz.com
- © 2017, Kent C. Dodds
- © 2017, Khaled Al-Ansari
- © 2017, Klaus Meinhardt
- © 2017, Lupo Montero lupomontero@gmail.com
- © 2017, Mauro Bringolf
- © 2017, Michel Weststrate
- © 2017, Mikael Brevik
- © 2017, Ryan Zimmerman <opensrc@ryanzim.com>
- © 2017, Samuel Reed <samuel.trace.reed@gmail.com>
- © 2017, Sergey Rubanov (https:github.com/chicoxyzzy)
- © 2017, Smooth Code
- © 2017, crypto-browserify contributors
- © 2017, pigcan
- © 2017, webpack-contrib
- © 2017-2018 Amanieu d'Antras
- © 2017-2018 Jason Lingle
- © 2017-2018 Sergio Benitez
- © 2017-2019 The proptest developers
- © 2017-2020 Gilad Naaman
- © 2018 Dragoș Tiselice
- © 2018 R. Janis Goldschmidt
- © 2018 Reizner Evgeniy
- © 2018 Sam Rijs, Alex Crichton and contributors
- © 2018 Syn Developers
- © 2018 The predicates-rs Project Developers
- © 2018 Ulf Adams
- © 2018, Google LLC
- © 2018, Jonathan Kim
- © 2018, Logan Smyth <loganfsmyth@gmail.com>
- © 2018, Made With MOXY Lda <hello@moxy.studio>
- © 2018, Michael Mclaughlin
- © 2018, Michael Pratt
- © 2018, Nik Coughlin
- © 2018, Nikita Skovoroda <chalkerx@gmail.com>
- © 2018, Sven Sauleau <sven@sauleau.com>
- © 2018, Terkel Gjervig Nielsen
- © 2018, Tobias Reich
- © 2018, Toru Nagashima
- © 2018-2020, Guy Bedford
- © 2018-2021 Developers of the Rand project
- © 2019 Embark Studios
- © 2019 Hao Hou
- © 2019 Jacob Pratt
- © 2019 Peter Glotfelty
- © 2019, 2020, CFWare, LLC
- © 2019, Alexander Reardon
- © 2019, Andres Suarez
- © 2019, Mario Beltrán Alarcón
- © 2019, Richie Bendall
- © 2019, RollupJS Plugin Contributors (https:github.com/rollup/plugins/graphs/contributors)
- © 2019, Simen Bekkhus
- © 2019, Sindre Sorhus <sindresorhus@gmail.com> (https:sindresorhus.com), Paul Miller (https:paulmillr.com)
- © 2019, TypeScript ESLint and other contributors
- © 2019, ZHAO Jinxiang
- © 2019-2020 CreepySkeleton
- © 2019-2020 Daniel Gee
- © 2020 Ralf Jung
- © 2020, Babel
- © 2020, Giorgio Polvara
- © 2020, Nicolò Ribaudo and other contributors
- © 2020, Robin E. R. Davies.
- © 2020, TypeStrong
- © 2021 DutchGhost
- © 2021 matrixmultiply authors
- © 2021, Robin E. R. Davies
- © <year> <copyright holders>
- © Aaron Trent
- © Alexander Huszagh
- © Alexis Beingessner
- © Andreas Longva
- © Andrew Powell <andrew@shellscape.org>
- © Bastian Köcher
- © Ben Briggs <beneb.info@gmail.com> (http:beneb.info)
- © Ben Drucker <bvdrucker@gmail.com> (bendrucker.me)
- © Bogdan Chadkin <trysound@yandex.ru>
- © Brook Heisler
- © Caolan McMahon / 2014-2018, Suguru Motegi
- © Chad Walker
- © 2014-2016 Sebastian McKenzie <sebmck@gmail.com>
- © Joyent, Inc. and other Node contributors.
- © Darin Morrison
- © David Tolnay
- © Denis Malinochkin
- © Elan Shanker and Node.js contributors.
- © Emotion team and other contributors
- © EventSource GitHub organisation
- © Facebook, Inc. and its affiliates.
- © Fedor Indutny, 2015.
- © Feross Aboukhadijeh
- © Feross Aboukhadijeh, and other contributors.
- © George Zahariev
- © JS Foundation and other contributors
- © James Halliday
- © James Halliday (mail@substack.net) and Isaac Z. Schlueter (i@izs.me)
- © James Talmage <james@talmage.io> (github.com/jamestalmage)
- © Jonas Schievink
- © Jonathan Reem
- © Josh Triplett
- © Joyent, Inc. and other Node contributors.
- © Kevin Martensson <kevinmartensson@gmail.com> (github.com/kevva)
- © Kevin Mårtensson <kevinmartensson@gmail.com> (github.com/kevva)
- © Louis-Dominique Dubeau and contributors to xmlchars
- © Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
- © Michael Layzell
- © Microsoft Corporation.
- © Node.js contributors.
- © Node.js contributors. / Joyent, Inc. and other Node contributors. / Isaac Z. Schlueter and Contributors
- © OpenJS Foundation and other contributors <https:openjsf.org/> / Jeremy Ashkenas
- © Ryan Scheel
- © Sam Verschueren <sam.verschueren@gmail.com> (github.com/SamVerschueren)
- © Sindre Sorhus <sindresorhus@gmail.com> (https:/sindresorhus.com)
- © Sindre Sorhus <sindresorhus@gmail.com> (https:sindresorhus.com)
- © Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
- © Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com) / Ben Lesh <ben@benlesh.com>
- © Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com), James Kyle <me@thejameskyle.com> (thejameskyle.com)
- © Stephen Sugden <me@stephensugden.com> (stephensugden.com)
- © Steven Fackler
- © Steven Vachon <contact@svachon.com> (svachon.com)
- © Sun Microsystems, Inc.
- © Tobias Koppers @sokra
- © Vsevolod Strukchinsky <floatdrop@gmail.com> (github.com/floatdrop)
- © Wadelma
- © Without Boats
- © jQuery Foundation and other contributors <https:jquery.org/> / Jeremy Ashkenas
-
+

+ © 1995-2017 Jean-loup Gailly
+ © 1995-2017 Mark Adler
+ © 2003-2008 Christopher Schmidt <crschmidt@crschmidt.net>
+ © 2005-2008 Uldis Bojars <uldis.bojars@deri.org>
+ © 2005-2011 David Schultz
+ © 2006-2009 Graydon Hoare
+ © 2007-2008 Sergio Fernández <sergio.fernandez@fundacionctic.org>
+ © 2007-2012, David Robillard <http://drobilla.net>
+ © 2008, 2009, Bjoern Hoehrmann <bjoern@hoehrmann.de>
+ © 2009, Thomas Robinson <280north.com>
+ © 2009-2011, Mozilla Foundation and contributors
+ © 2009-2013 Mozilla Foundation
+ © 2009-2016 compiler-builtins Developers
+ © 2010-2011 Dmitry Vyukov
+ © 2010-2020 The Rust Project Developers
+ © 2011-2015, Vitaly Puzrin
+ © 2011-2016, Heather Arthur <fayearthur@gmail.com>
+ © 2012, 2013, Thorsten Lorenz <thlorenz@gmx.de>
+ © 2012, James Halliday <mail@substack.net>
+ © 2012, TJ Holowaychuk <tj@vision-media.ca>
+ © 2012-2014, Raynos.
+ © 2012-2017, Ingvar Stepanyan
+ © 2012-2018 Free Software Foundation, Inc.
+ © 2012-2022, various contributors (see AUTHORS)
+ © 2012-2025, Sebastien Rombauts (sebastien.rombauts@gmail.com)
+ © 2013 Koka El Kiwi
+ © 2013, 2017, Andrey Sitnik <andrey@sitnik.ru>
+ © 2013, Dominic Tarr
+ © 2013, James Halliday <mail@substack.net>
+ © 2013, Julian Gruber <julian@juliangruber.com>
+ © 2013, Kael Zhang <i@kael.me>, contributors
+ © 2013, Thorsten Lorenz.
+ © 2013-2014 The Algebra Developers
+ © 2013-2017, 2019
+ © 2013-2018 The Gtk-rs Project Developers
+ © 2013-2018 The Servo Project Developers
+ © 2013-2019 Sébastien Crozet
+ © 2013-2019, Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin)
+ © 2014 Alex Crichton
+ © 2014 Armin Ronacher
+ © 2014 Benjamin Sago
+ © 2014 Ning Sun
+ © 2014 Paho Lurie-Gregg
+ © 2014, 2022, Andrey Sitnik <andrey@sitnik.ru> and other contributors
+ © 2014, Blake Embrey (hello@blakeembrey.com)
+ © 2014, Call-Em-All
+ © 2014, Dave Justice
+ © 2014, Peter Thorson.
+ © 2014, Stefan Thomas
+ © 2014-2016 Simon Sapin
+ © 2014-2016, Jon Schlinkert
+ © 2014-2017 Kang Seonghoon and contributors
+ © 2014-2017, 2020, 2021, 2023, Titus Wormer <tituswormer@gmail.com>
+ © 2014-2017, Jon Schlinkert.
+ © 2014-2017, TJ Holowaychuk <tj@vision-media.ca>
+ © 2014-2018 Jorge Aparicio
+ © 2014-2018, Simon Lydell
+ © 2014-2020 Optimal Computing (NZ) Ltd
+ © 2014-2020, Teambition
+ © 2015 Alex Daniel Jones
+ © 2015 Bartłomiej Kamiński
+ © 2015 Brendan Zabarauskas
+ © 2015 Brian Vincent
+ © 2015 Connor Hilarides
+ © 2015 Corey Richardson
+ © 2015 Danny Guo
+ © 2015 Dmitry Roschin
+ © 2015 Gigih Aji Ibrahim
+ © 2015 Johann Hofmann
+ © 2015 John Nagle
+ © 2015 Jordan Miner
+ © 2015 Marvin Löbel
+ © 2015 Milo Yip
+ © 2015 Pyfisch
+ © 2015 Sean McArthur
+ © 2015 Steven Allen
+ © 2015 THL A29 Limited, a Tencent company
+ © 2015 The assert_cli Developers
+ © 2015 The quick-error Developers
+ © 2015 The rust-unreachable Developers
+ © 2015 arcnmx
+ © 2015 const-cstr developers
+ © 2015 grabbag contributors
+ © 2015 nwin
+ © 2015 skdltmxn
+ © 2015, Andres Suarez <zertosh@gmail.com>
+ © 2015, Brian Donovan
+ © 2015, David Clark
+ © 2015, Dmitry Ivanov
+ © 2015, Eugene Sharygin
+ © 2015, JD Ballard
+ © 2015, Jason Quense
+ © 2015, Javier Blanco
+ © 2015, Mapbox
+ © 2015, Matteo Collina <matteo.collina@gmail.com>
+ © 2015, Microsoft Corporation.
+ © 2015, Rich Harris
+ © 2015, Shibao HONG (shibaohong@outlook.com)
+ © 2015, Titus Wormer <tituswormer@gmail.com>
+ © 2015, Vitaly Puzrin, Alex Kocharin.
+ © 2015-2016 Kevin B. Knapp
+ © 2015-2016 Peter Atashian
+ © 2015-2016 Victor Brekenfeld
+ © 2015-2016 clap-rs contributors
+ © 2015-2017 Andrew Gallant
+ © 2015-2017 Doug Tangren
+ © 2015-2017, Evgeny Poberezkin
+ © 2015-2018 Guillaume Gomez
+ © 2015-2018 winapi-rs developers
+ © 2015-2020 Ashish Myles and contributors
+ © 2015-2020, [these people](https://github.com/Rich-Harris/estree-walker/graphs/contributors)
+ © 2015-2021 Ulrik Sverdrup (bluss)
+ © 2015-2025, Sebastien Rombauts (sebastien.rombauts@gmail.com)
+ © 2016 A.J. Gardner
+ © 2016 FullContact, Inc.
+ © 2016 Itoa Developers
+ © 2016 Jan Hudec
+ © 2016 Junfeng Liu
+ © 2016 Kathryn Long
+ © 2016 Martin Geisler
+ © 2016 Nika Layzell
+ © 2016 Oleksii Rudenko
+ © 2016 Remi Rampin and adler32-rs contributors
+ © 2016 The multipart Crate Developers
+ © 2016 Ticki
+ © 2016 Titus Wormer
+ © 2016 base-x contributors
+ © 2016 bitbegin
+ © 2016 lazy-static.rs Developers
+ © 2016 oyvindln
+ © 2016, Paul Dreik (github@pauldreik.se)
+ © 2016, rhysd
+ © 2016, tomykaira
+ © 2016-2017 The Fuchsia Authors
+ © 2016-2018 Nuxi
+ © 2016-2020, Sebastien Rombauts (sebastien.rombauts@gmail.com)
+ © 2016-2025, Sebastien Rombauts (sebastien.rombauts@gmail.com)
+ © 2017 Aaron Power
+ © 2017 Frommi
+ © 2017 Jan Bujak
+ © 2017 Nick Stevens
+ © 2017 Redox OS Developers
+ © 2017 Robert Grosse
+ © 2017 Serde Developers
+ © 2017 Tim Visée
+ © 2017 proc-macro-nested contributors
+ © 2017, 2018, Fredrik Nicol
+ © 2017, 2020, Menglin "Mark" Xu <mark@remarkablemark.org>
+ © 2017, Evgeny Poberezkin
+ © 2017, Sergey Rubanov (https://github.com/chicoxyzzy)
+ © 2017, Smooth Code
+ © 2017, Titus Wormer <tituswormer@gmail.com>
+ © 2017, Victor Felder <victor@draft.li>
+ © 2017-2018 Amanieu d'Antras
+ © 2017-2018 Jason Lingle
+ © 2017-2018 Sergio Benitez
+ © 2017-2019 The proptest developers
+ © 2017-2020 Gilad Naaman
+ © 2018 Dragoș Tiselice
+ © 2018 R. Janis Goldschmidt
+ © 2018 Reizner Evgeniy
+ © 2018 Sam Rijs, Alex Crichton and contributors
+ © 2018 Syn Developers
+ © 2018 The predicates-rs Project Developers
+ © 2018 Ulf Adams
+ © 2018, Logan Smyth <loganfsmyth@gmail.com>
+ © 2018, Made With MOXY Lda <hello@moxy.studio>
+ © 2018, Toru Nagashima
+ © 2018-2021 Developers of the Rand project
+ © 2018-2021, Josh Junon
+ © 2019 Embark Studios
+ © 2019 Hao Hou
+ © 2019 Jacob Pratt
+ © 2019 Peter Glotfelty
+ © 2019, 2021, typescript-eslint and other contributors
+ © 2019, 2022, Justin Ridgewell <jridgewell@google.com>
+ © 2019, Alexander Reardon
+ © 2019, Jared Lunde
+ © 2019, Maximilian Bachmann (contact@maxbachmann.de)
+ © 2019, Maximilian Bachmann (github@maxbachmann)
+ © 2019, RollupJS Plugin Contributors (https://github.com/rollup/plugins/graphs/contributors)
+ © 2019-2020 CreepySkeleton
+ © 2019-2020 Daniel Gee
+ © 2019-2025, Sebastien Rombauts (sebastien.rombauts@gmail.com)
+ © 2020 Ralf Jung
+ © 2020, Christian Murphy
+ © 2020, Filament (Anomalous Technologies Limited)
+ © 2020, GitHub user u/garronej
+ © 2020, Kelvin Hammond (hammond.kelvin@gmail.com)
+ © 2020, Kent C. Dodds
+ © 2020-2025, Sebastien Rombauts (sebastien.rombauts@gmail.com)
+ © 2021 DutchGhost
+ © 2021 matrixmultiply authors
+ © 2021, Rongjian Zhang
+ © 2022, Inspect JS
+ © 2022, Robin E. R. Davies
+ © 2022-2026, Robin Davies
+ © 2023, Abdullah Atta
+ © 2024, Madeline Gurriarán
+ © Aaron Trent
+ © Alexander Huszagh
+ © Alexis Beingessner
+ © Andreas Longva
+ © Arnaud Barré (https://github.com/ArnaudBarre)
+ © Bastian Köcher
+ © Brook Heisler
+ © Darin Morrison
+ © David Tolnay
+ © Denis Malinochkin
+ © Emotion team and other contributors
+ © Espen Hovlandsdal
+ © Facebook, Inc. and its affiliates.
+ © Feross Aboukhadijeh
+ © Gabriel Hernandez
+ © George Zahariev
+ © Jeremy Ashkenas
+ © Jonas Schievink
+ © Jonathan Reem
+ © Jordan Harband and contributors
+ © Josh Triplett
+ © Kevin Mårtensson <kevinmartensson@gmail.com> (github.com/kevva)
+ © Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
+ © Meta Platforms, Inc. and affiliates.
+ © Michael Layzell
+ © OpenJS Foundation and other contributors <https://openjsf.org/>
+ © OpenJS Foundation and other contributors, <www.openjsf.org>
+ © Robin E.R Davies
+ © Robin E.R. Davies
+ © Roy Riojas & Jared Wray
+ © Roy Riojas and Jared Wray
+ © Ryan Scheel
+ © Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
+ © Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+ © Steven Fackler
+ © Sun Microsystems, Inc.
+ © Wadelma
+ © Without Boats +

-

This is free software, licensed under:

-

The MIT (X11) License

-

The MIT License

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- © 2008 Tim Toolan
-
+

+ © 2008 Tim Toolan +

Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty.

- © 1994 Hewlett-Packard Company
- © 1996 Silicon Graphics Computer Systems, Inc
- © 1996-1997 Silicon Graphics Computer Systems, Inc
- © 1996-1998 Silicon Graphics Computer Systems, Inc
- © 2000 David Abrahams
- © 2001 Jeremy G. Siek
- © 2002 The Trustees of Indiana University
- © 2003-2020 Joaquín M López Muñoz
+

+ © 2001-2010, i.e., " +

+
+
+

+ © 1994 Hewlett-Packard Company
+ © 1996 Silicon Graphics Computer Systems, Inc
+ © 1996-1997 Silicon Graphics Computer Systems, Inc
+ © 1996-1998 Silicon Graphics Computer Systems, Inc
+ © 2000 David Abrahams
+ © 2001 Jeremy G. Siek
+ © 2002 The Trustees of Indiana University
+ © 2003-2022 Joaquín M López Muñoz
+ © 2003-2022 Joaqu�n M Lopez Munoz +

Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Hewlett-Packard Company makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.

- © 1997-2002 International Business Machines Corporation and others
- © 2002 Red Hat
-
+

+ © 1997-2002 International Business Machines Corporation and others
+ © 2002 Red Hat +

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software") to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

@@ -3304,403 +3247,358 @@ compatible with a GPL license.

All trademarks and registered trademarks mentioned herein are the property of their respective owners.

- © 2000-2002 Richard W.E. Furse, Paul Barton-Davis, Stefan Westerfeld
- © 2006-2020 Steve Harris, David Robillard
- © 2007-2021 David Robillard <https://drobilla.net>
- © 2008 Krzysztof Foltman
- © 2008-2014, David Robillard <d@drobilla.net>
- © 2011-2014 Alessio Treglia <alessio@debian.org>
- © 2011-2020, Mariusz Nowak, @medikoo, medikoo.com
- © 2013-2016 Jaromír Mikeš <mira.mikes@seznam.cz>
- © 2014, 2015, 2019, Elan Shanker
- © 2014, 2015, Calvin Metcalf and browserify-sign contributors
- © 2014, Marten de Vries
- © 2015, 2016, 2019, Contributors
- © 2015, 2017, Rebecca Turner <me@re-becca.org>
- © 2015, Calvin Metcalf
- © 2015, Glen Maddern
- © 2015, Rebecca Turner
- © 2015, Wes Todd
- © 2015-2020, Matteo Collina <matteo.collina@gmail.com>
- © 2017, crypto-browserify contributors
- © 2018, Eemeli Aro <eemeli@gmail.com>
- © 2018, Kilian Valkhof
- © 2018, Shinnosuke Watanabe
- © 2018-2020, Andrea Giammarchi, @WebReflection
- © 2019, Elan Shanker, Paul Miller (https:paulmillr.com)
- © 2019, Shahar Or
- © 2020, Ryan Zimmerman <opensrc@ryanzim.com>
- © 2020-2022 Dennis Braun <d_braun@kabelmail.de>
- © 2021, Robin E. R. Davies
- © Isaac Z. Schlueter and Contributors
- © Isaac Z. Schlueter
- © Isaac Z. Schlueter and Contributors
- © Isaac Z. Schlueter, Ben Noordhuis, and Contributors
- © npm, Inc
- © npm, Inc. and Contributors
-
+

+ © 2000-2002 Richard W.E. Furse, Paul Barton-Davis, Stefan Westerfeld
+ © 2006-2020 Steve Harris, David Robillard
+ © 2007-2023 David Robillard <https://drobilla.net>
+ © 2008 Krzysztof Foltman
+ © 2009, Lars Luthman <lars.luthman@gmail.com>
+ © 2011-2014 Alessio Treglia <alessio@debian.org>
+ © 2011-2023, Isaac Z. Schlueter and Contributors
+ © 2012-2022, David Robillard <d@drobilla.net>
+ © 2013-2016 Jaromír Mikeš <mira.mikes@seznam.cz>
+ © 2015, 2019, Elan Shanker
+ © 2015, 2019, Elan Shanker, 2021, Blaine Bublitz <blaine.bublitz@gmail.com>, Eric Schoffstall <yo@contra.io> and other contributors
+ © 2015-2020, Matteo Collina <matteo.collina@gmail.com>
+ © 2018, Eemeli Aro <eemeli@gmail.com>
+ © 2018, Kilian Valkhof
+ © 2018-2025, Andrea Giammarchi, @WebReflection
+ © 2020-2022 Dennis Braun <d_braun@kabelmail.de>
+ © 2021-2024, Oleksii Raspopov, Kostiantyn Denysov, Anton Verinov
+ © Felix Böhm +

Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

-

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

+

THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

- © 1993, 1995 Christopher Seiwald
- © 1993, 1995, 2000 Christopher Seiwald
- © 1993, 2000 Christopher Seiwald
- © 1993-1995, 2000 Christopher Seiwald
- © 1993-2002 Christopher Seiwald
- © 1993-2002 Perforce Software, Inc
- © 2001-2004 David Abrahams
- © 2001-2006 David Abrahams
- © 2002-2006 Rene Rivera
- © 2003-2006 Vladimir Prus
- © 2005 Reece H. Dunn
- © 2005 Rene Rivera
- © 2005, 2007 Rene Rivera
- © 2005, 2018 Rene Rivera
- © 2007 Noel Belcourt
- © 2011 Steven Watanabe
- © 2015 Artur Shepilko
- © 2018-2019 Rene Rivera
- © 2020 Nikita Kniazev
- © 2020 René Ferdinand Rivera Morell
-
+

+ © 1993, 1995 Christopher Seiwald
+ © 1993, 1995, 2000 Christopher Seiwald
+ © 1993, 2000 Christopher Seiwald
+ © 1993-1995 Christopher Seiwald
+ © 1993-1995, 2000 Christopher Seiwald
+ © 1993-2002 Christopher Seiwald
+ © 1993-2002 Perforce Software, Inc
+ © 2001-2004 David Abrahams
+ © 2001-2006 David Abrahams
+ © 2002-2006 Rene Rivera
+ © 2003-2006 Vladimir Prus
+ © 2005 Reece H. Dunn
+ © 2005 Rene Rivera
+ © 2005, 2007 Rene Rivera
+ © 2005, 2018 Rene Rivera
+ © 2007 Noel Belcourt
+ © 2011 Steven Watanabe
+ © 2015 Artur Shepilko
+ © 2018-2022 Rene Rivera
+ © 2020 Nikita Kniazev
+ © 2020 René Ferdinand Rivera Morell
+ © 2020, 2022 René Ferdinand Rivera Morell
+ © 2022 René Ferdinand Rivera Morell +

License is hereby granted to use this software and distribute it freely, as long as this copyright notice is retained and modifications are clearly marked. ALL WARRANTIES ARE HEREBY DISCLAIMED.

- © 2001-2003 William E. Kempf
- © 2004-2012 Ion Gaztañaga
-
+

+ © 2001-2003 William E. Kempf
+ © 2004-2012 Ion Gaztañaga
+ © 2004-2012 Ion Gazta�aga +

Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. William E. Kempf makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.

- © 1997-2002 International Business Machines Corporation and others
- © 1998 - 2000, 2005 Red Hat, Inc.
- © 1999 - 2003 Ximian, Inc.
- © 1999 Michael Zucchi
- © 1999-2006 Red Hat Software
- © 1999-2019 Red Hat
- © 2000 SuSE Linux Ltd
- © 2000 Eazel, Inc.
- © 2000 Red Hat
- © 2000, 2005 Keith Packard
- © 2000-2002 Tor Lillqvist
- © 2001 Alexander Larsson
- © 2001 Hans Breuer
- © 2001 Sun Microsystems
- © 2001, 2002, 2006 Behdad Esfahbod
- © 2002 - 2005 Dom Lachowicz <cinamod@hotmail.com>
- © 2002 Matthias Clasen
- © 2002 Red Hat
- © 2002-2020 Matthias Clasen
- © 2003 Noah Levitt
- © 2003 - 2005 Caleb Moore <c.moore@student.unsw.edu.au>
- © 2003 Theppitak Karoonboonyanan
- © 2005 Amit Aronovitch
- © 2005-2007 Imendio AB
- © 2006 Red Hat
- © 2006 Robert Staudinger <robert.staudinger@gmail.com>
- © 2006 Sharif FarsiWeb, Inc.
- © 2007 Novell, Inc
- © 2008 Jürg Billeter
- © 2010 - 2012 Christian Persch
- © 2010 Igalia, S.L.
- © 2010, 2012 Kristian Rietveld
- © 2012 Emmanuele Bassi
- © 2012 Ryan Lortie
- © 2013, Canonical Ltd.
- © 2015 The Chromium Authors
- © 2016 Chun-wei Fan
- © 2017 Google, Inc.
- © 2018 Google
- © 2021 Benjamin Otte
- © 2021 GNOME Foundation
- © 2021 Jordi Mas i Hernàndez
- © 2021 Red Hat, Inc.
- © Abigail Brady
- © Changwoo Ryu
- © Chookij Vanatham
- © Havoc Pennington
- © Karl Koehler
- © Owen Taylor
- © Regents of the University of California
- © Roozbeh Pournader
- © Sivaraj Doddannan
- © Sun Microsystems, Inc., and other parties
-
+

+ © 1997-2002 International Business Machines Corporation and others
+ © 1998 - 2000, 2005 Red Hat, Inc.
+ © 1999 - 2003 Ximian, Inc.
+ © 1999 Michael Zucchi
+ © 1999-2006 Red Hat Software
+ © 1999-2019 Red Hat
+ © 2000 SuSE Linux Ltd
+ © 2000 Eazel, Inc.
+ © 2000 Red Hat
+ © 2000, 2005 Keith Packard
+ © 2000-2002 Tor Lillqvist
+ © 2001 Alexander Larsson
+ © 2001 Hans Breuer
+ © 2001 Sun Microsystems
+ © 2001, 2002, 2006 Behdad Esfahbod
+ © 2002 - 2005 Dom Lachowicz <cinamod@hotmail.com>
+ © 2002 Matthias Clasen
+ © 2002 Red Hat
+ © 2002-2020 Matthias Clasen
+ © 2003 Noah Levitt
+ © 2003 - 2005 Caleb Moore <c.moore@student.unsw.edu.au>
+ © 2003 Theppitak Karoonboonyanan
+ © 2005 Amit Aronovitch
+ © 2005-2007 Imendio AB
+ © 2006 Red Hat
+ © 2006 Robert Staudinger <robert.staudinger@gmail.com>
+ © 2006 Sharif FarsiWeb, Inc.
+ © 2007 Novell, Inc
+ © 2008 Jürg Billeter
+ © 2010 - 2012 Christian Persch
+ © 2010 Igalia, S.L.
+ © 2010, 2012 Kristian Rietveld
+ © 2012 Emmanuele Bassi
+ © 2012 Ryan Lortie
+ © 2013, Canonical Ltd.
+ © 2015 The Chromium Authors
+ © 2016 Chun-wei Fan
+ © 2017 Google, Inc.
+ © 2018 Google
+ © 2021 Benjamin Otte
+ © 2021 GNOME Foundation
+ © 2021 Jordi Mas i Hernàndez
+ © 2021 Red Hat, Inc.
+ © Abigail Brady
+ © Changwoo Ryu
+ © Chookij Vanatham
+ © Havoc Pennington
+ © Karl Koehler
+ © Owen Taylor
+ © Regents of the University of California
+ © Roozbeh Pournader
+ © Sivaraj Doddannan
+ © Sun Microsystems, Inc., and other parties +

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

On Debian systems, the complete text of the GNU Lesser General Public License version 2 can be found in "/usr/share/common-licenses/LGPL-2".

- © 1999-2006 Red Hat Software
- © 1999-2019 Red Hat
- © 2000 SuSE Linux Ltd
- © 2000, 2005 Keith Packard
- © 2000-2002 Tor Lillqvist
- © 2001 Alexander Larsson
- © 2001 Hans Breuer
- © 2001 Sun Microsystems
- © 2001, 2002, 2006 Behdad Esfahbod
- © 2002-2020 Matthias Clasen
- © 2003 Noah Levitt
- © 2005 Amit Aronovitch
- © 2005-2007 Imendio AB
- © 2007 Novell, Inc
- © 2008 Jürg Billeter
- © 2009-2011 Jaromír Mikeš <mira.mikes@seznam.cz>
- © 2010, 2012 Kristian Rietveld
- © 2010-2012 Alessio Treglia <alessio@debian.org>
- © 2012 Emmanuele Bassi
- © 2012 Ryan Lortie
- © 2016 Chun-wei Fan
- © 2016 - 2017 KISTLER INSTRUMENTE AG, Winterthur, Switzerland
- © 2016 - 2019 Stanislav Angelovic <angelovic.s@gmail.com>
- © 2020 Shengjing Zhu <zhsj@debian.org>
- © 2020-2022 Dennis Braun <d_braun@kabelmail.de>
- © 2021 Benjamin Otte
- © 2021 GNOME Foundation
- © 2021 Jordi Mas i Hernàndez
- © 2021 Red Hat, Inc.
- © Abigail Brady
- © Changwoo Ryu
- © Chookij Vanatham
- © Havoc Pennington
- © Karl Koehler
- © Owen Taylor
- © Roozbeh Pournader
- © Sivaraj Doddannan
+

+ © 1991, 1999, Free Software Foundation, Inc. +

+
+
+

+ © 1999-2006 Red Hat Software
+ © 1999-2019 Red Hat
+ © 2000 SuSE Linux Ltd
+ © 2000, 2005 Keith Packard
+ © 2000-2002 Tor Lillqvist
+ © 2001 Alexander Larsson
+ © 2001 Hans Breuer
+ © 2001 Sun Microsystems
+ © 2001, 2002, 2006 Behdad Esfahbod
+ © 2002-2020 Matthias Clasen
+ © 2003 Noah Levitt
+ © 2005 Amit Aronovitch
+ © 2005-2007 Imendio AB
+ © 2007 Novell, Inc
+ © 2008 Jürg Billeter
+ © 2009-2011 Jaromír Mikeš <mira.mikes@seznam.cz>
+ © 2010, 2012 Kristian Rietveld
+ © 2010-2012 Alessio Treglia <alessio@debian.org>
+ © 2012 Emmanuele Bassi
+ © 2012 Ryan Lortie
+ © 2016 Chun-wei Fan
+ © 2016-2021, KISTLER INSTRUMENTE AG, Winterthur, Switzerland
+ © 2016-2024, Stanislav Angelovic <stanislav.angelovic@protonmail.com>
+ © 2020-2022 Dennis Braun <d_braun@kabelmail.de>
+ © 2021 Benjamin Otte
+ © 2021 GNOME Foundation
+ © 2021 Jordi Mas i Hernàndez
+ © 2021 Red Hat, Inc.
+ © Abigail Brady
+ © Changwoo Ryu
+ © Chookij Vanatham
+ © Havoc Pennington
+ © Karl Koehler
+ © Owen Taylor
+ © Roozbeh Pournader
+ © Sivaraj Doddannan +

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

On Debian systems, the complete text of the GNU Lesser General Public License version 2.1 can be found in "/usr/share/common-licenses/LGPL-2.1".

- © 2007, Free Software Foundation, Inc. <http:fsf.org/>
-
-
-

GNU LESSER GENERAL PUBLIC LICENSE

-

Version 3, 29 June 2007

-

 

-

Copyright © 2007 Free Software Foundation, Inc. <https://fsf.org/>

-

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

-

This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below.

-

0. Additional Definitions.

-

As used herein, “this License” refers to version 3 of the GNU Lesser General Public License, and the “GNU GPL” refers to version 3 of the GNU General Public License.

-

“The Library” refers to a covered work governed by this License, other than an Application or a Combined Work as defined below.

-

An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library.

-

A “Combined Work” is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the “Linked Version”.

-

The “Minimal Corresponding Source” for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version.

-

The “Corresponding Application Code” for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work.

-

1. Exception to Section 3 of the GNU GPL.

-

You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL.

-

2. Conveying Modified Versions.

-

If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version:

-

a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or

-

b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy.

-

3. Object Code Incorporating Material from Library Header Files.

-

The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following:

-

a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License.

-

b) Accompany the object code with a copy of the GNU GPL and this license document.

-

4. Combined Works.

-

You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following:

-

a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License.

-

b) Accompany the Combined Work with a copy of the GNU GPL and this license document.

-

c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document.

-

d) Do one of the following:

-

0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.

-

1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version.

-

e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.)

-

5. Combined Libraries.

-

You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following:

-

a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License.

-

b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.

-

6. Revised Versions of the GNU Lesser General Public License.

-

The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

-

Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation.

-

If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library.

-
-
- © (no info) Igor Sysoev
- © (no info) Joyent, Inc.
- © 1995 Gerald I. Evenden
- © 1995, 2003, 2006, 2008 Gerald I. Evenden
- © 2000 Frank Warmerdam
- © 2000, 2002 Frank Warmerdam
- © 2001 Thomas Flemming
- © 2004 Gerald I. Evenden
- © 2006 Stephan Diederich
- © 2007-2015 Barend Gehrels
- © 2008-2012 Barend Gehrels
- © 2008-2015 Barend Gehrels
- © 2011 Hannes Hofmann
- © 2011-2012 Martin Lambers
- © 2012 Martin Raspaud
- © 2017-2018 Oracle and/or its affiliates
- © 2017-2019 Oracle and/or its affiliates
-
+

+ © (no info) Igor Sysoev
+ © (no info) Joyent, Inc.
+ © 1995 Gerald I. Evenden
+ © 1995, 2003, 2006, 2008 Gerald I. Evenden
+ © 2000 Frank Warmerdam
+ © 2000, 2002 Frank Warmerdam
+ © 2001 Thomas Flemming
+ © 2004 Gerald I. Evenden
+ © 2006 Stephan Diederich
+ © 2007-2015 Barend Gehrels
+ © 2008-2012 Barend Gehrels
+ © 2008-2015 Barend Gehrels
+ © 2011 Hannes Hofmann
+ © 2011-2012 Martin Lambers
+ © 2012 Martin Raspaud
+ © 2014 Feng Qiang
+ © 2017-2019 Oracle and/or its affiliates
+ © 2017-2022 Oracle and/or its affiliates +

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

- © 1995-2017 Jean-loup Gailly
- © 1995-2017 Mark Adler
- © 2005-2011 David Schultz
- © 2006-2009 Graydon Hoare
- © 2009-2013 Mozilla Foundation
- © 2009-2016 compiler-builtins Developers
- © 2010-2011 Dmitry Vyukov
- © 2010-2020 The Rust Project Developers
- © 2012-2018 Free Software Foundation, Inc.
- © 2013 Koka El Kiwi
- © 2013-2014 The Algebra Developers
- © 2013-2018 The Gtk-rs Project Developers
- © 2013-2018 The Servo Project Developers
- © 2013-2019 Sébastien Crozet
- © 2014 Alex Crichton
- © 2014 Armin Ronacher
- © 2014 Benjamin Sago
- © 2014 Ning Sun
- © 2014 Paho Lurie-Gregg
- © 2014-2016 Simon Sapin
- © 2014-2017 Kang Seonghoon and contributors
- © 2014-2018 Jorge Aparicio
- © 2014-2020 Optimal Computing (NZ) Ltd
- © 2015 Alex Daniel Jones
- © 2015 Bartłomiej Kamiński
- © 2015 Brendan Zabarauskas
- © 2015 Brian Vincent
- © 2015 Connor Hilarides
- © 2015 Corey Richardson
- © 2015 Danny Guo
- © 2015 Dmitry Roschin
- © 2015 Gigih Aji Ibrahim
- © 2015 Johann Hofmann
- © 2015 John Nagle
- © 2015 Jordan Miner
- © 2015 Marvin Löbel
- © 2015 Milo Yip
- © 2015 Pyfisch
- © 2015 Sean McArthur
- © 2015 Steven Allen
- © 2015 THL A29 Limited, a Tencent company
- © 2015 The assert_cli Developers
- © 2015 The quick-error Developers
- © 2015 The rust-unreachable Developers
- © 2015 arcnmx
- © 2015 const-cstr developers
- © 2015 grabbag contributors
- © 2015 nwin
- © 2015 skdltmxn
- © 2015-2016 Kevin B. Knapp
- © 2015-2016 Peter Atashian
- © 2015-2016 Victor Brekenfeld
- © 2015-2016 clap-rs contributors
- © 2015-2017 Andrew Gallant
- © 2015-2017 Doug Tangren
- © 2015-2018 Guillaume Gomez
- © 2015-2018 winapi-rs developers
- © 2015-2020 Ashish Myles and contributors
- © 2015-2021 Ulrik Sverdrup (bluss)
- © 2016 A.J. Gardner
- © 2016 FullContact, Inc.
- © 2016 Itoa Developers
- © 2016 Jan Hudec
- © 2016 Junfeng Liu
- © 2016 Kathryn Long
- © 2016 Martin Geisler
- © 2016 Nika Layzell
- © 2016 Oleksii Rudenko
- © 2016 Remi Rampin and adler32-rs contributors
- © 2016 The multipart Crate Developers
- © 2016 Ticki
- © 2016 Titus Wormer
- © 2016 base-x contributors
- © 2016 bitbegin
- © 2016 lazy-static.rs Developers
- © 2016 oyvindln
- © 2016-2017 The Fuchsia Authors
- © 2016-2018 Nuxi
- © 2017 Aaron Power
- © 2017 Frommi
- © 2017 Jan Bujak
- © 2017 Nick Stevens
- © 2017 Redox OS Developers
- © 2017 Robert Grosse
- © 2017 Serde Developers
- © 2017 Tim Visée
- © 2017 proc-macro-nested contributors
- © 2017-2018 Amanieu d'Antras
- © 2017-2018 Jason Lingle
- © 2017-2018 Sergio Benitez
- © 2017-2019 The proptest developers
- © 2017-2020 Gilad Naaman
- © 2018 Dragoș Tiselice
- © 2018 R. Janis Goldschmidt
- © 2018 Sam Rijs, Alex Crichton and contributors
- © 2018 Syn Developers
- © 2018 The predicates-rs Project Developers
- © 2018 Ulf Adams
- © 2018-2021 Developers of the Rand project
- © 2019 Embark Studios
- © 2019 Hao Hou
- © 2019 Jacob Pratt
- © 2019 Peter Glotfelty
- © 2019-2020 CreepySkeleton
- © 2019-2020 Daniel Gee
- © 2020 Ralf Jung
- © 2021 DutchGhost
- © 2021 matrixmultiply authors
- © Aaron Trent
- © Alexander Huszagh
- © Alexis Beingessner
- © Andreas Longva
- © Bastian Köcher
- © Brook Heisler
- © 2021 Deque Systems, Inc.
- © Darin Morrison
- © David Tolnay
- © Jonas Schievink
- © Jonathan Reem
- © Josh Triplett
- © Michael Layzell
- © Ryan Scheel
- © Steven Fackler
- © Sun Microsystems, Inc.
- © Wadelma
- © Without Boats
-
+

+ © 1995-2017 Jean-loup Gailly
+ © 1995-2017 Mark Adler
+ © 2005-2011 David Schultz
+ © 2006-2009 Graydon Hoare
+ © 2009-2013 Mozilla Foundation
+ © 2009-2016 compiler-builtins Developers
+ © 2010-2011 Dmitry Vyukov
+ © 2010-2020 The Rust Project Developers
+ © 2012-2018 Free Software Foundation, Inc.
+ © 2013 Koka El Kiwi
+ © 2013-2014 The Algebra Developers
+ © 2013-2018 The Gtk-rs Project Developers
+ © 2013-2018 The Servo Project Developers
+ © 2013-2019 Sébastien Crozet
+ © 2014 Alex Crichton
+ © 2014 Armin Ronacher
+ © 2014 Benjamin Sago
+ © 2014 Ning Sun
+ © 2014 Paho Lurie-Gregg
+ © 2014-2016 Simon Sapin
+ © 2014-2017 Kang Seonghoon and contributors
+ © 2014-2018 Jorge Aparicio
+ © 2014-2020 Optimal Computing (NZ) Ltd
+ © 2015 Alex Daniel Jones
+ © 2015 Bartłomiej Kamiński
+ © 2015 Brendan Zabarauskas
+ © 2015 Brian Vincent
+ © 2015 Connor Hilarides
+ © 2015 Corey Richardson
+ © 2015 Danny Guo
+ © 2015 Dmitry Roschin
+ © 2015 Gigih Aji Ibrahim
+ © 2015 Johann Hofmann
+ © 2015 John Nagle
+ © 2015 Jordan Miner
+ © 2015 Marvin Löbel
+ © 2015 Milo Yip
+ © 2015 Pyfisch
+ © 2015 Sean McArthur
+ © 2015 Steven Allen
+ © 2015 THL A29 Limited, a Tencent company
+ © 2015 The assert_cli Developers
+ © 2015 The quick-error Developers
+ © 2015 The rust-unreachable Developers
+ © 2015 arcnmx
+ © 2015 const-cstr developers
+ © 2015 grabbag contributors
+ © 2015 nwin
+ © 2015 skdltmxn
+ © 2015-2016 Kevin B. Knapp
+ © 2015-2016 Peter Atashian
+ © 2015-2016 Victor Brekenfeld
+ © 2015-2016 clap-rs contributors
+ © 2015-2017 Andrew Gallant
+ © 2015-2017 Doug Tangren
+ © 2015-2018 Guillaume Gomez
+ © 2015-2018 winapi-rs developers
+ © 2015-2020 Ashish Myles and contributors
+ © 2015-2021 Ulrik Sverdrup (bluss)
+ © 2016 A.J. Gardner
+ © 2016 FullContact, Inc.
+ © 2016 Itoa Developers
+ © 2016 Jan Hudec
+ © 2016 Junfeng Liu
+ © 2016 Kathryn Long
+ © 2016 Martin Geisler
+ © 2016 Nika Layzell
+ © 2016 Oleksii Rudenko
+ © 2016 Remi Rampin and adler32-rs contributors
+ © 2016 The multipart Crate Developers
+ © 2016 Ticki
+ © 2016 Titus Wormer
+ © 2016 base-x contributors
+ © 2016 bitbegin
+ © 2016 lazy-static.rs Developers
+ © 2016 oyvindln
+ © 2016-2017 The Fuchsia Authors
+ © 2016-2018 Nuxi
+ © 2017 Aaron Power
+ © 2017 Frommi
+ © 2017 Jan Bujak
+ © 2017 Nick Stevens
+ © 2017 Redox OS Developers
+ © 2017 Robert Grosse
+ © 2017 Serde Developers
+ © 2017 Tim Visée
+ © 2017 proc-macro-nested contributors
+ © 2017-2018 Amanieu d'Antras
+ © 2017-2018 Jason Lingle
+ © 2017-2018 Sergio Benitez
+ © 2017-2019 The proptest developers
+ © 2017-2020 Gilad Naaman
+ © 2018 Dragoș Tiselice
+ © 2018 R. Janis Goldschmidt
+ © 2018 Sam Rijs, Alex Crichton and contributors
+ © 2018 Syn Developers
+ © 2018 The predicates-rs Project Developers
+ © 2018 Ulf Adams
+ © 2018-2021 Developers of the Rand project
+ © 2019 Embark Studios
+ © 2019 Hao Hou
+ © 2019 Jacob Pratt
+ © 2019 Peter Glotfelty
+ © 2019-2020 CreepySkeleton
+ © 2019-2020 Daniel Gee
+ © 2020 Ralf Jung
+ © 2021 DutchGhost
+ © 2021 matrixmultiply authors
+ © Aaron Trent
+ © Alexander Huszagh
+ © Alexis Beingessner
+ © Andreas Longva
+ © Bastian Köcher
+ © Brook Heisler
+ © Darin Morrison
+ © David Tolnay
+ © Jonas Schievink
+ © Jonathan Reem
+ © Josh Triplett
+ © Michael Layzell
+ © Ryan Scheel
+ © Steven Fackler
+ © Sun Microsystems, Inc.
+ © Wadelma
+ © Without Boats +

-

This is free software, licensed under:

-

Mozilla Public License Version 2.0

-

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. On Debian systems, the complete text of Mozilla Public License v 2.0 can be found in '/usr/share/common-licenses/MPL-2.0'.

+

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.

- © 2004 Jeremy G. Siek
-
+

+ © 2004 Jeremy G. Siek +

Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted provided that the above copyright notice appear in all copies and that both the copyright notice and this permission notice appear in supporting documentation.

Neither the Author nor the Institution (National Institute of Standards and Technology) make any representations about the suitability of this software for any purpose. This software is provided "as is" without expressed or implied warranty.

- © 2003 Bitstream, Inc.
- © 2006-2010 Google Corp.
- © 2009-2011 Understanding Limited
- © 2010,2012-2020, Google Inc.
- © 2010-2011 Jakub Steiner
- © 2012-2018 Dave Gandy
- © 2013-2017 Google Inc.
- © 2015-2020, Google LLC.
- © Arjen Nienhuis
- © Khaled Hosny
- © Sebastian Kosch
-
+

+ © 2003 Bitstream, Inc.
+ © 2006-2010 Google Corp.
+ © 2009-2011 Understanding Limited
+ © 2010,2012-2020, Google Inc.
+ © 2010-2011 Jakub Steiner
+ © 2012-2018 Dave Gandy
+ © 2013-2017 Google Inc.
+ © 2015-2020, Google LLC.
+ © Arjen Nienhuis
+ © Khaled Hosny
+ © Sebastian Kosch +

This Font Software is licensed under the SIL Open Font License, Version 1.1.

This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL

@@ -3726,77 +3624,83 @@ compatible with a GPL license.

THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.

- © 2007 Alexandre Courpron
- © 2009-2013 Ion Gaztañaga
-
+

+ © 2007 Alexandre Courpron
+ © 2009-2013 Ion Gaztañaga
+ © 2009-2013 Ion Gazta�aga +

Permission to use, copy, modify, redistribute and sell this software, provided that this copyright notice appears on all copies of the software.

- © 1999 Paul Moore
- © 2001 Andrew Lumsdaine
- © 2001 Ronald Garcia
- © 2001 Stephen Silver
- © 2001-2003 David Abrahams
- © 2002 Ronald Garcia
- © 2002 Vladimir Prus
- © 2003 Andre Hentz
- © 2003 Christopher Currie
- © 2003 Douglas Gregor
- © 2004 Ralf Mattethat
- © 2006 Rene Rivera
- © 2007 Andy Tompkins
- © 2007-2011 Andy Tompkins
- © 2007-2014 Ion Gaztañaga
- © 2008 Steven Watanabe
- © 2015 Robert Ramey
- © 2018-2019 James E. King III
- © 2019 James E. King III
-
+

+ © 1999 Paul Moore
+ © 2001 Stephen Silver
+ © 2001-2002 Ronald Garcia
+ © 2003 Andre Hentz
+ © 2003 Christopher Currie
+ © 2003 David Abrahams
+ © 2003 Douglas Gregor
+ © 2004 Ralf Mattethat
+ © 2006 Rene Rivera
+ © 2007 Andy Tompkins
+ © 2007-2011 Andy Tompkins
+ © 2007-2014 Ion Gaztañaga
+ © 2007-2014 Ion Gazta�aga
+ © 2015 Robert Ramey
+ © 2018-2019 James E. King III
+ © 2019 James E. King III +

Permission to copy, use, modify, sell and distribute this software is granted provided this copyright notice appears in all copies. This software is provided "as is" without express or implied warranty, and with no claim as to its suitability for any purpose.

- © 2001-2003 Douglas Gregor
-
+

+ © 2001-2003 Douglas Gregor +

Permission to copy, use, sell and distribute this software is granted provided this copyright notice appears in all copies. Permission to modify the code and to distribute modified code is granted provided this copyright notice appears in all copies, and a notice that the code was modified is included with the copyright notice.

- © 2000 Steven Knight
- © 2002-2003 David Abrahams
- © 2002-2003 Vladimir Prus
- © 2006 Rene Rivera
+

+ © 2001-2010, i.e., " +

+
+
+

+ © 2000 Steven Knight
+ © 2002-2003 David Abrahams
+ © 2002-2003 Vladimir Prus
+ © 2006 Rene Rivera +

This module is free software, and you may redistribute it and/or modify it under the same terms as Python itself, so long as this copyright message and disclaimer are retained in their original form.

IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.

- © 1994 Hewlett-Packard Company
- © 1996 Silicon Graphics Computer Systems, Inc
- © 1996-1997 Silicon Graphics Computer Systems, Inc
- © 1996-1998 Silicon Graphics Computer Systems, Inc
- © 1996-1999 Silicon Graphics Computer Systems, Inc
- © 1998 Silicon Graphics Computer Systems, Inc
- © 2000 Andrew Lumsdaine
- © 2000 David Abrahams
- © 2000 Jeremy G. Siek
- © 2000 Lie-Quan Lee
- © 2000-2001 University of Notre Dame du Lac
- © 2001 Jeremy G. Siek
- © 2001-2002 Indiana University
- © 2002 The Trustees of Indiana University
- © 2003-2020 Joaquín M López Muñoz
- © 2005-2012 Ion Gaztañaga
-
+

+ © 1994 Hewlett-Packard Company
+ © 1996 Silicon Graphics Computer Systems, Inc
+ © 1996-1997 Silicon Graphics Computer Systems, Inc
+ © 1996-1998 Silicon Graphics Computer Systems, Inc
+ © 1998 Silicon Graphics Computer Systems, Inc
+ © 2000 David Abrahams
+ © 2001 Jeremy G. Siek
+ © 2002 The Trustees of Indiana University
+ © 2003-2022 Joaquín M López Muñoz
+ © 2003-2022 Joaqu�n M Lopez Munoz
+ © 2005-2012 Ion Gaztañaga
+ © 2005-2012 Ion Gazta�aga +

Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Silicon Graphics makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.

- © 1986 University of Toronto
-
+

+ © 1986 University of Toronto +

Permission is granted to anyone to use this software for any purpose on any computer system, and to redistribute it freely, subject to the following restrictions:

1. The author is not responsible for the consequences of use of this software, no matter how awful, even if they arise from defects in it.

@@ -3804,140 +3708,142 @@ compatible with a GPL license.

3. Altered versions must be plainly marked as such, and must not be misrepresented as being the original software.

- © 1995-2017 Jean-loup Gailly
- © 1995-2017 Mark Adler
- © 2005-2011 David Schultz
- © 2006-2009 Graydon Hoare
- © 2009-2013 Mozilla Foundation
- © 2009-2016 compiler-builtins Developers
- © 2010-2011 Dmitry Vyukov
- © 2010-2020 The Rust Project Developers
- © 2012-2018 Free Software Foundation, Inc.
- © 2013 Koka El Kiwi
- © 2013-2014 The Algebra Developers
- © 2013-2018 The Gtk-rs Project Developers
- © 2013-2018 The Servo Project Developers
- © 2013-2019 Sébastien Crozet
- © 2014 Alex Crichton
- © 2014 Armin Ronacher
- © 2014 Benjamin Sago
- © 2014 Ning Sun
- © 2014 Paho Lurie-Gregg
- © 2014-2016 Simon Sapin
- © 2014-2017 Kang Seonghoon and contributors
- © 2014-2018 Jorge Aparicio
- © 2014-2020 Optimal Computing (NZ) Ltd
- © 2015 Alex Daniel Jones
- © 2015 Bartłomiej Kamiński
- © 2015 Brendan Zabarauskas
- © 2015 Brian Vincent
- © 2015 Connor Hilarides
- © 2015 Corey Richardson
- © 2015 Danny Guo
- © 2015 Dmitry Roschin
- © 2015 Gigih Aji Ibrahim
- © 2015 Johann Hofmann
- © 2015 John Nagle
- © 2015 Jordan Miner
- © 2015 Marvin Löbel
- © 2015 Milo Yip
- © 2015 Pyfisch
- © 2015 Sean McArthur
- © 2015 Steven Allen
- © 2015 THL A29 Limited, a Tencent company
- © 2015 The assert_cli Developers
- © 2015 The quick-error Developers
- © 2015 The rust-unreachable Developers
- © 2015 arcnmx
- © 2015 const-cstr developers
- © 2015 grabbag contributors
- © 2015 nwin
- © 2015 skdltmxn
- © 2015-2016 Kevin B. Knapp
- © 2015-2016 Peter Atashian
- © 2015-2016 Victor Brekenfeld
- © 2015-2016 clap-rs contributors
- © 2015-2017 Andrew Gallant
- © 2015-2017 Doug Tangren
- © 2015-2018 Guillaume Gomez
- © 2015-2018 winapi-rs developers
- © 2015-2020 Ashish Myles and contributors
- © 2015-2021 Ulrik Sverdrup (bluss)
- © 2016 A.J. Gardner
- © 2016 FullContact, Inc.
- © 2016 Itoa Developers
- © 2016 Jan Hudec
- © 2016 Junfeng Liu
- © 2016 Kathryn Long
- © 2016 Martin Geisler
- © 2016 Nika Layzell
- © 2016 Oleksii Rudenko
- © 2016 Remi Rampin and adler32-rs contributors
- © 2016 The multipart Crate Developers
- © 2016 Ticki
- © 2016 Titus Wormer
- © 2016 base-x contributors
- © 2016 bitbegin
- © 2016 lazy-static.rs Developers
- © 2016 oyvindln
- © 2016-2017 The Fuchsia Authors
- © 2016-2018 Nuxi
- © 2017 Aaron Power
- © 2017 Frommi
- © 2017 Jan Bujak
- © 2017 Nick Stevens
- © 2017 Redox OS Developers
- © 2017 Robert Grosse
- © 2017 Serde Developers
- © 2017 Tim Visée
- © 2017 proc-macro-nested contributors
- © 2017-2018 Amanieu d'Antras
- © 2017-2018 Jason Lingle
- © 2017-2018 Sergio Benitez
- © 2017-2019 The proptest developers
- © 2017-2020 Gilad Naaman
- © 2018 Dragoș Tiselice
- © 2018 R. Janis Goldschmidt
- © 2018 Sam Rijs, Alex Crichton and contributors
- © 2018 Syn Developers
- © 2018 The predicates-rs Project Developers
- © 2018 Ulf Adams
- © 2018-2021 Developers of the Rand project
- © 2019 Embark Studios
- © 2019 Hao Hou
- © 2019 Jacob Pratt
- © 2019 Peter Glotfelty
- © 2019-2020 CreepySkeleton
- © 2019-2020 Daniel Gee
- © 2020 Ralf Jung
- © 2021 DutchGhost
- © 2021 matrixmultiply authors
- © Aaron Trent
- © Alexander Huszagh
- © Alexis Beingessner
- © Andreas Longva
- © Bastian Köcher
- © Brook Heisler
- © Darin Morrison
- © David Tolnay
- © Jonas Schievink
- © Jonathan Reem
- © Josh Triplett
- © Michael Layzell
- © Ryan Scheel
- © Steven Fackler
- © Sun Microsystems, Inc.
- © Wadelma
- © Without Boats
-
+

+ © 1995-2017 Jean-loup Gailly
+ © 1995-2017 Mark Adler
+ © 2005-2011 David Schultz
+ © 2006-2009 Graydon Hoare
+ © 2009-2013 Mozilla Foundation
+ © 2009-2016 compiler-builtins Developers
+ © 2010-2011 Dmitry Vyukov
+ © 2010-2020 The Rust Project Developers
+ © 2012-2018 Free Software Foundation, Inc.
+ © 2013 Koka El Kiwi
+ © 2013-2014 The Algebra Developers
+ © 2013-2018 The Gtk-rs Project Developers
+ © 2013-2018 The Servo Project Developers
+ © 2013-2019 Sébastien Crozet
+ © 2014 Alex Crichton
+ © 2014 Armin Ronacher
+ © 2014 Benjamin Sago
+ © 2014 Ning Sun
+ © 2014 Paho Lurie-Gregg
+ © 2014-2016 Simon Sapin
+ © 2014-2017 Kang Seonghoon and contributors
+ © 2014-2018 Jorge Aparicio
+ © 2014-2020 Optimal Computing (NZ) Ltd
+ © 2015 Alex Daniel Jones
+ © 2015 Bartłomiej Kamiński
+ © 2015 Brendan Zabarauskas
+ © 2015 Brian Vincent
+ © 2015 Connor Hilarides
+ © 2015 Corey Richardson
+ © 2015 Danny Guo
+ © 2015 Dmitry Roschin
+ © 2015 Gigih Aji Ibrahim
+ © 2015 Johann Hofmann
+ © 2015 John Nagle
+ © 2015 Jordan Miner
+ © 2015 Marvin Löbel
+ © 2015 Milo Yip
+ © 2015 Pyfisch
+ © 2015 Sean McArthur
+ © 2015 Steven Allen
+ © 2015 THL A29 Limited, a Tencent company
+ © 2015 The assert_cli Developers
+ © 2015 The quick-error Developers
+ © 2015 The rust-unreachable Developers
+ © 2015 arcnmx
+ © 2015 const-cstr developers
+ © 2015 grabbag contributors
+ © 2015 nwin
+ © 2015 skdltmxn
+ © 2015-2016 Kevin B. Knapp
+ © 2015-2016 Peter Atashian
+ © 2015-2016 Victor Brekenfeld
+ © 2015-2016 clap-rs contributors
+ © 2015-2017 Andrew Gallant
+ © 2015-2017 Doug Tangren
+ © 2015-2018 Guillaume Gomez
+ © 2015-2018 winapi-rs developers
+ © 2015-2020 Ashish Myles and contributors
+ © 2015-2021 Ulrik Sverdrup (bluss)
+ © 2016 A.J. Gardner
+ © 2016 FullContact, Inc.
+ © 2016 Itoa Developers
+ © 2016 Jan Hudec
+ © 2016 Junfeng Liu
+ © 2016 Kathryn Long
+ © 2016 Martin Geisler
+ © 2016 Nika Layzell
+ © 2016 Oleksii Rudenko
+ © 2016 Remi Rampin and adler32-rs contributors
+ © 2016 The multipart Crate Developers
+ © 2016 Ticki
+ © 2016 Titus Wormer
+ © 2016 base-x contributors
+ © 2016 bitbegin
+ © 2016 lazy-static.rs Developers
+ © 2016 oyvindln
+ © 2016-2017 The Fuchsia Authors
+ © 2016-2018 Nuxi
+ © 2017 Aaron Power
+ © 2017 Frommi
+ © 2017 Jan Bujak
+ © 2017 Nick Stevens
+ © 2017 Redox OS Developers
+ © 2017 Robert Grosse
+ © 2017 Serde Developers
+ © 2017 Tim Visée
+ © 2017 proc-macro-nested contributors
+ © 2017-2018 Amanieu d'Antras
+ © 2017-2018 Jason Lingle
+ © 2017-2018 Sergio Benitez
+ © 2017-2019 The proptest developers
+ © 2017-2020 Gilad Naaman
+ © 2018 Dragoș Tiselice
+ © 2018 R. Janis Goldschmidt
+ © 2018 Sam Rijs, Alex Crichton and contributors
+ © 2018 Syn Developers
+ © 2018 The predicates-rs Project Developers
+ © 2018 Ulf Adams
+ © 2018-2021 Developers of the Rand project
+ © 2019 Embark Studios
+ © 2019 Hao Hou
+ © 2019 Jacob Pratt
+ © 2019 Peter Glotfelty
+ © 2019-2020 CreepySkeleton
+ © 2019-2020 Daniel Gee
+ © 2020 Ralf Jung
+ © 2021 DutchGhost
+ © 2021 matrixmultiply authors
+ © Aaron Trent
+ © Alexander Huszagh
+ © Alexis Beingessner
+ © Andreas Longva
+ © Bastian Köcher
+ © Brook Heisler
+ © Darin Morrison
+ © David Tolnay
+ © Jonas Schievink
+ © Jonathan Reem
+ © Josh Triplett
+ © Michael Layzell
+ © Ryan Scheel
+ © Steven Fackler
+ © Sun Microsystems, Inc.
+ © Wadelma
+ © Without Boats +

Permission to use, copy, modify, and distribute this software is freely granted, provided that this notice is preserved.

- © 2000 Red Hat
- © Regents of the University of California
- © Sun Microsystems, Inc., and other parties
-
+

+ © 2000 Red Hat
+ © Regents of the University of California
+ © Sun Microsystems, Inc., and other parties +

This software is copyrighted by the Regents of the University of California, Sun Microsystems, Inc., and other parties. The following terms apply to all files associated with the software unless explicitly disclaimed in individual files.

The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply.

@@ -3946,8 +3852,9 @@ compatible with a GPL license.

GOVERNMENT USE: If you are acquiring this software on behalf of the U.S. government, the Government shall have only "Restricted Rights" in the software and related documentation as defined in the Federal Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you are acquiring the software on behalf of the Department of Defense, the software shall be classified as "Commercial Computer Software" and the Government shall have only "Restricted Rights" as defined in Clause 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the authors grant the U.S. Government and others acting in its behalf permission to use and distribute the software in accordance with the terms specified in this license.

- © 2016-2021 Unicode, Inc.
-
+

+ © 2016-2021 Unicode, Inc. +

Unicode Data Files include all data files under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and http://www.unicode.org/utility/trac/browser/.

Unicode Data Files do not include PDF online code charts under the directory http://www.unicode.org/Public/.

@@ -3958,132 +3865,133 @@ compatible with a GPL license.

Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder.

- © 1995-2017 Jean-loup Gailly
- © 1995-2017 Mark Adler
- © 2005-2011 David Schultz
- © 2006-2009 Graydon Hoare
- © 2009-2013 Mozilla Foundation
- © 2009-2016 compiler-builtins Developers
- © 2010-2011 Dmitry Vyukov
- © 2010-2020 The Rust Project Developers
- © 2012-2018 Free Software Foundation, Inc.
- © 2013 Koka El Kiwi
- © 2013-2014 The Algebra Developers
- © 2013-2018 The Gtk-rs Project Developers
- © 2013-2018 The Servo Project Developers
- © 2013-2019 Sébastien Crozet
- © 2014 Alex Crichton
- © 2014 Armin Ronacher
- © 2014 Benjamin Sago
- © 2014 Ning Sun
- © 2014 Paho Lurie-Gregg
- © 2014-2016 Simon Sapin
- © 2014-2017 Kang Seonghoon and contributors
- © 2014-2018 Jorge Aparicio
- © 2014-2020 Optimal Computing (NZ) Ltd
- © 2015 Alex Daniel Jones
- © 2015 Bartłomiej Kamiński
- © 2015 Brendan Zabarauskas
- © 2015 Brian Vincent
- © 2015 Connor Hilarides
- © 2015 Corey Richardson
- © 2015 Danny Guo
- © 2015 Dmitry Roschin
- © 2015 Gigih Aji Ibrahim
- © 2015 Johann Hofmann
- © 2015 John Nagle
- © 2015 Jordan Miner
- © 2015 Marvin Löbel
- © 2015 Milo Yip
- © 2015 Pyfisch
- © 2015 Sean McArthur
- © 2015 Steven Allen
- © 2015 THL A29 Limited, a Tencent company
- © 2015 The assert_cli Developers
- © 2015 The quick-error Developers
- © 2015 The rust-unreachable Developers
- © 2015 arcnmx
- © 2015 const-cstr developers
- © 2015 grabbag contributors
- © 2015 nwin
- © 2015 skdltmxn
- © 2015-2016 Kevin B. Knapp
- © 2015-2016 Peter Atashian
- © 2015-2016 Victor Brekenfeld
- © 2015-2016 clap-rs contributors
- © 2015-2017 Andrew Gallant
- © 2015-2017 Doug Tangren
- © 2015-2018 Guillaume Gomez
- © 2015-2018 winapi-rs developers
- © 2015-2020 Ashish Myles and contributors
- © 2015-2021 Ulrik Sverdrup (bluss)
- © 2016 A.J. Gardner
- © 2016 FullContact, Inc.
- © 2016 Itoa Developers
- © 2016 Jan Hudec
- © 2016 Junfeng Liu
- © 2016 Kathryn Long
- © 2016 Martin Geisler
- © 2016 Nika Layzell
- © 2016 Oleksii Rudenko
- © 2016 Remi Rampin and adler32-rs contributors
- © 2016 The multipart Crate Developers
- © 2016 Ticki
- © 2016 Titus Wormer
- © 2016 base-x contributors
- © 2016 bitbegin
- © 2016 lazy-static.rs Developers
- © 2016 oyvindln
- © 2016-2017 The Fuchsia Authors
- © 2016-2018 Nuxi
- © 2017 Aaron Power
- © 2017 Frommi
- © 2017 Jan Bujak
- © 2017 Nick Stevens
- © 2017 Redox OS Developers
- © 2017 Robert Grosse
- © 2017 Serde Developers
- © 2017 Tim Visée
- © 2017 proc-macro-nested contributors
- © 2017-2018 Amanieu d'Antras
- © 2017-2018 Jason Lingle
- © 2017-2018 Sergio Benitez
- © 2017-2019 The proptest developers
- © 2017-2020 Gilad Naaman
- © 2018 Dragoș Tiselice
- © 2018 R. Janis Goldschmidt
- © 2018 Sam Rijs, Alex Crichton and contributors
- © 2018 Syn Developers
- © 2018 The predicates-rs Project Developers
- © 2018 Ulf Adams
- © 2018-2021 Developers of the Rand project
- © 2019 Embark Studios
- © 2019 Hao Hou
- © 2019 Jacob Pratt
- © 2019 Peter Glotfelty
- © 2019-2020 CreepySkeleton
- © 2019-2020 Daniel Gee
- © 2020 Ralf Jung
- © 2021 DutchGhost
- © 2021 matrixmultiply authors
- © Aaron Trent
- © Alexander Huszagh
- © Alexis Beingessner
- © Andreas Longva
- © Bastian Köcher
- © Brook Heisler
- © Darin Morrison
- © David Tolnay
- © Jonas Schievink
- © Jonathan Reem
- © Josh Triplett
- © Michael Layzell
- © Ryan Scheel
- © Steven Fackler
- © Sun Microsystems, Inc.
- © Wadelma
- © Without Boats
-
+

+ © 1995-2017 Jean-loup Gailly
+ © 1995-2017 Mark Adler
+ © 2005-2011 David Schultz
+ © 2006-2009 Graydon Hoare
+ © 2009-2013 Mozilla Foundation
+ © 2009-2016 compiler-builtins Developers
+ © 2010-2011 Dmitry Vyukov
+ © 2010-2020 The Rust Project Developers
+ © 2012-2018 Free Software Foundation, Inc.
+ © 2013 Koka El Kiwi
+ © 2013-2014 The Algebra Developers
+ © 2013-2018 The Gtk-rs Project Developers
+ © 2013-2018 The Servo Project Developers
+ © 2013-2019 Sébastien Crozet
+ © 2014 Alex Crichton
+ © 2014 Armin Ronacher
+ © 2014 Benjamin Sago
+ © 2014 Ning Sun
+ © 2014 Paho Lurie-Gregg
+ © 2014-2016 Simon Sapin
+ © 2014-2017 Kang Seonghoon and contributors
+ © 2014-2018 Jorge Aparicio
+ © 2014-2020 Optimal Computing (NZ) Ltd
+ © 2015 Alex Daniel Jones
+ © 2015 Bartłomiej Kamiński
+ © 2015 Brendan Zabarauskas
+ © 2015 Brian Vincent
+ © 2015 Connor Hilarides
+ © 2015 Corey Richardson
+ © 2015 Danny Guo
+ © 2015 Dmitry Roschin
+ © 2015 Gigih Aji Ibrahim
+ © 2015 Johann Hofmann
+ © 2015 John Nagle
+ © 2015 Jordan Miner
+ © 2015 Marvin Löbel
+ © 2015 Milo Yip
+ © 2015 Pyfisch
+ © 2015 Sean McArthur
+ © 2015 Steven Allen
+ © 2015 THL A29 Limited, a Tencent company
+ © 2015 The assert_cli Developers
+ © 2015 The quick-error Developers
+ © 2015 The rust-unreachable Developers
+ © 2015 arcnmx
+ © 2015 const-cstr developers
+ © 2015 grabbag contributors
+ © 2015 nwin
+ © 2015 skdltmxn
+ © 2015-2016 Kevin B. Knapp
+ © 2015-2016 Peter Atashian
+ © 2015-2016 Victor Brekenfeld
+ © 2015-2016 clap-rs contributors
+ © 2015-2017 Andrew Gallant
+ © 2015-2017 Doug Tangren
+ © 2015-2018 Guillaume Gomez
+ © 2015-2018 winapi-rs developers
+ © 2015-2020 Ashish Myles and contributors
+ © 2015-2021 Ulrik Sverdrup (bluss)
+ © 2016 A.J. Gardner
+ © 2016 FullContact, Inc.
+ © 2016 Itoa Developers
+ © 2016 Jan Hudec
+ © 2016 Junfeng Liu
+ © 2016 Kathryn Long
+ © 2016 Martin Geisler
+ © 2016 Nika Layzell
+ © 2016 Oleksii Rudenko
+ © 2016 Remi Rampin and adler32-rs contributors
+ © 2016 The multipart Crate Developers
+ © 2016 Ticki
+ © 2016 Titus Wormer
+ © 2016 base-x contributors
+ © 2016 bitbegin
+ © 2016 lazy-static.rs Developers
+ © 2016 oyvindln
+ © 2016-2017 The Fuchsia Authors
+ © 2016-2018 Nuxi
+ © 2017 Aaron Power
+ © 2017 Frommi
+ © 2017 Jan Bujak
+ © 2017 Nick Stevens
+ © 2017 Redox OS Developers
+ © 2017 Robert Grosse
+ © 2017 Serde Developers
+ © 2017 Tim Visée
+ © 2017 proc-macro-nested contributors
+ © 2017-2018 Amanieu d'Antras
+ © 2017-2018 Jason Lingle
+ © 2017-2018 Sergio Benitez
+ © 2017-2019 The proptest developers
+ © 2017-2020 Gilad Naaman
+ © 2018 Dragoș Tiselice
+ © 2018 R. Janis Goldschmidt
+ © 2018 Sam Rijs, Alex Crichton and contributors
+ © 2018 Syn Developers
+ © 2018 The predicates-rs Project Developers
+ © 2018 Ulf Adams
+ © 2018-2021 Developers of the Rand project
+ © 2019 Embark Studios
+ © 2019 Hao Hou
+ © 2019 Jacob Pratt
+ © 2019 Peter Glotfelty
+ © 2019-2020 CreepySkeleton
+ © 2019-2020 Daniel Gee
+ © 2020 Ralf Jung
+ © 2021 DutchGhost
+ © 2021 matrixmultiply authors
+ © Aaron Trent
+ © Alexander Huszagh
+ © Alexis Beingessner
+ © Andreas Longva
+ © Bastian Köcher
+ © Brook Heisler
+ © Darin Morrison
+ © David Tolnay
+ © Jonas Schievink
+ © Jonathan Reem
+ © Josh Triplett
+ © Michael Layzell
+ © Ryan Scheel
+ © Steven Fackler
+ © Sun Microsystems, Inc.
+ © Wadelma
+ © Without Boats +

This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.

@@ -4092,162 +4000,161 @@ compatible with a GPL license.

For more information, please refer to <http://unlicense.org/>

- © 1995-2013 Jean-loup Gailly
- © 1995-2013 Mark Adler
- © 1999-2000, 2002 Aladdin Enterprises
- © 2001 Daniel C. Nuffer
- © 2002 Robert Ramey
- © 2004-2008 Rene Nyffenegger
- © 2014-2017, Vitaly Puzrin and Andrey Tupitsin / (C) 1995-2013, Jean-loup Gailly and Mark Adler
- © 2015 Orson Peters
- © 2015, 2017 Orson Peters
- © 2016-2019 Vinnie Falco
- © 2017-2018 Ion Gaztañaga
-
+

+ © 1995-2013 Jean-loup Gailly
+ © 1995-2013 Mark Adler
+ © 1999, 2002, Aladdin Enterprises.
+ © 1999-2000, 2002 Aladdin Enterprises
+ © 2001 Daniel C. Nuffer
+ © 2002 Robert Ramey
+ © 2004-2008 Rene Nyffenegger
+ © 2014, Peter Thorson.
+ © 2015 Orson Peters
+ © 2015, 2017 Orson Peters
+ © 2016-2019 Vinnie Falco
+ © 2017-2018 Ion Gaztañaga
+ © 2017-2018 Ion Gazta�aga +

-

This is free software, licensed under:

-

The zlib License

-

The zlib License

-

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

+

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

-

1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.

-

2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.

-

3. This notice may not be removed or altered from any source distribution.

+

1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution.

- © 1995-2017 Jean-loup Gailly
- © 1995-2017 Mark Adler
- © 2005-2011 David Schultz
- © 2006-2009 Graydon Hoare
- © 2009-2013 Mozilla Foundation
- © 2009-2016 compiler-builtins Developers
- © 2010-2011 Dmitry Vyukov
- © 2010-2020 The Rust Project Developers
- © 2012-2018 Free Software Foundation, Inc.
- © 2013 Koka El Kiwi
- © 2013-2014 The Algebra Developers
- © 2013-2018 The Gtk-rs Project Developers
- © 2013-2018 The Servo Project Developers
- © 2013-2019 Sébastien Crozet
- © 2014 Alex Crichton
- © 2014 Armin Ronacher
- © 2014 Benjamin Sago
- © 2014 Ning Sun
- © 2014 Paho Lurie-Gregg
- © 2014-2016 Simon Sapin
- © 2014-2017 Kang Seonghoon and contributors
- © 2014-2018 Jorge Aparicio
- © 2014-2020 Optimal Computing (NZ) Ltd
- © 2015 Alex Daniel Jones
- © 2015 Bartłomiej Kamiński
- © 2015 Brendan Zabarauskas
- © 2015 Brian Vincent
- © 2015 Connor Hilarides
- © 2015 Corey Richardson
- © 2015 Danny Guo
- © 2015 Dmitry Roschin
- © 2015 Gigih Aji Ibrahim
- © 2015 Johann Hofmann
- © 2015 John Nagle
- © 2015 Jordan Miner
- © 2015 Marvin Löbel
- © 2015 Milo Yip
- © 2015 Pyfisch
- © 2015 Sean McArthur
- © 2015 Steven Allen
- © 2015 THL A29 Limited, a Tencent company
- © 2015 The assert_cli Developers
- © 2015 The quick-error Developers
- © 2015 The rust-unreachable Developers
- © 2015 arcnmx
- © 2015 const-cstr developers
- © 2015 grabbag contributors
- © 2015 nwin
- © 2015 skdltmxn
- © 2015-2016 Kevin B. Knapp
- © 2015-2016 Peter Atashian
- © 2015-2016 Victor Brekenfeld
- © 2015-2016 clap-rs contributors
- © 2015-2017 Andrew Gallant
- © 2015-2017 Doug Tangren
- © 2015-2018 Guillaume Gomez
- © 2015-2018 winapi-rs developers
- © 2015-2020 Ashish Myles and contributors
- © 2015-2021 Ulrik Sverdrup (bluss)
- © 2016 A.J. Gardner
- © 2016 FullContact, Inc.
- © 2016 Itoa Developers
- © 2016 Jan Hudec
- © 2016 Junfeng Liu
- © 2016 Kathryn Long
- © 2016 Martin Geisler
- © 2016 Nika Layzell
- © 2016 Oleksii Rudenko
- © 2016 Remi Rampin and adler32-rs contributors
- © 2016 The multipart Crate Developers
- © 2016 Ticki
- © 2016 Titus Wormer
- © 2016 base-x contributors
- © 2016 bitbegin
- © 2016 lazy-static.rs Developers
- © 2016 oyvindln
- © 2016-2017 The Fuchsia Authors
- © 2016-2018 Nuxi
- © 2017 Aaron Power
- © 2017 Frommi
- © 2017 Jan Bujak
- © 2017 Nick Stevens
- © 2017 Redox OS Developers
- © 2017 Robert Grosse
- © 2017 Serde Developers
- © 2017 Tim Visée
- © 2017 proc-macro-nested contributors
- © 2017-2018 Amanieu d'Antras
- © 2017-2018 Jason Lingle
- © 2017-2018 Sergio Benitez
- © 2017-2019 The proptest developers
- © 2017-2020 Gilad Naaman
- © 2018 Dragoș Tiselice
- © 2018 R. Janis Goldschmidt
- © 2018 Sam Rijs, Alex Crichton and contributors
- © 2018 Syn Developers
- © 2018 The predicates-rs Project Developers
- © 2018 Ulf Adams
- © 2018-2021 Developers of the Rand project
- © 2019 Embark Studios
- © 2019 Hao Hou
- © 2019 Jacob Pratt
- © 2019 Peter Glotfelty
- © 2019-2020 CreepySkeleton
- © 2019-2020 Daniel Gee
- © 2020 Ralf Jung
- © 2021 DutchGhost
- © 2021 matrixmultiply authors
- © Aaron Trent
- © Alexander Huszagh
- © Alexis Beingessner
- © Andreas Longva
- © Bastian Köcher
- © Brook Heisler
- © Darin Morrison
- © David Tolnay
- © Jonas Schievink
- © Jonathan Reem
- © Josh Triplett
- © Michael Layzell
- © Ryan Scheel
- © Steven Fackler
- © Sun Microsystems, Inc.
- © Wadelma
- © Without Boats
-
+

+ © 1995-2017 Jean-loup Gailly
+ © 1995-2017 Mark Adler
+ © 2005-2011 David Schultz
+ © 2006-2009 Graydon Hoare
+ © 2009-2013 Mozilla Foundation
+ © 2009-2016 compiler-builtins Developers
+ © 2010-2011 Dmitry Vyukov
+ © 2010-2020 The Rust Project Developers
+ © 2012-2018 Free Software Foundation, Inc.
+ © 2013 Koka El Kiwi
+ © 2013-2014 The Algebra Developers
+ © 2013-2018 The Gtk-rs Project Developers
+ © 2013-2018 The Servo Project Developers
+ © 2013-2019 Sébastien Crozet
+ © 2014 Alex Crichton
+ © 2014 Armin Ronacher
+ © 2014 Benjamin Sago
+ © 2014 Ning Sun
+ © 2014 Paho Lurie-Gregg
+ © 2014-2016 Simon Sapin
+ © 2014-2017 Kang Seonghoon and contributors
+ © 2014-2018 Jorge Aparicio
+ © 2014-2020 Optimal Computing (NZ) Ltd
+ © 2015 Alex Daniel Jones
+ © 2015 Bartłomiej Kamiński
+ © 2015 Brendan Zabarauskas
+ © 2015 Brian Vincent
+ © 2015 Connor Hilarides
+ © 2015 Corey Richardson
+ © 2015 Danny Guo
+ © 2015 Dmitry Roschin
+ © 2015 Gigih Aji Ibrahim
+ © 2015 Johann Hofmann
+ © 2015 John Nagle
+ © 2015 Jordan Miner
+ © 2015 Marvin Löbel
+ © 2015 Milo Yip
+ © 2015 Pyfisch
+ © 2015 Sean McArthur
+ © 2015 Steven Allen
+ © 2015 THL A29 Limited, a Tencent company
+ © 2015 The assert_cli Developers
+ © 2015 The quick-error Developers
+ © 2015 The rust-unreachable Developers
+ © 2015 arcnmx
+ © 2015 const-cstr developers
+ © 2015 grabbag contributors
+ © 2015 nwin
+ © 2015 skdltmxn
+ © 2015-2016 Kevin B. Knapp
+ © 2015-2016 Peter Atashian
+ © 2015-2016 Victor Brekenfeld
+ © 2015-2016 clap-rs contributors
+ © 2015-2017 Andrew Gallant
+ © 2015-2017 Doug Tangren
+ © 2015-2018 Guillaume Gomez
+ © 2015-2018 winapi-rs developers
+ © 2015-2020 Ashish Myles and contributors
+ © 2015-2021 Ulrik Sverdrup (bluss)
+ © 2016 A.J. Gardner
+ © 2016 FullContact, Inc.
+ © 2016 Itoa Developers
+ © 2016 Jan Hudec
+ © 2016 Junfeng Liu
+ © 2016 Kathryn Long
+ © 2016 Martin Geisler
+ © 2016 Nika Layzell
+ © 2016 Oleksii Rudenko
+ © 2016 Remi Rampin and adler32-rs contributors
+ © 2016 The multipart Crate Developers
+ © 2016 Ticki
+ © 2016 Titus Wormer
+ © 2016 base-x contributors
+ © 2016 bitbegin
+ © 2016 lazy-static.rs Developers
+ © 2016 oyvindln
+ © 2016-2017 The Fuchsia Authors
+ © 2016-2018 Nuxi
+ © 2017 Aaron Power
+ © 2017 Frommi
+ © 2017 Jan Bujak
+ © 2017 Nick Stevens
+ © 2017 Redox OS Developers
+ © 2017 Robert Grosse
+ © 2017 Serde Developers
+ © 2017 Tim Visée
+ © 2017 proc-macro-nested contributors
+ © 2017-2018 Amanieu d'Antras
+ © 2017-2018 Jason Lingle
+ © 2017-2018 Sergio Benitez
+ © 2017-2019 The proptest developers
+ © 2017-2020 Gilad Naaman
+ © 2018 Dragoș Tiselice
+ © 2018 R. Janis Goldschmidt
+ © 2018 Sam Rijs, Alex Crichton and contributors
+ © 2018 Syn Developers
+ © 2018 The predicates-rs Project Developers
+ © 2018 Ulf Adams
+ © 2018-2021 Developers of the Rand project
+ © 2019 Embark Studios
+ © 2019 Hao Hou
+ © 2019 Jacob Pratt
+ © 2019 Peter Glotfelty
+ © 2019-2020 CreepySkeleton
+ © 2019-2020 Daniel Gee
+ © 2020 Ralf Jung
+ © 2021 DutchGhost
+ © 2021 matrixmultiply authors
+ © Aaron Trent
+ © Alexander Huszagh
+ © Alexis Beingessner
+ © Andreas Longva
+ © Bastian Köcher
+ © Brook Heisler
+ © Darin Morrison
+ © David Tolnay
+ © Jonas Schievink
+ © Jonathan Reem
+ © Josh Triplett
+ © Michael Layzell
+ © Ryan Scheel
+ © Steven Fackler
+ © Sun Microsystems, Inc.
+ © Wadelma
+ © Without Boats +

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.

2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.

3. This notice may not be removed or altered from any source distribution.

- +
``` sdbus-c++ LGPL Exception version 1.0 diff --git a/NetworkManagerP2P/src/main.cpp b/NetworkManagerP2P/src/main.cpp index 5ac848c..0bbe408 100644 --- a/NetworkManagerP2P/src/main.cpp +++ b/NetworkManagerP2P/src/main.cpp @@ -17,7 +17,7 @@ using namespace std; static void PrintHelp() { cout << "nm-pipedal-p2p - P2P Manager for NetworkManager network stack." << endl - << "Copyright (c) 2024 Robin E. R. Davies." << endl + << "Copyright (c) Robin E.R. Davies." << endl << endl << "Provides P2P connections on LINUX distributions that use NetworkManager." << endl << endl diff --git a/NetworkManagerP2P/src/ss.hpp b/NetworkManagerP2P/src/ss.hpp index af6ce2e..4b971f1 100644 --- a/NetworkManagerP2P/src/ss.hpp +++ b/NetworkManagerP2P/src/ss.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/AlsaSequencer.cpp b/PiPedalCommon/src/AlsaSequencer.cpp index 24d3735..d079ac9 100644 --- a/PiPedalCommon/src/AlsaSequencer.cpp +++ b/PiPedalCommon/src/AlsaSequencer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/PiPedalCommon/src/ConfigSerializer.cpp b/PiPedalCommon/src/ConfigSerializer.cpp index c18d220..283f6d1 100644 --- a/PiPedalCommon/src/ConfigSerializer.cpp +++ b/PiPedalCommon/src/ConfigSerializer.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/ConfigUtil.cpp b/PiPedalCommon/src/ConfigUtil.cpp index f70beb8..b5a0ebe 100644 --- a/PiPedalCommon/src/ConfigUtil.cpp +++ b/PiPedalCommon/src/ConfigUtil.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/HtmlHelper.cpp b/PiPedalCommon/src/HtmlHelper.cpp index e0de787..b295935 100644 --- a/PiPedalCommon/src/HtmlHelper.cpp +++ b/PiPedalCommon/src/HtmlHelper.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/Lv2Log.cpp b/PiPedalCommon/src/Lv2Log.cpp index 686f1c4..01f6033 100644 --- a/PiPedalCommon/src/Lv2Log.cpp +++ b/PiPedalCommon/src/Lv2Log.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/NetLinkChannelInfo.cpp b/PiPedalCommon/src/NetLinkChannelInfo.cpp index a88d343..df60d3b 100644 --- a/PiPedalCommon/src/NetLinkChannelInfo.cpp +++ b/PiPedalCommon/src/NetLinkChannelInfo.cpp @@ -3,7 +3,7 @@ Copyright (c) 2007, 2008 Johannes Berg Copyright (c) 2007 Andy Lutomirski Copyright (c) 2007 Mike Kershaw Copyright (c) 2008 Luis R. Rodriguez -Copyright (c) 2024 Robin E. R. Davies +Copyright (c) Robin E.R. Davies All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/PiPedalCommon/src/NetLinkChannelInfo.cpp.bak b/PiPedalCommon/src/NetLinkChannelInfo.cpp.bak index 8d0a8af..8b8aa98 100644 --- a/PiPedalCommon/src/NetLinkChannelInfo.cpp.bak +++ b/PiPedalCommon/src/NetLinkChannelInfo.cpp.bak @@ -3,7 +3,7 @@ Copyright (c) 2007, 2008 Johannes Berg Copyright (c) 2007 Andy Lutomirski Copyright (c) 2007 Mike Kershaw Copyright (c) 2008 Luis R. Rodriguez -Copyright (c) 2024 Robin E. R. Davies +Copyright (c) Robin E.R. Davies All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/PiPedalCommon/src/RegDb.cpp b/PiPedalCommon/src/RegDb.cpp index 262eeec..78da9da 100644 --- a/PiPedalCommon/src/RegDb.cpp +++ b/PiPedalCommon/src/RegDb.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/ServiceConfiguration.cpp b/PiPedalCommon/src/ServiceConfiguration.cpp index eab9617..3cfdd2b 100644 --- a/PiPedalCommon/src/ServiceConfiguration.cpp +++ b/PiPedalCommon/src/ServiceConfiguration.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/SysExec.cpp b/PiPedalCommon/src/SysExec.cpp index 3ffd657..55d996e 100644 --- a/PiPedalCommon/src/SysExec.cpp +++ b/PiPedalCommon/src/SysExec.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/Utf8Utils.cpp b/PiPedalCommon/src/Utf8Utils.cpp index e9519e8..eb80dd6 100644 --- a/PiPedalCommon/src/Utf8Utils.cpp +++ b/PiPedalCommon/src/Utf8Utils.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/WifiConfigSettings.cpp b/PiPedalCommon/src/WifiConfigSettings.cpp index d900033..098e5ca 100644 --- a/PiPedalCommon/src/WifiConfigSettings.cpp +++ b/PiPedalCommon/src/WifiConfigSettings.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/WifiDirectConfigSettings.cpp b/PiPedalCommon/src/WifiDirectConfigSettings.cpp index 5b674d2..c5fdd1f 100644 --- a/PiPedalCommon/src/WifiDirectConfigSettings.cpp +++ b/PiPedalCommon/src/WifiDirectConfigSettings.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/WriteTemplateFile.cpp b/PiPedalCommon/src/WriteTemplateFile.cpp index 102e675..1f99cbb 100644 --- a/PiPedalCommon/src/WriteTemplateFile.cpp +++ b/PiPedalCommon/src/WriteTemplateFile.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/include/AlsaSequencer.hpp b/PiPedalCommon/src/include/AlsaSequencer.hpp index f9a9a78..927097c 100644 --- a/PiPedalCommon/src/include/AlsaSequencer.hpp +++ b/PiPedalCommon/src/include/AlsaSequencer.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/PiPedalCommon/src/include/ChannelInfo.hpp b/PiPedalCommon/src/include/ChannelInfo.hpp index 81ca348..00b1b0a 100644 --- a/PiPedalCommon/src/include/ChannelInfo.hpp +++ b/PiPedalCommon/src/include/ChannelInfo.hpp @@ -1,3 +1,25 @@ +/* + * Copyright (c) Robin E.R. Davies + * All rights reserved. + + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ #pragma once #include diff --git a/PiPedalCommon/src/include/ConfigSerializer.hpp b/PiPedalCommon/src/include/ConfigSerializer.hpp index f946da6..f738881 100644 --- a/PiPedalCommon/src/include/ConfigSerializer.hpp +++ b/PiPedalCommon/src/include/ConfigSerializer.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/include/ConfigUtil.hpp b/PiPedalCommon/src/include/ConfigUtil.hpp index fcc51ff..15708a9 100644 --- a/PiPedalCommon/src/include/ConfigUtil.hpp +++ b/PiPedalCommon/src/include/ConfigUtil.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/include/HtmlHelper.hpp b/PiPedalCommon/src/include/HtmlHelper.hpp index c362427..afe4b1b 100644 --- a/PiPedalCommon/src/include/HtmlHelper.hpp +++ b/PiPedalCommon/src/include/HtmlHelper.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/include/Lv2Log.hpp b/PiPedalCommon/src/include/Lv2Log.hpp index d04c6f1..fdb7e23 100644 --- a/PiPedalCommon/src/include/Lv2Log.hpp +++ b/PiPedalCommon/src/include/Lv2Log.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/include/NetLinkChannelInfo.hpp.bak b/PiPedalCommon/src/include/NetLinkChannelInfo.hpp.bak index 9853d8b..3fd90d2 100644 --- a/PiPedalCommon/src/include/NetLinkChannelInfo.hpp.bak +++ b/PiPedalCommon/src/include/NetLinkChannelInfo.hpp.bak @@ -3,7 +3,7 @@ Copyright (c) 2007, 2008 Johannes Berg Copyright (c) 2007 Andy Lutomirski Copyright (c) 2007 Mike Kershaw Copyright (c) 2008 Luis R. Rodriguez -Copyright (c) 2024 Robin Davies +Copyright (c) Robin E.R. Davies All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/PiPedalCommon/src/include/NetLinkChannelInfo.hpp.x b/PiPedalCommon/src/include/NetLinkChannelInfo.hpp.x index 8e07521..7e34e33 100644 --- a/PiPedalCommon/src/include/NetLinkChannelInfo.hpp.x +++ b/PiPedalCommon/src/include/NetLinkChannelInfo.hpp.x @@ -3,7 +3,7 @@ Copyright (c) 2007, 2008 Johannes Berg Copyright (c) 2007 Andy Lutomirski Copyright (c) 2007 Mike Kershaw Copyright (c) 2008 Luis R. Rodriguez -Copyright (c) 2024 Robin Davies +Copyright (c) Robin E.R. Davies All rights reserved. Redistribution and use in sourcpe and binary forms, with or without diff --git a/PiPedalCommon/src/include/P2pConfigFiles.hpp b/PiPedalCommon/src/include/P2pConfigFiles.hpp index 76be852..1fce6b9 100644 --- a/PiPedalCommon/src/include/P2pConfigFiles.hpp +++ b/PiPedalCommon/src/include/P2pConfigFiles.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/include/RegDb.hpp b/PiPedalCommon/src/include/RegDb.hpp index 01a45ba..f1833d3 100644 --- a/PiPedalCommon/src/include/RegDb.hpp +++ b/PiPedalCommon/src/include/RegDb.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/include/ServiceConfiguration.hpp b/PiPedalCommon/src/include/ServiceConfiguration.hpp index 6749454..19ae977 100644 --- a/PiPedalCommon/src/include/ServiceConfiguration.hpp +++ b/PiPedalCommon/src/include/ServiceConfiguration.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/include/SysExec.hpp b/PiPedalCommon/src/include/SysExec.hpp index 8bfc661..18fa0ac 100644 --- a/PiPedalCommon/src/include/SysExec.hpp +++ b/PiPedalCommon/src/include/SysExec.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/include/Utf8Utils.hpp b/PiPedalCommon/src/include/Utf8Utils.hpp index b0c5d31..fd71cc3 100644 --- a/PiPedalCommon/src/include/Utf8Utils.hpp +++ b/PiPedalCommon/src/include/Utf8Utils.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2023 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/include/WifiConfigSettings.hpp b/PiPedalCommon/src/include/WifiConfigSettings.hpp index ace67af..9c28ccf 100644 --- a/PiPedalCommon/src/include/WifiConfigSettings.hpp +++ b/PiPedalCommon/src/include/WifiConfigSettings.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/include/WifiDirectConfigSettings.hpp b/PiPedalCommon/src/include/WifiDirectConfigSettings.hpp index fd590f3..3d00cda 100644 --- a/PiPedalCommon/src/include/WifiDirectConfigSettings.hpp +++ b/PiPedalCommon/src/include/WifiDirectConfigSettings.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/include/WriteTemplateFile.hpp b/PiPedalCommon/src/include/WriteTemplateFile.hpp index a488e0b..ec68479 100644 --- a/PiPedalCommon/src/include/WriteTemplateFile.hpp +++ b/PiPedalCommon/src/include/WriteTemplateFile.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/include/autoptr_vector.h b/PiPedalCommon/src/include/autoptr_vector.h index fff6224..9e7cc26 100644 --- a/PiPedalCommon/src/include/autoptr_vector.h +++ b/PiPedalCommon/src/include/autoptr_vector.h @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/include/json_variant.hpp b/PiPedalCommon/src/include/json_variant.hpp index f4dba47..430d523 100644 --- a/PiPedalCommon/src/include/json_variant.hpp +++ b/PiPedalCommon/src/include/json_variant.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2023 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/include/restrict.hpp b/PiPedalCommon/src/include/restrict.hpp index 3cf0756..cf5675d 100644 --- a/PiPedalCommon/src/include/restrict.hpp +++ b/PiPedalCommon/src/include/restrict.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/PiPedalCommon/src/include/util.hpp b/PiPedalCommon/src/include/util.hpp index fa84535..a22b92b 100644 --- a/PiPedalCommon/src/include/util.hpp +++ b/PiPedalCommon/src/include/util.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/PiPedalCommon/src/json.cpp b/PiPedalCommon/src/json.cpp index ca8e86e..c8bcfcc 100644 --- a/PiPedalCommon/src/json.cpp +++ b/PiPedalCommon/src/json.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/json_variant.cpp b/PiPedalCommon/src/json_variant.cpp index eb8b8f1..a05cb6c 100644 --- a/PiPedalCommon/src/json_variant.cpp +++ b/PiPedalCommon/src/json_variant.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2023 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/ss.hpp b/PiPedalCommon/src/ss.hpp index 6b34c10..4b971f1 100644 --- a/PiPedalCommon/src/ss.hpp +++ b/PiPedalCommon/src/ss.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/PiPedalCommon/src/util.cpp b/PiPedalCommon/src/util.cpp index 16580f5..58af4e2 100644 --- a/PiPedalCommon/src/util.cpp +++ b/PiPedalCommon/src/util.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/README.md b/README.md index 6363bf6..ee3baa3 100644 --- a/README.md +++ b/README.md @@ -9,14 +9,58 @@ -Download: v2.0.102 +Download: v2.0.103 Website: [https://rerdavies.github.io/pipedal](https://rerdavies.github.io/pipedal). Documentation: [https://rerdavies.github.io/pipedal/Documentation.html](https://rerdavies.github.io/pipedal/Documentation.html). -#### Announcing PiPedal 2.0 (2.0.102 Alpha). See the [documentation](https://rerdavies.github.io/pipedal/PiPedal2.html) for information, and instructions on how to install Pipedal 2.0. New features include support for Neural Amp Modeler A2 models, integration with Tone3000.com services for easy downloading of Neural Amp Modeler A2 models and IIRs, a new Channel Routing dialog for global routing of auxiliary input channels, and unprocessed re-amp output channels, and many other minor features, improvements, and bug fixes. Pipedal 2.0 also adds support for running PiPedal as a Progressive Web Application (PWA), which allows you to launch Pipedal from your desktop as a native desktop application. (A nice feature if you are accessing Pipedal from an Apple device). See the [documentation](https://rerdavies.github.io/pipedal/PiPedal2.html) for instructions on how to install Pipedal on your desktop as a standalone app. +#### Announcing PiPedal 2.0 (2.0.103)—a major update to PiPedal, including big new features. See the [documentation](https://rerdavies.github.io/pipedal/PiPedal.html) for information, and instructions on how to install Pipedal 2.0.   +_To download PiPedal v2.0.102, click [*here*](download.md). +To view PiPedal documentation, click [*here*](Documentation.md)._ + +Use your Raspberry Pi, or Ubuntu amd/x86-64 computer as a guitar effects pedal. Configure and control PiPedal remotedly, with your phone or tablet, or via a web browser. + +PiPedal running on a Raspberry Pi 4 or Pi 5 provides stable super-low-latency audio via external USB audio devices, or internal Raspberry Pi audio hats. + +PiPedal runs on Raspbery Pi OS (Bookworm or Trixie), or Ubuntu 24.x or later (amd64/x86-64 and aarch64). Make sure you follow the [Ubuntu post-install +instructions](https://rerdavies.github.io/pipedal/Configuring.html) to make sure your Ubuntu OS is using a realtime-capable kernel. + +{% include gallery.html %} + +New in PiPedal v2.0: + +- Support for Neural Amp Modeler (NAM) A2 models. +- Direct single-step downloads of NAM A2 models to the Pipedal server using web services provided by Tone3000.com. +- Install PiPedal as a Progressive Web App (PWA) on your Windows or Apple desktop or laptop in order to run PiPedal as a native application, without the clutter of browser chrome, address bars, and needless decorations. +- A new Channel Routing dialog which allows you to pass through Auxilliary audio channels, or unprocessed guitar inputs for later re-amping in a DAW or external hardware. +- New NAM A2-based Factory Presets, and a small selection of NAM A2 models pre-installed and ready to use. + +PiPedal includes state-of-the-art AI-based guitar amp emulation, using the TooB Neural Amp Modeler technology. And PiPedal 2.0 now includes support for the brand new NAM A2 technology, which provides event more accurate amp simulations than NAM A1, while using even less CPU. Experience the ground-breaking quality of NAM A2 models now, with PiPedal's low-latency audio engine running on your Raspberry Pi or Ubuntu computer. + +NAM changes everything! The quality of NAM A1 and A2 models is better than than amp emulations on top-of-the-line commercial guitar stomp boxes costing thousands of dollars. Simulations that not only sound like the real thing, but also respond to your playing dynamics in the same way as the real amp. + +PiPedal 2.0 integrates with Tone3000.com's web services, allowing you to directly install new NAM A2 models on the pipedal server without ever leaving the PiPedal user interface. Or download and install commercially-developed NAM models from a rich ecosystem of model providers. + + +{% include demo.html %} + +PiPedal can be remotely controlled via a web interface over Ethernet, or Wi-Fi. If you don't have access to a Wi-Fi router, PiPedal can be configured to +start a Wi-Fi hotspot automatically, whenever your Raspberry Pi can't connect to your home network. + +Install the [PiPedal Remote Android app](https://play.google.com/store/apps/details?id=com.twoplay.pipedal) to get one-click access to PiPedal via Wi-Fi networks, or Wi-Fi hotspots. If you are using PiPedal away from home, you can configure PiPedal to automatically start a Wi-Fi hotspot whenever Pipedal is unable to detect your home network (Raspberry Pi OS only). The PiPedal Client Android app will allow to connect by simply launching the app, whether you are at home, or using a Wi-Fi auto-hotspot at a gig, when away from home. + +PiPedal's user interface has been specifically designed to work well on small form-factor touch devices like phones or tablets. Clip a phone or tablet on your microphone stand on stage, and you're ready to play! Or connect via a desktop browser, for a slightly more luxurious experience. The PiPedal user-interface adapts to the screen size and orientation of your device, providing easy control of your guitar effects across a broad variety devices and screen sizes. + +PiPedal includes a pre-installed selection of LV2 plugins from the ToobAmp collection of plugins; but it works with most LV2 Audio plugins. There are literally hundreds of free high-quality LV2 audio plugins that will work with PiPedal. Just install them on your Raspberry Pi, and they will show up in PiPedal. + +If your USB audio adapter has MIDI connectors, you can use MIDI devices (keyboards, controllers, or midi floor boards) to control PiPedal while performing. A simple interface allows you to select how you would like to bind PiPedal controls to midi messages. + + + +################################################################################################## + Use your Raspberry Pi as a guitar effects pedal. Configure and control PiPedal using a remote web browsers, from your phone or tablet. PiPedal running on a Raspberry Pi 4 or Pi 5 provides stable super-low-latency audio via external USB audio devices, or internal Raspberry Pi audio hats.  @@ -36,7 +80,7 @@ If your USB audio adapter has MIDI connectors, you can use MIDI devices (keyboar - + @@ -46,42 +90,46 @@ https://github.com/user-attachments/assets/9a9fd0c6-78fc-4284-8b44-6a1929c00cc6 ----   -### [What PiPedal Is](https://rerdavies.github.io/pipedal/AboutPiPedal.html) -### [System Requirements](https://rerdavies.github.io/pipedal/SystemRequirements.html) -### [Installing PiPedal](https://rerdavies.github.io/pipedal/Installing.html) -### [PiPedal on Ubuntu](https://rerdavies.github.io/pipedal/Ubuntu.html) +#### [System Requirements](https://rerdavies.github.io/pipedal/SystemRequirements.html) +  -### [Headless Operation](https://rerdavies.github.io/pipedal/HeadlessOperation.html) -### [Configuring PiPedal After Installation](https://rerdavies.github.io/pipedal/Configuring.html) +#### [Installing PiPedal](https://rerdavies.github.io/pipedal/Installing.html) +#### [Installing PiPedal on Ubuntu](https://rerdavies.github.io/pipedal/Ubuntu.html) +#### [Headless Operation](https://rerdavies.github.io/pipedal/HeadlessOperation.html) +#### [Configuring PiPedal After Installation](https://rerdavies.github.io/pipedal/Configuring.html) +  +#### [What PiPedal Is](https://rerdavies.github.io/pipedal/WhatPiPedalIs.html) +#### [Machine Learning in PiPedal (A History)](https://rerdavies.github.io/pipedal/PiPedalHistory.html) +#### [How to Use PiPedal](https://rerdavies.github.io/pipedal/HowToUsePiPedal.html) +#### [How to Build Presets With PiPedal](https://rerdavies.github.io/pipedal/BuildingPresets.html) +#### [An Intro to Snapshots](https://rerdavies.github.io/pipedal/Snapshots.html) +#### [Neural Amp Modeler Calibration](https://rerdavies.github.io/pipedal/NamCalibration.html) +#### [Choosing a USB Audio Adapter](https://rerdavies.github.io/pipedal/ChoosingAUsbAudioAdapter.html) +#### [Optimizing Audio Latency](https://rerdavies.github.io/pipedal/AudioLatency.html) +#### [Command-Line Configuration of PiPedal](https://rerdavies.github.io/pipedal/CommandLine.html) +#### [Changing the Web Server Port](https://rerdavies.github.io/pipedal/ChangingTheWebServerPort.html)   -### [Using TooB Neural Amp Modeler](https://rerdavies.github.io/pipedal/UsingNAM.html) -### [An Intro to Snapshots](https://rerdavies.github.io/pipedal/Snapshots.html) -### [Choosing a USB Audio Adapter](https://rerdavies.github.io/pipedal/ChoosingAUsbAudioAdapter.html) -### [Optimizing Audio Latency](https://rerdavies.github.io/pipedal/AudioLatency.html) -### [Command-Line Configuration of PiPedal](https://rerdavies.github.io/pipedal/CommandLine.html) -### [Changing the Web Server Port](https://rerdavies.github.io/pipedal/ChangingTheWebServerPort.html) +#### [Using LV2 Audio Plugins](https://rerdavies.github.io/pipedal/UsingLv2Plugins.html) +#### [Which LV2 Plugins does PiPedal support?](https://rerdavies.github.io/pipedal/WhichLv2PluginsAreSupported.html) +#### [LV2 Plugins with MOD User Interfaces](https://rerdavies.github.io/pipedal/ModUiSupport.html)   -### [Using LV2 Audio Plugins](https://rerdavies.github.io/pipedal/UsingLv2Plugins.md) -### [Which LV2 Plugins does PiPedal support?](https://rerdavies.github.io/pipedal/WhichLv2PluginsAreSupported.html) -### [Support for LV2 Plugins with MOD User Interfaces](https://rerdavies.github.io/pipedal/ModUiSupport.html) - -  - -### [Frequently Asked Questions](https://rerdavies.github.io/pipedal/FAQ.html) - -  - -### [Building PiPedal from Source](https://rerdavies.github.io/pipedal/BuildingPiPedalFromSource.html) -### [Build Prerequisites](https://rerdavies.github.io/pipedal/BuildPrerequisites.html) -### [The Build System](https://rerdavies.github.io/pipedal/TheBuildSystem.html) -### [How to Debug PiPedal](https://rerdavies.github.io/pipedal/Debugging.html) +#### [Frequently Asked Questions](https://rerdavies.github.io/pipedal/FAQ.html)   +#### [Building PiPedal from Source](https://rerdavies.github.io/pipedal/BuildingPiPedalFromSource.html) +#### [Build Prerequisites](https://rerdavies.github.io/pipedal/BuildPrerequisites.html) +#### [The Build Systems](https://rerdavies.github.io/pipedal/TheBuildSystem.html) +#### [How to Debug PiPedal](https://rerdavies.github.io/pipedal/Debugging.html) #### [PiPedal Architecture](https://rerdavies.github.io/pipedal/Architecture.html) + +  + + + diff --git a/artifacts/PiPedal Logos And Screenshots.zip b/artifacts/PiPedal Logos And Screenshots.zip new file mode 100644 index 0000000..65b63a2 Binary files /dev/null and b/artifacts/PiPedal Logos And Screenshots.zip differ diff --git a/artifacts/PiPedal Logos And Screenshots/Compact Logo/PiPedal-CompactLogo-Color.svg b/artifacts/PiPedal Logos And Screenshots/Compact Logo/PiPedal-CompactLogo-Color.svg new file mode 100644 index 0000000..bb252c4 --- /dev/null +++ b/artifacts/PiPedal Logos And Screenshots/Compact Logo/PiPedal-CompactLogo-Color.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/artifacts/PiPedal Logos And Screenshots/Compact Logo/PiPedal-CompactLogo-Color.svgz b/artifacts/PiPedal Logos And Screenshots/Compact Logo/PiPedal-CompactLogo-Color.svgz new file mode 100644 index 0000000..6094871 Binary files /dev/null and b/artifacts/PiPedal Logos And Screenshots/Compact Logo/PiPedal-CompactLogo-Color.svgz differ diff --git a/artifacts/PiPedal Logos And Screenshots/Compact Logo/PiPedal-CompactLogo-DarkBg.svg b/artifacts/PiPedal Logos And Screenshots/Compact Logo/PiPedal-CompactLogo-DarkBg.svg new file mode 100644 index 0000000..204b2f3 --- /dev/null +++ b/artifacts/PiPedal Logos And Screenshots/Compact Logo/PiPedal-CompactLogo-DarkBg.svg @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/artifacts/PiPedal Logos And Screenshots/Compact Logo/PiPedal-CompactLogo-DarkBg.svgz b/artifacts/PiPedal Logos And Screenshots/Compact Logo/PiPedal-CompactLogo-DarkBg.svgz new file mode 100644 index 0000000..0419bf6 Binary files /dev/null and b/artifacts/PiPedal Logos And Screenshots/Compact Logo/PiPedal-CompactLogo-DarkBg.svgz differ diff --git a/artifacts/PiPedal Logos And Screenshots/Compact Logo/PiPedal-CompactLogo-Monochrome.svg b/artifacts/PiPedal Logos And Screenshots/Compact Logo/PiPedal-CompactLogo-Monochrome.svg new file mode 100644 index 0000000..cd9afdc --- /dev/null +++ b/artifacts/PiPedal Logos And Screenshots/Compact Logo/PiPedal-CompactLogo-Monochrome.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/artifacts/PiPedal Logos And Screenshots/Compact Logo/PiPedal-CompactLogo-Monochrome.svgz b/artifacts/PiPedal Logos And Screenshots/Compact Logo/PiPedal-CompactLogo-Monochrome.svgz new file mode 100644 index 0000000..46b81f2 Binary files /dev/null and b/artifacts/PiPedal Logos And Screenshots/Compact Logo/PiPedal-CompactLogo-Monochrome.svgz differ diff --git a/artifacts/PiPedal Logos And Screenshots/Full Logo/FullLogo-DarkBg.svg b/artifacts/PiPedal Logos And Screenshots/Full Logo/FullLogo-DarkBg.svg new file mode 100644 index 0000000..546c522 --- /dev/null +++ b/artifacts/PiPedal Logos And Screenshots/Full Logo/FullLogo-DarkBg.svg @@ -0,0 +1,330 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/artifacts/PiPedal Logos And Screenshots/Full Logo/FullLogo-DarkBg.svgz b/artifacts/PiPedal Logos And Screenshots/Full Logo/FullLogo-DarkBg.svgz new file mode 100644 index 0000000..80f07d3 Binary files /dev/null and b/artifacts/PiPedal Logos And Screenshots/Full Logo/FullLogo-DarkBg.svgz differ diff --git a/artifacts/PiPedal Logos And Screenshots/Full Logo/FullLogo.svg b/artifacts/PiPedal Logos And Screenshots/Full Logo/FullLogo.svg new file mode 100644 index 0000000..dd0e450 --- /dev/null +++ b/artifacts/PiPedal Logos And Screenshots/Full Logo/FullLogo.svg @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PiPedal + + diff --git a/artifacts/PiPedal Logos And Screenshots/Full Logo/FullLogo.svgz b/artifacts/PiPedal Logos And Screenshots/Full Logo/FullLogo.svgz new file mode 100644 index 0000000..68c05f9 Binary files /dev/null and b/artifacts/PiPedal Logos And Screenshots/Full Logo/FullLogo.svgz differ diff --git a/artifacts/PiPedal Logos And Screenshots/IconOnly/PiPedal-IconOnly-Color.svg b/artifacts/PiPedal Logos And Screenshots/IconOnly/PiPedal-IconOnly-Color.svg new file mode 100644 index 0000000..4a50aad --- /dev/null +++ b/artifacts/PiPedal Logos And Screenshots/IconOnly/PiPedal-IconOnly-Color.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + diff --git a/artifacts/PiPedal Logos And Screenshots/IconOnly/PiPedal-IconOnly-Color.svgz b/artifacts/PiPedal Logos And Screenshots/IconOnly/PiPedal-IconOnly-Color.svgz new file mode 100644 index 0000000..76b12d2 Binary files /dev/null and b/artifacts/PiPedal Logos And Screenshots/IconOnly/PiPedal-IconOnly-Color.svgz differ diff --git a/artifacts/PiPedal Logos And Screenshots/IconOnly/PiPedal-IconOnly-DarkBackground.svg b/artifacts/PiPedal Logos And Screenshots/IconOnly/PiPedal-IconOnly-DarkBackground.svg new file mode 100644 index 0000000..b0ba3d4 --- /dev/null +++ b/artifacts/PiPedal Logos And Screenshots/IconOnly/PiPedal-IconOnly-DarkBackground.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + diff --git a/artifacts/PiPedal Logos And Screenshots/IconOnly/PiPedal-IconOnly-DarkBackground.svgz b/artifacts/PiPedal Logos And Screenshots/IconOnly/PiPedal-IconOnly-DarkBackground.svgz new file mode 100644 index 0000000..76caafd Binary files /dev/null and b/artifacts/PiPedal Logos And Screenshots/IconOnly/PiPedal-IconOnly-DarkBackground.svgz differ diff --git a/artifacts/PiPedal Logos And Screenshots/IconOnly/PiPedal-IconOnly-Monochrome.svg b/artifacts/PiPedal Logos And Screenshots/IconOnly/PiPedal-IconOnly-Monochrome.svg new file mode 100644 index 0000000..79618a3 --- /dev/null +++ b/artifacts/PiPedal Logos And Screenshots/IconOnly/PiPedal-IconOnly-Monochrome.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + diff --git a/artifacts/PiPedal Logos And Screenshots/IconOnly/PiPedal-IconOnly-Monochrome.svgz b/artifacts/PiPedal Logos And Screenshots/IconOnly/PiPedal-IconOnly-Monochrome.svgz new file mode 100644 index 0000000..3b37afe Binary files /dev/null and b/artifacts/PiPedal Logos And Screenshots/IconOnly/PiPedal-IconOnly-Monochrome.svgz differ diff --git a/artifacts/PiPedal Logos And Screenshots/Logo Usage Guide.svg b/artifacts/PiPedal Logos And Screenshots/Logo Usage Guide.svg new file mode 100644 index 0000000..0755b52 --- /dev/null +++ b/artifacts/PiPedal Logos And Screenshots/Logo Usage Guide.svg @@ -0,0 +1,383 @@ + + + +Icon Only/PiPedal-CompactLogo-DarkBg.svgCompact Logo/PiPedal-CompactLogo-Color.svgIcon Only/PiPedal-IconOnly-Color.svgCompact Logo/PiPedal-CompactLogo-DarkBg.svgFull Logo/FullLogo-DarkBg.svgCompact Logo/PiPedal-CompactLogo-Monochrome.svgFull Logo/FullLogo.svgIcon Only/PiPedal-IconOnly-Color.svgPiPedal Logo Usage GuidePlease only use the .svg files. .svgz filesa are Inkscape master files that contain +UNFLATTENED references to the Spinnaker font (available on Google Fonts) + +Please be cautions of minimum size of compact icon files that contain text. As a guideline, the Compact Logo icons should be a minimum of 116px width (OR 118px height, but not both) in a browser page. + +The purple color is #7f2edfff + +Light BackgroundDark Background diff --git a/artifacts/PiPedal Logos And Screenshots/README.txt b/artifacts/PiPedal Logos And Screenshots/README.txt new file mode 100644 index 0000000..a4a7d63 --- /dev/null +++ b/artifacts/PiPedal Logos And Screenshots/README.txt @@ -0,0 +1,97 @@ +Contents +--------- + +A set of logos for PiPedal, and screenshots of Tone3000 APIs being used +with PiPedal. + +License Grant +-------------- + +Copyright (c) Robin E.R. Davies + +The contents of this .zip file are placed into the public domain to the maximum +extent allowed by law in your jurisdiction. + +You can copy, modify, and distribute, even for commercial purposes, +all without asking permission. + +Attribution is not required. + +Note that PiPedal, and the PiPedal logos are Trade Marks, and this license +does not grant unrestricted use of the Trade Marks themselves. Please +treat them with appropriate respect. + +PiPedal Landing pages +--------------------- + +The primary landing page for PiPedal is: + + https://rerdavies.github.io/pipedal/ + +My personal landing page (my blog, and all my Open Source projects) is: + +https://rerdavies.github.io/ + +The Github repository for PiPedal is: + + https://github.com/rerdavies/pipedal + +(Prefer the first link, unless you need to specifically need to refer to the repository). + + +The Logo Files +-------------- + +Please do NOT use the .svgx files. These are the raw Inkscape master +files for the .svg files, and contain direct un-flattened references +to the Spinnaker font (available on Google Fonts). + +See the file "Logo Usage Guide.svg" for a preview of what each of the +Logo .svg files are. All of the logo files have transparent backgrounds, +and are provided in light-background and dark-background variants. + +The Screenshots +--------------- + +The Screenshots directory contain the following files: + +1- A Preset Using a NAM A2 Model.png + + A screenshot of the Pipedal UI. The selected preset is one of the + current set of Factory-Default PiPedal presets. The TooB Neural Amp + Modeler plugin is selected. The selected file is a NAM A2 model of + a Marshall JCM800, that uses a NAM A2 model. + +2 - Selecting a Model.png + + A screenshot of the Model Selection dialog. The folder that has + been selected is the "/Factory Models" folder, which contains .nam + models that have been pre-installed by Pipedal. + + Note the prominent "DOWNLOAD MODEL FILES FROM TONE3000" button, + which starts the sequence for downloading models directly to the + PiPedal server, using Tone3000 APIs. + +3 - Integrated Tone3000 Tone Selection Dialog + + A screenshot of the tone selection dialog provided by Tone3000 web + services, initiated using web services provided by Tone3000.com. + + When users download a tone from Tone3000, control will be to the + PiPedal web application, which will install the selected models on + the PiPedal server. + +4 - Installing selected tones from Tone3000 on the Pipedal server.png + + A screenshot of Pipedal downloading and installing NAM A2 models + selected through Tone3000.com web services. + +5 - The Factory Model README file.png (For Tone3000 only) + + A screenshot of the README file for the PiPedal Factory Models. + + PiPedal currently comes with a pre-installed set of 5 NAM models, and + one Cabinet IR. (That number may increase before final release). Each of + these models come from the Tone3000.com library. They are licensed under + a T3K license with permission granted for use only with PiPedal. + diff --git a/artifacts/PiPedal Logos And Screenshots/Screenshots/1- A Preset Using a NAM A2 Model.png b/artifacts/PiPedal Logos And Screenshots/Screenshots/1- A Preset Using a NAM A2 Model.png new file mode 100644 index 0000000..6c8fd60 Binary files /dev/null and b/artifacts/PiPedal Logos And Screenshots/Screenshots/1- A Preset Using a NAM A2 Model.png differ diff --git a/artifacts/PiPedal Logos And Screenshots/Screenshots/2 - Selecting a Model.png b/artifacts/PiPedal Logos And Screenshots/Screenshots/2 - Selecting a Model.png new file mode 100644 index 0000000..04b71c5 Binary files /dev/null and b/artifacts/PiPedal Logos And Screenshots/Screenshots/2 - Selecting a Model.png differ diff --git a/artifacts/PiPedal Logos And Screenshots/Screenshots/3 - Integrated Tone3000 Tone Selection.png b/artifacts/PiPedal Logos And Screenshots/Screenshots/3 - Integrated Tone3000 Tone Selection.png new file mode 100644 index 0000000..a5c899f Binary files /dev/null and b/artifacts/PiPedal Logos And Screenshots/Screenshots/3 - Integrated Tone3000 Tone Selection.png differ diff --git a/artifacts/PiPedal Logos And Screenshots/Screenshots/4 - Installing selected tones from Tone3000 on the Pipedal server.png.png b/artifacts/PiPedal Logos And Screenshots/Screenshots/4 - Installing selected tones from Tone3000 on the Pipedal server.png.png new file mode 100644 index 0000000..9be4369 Binary files /dev/null and b/artifacts/PiPedal Logos And Screenshots/Screenshots/4 - Installing selected tones from Tone3000 on the Pipedal server.png.png differ diff --git a/artifacts/PiPedal Logos And Screenshots/Screenshots/5 - The Factory Model READE file.png b/artifacts/PiPedal Logos And Screenshots/Screenshots/5 - The Factory Model READE file.png new file mode 100644 index 0000000..5af42e3 Binary files /dev/null and b/artifacts/PiPedal Logos And Screenshots/Screenshots/5 - The Factory Model READE file.png differ diff --git a/artifacts/Spinnaker/OFL.txt b/artifacts/Spinnaker/OFL.txt new file mode 100644 index 0000000..1e395af --- /dev/null +++ b/artifacts/Spinnaker/OFL.txt @@ -0,0 +1,94 @@ +Copyright (c) 2011 by Sorkin Type Co (www.sorkintype.com), +with Reserved Font Name "Spinnaker". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/artifacts/Spinnaker/Spinnaker-Regular.ttf b/artifacts/Spinnaker/Spinnaker-Regular.ttf new file mode 100644 index 0000000..1538766 Binary files /dev/null and b/artifacts/Spinnaker/Spinnaker-Regular.ttf differ diff --git a/artifacts/v2 artwork/pipedal.xcf b/artifacts/v2 artwork/pipedal.xcf new file mode 100644 index 0000000..c592b36 Binary files /dev/null and b/artifacts/v2 artwork/pipedal.xcf differ diff --git a/2 b/copyright.raw similarity index 100% rename from 2 rename to copyright.raw diff --git a/debian/copyright b/debian/copyright index 45dd967..0682386 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,4792 +1,2139 @@ -Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ -Upstream-Name: pipedal -Upstream-Contact: Robin E. R. Davies -Source: https://www.example.com/software/project - Files: * -Copyright: 2021, Robin E. R. Davies +Copyright: 2022-2026, Robin Davies License: Expat -Files: src/* -Copyright: 2021, Robin E. R. Davies +Files: PiPedalCommon/src/AlsaSequencer.cpp + PiPedalCommon/src/ConfigSerializer.cpp + PiPedalCommon/src/ConfigUtil.cpp + PiPedalCommon/src/HtmlHelper.cpp + PiPedalCommon/src/Lv2Log.cpp + PiPedalCommon/src/ServiceConfiguration.cpp + PiPedalCommon/src/Utf8Utils.cpp + PiPedalCommon/src/json.cpp + PiPedalCommon/src/json_variant.cpp + PiPedalCommon/src/util.cpp +Copyright: Robin E.R. Davies License: Expat +Files: PiPedalCommon/src/NetLinkChannelInfo.cpp +Copyright: Robin E.R. Davies + 2008, Luis R. Rodriguez + 2007, Mike Kershaw + 2007, Andy Lutomirski + 2007, 2008, Johannes Berg +License: BSD-3-clause -Files: react/src -Copyright: 2020, Robin E. R. Davies. +Files: PiPedalCommon/src/include/AlsaSequencer.hpp + PiPedalCommon/src/include/ChannelInfo.hpp + PiPedalCommon/src/include/ConfigSerializer.hpp + PiPedalCommon/src/include/ConfigUtil.hpp + PiPedalCommon/src/include/P2pConfigFiles.hpp + PiPedalCommon/src/include/ServiceConfiguration.hpp + PiPedalCommon/src/include/Utf8Utils.hpp + PiPedalCommon/src/include/WifiDirectConfigSettings.hpp + PiPedalCommon/src/include/autoptr_vector.h + PiPedalCommon/src/include/json_variant.hpp + PiPedalCommon/src/include/restrict.hpp + PiPedalCommon/src/include/util.hpp +Copyright: Robin E.R. Davies License: Expat -Files: src/Lv2EventBufferWriter.hpp -Copyright: 2008-2014, David Robillard - 2021, Robin E. R. Davies -License: ISC and Expat +Files: PiPedalCommon/src/include/NetLinkChannelInfo.hpp.x +Copyright: Robin E.R. Davies + 2008, Luis R. Rodriguez + 2007, Mike Kershaw + 2007, Andy Lutomirski + 2007, 2008, Johannes Berg +License: BSD-3-clause -Files: react/node_modules/@babel/* -Copyright: 2014, -present Sebastian McKenzie and other contributors +Files: modules/* +Copyright: 2012-2025, Sebastien Rombauts (sebastien.rombauts@gmail.com) License: Expat -Files: react/node_modules/@babel/core/node_modules/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC +Files: modules/SQLiteCpp/cpplint.py +Copyright: 2005-2009, 2013, 2015, 2017, 2024, Google Inc. +License: BSD-3-clause -Files: react/node_modules/@babel/helper-compilation-targets/node_modules/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC +Files: modules/SQLiteCpp/googletest/* +Copyright: 2005-2009, 2013, 2015, 2017, 2024, Google Inc. +License: BSD-3-clause -Files: react/node_modules/@babel/helper-define-polyfill-provider/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/@babel/parser/* -Copyright: 2012-2020, various contributors (see AUTHORS) +Files: modules/SQLiteCpp/include/SQLiteCpp/Backup.h +Copyright: 2015-2025, Sebastien Rombauts (sebastien.rombauts@gmail.com) + 2015, Shibao HONG (shibaohong@outlook.com) License: Expat -Files: react/node_modules/@babel/plugin-transform-runtime/node_modules/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/@babel/preset-env/node_modules/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/@babel/preset-modules/* -Copyright: 2020, Babel +Files: modules/SQLiteCpp/include/SQLiteCpp/ExecuteMany.h +Copyright: 2019-2025, Sebastien Rombauts (sebastien.rombauts@gmail.com) + 2019, Maximilian Bachmann (contact@maxbachmann.de) License: Expat -Files: react/node_modules/@cnakazawa/* -Copyright: Copyright 2010-2011 Mikeal Rogers +Files: modules/SQLiteCpp/include/SQLiteCpp/Savepoint.h +Copyright: 2020-2025, Sebastien Rombauts (sebastien.rombauts@gmail.com) + 2020, Kelvin Hammond (hammond.kelvin@gmail.com) +License: Expat + +Files: modules/SQLiteCpp/include/SQLiteCpp/VariadicBind.h +Copyright: 2019, Maximilian Bachmann (contact@maxbachmann.de) + 2016-2025, Sebastien Rombauts (sebastien.rombauts@gmail.com) + 2016, Paul Dreik (github@pauldreik.se) +License: Expat + +Files: modules/SQLiteCpp/src/Backup.cpp +Copyright: 2015-2025, Sebastien Rombauts (sebastien.rombauts@gmail.com) + 2015, Shibao HONG (shibaohong@outlook.com) +License: Expat + +Files: modules/SQLiteCpp/src/Savepoint.cpp +Copyright: 2020-2025, Sebastien Rombauts (sebastien.rombauts@gmail.com) + 2020, Kelvin Hammond (hammond.kelvin@gmail.com) +License: Expat + +Files: modules/SQLiteCpp/tests/Backup_test.cpp +Copyright: 2015-2025, Sebastien Rombauts (sebastien.rombauts@gmail.com) + 2015, Shibao HONG (shibaohong@outlook.com) +License: Expat + +Files: modules/SQLiteCpp/tests/ExecuteMany_test.cpp +Copyright: 2019-2025, Sebastien Rombauts (sebastien.rombauts@gmail.com) + 2019, Maximilian Bachmann (contact@maxbachmann.de) +License: Expat + +Files: modules/SQLiteCpp/tests/Savepoint_test.cpp +Copyright: 2020, Kelvin Hammond (hammond.kelvin@gmail.com) +License: Expat + +Files: modules/SQLiteCpp/tests/VariadicBind_test.cpp +Copyright: 2019, Maximilian Bachmann (github@maxbachmann) + 2016-2020, Sebastien Rombauts (sebastien.rombauts@gmail.com) + 2016, Paul Dreik (github@pauldreik.se) +License: Expat + +Files: modules/libzip/* +Copyright: 1999-2025, Dieter Baron and Thomas Klausner +License: BSD-3-clause + +Files: modules/libzip/src/getopt.c +Copyright: 1987-2002, The Regents of the University of California. +License: BSD-3-clause + +Files: modules/sdbus-cpp/* +Copyright: 1991, 1999, Free Software Foundation, Inc. +License: LGPL-2.1 + +Files: modules/sdbus-cpp/include/* +Copyright: 2016-2024, Stanislav Angelovic + 2016-2021, KISTLER INSTRUMENTE AG, Winterthur, Switzerland +License: LGPL-2.1+ + +Files: modules/sdbus-cpp/src/* +Copyright: 2016-2024, Stanislav Angelovic + 2016-2021, KISTLER INSTRUMENTE AG, Winterthur, Switzerland +License: LGPL-2.1+ + +Files: modules/sdbus-cpp/tests/* +Copyright: 2016-2024, Stanislav Angelovic + 2016-2021, KISTLER INSTRUMENTE AG, Winterthur, Switzerland +License: LGPL-2.1+ + +Files: modules/sdbus-cpp/tools/xml2cpp-codegen/* +Copyright: 2016-2024, Stanislav Angelovic + 2016-2021, KISTLER INSTRUMENTE AG, Winterthur, Switzerland +License: LGPL-2.1+ + +Files: modules/websocketpp/* +Copyright: 2014, Peter Thorson. +License: BSD-3-clause or Expat or Zlib + +Files: modules/websocketpp/examples/debug_client/debug_client.cpp +Copyright: 2012, 2014-2016, Peter Thorson. +License: BSD-3-clause + +Files: modules/websocketpp/examples/debug_server/debug_server.cpp +Copyright: 2012, 2014-2016, Peter Thorson. +License: BSD-3-clause + +Files: modules/websocketpp/examples/echo_client/echo_client.cpp +Copyright: 2012, 2014-2016, Peter Thorson. +License: BSD-3-clause + +Files: modules/websocketpp/examples/echo_server/echo_handler.hpp +Copyright: 2012, 2014-2016, Peter Thorson. +License: BSD-3-clause + +Files: modules/websocketpp/examples/echo_server_tls/echo_server_tls.cpp +Copyright: 2012, 2014-2016, Peter Thorson. +License: BSD-3-clause + +Files: modules/websocketpp/examples/external_io_service/* +Copyright: 2012, 2014-2016, Peter Thorson. +License: BSD-3-clause + +Files: modules/websocketpp/examples/print_client/print_client.cpp +Copyright: 2012, 2014-2016, Peter Thorson. +License: BSD-3-clause + +Files: modules/websocketpp/examples/print_client_tls/print_client_tls.cpp +Copyright: 2012, 2014-2016, Peter Thorson. +License: BSD-3-clause + +Files: modules/websocketpp/examples/scratch_client/scratch_client.cpp +Copyright: 2012, 2014-2016, Peter Thorson. +License: BSD-3-clause + +Files: modules/websocketpp/examples/testee_client/testee_client.cpp +Copyright: 2012, 2014-2016, Peter Thorson. +License: BSD-3-clause + +Files: modules/websocketpp/examples/testee_server/testee_server.cpp +Copyright: 2012, 2014-2016, Peter Thorson. +License: BSD-3-clause + +Files: modules/websocketpp/examples/utility_client/utility_client.cpp +Copyright: 2012, 2014-2016, Peter Thorson. +License: BSD-3-clause + +Files: modules/websocketpp/tutorials/* +Copyright: 2012, 2014-2016, Peter Thorson. +License: BSD-3-clause + +Files: modules/websocketpp/websocketpp/* +Copyright: 2012, 2014-2016, Peter Thorson. +License: BSD-3-clause + +Files: modules/websocketpp/websocketpp/base64/* +Copyright: 2004-2008, René Nyffenegger +License: BSD-3-clause + +Files: modules/websocketpp/websocketpp/common/md5.hpp +Copyright: 1999, 2002, Aladdin Enterprises. +License: Zlib + +Files: modules/websocketpp/websocketpp/sha1/* +Copyright: 2011, Micael Hildenborg +License: BSD-3-clause + +Files: modules/websocketpp/websocketpp/utf8_validator.hpp +Copyright: 2008, 2009, Bjoern Hoehrmann +License: Expat + +Files: src/AesDigest.hpp + src/AlsaDriver.cpp + src/AlsaDriver.hpp + src/AlsaDriverTest.cpp + src/AtomBuffer.hpp + src/AtomConverter.cpp + src/AtomConverter.hpp + src/AudioConfig.hpp + src/AudioDriver.hpp + src/AudioFileMetadata.cpp + src/AudioFileMetadata.hpp + src/AudioFileMetadataReader.cpp + src/AudioFileMetadataReader.hpp + src/AudioFiles.cpp + src/AudioFiles.hpp + src/AudioFilesDb.cpp + src/AudioFilesDb.hpp + src/AutoLilvNode.cpp + src/AutoLilvNode.hpp + src/AvahiService.cpp + src/AvahiService.hpp + src/AvahiServiceTest.cpp + src/BootConfig.cpp + src/BootConfig.hpp + src/CpuUse.cpp + src/CpuUse.hpp + src/CrashGuard.cpp + src/CrashGuard.hpp + src/Curl.cpp + src/Curl.hpp + src/DbDezipper.cpp + src/DbDezipper.hpp + src/DeviceVus.hpp + src/DummyAudioDriver.cpp + src/DummyAudioDriver.hpp + src/FileBrowserFilesFeature.cpp + src/FileBrowserFilesFeature.hpp + src/JackDriver.cpp + src/JackDriver.hpp + src/LRUCache.hpp + src/LiteralVersion.cpp + src/LiteralVersion.hpp + src/Locale.cpp + src/MidiEvent.hpp + src/ModGui.cpp + src/ModGui.hpp + src/ModTemplateGenerator.cpp + src/ModTemplateGenerator.hpp + src/PiLatencyMain.cpp + src/PiPedalUI.cpp + src/PiPedalUI.hpp + src/PipewireInputStream.cpp + src/PipewireInputStream.hpp + src/PluginHost.hpp + src/PrettyPrinter.hpp + src/RtInversionGuard.hpp + src/SchedulerPriority.cpp + src/SchedulerPriority.hpp + src/ThreadedQueue.hpp + src/Tone3000Download.cpp + src/Tone3000Download.hpp + src/Tone3000DownloadProgress.cpp + src/Tone3000DownloadProgress.hpp + src/Tone3000DownloadType.cpp + src/Tone3000DownloadType.hpp + src/Tone3000Downloader.cpp + src/Tone3000Downloader.hpp + src/Tone3000DownloaderImpl.hpp + src/Tone3000Throttler.cpp + src/Tone3000Throttler.hpp + src/Tone3000Tone.cpp + src/Tone3000Tone.hpp + src/UnixSocket.cpp + src/UnixSocket.hpp + src/UnixSocketTest.cpp + src/UpdaterSecurity.hpp + src/Vst3Effect.cpp + src/Vst3Host.cpp + src/Vst3PresetFile.cpp + src/Vst3test.cpp + src/WebServerMod.cpp + src/WebServerMod.hpp + src/alsaCheck.cpp + src/alsaCheck.hpp + src/kconfigMain.cpp + src/utilTest.cpp +Copyright: Robin E.R. Davies +License: Expat + +Files: src/AudioHost.cpp + src/AudioHost.hpp + src/JackServerSettings.cpp + src/JackServerSettings.hpp + src/PiPedalAlsa.cpp + src/PiPedalAlsa.hpp + src/Storage.cpp +Copyright: Robin E.R. Davies + Gabriel Hernandez +License: Expat + +Files: src/Base64.hpp +Copyright: 2016, tomykaira +License: Expat + +Files: src/RingBufferReader.hpp + src/atom_object.cpp + src/atom_object.hpp +Copyright: Robin E.R Davies +License: Expat + +Files: src/Vst3MidiToEvent.hpp + src/Vst3RtStream.cpp +Copyright: 2022, Steinberg Media Technologies GmbH +License: BSD-3-clause + +Files: src/WebServerLog.hpp +Copyright: 2012, 2014-2016, Peter Thorson. +License: BSD-3-clause + +Files: src/Worker.cpp +Copyright: 2007-2012, David Robillard +License: Expat + +Files: src/gsl/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: src/mustache.hpp +Copyright: 2015-2020, Kevin Wojniak +License: BSL-1.0 + +Files: src/vst3/* +Copyright: Robin E.R. Davies +License: Expat + +Files: submodules/pipedal_p2pd/lib/* +Copyright: 2022, Robin E. R. Davies +License: Expat + +Files: submodules/pipedal_p2pd/lib/ss.h +Copyright: 2022-2026, Robin Davies +License: Expat + +Files: submodules/pipedal_p2pd/pipedal_p2pd/* +Copyright: 2022, Robin E. R. Davies +License: Expat + +Files: submodules/pipedal_p2pd/pipedal_p2pd/CommandLineParser.h + submodules/pipedal_p2pd/pipedal_p2pd/ss.h +Copyright: 2022-2026, Robin Davies +License: Expat + +Files: submodules/pipedal_p2pd/pipedal_p2pd/includes/DnsSdTxtRecord.h +Copyright: 2004, Apple Computer, Inc. License: Apache-2.0 -Files: react/node_modules/@emotion/* +Files: submodules/pipedal_p2pd/pipedal_p2pd/includes/WifiP2pDnsSdServiceInfo.h +Copyright: 2012, The Android Open Source Project +License: Apache-2.0 + +Files: vite/node_modules/@ampproject/remapping/* +Copyright: no-info-found +License: Apache-2.0 + +Files: vite/node_modules/@babel/code-frame/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@babel/compat-data/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@babel/core/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@babel/generator/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@babel/helper-compilation-targets/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@babel/helper-module-imports/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@babel/helper-module-transforms/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@babel/helper-plugin-utils/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@babel/helper-string-parser/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@babel/helper-validator-identifier/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@babel/helper-validator-option/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@babel/helpers/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@babel/parser/* +Copyright: 2012-2022, various contributors (see AUTHORS) +License: Expat + +Files: vite/node_modules/@babel/plugin-transform-react-jsx-self/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@babel/plugin-transform-react-jsx-source/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@babel/runtime/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@babel/template/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@babel/traverse/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@babel/traverse/node_modules/globals/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: vite/node_modules/@babel/types/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@emotion/babel-plugin/* Copyright: Emotion team and other contributors License: Expat -Files: react/node_modules/@eslint/* -Copyright: Sindre Sorhus (https:sindresorhus.com) +Files: vite/node_modules/@emotion/babel-plugin/node_modules/convert-source-map/* +Copyright: 2013, Thorsten Lorenz. License: Expat -Files: react/node_modules/@eslint/eslintrc/node_modules/ignore/* -Copyright: 2013, Kael Zhang , contributors +Files: vite/node_modules/@emotion/cache/* +Copyright: Emotion team and other contributors License: Expat -Files: react/node_modules/@istanbuljs/* -Copyright: 2015, 2016, 2019, Contributors -License: ISC - -Files: react/node_modules/@istanbuljs/load-nyc-config/node_modules/* -Copyright: Sindre Sorhus (sindresorhus.com) +Files: vite/node_modules/@emotion/hash/* +Copyright: Emotion team and other contributors License: Expat -Files: react/node_modules/@istanbuljs/schema/* -Copyright: 2019, 2020, CFWare, LLC +Files: vite/node_modules/@emotion/is-prop-valid/* +Copyright: Emotion team and other contributors License: Expat -Files: react/node_modules/@jest/* -Copyright: Facebook, Inc. and its affiliates. +Files: vite/node_modules/@emotion/memoize/* +Copyright: Emotion team and other contributors License: Expat -Files: react/node_modules/@jest/console/* -Copyright: Sindre Sorhus (sindresorhus.com) +Files: vite/node_modules/@emotion/react/* +Copyright: Emotion team and other contributors License: Expat -Files: react/node_modules/@jest/console/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur +Files: vite/node_modules/@emotion/serialize/* +Copyright: Emotion team and other contributors License: Expat -Files: react/node_modules/@jest/console/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov +Files: vite/node_modules/@emotion/sheet/* +Copyright: Emotion team and other contributors License: Expat -Files: react/node_modules/@jest/core/* -Copyright: Sindre Sorhus (sindresorhus.com) +Files: vite/node_modules/@emotion/styled/* +Copyright: Emotion team and other contributors License: Expat -Files: react/node_modules/@jest/core/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur +Files: vite/node_modules/@emotion/unitless/* +Copyright: Emotion team and other contributors License: Expat -Files: react/node_modules/@jest/core/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov +Files: vite/node_modules/@emotion/use-insertion-effect-with-fallbacks/* +Copyright: Emotion team and other contributors License: Expat -Files: react/node_modules/@jest/core/node_modules/jest-resolve/* -Copyright: Facebook, Inc. and its affiliates. +Files: vite/node_modules/@emotion/utils/* +Copyright: Emotion team and other contributors License: Expat -Files: react/node_modules/@jest/reporters/* -Copyright: Sindre Sorhus (sindresorhus.com) +Files: vite/node_modules/@emotion/weak-memoize/* +Copyright: Emotion team and other contributors License: Expat -Files: react/node_modules/@jest/reporters/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur +Files: vite/node_modules/@eslint-community/eslint-utils/* +Copyright: 2018, Toru Nagashima License: Expat -Files: react/node_modules/@jest/reporters/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov +Files: vite/node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys/* +Copyright: contributors +License: Apache-2.0 + +Files: vite/node_modules/@eslint-community/regexpp/* +Copyright: 2018, Toru Nagashima License: Expat -Files: react/node_modules/@jest/reporters/node_modules/jest-resolve/* -Copyright: Facebook, Inc. and its affiliates. +Files: vite/node_modules/@eslint/config-array/* +Copyright: no-info-found +License: Apache-2.0 + +Files: vite/node_modules/@eslint/config-helpers/* +Copyright: no-info-found +License: Apache-2.0 + +Files: vite/node_modules/@eslint/core/* +Copyright: no-info-found +License: Apache-2.0 + +Files: vite/node_modules/@eslint/eslintrc/* +Copyright: OpenJS Foundation and other contributors, License: Expat -Files: react/node_modules/@jest/reporters/node_modules/source-map/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/@jest/source-map/node_modules/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/@jest/transform/* -Copyright: Sindre Sorhus (sindresorhus.com) +Files: vite/node_modules/@eslint/eslintrc/node_modules/globals/* +Copyright: Sindre Sorhus (https://sindresorhus.com) License: Expat -Files: react/node_modules/@jest/transform/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur +Files: vite/node_modules/@eslint/js/* +Copyright: OpenJS Foundation and other contributors, License: Expat -Files: react/node_modules/@jest/transform/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov +Files: vite/node_modules/@eslint/object-schema/* +Copyright: no-info-found +License: Apache-2.0 + +Files: vite/node_modules/@eslint/plugin-kit/* +Copyright: no-info-found +License: Apache-2.0 + +Files: vite/node_modules/@fontsource/roboto/* +Copyright: 2011, Google Inc. +License: Apache-2.0 + +Files: vite/node_modules/@humanfs/core/* +Copyright: no-info-found +License: Apache-2.0 + +Files: vite/node_modules/@humanfs/node/* +Copyright: no-info-found +License: Apache-2.0 + +Files: vite/node_modules/@humanwhocodes/module-importer/* +Copyright: no-info-found +License: Apache-2.0 + +Files: vite/node_modules/@humanwhocodes/retry/* +Copyright: no-info-found +License: Apache-2.0 + +Files: vite/node_modules/@jridgewell/gen-mapping/* +Copyright: 2019, 2022, Justin Ridgewell License: Expat -Files: react/node_modules/@jest/transform/node_modules/source-map/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/@jest/types/* -Copyright: Sindre Sorhus (sindresorhus.com) +Files: vite/node_modules/@jridgewell/resolve-uri/* +Copyright: 2019, 2022, Justin Ridgewell License: Expat -Files: react/node_modules/@jest/types/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur +Files: vite/node_modules/@jridgewell/set-array/* +Copyright: 2019, 2022, Justin Ridgewell License: Expat -Files: react/node_modules/@jest/types/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov +Files: vite/node_modules/@jridgewell/sourcemap-codec/* +Copyright: 2015, Rich Harris License: Expat -Files: react/node_modules/@material-ui/* +Files: vite/node_modules/@jridgewell/trace-mapping/* +Copyright: 2019, 2022, Justin Ridgewell +License: Expat + +Files: vite/node_modules/@mapbox/hast-util-table-cell-style/* +Copyright: 2018, Mapbox +License: BSD-2-Clause-FreeBSD + +Files: vite/node_modules/@mui/core-downloads-tracker/* Copyright: 2014, Call-Em-All License: Expat -Files: react/node_modules/@material-ui/styles/node_modules/* -Copyright: 2017, 2018, Fredrik Nicol +Files: vite/node_modules/@mui/icons-material/* +Copyright: 2014, Call-Em-All License: Expat -Files: react/node_modules/@material-ui/system/node_modules/* -Copyright: 2017, 2018, Fredrik Nicol +Files: vite/node_modules/@mui/material/* +Copyright: 2014, Call-Em-All License: Expat -Files: react/node_modules/@nodelib/* +Files: vite/node_modules/@mui/private-theming/* +Copyright: 2014, Call-Em-All +License: Expat + +Files: vite/node_modules/@mui/styled-engine/* +Copyright: 2014, Call-Em-All +License: Expat + +Files: vite/node_modules/@mui/styles/* +Copyright: 2014, Call-Em-All +License: Expat + +Files: vite/node_modules/@mui/system/* +Copyright: 2014, Call-Em-All +License: Expat + +Files: vite/node_modules/@mui/types/* +Copyright: 2014, Call-Em-All +License: Expat + +Files: vite/node_modules/@mui/utils/* +Copyright: 2014, Call-Em-All +License: Expat + +Files: vite/node_modules/@nodelib/fs.scandir/* Copyright: Denis Malinochkin License: Expat -Files: react/node_modules/@npmcli/* -Copyright: James Halliday (mail@substack.net) and Isaac Z. Schlueter (i@izs.me) +Files: vite/node_modules/@nodelib/fs.stat/* +Copyright: Denis Malinochkin License: Expat -Files: react/node_modules/@pmmmwh/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/@rollup/* -Copyright: 2019, RollupJS Plugin Contributors (https:github.com/rollup/plugins/graphs/contributors) +Files: vite/node_modules/@nodelib/fs.walk/* +Copyright: Denis Malinochkin License: Expat -Files: react/node_modules/@rollup/pluginutils/node_modules/* -Copyright: Microsoft Corporation. +Files: vite/node_modules/@react-hook/debounce/* +Copyright: 2019, Jared Lunde License: Expat -Files: react/node_modules/@sinonjs/* -Copyright: 2018, Sinon.JS -License: BSD-3-clause +Files: vite/node_modules/@react-hook/event/* +Copyright: 2019, Jared Lunde +License: Expat -Files: react/node_modules/@sinonjs/fake-timers/* -Copyright: 2010-2014, Christian Johansen, christian@cjohansen.no. -License: BSD-3-clause +Files: vite/node_modules/@react-hook/latest/* +Copyright: 2019, Jared Lunde +License: Expat -Files: react/node_modules/@surma/* -Copyright: Copyright 2018 Google Inc. -License: Apache-2.0 +Files: vite/node_modules/@react-hook/throttle/* +Copyright: 2019, Jared Lunde +License: Expat -Files: react/node_modules/@svgr/* +Files: vite/node_modules/@react-hook/window-size/* +Copyright: 2019, Jared Lunde +License: Expat + +Files: vite/node_modules/@rollup/pluginutils/* +Copyright: 2019, RollupJS Plugin Contributors (https://github.com/rollup/plugins/graphs/contributors) +License: Expat + +Files: vite/node_modules/@rollup/pluginutils/node_modules/picomatch/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/@svgr/babel-plugin-add-jsx-attribute/* Copyright: 2017, Smooth Code License: Expat -Files: react/node_modules/@testing-library/dom/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur +Files: vite/node_modules/@svgr/babel-plugin-remove-jsx-attribute/* +Copyright: 2017, Smooth Code License: Expat -Files: react/node_modules/@testing-library/dom/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov +Files: vite/node_modules/@svgr/babel-plugin-remove-jsx-empty-expression/* +Copyright: 2017, Smooth Code License: Expat -Files: react/node_modules/@testing-library/jest-dom/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur +Files: vite/node_modules/@svgr/babel-plugin-replace-jsx-attribute-value/* +Copyright: 2017, Smooth Code License: Expat -Files: react/node_modules/@testing-library/jest-dom/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov +Files: vite/node_modules/@svgr/babel-plugin-svg-dynamic-title/* +Copyright: 2017, Smooth Code License: Expat -Files: react/node_modules/@testing-library/jest-dom/node_modules/css/* -Copyright: 2011-2014, 2017, TJ Holowaychuk +Files: vite/node_modules/@svgr/babel-plugin-svg-em-dimensions/* +Copyright: 2017, Smooth Code License: Expat -Files: react/node_modules/@testing-library/jest-dom/node_modules/source-map-resolve/* -Copyright: 2019, ZHAO Jinxiang - 2014-2020, Simon Lydell +Files: vite/node_modules/@svgr/babel-plugin-transform-react-native-svg/* +Copyright: 2017, Smooth Code License: Expat -Files: react/node_modules/@testing-library/jest-dom/node_modules/source-map/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/@testing-library/react/* -Copyright: 2017, Kent C. Dodds +Files: vite/node_modules/@svgr/babel-plugin-transform-svg-component/* +Copyright: 2017, Smooth Code License: Expat -Files: react/node_modules/@testing-library/user-event/* -Copyright: 2020, Giorgio Polvara +Files: vite/node_modules/@svgr/babel-preset/* +Copyright: 2017, Smooth Code License: Expat -Files: react/node_modules/@types/* -Copyright: Microsoft Corporation. +Files: vite/node_modules/@svgr/core/* +Copyright: 2017, Smooth Code License: Expat -Files: react/node_modules/@types/uglify-js/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/@types/webpack-sources/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/@types/webpack/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/@typescript-eslint/* -Copyright: 2019, TypeScript ESLint and other contributors -License: Expat - -Files: react/node_modules/@typescript-eslint/eslint-plugin/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/@typescript-eslint/parser/* -Copyright: JS Foundation and other contributors, https:js.foundation -License: BSD-2-clause - -Files: react/node_modules/@typescript-eslint/typescript-estree/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/@webassemblyjs/* -Copyright: 2018, Sven Sauleau -License: Expat - -Files: react/node_modules/@webassemblyjs/floating-point-hex-parser/* -Copyright: 2017, Mauro Bringolf -License: Expat - -Files: react/node_modules/@xtuc/* -Copyright: info-missing -License: Apache-2.0 - -Files: react/node_modules/@xtuc/ieee754/* -Copyright: 2008, Fair Oaks Labs, Inc. -License: BSD-3-clause - -Files: react/node_modules/accepts/* -Copyright: 2014-2017, Douglas Christopher Wilson - 2013, 2014, Jonathan Ong -License: Expat - -Files: react/node_modules/acorn-globals/* -Copyright: 2013, 2014, Forbes Lindesay -License: Expat - -Files: react/node_modules/acorn-jsx/* -Copyright: 2012-2017, Ingvar Stepanyan -License: Expat - -Files: react/node_modules/acorn-walk/* -Copyright: 2012-2020, various contributors (see AUTHORS) -License: Expat - -Files: react/node_modules/acorn/* -Copyright: 2012-2020, various contributors (see AUTHORS) -License: Expat - -Files: react/node_modules/adjust-sourcemap-loader/* -Copyright: 2016, 2019, Ben Holloway -License: Expat - -Files: react/node_modules/ajv-errors/* -Copyright: 2015-2021, Evgeny Poberezkin -License: Expat - -Files: react/node_modules/ajv-keywords/* -Copyright: 2015-2021, Evgeny Poberezkin -License: Expat - -Files: react/node_modules/ajv/* -Copyright: 2015-2021, Evgeny Poberezkin -License: Expat - -Files: react/node_modules/alphanum-sort/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/ansi-colors/* -Copyright: 2015, -present, Brian Woodward. -License: Expat - -Files: react/node_modules/ansi-escapes/* -Copyright: Sindre Sorhus (https:sindresorhus.com) -License: Expat - -Files: react/node_modules/ansi-escapes/node_modules/* -Copyright: Sindre Sorhus (https:/sindresorhus.com) -License: Expat - -Files: react/node_modules/ansi-html/* -Copyright: info-missing -License: Apache-2.0 - -Files: react/node_modules/anymatch/* -Copyright: 2019, Elan Shanker, Paul Miller (https:paulmillr.com) -License: ISC - -Files: react/node_modules/aproba/* -Copyright: 2015, 2017, Rebecca Turner -License: ISC - -Files: react/node_modules/argparse/* -Copyright: 2011-2015, Vitaly Puzrin -License: Expat - -Files: react/node_modules/aria-query/* -Copyright: 2020 A11yance -License: Apache-2.0 - -Files: react/node_modules/arity-n/* -Copyright: 2015, Christoph Hermann -License: Expat - -Files: react/node_modules/arr-diff/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/arr-flatten/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/arr-union/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/array-flatten/* -Copyright: 2014, Blake Embrey (hello@blakeembrey.com) -License: Expat - -Files: react/node_modules/array-includes/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/array-unique/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/array.prototype.flat/* -Copyright: 2017, ECMAScript Shims -License: Expat - -Files: react/node_modules/array.prototype.flatmap/* -Copyright: 2017, ECMAScript Shims -License: Expat - -Files: react/node_modules/asn1.js/* -Copyright: 2017, Fedor Indutny -License: Expat - -Files: react/node_modules/asn1.js/node_modules/* -Copyright: Fedor Indutny, 2015. -License: Expat - -Files: react/node_modules/assert/* -Copyright: Joyent, Inc. and other Node contributors. -License: Expat - -Files: react/node_modules/assert/node_modules/inherits/* -Copyright: Isaac Z. Schlueter -License: ISC - -Files: react/node_modules/assign-symbols/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/astral-regex/* -Copyright: Kevin Mårtensson (github.com/kevva) -License: Expat - -Files: react/node_modules/async-limiter/* -Copyright: 2017, Samuel Reed -License: Expat - -Files: react/node_modules/async/* -Copyright: 2010-2018, Caolan McMahon -License: Expat - -Files: react/node_modules/asynckit/* -Copyright: 2016, Alex Indigo -License: Expat - -Files: react/node_modules/at-least-node/* -Copyright: 2020, Ryan Zimmerman -License: ISC - -Files: react/node_modules/autoprefixer/* -Copyright: 2013, 2017, Andrey Sitnik -License: Expat - -Files: react/node_modules/axe-core/* -Copyright: Copyright (c) 2021 Deque Systems, Inc. -License: MPL-2.0 - -Files: react/node_modules/axobject-query/* -Copyright: Copyright 2020 A11yance -License: Apache-2.0 - -Files: react/node_modules/babel-eslint/node_modules/eslint-visitor-keys/* -Copyright: Contributors -License: Apache-2.0 - - -Files: react/node_modules/babel-eslint/* -Copyright: Copyright (c) 2014-2016 Sebastian McKenzie -License: Expat - -Files: react/node_modules/babel-extract-comments/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/babel-jest/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/babel-jest/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/babel-loader/* -Copyright: 2014-2019, Luís Couto -License: Expat - -Files: react/node_modules/babel-loader/node_modules/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/babel-plugin-dynamic-import-node/* -Copyright: 2016, Airbnb -License: Expat - -Files: react/node_modules/babel-plugin-istanbul/* -Copyright: 2016, Istanbul Code Coverage -License: BSD-3-clause - -Files: react/node_modules/babel-plugin-jest-hoist/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/babel-plugin-macros/* -Copyright: 2017, Kent C. Dodds -License: Expat - -Files: react/node_modules/babel-plugin-macros/node_modules/* +Files: vite/node_modules/@svgr/core/node_modules/cosmiconfig/* Copyright: 2015, David Clark License: Expat -Files: react/node_modules/babel-plugin-named-asset-import/* -Copyright: 2013, -present, Facebook, Inc. +Files: vite/node_modules/@svgr/hast-util-to-babel-ast/* +Copyright: 2017, Smooth Code License: Expat -Files: react/node_modules/babel-plugin-polyfill-corejs2/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/babel-plugin-polyfill-corejs3/* -Copyright: 2014, -present Nicolò Ribaudo and other contributors +Files: vite/node_modules/@svgr/plugin-jsx/* +Copyright: 2017, Smooth Code License: Expat -Files: react/node_modules/babel-plugin-polyfill-regenerator/* -Copyright: 2014, -present Nicolò Ribaudo and other contributors +Files: vite/node_modules/@types/babel__core/* +Copyright: 2015, Microsoft Corporation. License: Expat -Files: react/node_modules/babel-plugin-transform-react-remove-prop-types/* -Copyright: 2015, Nikita Gusakov +Files: vite/node_modules/@types/babel__generator/* +Copyright: 2015, Microsoft Corporation. License: Expat -Files: react/node_modules/babel-preset-current-node-syntax/* -Copyright: 2020, Nicolò Ribaudo and other contributors +Files: vite/node_modules/@types/babel__template/* +Copyright: 2015, Microsoft Corporation. License: Expat -Files: react/node_modules/babel-preset-jest/* -Copyright: Facebook, Inc. and its affiliates. +Files: vite/node_modules/@types/babel__traverse/* +Copyright: 2015, Microsoft Corporation. License: Expat -Files: react/node_modules/babel-preset-react-app/* -Copyright: 2014, -present Sebastian McKenzie and other contributors +Files: vite/node_modules/@types/debug/* +Copyright: 2015, Microsoft Corporation. License: Expat -Files: react/node_modules/babel-preset-react-app/node_modules/semver/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/babel-runtime/* -Copyright: 2014-2021, Denis Pushkarev +Files: vite/node_modules/@types/estree-jsx/* +Copyright: 2015, Microsoft Corporation. License: Expat -Files: react/node_modules/babylon/* -Copyright: 2012-2020, various contributors (see AUTHORS) +Files: vite/node_modules/@types/estree/* +Copyright: 2015, Microsoft Corporation. License: Expat -Files: react/node_modules/base/* -Copyright: 2014-2018, Jon Schlinkert. +Files: vite/node_modules/@types/hast/* +Copyright: 2015, Microsoft Corporation. License: Expat -Files: react/node_modules/base/node_modules/define-property/* -Copyright: 2014-2017, Jon Schlinkert +Files: vite/node_modules/@types/json-schema/* +Copyright: 2015, Microsoft Corporation. License: Expat -Files: react/node_modules/base64-js/* -Copyright: 2014, Jameson Little +Files: vite/node_modules/@types/mdast/* +Copyright: 2015, Microsoft Corporation. License: Expat -Files: react/node_modules/batch/* -Copyright: 2011-2014, 2017, TJ Holowaychuk +Files: vite/node_modules/@types/ms/* +Copyright: 2015, Microsoft Corporation. License: Expat -Files: react/node_modules/bfj/* -Copyright: 2012-2019, Phil Booth +Files: vite/node_modules/@types/parse-json/* +Copyright: 2015, Microsoft Corporation. License: Expat -Files: react/node_modules/big.js/* -Copyright: 2018, Michael Mclaughlin +Files: vite/node_modules/@types/prop-types/* +Copyright: 2015, Microsoft Corporation. License: Expat -Files: react/node_modules/binary-extensions/* -Copyright: 2019, Sindre Sorhus (https:sindresorhus.com), Paul Miller (https:paulmillr.com) +Files: vite/node_modules/@types/react-dom/* +Copyright: 2015, Microsoft Corporation. License: Expat -Files: react/node_modules/bluebird/* -Copyright: 2013-2018, Petka Antonov +Files: vite/node_modules/@types/react-transition-group/* +Copyright: 2015, Microsoft Corporation. License: Expat -Files: react/node_modules/bn.js/* -Copyright: Fedor Indutny, 2015. +Files: vite/node_modules/@types/react-window/* +Copyright: 2015, Microsoft Corporation. License: Expat -Files: react/node_modules/body-parser/* -Copyright: 2011-2014, 2017, TJ Holowaychuk +Files: vite/node_modules/@types/react/* +Copyright: 2015, Microsoft Corporation. License: Expat -Files: react/node_modules/body-parser/node_modules/bytes/* -Copyright: 2015, Jed Watson - 2012-2014, TJ Holowaychuk +Files: vite/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. License: Expat -Files: react/node_modules/bonjour/* -Copyright: 2015-2018, Thomas Watson Steen +Files: vite/node_modules/@typescript-eslint/eslint-plugin/* +Copyright: 2019, 2021, typescript-eslint and other contributors License: Expat -Files: react/node_modules/brace-expansion/* +Files: vite/node_modules/@typescript-eslint/parser/* +Copyright: 2019, 2021, typescript-eslint and other contributors +License: Expat + +Files: vite/node_modules/@typescript-eslint/scope-manager/* +Copyright: 2019, 2021, typescript-eslint and other contributors +License: Expat + +Files: vite/node_modules/@typescript-eslint/type-utils/* +Copyright: 2019, 2021, typescript-eslint and other contributors +License: Expat + +Files: vite/node_modules/@typescript-eslint/types/* +Copyright: 2019, 2021, typescript-eslint and other contributors +License: Expat + +Files: vite/node_modules/@typescript-eslint/typescript-estree/* +Copyright: 2019, 2021, typescript-eslint and other contributors +License: Expat + +Files: vite/node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion/* Copyright: 2013, Julian Gruber License: Expat -Files: react/node_modules/braces/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/browser-process-hrtime/* -Copyright: 2014, kumavis -License: BSD-2-clause - -Files: react/node_modules/browserify-aes/* -Copyright: 2014-2017, browserify-aes contributors -License: Expat - -Files: react/node_modules/browserify-cipher/* -Copyright: 2014-2017, Calvin Metcalf & contributors -License: Expat - -Files: react/node_modules/browserify-des/* -Copyright: 2014-2017, Calvin Metcalf, Fedor Indutny & contributors -License: Expat - -Files: react/node_modules/browserify-rsa/* -Copyright: 2014-2017, Calvin Metcalf & contributors -License: Expat - -Files: react/node_modules/browserify-sign/* -Copyright: 2014, 2015, Calvin Metcalf and browserify-sign contributors +Files: vite/node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch/* +Copyright: 2011-2023, Isaac Z. Schlueter and Contributors License: ISC -Files: react/node_modules/browserify-sign/node_modules/* -Copyright: Node.js contributors. +Files: vite/node_modules/@typescript-eslint/typescript-estree/node_modules/semver/* +Copyright: 2011-2023, Isaac Z. Schlueter and Contributors +License: ISC + +Files: vite/node_modules/@typescript-eslint/utils/* +Copyright: 2019, 2021, typescript-eslint and other contributors License: Expat -Files: react/node_modules/browserify-sign/node_modules/safe-buffer/* -Copyright: Feross Aboukhadijeh +Files: vite/node_modules/@typescript-eslint/visitor-keys/* +Copyright: 2019, 2021, typescript-eslint and other contributors License: Expat -Files: react/node_modules/browserify-zlib/* -Copyright: 2014, 2015, Devon Govett +Files: vite/node_modules/@ungap/structured-clone/* +Copyright: 2018-2025, Andrea Giammarchi, @WebReflection +License: ISC + +Files: vite/node_modules/@vitejs/plugin-react/* +Copyright: 2013-2017, 2019 License: Expat -Files: react/node_modules/browserslist/* -Copyright: 2014, Andrey Sitnik and other contributors +Files: vite/node_modules/acorn-jsx/* +Copyright: 2012-2017, Ingvar Stepanyan License: Expat -Files: react/node_modules/buffer-from/* -Copyright: 2016, 2018, Linus Unnebäck +Files: vite/node_modules/acorn/* +Copyright: 2012-2022, various contributors (see AUTHORS) License: Expat -Files: react/node_modules/buffer-indexof/* -Copyright: 2013, Ryan Day +Files: vite/node_modules/ajv/* +Copyright: 2015-2017, Evgeny Poberezkin License: Expat -Files: react/node_modules/buffer-xor/* -Copyright: 2014, 2015, Daniel Cousens +Files: vite/node_modules/ansi-styles/* +Copyright: Sindre Sorhus (sindresorhus.com) License: Expat -Files: react/node_modules/buffer/* -Copyright: Feross Aboukhadijeh, and other contributors. +Files: vite/node_modules/argparse/* +Copyright: 2001-2010, i.e., " +License: CNRI-Python-GPL-Compatible or GPL or PSF-2.0 + +Files: vite/node_modules/babel-plugin-macros/* +Copyright: 2020, Kent C. Dodds License: Expat -Files: react/node_modules/builtin-modules/* -Copyright: Sindre Sorhus (https:sindresorhus.com) +Files: vite/node_modules/bail/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer License: Expat -Files: react/node_modules/builtin-status-codes/* -Copyright: Ben Drucker (bendrucker.me) +Files: vite/node_modules/brace-expansion/* +Copyright: 2013, Julian Gruber License: Expat -Files: react/node_modules/bytes/* -Copyright: 2015, Jed Watson - 2012-2014, TJ Holowaychuk +Files: vite/node_modules/braces/* +Copyright: 2013-2017, 2019 License: Expat -Files: react/node_modules/cacache/* -Copyright: James Halliday (mail@substack.net) and Isaac Z. Schlueter (i@izs.me) +Files: vite/node_modules/browserslist/* +Copyright: 2014, 2022, Andrey Sitnik and other contributors License: Expat -Files: react/node_modules/cache-base/* -Copyright: 2014-2018, Jon Schlinkert. +Files: vite/node_modules/callsites/* +Copyright: Sindre Sorhus (sindresorhus.com) License: Expat -Files: react/node_modules/call-bind/* -Copyright: 2013-2020, Jordan Harband +Files: vite/node_modules/camelcase/* +Copyright: Sindre Sorhus (https://sindresorhus.com) License: Expat -Files: react/node_modules/camel-case/* -Copyright: 2014, Blake Embrey (hello@blakeembrey.com) -License: Expat - -Files: react/node_modules/camelcase/* -Copyright: Sindre Sorhus (https:sindresorhus.com) -License: Expat - -Files: react/node_modules/caniuse-api/* -Copyright: 2014, Sébastien Balayn -License: Expat - -Files: react/node_modules/caniuse-lite/* -Copyright: caniuse.com +Files: vite/node_modules/caniuse-lite/* +Copyright: including, without limitation License: CC-BY-4.0 -Files: react/node_modules/case-sensitive-paths-webpack-plugin/* -Copyright: 2018, Michael Pratt +Files: vite/node_modules/ccount/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer License: Expat -Files: react/node_modules/char-regex/* -Copyright: 2019, Richie Bendall +Files: vite/node_modules/chalk/* +Copyright: Sindre Sorhus (sindresorhus.com) License: Expat -Files: react/node_modules/check-types/* -Copyright: 2012-2019, Phil Booth +Files: vite/node_modules/character-entities-html4/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer License: Expat -Files: react/node_modules/chokidar/* -Copyright: 2012-2019, Paul Miller (https:paulmillr.com), Elan Shanker +Files: vite/node_modules/character-entities-legacy/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer License: Expat -Files: react/node_modules/chownr/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/ci-info/* -Copyright: 2015-2018, Thomas Watson Steen +Files: vite/node_modules/character-entities/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer License: Expat -Files: react/node_modules/cipher-base/* -Copyright: 2017, crypto-browserify contributors +Files: vite/node_modules/character-reference-invalid/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer License: Expat -Files: react/node_modules/cjs-module-lexer/* -Copyright: 2018-2020, Guy Bedford -License: Expat - -Files: react/node_modules/class-utils/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/clean-css/* -Copyright: 2017, JakubPawlowicz.com -License: Expat - -Files: react/node_modules/clean-css/node_modules/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/clsx/* +Files: vite/node_modules/clsx/* Copyright: Luke Edwards (lukeed.com) License: Expat -Files: react/node_modules/co/* -Copyright: 2014, TJ Holowaychuk <tj@vision-media.ca> -License: Expat - -Files: react/node_modules/coa/* -Copyright: 2015, -present Sergey Berezhnoy -License: Expat - -Files: react/node_modules/collect-v8-coverage/* -Copyright: 2019, Simen Bekkhus -License: Expat - -Files: react/node_modules/collection-visit/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/color-convert/* +Files: vite/node_modules/color-convert/* Copyright: 2011-2016, Heather Arthur License: Expat -Files: react/node_modules/color-name/* +Files: vite/node_modules/color-name/* Copyright: 2015, Dmitry Ivanov License: Expat -Files: react/node_modules/color-string/* -Copyright: 2011-2016, Heather Arthur +Files: vite/node_modules/comma-separated-tokens/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer License: Expat -Files: react/node_modules/color/* -Copyright: 2012, Heather Arthur -License: Expat - -Files: react/node_modules/combined-stream/* -Copyright: 2011, Debuggable Limited -License: Expat - -Files: react/node_modules/commander/* -Copyright: 2011-2014, 2017, TJ Holowaychuk -License: Expat - -Files: react/node_modules/commondir/* -Copyright: 2010, 2013, James Halliday (mail@substack.net) -License: Expat - -Files: react/node_modules/component-emitter/* -Copyright: 2014, Component contributors -License: Expat - -Files: react/node_modules/compressible/* -Copyright: 2015, Douglas Christopher Wilson - 2014, Jeremiah Senkpiel - 2013, Jonathan Ong -License: Expat - -Files: react/node_modules/compression/* -Copyright: 2011-2014, 2017, TJ Holowaychuk -License: Expat - -Files: react/node_modules/concat-map/* -Copyright: info-missing -License: Expat - -Files: react/node_modules/concat-stream/* -Copyright: 2013, Max Ogden -License: Expat - -Files: react/node_modules/confusing-browser-globals/* -Copyright: 2013, -present, Facebook, Inc. -License: Expat - -Files: react/node_modules/connect-history-api-fallback/* -Copyright: 2012, Ben Ripkens http:bripkens.de -License: Expat - -Files: react/node_modules/console-browserify/* -Copyright: 2012-2014, Raynos. -License: Expat - -Files: react/node_modules/content-disposition/* -Copyright: 2014-2017, Douglas Christopher Wilson -License: Expat - -Files: react/node_modules/content-type/* -Copyright: 2014-2017, Douglas Christopher Wilson -License: Expat - -Files: react/node_modules/convert-source-map/* +Files: vite/node_modules/convert-source-map/* Copyright: 2013, Thorsten Lorenz. License: Expat -Files: react/node_modules/cookie/* -Copyright: 2015, Douglas Christopher Wilson - 2012-2014, Roman Shtylman -License: Expat - -Files: react/node_modules/copy-concurrently/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/copy-descriptor/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/core-js-compat/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/core-js-pure/* -Copyright: 2014-2021, Denis Pushkarev -License: Expat - -Files: react/node_modules/core-js/* -Copyright: 2014-2021, Denis Pushkarev -License: Expat - -Files: react/node_modules/core-util-is/* -Copyright: Node.js contributors. -License: Expat - -Files: react/node_modules/cosmiconfig/* +Files: vite/node_modules/cosmiconfig/* Copyright: 2015, David Clark License: Expat -Files: react/node_modules/create-ecdh/* -Copyright: 2014-2017, createECDH contributors -License: Expat - -Files: react/node_modules/create-ecdh/node_modules/* -Copyright: Fedor Indutny, 2015. -License: Expat - -Files: react/node_modules/create-hash/* -Copyright: 2017, crypto-browserify contributors -License: Expat - -Files: react/node_modules/create-hmac/* -Copyright: 2017, crypto-browserify contributors -License: Expat - -Files: react/node_modules/cross-spawn/* -Copyright: 2018, Made With MOXY Lda -License: Expat - -Files: react/node_modules/cross-spawn/node_modules/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/crypto-browserify/* -Copyright: 2013, Dominic Tarr -License: Expat - -Files: react/node_modules/css-has-pseudo/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/css-loader/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/css-select-base-adapter/* -Copyright: 2018, Nik Coughlin -License: Expat - -Files: react/node_modules/css-select/* -Copyright: Felix Böhm -License: BSD-2-clause - -Files: react/node_modules/css-tree/* -Copyright: 2016-2019, Roman Dvornov -License: Expat - -Files: react/node_modules/css-tree/node_modules/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/css-vendor/* -Copyright: 2014, -present Oleg Slobodskoi -License: Expat - -Files: react/node_modules/css-what/* -Copyright: Felix Böhm -License: BSD-2-clause - -Files: react/node_modules/css/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/cssnano-preset-default/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/cssnano-util-get-arguments/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/cssnano-util-get-match/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/cssnano-util-raw-cache/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/cssnano-util-same-parent/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/cssnano/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/cssnano/node_modules/* -Copyright: Sindre Sorhus (sindresorhus.com) -License: Expat - -Files: react/node_modules/cssnano/node_modules/cosmiconfig/* -Copyright: 2015, David Clark -License: Expat - -Files: react/node_modules/csso/* -Copyright: 2016-2019, Roman Dvornov -License: Expat - -Files: react/node_modules/csso/node_modules/source-map/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/cssstyle/* -Copyright: Chad Walker -License: Expat - -Files: react/node_modules/csstype/* -Copyright: 2017, 2018, Fredrik Nicol -License: Expat - -Files: react/node_modules/cyclist/* -Copyright: 2013-2016, 2018, Mathias Buus -License: Expat - -Files: react/node_modules/d/* -Copyright: 2011-2020, Mariusz Nowak, @medikoo, medikoo.com -License: ISC - -Files: react/node_modules/damerau-levenshtein/* -Copyright: 2018, Tadeusz Łazurski -License: BSD-2-clause - -Files: react/node_modules/debug/* -Copyright: 2011-2014, 2017, TJ Holowaychuk -License: Expat - -Files: react/node_modules/decode-uri-component/* -Copyright: Sam Verschueren (github.com/SamVerschueren) -License: Expat - -Files: react/node_modules/dedent/* -Copyright: 2015, Desmond Brand (dmnd@desmondbrand.com) -License: Expat - -Files: react/node_modules/deep-equal/* -Copyright: 2012-2014, James Halliday , 2009, Thomas Robinson <280north.com> -License: Expat - -Files: react/node_modules/deep-is/* -Copyright: 2012, James Halliday - 2012, 2013, Thorsten Lorenz - 2009, Thomas Robinson <280north.com> -License: Expat - -Files: react/node_modules/default-gateway/* -Copyright: silverwind -License: BSD-2-clause - -Files: react/node_modules/define-properties/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/define-property/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/del/node_modules/rimraf/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/delayed-stream/* -Copyright: 2011, Debuggable Limited -License: Expat - -Files: react/node_modules/depd/* -Copyright: 2014-2017, Douglas Christopher Wilson -License: Expat - -Files: react/node_modules/destroy/* -Copyright: 2014, Jonathan Ong me@jongleberry.com -License: Expat - -Files: react/node_modules/detect-node/* -Copyright: 2017, Ilya Kantor -License: Expat - -Files: react/node_modules/detect-port-alt/* -Copyright: 2015, xdf -License: Expat - -Files: react/node_modules/detect-port-alt/node_modules/* -Copyright: 2011-2014, 2017, TJ Holowaychuk -License: Expat - -Files: react/node_modules/diff-sequences/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/diffie-hellman/* -Copyright: 2017, Calvin Metcalf -License: Expat - -Files: react/node_modules/diffie-hellman/node_modules/* -Copyright: Fedor Indutny, 2015. -License: Expat - -Files: react/node_modules/dir-glob/* -Copyright: Kevin Mårtensson (github.com/kevva) -License: Expat - -Files: react/node_modules/dns-equal/* -Copyright: 2015-2018, Thomas Watson Steen -License: Expat - -Files: react/node_modules/dns-packet/* -Copyright: 2013-2016, 2018, Mathias Buus -License: Expat - -Files: react/node_modules/dns-txt/* -Copyright: 2015-2018, Thomas Watson Steen -License: Expat - -Files: react/node_modules/doctrine/* -Copyright: JS Foundation and other contributors, https://js.foundation - Copyright (C) 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about) -License: Apache-2.0 - -Files: react/node_modules/dom-converter/* -Copyright: 2013-2015, Aria Minaei -License: Expat - -Files: react/node_modules/dom-helpers/* -Copyright: 2015, Jason Quense -License: Expat - -Files: react/node_modules/dom-serializer/* -Copyright: Felix Böhm -License: BSD-2-clause - -Files: react/node_modules/domelementtype/* -Copyright: Felix Böhm -License: BSD-2-clause - -react/node_modules/domelementtype/* - -Files: react/node_modules/domhandler/* -Copyright: Felix Böhm -License: BSD-2-clause - -Files: react/node_modules/domutils/* -Copyright: Felix Böhm -License: BSD-2-clause - -Files: react/node_modules/dot-case/* -Copyright: 2014, Blake Embrey (hello@blakeembrey.com) -License: Expat - -Files: react/node_modules/dotenv-expand/* -Copyright: 2015, 2016, Scott Motte -License: BSD-2-clause - -Files: react/node_modules/dotenv/* -Copyright: 2015, 2016, Scott Motte -License: BSD-2-clause - -Files: react/node_modules/duplexer/* -Copyright: 2012-2014, Raynos. -License: Expat - -Files: react/node_modules/duplexify/* -Copyright: 2013-2016, 2018, Mathias Buus -License: Expat - -Files: react/node_modules/ee-first/* -Copyright: 2014, Jonathan Ong me@jongleberry.com -License: Expat - -Files: react/node_modules/ejs/* -Copyright: Copyright 2112 Matthew Eernisse (mde@fleegix.org) -License: Apache-2.0 - -Files: react/node_modules/electron-to-chromium/* -Copyright: 2018, Kilian Valkhof -License: ISC - -Files: react/node_modules/elliptic/* -Copyright: Fedor Indutny, 2015. -License: Expat - -Files: react/node_modules/emittery/* -Copyright: Sindre Sorhus (https:sindresorhus.com) -License: Expat - -Files: react/node_modules/encodeurl/* -Copyright: 2014-2017, Douglas Christopher Wilson -License: Expat - -Files: react/node_modules/end-of-stream/* -Copyright: 2013-2016, 2018, Mathias Buus -License: Expat - -Files: react/node_modules/enhanced-resolve/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/enquirer/* -Copyright: 2016, -present, Jon Schlinkert. -License: Expat - -Files: react/node_modules/entities/* -Copyright: Felix Böhm -License: BSD-2-clause - -Files: react/node_modules/error-ex/* -Copyright: 2015, JD Ballard -License: Expat - -Files: react/node_modules/error-stack-parser/* -Copyright: 2017, Eric Wendelin and other contributors -License: Expat - -Files: react/node_modules/es-abstract/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/es-to-primitive/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/es5-ext/* -Copyright: 2011-2020, Mariusz Nowak, @medikoo, medikoo.com -License: ISC - -Files: react/node_modules/es6-iterator/* -Copyright: 2013-2017, Mariusz Nowak (www.medikoo.com) -License: Expat - -Files: react/node_modules/es6-symbol/* -Copyright: 2011-2020, Mariusz Nowak, @medikoo, medikoo.com -License: ISC - -Files: react/node_modules/escalade/* -Copyright: Luke Edwards (lukeed.com) -License: Expat - -Files: react/node_modules/escape-html/* -Copyright: 2015, Tiancheng "Timothy" Gu - 2015, Andreas Lubbe - 2012, 2013, TJ Holowaychuk -License: Expat - -Files: react/node_modules/escodegen/* -Copyright: 2012, Yusuke Suzuki (twitter: @Constellation) and other contributors. -License: BSD-2-clause - -Files: react/node_modules/escodegen/node_modules/* -Copyright: George Zahariev -License: Expat - -Files: react/public/fonts/* -Copyright: Google LLC -License: Apache-2.0 - -Files: react/node_modules/escodegen/node_modules/estraverse/* -Copyright: Copyright (C) 2012-2016 [Yusuke Suzuki](http://github.com/Constellation) -License: BSD-2-clause - -Files: react/node_modules/escodegen/node_modules/source-map/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/eslint-config-react-app/* -Copyright: 2013, -present, Facebook, Inc. -License: Expat - -Files: react/node_modules/eslint-import-resolver-node/* -Copyright: 2015, Ben Mosher -License: Expat - -Files: react/node_modules/eslint-import-resolver-node/node_modules/* -Copyright: 2011-2014, 2017, TJ Holowaychuk -License: Expat - -Files: react/node_modules/eslint-module-utils/node_modules/debug/* -Copyright: 2011-2014, 2017, TJ Holowaychuk -License: Expat - -Files: react/node_modules/eslint-plugin-flowtype/* -Copyright: 2015, 2018, Gajus Kuizinas (http:gajus.com/) -License: BSD-3-clause - -Files: react/node_modules/eslint-plugin-import/* -Copyright: 2015, Ben Mosher -License: Expat - -Files: react/node_modules/eslint-plugin-import/node_modules/* -Copyright: Sindre Sorhus (sindresorhus.com) -License: Expat - -Files: react/node_modules/eslint-plugin-import/node_modules/debug/* -Copyright: 2011-2014, 2017, TJ Holowaychuk -License: Expat - -Files: react/node_modules/eslint-plugin-import/node_modules/doctrine/* -Copyright: Copyright JS Foundation and other contributors, https://js.foundation - Copyright (C) 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about) -License: Apache-2.0 - -Files: react/node_modules/eslint-plugin-import/node_modules/resolve/* -Copyright: 2012, 2013, James Halliday -License: Expat - -Files: react/node_modules/eslint-plugin-jest/* -Copyright: 2018, Jonathan Kim -License: Expat - -Files: react/node_modules/eslint-plugin-react-hooks/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/eslint-plugin-react/* -Copyright: 2012, 2013, James Halliday -License: Expat - -Files: react/node_modules/eslint-plugin-react/node_modules/doctrine/* -Copyright: Copyright JS Foundation and other contributors, https://js.foundation - Copyright (C) 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about) -License: Apache-2.0 - -Files: react/node_modules/eslint-plugin-testing-library/* -Copyright: 2019, Mario Beltrán Alarcón -License: Expat - -Files: react/node_modules/eslint-plugin-testing-library/node_modules/* -Copyright: 2018, Toru Nagashima -License: Expat - -Files: react/node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/* -Copyright: 2019, TypeScript ESLint and other contributors -License: Expat - -Files: react/node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/typescript-estree/* -Copyright: JS Foundation and other contributors, https:js.foundation -License: BSD-2-clause - -Files: react/node_modules/eslint-plugin-testing-library/node_modules/eslint-visitor-keys/* -Copyright: Contributors -License: Apache-2.0 - -Files: react/node_modules/eslint-scope/* -Copyright: JS Foundation and other contributors, https:js.foundation / 2012-2013, Yusuke Suzuki (twitter: @Constellation) and other contributors. -License: BSD-2-clause - -Files: react/node_modules/eslint-utils/* -Copyright: 2018, Toru Nagashima -License: Expat - -Files: react/node_modules/eslint-visitor-keys/* -Copyright: Contributors -License: Apache-2.0 - -Files: react/node_modules/eslint-webpack-plugin/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/eslint/node_modules/@babel/* -Copyright: 2014, -present Sebastian McKenzie and other contributors -License: Expat - -Files: react/node_modules/eslint/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/eslint/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/eslint/node_modules/cross-spawn/* -Copyright: 2018, Made With MOXY Lda -License: Expat - -Files: react/node_modules/eslint/node_modules/escape-string-regexp/* -Copyright: Sindre Sorhus (https:sindresorhus.com) -License: Expat - -Files: react/node_modules/eslint/node_modules/eslint-utils/* -Copyright: 2018, Toru Nagashima -License: Expat - -Files: react/node_modules/eslint/node_modules/eslint-utils/node_modules/* -Copyright: Contributors -License: Apache-2.0 - -Files: react/node_modules/eslint/node_modules/globals/* -Copyright: Sindre Sorhus (https:sindresorhus.com) -License: Expat - -Files: react/node_modules/eslint/node_modules/ignore/* -Copyright: 2013, Kael Zhang , contributors -License: Expat - -Files: react/node_modules/eslint/node_modules/shebang-command/* -Copyright: Kevin Mårtensson (github.com/kevva) -License: Expat - -Files: react/node_modules/eslint/node_modules/which/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/espree/* -Copyright: Open JS Foundation -License: BSD-2-clause - -Files: react/node_modules/espree/node_modules/* -Copyright: Contributors -License: Apache-2.0 - -Files: react/node_modules/esprima/* -Copyright: JS Foundation and other contributors, https:js.foundation -License: BSD-2-clause - -Files: react/node_modules/esquery/* -Copyright: Copyright (c) 2013, Joel Feenstra -License: BSD-2-clause - -Files: react/node_modules/esrecurse/* -Copyright: Copyright (C) 2012-2016 [Yusuke Suzuki](http://github.com/Constellation) -License: BSD-2-clause - -Files: react/node_modules/estraverse/* -Copyright: 2012-2016, Yusuke Suzuki - 2012. Ariya Hidayat -License: BSD-2-clause - -Files: react/node_modules/esutils/* -Copyright: 2013, [Yusuke Suzuki](http://github.com/Constellation) -License: BSD-2-clause - -Files: react/node_modules/etag/* -Copyright: 2014-2017, Douglas Christopher Wilson -License: Expat - -Files: react/node_modules/eventemitter3/* -Copyright: 2014, Arnout Kazemier -License: Expat - -Files: react/node_modules/events/* -Copyright: Joyent, Inc. and other Node contributors. -License: Expat - -Files: react/node_modules/eventsource/* -Copyright: EventSource GitHub organisation -License: Expat - -Files: react/node_modules/evp_bytestokey/* -Copyright: 2017, crypto-browserify contributors -License: Expat - -Files: react/node_modules/exec-sh/* -Copyright: 2014, Aleksandr Tsertkov -License: Expat - -Files: react/node_modules/exit/* -Copyright: 2013 -License: Expat - -Files: react/node_modules/expand-brackets/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/expand-brackets/node_modules/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/expand-brackets/node_modules/debug/* -Copyright: 2011-2014, 2017, TJ Holowaychuk -License: Expat - -Files: react/node_modules/expect/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/expect/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/express/* -Copyright: 2014, 2015, Douglas Christopher Wilson - 2013, 2014, Roman Shtylman - 2009-2014, TJ Holowaychuk -License: Expat - -Files: react/node_modules/express/node_modules/* -Copyright: 2011-2014, 2017, TJ Holowaychuk -License: Expat - -Files: react/node_modules/express/node_modules/array-flatten/* -Copyright: 2014, Blake Embrey (hello@blakeembrey.com) -License: Expat - -Files: react/node_modules/ext/* -Copyright: 2011-2020, Mariusz Nowak, @medikoo, medikoo.com -License: ISC - -Files: react/node_modules/extend-shallow/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/extglob/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/extglob/node_modules/define-property/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/fast-deep-equal/* -Copyright: 2015-2021, Evgeny Poberezkin -License: Expat - -Files: react/node_modules/fast-glob/* -Copyright: Denis Malinochkin -License: Expat - -Files: react/node_modules/fast-json-stable-stringify/* -Copyright: 2017, Evgeny Poberezkin - 2013, James Halliday -License: Expat - -Files: react/node_modules/fastq/* -Copyright: 2015-2020, Matteo Collina -License: ISC - -Files: react/node_modules/file-entry-cache/* -Copyright: 2015, Roy Riojas -License: Expat - -Files: react/node_modules/file-loader/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/filesize/* -Copyright: 2020, Jason Mulligan -License: BSD-3-clause - -Files: react/node_modules/fill-range/* -Copyright: 2014, -present, Jon Schlinkert. -License: Expat - -Files: react/node_modules/finalhandler/* -Copyright: 2014-2017, Douglas Christopher Wilson -License: Expat - -Files: react/node_modules/finalhandler/node_modules/* -Copyright: 2011-2014, 2017, TJ Holowaychuk -License: Expat - -Files: react/node_modules/find-cache-dir/* -Copyright: James Talmage (github.com/jamestalmage) -License: Expat - -Files: react/node_modules/flat-cache/* -Copyright: 2015, Roy Riojas -License: Expat - -Files: react/node_modules/flatted/* -Copyright: 2018-2020, Andrea Giammarchi, @WebReflection -License: ISC - -Files: react/node_modules/flatten/* -Copyright: 2016, Joshua Holbrook -License: Expat - -Files: react/node_modules/flush-write-stream/* -Copyright: 2013-2016, 2018, Mathias Buus -License: Expat - -Files: react/node_modules/follow-redirects/* -Copyright: 2014, –present Olivier Lalonde , James Talmage , Ruben Verborgh -License: Expat - -Files: react/node_modules/for-in/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/fork-ts-checker-webpack-plugin/* -Copyright: 2020, TypeStrong -License: Expat - -Files: react/node_modules/fork-ts-checker-webpack-plugin/node_modules/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/fork-ts-checker-webpack-plugin/node_modules/braces/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/fork-ts-checker-webpack-plugin/node_modules/fill-range/node_modules/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/fork-ts-checker-webpack-plugin/node_modules/micromatch/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/fork-ts-checker-webpack-plugin/node_modules/semver/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/form-data/* -Copyright: 2012, Felix Geisendörfer (felix@debuggable.com) and contributors -License: Expat - -Files: react/node_modules/forwarded/* -Copyright: 2014-2017, Douglas Christopher Wilson -License: Expat - -Files: react/node_modules/fragment-cache/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/fresh/* -Copyright: 2015-2017, Douglas Christopher Wilson - 2012-2014, TJ Holowaychuk -License: Expat - -Files: react/node_modules/fs-extra/* -Copyright: 2011-2017, JP Richardson -License: Expat - -Files: react/node_modules/fs-minipass/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/fs-write-stream-atomic/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/function-bind/* -Copyright: 2012-2014, Raynos. -License: Expat - -Files: react/node_modules/functional-red-black-tree/* -Copyright: 2013, Mikola Lysenko -License: Expat - -Files: react/node_modules/gensync/* -Copyright: 2018, Logan Smyth -License: Expat - -Files: react/node_modules/get-intrinsic/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/get-own-enumerable-property-symbols/* -Copyright: 2019, Shahar Or -License: ISC - -Files: react/node_modules/get-package-type/* -Copyright: 2019, 2020, CFWare, LLC -License: Expat - -Files: react/node_modules/get-value/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/glob-parent/* -Copyright: 2014, 2015, 2019, Elan Shanker -License: ISC - -Files: react/node_modules/global-modules/* -Copyright: 2015, -present, Jon Schlinkert. -License: Expat - -Files: react/node_modules/global-prefix/* -Copyright: 2015, -present, Jon Schlinkert. -License: Expat - -Files: react/node_modules/graceful-fs/* -Copyright: Isaac Z. Schlueter, Ben Noordhuis, and Contributors -License: ISC - -Files: react/node_modules/has-bigints/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/has-symbols/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/has-value/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/has-values/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/has/* -Copyright: 2013, Thiago de Arruda -License: Expat - -Files: react/node_modules/hash-base/* -Copyright: 2016, Kirill Fomichev -License: Expat - -Files: react/node_modules/hash-base/node_modules/* -Copyright: Node.js contributors. -License: Expat - -Files: react/node_modules/hash-base/node_modules/safe-buffer/* -Copyright: Feross Aboukhadijeh -License: Expat - -Files: react/node_modules/hoopy/* -Copyright: 2012-2019, Phil Booth -License: Expat - -Files: react/node_modules/hosted-git-info/* -Copyright: 2015, Rebecca Turner -License: ISC - -Files: react/node_modules/html-entities/* -Copyright: 2013, Dulin Marat -License: Expat - -Files: react/node_modules/html-minifier-terser/* -Copyright: 2010-2019, Juriy "kangax" Zaytsev -License: Expat - -Files: react/node_modules/html-webpack-plugin/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/html-webpack-plugin/node_modules/loader-utils/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/htmlparser2/* -Copyright: Felix Böhm -License: BSD-2-clause - -Files: react/node_modules/htmlparser2/node_modules/dom-serializer/* -Copyright: 2014, The cheeriojs contributors -License: Expat - -Files: react/node_modules/http-errors/* -Copyright: 2016, Douglas Christopher Wilson doug@somethingdoug.com - 2014, Jonathan Ong me@jongleberry.com -License: Expat - -Files: react/node_modules/http-errors/node_modules/* -Copyright: Isaac Z. Schlueter -License: ISC - -Files: react/node_modules/http-proxy-middleware/* -Copyright: 2015, Steven Chim -License: Expat - -Files: react/node_modules/http-proxy-middleware/node_modules/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/http-proxy-middleware/node_modules/braces/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/http-proxy-middleware/node_modules/fill-range/node_modules/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/http-proxy-middleware/node_modules/micromatch/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/http-proxy/* -Copyright: 2010-2016, Charlie Robbins, Jarrett Cruger & the Contributors. -License: Expat - -Files: react/node_modules/https-browserify/* -Copyright: James Halliday -License: Expat - -Files: react/node_modules/human-signals/* -Copyright: Copyright 2019 ehmicky -License: Apache-2.0 - -Files: react/node_modules/hyphenate-style-name/* -Copyright: 2015, Espen Hovlandsdal -License: BSD-3-clause - -Files: react/node_modules/iconv-lite/* -Copyright: 2011, Alexander Shtuchkin -License: Expat - -Files: react/node_modules/identity-obj-proxy/* -Copyright: 2015, Keyan Zhang -License: Expat - -Files: react/node_modules/ieee754/* -Copyright: 2008, Fair Oaks Labs, Inc. -License: BSD-3-clause - -Files: react/node_modules/iferr/* -Copyright: 2014, Nadav Ivgi -License: Expat - -Files: react/node_modules/ignore/* -Copyright: 2013, Kael Zhang , contributors -License: Expat - -Files: react/node_modules/immer/* -Copyright: 2017, Michel Weststrate -License: Expat - -Files: react/node_modules/import-fresh/* -Copyright: Sindre Sorhus (https:sindresorhus.com) -License: Expat - -Files: react/node_modules/indexes-of/* -Copyright: 2013, Dominic Tarr -License: Expat - -Files: react/node_modules/infer-owner/* -Copyright: npm, Inc. and Contributors -License: ISC - -Files: react/node_modules/inflight/* -Copyright: Isaac Z. Schlueter -License: ISC - -Files: react/node_modules/inherits/* -Copyright: Isaac Z. Schlueter -License: ISC - -Files: react/node_modules/ini/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/internal-slot/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/ipaddr.js/* -Copyright: 2011-2017, whitequark -License: Expat - -Files: react/node_modules/is-accessor-descriptor/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/is-arguments/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/is-arrayish/* -Copyright: 2015, JD Ballard -License: Expat - -Files: react/node_modules/is-bigint/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/is-binary-path/* -Copyright: 2019, Sindre Sorhus (https:sindresorhus.com), Paul Miller (https:paulmillr.com) -License: Expat - -Files: react/node_modules/is-boolean-object/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/is-buffer/* -Copyright: Feross Aboukhadijeh -License: Expat - -Files: react/node_modules/is-callable/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/is-ci/* -Copyright: 2015-2018, Thomas Watson Steen -License: Expat - -Files: react/node_modules/is-color-stop/* -Copyright: 2017, pigcan -License: Expat - -Files: react/node_modules/is-core-module/* -Copyright: 2014, Dave Justice -License: Expat - -Files: react/node_modules/is-data-descriptor/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/is-date-object/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/is-descriptor/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/is-directory/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/is-docker/* -Copyright: Sindre Sorhus (https:sindresorhus.com) -License: Expat - -Files: react/node_modules/is-extendable/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/is-extglob/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/is-glob/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/is-negative-zero/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/is-number-object/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/is-number/* -Copyright: 2014, -present, Jon Schlinkert. -License: Expat - -Files: react/node_modules/is-plain-object/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/is-regex/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/is-resolvable/* -Copyright: 2018, Shinnosuke Watanabe -License: ISC - -Files: react/node_modules/is-string/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/is-symbol/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/is-windows/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/isexe/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/isobject/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/istanbul-lib-coverage/* -Copyright: 2012-2015, Yahoo! Inc. -License: BSD-3-clause - -Files: react/node_modules/istanbul-lib-instrument/* -Copyright: 2012-2015, Yahoo! Inc. -License: BSD-3-clause - -Files: react/node_modules/istanbul-lib-instrument/node_modules/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/istanbul-lib-report/node_modules/semver/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/istanbul-lib-source-maps/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/istanbul-reports/* -Copyright: 2012-2015, Yahoo! Inc. -License: BSD-3-clause - -Files: react/node_modules/jest-changed-files/node_modules/cross-spawn/* -Copyright: 2018, Made With MOXY Lda -License: Expat - -Files: react/node_modules/jest-changed-files/node_modules/execa/* -Copyright: Sindre Sorhus (https:sindresorhus.com) -License: Expat - -Files: react/node_modules/jest-changed-files/node_modules/get-stream/* -Copyright: Sindre Sorhus (https:sindresorhus.com) -License: Expat - -Files: react/node_modules/jest-changed-files/node_modules/shebang-command/* -Copyright: Kevin Mårtensson (github.com/kevva) -License: Expat - -Files: react/node_modules/jest-changed-files/node_modules/which/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/jest-circus/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/jest-circus/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/jest-config/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/jest-config/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/jest-config/node_modules/jest-resolve/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/jest-diff/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/jest-diff/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/jest-docblock/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/jest-each/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/jest-each/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/jest-environment-jsdom/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/jest-environment-node/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/jest-get-type/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/jest-haste-map/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/jest-jasmine2/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/jest-jasmine2/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/jest-leak-detector/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/jest-matcher-utils/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/jest-matcher-utils/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/jest-message-util/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/jest-message-util/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/jest-mock/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/jest-regex-util/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/jest-resolve-dependencies/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/jest-resolve/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/jest-resolve/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/jest-runner/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/jest-runner/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/jest-runner/node_modules/jest-resolve/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/jest-runtime/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/jest-runtime/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/jest-runtime/node_modules/jest-resolve/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/jest-serializer/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/jest-snapshot/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/jest-snapshot/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/jest-snapshot/node_modules/jest-resolve/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/jest-util/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/jest-util/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/jest-validate/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/jest-validate/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/jest-watch-typeahead/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/jest-watch-typeahead/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/jest-watcher/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/jest-watcher/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/jest/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/jest/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/jest/node_modules/jest-cli/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/js-tokens/* -Copyright: 2013-2018, Simon Lydell -License: Expat - -Files: react/node_modules/js-yaml/* -Copyright: 2011-2015, Vitaly Puzrin -License: Expat - -Files: react/node_modules/jsdom/* -Copyright: 2012-2020, various contributors (see AUTHORS) -License: Expat - -Files: react/node_modules/json-schema-traverse/* -Copyright: 2015-2021, Evgeny Poberezkin -License: Expat - -Files: react/node_modules/json-stable-stringify-without-jsonify/* -Copyright: info-missing -License: Expat - -Files: react/node_modules/json3/* -Copyright: 2013-2015, Benjamin Tan. - 2012-2015, Kit Cambridge. -License: Expat - -Files: react/node_modules/jsonfile/* -Copyright: 2012-2015, JP Richardson -License: Expat - -Files: react/node_modules/jss-plugin-camel-case/* -Copyright: 2014, -present Oleg Isonen (Slobodskoi) & contributors -License: Expat - -Files: react/node_modules/jss-plugin-default-unit/* -Copyright: 2014, -present Oleg Isonen (Slobodskoi) & contributors -License: Expat - -Files: react/node_modules/jss-plugin-global/* -Copyright: 2014, -present Oleg Isonen (Slobodskoi) & contributors -License: Expat - -Files: react/node_modules/jss-plugin-nested/* -Copyright: 2014, -present Oleg Isonen (Slobodskoi) & contributors -License: Expat - -Files: react/node_modules/jss-plugin-props-sort/* -Copyright: 2014, -present Oleg Isonen (Slobodskoi) & contributors -License: Expat - -Files: react/node_modules/jss-plugin-rule-value-function/* -Copyright: 2014, -present Oleg Isonen (Slobodskoi) & contributors -License: Expat - -Files: react/node_modules/jss-plugin-vendor-prefixer/* -Copyright: 2014, -present Oleg Isonen (Slobodskoi) & contributors -License: Expat - -Files: react/node_modules/jss/* -Copyright: 2014, -present Oleg Isonen (Slobodskoi) & contributors -License: Expat - -Files: react/node_modules/killable/* -Copyright: 2014, Marten de Vries -License: ISC - -Files: react/node_modules/kind-of/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/kleur/* -Copyright: Luke Edwards (lukeed.com) -License: Expat - -Files: react/node_modules/klona/* -Copyright: Luke Edwards (lukeed.com) -License: Expat - -Files: react/node_modules/last-call-webpack-plugin/* -Copyright: 2016, Nuno Rodrigues -License: Expat - -Files: react/node_modules/levn/* -Copyright: George Zahariev -License: Expat - -Files: react/node_modules/lines-and-columns/* -Copyright: 2015, Brian Donovan -License: Expat - -Files: react/node_modules/loader-runner/* -Copyright: Tobias Koppers @sokra -License: Expat - -Files: react/node_modules/loader-utils/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/lodash.clonedeep/* -Copyright: jQuery Foundation and other contributors / Jeremy Ashkenas -License: Expat - -Files: react/node_modules/lodash.debounce/* -Copyright: jQuery Foundation and other contributors / Jeremy Ashkenas -License: Expat - -Files: react/node_modules/lodash.memoize/* -Copyright: jQuery Foundation and other contributors / Jeremy Ashkenas -License: Expat - -Files: react/node_modules/lodash.merge/* -Copyright: OpenJS Foundation and other contributors / Jeremy Ashkenas -License: Expat - -Files: react/node_modules/lodash.template/* -Copyright: OpenJS Foundation and other contributors / Jeremy Ashkenas -License: Expat - -Files: react/node_modules/lodash.templatesettings/* -Copyright: OpenJS Foundation and other contributors / Jeremy Ashkenas -License: Expat - -Files: react/node_modules/lodash.truncate/* -Copyright: jQuery Foundation and other contributors / Jeremy Ashkenas -License: Expat - -Files: react/node_modules/lodash.uniq/* -Copyright: jQuery Foundation and other contributors / Jeremy Ashkenas -License: Expat - -Files: react/node_modules/lodash/* -Copyright: OpenJS Foundation and other contributors / Jeremy Ashkenas -License: Expat - -Files: react/node_modules/loglevel/* -Copyright: 2013, Tim Perry -License: Expat - -Files: react/node_modules/loose-envify/* -Copyright: 2015, Andres Suarez -License: Expat - -Files: react/node_modules/lower-case/* -Copyright: 2014, Blake Embrey (hello@blakeembrey.com) -License: Expat - -Files: react/node_modules/lru-cache/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/lz-string/* -Copyright: 2008-2011, Pivotal Labs -License: Expat - -Files: react/node_modules/magic-string/* -Copyright: 2015, 2018, Rich Harris -License: Expat - -Files: react/node_modules/make-dir/node_modules/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/makeerror/* -Copyright: 2014, Naitik Shah. -License: BSD-3-clause - -Files: react/node_modules/map-cache/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/map-visit/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/md5.js/* -Copyright: 2016, Kirill Fomichev -License: Expat - -Files: react/node_modules/media-typer/* -Copyright: 2014-2017, Douglas Christopher Wilson -License: Expat - -Files: react/node_modules/merge-descriptors/* -Copyright: 2014-2017, Douglas Christopher Wilson - 2013, 2014, Jonathan Ong -License: Expat - -Files: react/node_modules/merge-stream/* -Copyright: Stephen Sugden (stephensugden.com) -License: Expat - -Files: react/node_modules/merge2/* -Copyright: 2014-2020, Teambition -License: Expat - -Files: react/node_modules/methods/* -Copyright: 2015-2017, Douglas Christopher Wilson - 2012-2014, TJ Holowaychuk -License: Expat - -Files: react/node_modules/microevent.ts/* -Copyright: 2016, Christian Speckner -License: Expat - -Files: react/node_modules/micromatch/* -Copyright: 2014, -present, Jon Schlinkert. -License: Expat - -Files: react/node_modules/miller-rabin/* -Copyright: Fedor Indutny, 2015. -License: Expat - -Files: react/node_modules/mime-db/* -Copyright: 2014, Jonathan Ong me@jongleberry.com -License: Expat - -Files: react/node_modules/mime-types/* -Copyright: 2014-2017, Douglas Christopher Wilson - 2013, 2014, Jonathan Ong -License: Expat - -Files: react/node_modules/mime/* -Copyright: 2010, Benjamin Thomas, Robert Kieffer -License: Expat - -Files: react/node_modules/min-indent/* -Copyright: Sindre Sorhus (sindresorhus.com), James Kyle (thejameskyle.com) -License: Expat - -Files: react/node_modules/mini-css-extract-plugin/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/minimalistic-assert/* -Copyright: 2015, Calvin Metcalf -License: ISC - -Files: react/node_modules/minimatch/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/minimist/* -Copyright: info-missing -License: Expat - -Files: react/node_modules/minipass-collect/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/minipass-flush/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/minipass-pipeline/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/minipass/* -Copyright: npm, Inc. and Contributors -License: ISC - -Files: react/node_modules/minizlib/* -Copyright: Node.js contributors. / Joyent, Inc. and other Node contributors. / Isaac Z. Schlueter and Contributors -License: Expat - -Files: react/node_modules/mississippi/* -Copyright: info-missing -License: BSD-2-clause - -Files: react/node_modules/mixin-deep/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/mkdirp/* -Copyright: 2010, 2013, James Halliday (mail@substack.net) -License: Expat - -Files: react/node_modules/move-concurrently/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/multicast-dns-service-types/* -Copyright: 2013-2016, 2018, Mathias Buus -License: Expat - -Files: react/node_modules/multicast-dns/* -Copyright: 2013-2016, 2018, Mathias Buus -License: Expat - -Files: react/node_modules/nanoid/* -Copyright: 2013, 2017, Andrey Sitnik -License: Expat - -Files: react/node_modules/nanomatch/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/native-url/* -Copyright: info-missing -License: Apache-2.0 - -Files: react/node_modules/negotiator/* -Copyright: 2014, 2015, Douglas Christopher Wilson - 2012-2014, Isaac Z. Schlueter - 2012-2014, Federico Romero -License: Expat - -Files: react/node_modules/neo-async/* -Copyright: Caolan McMahon / 2014-2018, Suguru Motegi -License: Expat - -Files: react/node_modules/next-tick/* -Copyright: 2012-2016, Mariusz Nowak -License: Expat - -Files: react/node_modules/nice-try/* -Copyright: 2018, Tobias Reich -License: Expat - -Files: react/node_modules/no-case/* -Copyright: 2014, Blake Embrey (hello@blakeembrey.com) -License: Expat - -Files: react/node_modules/node-forge/* -Copyright: header is -License: BSD-3-clause - -Files: react/node_modules/node-int64/* -Copyright: 2014, Robert Kieffer -License: Expat - -Files: react/node_modules/node-libs-browser/* -Copyright: 2012, Tobias Koppers -License: Expat - -Files: react/node_modules/node-modules-regexp/* -Copyright: James Talmage (github.com/jamestalmage) -License: Expat - -Files: react/node_modules/node-notifier/* -Copyright: 2017, Mikael Brevik -License: Expat - -Files: react/node_modules/node-notifier/node_modules/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/node-notifier/vendor/* -Copyright: 2019, Solutions Paralint inc. -License: BSD-3-clause - -Files: react/node_modules/node-notifier/vendor/snoreToast/* -Copyright: 2007, Free Software Foundation, Inc. -License: LGPL-3 - -Files: react/node_modules/node-releases/* -Copyright: 2017, Sergey Rubanov (https:github.com/chicoxyzzy) -License: Expat - -Files: react/node_modules/normalize-package-data/* -Copyright: Meryn Stol ("Author") -License: BSD-2-clause - -Files: react/node_modules/normalize-package-data/node_modules/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/normalize-path/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/normalize-range/* -Copyright: James Talmage (github.com/jamestalmage) -License: Expat - -Files: react/node_modules/nth-check/* -Copyright: Felix Böhm -License: BSD-2-clause - -Files: react/node_modules/num2fraction/* -Copyright: 2014, PostCSS -License: Expat - -Files: react/node_modules/nwsapi/* -Copyright: 2007-2019, Diego Perini (http:www.iport.it/) -License: Expat - -Files: react/node_modules/object-copy/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/object-copy/node_modules/define-property/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/object-inspect/* -Copyright: 2012, 2013, James Halliday -License: Expat - -Files: react/node_modules/object-is/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/object-keys/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/object-visit/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/object.assign/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/object.entries/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/object.fromentries/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/object.getownpropertydescriptors/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/object.pick/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/object.values/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/obuf/* -Copyright: Fedor Indutny, 2015. -License: Expat - -Files: react/node_modules/on-finished/* -Copyright: 2014-2017, Douglas Christopher Wilson - 2013, 2014, Jonathan Ong -License: Expat - -Files: react/node_modules/on-headers/* -Copyright: 2014-2017, Douglas Christopher Wilson -License: Expat - -Files: react/node_modules/once/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/onetime/* -Copyright: Sindre Sorhus (https:sindresorhus.com) -License: Expat - -Files: react/node_modules/open/* -Copyright: Sindre Sorhus (https:sindresorhus.com) -License: Expat - -Files: react/node_modules/optimize-css-assets-webpack-plugin/* -Copyright: 2016, Nuno Rodrigues -License: Expat - -Files: react/node_modules/optionator/* -Copyright: George Zahariev -License: Expat - -Files: react/node_modules/original/* -Copyright: 2015, Unshift.io, Arnout Kazemier, the Contributors. -License: Expat - -Files: react/node_modules/os-browserify/* -Copyright: 2017, CoderPuppy -License: Expat - -Files: react/node_modules/p-each-series/* -Copyright: Sindre Sorhus (https:sindresorhus.com) -License: Expat - -Files: react/node_modules/p-map/* -Copyright: Sindre Sorhus (https:sindresorhus.com) -License: Expat - -Files: react/node_modules/pako/* -Copyright: 2014-2017, Vitaly Puzrin and Andrei Tuputcyn -License: Expat - -Files: react/node_modules/pako/lib/* -Copyright: 2014-2017, Vitaly Puzrin and Andrey Tupitsin / (C) 1995-2013, Jean-loup Gailly and Mark Adler -License: Zlib - -Files: react/node_modules/parallel-transform/* -Copyright: 2013-2016, 2018, Mathias Buus -License: Expat - -Files: react/node_modules/param-case/* -Copyright: 2014, Blake Embrey (hello@blakeembrey.com) -License: Expat - -Files: react/node_modules/parse-asn1/* -Copyright: 2017, crypto-browserify contributors -License: ISC - -Files: react/node_modules/parse-json/* -Copyright: Sindre Sorhus (https:sindresorhus.com) -License: Expat - -Files: react/node_modules/parse5/* -Copyright: 2013-2019, Ivan Nikulin (ifaaan@gmail.com, https:github.com/inikulin) -License: Expat - -Files: react/node_modules/parseurl/* -Copyright: 2014-2017, Douglas Christopher Wilson - 2013, 2014, Jonathan Ong -License: Expat - -Files: react/node_modules/pascal-case/* -Copyright: 2014, Blake Embrey (hello@blakeembrey.com) -License: Expat - -Files: react/node_modules/pascalcase/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/path-browserify/* -Copyright: Copyright Joyent, Inc. and other Node contributors. -License: Expat - -Files: react/node_modules/path-dirname/* -Copyright: Elan Shanker and Node.js contributors. -License: Expat - -Files: react/node_modules/path-parse/* -Copyright: 2015, Javier Blanco -License: Expat - -Files: react/node_modules/path-to-regexp/* -Copyright: 2014, Blake Embrey (hello@blakeembrey.com) -License: Expat - -Files: react/node_modules/pbkdf2/* -Copyright: 2014, 2015, Daniel Cousens -License: Expat - -Files: react/node_modules/picomatch/* -Copyright: 2017, -present, Jon Schlinkert. -License: Expat - -Files: react/node_modules/pinkie-promise/* -Copyright: Vsevolod Strukchinsky (github.com/floatdrop) -License: Expat - -Files: react/node_modules/pinkie/* -Copyright: Vsevolod Strukchinsky (github.com/floatdrop) -License: Expat - -Files: react/node_modules/pirates/* -Copyright: 2016-2018, Ari Porad -License: Expat - -Files: react/node_modules/portfinder/* -Copyright: 2012, Charlie Robbins -License: Expat - -Files: react/node_modules/portfinder/node_modules/* -Copyright: 2011-2014, 2017, TJ Holowaychuk -License: Expat - -Files: react/node_modules/posix-character-classes/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/postcss-attribute-case-insensitive/* -Copyright: 2016, Dmitry Semigradsky -License: Expat - -Files: react/node_modules/postcss-calc/* -Copyright: 2014, 2017, Maxime Thirouin -License: Expat - -Files: react/node_modules/postcss-color-rebeccapurple/* -Copyright: 2014, 2017, Maxime Thirouin -License: Expat - -Files: react/node_modules/postcss-colormin/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-colormin/node_modules/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-convert-values/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-convert-values/node_modules/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-custom-selectors/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-dir-pseudo-class/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-discard-comments/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-discard-duplicates/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-discard-empty/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-discard-overridden/* -Copyright: 2016, Justineo -License: Expat - -Files: react/node_modules/postcss-flexbugs-fixes/* -Copyright: 2015, Luis Rudge -License: Expat - -Files: react/node_modules/postcss-font-variant/* -Copyright: 2014, Maxime Thirouin & Ian Storm Taylor -License: Expat - -Files: react/node_modules/postcss-initial/* -Copyright: 2015, Maksim Koretskiy -License: Expat - -Files: react/node_modules/postcss-load-config/node_modules/cosmiconfig/* -Copyright: 2015, David Clark -License: Expat - -Files: react/node_modules/postcss-loader/* -Copyright: 2013, 2017, Andrey Sitnik -License: Expat - -Files: react/node_modules/postcss-loader/node_modules/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/postcss-media-minmax/* -Copyright: 2014, PostCSS -License: Expat - -Files: react/node_modules/postcss-merge-longhand/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-merge-longhand/node_modules/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-merge-rules/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-minify-font-values/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-minify-gradients/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-minify-gradients/node_modules/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-minify-params/* -Copyright: 2015, 2018, Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-minify-params/node_modules/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-minify-selectors/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-modules-extract-imports/* -Copyright: 2015, Glen Maddern -License: ISC - -Files: react/node_modules/postcss-modules-local-by-default/* -Copyright: 2015, Mark Dalgleish -License: Expat - -Files: react/node_modules/postcss-modules-scope/* -Copyright: 2015, Glen Maddern -License: ISC - -Files: react/node_modules/postcss-modules-values/* -Copyright: 2015, Glen Maddern -License: ISC - -Files: react/node_modules/postcss-normalize-charset/* -Copyright: 2015, 2018, Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-normalize-display-values/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-normalize-display-values/node_modules/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-normalize-positions/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-normalize-positions/node_modules/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-normalize-repeat-style/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-normalize-repeat-style/node_modules/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-normalize-string/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-normalize-string/node_modules/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-normalize-timing-functions/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-normalize-timing-functions/node_modules/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-normalize-unicode/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-normalize-unicode/node_modules/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-normalize-url/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-normalize-url/node_modules/* -Copyright: Sindre Sorhus (sindresorhus.com) -License: Expat - -Files: react/node_modules/postcss-normalize-url/node_modules/postcss-value-parser/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-normalize-whitespace/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-normalize-whitespace/node_modules/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-ordered-values/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-ordered-values/node_modules/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-page-break/* -Copyright: 2017, AUTHOR_NAME -License: Expat - -Files: react/node_modules/postcss-pseudo-class-any-link/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-reduce-initial/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-reduce-transforms/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-reduce-transforms/node_modules/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-replace-overflow-wrap/* -Copyright: 2016, Matthias Müller -License: Expat - -Files: react/node_modules/postcss-safe-parser/* -Copyright: 2013, 2017, Andrey Sitnik -License: Expat - -Files: react/node_modules/postcss-selector-matches/* -Copyright: 2014, 2017, Maxime Thirouin -License: Expat - -Files: react/node_modules/postcss-selector-not/* -Copyright: 2014, 2017, Maxime Thirouin -License: Expat - -Files: react/node_modules/postcss-selector-parser/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-svgo/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-svgo/node_modules/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-unique-selectors/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/postcss-value-parser/* -Copyright: Bogdan Chadkin -License: Expat - -Files: react/node_modules/postcss-values-parser/* -Copyright: Andrew Powell -License: Expat - -Files: react/node_modules/postcss/node_modules/source-map/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/prelude-ls/* -Copyright: George Zahariev -License: Expat - -Files: react/node_modules/pretty-bytes/* -Copyright: Sindre Sorhus (https:sindresorhus.com) -License: Expat - -Files: react/node_modules/pretty-error/* -Copyright: 2013-2015, Aria Minaei -License: Expat - -Files: react/node_modules/pretty-format/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/pretty-format/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/pretty-format/node_modules/react-is/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/process/* -Copyright: 2013, Roman Shtylman -License: Expat - -Files: react/node_modules/progress/* -Copyright: 2011-2014, 2017, TJ Holowaychuk -License: Expat - -Files: react/node_modules/promise-inflight/* -Copyright: 2015, 2017, Rebecca Turner -License: ISC - -Files: react/node_modules/promise/* -Copyright: 2013, 2014, Forbes Lindesay -License: Expat - -Files: react/node_modules/prompts/* -Copyright: 2018, Terkel Gjervig Nielsen -License: Expat - -Files: react/node_modules/prop-types/* -Copyright: 2013, -present, Facebook, Inc. -License: Expat - -Files: react/node_modules/proxy-addr/* -Copyright: 2014-2017, Douglas Christopher Wilson -License: Expat - -Files: react/node_modules/psl/* -Copyright: 2017, Lupo Montero lupomontero@gmail.com -License: Expat - -Files: react/node_modules/public-encrypt/* -Copyright: 2017, Calvin Metcalf -License: Expat - -Files: react/node_modules/public-encrypt/node_modules/* -Copyright: Fedor Indutny, 2015. -License: Expat - -Files: react/node_modules/pump/* -Copyright: 2013-2016, 2018, Mathias Buus -License: Expat - -Files: react/node_modules/pumpify/* -Copyright: 2013-2016, 2018, Mathias Buus -License: Expat - -Files: react/node_modules/q/* -Copyright: 2009-2017, Kristopher Michael Kowal. -License: Expat - -Files: react/node_modules/qs/* -Copyright: 2014, Nathan LaFreniere and other contributors. -License: BSD-3-clause - -Files: react/node_modules/querystring/* -Copyright: 2012, Irakli Gozalishvili -License: Expat - -Files: react/node_modules/querystringify/* -Copyright: 2015, Unshift.io, Arnout Kazemier, the Contributors. -License: Expat - -Files: react/node_modules/queue-microtask/* -Copyright: Feross Aboukhadijeh -License: Expat - -Files: react/node_modules/raf/* -Copyright: 2013, Chris Dickinson -License: Expat - -Files: react/node_modules/randombytes/* -Copyright: 2016, 2017, crypto-browserify -License: Expat - -Files: react/node_modules/randomfill/* -Copyright: 2016, 2017, crypto-browserify -License: Expat - -Files: react/node_modules/range-parser/* -Copyright: 2015, 2016, Douglas Christopher Wilson -License: Expat - -Files: react/node_modules/raw-body/* -Copyright: 2014-2017, Douglas Christopher Wilson - 2013, 2014, Jonathan Ong -License: Expat - -Files: react/node_modules/raw-body/node_modules/* -Copyright: 2015, Jed Watson - 2012-2014, TJ Holowaychuk -License: Expat - -Files: react/node_modules/react-app-polyfill/* -Copyright: 2013, -present, Facebook, Inc. -License: Expat - -Files: react/node_modules/react-dev-utils/node_modules/@babel/* -Copyright: 2014, -present Sebastian McKenzie and other contributors -License: Expat - -Files: react/node_modules/react-dev-utils/node_modules/browserslist/* -Copyright: 2014, Andrey Sitnik and other contributors -License: Expat - -Files: react/node_modules/react-dev-utils/node_modules/cross-spawn/* -Copyright: 2018, Made With MOXY Lda -License: Expat - -Files: react/node_modules/react-dev-utils/node_modules/shebang-command/* -Copyright: Kevin Mårtensson (github.com/kevva) -License: Expat - -Files: react/node_modules/react-dev-utils/node_modules/which/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/react-dom/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/react-error-overlay/* -Copyright: 2013, -present, Facebook, Inc. -License: Expat - -Files: react/node_modules/react-is/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/react-refresh/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/react-scripts/* -Copyright: 2013, -present, Facebook, Inc. -License: Expat - -Files: react/node_modules/react-transition-group/* -Copyright: 2018, React Community / 2013, -present, Facebook, Inc. -License: BSD-3-clause - -Files: react/node_modules/react/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/readable-stream/* -Copyright: Node.js contributors. -License: Expat - -Files: react/node_modules/readdirp/* -Copyright: 2012-2019, Thorsten Lorenz, Paul Miller (https:paulmillr.com) -License: Expat - -Files: react/node_modules/recursive-readdir/* -Copyright: -License: Expat - -Files: react/node_modules/regenerator-runtime/* -Copyright: 2014, -present, Facebook, Inc. -License: Expat - -Files: react/node_modules/regenerator-transform/* -Copyright: 2014, -present, Facebook, Inc. -License: Expat - -Files: react/node_modules/regex-not/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/regex-parser/* -Copyright: 2014-2020, Ionică Bizău (https:ionicabizau.net) -License: Expat - -Files: react/node_modules/regexp.prototype.flags/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/regexpp/* -Copyright: 2018, Toru Nagashima -License: Expat - -Files: react/node_modules/regjsparser/* -Copyright: Julian Viereck and Contributors -License: BSD-2-clause - -Files: react/node_modules/relateurl/* -Copyright: Steven Vachon (svachon.com) -License: Expat - -Files: react/node_modules/remove-trailing-separator/* -Copyright: info-missing -License: ISC - -Files: react/node_modules/renderkid/* -Copyright: Felix Böhm -License: BSD-2-clause - -Files: react/node_modules/renderkid/node_modules/ansi-regex/* -Copyright: Sindre Sorhus (sindresorhus.com) -License: Expat - -Files: react/node_modules/renderkid/node_modules/dom-serializer/* -Copyright: 2014, The cheeriojs contributors -License: Expat - -Files: react/node_modules/renderkid/node_modules/strip-ansi/* -Copyright: Sindre Sorhus (sindresorhus.com) -License: Expat - -Files: react/node_modules/repeat-element/* -Copyright: 2015, -present, Jon Schlinkert. -License: Expat - -Files: react/node_modules/repeat-string/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/require-directory/* -Copyright: 2011, Troy Goode -License: Expat - -Files: react/node_modules/require-from-string/* -Copyright: Vsevolod Strukchinsky (github.com/floatdrop) -License: Expat - -Files: react/node_modules/requires-port/* -Copyright: 2015, Unshift.io, Arnout Kazemier, the Contributors. -License: Expat - -Files: react/node_modules/resolve-url-loader/node_modules/convert-source-map/* -Copyright: 2013, Thorsten Lorenz. -License: Expat - -Files: react/node_modules/resolve-url-loader/node_modules/loader-utils/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/resolve-url-loader/node_modules/postcss/* -Copyright: 2013, 2017, Andrey Sitnik -License: Expat - -Files: react/node_modules/resolve-url-loader/node_modules/source-map/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/resolve-url/* -Copyright: 2013-2018, Simon Lydell -License: Expat - -Files: react/node_modules/resolve/* -Copyright: 2012, 2013, James Halliday -License: Expat - -Files: react/node_modules/ret/* -Copyright: 2011, Roly Fentanes -License: Expat - -Files: react/node_modules/retry/* -Copyright: 2011 -License: Expat - -Files: react/node_modules/reusify/* -Copyright: 2015, Matteo Collina -License: Expat - -Files: react/node_modules/rework/* -Copyright: 2013, Thorsten Lorenz. -License: Expat - -Files: react/node_modules/rimraf/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/ripemd160/* -Copyright: 2016, 2017, crypto-browserify -License: Expat - -Files: react/node_modules/rollup-plugin-terser/node_modules/jest-worker/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/rollup-plugin-terser/node_modules/serialize-javascript/* -Copyright: 2012-2015, Yahoo! Inc. -License: BSD-3-clause - -Files: react/node_modules/rsvp/* -Copyright: 2014, Yehuda Katz, Tom Dale, Stefan Penner and contributors -License: Expat - -Files: react/node_modules/run-parallel/* -Copyright: Feross Aboukhadijeh -License: Expat - -Files: react/node_modules/safe-buffer/* -Copyright: Feross Aboukhadijeh -License: Expat - -Files: react/node_modules/safe-regex/* -Copyright: info-missing -License: Expat - -Files: react/node_modules/safer-buffer/* -Copyright: 2018, Nikita Skovoroda -License: Expat - -Files: react/node_modules/sane/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/sane/node_modules/anymatch/* -Copyright: 2014, 2015, 2019, Elan Shanker -License: ISC - -Files: react/node_modules/sane/node_modules/braces/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/sane/node_modules/fill-range/node_modules/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/sane/node_modules/micromatch/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/sass-loader/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/scheduler/* -Copyright: Facebook, Inc. and its affiliates. -License: Expat - -Files: react/node_modules/schema-utils/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/selfsigned/* -Copyright: 2013, José -License: Expat - -Files: react/node_modules/semver/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/send/* -Copyright: 2014-2016, Douglas Christopher Wilson - 2012, TJ Holowaychuk -License: Expat - -Files: react/node_modules/send/node_modules/* -Copyright: 2011-2014, 2017, TJ Holowaychuk -License: Expat - -Files: react/node_modules/serialize-javascript/* -Copyright: 2012-2015, Yahoo! Inc. -License: BSD-3-clause - -Files: react/node_modules/serve-index/* -Copyright: 2016, Douglas Christopher Wilson doug@somethingdoug.com - 2014, Jonathan Ong me@jongleberry.com -License: Expat - -Files: react/node_modules/serve-index/node_modules/debug/* -Copyright: 2011-2014, 2017, TJ Holowaychuk -License: Expat - -Files: react/node_modules/serve-index/node_modules/inherits/* -Copyright: Isaac Z. Schlueter -License: ISC - -Files: react/node_modules/serve-index/node_modules/setprototypeof/* -Copyright: 2015, Wes Todd -License: ISC - -Files: react/node_modules/serve-static/* -Copyright: 2014-2016, Douglas Christopher Wilson - 2011, TJ Holowaychuk - 2011, LearnBoost - 2010, Sencha Inc. -License: Expat - -Files: react/node_modules/set-value/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/set-value/node_modules/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/setprototypeof/* -Copyright: 2015, Wes Todd -License: ISC - -Files: react/node_modules/shebang-command/* -Copyright: Kevin Martensson (github.com/kevva) -License: Expat - -Files: react/node_modules/shell-quote/* -Copyright: 2010, 2013, James Halliday (mail@substack.net) -License: Expat - -Files: react/node_modules/shellwords/* -Copyright: 2011, Jimmy Cuadra -License: Expat - -Files: react/node_modules/side-channel/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/simple-swizzle/* -Copyright: 2015, JD Ballard -License: Expat - -Files: react/node_modules/sisteransi/* -Copyright: 2018, Terkel Gjervig Nielsen -License: Expat - -Files: react/node_modules/slice-ansi/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/slice-ansi/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/snapdragon-node/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/snapdragon-node/node_modules/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/snapdragon-node/node_modules/define-property/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/snapdragon-util/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/snapdragon/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/snapdragon/node_modules/debug/* -Copyright: 2011-2014, 2017, TJ Holowaychuk -License: Expat - -Files: react/node_modules/sockjs-client/node_modules/* -Copyright: 2011-2014, 2017, TJ Holowaychuk -License: Expat - -Files: react/node_modules/sockjs/* -Copyright: 2011, VMware, Inc. -License: Expat - -Files: react/node_modules/source-list-map/* -Copyright: 2017, JS Foundation -License: Expat - -Files: react/node_modules/source-map-js/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/source-map-resolve/* -Copyright: 2019, ZHAO Jinxiang - 2014-2020, Simon Lydell -License: Expat - -Files: react/node_modules/source-map-support/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/source-map-url/* -Copyright: 2013-2018, Simon Lydell -License: Expat - -Files: react/node_modules/source-map/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/sourcemap-codec/* -Copyright: 2015, 2018, Rich Harris -License: Expat - -Files: react/node_modules/spdx-correct/* -Copyright: info-missing -License: Apache-2.0 - -Files: react/node_modules/spdx-expression-parse/* -Copyright: 2015, Kyle E. Mitchell & other authors listed in AUTHORS -License: Expat - -Files: react/node_modules/spdy-transport/* -Copyright: Node.js contributors. -License: Expat - -Files: react/node_modules/split-string/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/sprintf-js/* -Copyright: 2007-2014, Alexandru Marasteanu -License: BSD-3-clause - -Files: react/node_modules/stackframe/* -Copyright: 2017, Eric Wendelin and other contributors -License: Expat - -Files: react/node_modules/static-extend/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/statuses/* -Copyright: 2014-2017, Douglas Christopher Wilson - 2013, 2014, Jonathan Ong -License: Expat - -Files: react/node_modules/stream-browserify/* -Copyright: James Halliday -License: Expat - -Files: react/node_modules/stream-each/* -Copyright: 2013-2016, 2018, Mathias Buus -License: Expat - -Files: react/node_modules/stream-http/* -Copyright: 2015, 2016, John Hiesey -License: Expat - -Files: react/node_modules/stream-shift/* -Copyright: 2013-2016, 2018, Mathias Buus -License: Expat - -Files: react/node_modules/strict-uri-encode/* -Copyright: Kevin Mårtensson (github.com/kevva) -License: Expat - -Files: react/node_modules/string-length/* -Copyright: Sindre Sorhus (https:sindresorhus.com) -License: Expat - -Files: react/node_modules/string.prototype.matchall/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/string.prototype.trimend/* -Copyright: 2017, Khaled Al-Ansari -License: Expat - -Files: react/node_modules/string.prototype.trimstart/* -Copyright: 2017, Khaled Al-Ansari -License: Expat - -Files: react/node_modules/string_decoder/* -Copyright: Node.js contributors. -License: Expat - -Files: react/node_modules/strip-comments/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/strip-json-comments/* -Copyright: Sindre Sorhus (https:sindresorhus.com) -License: Expat - -Files: react/node_modules/style-loader/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/stylehacks/* -Copyright: Ben Briggs (http:beneb.info) -License: Expat - -Files: react/node_modules/svgo/* -Copyright: 2012-2016, Kir Belevich -License: Expat - -Files: react/node_modules/symbol-observable/* -Copyright: Sindre Sorhus (sindresorhus.com) / Ben Lesh -License: Expat - -Files: react/node_modules/symbol-tree/* -Copyright: 2015, Joris van der Wel -License: Expat - -Files: react/node_modules/table/* -Copyright: 2015, 2018, Gajus Kuizinas (http:gajus.com/) -License: BSD-3-clause - -Files: react/node_modules/table/node_modules/* -Copyright: 2015-2021, Evgeny Poberezkin -License: Expat - -Files: react/node_modules/tapable/* -Copyright: Tobias Koppers @sokra -License: Expat - -Files: react/node_modules/tar/* -Copyright: James Halliday (mail@substack.net) and Isaac Z. Schlueter (i@izs.me) -License: Expat - -Files: react/node_modules/terser-webpack-plugin/* -Copyright: Sindre Sorhus (https:sindresorhus.com) -License: Expat - -Files: react/node_modules/terser-webpack-plugin/node_modules/commander/* -Copyright: 2011-2014, 2017, TJ Holowaychuk -License: Expat - -Files: react/node_modules/terser-webpack-plugin/node_modules/make-dir/* -Copyright: Sindre Sorhus (sindresorhus.com) -License: Expat - -Files: react/node_modules/terser-webpack-plugin/node_modules/pkg-dir/* -Copyright: Sindre Sorhus (sindresorhus.com) -License: Expat - -Files: react/node_modules/terser-webpack-plugin/node_modules/schema-utils/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/terser-webpack-plugin/node_modules/semver/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/terser-webpack-plugin/node_modules/source-map/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/terser-webpack-plugin/node_modules/terser/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/terser/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/terser/node_modules/commander/* -Copyright: 2011-2014, 2017, TJ Holowaychuk -License: Expat - -Files: react/node_modules/text-table/* -Copyright: info-missing -License: Expat - -Files: react/node_modules/throat/* -Copyright: 2013, 2014, Forbes Lindesay -License: Expat - -Files: react/node_modules/thunky/* -Copyright: 2013-2016, 2018, Mathias Buus -License: Expat - -Files: react/node_modules/tiny-warning/* -Copyright: 2019, Alexander Reardon -License: Expat - -Files: react/node_modules/tmpl/* -Copyright: 2014, Naitik Shah. -License: BSD-3-clause - -Files: react/node_modules/to-arraybuffer/* -Copyright: 2015, 2016, John Hiesey -License: Expat - -Files: react/node_modules/to-fast-properties/* -Copyright: 2013-2018, Petka Antonov -License: Expat - -Files: react/node_modules/to-object-path/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/to-regex-range/* -Copyright: 2015, -present, Jon Schlinkert. -License: Expat - -Files: react/node_modules/to-regex/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/toidentifier/* -Copyright: 2014-2017, Douglas Christopher Wilson -License: Expat - -Files: react/node_modules/tough-cookie/* -Copyright: 2015, Salesforce.com, Inc. -License: BSD-3-clause - -Files: react/node_modules/tough-cookie/node_modules/* -Copyright: 2017, Ryan Zimmerman -License: Expat - -Files: react/node_modules/tryer/* -Copyright: 2012-2019, Phil Booth -License: Expat - -Files: react/node_modules/tsconfig-paths/* -Copyright: 2016, Jonas Kello -License: Expat - -Files: react/node_modules/tsutils/* -Copyright: 2017, Klaus Meinhardt -License: Expat - -Files: react/node_modules/tty-browserify/* -Copyright: info-missing -License: Expat - -Files: react/node_modules/type-check/* -Copyright: George Zahariev -License: Expat - -Files: react/node_modules/type-detect/* -Copyright: 2013, Jake Luer (http:alogicalparadox.com) -License: Expat - -Files: react/node_modules/type-fest/* -Copyright: Sindre Sorhus (https:/sindresorhus.com) -License: Expat - -Files: react/node_modules/type-is/* -Copyright: 2014, Jonathan Ong - 2014, 2015, Douglas Christopher Wilson -License: Expat - -Files: react/node_modules/type/* -Copyright: 2011-2020, Mariusz Nowak, @medikoo, medikoo.com -License: ISC - -Files: react/node_modules/typedarray-to-buffer/* -Copyright: Feross Aboukhadijeh -License: Expat - -Files: react/node_modules/typedarray/* -Copyright: 2012, Joshua Bell - 2010, Linden Research, Inc. -License: Expat - -Files: react/node_modules/unbox-primitive/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/union-value/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/uniq/* -Copyright: 2013, Mikola Lysenko -License: Expat - -Files: react/node_modules/unique-filename/* -Copyright: npm, Inc -License: ISC - -Files: react/node_modules/unique-slug/* -Copyright: npm, Inc -License: ISC - -Files: react/node_modules/universalify/* -Copyright: 2017, Ryan Zimmerman -License: Expat - -Files: react/node_modules/unpipe/* -Copyright: 2014-2017, Douglas Christopher Wilson -License: Expat - -Files: react/node_modules/unquote/* -Copyright: 2017, Cameron Lakenen -License: Expat - -Files: react/node_modules/unset-value/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/unset-value/node_modules/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/upath/* -Copyright: 2014-2019, Angelos Pikoulas (agelos.pikoulas@gmail.com) -License: Expat - -Files: react/node_modules/uri-js/* -Copyright: 2011, Gary Court. -License: BSD-2-clause - -Files: react/node_modules/urix/* -Copyright: 2013-2018, Simon Lydell -License: Expat - -Files: react/node_modules/url-loader/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/url-parse/* -Copyright: 2015, Unshift.io, Arnout Kazemier, the Contributors. -License: Expat - -Files: react/node_modules/url/* -Copyright: Joyent, Inc. and other Node contributors. -License: Expat - -Files: react/node_modules/use/* -Copyright: 2015, -present, Jon Schlinkert. -License: Expat - -Files: react/node_modules/util-deprecate/* -Copyright: 2014, Nathan Rajlich -License: Expat - -Files: react/node_modules/util.promisify/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/util/* -Copyright: Joyent, Inc. and other Node contributors. -License: Expat - -Files: react/node_modules/util/node_modules/* -Copyright: Isaac Z. Schlueter -License: ISC - -Files: react/node_modules/utila/* -Copyright: 2013-2015, Aria Minaei -License: Expat - -Files: react/node_modules/utils-merge/* -Copyright: 2013-2017, Jared Hanson -License: Expat - -Files: react/node_modules/v8-compile-cache/* -Copyright: 2019, Andres Suarez -License: Expat - -Files: react/node_modules/v8-to-istanbul/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/vary/* -Copyright: 2014-2017, Douglas Christopher Wilson -License: Expat - -Files: react/node_modules/vendors/* -Copyright: 2016, Titus Wormer -License: Expat - -Files: react/node_modules/vm-browserify/* -Copyright: info-missing -License: Expat - -Files: react/node_modules/walker/* -Copyright: 2013, Naitik Shah -License: Apache-2.0 - -Files: react/node_modules/watchpack-chokidar2/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/watchpack-chokidar2/node_modules/anymatch/* -Copyright: 2014, 2015, 2019, Elan Shanker -License: ISC - -Files: react/node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/watchpack-chokidar2/node_modules/binary-extensions/* -Copyright: Sindre Sorhus (sindresorhus.com) -License: Expat - -Files: react/node_modules/watchpack-chokidar2/node_modules/braces/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/watchpack-chokidar2/node_modules/fill-range/node_modules/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/watchpack-chokidar2/node_modules/glob-parent/* -Copyright: 2014, 2015, 2019, Elan Shanker -License: ISC - -Files: react/node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/watchpack-chokidar2/node_modules/is-binary-path/* -Copyright: Sindre Sorhus (sindresorhus.com) -License: Expat - -Files: react/node_modules/watchpack-chokidar2/node_modules/micromatch/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/watchpack-chokidar2/node_modules/readdirp/* -Copyright: 2012-2015, Thorsten Lorenz -License: Expat - -Files: react/node_modules/watchpack/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/web-vitals/* -Copyright: 2020, Google LLC -License: Apache-2.0 - -Files: react/node_modules/webpack-dev-middleware/* -Copyright: 2010, Benjamin Thomas, Robert Kieffer -License: Expat - -Files: react/node_modules/webpack-dev-server/node_modules/anymatch/* -Copyright: 2014, 2015, 2019, Elan Shanker -License: ISC - -Files: react/node_modules/webpack-dev-server/node_modules/anymatch/node_modules/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/webpack-dev-server/node_modules/braces/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/webpack-dev-server/node_modules/fill-range/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/webpack-dev-server/node_modules/fill-range/node_modules/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/webpack-dev-server/node_modules/glob-parent/* -Copyright: 2014, 2015, 2019, Elan Shanker -License: ISC - -Files: react/node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/webpack-dev-server/node_modules/is-number/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/webpack-dev-server/node_modules/micromatch/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/webpack-dev-server/node_modules/readdirp/* -Copyright: 2012-2015, Thorsten Lorenz -License: Expat - -Files: react/node_modules/webpack-dev-server/node_modules/schema-utils/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/webpack-dev-server/node_modules/semver/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/webpack-dev-server/node_modules/to-regex-range/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/webpack-dev-server/node_modules/ws/* -Copyright: 2011, Einar Otto Stangvik -License: Expat - -Files: react/node_modules/webpack-dev-server/node_modules/yargs/* -Copyright: 2014, Contributors (ben@npmjs.com) - 2010, James Halliday (mail@substack.net) -License: Expat - -Files: react/node_modules/webpack-log/* -Copyright: 2017, webpack-contrib -License: Expat - -Files: react/node_modules/webpack-log/node_modules/* -Copyright: 2015, -present, Brian Woodward. -License: Expat - -Files: react/node_modules/webpack-manifest-plugin/* -Copyright: 2011-2017, JP Richardson -License: Expat - -Files: react/node_modules/webpack-manifest-plugin/node_modules/jsonfile/* -Copyright: 2012-2015, JP Richardson -License: Expat - -Files: react/node_modules/webpack-manifest-plugin/node_modules/universalify/* -Copyright: 2017, Ryan Zimmerman -License: Expat - -Files: react/node_modules/webpack-sources/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/webpack/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/webpack/node_modules/acorn/* -Copyright: Tobias Koppers @sokra -License: Expat - -Files: react/node_modules/webpack/node_modules/braces/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/webpack/node_modules/eslint-scope/* -Copyright: JS Foundation and other contributors, https:js.foundation / 2012-2013, Yusuke Suzuki (twitter: @Constellation) and other contributors. -License: BSD-2-clause - -Files: react/node_modules/webpack/node_modules/fill-range/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/webpack/node_modules/fill-range/node_modules/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/webpack/node_modules/is-number/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/webpack/node_modules/is-wsl/* -Copyright: Sindre Sorhus (sindresorhus.com) -License: Expat - -Files: react/node_modules/webpack/node_modules/loader-utils/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/webpack/node_modules/micromatch/* -Copyright: 2014-2018, Jon Schlinkert. -License: Expat - -Files: react/node_modules/webpack/node_modules/schema-utils/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/webpack/node_modules/serialize-javascript/* -Copyright: 2012-2015, Yahoo! Inc. -License: BSD-3-clause - -Files: react/node_modules/webpack/node_modules/source-map/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/webpack/node_modules/terser-webpack-plugin/* -Copyright: JS Foundation and other contributors -License: Expat - -Files: react/node_modules/webpack/node_modules/to-regex-range/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/whatwg-fetch/* -Copyright: 2014-2016, GitHub, Inc. -License: Expat - -Files: react/node_modules/which-boxed-primitive/* -Copyright: 2013-2020, Jordan Harband -License: Expat - -Files: react/node_modules/which-module/* -Copyright: 2015, 2016, 2019, Contributors -License: ISC - -Files: react/node_modules/which/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/which/bin/* -Copyright: Copyright (c) Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/word-wrap/* -Copyright: 2014-2017, Jon Schlinkert -License: Expat - -Files: react/node_modules/workbox-background-sync/* -Copyright: 2018, Google LLC -License: Expat - -Files: react/node_modules/workbox-broadcast-update/* -Copyright: 2018, Google LLC -License: Expat - -Files: react/node_modules/workbox-build/* -Copyright: 2009-2011, Mozilla Foundation and contributors -License: BSD-2-clause - -Files: react/node_modules/workbox-build/node_modules/fs-extra/* -Copyright: 2011-2017, JP Richardson -License: Expat - -Files: react/node_modules/workbox-build/node_modules/jsonfile/* -Copyright: 2012-2015, JP Richardson -License: Expat - -Files: react/node_modules/workbox-build/node_modules/universalify/* -Copyright: 2017, Ryan Zimmerman -License: Expat - -Files: react/node_modules/workbox-cacheable-response/* -Copyright: 2018, Google LLC -License: Expat - -Files: react/node_modules/workbox-core/* -Copyright: 2018, Google LLC -License: Expat - -Files: react/node_modules/workbox-expiration/* -Copyright: 2018, Google LLC -License: Expat - -Files: react/node_modules/workbox-google-analytics/* -Copyright: 2018, Google LLC -License: Expat - -Files: react/node_modules/workbox-navigation-preload/* -Copyright: 2018, Google LLC -License: Expat - -Files: react/node_modules/workbox-precaching/* -Copyright: 2018, Google LLC -License: Expat - -Files: react/node_modules/workbox-range-requests/* -Copyright: 2018, Google LLC -License: Expat - -Files: react/node_modules/workbox-routing/* -Copyright: 2018, Google LLC -License: Expat - -Files: react/node_modules/workbox-strategies/* -Copyright: 2018, Google LLC -License: Expat - -Files: react/node_modules/workbox-streams/* -Copyright: 2018, Google LLC -License: Expat - -Files: react/node_modules/workbox-sw/* -Copyright: 2018, Google LLC -License: Expat - -Files: react/node_modules/workbox-webpack-plugin/* -Copyright: 2018, Google LLC -License: Expat - -Files: react/node_modules/workbox-window/* -Copyright: 2018, Google LLC -License: Expat - -Files: react/node_modules/worker-rpc/* -Copyright: 2016, Christian Speckner -License: Expat - -Files: react/node_modules/wrap-ansi/node_modules/color-convert/* -Copyright: 2011-2016, Heather Arthur -License: Expat - -Files: react/node_modules/wrap-ansi/node_modules/color-name/* -Copyright: 2015, Dmitry Ivanov -License: Expat - -Files: react/node_modules/wrappy/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/write-file-atomic/* -Copyright: 2015, Rebecca Turner -License: ISC - -Files: react/node_modules/ws/* -Copyright: 2011, Einar Otto Stangvik -License: Expat - -Files: react/node_modules/xmlchars/* -Copyright: Louis-Dominique Dubeau and contributors to xmlchars -License: Expat - -Files: react/node_modules/xtend/* -Copyright: 2012-2014, Raynos. -License: Expat - -Files: react/node_modules/y18n/* -Copyright: 2015, 2016, 2019, Contributors -License: ISC - -Files: react/node_modules/yallist/* -Copyright: Isaac Z. Schlueter and Contributors -License: ISC - -Files: react/node_modules/yaml/* +Files: vite/node_modules/cosmiconfig/node_modules/yaml/* Copyright: 2018, Eemeli Aro License: ISC -Files: react/node_modules/yargs/* -Copyright: 2010, James Halliday (mail@substack.net); Modified work Copyright 2014, Contributors (ben@npmjs.com) +Files: vite/node_modules/cross-spawn/* +Copyright: 2018, Made With MOXY Lda License: Expat -Files: react/node_modules/yocto-queue/* -Copyright: Sindre Sorhus (https:sindresorhus.com) +Files: vite/node_modules/css-vendor/* +Copyright: 2013-2017, 2019 License: Expat -License: Apache-2.0 - This is free software, licensed under: - . - The Apache License, Version 2.0, January 2004 - . - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - . - http://www.apache.org/licenses/LICENSE-2.0 - . - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS"BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - +Files: vite/node_modules/csstype/* +Copyright: 2017, 2018, Fredrik Nicol +License: Expat + +Files: vite/node_modules/debug/* +Copyright: 2018-2021, Josh Junon + 2014-2017, TJ Holowaychuk +License: Expat + +Files: vite/node_modules/decode-named-character-reference/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/deep-is/* +Copyright: 2012, James Halliday + 2012, 2013, Thorsten Lorenz + 2009, Thomas Robinson <280north.com> +License: Expat + +Files: vite/node_modules/dequal/* +Copyright: Luke Edwards (lukeed.com) +License: Expat + +Files: vite/node_modules/devlop/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/dom-helpers/* +Copyright: 2015, Jason Quense +License: Expat + +Files: vite/node_modules/dot-case/* +Copyright: 2014, Blake Embrey (hello@blakeembrey.com) +License: Expat + +Files: vite/node_modules/electron-to-chromium/* +Copyright: 2018, Kilian Valkhof +License: ISC + +Files: vite/node_modules/entities/* +Copyright: Felix Böhm +License: ISC + +Files: vite/node_modules/error-ex/* +Copyright: 2015, JD Ballard +License: Expat + +Files: vite/node_modules/escalade/* +Copyright: Luke Edwards (lukeed.com) +License: Expat + +Files: vite/node_modules/escape-string-regexp/* +Copyright: Sindre Sorhus (https://sindresorhus.com) +License: Expat + +Files: vite/node_modules/eslint-plugin-react-hooks/* +Copyright: Meta Platforms, Inc. and affiliates. +License: Expat + +Files: vite/node_modules/eslint-plugin-react-refresh/* +Copyright: Arnaud Barré (https://github.com/ArnaudBarre) +License: Expat + +Files: vite/node_modules/eslint-scope/* +Copyright: JS Foundation and other contributors, https://js.foundation + 2012, 2013, Yusuke Suzuki (twitter: @Constellation) and other contributors. License: BSD-2-clause - Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - . - 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - . - 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - . - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -License: BSD-3-clause - This is free software, licensed under: - . - The (three-clause) BSD License - . - The BSD License - . - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - . - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - . - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - . - * Neither the name of the licensor nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - . - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +Files: vite/node_modules/eslint-visitor-keys/* +Copyright: contributors +License: Apache-2.0 +Files: vite/node_modules/eslint/* +Copyright: OpenJS Foundation and other contributors, License: Expat - This is free software, licensed under: - . - The MIT (X11) License - . - The MIT License - . - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated - documentation files (the "Software"), to deal in the Software - without restriction, including without limitation the rights to - use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to - whom the Software is furnished to do so, subject to the - following conditions: - . - The above copyright notice and this permission notice shall - be included in all copies or substantial portions of the - Software. - . - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT - WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE AND NONINFRINGEMENT. IN NO EVENT - SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. +Files: vite/node_modules/espree/* +Copyright: Open JS Foundation +License: BSD-2-clause + +Files: vite/node_modules/estraverse/* +Copyright: no-info-found +License: BSD-2-clause + +Files: vite/node_modules/estree-util-is-identifier-name/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/estree-walker/* +Copyright: 2015-2020, [these people](https://github.com/Rich-Harris/estree-walker/graphs/contributors) +License: Expat + +Files: vite/node_modules/esutils/* +Copyright: no-info-found +License: BSD-2-clause + +Files: vite/node_modules/extend/* +Copyright: 2014, Stefan Thomas +License: Expat + +Files: vite/node_modules/fast-deep-equal/* +Copyright: 2015-2017, Evgeny Poberezkin +License: Expat + +Files: vite/node_modules/fast-glob/* +Copyright: Denis Malinochkin +License: Expat + +Files: vite/node_modules/fast-glob/node_modules/glob-parent/* +Copyright: 2015, 2019, Elan Shanker License: ISC - Please fill license ISC from header of react/node_modules/@babel/core/node_modules/* +Files: vite/node_modules/fast-json-stable-stringify/* +Copyright: 2017, Evgeny Poberezkin + 2013, James Halliday +License: Expat -License: MPL-2.0 - This is free software, licensed under: - . - Mozilla Public License Version 2.0 - . - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. - On Debian systems, the complete text of Mozilla Public License v 2.0 - can be found in '/usr/share/common-licenses/MPL-2.0'. - +Files: vite/node_modules/fastq/* +Copyright: 2015-2020, Matteo Collina License: ISC - Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. - . - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -License: LGPL-3 - GNU LESSER GENERAL PUBLIC LICENSE - . - Version 3, 29 June 2007 - . - . - Copyright © 2007 Free Software Foundation, Inc. - . - Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - . - This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. - . - 0. Additional Definitions. - . - As used herein, “this License” refers to version 3 of the GNU Lesser General Public License, and the “GNU GPL” refers to version 3 of the GNU General Public License. - . - “The Library” refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. - . - An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. - . - A “Combined Work” is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the “Linked Version”. - . - The “Minimal Corresponding Source” for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. - . - The “Corresponding Application Code” for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. - . - 1. Exception to Section 3 of the GNU GPL. - . - You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. - . - 2. Conveying Modified Versions. - . - If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: - . - a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or - . - b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. - . - 3. Object Code Incorporating Material from Library Header Files. - . - The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: - . - a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. - . - b) Accompany the object code with a copy of the GNU GPL and this license document. - . - 4. Combined Works. - . - You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: - . - a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. - . - b) Accompany the Combined Work with a copy of the GNU GPL and this license document. - . - c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. - . - d) Do one of the following: - . - 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. - . - 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. - . - e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) - . - 5. Combined Libraries. - . - You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: - . - a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. - . - b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. - . - 6. Revised Versions of the GNU Lesser General Public License. - . - The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - . - Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. - . - If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. - . +Files: vite/node_modules/file-entry-cache/* +Copyright: Roy Riojas & Jared Wray +License: Expat -License: CC-BY-4.0 - Creative Commons Attribution 4.0 International Public License - . - By exercising the Licensed Rights (defined below), You accept and agree - to be bound by the terms and conditions of this Creative Commons - Attribution 4.0 International Public License ("Public License"). To the - extent this Public License may be interpreted as a contract, You are - granted the Licensed Rights in consideration of Your acceptance of - these terms and conditions, and the Licensor grants You such rights in - consideration of benefits the Licensor receives from making the - Licensed Material available under these terms and conditions. - . - . - Section 1 -- Definitions. - . - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - . - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - . - c. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - . - d. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - . - e. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - . - f. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - . - g. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - . - h. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - . - i. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - . - j. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - . - k. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - . - . - Section 2 -- Scope. - . - a. License grant. - . - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - . - a. reproduce and Share the Licensed Material, in whole or - in part; and - . - b. produce, reproduce, and Share Adapted Material. - . - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - . - 3. Term. The term of this Public License is specified in Section - 6(a). - . - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - . - 5. Downstream recipients. - . - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - . - b. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - . - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - . - b. Other rights. - . - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - . - 2. Patent and trademark rights are not licensed under this - Public License. - . - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties. - . - . - Section 3 -- License Conditions. - . - Your exercise of the Licensed Rights is expressly made subject to the - following conditions. - . - a. Attribution. - . - 1. If You Share the Licensed Material (including in modified - form), You must: - . - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - . - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - . - ii. a copyright notice; - . - iii. a notice that refers to this Public License; - . - iv. a notice that refers to the disclaimer of - warranties; - . - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - . - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - . - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - . - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - . - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - . - 4. If You Share Adapted Material You produce, the Adapter's - License You apply must not prevent recipients of the Adapted - Material from complying with this Public License. - . - . - Section 4 -- Sui Generis Database Rights. - . - Where the Licensed Rights include Sui Generis Database Rights that - apply to Your use of the Licensed Material: - . - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database; - . - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material; and - . - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - . - For the avoidance of doubt, this Section 4 supplements and does not - replace Your obligations under this Public License where the Licensed - Rights include other Copyright and Similar Rights. - . - . - Section 5 -- Disclaimer of Warranties and Limitation of Liability. - . - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - . - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - . - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - . - . - Section 6 -- Term and Termination. - . - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - . - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - . - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - . - 2. upon express reinstatement by the Licensor. - . - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - . - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - . - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - . - . - Section 7 -- Other Terms and Conditions. - . - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - . - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - . - . - Section 8 -- Interpretation. - . - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - . - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - . - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - . - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. +Files: vite/node_modules/fill-range/* +Copyright: 2013-2017, 2019 +License: Expat -License: Zlib - This is free software, licensed under: - . - The zlib License - . - The zlib License - . - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - . - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - . - 1. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - . - 2. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - . - 3. This notice may not be removed or altered from any source - distribution. - . +Files: vite/node_modules/find-up/* +Copyright: Sindre Sorhus (https://sindresorhus.com) +License: Expat + +Files: vite/node_modules/flat-cache/* +Copyright: Roy Riojas and Jared Wray +License: Expat + +Files: vite/node_modules/flatted/* +Copyright: 2018-2025, Andrea Giammarchi, @WebReflection +License: ISC + +Files: vite/node_modules/function-bind/* +Copyright: 2012-2014, Raynos. +License: Expat + +Files: vite/node_modules/gensync/* +Copyright: 2018, Logan Smyth +License: Expat + +Files: vite/node_modules/glob-parent/* +Copyright: 2015, 2019, Elan Shanker, 2021, Blaine Bublitz , Eric Schoffstall and other contributors +License: ISC + +Files: vite/node_modules/globals/* +Copyright: Sindre Sorhus (https://sindresorhus.com) +License: Expat + +Files: vite/node_modules/graphemer/* +Copyright: 2020, Filament (Anomalous Technologies Limited) +License: Expat + +Files: vite/node_modules/has-flag/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: vite/node_modules/hasown/* +Copyright: Jordan Harband and contributors +License: Expat + +Files: vite/node_modules/hast-to-hyperscript/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/hast-util-from-parse5/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/hast-util-from-parse5/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/hast-util-is-element/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/hast-util-parse-selector/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/hast-util-raw/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/hast-util-raw/node_modules/@types/mdast/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/hast-util-raw/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/hast-util-sanitize/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/hast-util-sanitize/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/hast-util-to-jsx-runtime/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/hast-util-to-jsx-runtime/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/hast-util-to-parse5/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/hast-util-whitespace/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/hastscript/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/hoist-non-react-statics/node_modules/react-is/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: vite/node_modules/html-url-attributes/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/html-void-elements/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/hyphenate-style-name/* +Copyright: 2015, Espen Hovlandsdal +License: BSD-3-clause + +Files: vite/node_modules/ignore/* +Copyright: 2013, Kael Zhang , contributors +License: Expat + +Files: vite/node_modules/import-fresh/* +Copyright: Sindre Sorhus (https://sindresorhus.com) +License: Expat + +Files: vite/node_modules/is-absolute-url/* +Copyright: Sindre Sorhus (https://sindresorhus.com) +License: Expat + +Files: vite/node_modules/is-alphabetical/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/is-alphanumerical/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/is-arrayish/* +Copyright: 2015, JD Ballard +License: Expat + +Files: vite/node_modules/is-buffer/* +Copyright: Feross Aboukhadijeh +License: Expat + +Files: vite/node_modules/is-core-module/* +Copyright: 2014, Dave Justice +License: Expat + +Files: vite/node_modules/is-decimal/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/is-extglob/* +Copyright: 2014-2016, Jon Schlinkert +License: Expat + +Files: vite/node_modules/is-glob/* +Copyright: 2014-2017, Jon Schlinkert. +License: Expat + +Files: vite/node_modules/is-hexadecimal/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/is-number/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/is-plain-obj/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: vite/node_modules/isexe/* +Copyright: 2011-2023, Isaac Z. Schlueter and Contributors +License: ISC + +Files: vite/node_modules/js-tokens/* +Copyright: 2014-2018, Simon Lydell +License: Expat + +Files: vite/node_modules/js-yaml/* +Copyright: 2011-2015, Vitaly Puzrin +License: Expat + +Files: vite/node_modules/json-buffer/* +Copyright: 2013, Dominic Tarr +License: Expat + +Files: vite/node_modules/json-schema-traverse/* +Copyright: 2015-2017, Evgeny Poberezkin +License: Expat + +Files: vite/node_modules/jss-plugin-camel-case/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/jss-plugin-default-unit/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/jss-plugin-global/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/jss-plugin-nested/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/jss-plugin-props-sort/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/jss-plugin-rule-value-function/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/jss-plugin-vendor-prefixer/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/jss/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/levn/* +Copyright: George Zahariev +License: Expat + +Files: vite/node_modules/lines-and-columns/* +Copyright: 2015, Brian Donovan +License: Expat + +Files: vite/node_modules/locate-path/* +Copyright: Sindre Sorhus (https://sindresorhus.com) +License: Expat + +Files: vite/node_modules/lodash.merge/* +Copyright: OpenJS Foundation and other contributors + Jeremy Ashkenas +License: Expat + +Files: vite/node_modules/longest-streak/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/loose-envify/* +Copyright: 2015, Andres Suarez +License: Expat + +Files: vite/node_modules/lower-case/* +Copyright: 2014, Blake Embrey (hello@blakeembrey.com) +License: Expat + +Files: vite/node_modules/lru-cache/* +Copyright: 2011-2023, Isaac Z. Schlueter and Contributors +License: ISC + +Files: vite/node_modules/markdown-table/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/mdast-util-definitions/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/mdast-util-find-and-replace/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/mdast-util-find-and-replace/node_modules/@types/mdast/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-find-and-replace/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/* +Copyright: Sindre Sorhus (https://sindresorhus.com) +License: Expat + +Files: vite/node_modules/mdast-util-from-markdown/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/mdast-util-gfm-autolink-literal/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/mdast-util-gfm-autolink-literal/node_modules/@types/mdast/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-gfm-footnote/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/mdast-util-gfm-footnote/node_modules/@types/mdast/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-gfm-footnote/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-gfm-strikethrough/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/mdast-util-gfm-strikethrough/node_modules/@types/mdast/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-gfm-strikethrough/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-gfm-table/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/mdast-util-gfm-table/node_modules/@types/mdast/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-gfm-table/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-gfm-task-list-item/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/mdast-util-gfm-task-list-item/node_modules/@types/mdast/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-gfm-task-list-item/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-gfm/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/mdast-util-gfm/node_modules/@types/mdast/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-gfm/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-mdx-expression/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/mdast-util-mdx-expression/node_modules/@types/mdast/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-mdx-expression/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-mdx-jsx/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/mdast-util-mdx-jsx/node_modules/@types/mdast/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-mdx-jsx/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-mdx-jsx/node_modules/parse-entities/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-mdxjs-esm/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/mdast-util-mdxjs-esm/node_modules/@types/mdast/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-mdxjs-esm/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-phrasing/* +Copyright: 2017, Victor Felder + 2017, Titus Wormer +License: Expat + +Files: vite/node_modules/mdast-util-phrasing/node_modules/@types/mdast/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-phrasing/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-phrasing/node_modules/unist-util-is/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/mdast-util-to-hast/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/mdast-util-to-markdown/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/mdast-util-to-markdown/node_modules/@types/mdast/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-to-markdown/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/mdast-util-to-string/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/mdurl/* +Copyright: 2015, Vitaly Puzrin, Alex Kocharin. +License: Expat + +Files: vite/node_modules/memoize-one/* +Copyright: 2019, Alexander Reardon +License: Expat + +Files: vite/node_modules/merge2/* +Copyright: 2014-2020, Teambition +License: Expat + +Files: vite/node_modules/micromark-core-commonmark/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-extension-gfm-autolink-literal/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-extension-gfm-footnote/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-extension-gfm-strikethrough/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-extension-gfm-table/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-extension-gfm-tagfilter/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-extension-gfm-task-list-item/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-extension-gfm/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-factory-destination/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-factory-label/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-factory-space/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-factory-title/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-factory-whitespace/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-util-character/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-util-chunked/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-util-classify-character/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-util-combine-extensions/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-util-decode-numeric-character-reference/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-util-decode-string/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-util-encode/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-util-html-tag-name/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-util-normalize-identifier/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-util-resolve-all/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-util-sanitize-uri/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-util-subtokenize/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-util-symbol/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark-util-types/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromark/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/micromatch/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/minimatch/* +Copyright: 2011-2023, Isaac Z. Schlueter and Contributors +License: ISC + +Files: vite/node_modules/nanoid/* +Copyright: 2013, 2017, Andrey Sitnik +License: Expat + +Files: vite/node_modules/no-case/* +Copyright: 2014, Blake Embrey (hello@blakeembrey.com) +License: Expat + +Files: vite/node_modules/node-releases/* +Copyright: 2017, Sergey Rubanov (https://github.com/chicoxyzzy) +License: Expat + +Files: vite/node_modules/object-assign/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: vite/node_modules/optionator/* +Copyright: George Zahariev +License: Expat + +Files: vite/node_modules/p-limit/* +Copyright: Sindre Sorhus (https://sindresorhus.com) +License: Expat + +Files: vite/node_modules/p-locate/* +Copyright: Sindre Sorhus (https://sindresorhus.com) +License: Expat + +Files: vite/node_modules/parent-module/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: vite/node_modules/parse-entities/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/parse-json/* +Copyright: Sindre Sorhus (https://sindresorhus.com) +License: Expat + +Files: vite/node_modules/parse5/* +Copyright: 2013-2019, Ivan Nikulin (ifaaan@gmail.com, https://github.com/inikulin) +License: Expat + +Files: vite/node_modules/parse5/node_modules/entities/* +Copyright: Felix Böhm +License: ISC + +Files: vite/node_modules/path-exists/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: vite/node_modules/path-key/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: vite/node_modules/path-parse/* +Copyright: 2015, Javier Blanco +License: Expat + +Files: vite/node_modules/path-type/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: vite/node_modules/picocolors/* +Copyright: 2021-2024, Oleksii Raspopov, Kostiantyn Denysov, Anton Verinov +License: ISC + +Files: vite/node_modules/picomatch/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/postcss/* +Copyright: 2013, 2017, Andrey Sitnik +License: Expat + +Files: vite/node_modules/prelude-ls/* +Copyright: George Zahariev +License: Expat + +Files: vite/node_modules/prop-types/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/prop-types/node_modules/react-is/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: vite/node_modules/property-information/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/queue-microtask/* +Copyright: Feross Aboukhadijeh +License: Expat + +Files: vite/node_modules/react-dom/* +Copyright: Meta Platforms, Inc. and affiliates. +License: Expat + +Files: vite/node_modules/react-is/* +Copyright: Meta Platforms, Inc. and affiliates. +License: Expat + +Files: vite/node_modules/react-markdown/* +Copyright: Espen Hovlandsdal +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/@types/mdast/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/bail/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/is-plain-obj/* +Copyright: Sindre Sorhus (https://sindresorhus.com) +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/mdast-util-from-markdown/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/mdast-util-to-hast/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/mdast-util-to-string/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/micromark/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/remark-parse/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/remark-rehype/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/trough/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/unified/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/unist-util-is/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/unist-util-position/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/unist-util-stringify-position/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/unist-util-visit-parents/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/unist-util-visit/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/vfile-message/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/react-markdown/node_modules/vfile/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/react-refresh/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: vite/node_modules/react-remark/* +Copyright: 2020, Christian Murphy +License: Expat + +Files: vite/node_modules/react-transition-group/* +Copyright: 2018, React Community +License: BSD-3-clause + +Files: vite/node_modules/react/* +Copyright: Meta Platforms, Inc. and affiliates. +License: Expat + +Files: vite/node_modules/regenerator-runtime/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/rehype-external-links/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/rehype-external-links/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/rehype-raw/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/rehype-raw/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/rehype-react/* +Copyright: 2016, rhysd + 2015, Titus Wormer + 2015, Mapbox +License: Expat + +Files: vite/node_modules/rehype-sanitize/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/remark-gfm/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/remark-gfm/node_modules/@types/mdast/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/remark-gfm/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/remark-gfm/node_modules/is-plain-obj/* +Copyright: Sindre Sorhus (https://sindresorhus.com) +License: Expat + +Files: vite/node_modules/remark-rehype/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/remark-stringify/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/remark-stringify/node_modules/@types/mdast/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/remark-stringify/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/remark-stringify/node_modules/is-plain-obj/* +Copyright: Sindre Sorhus (https://sindresorhus.com) +License: Expat + +Files: vite/node_modules/resolve-from/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: vite/node_modules/resolve/* +Copyright: 2012, James Halliday +License: Expat + +Files: vite/node_modules/reusify/* +Copyright: 2015, Matteo Collina +License: Expat + +Files: vite/node_modules/run-parallel/* +Copyright: Feross Aboukhadijeh +License: Expat + +Files: vite/node_modules/scheduler/* +Copyright: Meta Platforms, Inc. and affiliates. +License: Expat + +Files: vite/node_modules/semver/* +Copyright: 2011-2023, Isaac Z. Schlueter and Contributors +License: ISC + +Files: vite/node_modules/shebang-command/* +Copyright: Kevin Mårtensson (github.com/kevva) +License: Expat + +Files: vite/node_modules/shebang-regex/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: vite/node_modules/snake-case/* +Copyright: 2014, Blake Embrey (hello@blakeembrey.com) +License: Expat + +Files: vite/node_modules/source-map-js/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: Expat + +Files: vite/node_modules/space-separated-tokens/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/stringify-entities/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/strip-json-comments/* +Copyright: Sindre Sorhus (https://sindresorhus.com) +License: Expat + +Files: vite/node_modules/style-to-js/* +Copyright: 2017, 2020, Menglin "Mark" Xu +License: Expat + +Files: vite/node_modules/style-to-js/node_modules/inline-style-parser/* +Copyright: 2012, TJ Holowaychuk +License: Expat + +Files: vite/node_modules/style-to-object/* +Copyright: 2017, 2020, Menglin "Mark" Xu +License: Expat + +Files: vite/node_modules/stylis/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/supports-color/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: vite/node_modules/supports-preserve-symlinks-flag/* +Copyright: 2022, Inspect JS +License: Expat + +Files: vite/node_modules/tiny-warning/* +Copyright: 2019, Alexander Reardon +License: Expat + +Files: vite/node_modules/tinyglobby/* +Copyright: 2024, Madeline Gurriarán +License: Expat + +Files: vite/node_modules/tinyglobby/node_modules/fdir/* +Copyright: 2023, Abdullah Atta +License: Expat + +Files: vite/node_modules/tinyglobby/node_modules/picomatch/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/to-regex-range/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/trim-lines/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/trough/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/tss-react/* +Copyright: 2020, GitHub user u/garronej +License: Expat + +Files: vite/node_modules/type-check/* +Copyright: George Zahariev +License: Expat + +Files: vite/node_modules/typescript-eslint/* +Copyright: 2019, 2021, typescript-eslint and other contributors +License: Expat + +Files: vite/node_modules/unified/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/unist-builder/* +Copyright: 2015, Eugene Sharygin +License: Expat + +Files: vite/node_modules/unist-util-generated/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/unist-util-is/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/unist-util-position/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/unist-util-stringify-position/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/unist-util-visit-parents/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/unist-util-visit/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/update-browserslist-db/* +Copyright: 2014, 2022, Andrey Sitnik and other contributors +License: Expat + +Files: vite/node_modules/uri-js/* +Copyright: 2011, Gary Court. +License: BSD-2-Clause-Views + +Files: vite/node_modules/vfile-location/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/vfile-location/node_modules/@types/unist/* +Copyright: 2015, Microsoft Corporation. +License: Expat + +Files: vite/node_modules/vfile-message/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/vfile/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/vite-plugin-svgr/* +Copyright: 2021, Rongjian Zhang +License: Expat + +Files: vite/node_modules/vite/node_modules/fdir/* +Copyright: 2023, Abdullah Atta +License: Expat + +Files: vite/node_modules/vite/node_modules/picomatch/* +Copyright: 2013-2017, 2019 +License: Expat + +Files: vite/node_modules/web-namespaces/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat + +Files: vite/node_modules/which/* +Copyright: 2011-2023, Isaac Z. Schlueter and Contributors +License: ISC + +Files: vite/node_modules/word-wrap/* +Copyright: 2014-2016, Jon Schlinkert +License: Expat + +Files: vite/node_modules/xtend/* +Copyright: 2012-2014, Raynos. +License: Expat + +Files: vite/node_modules/yallist/* +Copyright: 2011-2023, Isaac Z. Schlueter and Contributors +License: ISC + +Files: vite/node_modules/yocto-queue/* +Copyright: Sindre Sorhus (https://sindresorhus.com) +License: Expat + +Files: vite/node_modules/zwitch/* +Copyright: 2014-2017, 2020, 2021, 2023, Titus Wormer +License: Expat diff --git a/debian/copyright-scan-patterns.yml b/debian/copyright-scan-patterns.yml index 6b53f61..3aef78e 100644 --- a/debian/copyright-scan-patterns.yml +++ b/debian/copyright-scan-patterns.yml @@ -8,29 +8,50 @@ check: ignore: pattern: + - lv2/ + - src/profilePluginMain.cpp - /.cache/ - - /react/public/ + - /vite/public/ - /debian/ - /source-map/ - /build/ - /CMakeFiles/ - - / - /test/ - /atob/ - - react/src/react-app-env.d.ts - - react/src/reportWebVitals.ts - - react/src/setupTests.ts + - vite/src/react-app-env.d.ts + - vite/src/reportWebVitals.ts + - vite/src/setupTests.ts - /usr/share/perl5/Dpkg/Copyright/Scanner.pm - - react/node_modules/glob/ - - react/node_modules/fs.realpath/ - - react/node_modules/sax/ - - react/node_modules/sha.js/ + - vite/node_modules/glob/ + - vite/node_modules/fs.realpath/ + - vite/node_modules/sax/ + - vite/node_modules/sha.js/ - AUTHORS - /debian/copyright/ - + - vite/node_modules/typescript/bin + - /bin/ + - /modules/libzip/regress/ + - /NetworkManagerP2P/src/ + - .editorconfig + - .gitmodules + - .well-known + - /rollup-linux-x64-gnu/rollup.linux-x64-gnu.node + - /rollup. + - /artifacts/ + - /img/ + - /modules/libzip/man/mkdocset.pl + - copyrightMain.cpp + - copyright + suffixes: + - db3 + - tcl + - db + - mp3 - generic + - flac + - svgx - rst - jpg - png @@ -41,7 +62,9 @@ ignore: - m4 - map - ico + - woff - woff2 + - xml - svg - mjs - d.ts @@ -59,4 +82,29 @@ ignore: - js - tsx - md - - yml \ No newline at end of file + - yml + - ai + - svgz + - css + - ts + - tsx + - mts + - cts + - cjs + - asc + - mdx + - jst + - html + - bak + - piBank + - test + - cmake + - bak + - xcf + - psd + - ttl + - so + - sh + - zh + - raw + - wav diff --git a/debian/copyright.bak b/debian/copyright.bak new file mode 100644 index 0000000..45dd967 --- /dev/null +++ b/debian/copyright.bak @@ -0,0 +1,4792 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: pipedal +Upstream-Contact: Robin E. R. Davies +Source: https://www.example.com/software/project + +Files: * +Copyright: 2021, Robin E. R. Davies +License: Expat + +Files: src/* +Copyright: 2021, Robin E. R. Davies +License: Expat + + +Files: react/src +Copyright: 2020, Robin E. R. Davies. +License: Expat + +Files: src/Lv2EventBufferWriter.hpp +Copyright: 2008-2014, David Robillard + 2021, Robin E. R. Davies +License: ISC and Expat + +Files: react/node_modules/@babel/* +Copyright: 2014, -present Sebastian McKenzie and other contributors +License: Expat + +Files: react/node_modules/@babel/core/node_modules/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/@babel/helper-compilation-targets/node_modules/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/@babel/helper-define-polyfill-provider/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/@babel/parser/* +Copyright: 2012-2020, various contributors (see AUTHORS) +License: Expat + +Files: react/node_modules/@babel/plugin-transform-runtime/node_modules/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/@babel/preset-env/node_modules/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/@babel/preset-modules/* +Copyright: 2020, Babel +License: Expat + +Files: react/node_modules/@cnakazawa/* +Copyright: Copyright 2010-2011 Mikeal Rogers +License: Apache-2.0 + +Files: react/node_modules/@emotion/* +Copyright: Emotion team and other contributors +License: Expat + +Files: react/node_modules/@eslint/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/@eslint/eslintrc/node_modules/ignore/* +Copyright: 2013, Kael Zhang , contributors +License: Expat + +Files: react/node_modules/@istanbuljs/* +Copyright: 2015, 2016, 2019, Contributors +License: ISC + +Files: react/node_modules/@istanbuljs/load-nyc-config/node_modules/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: react/node_modules/@istanbuljs/schema/* +Copyright: 2019, 2020, CFWare, LLC +License: Expat + +Files: react/node_modules/@jest/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/@jest/console/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: react/node_modules/@jest/console/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/@jest/console/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/@jest/core/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: react/node_modules/@jest/core/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/@jest/core/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/@jest/core/node_modules/jest-resolve/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/@jest/reporters/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: react/node_modules/@jest/reporters/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/@jest/reporters/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/@jest/reporters/node_modules/jest-resolve/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/@jest/reporters/node_modules/source-map/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/@jest/source-map/node_modules/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/@jest/transform/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: react/node_modules/@jest/transform/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/@jest/transform/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/@jest/transform/node_modules/source-map/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/@jest/types/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: react/node_modules/@jest/types/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/@jest/types/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/@material-ui/* +Copyright: 2014, Call-Em-All +License: Expat + +Files: react/node_modules/@material-ui/styles/node_modules/* +Copyright: 2017, 2018, Fredrik Nicol +License: Expat + +Files: react/node_modules/@material-ui/system/node_modules/* +Copyright: 2017, 2018, Fredrik Nicol +License: Expat + +Files: react/node_modules/@nodelib/* +Copyright: Denis Malinochkin +License: Expat + +Files: react/node_modules/@npmcli/* +Copyright: James Halliday (mail@substack.net) and Isaac Z. Schlueter (i@izs.me) +License: Expat + +Files: react/node_modules/@pmmmwh/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/@rollup/* +Copyright: 2019, RollupJS Plugin Contributors (https:github.com/rollup/plugins/graphs/contributors) +License: Expat + +Files: react/node_modules/@rollup/pluginutils/node_modules/* +Copyright: Microsoft Corporation. +License: Expat + +Files: react/node_modules/@sinonjs/* +Copyright: 2018, Sinon.JS +License: BSD-3-clause + +Files: react/node_modules/@sinonjs/fake-timers/* +Copyright: 2010-2014, Christian Johansen, christian@cjohansen.no. +License: BSD-3-clause + +Files: react/node_modules/@surma/* +Copyright: Copyright 2018 Google Inc. +License: Apache-2.0 + +Files: react/node_modules/@svgr/* +Copyright: 2017, Smooth Code +License: Expat + +Files: react/node_modules/@testing-library/dom/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/@testing-library/dom/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/@testing-library/jest-dom/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/@testing-library/jest-dom/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/@testing-library/jest-dom/node_modules/css/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/@testing-library/jest-dom/node_modules/source-map-resolve/* +Copyright: 2019, ZHAO Jinxiang + 2014-2020, Simon Lydell +License: Expat + +Files: react/node_modules/@testing-library/jest-dom/node_modules/source-map/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/@testing-library/react/* +Copyright: 2017, Kent C. Dodds +License: Expat + +Files: react/node_modules/@testing-library/user-event/* +Copyright: 2020, Giorgio Polvara +License: Expat + +Files: react/node_modules/@types/* +Copyright: Microsoft Corporation. +License: Expat + +Files: react/node_modules/@types/uglify-js/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/@types/webpack-sources/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/@types/webpack/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/@typescript-eslint/* +Copyright: 2019, TypeScript ESLint and other contributors +License: Expat + +Files: react/node_modules/@typescript-eslint/eslint-plugin/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/@typescript-eslint/parser/* +Copyright: JS Foundation and other contributors, https:js.foundation +License: BSD-2-clause + +Files: react/node_modules/@typescript-eslint/typescript-estree/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/@webassemblyjs/* +Copyright: 2018, Sven Sauleau +License: Expat + +Files: react/node_modules/@webassemblyjs/floating-point-hex-parser/* +Copyright: 2017, Mauro Bringolf +License: Expat + +Files: react/node_modules/@xtuc/* +Copyright: info-missing +License: Apache-2.0 + +Files: react/node_modules/@xtuc/ieee754/* +Copyright: 2008, Fair Oaks Labs, Inc. +License: BSD-3-clause + +Files: react/node_modules/accepts/* +Copyright: 2014-2017, Douglas Christopher Wilson + 2013, 2014, Jonathan Ong +License: Expat + +Files: react/node_modules/acorn-globals/* +Copyright: 2013, 2014, Forbes Lindesay +License: Expat + +Files: react/node_modules/acorn-jsx/* +Copyright: 2012-2017, Ingvar Stepanyan +License: Expat + +Files: react/node_modules/acorn-walk/* +Copyright: 2012-2020, various contributors (see AUTHORS) +License: Expat + +Files: react/node_modules/acorn/* +Copyright: 2012-2020, various contributors (see AUTHORS) +License: Expat + +Files: react/node_modules/adjust-sourcemap-loader/* +Copyright: 2016, 2019, Ben Holloway +License: Expat + +Files: react/node_modules/ajv-errors/* +Copyright: 2015-2021, Evgeny Poberezkin +License: Expat + +Files: react/node_modules/ajv-keywords/* +Copyright: 2015-2021, Evgeny Poberezkin +License: Expat + +Files: react/node_modules/ajv/* +Copyright: 2015-2021, Evgeny Poberezkin +License: Expat + +Files: react/node_modules/alphanum-sort/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/ansi-colors/* +Copyright: 2015, -present, Brian Woodward. +License: Expat + +Files: react/node_modules/ansi-escapes/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/ansi-escapes/node_modules/* +Copyright: Sindre Sorhus (https:/sindresorhus.com) +License: Expat + +Files: react/node_modules/ansi-html/* +Copyright: info-missing +License: Apache-2.0 + +Files: react/node_modules/anymatch/* +Copyright: 2019, Elan Shanker, Paul Miller (https:paulmillr.com) +License: ISC + +Files: react/node_modules/aproba/* +Copyright: 2015, 2017, Rebecca Turner +License: ISC + +Files: react/node_modules/argparse/* +Copyright: 2011-2015, Vitaly Puzrin +License: Expat + +Files: react/node_modules/aria-query/* +Copyright: 2020 A11yance +License: Apache-2.0 + +Files: react/node_modules/arity-n/* +Copyright: 2015, Christoph Hermann +License: Expat + +Files: react/node_modules/arr-diff/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/arr-flatten/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/arr-union/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/array-flatten/* +Copyright: 2014, Blake Embrey (hello@blakeembrey.com) +License: Expat + +Files: react/node_modules/array-includes/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/array-unique/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/array.prototype.flat/* +Copyright: 2017, ECMAScript Shims +License: Expat + +Files: react/node_modules/array.prototype.flatmap/* +Copyright: 2017, ECMAScript Shims +License: Expat + +Files: react/node_modules/asn1.js/* +Copyright: 2017, Fedor Indutny +License: Expat + +Files: react/node_modules/asn1.js/node_modules/* +Copyright: Fedor Indutny, 2015. +License: Expat + +Files: react/node_modules/assert/* +Copyright: Joyent, Inc. and other Node contributors. +License: Expat + +Files: react/node_modules/assert/node_modules/inherits/* +Copyright: Isaac Z. Schlueter +License: ISC + +Files: react/node_modules/assign-symbols/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/astral-regex/* +Copyright: Kevin Mårtensson (github.com/kevva) +License: Expat + +Files: react/node_modules/async-limiter/* +Copyright: 2017, Samuel Reed +License: Expat + +Files: react/node_modules/async/* +Copyright: 2010-2018, Caolan McMahon +License: Expat + +Files: react/node_modules/asynckit/* +Copyright: 2016, Alex Indigo +License: Expat + +Files: react/node_modules/at-least-node/* +Copyright: 2020, Ryan Zimmerman +License: ISC + +Files: react/node_modules/autoprefixer/* +Copyright: 2013, 2017, Andrey Sitnik +License: Expat + +Files: react/node_modules/axe-core/* +Copyright: Copyright (c) 2021 Deque Systems, Inc. +License: MPL-2.0 + +Files: react/node_modules/axobject-query/* +Copyright: Copyright 2020 A11yance +License: Apache-2.0 + +Files: react/node_modules/babel-eslint/node_modules/eslint-visitor-keys/* +Copyright: Contributors +License: Apache-2.0 + + +Files: react/node_modules/babel-eslint/* +Copyright: Copyright (c) 2014-2016 Sebastian McKenzie +License: Expat + +Files: react/node_modules/babel-extract-comments/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/babel-jest/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/babel-jest/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/babel-loader/* +Copyright: 2014-2019, Luís Couto +License: Expat + +Files: react/node_modules/babel-loader/node_modules/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/babel-plugin-dynamic-import-node/* +Copyright: 2016, Airbnb +License: Expat + +Files: react/node_modules/babel-plugin-istanbul/* +Copyright: 2016, Istanbul Code Coverage +License: BSD-3-clause + +Files: react/node_modules/babel-plugin-jest-hoist/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/babel-plugin-macros/* +Copyright: 2017, Kent C. Dodds +License: Expat + +Files: react/node_modules/babel-plugin-macros/node_modules/* +Copyright: 2015, David Clark +License: Expat + +Files: react/node_modules/babel-plugin-named-asset-import/* +Copyright: 2013, -present, Facebook, Inc. +License: Expat + +Files: react/node_modules/babel-plugin-polyfill-corejs2/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/babel-plugin-polyfill-corejs3/* +Copyright: 2014, -present Nicolò Ribaudo and other contributors +License: Expat + +Files: react/node_modules/babel-plugin-polyfill-regenerator/* +Copyright: 2014, -present Nicolò Ribaudo and other contributors +License: Expat + +Files: react/node_modules/babel-plugin-transform-react-remove-prop-types/* +Copyright: 2015, Nikita Gusakov +License: Expat + +Files: react/node_modules/babel-preset-current-node-syntax/* +Copyright: 2020, Nicolò Ribaudo and other contributors +License: Expat + +Files: react/node_modules/babel-preset-jest/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/babel-preset-react-app/* +Copyright: 2014, -present Sebastian McKenzie and other contributors +License: Expat + +Files: react/node_modules/babel-preset-react-app/node_modules/semver/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/babel-runtime/* +Copyright: 2014-2021, Denis Pushkarev +License: Expat + +Files: react/node_modules/babylon/* +Copyright: 2012-2020, various contributors (see AUTHORS) +License: Expat + +Files: react/node_modules/base/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/base/node_modules/define-property/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/base64-js/* +Copyright: 2014, Jameson Little +License: Expat + +Files: react/node_modules/batch/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/bfj/* +Copyright: 2012-2019, Phil Booth +License: Expat + +Files: react/node_modules/big.js/* +Copyright: 2018, Michael Mclaughlin +License: Expat + +Files: react/node_modules/binary-extensions/* +Copyright: 2019, Sindre Sorhus (https:sindresorhus.com), Paul Miller (https:paulmillr.com) +License: Expat + +Files: react/node_modules/bluebird/* +Copyright: 2013-2018, Petka Antonov +License: Expat + +Files: react/node_modules/bn.js/* +Copyright: Fedor Indutny, 2015. +License: Expat + +Files: react/node_modules/body-parser/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/body-parser/node_modules/bytes/* +Copyright: 2015, Jed Watson + 2012-2014, TJ Holowaychuk +License: Expat + +Files: react/node_modules/bonjour/* +Copyright: 2015-2018, Thomas Watson Steen +License: Expat + +Files: react/node_modules/brace-expansion/* +Copyright: 2013, Julian Gruber +License: Expat + +Files: react/node_modules/braces/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/browser-process-hrtime/* +Copyright: 2014, kumavis +License: BSD-2-clause + +Files: react/node_modules/browserify-aes/* +Copyright: 2014-2017, browserify-aes contributors +License: Expat + +Files: react/node_modules/browserify-cipher/* +Copyright: 2014-2017, Calvin Metcalf & contributors +License: Expat + +Files: react/node_modules/browserify-des/* +Copyright: 2014-2017, Calvin Metcalf, Fedor Indutny & contributors +License: Expat + +Files: react/node_modules/browserify-rsa/* +Copyright: 2014-2017, Calvin Metcalf & contributors +License: Expat + +Files: react/node_modules/browserify-sign/* +Copyright: 2014, 2015, Calvin Metcalf and browserify-sign contributors +License: ISC + +Files: react/node_modules/browserify-sign/node_modules/* +Copyright: Node.js contributors. +License: Expat + +Files: react/node_modules/browserify-sign/node_modules/safe-buffer/* +Copyright: Feross Aboukhadijeh +License: Expat + +Files: react/node_modules/browserify-zlib/* +Copyright: 2014, 2015, Devon Govett +License: Expat + +Files: react/node_modules/browserslist/* +Copyright: 2014, Andrey Sitnik and other contributors +License: Expat + +Files: react/node_modules/buffer-from/* +Copyright: 2016, 2018, Linus Unnebäck +License: Expat + +Files: react/node_modules/buffer-indexof/* +Copyright: 2013, Ryan Day +License: Expat + +Files: react/node_modules/buffer-xor/* +Copyright: 2014, 2015, Daniel Cousens +License: Expat + +Files: react/node_modules/buffer/* +Copyright: Feross Aboukhadijeh, and other contributors. +License: Expat + +Files: react/node_modules/builtin-modules/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/builtin-status-codes/* +Copyright: Ben Drucker (bendrucker.me) +License: Expat + +Files: react/node_modules/bytes/* +Copyright: 2015, Jed Watson + 2012-2014, TJ Holowaychuk +License: Expat + +Files: react/node_modules/cacache/* +Copyright: James Halliday (mail@substack.net) and Isaac Z. Schlueter (i@izs.me) +License: Expat + +Files: react/node_modules/cache-base/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/call-bind/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/camel-case/* +Copyright: 2014, Blake Embrey (hello@blakeembrey.com) +License: Expat + +Files: react/node_modules/camelcase/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/caniuse-api/* +Copyright: 2014, Sébastien Balayn +License: Expat + +Files: react/node_modules/caniuse-lite/* +Copyright: caniuse.com +License: CC-BY-4.0 + +Files: react/node_modules/case-sensitive-paths-webpack-plugin/* +Copyright: 2018, Michael Pratt +License: Expat + +Files: react/node_modules/char-regex/* +Copyright: 2019, Richie Bendall +License: Expat + +Files: react/node_modules/check-types/* +Copyright: 2012-2019, Phil Booth +License: Expat + +Files: react/node_modules/chokidar/* +Copyright: 2012-2019, Paul Miller (https:paulmillr.com), Elan Shanker +License: Expat + +Files: react/node_modules/chownr/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/ci-info/* +Copyright: 2015-2018, Thomas Watson Steen +License: Expat + +Files: react/node_modules/cipher-base/* +Copyright: 2017, crypto-browserify contributors +License: Expat + +Files: react/node_modules/cjs-module-lexer/* +Copyright: 2018-2020, Guy Bedford +License: Expat + +Files: react/node_modules/class-utils/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/clean-css/* +Copyright: 2017, JakubPawlowicz.com +License: Expat + +Files: react/node_modules/clean-css/node_modules/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/clsx/* +Copyright: Luke Edwards (lukeed.com) +License: Expat + +Files: react/node_modules/co/* +Copyright: 2014, TJ Holowaychuk <tj@vision-media.ca> +License: Expat + +Files: react/node_modules/coa/* +Copyright: 2015, -present Sergey Berezhnoy +License: Expat + +Files: react/node_modules/collect-v8-coverage/* +Copyright: 2019, Simen Bekkhus +License: Expat + +Files: react/node_modules/collection-visit/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/color-string/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/color/* +Copyright: 2012, Heather Arthur +License: Expat + +Files: react/node_modules/combined-stream/* +Copyright: 2011, Debuggable Limited +License: Expat + +Files: react/node_modules/commander/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/commondir/* +Copyright: 2010, 2013, James Halliday (mail@substack.net) +License: Expat + +Files: react/node_modules/component-emitter/* +Copyright: 2014, Component contributors +License: Expat + +Files: react/node_modules/compressible/* +Copyright: 2015, Douglas Christopher Wilson + 2014, Jeremiah Senkpiel + 2013, Jonathan Ong +License: Expat + +Files: react/node_modules/compression/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/concat-map/* +Copyright: info-missing +License: Expat + +Files: react/node_modules/concat-stream/* +Copyright: 2013, Max Ogden +License: Expat + +Files: react/node_modules/confusing-browser-globals/* +Copyright: 2013, -present, Facebook, Inc. +License: Expat + +Files: react/node_modules/connect-history-api-fallback/* +Copyright: 2012, Ben Ripkens http:bripkens.de +License: Expat + +Files: react/node_modules/console-browserify/* +Copyright: 2012-2014, Raynos. +License: Expat + +Files: react/node_modules/content-disposition/* +Copyright: 2014-2017, Douglas Christopher Wilson +License: Expat + +Files: react/node_modules/content-type/* +Copyright: 2014-2017, Douglas Christopher Wilson +License: Expat + +Files: react/node_modules/convert-source-map/* +Copyright: 2013, Thorsten Lorenz. +License: Expat + +Files: react/node_modules/cookie/* +Copyright: 2015, Douglas Christopher Wilson + 2012-2014, Roman Shtylman +License: Expat + +Files: react/node_modules/copy-concurrently/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/copy-descriptor/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/core-js-compat/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/core-js-pure/* +Copyright: 2014-2021, Denis Pushkarev +License: Expat + +Files: react/node_modules/core-js/* +Copyright: 2014-2021, Denis Pushkarev +License: Expat + +Files: react/node_modules/core-util-is/* +Copyright: Node.js contributors. +License: Expat + +Files: react/node_modules/cosmiconfig/* +Copyright: 2015, David Clark +License: Expat + +Files: react/node_modules/create-ecdh/* +Copyright: 2014-2017, createECDH contributors +License: Expat + +Files: react/node_modules/create-ecdh/node_modules/* +Copyright: Fedor Indutny, 2015. +License: Expat + +Files: react/node_modules/create-hash/* +Copyright: 2017, crypto-browserify contributors +License: Expat + +Files: react/node_modules/create-hmac/* +Copyright: 2017, crypto-browserify contributors +License: Expat + +Files: react/node_modules/cross-spawn/* +Copyright: 2018, Made With MOXY Lda +License: Expat + +Files: react/node_modules/cross-spawn/node_modules/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/crypto-browserify/* +Copyright: 2013, Dominic Tarr +License: Expat + +Files: react/node_modules/css-has-pseudo/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/css-loader/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/css-select-base-adapter/* +Copyright: 2018, Nik Coughlin +License: Expat + +Files: react/node_modules/css-select/* +Copyright: Felix Böhm +License: BSD-2-clause + +Files: react/node_modules/css-tree/* +Copyright: 2016-2019, Roman Dvornov +License: Expat + +Files: react/node_modules/css-tree/node_modules/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/css-vendor/* +Copyright: 2014, -present Oleg Slobodskoi +License: Expat + +Files: react/node_modules/css-what/* +Copyright: Felix Böhm +License: BSD-2-clause + +Files: react/node_modules/css/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/cssnano-preset-default/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/cssnano-util-get-arguments/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/cssnano-util-get-match/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/cssnano-util-raw-cache/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/cssnano-util-same-parent/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/cssnano/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/cssnano/node_modules/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: react/node_modules/cssnano/node_modules/cosmiconfig/* +Copyright: 2015, David Clark +License: Expat + +Files: react/node_modules/csso/* +Copyright: 2016-2019, Roman Dvornov +License: Expat + +Files: react/node_modules/csso/node_modules/source-map/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/cssstyle/* +Copyright: Chad Walker +License: Expat + +Files: react/node_modules/csstype/* +Copyright: 2017, 2018, Fredrik Nicol +License: Expat + +Files: react/node_modules/cyclist/* +Copyright: 2013-2016, 2018, Mathias Buus +License: Expat + +Files: react/node_modules/d/* +Copyright: 2011-2020, Mariusz Nowak, @medikoo, medikoo.com +License: ISC + +Files: react/node_modules/damerau-levenshtein/* +Copyright: 2018, Tadeusz Łazurski +License: BSD-2-clause + +Files: react/node_modules/debug/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/decode-uri-component/* +Copyright: Sam Verschueren (github.com/SamVerschueren) +License: Expat + +Files: react/node_modules/dedent/* +Copyright: 2015, Desmond Brand (dmnd@desmondbrand.com) +License: Expat + +Files: react/node_modules/deep-equal/* +Copyright: 2012-2014, James Halliday , 2009, Thomas Robinson <280north.com> +License: Expat + +Files: react/node_modules/deep-is/* +Copyright: 2012, James Halliday + 2012, 2013, Thorsten Lorenz + 2009, Thomas Robinson <280north.com> +License: Expat + +Files: react/node_modules/default-gateway/* +Copyright: silverwind +License: BSD-2-clause + +Files: react/node_modules/define-properties/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/define-property/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/del/node_modules/rimraf/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/delayed-stream/* +Copyright: 2011, Debuggable Limited +License: Expat + +Files: react/node_modules/depd/* +Copyright: 2014-2017, Douglas Christopher Wilson +License: Expat + +Files: react/node_modules/destroy/* +Copyright: 2014, Jonathan Ong me@jongleberry.com +License: Expat + +Files: react/node_modules/detect-node/* +Copyright: 2017, Ilya Kantor +License: Expat + +Files: react/node_modules/detect-port-alt/* +Copyright: 2015, xdf +License: Expat + +Files: react/node_modules/detect-port-alt/node_modules/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/diff-sequences/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/diffie-hellman/* +Copyright: 2017, Calvin Metcalf +License: Expat + +Files: react/node_modules/diffie-hellman/node_modules/* +Copyright: Fedor Indutny, 2015. +License: Expat + +Files: react/node_modules/dir-glob/* +Copyright: Kevin Mårtensson (github.com/kevva) +License: Expat + +Files: react/node_modules/dns-equal/* +Copyright: 2015-2018, Thomas Watson Steen +License: Expat + +Files: react/node_modules/dns-packet/* +Copyright: 2013-2016, 2018, Mathias Buus +License: Expat + +Files: react/node_modules/dns-txt/* +Copyright: 2015-2018, Thomas Watson Steen +License: Expat + +Files: react/node_modules/doctrine/* +Copyright: JS Foundation and other contributors, https://js.foundation + Copyright (C) 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about) +License: Apache-2.0 + +Files: react/node_modules/dom-converter/* +Copyright: 2013-2015, Aria Minaei +License: Expat + +Files: react/node_modules/dom-helpers/* +Copyright: 2015, Jason Quense +License: Expat + +Files: react/node_modules/dom-serializer/* +Copyright: Felix Böhm +License: BSD-2-clause + +Files: react/node_modules/domelementtype/* +Copyright: Felix Böhm +License: BSD-2-clause + +react/node_modules/domelementtype/* + +Files: react/node_modules/domhandler/* +Copyright: Felix Böhm +License: BSD-2-clause + +Files: react/node_modules/domutils/* +Copyright: Felix Böhm +License: BSD-2-clause + +Files: react/node_modules/dot-case/* +Copyright: 2014, Blake Embrey (hello@blakeembrey.com) +License: Expat + +Files: react/node_modules/dotenv-expand/* +Copyright: 2015, 2016, Scott Motte +License: BSD-2-clause + +Files: react/node_modules/dotenv/* +Copyright: 2015, 2016, Scott Motte +License: BSD-2-clause + +Files: react/node_modules/duplexer/* +Copyright: 2012-2014, Raynos. +License: Expat + +Files: react/node_modules/duplexify/* +Copyright: 2013-2016, 2018, Mathias Buus +License: Expat + +Files: react/node_modules/ee-first/* +Copyright: 2014, Jonathan Ong me@jongleberry.com +License: Expat + +Files: react/node_modules/ejs/* +Copyright: Copyright 2112 Matthew Eernisse (mde@fleegix.org) +License: Apache-2.0 + +Files: react/node_modules/electron-to-chromium/* +Copyright: 2018, Kilian Valkhof +License: ISC + +Files: react/node_modules/elliptic/* +Copyright: Fedor Indutny, 2015. +License: Expat + +Files: react/node_modules/emittery/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/encodeurl/* +Copyright: 2014-2017, Douglas Christopher Wilson +License: Expat + +Files: react/node_modules/end-of-stream/* +Copyright: 2013-2016, 2018, Mathias Buus +License: Expat + +Files: react/node_modules/enhanced-resolve/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/enquirer/* +Copyright: 2016, -present, Jon Schlinkert. +License: Expat + +Files: react/node_modules/entities/* +Copyright: Felix Böhm +License: BSD-2-clause + +Files: react/node_modules/error-ex/* +Copyright: 2015, JD Ballard +License: Expat + +Files: react/node_modules/error-stack-parser/* +Copyright: 2017, Eric Wendelin and other contributors +License: Expat + +Files: react/node_modules/es-abstract/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/es-to-primitive/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/es5-ext/* +Copyright: 2011-2020, Mariusz Nowak, @medikoo, medikoo.com +License: ISC + +Files: react/node_modules/es6-iterator/* +Copyright: 2013-2017, Mariusz Nowak (www.medikoo.com) +License: Expat + +Files: react/node_modules/es6-symbol/* +Copyright: 2011-2020, Mariusz Nowak, @medikoo, medikoo.com +License: ISC + +Files: react/node_modules/escalade/* +Copyright: Luke Edwards (lukeed.com) +License: Expat + +Files: react/node_modules/escape-html/* +Copyright: 2015, Tiancheng "Timothy" Gu + 2015, Andreas Lubbe + 2012, 2013, TJ Holowaychuk +License: Expat + +Files: react/node_modules/escodegen/* +Copyright: 2012, Yusuke Suzuki (twitter: @Constellation) and other contributors. +License: BSD-2-clause + +Files: react/node_modules/escodegen/node_modules/* +Copyright: George Zahariev +License: Expat + +Files: react/public/fonts/* +Copyright: Google LLC +License: Apache-2.0 + +Files: react/node_modules/escodegen/node_modules/estraverse/* +Copyright: Copyright (C) 2012-2016 [Yusuke Suzuki](http://github.com/Constellation) +License: BSD-2-clause + +Files: react/node_modules/escodegen/node_modules/source-map/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/eslint-config-react-app/* +Copyright: 2013, -present, Facebook, Inc. +License: Expat + +Files: react/node_modules/eslint-import-resolver-node/* +Copyright: 2015, Ben Mosher +License: Expat + +Files: react/node_modules/eslint-import-resolver-node/node_modules/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/eslint-module-utils/node_modules/debug/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/eslint-plugin-flowtype/* +Copyright: 2015, 2018, Gajus Kuizinas (http:gajus.com/) +License: BSD-3-clause + +Files: react/node_modules/eslint-plugin-import/* +Copyright: 2015, Ben Mosher +License: Expat + +Files: react/node_modules/eslint-plugin-import/node_modules/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: react/node_modules/eslint-plugin-import/node_modules/debug/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/eslint-plugin-import/node_modules/doctrine/* +Copyright: Copyright JS Foundation and other contributors, https://js.foundation + Copyright (C) 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about) +License: Apache-2.0 + +Files: react/node_modules/eslint-plugin-import/node_modules/resolve/* +Copyright: 2012, 2013, James Halliday +License: Expat + +Files: react/node_modules/eslint-plugin-jest/* +Copyright: 2018, Jonathan Kim +License: Expat + +Files: react/node_modules/eslint-plugin-react-hooks/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/eslint-plugin-react/* +Copyright: 2012, 2013, James Halliday +License: Expat + +Files: react/node_modules/eslint-plugin-react/node_modules/doctrine/* +Copyright: Copyright JS Foundation and other contributors, https://js.foundation + Copyright (C) 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about) +License: Apache-2.0 + +Files: react/node_modules/eslint-plugin-testing-library/* +Copyright: 2019, Mario Beltrán Alarcón +License: Expat + +Files: react/node_modules/eslint-plugin-testing-library/node_modules/* +Copyright: 2018, Toru Nagashima +License: Expat + +Files: react/node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/* +Copyright: 2019, TypeScript ESLint and other contributors +License: Expat + +Files: react/node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/typescript-estree/* +Copyright: JS Foundation and other contributors, https:js.foundation +License: BSD-2-clause + +Files: react/node_modules/eslint-plugin-testing-library/node_modules/eslint-visitor-keys/* +Copyright: Contributors +License: Apache-2.0 + +Files: react/node_modules/eslint-scope/* +Copyright: JS Foundation and other contributors, https:js.foundation / 2012-2013, Yusuke Suzuki (twitter: @Constellation) and other contributors. +License: BSD-2-clause + +Files: react/node_modules/eslint-utils/* +Copyright: 2018, Toru Nagashima +License: Expat + +Files: react/node_modules/eslint-visitor-keys/* +Copyright: Contributors +License: Apache-2.0 + +Files: react/node_modules/eslint-webpack-plugin/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/eslint/node_modules/@babel/* +Copyright: 2014, -present Sebastian McKenzie and other contributors +License: Expat + +Files: react/node_modules/eslint/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/eslint/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/eslint/node_modules/cross-spawn/* +Copyright: 2018, Made With MOXY Lda +License: Expat + +Files: react/node_modules/eslint/node_modules/escape-string-regexp/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/eslint/node_modules/eslint-utils/* +Copyright: 2018, Toru Nagashima +License: Expat + +Files: react/node_modules/eslint/node_modules/eslint-utils/node_modules/* +Copyright: Contributors +License: Apache-2.0 + +Files: react/node_modules/eslint/node_modules/globals/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/eslint/node_modules/ignore/* +Copyright: 2013, Kael Zhang , contributors +License: Expat + +Files: react/node_modules/eslint/node_modules/shebang-command/* +Copyright: Kevin Mårtensson (github.com/kevva) +License: Expat + +Files: react/node_modules/eslint/node_modules/which/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/espree/* +Copyright: Open JS Foundation +License: BSD-2-clause + +Files: react/node_modules/espree/node_modules/* +Copyright: Contributors +License: Apache-2.0 + +Files: react/node_modules/esprima/* +Copyright: JS Foundation and other contributors, https:js.foundation +License: BSD-2-clause + +Files: react/node_modules/esquery/* +Copyright: Copyright (c) 2013, Joel Feenstra +License: BSD-2-clause + +Files: react/node_modules/esrecurse/* +Copyright: Copyright (C) 2012-2016 [Yusuke Suzuki](http://github.com/Constellation) +License: BSD-2-clause + +Files: react/node_modules/estraverse/* +Copyright: 2012-2016, Yusuke Suzuki + 2012. Ariya Hidayat +License: BSD-2-clause + +Files: react/node_modules/esutils/* +Copyright: 2013, [Yusuke Suzuki](http://github.com/Constellation) +License: BSD-2-clause + +Files: react/node_modules/etag/* +Copyright: 2014-2017, Douglas Christopher Wilson +License: Expat + +Files: react/node_modules/eventemitter3/* +Copyright: 2014, Arnout Kazemier +License: Expat + +Files: react/node_modules/events/* +Copyright: Joyent, Inc. and other Node contributors. +License: Expat + +Files: react/node_modules/eventsource/* +Copyright: EventSource GitHub organisation +License: Expat + +Files: react/node_modules/evp_bytestokey/* +Copyright: 2017, crypto-browserify contributors +License: Expat + +Files: react/node_modules/exec-sh/* +Copyright: 2014, Aleksandr Tsertkov +License: Expat + +Files: react/node_modules/exit/* +Copyright: 2013 +License: Expat + +Files: react/node_modules/expand-brackets/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/expand-brackets/node_modules/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/expand-brackets/node_modules/debug/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/expect/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/expect/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/express/* +Copyright: 2014, 2015, Douglas Christopher Wilson + 2013, 2014, Roman Shtylman + 2009-2014, TJ Holowaychuk +License: Expat + +Files: react/node_modules/express/node_modules/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/express/node_modules/array-flatten/* +Copyright: 2014, Blake Embrey (hello@blakeembrey.com) +License: Expat + +Files: react/node_modules/ext/* +Copyright: 2011-2020, Mariusz Nowak, @medikoo, medikoo.com +License: ISC + +Files: react/node_modules/extend-shallow/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/extglob/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/extglob/node_modules/define-property/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/fast-deep-equal/* +Copyright: 2015-2021, Evgeny Poberezkin +License: Expat + +Files: react/node_modules/fast-glob/* +Copyright: Denis Malinochkin +License: Expat + +Files: react/node_modules/fast-json-stable-stringify/* +Copyright: 2017, Evgeny Poberezkin + 2013, James Halliday +License: Expat + +Files: react/node_modules/fastq/* +Copyright: 2015-2020, Matteo Collina +License: ISC + +Files: react/node_modules/file-entry-cache/* +Copyright: 2015, Roy Riojas +License: Expat + +Files: react/node_modules/file-loader/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/filesize/* +Copyright: 2020, Jason Mulligan +License: BSD-3-clause + +Files: react/node_modules/fill-range/* +Copyright: 2014, -present, Jon Schlinkert. +License: Expat + +Files: react/node_modules/finalhandler/* +Copyright: 2014-2017, Douglas Christopher Wilson +License: Expat + +Files: react/node_modules/finalhandler/node_modules/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/find-cache-dir/* +Copyright: James Talmage (github.com/jamestalmage) +License: Expat + +Files: react/node_modules/flat-cache/* +Copyright: 2015, Roy Riojas +License: Expat + +Files: react/node_modules/flatted/* +Copyright: 2018-2020, Andrea Giammarchi, @WebReflection +License: ISC + +Files: react/node_modules/flatten/* +Copyright: 2016, Joshua Holbrook +License: Expat + +Files: react/node_modules/flush-write-stream/* +Copyright: 2013-2016, 2018, Mathias Buus +License: Expat + +Files: react/node_modules/follow-redirects/* +Copyright: 2014, –present Olivier Lalonde , James Talmage , Ruben Verborgh +License: Expat + +Files: react/node_modules/for-in/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/fork-ts-checker-webpack-plugin/* +Copyright: 2020, TypeStrong +License: Expat + +Files: react/node_modules/fork-ts-checker-webpack-plugin/node_modules/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/fork-ts-checker-webpack-plugin/node_modules/braces/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/fork-ts-checker-webpack-plugin/node_modules/fill-range/node_modules/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/fork-ts-checker-webpack-plugin/node_modules/micromatch/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/fork-ts-checker-webpack-plugin/node_modules/semver/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/form-data/* +Copyright: 2012, Felix Geisendörfer (felix@debuggable.com) and contributors +License: Expat + +Files: react/node_modules/forwarded/* +Copyright: 2014-2017, Douglas Christopher Wilson +License: Expat + +Files: react/node_modules/fragment-cache/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/fresh/* +Copyright: 2015-2017, Douglas Christopher Wilson + 2012-2014, TJ Holowaychuk +License: Expat + +Files: react/node_modules/fs-extra/* +Copyright: 2011-2017, JP Richardson +License: Expat + +Files: react/node_modules/fs-minipass/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/fs-write-stream-atomic/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/function-bind/* +Copyright: 2012-2014, Raynos. +License: Expat + +Files: react/node_modules/functional-red-black-tree/* +Copyright: 2013, Mikola Lysenko +License: Expat + +Files: react/node_modules/gensync/* +Copyright: 2018, Logan Smyth +License: Expat + +Files: react/node_modules/get-intrinsic/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/get-own-enumerable-property-symbols/* +Copyright: 2019, Shahar Or +License: ISC + +Files: react/node_modules/get-package-type/* +Copyright: 2019, 2020, CFWare, LLC +License: Expat + +Files: react/node_modules/get-value/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/glob-parent/* +Copyright: 2014, 2015, 2019, Elan Shanker +License: ISC + +Files: react/node_modules/global-modules/* +Copyright: 2015, -present, Jon Schlinkert. +License: Expat + +Files: react/node_modules/global-prefix/* +Copyright: 2015, -present, Jon Schlinkert. +License: Expat + +Files: react/node_modules/graceful-fs/* +Copyright: Isaac Z. Schlueter, Ben Noordhuis, and Contributors +License: ISC + +Files: react/node_modules/has-bigints/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/has-symbols/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/has-value/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/has-values/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/has/* +Copyright: 2013, Thiago de Arruda +License: Expat + +Files: react/node_modules/hash-base/* +Copyright: 2016, Kirill Fomichev +License: Expat + +Files: react/node_modules/hash-base/node_modules/* +Copyright: Node.js contributors. +License: Expat + +Files: react/node_modules/hash-base/node_modules/safe-buffer/* +Copyright: Feross Aboukhadijeh +License: Expat + +Files: react/node_modules/hoopy/* +Copyright: 2012-2019, Phil Booth +License: Expat + +Files: react/node_modules/hosted-git-info/* +Copyright: 2015, Rebecca Turner +License: ISC + +Files: react/node_modules/html-entities/* +Copyright: 2013, Dulin Marat +License: Expat + +Files: react/node_modules/html-minifier-terser/* +Copyright: 2010-2019, Juriy "kangax" Zaytsev +License: Expat + +Files: react/node_modules/html-webpack-plugin/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/html-webpack-plugin/node_modules/loader-utils/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/htmlparser2/* +Copyright: Felix Böhm +License: BSD-2-clause + +Files: react/node_modules/htmlparser2/node_modules/dom-serializer/* +Copyright: 2014, The cheeriojs contributors +License: Expat + +Files: react/node_modules/http-errors/* +Copyright: 2016, Douglas Christopher Wilson doug@somethingdoug.com + 2014, Jonathan Ong me@jongleberry.com +License: Expat + +Files: react/node_modules/http-errors/node_modules/* +Copyright: Isaac Z. Schlueter +License: ISC + +Files: react/node_modules/http-proxy-middleware/* +Copyright: 2015, Steven Chim +License: Expat + +Files: react/node_modules/http-proxy-middleware/node_modules/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/http-proxy-middleware/node_modules/braces/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/http-proxy-middleware/node_modules/fill-range/node_modules/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/http-proxy-middleware/node_modules/micromatch/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/http-proxy/* +Copyright: 2010-2016, Charlie Robbins, Jarrett Cruger & the Contributors. +License: Expat + +Files: react/node_modules/https-browserify/* +Copyright: James Halliday +License: Expat + +Files: react/node_modules/human-signals/* +Copyright: Copyright 2019 ehmicky +License: Apache-2.0 + +Files: react/node_modules/hyphenate-style-name/* +Copyright: 2015, Espen Hovlandsdal +License: BSD-3-clause + +Files: react/node_modules/iconv-lite/* +Copyright: 2011, Alexander Shtuchkin +License: Expat + +Files: react/node_modules/identity-obj-proxy/* +Copyright: 2015, Keyan Zhang +License: Expat + +Files: react/node_modules/ieee754/* +Copyright: 2008, Fair Oaks Labs, Inc. +License: BSD-3-clause + +Files: react/node_modules/iferr/* +Copyright: 2014, Nadav Ivgi +License: Expat + +Files: react/node_modules/ignore/* +Copyright: 2013, Kael Zhang , contributors +License: Expat + +Files: react/node_modules/immer/* +Copyright: 2017, Michel Weststrate +License: Expat + +Files: react/node_modules/import-fresh/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/indexes-of/* +Copyright: 2013, Dominic Tarr +License: Expat + +Files: react/node_modules/infer-owner/* +Copyright: npm, Inc. and Contributors +License: ISC + +Files: react/node_modules/inflight/* +Copyright: Isaac Z. Schlueter +License: ISC + +Files: react/node_modules/inherits/* +Copyright: Isaac Z. Schlueter +License: ISC + +Files: react/node_modules/ini/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/internal-slot/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/ipaddr.js/* +Copyright: 2011-2017, whitequark +License: Expat + +Files: react/node_modules/is-accessor-descriptor/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/is-arguments/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/is-arrayish/* +Copyright: 2015, JD Ballard +License: Expat + +Files: react/node_modules/is-bigint/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/is-binary-path/* +Copyright: 2019, Sindre Sorhus (https:sindresorhus.com), Paul Miller (https:paulmillr.com) +License: Expat + +Files: react/node_modules/is-boolean-object/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/is-buffer/* +Copyright: Feross Aboukhadijeh +License: Expat + +Files: react/node_modules/is-callable/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/is-ci/* +Copyright: 2015-2018, Thomas Watson Steen +License: Expat + +Files: react/node_modules/is-color-stop/* +Copyright: 2017, pigcan +License: Expat + +Files: react/node_modules/is-core-module/* +Copyright: 2014, Dave Justice +License: Expat + +Files: react/node_modules/is-data-descriptor/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/is-date-object/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/is-descriptor/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/is-directory/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/is-docker/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/is-extendable/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/is-extglob/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/is-glob/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/is-negative-zero/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/is-number-object/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/is-number/* +Copyright: 2014, -present, Jon Schlinkert. +License: Expat + +Files: react/node_modules/is-plain-object/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/is-regex/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/is-resolvable/* +Copyright: 2018, Shinnosuke Watanabe +License: ISC + +Files: react/node_modules/is-string/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/is-symbol/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/is-windows/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/isexe/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/isobject/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/istanbul-lib-coverage/* +Copyright: 2012-2015, Yahoo! Inc. +License: BSD-3-clause + +Files: react/node_modules/istanbul-lib-instrument/* +Copyright: 2012-2015, Yahoo! Inc. +License: BSD-3-clause + +Files: react/node_modules/istanbul-lib-instrument/node_modules/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/istanbul-lib-report/node_modules/semver/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/istanbul-lib-source-maps/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/istanbul-reports/* +Copyright: 2012-2015, Yahoo! Inc. +License: BSD-3-clause + +Files: react/node_modules/jest-changed-files/node_modules/cross-spawn/* +Copyright: 2018, Made With MOXY Lda +License: Expat + +Files: react/node_modules/jest-changed-files/node_modules/execa/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/jest-changed-files/node_modules/get-stream/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/jest-changed-files/node_modules/shebang-command/* +Copyright: Kevin Mårtensson (github.com/kevva) +License: Expat + +Files: react/node_modules/jest-changed-files/node_modules/which/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/jest-circus/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/jest-circus/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/jest-config/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/jest-config/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/jest-config/node_modules/jest-resolve/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/jest-diff/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/jest-diff/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/jest-docblock/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/jest-each/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/jest-each/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/jest-environment-jsdom/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/jest-environment-node/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/jest-get-type/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/jest-haste-map/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/jest-jasmine2/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/jest-jasmine2/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/jest-leak-detector/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/jest-matcher-utils/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/jest-matcher-utils/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/jest-message-util/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/jest-message-util/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/jest-mock/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/jest-regex-util/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/jest-resolve-dependencies/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/jest-resolve/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/jest-resolve/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/jest-runner/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/jest-runner/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/jest-runner/node_modules/jest-resolve/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/jest-runtime/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/jest-runtime/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/jest-runtime/node_modules/jest-resolve/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/jest-serializer/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/jest-snapshot/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/jest-snapshot/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/jest-snapshot/node_modules/jest-resolve/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/jest-util/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/jest-util/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/jest-validate/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/jest-validate/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/jest-watch-typeahead/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/jest-watch-typeahead/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/jest-watcher/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/jest-watcher/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/jest/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/jest/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/jest/node_modules/jest-cli/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/js-tokens/* +Copyright: 2013-2018, Simon Lydell +License: Expat + +Files: react/node_modules/js-yaml/* +Copyright: 2011-2015, Vitaly Puzrin +License: Expat + +Files: react/node_modules/jsdom/* +Copyright: 2012-2020, various contributors (see AUTHORS) +License: Expat + +Files: react/node_modules/json-schema-traverse/* +Copyright: 2015-2021, Evgeny Poberezkin +License: Expat + +Files: react/node_modules/json-stable-stringify-without-jsonify/* +Copyright: info-missing +License: Expat + +Files: react/node_modules/json3/* +Copyright: 2013-2015, Benjamin Tan. + 2012-2015, Kit Cambridge. +License: Expat + +Files: react/node_modules/jsonfile/* +Copyright: 2012-2015, JP Richardson +License: Expat + +Files: react/node_modules/jss-plugin-camel-case/* +Copyright: 2014, -present Oleg Isonen (Slobodskoi) & contributors +License: Expat + +Files: react/node_modules/jss-plugin-default-unit/* +Copyright: 2014, -present Oleg Isonen (Slobodskoi) & contributors +License: Expat + +Files: react/node_modules/jss-plugin-global/* +Copyright: 2014, -present Oleg Isonen (Slobodskoi) & contributors +License: Expat + +Files: react/node_modules/jss-plugin-nested/* +Copyright: 2014, -present Oleg Isonen (Slobodskoi) & contributors +License: Expat + +Files: react/node_modules/jss-plugin-props-sort/* +Copyright: 2014, -present Oleg Isonen (Slobodskoi) & contributors +License: Expat + +Files: react/node_modules/jss-plugin-rule-value-function/* +Copyright: 2014, -present Oleg Isonen (Slobodskoi) & contributors +License: Expat + +Files: react/node_modules/jss-plugin-vendor-prefixer/* +Copyright: 2014, -present Oleg Isonen (Slobodskoi) & contributors +License: Expat + +Files: react/node_modules/jss/* +Copyright: 2014, -present Oleg Isonen (Slobodskoi) & contributors +License: Expat + +Files: react/node_modules/killable/* +Copyright: 2014, Marten de Vries +License: ISC + +Files: react/node_modules/kind-of/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/kleur/* +Copyright: Luke Edwards (lukeed.com) +License: Expat + +Files: react/node_modules/klona/* +Copyright: Luke Edwards (lukeed.com) +License: Expat + +Files: react/node_modules/last-call-webpack-plugin/* +Copyright: 2016, Nuno Rodrigues +License: Expat + +Files: react/node_modules/levn/* +Copyright: George Zahariev +License: Expat + +Files: react/node_modules/lines-and-columns/* +Copyright: 2015, Brian Donovan +License: Expat + +Files: react/node_modules/loader-runner/* +Copyright: Tobias Koppers @sokra +License: Expat + +Files: react/node_modules/loader-utils/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/lodash.clonedeep/* +Copyright: jQuery Foundation and other contributors / Jeremy Ashkenas +License: Expat + +Files: react/node_modules/lodash.debounce/* +Copyright: jQuery Foundation and other contributors / Jeremy Ashkenas +License: Expat + +Files: react/node_modules/lodash.memoize/* +Copyright: jQuery Foundation and other contributors / Jeremy Ashkenas +License: Expat + +Files: react/node_modules/lodash.merge/* +Copyright: OpenJS Foundation and other contributors / Jeremy Ashkenas +License: Expat + +Files: react/node_modules/lodash.template/* +Copyright: OpenJS Foundation and other contributors / Jeremy Ashkenas +License: Expat + +Files: react/node_modules/lodash.templatesettings/* +Copyright: OpenJS Foundation and other contributors / Jeremy Ashkenas +License: Expat + +Files: react/node_modules/lodash.truncate/* +Copyright: jQuery Foundation and other contributors / Jeremy Ashkenas +License: Expat + +Files: react/node_modules/lodash.uniq/* +Copyright: jQuery Foundation and other contributors / Jeremy Ashkenas +License: Expat + +Files: react/node_modules/lodash/* +Copyright: OpenJS Foundation and other contributors / Jeremy Ashkenas +License: Expat + +Files: react/node_modules/loglevel/* +Copyright: 2013, Tim Perry +License: Expat + +Files: react/node_modules/loose-envify/* +Copyright: 2015, Andres Suarez +License: Expat + +Files: react/node_modules/lower-case/* +Copyright: 2014, Blake Embrey (hello@blakeembrey.com) +License: Expat + +Files: react/node_modules/lru-cache/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/lz-string/* +Copyright: 2008-2011, Pivotal Labs +License: Expat + +Files: react/node_modules/magic-string/* +Copyright: 2015, 2018, Rich Harris +License: Expat + +Files: react/node_modules/make-dir/node_modules/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/makeerror/* +Copyright: 2014, Naitik Shah. +License: BSD-3-clause + +Files: react/node_modules/map-cache/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/map-visit/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/md5.js/* +Copyright: 2016, Kirill Fomichev +License: Expat + +Files: react/node_modules/media-typer/* +Copyright: 2014-2017, Douglas Christopher Wilson +License: Expat + +Files: react/node_modules/merge-descriptors/* +Copyright: 2014-2017, Douglas Christopher Wilson + 2013, 2014, Jonathan Ong +License: Expat + +Files: react/node_modules/merge-stream/* +Copyright: Stephen Sugden (stephensugden.com) +License: Expat + +Files: react/node_modules/merge2/* +Copyright: 2014-2020, Teambition +License: Expat + +Files: react/node_modules/methods/* +Copyright: 2015-2017, Douglas Christopher Wilson + 2012-2014, TJ Holowaychuk +License: Expat + +Files: react/node_modules/microevent.ts/* +Copyright: 2016, Christian Speckner +License: Expat + +Files: react/node_modules/micromatch/* +Copyright: 2014, -present, Jon Schlinkert. +License: Expat + +Files: react/node_modules/miller-rabin/* +Copyright: Fedor Indutny, 2015. +License: Expat + +Files: react/node_modules/mime-db/* +Copyright: 2014, Jonathan Ong me@jongleberry.com +License: Expat + +Files: react/node_modules/mime-types/* +Copyright: 2014-2017, Douglas Christopher Wilson + 2013, 2014, Jonathan Ong +License: Expat + +Files: react/node_modules/mime/* +Copyright: 2010, Benjamin Thomas, Robert Kieffer +License: Expat + +Files: react/node_modules/min-indent/* +Copyright: Sindre Sorhus (sindresorhus.com), James Kyle (thejameskyle.com) +License: Expat + +Files: react/node_modules/mini-css-extract-plugin/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/minimalistic-assert/* +Copyright: 2015, Calvin Metcalf +License: ISC + +Files: react/node_modules/minimatch/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/minimist/* +Copyright: info-missing +License: Expat + +Files: react/node_modules/minipass-collect/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/minipass-flush/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/minipass-pipeline/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/minipass/* +Copyright: npm, Inc. and Contributors +License: ISC + +Files: react/node_modules/minizlib/* +Copyright: Node.js contributors. / Joyent, Inc. and other Node contributors. / Isaac Z. Schlueter and Contributors +License: Expat + +Files: react/node_modules/mississippi/* +Copyright: info-missing +License: BSD-2-clause + +Files: react/node_modules/mixin-deep/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/mkdirp/* +Copyright: 2010, 2013, James Halliday (mail@substack.net) +License: Expat + +Files: react/node_modules/move-concurrently/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/multicast-dns-service-types/* +Copyright: 2013-2016, 2018, Mathias Buus +License: Expat + +Files: react/node_modules/multicast-dns/* +Copyright: 2013-2016, 2018, Mathias Buus +License: Expat + +Files: react/node_modules/nanoid/* +Copyright: 2013, 2017, Andrey Sitnik +License: Expat + +Files: react/node_modules/nanomatch/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/native-url/* +Copyright: info-missing +License: Apache-2.0 + +Files: react/node_modules/negotiator/* +Copyright: 2014, 2015, Douglas Christopher Wilson + 2012-2014, Isaac Z. Schlueter + 2012-2014, Federico Romero +License: Expat + +Files: react/node_modules/neo-async/* +Copyright: Caolan McMahon / 2014-2018, Suguru Motegi +License: Expat + +Files: react/node_modules/next-tick/* +Copyright: 2012-2016, Mariusz Nowak +License: Expat + +Files: react/node_modules/nice-try/* +Copyright: 2018, Tobias Reich +License: Expat + +Files: react/node_modules/no-case/* +Copyright: 2014, Blake Embrey (hello@blakeembrey.com) +License: Expat + +Files: react/node_modules/node-forge/* +Copyright: header is +License: BSD-3-clause + +Files: react/node_modules/node-int64/* +Copyright: 2014, Robert Kieffer +License: Expat + +Files: react/node_modules/node-libs-browser/* +Copyright: 2012, Tobias Koppers +License: Expat + +Files: react/node_modules/node-modules-regexp/* +Copyright: James Talmage (github.com/jamestalmage) +License: Expat + +Files: react/node_modules/node-notifier/* +Copyright: 2017, Mikael Brevik +License: Expat + +Files: react/node_modules/node-notifier/node_modules/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/node-notifier/vendor/* +Copyright: 2019, Solutions Paralint inc. +License: BSD-3-clause + +Files: react/node_modules/node-notifier/vendor/snoreToast/* +Copyright: 2007, Free Software Foundation, Inc. +License: LGPL-3 + +Files: react/node_modules/node-releases/* +Copyright: 2017, Sergey Rubanov (https:github.com/chicoxyzzy) +License: Expat + +Files: react/node_modules/normalize-package-data/* +Copyright: Meryn Stol ("Author") +License: BSD-2-clause + +Files: react/node_modules/normalize-package-data/node_modules/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/normalize-path/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/normalize-range/* +Copyright: James Talmage (github.com/jamestalmage) +License: Expat + +Files: react/node_modules/nth-check/* +Copyright: Felix Böhm +License: BSD-2-clause + +Files: react/node_modules/num2fraction/* +Copyright: 2014, PostCSS +License: Expat + +Files: react/node_modules/nwsapi/* +Copyright: 2007-2019, Diego Perini (http:www.iport.it/) +License: Expat + +Files: react/node_modules/object-copy/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/object-copy/node_modules/define-property/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/object-inspect/* +Copyright: 2012, 2013, James Halliday +License: Expat + +Files: react/node_modules/object-is/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/object-keys/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/object-visit/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/object.assign/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/object.entries/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/object.fromentries/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/object.getownpropertydescriptors/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/object.pick/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/object.values/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/obuf/* +Copyright: Fedor Indutny, 2015. +License: Expat + +Files: react/node_modules/on-finished/* +Copyright: 2014-2017, Douglas Christopher Wilson + 2013, 2014, Jonathan Ong +License: Expat + +Files: react/node_modules/on-headers/* +Copyright: 2014-2017, Douglas Christopher Wilson +License: Expat + +Files: react/node_modules/once/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/onetime/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/open/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/optimize-css-assets-webpack-plugin/* +Copyright: 2016, Nuno Rodrigues +License: Expat + +Files: react/node_modules/optionator/* +Copyright: George Zahariev +License: Expat + +Files: react/node_modules/original/* +Copyright: 2015, Unshift.io, Arnout Kazemier, the Contributors. +License: Expat + +Files: react/node_modules/os-browserify/* +Copyright: 2017, CoderPuppy +License: Expat + +Files: react/node_modules/p-each-series/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/p-map/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/pako/* +Copyright: 2014-2017, Vitaly Puzrin and Andrei Tuputcyn +License: Expat + +Files: react/node_modules/pako/lib/* +Copyright: 2014-2017, Vitaly Puzrin and Andrey Tupitsin / (C) 1995-2013, Jean-loup Gailly and Mark Adler +License: Zlib + +Files: react/node_modules/parallel-transform/* +Copyright: 2013-2016, 2018, Mathias Buus +License: Expat + +Files: react/node_modules/param-case/* +Copyright: 2014, Blake Embrey (hello@blakeembrey.com) +License: Expat + +Files: react/node_modules/parse-asn1/* +Copyright: 2017, crypto-browserify contributors +License: ISC + +Files: react/node_modules/parse-json/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/parse5/* +Copyright: 2013-2019, Ivan Nikulin (ifaaan@gmail.com, https:github.com/inikulin) +License: Expat + +Files: react/node_modules/parseurl/* +Copyright: 2014-2017, Douglas Christopher Wilson + 2013, 2014, Jonathan Ong +License: Expat + +Files: react/node_modules/pascal-case/* +Copyright: 2014, Blake Embrey (hello@blakeembrey.com) +License: Expat + +Files: react/node_modules/pascalcase/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/path-browserify/* +Copyright: Copyright Joyent, Inc. and other Node contributors. +License: Expat + +Files: react/node_modules/path-dirname/* +Copyright: Elan Shanker and Node.js contributors. +License: Expat + +Files: react/node_modules/path-parse/* +Copyright: 2015, Javier Blanco +License: Expat + +Files: react/node_modules/path-to-regexp/* +Copyright: 2014, Blake Embrey (hello@blakeembrey.com) +License: Expat + +Files: react/node_modules/pbkdf2/* +Copyright: 2014, 2015, Daniel Cousens +License: Expat + +Files: react/node_modules/picomatch/* +Copyright: 2017, -present, Jon Schlinkert. +License: Expat + +Files: react/node_modules/pinkie-promise/* +Copyright: Vsevolod Strukchinsky (github.com/floatdrop) +License: Expat + +Files: react/node_modules/pinkie/* +Copyright: Vsevolod Strukchinsky (github.com/floatdrop) +License: Expat + +Files: react/node_modules/pirates/* +Copyright: 2016-2018, Ari Porad +License: Expat + +Files: react/node_modules/portfinder/* +Copyright: 2012, Charlie Robbins +License: Expat + +Files: react/node_modules/portfinder/node_modules/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/posix-character-classes/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/postcss-attribute-case-insensitive/* +Copyright: 2016, Dmitry Semigradsky +License: Expat + +Files: react/node_modules/postcss-calc/* +Copyright: 2014, 2017, Maxime Thirouin +License: Expat + +Files: react/node_modules/postcss-color-rebeccapurple/* +Copyright: 2014, 2017, Maxime Thirouin +License: Expat + +Files: react/node_modules/postcss-colormin/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-colormin/node_modules/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-convert-values/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-convert-values/node_modules/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-custom-selectors/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-dir-pseudo-class/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-discard-comments/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-discard-duplicates/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-discard-empty/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-discard-overridden/* +Copyright: 2016, Justineo +License: Expat + +Files: react/node_modules/postcss-flexbugs-fixes/* +Copyright: 2015, Luis Rudge +License: Expat + +Files: react/node_modules/postcss-font-variant/* +Copyright: 2014, Maxime Thirouin & Ian Storm Taylor +License: Expat + +Files: react/node_modules/postcss-initial/* +Copyright: 2015, Maksim Koretskiy +License: Expat + +Files: react/node_modules/postcss-load-config/node_modules/cosmiconfig/* +Copyright: 2015, David Clark +License: Expat + +Files: react/node_modules/postcss-loader/* +Copyright: 2013, 2017, Andrey Sitnik +License: Expat + +Files: react/node_modules/postcss-loader/node_modules/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/postcss-media-minmax/* +Copyright: 2014, PostCSS +License: Expat + +Files: react/node_modules/postcss-merge-longhand/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-merge-longhand/node_modules/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-merge-rules/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-minify-font-values/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-minify-gradients/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-minify-gradients/node_modules/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-minify-params/* +Copyright: 2015, 2018, Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-minify-params/node_modules/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-minify-selectors/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-modules-extract-imports/* +Copyright: 2015, Glen Maddern +License: ISC + +Files: react/node_modules/postcss-modules-local-by-default/* +Copyright: 2015, Mark Dalgleish +License: Expat + +Files: react/node_modules/postcss-modules-scope/* +Copyright: 2015, Glen Maddern +License: ISC + +Files: react/node_modules/postcss-modules-values/* +Copyright: 2015, Glen Maddern +License: ISC + +Files: react/node_modules/postcss-normalize-charset/* +Copyright: 2015, 2018, Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-normalize-display-values/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-normalize-display-values/node_modules/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-normalize-positions/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-normalize-positions/node_modules/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-normalize-repeat-style/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-normalize-repeat-style/node_modules/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-normalize-string/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-normalize-string/node_modules/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-normalize-timing-functions/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-normalize-timing-functions/node_modules/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-normalize-unicode/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-normalize-unicode/node_modules/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-normalize-url/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-normalize-url/node_modules/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: react/node_modules/postcss-normalize-url/node_modules/postcss-value-parser/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-normalize-whitespace/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-normalize-whitespace/node_modules/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-ordered-values/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-ordered-values/node_modules/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-page-break/* +Copyright: 2017, AUTHOR_NAME +License: Expat + +Files: react/node_modules/postcss-pseudo-class-any-link/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-reduce-initial/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-reduce-transforms/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-reduce-transforms/node_modules/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-replace-overflow-wrap/* +Copyright: 2016, Matthias Müller +License: Expat + +Files: react/node_modules/postcss-safe-parser/* +Copyright: 2013, 2017, Andrey Sitnik +License: Expat + +Files: react/node_modules/postcss-selector-matches/* +Copyright: 2014, 2017, Maxime Thirouin +License: Expat + +Files: react/node_modules/postcss-selector-not/* +Copyright: 2014, 2017, Maxime Thirouin +License: Expat + +Files: react/node_modules/postcss-selector-parser/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-svgo/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-svgo/node_modules/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-unique-selectors/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/postcss-value-parser/* +Copyright: Bogdan Chadkin +License: Expat + +Files: react/node_modules/postcss-values-parser/* +Copyright: Andrew Powell +License: Expat + +Files: react/node_modules/postcss/node_modules/source-map/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/prelude-ls/* +Copyright: George Zahariev +License: Expat + +Files: react/node_modules/pretty-bytes/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/pretty-error/* +Copyright: 2013-2015, Aria Minaei +License: Expat + +Files: react/node_modules/pretty-format/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/pretty-format/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/pretty-format/node_modules/react-is/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/process/* +Copyright: 2013, Roman Shtylman +License: Expat + +Files: react/node_modules/progress/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/promise-inflight/* +Copyright: 2015, 2017, Rebecca Turner +License: ISC + +Files: react/node_modules/promise/* +Copyright: 2013, 2014, Forbes Lindesay +License: Expat + +Files: react/node_modules/prompts/* +Copyright: 2018, Terkel Gjervig Nielsen +License: Expat + +Files: react/node_modules/prop-types/* +Copyright: 2013, -present, Facebook, Inc. +License: Expat + +Files: react/node_modules/proxy-addr/* +Copyright: 2014-2017, Douglas Christopher Wilson +License: Expat + +Files: react/node_modules/psl/* +Copyright: 2017, Lupo Montero lupomontero@gmail.com +License: Expat + +Files: react/node_modules/public-encrypt/* +Copyright: 2017, Calvin Metcalf +License: Expat + +Files: react/node_modules/public-encrypt/node_modules/* +Copyright: Fedor Indutny, 2015. +License: Expat + +Files: react/node_modules/pump/* +Copyright: 2013-2016, 2018, Mathias Buus +License: Expat + +Files: react/node_modules/pumpify/* +Copyright: 2013-2016, 2018, Mathias Buus +License: Expat + +Files: react/node_modules/q/* +Copyright: 2009-2017, Kristopher Michael Kowal. +License: Expat + +Files: react/node_modules/qs/* +Copyright: 2014, Nathan LaFreniere and other contributors. +License: BSD-3-clause + +Files: react/node_modules/querystring/* +Copyright: 2012, Irakli Gozalishvili +License: Expat + +Files: react/node_modules/querystringify/* +Copyright: 2015, Unshift.io, Arnout Kazemier, the Contributors. +License: Expat + +Files: react/node_modules/queue-microtask/* +Copyright: Feross Aboukhadijeh +License: Expat + +Files: react/node_modules/raf/* +Copyright: 2013, Chris Dickinson +License: Expat + +Files: react/node_modules/randombytes/* +Copyright: 2016, 2017, crypto-browserify +License: Expat + +Files: react/node_modules/randomfill/* +Copyright: 2016, 2017, crypto-browserify +License: Expat + +Files: react/node_modules/range-parser/* +Copyright: 2015, 2016, Douglas Christopher Wilson +License: Expat + +Files: react/node_modules/raw-body/* +Copyright: 2014-2017, Douglas Christopher Wilson + 2013, 2014, Jonathan Ong +License: Expat + +Files: react/node_modules/raw-body/node_modules/* +Copyright: 2015, Jed Watson + 2012-2014, TJ Holowaychuk +License: Expat + +Files: react/node_modules/react-app-polyfill/* +Copyright: 2013, -present, Facebook, Inc. +License: Expat + +Files: react/node_modules/react-dev-utils/node_modules/@babel/* +Copyright: 2014, -present Sebastian McKenzie and other contributors +License: Expat + +Files: react/node_modules/react-dev-utils/node_modules/browserslist/* +Copyright: 2014, Andrey Sitnik and other contributors +License: Expat + +Files: react/node_modules/react-dev-utils/node_modules/cross-spawn/* +Copyright: 2018, Made With MOXY Lda +License: Expat + +Files: react/node_modules/react-dev-utils/node_modules/shebang-command/* +Copyright: Kevin Mårtensson (github.com/kevva) +License: Expat + +Files: react/node_modules/react-dev-utils/node_modules/which/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/react-dom/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/react-error-overlay/* +Copyright: 2013, -present, Facebook, Inc. +License: Expat + +Files: react/node_modules/react-is/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/react-refresh/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/react-scripts/* +Copyright: 2013, -present, Facebook, Inc. +License: Expat + +Files: react/node_modules/react-transition-group/* +Copyright: 2018, React Community / 2013, -present, Facebook, Inc. +License: BSD-3-clause + +Files: react/node_modules/react/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/readable-stream/* +Copyright: Node.js contributors. +License: Expat + +Files: react/node_modules/readdirp/* +Copyright: 2012-2019, Thorsten Lorenz, Paul Miller (https:paulmillr.com) +License: Expat + +Files: react/node_modules/recursive-readdir/* +Copyright: +License: Expat + +Files: react/node_modules/regenerator-runtime/* +Copyright: 2014, -present, Facebook, Inc. +License: Expat + +Files: react/node_modules/regenerator-transform/* +Copyright: 2014, -present, Facebook, Inc. +License: Expat + +Files: react/node_modules/regex-not/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/regex-parser/* +Copyright: 2014-2020, Ionică Bizău (https:ionicabizau.net) +License: Expat + +Files: react/node_modules/regexp.prototype.flags/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/regexpp/* +Copyright: 2018, Toru Nagashima +License: Expat + +Files: react/node_modules/regjsparser/* +Copyright: Julian Viereck and Contributors +License: BSD-2-clause + +Files: react/node_modules/relateurl/* +Copyright: Steven Vachon (svachon.com) +License: Expat + +Files: react/node_modules/remove-trailing-separator/* +Copyright: info-missing +License: ISC + +Files: react/node_modules/renderkid/* +Copyright: Felix Böhm +License: BSD-2-clause + +Files: react/node_modules/renderkid/node_modules/ansi-regex/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: react/node_modules/renderkid/node_modules/dom-serializer/* +Copyright: 2014, The cheeriojs contributors +License: Expat + +Files: react/node_modules/renderkid/node_modules/strip-ansi/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: react/node_modules/repeat-element/* +Copyright: 2015, -present, Jon Schlinkert. +License: Expat + +Files: react/node_modules/repeat-string/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/require-directory/* +Copyright: 2011, Troy Goode +License: Expat + +Files: react/node_modules/require-from-string/* +Copyright: Vsevolod Strukchinsky (github.com/floatdrop) +License: Expat + +Files: react/node_modules/requires-port/* +Copyright: 2015, Unshift.io, Arnout Kazemier, the Contributors. +License: Expat + +Files: react/node_modules/resolve-url-loader/node_modules/convert-source-map/* +Copyright: 2013, Thorsten Lorenz. +License: Expat + +Files: react/node_modules/resolve-url-loader/node_modules/loader-utils/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/resolve-url-loader/node_modules/postcss/* +Copyright: 2013, 2017, Andrey Sitnik +License: Expat + +Files: react/node_modules/resolve-url-loader/node_modules/source-map/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/resolve-url/* +Copyright: 2013-2018, Simon Lydell +License: Expat + +Files: react/node_modules/resolve/* +Copyright: 2012, 2013, James Halliday +License: Expat + +Files: react/node_modules/ret/* +Copyright: 2011, Roly Fentanes +License: Expat + +Files: react/node_modules/retry/* +Copyright: 2011 +License: Expat + +Files: react/node_modules/reusify/* +Copyright: 2015, Matteo Collina +License: Expat + +Files: react/node_modules/rework/* +Copyright: 2013, Thorsten Lorenz. +License: Expat + +Files: react/node_modules/rimraf/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/ripemd160/* +Copyright: 2016, 2017, crypto-browserify +License: Expat + +Files: react/node_modules/rollup-plugin-terser/node_modules/jest-worker/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/rollup-plugin-terser/node_modules/serialize-javascript/* +Copyright: 2012-2015, Yahoo! Inc. +License: BSD-3-clause + +Files: react/node_modules/rsvp/* +Copyright: 2014, Yehuda Katz, Tom Dale, Stefan Penner and contributors +License: Expat + +Files: react/node_modules/run-parallel/* +Copyright: Feross Aboukhadijeh +License: Expat + +Files: react/node_modules/safe-buffer/* +Copyright: Feross Aboukhadijeh +License: Expat + +Files: react/node_modules/safe-regex/* +Copyright: info-missing +License: Expat + +Files: react/node_modules/safer-buffer/* +Copyright: 2018, Nikita Skovoroda +License: Expat + +Files: react/node_modules/sane/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/sane/node_modules/anymatch/* +Copyright: 2014, 2015, 2019, Elan Shanker +License: ISC + +Files: react/node_modules/sane/node_modules/braces/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/sane/node_modules/fill-range/node_modules/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/sane/node_modules/micromatch/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/sass-loader/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/scheduler/* +Copyright: Facebook, Inc. and its affiliates. +License: Expat + +Files: react/node_modules/schema-utils/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/selfsigned/* +Copyright: 2013, José +License: Expat + +Files: react/node_modules/semver/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/send/* +Copyright: 2014-2016, Douglas Christopher Wilson + 2012, TJ Holowaychuk +License: Expat + +Files: react/node_modules/send/node_modules/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/serialize-javascript/* +Copyright: 2012-2015, Yahoo! Inc. +License: BSD-3-clause + +Files: react/node_modules/serve-index/* +Copyright: 2016, Douglas Christopher Wilson doug@somethingdoug.com + 2014, Jonathan Ong me@jongleberry.com +License: Expat + +Files: react/node_modules/serve-index/node_modules/debug/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/serve-index/node_modules/inherits/* +Copyright: Isaac Z. Schlueter +License: ISC + +Files: react/node_modules/serve-index/node_modules/setprototypeof/* +Copyright: 2015, Wes Todd +License: ISC + +Files: react/node_modules/serve-static/* +Copyright: 2014-2016, Douglas Christopher Wilson + 2011, TJ Holowaychuk + 2011, LearnBoost + 2010, Sencha Inc. +License: Expat + +Files: react/node_modules/set-value/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/set-value/node_modules/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/setprototypeof/* +Copyright: 2015, Wes Todd +License: ISC + +Files: react/node_modules/shebang-command/* +Copyright: Kevin Martensson (github.com/kevva) +License: Expat + +Files: react/node_modules/shell-quote/* +Copyright: 2010, 2013, James Halliday (mail@substack.net) +License: Expat + +Files: react/node_modules/shellwords/* +Copyright: 2011, Jimmy Cuadra +License: Expat + +Files: react/node_modules/side-channel/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/simple-swizzle/* +Copyright: 2015, JD Ballard +License: Expat + +Files: react/node_modules/sisteransi/* +Copyright: 2018, Terkel Gjervig Nielsen +License: Expat + +Files: react/node_modules/slice-ansi/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/slice-ansi/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/snapdragon-node/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/snapdragon-node/node_modules/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/snapdragon-node/node_modules/define-property/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/snapdragon-util/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/snapdragon/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/snapdragon/node_modules/debug/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/sockjs-client/node_modules/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/sockjs/* +Copyright: 2011, VMware, Inc. +License: Expat + +Files: react/node_modules/source-list-map/* +Copyright: 2017, JS Foundation +License: Expat + +Files: react/node_modules/source-map-js/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/source-map-resolve/* +Copyright: 2019, ZHAO Jinxiang + 2014-2020, Simon Lydell +License: Expat + +Files: react/node_modules/source-map-support/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/source-map-url/* +Copyright: 2013-2018, Simon Lydell +License: Expat + +Files: react/node_modules/source-map/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/sourcemap-codec/* +Copyright: 2015, 2018, Rich Harris +License: Expat + +Files: react/node_modules/spdx-correct/* +Copyright: info-missing +License: Apache-2.0 + +Files: react/node_modules/spdx-expression-parse/* +Copyright: 2015, Kyle E. Mitchell & other authors listed in AUTHORS +License: Expat + +Files: react/node_modules/spdy-transport/* +Copyright: Node.js contributors. +License: Expat + +Files: react/node_modules/split-string/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/sprintf-js/* +Copyright: 2007-2014, Alexandru Marasteanu +License: BSD-3-clause + +Files: react/node_modules/stackframe/* +Copyright: 2017, Eric Wendelin and other contributors +License: Expat + +Files: react/node_modules/static-extend/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/statuses/* +Copyright: 2014-2017, Douglas Christopher Wilson + 2013, 2014, Jonathan Ong +License: Expat + +Files: react/node_modules/stream-browserify/* +Copyright: James Halliday +License: Expat + +Files: react/node_modules/stream-each/* +Copyright: 2013-2016, 2018, Mathias Buus +License: Expat + +Files: react/node_modules/stream-http/* +Copyright: 2015, 2016, John Hiesey +License: Expat + +Files: react/node_modules/stream-shift/* +Copyright: 2013-2016, 2018, Mathias Buus +License: Expat + +Files: react/node_modules/strict-uri-encode/* +Copyright: Kevin Mårtensson (github.com/kevva) +License: Expat + +Files: react/node_modules/string-length/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/string.prototype.matchall/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/string.prototype.trimend/* +Copyright: 2017, Khaled Al-Ansari +License: Expat + +Files: react/node_modules/string.prototype.trimstart/* +Copyright: 2017, Khaled Al-Ansari +License: Expat + +Files: react/node_modules/string_decoder/* +Copyright: Node.js contributors. +License: Expat + +Files: react/node_modules/strip-comments/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/strip-json-comments/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/style-loader/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/stylehacks/* +Copyright: Ben Briggs (http:beneb.info) +License: Expat + +Files: react/node_modules/svgo/* +Copyright: 2012-2016, Kir Belevich +License: Expat + +Files: react/node_modules/symbol-observable/* +Copyright: Sindre Sorhus (sindresorhus.com) / Ben Lesh +License: Expat + +Files: react/node_modules/symbol-tree/* +Copyright: 2015, Joris van der Wel +License: Expat + +Files: react/node_modules/table/* +Copyright: 2015, 2018, Gajus Kuizinas (http:gajus.com/) +License: BSD-3-clause + +Files: react/node_modules/table/node_modules/* +Copyright: 2015-2021, Evgeny Poberezkin +License: Expat + +Files: react/node_modules/tapable/* +Copyright: Tobias Koppers @sokra +License: Expat + +Files: react/node_modules/tar/* +Copyright: James Halliday (mail@substack.net) and Isaac Z. Schlueter (i@izs.me) +License: Expat + +Files: react/node_modules/terser-webpack-plugin/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +Files: react/node_modules/terser-webpack-plugin/node_modules/commander/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/terser-webpack-plugin/node_modules/make-dir/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: react/node_modules/terser-webpack-plugin/node_modules/pkg-dir/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: react/node_modules/terser-webpack-plugin/node_modules/schema-utils/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/terser-webpack-plugin/node_modules/semver/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/terser-webpack-plugin/node_modules/source-map/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/terser-webpack-plugin/node_modules/terser/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/terser/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/terser/node_modules/commander/* +Copyright: 2011-2014, 2017, TJ Holowaychuk +License: Expat + +Files: react/node_modules/text-table/* +Copyright: info-missing +License: Expat + +Files: react/node_modules/throat/* +Copyright: 2013, 2014, Forbes Lindesay +License: Expat + +Files: react/node_modules/thunky/* +Copyright: 2013-2016, 2018, Mathias Buus +License: Expat + +Files: react/node_modules/tiny-warning/* +Copyright: 2019, Alexander Reardon +License: Expat + +Files: react/node_modules/tmpl/* +Copyright: 2014, Naitik Shah. +License: BSD-3-clause + +Files: react/node_modules/to-arraybuffer/* +Copyright: 2015, 2016, John Hiesey +License: Expat + +Files: react/node_modules/to-fast-properties/* +Copyright: 2013-2018, Petka Antonov +License: Expat + +Files: react/node_modules/to-object-path/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/to-regex-range/* +Copyright: 2015, -present, Jon Schlinkert. +License: Expat + +Files: react/node_modules/to-regex/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/toidentifier/* +Copyright: 2014-2017, Douglas Christopher Wilson +License: Expat + +Files: react/node_modules/tough-cookie/* +Copyright: 2015, Salesforce.com, Inc. +License: BSD-3-clause + +Files: react/node_modules/tough-cookie/node_modules/* +Copyright: 2017, Ryan Zimmerman +License: Expat + +Files: react/node_modules/tryer/* +Copyright: 2012-2019, Phil Booth +License: Expat + +Files: react/node_modules/tsconfig-paths/* +Copyright: 2016, Jonas Kello +License: Expat + +Files: react/node_modules/tsutils/* +Copyright: 2017, Klaus Meinhardt +License: Expat + +Files: react/node_modules/tty-browserify/* +Copyright: info-missing +License: Expat + +Files: react/node_modules/type-check/* +Copyright: George Zahariev +License: Expat + +Files: react/node_modules/type-detect/* +Copyright: 2013, Jake Luer (http:alogicalparadox.com) +License: Expat + +Files: react/node_modules/type-fest/* +Copyright: Sindre Sorhus (https:/sindresorhus.com) +License: Expat + +Files: react/node_modules/type-is/* +Copyright: 2014, Jonathan Ong + 2014, 2015, Douglas Christopher Wilson +License: Expat + +Files: react/node_modules/type/* +Copyright: 2011-2020, Mariusz Nowak, @medikoo, medikoo.com +License: ISC + +Files: react/node_modules/typedarray-to-buffer/* +Copyright: Feross Aboukhadijeh +License: Expat + +Files: react/node_modules/typedarray/* +Copyright: 2012, Joshua Bell + 2010, Linden Research, Inc. +License: Expat + +Files: react/node_modules/unbox-primitive/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/union-value/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/uniq/* +Copyright: 2013, Mikola Lysenko +License: Expat + +Files: react/node_modules/unique-filename/* +Copyright: npm, Inc +License: ISC + +Files: react/node_modules/unique-slug/* +Copyright: npm, Inc +License: ISC + +Files: react/node_modules/universalify/* +Copyright: 2017, Ryan Zimmerman +License: Expat + +Files: react/node_modules/unpipe/* +Copyright: 2014-2017, Douglas Christopher Wilson +License: Expat + +Files: react/node_modules/unquote/* +Copyright: 2017, Cameron Lakenen +License: Expat + +Files: react/node_modules/unset-value/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/unset-value/node_modules/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/upath/* +Copyright: 2014-2019, Angelos Pikoulas (agelos.pikoulas@gmail.com) +License: Expat + +Files: react/node_modules/uri-js/* +Copyright: 2011, Gary Court. +License: BSD-2-clause + +Files: react/node_modules/urix/* +Copyright: 2013-2018, Simon Lydell +License: Expat + +Files: react/node_modules/url-loader/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/url-parse/* +Copyright: 2015, Unshift.io, Arnout Kazemier, the Contributors. +License: Expat + +Files: react/node_modules/url/* +Copyright: Joyent, Inc. and other Node contributors. +License: Expat + +Files: react/node_modules/use/* +Copyright: 2015, -present, Jon Schlinkert. +License: Expat + +Files: react/node_modules/util-deprecate/* +Copyright: 2014, Nathan Rajlich +License: Expat + +Files: react/node_modules/util.promisify/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/util/* +Copyright: Joyent, Inc. and other Node contributors. +License: Expat + +Files: react/node_modules/util/node_modules/* +Copyright: Isaac Z. Schlueter +License: ISC + +Files: react/node_modules/utila/* +Copyright: 2013-2015, Aria Minaei +License: Expat + +Files: react/node_modules/utils-merge/* +Copyright: 2013-2017, Jared Hanson +License: Expat + +Files: react/node_modules/v8-compile-cache/* +Copyright: 2019, Andres Suarez +License: Expat + +Files: react/node_modules/v8-to-istanbul/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/vary/* +Copyright: 2014-2017, Douglas Christopher Wilson +License: Expat + +Files: react/node_modules/vendors/* +Copyright: 2016, Titus Wormer +License: Expat + +Files: react/node_modules/vm-browserify/* +Copyright: info-missing +License: Expat + +Files: react/node_modules/walker/* +Copyright: 2013, Naitik Shah +License: Apache-2.0 + +Files: react/node_modules/watchpack-chokidar2/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/watchpack-chokidar2/node_modules/anymatch/* +Copyright: 2014, 2015, 2019, Elan Shanker +License: ISC + +Files: react/node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/watchpack-chokidar2/node_modules/binary-extensions/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: react/node_modules/watchpack-chokidar2/node_modules/braces/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/watchpack-chokidar2/node_modules/fill-range/node_modules/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/watchpack-chokidar2/node_modules/glob-parent/* +Copyright: 2014, 2015, 2019, Elan Shanker +License: ISC + +Files: react/node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/watchpack-chokidar2/node_modules/is-binary-path/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: react/node_modules/watchpack-chokidar2/node_modules/micromatch/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/watchpack-chokidar2/node_modules/readdirp/* +Copyright: 2012-2015, Thorsten Lorenz +License: Expat + +Files: react/node_modules/watchpack/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/web-vitals/* +Copyright: 2020, Google LLC +License: Apache-2.0 + +Files: react/node_modules/webpack-dev-middleware/* +Copyright: 2010, Benjamin Thomas, Robert Kieffer +License: Expat + +Files: react/node_modules/webpack-dev-server/node_modules/anymatch/* +Copyright: 2014, 2015, 2019, Elan Shanker +License: ISC + +Files: react/node_modules/webpack-dev-server/node_modules/anymatch/node_modules/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/webpack-dev-server/node_modules/braces/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/webpack-dev-server/node_modules/fill-range/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/webpack-dev-server/node_modules/fill-range/node_modules/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/webpack-dev-server/node_modules/glob-parent/* +Copyright: 2014, 2015, 2019, Elan Shanker +License: ISC + +Files: react/node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/webpack-dev-server/node_modules/is-number/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/webpack-dev-server/node_modules/micromatch/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/webpack-dev-server/node_modules/readdirp/* +Copyright: 2012-2015, Thorsten Lorenz +License: Expat + +Files: react/node_modules/webpack-dev-server/node_modules/schema-utils/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/webpack-dev-server/node_modules/semver/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/webpack-dev-server/node_modules/to-regex-range/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/webpack-dev-server/node_modules/ws/* +Copyright: 2011, Einar Otto Stangvik +License: Expat + +Files: react/node_modules/webpack-dev-server/node_modules/yargs/* +Copyright: 2014, Contributors (ben@npmjs.com) + 2010, James Halliday (mail@substack.net) +License: Expat + +Files: react/node_modules/webpack-log/* +Copyright: 2017, webpack-contrib +License: Expat + +Files: react/node_modules/webpack-log/node_modules/* +Copyright: 2015, -present, Brian Woodward. +License: Expat + +Files: react/node_modules/webpack-manifest-plugin/* +Copyright: 2011-2017, JP Richardson +License: Expat + +Files: react/node_modules/webpack-manifest-plugin/node_modules/jsonfile/* +Copyright: 2012-2015, JP Richardson +License: Expat + +Files: react/node_modules/webpack-manifest-plugin/node_modules/universalify/* +Copyright: 2017, Ryan Zimmerman +License: Expat + +Files: react/node_modules/webpack-sources/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/webpack/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/webpack/node_modules/acorn/* +Copyright: Tobias Koppers @sokra +License: Expat + +Files: react/node_modules/webpack/node_modules/braces/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/webpack/node_modules/eslint-scope/* +Copyright: JS Foundation and other contributors, https:js.foundation / 2012-2013, Yusuke Suzuki (twitter: @Constellation) and other contributors. +License: BSD-2-clause + +Files: react/node_modules/webpack/node_modules/fill-range/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/webpack/node_modules/fill-range/node_modules/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/webpack/node_modules/is-number/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/webpack/node_modules/is-wsl/* +Copyright: Sindre Sorhus (sindresorhus.com) +License: Expat + +Files: react/node_modules/webpack/node_modules/loader-utils/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/webpack/node_modules/micromatch/* +Copyright: 2014-2018, Jon Schlinkert. +License: Expat + +Files: react/node_modules/webpack/node_modules/schema-utils/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/webpack/node_modules/serialize-javascript/* +Copyright: 2012-2015, Yahoo! Inc. +License: BSD-3-clause + +Files: react/node_modules/webpack/node_modules/source-map/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/webpack/node_modules/terser-webpack-plugin/* +Copyright: JS Foundation and other contributors +License: Expat + +Files: react/node_modules/webpack/node_modules/to-regex-range/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/whatwg-fetch/* +Copyright: 2014-2016, GitHub, Inc. +License: Expat + +Files: react/node_modules/which-boxed-primitive/* +Copyright: 2013-2020, Jordan Harband +License: Expat + +Files: react/node_modules/which-module/* +Copyright: 2015, 2016, 2019, Contributors +License: ISC + +Files: react/node_modules/which/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/which/bin/* +Copyright: Copyright (c) Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/word-wrap/* +Copyright: 2014-2017, Jon Schlinkert +License: Expat + +Files: react/node_modules/workbox-background-sync/* +Copyright: 2018, Google LLC +License: Expat + +Files: react/node_modules/workbox-broadcast-update/* +Copyright: 2018, Google LLC +License: Expat + +Files: react/node_modules/workbox-build/* +Copyright: 2009-2011, Mozilla Foundation and contributors +License: BSD-2-clause + +Files: react/node_modules/workbox-build/node_modules/fs-extra/* +Copyright: 2011-2017, JP Richardson +License: Expat + +Files: react/node_modules/workbox-build/node_modules/jsonfile/* +Copyright: 2012-2015, JP Richardson +License: Expat + +Files: react/node_modules/workbox-build/node_modules/universalify/* +Copyright: 2017, Ryan Zimmerman +License: Expat + +Files: react/node_modules/workbox-cacheable-response/* +Copyright: 2018, Google LLC +License: Expat + +Files: react/node_modules/workbox-core/* +Copyright: 2018, Google LLC +License: Expat + +Files: react/node_modules/workbox-expiration/* +Copyright: 2018, Google LLC +License: Expat + +Files: react/node_modules/workbox-google-analytics/* +Copyright: 2018, Google LLC +License: Expat + +Files: react/node_modules/workbox-navigation-preload/* +Copyright: 2018, Google LLC +License: Expat + +Files: react/node_modules/workbox-precaching/* +Copyright: 2018, Google LLC +License: Expat + +Files: react/node_modules/workbox-range-requests/* +Copyright: 2018, Google LLC +License: Expat + +Files: react/node_modules/workbox-routing/* +Copyright: 2018, Google LLC +License: Expat + +Files: react/node_modules/workbox-strategies/* +Copyright: 2018, Google LLC +License: Expat + +Files: react/node_modules/workbox-streams/* +Copyright: 2018, Google LLC +License: Expat + +Files: react/node_modules/workbox-sw/* +Copyright: 2018, Google LLC +License: Expat + +Files: react/node_modules/workbox-webpack-plugin/* +Copyright: 2018, Google LLC +License: Expat + +Files: react/node_modules/workbox-window/* +Copyright: 2018, Google LLC +License: Expat + +Files: react/node_modules/worker-rpc/* +Copyright: 2016, Christian Speckner +License: Expat + +Files: react/node_modules/wrap-ansi/node_modules/color-convert/* +Copyright: 2011-2016, Heather Arthur +License: Expat + +Files: react/node_modules/wrap-ansi/node_modules/color-name/* +Copyright: 2015, Dmitry Ivanov +License: Expat + +Files: react/node_modules/wrappy/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/write-file-atomic/* +Copyright: 2015, Rebecca Turner +License: ISC + +Files: react/node_modules/ws/* +Copyright: 2011, Einar Otto Stangvik +License: Expat + +Files: react/node_modules/xmlchars/* +Copyright: Louis-Dominique Dubeau and contributors to xmlchars +License: Expat + +Files: react/node_modules/xtend/* +Copyright: 2012-2014, Raynos. +License: Expat + +Files: react/node_modules/y18n/* +Copyright: 2015, 2016, 2019, Contributors +License: ISC + +Files: react/node_modules/yallist/* +Copyright: Isaac Z. Schlueter and Contributors +License: ISC + +Files: react/node_modules/yaml/* +Copyright: 2018, Eemeli Aro +License: ISC + +Files: react/node_modules/yargs/* +Copyright: 2010, James Halliday (mail@substack.net); Modified work Copyright 2014, Contributors (ben@npmjs.com) +License: Expat + +Files: react/node_modules/yocto-queue/* +Copyright: Sindre Sorhus (https:sindresorhus.com) +License: Expat + +License: Apache-2.0 + This is free software, licensed under: + . + The Apache License, Version 2.0, January 2004 + . + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + . + http://www.apache.org/licenses/LICENSE-2.0 + . + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS"BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +License: BSD-2-clause + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + . + 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD-3-clause + This is free software, licensed under: + . + The (three-clause) BSD License + . + The BSD License + . + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + . + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + . + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + . + * Neither the name of the licensor nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: Expat + This is free software, licensed under: + . + The MIT (X11) License + . + The MIT License + . + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated + documentation files (the "Software"), to deal in the Software + without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to + whom the Software is furnished to do so, subject to the + following conditions: + . + The above copyright notice and this permission notice shall + be included in all copies or substantial portions of the + Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT + WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE AND NONINFRINGEMENT. IN NO EVENT + SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + +License: ISC + Please fill license ISC from header of react/node_modules/@babel/core/node_modules/* + + +License: MPL-2.0 + This is free software, licensed under: + . + Mozilla Public License Version 2.0 + . + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. + On Debian systems, the complete text of Mozilla Public License v 2.0 + can be found in '/usr/share/common-licenses/MPL-2.0'. + +License: ISC + Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. + . + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +License: LGPL-3 + GNU LESSER GENERAL PUBLIC LICENSE + . + Version 3, 29 June 2007 + . + . + Copyright © 2007 Free Software Foundation, Inc. + . + Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + . + This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. + . + 0. Additional Definitions. + . + As used herein, “this License” refers to version 3 of the GNU Lesser General Public License, and the “GNU GPL” refers to version 3 of the GNU General Public License. + . + “The Library” refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. + . + An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. + . + A “Combined Work” is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the “Linked Version”. + . + The “Minimal Corresponding Source” for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. + . + The “Corresponding Application Code” for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. + . + 1. Exception to Section 3 of the GNU GPL. + . + You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. + . + 2. Conveying Modified Versions. + . + If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: + . + a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or + . + b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. + . + 3. Object Code Incorporating Material from Library Header Files. + . + The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: + . + a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. + . + b) Accompany the object code with a copy of the GNU GPL and this license document. + . + 4. Combined Works. + . + You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: + . + a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. + . + b) Accompany the Combined Work with a copy of the GNU GPL and this license document. + . + c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. + . + d) Do one of the following: + . + 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. + . + 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. + . + e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) + . + 5. Combined Libraries. + . + You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: + . + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. + . + b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. + . + 6. Revised Versions of the GNU Lesser General Public License. + . + The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + . + Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. + . + If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. + . + +License: CC-BY-4.0 + Creative Commons Attribution 4.0 International Public License + . + By exercising the Licensed Rights (defined below), You accept and agree + to be bound by the terms and conditions of this Creative Commons + Attribution 4.0 International Public License ("Public License"). To the + extent this Public License may be interpreted as a contract, You are + granted the Licensed Rights in consideration of Your acceptance of + these terms and conditions, and the Licensor grants You such rights in + consideration of benefits the Licensor receives from making the + Licensed Material available under these terms and conditions. + . + . + Section 1 -- Definitions. + . + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + . + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + . + c. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + . + d. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + . + e. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + . + f. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + . + g. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + . + h. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + . + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + . + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + . + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + . + . + Section 2 -- Scope. + . + a. License grant. + . + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + . + a. reproduce and Share the Licensed Material, in whole or + in part; and + . + b. produce, reproduce, and Share Adapted Material. + . + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + . + 3. Term. The term of this Public License is specified in Section + 6(a). + . + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + . + 5. Downstream recipients. + . + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + . + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + . + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + . + b. Other rights. + . + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + . + 2. Patent and trademark rights are not licensed under this + Public License. + . + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + . + . + Section 3 -- License Conditions. + . + Your exercise of the Licensed Rights is expressly made subject to the + following conditions. + . + a. Attribution. + . + 1. If You Share the Licensed Material (including in modified + form), You must: + . + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + . + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + . + ii. a copyright notice; + . + iii. a notice that refers to this Public License; + . + iv. a notice that refers to the disclaimer of + warranties; + . + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + . + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + . + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + . + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + . + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + . + 4. If You Share Adapted Material You produce, the Adapter's + License You apply must not prevent recipients of the Adapted + Material from complying with this Public License. + . + . + Section 4 -- Sui Generis Database Rights. + . + Where the Licensed Rights include Sui Generis Database Rights that + apply to Your use of the Licensed Material: + . + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + . + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + . + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + . + For the avoidance of doubt, this Section 4 supplements and does not + replace Your obligations under this Public License where the Licensed + Rights include other Copyright and Similar Rights. + . + . + Section 5 -- Disclaimer of Warranties and Limitation of Liability. + . + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + . + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + . + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + . + . + Section 6 -- Term and Termination. + . + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + . + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + . + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + . + 2. upon express reinstatement by the Licensor. + . + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + . + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + . + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + . + . + Section 7 -- Other Terms and Conditions. + . + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + . + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + . + . + Section 8 -- Interpretation. + . + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + . + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + . + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + . + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + +License: Zlib + This is free software, licensed under: + . + The zlib License + . + The zlib License + . + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + . + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + . + 1. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + . + 2. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + . + 3. This notice may not be removed or altered from any source + distribution. + . diff --git a/debian/fill.copyright.blanks.yml b/debian/fill.copyright.blanks.yml index 15f83f9..f8cb555 100644 --- a/debian/fill.copyright.blanks.yml +++ b/debian/fill.copyright.blanks.yml @@ -1,231 +1,21 @@ --- -/: - license: Expat - copyright: 2021, Robin E. R. Davies. -src/react/: - license: Expat - copyright: 2021, Robin E. R. Davies. - -react/node_modules/webpack/: - license: Expat - copyright: Tobias Koppers @sokra - - -react/node_modules/webpack/node_modules/is-number/: - license: Expat - copyright: Copyright 2014-2018, Jon Schlinkert - -react/node_modules/websocket-driver/: - license: Apache-2.0 - copyright: Copyright 2010-2020 James Coglan - -react/node_modules/whatwg-encoding/: - license: Expat - copyright: © 2016–2018 Domenic Denicola - -react/node_modules/whatwg-fetch/: - license: Expat - copyright: Copyright (c) 2014-2016 GitHub, Inc - -react/node_modules/whatwg-url/: - license: Expat - copyright: Copyright (c) 2015–2016 Sebastian Mayr - -react/node_modules/whatwg-mimetype/: - license: Expat - copyright: Copyright © 2017–2018 Domenic Denicola - -react/node_modules/which-boxed-primitive/: - license: Expat - copyright: Copyright (c) 2019 Jordan Harband - -react/node_modules/which-module/: +vite/node_modules/entities/*: + copyright: Felix Böhm license: ISC - copyright: Copyright (c) 2016, Contributors -react/node_modules/which/: +vite/node_modules/parse5/node_modules/entities/*: + copyright: Felix Böhm license: ISC - copyright: Copyright (c) Isaac Z. Schlueter and Contributors -react/node_modules/word-wrap/: - license: Expat - copyright: Copyright (c) 2014-2017, Jon Schlinkert -react/node_modules/workbox-background-sync/: - license: Expat - copyright: Copyright 2018 Google LLC +modules/websocketpp/websocketpp/base64/*: + copyright: 2004-2008, René Nyffenegger + license: BSD-3-clause -react/node_modules/workbox-build/: - license: Expat - copyright: Copyright 2018 Google LLC -react/node_modules/workbox-window/: - license: Expat - copyright: Copyright 2018, 2019, Google LLC - -react/node_modules/workbox-cacheable-response/: - license: Expat - copyright: Copyright 2018 Google LLC - -react/node_modules/workbox-core/: - license: Expat - copyright: Copyright 2018 Google LLC - -react/node_modules/workbox-google-analytics/: - license: Expat - copyright: Copyright 2018 Google LLC - -react/node_modules/workbox-navigation-preload/: - license: Expat - copyright: Copyright 2018, Google LLC - -react/node_modules/workbox-precaching/: - license: Expat - copyright: 2018, 2019, Google LLC - -react/node_modules/workbox-range-requests/: +vite/node_modules/source-map-js/*: + copyright: 2009-2011, Mozilla Foundation and contributors license: Expat -react/node_modules/workbox-routing/*: - license: Expat - copyright: 2018, 2019, Google LLC - -react/node_modules/workbox-strategies/: - license: Expat - copyright: 2018, 2019, Google LLC - -react/node_modules/workbox-streams/: - license: Expat - copyright: 2018, 2019, Google LLC - -react/node_modules/workbox-sw/: - license: Expat - copyright: Copyright 2018 Google LLC - -react/node_modules/workbox-webpack-plugin/: - license: Expat - copyright: Copyright 2018 Google LLC - -react/node_modules/worker-farm/: - license: Expat - copyright: Copyright (c) 2014 LevelUP contributors - -react/node_modules/worker-rpc/: - license: Expat - copyright: Copyright (c) 2016 Christian Speckner - -react/node_modules/wrap-ansi/: - license: Expat - copyright: Copyright (c) Sindre Sorhus (sindresorhus.com) - -react/node_modules/wrappy/: - license: ISC - copyright: Copyright (c) Isaac Z. Schlueter and Contributors - -react/node_modules/write-file-atomic/: - license: ISC - copyright: Copyright (c) 2015, Rebecca Turner - -react/node_modules/ws/: - license: Expat - copyright: Copyright (c) 2011 Einar Otto Stangvik - -react/node_modules/xml-name-validator/: - license: Apache-2.0 - -react/node_modules/xmlchars/: - license: Expat - copyright: Louis-Dominique Dubeau and contributors to xmlchars - -react/node_modules/xtend/: - license: Expat - copyright: Copyright (c) 2012-2014 Raynos. - -react/node_modules/y18n/: - license: ISC - copyright: Copyright (c) 2015, Contributors - -react/node_modules/yallist/: - license: ISC - copyright: Copyright (c) Isaac Z. Schlueter and Contributors - -react/node_modules/yaml/: - license: ISC - copyright: Copyright 2018 Eemeli Aro - -react/node_modules/yargs-parser/: - license: (Expat) - copyright: 2010, James Halliday (mail@substack.net) - -src/Lv2EventBufferWriter.hpp: - license: ISC - copyright: Copyright 2008-2014 David Robillard - -react/node_modules/webpack/node_modules/serialize-javascript/: - license: BSD-3-clause - copyright: 2014, Yahoo! Inc. - -react/node_modules/webpack/node_modules/to-regex-range/: - copyright: 2014-2018, Jon Schlinkert - license: Expat - -react/node_modules/workbox-build/node_modules/source-map/: - copyright: 2009-2011, 2014, Mozilla Foundation and contributors - license: BSD-2-clause - -react/node_modules/atob/: - copyright: 2012-2018, AJ ONeal - license: Apache-2.0 or Expat - -react/node_modules/fs.realpath/old.js: - copyright: Copyright Joyent, Inc. and other Node contributors. - license: Expat - - -react/node_modules/fs.realpath/: - copyright: Copyright (c) Isaac Z. Schlueter and Contributors - license: ISC - -react/node_modules/glob/: - license: CC-BY-SA-4.0 or ISC - -debian/: - skip: 1 - -~/src/pipedal/react/node_modules/indefinite-observable/AUTHORS: - skip: 1 - -react/node_modules/node-notifier/vendor/snoreToast/: - license: LGPL-3 - -react/node_modules/sockjs-client/AUTHORS: - skip: 1 - -react/node_modules/terser/bin/: - skip: 1 - -react/node_modules/unquote/: - license: Expat - -react/node_modules/css-select/: - license: BSD-2-clause - -react/node_modules/css-what/: - license: BSD-2-clause - -react/node_modules/dom-serializer/: - license: BSD-2-clause - -react/node_modules/domelementtype/: - license: BSD-2-clause - -react/node_modules/domelementtype/: - license: BSD-2-clause - -react/node_modules/domelementtype/: - license: BSD-2-clause - -react/node_modules/domutils/: - license: BSD-2-clause diff --git a/debian/scan-copyrights.sh b/debian/scan-copyrights.sh new file mode 100755 index 0000000..06f37e9 --- /dev/null +++ b/debian/scan-copyrights.sh @@ -0,0 +1,4 @@ +#!/usr/bin/bash +# sudo apt install libconfig-model-dpkg-perl + +scan-copyrights ../ > copyright diff --git a/default_presets/Factory_Presets_Extra/media/CabIR/Factory IRs/README.md b/default_presets/Factory_Presets_Extra/media/CabIR/Factory IRs/README.md new file mode 100644 index 0000000..e9172a1 --- /dev/null +++ b/default_presets/Factory_Presets_Extra/media/CabIR/Factory IRs/README.md @@ -0,0 +1,29 @@ +
+ +
+

PiPedal Factory-Provided IRs

+
+

+ All Impulse Response Files in this folder are provided under a T3K License. Permission has been granted ONLY to use these IRs with PiPedal. Please contact the original creators for permission to use these IRs for any other purpose. +

+
+
+
+ +--- + + + + diff --git a/default_presets/Factory_Presets_Extra/media/NeuralAmpModels/Factory Models/README.md b/default_presets/Factory_Presets_Extra/media/NeuralAmpModels/Factory Models/README.md new file mode 100644 index 0000000..10dcc5d --- /dev/null +++ b/default_presets/Factory_Presets_Extra/media/NeuralAmpModels/Factory Models/README.md @@ -0,0 +1,98 @@ +
+ +
+

PiPedal Factory-Provided Models

+
+

+ All models in this folder are provided under a T3K License. Permission has been granted ONLY to use these models with PiPedal. Please contact the original creators for permission to use these models for any other purpose. +

+
+
+
+ +--- + +
+ +
+

1960 Fender Tweed Deluxe 5E3 - Clean

+ +
+ +
+ +--- + + + +--- + + + +--- + + + +--- + +
+ +
+

Peavey 6505 1992 Lead - Chug

+
+

Full rig, NAM A2. Created by outmodedelectronics
+ From the Peavey 6505 1992 Original Lead - EVH 5150III 4x12 - Full Rig model pack.

+

A Peavey 6505 1992 Original head’s Lead Channel through an EVH 5150III 4x12 cabinet. Pr-4 B-6 M-4 T-7 Pro-1 R-7 P-8, SM57c. +

+
+
+ +
+ + +--- diff --git a/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/40737.jpeg b/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/40737.jpeg new file mode 100644 index 0000000..8449585 Binary files /dev/null and b/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/40737.jpeg differ diff --git a/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/54580.jpeg b/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/54580.jpeg new file mode 100644 index 0000000..593baf1 Binary files /dev/null and b/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/54580.jpeg differ diff --git a/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/59301.jpeg b/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/59301.jpeg new file mode 100644 index 0000000..fc5783b Binary files /dev/null and b/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/59301.jpeg differ diff --git a/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/60033.jpeg b/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/60033.jpeg new file mode 100644 index 0000000..10d6a85 Binary files /dev/null and b/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/60033.jpeg differ diff --git a/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/67526.jpeg b/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/67526.jpeg new file mode 100644 index 0000000..4d2b808 Binary files /dev/null and b/default_presets/Factory_Presets_Extra/media/tone3000_thumbnails/67526.jpeg differ diff --git a/default_presets/V3 Factory Presets.piBank b/default_presets/V3 Factory Presets.piBank new file mode 100644 index 0000000..b99f722 Binary files /dev/null and b/default_presets/V3 Factory Presets.piBank differ diff --git a/default_presets/build_factory_presets.sh b/default_presets/build_factory_presets.sh new file mode 100755 index 0000000..218a377 --- /dev/null +++ b/default_presets/build_factory_presets.sh @@ -0,0 +1,14 @@ +#!/usr/bin/bash +export SRC_ZIP="V3 Factory Presets.piBank" +export DST_ZIP="Factory Presets.piBank" + +rm "presets/$DST_ZIP" +rm -rf temp_folder +echo Unpacking "$SRC_ZIP" +unzip "$SRC_ZIP" -d ./temp_folder +cd temp_folder +cp -r ../Factory_Presets_Extra/* ./ +echo Repacking "../presets/$DST_ZIP" +zip -r9 "../presets/$DST_ZIP" . +cd .. +rm -rf temp_folder diff --git a/default_presets/presets/Default+Bank.bank b/default_presets/presets/Default+Bank.bank deleted file mode 100644 index fe47723..0000000 --- a/default_presets/presets/Default+Bank.bank +++ /dev/null @@ -1 +0,0 @@ -{"name": "","nextInstanceId": 13,"selectedPreset": 7,"presets": [{"instanceId": 7,"preset": {"name": "Heavy","input_volume_db": 0,"output_volume_db": 0,"items": [{"instanceId": 16,"uri": "http://two-play.com/plugins/toob-tuner","isEnabled": true,"controlValues": [{"key": "REFFREQ","value": 440},{"key": "THRESHOLD","value": -23.1093884},{"key": "MUTE","value": 0}],"pluginName": "TooB Tuner","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 49,"uri": "http://two-play.com/plugins/toob-noise-gate","isEnabled": true,"controlValues": [{"key": "threshold","value": -60},{"key": "hysteresis","value": -6},{"key": "trigger_led","value": 0},{"key": "reduction","value": -60},{"key": "attack","value": 1},{"key": "hold","value": 100},{"key": "release","value": 330},{"key": "gate_level","value": -60}],"pluginName": "TooB Noise Gate","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 41,"uri": "http://two-play.com/plugins/toob-delay","isEnabled": false,"controlValues": [{"key": "delay","value": 340},{"key": "level","value": 27},{"key": "feedback","value": 39.1666679}],"pluginName": "TooB Delay","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 39,"uri": "http://two-play.com/plugins/toob-ml","isEnabled": true,"controlValues": [{"key": "trim","value": 1},{"key": "bass","value": 0.5},{"key": "mid","value": 0.5},{"key": "treble","value": 0.5},{"key": "model","value": 18},{"key": "gain","value": 2.41666675},{"key": "master","value": -4.5},{"key": "sag","value": 0},{"key": "sagd","value": 0},{"key": "sagf","value": 13}],"pluginName": "TooB ML Amplifier","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 2,"lv2State": [true,{"http://two-play.com/plugins/toob-ml#modelFile": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "ToobMlModels/BossDistortionDs1_highGain.json"},"http://two-play.com/plugins/toob-ml#version": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Float","value": 1}}],"lilvPresetUri": "","pathProperties": {"http://two-play.com/plugins/toob-ml#modelFile": "{\"otype_\": \"Path\",\"value\": \"ToobMlModels/BossDistortionDs1_highGain.json\"}"},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 31,"uri": "http://two-play.com/plugins/toob-freeverb","isEnabled": true,"controlValues": [{"key": "dryWet","value": 0.25},{"key": "roomSize","value": 0.733333349},{"key": "damping","value": 0.574999988},{"key": "bypass","value": 1},{"key": "tails","value": 1}],"pluginName": "TooB Freeverb","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 51,"uri": "http://two-play.com/plugins/toob-parametric-eq","isEnabled": true,"controlValues": [{"key": "loCut","value": 50.7010994},{"key": "hiCut","value": 21},{"key": "lfLevel","value": 0},{"key": "lfC","value": 120},{"key": "lmfLevel","value": 0},{"key": "lmfC","value": 400},{"key": "lmfQ","value": 1.5},{"key": "hmfLevel","value": 0},{"key": "hmfC","value": 2},{"key": "hmfQ","value": 1.5},{"key": "hfLevel","value": -3.25},{"key": "hfC","value": 3.875},{"key": "gain","value": 0}],"pluginName": "TooB Parametric EQ","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""}],"nextInstanceId": 54,"snapshots": [ ],"selectedSnapshot": -1,"selectedPlugin": 16}},{"instanceId": 8,"preset": {"name": "Sparkling Clean","input_volume_db": 0,"output_volume_db": 0,"items": [{"instanceId": 16,"uri": "http://two-play.com/plugins/toob-tuner","isEnabled": true,"controlValues": [{"key": "REFFREQ","value": 440},{"key": "THRESHOLD","value": -23.1093884},{"key": "MUTE","value": 0}],"pluginName": "TooB Tuner","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 55,"uri": "http://two-play.com/plugins/toob-noise-gate","isEnabled": true,"controlValues": [{"key": "threshold","value": -65},{"key": "hysteresis","value": -6},{"key": "trigger_led","value": 0},{"key": "reduction","value": -60},{"key": "attack","value": 1},{"key": "hold","value": 100},{"key": "release","value": 330},{"key": "gate_level","value": -60}],"pluginName": "TooB Noise Gate","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 53,"uri": "http://two-play.com/plugins/toob-phaser","isEnabled": true,"controlValues": [{"key": "rate","value": 0.424131542},{"key": "dryWet","value": 0.400000006}],"pluginName": "TooB Phaser","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 41,"uri": "http://two-play.com/plugins/toob-delay","isEnabled": false,"controlValues": [{"key": "delay","value": 340},{"key": "level","value": 36.6666679},{"key": "feedback","value": 33.1666679}],"pluginName": "TooB Delay","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 39,"uri": "http://two-play.com/plugins/toob-ml","isEnabled": true,"controlValues": [{"key": "trim","value": -2.5},{"key": "bass","value": 0.5},{"key": "mid","value": 0.625},{"key": "treble","value": 0.5},{"key": "model","value": 19},{"key": "gain","value": 0},{"key": "master","value": 0.5},{"key": "sag","value": 0},{"key": "sagd","value": 0},{"key": "sagf","value": 13}],"pluginName": "TooB ML Amplifier","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [true,{"http://two-play.com/plugins/toob-ml#modelFile": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "ToobMlModels/MesaBoogie_Studio22_Clean.json"},"http://two-play.com/plugins/toob-ml#version": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Float","value": 1}}],"lilvPresetUri": "","pathProperties": {"http://two-play.com/plugins/toob-ml#modelFile": "{\"otype_\": \"Path\",\"value\": \"/var/pipedal/audio_uploads/ToobMlModels/MesaBoogie_Studio22_Clean.json\"}"},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 51,"uri": "http://two-play.com/plugins/toob-convolution-reverb-stereo","isEnabled": true,"controlValues": [{"key": "bypass","value": 1},{"key": "time","value": 30},{"key": "direct_mix","value": -6},{"key": "reverb_mix","value": -4},{"key": "width","value": 1},{"key": "pan","value": 0},{"key": "predelay","value": -1},{"key": "predelay_new","value": 1},{"key": "stretch","value": 1},{"key": "decay","value": 0},{"key": "tails","value": 1},{"key": "loading_state","value": 0}],"pluginName": "TooB Convolution Reverb (Stereo)","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [true,{"http://two-play.com/plugins/toob-impulse#impulseFile": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "ReverbImpulseFiles/Genesis 6 Studio Live Room.wav"}}],"lilvPresetUri": "","pathProperties": {"http://two-play.com/plugins/toob-impulse#impulseFile": "{\"otype_\": \"Path\",\"value\": \"/var/pipedal/audio_uploads/ReverbImpulseFiles/Genesis 6 Studio Live Room.wav\"}"},"title": "","useModUi": false,"iconColor": ""}],"nextInstanceId": 55,"snapshots": [ ],"selectedSnapshot": -1,"selectedPlugin": 16}},{"instanceId": 12,"preset": {"name": "Clean-Lead Split","input_volume_db": 0,"output_volume_db": 0,"items": [{"instanceId": 16,"uri": "http://two-play.com/plugins/toob-tuner","isEnabled": true,"controlValues": [{"key": "REFFREQ","value": 440},{"key": "THRESHOLD","value": -54},{"key": "MUTE","value": 0}],"pluginName": "TooB Tuner","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 66,"uri": "http://two-play.com/plugins/toob-noise-gate","isEnabled": true,"controlValues": [{"key": "threshold","value": -96},{"key": "hysteresis","value": -6},{"key": "trigger_led","value": 0},{"key": "reduction","value": -60},{"key": "attack","value": 1},{"key": "hold","value": 31.622776},{"key": "release","value": 330},{"key": "gate_level","value": -60}],"pluginName": "TooB Noise Gate","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 54,"uri": "uri://two-play/pipedal/pedalboard#Split","isEnabled": true,"controlValues": [{"key": "splitType","value": 0},{"key": "select","value": 1},{"key": "mix","value": 0},{"key": "panL","value": 0},{"key": "volL","value": -3},{"key": "panR","value": 0},{"key": "volR","value": -3}],"pluginName": "","topChain": [{"instanceId": 72,"uri": "http://two-play.com/plugins/toob-chorus","isEnabled": true,"controlValues": [{"key": "rate","value": 0.5},{"key": "depth","value": 0.5},{"key": "dryWet","value": 0.575000048}],"pluginName": "TooB CE-2 Chorus","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 58,"uri": "http://two-play.com/plugins/toob-ml","isEnabled": true,"controlValues": [{"key": "trim","value": 0},{"key": "trimOut","value": -35},{"key": "model","value": -1},{"key": "gain","value": 2.25},{"key": "master","value": 0},{"key": "bass","value": 0.5},{"key": "mid","value": 0.5},{"key": "treble","value": 0.5},{"key": "sag","value": 0},{"key": "sagd","value": 0},{"key": "sagf","value": 13},{"key": "gainEnable","value": 0}],"pluginName": "TooB ML Amplifier","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 1,"lv2State": [true,{"http://two-play.com/plugins/toob-ml#modelFile": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "ToobMlModels/BluesJR.json"},"http://two-play.com/plugins/toob-ml#version": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Float","value": 1}}],"lilvPresetUri": "","pathProperties": {"http://two-play.com/plugins/toob-ml#modelFile": "{\"otype_\": \"Path\",\"value\": \"ToobMlModels/BluesJR.json\"}"},"title": "Blues Jr","useModUi": false,"iconColor": ""},{"instanceId": 64,"uri": "http://two-play.com/plugins/toob-cab-ir","isEnabled": true,"controlValues": [{"key": "reverb_mix","value": -6},{"key": "reverb_mix2","value": 0},{"key": "reverb_mix3","value": 0},{"key": "time","value": 1.5},{"key": "direct_mix","value": -40},{"key": "predelay","value": 0},{"key": "loading_state","value": 0}],"pluginName": "TooB Cab IR","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [true,{"http://two-play.com/plugins/toob-cab-ir#impulseFile": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "CabIR/Modern US 001.wav"},"http://two-play.com/plugins/toob-cab-ir#impulseFile2": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "CabIR/Modern US 002.wav"},"http://two-play.com/plugins/toob-cab-ir#impulseFile3": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#String","value": ""}}],"lilvPresetUri": "","pathProperties": {"http://two-play.com/plugins/toob-cab-ir#impulseFile": "{\"otype_\": \"Path\",\"value\": \"CabIR/Modern US 001.wav\"}","http://two-play.com/plugins/toob-cab-ir#impulseFile2": "{\"otype_\": \"Path\",\"value\": \"CabIR/Modern US 002.wav\"}","http://two-play.com/plugins/toob-cab-ir#impulseFile3": "{\"otype_\": \"Path\",\"value\": \"\"}"},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 87,"uri": "http://two-play.com/plugins/toob-volume","isEnabled": true,"controlValues": [{"key": "vol","value": -7.5}],"pluginName": "TooB Volume","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 69,"uri": "http://two-play.com/plugins/toob-convolution-reverb-stereo","isEnabled": true,"controlValues": [{"key": "bypass","value": 1},{"key": "time","value": 30},{"key": "direct_mix","value": -0.666666687},{"key": "reverb_mix","value": -1.39999998},{"key": "width","value": 1},{"key": "pan","value": 0},{"key": "predelay","value": -1},{"key": "predelay_new","value": 1},{"key": "stretch","value": 1.27456057},{"key": "decay","value": 0},{"key": "tails","value": 1},{"key": "loading_state","value": 0}],"pluginName": "TooB Convolution Reverb (Stereo)","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 1,"lv2State": [true,{"http://two-play.com/plugins/toob-impulse#impulseFile": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "ReverbImpulseFiles/St. Margaret's Church.wav"}}],"lilvPresetUri": "","pathProperties": {"http://two-play.com/plugins/toob-impulse#impulseFile": "{\"otype_\": \"Path\",\"value\": \"ReverbImpulseFiles/St. Margaret's Church.wav\"}"},"title": "","useModUi": false,"iconColor": ""}],"bottomChain": [{"instanceId": 81,"uri": "http://two-play.com/plugins/toob-ml","isEnabled": true,"controlValues": [{"key": "trim","value": 0},{"key": "trimOut","value": -35},{"key": "model","value": -1},{"key": "gain","value": 8.83333302},{"key": "master","value": 0},{"key": "bass","value": 0.5},{"key": "mid","value": 0.5},{"key": "treble","value": 0.5},{"key": "sag","value": 0},{"key": "sagd","value": 0},{"key": "sagf","value": 13},{"key": "gainEnable","value": 0}],"pluginName": "TooB ML Amplifier","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 4,"lv2State": [true,{"http://two-play.com/plugins/toob-ml#modelFile": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "ToobMlModels/DumbleClone_highGain.json"},"http://two-play.com/plugins/toob-ml#version": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Float","value": 1}}],"lilvPresetUri": "","pathProperties": {"http://two-play.com/plugins/toob-ml#modelFile": "{\"otype_\": \"Path\",\"value\": \"ToobMlModels/DumbleClone_highGain.json\"}"},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 62,"uri": "http://two-play.com/plugins/toob-cab-ir","isEnabled": true,"controlValues": [{"key": "reverb_mix","value": -18.5},{"key": "reverb_mix2","value": -5.5},{"key": "reverb_mix3","value": 0},{"key": "time","value": 1.5},{"key": "direct_mix","value": -13.5},{"key": "predelay","value": 0},{"key": "loading_state","value": 0}],"pluginName": "TooB Cab IR","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [true,{"http://two-play.com/plugins/toob-cab-ir#impulseFile": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "CabIR/Modern US 002.wav"},"http://two-play.com/plugins/toob-cab-ir#impulseFile2": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "CabIR/Modern US 004.wav"},"http://two-play.com/plugins/toob-cab-ir#impulseFile3": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#String","value": ""}}],"lilvPresetUri": "","pathProperties": {"http://two-play.com/plugins/toob-cab-ir#impulseFile": "{\"otype_\": \"Path\",\"value\": \"CabIR/Modern US 002.wav\"}","http://two-play.com/plugins/toob-cab-ir#impulseFile2": "{\"otype_\": \"Path\",\"value\": \"CabIR/Modern US 004.wav\"}","http://two-play.com/plugins/toob-cab-ir#impulseFile3": "{\"otype_\": \"Path\",\"value\": \"\"}"},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 85,"uri": "http://two-play.com/plugins/toob-volume","isEnabled": true,"controlValues": [{"key": "vol","value": -3}],"pluginName": "TooB Volume","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 83,"uri": "http://two-play.com/plugins/toob-freeverb","isEnabled": true,"controlValues": [{"key": "bypass","value": 1},{"key": "dryWet","value": 0.383333325},{"key": "roomSize","value": 0.683333337},{"key": "damping","value": 0},{"key": "tails","value": 1}],"pluginName": "TooB Freeverb","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""}],"midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""}],"nextInstanceId": 90,"snapshots": [ ],"selectedSnapshot": -1,"selectedPlugin": 16}},{"instanceId": 9,"preset": {"name": "Screaming Lead","input_volume_db": 0,"output_volume_db": 0,"items": [{"instanceId": 16,"uri": "http://two-play.com/plugins/toob-tuner","isEnabled": true,"controlValues": [{"key": "REFFREQ","value": 440},{"key": "THRESHOLD","value": -54},{"key": "MUTE","value": 0}],"pluginName": "TooB Tuner","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 17,"uri": "http://two-play.com/plugins/toob-input_stage","isEnabled": true,"controlValues": [{"key": "trim","value": -15.75},{"key": "locut","value": 196.5},{"key": "bright","value": 0},{"key": "brightf","value": 1300},{"key": "hicut","value": 13000},{"key": "gate_t","value": -66.5},{"key": "boost","value": 0}],"pluginName": "TooB Input Stage","midiBindings": [{"channel": -1,"symbol": "__bypass","bindingType": 2,"note": 72,"control": 4,"minControlValue": 0,"maxControlValue": 127,"minValue": 0,"maxValue": 1,"rotaryScale": 1,"linearControlType": 0,"switchControlType": 0}],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 41,"uri": "http://two-play.com/plugins/toob-delay","isEnabled": true,"controlValues": [{"key": "delay","value": 340},{"key": "level","value": 18.666666},{"key": "feedback","value": 13.3333349}],"pluginName": "TooB Delay","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 42,"uri": "http://two-play.com/plugins/toob-chorus","isEnabled": false,"controlValues": [{"key": "rate","value": 0.291666657},{"key": "depth","value": 0.375},{"key": "dryWet","value": 1}],"pluginName": "TooB CE-2 Chorus","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 47,"uri": "http://two-play.com/plugins/toob-ml","isEnabled": true,"controlValues": [{"key": "trim","value": 12.5},{"key": "model","value": 29},{"key": "gain","value": 3},{"key": "master","value": -0.5},{"key": "bass","value": 0.5},{"key": "mid","value": 0.5},{"key": "treble","value": 0.5},{"key": "sag","value": 0},{"key": "sagd","value": 0},{"key": "sagf","value": 13}],"pluginName": "TooB ML Amplifier","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [true,{"http://two-play.com/plugins/toob-ml#modelFile": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "ToobMlModels/TS9_FullD.json"},"http://two-play.com/plugins/toob-ml#version": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Float","value": 1}}],"lilvPresetUri": "","pathProperties": {"http://two-play.com/plugins/toob-ml#modelFile": "{\"otype_\": \"Path\",\"value\": \"ToobMlModels/TS9_FullD.json\"}"},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 39,"uri": "http://two-play.com/plugins/toob-ml","isEnabled": true,"controlValues": [{"key": "trim","value": -4},{"key": "bass","value": 0.5},{"key": "mid","value": 0.5},{"key": "treble","value": 0.5},{"key": "model","value": 12},{"key": "gain","value": 10},{"key": "master","value": -5},{"key": "sag","value": 0},{"key": "sagd","value": 0},{"key": "sagf","value": 13}],"pluginName": "TooB ML Amplifier","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [true,{"http://two-play.com/plugins/toob-ml#modelFile": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "ToobMlModels/HT40_Overdrive.json"},"http://two-play.com/plugins/toob-ml#version": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Float","value": 1}}],"lilvPresetUri": "","pathProperties": {"http://two-play.com/plugins/toob-ml#modelFile": "{\"otype_\": \"Path\",\"value\": \"ToobMlModels/HT40_Overdrive.json\"}"},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 51,"uri": "http://two-play.com/plugins/toob-flanger-stereo","isEnabled": true,"controlValues": [{"key": "manual","value": 0.5},{"key": "depth","value": 0.5},{"key": "rate","value": 0.5},{"key": "lfo","value": 0},{"key": "res","value": 0.5},{"key": "dryWet","value": 0.508333325}],"pluginName": "TooB BF-2 Stereo Flanger","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 53,"uri": "http://two-play.com/plugins/toob-freeverb","isEnabled": true,"controlValues": [{"key": "bypass","value": 1},{"key": "dryWet","value": 0.150000006},{"key": "roomSize","value": 0.649999976},{"key": "damping","value": 0},{"key": "tails","value": 1}],"pluginName": "TooB Freeverb","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""}],"nextInstanceId": 56,"snapshots": [ ],"selectedSnapshot": -1,"selectedPlugin": 16}},{"instanceId": 10,"preset": {"name": "Light Crunch","input_volume_db": 0,"output_volume_db": 0,"items": [{"instanceId": 16,"uri": "http://two-play.com/plugins/toob-tuner","isEnabled": true,"controlValues": [{"key": "REFFREQ","value": 440},{"key": "THRESHOLD","value": -23.1093884},{"key": "MUTE","value": 0}],"pluginName": "TooB Tuner","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 49,"uri": "http://two-play.com/plugins/toob-noise-gate","isEnabled": true,"controlValues": [{"key": "threshold","value": -102},{"key": "hysteresis","value": -6},{"key": "trigger_led","value": 0},{"key": "reduction","value": -60},{"key": "attack","value": 1},{"key": "hold","value": 100},{"key": "release","value": 330},{"key": "gate_level","value": -60}],"pluginName": "TooB Noise Gate","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 42,"uri": "http://two-play.com/plugins/toob-chorus","isEnabled": false,"controlValues": [{"key": "rate","value": 0.291666657},{"key": "depth","value": 0.375},{"key": "dryWet","value": 1}],"pluginName": "TooB CE-2 Chorus","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 41,"uri": "http://two-play.com/plugins/toob-delay","isEnabled": true,"controlValues": [{"key": "delay","value": 340},{"key": "level","value": 27},{"key": "feedback","value": 39}],"pluginName": "TooB Delay","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 39,"uri": "http://two-play.com/plugins/toob-ml","isEnabled": true,"controlValues": [{"key": "trim","value": -0.5},{"key": "bass","value": 0.650000036},{"key": "mid","value": 0.5},{"key": "treble","value": 0.266666681},{"key": "model","value": 17},{"key": "gain","value": 7.75},{"key": "master","value": -4},{"key": "sag","value": 0},{"key": "sagd","value": 0},{"key": "sagf","value": 13}],"pluginName": "TooB ML Amplifier","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 1,"lv2State": [true,{"http://two-play.com/plugins/toob-ml#modelFile": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "ToobMlModels/ProCoRat.json"},"http://two-play.com/plugins/toob-ml#version": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Float","value": 1}}],"lilvPresetUri": "","pathProperties": {"http://two-play.com/plugins/toob-ml#modelFile": "{\"otype_\": \"Path\",\"value\": \"/var/pipedal/audio_uploads/ToobMlModels/ProCoRat.json\"}"},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 51,"uri": "http://two-play.com/plugins/toob-ml","isEnabled": true,"controlValues": [{"key": "trim","value": -3},{"key": "trimOut","value": -35},{"key": "model","value": -1},{"key": "gain","value": 3},{"key": "master","value": -6},{"key": "bass","value": 0.5},{"key": "mid","value": 0.5},{"key": "treble","value": 0.5},{"key": "sag","value": 0},{"key": "sagd","value": 0},{"key": "sagf","value": 13},{"key": "gainEnable","value": 0}],"pluginName": "TooB ML Amplifier","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [true,{"http://two-play.com/plugins/toob-ml#modelFile": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "ToobMlModels/FenderPrinceton_highLevel.json"},"http://two-play.com/plugins/toob-ml#version": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Float","value": 1}}],"lilvPresetUri": "","pathProperties": {"http://two-play.com/plugins/toob-ml#modelFile": "{\"otype_\": \"Path\",\"value\": \"/var/pipedal/audio_uploads/ToobMlModels/FenderPrinceton_highLevel.json\"}"},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 58,"uri": "http://two-play.com/plugins/toob-nam","isEnabled": true,"controlValues": [{"key": "inputGain","value": -12.666667},{"key": "inputGainOut","value": -35},{"key": "outputGain","value": 0},{"key": "gate","value": -120},{"key": "gateOut","value": 0},{"key": "buffer","value": 0},{"key": "toneStack","value": 3},{"key": "bass","value": 5},{"key": "mid","value": 5},{"key": "treble","value": 5},{"key": "inputCalibrationMode","value": 1},{"key": "calibration","value": -6},{"key": "outputCalibration","value": 0},{"key": "version","value": 1}],"pluginName": "TooB Neural Amp Modeler","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 1,"lv2State": [true,{}],"lilvPresetUri": "","pathProperties": {"http://two-play.com/plugins/toob-nam#modelFile": "{\"otype_\": \"Path\",\"value\": \"\"}"},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 53,"uri": "http://two-play.com/plugins/toob-parametric-eq","isEnabled": true,"controlValues": [{"key": "loCut","value": 27.2704601},{"key": "hiCut","value": 21},{"key": "lfLevel","value": 0},{"key": "lfC","value": 120},{"key": "lmfLevel","value": -6.5},{"key": "lmfC","value": 551.471313},{"key": "lmfQ","value": 0.850504637},{"key": "hmfLevel","value": -7.5},{"key": "hmfC","value": 2.5746665},{"key": "hmfQ","value": 1.5},{"key": "hfLevel","value": -6.5},{"key": "hfC","value": 2.25},{"key": "gain","value": 0}],"pluginName": "TooB Parametric EQ","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 31,"uri": "http://two-play.com/plugins/toob-freeverb","isEnabled": true,"controlValues": [{"key": "dryWet","value": 0.416666687},{"key": "roomSize","value": 0.625},{"key": "damping","value": 0.574999988},{"key": "bypass","value": 1},{"key": "tails","value": 1}],"pluginName": "TooB Freeverb","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""}],"nextInstanceId": 58,"snapshots": [ ],"selectedSnapshot": -1,"selectedPlugin": 16}},{"instanceId": 11,"preset": {"name": "Jazz","input_volume_db": 0,"output_volume_db": 0,"items": [{"instanceId": 16,"uri": "http://two-play.com/plugins/toob-tuner","isEnabled": true,"controlValues": [{"key": "REFFREQ","value": 440},{"key": "THRESHOLD","value": -23.1093884},{"key": "MUTE","value": 0}],"pluginName": "TooB Tuner","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 45,"uri": "http://two-play.com/plugins/toob-noise-gate","isEnabled": true,"controlValues": [{"key": "threshold","value": -53},{"key": "hysteresis","value": -6},{"key": "trigger_led","value": 0},{"key": "reduction","value": -60},{"key": "attack","value": 1},{"key": "hold","value": 100},{"key": "release","value": 330},{"key": "gate_level","value": -60}],"pluginName": "TooB Noise Gate","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 41,"uri": "http://two-play.com/plugins/toob-chorus","isEnabled": false,"controlValues": [{"key": "rate","value": 0.208333328},{"key": "depth","value": 0.5},{"key": "dryWet","value": 1}],"pluginName": "TooB CE-2 Chorus","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 47,"uri": "http://two-play.com/plugins/toob-parametric-eq","isEnabled": true,"controlValues": [{"key": "loCut","value": 41.8936462},{"key": "hiCut","value": 21},{"key": "lfLevel","value": 0},{"key": "lfC","value": 120},{"key": "lmfLevel","value": -5.5},{"key": "lmfC","value": 238.107834},{"key": "lmfQ","value": 0.837899804},{"key": "hmfLevel","value": 0},{"key": "hmfC","value": 2},{"key": "hmfQ","value": 1.5},{"key": "hfLevel","value": -12},{"key": "hfC","value": 1},{"key": "gain","value": 5.83333349}],"pluginName": "TooB Parametric EQ","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 39,"uri": "http://two-play.com/plugins/toob-ml","isEnabled": true,"controlValues": [{"key": "trim","value": -13},{"key": "bass","value": 0.5},{"key": "mid","value": 0.5},{"key": "treble","value": 0.5},{"key": "model","value": 0},{"key": "gain","value": 4.66666651},{"key": "master","value": 5},{"key": "sag","value": 0.550000012},{"key": "sagd","value": 0.900000036},{"key": "sagf","value": 13}],"pluginName": "TooB ML Amplifier","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 2,"lv2State": [true,{"http://two-play.com/plugins/toob-ml#modelFile": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "ToobMlModels/FenderPrinceton_clean.json"},"http://two-play.com/plugins/toob-ml#version": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Float","value": 1}}],"lilvPresetUri": "","pathProperties": {"http://two-play.com/plugins/toob-ml#modelFile": "{\"otype_\": \"Path\",\"value\": \"ToobMlModels/FenderPrinceton_clean.json\"}"},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 31,"uri": "http://two-play.com/plugins/toob-freeverb","isEnabled": true,"controlValues": [{"key": "dryWet","value": 0.416666657},{"key": "roomSize","value": 0.625},{"key": "damping","value": 0.574999988},{"key": "bypass","value": 1},{"key": "tails","value": 1}],"pluginName": "TooB Freeverb","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""}],"nextInstanceId": 48,"snapshots": [ ],"selectedSnapshot": -1,"selectedPlugin": 16}},{"instanceId": 13,"preset": {"name": "Stereo Vibro","input_volume_db": 0,"output_volume_db": 0,"items": [{"instanceId": 16,"uri": "http://two-play.com/plugins/toob-tuner","isEnabled": true,"controlValues": [{"key": "REFFREQ","value": 440},{"key": "THRESHOLD","value": -54},{"key": "MUTE","value": 0}],"pluginName": "TooB Tuner","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 61,"uri": "http://two-play.com/plugins/toob-tremolo","isEnabled": true,"controlValues": [{"key": "rate","value": 5},{"key": "depth","value": 0.566666663},{"key": "harmonic","value": 1},{"key": "shape","value": 0}],"pluginName": "TooB Tremolo (Stereo)","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 64,"uri": "uri://two-play/pipedal/pedalboard#Split","isEnabled": true,"controlValues": [{"key": "splitType","value": 2},{"key": "select","value": 0},{"key": "mix","value": 0},{"key": "panL","value": -1},{"key": "volL","value": 0},{"key": "panR","value": 1},{"key": "volR","value": -1}],"pluginName": "","topChain": [{"instanceId": 67,"uri": "http://two-play.com/plugins/toob-ml","isEnabled": true,"controlValues": [{"key": "trim","value": 0},{"key": "trimOut","value": -35},{"key": "model","value": -1},{"key": "gain","value": 8.16666698},{"key": "master","value": 0},{"key": "bass","value": 0.5},{"key": "mid","value": 0.5},{"key": "treble","value": 0.5},{"key": "sag","value": 0},{"key": "sagd","value": 0},{"key": "sagf","value": 13},{"key": "gainEnable","value": 0}],"pluginName": "TooB ML Amplifier","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 2,"lv2State": [true,{"http://two-play.com/plugins/toob-ml#modelFile": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "ToobMlModels/BluesJR.json"},"http://two-play.com/plugins/toob-ml#version": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Float","value": 1}}],"lilvPresetUri": "","pathProperties": {"http://two-play.com/plugins/toob-ml#modelFile": "{\"otype_\": \"Path\",\"value\": \"ToobMlModels/BluesJR.json\"}"},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 71,"uri": "http://two-play.com/plugins/toob-cab-ir","isEnabled": true,"controlValues": [{"key": "reverb_mix","value": -8.5},{"key": "reverb_mix2","value": -4.5},{"key": "reverb_mix3","value": -3},{"key": "time","value": 1.5},{"key": "direct_mix","value": -40},{"key": "predelay","value": 0},{"key": "loading_state","value": 0}],"pluginName": "TooB Cab IR","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [true,{"http://two-play.com/plugins/toob-cab-ir#impulseFile": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "CabIR/80s UK 001.wav"},"http://two-play.com/plugins/toob-cab-ir#impulseFile2": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "CabIR/80s UK 002.wav"},"http://two-play.com/plugins/toob-cab-ir#impulseFile3": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#String","value": ""}}],"lilvPresetUri": "","pathProperties": {"http://two-play.com/plugins/toob-cab-ir#impulseFile": "{\"otype_\": \"Path\",\"value\": \"CabIR/80s UK 001.wav\"}","http://two-play.com/plugins/toob-cab-ir#impulseFile2": "{\"otype_\": \"Path\",\"value\": \"CabIR/80s UK 002.wav\"}","http://two-play.com/plugins/toob-cab-ir#impulseFile3": "{\"otype_\": \"Path\",\"value\": \"\"}"},"title": "","useModUi": false,"iconColor": ""}],"bottomChain": [{"instanceId": 68,"uri": "http://two-play.com/plugins/toob-ml","isEnabled": true,"controlValues": [{"key": "trim","value": 0},{"key": "trimOut","value": -35},{"key": "model","value": -1},{"key": "gain","value": 4},{"key": "master","value": -2},{"key": "bass","value": 0.5},{"key": "mid","value": 0.5},{"key": "treble","value": 0.5},{"key": "sag","value": 0},{"key": "sagd","value": 0},{"key": "sagf","value": 13},{"key": "gainEnable","value": 0}],"pluginName": "TooB ML Amplifier","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [true,{"http://two-play.com/plugins/toob-ml#modelFile": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "ToobMlModels/BluesJR.json"},"http://two-play.com/plugins/toob-ml#version": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Float","value": 1}}],"lilvPresetUri": "","pathProperties": {"http://two-play.com/plugins/toob-ml#modelFile": "{\"otype_\": \"Path\",\"value\": \"ToobMlModels/BluesJR.json\"}"},"title": "","useModUi": false,"iconColor": ""},{"instanceId": 73,"uri": "http://two-play.com/plugins/toob-cab-ir","isEnabled": true,"controlValues": [{"key": "reverb_mix","value": -3},{"key": "reverb_mix2","value": -3},{"key": "reverb_mix3","value": -3},{"key": "time","value": 1.5},{"key": "direct_mix","value": -40},{"key": "predelay","value": 0},{"key": "loading_state","value": 0}],"pluginName": "TooB Cab IR","midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 1,"lv2State": [true,{"http://two-play.com/plugins/toob-cab-ir#impulseFile": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#Path","value": "CabIR/80s UK 002.wav"},"http://two-play.com/plugins/toob-cab-ir#impulseFile2": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#String","value": ""},"http://two-play.com/plugins/toob-cab-ir#impulseFile3": {"flags": 3,"atomType": "http://lv2plug.in/ns/ext/atom#String","value": ""}}],"lilvPresetUri": "","pathProperties": {"http://two-play.com/plugins/toob-cab-ir#impulseFile": "{\"otype_\": \"Path\",\"value\": \"CabIR/80s UK 002.wav\"}","http://two-play.com/plugins/toob-cab-ir#impulseFile2": "{\"otype_\": \"Path\",\"value\": \"\"}","http://two-play.com/plugins/toob-cab-ir#impulseFile3": "{\"otype_\": \"Path\",\"value\": \"\"}"},"title": "","useModUi": false,"iconColor": ""}],"midiBindings": [ ],"midiChannelBinding": null,"stateUpdateCount": 0,"lv2State": [false,{}],"lilvPresetUri": "","pathProperties": {},"title": "","useModUi": false,"iconColor": ""}],"nextInstanceId": 73,"snapshots": [ ],"selectedSnapshot": -1,"selectedPlugin": 16}}]} \ No newline at end of file diff --git a/default_presets/presets/Factory Presets.piBank b/default_presets/presets/Factory Presets.piBank new file mode 100644 index 0000000..34f07de Binary files /dev/null and b/default_presets/presets/Factory Presets.piBank differ diff --git a/default_presets/presets/banks.versionInfo b/default_presets/presets/banks.versionInfo index 0cfbf08..00750ed 100644 --- a/default_presets/presets/banks.versionInfo +++ b/default_presets/presets/banks.versionInfo @@ -1 +1 @@ -2 +3 diff --git a/default_presets/presets/index.banks b/default_presets/presets/index.banks deleted file mode 100644 index 43e2843..0000000 --- a/default_presets/presets/index.banks +++ /dev/null @@ -1 +0,0 @@ -{"selectedBank": 1,"nextInstanceId": 1,"entries": [{"instanceId": 1,"name": "Default Bank"}]} \ No newline at end of file diff --git a/docs/AboutPiPedal.md b/docs/AboutPiPedal.md deleted file mode 100644 index ce89f17..0000000 --- a/docs/AboutPiPedal.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -page_icon: img/playbot.jpg ---- -## What PiPedal Is - -To get the most out of PiPedal, you need to understand a little about what's going on the world of Guitar effects and amp simulations. - -### PiPedal and the Machine Learning Revolution - -{% include pageIcon.html %} - - -Machine Learning (Artificial Intelligence) has changed everything. - -In the world of guitar effect pedals, the revolution started in 2019 when Jatin Chowdhury published [a paper](https://arxiv.org/pdf/2106.03037) describing the results of using machine learning to simulate guitar amplifier effects in real-time. To put things in perspective, LLM AIs like ChatGPT have billions of parameters. Jatin was more interested in how well AI techniques worked if you used small Neural Net models with a few thousand parameters—models small enough to run in real-time. The answer was surprisingly positive: you can use small models and get impressive results. He then proceeded to publish his source code, both for the real-time simulations and the tools used to train his models, under an open-source MIT license. This has created an avalanche of innovation. - -Jatin Chowdhury's ML library continues to exist and can be freely downloaded and incorporated into guitar effect plugins available in most formats. The ML library and model training tools remain substantially the same as Chowdhury's initial release. There are significant gains in quality if you double the size of the Neural Networks he used in the original versions. Most models for the ML library now use a larger model, and many have gone through significantly more training than Chowdhury's originals. The result? The models sound amazing! Amp simulations based on Chowdhury's ML library can run in real-time on an ordinary computer and produce emulations that sound significantly better than previous-generation amp emulations used by commercial stomp boxes costing over $1,000. - -Community developers have incorporated the ML library into free, open-source guitar plugins that run on Windows, Mac, and Linux, available in most plugin formats (VST2, VST3, AU, RTAS, etc.). Recently, they've also been made available as LV2 plugins that run well in real-time with low latency on Raspberry Pi. - -Steven D. Atkinson has since released the Neural Amp Modeler library, which traces its heritage to Chowdhury's ML library while providing support for a wider variety of Machine Learning algorithms. Amazingly, the Neural Amp Modeler library has also been released under an open-source MIT license and incorporated into plugins for most formats and major computing platforms. - -Subsequently, a large open-source-minded community has devoted itself to training new Neural Net models for these libraries. The compute time required is substantial, typically requiring rented time on NVIDIA AI hardware in the cloud. Training models also requires access to the equipment being modeled. While the compute time isn't particularly expensive, it takes time and effort to record good source material and train the models, which is why a community effort is necessary. There are now hundreds of high-quality, free models for both libraries, covering everything from heavy metal amps to sublime Tweed emulations, distortion/overdrive/fuzz pedals, and even famous tube-based mixing board strips. - -The quality is readily apparent and not a subtle improvement. These are amp simulations that not only sound exactly like what they're simulating but also play and feel like the amps they're emulating. We're talking about 5150 emulations that actually chug, Twin emulations with that sparkly chime that makes your ears itch, and 1962 Fender Bassman emulations with the warmth and forgiveness jazz players seek. (These qualities are not often found in previous-generation amp emulations). - -So let's just to put all of that in perspective, because the results of all of that have huge implications for the music industry going forward. Jatin Chowdhury's machine learning experiment escaped from the lab in 2019, and has since taken over the world. You can use his code (and derivatives thereof) for free, in guitar plugins that are available on all major audio platforms and on all major hardware platforms, for free, and get access to a huge library of community-developed models for those plugins which are also free. All of which sound better than $1000+ stompboxes. - -### So Where Does PiPedal Fit In? - -And now you can plug in a USB audio adapter (not free, I'm afraid) into your Raspberry Pi (also not free, but very cheap), and run those incredible amp models in realtime with low latency using PiPedal (which is also free). That isn't entirely what PiPedal started off as. But at this particular moment in time, that's what PiPedal is. - -And yes, all of the easy effects (reverb, delay, chorus, flangers, modulators, phasers, etc. etc. etc) are either included with PiPedal, or are available for free as LV2 plugins that can also be downloaded from the internet. And Machine Learning plugins also provide good emulations of overdrive, fuzz pedals and other distortion effects, so that's covered. And convolution reverb and cab IR effects aren't particularly easy, but once you've covered that, you pretty much have it all. - -But the living heart and soul of a guitar stomp box is the amp emulations, and how good they are. On Pipedal, thanks to Jatin Chowdhury's escaped monster, they are very good indeed. - -### What PiPedal Is - -PiPedal is a guitar stomp box implementation that runs on a Raspberry Pi (or comparable x64 micro pcs). It provides a basic set of plugin to get you started, among are which are, notably, TooB ML (using Jatin Chowdhury's ML library) and TooB Neural Amp Modeler (using Steven Atkinson's Neural Amp Model library). PiPedal provides a basic set of LV2 plugins to get you started. Among those plugins are TooB ML (which uses the ML library), and TooB Neural Amp Modeler (which uses the Neural Amp Modeler library). PiPedal uses Linux-standard LV2 plugins, allowing you to download and install additional LV2 plugins as needed. - -You access all of those plugins and configure them using PiPedal's web interface, which is important. GPUs and real-time audio effects do not get along well together. So if the user interface you use to control PiPedal is remote, it means that PiPedal can be configured to run with extraordinarily low latency, and use 80% or more of available CPU to run what really matters: guitar effects plugins. GPUs, by the way, are why you can't really ever get low latency on a laptop or PC. PiPedal lets you use your phone, or your tablet or maybe even your laptop to run the user interface, and let your Raspberry Pi concentrate on processing low-latency realtime audio. - -Unlike most other audio host applications, PiPedal runs as a daemon, whether you're logged on or not. So all you have to do is plug in your Raspberry Pi, and play - no login required. - -When you're playing away from home, PiPedal provides an auto-hotspot feature, which automatically brings up a Wi-Fi hotspot on your Raspberry Pi whenever Pipedal can't see your home router (or an ethernet connection, if that's how you connect to your Pi at home). So all you have to do when you're playing away from home, is power on your Raspberry Pi, pull out your phone or tablet or laptop, and you're all ready to go. - -But most importantly PiPedal sounds great because it leverages the work of Jatin Chowdhury, and Steven D. Atkinson. And in the end, whether it sounds great is all that really matters. So please do spend some serious time with the TooB ML and TooB Neural Amp Modeler plugins. - -That's what PiPedal is. - -PiPedal doesn't come with a lot of models, or a lot of effects. It is a platform. The TooB ML plugins (included with Pipedal) includes Jatin Chowdhury's original amp models, which sound pretty good, but are nowhere near as good as current-generation models. So download some models for TooB ML. And TooB Neural Amp Modeler doesn't come with any models at all. So download some models for TooB NAM as well. And PiPedal comes with a very bare minimum set of LV2 effects, just to get you started. The plugins it does have are (I think) good and useful plugins. TooB Freeverb is there because Freeverb is my favorite goto reverb even in a world filled with convolution reverbs; a convolution reverb, because not everyone agrees; a good flanger (which sounds unreasonable fabulous in stereo); a sensible no-nonsense delay; a decent chorus; a couple of cab simulator effects and a few others. So if you'e looking for anything but bare basics, download some LV2 plugins as well. - --------- -[Up](Documentation.md) | [Installing PiPedal >>](SystemRequirements.md) diff --git a/docs/AudioLatency.md b/docs/AudioLatency.md index c69e5f9..5aecd15 100644 --- a/docs/AudioLatency.md +++ b/docs/AudioLatency.md @@ -55,4 +55,4 @@ You may want to watch out for temperature throttling of the CPUs. PiPedal can be My development system has both a heat sink, and a fan. The CPU temperature rarely goes above 60C. -------- -[<< System Requirements](ChoosingAUsbAudioAdapter.md) | [Up](Documentation.md) | [Command-Line Configuration of PiPedal >>](CommandLine.md) +[<< Choosing a USB Audio Adapter](ChoosingAUsbAudioAdapter.md) | [Up](Documentation.md) | [Command-Line Configuration of PiPedal >>](CommandLine.md) diff --git a/docs/BuildingPresets.md b/docs/BuildingPresets.md new file mode 100644 index 0000000..2bf026d --- /dev/null +++ b/docs/BuildingPresets.md @@ -0,0 +1,44 @@ +--- +page_icon: img/BuildingPresets_thumb.png +--- + +## How to Build Presets with PiPedal + +{% include pageIcon.html %} + +PiPedal does not provide a lot of Factory Presets. You may be used to guitar stomp boxes that provide hundreds of factory +presets out of the box (most of which are mediocre, or even ridiculous, or are targeted at some genre that is not you at all). +PiPedal is not that. Instead, it provides a very small set of Factory Presets that are intended to either give you a quick taste of +the quality an and variety of NAM A2 models that are available, or to give you some ideas about how to build presets around NAM A2 models that you like. + +Instead, the versatility of PiPedal revolves around the versatility of Neural Amp Model (NAM) models. TooB Neural Amp Modeler is the plugin that provides NAM emulations. Start by finding an amp model you like from the thousands of amp models available on Tone3000.com, and then wrap it with effects that you personally are going to use. PiPedal is not about 256 factory presets; it is about 11,000 stunningly good amp models, and the ability to build your own presets around those models. + +In short, focus your attention on amp models, not presets. + +First of all, start by picking an amp model that you like. Maybe a Fender amp for sparkling cleans, or famous Fender edge-of breakup tones; or a Marshall amp for classic rock and high-gain lead tones; or a Peavey 6505 for chugging metal tones. If you are +chasing the sound of a favorite artist, perhaps check to see what kind of amps they prefer. + +If you have found an amp model that is close to what you want, you can often adjust amp models to better suit your needs by adding EQ plugins before or after the amp model (or of course, using the Tone knob on your guitar). TooB Parametric EQ is a good choice for this, because it provide a lot of flexibility for shaping tones. Or, if you find TooB Parameter EQ overwhelmingly complicated, TooB 3 Band EQ is a simpler (but still very useful) alternative. You can often get good results by scooping mid-range frequency response a bit, or boosting high-frequency response, depending on what kind of tone you are going for. If you start with a model that is close to what you want, you can often get exactly what you want with a tiny bit of EQ tweaking. + +You should also pay particular attention to whether the amp simulation is a head-only simulation or a full amp simulation (which includes +modeling of the speaker cabinet). Head-only simulations will require you to add a speaker cabinet simulator after the amp model (or have an actual physical guitar cabinet in your signal chain) in order to get good sound. Head-only simulations are quite common on Tone3000, because they allow you to choose your own speaker cabinet independently. The Toob Cab IR plugin is a good choice for this (and also allows you to easily download Cab IR files from Tone3000.com). + +Neural Amp Models can also be used to simulate guitar effects peadals as well. So if you have a favorite distortion pedal, or fuzz pedal, or overdrive pedal, you can probably find a NAM model of that pedal on Tone3000.com as well. Also worth considering are NAM emulations of +studio console mixing strips, which are particularly useful for warming up the tone of accoustic guitars, or for adding some extra warmth and character to electric guitar tones, and a good way to get Limiter effects as well, should you find that useful. + +And if you are listening to the output of PiPedal through headphones, or small speakers at home, you will generally want to add +some amount of reverb as well, to get really pleasant tones. TooB Freeverb is a good choice for this, because it is a simple, no-nonsense reverb that sounds good, is easy to use, and provides relatively little signal coloration. But if you want a more lush, more colorful reverb, or are looking for creative reverb effects (bathrooms, big halls, plates reverbs, etc.), you can try convolution reverb with good impulse responses files. The TooB Convolution Reverb plugin is a good choice for this. PiPedal provides a very basic set of convolution reverb impulse files to get you started, but they are not intended to be a comprehensive library of reverb impulse responses. Unfortunately, Tone3000 does not provide convolution reverb impulse response files yet; but there are many sources of +free and commercial convolution reverb impulse response files available on the internet. + +And then and only then should you start adding modulation effects, or delays, or other effects around the core amp model. In the real +world, guitarists add effects pedals before the guitar amp, because they have to. When building digital presets, you may find that you often get better results if you place effects after the amp model, rather than before. You get more clarity (particular for reverb effects); but sometimes lose some of the character that an effect in front of the amp can provide. For example, high-gain leads with a lot of distortion produce lovely phasing effects while pitch bending if you place an echo/delay ahead of the amp model. So experiment with different placements of effects in your presets, and see what works best for you. + +If you have the luxury of stereo ouput, you can also experiment with placing stereo modulation effect plugins (chorus, flangers, phasers, stereo delays) last in the signal chain, where they produce truly marvelous results. + +## Going Beyond the Pre-installed Factory Plugins + +PiPedal includes a selection of pre-installed plugins from the TooB plugin collection that are intended to cover most basic needs for +guitar effects. See the [Using Lv2 Plugins](UsingLv2Plugins.md) section of the documentation for more details. + +-------- +[<< How to Use PiPedal](HowToUsePiPedal.md) | [Up](Documentation.md) | [An Intro to Snapshots >>](Snapshots.md) diff --git a/docs/ChoosingAUsbAudioAdapter.md b/docs/ChoosingAUsbAudioAdapter.md index d8d93da..3dd941f 100644 --- a/docs/ChoosingAUsbAudioAdapter.md +++ b/docs/ChoosingAUsbAudioAdapter.md @@ -11,22 +11,20 @@ The quality of the audio adapter you use dramatically affects the quality of the Cheap USB audio adapters, claim to to support 24-bit audio, and happily provide 24 bits of data. The problem is that they are usually providing less than 16-bits of signal (the remaining bits being pure noise). -You will get decent results; but not great results. Stepping up to a more expensive USB adapter dramatically improves the quality of signal you're going to get. With a decent USB audio adapters, some of the state-of-the art Machine Learning plugin produce results that are as good as or better the Helix or Kemperer amp emulations. +You will get good results; but not astounding results. Stepping up to a more expensive USB adapter dramatically improves the quality of signal you're going to get. With a decent USB audio adapters, NAM A2 amp emulations are significantly better than Helix or Kemperer amp emulations. -I think it's worthwhile, at this point, to make a brief discursus into the state of the art when it comes to machine learning models of guitar amps. There are two major Machine Learning amp simulators that are in the public domain. Jatin Chowdhury produced some of the first really impressive Machine Learning amp simulators (I believe) as part of his PhD thesis. Jatin Chowdhury's ML amp simulation library (which was graciously provided under an open-source MIT license) forms the core of the ToobML plugin included with PiPedal. Steven Atkins' Neural Amp Modeler library (also provided under an MIT license) is the other major ML implementation, that implements a variety of Machine Learning algorithms that have been developed since Jatin Chowdhury's initial publication of his results. TooB Neural Amp Modeler uses Steven Atkins' Neural Amp Modeler library. And both have large community-developed libraries of amp models. The quality of amp simulations produced by both of these libraries is breathtaking. As I said previously, as good as or better than Helix or Kemperer amp emulations. +I personally use and recommend the both the MOTU M2, and Focusrite Scarlett 2i2 4th gen (not the Solo, or 3rd gen models which have significantly less dynamic range). There are plenty of other pro-quality audio adapters that will probably work as well. Check the specs carefully, signal-to-noise-ratio is what matters, not bits of data. (This may show up on a datasheet as Dynamic Range, as well). Cheaper USB audio adapters that sell for less than US$70 will almost certainly not provide adequate signal-to-noise ratio for best results, and invariably won't provide S/N ratio specs for very very good reasons. -But to get Helix-quality (or better) results, you need a good USB adapter. For amp simulators, particularly, every extra bit of input signal is precious. +Ideally, you want a USB adapter that provides an input volume knob, and an instrument-level input jack, and it's enormously helpful to have a VU meter to display input signal level to the device. Microphone and RCA jacks will have the wrong input impedance, which may affect your guitar tone. -I personally use and recommend the Motu M2 USB audio adapter, although there are plenty of other pro-quality audio adapters that will probably work as well. Although, the MOTU devices are -- in my experience, exceptional. Check the specs carefully, signal-to-noise-ratio is what matters, not bits of data. Cheaper USB audio adapters that sell for less than US$70 will almost certainly not provide adequate signal-to-noise ratio for best results, and invariably won't provide S/N ratio specs for very very good reasons. +For best results, you want the input signal to the DAC to be as high as possible without clipping. Digitally clipped input signals sound horrible. And every db below "as high as possible" brings up the noise floor. Which is why a VU meter on the +USB adapter is helpful. The input signal should be peaking solidly in the yellow range of the VU meter, and must NEVER go into the red range. -Ideally, you want a USB adapter that provides an input volume knob, and an instrument-level input jack, and it's enormously helpful to have a VU meter to display input signal level to the device. Line-level or RCA jacks will have the wrong input impedance, and that has strange effects when 20 feet of guitar cable and tone controls that are designed for instrument-level impedance are involved. For best results, you want the input signal to be as high as possible without clipping. Clipped input signals sound horrible. And every db below "as high as possible" brings up the noise floor. Which is why a VU meter on the -USB adapter is helpful. +We recommend "gain-staging" your input signal to -6dbFS. Input and output signals of each successive plugin in your signal chain should be adjusted so that the signal is approximately -6dBFS when you are playing loudly. This is a good general rule of thumb for getting the best possible sound out of your plugins, and is particularly important for getting the best possible sound out of NAM A2 amp models. And this rule applies to the input signal coming into PiPedal from your USB adapter as well. Gain-staging the input signal to -6dBFs provides a little bit of safe headroom to avoid hard-clippping of the input signal. If you select the Start node in your PiPedal preset, you can see +the level of the input signal level coming into PiPedal from your USB adapter on the left-side VU meter. If you prefer to use a lower input trim on your USB adapter, adjust the input trim control in the Start node so that the right-side VU meter is peaking at around -6dBFS when you are playing loudly. -If you don't have an audio adapter with a VU meter, pay close attention to the input VU meter of the first effect in your guitar effect chain. That will indicate the signal level coming into the USB adapter. Ideally, you want the value peaking solidly in the yellow range of the VU meter, and NEVER going red. - -Again, the MOTU M2 excels in this regard. It provides large volume knobs for input and output trim, along with very readable VU meters on the front panel which indicate both input and output signal levels. -------- -[<< An Intro to Snapshots](Snapshots.md) | [Up](Documentation.md) | [Optimizing Audio Latency >>](AudioLatency.md) +[<< Neural Amp Modeler Calibration](NamCalibration.md) | [Up](Documentation.md) | [Optimizing Audio Latency >>](AudioLatency.md) diff --git a/docs/Configuring.md b/docs/Configuring.md index f72442e..092a6f1 100644 --- a/docs/Configuring.md +++ b/docs/Configuring.md @@ -187,4 +187,4 @@ When the Raspberry Pi hosts the hotspot, mDNS discovery is definitely enabled; s -------- -[<< Headless Operation](HeadlessOperation.md) | [Up](Documentation.md) | [Using TooB Neural Amp Modeler >>](UsingNAM.md) +[<< Headless Operation](HeadlessOperation.md) | [Up](Documentation.md) | [What PiPedal Is >>](WhatPiPedalIs.md) diff --git a/docs/Documentation.md b/docs/Documentation.md index 126aad7..882fd95 100644 --- a/docs/Documentation.md +++ b/docs/Documentation.md @@ -3,17 +3,20 @@   -#### [What PiPedal Is](AboutPiPedal.md) - #### [System Requirements](SystemRequirements.md) +  #### [Installing PiPedal](Installing.md) -#### [PiPedal on Ubuntu](Ubuntu.md) +#### [Installing PiPedal on Ubuntu](Ubuntu.md) #### [Headless Operation](HeadlessOperation.md) #### [Configuring PiPedal After Installation](Configuring.md)   -#### [Using TooB Neural Amp Modeler](UsingNAM.md) -#### [An intro to Snapshots](Snapshots.md) +#### [What PiPedal Is](WhatPiPedalIs.md) +#### [Machine Learning in PiPedal (A History)](PiPedalHistory.md) +#### [How to Use PiPedal](HowToUsePiPedal.md) +#### [How to Build Presets With PiPedal](BuildingPresets.md) +#### [An Intro to Snapshots](Snapshots.md) +#### [Neural Amp Modeler Calibration](NamCalibration.md) #### [Choosing a USB Audio Adapter](ChoosingAUsbAudioAdapter.md) #### [Optimizing Audio Latency](AudioLatency.md) #### [Command-Line Configuration of PiPedal](CommandLine.md) @@ -34,9 +37,5 @@ #### [Build Prerequisites](BuildPrerequisites.md) #### [The Build Systems](TheBuildSystem.md) #### [How to Debug PiPedal](Debugging.md) - -  -  - #### [PiPedal Architecture](Architecture.md) diff --git a/docs/FAQ.md b/docs/FAQ.md index 0aff010..6ec520d 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -32,13 +32,14 @@ Devices that would make excellent choices: - MOTU M2 - Focusrite Scarlett 2i2 (4th gen) - -PreSonus Quantum ES 2 USB-C Audio Interface +- PreSonus Quantum ES 2 USB-C Audio Interface - Solid State Logic SSL 2 MK II - Universal Audio Volt 176 -Or other devices in that sort of class and price range. +or other devices in that sort of class and price range. (The Focusrite Scarlett Solo, and 3rd gen 2i2 models have significantly +less dynamic range). -The MOTU M2, and the Focusrite Scarlett 2i2 are relatively affordable. +Of these, the MOTU M2, and the Focusrite Scarlett 2i2 are relatively affordable. #### Q. My Neural Amp Modeler amp models don't sound that great. Am I doing something wrong? the output signal not loud enough. diff --git a/docs/HeadlessOperation.md b/docs/HeadlessOperation.md index 9c30b53..c367e6c 100644 --- a/docs/HeadlessOperation.md +++ b/docs/HeadlessOperation.md @@ -7,13 +7,13 @@ icon_float: right {% include pageIcon.html %} -To get the best possible audio latency, your PiPedal server should run headless. GPU activity interferes with low-latency audio. Drawing to the screen (or even moving the mouse) can cause audio underruns. This does not mean that you cannot use a desktop install; but it does mean that you should not be using the PiPedal server's desktop when using PiPedal. Use a browser on a remote machine, or use a phone or tablet to control PiPedal. PiPedal is very much designed on the expectation that you will be using a remote device to control it. +To get the best possible audio latency, your PiPedal server should run headless, or at least be running without graphical activity on the server's desktop. GPU activity interferes with low-latency audio. Drawing to the screen (or even moving the mouse) can cause audio underruns. This does not mean that you cannot use a desktop install; but it does mean that you should not be using the PiPedal server's desktop when using PiPedal. Use a browser on a remote machine, or use a phone or tablet to control PiPedal. PiPedal is very much designed on the expectation that you will be using a remote device to control it. -It is not entirely clear why GPUs don't play well with realtime low-latency audio. It's probably not caused by interrupts, but may be caused by contention for system memory and various system buses. Or perhaps by graphics drives that cheat a bit in order to get better benchmark scores. If you are running a very powerful PC with a GPU that doesn't share system memory for its framebuffer, you may be able to run a desktop while using PiPedal; but if you are not getting the latency you think you should, try going back to headless operation. The difference is dramatic. A system that may struggle to achieve 15ms latency with a desktop running (256x3 buffer configuration), should easily be able to achieve sub-5ms latency (32x3 buffer configuration) when running headless. As a point of reference, 10ms latency is generally considered the maximum threshold for usable realtime audio that doesn't feel spongy and unpleasant. +It is not entirely clear why GPUs don't play well with realtime low-latency audio. It's probably not caused by interrupts, but may be caused by contention for system memory, memory caches, and various system buses. Or perhaps by graphics drivers that cheat a bit in order to get better benchmark scores. If you are running a very powerful PC with a GPU that doesn't share system memory for its framebuffer, you may be able to run a desktop while using PiPedal; but if you are not getting the latency you think you should, try going back to headless operation. The difference is dramatic. A system that may struggle to achieve 15ms latency with a desktop running (256x3 buffer configuration), should easily be able to achieve sub-5ms latency (32x3 buffer configuration) when running headless. As a point of reference, 10ms latency is generally considered the maximum threshold for usable realtime audio that doesn't feel spongy and unpleasant. If you are running on a Raspberry Pi, it doesn't seem that strange run the Pi without a monitor connected. If you are using a laptop or desktop computer, running Ubuntu 24.x, this may seem a bit odd. But it matters! Running headless makes the difference between ordinary and extra-ordinary. You may want to consider purchasing a dedicated host for PiPedal—perhaps, a tiny N95, N100 or N150 micro-pc, or, of course, a Raspberry Pi 5. It's perfectly fine to run PiPedal on a desktop, or laptop. But just make sure you are not using the GPU when you run PiPedal. -Headless, in this context means that nothing is using the GPU. On a Raspberry Pi, it is sufficient to just disconnect the HDMI cables, and not be using a remote desktop connection. It is uncertain whether Ubuntu will stop using the GPU if there is an active desktop that is (for example) updating status indicators on the status bar. If in doubt, try disabling automatic login. The system will then stop at the login screen, which does not do any drawing until you start typing credentials. Configuring your PiPedal server to use a text-mode interface instead of a graphical interface would, of course, be perfect; but it seems unnecessarily inconvenient. Personally, I prefer to have a graphical desktop available if I need it to tinker with the system, or run software updates. On an Ubuntu server install, there is no graphical desktop, so this is not a problem. But see the section in [PiPedal on Ubuntu](Ubuntu.md) about configuring Ubuntu Server network services before you choose an Ubuntu Server install. +Headless, in this context means that nothing is using the GPU. On a Raspberry Pi, it's fine to have a desktop display, as long as you are not doing anything with it. It is uncertain whether Ubuntu will stop using the GPU if there is an active desktop that is (for example) updating status indicators on the status bar. If in doubt, try disabling automatic login. The system will then stop at the login screen, which does not do any drawing until you start typing credentials. Configuring your PiPedal server to use a text-mode interface instead of a graphical interface would, of course, be perfect; but it seems unnecessarily inconvenient. Personally, I prefer to have a graphical desktop available if I need it to tinker with the system, or run software updates. On an Ubuntu server install, there is no graphical desktop, so this is not a problem. But see the section in [PiPedal on Ubuntu](Ubuntu.md) about configuring Ubuntu Server network services before you choose an Ubuntu Server install. -------- diff --git a/docs/HowToUsePiPedal.md b/docs/HowToUsePiPedal.md new file mode 100644 index 0000000..ab3e885 --- /dev/null +++ b/docs/HowToUsePiPedal.md @@ -0,0 +1,37 @@ +--- +page_icon: img/ServerClient_thumb.jpg +--- + +## How to Use PiPedal + +{% include pageIcon.html %} + + +There are two parts to Pipedal: there is the Pipedal Server, which runs the realtime audio engine and plugins; and there is the PiPedal +user interface, provided by a web application, which is what you use to control and configure the PiPedal server. + +By original design, the server and the user interface should run on separate computers. GPU activity and screen rendering interfere with +realtime audio processing; so to get the best possible latency and stability, you should not run the web application on the PiPedal server, and avoid using the PiPedal server machine for anything that will render graphics to the screen on the server machine. PiPedal was originally created to run on a Raspberry Pi 4, and subsequently ported to AMD64/x86-64 sytems, in the expectation that tiny N150-class micro-Pcs would also make a sensible platform on which to run Pipedal. Doing so, of course, means that you can also use PiPedal on a powerful desktop or laptop computer as well. But in all cases, the best possible performance and lowest possible latency is achieved if you run the web application on a separate machine from the PiPedal server. + +If you are running the PiPedal server on a Raspberry Pi 4. In that case, you must run the web application +interface on a separate computer. + +If you are using a Pi 5, or an N150-class micro-PC, you might be able to run the web +application on the server, with some signifant affect on what latencies and maximum CPU use you can safely use. + +If you are running the PiPedal server on a powerful AMD64/x86-64 desktop or laptop computer, you can run both browser and server on the same machine; but even then, you will get better latency and stability if you run the web application on a separate computer. + +On a Raspberry Pi, you will need an external USB adapter, or an audio hat of some kind. PiPedal will not work with the Raspberry Pi's built-in audio, which is not of sufficient quality or latency to be useful. On AMD64/x68-64 systems, you may be able to use the builtin-in audio systems, but you would be better off using an external USB audio adapter anyway. There are difficult problems with line-level conversions, and input and output impedances, all of which go away if you use an external USB audio adapter. + +There are a lot of different USB audio adapters out there, not all of which provide optimum results with PiPedal. +The quality of PiPedal's amp simulations relies to a significant extent on the dynamic range (ratio of loudest to quietest signal) of the input signal you are using. This is not the same as the number of bits that an audio adapter provides. Low-end audio adapters that claim to support 24-bit audio will often have a signal-to-noise ratio that is less than 16-bits worth of dynamic range (sometimes dramatically +less). If you are just trying PiPedal out to get a sense of what it is capable of, you can get good results with a low-end USB audio adapter—probably better than what you would get with most previous-generation amp simulation technologies. But to get truly extraordinary results, it is worth investing in a good mid-range USB audio adapter that has a signal-to-noise ratio of at least 110dB. Models that I can particularly personally recommend: MOTU M2, or Focusrite Scarlett 2i2 (4th gen) (not the Solo, or 3rd gen models which have significantly less dynamic range). Both of those USB audio adapters have a signal-to-noise ratio that exceeds 110dB, which is more than enough to get the best possible results out of PiPedal's amp simulations. Guitar amplifiers dramatically compress the available dynamic range of the signal, and raise the noise floor. So every bit of dynamic range/signal to noise ratio that your audio adapter provides matters. + +The Factory Presets that PiPedal provides are based on the premise that the audio output from PiPedal is going to headphones, a PA system, a front-of-house mixer, or some kind of speaker that has more-or-less linear response. It is perfectly reasonable to use PiPedal in front of an actual guitar amplifier as well; but in that case, you will need to modify presets to take into account the fact that the output from PiPedal is going to a guitar amp, which has a very different frequency response and linearity than a PA system or a front-of-house mixer. + +It's probably worth mentioning at this point that the Pipedal server does not run as a normal application; instead it runs as a systemd service. This allows the Pipedal server to run both the web server and the realtime audio engine at realtime priority, under a service account, and ensures that the PiPedal server automatically starts after a reboot, even if you have not logged in interactively. + +This may cause slightly odd interactions with audio services running in an interactive desktop session. First off, PiPedal gets the first claim on the audio device it is configured to use at boot time, because it runs before the desktop has a chance to use it, and because it opens the audio device for exclusive use by PiPedal. It also means that if you are changing PiPedal's audio device, you may need to get your desktop to release the device, by choosing another device for the desktop to use before PiPedal can select the device in question. You can tell whether something else has opened an audio device in the PiPedal UI. If the device is in use, it will appear in the list available audio devices, but it will be grayed out and you won't be able to select it. If something else is using the device, it is invariably the desktop that is using it, and you will need to get the desktop to release the device before PiPedal can use it. + +-------- +[<< Machine Learning in PiPedal (A History)](PiPedalHistory.md) | [Up](Documentation.md) | [How to Build Presets With PiPedal >>](BuildingPresets.md) diff --git a/docs/Installing.md b/docs/Installing.md index f81af1e..f11109d 100644 --- a/docs/Installing.md +++ b/docs/Installing.md @@ -13,18 +13,18 @@ page_icon: img/Install4.jpg Download the most recent Debian (.deb) package for your platform: -- [Raspberry Pi OS bookworm (aarch64) v2.0.102](https://github.com/rerdavies/pipedal/releases/download/v2.0.102/pipedal_2.0.102_arm64.deb) -- [Ubuntu 24.04 through 25.04 (aarch64) v2.0.102](https://github.com/rerdavies/pipedal/releases/download/v2.0.102/pipedal_2.0.102_arm64.deb) -- [Ubuntu 24.04 through 25.04 (amd64) v2.0.102](https://github.com/rerdavies/pipedal/releases/download/v2.0.102/pipedal_2.0.102_amd64.deb) +- [Raspberry Pi OS bookworm (aarch64) v2.0.103](https://github.com/rerdavies/pipedal/releases/download/v2.0.103/pipedal_2.0.103_arm64.deb) +- [Ubuntu 24.04 through 25.04 (aarch64) v2.0.103](https://github.com/rerdavies/pipedal/releases/download/v2.0.103/pipedal_2.0.103_arm64.deb) +- [Ubuntu 24.04 through 25.04 (amd64) v2.0.103](https://github.com/rerdavies/pipedal/releases/download/v2.0.103/pipedal_2.0.103_amd64.deb) -Version 2.0.102 has been tested on Raspberry Pi OS bookworm, Ubuntu 24.04 (amd64), Ubuntu 24.10 (aarch64), and Ubuntu 25.04 (aarch64). Download the appropriate package for your platform, and install using the following procedure: +Version 2.0.103 has been tested on Raspberry Pi OS bookworm, Ubuntu 24.04 (amd64), Ubuntu 24.10 (aarch64), and Ubuntu 25.04 (aarch64). Download the appropriate package for your platform, and install using the following procedure: ``` sudo apt update sudo apt upgrade cd ~/Downloads - sudo apt-get install ./pipedal_2.0.102_arm64.deb + sudo apt-get install ./pipedal_2.0.103_arm64.deb ``` You MUST use `apt-get`. `apt` will not install downloaded packages; and `dpkg -i` will not install dependencies. diff --git a/docs/LicensePiPedal.md b/docs/LicensePiPedal.md index 8911e36..368c594 100644 --- a/docs/LicensePiPedal.md +++ b/docs/LicensePiPedal.md @@ -1,4 +1,4 @@ -Copyright 2021-2024 Robin E. R. Davies +Copyright (c) Robin E.R. Davies Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), diff --git a/docs/LicenseToobAmp.md b/docs/LicenseToobAmp.md index f55edb4..fa7dd72 100644 --- a/docs/LicenseToobAmp.md +++ b/docs/LicenseToobAmp.md @@ -1,4 +1,4 @@ -Copyright 2021-2023 Robin E. R. Davies +Copyright (c) Robin E.R. Davies Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), diff --git a/docs/ModUiSupport.md b/docs/ModUiSupport.md index ded38c9..f87301d 100644 --- a/docs/ModUiSupport.md +++ b/docs/ModUiSupport.md @@ -6,7 +6,7 @@ icon_width: 120px {% include pageIconL.html %} -Some LV2 plugins (currently a minority of plugins) provide custom plugin user interfaces based on [MOD Audio's](https://mod.audio/desktop/) +Many LV2 plugins provide custom plugin user interfaces based on [MOD Audio's](https://mod.audio/desktop/) [ModUi framework](https://wiki.mod.audio/wiki/MOD_Web_GUI_Framework). When using such a plugin, you can choose whether to use the MOD Web GUI Framework user interface (the MOD UI) or the default PiPedal user interface. For the most part, the same functionality is available in both interfaces. Plugins that are distributed via Linux distributions usually do not implement MOD user interfaces; but all (or almost all) of the plugins that are available from the [PatchStorage website](https://patchstorage.com/platform/lv2-plugins/) do implement MOD user interfaces. Many plugins that are available from GitHub or other sources also implement MOD user interfaces. Often you can find updated versions of a plugin that is published by a distro on PatchStorage which does provide a MOD UI. diff --git a/docs/UsingNAM.md b/docs/NamCalibration.md similarity index 85% rename from docs/UsingNAM.md rename to docs/NamCalibration.md index 1ac06ea..2516cce 100644 --- a/docs/UsingNAM.md +++ b/docs/NamCalibration.md @@ -1,20 +1,4 @@ -# Using TooB Neural Amp Modeler - -The living breathing heart of Pipedal is actually the TooB Neural Amp Modeler plugin, although you would be forgiven for not guessing that's the case. - -Steven Atkinson's [Neural Amp Modeler](https://www.neuralampmodeler.com/) project is an open-source project that provides a framework for creating digital models of guitar amplifiers, speaker cabinets, and effects pedals, using machine learning techniques. The models are created by training a neural network on input-output pairs of audio data, where the input is the signal from a guitar plugged into a real amplifier or effect pedal, and the output is the signal recorded from the output of that amplifier or pedal. The result is a digital model that can replicate the sound of the original hardware with remarkable fidelity. - -The results are astonishing. Models are capable of producing sounds that are virtually indistinguishable from the real hardware, including the complex nonlinearities and dynamic response characteristics that are difficult to capture with traditional modeling techniques. "This changes everything" is a phrase that comes up often when discussing Neural Amp Modeler. PiPedal didn't really start out this way, but it has gradually evolved into a platform whose principle purpose is providing access to Neural Amp Modeler models in a live performance context. That's how good NAM is. - -PiPedal allows you to use Neural Amp Modeler models (.nam files) with the TooB Neural Amp Modeler plugin, which is bundled with PiPedal. - -Although TooB ML models produce exceptionally good results, TooB Neural Amp Modeler produces significantly better results. Awkwardly, none of the built-in factory presets for Pipedal currently contain TooB Neural Amp Modeler plugins, because I am still working on obtaining NAM models that are licensed under terms that are compatible with Pipedal's MIT license. (Expect some progress soon). - -So I would urge you, in the meantime, to experiment with TooB Neural Amp Modeler using free .nam files downloaded from [Tone 3000](www.tone3000.com), or perhaps purchase some commercial NAM models from any of several providers of non-free NAM models on the Internet. (Totally worth it!) - -The remainder of this page deals with issues relating to how to get the absolute best results out of TooB Neural Amp Modeler. This is not required reading. You will get excellent results if you never read what follows. The purpose of what follows is to provide an explanation of model calibration in TooB Neural Amp Modeler—how it works, why you might or might not want to use it, and how to get good results even if you don't use it. "Calibration" is a confusing feature. It doesn't entirely do what you might it expect it do do. But it does provide useful functionality that may allow you to make even better use of NAM. - -### Calibrating TooB Neural Amp Modeler +## TooB Neural Amp Modeler Calibration This feature isn't what you think it is. @@ -111,4 +95,4 @@ If you must feed output of a NAM effect simulation to a downstream NAM amp model -------- -[<< Configuring PiPedal After Installation](Configuring.md) | [Up](Documentation.md) | [An Intro to Snapshots >>](Snapshots.md) \ No newline at end of file +[<< An Intro to Snapshots](Snapshots.md) | [Up](Documentation.md) | [Choosing a USB Audio Adapter >>](ChoosingAUsbAudioAdapter.md) \ No newline at end of file diff --git a/docs/PiPedal2.md b/docs/PiPedal2.md index 2de5b57..17f93c2 100644 --- a/docs/PiPedal2.md +++ b/docs/PiPedal2.md @@ -11,7 +11,7 @@ -_To download PiPedal v2.0.102-alpha, click [*here*](download.md). +_To download PiPedal v2.0.103-alpha, click [*here*](download.md). To view PiPedal documentation, click [*here*](Documentation.md)._ Use your Raspberry Pi as a guitar effects pedal. Configure and control PiPedal with your phone or tablet. diff --git a/docs/PiPedalHistory.md b/docs/PiPedalHistory.md new file mode 100644 index 0000000..3c5170b --- /dev/null +++ b/docs/PiPedalHistory.md @@ -0,0 +1,47 @@ +--- +page_icon: img/playbot.jpg +--- +## Machine Learning and Guitar Amp Simulation (A History) + + +{% include pageIcon.html %} + + +Machine Learning (Artificial Intelligence) has changed everything. + +In the world of guitar effect pedals, the revolution started in 2019 when Jatin Chowdhury published [a paper](https://arxiv.org/pdf/2106.03037) describing the results of using machine learning to simulate guitar amplifier effects in real-time. To put things in perspective, LLM AIs like ChatGPT have billions of parameters. Jatin was more interested in how well AI techniques worked if you used small Neural Net models with a few thousand parameters—models small enough to run in real-time. The answer was surprisingly positive: you can use small models and get impressive results. He then proceeded to publish his source code, both for the real-time simulations and the tools used to train his models, under an open-source MIT license. This has launched an avalanche of innovation. + +Jatin Chowdhury's ML library continues to exist and can be freely downloaded and incorporated into guitar effect plugins available in most formats. The ML library and model training tools remain substantially the same as Chowdhury's initial release. There are significant gains in quality if you double the size of the Neural Networks he used in the original versions. Most models for the ML library now use a larger model, and many have gone through significantly more training than Chowdhury's originals. The result? The models sound amazing! Amp simulations based on Chowdhury's ML library can run in real-time on an ordinary computer and produce emulations that sound significantly better than previous-generation amp emulations. + +Community developers quickly incorporated the ML library into free, open-source guitar plugins that run on Windows, Mac, and Linux. The TooB ML plugin, included with Pipedal, uses Jatin Chowdhury's ML library to implement amp simulations using ML technology. And some of Jatin Chowdhury's original ML models are also pre-installed by PiPedal. Original ML models, are still pretty good, but are not as good as current-generation NAM A1 and A2 models. + +But the story does not end there. + +Steven Atkinson has since released the [Neural Amp Modeler library](https://github.com/sdatkinson/NeuralAmpModelerCore), which traces its heritage to Chowdhury's ML library while providing support for a wider variety of Machine Learning algorithms. The Neural Amp Modeler library has also been released under an open-source MIT license and incorporated into plugins for most plugin formats and major computing platforms. The TooB Neural Amp Modeler plugin (bundled with Pipedal) uses the Neural Amp Modeler Core library to implement NAM A2 models. Credit also needs to be given to Mike Oliphant, whose [NeuralAudio library](http:s://github.com/mikeoliphant/NeuralAudio) provides a highly-optimized implementation of the NAM A1 algorithms that allow NAM A1 models to be used on a Raspberry Pi 4. + +And finally (for now), in June of 2025, Steven Atkinson released NAM A2—the next generation of Neural Amp Modeler technology, which provides even more accurate amp simulations than NAM A1, while using even less CPU. NAM A2 models are also supported by the TooB Neural Amp Modeler plugin bundled with Pipedal, and very much form the living breathing core of PiPedal. + +And the quality of NAM models is breathtaking! Game changing, even (a phrase that comes up suprisingly often when people are talking about NAM). + +Subsequently, a large open-source-minded community has devoted itself to training new Neural Net models for NAM. Of these initiatives, [Tone3000.com](https://www.tone3000.com) is the most important. Tone3000 provides easy access to thousands of free, high-quality, downloadable NAM models. Models were originally available in NAM A1 format, but Tone3000.com has just retrained all of the models on Tone3000.com using NAM A2 technology. If you have a favorite amp, you will probably find good models for your amp on Tone3000. And Tone3000 also provides an easy way to [generate .nam models](https://www.tone3000.com/capture) from captures of your own amps and pedals as well! + +So let's just to put all of that in perspective, because the results of all of that have huge implications for the music industry going forward. Jatin Chowdhury's machine learning experiment escaped from the lab in 2019, and has since taken over the world. You can use his code (and derivatives thereof) for free, in guitar plugins that are available on all major audio platforms and on all major hardware platforms, for free, and get access to a huge library of community-developed models for those plugins which are also free. All of which sound better than $1000+ stompboxes. All of which runs on a hardware platform that costs less than $150, when you use PiPedal! And sounds beter than other commercial digital amp simulations running on hardware costing thousands of dollars more. + +## How PiPedal Fits Into All of This + +PiPedal as first conceived, was a Pandemic Project that I wrote to explore better ways to do amp simulations. At that time, Guitarix was the go-to solution for open-source amp emulations. But as a player, I was not at all satisfied with any of the available digital amp simulation technologies. Nor was I particularly impressed by commercial digital amp simulations, which, while they often sounded somewhat +like the amp that were being simulated, but often felt cold and lifeless and unpleasant to play. That was somewhat overtaken by the release of ML libraries, which do provide much better amp simulations than the line of research I was pursuing at the time. But PiPedal was completely overtaken by the NAM revolution. + +And, of course, somewhere along the line of development (after including an ML-based amp simulator, but before including support for NAM), it became more and more clear to me that PiPedal was becoming something quite extraordinary. It had vastly exceeded my personal expectations, and I felt that I had a duty (not a word used lightly) to share it with the world. So I released it as open source software, and have been sharing it with the world ever since. Yes, it has gone through a lot of polishing and refinement. +As a professional software developer, I have standards for the software I write; and I have been working hard to make sure that PiPedal is a product that meets those standards. As a professional developer, it has to be product that I can confidently associate my name with. All that to say, that it didn't neccesarily start out that way, but it has evolved into something that I am proud of, something that seems strangely larger on the inside than it is on the outside, and something that I am happy to share with the world. + +Currently, the heart and soul of PiPedal is the open-source work of Jatin Chowdhury and Steven Atkinson, and the incredible community of developers who have built on their work to create the plugin code and models that run on PiPedal. Credit where credit is due. Pipedal would not be what it is without the open-source contributions of these people. And the folks at Tone3000.com, who have done an amazing job of making it easy to find and download high-quality NAM models, and to create your own NAM models from captures of your own amps and pedals. And, of course, Mike Oliphant, whose NeuralAudio library provides a highly-optimized implementation of the NAM A1 algorithms that allow NAM A1 models to be used on a Raspberry Pi 4. + + +PiPedal 2.0 is a major new release that completes the transition to NAM-based amp simulations (and picks up NAM A2 support as bonus). The Factory Presets are now all based on NAM A2 models, and a small selection of NAM A2 models are pre-installed and ready to use. The updated TooB Neural Amp Modeler plugin, which provides support for both NAM A1 and A2 models, is bundled with PiPedal. And the ability to download NAM A2 models directly from Tone3000.com's web services is built into the TooB Neural Amp Modeler plugin as well. + +In the end, what really counts in a guitar stomp box is the amp emulations, and how good they are. On Pipedal, thanks to Jatin Chowdhury's escaped monster, they are very good indeed. And thanks to Steven Atkinson's amazing NAM A2 technology, Pipedal is a platform for running the best amp simulations in the world, on a Raspberry Pi or Ubuntu AMD64/x86-64 computer, using a phone or tablet to control the PiPedal server (for which I would like to take a little bit of credit). + + +-------- +[<< What PiPedal Is](WhatPiPedalIs.md) | [Up](Documentation.md) | [How to Use PiPedal >>](HowToUsePiPedal.html) diff --git a/docs/ReleaseNotes.md b/docs/ReleaseNotes.md index d155f47..6c8f0ee 100644 --- a/docs/ReleaseNotes.md +++ b/docs/ReleaseNotes.md @@ -1,19 +1,19 @@ # Release Notes -## PiPedal 2.0.102 Alpha +## PiPedal 2.0.103 -PiPedal 2.0 provides support for Neural Amp Modeler A2 models. +PiPedal 2.0 is a big release, with exciting new features, improvements, and bug fixes. -NAM A2 provides significant improvements in sound quality and performance compared to NAM A1. NAM A2 also provides "Slimable" models. Slimmable models provide multiple levels of performance and sound quality in a single model file, allowing you to choose the level of performance and sound quality that best suits your needs. This is particularly useful for users of Raspberry Pi 4, since NAM A2 models can provide better sound quality than NAM A1 models, while consuming significantly less CPU resources. +The headline feature of PiPedal 2.0 is support for TooB Neural Amp Modeler A2 models. TooB Neural Amp Modeler A2 models provide significant improvements in sound quality and performance compared to NAM A1 models, while consuming significantly less CPU resources. This is particularly important for users of Raspberry Pi 4, since NAM A2 models can provide better sound quality than NAM A1 models, while consuming significantly less CPU resources. A new integrated Tone3000 model downloader provides a convenient way to download the latest NAM A2 models and IIR files from Tone3000 directly to the PiPedal server. All existing NAM A1 models on Tone3000 have been retrained for NAM A2. When you download from Tone3000 using the integrated downloader, you will get NAM A2 models. Just click on the DOWNLOAD MODELS FROM TONE3000 button. Currently, the best way to get access to NAM A2 models is via the integrated Tone3000 model downloader. Models downloaded externally from the Tone3000 website will still be NAM A1 models; however this should change soon with a forthcoming announcement from Tone3000. -A new channel routing dialog replaces the channel configurationg dialog. The Channel Routing dialog allows global (i.e. not per-preset) configuration of audio channels. You can now configure audio channels as Aux channels (e.g. using the non-guitar channel on your audio interface as an input for backing tracks), or sending unprocessed guitar input signal to an unused output channel for re-amping in a DAW or external hardware. Refer to the (?) help dialog in the Channel Routing Dialog for more information on how to use this feature. +PiPedal 2.0 has a (long overdue) new Factory Presets bank. These are also the set of presets that are included in the Default Bank when performing a clean install of PiPedal 2.0. The new Factory Presets are built around a small selection of NAM A2 models that show off the improved sound quality and performance of NAM A2. And a small selection of NAM A2 models are also bundled with PiPedal. -PiPedal 2.0 can now be installed as a Progressive Web Application (PWA). This allows you to launch Pipedal from your desktop as a native desktop application, without extra browser address bars and window decorations. +PiPedal 2.0 can now be installed as a Progressive Web Application (PWA). This allows you to launch Pipedal from your desktop as a native desktop application, without extra browser address bars and window decorations. This provides a much nicer experience when using PiPedal from a Windows or Apple device. ### Features @@ -27,18 +27,24 @@ PiPedal 2.0 can now be installed as a Progressive Web Application (PWA). This al - Install PiPedal as a Progressive Web Application (PWA), which allows you to launch PiPedal from your desktop as a native desktop application. (A nice feature if you are accessing Pipedal from an Apple device). +- New Factory Presets bank, with new presets that show off the improved sound quality and performance of NAM A2 models. + - New TooB Tone plugin: a simple one-knob tone control. The new TooB Tone plugin provides a simple one-knob tone control that can be used to adjust the overall tone of your guitar signal. It is a great tool for quickly shaping your tone without having to use a more complex EQ plugin. - Copy and Paste plugins (and their settings) between pedalboards. Accessible via the "Copy Plugin" and "Paste Plugin" menu items in the former Plugin Preset selector menu. ### Minor features and bug fixes +- Runtime detection and use of AVX extensions for TooB plugins. Reduces CPU use of TooB NAM by 50% on most x86_64/amd64 computers. + - Better handling of step sizes in numeric edit controls. -- Short names of TooB CE-2 Chorus and TooB BF-2 Flanger changed to "TooB Chorus" and "TooB Flanger", repsectively. - - Split controls now support double-tap to reset to a default value. (Other controls already support this feature). +- Many small tweaks and improvements to the Pipedal user interface. + + + ## PiPedal 1.5.99 Beta ### Bug Fixes diff --git a/docs/Snapshots.md b/docs/Snapshots.md index 1450b84..0e25022 100644 --- a/docs/Snapshots.md +++ b/docs/Snapshots.md @@ -29,15 +29,11 @@ Note how PiPedal has been configured to use banks as containers for songs -#### Accessing Snapshots in the PiPedal User Interface. +#### Creating Snapshots in the PiPedal User Interface. -You can create, modify, and select snapshots in two places in the PiPedal user interface. +You can create, modify, and select snapshots in the main PiPedal preset editor. -The first is via the Snapshot icon button in the middle row of controls in the main page of pipedal. It's the button that looks like a camera. The second is via the Performance View, which is accessible via the Performance View menu entry in the main PiPedal menu. - -It's easier to create an initial set of snapshots from the main PiPedal page. You edit the current controls of the current preset, and you can then save current control values to a snapshot by first pressing the Snapshots icon button (the camera icon), and then pressing the Save button for a particular snapshot in the popup dialog. - -On the other hand, you may find it easier to edit an existing set of snapshots from the Performance View. When you click the Edit button for a particular snapshot, PiPedal displays the Snapshot Editor which allows you to edit the control values for that snapshot directly. +Click on the Snapshot icon button in the middle row of controls in the main page of pipedal. It's the button that looks like a camera. @@ -45,12 +41,10 @@ On the other hand, you may find it easier to edit an existing set of snapshots f As a general rule, it's best to get the structure (which plugins are loaded, and how they are connected together) settled before you start creating snapshots. If you change the structure of a preset, it may affect snapshots that belong to that preset. -Each preset has its own set of preset control settings which are independent of the control settings in each snapshot. But all share the same plugin structure (which plugins are loaded, and how they are connected together). - -When you click the edit button in the Performance View, you are editing control settings associated with the snapshot. When you press the back button from the snapshot editor, control settings for that snapshot are saved immediately. Saved control settings for the preset are not modified. You can avoid saving snapshot control settings by pressing the Cancel icon button (X) at the end of the toolbar for the snapshot editor. You cannot change the structure of the plugins in the preset to which snapshots belong from within the Snapshot editor. Nothing you do in the snapshot editor will affect the saved control values for the currently loaded preset. - - Things are different when you are editing presets in the main PiPedal page. Changes to preset controls are not saved until you press the Save button. And you can make structural changes. When you make structural changes to the preset, you may also affect the control settings included in each snapshot. You can move plugins around freely. Snapshot controls will still apply to the plugin even if it has moved. But if you remove a plugin, the settings for that plugin in each snapshot will be removed. Even if you re-add a new instance of of the same plugin, settings in snapshots will not be remembered. And if you add a plugin, selecting a snapshot will set controls for the new plugin to default values (not the values of the controls in the main preset). So as a general rule, it's best to get the structure of a preset more-or-less settled before you start creating snapshots. +Each snapshot has its own set of preset control settings which are independent of the control settings in each snapshot. But all share the same plugin structure (which plugins are loaded, and how they are connected together). +If you make structural changes to a preset that add a new plugin, there will not be control settings for the new plugins in any of the snapshots (they will default to the values of the controls in the main preset, or whichever snapshot was last loaded, which may lead to unexpected results when switching between snapshots). You can actually re-order plugins within a preset, or remove plugins without affecting the control settings in a snapshot. But if you add a new plugin, there will be no saved values for the controls of the new plugin in each of the snapshots. If you do add a new plugin, it would be a good idea to go through each of the snapshots, and resave them to make sure that control settings for each of the snapshots are what you expect them to be. + -------- -[<< Using TooB Neural Amp Modeler](UsingNAM.md) | [Up](Documentation.md) | | [Choosing a USB Audio Adapter >>](ChoosingAUsbAudioAdapter.md) +[<< How to Build Presets With PiPedal](BuildingPresets.md) | [Up](Documentation.md) | [Neural Amp Modeler Calibration >>](NamCalibration.md) diff --git a/docs/SystemRequirements.md b/docs/SystemRequirements.md index 6aeb358..fea9aae 100644 --- a/docs/SystemRequirements.md +++ b/docs/SystemRequirements.md @@ -14,7 +14,7 @@ page_icon: img/Requirements2.jpg * PiPedal will also run well on a Raspberry Pi 4. * A Raspberry Pi 3 (or equivalent SBC) can run PiPedal, but may struggle to keep up. Not recommended. * At least 2GB of RAM (4GB recommended). -* To compile PiPedal from source, at least 8GB of RAM is required. +* To compile PiPedal from source, at least 8GB of RAM is required (16GB recommended). ### Audio System Requirements: * On Raspberry Pi's, you will need an external USB Audio Adapter, or a Pi audio hat with at least one audio input. You cannot use the built-in audio inputs and outputs. @@ -44,7 +44,7 @@ You should not run Pipedal using a browser on the same machine that is running t The Pipedal server does update itself automatically (it prompts for permission from the browser interface if there is an update available). However, it does not take care of Operating System updates. You should make sure to keep your OS up to date, and to install security updates as they become available. You will need to do that yourself from a commandline terminal, or using a desktop environment on the machine running the PiPedal server. -You may find it much easier to set up and maintain your PiPedal server if you enable SSH access on the server machine. +You may find it much easier to set up and maintain your headless PiPedal server if you enable SSH access on the server machine, and even easier if you install a graphical desktop that you can access remotely using VNC or RDP. ### Older Versions of PiPedal @@ -55,5 +55,5 @@ Older versions of PiPedal (v1.1.31) have been tested on the following operating -------- -[<< Changing the Web Server Port](AboutPiPedal.md) | [Up](Documentation.md) | [Installing PiPedal >>](Installing.md) +[Up](Documentation.md) | [Installing PiPedal >>](Installing.md) diff --git a/docs/WhatPiPedalIs.md b/docs/WhatPiPedalIs.md new file mode 100644 index 0000000..dda35b2 --- /dev/null +++ b/docs/WhatPiPedalIs.md @@ -0,0 +1,45 @@ +--- +page_icon: img/PiPedal20Thumb.jpg +--- +## What PiPedal Is + +{% include pageIcon.html %} + +PiPedal is a Linux-based guitar effects processor—a "stomp box"—that is designed to run on a Raspberry Pi, or a small AMD64/x86-64 micro-PC running Ubuntu. It provides a web-based user interface that you can access from any modern web browser on the same network as the PiPedal server. + +PiPedal is built around Neural Amp Modeler (NAM) A1 and A2 guitar amp simulation technology, which provide the best amp simulations in the world, bar none. Sounds like the real thing; and feels like the real thing when you play! + +Small computers like a Raspberry Pi 4, or a small N150-class micro-PC provide more processing power than commercial guitar stomp boxes costing thousands of dollars more. PiPedal takes advantage of that processing power to provide state-of-the-art NAM A2 guitar amp simulations. Up to three NAM A2 models can be run simultaneously on a Raspberry Pi 4, and up to seven NAM A2 models can be run simultaneously on a Pi 5, or an N150-class micro-PC. (Even more if you use the Threading feature of Toob Neural Amp Modeler). All with plenty of processing power left over for running additional guitar plugins within the same preset. + +PiPedal is designed to be easy to use whether you are at home, or performing onstage, or in a studio. Configure the PiPedal server to automatically start a Wi-Fi hotspot whenever it is unable to see your home Wi-Fi network, and you can confidently use PiPedal when you are on the road, even though you don't have a shared Wi-Fi connection with the PiPedal server! The [PiPedal Android Remote](https://play.google.com/store/apps/details?id=com.twoplay.pipedal) provides one-click access to your PiPedal server on your Android phone or tablet whenever you are on the same Wi-Fi network, and will automatically connect to the PiPedal server Hotspot whenever you are away from home. + +The PiPedal Remote Android app allows you to quickly connect to your PiPedal server no matter where you are. + +PiPedal allows installation of the Pipedal client as a Progressive Web App (PWA). This allows you to use PiPedal as a native application on your Windows or Apple desktop or laptop, without the unnecessary clutter of browser-hosted web applications. + + +Major features of PiPedal include: + +- Stable ultra-low-latency audio processing on the Pipedal server. +- Direct support for Neural Amp Modeler (NAM) A1 and A2 guitar simulations, providing the best amp simulations in the world, all running on a Raspberry Pi or Ubuntu AMD64/x86-64computer. +- Support for direct downloads of NAM A2 models from Tone3000.com's web services. +- A web-based user interface that can be accessed from any modern web browser on the same network as the PiPedal server. +- A UI designed specifically for use on small form-factor touch devices like phones and tablets (although it works equally well in desktop browsers). +- A suite of 26 bundled effects from the TooB effect plugin bundle, specifically designed for use as guitar effects that provide out-of-the-box functionality required to build most guitar effect signal chains. +- The TooB Convolution Reverb provides dramatic and accurate reverb effects based on recordings of real spaces, along with a powerful set +of controls that allow you to shape reverb IRs to your exact preference. +- Support for most LV2 guitar effect plugins, including support for LV2 plugins that have MOD web interfaces. +- Support for MIDI control of PiPedal parameters from external MIDI controllers, or MIDI floorboards, via USB or Bluetooth connections. +- A brand new set of NAM A2-based Factory Presets, and a small selection of NAM A2 models pre-installed and ready to use. +- A Progressive Web App (PWA) implementation that allows you to install PiPedal as a native application (without associated browser controls) on a Windows or Apple computer. +- An auto Hotspot on the PiPedal server that starts up whenever the Pipedal server is unable to connect to your home network. This allows you to confidently use PiPedal when you are gigging or in the studio, even though you don't have a shared Wi-Fi connection with the PiPedal server. +- The [PiPedal Remote Android app](https://play.google.com/store/apps/details?id=com.twoplay.pipedal) provides one-click access to the PiPedal server on your Android phone or tablet whenever you are on the same Wi-Fi network, and will automatically search for and connect to the PiPedal server Hotspot when you are not at home. +- Up to six snapshots per preset, which allow you to build flexible presets that can be reconfigured on the fly during a live performance. +- A Performance View, which provides a minimal interface for easy and efficient use of PiPedal on stage. + +PiPedal started as a Pandemic Project labor of love, but has evolved into the solution of choice for running live guitar effects in performance on Linux, in no small part due to contributions made by other open-source developers like Jatin Chowdhury, Steven Atkinson and Mike Oliphant. + +PiPedal is open-source software released under an MIT license. You can download the source code, and contribute to the project, on GitHub: [https://github.com/rerdavies/pipedal](https://github.com/rerdavies/pipedal). If you would like to sponsor further development of PiPedal, you can do so via [PiPedal's GitHub Sponsorship page](https://github.com/sponsors/rerdavies). + +-------- +[<< Configuring PiPedal After Installation](Configuring.md) | [Up](Documentation.md) | [Machine Learning in PiPedal (A History)](PiPedalHistory.md) diff --git a/docs/_includes/gallery.html b/docs/_includes/gallery.html index d0dfefb..f480dcf 100644 --- a/docs/_includes/gallery.html +++ b/docs/_includes/gallery.html @@ -4,19 +4,17 @@ let galleryPath = "gallery/"; let images = [ "dark-sshot1.png", - "jazz.png", - "midi-bindings.png", - "hotspot.png", - "thunder.png", "rig.jpg", + "nam_models.png", + "hotspot.png", + "midi-bindings.png", ]; let captions = [ "PiPedal Guitar Effects Pedal running on a Raspberry Pi.", - "Control via browser, phone or tablet", + "Stage Rig", + "Download NAM A2 Models from Tone3000.com", + "Easy Wi-Fi hotspot configuration (Raspberry Pi only)", "Bind controls to midi messages.", - "Easy Wi-Fi hotspot configuration.", - "Neural Net amp models", - "Stage rig." ]; let maxWidth = 680; diff --git a/docs/_includes/header.html b/docs/_includes/header.html index 59c121a..c8721f4 100644 --- a/docs/_includes/header.html +++ b/docs/_includes/header.html @@ -37,6 +37,9 @@ } + LI { + margin-bottom: 0.5em; + } .header-offset { display: block; height: 54px; diff --git a/docs/download.md b/docs/download.md index d2497b6..999850b 100644 --- a/docs/download.md +++ b/docs/download.md @@ -1,13 +1,13 @@ ## Download -# Download PiPedal 2.0.102-alpha +# Download PiPedal 2.0.103-alpha Download the most recent Debian (.deb) package for your platform: -- [Raspberry Pi OS bookworm (aarch64) v2.0.102 Alpha](https://github.com/rerdavies/pipedal/releases/download/v2.0.102/pipedal_2.0.102_arm64.deb) -- [Ubuntu 24.x, 25.04 (aarch64) v2.0.102 Alpha](https://github.com/rerdavies/pipedal/releases/download/v2.0.102/pipedal_2.0.102_arm64.deb) -- [Ubuntu 24.x, 25.04 (amd64/x86_64) v2.0.102 Alpha](https://github.com/rerdavies/pipedal/releases/download/v2.0.102/pipedal_2.0.102_amd64.deb) +- [Raspberry Pi OS bookworm (aarch64) v2.0.103 Alpha](https://github.com/rerdavies/pipedal/releases/download/v2.0.103/pipedal_2.0.103_arm64.deb) +- [Ubuntu 24.x, 25.04 (aarch64) v2.0.103 Alpha](https://github.com/rerdavies/pipedal/releases/download/v2.0.103/pipedal_2.0.103_arm64.deb) +- [Ubuntu 24.x, 25.04 (amd64/x86_64) v2.0.103 Alpha](https://github.com/rerdavies/pipedal/releases/download/v2.0.103/pipedal_2.0.103_amd64.deb) Install the package by running @@ -15,7 +15,7 @@ Install the package by running ``` sudo apt update cd ~/Downloads - sudo apt install ./pipedal_2.0.102_arm64.deb + sudo apt install ./pipedal_2.0.103_arm64.deb # or ... _amd64.deb as appropriate for your platform ``` The message about missing permissions given by `apt` is diff --git a/docs/gallery/channel-routing.png b/docs/gallery/channel-routing.png new file mode 100644 index 0000000..e93eb20 Binary files /dev/null and b/docs/gallery/channel-routing.png differ diff --git a/docs/gallery/dark-sshot1.png b/docs/gallery/dark-sshot1.png index 8933320..8ccc7bd 100644 Binary files a/docs/gallery/dark-sshot1.png and b/docs/gallery/dark-sshot1.png differ diff --git a/docs/gallery/hotspot.png b/docs/gallery/hotspot.png index 588a8b2..e381089 100644 Binary files a/docs/gallery/hotspot.png and b/docs/gallery/hotspot.png differ diff --git a/docs/gallery/midi-bindings.png b/docs/gallery/midi-bindings.png index 4a51356..058183c 100644 Binary files a/docs/gallery/midi-bindings.png and b/docs/gallery/midi-bindings.png differ diff --git a/docs/gallery/nam_models.png b/docs/gallery/nam_models.png new file mode 100644 index 0000000..b9aa84b Binary files /dev/null and b/docs/gallery/nam_models.png differ diff --git a/docs/gallery/tuner.png b/docs/gallery/tuner.png new file mode 100644 index 0000000..942bde0 Binary files /dev/null and b/docs/gallery/tuner.png differ diff --git a/docs/img/BuildingPresets_thumb.png b/docs/img/BuildingPresets_thumb.png new file mode 100644 index 0000000..9f76005 Binary files /dev/null and b/docs/img/BuildingPresets_thumb.png differ diff --git a/docs/img/PiPedal20Thumb.jpg b/docs/img/PiPedal20Thumb.jpg new file mode 100644 index 0000000..37f0e5e Binary files /dev/null and b/docs/img/PiPedal20Thumb.jpg differ diff --git a/docs/img/ServerClient_thumb.jpg b/docs/img/ServerClient_thumb.jpg new file mode 100644 index 0000000..7a9326c Binary files /dev/null and b/docs/img/ServerClient_thumb.jpg differ diff --git a/docs/img/chevron_left.svg b/docs/img/chevron_left.svg index 2d083eb..a5ac8cc 100644 --- a/docs/img/chevron_left.svg +++ b/docs/img/chevron_left.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/img/chevron_right.svg b/docs/img/chevron_right.svg index e59de71..aa3f008 100644 --- a/docs/img/chevron_right.svg +++ b/docs/img/chevron_right.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/img/pipedal.png b/docs/img/pipedal.png index 2d425dc..eed7733 100644 Binary files a/docs/img/pipedal.png and b/docs/img/pipedal.png differ diff --git a/docs/index.md b/docs/index.md index 86a16ea..b57e7de 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,66 +5,47 @@

PiPedal Guitar Effects Processor

A Raspberry Pi-based stomp box designed to be controlled from a phone or tablet.

-
-
-

Announcing PiPedal 2.0

-

- The first public preview release of Pipedal version 2.0.102-alpha is now available! -

- -

This release includes

- -
    -
  • - Support for Neural Amp Modeler A2 models—the next generation of the ground-breaking - Neural Amp Modeler technology.
  • -
  • - Integration with Tone3000.com services for easy downloading of Neural Amp Modeler A2 models and IIRs.
  • -
  • - A new Channel Routing dialog for global routing of auxiliary input channels, and unprocessed re-amp output channels.
  • -
  • Install Pipedal as a Progressive Web Application (PWA), which allows you to launch Pipedal from your desktop as a native desktop application. (A nice feature if you are accessing Pipedal from an Apple device).
  • -
  • - Many other minor features, improvements, and bug fixes.
  • -
- -

For more information, and to download PiPedal v2.0.102-alpha click here. -

-
-
- -_To download PiPedal v1.5.99, click [*here*](download.md). +_To download PiPedal v2.0.102, click [*here*](download.md). To view PiPedal documentation, click [*here*](Documentation.md)._ -Use your Raspberry Pi as a guitar effects pedal. Configure and control PiPedal with your phone or tablet. +Use your Raspberry Pi, or Ubuntu amd/x86-64 computer as a guitar effects pedal. Configure and control PiPedal remotedly, with your phone or tablet, or via a web browser. + PiPedal running on a Raspberry Pi 4 or Pi 5 provides stable super-low-latency audio via external USB audio devices, or internal Raspberry Pi audio hats. -PiPedal will also run on Ubuntu 24.x or later (amd64/x86-64 and aarch64). Make sure you follow the [Ubuntu post-install +PiPedal runs on Raspbery Pi OS (Bookworm or Trixie), or Ubuntu 24.x or later (amd64/x86-64 and aarch64). Make sure you follow the [Ubuntu post-install instructions](https://rerdavies.github.io/pipedal/Configuring.html) to make sure your Ubuntu OS is using a realtime-capable kernel. {% include gallery.html %} -PiPedal includes state-of-the-art AI-based guitar amp emulation plugins based on the famous Neural Amp Modeler (NAM) and ML libraries which provide amp modelling that will blow your mind. +New in PiPedal v2.0: + +- Support for Neural Amp Modeler (NAM) A2 models. +- Direct single-step downloads of NAM A2 models to the Pipedal server using web services provided by Tone3000.com. +- Install PiPedal as a Progressive Web App (PWA) on your Windows or Apple desktop or laptop in order to run PiPedal as a native application, without the clutter of browser chrome, address bars, and needless decorations. +- A new Channel Routing dialog which allows you to pass through Auxilliary audio channels, or unprocessed guitar inputs for later re-amping in a DAW or external hardware. +- New NAM A2-based Factory Presets, and a small selection of NAM A2 models pre-installed and ready to use. + +PiPedal includes state-of-the-art AI-based guitar amp emulation, using the TooB Neural Amp Modeler technology. And PiPedal 2.0 now includes support for the brand new NAM A2 technology, which provides event more accurate amp simulations than NAM A1, while using even less CPU. Experience the ground-breaking quality of NAM A2 models now, with PiPedal's low-latency audio engine running on your Raspberry Pi or Ubuntu computer. + +NAM changes everything! The quality of NAM A1 and A2 models is better than than amp emulations on top-of-the-line commercial guitar stomp boxes costing thousands of dollars. Simulations that not only sound like the real thing, but also respond to your playing dynamics in the same way as the real amp. + +PiPedal 2.0 integrates with Tone3000.com's web services, allowing you to directly install new NAM A2 models on the pipedal server without ever leaving the PiPedal user interface. Or download and install commercially-developed NAM models from a rich ecosystem of model providers. + {% include demo.html %} PiPedal can be remotely controlled via a web interface over Ethernet, or Wi-Fi. If you don't have access to a Wi-Fi router, PiPedal can be configured to start a Wi-Fi hotspot automatically, whenever your Raspberry Pi can't connect to your home network. -Install the [PiPedal Remote Android app](https://play.google.com/store/apps/details?id=com.twoplay.pipedal) to get one-click access to PiPedal via Wi-Fi networks, or Wi-Fi hotspots. If you are using PiPedal away from home, you can configure PiPedal to automatically start a Wi-Fi hotspot on your Raspberry Pi -whenever Pipedal is unable to detect your home network. The PiPedal Client Android app will allow to connect by simply launching the app, whether you are at home, or using a Wi-Fi auto-hotspot at a gig, when away from home. +Install the [PiPedal Remote Android app](https://play.google.com/store/apps/details?id=com.twoplay.pipedal) to get one-click access to PiPedal via Wi-Fi networks, or Wi-Fi hotspots. If you are using PiPedal away from home, you can configure PiPedal to automatically start a Wi-Fi hotspot whenever Pipedal is unable to detect your home network (Raspberry Pi OS only). The PiPedal Client Android app will allow to connect by simply launching the app, whether you are at home, or using a Wi-Fi auto-hotspot at a gig, when away from home. PiPedal's user interface has been specifically designed to work well on small form-factor touch devices like phones or tablets. Clip a phone or tablet on your microphone stand on stage, and you're ready to play! Or connect via a desktop browser, for a slightly more luxurious experience. The PiPedal user-interface adapts to the screen size and orientation of your device, providing easy control of your guitar effects across a broad variety devices and screen sizes. -PiPedal includes a pre-installed selection of LV2 plugins from the ToobAmp collection of plugins; but it works with most LV2 Audio plugins. There are literally hundreds of free high-quality LV2 audio plugins that will work with PiPedal. Just install them on your Raspberry Pi, and they will show up in PiPedal. +PiPedal includes a pre-installed selection of LV2 plugins from the ToobAmp collection of plugins; but it works with most LV2 Audio plugins. There are literally hundreds of free high-quality LV2 audio plugins that will work with PiPedal. Just install them on your Raspberry Pi, and they will show up in PiPedal. If your USB audio adapter has MIDI connectors, you can use MIDI devices (keyboards, controllers, or midi floor boards) to control PiPedal while performing. A simple interface allows you to select how you would like to bind PiPedal controls to midi messages. diff --git a/lv2/aarch64/ToobAmp.lv2/CabIR.ttl b/lv2/aarch64/ToobAmp.lv2/CabIR.ttl index fb291dc..9955a98 100644 --- a/lv2/aarch64/ToobAmp.lv2/CabIR.ttl +++ b/lv2/aarch64/ToobAmp.lv2/CabIR.ttl @@ -93,7 +93,7 @@ cabir:impulseFile3 doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ TooB Cab IR is a convolution-based guitar cabinet impulse response simulator. diff --git a/lv2/aarch64/ToobAmp.lv2/CabSim.ttl b/lv2/aarch64/ToobAmp.lv2/CabSim.ttl index bcebaa0..bf1639c 100644 --- a/lv2/aarch64/ToobAmp.lv2/CabSim.ttl +++ b/lv2/aarch64/ToobAmp.lv2/CabSim.ttl @@ -50,10 +50,10 @@ toob:frequencyResponseVector doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; mod:brand "TooB"; - mod:label "TooB CabSim"; + mod:label "Cab Simulator"; lv2:requiredFeature urid:map ; lv2:optionalFeature lv2:hardRTCapable; pipedal_patch:readable diff --git a/lv2/aarch64/ToobAmp.lv2/ConvolutionReverb.ttl b/lv2/aarch64/ToobAmp.lv2/ConvolutionReverb.ttl index c214572..9f61125 100644 --- a/lv2/aarch64/ToobAmp.lv2/ConvolutionReverb.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ConvolutionReverb.ttl @@ -53,7 +53,7 @@ toobimpulse:impulseFile doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ Toob Convolution Reverb Stereo uses convolution reverb impulse/response files in order to produce highly @@ -151,7 +151,7 @@ Source: https://www.openair.hosted.york.ac.uk/?page_id=483 """ ; mod:brand "TooB"; - mod:label "TooB CReverb"; + mod:label "Conv Reverb"; lv2:requiredFeature urid:map; lv2:optionalFeature state::freePath, state:makePath, state:mapPath, work:schedule ; lv2:extensionData state:interface, work:interface; diff --git a/lv2/aarch64/ToobAmp.lv2/ConvolutionReverbStereo.ttl b/lv2/aarch64/ToobAmp.lv2/ConvolutionReverbStereo.ttl index f7b8887..cf116dd 100644 --- a/lv2/aarch64/ToobAmp.lv2/ConvolutionReverbStereo.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ConvolutionReverbStereo.ttl @@ -51,7 +51,7 @@ toobimpulse:impulseFile doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ @@ -149,7 +149,7 @@ Source: https://www.openair.hosted.york.ac.uk/?page_id=483 """ ; mod:brand "TooB"; - mod:label "TooB CReverb Stereo"; + mod:label "Conv Reverb"; lv2:requiredFeature urid:map; lv2:optionalFeature state::freePath, state:makePath, state:mapPath, work:schedule ; lv2:extensionData state:interface; diff --git a/lv2/aarch64/ToobAmp.lv2/InputStage.ttl b/lv2/aarch64/ToobAmp.lv2/InputStage.ttl index 93f3a61..54be35d 100644 --- a/lv2/aarch64/ToobAmp.lv2/InputStage.ttl +++ b/lv2/aarch64/ToobAmp.lv2/InputStage.ttl @@ -66,10 +66,10 @@ inputStage:filterGroup doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; mod:brand "TooB"; - mod:label "TooB Input"; + mod:label "Input"; lv2:requiredFeature urid:map ; lv2:optionalFeature lv2:hardRTCapable; diff --git a/lv2/aarch64/ToobAmp.lv2/PowerStage2.ttl b/lv2/aarch64/ToobAmp.lv2/PowerStage2.ttl index 3ed1166..08a87e8 100644 --- a/lv2/aarch64/ToobAmp.lv2/PowerStage2.ttl +++ b/lv2/aarch64/ToobAmp.lv2/PowerStage2.ttl @@ -68,7 +68,7 @@ pstage:stage3 doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; mod:brand "TooB"; mod:label "Power Stage"; diff --git a/lv2/aarch64/ToobAmp.lv2/SpectrumAnalyzer.ttl b/lv2/aarch64/ToobAmp.lv2/SpectrumAnalyzer.ttl index b6cedc6..b47807c 100644 --- a/lv2/aarch64/ToobAmp.lv2/SpectrumAnalyzer.ttl +++ b/lv2/aarch64/ToobAmp.lv2/SpectrumAnalyzer.ttl @@ -57,7 +57,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment "TooB spectrum analyzer" ; mod:brand "TooB"; diff --git a/lv2/aarch64/ToobAmp.lv2/ToneStack.ttl b/lv2/aarch64/ToobAmp.lv2/ToneStack.ttl index b368488..8d9dd45 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToneStack.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToneStack.ttl @@ -57,7 +57,7 @@ tonestack:eqGroup doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; uiext:ui ; diff --git a/lv2/aarch64/ToobAmp.lv2/Toob3BandEq.ttl b/lv2/aarch64/ToobAmp.lv2/Toob3BandEq.ttl index 9d46e87..cde4f14 100644 --- a/lv2/aarch64/ToobAmp.lv2/Toob3BandEq.ttl +++ b/lv2/aarch64/ToobAmp.lv2/Toob3BandEq.ttl @@ -52,7 +52,7 @@ toob:frequencyResponseVector doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; uiext:ui ; diff --git a/lv2/aarch64/ToobAmp.lv2/Toob3BandEqStereo.ttl b/lv2/aarch64/ToobAmp.lv2/Toob3BandEqStereo.ttl index 36581e2..dbf1cc2 100644 --- a/lv2/aarch64/ToobAmp.lv2/Toob3BandEqStereo.ttl +++ b/lv2/aarch64/ToobAmp.lv2/Toob3BandEqStereo.ttl @@ -52,7 +52,7 @@ toob:frequencyResponseVector doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; uiext:ui ; diff --git a/lv2/aarch64/ToobAmp.lv2/ToobAmpUI.so b/lv2/aarch64/ToobAmp.lv2/ToobAmpUI.so index 5cbfa44..67618dd 100755 Binary files a/lv2/aarch64/ToobAmp.lv2/ToobAmpUI.so and b/lv2/aarch64/ToobAmp.lv2/ToobAmpUI.so differ diff --git a/lv2/aarch64/ToobAmp.lv2/ToobChorus.ttl b/lv2/aarch64/ToobAmp.lv2/ToobChorus.ttl index d9a06b6..65dd013 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobChorus.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobChorus.ttl @@ -40,14 +40,14 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ Emulation of a Boss CE-2 Chorus. """ ; mod:brand "TooB"; - mod:label "TooB Chorus"; + mod:label "Chorus"; lv2:optionalFeature lv2:hardRTCapable; lv2:port diff --git a/lv2/aarch64/ToobAmp.lv2/ToobDelay.ttl b/lv2/aarch64/ToobAmp.lv2/ToobDelay.ttl index 45483d2..3adda2e 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobDelay.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobDelay.ttl @@ -41,14 +41,14 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ A straightforward no-frills digital delay. """ ; mod:brand "TooB"; - mod:label "TooB Delay"; + mod:label "Delay"; lv2:optionalFeature lv2:hardRTCapable; lv2:port diff --git a/lv2/aarch64/ToobAmp.lv2/ToobFlanger.ttl b/lv2/aarch64/ToobAmp.lv2/ToobFlanger.ttl index 7c9d368..93d8ed1 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobFlanger.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobFlanger.ttl @@ -41,14 +41,14 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ Emulation of a Boss BF-2 Flanger, based on circuit analysis and simulation of the original. """ ; mod:brand "TooB"; - mod:label "TooB Flanger"; + mod:label "Flanger"; lv2:optionalFeature lv2:hardRTCapable; lv2:port diff --git a/lv2/aarch64/ToobAmp.lv2/ToobFlangerStereo.ttl b/lv2/aarch64/ToobAmp.lv2/ToobFlangerStereo.ttl index a645e87..6a3d4c7 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobFlangerStereo.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobFlangerStereo.ttl @@ -41,7 +41,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ Digital emulation of a Boss BF-2 Flanger. @@ -52,7 +52,7 @@ should use the monophonic version of this effect. """ ; mod:brand "TooB"; - mod:label "TooB Flanger (Stereo)"; + mod:label "Flanger (Stereo)"; lv2:optionalFeature lv2:hardRTCapable; lv2:port diff --git a/lv2/aarch64/ToobAmp.lv2/ToobFreeverb.ttl b/lv2/aarch64/ToobAmp.lv2/ToobFreeverb.ttl index 2a2dba8..7f487be 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobFreeverb.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobFreeverb.ttl @@ -41,7 +41,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ Toob Freeverb is an Lv2 implementation of the famous Freeverb reverb effect. FreeVerb delivers a well-balanced reverb with very little tonal coloration. @@ -52,7 +52,7 @@ The TooB implementation is ported from the Synthesis Toolkit in C++ (STK), by Pe """ ; mod:brand "TooB"; - mod:label "TooB Freeverb"; + mod:label "Freeverb"; lv2:optionalFeature lv2:hardRTCapable; lv2:port diff --git a/lv2/aarch64/ToobAmp.lv2/ToobGraphicEq.ttl b/lv2/aarch64/ToobAmp.lv2/ToobGraphicEq.ttl index c5bb1f3..d1acefc 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobGraphicEq.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobGraphicEq.ttl @@ -41,7 +41,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ A 7 octave graphic equalizer, with frequencies chosen to be useful for EQ-ing guitar signals. """ ; diff --git a/lv2/aarch64/ToobAmp.lv2/ToobLooperFour.ttl b/lv2/aarch64/ToobAmp.lv2/ToobLooperFour.ttl index 58087e0..64b3eda 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobLooperFour.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobLooperFour.ttl @@ -92,7 +92,7 @@ myprefix:output_group doap:license ; doap:maintainer ; lv2:minorVersion 3 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; ui:ui ; diff --git a/lv2/aarch64/ToobAmp.lv2/ToobLooperOne.ttl b/lv2/aarch64/ToobAmp.lv2/ToobLooperOne.ttl index bdaa1c8..e4c2138 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobLooperOne.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobLooperOne.ttl @@ -78,7 +78,7 @@ myprefix:output_group doap:license ; doap:maintainer ; lv2:minorVersion 3 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; ui:ui ; diff --git a/lv2/aarch64/ToobAmp.lv2/ToobML.ttl b/lv2/aarch64/ToobAmp.lv2/ToobML.ttl index d70dfaa..b5bc605 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobML.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobML.ttl @@ -67,7 +67,7 @@ toobml:sagGroup doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ The TooB ML Amplifier plugin provides emulation of a variety of amplifiers and overdrive pedals that are implemented using neural-network-based machine learning models of real amplifiers. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobMix.ttl b/lv2/aarch64/ToobAmp.lv2/ToobMix.ttl index 1b28d78..47eb5da 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobMix.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobMix.ttl @@ -40,7 +40,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ Remix a stereo input signal. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobNeuralAmpModeler.ttl b/lv2/aarch64/ToobAmp.lv2/ToobNeuralAmpModeler.ttl index f1647f1..8153554 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobNeuralAmpModeler.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobNeuralAmpModeler.ttl @@ -74,7 +74,7 @@ toobNam:calibrationGroup doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ TooB Neural Amp Modeler is a neural network based Amp Simulator. It uses .nam model files that are generated by training nueral networks on audio recordings of actual guitar amps, effects pedals and other equipment. .nam files contain data from the trained models, which can be loaded into @@ -213,7 +213,7 @@ SOFTWARE. """ ; mod:brand "TooB"; - mod:label "TooB NAM"; + mod:label "NAM"; lv2:optionalFeature lv2:hardRTCapable; patch:readable diff --git a/lv2/aarch64/ToobAmp.lv2/ToobNoiseGate.ttl b/lv2/aarch64/ToobAmp.lv2/ToobNoiseGate.ttl index eb03c74..04803cb 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobNoiseGate.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobNoiseGate.ttl @@ -54,7 +54,7 @@ noisegate:envelope_group doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ A noise gate is an audio processing tool that controls the volume of an audio signal by allowing it to pass through only when it exceeds a set threshold. @@ -75,7 +75,7 @@ like guitar. """ ; mod:brand "TooB"; - mod:label "TooB Noise Gate"; + mod:label "Noise Gate"; lv2:optionalFeature lv2:hardRTCapable; diff --git a/lv2/aarch64/ToobAmp.lv2/ToobParametricEq.ttl b/lv2/aarch64/ToobAmp.lv2/ToobParametricEq.ttl index e4ed015..8aa8200 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobParametricEq.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobParametricEq.ttl @@ -87,7 +87,7 @@ parametric_eq:hfGroup doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; uiext:ui ; @@ -138,7 +138,7 @@ TooB Parametric EQ provides a flexible 4-band parametric studio EQ that is up th pg:group parametric_eq:filterGroup; lv2:default 21.000 ; - lv2:minimum 3.000 ; + lv2:minimum 1.000 ; lv2:maximum 21.000 ; lv2:portProperty epp:logarithmic; units:unit units:khz; diff --git a/lv2/aarch64/ToobAmp.lv2/ToobParametricEqStereo.ttl b/lv2/aarch64/ToobAmp.lv2/ToobParametricEqStereo.ttl index 8403db7..f2f0013 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobParametricEqStereo.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobParametricEqStereo.ttl @@ -87,7 +87,7 @@ toob-parametric-eq-stereo:hfGroup doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; uiext:ui ; @@ -138,7 +138,7 @@ TooB Parametric EQ provides a flexible 4-band parametric studio EQ that is up th pg:group toob-parametric-eq-stereo:filterGroup; lv2:default 21.000 ; - lv2:minimum 3.000 ; + lv2:minimum 1.000 ; lv2:maximum 21.000 ; lv2:portProperty epp:logarithmic; units:unit units:khz; diff --git a/lv2/aarch64/ToobAmp.lv2/ToobPhaser.ttl b/lv2/aarch64/ToobAmp.lv2/ToobPhaser.ttl index aa97129..46e1c27 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobPhaser.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobPhaser.ttl @@ -40,7 +40,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ A loose emulation of an MXR® Phase 90 Phaser. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobPlayer.ttl b/lv2/aarch64/ToobAmp.lv2/ToobPlayer.ttl index b2ec083..2381282 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobPlayer.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobPlayer.ttl @@ -60,7 +60,7 @@ toobPlayer:seek doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ Play audio files. Audio files can optionally be loooped by pressing the "Set loop" button. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobRecordMono.ttl b/lv2/aarch64/ToobAmp.lv2/ToobRecordMono.ttl index 849814b..cbda4dc 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobRecordMono.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobRecordMono.ttl @@ -51,7 +51,7 @@ recordPrefix:audioFile doap:license ; doap:maintainer ; lv2:minorVersion 3 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; ui:ui ; diff --git a/lv2/aarch64/ToobAmp.lv2/ToobRecordStereo.ttl b/lv2/aarch64/ToobAmp.lv2/ToobRecordStereo.ttl index ac8bbb9..951ac74 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobRecordStereo.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobRecordStereo.ttl @@ -88,7 +88,7 @@ myprefix:loop3_group doap:license ; doap:maintainer ; lv2:minorVersion 3 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; ui:ui ; diff --git a/lv2/aarch64/ToobAmp.lv2/ToobTone.ttl b/lv2/aarch64/ToobAmp.lv2/ToobTone.ttl index c3ef9df..347c18e 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobTone.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobTone.ttl @@ -43,7 +43,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ TooB Tone is a simple tone control. For more flexible EQ plugins, see TooB 3 Band Eq, or TooB Parameteric EQ. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobToneStereo.ttl b/lv2/aarch64/ToobAmp.lv2/ToobToneStereo.ttl index 967c17d..c5821c2 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobToneStereo.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobToneStereo.ttl @@ -43,7 +43,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ TooB Tone is a simple tone control. For more flexible EQ plugins, see TooB 3 Band Eq, or TooB Parameteric EQ. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobTremolo.ttl b/lv2/aarch64/ToobAmp.lv2/ToobTremolo.ttl index fdbe85e..4a89edb 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobTremolo.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobTremolo.ttl @@ -41,7 +41,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ A tremolo effect, equivalent to "vibrato" on vintage Fender tube amps. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobTremoloMono.ttl b/lv2/aarch64/ToobAmp.lv2/ToobTremoloMono.ttl index fa6608c..8a39deb 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobTremoloMono.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobTremoloMono.ttl @@ -41,7 +41,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ A tremolo effect, equivalent to "vibrato" on vintage Fender tube amps. diff --git a/lv2/aarch64/ToobAmp.lv2/ToobTuner.ttl b/lv2/aarch64/ToobAmp.lv2/ToobTuner.ttl index 94225d2..e24bf63 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobTuner.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobTuner.ttl @@ -19,6 +19,7 @@ @prefix urid: . @prefix xsd: . @prefix pipedalui: . +@prefix mod: . @prefix toobtuner: . @@ -35,12 +36,15 @@ a lv2:Plugin , lv2:AnalyserPlugin ; doap:name "TooB Tuner"; + mod:brand "TooB"; + mod:label "Tuner"; + uiext:ui ; doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ TooB Tuner is a chromatic guitar tuner. """ ; diff --git a/lv2/aarch64/ToobAmp.lv2/ToobVolume.ttl b/lv2/aarch64/ToobAmp.lv2/ToobVolume.ttl index 62452da..610a48a 100644 --- a/lv2/aarch64/ToobAmp.lv2/ToobVolume.ttl +++ b/lv2/aarch64/ToobAmp.lv2/ToobVolume.ttl @@ -39,7 +39,7 @@ doap:license ; doap:maintainer ; lv2:minorVersion 0 ; - lv2:microVersion 78 ; + lv2:microVersion 79 ; rdfs:comment """ Volume control. @@ -49,7 +49,7 @@ stereophonic signal. """ ; mod:brand "TooB"; - mod:label "TooB Volume"; + mod:label "Volume"; lv2:optionalFeature lv2:hardRTCapable; lv2:port diff --git a/lv2/aarch64/ToobAmp.lv2/bin/ToobAmp-a72.so b/lv2/aarch64/ToobAmp.lv2/bin/ToobAmp-a72.so index 3e2dba1..8c03ac1 100755 Binary files a/lv2/aarch64/ToobAmp.lv2/bin/ToobAmp-a72.so and b/lv2/aarch64/ToobAmp.lv2/bin/ToobAmp-a72.so differ diff --git a/lv2/aarch64/ToobAmp.lv2/bin/ToobAmp-a76.so b/lv2/aarch64/ToobAmp.lv2/bin/ToobAmp-a76.so index 76dcb77..88218fd 100755 Binary files a/lv2/aarch64/ToobAmp.lv2/bin/ToobAmp-a76.so and b/lv2/aarch64/ToobAmp.lv2/bin/ToobAmp-a76.so differ diff --git a/lv2/x86_64/toobamp_1.3.78_amd64.deb b/lv2/x86_64/toobamp_1.3.79_amd64.deb similarity index 64% rename from lv2/x86_64/toobamp_1.3.78_amd64.deb rename to lv2/x86_64/toobamp_1.3.79_amd64.deb index 2f6ba9b..4a68cba 100644 Binary files a/lv2/x86_64/toobamp_1.3.78_amd64.deb and b/lv2/x86_64/toobamp_1.3.79_amd64.deb differ diff --git a/src/AdminClient.cpp b/src/AdminClient.cpp index 55dadc4..35ead91 100644 --- a/src/AdminClient.cpp +++ b/src/AdminClient.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/AdminClient.hpp b/src/AdminClient.hpp index 5516c90..154f36e 100644 --- a/src/AdminClient.hpp +++ b/src/AdminClient.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/AdminMain.cpp b/src/AdminMain.cpp index 2bf2b09..bfb8b55 100644 --- a/src/AdminMain.cpp +++ b/src/AdminMain.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/AesDigest.hpp b/src/AesDigest.hpp index 8d122b2..ca74791 100644 --- a/src/AesDigest.hpp +++ b/src/AesDigest.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2026 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/AlsaDriver.cpp b/src/AlsaDriver.cpp index 2c4086b..d49a0b3 100644 --- a/src/AlsaDriver.cpp +++ b/src/AlsaDriver.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2024 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/AlsaDriver.hpp b/src/AlsaDriver.hpp index a6a2c15..f2401b2 100644 --- a/src/AlsaDriver.hpp +++ b/src/AlsaDriver.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/AlsaDriverTest.cpp b/src/AlsaDriverTest.cpp index 1550f48..938ce44 100644 --- a/src/AlsaDriverTest.cpp +++ b/src/AlsaDriverTest.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/AtomBuffer.hpp b/src/AtomBuffer.hpp index a3caaa9..36b1eee 100644 --- a/src/AtomBuffer.hpp +++ b/src/AtomBuffer.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2023 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/AtomConverter.cpp b/src/AtomConverter.cpp index 59c61e1..5e4b205 100644 --- a/src/AtomConverter.cpp +++ b/src/AtomConverter.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2023-2024 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/AtomConverter.hpp b/src/AtomConverter.hpp index d64094f..60dc270 100644 --- a/src/AtomConverter.hpp +++ b/src/AtomConverter.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2023 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/AtomConverterTest.cpp b/src/AtomConverterTest.cpp index b99316e..f0af685 100644 --- a/src/AtomConverterTest.cpp +++ b/src/AtomConverterTest.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/AudioConfig.hpp b/src/AudioConfig.hpp index 38ca20b..751d24b 100644 --- a/src/AudioConfig.hpp +++ b/src/AudioConfig.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/AudioDriver.hpp b/src/AudioDriver.hpp index f7a7f67..c8ccc76 100644 --- a/src/AudioDriver.hpp +++ b/src/AudioDriver.hpp @@ -1,7 +1,7 @@ /* * MIT License * -* Copyright (c) 2022 Robin E. R. Davies +* Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/AudioFileMetadata.cpp b/src/AudioFileMetadata.cpp index b39bf86..a7d191a 100644 --- a/src/AudioFileMetadata.cpp +++ b/src/AudioFileMetadata.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/AudioFileMetadata.hpp b/src/AudioFileMetadata.hpp index 583d2a4..e4f6cea 100644 --- a/src/AudioFileMetadata.hpp +++ b/src/AudioFileMetadata.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/AudioFileMetadataReader.cpp b/src/AudioFileMetadataReader.cpp index 760e98c..8bbdb46 100644 --- a/src/AudioFileMetadataReader.cpp +++ b/src/AudioFileMetadataReader.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/AudioFileMetadataReader.hpp b/src/AudioFileMetadataReader.hpp index 74cc107..201cd04 100644 --- a/src/AudioFileMetadataReader.hpp +++ b/src/AudioFileMetadataReader.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/AudioFiles.cpp b/src/AudioFiles.cpp index ec67e28..7ba4906 100644 --- a/src/AudioFiles.cpp +++ b/src/AudioFiles.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/AudioFiles.hpp b/src/AudioFiles.hpp index 132eb56..5683a92 100644 --- a/src/AudioFiles.hpp +++ b/src/AudioFiles.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/AudioFilesDb.cpp b/src/AudioFilesDb.cpp index c4c5b7c..3a096b9 100644 --- a/src/AudioFilesDb.cpp +++ b/src/AudioFilesDb.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/AudioFilesDb.hpp b/src/AudioFilesDb.hpp index 1f44ecb..4fc2e21 100644 --- a/src/AudioFilesDb.hpp +++ b/src/AudioFilesDb.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/AudioHost.cpp b/src/AudioHost.cpp index ec9e34e..92d618a 100644 --- a/src/AudioHost.cpp +++ b/src/AudioHost.cpp @@ -1,4 +1,4 @@ -// Copyright (c) Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // Copyright (c) Gabriel Hernandez // // Permission is hereby granted, free of charge, to any person obtaining a copy of @@ -1189,7 +1189,7 @@ private: std::vector *pOutputBuffers; pedalboard = this->realtimeActivePedalboard; pInputBuffers = &(audioDriver->MainInputBuffers()); - + pOutputBuffers = &(audioDriver->MainOutputBuffers()); if (pedalboard == nullptr || pInputBuffers->size() == 0 || pOutputBuffers->size() == 0) @@ -1255,60 +1255,79 @@ private: masterOutputBuffers[outputIx++] = audioDriver->GetDeviceOutputBuffer(nChannel); } } - inline void AccumulateVu(float*result, size_t nFrames, float*buffer) + inline void AccumulateVu(float *result, size_t nFrames, float *buffer) { float maxVal = *result; for (size_t i = 0; i < nFrames; ++i) { float v = std::fabs(buffer[i]); - if (v > maxVal) + if (v > maxVal) { maxVal = v; } } *result = maxVal; } - void AccumulateVuInputs(size_t nFrames,VuUpdateX&vuUpdate, const std::vector&channels) + void AccumulateVuInputs(size_t nFrames, VuUpdateX &vuUpdate, const std::vector &channels) { - if (channels.size() == 0) return; - - AccumulateVu(&vuUpdate.inputMaxValueL_,nFrames,this->audioDriver->DeviceInputBuffers()[channels[0]]); - - if (channels.size() == 2) { - AccumulateVu(&vuUpdate.inputMaxValueR_,nFrames,this->audioDriver->DeviceInputBuffers()[channels[1]]); - } - } - void AccumulateVuOutputs(size_t nFrames,VuUpdateX&vuUpdate, const std::vector&channels) - { - if (channels.size() == 0) return; - AccumulateVu(&vuUpdate.outputMaxValueL_,nFrames,this->audioDriver->DeviceOutputBuffers()[channels[0]]); - if (channels.size() >= 2) { - AccumulateVu(&vuUpdate.outputMaxValueR_,nFrames,this->audioDriver->DeviceOutputBuffers()[channels[1]]); - } - } - void ComputeMasterVus(size_t nFrames) { - if (this->realtimeVuBuffers) + if (channels.size() == 0) + return; + if (channels[0] == -1) // Indicates invalid channel router settings. { - float** audioBuffers; + vuUpdate.inputMaxValueL_ = 0; + vuUpdate.inputMaxValueR_ = 0; + return; + } - for (auto& vuUpdate: this->realtimeVuBuffers->vuUpdateWorkingData) + AccumulateVu(&vuUpdate.inputMaxValueL_, nFrames, this->audioDriver->DeviceInputBuffers()[channels[0]]); + + if (channels.size() == 2) + { + AccumulateVu(&vuUpdate.inputMaxValueR_, nFrames, this->audioDriver->DeviceInputBuffers()[channels[1]]); + } + } + void AccumulateVuOutputs(size_t nFrames, VuUpdateX &vuUpdate, const std::vector &channels) + { + if (channels.size() == 0) + return; + + if (channels[0] == -1) // Indicates invalid channel router settings. + { + vuUpdate.outputMaxValueL_ = 0; + vuUpdate.outputMaxValueR_ = 0; + return; + } + + AccumulateVu(&vuUpdate.outputMaxValueL_, nFrames, this->audioDriver->DeviceOutputBuffers()[channels[0]]); + if (channels.size() >= 2) + { + AccumulateVu(&vuUpdate.outputMaxValueR_, nFrames, this->audioDriver->DeviceOutputBuffers()[channels[1]]); + } + } + void ComputeMasterVus(size_t nFrames) + { + if (this->realtimeVuBuffers) + { + float **audioBuffers; + + for (auto &vuUpdate : this->realtimeVuBuffers->vuUpdateWorkingData) { - if (vuUpdate.instanceId_ < 0) + if (vuUpdate.instanceId_ < 0) { switch (vuUpdate.instanceId_) { - case Pedalboard::START_CONTROL_ID: - AccumulateVuInputs(nFrames, vuUpdate, pHost->GetChannelSelection().mainInputChannels()); - break; - case Pedalboard::END_CONTROL_ID: - AccumulateVuOutputs(nFrames, vuUpdate, pHost->GetChannelSelection().mainOutputChannels()); - break; - case Pedalboard::AUX_START_CONTROL_ID: - AccumulateVuInputs(nFrames, vuUpdate, pHost->GetChannelSelection().auxInputChannels()); - break; - case Pedalboard::AUX_END_CONTROL_ID: - AccumulateVuOutputs(nFrames, vuUpdate, pHost->GetChannelSelection().auxOutputChannels()); - break; + case Pedalboard::START_CONTROL_ID: + AccumulateVuInputs(nFrames, vuUpdate, pHost->GetChannelSelection().mainInputChannels()); + break; + case Pedalboard::END_CONTROL_ID: + AccumulateVuOutputs(nFrames, vuUpdate, pHost->GetChannelSelection().mainOutputChannels()); + break; + case Pedalboard::AUX_START_CONTROL_ID: + AccumulateVuInputs(nFrames, vuUpdate, pHost->GetChannelSelection().auxInputChannels()); + break; + case Pedalboard::AUX_END_CONTROL_ID: + AccumulateVuOutputs(nFrames, vuUpdate, pHost->GetChannelSelection().auxOutputChannels()); + break; } } } @@ -1905,7 +1924,6 @@ public: } } - virtual void SetBypass(uint64_t instanceId, bool enabled) { std::lock_guard guard(mutex); @@ -2067,7 +2085,7 @@ public: for (size_t i = 0; i < instanceIds.size(); ++i) { int64_t instanceId = instanceIds[i]; - std::shared_ptr& pedalboard = this->currentPedalboard; + std::shared_ptr &pedalboard = this->currentPedalboard; int64_t effectIndex = -1; if (pedalboard != nullptr) { @@ -2091,8 +2109,7 @@ public: instanceId == Pedalboard::START_CONTROL_ID || instanceId == Pedalboard::END_CONTROL_ID || instanceId == Pedalboard::AUX_START_CONTROL_ID || - instanceId == Pedalboard::AUX_END_CONTROL_ID - ) + instanceId == Pedalboard::AUX_END_CONTROL_ID) { auto index = GetRealtimeItemIndex(instanceId); VuUpdateX v; diff --git a/src/AudioHost.hpp b/src/AudioHost.hpp index 57e4e40..bc39c0f 100644 --- a/src/AudioHost.hpp +++ b/src/AudioHost.hpp @@ -1,4 +1,4 @@ -// Copyright (c) Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // Copyright (c) Gabriel Hernandez // // Permission is hereby granted, free of charge, to any person obtaining a copy of diff --git a/src/AutoLilvNode.cpp b/src/AutoLilvNode.cpp index dffb26a..009dd7d 100644 --- a/src/AutoLilvNode.cpp +++ b/src/AutoLilvNode.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2023 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/AutoLilvNode.hpp b/src/AutoLilvNode.hpp index b4d3ba9..9a37f8e 100644 --- a/src/AutoLilvNode.hpp +++ b/src/AutoLilvNode.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2023 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/AvahiService.cpp b/src/AvahiService.cpp index c88487d..d1155f5 100644 --- a/src/AvahiService.cpp +++ b/src/AvahiService.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/AvahiService.hpp b/src/AvahiService.hpp index ce7f607..6719e97 100644 --- a/src/AvahiService.hpp +++ b/src/AvahiService.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/AvahiServiceTest.cpp b/src/AvahiServiceTest.cpp index be76579..3842bd6 100644 --- a/src/AvahiServiceTest.cpp +++ b/src/AvahiServiceTest.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/Banks.cpp b/src/Banks.cpp index febc078..42de4a8 100644 --- a/src/Banks.cpp +++ b/src/Banks.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Banks.hpp b/src/Banks.hpp index 4522426..550bb78 100644 --- a/src/Banks.hpp +++ b/src/Banks.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in @@ -317,6 +317,12 @@ namespace pipedal bank.name(name); bank.instanceId(++nextInstanceId_); + if (afterId == -2) + { + entries_.insert(entries_.begin(), bank); + return bank.instanceId(); + + } for (size_t i = 0; i < this->entries_.size(); ++i) { if (entries_[i].instanceId() == afterId) diff --git a/src/BootConfig.cpp b/src/BootConfig.cpp index ba7adc2..5af3c79 100644 --- a/src/BootConfig.cpp +++ b/src/BootConfig.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2024 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/BootConfig.hpp b/src/BootConfig.hpp index 5e40329..2e9e6f2 100644 --- a/src/BootConfig.hpp +++ b/src/BootConfig.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2024 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/BufferPool.hpp b/src/BufferPool.hpp index ea2eeb3..ebe7054 100644 --- a/src/BufferPool.hpp +++ b/src/BufferPool.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/CapturePresetsMain.cpp b/src/CapturePresetsMain.cpp index 01d28a2..e3488d9 100644 --- a/src/CapturePresetsMain.cpp +++ b/src/CapturePresetsMain.cpp @@ -289,7 +289,7 @@ int main(int argc, const char *argv[]) storage->SetConfigRoot("/etc/pipedal/config"); storage->SetDataRoot("/var/pipedal"); - storage->Initialize(); + storage->Initialize(nullptr); const PluginPresetIndex &index = storage->GetPluginPresetIndex(); diff --git a/src/ChannelRouterSettings.cpp b/src/ChannelRouterSettings.cpp index 5a9dd79..c519c7b 100644 --- a/src/ChannelRouterSettings.cpp +++ b/src/ChannelRouterSettings.cpp @@ -17,7 +17,6 @@ // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - #include "ChannelRouterSettings.hpp" #include @@ -52,7 +51,7 @@ static uint64_t countChannels(const std::vector &channels) } return 2; } -} +} uint64_t ChannelRouterSettings::numberOfAudioInputChannels() const { @@ -71,75 +70,110 @@ uint64_t ChannelRouterSettings::numberOfAudioOutputChannels() const return countChannels(mainOutputChannels_); } -ChannelSelection::ChannelSelection(ChannelRouterSettings&settings) -: mainInputChannels_(settings.mainInputChannels()) -, mainOutputChannels_(settings.mainOutputChannels()) -, auxInputChannels_(settings.auxInputChannels()) -, auxOutputChannels_(settings.auxOutputChannels()) +ChannelSelection::ChannelSelection(ChannelRouterSettings &settings) + : mainInputChannels_(settings.mainInputChannels()), mainOutputChannels_(settings.mainOutputChannels()), auxInputChannels_(settings.auxInputChannels()), auxOutputChannels_(settings.auxOutputChannels()) { - normalizeChannelSelection(); + normalizeChannelSelection(); } -static void normalizeInputChannels(std::vector&channels) { - if (channels.size() == 2) { - if (channels[0] == -1 && channels[1] == -1) +static void normalizeInputChannels(std::vector &channels) +{ + if (channels.size() == 2) + { + if (channels[0] == -1 && channels[1] == -1) { channels.resize(0); - } else if (channels[0] == channels[1]) { + } + else if (channels[0] == channels[1]) + { channels.resize(1); - } else if (channels[1] == -1) { - channels.resize(1);} { + } + else if (channels[1] == -1) + { + channels.resize(1); + } + { } } } -static void normalizeOutputChannels(std::vector&channels) { +static void normalizeOutputChannels(std::vector &channels) +{ normalizeInputChannels(channels); } -void ChannelSelection::normalizeChannelSelection() { +void ChannelSelection::normalizeChannelSelection() +{ normalizeInputChannels(mainInputChannels_); normalizeOutputChannels(mainOutputChannels_); normalizeInputChannels(auxInputChannels_); normalizeOutputChannels(auxOutputChannels_); // If either aux inputs or outputs are zero, don't do ANY aux processing. - if (auxInputChannels_.size() == 0) + if (auxInputChannels_.size() == 0) { auxOutputChannels_.resize(0); - } else if (auxOutputChannels_.size() == 0) { + } + else if (auxOutputChannels_.size() == 0) + { auxInputChannels_.resize(0); } // If either main inputs or outputs are empty, add send/receive dummy buffers. (Lv2 plugins shouldn't have to deal with this) - if (mainInputChannels_.size() == 0) + if (mainInputChannels_.size() == 0) { mainInputChannels_.resize(1); mainInputChannels_[0] = -1; } - if (mainOutputChannels_.size() == 0) { + if (mainOutputChannels_.size() == 0) + { mainInputChannels_.resize(1); mainOutputChannels_[0] = -1; } - // Send buffers are what they are. Let the send plugin deal with it. + // Send buffers are what they are. Let the send plugin deal with it. } - ChannelRouterSettings::ChannelRouterSettings() { - } std::vector ChannelRouterPresetBank::getIndexEntries() { std::vector result; - for (auto &entry: entries_) + for (auto &entry : entries_) { result.push_back(ChannelRouterPresetIndexEntry{entry->id(), entry->name()}); } return result; } +static bool HasIllegalChannel(const std::vector &channels) +{ + for (auto c : channels) + { + if (c < 0) + { + return true; + } + } + return false; +} +bool ChannelSelection::IsValid() const +{ + if (mainInputChannels_.size() == 0 || mainOutputChannels_.size() == 0) + { + return false; + } + if (HasIllegalChannel(mainInputChannels_) || + HasIllegalChannel(mainOutputChannels_) || + HasIllegalChannel(auxInputChannels_) || + HasIllegalChannel(auxOutputChannels_)) + { + return false; + } + + return true; +} JSON_MAP_BEGIN(ChannelRouterSettings) JSON_MAP_REFERENCE(ChannelRouterSettings, configured) JSON_MAP_REFERENCE(ChannelRouterSettings, changed) @@ -155,7 +189,6 @@ JSON_MAP_REFERENCE(ChannelRouterPresetIndexEntry, id) JSON_MAP_REFERENCE(ChannelRouterPresetIndexEntry, name) JSON_MAP_END(); - JSON_MAP_BEGIN(ChannelRouterPresetBankEntry) JSON_MAP_REFERENCE(ChannelRouterPresetBankEntry, id) JSON_MAP_REFERENCE(ChannelRouterPresetBankEntry, name) @@ -167,4 +200,3 @@ JSON_MAP_REFERENCE(ChannelRouterPresetBank, nextId) JSON_MAP_REFERENCE(ChannelRouterPresetBank, version) JSON_MAP_REFERENCE(ChannelRouterPresetBank, entries) JSON_MAP_END(); - diff --git a/src/ChannelRouterSettings.hpp b/src/ChannelRouterSettings.hpp index bfdd875..14c0e90 100644 --- a/src/ChannelRouterSettings.hpp +++ b/src/ChannelRouterSettings.hpp @@ -84,6 +84,7 @@ namespace pipedal std::vector &auxInputChannels() { return auxInputChannels_; } std::vector &auxOutputChannels() { return auxOutputChannels_; } + bool IsValid() const; private: void normalizeChannelSelection(); diff --git a/src/CommandLineParser.hpp b/src/CommandLineParser.hpp index d1a08ed..0780f6a 100644 --- a/src/CommandLineParser.hpp +++ b/src/CommandLineParser.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/ConfigMain.cpp b/src/ConfigMain.cpp index 704756f..2b48792 100644 --- a/src/ConfigMain.cpp +++ b/src/ConfigMain.cpp @@ -1330,7 +1330,7 @@ static void PrintHelp() PrettyPrinter pp; pp << "pipedalconfig - Command-line post-install configuration for PiPedal" << "\n" - << "Copyright (c) 2022-2024 Robin E. R. Davies." + << "Copyright (c) Robin E.R. Davies." << "\n" << "\n" << "See https://rerdavies.github.io/pipedal/Documentation.html for " diff --git a/src/CpuGovernor.cpp b/src/CpuGovernor.cpp index 66ae0c5..69f7f0d 100644 --- a/src/CpuGovernor.cpp +++ b/src/CpuGovernor.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/CpuGovernor.hpp b/src/CpuGovernor.hpp index 9ec59fa..13d0663 100644 --- a/src/CpuGovernor.hpp +++ b/src/CpuGovernor.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/CpuTemperatureMonitor.cpp b/src/CpuTemperatureMonitor.cpp index 6b9f8e9..c8f42de 100644 --- a/src/CpuTemperatureMonitor.cpp +++ b/src/CpuTemperatureMonitor.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/CpuUse.cpp b/src/CpuUse.cpp index 63d2032..d280523 100644 --- a/src/CpuUse.cpp +++ b/src/CpuUse.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/CpuUse.hpp b/src/CpuUse.hpp index d5b96d2..c12c62a 100644 --- a/src/CpuUse.hpp +++ b/src/CpuUse.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/CrashGuard.cpp b/src/CrashGuard.cpp index ac87059..5be64bd 100644 --- a/src/CrashGuard.cpp +++ b/src/CrashGuard.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/CrashGuard.hpp b/src/CrashGuard.hpp index d62839d..4c0142e 100644 --- a/src/CrashGuard.hpp +++ b/src/CrashGuard.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/Curl.cpp b/src/Curl.cpp index 0fe9349..0baea8b 100644 --- a/src/Curl.cpp +++ b/src/Curl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/Curl.hpp b/src/Curl.hpp index 922d3b2..7de3ee3 100644 --- a/src/Curl.hpp +++ b/src/Curl.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/DbDezipper.cpp b/src/DbDezipper.cpp index 26d44ab..c68d792 100644 --- a/src/DbDezipper.cpp +++ b/src/DbDezipper.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/DbDezipper.hpp b/src/DbDezipper.hpp index 57f6ae2..106f40d 100644 --- a/src/DbDezipper.hpp +++ b/src/DbDezipper.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/DeviceVus.hpp b/src/DeviceVus.hpp index 4f192ec..3a77e5d 100644 --- a/src/DeviceVus.hpp +++ b/src/DeviceVus.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/DummyAudioDriver.cpp b/src/DummyAudioDriver.cpp index a52c21b..84d0850 100644 --- a/src/DummyAudioDriver.cpp +++ b/src/DummyAudioDriver.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/DummyAudioDriver.hpp b/src/DummyAudioDriver.hpp index 59b2c9b..0e7381e 100644 --- a/src/DummyAudioDriver.hpp +++ b/src/DummyAudioDriver.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2024 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/FileBrowserFilesFeature.cpp b/src/FileBrowserFilesFeature.cpp index 818c417..c910d3f 100644 --- a/src/FileBrowserFilesFeature.cpp +++ b/src/FileBrowserFilesFeature.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2023 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/FileBrowserFilesFeature.hpp b/src/FileBrowserFilesFeature.hpp index 9efcdbd..3cdf9b7 100644 --- a/src/FileBrowserFilesFeature.hpp +++ b/src/FileBrowserFilesFeature.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2023 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/FileMetadataFeature.cpp b/src/FileMetadataFeature.cpp index 10c0019..53887d4 100644 --- a/src/FileMetadataFeature.cpp +++ b/src/FileMetadataFeature.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/FileMetadataFeature.hpp b/src/FileMetadataFeature.hpp index 17092f0..804ff28 100644 --- a/src/FileMetadataFeature.hpp +++ b/src/FileMetadataFeature.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/GovernorSettings.cpp b/src/GovernorSettings.cpp index 981772b..ec4f5ad 100644 --- a/src/GovernorSettings.cpp +++ b/src/GovernorSettings.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/GovernorSettings.hpp b/src/GovernorSettings.hpp index f3f5126..916588c 100644 --- a/src/GovernorSettings.hpp +++ b/src/GovernorSettings.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/HotspotManager.cpp b/src/HotspotManager.cpp index 5eba353..b999280 100644 --- a/src/HotspotManager.cpp +++ b/src/HotspotManager.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/IEffect.hpp b/src/IEffect.hpp index beec4ee..23ffc42 100644 --- a/src/IEffect.hpp +++ b/src/IEffect.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/InheritPriorityMutex.hpp b/src/InheritPriorityMutex.hpp index 02fea2e..21dfd34 100644 --- a/src/InheritPriorityMutex.hpp +++ b/src/InheritPriorityMutex.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/InvertingMutexTest.cpp b/src/InvertingMutexTest.cpp index da4ac5a..a60313d 100644 --- a/src/InvertingMutexTest.cpp +++ b/src/InvertingMutexTest.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/IpSubnet.hpp b/src/IpSubnet.hpp index 3c9548d..e3e9600 100644 --- a/src/IpSubnet.hpp +++ b/src/IpSubnet.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Ipv6Helpers.cpp b/src/Ipv6Helpers.cpp index a3bad9a..ec2b767 100644 --- a/src/Ipv6Helpers.cpp +++ b/src/Ipv6Helpers.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in @@ -539,7 +539,7 @@ static std::string GetNonLinkLocalAddressForInterface(const std::string &name) } return result; } -static std::string GetNonLinkLocalAddressForIp4Interface(const std::string &name) +static std::string GetIp4NonLinkLocalAddressForInterface(const std::string &name) { struct ifaddrs *ifap = nullptr; if (getifaddrs(&ifap) != 0) @@ -694,13 +694,13 @@ std::string pipedal::GetNonLinkLocalAddress(const std::string &fromAddress) int8_t *pAddr = (int8_t *)&inetAddr6; uint32_t remoteAddress = htonl(*(int32_t *)(pAddr + 12)); std::string interfaceName = GetInterfaceForIp4Address(remoteAddress); - result = GetNonLinkLocalAddressForIp4Interface(interfaceName); + result = GetIp4NonLinkLocalAddressForInterface(interfaceName); } else { std::string interfaceName = GetInterfaceForIp6Address(inetAddr6); - result = GetNonLinkLocalAddressForInterface(interfaceName); + result = GetIp4NonLinkLocalAddressForInterface(interfaceName); } } } @@ -713,7 +713,7 @@ std::string pipedal::GetNonLinkLocalAddress(const std::string &fromAddress) std::string pipedal::GetInterfaceIpv4Address(const std::string &interfaceName) { - return GetNonLinkLocalAddressForIp4Interface(interfaceName); + return GetIp4NonLinkLocalAddressForInterface(interfaceName); } // std::string getNonLinkLocalAddress(const std::string&address, const std::string&interface) diff --git a/src/Ipv6Helpers.hpp b/src/Ipv6Helpers.hpp index 1400f2f..0c74c53 100644 --- a/src/Ipv6Helpers.hpp +++ b/src/Ipv6Helpers.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/JackConfiguration.cpp b/src/JackConfiguration.cpp index cd111f3..61fc27f 100644 --- a/src/JackConfiguration.cpp +++ b/src/JackConfiguration.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/JackConfiguration.hpp b/src/JackConfiguration.hpp index a6a9bc4..f4be988 100644 --- a/src/JackConfiguration.hpp +++ b/src/JackConfiguration.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/JackDriver.cpp b/src/JackDriver.cpp index e26880f..8e8f18e 100644 --- a/src/JackDriver.cpp +++ b/src/JackDriver.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/JackDriver.hpp b/src/JackDriver.hpp index b2d7bd3..7ecfb62 100644 --- a/src/JackDriver.hpp +++ b/src/JackDriver.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/JackServerSettings.cpp b/src/JackServerSettings.cpp index 15ce110..9d291c0 100644 --- a/src/JackServerSettings.cpp +++ b/src/JackServerSettings.cpp @@ -1,4 +1,4 @@ -// Copyright (c) Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // Copyright (c) Gabriel Hernandez // // Permission is hereby granted, free of charge, to any person obtaining a copy of diff --git a/src/JackServerSettings.hpp b/src/JackServerSettings.hpp index dfcc0c2..eee900e 100644 --- a/src/JackServerSettings.hpp +++ b/src/JackServerSettings.hpp @@ -1,4 +1,4 @@ -// Copyright (c) Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // Copyright (c) Gabriel Hernandez // // Permission is hereby granted, free of charge, to any person obtaining a copy of diff --git a/src/LRUCache.hpp b/src/LRUCache.hpp index c5a3c67..7dc11db 100644 --- a/src/LRUCache.hpp +++ b/src/LRUCache.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy @@ -21,7 +21,7 @@ * SOFTWARE. */ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/LiteralVersion.cpp b/src/LiteralVersion.cpp index 5d4ae77..d2d76a6 100644 --- a/src/LiteralVersion.cpp +++ b/src/LiteralVersion.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/LiteralVersion.hpp b/src/LiteralVersion.hpp index dfe094b..edd0222 100644 --- a/src/LiteralVersion.hpp +++ b/src/LiteralVersion.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/Locale.cpp b/src/Locale.cpp index 6d80cc3..66e0c4e 100644 --- a/src/Locale.cpp +++ b/src/Locale.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2024 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Locale.hpp b/src/Locale.hpp index 068b4d8..cd20d25 100644 --- a/src/Locale.hpp +++ b/src/Locale.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/LocaleTest.cpp b/src/LocaleTest.cpp index 1ba3678..d0de7bc 100644 --- a/src/LocaleTest.cpp +++ b/src/LocaleTest.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/LogFeature.cpp b/src/LogFeature.cpp index 98dbf20..59bfa68 100644 --- a/src/LogFeature.cpp +++ b/src/LogFeature.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/LogFeature.hpp b/src/LogFeature.hpp index 45ec63a..596f92d 100644 --- a/src/LogFeature.hpp +++ b/src/LogFeature.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Lv2Effect.cpp b/src/Lv2Effect.cpp index 4551259..28e8714 100644 --- a/src/Lv2Effect.cpp +++ b/src/Lv2Effect.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Lv2EventBufferWriter.cpp b/src/Lv2EventBufferWriter.cpp index 8a83699..52bbf51 100644 --- a/src/Lv2EventBufferWriter.cpp +++ b/src/Lv2EventBufferWriter.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Lv2EventBufferWriter.hpp b/src/Lv2EventBufferWriter.hpp index ac0d341..69d1efa 100644 --- a/src/Lv2EventBufferWriter.hpp +++ b/src/Lv2EventBufferWriter.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Lv2HostLeakTest.cpp b/src/Lv2HostLeakTest.cpp index a36a5a6..c805147 100644 --- a/src/Lv2HostLeakTest.cpp +++ b/src/Lv2HostLeakTest.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Lv2Pedalboard.cpp b/src/Lv2Pedalboard.cpp index 1d3aa45..f1f7b88 100644 --- a/src/Lv2Pedalboard.cpp +++ b/src/Lv2Pedalboard.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Lv2Pedalboard.hpp b/src/Lv2Pedalboard.hpp index 400ee10..646f575 100644 --- a/src/Lv2Pedalboard.hpp +++ b/src/Lv2Pedalboard.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Lv2SystemdLogger.cpp b/src/Lv2SystemdLogger.cpp index 6e4c2e5..8d0416d 100644 --- a/src/Lv2SystemdLogger.cpp +++ b/src/Lv2SystemdLogger.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Lv2SystemdLogger.hpp b/src/Lv2SystemdLogger.hpp index df5a48e..02f2fd0 100644 --- a/src/Lv2SystemdLogger.hpp +++ b/src/Lv2SystemdLogger.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/MapFeature.cpp b/src/MapFeature.cpp index 10652db..1e297f9 100644 --- a/src/MapFeature.cpp +++ b/src/MapFeature.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/MapFeature.hpp b/src/MapFeature.hpp index 1481e8e..9409253 100644 --- a/src/MapFeature.hpp +++ b/src/MapFeature.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/MemDebug.cpp b/src/MemDebug.cpp index 51b9460..2a2789b 100644 --- a/src/MemDebug.cpp +++ b/src/MemDebug.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/MemDebug.hpp b/src/MemDebug.hpp index 54db268..c9d783c 100644 --- a/src/MemDebug.hpp +++ b/src/MemDebug.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/MidiBinding.cpp b/src/MidiBinding.cpp index 25cd338..9c152ca 100644 --- a/src/MidiBinding.cpp +++ b/src/MidiBinding.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/MidiBinding.hpp b/src/MidiBinding.hpp index 12885d7..53f8c72 100644 --- a/src/MidiBinding.hpp +++ b/src/MidiBinding.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/MidiEvent.hpp b/src/MidiEvent.hpp index 483d36b..3c2aee9 100644 --- a/src/MidiEvent.hpp +++ b/src/MidiEvent.hpp @@ -1,7 +1,7 @@ /* * MIT License * -* Copyright (c) 2026 Robin E. R. Davies +* Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/ModFileTypesTest.cpp b/src/ModFileTypesTest.cpp index e5a5b4d..fa04b06 100644 --- a/src/ModFileTypesTest.cpp +++ b/src/ModFileTypesTest.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/ModGui.cpp b/src/ModGui.cpp index 0ec6915..a9f55a8 100644 --- a/src/ModGui.cpp +++ b/src/ModGui.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/ModGui.hpp b/src/ModGui.hpp index bfa4f06..3e44def 100644 --- a/src/ModGui.hpp +++ b/src/ModGui.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/ModTemplateGenerator.cpp b/src/ModTemplateGenerator.cpp index e259b19..f2d9858 100644 --- a/src/ModTemplateGenerator.cpp +++ b/src/ModTemplateGenerator.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/ModTemplateGenerator.hpp b/src/ModTemplateGenerator.hpp index 2c7f463..9455acc 100644 --- a/src/ModTemplateGenerator.hpp +++ b/src/ModTemplateGenerator.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/OptionsFeature.cpp b/src/OptionsFeature.cpp index 8575007..63a3cc6 100644 --- a/src/OptionsFeature.cpp +++ b/src/OptionsFeature.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/OptionsFeature.hpp b/src/OptionsFeature.hpp index 8730e7a..88d27ef 100644 --- a/src/OptionsFeature.hpp +++ b/src/OptionsFeature.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Pedalboard.cpp b/src/Pedalboard.cpp index b5fb3cd..05521ed 100644 --- a/src/Pedalboard.cpp +++ b/src/Pedalboard.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Pedalboard.hpp b/src/Pedalboard.hpp index d1aa39c..e8e25d1 100644 --- a/src/Pedalboard.hpp +++ b/src/Pedalboard.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/PiLatencyMain.cpp b/src/PiLatencyMain.cpp index 1ad385a..c23c3f4 100644 --- a/src/PiLatencyMain.cpp +++ b/src/PiLatencyMain.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in @@ -56,7 +56,7 @@ void PrintHelp() pp.width(78); pp << "PiPedal Latency Tester\n"; - pp << "Copyright (c) 2022 Robin Davies\n"; + pp << "Copyright (c) Robin E.R. Davies\n"; pp << "\n"; pp << Indent(0) << "Syntax\n\n"; pp << Indent(2) << "pipedal_latency_test [] []\n\n"; diff --git a/src/PiPedalAlsa.cpp b/src/PiPedalAlsa.cpp index 874148e..a82e207 100644 --- a/src/PiPedalAlsa.cpp +++ b/src/PiPedalAlsa.cpp @@ -1,4 +1,4 @@ -// Copyright (c) Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // Copyright (c) Gabriel Hernandez // // Permission is hereby granted, free of charge, to any person obtaining a copy of diff --git a/src/PiPedalAlsa.hpp b/src/PiPedalAlsa.hpp index 5b58b77..b03f979 100644 --- a/src/PiPedalAlsa.hpp +++ b/src/PiPedalAlsa.hpp @@ -1,4 +1,4 @@ -// Copyright (c) Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // Copyright (c) Gabriel Hernandez // // Permission is hereby granted, free of charge, to any person obtaining a copy of diff --git a/src/PiPedalAlsaTest.cpp b/src/PiPedalAlsaTest.cpp index c9944b0..219064b 100644 --- a/src/PiPedalAlsaTest.cpp +++ b/src/PiPedalAlsaTest.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/PiPedalConfiguration.hpp b/src/PiPedalConfiguration.hpp index 779f7e8..b50de74 100644 --- a/src/PiPedalConfiguration.hpp +++ b/src/PiPedalConfiguration.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in @@ -75,7 +75,15 @@ public: void SetSocketServerEndpoint(const std::string &endpoint) { - this->socketServerAddress_ = endpoint; + if (endpoint.find(':') == std::string::npos) + { + // Only a port number was provided, use default address. + this->socketServerAddress_ = "0.0.0.0:" + endpoint; + } + else + { + this->socketServerAddress_ = endpoint; + } } bool GetAccessPointGateway(boost::asio::ip::network_v4 *pGatewayNetwork) const { diff --git a/src/PiPedalException.hpp b/src/PiPedalException.hpp index a2505d0..052af63 100644 --- a/src/PiPedalException.hpp +++ b/src/PiPedalException.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/PiPedalMath.hpp b/src/PiPedalMath.hpp index 0660763..e918e31 100644 --- a/src/PiPedalMath.hpp +++ b/src/PiPedalMath.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/PiPedalModel.cpp b/src/PiPedalModel.cpp index 76d59b5..9d02874 100644 --- a/src/PiPedalModel.cpp +++ b/src/PiPedalModel.cpp @@ -220,7 +220,7 @@ void PiPedalModel::Init(const PiPedalConfiguration &configuration) pluginHost.SetConfiguration(configuration); storage.SetConfigRoot(configuration.GetDocRoot()); storage.SetDataRoot(configuration.GetLocalStoragePath()); - storage.Initialize(); + storage.Initialize(this); pluginHost.SetPluginStoragePath(storage.GetPluginUploadDirectory()); this->systemMidiBindings = storage.GetSystemMidiBindings(); @@ -729,7 +729,12 @@ void PiPedalModel::SetSnapshot(int64_t selectedSnapshot) } } pedalboardChanged = true; + } else if (selectedSnapshot == -1) + { + this->pedalboard.selectedSnapshot(-1); + pedalboardChanged = true; } + } if (pedalboardChanged) { @@ -1576,9 +1581,9 @@ void PiPedalModel::RestartAudio(bool useDummyAudioDriver) throw std::runtime_error("Audio configuration not valid."); } - const auto &channelSelection = this->storage.GetChannelSelection(); + auto channelSelection = this->storage.GetChannelSelection(); - this->audioHost->Open(jackServerSettings, channelSelection); + this->audioHost->Open(jackServerSettings, channelSelection); this->pluginHost.OnConfigurationChanged(jackConfiguration, channelSelection); @@ -3505,6 +3510,10 @@ void PiPedalModel::SetChannelRouterSettings(int64_t clientId, ChannelRouterSetti } std::string PiPedalModel::Tone3000ThumbnailDirectory() +{ + return "/var/pipedal/audio_uploads/tone3000_thumbnails"; +} +std::string PiPedalModel::OldTone3000ThumbnailDirectory() { return "/var/pipedal/tone3000_thumbnails"; } diff --git a/src/PiPedalModel.hpp b/src/PiPedalModel.hpp index 2e14f5f..2a53848 100644 --- a/src/PiPedalModel.hpp +++ b/src/PiPedalModel.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in @@ -303,6 +303,7 @@ namespace pipedal Storage &GetStorage() { return storage; } virtual std::string Tone3000ThumbnailDirectory() override; + virtual std::string OldTone3000ThumbnailDirectory() override; bool GetHasWifi(); diff --git a/src/PiPedalSocket.hpp b/src/PiPedalSocket.hpp index 3a14026..4520ca7 100644 --- a/src/PiPedalSocket.hpp +++ b/src/PiPedalSocket.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/PiPedalUI.cpp b/src/PiPedalUI.cpp index e04fd65..a797181 100644 --- a/src/PiPedalUI.cpp +++ b/src/PiPedalUI.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2023 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/PiPedalUI.hpp b/src/PiPedalUI.hpp index 2b532ba..572d026 100644 --- a/src/PiPedalUI.hpp +++ b/src/PiPedalUI.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2023 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/PiPedalVersion.cpp b/src/PiPedalVersion.cpp index 150a756..3392b6a 100644 --- a/src/PiPedalVersion.cpp +++ b/src/PiPedalVersion.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/PiPedalVersion.hpp b/src/PiPedalVersion.hpp index 88e8df7..31182de 100644 --- a/src/PiPedalVersion.hpp +++ b/src/PiPedalVersion.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/PipewireInputStream.cpp b/src/PipewireInputStream.cpp index b6ff96a..b8dbfc5 100644 --- a/src/PipewireInputStream.cpp +++ b/src/PipewireInputStream.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/PipewireInputStream.hpp b/src/PipewireInputStream.hpp index fe67370..8bd71ee 100644 --- a/src/PipewireInputStream.hpp +++ b/src/PipewireInputStream.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/PluginHost.cpp b/src/PluginHost.cpp index 4eee514..85fa688 100644 --- a/src/PluginHost.cpp +++ b/src/PluginHost.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/PluginHost.hpp b/src/PluginHost.hpp index 9ea0762..5331897 100644 --- a/src/PluginHost.hpp +++ b/src/PluginHost.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2025 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/PluginPreset.hpp b/src/PluginPreset.hpp index 944282c..f2f6e11 100644 --- a/src/PluginPreset.hpp +++ b/src/PluginPreset.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/PluginType.cpp b/src/PluginType.cpp index 7b966b2..5a38573 100644 --- a/src/PluginType.cpp +++ b/src/PluginType.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/PluginType.hpp b/src/PluginType.hpp index 0e95365..feb72cd 100644 --- a/src/PluginType.hpp +++ b/src/PluginType.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Presets.cpp b/src/Presets.cpp index 29090b3..eb808b9 100644 --- a/src/Presets.cpp +++ b/src/Presets.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Presets.hpp b/src/Presets.hpp index 018ba7b..464c3ae 100644 --- a/src/Presets.hpp +++ b/src/Presets.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/PrettyPrinter.hpp b/src/PrettyPrinter.hpp index e8c12f1..d81f517 100644 --- a/src/PrettyPrinter.hpp +++ b/src/PrettyPrinter.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/Promise.hpp b/src/Promise.hpp index cb97407..5085e33 100644 --- a/src/Promise.hpp +++ b/src/Promise.hpp @@ -190,7 +190,7 @@ namespace pipedal ReleaseFunctions(); if (cancelled) { - throw std::logic_error("Cancelled."); + throw std::logic_error("Canceled."); } if (rejected) { diff --git a/src/RequestHandler.hpp b/src/RequestHandler.hpp index 5cb7c6f..f5966a7 100644 --- a/src/RequestHandler.hpp +++ b/src/RequestHandler.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/RingBuffer.hpp b/src/RingBuffer.hpp index fa56810..41d5bb6 100644 --- a/src/RingBuffer.hpp +++ b/src/RingBuffer.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/RingBufferReader.hpp b/src/RingBufferReader.hpp index f83cb32..9855958 100644 --- a/src/RingBufferReader.hpp +++ b/src/RingBufferReader.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/RtInversionGuard.hpp b/src/RtInversionGuard.hpp index 74e0a29..a831e3d 100644 --- a/src/RtInversionGuard.hpp +++ b/src/RtInversionGuard.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/SchedulerPriority.cpp b/src/SchedulerPriority.cpp index 8effce9..7332200 100644 --- a/src/SchedulerPriority.cpp +++ b/src/SchedulerPriority.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2024 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/SchedulerPriority.hpp b/src/SchedulerPriority.hpp index 2309eeb..1fe5b8b 100644 --- a/src/SchedulerPriority.hpp +++ b/src/SchedulerPriority.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2024 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Scratch.cpp b/src/Scratch.cpp index 9b670bb..4078696 100644 --- a/src/Scratch.cpp +++ b/src/Scratch.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/SetWifiConfig.cpp b/src/SetWifiConfig.cpp index cc5a131..3cbff2a 100644 --- a/src/SetWifiConfig.cpp +++ b/src/SetWifiConfig.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/SetWifiConfig.hpp b/src/SetWifiConfig.hpp index b3a4c36..817e9f3 100644 --- a/src/SetWifiConfig.hpp +++ b/src/SetWifiConfig.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Shutdown.hpp b/src/Shutdown.hpp index ad43500..3ba7e0a 100644 --- a/src/Shutdown.hpp +++ b/src/Shutdown.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/SplitEffect.cpp b/src/SplitEffect.cpp index 4167aa9..d580b28 100644 --- a/src/SplitEffect.cpp +++ b/src/SplitEffect.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/SplitEffect.hpp b/src/SplitEffect.hpp index 6ed253b..15409fb 100644 --- a/src/SplitEffect.hpp +++ b/src/SplitEffect.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/StdErrorCapture.cpp b/src/StdErrorCapture.cpp index 6026883..86919c8 100644 --- a/src/StdErrorCapture.cpp +++ b/src/StdErrorCapture.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/StdErrorCapture.hpp b/src/StdErrorCapture.hpp index 72de8b4..cc1ed2d 100644 --- a/src/StdErrorCapture.hpp +++ b/src/StdErrorCapture.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Storage.cpp b/src/Storage.cpp index 8ea253a..e924191 100644 --- a/src/Storage.cpp +++ b/src/Storage.cpp @@ -1,4 +1,4 @@ -// Copyright (c) Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // Copyright (c) Gabriel Hernandez // // Permission is hereby granted, free of charge, to any person obtaining a copy of @@ -47,14 +47,15 @@ #include "util.hpp" using namespace pipedal; +using namespace ::pipedal::implementation; namespace fs = std::filesystem; -const char *BANK_EXTENSION = ".bank"; -const char *BANKS_FILENAME = "index.banks"; +const char* BANK_EXTENSION = ".bank"; +const char* BANKS_FILENAME = "index.banks"; #define USER_SETTINGS_FILENAME "userSettings.json"; -static bool hasSyntheticModRoot(const UiFileProperty &fileProperty) +static bool hasSyntheticModRoot(const UiFileProperty& fileProperty) { return (fileProperty.modDirectories().size() > 1 || (fileProperty.modDirectories().size() == 1 && fileProperty.useLegacyModDirectory())); } @@ -80,7 +81,7 @@ static int fromhexStrict(char c) return -1; } -std::string Storage::SafeDecodeName(const std::string &name) +std::string Storage::SafeDecodeName(const std::string& name) { std::stringstream s; for (int i = 0; i < name.length(); /**/) @@ -127,9 +128,9 @@ std::string Storage::SafeDecodeName(const std::string &name) return s.str(); } -static const char *hex = "0123456789ABCDEF"; +static const char* hex = "0123456789ABCDEF"; -std::string Storage::SafeEncodeName(const std::string &name) +std::string Storage::SafeEncodeName(const std::string& name) { std::stringstream s; for (char c : name) @@ -153,7 +154,7 @@ std::string Storage::SafeEncodeName(const std::string &name) return s.str(); } -std::filesystem::path ResolveHomePath(const std::filesystem::path &path) +std::filesystem::path ResolveHomePath(const std::filesystem::path& path) { if (path.begin() == path.end()) return path; @@ -162,7 +163,7 @@ std::filesystem::path ResolveHomePath(const std::filesystem::path &path) auto el = (*it); if (el != "~") return path; - const char *homeDirectory = nullptr; + const char* homeDirectory = nullptr; homeDirectory = getenv("HOME"); if (homeDirectory == nullptr) @@ -187,28 +188,28 @@ std::filesystem::path ResolveHomePath(const std::filesystem::path &path) return result; } -void Storage::SetConfigRoot(const std::filesystem::path &path) +void Storage::SetConfigRoot(const std::filesystem::path& path) { this->configRoot = ResolveHomePath(path); } -void Storage::SetDataRoot(const std::filesystem::path &path) +void Storage::SetDataRoot(const std::filesystem::path& path) { this->dataRoot = ResolveHomePath(path); this->dataRoot__audio_uploads = dataRoot / "audio_uploads"; } -const std::filesystem::path &Storage::GetConfigRoot() const +const std::filesystem::path& Storage::GetConfigRoot() const { return this->configRoot; } -const std::filesystem::path &Storage::GetDataRoot() const +const std::filesystem::path& Storage::GetDataRoot() const { return this->dataRoot; } -static void CopyDirectory(const std::filesystem::path &source, const std::filesystem::path &destination) +static void CopyDirectory(const std::filesystem::path& source, const std::filesystem::path& destination) { - for (auto &directoryEntry : std::filesystem::directory_iterator(source)) + for (auto& directoryEntry : std::filesystem::directory_iterator(source)) { if (!IsValidUtf8(directoryEntry.path().string())) { @@ -227,30 +228,165 @@ static void CopyDirectory(const std::filesystem::path &source, const std::filesy } } -void Storage::MaybeCopyDefaultPresets() -{ - auto presetsDirectory = this->GetPresetsDirectory(); - auto presetsConfigDirectory = this->configRoot / "default_presets" / "presets"; - if (!std::filesystem::exists(presetsDirectory / "index.banks")) - { - fs::copy(presetsConfigDirectory / "index.banks", presetsDirectory / "index.banks"); - fs::copy(presetsConfigDirectory / "Default+Bank.bank", presetsDirectory / "Default+Bank.bank"); - } -} - -static void removeFileNoThrow(const std::filesystem::path &path) +static void removeFileNoThrow(const std::filesystem::path& path) { try { fs::remove(path); } - catch (const std::exception &) + catch (const std::exception&) { } } -void Storage::UpgradeFactoryPresets() +int32_t Storage::GetInstallerPresetVersion() +{ + auto installerConfiDirectory = this->configRoot / "default_presets" / "presets"; + BrowserFilesVersionInfo versionInfo; + if (!versionInfo.Load(installerConfiDirectory / "banks.versionInfo")) + { + throw std::runtime_error("Can't open Installer banks.versionInfo file."); + } + return versionInfo.Version(); +} +int32_t Storage::GetVarPresetVersion() +{ + auto presetsDirectory = this->GetPresetsDirectory(); + BrowserFilesVersionInfo versionInfo; + versionInfo.Load(presetsDirectory / "banks.versionInfo"); + return versionInfo.Version(); + +} + +void Storage::SetVarPresetVersion(int32_t version) +{ + auto presetsDirectory = this->GetPresetsDirectory(); + BrowserFilesVersionInfo versionInfo; + versionInfo.Load(presetsDirectory / "banks.versionInfo"); + versionInfo.Version(version); + versionInfo.Save(presetsDirectory / "banks.versionInfo"); + +} + + +void Storage::MoveExistingFactoryPresetsBank() +{ + BankIndexEntry* entry = bankIndex.getEntryByName("Factory Presets"); + if (entry) + { + std::string newName = "Old Factory Presets"; + int32_t nextVersionNumber = 2; + while (true) + { + if (bankIndex.getEntryByName(newName) == nullptr) + { + break; + } + newName = SS("Old Factory Presets (" << nextVersionNumber << ")"); + } + + RenameBank(entry->instanceId(), newName); + + } +} + + +namespace pipedal::implementation { + extern int64_t ImportBankFile(PiPedalModel &model, const std::filesystem::path& filePath,uint64_t uploadAfter = -1); +} + +void Storage::InstallFactoryPresets() +{ + fs::path defaultBankFilePath = this->configRoot / "default_presets" / "presets" / "Factory Presets.piBank"; + try { + ImportBankFile(*this->model,defaultBankFilePath, -1); + } catch (const std::exception &e) + { + throw std::runtime_error(SS("Failed to install Factory Presets. " << e.what())); + } + +} + +void Storage::CopyFactoryPresetsToDefaultBank() +{ + + Lv2Log::info("Creating Default Bank"); + auto defaultBankEntry = bankIndex.getEntryByName("Default Bank"); + if (defaultBankEntry != nullptr) + { + throw std::runtime_error("Internal error: CopyFactoryPresetsToDefaultBank: Default Bank already exists."); + } + fs::path factoryPresetPath = GetBankFileName("Factory Presets"); + fs::path defaultBankPath = GetBankFileName("Default Bank"); + if (!fs::exists(factoryPresetPath)) { + throw std::runtime_error("Internal error: CopyFactoryPresetsToDefaultBank: Factory Presets file does not exist."); + } + auto instanceId = bankIndex.addBank(-2,"Default Bank"); + + + fs::copy(factoryPresetPath, defaultBankPath); + + bankIndex.selectedBank(instanceId); + SaveBankIndex(); +} + + +void Storage::ProvisionDefaultBanks() +{ + fs::path indexFilename = this->GetIndexFileName(); + + + this->bankIndex = BankIndex(); + + + bool freshInstall = false; + bool installFactoryPresets = false; + + int32_t etcVersion = GetInstallerPresetVersion(); + int32_t varPresetVersion = GetVarPresetVersion(); + + if (!std::filesystem::exists(indexFilename)) + { + freshInstall = true; + installFactoryPresets = true; + + } else { + freshInstall = false; + std::ifstream s; + s.open(indexFilename); + json_reader reader(s); + reader.read(&(this->bankIndex)); + } + + // Compare the Factory Preset verion in the /var directory with the one in the /etc directory, + // to decide whether the Factory bank needs to be provisions. + + auto varPresetsDirectory = this->GetPresetsDirectory(); + auto etcPresetsDirector = this->configRoot / "default_presets" / "presets"; + + constexpr uint32_t V2_VERSION_NUMBER = 2; // first to have a Factory Presets + constexpr uint32_t V3_VERSION_NUMBER = 3; // New A2 Presets, completely replacing the previons version. + + if (varPresetVersion < V3_VERSION_NUMBER) { + Lv2Log::info("Installing Factory Presets"); + + // Move the old factory presets bank out of the way. + MoveExistingFactoryPresetsBank(); + InstallFactoryPresets(); + SetVarPresetVersion(V3_VERSION_NUMBER); + SaveBankIndex(); // checkpoint. + } + // Next time we will have to MERGE factor presets. + if (freshInstall) + { + CopyFactoryPresetsToDefaultBank(); + SetVarPresetVersion(V3_VERSION_NUMBER); + } + +} + +void Storage::UpgradeV1FactoryPresets() { auto presetsDirectory = this->GetPresetsDirectory(); auto presetsConfigDirectory = this->configRoot / "default_presets" / "presets"; @@ -265,113 +401,125 @@ void Storage::UpgradeFactoryPresets() fs::path defaultPresetsVersionFile = presetsDirectory / "banks.versionInfo"; presetsVersion.Load(defaultPresetsVersionFile); - // Maybe install or upgrade factory presets. - if (defaultConfigPresetsVersion.Version() > presetsVersion.Version() || defaultConfigPresetsVersion.Version() == 0) + constexpr uint32_t V1_VERSION_NUMBER = 1; + + // set the default banks.versionInfo value to 0 to force complete upgrade path + + bool testUpgrade = (defaultConfigPresetsVersion.Version() == 0); + // Maybe install or upgrade Version 1 factory presets. + if ((V1_VERSION_NUMBER > presetsVersion.Version() && presetsVersion.Version() != 0) || testUpgrade) { - // remove TooB ML README.md + // Forces TooBMl to re-install V1 factory models (?) removeFileNoThrow("/usr/lib/lv2/ToobAmp.lv2/models/tones/README.md"); removeFileNoThrow("/var/pipedal/audio_uploads/ToobMlModels/model.index"); removeFileNoThrow("/var/pipedal/audio_uploads/ToobMlModels/README.md"); removeFileNoThrow("/var/pipedal/audio_uploads/ToobMlModels/model.index"); - std::string name = "Factory Presets"; - BankFile newFactoryPresets; + // Do NOT upgrade to v1 Factory Presets. +#if 0 { - fs::path defaultBankPath = presetsConfigDirectory / "Default+Bank.bank"; - try + std::string name = "Factory Presets"; + BankFile newFactoryPresets; { - std::ifstream is(defaultBankPath); - json_reader reader(is); - reader.read(&newFactoryPresets); + fs::path defaultBankPath = presetsConfigDirectory / "Default+Bank.bank"; + try + { + std::ifstream is(defaultBankPath); + json_reader reader(is); + reader.read(&newFactoryPresets); + } + catch (const std::exception& e) + { + Lv2Log::error(SS("Failed to isntall factory presets. Can't read " << defaultBankPath << ".")); + } } - catch (const std::exception &e) + newFactoryPresets.name("Factory Presets"); + + BankIndexEntry* existingEntry = bankIndex.getEntryByName(name); + if (existingEntry == nullptr) { - Lv2Log::error(SS("Failed to isntall factory presets. Can't read " << defaultBankPath << ".")); - } - } - newFactoryPresets.name("Factory Presets"); + BankFile bankFile; + bankFile.name(name); - BankIndexEntry *existingEntry = bankIndex.getEntryByName(name); - if (existingEntry == nullptr) - { - BankFile bankFile; - bankFile.name(name); + for (auto& presetEntry : newFactoryPresets.presets()) + { + bankFile.addPreset(presetEntry->preset(), -1); + } - for (auto &presetEntry : newFactoryPresets.presets()) - { - bankFile.addPreset(presetEntry->preset(), -1); - } - - int64_t instanceId = bankFile.presets()[0]->instanceId(); - bankFile.selectedPreset(instanceId); - SaveBankFile(name, bankFile); - this->bankIndex.addBank(-1, name); - this->SaveBankIndex(); - } - else - { - - // either use the current bank (if the factory bank is selected), or create a new one. - BankFile bankFile; - bankFile.name(name); - BankFile *pFactoryPresetsBank = nullptr; - bool usingCurrentBank = false; - if (bankIndex.selectedBank() == existingEntry->instanceId()) - { - usingCurrentBank = true; - pFactoryPresetsBank = &(this->currentBank); + int64_t instanceId = bankFile.presets()[0]->instanceId(); + bankFile.selectedPreset(instanceId); + SaveBankFile(name, bankFile); + this->bankIndex.addBank(-1, name); + this->SaveBankIndex(); } else { - LoadBankFile(name, &bankFile); - pFactoryPresetsBank = &bankFile; - } - // index existing presets. - std::unordered_map nameToPositionIndex; - for (size_t i = 0; i < pFactoryPresetsBank->presets().size(); ++i) - { - auto &preset = pFactoryPresetsBank->presets()[i]; - nameToPositionIndex[preset->preset().name()] = i; - } - // merge new presets into the existing ones (overwriting as neccessary) - for (auto &newPresetEntry : newFactoryPresets.presets()) - { - const std::string name = newPresetEntry->preset().name(); - - auto f = nameToPositionIndex.find(name); - if (f != nameToPositionIndex.end()) + // either use the current bank (if the factory bank is selected), or create a new one. + BankFile bankFile; + bankFile.name(name); + BankFile* pFactoryPresetsBank = nullptr; + bool usingCurrentBank = false; + if (bankIndex.selectedBank() == existingEntry->instanceId()) { - size_t postition = f->second; - // overwrite the existing entry. - pFactoryPresetsBank->presets()[postition]->preset(newPresetEntry->preset()); + usingCurrentBank = true; + pFactoryPresetsBank = &(this->currentBank); } else { - pFactoryPresetsBank->addPreset(newPresetEntry->preset()); + LoadBankFile(name, &bankFile); + pFactoryPresetsBank = &bankFile; + } + // index existing presets. + std::unordered_map nameToPositionIndex; + for (size_t i = 0; i < pFactoryPresetsBank->presets().size(); ++i) + { + auto& preset = pFactoryPresetsBank->presets()[i]; + nameToPositionIndex[preset->preset().name()] = i; } - } - SaveBankFile(name, *pFactoryPresetsBank); - presetsVersion.Version(defaultConfigPresetsVersion.Version()); - presetsVersion.Save(defaultPresetsVersionFile); + // merge new presets into the existing ones (overwriting as neccessary) + for (auto& newPresetEntry : newFactoryPresets.presets()) + { + const std::string name = newPresetEntry->preset().name(); + + auto f = nameToPositionIndex.find(name); + if (f != nameToPositionIndex.end()) + { + size_t postition = f->second; + // overwrite the existing entry. + pFactoryPresetsBank->presets()[postition]->preset(newPresetEntry->preset()); + } + else + { + pFactoryPresetsBank->addPreset(newPresetEntry->preset()); + } + } + SaveBankFile(name, *pFactoryPresetsBank); + } } +#endif + presetsVersion.Version(2); + presetsVersion.Save(defaultPresetsVersionFile); } } -void Storage::Initialize() +void Storage::Initialize(PiPedalModel *model) { + this->model = model; try { std::filesystem::create_directories(this->GetPresetsDirectory()); std::filesystem::create_directories(this->GetPluginPresetsDirectory()); - MaybeCopyDefaultPresets(); } - catch (const std::exception &e) + catch (const std::exception& e) { throw PiPedalStateException("Can't create presets directory. (" + (std::string)this->GetPresetsDirectory() + ") (" + e.what() + ")"); } + + ProvisionDefaultBanks(); + LoadPluginPresetIndex(); LoadBankIndex(); LoadCurrentBank(); @@ -379,7 +527,7 @@ void Storage::Initialize() { LoadJackChannelSelection(); } - catch (const std::exception &) + catch (const std::exception&) { } LoadAlsaSequencerConfiguration(); @@ -388,7 +536,6 @@ void Storage::Initialize() LoadWifiDirectConfigSettings(); this->channelRouterSettings = LoadChannelRouterSettings(); LoadUserSettings(); - UpgradeFactoryPresets(); UpgradeChannelRouterSettings(); } @@ -406,7 +553,7 @@ void Storage::LoadBank(int64_t instanceId) } this->LoadPreset(this->currentBank.selectedPreset()); } - catch (const std::exception &e) + catch (const std::exception& e) { throw std::logic_error(SS("Bank file corrupted. " << e.what() << "(" << GetBankFileName(indexEntry.name()) << ")")); } @@ -425,7 +572,7 @@ std::filesystem::path Storage::GetPluginPresetsDirectory() const { return this->dataRoot / "plugin_presets"; } -const std::filesystem::path &Storage::GetPluginUploadDirectory() const +const std::filesystem::path& Storage::GetPluginUploadDirectory() const { return dataRoot__audio_uploads; } @@ -447,7 +594,7 @@ std::filesystem::path Storage::GetIndexFileName() const { return this->GetPresetsDirectory() / BANKS_FILENAME; } -std::filesystem::path Storage::GetBankFileName(const std::string &name) const +std::filesystem::path Storage::GetBankFileName(const std::string& name) const { std::string fileName = SafeEncodeName(name) + BANK_EXTENSION; return this->GetPresetsDirectory() / fileName; @@ -463,7 +610,7 @@ void Storage::LoadBankIndex() json_reader reader(s); reader.read(&bankIndex); } - catch (const std::exception &) + catch (const std::exception&) { bankIndex.clear(); ReIndex(); @@ -497,7 +644,7 @@ void Storage::LoadPluginPresetIndex() reader.read(&pluginPresetIndex); } } - catch (const std::exception &) + catch (const std::exception&) { } } @@ -530,7 +677,7 @@ void Storage::SaveBankIndex() void Storage::ReIndex() { - for (const auto &dirEntry : std::filesystem::directory_iterator(GetPresetsDirectory())) + for (const auto& dirEntry : std::filesystem::directory_iterator(GetPresetsDirectory())) { if (!IsValidUtf8(dirEntry.path().string())) { @@ -555,7 +702,7 @@ void Storage::ReIndex() bankIndex.selectedBank(bankIndex.entries()[0].instanceId()); } -void Storage::CreateBank(const std::string &name) +void Storage::CreateBank(const std::string& name) { BankFile bankFile; Pedalboard defaultPreset = Pedalboard::MakeDefault(); @@ -570,7 +717,7 @@ void Storage::CreateBank(const std::string &name) this->SaveBankIndex(); } -void Storage::GetBankFile(int64_t instanceId, BankFile *pBank) const +void Storage::GetBankFile(int64_t instanceId, BankFile* pBank) const { auto indexEntry = this->bankIndex.getBankIndexEntry(instanceId); auto name = indexEntry.name(); @@ -581,7 +728,7 @@ void Storage::GetBankFile(int64_t instanceId, BankFile *pBank) const pBank->name(indexEntry.name()); } -void Storage::LoadBankFile(const std::string &name, BankFile *pBank) +void Storage::LoadBankFile(const std::string& name, BankFile* pBank) { std::filesystem::path fileName = GetBankFileName(name); std::ifstream is(fileName); @@ -589,7 +736,7 @@ void Storage::LoadBankFile(const std::string &name, BankFile *pBank) reader.read(pBank); } -void Storage::SaveBankFile(const std::string &name, const BankFile &bankFile) +void Storage::SaveBankFile(const std::string& name, const BankFile& bankFile) { std::filesystem::path fileName = GetBankFileName(name); std::filesystem::path backupFile = ((std::string)fileName) + ".$$$"; @@ -612,7 +759,7 @@ void Storage::SaveBankFile(const std::string &name, const BankFile &bankFile) std::filesystem::remove(backupFile); } } - catch (const std::exception &e) + catch (const std::exception& e) { std::filesystem::remove(fileName); if (std::filesystem::exists(backupFile)) @@ -629,9 +776,9 @@ void Storage::SaveCurrentBank() SaveBankFile(indexEntry.name(), this->currentBank); } -const Pedalboard &Storage::GetCurrentPreset() +const Pedalboard& Storage::GetCurrentPreset() { - auto &item = currentBank.getItem(currentBank.selectedPreset()); + auto& item = currentBank.getItem(currentBank.selectedPreset()); return item.preset(); } @@ -646,13 +793,13 @@ bool Storage::LoadPreset(int64_t instanceId) } return true; } -void Storage::SaveCurrentPreset(const Pedalboard &pedalboard) +void Storage::SaveCurrentPreset(const Pedalboard& pedalboard) { - auto &item = currentBank.getItem(currentBank.selectedPreset()); + auto& item = currentBank.getItem(currentBank.selectedPreset()); item.preset(pedalboard); SaveCurrentBank(); } -int64_t Storage::SaveCurrentPresetAs(const Pedalboard &pedalboard, int64_t bankInstanceId, const std::string &name, int64_t saveAfterInstanceId) +int64_t Storage::SaveCurrentPresetAs(const Pedalboard& pedalboard, int64_t bankInstanceId, const std::string& name, int64_t saveAfterInstanceId) { Pedalboard newPedalboard = pedalboard; newPedalboard.name(name); @@ -676,14 +823,14 @@ int64_t Storage::SaveCurrentPresetAs(const Pedalboard &pedalboard, int64_t bankI SaveBankFile(indexEntry.name(), bankFile); return -1; } - catch (const std::exception &e) + catch (const std::exception& e) { throw std::logic_error(SS("Bank file corrupted. " << e.what() << "(" << GetBankFileName(indexEntry.name()) << ")")); } } } -static std::string stripNumericSuffix(const std::string &name) +static std::string stripNumericSuffix(const std::string& name) { // remove (digit*) from the end of the string. // Find the last '(' character @@ -722,7 +869,7 @@ static std::string stripNumericSuffix(const std::string &name) return name.substr(0, pos); } -static std::string makeUniqueName(const std::string &name, const std::set &existingNames) +static std::string makeUniqueName(const std::string& name, const std::set& existingNames) { if (!existingNames.contains(name)) { @@ -741,25 +888,25 @@ static std::string makeUniqueName(const std::string &name, const std::set &presets) +int64_t Storage::ImportPresetsFromBank(int64_t bankInstanceId, const std::vector& presets) { if (bankIndex.selectedBank() == bankInstanceId) { throw std::runtime_error("Can't import to self."); } - std::set presetsSet{presets.begin(), presets.end()}; + std::set presetsSet{ presets.begin(), presets.end() }; auto indexEntry = this->bankIndex.getBankIndexEntry(bankInstanceId); std::set existingNames; - for (auto &preset : this->currentBank.presets()) + for (auto& preset : this->currentBank.presets()) { existingNames.insert(preset->preset().name()); } BankFile bankFile; LoadBankFile(indexEntry.name(), &bankFile); int64_t lastPresetId = -1; - for (auto &presetEntry : bankFile.presets()) + for (auto& presetEntry : bankFile.presets()) { if (presetsSet.contains(presetEntry->instanceId())) { @@ -773,7 +920,7 @@ int64_t Storage::ImportPresetsFromBank(int64_t bankInstanceId, const std::vector SaveCurrentBank(); return lastPresetId; } -int64_t Storage::CopyPresetsToBank(int64_t bankInstanceId, const std::vector &presets) +int64_t Storage::CopyPresetsToBank(int64_t bankInstanceId, const std::vector& presets) { if (bankIndex.selectedBank() == bankInstanceId) { @@ -784,15 +931,15 @@ int64_t Storage::CopyPresetsToBank(int64_t bankInstanceId, const std::vector presetsSet{presets.begin(), presets.end()}; + std::set presetsSet{ presets.begin(), presets.end() }; std::set existingNames; - for (auto &preset : bankFile.presets()) + for (auto& preset : bankFile.presets()) { existingNames.insert(preset->preset().name()); } - for (auto &presetEntry : this->currentBank.presets()) + for (auto& presetEntry : this->currentBank.presets()) { if (presetsSet.contains(presetEntry->instanceId())) { @@ -814,7 +961,7 @@ std::vector Storage::RequestBankPresets(int64_t bankInstanceId std::vector result; BankFile bankFile; LoadBankFile(indexEntry.name(), &bankFile); - for (auto &preset : bankFile.presets()) + for (auto& preset : bankFile.presets()) { result.push_back( PresetIndexEntry(preset->instanceId(), preset->preset().name())); @@ -822,19 +969,19 @@ std::vector Storage::RequestBankPresets(int64_t bankInstanceId return result; } -void Storage::SetPresetIndex(const PresetIndex &presets) +void Storage::SetPresetIndex(const PresetIndex& presets) { // painful because we must move unique_ptrs. - std::map *> entries; + std::map*> entries; for (int i = 0; i < this->currentBank.presets().size(); ++i) { - auto &preset = this->currentBank.presets()[i]; + auto& preset = this->currentBank.presets()[i]; entries[preset->instanceId()] = &(this->currentBank.presets()[i]); } - std::vector *> newPresets; + std::vector*> newPresets; for (size_t i = 0; i < presets.presets().size(); ++i) { - std::unique_ptr *p = entries[presets.presets()[i].instanceId()]; + std::unique_ptr* p = entries[presets.presets()[i].instanceId()]; if (p == nullptr) { throw PiPedalStateException("Presets do not match the currently loaded bank."); @@ -846,7 +993,7 @@ void Storage::SetPresetIndex(const PresetIndex &presets) bankFile.presets().resize(newPresets.size()); for (int i = 0; i < presets.presets().size(); ++i) { - std::unique_ptr *oldBankFilePreset = newPresets[i]; + std::unique_ptr* oldBankFilePreset = newPresets[i]; bankFile.presets()[i] = std::move((*oldBankFilePreset)); } @@ -857,11 +1004,11 @@ void Storage::SetPresetIndex(const PresetIndex &presets) this->SaveCurrentBank(); } -void Storage::GetPresetIndex(PresetIndex *pResult) +void Storage::GetPresetIndex(PresetIndex* pResult) { *pResult = PresetIndex(); pResult->selectedInstanceId(this->currentBank.selectedPreset()); - for (auto &item : this->currentBank.presets()) + for (auto& item : this->currentBank.presets()) { PresetIndexEntry entry; entry.instanceId(item->instanceId()); @@ -892,7 +1039,7 @@ Pedalboard Storage::GetPreset(int64_t instanceId) const throw PiPedalException("Not found."); } -int64_t Storage::DeletePresets(const std::vector &presetInstanceIds) +int64_t Storage::DeletePresets(const std::vector& presetInstanceIds) { int64_t newSelection = currentBank.selectedPreset(); for (auto presetId : presetInstanceIds) @@ -903,7 +1050,7 @@ int64_t Storage::DeletePresets(const std::vector &presetInstanceIds) return newSelection; } -bool Storage::RenamePreset(int64_t presetId, const std::string &name) +bool Storage::RenamePreset(int64_t presetId, const std::string& name) { if (this->currentBank.renamePreset(presetId, name)) { @@ -913,7 +1060,7 @@ bool Storage::RenamePreset(int64_t presetId, const std::string &name) return false; } -static int lastIndexOf(const char *sz, char c) +static int lastIndexOf(const char* sz, char c) { size_t len = strlen(sz); for (size_t i = len - 1; i >= 0; --i) @@ -927,13 +1074,13 @@ static int lastIndexOf(const char *sz, char c) } return -1; } -std::string Storage::GetPresetCopyName(const std::string &name) +std::string Storage::GetPresetCopyName(const std::string& name) { - const char *str = name.c_str(); + const char* str = name.c_str(); std::string stem; if (name.length() != 0 && name[name.length() - 1] == ')') { - const char *str = name.c_str(); + const char* str = name.c_str(); size_t pos = lastIndexOf(str, '('); if (pos == -1) { @@ -995,7 +1142,7 @@ int64_t Storage::CreateNewPreset() int64_t Storage::CopyPreset(int64_t fromId, int64_t toId) { - auto &fromItem = this->currentBank.getItem(fromId); + auto& fromItem = this->currentBank.getItem(fromId); int64_t result; if (toId == -1) { @@ -1006,7 +1153,7 @@ int64_t Storage::CopyPreset(int64_t fromId, int64_t toId) } else { - auto &toItem = this->currentBank.getItem(toId); + auto& toItem = this->currentBank.getItem(toId); toItem.preset(fromItem.preset()); result = toId; } @@ -1014,13 +1161,13 @@ int64_t Storage::CopyPreset(int64_t fromId, int64_t toId) return result; } -void Storage::SetJackChannelSelection(const JackChannelSelection &channelSelection) +void Storage::SetJackChannelSelection(const JackChannelSelection& channelSelection) { this->jackChannelSelection = channelSelection; this->isJackChannelSelectionValid = true; SaveChannelSelection(); } -JackChannelSelection Storage::GetJackChannelSelection(const JackConfiguration &jackConfiguration) +JackChannelSelection Storage::GetJackChannelSelection(const JackConfiguration& jackConfiguration) { if (!this->isJackChannelSelectionValid) { @@ -1033,7 +1180,7 @@ JackChannelSelection Storage::GetJackChannelSelection(const JackConfiguration &j return jackChannelSelection.RemoveInvalidChannels(jackConfiguration); } -static AlsaSequencerConfiguration MigrateRawMidiToAlsaSequencer(std::vector &selectedDevices) +static AlsaSequencerConfiguration MigrateRawMidiToAlsaSequencer(std::vector& selectedDevices) { AlsaSequencerConfiguration result; try @@ -1046,7 +1193,7 @@ static AlsaSequencerConfiguration MigrateRawMidiToAlsaSequencer(std::vectorname_.starts_with("hw:")) { - for (const auto &port : sequencerPorts) + for (const auto& port : sequencerPorts) { if (i->name_ == port.rawMidiDevice) { @@ -1058,7 +1205,7 @@ static AlsaSequencerConfiguration MigrateRawMidiToAlsaSequencer(std::vectoralsaSequencerConfiguration = result; } - catch (const std::exception &e) + catch (const std::exception& e) { Lv2Log::error("I/O error reading %s: %s", fileName.c_str(), e.what()); } @@ -1113,13 +1260,13 @@ void Storage::SaveAlsaSequencerConfiguration() json_writer writer(s); writer.write(this->alsaSequencerConfiguration); } - catch (const std::exception &e) + catch (const std::exception& e) { Lv2Log::error("I/O error writing %s: %s", fileName.c_str(), e.what()); } } -void Storage::SetAlsaSequencerConfiguration(const AlsaSequencerConfiguration &alsaSequencerConfiguration) +void Storage::SetAlsaSequencerConfiguration(const AlsaSequencerConfiguration& alsaSequencerConfiguration) { this->alsaSequencerConfiguration = alsaSequencerConfiguration; SaveAlsaSequencerConfiguration(); @@ -1142,7 +1289,7 @@ void Storage::LoadJackChannelSelection() reader.read(&this->jackChannelSelection); this->isJackChannelSelectionValid = true; } - catch (const std::exception &e) + catch (const std::exception& e) { Lv2Log::error("I/O error reading %s: %s", fileName.c_str(), e.what()); } @@ -1159,28 +1306,28 @@ void Storage::SaveChannelSelection() json_writer writer(s, false); writer.write(this->jackChannelSelection); } - catch (const std::exception &e) + catch (const std::exception& e) { Lv2Log::error("I/O error writing %s: %s", fileName.c_str(), e.what()); throw PiPedalStateException("Unexpected error writing Jack settings file."); } } -void Storage::RenameBank(int64_t bankId, const std::string &newName) +void Storage::RenameBank(int64_t bankId, const std::string& newName) { auto existingBank = this->bankIndex.getEntryByName(newName); if (existingBank != nullptr) { throw PiPedalStateException("A bank by that name already exists."); } - auto &entry = this->bankIndex.getBankIndexEntry(bankId); + auto& entry = this->bankIndex.getBankIndexEntry(bankId); std::filesystem::path oldPath = this->GetBankFileName(entry.name()); std::filesystem::path newPath = this->GetBankFileName(newName); try { std::filesystem::rename(oldPath, newPath); } - catch (std::exception &e) + catch (std::exception& e) { std::stringstream s; s << "Unable to rename the bank. (" << e.what() << ")"; @@ -1190,21 +1337,21 @@ void Storage::RenameBank(int64_t bankId, const std::string &newName) SaveBankIndex(); } -int64_t Storage::SaveBankAs(int64_t bankId, const std::string &newName) +int64_t Storage::SaveBankAs(int64_t bankId, const std::string& newName) { auto existingBank = this->bankIndex.getEntryByName(newName); if (existingBank != nullptr) { throw PiPedalStateException("A bank by that name already exists."); } - auto &entry = this->bankIndex.getBankIndexEntry(bankId); + auto& entry = this->bankIndex.getBankIndexEntry(bankId); std::filesystem::path oldPath = this->GetBankFileName(entry.name()); std::filesystem::path newPath = this->GetBankFileName(newName); try { std::filesystem::copy(oldPath, newPath); } - catch (std::exception &e) + catch (std::exception& e) { std::stringstream s; s << "Unable to save the bank. (" << e.what() << ")"; @@ -1223,7 +1370,7 @@ void Storage::MoveBank(int from, int to) int64_t Storage::GetBankByMidiBankNumber(uint8_t bankNumber) { - auto &entries = this->bankIndex.entries(); + auto& entries = this->bankIndex.entries(); if (bankNumber >= entries.size()) { if (entries.size() == 0) @@ -1234,11 +1381,11 @@ int64_t Storage::GetBankByMidiBankNumber(uint8_t bankNumber) } int64_t Storage::DeleteBank(int64_t bankId) { - auto &entries = this->bankIndex.entries(); + auto& entries = this->bankIndex.entries(); for (size_t i = 0; i < entries.size(); ++i) { - auto &entry = entries[i]; + auto& entry = entries[i]; if (entry.instanceId() == bankId) { @@ -1287,7 +1434,7 @@ int64_t Storage::GetCurrentPresetId() const return this->currentBank.selectedPreset(); } -int64_t Storage::UploadPreset(const BankFile &bankFile, int64_t uploadAfter) +int64_t Storage::UploadPreset(const BankFile& bankFile, int64_t uploadAfter) { int64_t lastPreset = this->currentBank.selectedPreset(); if (uploadAfter != -1) @@ -1317,7 +1464,7 @@ int64_t Storage::UploadPreset(const BankFile &bankFile, int64_t uploadAfter) this->SaveCurrentBank(); return lastPreset; } -int64_t Storage::UploadBank(BankFile &bankFile, int64_t uploadAfter) +int64_t Storage::UploadBank(BankFile& bankFile, int64_t uploadAfter) { int64_t lastBank = this->bankIndex.selectedBank(); if (uploadAfter != -1) @@ -1353,7 +1500,7 @@ int64_t Storage::UploadBank(BankFile &bankFile, int64_t uploadAfter) return lastBank; } -void Storage::SetGovernorSettings(const std::string &governor) +void Storage::SetGovernorSettings(const std::string& governor) { userSettings.governor_ = governor; SaveUserSettings(); @@ -1386,7 +1533,7 @@ std::string Storage::GetGovernorSettings() const return this->userSettings.governor_; } -bool Storage::SetWifiConfigSettings(const WifiConfigSettings &wifiConfigSettings) +bool Storage::SetWifiConfigSettings(const WifiConfigSettings& wifiConfigSettings) { WifiConfigSettings copyToSave = wifiConfigSettings; WifiConfigSettings previousValue; @@ -1413,7 +1560,7 @@ bool Storage::SetWifiConfigSettings(const WifiConfigSettings &wifiConfigSettings return configChanged; } -void Storage::SetWifiDirectConfigSettings(const WifiDirectConfigSettings &wifiDirectConfigSettings) +void Storage::SetWifiDirectConfigSettings(const WifiDirectConfigSettings& wifiDirectConfigSettings) { WifiDirectConfigSettings copyToSave = wifiDirectConfigSettings; copyToSave.rebootRequired_ = false; @@ -1444,7 +1591,7 @@ void Storage::LoadUserSettings() reader.read(&userSettings); } } - catch (const std::exception &) + catch (const std::exception&) { } this->wifiConfigSettings.valid_ = true; @@ -1477,7 +1624,7 @@ WifiDirectConfigSettings Storage::GetWifiDirectConfigSettings() return this->wifiDirectConfigSettings; } -void Storage::SaveCurrentPreset(const CurrentPreset ¤tPreset) +void Storage::SaveCurrentPreset(const CurrentPreset& currentPreset) { try { @@ -1487,12 +1634,12 @@ void Storage::SaveCurrentPreset(const CurrentPreset ¤tPreset) json_writer writer(f, true); writer.write(currentPreset); } - catch (std::exception &) + catch (std::exception&) { // called from destructor. Must be nothrow(). } } -bool Storage::RestoreCurrentPreset(CurrentPreset *pResult) +bool Storage::RestoreCurrentPreset(CurrentPreset* pResult) { std::filesystem::path path = GetCurrentPresetPath(); if (std::filesystem::exists(path)) @@ -1504,7 +1651,7 @@ bool Storage::RestoreCurrentPreset(CurrentPreset *pResult) reader.read(pResult); std::filesystem::remove(path); // one-shot only, restore the state from the last *orderly* shutdown. } - catch (const std::exception &e) + catch (const std::exception& e) { Lv2Log::warning(SS("Failed to restore current preset. " << e.what())); @@ -1533,9 +1680,9 @@ void Storage::SetPluginPresetIndexVersion(uint64_t version) } } -bool Storage::HasPluginPresets(const std::string &pluginUri) const +bool Storage::HasPluginPresets(const std::string& pluginUri) const { - for (const auto &entry : this->pluginPresetIndex.entries_) + for (const auto& entry : this->pluginPresetIndex.entries_) { if (entry.pluginUri_ == pluginUri) { @@ -1545,9 +1692,9 @@ bool Storage::HasPluginPresets(const std::string &pluginUri) const return false; } -std::filesystem::path Storage::GetPluginPresetPath(const std::string &pluginUri) const +std::filesystem::path Storage::GetPluginPresetPath(const std::string& pluginUri) const { - for (const auto &entry : this->pluginPresetIndex.entries_) + for (const auto& entry : this->pluginPresetIndex.entries_) { if (entry.pluginUri_ == pluginUri) { @@ -1557,7 +1704,7 @@ std::filesystem::path Storage::GetPluginPresetPath(const std::string &pluginUri) throw PiPedalArgumentException("Plugin preset file not found."); } -void Storage::MergePluginPresets(const std::string &pluginUri, const PluginPresets &presets) +void Storage::MergePluginPresets(const std::string& pluginUri, const PluginPresets& presets) { std::string name; std::filesystem::path path; @@ -1581,12 +1728,12 @@ void Storage::MergePluginPresets(const std::string &pluginUri, const PluginPrese reader.read(&existingPresets); } } - catch (const std::exception &e) + catch (const std::exception& e) { Lv2Log::error(SS("Storage::MergePluginPresets: Can't reading existing plugin presets." << e.what())); } } - for (const PluginPreset &preset : presets.presets_) + for (const PluginPreset& preset : presets.presets_) { existingPresets.MergePreset(preset); @@ -1619,7 +1766,7 @@ void Storage::MergePluginPresets(const std::string &pluginUri, const PluginPrese } } -void Storage::SavePluginPresets(const std::string &pluginUri, const PluginPresets &presets) +void Storage::SavePluginPresets(const std::string& pluginUri, const PluginPresets& presets) { std::string name; std::filesystem::path path; @@ -1662,7 +1809,7 @@ void Storage::SavePluginPresets(const std::string &pluginUri, const PluginPreset } } -PluginPresets Storage::GetPluginPresets(const std::string &pluginUri) const +PluginPresets Storage::GetPluginPresets(const std::string& pluginUri) const { PluginPresets result; if (!HasPluginPresets(pluginUri)) @@ -1681,36 +1828,36 @@ PluginPresets Storage::GetPluginPresets(const std::string &pluginUri) const reader.read(&result); return result; } -PluginUiPresets Storage::GetPluginUiPresets(const std::string &pluginUri) const +PluginUiPresets Storage::GetPluginUiPresets(const std::string& pluginUri) const { PluginPresets presets = GetPluginPresets(pluginUri); PluginUiPresets result; result.pluginUri_ = presets.pluginUri_; for (size_t i = 0; i < presets.presets_.size(); ++i) { - const auto &preset = presets.presets_[i]; + const auto& preset = presets.presets_[i]; result.presets_.push_back( PluginUiPreset{ preset.label_, - preset.instanceId_}); + preset.instanceId_ }); } return result; } -PluginPresetValues Storage::GetPluginPresetValues(const std::string &pluginUri, uint64_t instanceId) +PluginPresetValues Storage::GetPluginPresetValues(const std::string& pluginUri, uint64_t instanceId) { auto presets = GetPluginPresets(pluginUri); - for (const auto &preset : presets.presets_) + for (const auto& preset : presets.presets_) { if (preset.instanceId_ == instanceId) { PluginPresetValues result; - for (const auto &valuePair : preset.controlValues_) + for (const auto& valuePair : preset.controlValues_) { result.controls.push_back(ControlValue(valuePair.first.c_str(), valuePair.second)); } - for (const auto &pair : preset.pathProperties_) + for (const auto& pair : preset.pathProperties_) { result.pathProperties[pair.first] = pair.second; } @@ -1722,24 +1869,24 @@ PluginPresetValues Storage::GetPluginPresetValues(const std::string &pluginUri, throw PiPedalException("Plugin preset not found."); } -void Storage::ToAbstractPaths(PluginPreset &pluginPreset) +void Storage::ToAbstractPaths(PluginPreset& pluginPreset) { if (pluginPreset.pathProperties_.size() != 0) { std::map newPathProperties; - for (const auto &pair : pluginPreset.pathProperties_) + for (const auto& pair : pluginPreset.pathProperties_) { newPathProperties[pair.first] = this->ToAbstractPathFromJson(pair.second); } pluginPreset.pathProperties_ = newPathProperties; } } -void Storage::FromAbstractPaths(PluginPreset &pluginPreset) +void Storage::FromAbstractPaths(PluginPreset& pluginPreset) { if (pluginPreset.pathProperties_.size() != 0) { std::map newPathProperties; - for (const auto &pair : pluginPreset.pathProperties_) + for (const auto& pair : pluginPreset.pathProperties_) { newPathProperties[pair.first] = this->FromAbstractPathJson(pair.second); } @@ -1748,22 +1895,22 @@ void Storage::FromAbstractPaths(PluginPreset &pluginPreset) } uint64_t Storage::SavePluginPreset( - const std::string &name, - const PedalboardItem &pedalboardItem) + const std::string& name, + const PedalboardItem& pedalboardItem) { - const std::string &pluginUri = pedalboardItem.uri(); + const std::string& pluginUri = pedalboardItem.uri(); auto presets = GetPluginPresets(pluginUri); uint64_t result = -1; bool existing = false; for (size_t i = 0; i < presets.presets_.size(); ++i) { - auto &preset = presets.presets_[i]; + auto& preset = presets.presets_[i]; if (preset.label_ == name) { existing = true; result = preset.instanceId_; - PluginPreset pluginPreset{preset.instanceId_, preset.label_, pedalboardItem}; + PluginPreset pluginPreset{ preset.instanceId_, preset.label_, pedalboardItem }; presets.presets_[i] = PluginPreset(preset.instanceId_, preset.label_, pedalboardItem); break; @@ -1784,15 +1931,15 @@ uint64_t Storage::SavePluginPreset( } uint64_t Storage::SavePluginPreset( - const std::string &pluginUri, - PluginPreset &pluginPreset) + const std::string& pluginUri, + PluginPreset& pluginPreset) { auto presets = GetPluginPresets(pluginUri); uint64_t result = -1; bool existing = false; for (size_t i = 0; i < presets.presets_.size(); ++i) { - auto &preset = presets.presets_[i]; + auto& preset = presets.presets_[i]; if (preset.label_ == pluginPreset.label_) { existing = true; @@ -1814,7 +1961,7 @@ uint64_t Storage::SavePluginPreset( return result; } -void Storage::UpdatePluginPresets(const PluginUiPresets &pluginPresets) +void Storage::UpdatePluginPresets(const PluginUiPresets& pluginPresets) { // handles deletions, renaming, and reordering only. // If you need to add a preset, you need to call SavePluginPreset or DuplicatePluginPreset instead. @@ -1824,7 +1971,7 @@ void Storage::UpdatePluginPresets(const PluginUiPresets &pluginPresets) newPresets.pluginUri_ = pluginPresets.pluginUri_; newPresets.nextInstanceId_ = presets.nextInstanceId_; - for (const auto &preset : pluginPresets.presets_) + for (const auto& preset : pluginPresets.presets_) { PluginPreset newPreset = presets.GetPreset(preset.instanceId_); newPreset.label_ = preset.label_; @@ -1833,7 +1980,7 @@ void Storage::UpdatePluginPresets(const PluginUiPresets &pluginPresets) SavePluginPresets(newPresets.pluginUri_, newPresets); } -static std::string stripCopySuffix(const std::string &s) +static std::string stripCopySuffix(const std::string& s) { int pos = s.length() - 1; if (pos >= 0 && s[pos] == ')') @@ -1855,7 +2002,7 @@ static std::string stripCopySuffix(const std::string &s) } return s; } -uint64_t Storage::CopyPluginPreset(const std::string &pluginUri, uint64_t presetId) +uint64_t Storage::CopyPluginPreset(const std::string& pluginUri, uint64_t presetId) { PluginPresets presets = this->GetPluginPresets(pluginUri); size_t pos = presets.Find(presetId); @@ -1904,7 +2051,7 @@ std::map Storage::GetFavorites() const } return result; } -void Storage::SetFavorites(const std::map &favorites) +void Storage::SetFavorites(const std::map& favorites) { std::filesystem::path fileName = this->dataRoot / "favorites.json"; pipedal::ofstream_synced f; @@ -1940,7 +2087,7 @@ pipedal::JackServerSettings Storage::GetJackServerSettings() return result; } -void Storage::SetJackServerSettings(const pipedal::JackServerSettings &jackConfiguration) +void Storage::SetJackServerSettings(const pipedal::JackServerSettings& jackConfiguration) { std::filesystem::path fileName = this->dataRoot / "AudioConfig.json"; pipedal::ofstream_synced f; @@ -1952,7 +2099,7 @@ void Storage::SetJackServerSettings(const pipedal::JackServerSettings &jackConfi } } -void Storage::SetSystemMidiBindings(const std::vector &bindings) +void Storage::SetSystemMidiBindings(const std::vector& bindings) { std::filesystem::path fileName = this->dataRoot / "config" / "SystemMidiBindings.json"; pipedal::ofstream_synced f; @@ -1963,9 +2110,9 @@ void Storage::SetSystemMidiBindings(const std::vector &bindings) writer.write(bindings); } } -static bool hasBinding(std::vector &bindings, const std::string &name) +static bool hasBinding(std::vector& bindings, const std::string& name) { - for (auto &binding : bindings) + for (auto& binding : bindings) { if (binding.symbol() == name) { @@ -2015,7 +2162,7 @@ std::vector Storage::GetSystemMidiBindings() } return result; } - catch (const std::exception &e) + catch (const std::exception& e) { Lv2Log::warning(SS("Can't read file " << fileName << ". " << e.what())); } @@ -2040,7 +2187,7 @@ std::vector Storage::GetSystemMidiBindings() return result; } -static bool containsDirectorySeparator(const std::string &value) +static bool containsDirectorySeparator(const std::string& value) { if (value.find("/") != std::string::npos) return true; // linux @@ -2056,7 +2203,7 @@ static void ThrowPermissionDeniedError() throw std::logic_error("Permission denied."); } -static bool ensureNoDotDot(const std::filesystem::path &path) +static bool ensureNoDotDot(const std::filesystem::path& path) { for (auto segment_ : path) { @@ -2082,7 +2229,7 @@ static bool ensureNoDotDot(const std::filesystem::path &path) return true; } -bool isInfoFile(const fs::path &path) +bool isInfoFile(const fs::path& path) { auto extension = path.extension(); if (extension == ".pdf") @@ -2105,37 +2252,37 @@ bool isInfoFile(const fs::path &path) return false; } -static bool isInfoFile(const FileEntry &l) +static bool isInfoFile(const FileEntry& l) { return isInfoFile(l.displayName_); } static void AddFilesToResult( - FileRequestResult &result, - const ModFileTypes::ModDirectory *modDirectoryInfo, // yyx - const UiFileProperty &fileProperty, - const fs::path &rootPath) + FileRequestResult& result, + const ModFileTypes::ModDirectory* modDirectoryInfo, // yyx + const UiFileProperty& fileProperty, + const fs::path& rootPath) { if (!fs::exists(rootPath)) { return; // silently without error. } - auto &resultFiles = result.files_; + auto& resultFiles = result.files_; std::set validExtensions = fileProperty.GetPermittedFileExtensions( modDirectoryInfo ? modDirectoryInfo->modType : ""); try { - for (auto const &dir_entry : std::filesystem::directory_iterator(rootPath)) + for (auto const& dir_entry : std::filesystem::directory_iterator(rootPath)) { if (!IsValidUtf8(dir_entry.path().string())) { Lv2Log::warning("Invalid UTF-8 name in directory: " + dir_entry.path().string()); continue; // skip invalid UTF-8 names. } - const auto &path = dir_entry.path(); + const auto& path = dir_entry.path(); auto name = path.filename().string(); if (dir_entry.is_regular_file()) { @@ -2155,11 +2302,11 @@ static void AddFilesToResult( } else if (dir_entry.is_directory()) { - resultFiles.push_back(FileEntry{path, SafeFilenameToString(name), true, fs::is_symlink(path)}); + resultFiles.push_back(FileEntry{ path, SafeFilenameToString(name), true, fs::is_symlink(path) }); } } } - catch (const std::exception &error) + catch (const std::exception& error) { throw std::logic_error( SS("GetFileList failed. " << rootPath.string() << " - " << error.what())); @@ -2169,41 +2316,41 @@ static void AddFilesToResult( auto collator = Locale::GetInstance()->GetCollator(); - std::sort(resultFiles.begin(), resultFiles.end(), [&collator](const FileEntry &l, const FileEntry &r) - { - if (l.isDirectory_ != r.isDirectory_) + std::sort(resultFiles.begin(), resultFiles.end(), [&collator](const FileEntry& l, const FileEntry& r) { - return l.isDirectory_ > r.isDirectory_; - } - bool lIsInfoFile = isInfoFile(l); - bool rIsInfoFile = isInfoFile(r); - if (lIsInfoFile != rIsInfoFile) - { - return lIsInfoFile > rIsInfoFile; - } - return collator->Compare(l.displayName_,r.displayName_) < 0; }); + if (l.isDirectory_ != r.isDirectory_) + { + return l.isDirectory_ > r.isDirectory_; + } + bool lIsInfoFile = isInfoFile(l); + bool rIsInfoFile = isInfoFile(r); + if (lIsInfoFile != rIsInfoFile) + { + return lIsInfoFile > rIsInfoFile; + } + return collator->Compare(l.displayName_, r.displayName_) < 0; }); } static void AddTracksToResult( - const fs::path &audioRootDirectory, - FileRequestResult &result, - const ModFileTypes::ModDirectory *modDirectoryInfo, // yyx - const UiFileProperty &fileProperty, - const fs::path &rootPath) + const fs::path& audioRootDirectory, + FileRequestResult& result, + const ModFileTypes::ModDirectory* modDirectoryInfo, // yyx + const UiFileProperty& fileProperty, + const fs::path& rootPath) { if (!fs::exists(rootPath)) { return; // silently without error. } - auto &resultFiles = result.files_; + auto& resultFiles = result.files_; std::set validExtensions = fileProperty.GetPermittedFileExtensions( modDirectoryInfo ? modDirectoryInfo->modType : ""); if (validExtensions.size() == 0) { - const auto &audioExtensions = MimeTypes::instance().AudioExtensions(); + const auto& audioExtensions = MimeTypes::instance().AudioExtensions(); validExtensions.insert(audioExtensions.begin(), audioExtensions.end()); } validExtensions.insert(".jpg"); @@ -2213,29 +2360,29 @@ static void AddTracksToResult( // Add directories first. try { - for (auto const &dir_entry : std::filesystem::directory_iterator(rootPath)) + for (auto const& dir_entry : std::filesystem::directory_iterator(rootPath)) { if (!IsValidUtf8(dir_entry.path().string())) { Lv2Log::warning("Invalid UTF-8 name in directory: " + dir_entry.path().string()); continue; // skip invalid UTF-8 names. } - const auto &path = dir_entry.path(); + const auto& path = dir_entry.path(); auto name = path.filename().string(); try { if (dir_entry.is_directory()) { - resultFiles.push_back(FileEntry{path, name, true, dir_entry.is_symlink()}); + resultFiles.push_back(FileEntry{ path, name, true, dir_entry.is_symlink() }); } } - catch (const std::exception &e) + catch (const std::exception& e) { Lv2Log::warning(SS("Failed to add directory entry: " << path.string() << " - " << e.what())); } } } - catch (const std::exception &error) + catch (const std::exception& error) { throw std::logic_error( SS("AddTracksToResult failed to enumerate directories. " << rootPath.string() << " - " << error.what())); @@ -2244,7 +2391,7 @@ static void AddTracksToResult( std::sort( resultFiles.begin(), resultFiles.end(), - [collator](const FileEntry &l, const FileEntry &r) + [collator](const FileEntry& l, const FileEntry& r) { if (l.isDirectory_ != r.isDirectory_) { @@ -2261,11 +2408,11 @@ static void AddTracksToResult( }); // Add audio files. auto audioFiles = AudioDirectoryInfo::Create(rootPath, - GetShadowIndexDirectory(audioRootDirectory, rootPath)); + GetShadowIndexDirectory(audioRootDirectory, rootPath)); try { - for (const auto &audioFile : audioFiles->GetFiles()) + for (const auto& audioFile : audioFiles->GetFiles()) { fs::path audioFilePath = rootPath / audioFile.fileName(); std::string extension = UiFileProperty::GetFileExtension(audioFilePath); @@ -2280,29 +2427,29 @@ static void AddTracksToResult( } } } - catch (const std::exception &error) + catch (const std::exception& error) { throw std::logic_error( SS("AddTracksToResult failed to enumerate audio files. " << rootPath.string() << " - " << error.what())); } } - catch (const std::exception &error) + catch (const std::exception& error) { throw std::logic_error(SS("GetFileList failed. " << error.what() << "(" << rootPath.string() << ")")); } } -FileRequestResult Storage::GetModFileList2(const std::string &relativePath, const UiFileProperty &fileProperty) +FileRequestResult Storage::GetModFileList2(const std::string& relativePath, const UiFileProperty& fileProperty) { FileRequestResult result; - const fs::path &uploadsDirectory = GetPluginUploadDirectory(); + const fs::path& uploadsDirectory = GetPluginUploadDirectory(); if (relativePath.empty()) { // return the synthetic root. result.isProtected_ = true; - for (const auto &modDirectory : fileProperty.modDirectories()) + for (const auto& modDirectory : fileProperty.modDirectories()) { const auto directoryInfo = ModFileTypes::GetModDirectory(modDirectory); if (directoryInfo) @@ -2316,27 +2463,27 @@ FileRequestResult Storage::GetModFileList2(const std::string &relativePath, cons result.files_.push_back( FileEntry(uploadsDirectory / fileProperty.directory(), fs::path(fileProperty.directory()).filename().string(), true, true)); } - result.breadcrumbs_.push_back({"", "Home"}); + result.breadcrumbs_.push_back({ "", "Home" }); result.currentDirectory_ = relativePath; return result; } fs::path modDirectoryPath; - result.breadcrumbs_.push_back({"", "Home"}); - fs::path fsRelativePath{relativePath}; + result.breadcrumbs_.push_back({ "", "Home" }); + fs::path fsRelativePath{ relativePath }; - const ModFileTypes::ModDirectory *rootModDirectory = nullptr; - for (const auto &modDirectory : fileProperty.modDirectories()) + const ModFileTypes::ModDirectory* rootModDirectory = nullptr; + for (const auto& modDirectory : fileProperty.modDirectories()) { - const ModFileTypes::ModDirectory *modDirectoryInfo = ModFileTypes::GetModDirectory(modDirectory); + const ModFileTypes::ModDirectory* modDirectoryInfo = ModFileTypes::GetModDirectory(modDirectory); if (modDirectoryInfo) { if (IsSubdirectory(fsRelativePath, uploadsDirectory / modDirectoryInfo->pipedalPath)) { rootModDirectory = modDirectoryInfo; modDirectoryPath = uploadsDirectory / modDirectoryInfo->pipedalPath; - result.breadcrumbs_.push_back({modDirectoryPath.string(), - (modDirectoryInfo->displayName)}); + result.breadcrumbs_.push_back({ modDirectoryPath.string(), + (modDirectoryInfo->displayName) }); break; } } @@ -2346,8 +2493,8 @@ FileRequestResult Storage::GetModFileList2(const std::string &relativePath, cons if (IsSubdirectory(fsRelativePath, uploadsDirectory / fileProperty.directory())) { modDirectoryPath = uploadsDirectory / fileProperty.directory(); - result.breadcrumbs_.push_back({modDirectoryPath.string(), - SafeFilenameToString(fs::path(fileProperty.directory()).filename().string())}); + result.breadcrumbs_.push_back({ modDirectoryPath.string(), + SafeFilenameToString(fs::path(fileProperty.directory()).filename().string()) }); } else { @@ -2357,8 +2504,8 @@ FileRequestResult Storage::GetModFileList2(const std::string &relativePath, cons // add reaming path segments as breadcrumbs. { - fs::path modPath{modDirectoryPath}; - fs::path rp{relativePath}; + fs::path modPath{ modDirectoryPath }; + fs::path rp{ relativePath }; auto iRp = rp.begin(); // skip past one or more segments in the modDirectoryPath. for (auto iModPath = modPath.begin(); iModPath != modPath.end(); ++iModPath) @@ -2372,7 +2519,7 @@ FileRequestResult Storage::GetModFileList2(const std::string &relativePath, cons while (iRp != rp.end()) { cumulativePath /= (*iRp); - result.breadcrumbs_.push_back({cumulativePath, SafeFilenameToString(*iRp)}); + result.breadcrumbs_.push_back({ cumulativePath, SafeFilenameToString(*iRp) }); ++iRp; } } @@ -2389,7 +2536,7 @@ FileRequestResult Storage::GetModFileList2(const std::string &relativePath, cons return result; } -static bool IsChildDirectory(const fs::path &child, const fs::path &parent) +static bool IsChildDirectory(const fs::path& child, const fs::path& parent) { auto iChild = child.begin(); for (auto i = parent.begin(); i != parent.end(); ++i) @@ -2403,7 +2550,7 @@ static bool IsChildDirectory(const fs::path &child, const fs::path &parent) return true; } -FileRequestResult Storage::GetFileList2(const std::string &relativePath_, const UiFileProperty &fileProperty) +FileRequestResult Storage::GetFileList2(const std::string& relativePath_, const UiFileProperty& fileProperty) { std::string absolutePath = relativePath_; if (!ensureNoDotDot(absolutePath)) @@ -2446,8 +2593,8 @@ FileRequestResult Storage::GetFileList2(const std::string &relativePath_, const { // watch out for resource files!!! - result.breadcrumbs_.push_back({"", "Home"}); - fs::path fsAbsolutePath{absolutePath}; + result.breadcrumbs_.push_back({ "", "Home" }); + fs::path fsAbsolutePath{ absolutePath }; auto iAbsolutePath = fsAbsolutePath.begin(); for (auto i = pluginRootDirectory.begin(); i != pluginRootDirectory.end(); ++i) { @@ -2462,7 +2609,7 @@ FileRequestResult Storage::GetFileList2(const std::string &relativePath_, const while (iAbsolutePath != fsAbsolutePath.end()) { cumulativePath /= (*iAbsolutePath); - result.breadcrumbs_.push_back({cumulativePath.string(), SafeFilenameToString(iAbsolutePath->string())}); + result.breadcrumbs_.push_back({ cumulativePath.string(), SafeFilenameToString(iAbsolutePath->string()) }); ++iAbsolutePath; } } @@ -2471,7 +2618,7 @@ FileRequestResult Storage::GetFileList2(const std::string &relativePath_, const throw std::runtime_error(SS("Improper location. " << absolutePath)); } - const ModFileTypes::ModDirectory *pModDirectory = nullptr; + const ModFileTypes::ModDirectory* pModDirectory = nullptr; if (fileProperty.modDirectories().size() > 0) { pModDirectory = ModFileTypes::GetModDirectory(fileProperty.modDirectories()[0]); @@ -2488,7 +2635,7 @@ FileRequestResult Storage::GetFileList2(const std::string &relativePath_, const return result; } -bool Storage::IsValidSampleFileName(const std::filesystem::path &fileName) +bool Storage::IsValidSampleFileName(const std::filesystem::path& fileName) { if (!fileName.is_absolute()) { @@ -2523,7 +2670,7 @@ bool Storage::IsValidSampleFileName(const std::filesystem::path &fileName) } return true; } -void Storage::DeleteSampleFile(const std::filesystem::path &fileName) +void Storage::DeleteSampleFile(const std::filesystem::path& fileName) { if (!IsValidSampleFileName(fileName)) { @@ -2563,14 +2710,14 @@ void Storage::DeleteSampleFile(const std::filesystem::path &fileName) } } } - catch (const std::exception &) + catch (const std::exception&) { throw std::logic_error("Permission denied."); } } -std::filesystem::path Storage::MakeUserFilePath(const std::string &directory, const std::string &filename) +std::filesystem::path Storage::MakeUserFilePath(const std::string& directory, const std::string& filename) { - std::filesystem::path filePath{filename}; + std::filesystem::path filePath{ filename }; std::filesystem::path result = fs::path(directory) / filename; if (!result.is_absolute()) @@ -2584,12 +2731,12 @@ std::filesystem::path Storage::MakeUserFilePath(const std::string &directory, co return result; } -bool Storage::IsValidReadmeFile(const std::filesystem::path &fullPath) +bool Storage::IsValidReadmeFile(const std::filesystem::path& fullPath) { return isInfoFile(fullPath.filename().string()); } -bool Storage::IsValidArtworkFile(const std::filesystem::path &fullPath) +bool Storage::IsValidArtworkFile(const std::filesystem::path& fullPath) { if (IsInAudioTracksDirectory(fullPath) && isArtworkFileName(fullPath.filename().string())) { @@ -2598,10 +2745,10 @@ bool Storage::IsValidArtworkFile(const std::filesystem::path &fullPath) } return false; } -std::string Storage::UploadUserFile(const std::string &directory, - UiFileProperty::ptr uiFileProperty, - const std::string &filename, - std::istream &stream, size_t contentLength) +std::string Storage::UploadUserFile(const std::string& directory, + UiFileProperty::ptr uiFileProperty, + const std::string& filename, + std::istream& stream, size_t contentLength) { std::filesystem::path path; if (directory.length() != 0) @@ -2617,7 +2764,7 @@ std::string Storage::UploadUserFile(const std::string &directory, { relativePath = MakeRelativePath(path, this->GetPluginUploadDirectory()); } - catch (const std::exception &e) + catch (const std::exception& e) { throw std::logic_error("Permission denied. Path is outside the upload storage directory."); } @@ -2640,7 +2787,7 @@ std::string Storage::UploadUserFile(const std::string &directory, std::vector buffer; size_t BUFFER_SIZE = 64 * 1024; buffer.resize(BUFFER_SIZE); - char *pBuffer = (char *)&(buffer[0]); + char* pBuffer = (char*)&(buffer[0]); while (contentLength != 0) { size_t thisTime = std::min(BUFFER_SIZE, contentLength); @@ -2657,7 +2804,7 @@ std::string Storage::UploadUserFile(const std::string &directory, contentLength -= thisTime; } } - catch (const std::exception &e) + catch (const std::exception& e) { Lv2Log::error(SS("Upload failed. " << e.what())); std::filesystem::remove(path); @@ -2667,7 +2814,7 @@ std::string Storage::UploadUserFile(const std::string &directory, return path.string(); } -std::string Storage::CreateNewSampleDirectory(const std::string &relativePath, const UiFileProperty &uiFileProperty) +std::string Storage::CreateNewSampleDirectory(const std::string& relativePath, const UiFileProperty& uiFileProperty) { if (uiFileProperty.directory().empty()) { @@ -2686,9 +2833,9 @@ std::string Storage::CreateNewSampleDirectory(const std::string &relativePath, c return path; } std::string Storage::RenameFilePropertyFile( - const std::string &oldRelativePath, - const std::string &newRelativePath, - const UiFileProperty &uiFileProperty) + const std::string& oldRelativePath, + const std::string& newRelativePath, + const UiFileProperty& uiFileProperty) { if (uiFileProperty.directory().empty()) { @@ -2730,7 +2877,7 @@ std::string Storage::RenameFilePropertyFile( return newPath; } -fs::path MakeVersionedPath(const fs::path &path) +fs::path MakeVersionedPath(const fs::path& path) { if (!fs::exists(path)) { @@ -2778,9 +2925,9 @@ fs::path MakeVersionedPath(const fs::path &path) } std::string Storage::CopyFilePropertyFile( - const std::string &oldRelativePath, - const std::string &newRelativePath, - const UiFileProperty &uiFileProperty, + const std::string& oldRelativePath, + const std::string& newRelativePath, + const UiFileProperty& uiFileProperty, bool overwrite) { if (uiFileProperty.directory().empty()) @@ -2832,7 +2979,7 @@ std::string Storage::CopyFilePropertyFile( return newPath; } -void Storage::FillSampleDirectoryTree(FilePropertyDirectoryTree *node, const std::filesystem::path &directory) const +void Storage::FillSampleDirectoryTree(FilePropertyDirectoryTree* node, const std::filesystem::path& directory) const { for (auto child : std::filesystem::directory_iterator(directory)) { @@ -2844,7 +2991,7 @@ void Storage::FillSampleDirectoryTree(FilePropertyDirectoryTree *node, const std } if (child.is_directory()) { - const auto &childPath = child.path(); + const auto& childPath = child.path(); FilePropertyDirectoryTree::ptr childTree = std::make_unique(childPath); FillSampleDirectoryTree(childTree.get(), childPath); node->children_.push_back(std::move(childTree)); @@ -2852,17 +2999,17 @@ void Storage::FillSampleDirectoryTree(FilePropertyDirectoryTree *node, const std } auto collator = Locale::GetInstance()->GetCollator(); std::sort(node->children_.begin(), node->children_.end(), - [&collator](const FilePropertyDirectoryTree::ptr &left, const FilePropertyDirectoryTree::ptr &right) - { - return collator->Compare(left->directoryName_, right->directoryName_) < 0; - }); + [&collator](const FilePropertyDirectoryTree::ptr& left, const FilePropertyDirectoryTree::ptr& right) + { + return collator->Compare(left->directoryName_, right->directoryName_) < 0; + }); } -static void GetAllExtensions(std::set &result, const std::filesystem::path &path) +static void GetAllExtensions(std::set& result, const std::filesystem::path& path) { assert(fs::is_directory(path)); - for (const auto &dirEnt : fs::directory_iterator(path)) + for (const auto& dirEnt : fs::directory_iterator(path)) { if (!IsValidUtf8(dirEnt.path().string())) { @@ -2886,7 +3033,7 @@ static void GetAllExtensions(std::set &result, const std::filesyste } } -static std::set GetAllExtensions(const std::filesystem::path &path) +static std::set GetAllExtensions(const std::filesystem::path& path) { std::set result; if (fs::is_regular_file(path)) @@ -2899,7 +3046,7 @@ static std::set GetAllExtensions(const std::filesystem::path &path) } return result; } -FilePropertyDirectoryTree::ptr Storage::GetFilePropertydirectoryTree(const UiFileProperty &uiFileProperty, const std::filesystem::path &selectedPath) +FilePropertyDirectoryTree::ptr Storage::GetFilePropertydirectoryTree(const UiFileProperty& uiFileProperty, const std::filesystem::path& selectedPath) { fs::path uploadDirectory = this->GetPluginUploadDirectory(); @@ -2908,7 +3055,7 @@ FilePropertyDirectoryTree::ptr Storage::GetFilePropertydirectoryTree(const UiFil { relativePath = MakeRelativePath(selectedPath, uploadDirectory); } - catch (const std::exception &e) + catch (const std::exception& e) { // not an upload directory. throw std::runtime_error(SS("Permission denied: " << selectedPath)); @@ -2927,7 +3074,7 @@ FilePropertyDirectoryTree::ptr Storage::GetFilePropertydirectoryTree(const UiFil result->isProtected_ = true; std::string parentModDirectory = uiFileProperty.getParentModDirectory(relativePath); - for (const auto &modDirectory : uiFileProperty.modDirectories()) + for (const auto& modDirectory : uiFileProperty.modDirectories()) { auto modDirectoryInfo = ModFileTypes::GetModDirectory(modDirectory); if (modDirectoryInfo) @@ -2935,7 +3082,7 @@ FilePropertyDirectoryTree::ptr Storage::GetFilePropertydirectoryTree(const UiFil if (IsSubset(fileExtensions, modDirectoryInfo->fileExtensions) || modDirectoryInfo->fileExtensions.contains(".*") || modDirectoryInfo->fileExtensions.empty() // Private directory that accepts files of any type. - ) + ) { auto childPath = uploadDirectory / modDirectoryInfo->pipedalPath; FilePropertyDirectoryTree::ptr child = std::make_unique( @@ -2973,30 +3120,30 @@ FilePropertyDirectoryTree::ptr Storage::GetFilePropertydirectoryTree(const UiFil } } -bool Storage::IsInAudioTracksDirectory(const std::filesystem::path &path) const +bool Storage::IsInAudioTracksDirectory(const std::filesystem::path& path) const { std::filesystem::path audioTracksDirectory = this->GetPluginUploadDirectory() / "shared/audio/Tracks"; return IsSubdirectory(path, audioTracksDirectory); } -bool Storage::IsInUploadsDirectory(const std::filesystem::path &path) const +bool Storage::IsInUploadsDirectory(const std::filesystem::path& path) const { return IsSubdirectory(path, this->GetPluginUploadDirectory()); } -const PluginPresetIndex &Storage::GetPluginPresetIndex() +const PluginPresetIndex& Storage::GetPluginPresetIndex() { return pluginPresetIndex; } -std::filesystem::path Storage::FromAbstractPathString(const std::string &stringPath) +std::filesystem::path Storage::FromAbstractPathString(const std::string& stringPath) { if (stringPath.empty()) { return ""; } - fs::path path{stringPath}; + fs::path path{ stringPath }; if (path.is_absolute()) { return path; @@ -3004,7 +3151,7 @@ std::filesystem::path Storage::FromAbstractPathString(const std::string &stringP return GetPluginUploadDirectory() / path; } -std::string Storage::ToAbstractPathFromJson(const std::string &pathJson) +std::string Storage::ToAbstractPathFromJson(const std::string& pathJson) { json_variant v = json_variant::parse(pathJson); @@ -3012,7 +3159,7 @@ std::string Storage::ToAbstractPathFromJson(const std::string &pathJson) return v.to_string(); } -std::string Storage::FromAbstractPathJson(const std::string &pathJson) +std::string Storage::FromAbstractPathJson(const std::string& pathJson) { json_variant v = json_variant::parse(pathJson); @@ -3061,14 +3208,14 @@ ChannelRouterSettings::ptr Storage::LoadChannelRouterSettings() this->channelSelection = ChannelSelection(*result); return result; } - catch (const std::exception &e) + catch (const std::exception& e) { Lv2Log::error("Failed to load Channel Router settings: %s", e.what()); return std::make_shared(); } } -static int64_t GetUpgradedPortIndex(const std::string &portName) +static int64_t GetUpgradedPortIndex(const std::string& portName) { auto nPos = portName.find_last_of('_'); if (nPos != std::string::npos) @@ -3079,7 +3226,7 @@ static int64_t GetUpgradedPortIndex(const std::string &portName) int64_t channelIndex = std::stoll(channelStr); return channelIndex; } - catch (const std::exception &) + catch (const std::exception&) { return -1; } @@ -3095,8 +3242,8 @@ void Storage::UpgradeChannelRouterSettings() { channelRouterSettings->configured(true); channelRouterSettings->mainInputChannels().resize(2); - const std::vector &oldInputs = jackChannelSelection.GetInputAudioPorts(); - std::vector &newInputs = channelRouterSettings->mainInputChannels(); + const std::vector& oldInputs = jackChannelSelection.GetInputAudioPorts(); + std::vector& newInputs = channelRouterSettings->mainInputChannels(); if (oldInputs.size() == 1) { @@ -3114,8 +3261,8 @@ void Storage::UpgradeChannelRouterSettings() newInputs[i] = portIndex; } } - const std::vector &oldOutputs = jackChannelSelection.GetOutputAudioPorts(); - auto &newMainOutputs = channelRouterSettings->mainOutputChannels(); + const std::vector& oldOutputs = jackChannelSelection.GetOutputAudioPorts(); + auto& newMainOutputs = channelRouterSettings->mainOutputChannels(); if (oldOutputs.size() == 1) { int64_t leftIndex = GetUpgradedPortIndex(oldOutputs[0]); @@ -3133,11 +3280,11 @@ void Storage::UpgradeChannelRouterSettings() } } - auto &newAuxInputs = channelRouterSettings->auxInputChannels(); + auto& newAuxInputs = channelRouterSettings->auxInputChannels(); newAuxInputs.resize(2); newAuxInputs[0] = -1; newAuxInputs[1] = -1; - auto &newAuxOutputs = channelRouterSettings->auxOutputChannels(); + auto& newAuxOutputs = channelRouterSettings->auxOutputChannels(); newAuxOutputs.resize(2); newAuxOutputs[0] = -1; newAuxOutputs[1] = -1; @@ -3147,7 +3294,7 @@ void Storage::UpgradeChannelRouterSettings() } } -const ChannelSelection &Storage::GetChannelSelection() const +const ChannelSelection& Storage::GetChannelSelection() const { return channelSelection; } diff --git a/src/Storage.hpp b/src/Storage.hpp index 4db1114..9001748 100644 --- a/src/Storage.hpp +++ b/src/Storage.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in @@ -41,6 +41,7 @@ namespace pipedal { class UiFileProperty; class Lv2PluginInfo; class UiFileProperty; +class PiPedalModel; class CurrentPreset { public: @@ -80,8 +81,14 @@ private: private: void FillSampleDirectoryTree(FilePropertyDirectoryTree*node, const std::filesystem::path&directory) const; - void UpgradeFactoryPresets(); - void MaybeCopyDefaultPresets(); + int32_t GetInstallerPresetVersion(); + int32_t GetVarPresetVersion(); + void SetVarPresetVersion(int32_t version); + void UpgradeV1FactoryPresets(); + void MoveExistingFactoryPresetsBank(); + void InstallFactoryPresets(); + void CopyFactoryPresetsToDefaultBank(); + void ProvisionDefaultBanks(); static std::string SafeEncodeName(const std::string& name); static std::string SafeDecodeName(const std::string& name); std::filesystem::path GetPresetsDirectory() const; @@ -128,7 +135,7 @@ private: public: Storage(); - void Initialize(); + void Initialize(PiPedalModel *model); void CreateBank(const std::string & name); void SetDataRoot(const std::filesystem::path& path); @@ -286,6 +293,7 @@ public: int64_t ImportPresetsFromBank(int64_t bankInstanceId, const std::vector &presets); int64_t CopyPresetsToBank(int64_t bankInstanceId, const std::vector &presets); + PiPedalModel *model = nullptr; }; diff --git a/src/SystemConfigFile.cpp b/src/SystemConfigFile.cpp index cc56266..81b3689 100644 --- a/src/SystemConfigFile.cpp +++ b/src/SystemConfigFile.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/SystemConfigFile.hpp b/src/SystemConfigFile.hpp index ab9aeb4..cf70f48 100644 --- a/src/SystemConfigFile.hpp +++ b/src/SystemConfigFile.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/SystemConfigFileTest.cpp b/src/SystemConfigFileTest.cpp index 9f86d4b..763d414 100644 --- a/src/SystemConfigFileTest.cpp +++ b/src/SystemConfigFileTest.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/ThreadedQueue.hpp b/src/ThreadedQueue.hpp index 15701ea..7a70717 100644 --- a/src/ThreadedQueue.hpp +++ b/src/ThreadedQueue.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/Tone3000Download.cpp b/src/Tone3000Download.cpp index d0b4680..e3881df 100644 --- a/src/Tone3000Download.cpp +++ b/src/Tone3000Download.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/Tone3000Download.cpp.bak b/src/Tone3000Download.cpp.bak index 0d8b722..69e861e 100644 --- a/src/Tone3000Download.cpp.bak +++ b/src/Tone3000Download.cpp.bak @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy @@ -314,7 +314,7 @@ static std::map gearEnumValues = {"full-rig", "Full rig"}, {"pedal", "Pedal"}, {"outboard", "Outboard"}, - {"ir", "I/R"}}; + {"ir", "IR"}}; static std::string mdGear(const std::string &gear) { diff --git a/src/Tone3000Download.hpp b/src/Tone3000Download.hpp index 5dd6e6d..31575fa 100644 --- a/src/Tone3000Download.hpp +++ b/src/Tone3000Download.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/Tone3000DownloadProgress.cpp b/src/Tone3000DownloadProgress.cpp index 3227f4c..8e16f3b 100644 --- a/src/Tone3000DownloadProgress.cpp +++ b/src/Tone3000DownloadProgress.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/Tone3000DownloadProgress.hpp b/src/Tone3000DownloadProgress.hpp index 7aa30b4..2918985 100644 --- a/src/Tone3000DownloadProgress.hpp +++ b/src/Tone3000DownloadProgress.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/Tone3000DownloadType.cpp b/src/Tone3000DownloadType.cpp index 0e2ed2d..4975ee0 100644 --- a/src/Tone3000DownloadType.cpp +++ b/src/Tone3000DownloadType.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/Tone3000DownloadType.hpp b/src/Tone3000DownloadType.hpp index 6a1ef93..16bf433 100644 --- a/src/Tone3000DownloadType.hpp +++ b/src/Tone3000DownloadType.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/Tone3000Downloader.cpp b/src/Tone3000Downloader.cpp index 30cf42f..e012cd4 100644 --- a/src/Tone3000Downloader.cpp +++ b/src/Tone3000Downloader.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy @@ -150,7 +150,7 @@ public: virtual const char *what() const noexcept override { std::exception::what(); - return "Cancelled."; + return "Canceled."; } }; @@ -713,7 +713,7 @@ static std::map gearEnumValues = {"full-rig", "Full rig"}, {"pedal", "Pedal"}, {"outboard", "Outboard"}, - {"ir", "I/R"}}; + {"ir", "IR"}}; static std::string mdGear(const std::string &gear) { @@ -926,7 +926,7 @@ static std::string mdLicense(const std::string &license) static std::map platformEnumValues = { {"nam", "NAM"}, - {"ir", "I/R"}, + {"ir", "IR"}, {"aida-x", "Aida X"}, {"aa-snapshot", "aa-snapshot"}, {"proteus", "Proteus"}}; @@ -1124,7 +1124,7 @@ std::string Tone3000DownloaderImpl::DownloadTone3000Files( // { // if (isCancelled()) // { - // throw std::runtime_error("Cancelled"); + // throw std::runtime_error("Canceled"); // } // size_t thisTime = models.size() - downloadIndex; // thisTime = Tone3000Throttler::instance().ReserveDownloadSlots(thisTime); @@ -1159,7 +1159,7 @@ std::string Tone3000DownloaderImpl::DownloadTone3000Files( // if (isCancelled()) // { - // throw std::runtime_error("Cancelled"); + // throw std::runtime_error("Canceled"); // } // if (result != 200) @@ -1198,7 +1198,7 @@ std::string Tone3000DownloaderImpl::DownloadTone3000Files( // std::this_thread::sleep_for(std::chrono::milliseconds(1000)); // if (isCancelled()) // { - // throw std::runtime_error("Cancelled"); + // throw std::runtime_error("Canceled"); // } // } // if (CurlGet(imageUrl, imageFile.Path(), &imageHeaders) == 200) diff --git a/src/Tone3000Downloader.hpp b/src/Tone3000Downloader.hpp index 8d05cb8..8afd787 100644 --- a/src/Tone3000Downloader.hpp +++ b/src/Tone3000Downloader.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy @@ -145,6 +145,7 @@ namespace pipedal const std::string &errorMessage) = 0; virtual std::string Tone3000ThumbnailDirectory() = 0; + virtual std::string OldTone3000ThumbnailDirectory() = 0; }; using self = Tone3000Downloader; diff --git a/src/Tone3000DownloaderImpl.hpp b/src/Tone3000DownloaderImpl.hpp index f354eb3..ba7dc6f 100644 --- a/src/Tone3000DownloaderImpl.hpp +++ b/src/Tone3000DownloaderImpl.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/Tone3000Throttler.cpp b/src/Tone3000Throttler.cpp index de27b65..33dc1e1 100644 --- a/src/Tone3000Throttler.cpp +++ b/src/Tone3000Throttler.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/Tone3000Throttler.hpp b/src/Tone3000Throttler.hpp index 3accf74..d41242a 100644 --- a/src/Tone3000Throttler.hpp +++ b/src/Tone3000Throttler.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/Tone3000Tone.cpp b/src/Tone3000Tone.cpp index a5ef391..2c1914c 100644 --- a/src/Tone3000Tone.cpp +++ b/src/Tone3000Tone.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy @@ -143,7 +143,7 @@ namespace {"full-rig", "Full rig"}, {"pedal", "Pedal"}, {"outboard", "Outboard"}, - {"ir", "I/R"}}; + {"ir", "IR"}}; static std::string mdGear(const std::string &gear) { @@ -356,7 +356,7 @@ namespace static std::map platformEnumValues = { {"nam", "NAM"}, - {"ir", "I/R"}, + {"ir", "IR"}, {"aida-x", "Aida X"}, {"aa-snapshot", "aa-snapshot"}, {"proteus", "Proteus"}}; diff --git a/src/Tone3000Tone.hpp b/src/Tone3000Tone.hpp index efab74a..8dad762 100644 --- a/src/Tone3000Tone.hpp +++ b/src/Tone3000Tone.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/Units.cpp b/src/Units.cpp index c85760c..4437d3c 100644 --- a/src/Units.cpp +++ b/src/Units.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Units.hpp b/src/Units.hpp index 604a1f5..20931cd 100644 --- a/src/Units.hpp +++ b/src/Units.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/UnixSocket.cpp b/src/UnixSocket.cpp index 6b637d5..c06341c 100644 --- a/src/UnixSocket.cpp +++ b/src/UnixSocket.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/UnixSocket.hpp b/src/UnixSocket.hpp index 30bac95..427bf43 100644 --- a/src/UnixSocket.hpp +++ b/src/UnixSocket.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/UnixSocketTest.cpp b/src/UnixSocketTest.cpp index c1540c5..3c43735 100644 --- a/src/UnixSocketTest.cpp +++ b/src/UnixSocketTest.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/UpdaterSecurity.hpp b/src/UpdaterSecurity.hpp index 3fac951..2c0312c 100644 --- a/src/UpdaterSecurity.hpp +++ b/src/UpdaterSecurity.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/UpdaterTest.cpp b/src/UpdaterTest.cpp index 2590492..bf36567 100644 --- a/src/UpdaterTest.cpp +++ b/src/UpdaterTest.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Uri.cpp b/src/Uri.cpp index 5cac8e9..881a025 100644 --- a/src/Uri.cpp +++ b/src/Uri.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Uri.hpp b/src/Uri.hpp index 3208e10..bbc3ce5 100644 --- a/src/Uri.hpp +++ b/src/Uri.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/Vst3Effect.cpp b/src/Vst3Effect.cpp index f9b743c..5ca463f 100644 --- a/src/Vst3Effect.cpp +++ b/src/Vst3Effect.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/Vst3Host.cpp b/src/Vst3Host.cpp index 76202fe..b2bb456 100644 --- a/src/Vst3Host.cpp +++ b/src/Vst3Host.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/Vst3PresetFile.cpp b/src/Vst3PresetFile.cpp index fe79443..7915cb6 100644 --- a/src/Vst3PresetFile.cpp +++ b/src/Vst3PresetFile.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/Vst3RtStream.cpp b/src/Vst3RtStream.cpp index 6a0bdc5..15ddf75 100644 --- a/src/Vst3RtStream.cpp +++ b/src/Vst3RtStream.cpp @@ -313,7 +313,7 @@ bool RtStream::truncateToCursor () /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/Vst3test.cpp b/src/Vst3test.cpp index 3de3db9..b09cef3 100644 --- a/src/Vst3test.cpp +++ b/src/Vst3test.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/VuUpdate.cpp b/src/VuUpdate.cpp index 85232a1..331dae9 100644 --- a/src/VuUpdate.cpp +++ b/src/VuUpdate.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/VuUpdate.hpp b/src/VuUpdate.hpp index 882f559..29e26ac 100644 --- a/src/VuUpdate.hpp +++ b/src/VuUpdate.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/WebServerConfig.cpp b/src/WebServerConfig.cpp index 6ba1b74..094c7a6 100644 --- a/src/WebServerConfig.cpp +++ b/src/WebServerConfig.cpp @@ -48,7 +48,7 @@ #define BANK_EXTENSION ".piBank" #define PLUGIN_PRESETS_EXTENSION ".piPluginPresets" -static const std::filesystem::path WEB_TEMP_DIR{"/var/pipedal/web_temp"}; +static const std::filesystem::path WEB_TEMP_DIR{ "/var/pipedal/web_temp" }; static const std::string PLUGIN_PRESETS_MIME_TYPE = "application/vnd.pipedal.pluginPresets"; static const std::string PRESET_MIME_TYPE = "application/vnd.pipedal.preset"; @@ -73,10 +73,10 @@ JSON_MAP_REFERENCE(UserUploadResponse, errorMessage) JSON_MAP_REFERENCE(UserUploadResponse, path) JSON_MAP_END() -static std::string GetMimeType(const std::filesystem::path &path) +static std::string GetMimeType(const std::filesystem::path& path) { std::string extension = path.extension(); - const MimeTypes &mimeTypes = MimeTypes::instance(); + const MimeTypes& mimeTypes = MimeTypes::instance(); auto result = mimeTypes.MimeTypeFromExtension(extension); return result; } @@ -97,7 +97,9 @@ static bool IsSafeThumbnailPath(const fs::path path) if (!HtmlHelper::IsSafeFileName(path)) { return false; } - if (!(path.string().starts_with("/var/pipedal/tone3000_thumbnails/"))) + if ((!path.string().starts_with("/var/pipedal/tone3000_thumbnails/")) && + (!path.string().starts_with("/var/pipedal/audio_uploads/tone3000_thumbnails/")) + ) { return false; } @@ -108,7 +110,7 @@ static bool IsSafeThumbnailPath(const fs::path path) } return true; } -int32_t ConvertThumbnailSize(const std::string ¶m) +int32_t ConvertThumbnailSize(const std::string& param) { if (param.empty()) { @@ -117,7 +119,7 @@ int32_t ConvertThumbnailSize(const std::string ¶m) return static_cast(std::stoi(param)); } -static bool IsZipFile(const std::filesystem::path &path) +static bool IsZipFile(const std::filesystem::path& path) { std::ifstream f(path); if (!f.is_open()) @@ -135,15 +137,15 @@ static bool IsZipFile(const std::filesystem::path &path) class ExtensionChecker { public: - ExtensionChecker(const std::string &extensionList) + ExtensionChecker(const std::string& extensionList) : extensions(split(extensionList, ',')) { } - bool IsValidExtension(const std::string &extension) + bool IsValidExtension(const std::string& extension) { if (extensions.size() == 0) return true; - for (const auto &ext : extensions) + for (const auto& ext : extensions) { if (ext == extension) return true; @@ -155,7 +157,7 @@ private: std::vector extensions; }; -static fs::path GetTone3000ThumbnailFile(const fs::path &thumbnailDirectory, const std::string &id) +static fs::path GetTone3000ThumbnailFile(const fs::path& thumbnailDirectory, const std::string& id) { std::string stem = id; // find a file in thumbnailDirectory which has a filename of {stem}.*. @@ -164,13 +166,13 @@ static fs::path GetTone3000ThumbnailFile(const fs::path &thumbnailDirectory, con return {}; } - for (const auto &entry : fs::directory_iterator(thumbnailDirectory)) + for (const auto& entry : fs::directory_iterator(thumbnailDirectory)) { if (!entry.is_regular_file()) { continue; } - const auto &path = entry.path(); + const auto& path = entry.path(); if (path.stem() == stem) { return path; @@ -179,18 +181,56 @@ static fs::path GetTone3000ThumbnailFile(const fs::path &thumbnailDirectory, con return {}; } +namespace pipedal::implementation { + + int64_t ImportBankFile(PiPedalModel& model, const std::filesystem::path& filePath, uint64_t uploadAfter = -1) + { + BankFile bankFile; + + + if (filePath.empty()) + { + throw std::runtime_error("Unexpected."); + } + if (IsZipFile(filePath)) + { + auto presetReader = PresetBundleReader::LoadPresetsFile(model, filePath); + presetReader->ExtractMediaFiles(); + + std::stringstream ss(presetReader->GetPresetJson()); + json_reader reader(ss); + reader.read(&bankFile); + } + else + { + std::ifstream f{ filePath }; + if (!f.is_open()) { + throw std::runtime_error(SS("Unable to open file " << filePath)); + } + // legacy json format, no zip, no media files. + json_reader reader(f); + reader.read(&bankFile); + } + uint64_t instanceId = model.UploadBank(bankFile, uploadAfter); + + return instanceId; + } +} + +using namespace pipedal::implementation; + class DownloadIntercept : public RequestHandler { - PiPedalModel *model; + PiPedalModel* model; public: - DownloadIntercept(PiPedalModel *model) + DownloadIntercept(PiPedalModel* model) : RequestHandler("/var"), - model(model) + model(model) { } - virtual bool wants(const std::string &method, const uri &request_uri) const + virtual bool wants(const std::string& method, const uri& request_uri) const { if (request_uri.segment_count() != 2 || request_uri.segment(0) != "var") { @@ -304,7 +344,7 @@ public: return false; } - static std::string GetContentDispositionHeader(const std::string &name, const std::string &extension) + static std::string GetContentDispositionHeader(const std::string& name, const std::string& extension) { std::string fileName = name.substr(0, 64) + extension; std::stringstream s; @@ -314,7 +354,7 @@ public: return result; } - void GetPluginPresets(const uri &request_uri, std::string *pName, std::string *pContent) + void GetPluginPresets(const uri& request_uri, std::string* pName, std::string* pContent) { std::string pluginUri = request_uri.query("id"); auto plugin = model->GetPluginHost().GetPluginInfo(pluginUri); @@ -327,7 +367,7 @@ public: writer.write(pluginPresets); *pContent = s.str(); } - void GetPreset(const uri &request_uri, std::string *pName, std::string *pContent) + void GetPreset(const uri& request_uri, std::string* pName, std::string* pContent) { std::string strInstanceId = request_uri.query("id"); int64_t instanceId = std::stol(strInstanceId); @@ -345,7 +385,7 @@ public: *pContent = s.str(); *pName = pedalboard.name(); } - void GetBank(const uri &request_uri, std::string *pName, std::string *pContent) + void GetBank(const uri& request_uri, std::string* pName, std::string* pContent) { std::string strInstanceId = request_uri.query("id"); int64_t instanceId = std::stol(strInstanceId); @@ -360,10 +400,10 @@ public: } virtual void head_response( - const uri &request_uri, - HttpRequest &req, - HttpResponse &res, - std::error_code &ec) override + const uri& request_uri, + HttpRequest& req, + HttpResponse& res, + std::error_code& ec) override { try { @@ -392,7 +432,11 @@ public: fs::path path = GetTone3000ThumbnailFile(this->model->Tone3000ThumbnailDirectory(), id); if (!fs::exists(path)) { - throw PiPedalException("File not found."); + path = GetTone3000ThumbnailFile(this->model->OldTone3000ThumbnailDirectory(), id); + if (!fs::exists(path)) + { + throw PiPedalException("File not found."); + } } auto mimeType = GetMimeType(path); if (mimeType.empty()) @@ -447,7 +491,7 @@ public: std::string content; GetPluginPresets(request_uri, &name, &content); - TemporaryFile tmpFile{WEB_TEMP_DIR}; + TemporaryFile tmpFile{ WEB_TEMP_DIR }; PresetBundleWriter::ptr presetbundleWriter = PresetBundleWriter::CreatePluginPresetsFile(*(this->model), content); presetbundleWriter->WriteToFile(tmpFile.Path()); size_t contentLength = std::filesystem::file_size(tmpFile.Path()); @@ -465,7 +509,7 @@ public: std::string content; GetPreset(request_uri, &name, &content); - TemporaryFile tmpFile{WEB_TEMP_DIR}; + TemporaryFile tmpFile{ WEB_TEMP_DIR }; PresetBundleWriter::ptr presetbundleWriter = PresetBundleWriter::CreatePresetsFile(*(this->model), content); presetbundleWriter->WriteToFile(tmpFile.Path()); size_t contentLength = std::filesystem::file_size(tmpFile.Path()); @@ -482,7 +526,7 @@ public: std::string content; GetBank(request_uri, &name, &content); - TemporaryFile tmpFile{WEB_TEMP_DIR}; + TemporaryFile tmpFile{ WEB_TEMP_DIR }; PresetBundleWriter::ptr presetbundleWriter = PresetBundleWriter::CreatePresetsFile(*(this->model), content); presetbundleWriter->WriteToFile(tmpFile.Path()); size_t contentLength = std::filesystem::file_size(tmpFile.Path()); @@ -495,7 +539,7 @@ public: } throw PiPedalException("Not found."); } - catch (const std::exception &e) + catch (const std::exception& e) { if (strcmp(e.what(), "Not found") == 0) { @@ -508,20 +552,20 @@ public: } } - static void setLastModifiedFromFile(HttpResponse &res, const std::filesystem::path &path) + static void setLastModifiedFromFile(HttpResponse& res, const std::filesystem::path& path) { auto lastModified = std::filesystem::last_write_time(path); res.set(HttpField::LastModified, HtmlHelper::timeToHttpDate(lastModified)); } - AudioDirectoryInfo::Ptr CreateDirectoryInfo(const fs::path &path) + AudioDirectoryInfo::Ptr CreateDirectoryInfo(const fs::path& path) { return AudioDirectoryInfo::Create(path, - GetShadowIndexDirectory( - this->model->GetPluginUploadDirectory(), - path)); + GetShadowIndexDirectory( + this->model->GetPluginUploadDirectory(), + path)); } - bool isInfoFile(const fs::path &path) + bool isInfoFile(const fs::path& path) { auto extension = path.extension(); if (extension == ".pdf") @@ -546,24 +590,24 @@ public: std::string T3kResponse() { return "\n" - "\n" - "\n" - "\n" - "\n" - "\n" - "\n"; + "\n" + "\n" + "\n" + "\n" + "\n" + "\n"; } - void DownloadTone3000Tone(const uri &requestUri) + void DownloadTone3000Tone(const uri& requestUri) { } virtual void get_response( - const uri &request_uri, - HttpRequest &req, - HttpResponse &res, - std::error_code &ec) override + const uri& request_uri, + HttpRequest& req, + HttpResponse& res, + std::error_code& ec) override { try { @@ -579,7 +623,11 @@ public: fs::path path = GetTone3000ThumbnailFile(this->model->Tone3000ThumbnailDirectory(), id); if (!fs::exists(path)) { - throw PiPedalException("File not found."); + path = GetTone3000ThumbnailFile(this->model->OldTone3000ThumbnailDirectory(),id); + if (!fs::exists(path)) + { + throw PiPedalException("File not found."); + } } auto mimeType = GetMimeType(path); if (mimeType.empty()) @@ -690,7 +738,7 @@ public: try { auto files = audioDirectory->GetFiles(); - for (const auto &file : files) + for (const auto& file : files) { std::string fileNameOnly = path.filename(); if (file.fileName() == fileNameOnly) @@ -703,7 +751,7 @@ public: } } } - catch (const std::exception &e) + catch (const std::exception& e) { Lv2Log::error("Error getting audio directory info: %s - (%s)", path.c_str(), e.what()); throw e; @@ -761,7 +809,7 @@ public: thumbnailTemporaryFile = audioDirectory->GetThumbnail(path.filename(), width, height); } - catch (const std::exception &e) + catch (const std::exception& e) { fs::path defaultThumbnail = model->GetWebRoot() / "img/missing_thumbnail.jpg"; thumbnailTemporaryFile.SetNonDeletedPath(defaultThumbnail, "image/jpeg"); @@ -776,7 +824,7 @@ public: res.setBodyFile(t, thumbnailTemporaryFile.DeleteFile()); thumbnailTemporaryFile.Detach(); } - catch (const std::exception &e) + catch (const std::exception& e) { Lv2Log::error("Error getting thumbnail: %s - (%s)", request_uri.str().c_str(), e.what()); throw e; @@ -809,7 +857,7 @@ public: res.setBody(ss.str()); } - catch (const std::exception &e) + catch (const std::exception& e) { res.setBody("\"\""); } @@ -841,7 +889,7 @@ public: res.setBody(ss.str()); } - catch (const std::exception &e) + catch (const std::exception& e) { res.setBody("\"\""); } @@ -852,7 +900,7 @@ public: throw PiPedalException("Not found"); } } - catch (const std::exception &e) + catch (const std::exception& e) { if (strcmp(e.what(), "Not found") == 0) { @@ -864,9 +912,9 @@ public: } } } - static std::string GetFirstFolderOrFile(const std::vector &fileNames) + static std::string GetFirstFolderOrFile(const std::vector& fileNames) { - for (const auto &fileName : fileNames) + for (const auto& fileName : fileNames) { size_t nPos = fileName.find('/'); if (nPos != std::string::npos) @@ -883,11 +931,11 @@ public: return fileNames[0]; } } - static bool HasSingleRootDirectory(ZipFileReader &zipFile) + static bool HasSingleRootDirectory(ZipFileReader& zipFile) { bool hasDirectory = false; std::string previousDirectory; - for (auto &file : zipFile.GetFiles()) + for (auto& file : zipFile.GetFiles()) { auto pos = file.find('/'); if (pos == std::string::npos) @@ -916,15 +964,15 @@ public: } void UploadEmbeddedZipFile( - PiPedalModel *model, - pipedal::zip_file_input_stream &si, - const std::string &inputFileName, + PiPedalModel* model, + pipedal::zip_file_input_stream& si, + const std::string& inputFileName, fs::path directory, - ExtensionChecker &extensionChecker, + ExtensionChecker& extensionChecker, int64_t instanceId, - const std::string &patchProperty) + const std::string& patchProperty) { - TemporaryFile tempFile{WEB_TEMP_DIR}; + TemporaryFile tempFile{ WEB_TEMP_DIR }; // Extract the zip_file_input_stream to the temporary file. { std::ofstream out(tempFile.Path(), std::ios::binary); @@ -955,11 +1003,11 @@ public: { directory = (fs::path(directory) / fs::path(inputFileName).filename().stem()).string(); } - for (const auto &inputFile : files) + for (const auto& inputFile : files) { if (!inputFile.ends_with("/")) // don't process directory entries. { - fs::path inputPath{inputFile}; + fs::path inputPath{ inputFile }; std::string extension = inputPath.extension(); if (extensionChecker.IsValidExtension(extension) || isInfoFile(inputFile)) { @@ -985,10 +1033,10 @@ public: } virtual void post_response( - const uri &request_uri, - HttpRequest &req, - HttpResponse &res, - std::error_code &ec) override + const uri& request_uri, + HttpRequest& req, + HttpResponse& res, + std::error_code& ec) override { try { @@ -1004,7 +1052,7 @@ public: { throw std::runtime_error("Invalid path"); } - if (!IsSafeMediaPath(targetPath) && !IsSafeThumbnailPath(targetPath)) + if (!IsSafeMediaPath(targetPath) && !IsSafeThumbnailPath(targetPath)) { throw std::runtime_error("Unsafe path."); } @@ -1024,24 +1072,26 @@ public: fs::rename(req.get_body_temporary_file(), targetPath); req.detach_body_temporary_file(); - } catch (const std::exception &e) { + } + catch (const std::exception& e) { // ok Copy into place instead. fs::copy(req.get_body_temporary_file(), targetPath); } // set target permissions to "pipedal_d:pipedald -rw-rw-r-- if we can. try { - fs::permissions(targetPath, fs::perms::owner_read | fs::perms::owner_write | - fs::perms::group_read | fs::perms::group_write | - fs::perms::others_read, - fs::perm_options::replace); - } catch (const std::exception&) + fs::permissions(targetPath, fs::perms::owner_read | fs::perms::owner_write | + fs::perms::group_read | fs::perms::group_write | + fs::perms::others_read, + fs::perm_options::replace); + } + catch (const std::exception&) { // ignore. } responseText = "{\"ok\": true}"; } - catch (const std::exception &e) + catch (const std::exception& e) { std::string jsonString = json_writer::encode_string(e.what()); std::ostringstream os; @@ -1131,28 +1181,7 @@ public: else if (segment == "uploadBank") { - BankFile bankFile; - fs::path filePath = req.get_body_temporary_file(); - if (filePath.empty()) - { - throw std::runtime_error("Unexpected."); - } - if (IsZipFile(filePath)) - { - auto presetReader = PresetBundleReader::LoadPresetsFile(*(this->model), filePath); - presetReader->ExtractMediaFiles(); - - std::stringstream ss(presetReader->GetPresetJson()); - json_reader reader(ss); - reader.read(&bankFile); - } - else - { - // legacy json format, no zip, no media files. - json_reader reader(req.get_body_input_stream()); - reader.read(&bankFile); - } uint64_t uploadAfter = -1; std::string strUploadAfter = request_uri.query("uploadAfter"); @@ -1161,10 +1190,13 @@ public: uploadAfter = std::stol(strUploadAfter); } - uint64_t instanceId = model->UploadBank(bankFile, uploadAfter); + auto instanceId = ImportBankFile(*(this->model), filePath, uploadAfter); + res.set(HttpField::content_type, "application/json"); res.set(HttpField::cache_control, "no-cache"); + + std::stringstream sResult; sResult << instanceId; std::string result = sResult.str(); @@ -1187,7 +1219,7 @@ public: int64_t instanceId; { - std::istringstream ss{instanceIdString}; + std::istringstream ss{ instanceIdString }; ss >> instanceId; if (!ss) { @@ -1207,7 +1239,7 @@ public: if (filename.ends_with(".zip")) { - ExtensionChecker extensionChecker{request_uri.query("ext")}; + ExtensionChecker extensionChecker{ request_uri.query("ext") }; namespace fs = std::filesystem; try @@ -1219,11 +1251,11 @@ public: { directory = (fs::path(directory) / fs::path(filename).filename().replace_extension("")).string(); } - for (const auto &inputFile : files) + for (const auto& inputFile : files) { if (!inputFile.ends_with("/")) // don't process directory entries. { - fs::path inputPath{inputFile}; + fs::path inputPath{ inputFile }; std::string extension = inputPath.extension(); if (extensionChecker.IsValidExtension(extension) || isInfoFile(inputFile)) { @@ -1251,7 +1283,7 @@ public: std::string returnPath = GetFirstFolderOrFile(files); outputFileName = fs::path(directory) / returnPath; } - catch (const std::exception &e) + catch (const std::exception& e) { Lv2Log::error(SS("Unzip failed. " << e.what())); throw; @@ -1269,7 +1301,7 @@ public: } result.path_ = outputFileName.string(); } - catch (const std::exception &e) + catch (const std::exception& e) { result.errorMessage_ = e.what(); } @@ -1287,7 +1319,7 @@ public: throw PiPedalException("Not found"); } } - catch (const std::exception &e) + catch (const std::exception& e) { Lv2Log::error(SS("Error uploading file: " << e.what())); if (strcmp(e.what(), "Not found") == 0) @@ -1302,7 +1334,7 @@ public: } }; -static std::string StripPortNumber(const std::string &fromAddress) +static std::string StripPortNumber(const std::string& fromAddress) { std::string address = fromAddress; @@ -1335,19 +1367,19 @@ static std::string StripPortNumber(const std::string &fromAddress) class InterceptConfig : public RequestHandler { private: - PiPedalModel&model; + PiPedalModel& model; uint64_t maxUploadSize; int portNumber; public: - InterceptConfig(PiPedalModel&model,int portNumber, uint64_t maxUploadSize) + InterceptConfig(PiPedalModel& model, int portNumber, uint64_t maxUploadSize) : RequestHandler("/var/config.json"), - model(model), - maxUploadSize(maxUploadSize), - portNumber(portNumber) + model(model), + maxUploadSize(maxUploadSize), + portNumber(portNumber) { } - std::string GetConfig(const std::string &fromAddress) + std::string GetConfig(const std::string& fromAddress) { std::string webSocketAddress = GetNonLinkLocalAddress(StripPortNumber(fromAddress)); Lv2Log::info(SS("Web Socket Address: " << webSocketAddress << ":" << portNumber)); @@ -1355,32 +1387,32 @@ public: std::stringstream s; s << "{ \"socket_server_port\": " << portNumber - << ", \"socket_server_address\": \"" << webSocketAddress - << "\", \"ui_plugins\": [ ], \"max_upload_size\": " << maxUploadSize - << ", \"enable_auto_update\": " << (ENABLE_AUTO_UPDATE ? " true" : "false") - << ", \"has_wifi_device\": " << (HotspotManager::HasWifiDevice() ? " true" : "false") - << ", \"tone3000_A2_models\": " << (model.Configuration().GetTone3000A2Models() ? " true" : "false") - << " }"; + << ", \"socket_server_address\": \"" << webSocketAddress + << "\", \"ui_plugins\": [ ], \"max_upload_size\": " << maxUploadSize + << ", \"enable_auto_update\": " << (ENABLE_AUTO_UPDATE ? " true" : "false") + << ", \"has_wifi_device\": " << (HotspotManager::HasWifiDevice() ? " true" : "false") + << ", \"tone3000_A2_models\": " << (model.Configuration().GetTone3000A2Models() ? " true" : "false") + << " }"; return s.str(); } virtual ~InterceptConfig() {} virtual void head_response( - const uri &request_uri, - HttpRequest &req, - HttpResponse &res, - std::error_code &ec) override + const uri& request_uri, + HttpRequest& req, + HttpResponse& res, + std::error_code& ec) override { // intercepted. See the other overload. } virtual void head_response( - const std::string &fromAddress, - const uri &request_uri, - HttpRequest &req, - HttpResponse &res, - std::error_code &ec) override + const std::string& fromAddress, + const uri& request_uri, + HttpRequest& req, + HttpResponse& res, + std::error_code& ec) override { std::string response = GetConfig(fromAddress); res.set(HttpField::content_type, "application/json"); @@ -1390,20 +1422,20 @@ public: } virtual void get_response( - const uri &request_uri, - HttpRequest &req, - HttpResponse &res, - std::error_code &ec) override + const uri& request_uri, + HttpRequest& req, + HttpResponse& res, + std::error_code& ec) override { // intercepted. see the other overload. } virtual void get_response( - const std::string &fromAddress, - const uri &request_uri, - HttpRequest &req, - HttpResponse &res, - std::error_code &ec) override + const std::string& fromAddress, + const uri& request_uri, + HttpRequest& req, + HttpResponse& res, + std::error_code& ec) override { std::string response = GetConfig(fromAddress); res.set(HttpField::content_type, "application/json"); @@ -1414,12 +1446,12 @@ public: }; void pipedal::ConfigureWebServer( - WebServer &server, - PiPedalModel &model, + WebServer& server, + PiPedalModel& model, int port, size_t maxUploadSize) { - std::shared_ptr interceptConfig{new InterceptConfig(model,port, maxUploadSize)}; + std::shared_ptr interceptConfig{ new InterceptConfig(model,port, maxUploadSize) }; server.AddRequestHandler(interceptConfig); std::shared_ptr downloadIntercept = std::make_shared(&model); diff --git a/src/WebServerMod.cpp b/src/WebServerMod.cpp index 9400f0a..77f28b7 100644 --- a/src/WebServerMod.cpp +++ b/src/WebServerMod.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/WebServerMod.hpp b/src/WebServerMod.hpp index 0326be5..eb466ee 100644 --- a/src/WebServerMod.hpp +++ b/src/WebServerMod.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/WebServerTest.cpp b/src/WebServerTest.cpp index d45e0aa..b206695 100644 --- a/src/WebServerTest.cpp +++ b/src/WebServerTest.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/WifiChannelSelectors.cpp b/src/WifiChannelSelectors.cpp index 2398325..ebf1729 100644 --- a/src/WifiChannelSelectors.cpp +++ b/src/WifiChannelSelectors.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/WifiChannelSelectors.hpp b/src/WifiChannelSelectors.hpp index 844db14..92a37d9 100644 --- a/src/WifiChannelSelectors.hpp +++ b/src/WifiChannelSelectors.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/WifiChannelsTest.cpp b/src/WifiChannelsTest.cpp index 3c40c7f..30b37ba 100644 --- a/src/WifiChannelsTest.cpp +++ b/src/WifiChannelsTest.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/alsaCheck.cpp b/src/alsaCheck.cpp index 25caa41..96c70bf 100644 --- a/src/alsaCheck.cpp +++ b/src/alsaCheck.cpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2024 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/alsaCheck.hpp b/src/alsaCheck.hpp index 90efff5..3d6597e 100644 --- a/src/alsaCheck.hpp +++ b/src/alsaCheck.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2024 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/asan_options.cpp b/src/asan_options.cpp index 58d3c67..1640694 100644 --- a/src/asan_options.cpp +++ b/src/asan_options.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/atom_object.cpp b/src/atom_object.cpp index fd9ca6f..ea0655a 100644 --- a/src/atom_object.cpp +++ b/src/atom_object.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/atom_object.hpp b/src/atom_object.hpp index 1ef77f4..2b18ec6 100644 --- a/src/atom_object.hpp +++ b/src/atom_object.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022-2023 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/config.hpp.in b/src/config.hpp.in index 9785ee0..779d4c6 100644 --- a/src/config.hpp.in +++ b/src/config.hpp.in @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/copyrightMain.cpp b/src/copyrightMain.cpp index a9be7be..a7ecf40 100644 --- a/src/copyrightMain.cpp +++ b/src/copyrightMain.cpp @@ -19,9 +19,9 @@ std::vector unknownLicense ={ "These copyright notices were found, but we were unable to automatically identify an associated license." }; -bool ContainsName(const std::string ©right, const char*name) +bool ContainsName(const std::string &value, const char*name) { - return copyright.find(name) != -1; + return value.find(name) != -1; } class Copyrights { @@ -60,30 +60,30 @@ class Copyrights { } - void addCopyright(std::string license,std::string copyright) + void addCopyright(std::string license,std::string copyrightString) { - if (copyright.length() == 0) return; - if (copyright == "no-info-found") return; - if (copyright == "info-missing") return; + if (copyrightString.length() == 0) return; + if (copyrightString == "no-info-found") return; + if (copyrightString == "info-missing") return; if (license == "") { license = UNKNOWN_LICENSE; } const static std::string UNSPECIFIED = "(unspecified) "; - if (copyright.starts_with(UNSPECIFIED)) + if (copyrightString.starts_with(UNSPECIFIED)) { - copyright = copyright.substr(UNSPECIFIED.length()); + copyrightString = copyrightString.substr(UNSPECIFIED.length()); } auto currentLicense = licenseMap.find(license); if (currentLicense == licenseMap.end()) { std::shared_ptr l = std::make_shared(); l->tag = license; - l->copyrights.insert(copyright); + l->copyrights.insert(copyrightString); licenseMap[license] = l; } else { auto & copyrights = (*currentLicense).second->copyrights; - copyrights.insert(copyright); + copyrights.insert(copyrightString); } } bool splitLicense(const std::string & license, const std::string &match, std::string*pLeft, std::string *pRight) @@ -211,10 +211,19 @@ public: if (license->copyrights.size() != 0) { f << "
" << endl; + f << "

"; + bool firstLicense = true; for (auto©right: license->copyrights) { + if (!firstLicense) { + f << "
" << endl; + } else { + f << endl; + } + firstLicense = false; std::string text = stripCopyrightPrefix(copyright); - f << "

\u00A9 " << HtmlHelper::HtmlEncode(text) << "

" << endl; + f << " \u00A9 " << HtmlHelper::HtmlEncode(text); } + f << endl << "

"; f << "
" << endl; f << "
" << endl; if (license->tag == UNKNOWN_LICENSE) { diff --git a/src/defer.hpp b/src/defer.hpp index 47cd7f3..89a1920 100644 --- a/src/defer.hpp +++ b/src/defer.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/inverting_mutex.hpp b/src/inverting_mutex.hpp index 4214f20..4c9ae3e 100644 --- a/src/inverting_mutex.hpp +++ b/src/inverting_mutex.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/jsonTest.cpp b/src/jsonTest.cpp index b8f8355..e9bf2e2 100644 --- a/src/jsonTest.cpp +++ b/src/jsonTest.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/kconfigMain.cpp b/src/kconfigMain.cpp index f7f7982..f8d1b5a 100644 --- a/src/kconfigMain.cpp +++ b/src/kconfigMain.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2024 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in @@ -647,7 +647,7 @@ void printHelp() pp << "pipedal_kconfig - Edit kernel commandline arguments. \n" - << "Copyright (c) Robin E. R. Davies" + << "Copyright (c) Robin E.R. Davies" << "\n\n" << "A utility that provides a user-friendly interface for configuring kernel commandline arguments that affect realtime audio performance on PREEMPT_DYANMIC kernels (like Ubuntu)." << "\n\n" diff --git a/src/lv2ext/pipedal.lv2/ext/FileMetadataFeature.h b/src/lv2ext/pipedal.lv2/ext/FileMetadataFeature.h index 38f0a09..5dccbae 100644 --- a/src/lv2ext/pipedal.lv2/ext/FileMetadataFeature.h +++ b/src/lv2ext/pipedal.lv2/ext/FileMetadataFeature.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/lv2ext/pipedal.lv2/ext/fileBrowser.h b/src/lv2ext/pipedal.lv2/ext/fileBrowser.h index 60c6db4..439ff3c 100644 --- a/src/lv2ext/pipedal.lv2/ext/fileBrowser.h +++ b/src/lv2ext/pipedal.lv2/ext/fileBrowser.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/main.cpp b/src/main.cpp index 7f264cd..27c77cf 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in @@ -203,7 +203,7 @@ int main(int argc, char *argv[]) } if (parser.Arguments().size() == 0) { - throw PiPedalException(" not provided."); + throw PiPedalException(" not provided."); } if (help || parser.Arguments().size() == 0) { @@ -225,7 +225,7 @@ int main(int argc, char *argv[]) << "Options:\n" << " -systemd: Log to systemd journals instead of to the console.\n" << " -port: Port to listen on e.g. 80, or 0.0.0.0:80\n" - << " -log-level: (debug|info|warning|error)" + << " -log-level: (debug|info|warning|error)\n" << "Example:\n" << " pipedald /etc/pipedal/config /etc/pipedal/react -port 80 \n" "\n" diff --git a/src/pch.h b/src/pch.h index 9b33fd3..5160520 100644 --- a/src/pch.h +++ b/src/pch.h @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/profilePluginMain.cpp b/src/profilePluginMain.cpp index 4c89cef..742c86d 100644 --- a/src/profilePluginMain.cpp +++ b/src/profilePluginMain.cpp @@ -333,7 +333,7 @@ int main(int argc, char **argv) if (argumentError || help) { cout << "profilePlugin - Generate profiling data for LV2 Plugins" << endl; - cout << "Copyright (c) 2024 Robin E. R. Davies" << endl; + cout << "Copyright (c) Robin E.R. Davies" << endl; cout << endl; cout << "Syntax: profilePlugin [preset_name] [options...]" << endl; cout << " where preset_name is the name of a PiPedal preset." << endl; diff --git a/src/ss.hpp b/src/ss.hpp index 6b34c10..4b971f1 100644 --- a/src/ss.hpp +++ b/src/ss.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/testMain.cpp b/src/testMain.cpp index 92935ee..6fcdcf2 100644 --- a/src/testMain.cpp +++ b/src/testMain.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/utilTest.cpp b/src/utilTest.cpp index f420c68..ad95357 100644 --- a/src/utilTest.cpp +++ b/src/utilTest.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/src/viewstream.hpp b/src/viewstream.hpp index c9452bd..f9c8d01 100644 --- a/src/viewstream.hpp +++ b/src/viewstream.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/src/vst3/Vst3Effect.hpp b/src/vst3/Vst3Effect.hpp index 91df22d..6975704 100644 --- a/src/vst3/Vst3Effect.hpp +++ b/src/vst3/Vst3Effect.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/vst3/Vst3EffectImpl.hpp b/src/vst3/Vst3EffectImpl.hpp index e910290..ff274d9 100644 --- a/src/vst3/Vst3EffectImpl.hpp +++ b/src/vst3/Vst3EffectImpl.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/vst3/Vst3Host.hpp b/src/vst3/Vst3Host.hpp index 4f2ea96..9e4c2ea 100644 --- a/src/vst3/Vst3Host.hpp +++ b/src/vst3/Vst3Host.hpp @@ -1,7 +1,7 @@ /* /* MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/vst3/Vst3PresetFile.hpp b/src/vst3/Vst3PresetFile.hpp index 6b4be94..0e26c03 100644 --- a/src/vst3/Vst3PresetFile.hpp +++ b/src/vst3/Vst3PresetFile.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/src/vst3/Vst3RtStream.hpp b/src/vst3/Vst3RtStream.hpp index c1ef79b..f563015 100644 --- a/src/vst3/Vst3RtStream.hpp +++ b/src/vst3/Vst3RtStream.hpp @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/test/Lv2HostLeakTest.cpp b/test/Lv2HostLeakTest.cpp index a86f9d8..dbcdb2e 100644 --- a/test/Lv2HostLeakTest.cpp +++ b/test/Lv2HostLeakTest.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/test/Lv2Test.cpp b/test/Lv2Test.cpp index 7a70ded..5c7dfb9 100644 --- a/test/Lv2Test.cpp +++ b/test/Lv2Test.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/test/UriTest.cpp b/test/UriTest.cpp index a050bc3..b12719b 100644 --- a/test/UriTest.cpp +++ b/test/UriTest.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/test/main.cpp b/test/main.cpp index dd0023c..4f5c1c1 100644 --- a/test/main.cpp +++ b/test/main.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/test/pch.h b/test/pch.h index ac6ec41..ca8158c 100644 --- a/test/pch.h +++ b/test/pch.h @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/todo.txt b/todo.txt index d6800b0..1ba6d0a 100644 --- a/todo.txt +++ b/todo.txt @@ -1,98 +1,34 @@ -A2 Questions +Create Factory Model.piBank. -Does A2 support Callibration? -input_level_dbu, output_level_dbu accessors on NeuralAmpModelerCore DSP -slimmable_weights accessors on NeuralAmpModelerCore DSP -standard values for slimmable_weights? +Install procedure for upgrading of Factory Preset. -Implement NAM Model Weight selection UI +Relocate image files. -NAM INput VU is f*ed up. +Prep readme files in Factory Presets. + + +A final solution for rate-limiting on Tone3000. + + + +T3k links in the readme files. Can we start a Popup Flow from the given links? File Player Underrun is NOT CPU use related. There's an underrun somewhere. -Update Pi 4 Benchmark Results: - -The benchmark is to run TooB Neural Amp Modeler with an A1 model to generate 100s of audio. Lower times are better. - -TooB NAM has a compile-time switch that uses either the NeuralAudio NAM implementation or -the Neural Modeler Core NAM implementation. - -Results - - -aarch64 (Raspberry PI 4, ARM Cortex A72, Raspberry PI OS Bookworm) - - Neural Amp Modeler Core: 94.296s - NeuralAudio: 31.589s - - Compiler options: "-Ofast" "-mcpu=cortex-a72" "-march=armv8-a" "-mtune=cortex-a72" "-DEIGEN_DEFAULT_L1_CACHE_SIZE=32768" - -aarch64 (Raspberry PI 5, ARM Cortex A76, Rasperry PI OS Trixie) - - Neural Amp Modeler Core: 16.084s - NeuralAudio: 10.766s - - Compiler options: "-Ofast" "-mcpu=cortex-a76" "-march=armv8.2-a" "-mtune=cortex-a76" "-DEIGEN_DEFAULT_L1_CACHE_SIZE=65536"apt - - - -amd64 Native (AMD Ryzen 7 7735HS, Ubuntu 24.04 amd64) - - Neural Amp Modeler Core: 4.716s - NeuralAudio x64: 3.952s - - Compiler options /Ofast, MMX, SSE, SSE2, no AVX. - -amd64 AVX+ (AMD Ryzen 7 7735HS, Ubuntu 24.04 amd64) - - Neural Amp Modeler Core: 4.97s - NeuralAudio x64: 4.032s - - Compiler options /Ofast, "-march=sandybridge" "-mtune=sandybridge" - -amd64 SSE2 (AMD Ryzen 7 7735HS, Ubuntu 24.04 amd64) - - Neural Amp Modeler Core: 7.748s - NeuralAudio x64: 5.983s - - Compiler options /Ofast (defaults to SSE2, no AVX) - -The Model: - -Package: Fender Deluxe Reverb %2765 Reissue %7c Clean %7c SM57 %2b Royer R-121 %2b Room -Model: Fender DRRI %7c Clean %7c Room Only %7c Full Rig -Downloaded from Tone3000. - -The model file is attached. - - - - - summaries for Mono audio adapaters. Check PWA on windows, edge and chrome. Make sure Pi 4 default audio device is still hidden when selecting devices! -A final solution for rate-limiting on Tone3000. - -A way to force input to mono? - - -Tooltip on File Property Select: add to release notes. sAFEfILEnAMES: RENAME, &C. Safe bank names? NEW BANK WINDOW SIZE CALCUALTIONS ARE WRONG ON LINUX HIDEF DISPLAYS. -Carla Project icons. check reload after change of LV2 plugins. -Exactly one underrun per seek in Toob Player -json nan/inf is fatal. - pipewire aux in? diff --git a/vite/CMakeLists.txt b/vite/CMakeLists.txt index 66e23ef..4e525bf 100644 --- a/vite/CMakeLists.txt +++ b/vite/CMakeLists.txt @@ -21,339 +21,379 @@ add_custom_command( WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/vite DEPENDS - # find public src *.json *.ts -type f >/tmp/tmp.txt - public/serve.json - public/fonts/Roboto-BoldItalic.woff2 - public/fonts/Roboto-MediumItalic.woff2 - public/fonts/Roboto-Thin.woff2 - public/fonts/Roboto-LightItalic.woff2 - public/fonts/epf/epf_lul-webfont.woff - public/fonts/epf/stylesheet.css - public/fonts/england-hand/stylesheet.css - public/fonts/england-hand/england-webfont.woff - public/fonts/comforta/Comfortaa-Bold.ttf - public/fonts/comforta/Comfortaa-Light.ttf - public/fonts/comforta/Comfortaa-Regular.ttf - public/fonts/Roboto-Light.woff2 - public/fonts/Roboto-BlackItalic.woff2 - public/fonts/Roboto-ThinItalic.woff2 - public/fonts/cooper/cooperhewitt-book-webfont.woff2 - public/fonts/cooper/cooperhewitt-lightitalic-webfont.woff2 - public/fonts/cooper/cooperhewitt-bookitalic-webfont.woff2 - public/fonts/cooper/cooperhewitt-semibold-webfont.woff2 - public/fonts/cooper/cooperhewitt-light-webfont.woff2 - public/fonts/LICENSE.txt - public/fonts/Roboto-Regular.woff2 - public/fonts/Roboto-Medium.woff2 - public/fonts/Roboto-Black.woff2 - public/fonts/Roboto-Bold.woff2 - public/fonts/Roboto-Italic.woff2 - public/fonts/pirulen/stylesheet.css - public/fonts/pirulen/pirulen_rg-webfont.woff - public/fonts/questrial/questrial-regular-webfont.woff - public/fonts/questrial/stylesheet.css - public/fonts/nexa/Nexa_Free_Bold-webfont.woff - public/fonts/nexa/stylesheet.css - public/robots.txt + # find public src *.json *.ts -type f >/tmp/tmp.txt public/css/modGui.css public/css/roboto.css - public/manifest.json - public/logo192.png - public/img/fx_dial.svg - public/img/fx_spatial.svg - public/img/ic_logo.svg - public/img/ic_navigate_next.svg - public/img/fx_simulator.svg - public/img/fx_lr.svg - public/img/fx_pitch.svg - public/img/vst.svg - public/img/missing_thumbnail.jpg - public/img/ic_bank.svg - public/img/fx_utility.svg - public/img/fx_compressor.svg - public/img/fx_phaser.svg - public/img/fx_delay.svg - public/img/ic_drawer.svg - public/img/fx_limiter.svg - public/img/fx_mixer.svg - public/img/fx_amplifier.svg - public/img/edit_banks.svg - public/img/old_delete_outline_black_24dp.svg - public/img/fx_eq.svg - public/img/edit_banks_white.svg - public/img/Pi-Logo-3.svg - public/img/fx_split_a.svg - public/img/fx_spectral.svg - public/img/settings_white_24dp.svg - public/img/fx_converter.svg - public/img/ic_presets.svg - public/img/fx_flanger2.svg - public/img/fx_generator.svg - public/img/Pi-Logo-3.png - public/img/red-light-on.png - public/img/fx_oscillator.svg - public/img/ic_drawer_2.svg - public/img/ic_presets_white.svg - public/img/fx_chorus.svg - public/img/settings_black_24dp.svg - public/img/footswitch_strip.png - public/img/BlackKnob.png - public/img/fx_analyzer.svg - public/img/old_delete_outline_white_24dp.svg - public/img/fx_reverb.svg - public/img/fx_instrument.svg - public/img/audio-output.png - public/img/ic_drawer_2.png - public/img/cx_mono.svg - public/img/fx_split_b.svg - public/img/default_album.jpg - public/img/fx_filter_hp.svg - public/img/fx_parametric_eq.svg - public/img/fx_multiband_eq.svg - public/img/fx_filter.svg - public/img/fx_error.svg - public/img/cx_stereo.svg - public/img/fx_modulator.svg - public/img/red-light-off.png - public/img/delete_outline_black_24dp.svg - public/img/fx_gate.svg - public/img/vst.png - public/img/fx_function.svg - public/img/audio-input.png - public/img/fx_terminal.svg - public/img/fx_plugin.svg - public/img/fx_distortion.svg - public/img/fx_constant.svg - public/img/cc-by.png - public/img/fx_empty.svg - public/img/ic_navigate_before.svg - public/img/fx_flanger.svg - public/var/plugin_classes.json - public/var/uiplugins.json + public/html/t3k_response.html public/var/current_pedalboard.json public/var/config.json + public/var/uiplugins.json + public/var/plugin_classes.json + public/testTone300Popup.html + public/licenses/t3k_license.html public/favicon.ico public/iso_codes.json + public/serve.json + public/t3k/handleTone3000download.html + public/img/fx_oscillator.svg + public/img/ic_presets_white.svg + public/img/BlackKnob.png + public/img/audio-output.png + public/img/nd.svg + public/img/delete_outline_black_24dp.svg + public/img/fx_split_a.svg + public/img/edit_banks.svg + public/img/fx_analyzer.svg + public/img/PiPedal20Thumb.jpg + public/img/fx_spectral.svg + public/img/fx_pitch.svg + public/img/ic_presets.svg + public/img/cx_stereo.svg + public/img/fx_mixer.svg + public/img/sa.svg + public/img/ic_navigate_next.svg + public/img/fx_converter.svg + public/img/fx_phaser.svg + public/img/fx_chorus.svg + public/img/fx_modulator.svg + public/img/audio-input.png + public/img/fx_constant.svg + public/img/ic_navigate_before.svg + public/img/nc.svg + public/img/fx_simulator.svg + public/img/missing_thumbnail.jpg + public/img/fx_gate.svg + public/img/fx_plugin.svg + public/img/fx_distortion.svg + public/img/fx_filter.svg + public/img/Pi-Logo-3.svg + public/img/by.svg + public/img/fx_utility.svg + public/img/Pi-Logo-3.png + public/img/fx_compressor.svg + public/img/old_delete_outline_black_24dp.svg + public/img/red-light-on.png + public/img/ic_logo.svg + public/img/fx_function.svg + public/img/fx_generator.svg + public/img/fx_error.svg + public/img/old_delete_outline_white_24dp.svg + public/img/cc0.svg + public/img/footswitch_strip.png + public/img/fx_flanger.svg + public/img/fx_filter_hp.svg + public/img/default_album.jpg + public/img/cc.svg + public/img/fx_reverb.svg + public/img/fx_delay.svg + public/img/ic_drawer_2.svg + public/img/edit_banks_white.svg + public/img/fx_split_b.svg + public/img/settings_black_24dp.svg + public/img/fx_instrument.svg + public/img/fx_terminal.svg + public/img/settings_white_24dp.svg + public/img/fx_dial.svg + public/img/fx_lr.svg + public/img/fx_parametric_eq.svg + public/img/cx_mono.svg + public/img/fx_limiter.svg + public/img/cc-by.png + public/img/ic_bank.svg + public/img/vst.svg + public/img/fx_flanger2.svg + public/img/ic_drawer.svg + public/img/vst.png + public/img/red-light-off.png + public/img/fx_eq.svg + public/img/fx_spatial.svg + public/img/fx_multiband_eq.svg + public/img/fx_amplifier.svg + public/img/fx_empty.svg + public/img/ic_drawer_2.png + public/manifest.json + public/robots.txt public/logo512.png + public/testTone300Select.html + public/fonts/Roboto-Thin.woff2 + public/fonts/epf/epf_lul-webfont.woff + public/fonts/epf/stylesheet.css + public/fonts/Roboto-Black.woff2 + public/fonts/Roboto-Regular.woff2 + public/fonts/cooper/cooperhewitt-light-webfont.woff2 + public/fonts/cooper/cooperhewitt-bookitalic-webfont.woff2 + public/fonts/cooper/cooperhewitt-semibold-webfont.woff2 + public/fonts/cooper/cooperhewitt-lightitalic-webfont.woff2 + public/fonts/cooper/cooperhewitt-book-webfont.woff2 + public/fonts/LICENSE.txt + public/fonts/Roboto-Italic.woff2 + public/fonts/nexa/Nexa_Free_Bold-webfont.woff + public/fonts/nexa/stylesheet.css + public/fonts/comforta/Comfortaa-Bold.ttf + public/fonts/comforta/Comfortaa-Regular.ttf + public/fonts/comforta/Comfortaa-Light.ttf + public/fonts/pirulen/pirulen_rg-webfont.woff + public/fonts/pirulen/stylesheet.css + public/fonts/Roboto-BoldItalic.woff2 + public/fonts/Roboto-Bold.woff2 + public/fonts/Roboto-MediumItalic.woff2 + public/fonts/Roboto-BlackItalic.woff2 + public/fonts/Roboto-Medium.woff2 + public/fonts/Roboto-LightItalic.woff2 + public/fonts/Roboto-ThinItalic.woff2 + public/fonts/england-hand/england-webfont.woff + public/fonts/england-hand/stylesheet.css + public/fonts/Roboto-Light.woff2 + public/fonts/questrial/questrial-regular-webfont.woff + public/fonts/questrial/stylesheet.css + public/logo192.png public/sample_lv2_plugins.json + src/pipedal/Tone3000DownloadType.tsx src/pipedal/SplitUiControls.tsx - src/pipedal/IconButtonEx.tsx - src/pipedal/JackHostStatus.tsx - src/pipedal/FontTest.tsx - src/pipedal/DraggableButtonBase.tsx - src/pipedal/AlsaSequencer.tsx - src/pipedal/VirtualKeyboardHandler.tsx - src/pipedal/TimebaseselectorDialog.tsx - src/pipedal/JackStatusView.tsx - src/pipedal/Pedal.tsx - src/pipedal/PiPedalError.tsx - src/pipedal/AudioFileMetadata.tsx - src/pipedal/FilePropertyControl.tsx - src/pipedal/PerformanceView.tsx - src/pipedal/ChannelBindingsHelpDialog.tsx - src/pipedal/UseWindowSize.tsx - src/pipedal/TemporaryDrawer.tsx - src/pipedal/OkCancelDialog.tsx - src/pipedal/SystemMidiBindingView.tsx - src/pipedal/WifiConfigSettings.tsx - src/pipedal/Timebase.tsx - src/pipedal/LinkEx.tsx - src/pipedal/react-app-env.d.ts - src/pipedal/FileUtils.tsx - src/pipedal/UpdateDialog.tsx - src/pipedal/PresetSelector.tsx - src/pipedal/OkDialog.tsx - src/pipedal/JackServerSettings.tsx - src/pipedal/LoopDialog.tsx - src/pipedal/ToobNamView.tsx - src/pipedal/SearchControl.tsx - src/pipedal/Tone3000AuthComplete.tsx - src/pipedal/ObservableEvent.tsx - src/pipedal/WindowScale.tsx - src/pipedal/DialogStack.tsx - src/pipedal/ToobToneStackView.tsx - src/pipedal/TextFieldEx.tsx - src/pipedal/AppThemed.css src/pipedal/ScreenOrientation.tsx - src/pipedal/PluginIcon.tsx + src/pipedal/FilePropertyDialog.tsx + src/pipedal/SplitControlView.tsx + src/pipedal/WithStyles.tsx + src/pipedal/react-app-env.d.ts + src/pipedal/Banks.tsx + src/pipedal/ToobPlayerControl.tsx + src/pipedal/LinkEx.tsx + src/pipedal/ControlTooltip.tsx + src/pipedal/StringBuilder.tsx + src/pipedal/LoopDialog.tsx + src/pipedal/WifiConfigSettings.tsx + src/pipedal/XxxSnippet.tsx + src/pipedal/SnapshotPropertiesDialog.tsx + src/pipedal/WifiChannel.tsx + src/pipedal/MaterialColors.tsx + src/pipedal/AutoZoom.tsx + src/pipedal/SelectMidiChannelsDialog.tsx + src/pipedal/GovernorSettings.tsx + src/pipedal/PluginInfoDialog.tsx + src/pipedal/AndroidHost.tsx + src/pipedal/JackServerSettings.tsx + src/pipedal/ChannelBindingsHelpDialog.tsx + src/pipedal/UploadPresetDialog.tsx + src/pipedal/GxTunerControl.tsx + src/pipedal/ButtonEx.tsx + src/pipedal/ImportPresetFromBankDialog.tsx + src/pipedal/PluginControlView.tsx + src/pipedal/AlsaMidiDeviceInfo.tsx src/pipedal/ControlSlider.tsx - src/pipedal/svg/snapshot_4.svg - src/pipedal/svg/fx_dial.svg - src/pipedal/svg/fx_spatial.svg - src/pipedal/svg/snapshot_6.svg - src/pipedal/svg/fx_simulator.svg - src/pipedal/svg/ic_save_bank_as.svg - src/pipedal/svg/fx_lr.svg - src/pipedal/svg/fx_pitch.svg - src/pipedal/svg/fx_nam.svg - src/pipedal/svg/snapshot_3.svg - src/pipedal/svg/ic_pluginpreset2.svg - src/pipedal/svg/ic_bank.svg - src/pipedal/svg/mod_ui.svg - src/pipedal/svg/fx_utility.svg - src/pipedal/svg/fx_compressor.svg - src/pipedal/svg/fx_phaser.svg - src/pipedal/svg/fx_delay.svg - src/pipedal/svg/ic_edit_banks.svg - src/pipedal/svg/fx_limiter.svg - src/pipedal/svg/ic_settings.svg - src/pipedal/svg/fx_mixer.svg - src/pipedal/svg/fx_amplifier.svg - src/pipedal/svg/ic_help_outline.svg - src/pipedal/svg/fx_eq.svg - src/pipedal/svg/pp_ui.svg - src/pipedal/svg/fx_split_a.svg - src/pipedal/svg/fx_spectral.svg - src/pipedal/svg/fx_converter.svg - src/pipedal/svg/ic_presets.svg - src/pipedal/svg/fx_flanger2.svg - src/pipedal/svg/fx_generator.svg - src/pipedal/svg/old_delete_outline_24dp.svg - src/pipedal/svg/file_download_black_24dp.svg + src/pipedal/ModFileTypes.tsx + src/pipedal/MidiBinding.tsx + src/pipedal/PedalboardView.tsx + src/pipedal/ChannelRouterSettingsHelpDialog.tsx + src/pipedal/AlsaDeviceInfo.tsx + src/pipedal/OkCancelDialog.tsx + src/pipedal/PerformanceView.tsx + src/pipedal/PresetDialog.tsx + src/pipedal/PluginPreset.tsx + src/pipedal/SavePresetAsDialog.tsx + src/pipedal/SystemMidiBindingsDialog.tsx + src/pipedal/SelectChannelsDialog.tsx + src/pipedal/PluginNameDialog.tsx + src/pipedal/PluginIcon.tsx + src/pipedal/FilePropertyDirectoryTree.tsx + src/pipedal/SnapshotButton.tsx + src/pipedal/WifiDirectConfigSettings.tsx + src/pipedal/PluginPresetSelector.tsx + src/pipedal/Jack.tsx + src/pipedal/ToobMLView.tsx + src/pipedal/ModGuiHost.tsx + src/pipedal/SearchFilter.tsx + src/pipedal/ToobPowerStage2View.tsx + src/pipedal/ControlViewFactory.tsx + src/pipedal/App.tsx + src/pipedal/Rectangle.tsx + src/pipedal/Rect.tsx + src/pipedal/OldDeleteIcon.tsx + src/pipedal/Tone3000Dialog.tsx + src/pipedal/SnapshotColors.tsx + src/pipedal/IControlViewFactory.tsx + src/pipedal/VirtualKeyboardHandler.tsx + src/pipedal/TextInfoDialog.css + src/pipedal/FilePropertyDirectorySelectDialog.tsx + src/pipedal/SnapshotDialog.tsx + src/pipedal/Pedal.tsx + src/pipedal/CopyPresetsToBankDialog.tsx + src/pipedal/ToolTipEx.tsx + src/pipedal/ToobSpectrumAnalyzerView.tsx + src/pipedal/JackStatusView.tsx + src/pipedal/Utility.tsx + src/pipedal/WindowScale.tsx + src/pipedal/NumericInput.tsx + src/pipedal/UploadFileDialog.tsx + src/pipedal/GxTunerView.tsx + src/pipedal/GraphicEqCtl.tsx + src/pipedal/ToobSpectrumResponseView.tsx + src/pipedal/OptionsDialog.tsx + src/pipedal/SelectHoverBackground.tsx + src/pipedal/PluginControl.tsx + src/pipedal/MidiBindingView.tsx + src/pipedal/ToobParametricEqView.tsx + src/pipedal/RenameDialog.tsx + src/pipedal/IconTest.tsx + src/pipedal/PiPedalSocket.tsx + src/pipedal/WifiDirectConfigDialog.tsx + src/pipedal/ToobInputStageView.tsx + src/pipedal/RadioSelectDialog.tsx + src/pipedal/Tone3000Downloader.tsx.bak + src/pipedal/ChannelRouterUiControl.tsx + src/pipedal/SafeFilename.tsx + src/pipedal/ToobNamView.tsx + src/pipedal/t3k/config.ts + src/pipedal/t3k/types.ts + src/pipedal/t3k/tone3000-client.ts + src/pipedal/MidiChannelBindingDialog.tsx + src/pipedal/Tone3000DownloadProgress.tsx + src/pipedal/ChannelRouterSettingsDialog.tsx + src/pipedal/DraggableGrid.tsx + src/pipedal/Tone3000AuthComplete.tsx + src/pipedal/OkDialog.tsx + src/pipedal/ChannelRouterSettings.tsx + src/pipedal/SystemMidiBindingView.tsx + src/pipedal/ObservableEvent.tsx + src/pipedal/FilePropertyControl.tsx + src/pipedal/ZoomedUiControl.tsx + src/pipedal/IconButtonEx.tsx + src/pipedal/FullScreenIME.tsx + src/pipedal/ButtonTooltip.tsx + src/pipedal/ResizeResponsiveComponent.tsx + src/pipedal/DialogEx.tsx + src/pipedal/UseWindowSize.tsx + src/pipedal/SnapshotPanel.tsx + src/pipedal/ToobPlayerView.tsx + src/pipedal/PresetSelector.tsx + src/pipedal/logo.svg + src/pipedal/ToobCabSimView.tsx + src/pipedal/SettingsDialog.tsx + src/pipedal/MidiChannelBinding.tsx + src/pipedal/AlsaSequencer.tsx + src/pipedal/ModGuiErrorBoundary.tsx + src/pipedal/DarkMode.tsx + src/pipedal/Tone3000HelpDialog.tsx + src/pipedal/SearchControl.tsx + src/pipedal/FileUtils.tsx + src/pipedal/JackHostStatus.tsx + src/pipedal/Units.tsx + src/pipedal/ToobWaveShapeView.tsx + src/pipedal/PiPedalModel.tsx + src/pipedal/LoadPluginDialog.tsx + src/pipedal/FontTest.tsx + src/pipedal/GuitarMlHelpDialog.tsx + src/pipedal/SvgPathBuilder.tsx + src/pipedal/ZoomedDial.tsx + src/pipedal/NoChangePassword.tsx + src/pipedal/SideChainSelectControl.tsx + src/pipedal/Timebase.tsx + src/pipedal/AboutDialog.tsx + src/pipedal/AudioFileMetadata.tsx + src/pipedal/TemporaryDrawer.tsx + src/pipedal/TimebaseselectorDialog.tsx + src/pipedal/IconColorDropdownButton.tsx + src/pipedal/PluginOutputControl.tsx + src/pipedal/PluginPresetsDialog.tsx + src/pipedal/JackServerSettingsDialog.tsx + src/pipedal/TextInfo_RewriteT3kUrls.ts + src/pipedal/MidiBindingsDialog.tsx + src/pipedal/DialogStack.tsx + src/pipedal/SnapshotEditor.tsx + src/pipedal/TextInfoDialog.tsx + src/pipedal/Draggable.tsx + src/pipedal/ColorDropdownButton.tsx + src/pipedal/SelectScreenOrientationDialog.tsx + src/pipedal/BankDialog.tsx + src/pipedal/PluginClass.tsx + src/pipedal/Pedalboard.tsx + src/pipedal/ToobToneStackView.tsx + src/pipedal/PiPedalError.tsx + src/pipedal/Tone3000Downloader.tsx + src/pipedal/ScratchClass.tsx src/pipedal/svg/fx_oscillator.svg - src/pipedal/svg/snapshot_1.svg - src/pipedal/svg/fx_chorus.svg + src/pipedal/svg/snapshot_0.svg + src/pipedal/svg/ic_help_outline.svg + src/pipedal/svg/fx_split_a.svg src/pipedal/svg/fx_analyzer.svg - src/pipedal/svg/fx_reverb.svg - src/pipedal/svg/fx_instrument.svg - src/pipedal/svg/drive_file_rename_outline_black_24dp.svg - src/pipedal/svg/fx_split_b.svg - src/pipedal/svg/snapshot_5.svg - src/pipedal/svg/fx_filter_hp.svg - src/pipedal/svg/fx_parametric_eq.svg - src/pipedal/svg/fx_filter.svg - src/pipedal/svg/fx_error.svg + src/pipedal/svg/fx_spectral.svg + src/pipedal/svg/fx_pitch.svg + src/pipedal/svg/ic_presets.svg + src/pipedal/svg/fx_mixer.svg + src/pipedal/svg/file_download_black_24dp.svg + src/pipedal/svg/fx_converter.svg + src/pipedal/svg/fx_phaser.svg + src/pipedal/svg/fx_chorus.svg + src/pipedal/svg/snapshot_6.svg src/pipedal/svg/fx_modulator.svg - src/pipedal/svg/ic_midi.svg + src/pipedal/svg/pp_ui.svg + src/pipedal/svg/fx_constant.svg + src/pipedal/svg/ic_save_bank_as.svg + src/pipedal/svg/fx_simulator.svg src/pipedal/svg/fx_gate.svg - src/pipedal/svg/ic_pluginpreset.svg - src/pipedal/svg/fx_function.svg - src/pipedal/svg/snapshot_2.svg - src/pipedal/svg/file_upload_black_24dp.svg - src/pipedal/svg/fx_terminal.svg src/pipedal/svg/fx_plugin.svg src/pipedal/svg/fx_distortion.svg - src/pipedal/svg/fx_constant.svg - src/pipedal/svg/snapshot_0.svg - src/pipedal/svg/fx_empty.svg + src/pipedal/svg/fx_filter.svg + src/pipedal/svg/ic_sidechain_open_48.svg + src/pipedal/svg/fx_utility.svg + src/pipedal/svg/fx_nam.svg + src/pipedal/svg/fx_compressor.svg + src/pipedal/svg/fx_function.svg + src/pipedal/svg/fx_generator.svg + src/pipedal/svg/fx_error.svg + src/pipedal/svg/file_upload_black_24dp.svg + src/pipedal/svg/snapshot_5.svg src/pipedal/svg/fx_flanger.svg - src/pipedal/AboutDialog.tsx - src/pipedal/ToobPlayerView.tsx - src/pipedal/NumericInput.tsx - src/pipedal/SelectHoverBackground.tsx - src/pipedal/MidiBindingView.tsx - src/pipedal/GxTunerView.tsx - src/pipedal/SnapshotDialog.tsx - src/pipedal/AndroidHost.tsx - src/pipedal/SplitControlView.tsx - src/pipedal/ToobFrequencyResponseView.tsx - src/pipedal/ButtonTooltip.tsx - src/pipedal/ObservableProperty.tsx - src/pipedal/UploadPresetDialog.tsx - src/pipedal/Utility.tsx - src/pipedal/ToobSpectrumResponseView.tsx - src/pipedal/ToobMLView.tsx - src/pipedal/Banks.tsx - src/pipedal/Units.tsx - src/pipedal/StringBuilder.tsx - src/pipedal/ToobCabSimView.tsx - src/pipedal/ToobSpectrumAnalyzerView.tsx - src/pipedal/ScratchClass.tsx - src/pipedal/ButtonEx.tsx - src/pipedal/ControlTooltip.tsx - src/pipedal/AlsaMidiDeviceInfo.tsx - src/pipedal/ToobInputStageView.tsx - src/pipedal/MidiChannelBindingControl.tsx - src/pipedal/MidiChannelBindingDialog.tsx - src/pipedal/ToobWaveShapeView.tsx - src/pipedal/PiPedalSocket.tsx - src/pipedal/SnapshotColors.tsx - src/pipedal/SnapshotButton.tsx - src/pipedal/ResizeResponsiveComponent.tsx - src/pipedal/SnapshotPropertiesDialog.tsx - src/pipedal/PluginInfoDialog.tsx - src/pipedal/DarkMode.tsx - src/pipedal/Updater.tsx - src/pipedal/Rect.tsx - src/pipedal/ToolTipEx.tsx - src/pipedal/PedalboardView.tsx - src/pipedal/JackServerSettingsDialog.tsx - src/pipedal/PluginOutputControl.tsx - src/pipedal/PresetDialog.tsx - src/pipedal/MidiBinding.tsx - src/pipedal/FilePropertyDirectoryTree.tsx - src/pipedal/SnapshotPanel.tsx - src/pipedal/PiPedalModel.tsx - src/pipedal/RadioSelectDialog.tsx - src/pipedal/WifiChannel.tsx - src/pipedal/App.tsx - src/pipedal/IControlViewFactory.tsx - src/pipedal/Tone3000HelpDialog.tsx - src/pipedal/WifiDirectConfigSettings.tsx - src/pipedal/ZoomedUiControl.tsx - src/pipedal/MidiBindingsDialog.tsx + src/pipedal/svg/snapshot_1.svg + src/pipedal/svg/fx_filter_hp.svg + src/pipedal/svg/fx_reverb.svg + src/pipedal/svg/fx_delay.svg + src/pipedal/svg/drive_file_rename_outline_black_24dp.svg + src/pipedal/svg/fx_split_b.svg + src/pipedal/svg/old_delete_outline_24dp.svg + src/pipedal/svg/fx_instrument.svg + src/pipedal/svg/ic_pluginpreset.svg + src/pipedal/svg/fx_terminal.svg + src/pipedal/svg/fx_dial.svg + src/pipedal/svg/fx_lr.svg + src/pipedal/svg/fx_parametric_eq.svg + src/pipedal/svg/ic_midi.svg + src/pipedal/svg/fx_limiter.svg + src/pipedal/svg/ic_settings.svg + src/pipedal/svg/snapshot_2.svg + src/pipedal/svg/snapshot_3.svg + src/pipedal/svg/expand_circle_up_24dp.svg + src/pipedal/svg/ic_pluginpreset2.svg + src/pipedal/svg/ic_bank.svg + src/pipedal/svg/fx_flanger2.svg + src/pipedal/svg/snapshot_4.svg + src/pipedal/svg/ic_edit_banks.svg + src/pipedal/svg/fx_eq.svg + src/pipedal/svg/fx_spatial.svg + src/pipedal/svg/fx_multiband_eq.svg + src/pipedal/svg/fx_amplifier.svg + src/pipedal/svg/mod_ui.svg + src/pipedal/svg/expand_circle_down_24dp.svg + src/pipedal/svg/fx_empty.svg src/pipedal/JsonAtom.tsx - src/pipedal/DialogEx.tsx - src/pipedal/FullScreenIME.tsx - src/pipedal/FilePropertyDialog.tsx - src/pipedal/RenameDialog.tsx - src/pipedal/SelectScreenOrientationDialog.tsx - src/pipedal/ControlViewFactory.tsx - src/pipedal/MaterialColors.tsx - src/pipedal/PluginPresetsDialog.tsx - src/pipedal/PluginControl.tsx - src/pipedal/PluginControlView.tsx - src/pipedal/ToobPowerStage2View.tsx - src/pipedal/NoChangePassword.tsx - src/pipedal/logo.svg - src/pipedal/WithStyles.tsx - src/pipedal/AlsaDeviceInfo.tsx - src/pipedal/Lv2Plugin.tsx - src/pipedal/SvgPathBuilder.tsx - src/pipedal/SnapshotEditor.tsx - src/pipedal/ColorDropdownButton.tsx - src/pipedal/ZoomedDial.tsx - src/pipedal/VuMeter.tsx - src/pipedal/SystemMidiBindingsDialog.tsx - src/pipedal/GxTunerControl.tsx - src/pipedal/BankDialog.tsx - src/pipedal/FilePropertyDirectorySelectDialog.tsx - src/pipedal/GovernorSettings.tsx - src/pipedal/ModGuiHost.tsx - src/pipedal/XxxSnippet.tsx - src/pipedal/Tone3000Dialog.tsx - src/pipedal/PluginPresetSelector.tsx - src/pipedal/OldDeleteIcon.tsx - src/pipedal/SelectMidiChannelsDialog.tsx - src/pipedal/SearchFilter.tsx - src/pipedal/Jack.tsx - src/pipedal/ToobPlayerControl.tsx - src/pipedal/ModGuiErrorBoundary.tsx - src/pipedal/LoadPluginDialog.tsx - src/pipedal/Pedalboard.tsx - src/pipedal/Draggable.tsx - src/pipedal/SelectChannelsDialog.tsx - src/pipedal/PluginClass.tsx - src/pipedal/DraggableGrid.tsx - src/pipedal/GraphicEqCtl.tsx - src/pipedal/WifiConfigDialog.tsx - src/pipedal/GuitarMlHelpDialog.tsx - src/pipedal/SelectThemeDialog.tsx - src/pipedal/WifiDirectConfigDialog.tsx - src/pipedal/UploadFileDialog.tsx - src/pipedal/MainPage.tsx - src/pipedal/Rectangle.tsx - src/pipedal/PluginPreset.tsx - src/pipedal/SettingsDialog.tsx - src/pipedal/AutoZoom.tsx + src/pipedal/AppThemed.css + src/pipedal/ToobFrequencyResponseView.tsx src/pipedal/AppThemed.tsx - src/pipedal/OptionsDialog.tsx - src/pipedal/MidiChannelBinding.tsx - src/pipedal/ModFileTypes.tsx + src/pipedal/MainPage.tsx + src/pipedal/Lv2Plugin.tsx + src/pipedal/DraggableButtonBase.tsx + src/pipedal/WifiConfigDialog.tsx + src/pipedal/MidiChannelBindingControl.tsx + src/pipedal/TextFieldEx.tsx + src/pipedal/SelectThemeDialog.tsx + src/pipedal/ObservableProperty.tsx + src/pipedal/UpdateDialog.tsx + src/pipedal/Updater.tsx + src/pipedal/VuMeter.tsx src/assets/react.svg + src/t3k_response.tsx src/vite-env.d.ts - src/index.css src/main.tsx + src/index.css package.json package-lock.json tsconfig.app.json diff --git a/vite/debug.sh b/vite/debug.sh index 9ff56c7..6475b3b 100755 --- a/vite/debug.sh +++ b/vite/debug.sh @@ -1,2 +1,2 @@ #!/bin/bash -npm run dev -- --host 0.0.0.0 +npm run dev -- --host 0.0.0.0 diff --git a/vite/public/img/PiPedal20Thumb.jpg b/vite/public/img/PiPedal20Thumb.jpg new file mode 100644 index 0000000..59f4550 Binary files /dev/null and b/vite/public/img/PiPedal20Thumb.jpg differ diff --git a/vite/src/pipedal/AboutDialog.tsx b/vite/src/pipedal/AboutDialog.tsx index 5dfd860..8a05e11 100644 --- a/vite/src/pipedal/AboutDialog.tsx +++ b/vite/src/pipedal/AboutDialog.tsx @@ -16,7 +16,7 @@ import DialogEx from './DialogEx'; import Slide, { SlideProps } from '@mui/material/Slide'; -interface AboutDialogProps { +interface AboutDialogProps { open: boolean; onClose: () => void; }; @@ -38,7 +38,7 @@ const Transition = React.forwardRef(function Transition( const AboutDialog = class extends Component { model: PiPedalModel; - refNotices: React.RefObject; + refNotices: React.RefObject; constructor(props: AboutDialogProps) { @@ -166,7 +166,7 @@ const AboutDialog = class extends Component >
@@ -178,7 +178,7 @@ const AboutDialog = class extends Component
- Copyright © 2022-2025 Robin Davies. + Copyright © Robin Davies. {this.model.isAndroidHosted() && ( @@ -188,7 +188,7 @@ const AboutDialog = class extends Component {this.model.isAndroidHosted() && ( - Copyright © 2022-2024 Robin Davies. + Copyright © Robin Davies. )} @@ -216,7 +216,77 @@ const AboutDialog = class extends Component {this.model.serverVersion?.osVersion ?? ""}
-
+
+ + + + T3K LICENSED FILES + + + The following files are provided under a T3K license. Under an arrangement with Tone3000.com, + permission has been granted to Robin Davies to distribute these files ONLY with PiPedal. + +
    +
  • + + "default_presets/V3 Factory Presets.piBank" (contains compressed versions of the protected files). + +
  • +
  • + + The installed file "/etc/pipedal/config/default_presets/presets/V3 Factory Presets.piBank" + +
  • +
  • + + Files installed in "/var/pipedal/audio_uploads/NeuralAmpModels/Factory Models/" + +
  • +
  • + + Files installed in "/var/pipedal/audio_uploads/IRs/Factory IRs/" + +
  • +
+ + Please contact the original authors for permission if you would like to distribute these files for + other purposes, or if you would like to distribute these files in a forked version of PiPedal. + + + + T3K License + + + Users may download and use the data file in software and publish the resulting outputs without + royalties or restrictions. However, they may not upload, republish, or distribute the data file + without the author's permission. + + + + Original Authors + + diff --git a/vite/src/pipedal/AlsaDeviceInfo.tsx b/vite/src/pipedal/AlsaDeviceInfo.tsx index 71899b1..2620eba 100644 --- a/vite/src/pipedal/AlsaDeviceInfo.tsx +++ b/vite/src/pipedal/AlsaDeviceInfo.tsx @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * Copyright (c) Gabriel Hernandez * * Permission is hereby granted, free of charge, to any person obtaining a copy of diff --git a/vite/src/pipedal/AlsaMidiDeviceInfo.tsx b/vite/src/pipedal/AlsaMidiDeviceInfo.tsx index 6207ab2..f35f74b 100644 --- a/vite/src/pipedal/AlsaMidiDeviceInfo.tsx +++ b/vite/src/pipedal/AlsaMidiDeviceInfo.tsx @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * Copyright (c) Gabriel Hernandez * * Permission is hereby granted, free of charge, to any person obtaining a copy of diff --git a/vite/src/pipedal/AlsaSequencer.tsx b/vite/src/pipedal/AlsaSequencer.tsx index 33922d9..702cf28 100644 --- a/vite/src/pipedal/AlsaSequencer.tsx +++ b/vite/src/pipedal/AlsaSequencer.tsx @@ -1,4 +1,4 @@ -// Copyright (c) Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // Copyright (c) Gabriel Hernandez // // Permission is hereby granted, free of charge, to any person obtaining a copy of diff --git a/vite/src/pipedal/AndroidHost.tsx b/vite/src/pipedal/AndroidHost.tsx index 18556ac..2dffcec 100644 --- a/vite/src/pipedal/AndroidHost.tsx +++ b/vite/src/pipedal/AndroidHost.tsx @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/App.tsx b/vite/src/pipedal/App.tsx index 202c11a..fee32a5 100644 --- a/vite/src/pipedal/App.tsx +++ b/vite/src/pipedal/App.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/AppThemed.tsx b/vite/src/pipedal/AppThemed.tsx index 503969f..2c2cdd2 100644 --- a/vite/src/pipedal/AppThemed.tsx +++ b/vite/src/pipedal/AppThemed.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/AudioFileMetadata.tsx b/vite/src/pipedal/AudioFileMetadata.tsx index 30dd26c..cab0fd6 100644 --- a/vite/src/pipedal/AudioFileMetadata.tsx +++ b/vite/src/pipedal/AudioFileMetadata.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/AutoZoom.tsx b/vite/src/pipedal/AutoZoom.tsx index 8e50e90..be665c9 100644 --- a/vite/src/pipedal/AutoZoom.tsx +++ b/vite/src/pipedal/AutoZoom.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2025 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/BankDialog.tsx b/vite/src/pipedal/BankDialog.tsx index 303b500..2b71f67 100644 --- a/vite/src/pipedal/BankDialog.tsx +++ b/vite/src/pipedal/BankDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/Banks.tsx b/vite/src/pipedal/Banks.tsx index dec5ecc..d68f1b0 100644 --- a/vite/src/pipedal/Banks.tsx +++ b/vite/src/pipedal/Banks.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ButtonEx.tsx b/vite/src/pipedal/ButtonEx.tsx index 55f5f84..6c17066 100644 --- a/vite/src/pipedal/ButtonEx.tsx +++ b/vite/src/pipedal/ButtonEx.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/ButtonTooltip.tsx b/vite/src/pipedal/ButtonTooltip.tsx index 81bf40f..e1c19e3 100644 --- a/vite/src/pipedal/ButtonTooltip.tsx +++ b/vite/src/pipedal/ButtonTooltip.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/ChannelBindingsHelpDialog.tsx b/vite/src/pipedal/ChannelBindingsHelpDialog.tsx index 0829af4..e6d1e9d 100644 --- a/vite/src/pipedal/ChannelBindingsHelpDialog.tsx +++ b/vite/src/pipedal/ChannelBindingsHelpDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ChannelRouterSettingsHelpDialog.tsx b/vite/src/pipedal/ChannelRouterSettingsHelpDialog.tsx index d778e31..3aca9eb 100644 --- a/vite/src/pipedal/ChannelRouterSettingsHelpDialog.tsx +++ b/vite/src/pipedal/ChannelRouterSettingsHelpDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ControlSlider.tsx b/vite/src/pipedal/ControlSlider.tsx index db15fb3..f5d573c 100644 --- a/vite/src/pipedal/ControlSlider.tsx +++ b/vite/src/pipedal/ControlSlider.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/ControlViewFactory.tsx b/vite/src/pipedal/ControlViewFactory.tsx index 2dd5857..a27febe 100644 --- a/vite/src/pipedal/ControlViewFactory.tsx +++ b/vite/src/pipedal/ControlViewFactory.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // Copyright (c) Fulgencio Ruiz Rubio. // // Permission is hereby granted, free of charge, to any person obtaining a copy of diff --git a/vite/src/pipedal/CopyPresetsToBankDialog.tsx b/vite/src/pipedal/CopyPresetsToBankDialog.tsx index 07c9442..f578578 100644 --- a/vite/src/pipedal/CopyPresetsToBankDialog.tsx +++ b/vite/src/pipedal/CopyPresetsToBankDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/DarkMode.tsx b/vite/src/pipedal/DarkMode.tsx index ebfee06..3838d29 100644 --- a/vite/src/pipedal/DarkMode.tsx +++ b/vite/src/pipedal/DarkMode.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/DialogEx.tsx b/vite/src/pipedal/DialogEx.tsx index c22a885..cae0833 100644 --- a/vite/src/pipedal/DialogEx.tsx +++ b/vite/src/pipedal/DialogEx.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in @@ -29,7 +29,7 @@ interface DialogExState { interface DialogExProps extends DialogProps { tag: string; fullwidth?: boolean; - onEnterKey: () => void; + onEnterKey?: () => void; dlgRef?: (instance: HTMLDivElement | null) => void; } diff --git a/vite/src/pipedal/DialogStack.tsx b/vite/src/pipedal/DialogStack.tsx index af875ff..4a606f4 100644 --- a/vite/src/pipedal/DialogStack.tsx +++ b/vite/src/pipedal/DialogStack.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/Draggable.tsx b/vite/src/pipedal/Draggable.tsx index 7857efe..7f2f553 100644 --- a/vite/src/pipedal/Draggable.tsx +++ b/vite/src/pipedal/Draggable.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/DraggableButtonBase.tsx b/vite/src/pipedal/DraggableButtonBase.tsx index bf5d9b5..a271d9e 100644 --- a/vite/src/pipedal/DraggableButtonBase.tsx +++ b/vite/src/pipedal/DraggableButtonBase.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/DraggableGrid.tsx b/vite/src/pipedal/DraggableGrid.tsx index b402b38..878743a 100644 --- a/vite/src/pipedal/DraggableGrid.tsx +++ b/vite/src/pipedal/DraggableGrid.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/FilePropertyControl.tsx b/vite/src/pipedal/FilePropertyControl.tsx index 37482cb..0ca0975 100644 --- a/vite/src/pipedal/FilePropertyControl.tsx +++ b/vite/src/pipedal/FilePropertyControl.tsx @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2023 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/FilePropertyDialog.tsx b/vite/src/pipedal/FilePropertyDialog.tsx index cda47c8..d07ff22 100644 --- a/vite/src/pipedal/FilePropertyDialog.tsx +++ b/vite/src/pipedal/FilePropertyDialog.tsx @@ -68,6 +68,7 @@ import HomeIcon from '@mui/icons-material/Home'; import FilePropertyDirectorySelectDialog from './FilePropertyDirectorySelectDialog'; import { getAlbumArtUri, getTrackTitle } from './AudioFileMetadata'; import Tone3000DownloadType from './Tone3000DownloadType'; +import { ModelSelectionDialog, ModelSelectionDialogParams } from './ModelSelectionDialog'; const ToobNamModelFileUrl = "http://two-play.com/plugins/toob-nam#modelFile"; @@ -182,6 +183,7 @@ export interface FilePropertyDialogState { textFileName?: string; + modelSelectionDialogParams?: ModelSelectionDialogParams; }; interface DragState { @@ -255,7 +257,8 @@ export default withStyles( multiSelect: false, selectedFiles: [], openTone3000Help: false, - openGuitarMlHelp: false + openGuitarMlHelp: false, + modelSelectionDialogParams: undefined, }; this.requestScroll = true; } @@ -588,8 +591,19 @@ export default withStyles( this.requestFiles(this.state.navDirectory) this.model.onTone3000DownloadCompleteEvent.addEventHandler(this.handleTone3000DownloadComplete); this.requestScroll = true; + + this.model.setT3kModelSelectionDialogListener({ + onShowDialog: (modelSelectionDialogParams: ModelSelectionDialogParams) => { + this.setState({ + modelSelectionDialogParams: modelSelectionDialogParams + }); + + } + + }); } componentWillUnmount() { + this.model.setT3kModelSelectionDialogListener(undefined); this.stopAutoScroll(); this.cancelProgressTimeout(); this.model.onTone3000DownloadCompleteEvent.removeEventHandler(this.handleTone3000DownloadComplete); @@ -939,7 +953,8 @@ export default withStyles( ); } - getDefaultPath(): string { + // yyy: depends on dialog type!!! + private getDefaultPath(): string { try { let storage = window.localStorage; let result = storage.getItem("fpDefaultPath"); @@ -1100,14 +1115,13 @@ export default withStyles( let downloadType: Tone3000DownloadType = Tone3000DownloadType.Nam; if (this.props.fileProperty.patchProperty === ToobNamModelFileUrl) { downloadType = Tone3000DownloadType.Nam; - } else if (ToobCabIrFileUrls.includes(this.props.fileProperty.patchProperty)) - { + } else if (ToobCabIrFileUrls.includes(this.props.fileProperty.patchProperty)) { downloadType = Tone3000DownloadType.CabIr; } else { throw new Error("Unsupported file property for Tone3000 dialog"); } this.model.showTone3000DownloadPopup( - downloadType, + downloadType, this.state.currentDirectory); } @@ -1129,10 +1143,32 @@ export default withStyles( } + handleT3kLinkClick(href: string): boolean { + if (!href.startsWith("https://tone3000.com/")) { + return false; + } + return false; + // STUB: Waiting for a way to do a popup flow starting with a tone or user home page. + // let uri = new URL(href); + // if (uri.pathname.split("/").filter(segment => segment.length > 0).length === 1) { + // // It's a username. Launch a select flow with username as a filter. + // let username = uri.pathname.split("/").filter(segment => segment.length > 0)[0]; + // this.model.showTone3000DownloadPopup( + // Tone3000DownloadType.Nam, + // this.state.currentDirectory, + // { + // username: username + // } + // ); + // } + + return true; + } + render() { const isTracksDirectory = this.isTracksDirectory(); const isToobNamModelFile = this.props.fileProperty.patchProperty === ToobNamModelFileUrl; - const isToobCabIrFile = ToobCabIrFileUrls.includes(this.props.fileProperty.patchProperty); + const isToobCabIrFile = ToobCabIrFileUrls.includes(this.props.fileProperty.patchProperty); const isToobMLModelFile = this.props.fileProperty.patchProperty === ToobMlModelFileUrl; const classes = withStyles.getClasses(this.props); @@ -1704,6 +1740,16 @@ export default withStyles( /> + {this.state.modelSelectionDialogParams && ( + { this.setState({ modelSelectionDialogParams: undefined }); } + } + /> + )} this.setState({ textFileName: undefined })} + onT3kLinkClick={(href) => { + return this.handleT3kLinkClick(href); + } + } /> )} @@ -1828,7 +1878,7 @@ export default withStyles( // open pdf in new tab this.model.displayMediaFile(fileName); } - + handleShowTextFile(fileName: string) { this.setState({ textFileName: fileName }); } diff --git a/vite/src/pipedal/FileUtils.tsx b/vite/src/pipedal/FileUtils.tsx index a1bf1c1..958b9ef 100644 --- a/vite/src/pipedal/FileUtils.tsx +++ b/vite/src/pipedal/FileUtils.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/FontTest.tsx b/vite/src/pipedal/FontTest.tsx index 007ddc8..5d1a613 100644 --- a/vite/src/pipedal/FontTest.tsx +++ b/vite/src/pipedal/FontTest.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/FullScreenIME.tsx b/vite/src/pipedal/FullScreenIME.tsx index c762cea..a48ef63 100644 --- a/vite/src/pipedal/FullScreenIME.tsx +++ b/vite/src/pipedal/FullScreenIME.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/GovernorSettings.tsx b/vite/src/pipedal/GovernorSettings.tsx index ed13940..fa1cd1a 100644 --- a/vite/src/pipedal/GovernorSettings.tsx +++ b/vite/src/pipedal/GovernorSettings.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/GraphicEqCtl.tsx b/vite/src/pipedal/GraphicEqCtl.tsx index 289e14e..cc7ec8b 100644 --- a/vite/src/pipedal/GraphicEqCtl.tsx +++ b/vite/src/pipedal/GraphicEqCtl.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/GxTunerControl.tsx b/vite/src/pipedal/GxTunerControl.tsx index 0171975..0701238 100644 --- a/vite/src/pipedal/GxTunerControl.tsx +++ b/vite/src/pipedal/GxTunerControl.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/GxTunerView.tsx b/vite/src/pipedal/GxTunerView.tsx index 2cf0643..11bb885 100644 --- a/vite/src/pipedal/GxTunerView.tsx +++ b/vite/src/pipedal/GxTunerView.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/IControlViewFactory.tsx b/vite/src/pipedal/IControlViewFactory.tsx index c49f588..2c19709 100644 --- a/vite/src/pipedal/IControlViewFactory.tsx +++ b/vite/src/pipedal/IControlViewFactory.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/IconButtonEx.tsx b/vite/src/pipedal/IconButtonEx.tsx index 8f6b13d..6ff7a56 100644 --- a/vite/src/pipedal/IconButtonEx.tsx +++ b/vite/src/pipedal/IconButtonEx.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/IconColorDropdownButton.tsx b/vite/src/pipedal/IconColorDropdownButton.tsx index 11436fd..6e684a8 100644 --- a/vite/src/pipedal/IconColorDropdownButton.tsx +++ b/vite/src/pipedal/IconColorDropdownButton.tsx @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ImportPresetFromBankDialog.tsx b/vite/src/pipedal/ImportPresetFromBankDialog.tsx index 8327a8b..2edfdef 100644 --- a/vite/src/pipedal/ImportPresetFromBankDialog.tsx +++ b/vite/src/pipedal/ImportPresetFromBankDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/Jack.tsx b/vite/src/pipedal/Jack.tsx index b72d2d6..c0d1410 100644 --- a/vite/src/pipedal/Jack.tsx +++ b/vite/src/pipedal/Jack.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/JackHostStatus.tsx b/vite/src/pipedal/JackHostStatus.tsx index de5dee2..53ff143 100644 --- a/vite/src/pipedal/JackHostStatus.tsx +++ b/vite/src/pipedal/JackHostStatus.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/JackServerSettings.tsx b/vite/src/pipedal/JackServerSettings.tsx index 3ba2c0c..96790e4 100644 --- a/vite/src/pipedal/JackServerSettings.tsx +++ b/vite/src/pipedal/JackServerSettings.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/JackServerSettingsDialog.tsx b/vite/src/pipedal/JackServerSettingsDialog.tsx index 6bd0cda..eae2e81 100644 --- a/vite/src/pipedal/JackServerSettingsDialog.tsx +++ b/vite/src/pipedal/JackServerSettingsDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/JackStatusView.tsx b/vite/src/pipedal/JackStatusView.tsx index 6b3a5e6..40a01a4 100644 --- a/vite/src/pipedal/JackStatusView.tsx +++ b/vite/src/pipedal/JackStatusView.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/LinkEx.tsx b/vite/src/pipedal/LinkEx.tsx index 6b82c4d..c1fa6db 100644 --- a/vite/src/pipedal/LinkEx.tsx +++ b/vite/src/pipedal/LinkEx.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/LoadPluginDialog.tsx b/vite/src/pipedal/LoadPluginDialog.tsx index a4ad166..4f05dda 100644 --- a/vite/src/pipedal/LoadPluginDialog.tsx +++ b/vite/src/pipedal/LoadPluginDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/LoopDialog.tsx b/vite/src/pipedal/LoopDialog.tsx index c32e5ba..55a1541 100644 --- a/vite/src/pipedal/LoopDialog.tsx +++ b/vite/src/pipedal/LoopDialog.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/Lv2Plugin.tsx b/vite/src/pipedal/Lv2Plugin.tsx index beb6f34..d45e4b4 100644 --- a/vite/src/pipedal/Lv2Plugin.tsx +++ b/vite/src/pipedal/Lv2Plugin.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/MainPage.tsx b/vite/src/pipedal/MainPage.tsx index 613f451..59c78b8 100644 --- a/vite/src/pipedal/MainPage.tsx +++ b/vite/src/pipedal/MainPage.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/MidiBinding.tsx b/vite/src/pipedal/MidiBinding.tsx index 27f197d..f464fa7 100644 --- a/vite/src/pipedal/MidiBinding.tsx +++ b/vite/src/pipedal/MidiBinding.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/MidiBindingView.tsx b/vite/src/pipedal/MidiBindingView.tsx index cda8cda..f7b72a2 100644 --- a/vite/src/pipedal/MidiBindingView.tsx +++ b/vite/src/pipedal/MidiBindingView.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/MidiBindingsDialog.tsx b/vite/src/pipedal/MidiBindingsDialog.tsx index 9492e50..e746d55 100644 --- a/vite/src/pipedal/MidiBindingsDialog.tsx +++ b/vite/src/pipedal/MidiBindingsDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/MidiChannelBinding.tsx b/vite/src/pipedal/MidiChannelBinding.tsx index 06dab83..7160efd 100644 --- a/vite/src/pipedal/MidiChannelBinding.tsx +++ b/vite/src/pipedal/MidiChannelBinding.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2024 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/MidiChannelBindingControl.tsx b/vite/src/pipedal/MidiChannelBindingControl.tsx index dbcef51..bcbff1f 100644 --- a/vite/src/pipedal/MidiChannelBindingControl.tsx +++ b/vite/src/pipedal/MidiChannelBindingControl.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2024 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/MidiChannelBindingDialog.tsx b/vite/src/pipedal/MidiChannelBindingDialog.tsx index 027a81a..a7084e6 100644 --- a/vite/src/pipedal/MidiChannelBindingDialog.tsx +++ b/vite/src/pipedal/MidiChannelBindingDialog.tsx @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ -// Copyright (c) 2024 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ModFileTypes.tsx b/vite/src/pipedal/ModFileTypes.tsx index e4f4f63..415e85a 100644 --- a/vite/src/pipedal/ModFileTypes.tsx +++ b/vite/src/pipedal/ModFileTypes.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ModGuiErrorBoundary.tsx b/vite/src/pipedal/ModGuiErrorBoundary.tsx index 476a152..c8b4fe5 100644 --- a/vite/src/pipedal/ModGuiErrorBoundary.tsx +++ b/vite/src/pipedal/ModGuiErrorBoundary.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/ModGuiHost.tsx b/vite/src/pipedal/ModGuiHost.tsx index 4b8aeeb..d123916 100644 --- a/vite/src/pipedal/ModGuiHost.tsx +++ b/vite/src/pipedal/ModGuiHost.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/ModelSelectionDialog.tsx b/vite/src/pipedal/ModelSelectionDialog.tsx new file mode 100644 index 0000000..e0a7579 --- /dev/null +++ b/vite/src/pipedal/ModelSelectionDialog.tsx @@ -0,0 +1,211 @@ +/* + * Copyright (c) Robin E.R. Davies + * All rights reserved. + + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +import Button from "@mui/material/Button"; +import Checkbox from "@mui/material/Checkbox"; +import DialogActions from "@mui/material/DialogActions"; +import DialogContent from "@mui/material/DialogContent"; +import Paper from "@mui/material/Paper"; +import Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableHead from "@mui/material/TableHead"; +import TableRow from "@mui/material/TableRow"; +import React, { useEffect } from "react"; + +import DialogEx from "./DialogEx"; +import { Model } from "./t3k/types.ts"; +import Tone3000DownloadType from "./Tone3000DownloadType.tsx"; +import Divider from "@mui/material/Divider"; +import Toolbar from "@mui/material/Toolbar"; +import Typography from "@mui/material/Typography"; +import IconButtonEx from "./IconButtonEx.tsx"; +import ArrowBackIcon from '@mui/icons-material/ArrowBack'; +import DialogTitle from "@mui/material/DialogTitle"; +import useWindowSize from "./UseWindowSize.tsx"; + +interface ModelSelection { + selected: boolean; + model: Model; +} + +export interface ModelSelectionDialogParams { + downloadType: Tone3000DownloadType; + toneName: string; + models: Model[]; + onCancel: () => void; + onModelsSelected: (selectedModels: Model[]) => void; +}; + +export function ModelSelectionDialog( + props: { + open: boolean; + params: ModelSelectionDialogParams; + onClose: () => void; + }) { + + const { models, toneName, onCancel, onModelsSelected } = props.params; + const windowSize = useWindowSize(); + + const [modelSelection, setModelSelection] = React.useState([]); + + useEffect(() => { + setModelSelection(models.map((model) => ({ + selected: false, + model, + }))); + }, [models]); + + const selectedCount = modelSelection.filter((selection) => selection.selected).length; + const allSelected = modelSelection.length > 0 && selectedCount === modelSelection.length; + const partiallySelected = selectedCount > 0 && selectedCount < modelSelection.length; + + const toggleAll = () => { + setModelSelection((currentSelection) => { + const nextSelected = !allSelected; + return currentSelection.map((selection) => ({ + ...selection, + selected: nextSelected, + })); + }); + }; + + const toggleModel = (modelId: number) => { + setModelSelection((currentSelection) => currentSelection.map((selection) => { + if (selection.model.id !== modelId) { + return selection; + } + return { + ...selection, + selected: !selection.selected, + }; + })); + }; + + const handleCancel = () => { + onCancel(); + props.onClose(); + }; + + const handleOk = () => { + onModelsSelected( + modelSelection + .filter((selection) => selection.selected) + .map((selection) => selection.model) + ); + props.onClose(); + }; + + let title = props.params.downloadType === Tone3000DownloadType.Nam + ? "Select Models" : + "Select IRs "; + + let tableTitle = + "(" + selectedCount.toString() + " of " + models.length.toString() + " selected) - " + toneName + + return ( + { /* Do nothing */ }} + fullWidth={true} maxWidth="md" + fullScreen={windowSize[0].width < 450} + + + > + + + + { handleCancel(); }} + > + + + + {title} + + + + + + + + + + + + + {tableTitle} + + + + + {modelSelection.map((selection) => ( + toggleModel(selection.model.id)} + sx={{ cursor: 'pointer', backgroundColor: 'transparent' }} + > + + { event.stopPropagation(); }} + onChange={() => toggleModel(selection.model.id)} + inputProps={{ 'aria-labelledby': `model-selection-${selection.model.id}` }} + /> + + + + {selection.model.name} + + + + ))} + +
+
+
+ + + + + +
+ ); +} \ No newline at end of file diff --git a/vite/src/pipedal/NoChangePassword.tsx b/vite/src/pipedal/NoChangePassword.tsx index eb13e58..e32493b 100644 --- a/vite/src/pipedal/NoChangePassword.tsx +++ b/vite/src/pipedal/NoChangePassword.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/NumericInput.tsx b/vite/src/pipedal/NumericInput.tsx index 627f05d..28fa61f 100644 --- a/vite/src/pipedal/NumericInput.tsx +++ b/vite/src/pipedal/NumericInput.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ObservableEvent.tsx b/vite/src/pipedal/ObservableEvent.tsx index a9e3be9..83725f6 100644 --- a/vite/src/pipedal/ObservableEvent.tsx +++ b/vite/src/pipedal/ObservableEvent.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ObservableProperty.tsx b/vite/src/pipedal/ObservableProperty.tsx index 12f2e00..d951a18 100644 --- a/vite/src/pipedal/ObservableProperty.tsx +++ b/vite/src/pipedal/ObservableProperty.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/OkCancelDialog.tsx b/vite/src/pipedal/OkCancelDialog.tsx index c46384e..0624de3 100644 --- a/vite/src/pipedal/OkCancelDialog.tsx +++ b/vite/src/pipedal/OkCancelDialog.tsx @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/OkDialog.tsx b/vite/src/pipedal/OkDialog.tsx index cc0d4cc..650aea7 100644 --- a/vite/src/pipedal/OkDialog.tsx +++ b/vite/src/pipedal/OkDialog.tsx @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/OptionsDialog.tsx b/vite/src/pipedal/OptionsDialog.tsx index 890df65..13a054d 100644 --- a/vite/src/pipedal/OptionsDialog.tsx +++ b/vite/src/pipedal/OptionsDialog.tsx @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/Pedal.tsx b/vite/src/pipedal/Pedal.tsx index 2a549fd..e27bda2 100644 --- a/vite/src/pipedal/Pedal.tsx +++ b/vite/src/pipedal/Pedal.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/Pedalboard.tsx b/vite/src/pipedal/Pedalboard.tsx index 3ee1777..b6d83b5 100644 --- a/vite/src/pipedal/Pedalboard.tsx +++ b/vite/src/pipedal/Pedalboard.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/PedalboardView.tsx b/vite/src/pipedal/PedalboardView.tsx index 82f14e3..5eca3f7 100644 --- a/vite/src/pipedal/PedalboardView.tsx +++ b/vite/src/pipedal/PedalboardView.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in @@ -161,8 +161,11 @@ const pedalboardStyles = (theme: Theme) => createStyles({ marginBottom: (CELL_HEIGHT - FRAME_SIZE) / 2, width: FRAME_SIZE, height: FRAME_SIZE, - border: isDarkMode() ? "1pt #555 solid" : "1pt #666 solid", - borderRadius: 6 + borderColor: "#777", + borderWidth: 2, + borderStyle: "solid", + padding: 1, + borderRadius: 8 }), selectedIconFrame: css({ @@ -178,8 +181,12 @@ const pedalboardStyles = (theme: Theme) => createStyles({ marginBottom: (CELL_HEIGHT - FRAME_SIZE) / 2, width: FRAME_SIZE, height: FRAME_SIZE, - border: isDarkMode() ? "1pt #FFF solid" : "1pt #333 solid", - borderRadius: 6 + borderColor: theme.palette.primary.main, + borderWidth: "2.0px", + borderStyle: "solid", + overflow: "hidden", + borderRadius: 8, + boxShadow: "0 0 6px 0px " + theme.palette.primary.main + "C0" }), borderlessIconFrame: css({ @@ -194,8 +201,9 @@ const pedalboardStyles = (theme: Theme) => createStyles({ marginBottom: (CELL_HEIGHT - FRAME_SIZE) / 2, width: FRAME_SIZE, height: FRAME_SIZE, - border: "0pt #666 solid", - borderRadius: 6 + border: "0px #666 solid", + borderRadius: 8, + overflow: "hidden", }), pedalIcon: css({ @@ -1042,7 +1050,7 @@ const PedalboardView = onDoubleClick={(e: SyntheticEvent) => { this.onItemDoubleClick(e, instanceId); }} onContextMenu={(e: SyntheticEvent) => { this.onItemLongClick(e, instanceId); }} > - this.getScrollContainer()} @@ -1050,7 +1058,7 @@ const PedalboardView = style={{ opacity: enabled ? 0.99 : 0.3 }} > -
+
void; +}; export interface Tone3000PkceParams { publishableKey: string; redirectUrl: string; @@ -708,19 +714,16 @@ export class PiPedalModel //implements PiPedalModel } - async makeTone3000Pkce(redirectUrl: string) : Promise - { - if (this.webSocket === undefined) - { + async makeTone3000Pkce(redirectUrl: string): Promise { + if (this.webSocket === undefined) { throw new Error("Server disconnected."); } return await this.webSocket.request( "makeTone3000Pkce", redirectUrl); } - async sha256Base64url(intput: string) : Promise { - if (this.webSocket === undefined) - { + async sha256Base64url(intput: string): Promise { + if (this.webSocket === undefined) { throw new Error("Server disconnected."); } return this.webSocket.request( @@ -773,7 +776,10 @@ export class PiPedalModel //implements PiPedalModel showTone3000DownloadPopup( downloadType: Tone3000DownloadType, - downloadPath: string + downloadPath: string, + options?: { + userName?: string; + } ): void { if (this.tone3000DownloadHandler === null) { this.tone3000DownloadHandler = new Tone3000DownloadHandler(this); @@ -781,7 +787,7 @@ export class PiPedalModel //implements PiPedalModel this.tone3000DownloadHandler.launchTone3000Popup( downloadType, downloadPath, - ); + options); }; @@ -1333,7 +1339,7 @@ export class PiPedalModel //implements PiPedalModel } async writeTone3000Readme( - filePath: string, + filePath: string, tone: Tone, thumbnailUrl: string @@ -1375,6 +1381,7 @@ export class PiPedalModel //implements PiPedalModel } this.debug = !!data.debug; let { socket_server_port, socket_server_address, max_upload_size } = data; + if ((!socket_server_address) || socket_server_address === "*") { socket_server_address = window.location.hostname; } @@ -1795,9 +1802,7 @@ export class PiPedalModel //implements PiPedalModel setSnapshots(snapshots: (Snapshot | null)[], selectedSnapshot: number) { let pedalboard = this.pedalboard.get().clone(); pedalboard.snapshots = snapshots; - if (selectedSnapshot !== -1) { - pedalboard.selectedSnapshot = selectedSnapshot; - } + pedalboard.selectedSnapshot = selectedSnapshot; this.pruneSnapshotValues(pedalboard); this.setModelPedalboard(pedalboard); @@ -3934,14 +3939,50 @@ export class PiPedalModel //implements PiPedalModel downloadType: Tone3000DownloadType ): void { if (this.webSocket) { - this.webSocket.send("DownloadModelsFromTone3000", { - responseUri: responseUri, + this.webSocket.send("DownloadModelsFromTone3000", { + responseUri: responseUri, tone3000PckceParams: tone3000PckceParams, downloadPath: downloadPath, - downloadType: downloadType === Tone3000DownloadType.Nam ? 0: 1 - }); + downloadType: downloadType === Tone3000DownloadType.Nam ? 0 : 1 + }); } } + private t3kModelSelectionDialogListener?: T3kModelSelectionDialogListener = undefined; + + setT3kModelSelectionDialogListener( + listener: T3kModelSelectionDialogListener | undefined + ) { + this.t3kModelSelectionDialogListener = listener; + } + showT3kModelSelectionDialog( + downloadType: Tone3000DownloadType, + toneName: string, + models: Model[], + onModelsSelected: (selectedModels: Model[]) => void, + onCancel: () => void + ) { + if (!this.t3kModelSelectionDialogListener) { + onCancel(); + return; + } + this.tone3000Downloading.set(false); + this.t3kModelSelectionDialogListener.onShowDialog( + { + downloadType: downloadType, + toneName: toneName, + models: models, + onModelsSelected: (selectedModels: Model[]) => { + this.tone3000Downloading.set(true); + onModelsSelected(selectedModels); + }, + onCancel: () => { + this.tone3000Downloading.set(false); + onCancel(); + + } + } + ); + } }; diff --git a/vite/src/pipedal/PiPedalSocket.tsx b/vite/src/pipedal/PiPedalSocket.tsx index d2257a8..7625faa 100644 --- a/vite/src/pipedal/PiPedalSocket.tsx +++ b/vite/src/pipedal/PiPedalSocket.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/PluginClass.tsx b/vite/src/pipedal/PluginClass.tsx index d62e487..72d7b26 100644 --- a/vite/src/pipedal/PluginClass.tsx +++ b/vite/src/pipedal/PluginClass.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/PluginControl.tsx b/vite/src/pipedal/PluginControl.tsx index 2689be4..826010a 100644 --- a/vite/src/pipedal/PluginControl.tsx +++ b/vite/src/pipedal/PluginControl.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/PluginControlView.tsx b/vite/src/pipedal/PluginControlView.tsx index 0a723e9..8dad030 100644 --- a/vite/src/pipedal/PluginControlView.tsx +++ b/vite/src/pipedal/PluginControlView.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2025 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/PluginIcon.tsx b/vite/src/pipedal/PluginIcon.tsx index eda423a..eba8002 100644 --- a/vite/src/pipedal/PluginIcon.tsx +++ b/vite/src/pipedal/PluginIcon.tsx @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/PluginInfoDialog.tsx b/vite/src/pipedal/PluginInfoDialog.tsx index 945a82b..56c83c2 100644 --- a/vite/src/pipedal/PluginInfoDialog.tsx +++ b/vite/src/pipedal/PluginInfoDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/PluginNameDialog.tsx b/vite/src/pipedal/PluginNameDialog.tsx index 864d518..d3cac43 100644 --- a/vite/src/pipedal/PluginNameDialog.tsx +++ b/vite/src/pipedal/PluginNameDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/PluginPreset.tsx b/vite/src/pipedal/PluginPreset.tsx index 6d8160b..aa9abf4 100644 --- a/vite/src/pipedal/PluginPreset.tsx +++ b/vite/src/pipedal/PluginPreset.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/PluginPresetSelector.tsx b/vite/src/pipedal/PluginPresetSelector.tsx index 00eb640..698651c 100644 --- a/vite/src/pipedal/PluginPresetSelector.tsx +++ b/vite/src/pipedal/PluginPresetSelector.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/PluginPresetsDialog.tsx b/vite/src/pipedal/PluginPresetsDialog.tsx index 382883a..18e9fba 100644 --- a/vite/src/pipedal/PluginPresetsDialog.tsx +++ b/vite/src/pipedal/PluginPresetsDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/PresetDialog.tsx b/vite/src/pipedal/PresetDialog.tsx index 8e39926..8339097 100644 --- a/vite/src/pipedal/PresetDialog.tsx +++ b/vite/src/pipedal/PresetDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/PresetSelector.tsx b/vite/src/pipedal/PresetSelector.tsx index 2ec7979..531ccd2 100644 --- a/vite/src/pipedal/PresetSelector.tsx +++ b/vite/src/pipedal/PresetSelector.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/RadioSelectDialog.tsx b/vite/src/pipedal/RadioSelectDialog.tsx index 222cf32..cc2e721 100644 --- a/vite/src/pipedal/RadioSelectDialog.tsx +++ b/vite/src/pipedal/RadioSelectDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/Rect.tsx b/vite/src/pipedal/Rect.tsx index 8ef44d1..2a15e07 100644 --- a/vite/src/pipedal/Rect.tsx +++ b/vite/src/pipedal/Rect.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/RenameDialog.tsx b/vite/src/pipedal/RenameDialog.tsx index 2d91ce3..d87b55c 100644 --- a/vite/src/pipedal/RenameDialog.tsx +++ b/vite/src/pipedal/RenameDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ResizeResponsiveComponent.tsx b/vite/src/pipedal/ResizeResponsiveComponent.tsx index 726b352..d7f6103 100644 --- a/vite/src/pipedal/ResizeResponsiveComponent.tsx +++ b/vite/src/pipedal/ResizeResponsiveComponent.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/SavePresetAsDialog.tsx b/vite/src/pipedal/SavePresetAsDialog.tsx index 2e96f0c..7815d06 100644 --- a/vite/src/pipedal/SavePresetAsDialog.tsx +++ b/vite/src/pipedal/SavePresetAsDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ScratchClass.tsx b/vite/src/pipedal/ScratchClass.tsx index fbe6a6e..9805fe5 100644 --- a/vite/src/pipedal/ScratchClass.tsx +++ b/vite/src/pipedal/ScratchClass.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2025 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ScreenOrientation.tsx b/vite/src/pipedal/ScreenOrientation.tsx index 05f3465..2287ed8 100644 --- a/vite/src/pipedal/ScreenOrientation.tsx +++ b/vite/src/pipedal/ScreenOrientation.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/SearchControl.tsx b/vite/src/pipedal/SearchControl.tsx index 05e1d1e..f510f20 100644 --- a/vite/src/pipedal/SearchControl.tsx +++ b/vite/src/pipedal/SearchControl.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/SelectChannelsDialog.tsx b/vite/src/pipedal/SelectChannelsDialog.tsx index e274adc..d15ada6 100644 --- a/vite/src/pipedal/SelectChannelsDialog.tsx +++ b/vite/src/pipedal/SelectChannelsDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/SelectHoverBackground.tsx b/vite/src/pipedal/SelectHoverBackground.tsx index bc482af..6cf87a9 100644 --- a/vite/src/pipedal/SelectHoverBackground.tsx +++ b/vite/src/pipedal/SelectHoverBackground.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/SelectScreenOrientationDialog.tsx b/vite/src/pipedal/SelectScreenOrientationDialog.tsx index 6a002bf..862ab76 100644 --- a/vite/src/pipedal/SelectScreenOrientationDialog.tsx +++ b/vite/src/pipedal/SelectScreenOrientationDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/SettingsDialog.tsx b/vite/src/pipedal/SettingsDialog.tsx index d008cfc..e70c38f 100644 --- a/vite/src/pipedal/SettingsDialog.tsx +++ b/vite/src/pipedal/SettingsDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // Copyright (c) Gabriel Hernandez // // Permission is hereby granted, free of charge, to any person obtaining a copy of diff --git a/vite/src/pipedal/SideChainSelectControl.tsx b/vite/src/pipedal/SideChainSelectControl.tsx index f4f3177..e2e9e07 100644 --- a/vite/src/pipedal/SideChainSelectControl.tsx +++ b/vite/src/pipedal/SideChainSelectControl.tsx @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/SnapshotButton.tsx b/vite/src/pipedal/SnapshotButton.tsx index 7844fc9..cd6530f 100644 --- a/vite/src/pipedal/SnapshotButton.tsx +++ b/vite/src/pipedal/SnapshotButton.tsx @@ -1,7 +1,7 @@ /* * MIT License * -* Copyright (c) 2024 Robin E. R. Davies +* Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in @@ -150,7 +150,8 @@ export default class SnapshotButton extends ResizeResponsiveComponent { if (snapshot) this.props.onSelectSnapshot(snapshotIndex); }} + onClick={() => { + if (snapshot) this.props.onSelectSnapshot(snapshotIndex); }} > {/* select background mask*/}
{this.onEditSnapshot(index)}} - onSaveSnapshot={(index)=>{ this.onSaveSnapshot(index); }} - onSelectSnapshot={(index)=>{this.model.selectSnapshot(index);}} + onEditSnapshot={(index) => { this.onEditSnapshot(index) }} + onSaveSnapshot={(index) => { this.onSaveSnapshot(index); }} + onSelectSnapshot={(index) => { this.model.selectSnapshot(index); }} /> ); } - + handleRemoveSnapshot(snapshotId: number) { + let snapshots = Snapshot.cloneSnapshots(this.state.snapshots); + snapshots[snapshotId] = null; + this.setState({ + snapshots: snapshots, + snapshotPropertiesDialogOpen: false, + selectedSnapshot: -1 + }); + this.model.setSnapshots(snapshots, -1); + this.model.selectSnapshot(-1); + } handleSnapshotPropertyOk(index: number, name: string, color: string, editing: boolean) { if (editing) { @@ -286,6 +295,9 @@ export default class SnapshotPanel extends ResizeResponsiveComponent { + this.handleRemoveSnapshot(snapshotId); + }} onClose={() => { this.setState({ snapshotPropertiesDialogOpen: false }); }} onOk={(snapshotId, name, color, editing) => { this.handleSnapshotPropertyOk(snapshotId, name, color, editing); diff --git a/vite/src/pipedal/SnapshotPropertiesDialog.tsx b/vite/src/pipedal/SnapshotPropertiesDialog.tsx index c69128a..aeb3ef4 100644 --- a/vite/src/pipedal/SnapshotPropertiesDialog.tsx +++ b/vite/src/pipedal/SnapshotPropertiesDialog.tsx @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2024 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in @@ -36,7 +36,7 @@ import { colorKeys } from "./MaterialColors"; import ResizeResponsiveComponent from './ResizeResponsiveComponent'; import ColorDropdownButton, { DropdownAlignment } from './ColorDropdownButton'; -const snapshotColors = colorKeys.slice(0,100); +const snapshotColors = colorKeys.slice(0, 100); const NBSP = "\u00A0"; export interface SnapshotPropertiesDialogProps { @@ -46,6 +46,7 @@ export interface SnapshotPropertiesDialogProps { snapshotIndex: number, color: string, onOk: (snapshotId: number, name: string, color: string, editing: boolean) => void, + onRemove: (snapshotid: number) => void, onClose: () => void }; @@ -54,6 +55,7 @@ export interface SnapshotPropertiesDialogState { color: string, nameErrorMessage: string, compactVertical: boolean, + showRemoveConfirm: boolean }; export default class SnapshotPropertiesDialog extends ResizeResponsiveComponent { @@ -72,21 +74,21 @@ export default class SnapshotPropertiesDialog extends ResizeResponsiveComponent< color = snapshotColors[0]; } let name = this.props.name; - if (name.length === 0 && !this.props.editing) - { - name = "Snapshot " + (this.props.snapshotIndex+1); + if (name.length === 0 && !this.props.editing) { + name = "Snapshot " + (this.props.snapshotIndex + 1); } return { name: name, color: color, nameErrorMessage: "", - compactVertical: this.getCompactVertical() + compactVertical: this.getCompactVertical(), + showRemoveConfirm: false }; } onWindowSizeChanged(width: number, height: number): void { - super.onWindowSizeChanged(width,height); - this.setState({compactVertical: this.getCompactVertical() }) + super.onWindowSizeChanged(width, height); + this.setState({ compactVertical: this.getCompactVertical() }) } handleOk() { @@ -102,6 +104,10 @@ export default class SnapshotPropertiesDialog extends ResizeResponsiveComponent< } } + handleRemoveSnapshot() { + this.props.onRemove(this.props.snapshotIndex); + } + render() { let props = this.props; @@ -111,9 +117,9 @@ export default class SnapshotPropertiesDialog extends ResizeResponsiveComponent< let okButtonText = this.props.editing ? "OK" : "Save"; return ( - { this.handleOk(); }} + onEnterKey={() => { this.handleOk(); }} >
@@ -127,7 +133,7 @@ export default class SnapshotPropertiesDialog extends ResizeResponsiveComponent<
- + Color { - this.setState({color: newcolor}); - }} /> - + onColorChange={(newcolor) => { + this.setState({ color: newcolor }); + }} /> + + +
- - + { + this.setState({ showRemoveConfirm: false }); + this.handleRemoveSnapshot(); + }} + onClose={() => { this.setState({ showRemoveConfirm: false }); }} > + + Are you sure you want to remove this snapshot? + + + + + + + ); } } \ No newline at end of file diff --git a/vite/src/pipedal/SplitControlView.tsx b/vite/src/pipedal/SplitControlView.tsx index 8635618..282b336 100644 --- a/vite/src/pipedal/SplitControlView.tsx +++ b/vite/src/pipedal/SplitControlView.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/SplitUiControls.tsx b/vite/src/pipedal/SplitUiControls.tsx index 2171980..eeaae4b 100644 --- a/vite/src/pipedal/SplitUiControls.tsx +++ b/vite/src/pipedal/SplitUiControls.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/StringBuilder.tsx b/vite/src/pipedal/StringBuilder.tsx index 35ac846..fce2870 100644 --- a/vite/src/pipedal/StringBuilder.tsx +++ b/vite/src/pipedal/StringBuilder.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/SvgPathBuilder.tsx b/vite/src/pipedal/SvgPathBuilder.tsx index d568890..f5be9a4 100644 --- a/vite/src/pipedal/SvgPathBuilder.tsx +++ b/vite/src/pipedal/SvgPathBuilder.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/SystemMidiBindingView.tsx b/vite/src/pipedal/SystemMidiBindingView.tsx index 1299580..8a42c2d 100644 --- a/vite/src/pipedal/SystemMidiBindingView.tsx +++ b/vite/src/pipedal/SystemMidiBindingView.tsx @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022-2023 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/SystemMidiBindingsDialog.tsx b/vite/src/pipedal/SystemMidiBindingsDialog.tsx index 648b3f8..d9aef17 100644 --- a/vite/src/pipedal/SystemMidiBindingsDialog.tsx +++ b/vite/src/pipedal/SystemMidiBindingsDialog.tsx @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022-2023 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/TemporaryDrawer.tsx b/vite/src/pipedal/TemporaryDrawer.tsx index ee1afaf..b397e06 100644 --- a/vite/src/pipedal/TemporaryDrawer.tsx +++ b/vite/src/pipedal/TemporaryDrawer.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/TextInfoDialog.css b/vite/src/pipedal/TextInfoDialog.css index 559bb57..3b39fdc 100644 --- a/vite/src/pipedal/TextInfoDialog.css +++ b/vite/src/pipedal/TextInfoDialog.css @@ -7,6 +7,14 @@ margin-top: 8px; margin-bottom: 32px; } +.text-info-dialog-content #user-content-tone3000_float_right { + display: flex; + flex-direction: row-reverse; + flex-wrap: nowrap; + align-items: justify; + margin-top: 8px; + margin-bottom: 32px; +} .text-info-dialog-content #user-content-tone3000_float_content { flex-grow: 1; @@ -17,6 +25,16 @@ } +.text-info-dialog-content .tone3000_content { + flex-grow: 1; + display: flex; + flex-direction: column; + flex-wrap: nowrap; + font-size: 0.8em; + justify-content: space-between; + +} + .text-info-dialog-content #user-content-tone3000_title { margin-top: 0; margin-bottom: 12px; @@ -45,9 +63,25 @@ border-radius: 6px; align-self: flex-start; } + +.text-info-dialog-content #user-content-tone3000_small_thumbnail { + width: 64px; + height: auto; + object-fit: contain; + margin-left: 24px; + margin-right: 8px; + border: 1px solid var(--pd-border-color); + border-radius: 6px; + align-self: flex-start; +} + @media (max-width: 600px) { .text-info-dialog-content #user-content-tone3000_thumbnail { width: 80px; margin-right: 20px; } + .text-info-dialog-content #user-content-tone3000_small_thumbnail { + display: none; + } + } \ No newline at end of file diff --git a/vite/src/pipedal/TextInfoDialog.tsx b/vite/src/pipedal/TextInfoDialog.tsx index 0690e3e..7412d9e 100644 --- a/vite/src/pipedal/TextInfoDialog.tsx +++ b/vite/src/pipedal/TextInfoDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2025 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in @@ -33,6 +33,7 @@ import rehypeSanitize, {defaultSchema} from 'rehype-sanitize'; import rehypeExternalLinks from 'rehype-external-links' import remarkGfm from 'remark-gfm'; import { PiPedalError } from './PiPedalError'; +import { rewriteT3kUrls } from './TextInfo_RewriteT3kUrls'; // Extend the default schema to allow target and rel attributes on anchor tags const extendedSchema = { @@ -72,6 +73,7 @@ interface TextInfoDialogProps { fileName: string; title: string; onClose: () => void; + onT3kLinkClick?: (href: string) => boolean; }; interface TextInfoDialogState { @@ -162,6 +164,13 @@ const TextInfoDialog = class extends ResizeResponsiveComponent { + if (this.props.onT3kLinkClick) { + return this.props.onT3kLinkClick(href); + } + return false; + } + render() { return ( @@ -204,7 +213,11 @@ const TextInfoDialog = class extends ResizeResponsiveComponent {this.state.textFileContent} diff --git a/vite/src/pipedal/TextInfo_RewriteT3kUrls.ts b/vite/src/pipedal/TextInfo_RewriteT3kUrls.ts new file mode 100644 index 0000000..be64398 --- /dev/null +++ b/vite/src/pipedal/TextInfo_RewriteT3kUrls.ts @@ -0,0 +1,102 @@ +/* + * Copyright (c) Robin E.R. Davies + * All rights reserved. + + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +import type { Root } from 'hast'; + +// Rewrite tags with "t3klink?id=xxx" hrefs to call the T3kLinkHandler handler instead of navigating to a new page. + +// // Hook in the rewriter as follows: +// +// {this.state.textFileContent} +// + +type HastNode = { + type: string; + tagName?: string; + properties?: Record; + children?: HastNode[]; +}; + +export type T3kLinkClickHandler = (href: string) => boolean; + +export interface RewriteT3kUrlsOptions { + prefixUrl?: string; + onT3kLinkClick?: T3kLinkClickHandler; +} + +// Default callback. Supply `onT3kLinkClick` in options to handle links. +export function T3kLinkHandler(href: string): boolean { + void href; + return false; +} + + +function getHref(properties: Record): string | null { + const href = properties.href; + return typeof href === 'string' ? href : null; +} + +function rewriteNode(node: HastNode, prefixUrl: string, onT3kLinkClick: T3kLinkClickHandler): void { + if (node.type === 'element' && node.tagName === 'a') { + const properties = node.properties ?? {}; + const href = getHref(properties); + if (href && href.startsWith(prefixUrl)) { + properties.target = '_blank'; + properties.rel = 'noopener noreferrer'; + properties.onClick = (event: { preventDefault?: () => void; stopPropagation?: () => void; }) => { + const handled = onT3kLinkClick(href); + if (handled) { + event.preventDefault?.(); + event.stopPropagation?.(); + } + }; + node.properties = properties; + } + } + + if (node.children) { + for (const child of node.children) { + rewriteNode(child, prefixUrl, onT3kLinkClick); + } + } +} + + +export function rewriteT3kUrls(options?: RewriteT3kUrlsOptions) { + const prefixUrl = options?.prefixUrl; + const onT3kLinkClick = options?.onT3kLinkClick ?? ((href: string) => T3kLinkHandler(href)); + return (tree: Root) => { + if (!prefixUrl) { + return; + } + rewriteNode(tree as unknown as HastNode, prefixUrl, onT3kLinkClick); + }; +} + diff --git a/vite/src/pipedal/Timebase.tsx b/vite/src/pipedal/Timebase.tsx index a957af7..846c72d 100644 --- a/vite/src/pipedal/Timebase.tsx +++ b/vite/src/pipedal/Timebase.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/TimebaseselectorDialog.tsx b/vite/src/pipedal/TimebaseselectorDialog.tsx index bdd4bd9..e1dfafc 100644 --- a/vite/src/pipedal/TimebaseselectorDialog.tsx +++ b/vite/src/pipedal/TimebaseselectorDialog.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/Tone3000DownloadProgress.tsx b/vite/src/pipedal/Tone3000DownloadProgress.tsx index 79891ee..673c34b 100644 --- a/vite/src/pipedal/Tone3000DownloadProgress.tsx +++ b/vite/src/pipedal/Tone3000DownloadProgress.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2026 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/Tone3000Downloader.tsx b/vite/src/pipedal/Tone3000Downloader.tsx index d60a1ad..b52eb19 100644 --- a/vite/src/pipedal/Tone3000Downloader.tsx +++ b/vite/src/pipedal/Tone3000Downloader.tsx @@ -26,6 +26,7 @@ const USE_SERVER_PCKE=true; const RUN_THROTTLER_TEST = true; const ALLOWED_DOWNLOADS_PER_MINUTE = 25; const THROTTLING_TRIGGGER_LEVEL = Math.floor(ALLOWED_DOWNLOADS_PER_MINUTE/2); +const PROMPT_FOR_SELECT_THRESHOLD = 15; class DownloadThrottler { @@ -211,6 +212,28 @@ export class Tone3000DownloadHandler { this.progress.transferring = false; this.model.onTone3000DownloadComplete(resultPath); } + + + private async maybeSelectModels(toneName: string, models: Model[]): Promise { + let result = new Promise((resolve, reject) => { + if (models.length < PROMPT_FOR_SELECT_THRESHOLD) { + resolve(models); + return; + } + this.model.showT3kModelSelectionDialog( + this.downloadType, + toneName, + models, + (models: Model[])=> { + resolve(models); + }, + () => { + reject(new Error("canceled")); + }); + } + ); + return result; + } private async DownloadModelsFromTone3000( responseUri: string, tone3000PckceParams: Tone3000PkceParams, @@ -236,6 +259,11 @@ export class Tone3000DownloadHandler { responseUri); if (!tokenResponse.ok) { + if (tokenResponse.canceled === true) + { + this.onTone3000DownloadComplete(""); + return; + } throw new Error(tokenResponse.error); } if (tokenResponse.canceled) { @@ -288,6 +316,14 @@ export class Tone3000DownloadHandler { } ++page; } + + try { + models = await this.maybeSelectModels(tone.title, models); + } catch (e) { + // canceled. + this.onTone3000DownloadComplete(""); + return; + } let uploadPath = this.downloadPath; let extension: string; @@ -423,7 +459,8 @@ export class Tone3000DownloadHandler { throw new Error(`Thumbnail download failed: Unexpected media type '${mediaType}'.`); } let blob = await thumbnailResult.blob(); - const TONE3000_THUMBNAIL_PATH = "/var/pipedal/tone3000_thumbnails/"; + + const TONE3000_THUMBNAIL_PATH = "/var/pipedal/audio_uploads/tone3000_thumbnails/"; let thumbnailUploadPath = TONE3000_THUMBNAIL_PATH + tone.id + extension; let serverUrl = this.model.varServerUrl + "t3k_uploadAsset?path=" @@ -467,17 +504,10 @@ export class Tone3000DownloadHandler { private popupWindow: Window | null = null; private redirectUrl(): string { - let hostname = window.location.hostname; - let port = window.location.port; - let protocol = window.location.protocol; + let varServerURL = new URL(this.model.varServerUrl); + let serverUrl: string; - if (protocol === "http:" && (port === "80" || port === "")) { - serverUrl = `${protocol}//${hostname}`; - } else if (protocol === "https:" && (port === "443" || port === "")) { - serverUrl = `${protocol}//${hostname}`; - } else { - serverUrl = `${protocol}//${hostname}:${port}`; - } + serverUrl = varServerURL.origin; return `${serverUrl}/html/t3k_response.html`; // return `${serverUrl}/t3k_response.html`; // for a debuggable react version of the page } @@ -519,7 +549,9 @@ export class Tone3000DownloadHandler { public async launchTone3000Popup( downloadType: Tone3000DownloadType, downloadPath: string, - + options?: { + userName?: string; + } ): Promise { if (this.progress.transferring) { return; @@ -584,6 +616,7 @@ export class Tone3000DownloadHandler { menubar: true, width: popupWidth, height: popupHeight, + userName: options?.userName }, ); diff --git a/vite/src/pipedal/ToobCabSimView.tsx b/vite/src/pipedal/ToobCabSimView.tsx index f68bfd3..0131cf9 100644 --- a/vite/src/pipedal/ToobCabSimView.tsx +++ b/vite/src/pipedal/ToobCabSimView.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ToobFrequencyResponseView.tsx b/vite/src/pipedal/ToobFrequencyResponseView.tsx index 871aa90..4366368 100644 --- a/vite/src/pipedal/ToobFrequencyResponseView.tsx +++ b/vite/src/pipedal/ToobFrequencyResponseView.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ToobInputStageView.tsx b/vite/src/pipedal/ToobInputStageView.tsx index cce7a64..47fbb8c 100644 --- a/vite/src/pipedal/ToobInputStageView.tsx +++ b/vite/src/pipedal/ToobInputStageView.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ToobMLView.tsx b/vite/src/pipedal/ToobMLView.tsx index b768f2b..a0a71a0 100644 --- a/vite/src/pipedal/ToobMLView.tsx +++ b/vite/src/pipedal/ToobMLView.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // Copyright (c) Fulgencio Ruiz Rubio. // // Permission is hereby granted, free of charge, to any person obtaining a copy of diff --git a/vite/src/pipedal/ToobNamView.tsx b/vite/src/pipedal/ToobNamView.tsx index 82c41ed..67f459b 100644 --- a/vite/src/pipedal/ToobNamView.tsx +++ b/vite/src/pipedal/ToobNamView.tsx @@ -49,7 +49,7 @@ function floatToModelType(value: number): NamModelType { default: return NamModelType.None; } } -// offset 0: an integer with the folloing bits set. +// offset 0: an integer with the following bits set. // Must match ToobAmp/src/NeuralAmpModeler_Lv2Extensions.hpp enum TOOB_NAM_METADATA_OFFSETS class TOOB_NAM_METADATA_OFFSETS { static readonly flags = 0; @@ -61,7 +61,7 @@ class TOOB_NAM_METADATA_OFFSETS { static readonly has_slimmable_weights = 6; static readonly model_weight = 7; static readonly model_type = 8; - static readonly max_medatadata = 9; + static readonly max_metadata = 9; }; @@ -87,8 +87,8 @@ class ModelMetadata { this.loudness = metadataValues[TOOB_NAM_METADATA_OFFSETS.loudness]; this.gain = metadataValues[TOOB_NAM_METADATA_OFFSETS.gain]; - this.inputlevelDBU = metadataValues[TOOB_NAM_METADATA_OFFSETS.input_level_dbu]; - this.outputlevelDBU = metadataValues[TOOB_NAM_METADATA_OFFSETS.output_level_dbu]; + this.inputLevelDBU = metadataValues[TOOB_NAM_METADATA_OFFSETS.input_level_dbu]; + this.outputLevelDBU = metadataValues[TOOB_NAM_METADATA_OFFSETS.output_level_dbu]; this.preset_version = metadataValues[TOOB_NAM_METADATA_OFFSETS.preset_version]; this.hasSlimmableWeights = metadataValues[TOOB_NAM_METADATA_OFFSETS.has_slimmable_weights] !== 0; this.modelWeight = metadataValues[TOOB_NAM_METADATA_OFFSETS.model_weight]; @@ -103,8 +103,8 @@ class ModelMetadata { this.loudness = 0; this.gain = 0; this.hasSlimmableWeights = false; - this.inputlevelDBU = 0; - this.outputlevelDBU = 0; + this.inputLevelDBU = 0; + this.outputLevelDBU = 0; this.preset_version = 1; this.modelWeight = -1; } @@ -122,8 +122,8 @@ class ModelMetadata { loudness: number; gain: number; - inputlevelDBU: number; - outputlevelDBU: number; + inputLevelDBU: number; + outputLevelDBU: number; } @@ -138,7 +138,7 @@ interface ToobNamViewProps extends WithStyles { } interface ToobNamViewState { showEqSection: boolean; - enableCalibration: boolean; + enableInputCalibration: boolean; showCalibration: boolean; enableOutputNormalization: boolean; modelMetadata: ModelMetadata; @@ -161,14 +161,14 @@ const ToobNamView = this.state = { showEqSection: false, showCalibration: false, - enableCalibration: false, + enableInputCalibration: false, enableOutputNormalization: false, modelMetadata: new ModelMetadata(), modelWeight: -1 } let pluginInfo: UiPlugin | null = this.model.getUiPlugin(this.props.item.uri); if (pluginInfo === null) { - throw new Error("Plugin not fouund."); + throw new Error("Plugin not found."); } let inputCalibrationControl = pluginInfo.getControl("inputCalibrationMode"); if (!inputCalibrationControl) { @@ -225,7 +225,7 @@ const ToobNamView = if (this.state.showCalibration) { calibrationGroup.controls[0] = host.makeStandardControl(this.patchedInputControl, this.props.item.controlValues); - if (this.state.enableCalibration) { + if (this.state.enableInputCalibration) { calibrationGroup.controls[0] = host.makeStandardControl(this.patchedInputControl, this.props.item.controlValues); } else { @@ -263,7 +263,7 @@ const ToobNamView = private handleConnectionStateChanged(state: State) { if (state === State.Ready) { this.unsubscribeFromMetadata(); - this.subscribeToMetdata(); + this.subscribeToMetadata(); } } @@ -276,15 +276,15 @@ const ToobNamView = showEqSection: metadata.preset_version === 0, showCalibration: ( metadata.hasInputLevelDBU || metadata.hasOutputLevelDBU || - (metadata.hasLoudness && metadata.hasGain)) && metadata.hasModel, - enableCalibration: metadata.hasInputLevelDBU && metadata.hasModel, + metadata.hasLoudness) && metadata.hasModel, + enableInputCalibration: metadata.hasInputLevelDBU && metadata.hasModel, enableOutputNormalization: metadata.hasLoudness && metadata.hasModel, modelWeight: metadata.modelWeight }); } } - subscribeToMetdata() { + subscribeToMetadata() { this.subscribedId = this.props.instanceId; this.listenHandle = this.model.monitorPatchProperty( this.props.instanceId, @@ -315,7 +315,7 @@ const ToobNamView = if (super.componentDidMount) { super.componentDidMount(); } - this.subscribeToMetdata(); + this.subscribeToMetadata(); this.model.state.addOnChangedHandler(this.handleConnectionStateChanged); } componentWillUnmount() { @@ -331,7 +331,7 @@ const ToobNamView = componentDidUpdate() { if (this.props.instanceId !== this.subscribedId) { this.unsubscribeFromMetadata(); - this.subscribeToMetdata(); + this.subscribeToMetadata(); } } diff --git a/vite/src/pipedal/ToobPlayerControl.tsx b/vite/src/pipedal/ToobPlayerControl.tsx index b36ab68..f9fc04e 100644 --- a/vite/src/pipedal/ToobPlayerControl.tsx +++ b/vite/src/pipedal/ToobPlayerControl.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/ToobPlayerView.tsx b/vite/src/pipedal/ToobPlayerView.tsx index 3f533d0..3eb8a0a 100644 --- a/vite/src/pipedal/ToobPlayerView.tsx +++ b/vite/src/pipedal/ToobPlayerView.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ToobPowerStage2View.tsx b/vite/src/pipedal/ToobPowerStage2View.tsx index 7bf5a50..a8e61a0 100644 --- a/vite/src/pipedal/ToobPowerStage2View.tsx +++ b/vite/src/pipedal/ToobPowerStage2View.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ToobSpectrumAnalyzerView.tsx b/vite/src/pipedal/ToobSpectrumAnalyzerView.tsx index 8380f25..859319a 100644 --- a/vite/src/pipedal/ToobSpectrumAnalyzerView.tsx +++ b/vite/src/pipedal/ToobSpectrumAnalyzerView.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ToobSpectrumResponseView.tsx b/vite/src/pipedal/ToobSpectrumResponseView.tsx index 62b78e4..df8a9a3 100644 --- a/vite/src/pipedal/ToobSpectrumResponseView.tsx +++ b/vite/src/pipedal/ToobSpectrumResponseView.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ToobToneStackView.tsx b/vite/src/pipedal/ToobToneStackView.tsx index ef93226..c8e05be 100644 --- a/vite/src/pipedal/ToobToneStackView.tsx +++ b/vite/src/pipedal/ToobToneStackView.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ToobWaveShapeView.tsx b/vite/src/pipedal/ToobWaveShapeView.tsx index 822050f..611137d 100644 --- a/vite/src/pipedal/ToobWaveShapeView.tsx +++ b/vite/src/pipedal/ToobWaveShapeView.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/ToolTipEx.tsx b/vite/src/pipedal/ToolTipEx.tsx index d451fb2..5273478 100644 --- a/vite/src/pipedal/ToolTipEx.tsx +++ b/vite/src/pipedal/ToolTipEx.tsx @@ -1,5 +1,5 @@ /* - * Copyright (c) 2025 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * All rights reserved. * Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/vite/src/pipedal/Units.tsx b/vite/src/pipedal/Units.tsx index 2819942..80e2a69 100644 --- a/vite/src/pipedal/Units.tsx +++ b/vite/src/pipedal/Units.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2024 Robin E. R. Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/UpdateDialog.tsx b/vite/src/pipedal/UpdateDialog.tsx index 6e53948..7fb51d0 100644 --- a/vite/src/pipedal/UpdateDialog.tsx +++ b/vite/src/pipedal/UpdateDialog.tsx @@ -1,7 +1,7 @@ /* * MIT License * - * Copyright (c) 2022 Robin E. R. Davies + * Copyright (c) Robin E.R. Davies * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in diff --git a/vite/src/pipedal/UploadFileDialog.tsx b/vite/src/pipedal/UploadFileDialog.tsx index 3f11ede..a4526f2 100644 --- a/vite/src/pipedal/UploadFileDialog.tsx +++ b/vite/src/pipedal/UploadFileDialog.tsx @@ -1,4 +1,4 @@ -// Copyright (c) 2022 Robin Davies +// Copyright (c) Robin E.R. Davies // // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in @@ -173,7 +173,7 @@ export default class UploadFileDialog extends ResizeResponsiveComponent { // Set before window.open so the popup inherits this flag via sessionStorage copy; @@ -179,7 +179,7 @@ export async function startSelectFlowPopup( const url = buildAuthorizeUrl(publishableKey, redirectUri, extra, pkce); if (T3K_DEBUG) { - console.debug("PiPedal startSelectFlowPopup URL:" + url + "(from buildAuthorizeUrl)"); + console.debug("PiPedal startSelectFlowPopup URL:" + url + " (from buildAuthorizeUrl)"); } const width = options?.width ?? 480; const height = options?.height ?? 700; @@ -216,7 +216,7 @@ export async function handleOAuthCallbackFromPopup( if (returnedState !== storedState) return { ok: false, error: 'state_mismatch' }; // User closed without signing in — no code to exchange - if (canceled && !code) return { ok: false, error: 'canceled' }; + if (canceled && !code) return { ok: false, error: 'canceled', canceled: true }; if (error) return { ok: false, error }; if (!code || !codeVerifier) return { ok: false, error: 'missing_code' }; @@ -476,7 +476,8 @@ export async function handleOAuthCallback( const url = new URL(responseUri); const params = new URLSearchParams(url.search); const code = params.get('code'); - const error = params.get('error'); + let error = params.get('error'); + const error_description = params.get('error_description'); const returnedState = params.get('state'); const toneId = params.get('tone_id') ?? undefined; const modelId = params.get('model_id') ?? undefined; @@ -496,7 +497,11 @@ export async function handleOAuthCallback( // User closed without signing in — no code to exchange if (canceled && !code) { - return { ok: false, error: 'canceled' }; + return { ok: false, error: 'canceled', canceled: true }; + } + // build full error description + if (error && error_description) { + error = `${error}: ${error_description}`; } // Access denied — e.g. model is private and user clicked "Back"