diff options
author | Damien Zammit <damien@zamaudio.com> | 2015-06-12 16:34:35 +1000 |
---|---|---|
committer | Damien Zammit <damien@zamaudio.com> | 2015-06-12 16:34:35 +1000 |
commit | 49dd5f4510083f2da37d5f5745a836de3134a914 (patch) | |
tree | edc3337dda29227dba67a30a181226fb20d572a9 | |
parent | f6b6c58a8181488f135c66226d1f9b991de52e3d (diff) |
Added insane toggle for high quality processing
Signed-off-by: Damien Zammit <damien@zamaudio.com>
-rw-r--r-- | Makefile | 3 | ||||
-rw-r--r-- | plugins/ZamTube/ZamTubeArtwork.cpp | 186 | ||||
-rw-r--r-- | plugins/ZamTube/ZamTubeArtwork.hpp | 10 | ||||
-rw-r--r-- | plugins/ZamTube/ZamTubePlugin.cpp | 22 | ||||
-rw-r--r-- | plugins/ZamTube/ZamTubePlugin.hpp | 5 | ||||
-rw-r--r-- | plugins/ZamTube/ZamTubeUI.cpp | 23 | ||||
-rw-r--r-- | plugins/ZamTube/ZamTubeUI.hpp | 8 | ||||
-rw-r--r-- | plugins/ZamTube/artwork/insaneoff.png | bin | 0 -> 1525 bytes | |||
-rw-r--r-- | plugins/ZamTube/artwork/insaneon.png | bin | 0 -> 1299 bytes | |||
-rw-r--r-- | plugins/ZamTube/artwork/zamtube.svg | 85 | ||||
-rw-r--r-- | plugins/ZamTube/wdf.cpp | 133 | ||||
-rw-r--r-- | plugins/ZamTube/wdf.h | 2 |
12 files changed, 455 insertions, 22 deletions
@@ -5,7 +5,8 @@ BINDIR ?= bin NAME = zam-plugins VERSION = $(shell cat .version) -PLUGINS=ZamComp ZamCompX2 ZaMultiComp ZamTube ZamEQ2 ZamAutoSat ZamGEQ31 ZamGEQ31X2 ZaMultiCompX2 ZamPiano ZamSFZ ZamChild670 +PLUGINS=ZamComp ZamCompX2 ZaMultiComp ZamTube ZamEQ2 ZamAutoSat ZamGEQ31 ZamGEQ31X2 ZaMultiCompX2 +#ZamPiano ZamSFZ ZamChild670 all: libs $(PLUGINS) gen diff --git a/plugins/ZamTube/ZamTubeArtwork.cpp b/plugins/ZamTube/ZamTubeArtwork.cpp index c799d21..2a623d5 100644 --- a/plugins/ZamTube/ZamTubeArtwork.cpp +++ b/plugins/ZamTube/ZamTubeArtwork.cpp @@ -3,6 +3,182 @@ #include "ZamTubeArtwork.hpp" static const unsigned char temp1[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 15, 0, 0, 0, 63, 0, 0, 0, 107, 0, 0, 0, 151, 0, 0, 0, 195, 0, 0, 0, 239, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, + 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, + 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 238, 0, 0, 0, 194, 0, 0, 0, 150, + 0, 0, 0, 107, 0, 0, 0, 63, 0, 0, 0, 15, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 8, 0, 0, 0, 122, 0, 0, 1, 244, 0, 0, 0, 255, + 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 12, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, + 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, + 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 39, 255, 0, 0, 38, 255, 0, 0, 11, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 1, 244, 0, 0, 0, 122, 0, 0, 0, 8, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 85, 0, 0, 0, 223, 0, 0, 0, 255, 0, 0, 7, 254, 0, 0, 95, 255, 0, 0, 140, 255, 0, 0, 182, 255, 0, 0, 224, 255, 0, 0, 254, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 254, 255, 0, 0, 223, 255, + 0, 0, 180, 255, 0, 0, 138, 255, 0, 0, 90, 255, 0, 0, 5, 254, 0, 0, 0, 255, 0, 0, 0, 223, 0, 0, 0, 85, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 16, 0, 0, 0, 193, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 87, 255, 0, 0, 225, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 220, 255, 0, 0, 82, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 193, 0, 0, 0, 15, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 2, 0, 0, 0, 181, 0, 0, 0, 255, 0, 0, 50, 255, 0, 0, 196, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 193, 255, 0, 0, 49, 255, 0, 0, 0, 255, 0, 0, 0, 179, 0, 0, 0, 1, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 131, 0, 0, 0, 255, 0, 0, 44, 255, 0, 0, 243, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 243, 255, 0, 0, 43, 255, 0, 0, 0, 255, + 0, 0, 0, 126, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 80, 0, 0, 0, 254, 0, 0, 15, 254, 0, 0, 219, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 21, 21, 255, 255, 40, 40, 255, 255, 18, 18, 255, 255, + 15, 15, 255, 255, 40, 40, 255, 255, 34, 34, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 30, 30, 255, 255, 39, 39, 255, 255, 1, 1, 255, 255, 0, 0, 255, 255, 25, 25, 255, 255, 40, 40, 255, 255, 40, 40, 255, 255, 40, 40, 255, 255, 40, 40, 255, 255, 10, 10, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 11, 11, 255, 255, 40, 40, 255, 255, + 40, 40, 255, 255, 30, 30, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 19, 19, 255, 255, 40, 40, 255, 255, 30, 30, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 34, 34, 255, 255, 38, 38, 255, 255, 1, 1, 255, 255, 39, 39, 255, 255, 40, 40, 255, 255, 40, 40, 255, 255, 40, 40, 255, 255, 40, 40, 255, 255, 40, 40, 255, 255, 5, 5, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 219, 255, 0, 0, 15, 254, 0, 0, 0, 253, 0, 0, 0, 74, 255, 255, 255, 0, 0, 0, 0, 7, 0, 0, 1, 238, 0, 0, 2, 255, 0, 0, 183, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 152, 152, 255, 255, 255, 255, 255, 255, 128, 128, 255, 255, 104, 104, 255, 255, 255, 255, 255, 255, 253, 253, 255, 255, 44, 44, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 200, 200, 255, 255, 255, 255, 255, 255, 24, 24, 255, 255, 66, 66, 255, 255, + 245, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 200, 200, 255, 255, 15, 15, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 114, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 237, 255, 255, 3, 3, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 127, 127, 255, 255, 255, 255, 255, 255, 246, 246, 255, 255, 26, 26, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 224, 224, 255, 255, 255, 255, 255, 255, 16, 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 48, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 180, 255, 0, 0, 2, 255, 0, 0, 1, 236, 0, 0, 0, 7, 0, 0, 0, 86, 0, 0, 0, 255, 0, 0, 94, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 152, 152, 255, 255, 255, 255, 255, 255, + 128, 128, 255, 255, 104, 104, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 177, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 200, 200, 255, 255, 255, 255, 255, 255, 24, 24, 255, 255, 227, 227, 255, 255, 255, 255, 255, 255, 167, 167, 255, 255, 112, 112, 255, 255, 113, 113, 255, 255, 232, 232, 255, 255, 255, 255, 255, 255, 118, 118, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 186, 186, 255, 255, + 255, 255, 255, 255, 199, 199, 255, 255, 255, 255, 255, 255, 58, 58, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 126, 126, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 153, 153, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 224, 224, 255, 255, 255, 255, 255, 255, 16, 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 143, 143, 255, 255, 136, 136, 255, 255, 136, 136, 255, 255, 136, 136, 255, 255, + 23, 23, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 87, 255, 0, 0, 0, 255, 0, 0, 0, 82, 0, 0, 0, 172, 0, 0, 0, 255, 0, 0, 188, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 152, 152, 255, 255, 255, 255, 255, 255, 128, 128, 255, 255, 104, 104, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 58, 58, 255, 255, 0, 0, 255, 255, 200, 200, 255, 255, 255, 255, 255, 255, 24, 24, 255, 255, + 232, 232, 255, 255, 255, 255, 255, 255, 64, 64, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 113, 113, 255, 255, 168, 168, 255, 255, 77, 77, 255, 255, 0, 0, 255, 255, 9, 9, 255, 255, 247, 247, 255, 255, 219, 219, 255, 255, 104, 104, 255, 255, 255, 255, 255, 255, 132, 132, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 125, 125, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 251, 255, 255, + 38, 38, 255, 255, 0, 0, 255, 255, 224, 224, 255, 255, 255, 255, 255, 255, 16, 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 16, 16, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 186, 255, 0, 0, 0, 255, 0, 0, 0, 169, 0, 0, 0, 211, 0, 0, 0, 255, 0, 0, 243, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 152, 152, 255, 255, + 255, 255, 255, 255, 128, 128, 255, 255, 104, 104, 255, 255, 255, 255, 255, 255, 190, 190, 255, 255, 255, 255, 255, 255, 194, 194, 255, 255, 0, 0, 255, 255, 200, 200, 255, 255, 255, 255, 255, 255, 24, 24, 255, 255, 232, 232, 255, 255, 255, 255, 255, 255, 144, 144, 255, 255, 96, 96, 255, 255, 96, 96, 255, 255, 96, 96, 255, 255, 31, 31, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 73, 73, 255, 255, + 255, 255, 255, 255, 154, 154, 255, 255, 38, 38, 255, 255, 255, 255, 255, 255, 206, 206, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 124, 124, 255, 255, 255, 255, 255, 255, 189, 189, 255, 255, 255, 255, 255, 255, 170, 170, 255, 255, 0, 0, 255, 255, 224, 224, 255, 255, 255, 255, 255, 255, 16, 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 91, 91, 255, 255, 80, 80, 255, 255, 80, 80, 255, 255, + 63, 63, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 243, 255, 0, 0, 0, 255, 0, 0, 0, 208, 0, 0, 0, 243, 0, 0, 22, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 152, 152, 255, 255, 255, 255, 255, 255, 128, 128, 255, 255, 104, 104, 255, 255, 255, 255, 255, 255, 136, 136, 255, 255, 171, 171, 255, 255, 255, 255, 255, 255, 75, 75, 255, 255, 200, 200, 255, 255, 255, 255, 255, 255, + 24, 24, 255, 255, 160, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 229, 255, 255, 41, 41, 255, 255, 0, 0, 255, 255, 144, 144, 255, 255, 255, 255, 255, 255, 90, 90, 255, 255, 0, 0, 255, 255, 228, 228, 255, 255, 254, 254, 255, 255, 25, 25, 255, 255, 0, 0, 255, 255, 124, 124, 255, 255, 255, 255, 255, 255, 112, 112, 255, 255, + 195, 195, 255, 255, 254, 254, 255, 255, 52, 52, 255, 255, 224, 224, 255, 255, 255, 255, 255, 255, 16, 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 208, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 22, 255, 0, 0, 0, 237, 0, 0, 0, 242, 0, 0, 22, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 152, 152, 255, 255, 255, 255, 255, 255, 128, 128, 255, 255, 104, 104, 255, 255, 255, 255, 255, 255, 136, 136, 255, 255, 38, 38, 255, 255, 251, 251, 255, 255, 209, 209, 255, 255, 202, 202, 255, 255, 255, 255, 255, 255, 24, 24, 255, 255, 3, 3, 255, 255, 96, 96, 255, 255, 104, 104, 255, 255, 104, 104, 255, 255, 104, 104, 255, 255, 221, 221, 255, 255, 255, 255, 255, 255, 120, 120, 255, 255, 0, 0, 255, 255, + 216, 216, 255, 255, 255, 255, 255, 255, 141, 141, 255, 255, 120, 120, 255, 255, 214, 214, 255, 255, 255, 255, 255, 255, 98, 98, 255, 255, 0, 0, 255, 255, 123, 123, 255, 255, 255, 255, 255, 255, 112, 112, 255, 255, 58, 58, 255, 255, 255, 255, 255, 255, 187, 187, 255, 255, 224, 224, 255, 255, 255, 255, 255, 255, 16, 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 98, 255, 255, 88, 88, 255, 255, + 88, 88, 255, 255, 69, 69, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 22, 255, 0, 0, 0, 236, 0, 0, 0, 211, 0, 0, 0, 255, 0, 0, 243, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 152, 152, 255, 255, 255, 255, 255, 255, 128, 128, 255, 255, 104, 104, 255, 255, 255, 255, 255, 255, 136, 136, 255, 255, 0, 0, 255, 255, 153, 153, 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, + 255, 255, 255, 255, 24, 24, 255, 255, 138, 138, 255, 255, 144, 144, 255, 255, 25, 25, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 176, 176, 255, 255, 255, 255, 255, 255, 120, 120, 255, 255, 31, 31, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 172, 255, 255, 0, 0, 255, 255, 122, 122, 255, 255, 255, 255, 255, 255, + 112, 112, 255, 255, 0, 0, 255, 255, 177, 177, 255, 255, 255, 255, 255, 255, 254, 254, 255, 255, 255, 255, 255, 255, 16, 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 16, 16, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 243, 255, 0, 0, 0, 255, 0, 0, 0, 207, 0, 0, 0, 171, 0, 0, 0, 255, 0, 0, 188, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 152, 152, 255, 255, 255, 255, 255, 255, 128, 128, 255, 255, 104, 104, 255, 255, 255, 255, 255, 255, 136, 136, 255, 255, 0, 0, 255, 255, 26, 26, 255, 255, 246, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 24, 24, 255, 255, 247, 247, 255, 255, 255, 255, 255, 255, 127, 127, 255, 255, 72, 72, 255, 255, 72, 72, 255, 255, 217, 217, 255, 255, 255, 255, 255, 255, 119, 119, 255, 255, + 103, 103, 255, 255, 255, 255, 255, 255, 165, 165, 255, 255, 56, 56, 255, 255, 56, 56, 255, 255, 81, 81, 255, 255, 255, 255, 255, 255, 241, 241, 255, 255, 5, 5, 255, 255, 121, 121, 255, 255, 255, 255, 255, 255, 112, 112, 255, 255, 0, 0, 255, 255, 43, 43, 255, 255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 16, 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 98, 98, 255, 255, + 88, 88, 255, 255, 88, 88, 255, 255, 88, 88, 255, 255, 20, 20, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 186, 255, 0, 0, 0, 255, 0, 0, 0, 167, 0, 0, 0, 83, 0, 0, 0, 255, 0, 0, 95, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 152, 152, 255, 255, 255, 255, 255, 255, 128, 128, 255, 255, 104, 104, 255, 255, 255, 255, 255, 255, 136, 136, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 135, 135, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 24, 24, 255, 255, 112, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 215, 255, 255, 24, 24, 255, 255, 174, 174, 255, 255, 255, 255, 255, 255, 74, 74, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 217, 217, 255, 255, 255, 255, 255, 255, 64, 64, 255, 255, 120, 120, 255, 255, + 255, 255, 255, 255, 112, 112, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 159, 159, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 16, 16, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 64, 64, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 88, 255, 0, 0, 0, 255, 0, 0, 0, 79, 0, 0, 0, 6, 0, 0, 1, 236, 0, 0, 1, 255, 0, 0, 179, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 45, 45, 255, 255, 80, 80, 255, 255, 38, 38, 255, 255, 28, 28, 255, 255, 80, 80, 255, 255, 40, 40, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 14, 14, 255, 255, 80, 80, 255, 255, 79, 79, 255, 255, 5, 5, 255, 255, 0, 0, 255, 255, 62, 62, 255, 255, 80, 80, 255, 255, 80, 80, 255, 255, 80, 80, 255, 255, 80, 80, 255, 255, 22, 22, 255, 255, + 0, 0, 255, 255, 66, 66, 255, 255, 80, 80, 255, 255, 8, 8, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 51, 51, 255, 255, 80, 80, 255, 255, 34, 34, 255, 255, 34, 34, 255, 255, 80, 80, 255, 255, 33, 33, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 21, 21, 255, 255, 80, 80, 255, 255, 78, 78, 255, 255, 3, 3, 255, 255, 79, 79, 255, 255, 80, 80, 255, 255, + 80, 80, 255, 255, 80, 80, 255, 255, 80, 80, 255, 255, 80, 80, 255, 255, 18, 18, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 177, 255, 0, 0, 1, 255, 0, 0, 1, 234, 0, 0, 0, 6, 255, 255, 255, 0, 0, 0, 0, 74, + 0, 0, 0, 253, 0, 0, 14, 254, 0, 0, 218, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 217, 255, 0, 0, 13, 254, 0, 0, 0, 252, 0, 0, 0, 68, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 124, 0, 0, 0, 255, 0, 0, 42, 255, 0, 0, 243, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 243, 255, 0, 0, 42, 255, 0, 0, 0, 255, 0, 0, 0, 120, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 0, 0, 0, 1, 0, 0, 0, 175, 0, 0, 0, 255, 0, 0, 51, 255, 0, 0, 196, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 197, 255, 0, 0, 51, 255, 0, 0, 0, 255, 0, 0, 0, 173, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 13, 0, 0, 0, 185, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 85, 255, 0, 0, 222, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 223, 255, 0, 0, 87, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 185, 0, 0, 0, 13, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 77, 0, 0, 0, 218, 0, 0, 0, 255, 0, 0, 6, 254, 0, 0, 84, 255, 0, 0, 130, 255, 0, 0, 175, 255, 0, 0, 219, 255, 0, 0, 253, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, + 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 253, 255, 0, 0, 220, 255, 0, 0, 177, 255, + 0, 0, 135, 255, 0, 0, 89, 255, 0, 0, 7, 254, 0, 0, 0, 255, 0, 0, 0, 218, 0, 0, 0, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 5, 0, 0, 0, 114, 0, 0, 1, 240, 0, 0, 0, 255, + 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 10, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, + 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, + 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 31, 255, 0, 0, 10, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 1, 240, 0, 0, 0, 114, 0, 0, 0, 5, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 14, 0, 0, 0, 62, 0, 0, 0, 104, 0, 0, 0, 147, 0, 0, 0, 189, 0, 0, 0, 232, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, + 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, + 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 231, 0, 0, 0, 188, + 0, 0, 0, 146, 0, 0, 0, 104, 0, 0, 0, 62, 0, 0, 0, 14, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,}; +const char* ZamTubeArtwork::insaneoffData = (const char*)temp1; + +static const unsigned char temp2[] = { + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 15, 0, 0, 0, 63, 0, 0, 0, 107, 0, 0, 0, 151, 0, 0, 0, 195, 0, 0, 0, 239, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, + 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, + 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 238, 0, 0, 0, 194, 0, 0, 0, 150, + 0, 0, 0, 107, 0, 0, 0, 63, 0, 0, 0, 15, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 8, 0, 0, 0, 122, 0, 1, 0, 244, 0, 0, 0, 255, + 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 12, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, + 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, + 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 38, 0, 255, 0, 11, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 1, 0, 244, 0, 0, 0, 122, 0, 0, 0, 8, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 85, 0, 0, 0, 223, 0, 0, 0, 255, 0, 7, 0, 254, 0, 95, 0, 255, 0, 140, 0, 255, 0, 182, 0, 255, 0, 224, 0, 255, 0, 254, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 254, 0, 255, 0, 223, 0, 255, + 0, 180, 0, 255, 0, 138, 0, 255, 0, 90, 0, 255, 0, 5, 0, 254, 0, 0, 0, 255, 0, 0, 0, 223, 0, 0, 0, 85, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 16, 0, 0, 0, 193, 0, 0, 0, 255, 0, 0, 0, 255, 0, 87, 0, 255, 0, 225, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 220, 0, 255, 0, 82, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 193, 0, 0, 0, 15, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 2, 0, 0, 0, 181, 0, 0, 0, 255, 0, 50, 0, 255, 0, 196, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 193, 0, 255, 0, 49, 0, 255, 0, 0, 0, 255, 0, 0, 0, 179, 0, 0, 0, 1, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 131, 0, 0, 0, 255, 0, 44, 0, 255, 0, 243, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 243, 0, 255, 0, 43, 0, 255, 0, 0, 0, 255, + 0, 0, 0, 126, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 80, 0, 0, 0, 254, 0, 15, 0, 254, 0, 219, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 219, 0, 255, 0, 15, 0, 254, 0, 0, 0, 253, 0, 0, 0, 74, 255, 255, 255, 0, 0, 0, 0, 7, 0, 1, 0, 238, 0, 2, 0, 255, 0, 183, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 248, 0, 255, 0, 72, 0, 255, 0, 72, 0, 255, 0, 248, 0, 255, 0, 98, 0, 255, 0, 71, 0, 255, 0, 159, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 214, 0, 255, 0, 71, 0, 255, 0, 140, 0, 255, 0, 255, 0, 255, 0, 183, 0, 255, 0, 71, 0, 255, + 0, 71, 0, 255, 0, 71, 0, 255, 0, 71, 0, 255, 0, 82, 0, 255, 0, 230, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 100, 0, 255, 0, 71, 0, 255, 0, 71, 0, 255, 0, 180, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 82, 0, 255, 0, 71, 0, 255, 0, 176, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 198, 0, 255, + 0, 71, 0, 255, 0, 156, 0, 255, 0, 160, 0, 255, 0, 71, 0, 255, 0, 71, 0, 255, 0, 71, 0, 255, 0, 71, 0, 255, 0, 71, 0, 255, 0, 121, 0, 255, 0, 243, 0, 255, 0, 72, 0, 255, 0, 72, 0, 255, 0, 234, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 180, 0, 255, 0, 2, 0, 255, 0, 1, 0, 236, 0, 0, 0, 7, 0, 0, 0, 86, 0, 0, 0, 255, 0, 94, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 244, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 243, 0, 255, + 0, 36, 0, 255, 0, 0, 0, 255, 0, 19, 0, 255, 0, 240, 0, 255, 0, 255, 0, 255, 0, 196, 0, 255, 0, 0, 0, 255, 0, 91, 0, 255, 0, 201, 0, 255, 0, 7, 0, 255, 0, 0, 0, 255, 0, 27, 0, 255, 0, 31, 0, 255, 0, 15, 0, 255, 0, 0, 0, 255, 0, 37, 0, 255, 0, 252, 0, 255, 0, 255, 0, 255, 0, 233, 0, 255, 0, 1, 0, 255, 0, 15, 0, 255, + 0, 0, 0, 255, 0, 81, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 13, 0, 255, 0, 0, 0, 255, 0, 33, 0, 255, 0, 249, 0, 255, 0, 255, 0, 255, 0, 173, 0, 255, 0, 0, 0, 255, 0, 114, 0, 255, 0, 120, 0, 255, 0, 0, 0, 255, 0, 3, 0, 255, 0, 7, 0, 255, 0, 7, 0, 255, 0, 7, 0, 255, 0, 73, 0, 255, 0, 234, 0, 255, + 0, 0, 0, 255, 0, 0, 0, 255, 0, 221, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 87, 0, 255, 0, 0, 0, 255, 0, 0, 0, 82, 0, 0, 0, 172, 0, 0, 0, 255, 0, 188, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 244, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 243, 0, 255, 0, 36, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 121, 0, 255, 0, 255, 0, 255, 0, 196, 0, 255, 0, 0, 0, 255, 0, 91, 0, 255, 0, 159, 0, 255, 0, 0, 0, 255, + 0, 48, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 210, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 249, 0, 255, 0, 255, 0, 255, 0, 163, 0, 255, 0, 0, 0, 255, 0, 118, 0, 255, 0, 10, 0, 255, 0, 10, 0, 255, 0, 246, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 13, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 144, 0, 255, 0, 255, 0, 255, + 0, 173, 0, 255, 0, 0, 0, 255, 0, 114, 0, 255, 0, 120, 0, 255, 0, 0, 0, 255, 0, 103, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 234, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 221, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 186, 0, 255, 0, 0, 0, 255, 0, 0, 0, 169, 0, 0, 0, 211, 0, 0, 0, 255, 0, 243, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 244, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, + 0, 243, 0, 255, 0, 36, 0, 255, 0, 0, 0, 255, 0, 20, 0, 255, 0, 10, 0, 255, 0, 229, 0, 255, 0, 196, 0, 255, 0, 0, 0, 255, 0, 91, 0, 255, 0, 159, 0, 255, 0, 0, 0, 255, 0, 52, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 254, 0, 255, 0, 231, 0, 255, 0, 233, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 93, 0, 255, 0, 0, 0, 255, + 0, 188, 0, 255, 0, 69, 0, 255, 0, 0, 0, 255, 0, 184, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 13, 0, 255, 0, 1, 0, 255, 0, 19, 0, 255, 0, 20, 0, 255, 0, 242, 0, 255, 0, 173, 0, 255, 0, 0, 0, 255, 0, 114, 0, 255, 0, 120, 0, 255, 0, 0, 0, 255, 0, 103, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 234, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 221, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 243, 0, 255, 0, 0, 0, 255, 0, 0, 0, 208, 0, 0, 0, 243, 0, 22, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 244, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 243, 0, 255, 0, 36, 0, 255, 0, 0, 0, 255, 0, 144, 0, 255, 0, 0, 0, 255, 0, 102, 0, 255, 0, 196, 0, 255, 0, 0, 0, 255, 0, 91, 0, 255, 0, 171, 0, 255, + 0, 0, 0, 255, 0, 0, 0, 255, 0, 15, 0, 255, 0, 15, 0, 255, 0, 15, 0, 255, 0, 30, 0, 255, 0, 201, 0, 255, 0, 255, 0, 255, 0, 254, 0, 255, 0, 23, 0, 255, 0, 6, 0, 255, 0, 246, 0, 255, 0, 133, 0, 255, 0, 0, 0, 255, 0, 113, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 13, 0, 255, 0, 2, 0, 255, 0, 142, 0, 255, 0, 0, 0, 255, + 0, 125, 0, 255, 0, 173, 0, 255, 0, 0, 0, 255, 0, 114, 0, 255, 0, 120, 0, 255, 0, 0, 0, 255, 0, 12, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 180, 0, 255, 0, 234, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 221, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 22, 0, 255, 0, 0, 0, 237, 0, 0, 0, 242, 0, 22, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 244, 0, 255, 0, 0, 0, 255, + 0, 0, 0, 255, 0, 243, 0, 255, 0, 36, 0, 255, 0, 0, 0, 255, 0, 233, 0, 255, 0, 47, 0, 255, 0, 4, 0, 255, 0, 157, 0, 255, 0, 0, 0, 255, 0, 91, 0, 255, 0, 255, 0, 255, 0, 121, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 39, 0, 255, 0, 25, 0, 255, 0, 0, 0, 255, 0, 11, 0, 255, 0, 251, 0, 255, 0, 207, 0, 255, 0, 0, 0, 255, + 0, 58, 0, 255, 0, 247, 0, 255, 0, 191, 0, 255, 0, 0, 0, 255, 0, 43, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 13, 0, 255, 0, 2, 0, 255, 0, 248, 0, 255, 0, 30, 0, 255, 0, 11, 0, 255, 0, 149, 0, 255, 0, 0, 0, 255, 0, 114, 0, 255, 0, 120, 0, 255, 0, 0, 0, 255, 0, 22, 0, 255, 0, 55, 0, 255, 0, 55, 0, 255, 0, 55, 0, 255, + 0, 189, 0, 255, 0, 234, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 221, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 22, 0, 255, 0, 0, 0, 236, 0, 0, 0, 211, 0, 0, 0, 255, 0, 243, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 244, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 243, 0, 255, 0, 36, 0, 255, 0, 0, 0, 255, 0, 235, 0, 255, 0, 183, 0, 255, 0, 0, 0, 255, 0, 28, 0, 255, 0, 0, 0, 255, 0, 91, 0, 255, + 0, 243, 0, 255, 0, 223, 0, 255, 0, 235, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 219, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 248, 0, 255, 0, 137, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 228, 0, 255, 0, 255, 0, 255, 0, 13, 0, 255, 0, 2, 0, 255, 0, 255, 0, 255, + 0, 160, 0, 255, 0, 0, 0, 255, 0, 28, 0, 255, 0, 0, 0, 255, 0, 114, 0, 255, 0, 120, 0, 255, 0, 0, 0, 255, 0, 103, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 236, 0, 255, 0, 15, 0, 255, 0, 15, 0, 255, 0, 224, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 243, 0, 255, 0, 0, 0, 255, 0, 0, 0, 207, 0, 0, 0, 171, 0, 0, 0, 255, 0, 188, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 244, 0, 255, + 0, 0, 0, 255, 0, 0, 0, 255, 0, 243, 0, 255, 0, 36, 0, 255, 0, 0, 0, 255, 0, 235, 0, 255, 0, 255, 0, 255, 0, 64, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 91, 0, 255, 0, 143, 0, 255, 0, 0, 0, 255, 0, 64, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 215, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 248, 0, 255, 0, 66, 0, 255, + 0, 0, 0, 255, 0, 76, 0, 255, 0, 87, 0, 255, 0, 87, 0, 255, 0, 30, 0, 255, 0, 0, 0, 255, 0, 157, 0, 255, 0, 255, 0, 255, 0, 13, 0, 255, 0, 2, 0, 255, 0, 255, 0, 255, 0, 253, 0, 255, 0, 43, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 114, 0, 255, 0, 120, 0, 255, 0, 0, 0, 255, 0, 103, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 254, 0, 255, 0, 231, 0, 255, 0, 231, 0, 255, 0, 253, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 186, 0, 255, 0, 0, 0, 255, 0, 0, 0, 167, 0, 0, 0, 83, 0, 0, 0, 255, 0, 95, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 244, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 243, 0, 255, 0, 36, 0, 255, 0, 0, 0, 255, 0, 235, 0, 255, 0, 255, 0, 255, 0, 200, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, + 0, 91, 0, 255, 0, 185, 0, 255, 0, 2, 0, 255, 0, 0, 0, 255, 0, 37, 0, 255, 0, 39, 0, 255, 0, 22, 0, 255, 0, 0, 0, 255, 0, 42, 0, 255, 0, 242, 0, 255, 0, 6, 0, 255, 0, 16, 0, 255, 0, 252, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 140, 0, 255, 0, 0, 0, 255, 0, 87, 0, 255, 0, 255, 0, 255, 0, 13, 0, 255, 0, 2, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 178, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 114, 0, 255, 0, 120, 0, 255, 0, 0, 0, 255, 0, 9, 0, 255, 0, 23, 0, 255, 0, 23, 0, 255, 0, 23, 0, 255, 0, 69, 0, 255, 0, 234, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 221, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 88, 0, 255, 0, 0, 0, 255, 0, 0, 0, 79, 0, 0, 0, 6, 0, 1, 0, 236, 0, 1, 0, 255, 0, 179, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 248, 0, 255, 0, 64, 0, 255, 0, 64, 0, 255, 0, 247, 0, 255, 0, 95, 0, 255, 0, 64, 0, 255, 0, 242, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 112, 0, 255, 0, 63, 0, 255, 0, 134, 0, 255, 0, 255, 0, 255, 0, 165, 0, 255, 0, 63, 0, 255, 0, 63, 0, 255, 0, 63, 0, 255, 0, 63, 0, 255, 0, 79, 0, 255, 0, 233, 0, 255, 0, 209, 0, 255, + 0, 63, 0, 255, 0, 119, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 219, 0, 255, 0, 63, 0, 255, 0, 83, 0, 255, 0, 255, 0, 255, 0, 77, 0, 255, 0, 67, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 95, 0, 255, 0, 63, 0, 255, 0, 151, 0, 255, 0, 156, 0, 255, 0, 63, 0, 255, 0, 63, 0, 255, 0, 63, 0, 255, + 0, 63, 0, 255, 0, 63, 0, 255, 0, 101, 0, 255, 0, 242, 0, 255, 0, 64, 0, 255, 0, 64, 0, 255, 0, 233, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 177, 0, 255, 0, 1, 0, 255, 0, 1, 0, 234, 0, 0, 0, 6, 255, 255, 255, 0, 0, 0, 0, 74, + 0, 0, 0, 253, 0, 14, 0, 254, 0, 218, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 217, 0, 255, 0, 13, 0, 254, 0, 0, 0, 252, 0, 0, 0, 68, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 124, 0, 0, 0, 255, 0, 42, 0, 255, 0, 243, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 243, 0, 255, 0, 42, 0, 255, 0, 0, 0, 255, 0, 0, 0, 120, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 0, 0, 0, 1, 0, 0, 0, 175, 0, 0, 0, 255, 0, 51, 0, 255, 0, 196, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 197, 0, 255, 0, 51, 0, 255, 0, 0, 0, 255, 0, 0, 0, 173, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 13, 0, 0, 0, 185, 0, 0, 0, 255, 0, 0, 0, 255, 0, 85, 0, 255, 0, 222, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 223, 0, 255, 0, 87, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 185, 0, 0, 0, 13, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 77, 0, 0, 0, 218, 0, 0, 0, 255, 0, 6, 0, 254, 0, 84, 0, 255, 0, 130, 0, 255, 0, 175, 0, 255, 0, 219, 0, 255, 0, 253, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, + 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 253, 0, 255, 0, 220, 0, 255, 0, 177, 0, 255, + 0, 135, 0, 255, 0, 89, 0, 255, 0, 7, 0, 254, 0, 0, 0, 255, 0, 0, 0, 218, 0, 0, 0, 77, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 5, 0, 0, 0, 114, 0, 1, 0, 240, 0, 0, 0, 255, + 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 10, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, + 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, + 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 31, 0, 255, 0, 10, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 1, 0, 240, 0, 0, 0, 114, 0, 0, 0, 5, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, + 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 14, 0, 0, 0, 62, 0, 0, 0, 104, 0, 0, 0, 147, 0, 0, 0, 189, 0, 0, 0, 232, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, + 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, + 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 231, 0, 0, 0, 188, + 0, 0, 0, 146, 0, 0, 0, 104, 0, 0, 0, 62, 0, 0, 0, 14, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0,}; +const char* ZamTubeArtwork::insaneonData = (const char*)temp2; + +static const unsigned char temp3[] = { 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 2, 0, 0, 0, 66, 0, 0, 0, 146, 0, 0, 0, 206, 3, 3, 3, 237, 5, 5, 5, 243, 6, 6, 6, 246, 6, 6, 6, 249, 5, 5, 5, 249, 3, 3, 3, 230, 0, 0, 0, 193, 0, 0, 0, 140, 0, 0, 0, 77, 0, 0, 0, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 38, 0, 0, 0, 175, 5, 5, 5, 247, 14, 14, 14, 255, 20, 20, 20, 255, 25, 25, 25, 255, 29, 29, 29, 255, 31, 31, 31, 255, 33, 33, 33, 255, @@ -88,9 +264,9 @@ static const unsigned char temp1[] = { 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 0, 0, 4, 0, 0, 0, 82, 0, 0, 0, 148, 0, 0, 0, 200, 1, 1, 1, 228, 3, 3, 3, 242, 3, 3, 3, 241, 3, 3, 3, 236, 2, 2, 2, 232, 1, 1, 1, 226, 0, 0, 0, 202, 0, 0, 0, 141, 0, 0, 0, 60, 0, 0, 0, 2, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, }; -const char* ZamTubeArtwork::knobData = (const char*)temp1; +const char* ZamTubeArtwork::knobData = (const char*)temp3; -static const unsigned char temp2[] = { +static const unsigned char temp4[] = { 0, 255, 255, 176, 0, 255, 255, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 254, 255, 250, 0, 254, 255, 253, 0, 252, 255, 149, 0, 255, 255, 18, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 253, 255, 251, 0, 129, 255, 255, 0, 210, 255, 247, 0, 251, 255, 244, 0, 255, 255, 110, 0, 255, 255, 4, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, @@ -116,9 +292,9 @@ static const unsigned char temp2[] = { 2, 255, 255, 250, 2, 255, 255, 253, 7, 253, 255, 155, 0, 255, 255, 20, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 0, 255, 255, 179, 0, 255, 255, 44, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, }; -const char* ZamTubeArtwork::notchData = (const char*)temp2; +const char* ZamTubeArtwork::notchData = (const char*)temp4; -static const unsigned char temp3[] = { +static const unsigned char temp5[] = { 172, 172, 172, 175, 175, 175, 223, 223, 223, 221, 221, 221, 217, 217, 217, 215, 215, 215, 215, 215, 215, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, @@ -6840,5 +7016,5 @@ static const unsigned char temp3[] = { 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 218, 218, 218, 219, 219, 219, 222, 222, 222, 193, 193, 193, }; -const char* ZamTubeArtwork::zamtubeData = (const char*)temp3; +const char* ZamTubeArtwork::zamtubeData = (const char*)temp5; diff --git a/plugins/ZamTube/ZamTubeArtwork.hpp b/plugins/ZamTube/ZamTubeArtwork.hpp index c180c46..1c02d44 100644 --- a/plugins/ZamTube/ZamTubeArtwork.hpp +++ b/plugins/ZamTube/ZamTubeArtwork.hpp @@ -5,6 +5,16 @@ namespace ZamTubeArtwork { + extern const char* insaneoffData; + const unsigned int insaneoffDataSize = 7104; + const unsigned int insaneoffWidth = 74; + const unsigned int insaneoffHeight = 24; + + extern const char* insaneonData; + const unsigned int insaneonDataSize = 7104; + const unsigned int insaneonWidth = 74; + const unsigned int insaneonHeight = 24; + extern const char* knobData; const unsigned int knobDataSize = 7056; const unsigned int knobWidth = 42; diff --git a/plugins/ZamTube/ZamTubePlugin.cpp b/plugins/ZamTube/ZamTubePlugin.cpp index b76e637..5280f7b 100644 --- a/plugins/ZamTube/ZamTubePlugin.cpp +++ b/plugins/ZamTube/ZamTubePlugin.cpp @@ -96,6 +96,15 @@ void ZamTubePlugin::d_initParameter(uint32_t index, Parameter& parameter) parameter.ranges.min = -15.0f; parameter.ranges.max = 15.0f; break; + case paramInsane: + parameter.hints = kParameterIsAutomable | kParameterIsBoolean; + parameter.name = "Quality Insane"; + parameter.symbol = "insane"; + parameter.unit = " "; + parameter.ranges.def = 0.0f; + parameter.ranges.min = 0.0f; + parameter.ranges.max = 1.0f; + break; } } @@ -132,6 +141,9 @@ float ZamTubePlugin::d_getParameterValue(uint32_t index) const case paramGain: return mastergain; break; + case paramInsane: + return insane; + break; default: return 0.0f; } @@ -159,6 +171,9 @@ void ZamTubePlugin::d_setParameterValue(uint32_t index, float value) case paramGain: mastergain = value; break; + case paramInsane: + insane = value; + break; } } @@ -174,6 +189,7 @@ void ZamTubePlugin::d_setProgram(uint32_t index) treble = 0.0f; tonestack = 0.0f; mastergain = 0.0f; + insane = 0.0f; /* Default variable values */ @@ -997,7 +1013,11 @@ void ZamTubePlugin::d_run(const float** inputs, float** outputs, uint32_t frames vp0 = e; vp1 = 0.0; - v.vp = sanitize_denormal(v.zeroffp(vp0,vp1,TOLERANCE)); + if (insane > 0.5f) { + v.vp = sanitize_denormal(v.zeroffp_insane(vp0,vp1,TOLERANCE)); + } else { + v.vp = sanitize_denormal(v.zeroffp(vp0,vp1,TOLERANCE)); + } //v.vp = v.secantfp(&vp0,&vp1); v.vk = sanitize_denormal(v.ffk()); diff --git a/plugins/ZamTube/ZamTubePlugin.hpp b/plugins/ZamTube/ZamTubePlugin.hpp index bb47d8e..4a23b59 100644 --- a/plugins/ZamTube/ZamTubePlugin.hpp +++ b/plugins/ZamTube/ZamTubePlugin.hpp @@ -111,6 +111,7 @@ public: paramTreble, paramToneStack, paramGain, + paramInsane, paramCount }; @@ -137,7 +138,7 @@ protected: uint32_t d_getVersion() const noexcept override { - return 0x1000; + return 0x1500; } int64_t d_getUniqueId() const noexcept override @@ -184,7 +185,7 @@ protected: // ------------------------------------------------------------------- private: - float tubedrive,bass,middle,treble,tonestack,mastergain; //parameters + float tubedrive,bass,middle,treble,tonestack,mastergain,insane; //parameters }; // ----------------------------------------------------------------------- diff --git a/plugins/ZamTube/ZamTubeUI.cpp b/plugins/ZamTube/ZamTubeUI.cpp index 4b0da58..f999e66 100644 --- a/plugins/ZamTube/ZamTubeUI.cpp +++ b/plugins/ZamTube/ZamTubeUI.cpp @@ -43,6 +43,11 @@ ZamTubeUI::ZamTubeUI() // notch slider Image notchImage(ZamTubeArtwork::notchData, ZamTubeArtwork::notchWidth, ZamTubeArtwork::notchHeight); + // toggle + Image insaneImageOn(ZamTubeArtwork::insaneonData, ZamTubeArtwork::insaneonWidth, ZamTubeArtwork::insaneonHeight); + Image insaneImageOff(ZamTubeArtwork::insaneoffData, ZamTubeArtwork::insaneoffWidth, ZamTubeArtwork::insaneoffHeight); + + // knobs fKnobTube = new ImageKnob(this, knobImage); fKnobTube->setAbsolutePos(177, 76); @@ -95,6 +100,12 @@ ZamTubeUI::ZamTubeUI() fSliderNotch->setValue(0.f); fSliderNotch->setCallback(this); + Point<int> insaneStart(165,140); + + fToggleInsane = new ImageToggle(this, insaneImageOff, insaneImageOn); + fToggleInsane->setAbsolutePos(insaneStart); + fToggleInsane->setCallback(this); + // set default values d_programChanged(0); } @@ -121,6 +132,9 @@ void ZamTubeUI::d_parameterChanged(uint32_t index, float value) case ZamTubePlugin::paramGain: fKnobGain->setValue(value); break; + case ZamTubePlugin::paramInsane: + fToggleInsane->setValue(value); + break; } } @@ -135,6 +149,7 @@ void ZamTubeUI::d_programChanged(uint32_t index) fKnobMids->setValue(0.5f); fKnobTreb->setValue(0.0f); fKnobGain->setValue(0.0f); + fToggleInsane->setValue(0.0f); fSliderNotch->setValue(0.0f); } @@ -198,6 +213,14 @@ void ZamTubeUI::imageSliderValueChanged(ImageSlider*, float value) d_setParameterValue(ZamTubePlugin::paramToneStack, value); } +void ZamTubeUI::imageToggleClicked(ImageToggle* toggle, int) +{ + float v = toggle->getValue(); + if (toggle == fToggleInsane) { + d_setParameterValue(ZamTubePlugin::paramInsane, v); + } +} + void ZamTubeUI::onDisplay() { fImgBackground.draw(); diff --git a/plugins/ZamTube/ZamTubeUI.hpp b/plugins/ZamTube/ZamTubeUI.hpp index 7eaff89..f76eb4e 100644 --- a/plugins/ZamTube/ZamTubeUI.hpp +++ b/plugins/ZamTube/ZamTubeUI.hpp @@ -22,12 +22,14 @@ #include "ImageKnob.hpp" #include "ImageSlider.hpp" +#include "ImageToggle.hpp" #include "ZamTubeArtwork.hpp" using DGL::Image; using DGL::ImageKnob; using DGL::ImageSlider; +using DGL::ImageToggle; START_NAMESPACE_DISTRHO @@ -35,7 +37,8 @@ START_NAMESPACE_DISTRHO class ZamTubeUI : public UI, public ImageKnob::Callback, - public ImageSlider::Callback + public ImageSlider::Callback, + public ImageToggle::Callback { public: ZamTubeUI(); @@ -57,12 +60,15 @@ protected: void imageSliderDragStarted(ImageSlider* slider) override; void imageSliderDragFinished(ImageSlider* slider) override; void imageSliderValueChanged(ImageSlider* slider, float value) override; + + void imageToggleClicked(ImageToggle* toggle, int value) override; void onDisplay() override; private: Image fImgBackground; ScopedPointer<ImageSlider> fSliderNotch; + ScopedPointer<ImageToggle> fToggleInsane; ScopedPointer<ImageKnob> fKnobTube, fKnobBass, fKnobMids, fKnobTreb, fKnobGain; }; diff --git a/plugins/ZamTube/artwork/insaneoff.png b/plugins/ZamTube/artwork/insaneoff.png Binary files differnew file mode 100644 index 0000000..2875429 --- /dev/null +++ b/plugins/ZamTube/artwork/insaneoff.png diff --git a/plugins/ZamTube/artwork/insaneon.png b/plugins/ZamTube/artwork/insaneon.png Binary files differnew file mode 100644 index 0000000..0a87d20 --- /dev/null +++ b/plugins/ZamTube/artwork/insaneon.png diff --git a/plugins/ZamTube/artwork/zamtube.svg b/plugins/ZamTube/artwork/zamtube.svg index 1402647..8983306 100644 --- a/plugins/ZamTube/artwork/zamtube.svg +++ b/plugins/ZamTube/artwork/zamtube.svg @@ -15,7 +15,7 @@ height="336" id="svg2" version="1.1" - inkscape:version="0.48.3.1 r9886" + inkscape:version="0.48.5 r10040" sodipodi:docname="zamtube.svg" inkscape:export-filename="/home/damien/git/audio/zam-plugins-DPF/plugins/ZamTube/artwork/zamtube2.png" inkscape:export-xdpi="649.28571" @@ -4646,8 +4646,8 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="1.28" - inkscape:cx="292.81224" - inkscape:cy="195.34795" + inkscape:cx="294.37474" + inkscape:cy="101.59795" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" @@ -4656,10 +4656,10 @@ fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" - inkscape:window-width="1508" + inkscape:window-width="1280" inkscape:window-height="765" - inkscape:window-x="305" - inkscape:window-y="104" + inkscape:window-x="-72" + inkscape:window-y="31" inkscape:window-maximized="0" /> <metadata id="metadata7"> @@ -4669,7 +4669,7 @@ <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> + <dc:title></dc:title> </cc:Work> </rdf:RDF> </metadata> @@ -4983,7 +4983,7 @@ sodipodi:role="line" id="tspan2632" x="-719.17664" - y="-122.87212"> </tspan></text> + y="-122.87212" /></text> </g> </g> <text @@ -6158,5 +6158,74 @@ d="m 289.26738,1330.859 10.08636,0" id="path5008" inkscape:connector-curvature="0" /> + <rect + style="fill:#00ff00;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="rect3660" + width="77.34375" + height="24.024965" + x="86.431686" + y="1395.2423" + ry="14.062501" + rx="14.062501" + inkscape:export-filename="/home/damien/git/zam-plugins/plugins/ZamTube/artwork/insaneon.png" + inkscape:export-xdpi="84.32" + inkscape:export-ydpi="84.32" /> + <text + xml:space="preserve" + style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Amperzand;-inkscape-font-specification:Amperzand" + x="100.40044" + y="1412.286" + id="text4430" + sodipodi:linespacing="125%" + inkscape:export-filename="/home/damien/git/zam-plugins/plugins/ZamTube/artwork/insaneon.png" + inkscape:export-xdpi="84.32" + inkscape:export-ydpi="84.32"><tspan + sodipodi:role="line" + id="tspan4432" + x="100.40044" + y="1412.286" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Allstar4;-inkscape-font-specification:Allstar4">INSANE!</tspan></text> + <rect + rx="14.062501" + ry="14.062501" + y="1396.0236" + x="179.40044" + height="24.024965" + width="77.34375" + id="rect4434" + style="fill:#ff0000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:export-filename="/home/damien/git/zam-plugins/plugins/ZamTube/artwork/insaneoff.png" + inkscape:export-xdpi="84.32" + inkscape:export-ydpi="84.32" /> + <path + inkscape:connector-curvature="0" + id="path4441" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Allstar4;-inkscape-font-specification:Allstar4" + d="m 195.06157,1402.4696 1.98926,0 0.12988,0.1299 0,9.9941 -0.12988,0.1299 -1.98926,0 -0.12988,-0.1299 0,-9.9941 0.12988,-0.1299" /> + <path + inkscape:connector-curvature="0" + id="path4443" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Allstar4;-inkscape-font-specification:Allstar4" + d="m 200.70805,1402.4696 c 0.10938,0 1.28743,2.2171 3.53418,6.6514 l 0.0684,0.068 0.0684,0 0,-0.068 -0.007,-6.5147 0.0752,-0.1367 1.80469,0 0.13672,0.1367 0,9.9805 -0.13672,0.1367 -2.22168,0 c -0.41472,-0.6198 -1.59278,-2.8597 -3.53418,-6.7197 l -0.0684,0 0,6.583 -0.13672,0.1367 -1.73633,0 -0.19824,-0.1572 -0.007,-10.0283 0.0684,-0.068 2.29004,0" /> + <path + inkscape:connector-curvature="0" + id="path4445" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Allstar4;-inkscape-font-specification:Allstar4" + d="m 208.89751,1402.4696 5.09277,0 1.3877,1.3877 0,1.5244 -0.12989,0.1299 -2.05078,0 -0.13672,-0.1299 0,-0.7314 -0.45801,-0.458 -2.38574,0 -0.46484,0.3964 0,1.7159 0.33496,0.2666 3.83496,0 c 0.25065,0 0.736,0.442 1.45606,1.3261 l 0,3.3702 -1.45606,1.456 -5.09277,0 -1.45606,-1.456 0,-1.5176 0.12989,-0.1367 2.05078,0 0.13672,0.1367 0,0.7929 0.458,0.4581 2.51563,0 0.39648,-0.4581 0,-1.7226 -0.32812,-0.3281 -4.03321,0 -1.25781,-1.2578 0,-3.3086 1.45606,-1.4561" /> + <path + inkscape:connector-curvature="0" + id="path4447" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Allstar4;-inkscape-font-specification:Allstar4" + d="m 222.09087,1402.4696 c 0.14127,0 1.11197,3.3952 2.91211,10.1856 l -0.0684,0.068 -2.14649,0 c -0.12305,-0.073 -0.35547,-0.834 -0.69726,-2.2832 l -3.32227,0 c -0.30534,1.5221 -0.5127,2.2832 -0.62207,2.2832 l -1.94141,0 -0.13671,-0.1367 2.76855,-10.0488 0.0684,-0.068 3.18555,0 m -1.66114,1.4561 -1.17578,4.7099 2.42676,0 -1.18262,-4.7099 -0.0684,0" /> + <path + inkscape:connector-curvature="0" + id="path4449" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Allstar4;-inkscape-font-specification:Allstar4" + d="m 228.4893,1402.4696 c 0.10938,0 1.28743,2.2171 3.53418,6.6514 l 0.0684,0.068 0.0684,0 0,-0.068 -0.007,-6.5147 0.0752,-0.1367 1.80469,0 0.13672,0.1367 0,9.9805 -0.13672,0.1367 -2.22168,0 c -0.41472,-0.6198 -1.59278,-2.8597 -3.53418,-6.7197 l -0.0684,0 0,6.583 -0.13672,0.1367 -1.73633,0 -0.19824,-0.1572 -0.007,-10.0283 0.0684,-0.068 2.29004,0" /> + <path + inkscape:connector-curvature="0" + id="path4451" + style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Allstar4;-inkscape-font-specification:Allstar4" + d="m 235.29106,1402.4696 6.44629,0 0.13672,0.1367 0,1.5244 -0.13672,0.1436 -4.2998,0 0,2.3516 3.88281,0 0.13672,0.1367 0,1.5244 -0.13672,0.1435 -3.88281,0 0,2.4883 4.36816,0 0.13672,0.1436 0,1.5244 -0.13672,0.1367 -6.51465,0 -0.13672,-0.1367 0,-9.9805 0.13672,-0.1367" /> </g> </svg> diff --git a/plugins/ZamTube/wdf.cpp b/plugins/ZamTube/wdf.cpp index 329d128..d2e2f9f 100644 --- a/plugins/ZamTube/wdf.cpp +++ b/plugins/ZamTube/wdf.cpp @@ -250,10 +250,11 @@ T Triode::ffp(T VP) { double A = VP/mu+vg; return (P.WD+P.PortRes*((g*(coeff[0]+coeff[1]*A+coeff[2]*A*A))+(G.WD-vg)/G.PortRes)-VP); +} - printf("%f\n", VP/mu+vg); - return (P.WD+P.PortRes*((g*_pow(_log(1.0+_exp(c*(VP/mu+vg)))/c,gamma))+(G.WD-vg)/G.PortRes)-VP); -} // ^ +T Triode::ffp_insane(T VP) { + return (P.WD+P.PortRes*((g*pow(log(1.0+exp(c*(VP/mu+vg)))/c,gamma))+(G.WD-vg)/G.PortRes)-VP); +} T Triode::fpdash(T VP) { T a1 = exp(c*(vg+VP/mu)); @@ -402,6 +403,131 @@ T Triode::r8_sign ( T x ) return value; } +T Triode::zeroffp_insane ( T a, T b, T t ) +{ + T c; + T d; + T e; + T fa; + T fb; + T fc; + T m; + T macheps; + T p; + T q; + T r; + T s; + T sa; + T sb; + T tol; +// +// Make local copies of A and B. +// + sa = a; + sb = b; + fa = ffp_insane ( sa ); + fb = ffp_insane ( sb ); + + c = sa; + fc = fa; + e = sb - sa; + d = e; + + macheps = r8_epsilon; + + for ( ; ; ) + { + if ( abs ( fc ) < abs ( fb ) ) + { + sa = sb; + sb = c; + c = sa; + fa = fb; + fb = fc; + fc = fa; + } + + tol = 2.0 * macheps * abs ( sb ) + t; + m = 0.5 * ( c - sb ); + + if ( abs ( m ) <= tol || fb == 0.0 ) + { + break; + } + + if ( abs ( e ) < tol || abs ( fa ) <= abs ( fb ) ) + { + e = m; + d = e; + } + else + { + s = fb / fa; + + if ( sa == c ) + { + p = 2.0 * m * s; + q = 1.0 - s; + } + else + { + q = fa / fc; + r = fb / fc; + p = s * ( 2.0 * m * q * ( q - r ) - ( sb - sa ) * ( r - 1.0 ) ); + q = ( q - 1.0 ) * ( r - 1.0 ) * ( s - 1.0 ); + } + + if ( 0.0 < p ) + { + q = - q; + } + else + { + p = - p; + } + + s = e; + e = d; + + if ( 2.0 * p < 3.0 * m * q - abs ( tol * q ) && + p < abs ( 0.5 * s * q ) ) + { + d = p / q; + } + else + { + e = m; + d = e; + } + } + sa = sb; + fa = fb; + + if ( tol < abs ( d ) ) + { + sb = sb + d; + } + else if ( 0.0 < m ) + { + sb = sb + tol; + } + else + { + sb = sb - tol; + } + + fb = ffp ( sb ); + + if ( ( 0.0 < fb && 0.0 < fc ) || ( fb <= 0.0 && fc <= 0.0 ) ) + { + c = sa; + fc = fa; + e = sb - sa; + d = e; + } + } + return sb; +} T Triode::zeroffp ( T a, T b, T t ) { @@ -654,4 +780,3 @@ T Triode::zeroffg ( T a, T b, T t ) } return sb; } - diff --git a/plugins/ZamTube/wdf.h b/plugins/ZamTube/wdf.h index bcfb5c9..a315f97 100644 --- a/plugins/ZamTube/wdf.h +++ b/plugins/ZamTube/wdf.h @@ -78,6 +78,7 @@ public: T ffg(T VG); T fgdash(T VG); T ffp(T VP); + T ffp_insane(T VP); T fpdash(T VP); T ffk(); T secantfg(T *i1, T *i2); @@ -93,6 +94,7 @@ public: T r8_max ( T x, T y ); T r8_sign ( T x ); T zeroffp ( T a, T b, T t ); + T zeroffp_insane ( T a, T b, T t ); T zeroffg ( T a, T b, T t ); }; |