From a2faa1955f3a6078452e8aaee836768a843b0584 Mon Sep 17 00:00:00 2001 From: ESCA111 Date: Tue, 20 Jan 2026 12:56:34 +1300 Subject: [PATCH] init innit --- .gitignore | 2 + JuceLibraryCode/BinaryData.cpp | 507 ++++++++++++++++++ JuceLibraryCode/BinaryData.h | 30 ++ JuceLibraryCode/JuceHeader.h | 51 ++ JuceLibraryCode/JuceLV2Defines.h | 5 + JuceLibraryCode/JucePluginDefines.h | 162 ++++++ JuceLibraryCode/ReadMe.txt | 12 + JuceLibraryCode/include_juce_audio_basics.mm | 8 + .../include_juce_audio_devices.cpp | 8 + JuceLibraryCode/include_juce_audio_devices.mm | 8 + .../include_juce_audio_formats.cpp | 8 + JuceLibraryCode/include_juce_audio_formats.mm | 8 + .../include_juce_audio_plugin_client_AAX.cpp | 8 + .../include_juce_audio_plugin_client_AAX.mm | 8 + ...ude_juce_audio_plugin_client_AAX_utils.cpp | 8 + .../include_juce_audio_plugin_client_ARA.cpp | 8 + .../include_juce_audio_plugin_client_AU_1.mm | 8 + .../include_juce_audio_plugin_client_AU_2.mm | 8 + .../include_juce_audio_plugin_client_AUv3.mm | 8 + .../include_juce_audio_plugin_client_LV2.cpp | 8 + .../include_juce_audio_plugin_client_LV2.mm | 8 + ...de_juce_audio_plugin_client_Standalone.cpp | 8 + ...include_juce_audio_plugin_client_Unity.cpp | 8 + .../include_juce_audio_plugin_client_VST2.cpp | 8 + .../include_juce_audio_plugin_client_VST2.mm | 8 + .../include_juce_audio_plugin_client_VST3.cpp | 8 + .../include_juce_audio_plugin_client_VST3.mm | 8 + .../include_juce_audio_processors.cpp | 8 + .../include_juce_audio_processors.mm | 8 + .../include_juce_audio_processors_ara.cpp | 8 + ...include_juce_audio_processors_lv2_libs.cpp | 8 + JuceLibraryCode/include_juce_audio_utils.cpp | 8 + JuceLibraryCode/include_juce_audio_utils.mm | 8 + JuceLibraryCode/include_juce_core.cpp | 8 + JuceLibraryCode/include_juce_core.mm | 8 + .../include_juce_data_structures.cpp | 8 + .../include_juce_data_structures.mm | 8 + JuceLibraryCode/include_juce_dsp.cpp | 8 + JuceLibraryCode/include_juce_dsp.mm | 8 + JuceLibraryCode/include_juce_events.cpp | 8 + JuceLibraryCode/include_juce_events.mm | 8 + JuceLibraryCode/include_juce_graphics.cpp | 8 + JuceLibraryCode/include_juce_graphics.mm | 8 + JuceLibraryCode/include_juce_gui_basics.cpp | 8 + JuceLibraryCode/include_juce_gui_basics.mm | 8 + JuceLibraryCode/include_juce_gui_extra.cpp | 8 + JuceLibraryCode/include_juce_gui_extra.mm | 8 + JuceLibraryCode/include_juce_opengl.cpp | 8 + JuceLibraryCode/include_juce_opengl.mm | 8 + Source/CrushSliderLook.cpp | 23 + Source/CrushSliderLook.h | 22 + Source/CrushView.cpp | 51 ++ Source/CrushView.h | 29 + Source/DialLook.cpp | 34 ++ Source/DialLook.h | 22 + Source/FilterButtonLook.cpp | 27 + Source/FilterButtonLook.h | 22 + Source/FilterView.cpp | 51 ++ Source/FilterView.h | 29 + Source/OpenGLUtils.cpp | 43 ++ Source/OpenGLUtils.h | 42 ++ Source/PluginEditor.cpp | 36 ++ Source/PluginEditor.h | 33 ++ Source/PluginProcessor.cpp | 191 +++++++ Source/PluginProcessor.h | 59 ++ assets/BG.png | Bin 0 -> 31662 bytes assets/crushslidebg.png | Bin 0 -> 679 bytes assets/crushslidefg.png | Bin 0 -> 679 bytes assets/dialbg.png | Bin 0 -> 1420 bytes assets/hpon.png | Bin 0 -> 1040 bytes assets/lpon.png | Bin 0 -> 1045 bytes assets/rotator.png | Bin 0 -> 214 bytes crushFX.jucer | 87 +++ 73 files changed, 1906 insertions(+) create mode 100644 .gitignore create mode 100644 JuceLibraryCode/BinaryData.cpp create mode 100644 JuceLibraryCode/BinaryData.h create mode 100644 JuceLibraryCode/JuceHeader.h create mode 100644 JuceLibraryCode/JuceLV2Defines.h create mode 100644 JuceLibraryCode/JucePluginDefines.h create mode 100644 JuceLibraryCode/ReadMe.txt create mode 100644 JuceLibraryCode/include_juce_audio_basics.mm create mode 100644 JuceLibraryCode/include_juce_audio_devices.cpp create mode 100644 JuceLibraryCode/include_juce_audio_devices.mm create mode 100644 JuceLibraryCode/include_juce_audio_formats.cpp create mode 100644 JuceLibraryCode/include_juce_audio_formats.mm create mode 100644 JuceLibraryCode/include_juce_audio_plugin_client_AAX.cpp create mode 100644 JuceLibraryCode/include_juce_audio_plugin_client_AAX.mm create mode 100644 JuceLibraryCode/include_juce_audio_plugin_client_AAX_utils.cpp create mode 100644 JuceLibraryCode/include_juce_audio_plugin_client_ARA.cpp create mode 100644 JuceLibraryCode/include_juce_audio_plugin_client_AU_1.mm create mode 100644 JuceLibraryCode/include_juce_audio_plugin_client_AU_2.mm create mode 100644 JuceLibraryCode/include_juce_audio_plugin_client_AUv3.mm create mode 100644 JuceLibraryCode/include_juce_audio_plugin_client_LV2.cpp create mode 100644 JuceLibraryCode/include_juce_audio_plugin_client_LV2.mm create mode 100644 JuceLibraryCode/include_juce_audio_plugin_client_Standalone.cpp create mode 100644 JuceLibraryCode/include_juce_audio_plugin_client_Unity.cpp create mode 100644 JuceLibraryCode/include_juce_audio_plugin_client_VST2.cpp create mode 100644 JuceLibraryCode/include_juce_audio_plugin_client_VST2.mm create mode 100644 JuceLibraryCode/include_juce_audio_plugin_client_VST3.cpp create mode 100644 JuceLibraryCode/include_juce_audio_plugin_client_VST3.mm create mode 100644 JuceLibraryCode/include_juce_audio_processors.cpp create mode 100644 JuceLibraryCode/include_juce_audio_processors.mm create mode 100644 JuceLibraryCode/include_juce_audio_processors_ara.cpp create mode 100644 JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp create mode 100644 JuceLibraryCode/include_juce_audio_utils.cpp create mode 100644 JuceLibraryCode/include_juce_audio_utils.mm create mode 100644 JuceLibraryCode/include_juce_core.cpp create mode 100644 JuceLibraryCode/include_juce_core.mm create mode 100644 JuceLibraryCode/include_juce_data_structures.cpp create mode 100644 JuceLibraryCode/include_juce_data_structures.mm create mode 100644 JuceLibraryCode/include_juce_dsp.cpp create mode 100644 JuceLibraryCode/include_juce_dsp.mm create mode 100644 JuceLibraryCode/include_juce_events.cpp create mode 100644 JuceLibraryCode/include_juce_events.mm create mode 100644 JuceLibraryCode/include_juce_graphics.cpp create mode 100644 JuceLibraryCode/include_juce_graphics.mm create mode 100644 JuceLibraryCode/include_juce_gui_basics.cpp create mode 100644 JuceLibraryCode/include_juce_gui_basics.mm create mode 100644 JuceLibraryCode/include_juce_gui_extra.cpp create mode 100644 JuceLibraryCode/include_juce_gui_extra.mm create mode 100644 JuceLibraryCode/include_juce_opengl.cpp create mode 100644 JuceLibraryCode/include_juce_opengl.mm create mode 100644 Source/CrushSliderLook.cpp create mode 100644 Source/CrushSliderLook.h create mode 100644 Source/CrushView.cpp create mode 100644 Source/CrushView.h create mode 100644 Source/DialLook.cpp create mode 100644 Source/DialLook.h create mode 100644 Source/FilterButtonLook.cpp create mode 100644 Source/FilterButtonLook.h create mode 100644 Source/FilterView.cpp create mode 100644 Source/FilterView.h create mode 100644 Source/OpenGLUtils.cpp create mode 100644 Source/OpenGLUtils.h create mode 100644 Source/PluginEditor.cpp create mode 100644 Source/PluginEditor.h create mode 100644 Source/PluginProcessor.cpp create mode 100644 Source/PluginProcessor.h create mode 100644 assets/BG.png create mode 100644 assets/crushslidebg.png create mode 100644 assets/crushslidefg.png create mode 100644 assets/dialbg.png create mode 100644 assets/hpon.png create mode 100644 assets/lpon.png create mode 100644 assets/rotator.png create mode 100644 crushFX.jucer diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1d32326 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +compile_commands.json +Builds diff --git a/JuceLibraryCode/BinaryData.cpp b/JuceLibraryCode/BinaryData.cpp new file mode 100644 index 0000000..83f87fe --- /dev/null +++ b/JuceLibraryCode/BinaryData.cpp @@ -0,0 +1,507 @@ +/* ==================================== JUCER_BINARY_RESOURCE ==================================== + + This is an auto-generated file: Any edits you make may be overwritten! + +*/ + +#include + +namespace BinaryData +{ + +//================== BG.png ================== +static const unsigned char temp_binary_data_0[] = +{ 137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,2,184,0,0,1,44,8,6,0,0,0,40,223,192,231,0,0,0,9,112,72,89,115,0,0,25,174,0,0,25,174,1,24,70,182,191,0,0,0,25,116,69,88,116,83,111,102,116,119,97,114,101,0,119,119,119,46,105,110,107,115,99,97,112,101, +46,111,114,103,155,238,60,26,0,0,32,0,73,68,65,84,120,156,236,157,205,175,36,201,81,192,35,51,235,187,187,223,124,120,103,237,241,174,191,100,236,21,146,1,35,75,22,8,36,155,3,130,3,226,128,100,33,33,241,191,113,225,130,144,44,228,3,28,108,4,22,7,11,140, +132,13,216,216,96,108,239,14,187,222,157,157,29,118,222,188,238,174,174,47,14,67,244,214,84,69,84,87,118,197,123,93,211,27,63,201,26,111,119,191,168,200,232,136,206,168,136,172,76,115,255,254,253,6,20,69,81,20,69,81,20,229,76,176,167,86,64,81,20,69,81, +20,69,81,36,9,240,255,36,73,2,97,24,158,82,23,69,81,20,69,81,20,69,57,138,162,40,96,187,221,2,64,43,193,13,195,16,146,36,57,153,82,138,162,40,138,162,40,138,50,5,76,112,117,137,130,162,40,138,162,40,138,114,86,104,130,171,40,138,162,40,138,162,156,21, +154,224,42,138,162,40,138,162,40,103,69,112,248,35,126,56,231,32,73,18,48,198,128,115,142,252,140,49,6,172,181,80,215,53,52,205,180,93,202,156,115,34,114,172,125,150,235,55,77,51,89,86,16,4,80,85,149,152,78,117,93,79,146,35,109,239,166,105,38,235,116, +206,246,6,144,247,203,185,249,192,135,41,230,112,172,187,221,14,118,187,221,36,249,138,162,40,202,205,32,146,224,174,86,43,8,130,0,182,219,45,92,93,93,193,122,189,6,0,96,39,155,32,8,32,142,99,216,110,183,80,85,213,164,107,95,92,92,192,122,189,134,178, +44,39,201,137,227,24,172,181,144,231,249,228,100,226,226,226,2,174,174,174,38,143,45,77,83,104,154,6,242,60,159,52,113,59,231,32,203,50,88,175,215,147,117,90,46,151,144,231,57,148,101,57,73,167,48,12,33,12,67,216,110,183,179,177,55,222,152,77,245,1,107, +45,44,151,75,17,157,178,44,131,170,170,96,183,219,77,178,119,16,4,144,36,9,108,54,155,201,58,173,86,43,216,108,54,31,170,152,195,27,132,36,73,96,177,88,128,115,14,46,47,47,39,219,64,81,20,69,185,30,38,37,184,139,197,2,162,40,130,119,223,125,119,159,100, +142,169,236,4,65,0,101,89,138,76,182,214,90,145,4,183,40,10,112,206,137,36,92,206,57,184,186,186,154,172,83,93,215,80,215,181,72,130,91,215,181,72,130,107,140,129,237,118,43,146,224,70,81,4,155,205,102,54,246,46,203,82,44,193,5,0,145,132,171,105,26,40, +203,82,36,193,173,170,74,204,7,36,18,220,23,49,230,46,47,47,225,209,163,71,16,199,49,92,92,92,192,71,62,242,17,120,255,253,247,103,145,232,90,107,193,24,35,82,93,15,195,16,170,170,18,233,212,72,233,36,85,165,151,234,66,97,151,82,66,167,32,8,246,190,55, +5,105,31,152,250,59,143,58,1,76,239,212,72,218,91,178,19,41,233,223,231,234,3,82,246,246,229,168,4,215,57,7,119,238,220,129,119,222,121,7,158,62,125,10,69,81,120,59,47,126,126,170,225,240,239,37,228,72,234,36,45,103,138,172,182,141,230,164,211,28,237, +221,150,39,161,207,92,236,221,149,37,193,57,142,237,144,78,85,85,65,85,85,80,150,37,108,183,91,120,255,253,247,225,222,189,123,176,88,44,224,253,247,223,159,116,237,46,206,57,184,184,184,216,87,148,113,137,4,55,70,236,138,72,220,52,102,89,6,69,81,76, +78,220,113,235,201,169,201,178,49,6,210,52,133,162,40,38,223,160,69,81,180,255,30,167,22,14,226,56,22,209,41,77,211,125,225,96,10,81,20,129,115,14,138,162,152,236,3,139,197,2,118,187,157,72,103,12,0,38,23,106,176,131,34,97,239,246,247,38,213,137,148, +240,1,137,194,1,118,34,167,250,128,49,6,178,44,19,241,1,42,230,240,134,37,142,99,72,146,4,156,115,176,94,175,247,91,124,73,224,157,224,102,89,6,81,20,193,235,175,191,14,155,205,70,116,194,84,20,69,121,17,192,202,122,85,85,240,63,255,243,63,112,231,206, +29,120,233,165,151,224,221,119,223,157,44,59,12,67,88,173,86,240,228,201,19,120,235,173,183,246,19,241,161,234,78,24,134,16,199,49,172,215,235,201,201,77,211,52,34,21,113,169,101,63,198,24,168,170,74,164,43,130,137,187,68,87,100,183,219,137,116,69,170, +170,130,237,118,11,69,81,76,146,19,69,145,216,77,14,0,192,211,167,79,39,251,128,212,82,59,107,45,20,69,33,98,111,252,254,177,56,119,44,24,115,18,221,104,236,178,74,196,156,181,118,114,103,12,171,192,18,191,3,92,204,225,210,47,107,45,4,65,0,105,154,194, +221,187,119,161,40,10,184,186,186,154,116,77,0,207,4,119,185,92,194,173,91,183,224,173,183,222,130,40,138,32,8,62,248,243,221,110,7,155,205,230,185,207,91,107,97,181,90,245,228,224,96,130,32,232,57,87,85,85,144,231,121,47,208,23,139,197,115,215,67,226, +56,222,183,224,187,228,121,222,187,27,8,130,0,22,139,69,239,179,65,16,128,49,6,162,40,234,233,132,213,154,174,3,95,92,92,128,49,166,39,11,29,172,171,83,211,52,176,221,110,123,15,170,68,81,4,105,154,246,228,132,97,8,77,211,64,146,36,61,157,138,162,216, +223,96,180,185,117,235,86,79,142,181,22,194,48,4,107,109,239,243,117,93,147,63,172,105,154,66,20,69,61,89,113,28,239,219,151,93,40,31,112,206,193,114,185,236,125,214,57,7,206,185,253,24,219,224,143,125,55,168,150,203,37,249,224,226,144,189,243,60,135, +60,207,159,123,61,12,67,200,178,172,39,7,125,32,142,99,210,222,212,15,6,229,3,40,131,242,203,166,105,96,179,217,244,236,157,36,9,196,113,220,211,41,138,34,168,235,154,172,52,80,246,54,198,192,197,197,69,79,14,198,28,182,138,218,28,19,115,216,46,238,114, +221,49,183,90,173,246,45,207,54,167,138,185,166,105,96,177,88,236,245,253,196,39,62,1,111,188,241,70,79,238,88,62,242,145,143,192,211,167,79,225,141,55,222,120,46,41,28,51,9,75,87,196,199,94,119,172,156,23,165,74,127,211,114,186,242,36,100,156,171,189, +219,242,230,162,211,28,99,238,69,241,129,166,121,182,108,1,43,206,219,237,22,46,47,47,97,181,90,193,189,123,247,224,242,242,114,210,131,189,163,19,220,32,8,224,206,157,59,240,179,159,253,12,46,47,47,201,68,169,11,102,255,93,176,44,77,37,104,56,224,46, +219,237,150,76,38,219,107,66,169,235,119,193,42,64,23,108,237,108,183,219,209,58,93,93,93,145,58,89,107,225,234,234,138,181,73,151,178,44,73,157,210,52,133,186,174,201,74,3,231,116,148,28,107,237,190,253,65,37,0,220,205,1,85,77,104,154,102,127,55,54, +197,7,218,237,212,177,246,222,108,54,172,189,185,187,122,31,123,199,113,188,175,54,141,213,9,31,168,108,131,58,82,149,52,78,206,110,183,35,125,24,43,133,84,165,129,146,131,149,183,46,146,49,7,0,251,7,13,187,92,119,204,173,215,235,107,141,57,76,108,125, +98,238,233,211,167,0,240,44,246,182,219,45,220,187,119,15,30,62,124,216,251,220,16,248,251,250,214,91,111,193,211,167,79,247,55,52,220,196,194,125,47,248,94,247,253,161,9,234,144,172,46,190,58,225,235,99,117,226,126,231,219,255,27,35,103,72,39,238,61, +95,157,184,247,79,173,211,28,237,52,183,177,73,248,229,208,251,167,140,57,9,157,164,253,155,250,222,80,86,59,185,47,138,2,30,63,126,12,219,237,22,62,246,177,143,65,24,134,71,87,115,71,39,184,31,253,232,71,225,205,55,223,220,175,17,25,155,209,83,147,32, +150,190,177,50,53,6,238,115,40,99,108,9,29,19,134,46,88,25,244,89,43,54,164,83,93,215,163,117,226,90,143,168,203,84,123,99,213,14,215,192,76,209,9,237,55,86,39,206,222,216,154,144,178,183,132,15,96,69,209,71,39,74,14,86,18,37,236,221,94,243,57,53,230, +48,105,156,26,115,232,75,231,24,115,109,57,190,246,46,203,18,222,125,247,93,200,178,12,150,203,229,62,241,61,68,28,199,240,234,171,175,238,43,191,237,238,130,79,103,12,187,34,92,103,236,148,93,17,174,74,79,221,116,175,86,43,239,206,24,213,21,193,181, +125,93,176,43,66,249,202,110,183,235,221,112,13,117,69,194,48,244,234,138,100,89,6,97,24,246,100,73,117,69,156,115,123,189,40,123,251,116,69,240,134,127,108,87,132,243,1,212,197,183,51,214,5,253,200,167,19,57,212,25,139,162,136,244,143,235,142,57,174, +51,134,235,80,175,59,230,174,179,27,205,197,92,219,7,186,116,99,14,255,13,195,16,158,60,121,2,247,238,221,131,229,114,9,111,191,253,118,239,111,15,49,42,193,189,123,247,46,188,243,206,59,98,235,122,20,69,81,206,145,178,44,225,23,191,248,5,188,246,218, +107,163,18,92,99,12,220,191,127,31,126,242,147,159,192,251,239,191,223,251,125,245,169,210,7,65,176,223,153,100,106,87,4,119,202,232,78,132,92,85,153,171,136,99,66,66,117,69,184,167,188,169,206,24,86,127,124,186,34,220,195,72,120,147,199,117,69,40,219, +113,157,49,220,122,207,167,43,194,181,92,37,186,34,97,24,238,183,236,188,174,174,136,175,15,12,117,69,184,27,77,74,14,222,164,175,215,235,209,99,27,234,140,21,69,65,118,41,125,58,145,199,196,220,80,55,250,186,99,206,183,27,45,21,115,105,154,122,199,220, +211,167,79,193,24,3,79,159,62,133,251,247,239,195,106,181,130,203,203,203,158,236,33,70,37,184,105,154,194,207,127,254,115,242,206,83,81,20,69,121,6,86,54,30,62,124,56,106,169,194,199,63,254,113,120,243,205,55,225,242,242,114,244,3,47,67,93,17,76,222, +166,86,196,113,2,147,232,138,96,197,127,138,78,237,177,77,237,138,180,59,62,83,186,34,56,54,159,174,200,80,103,76,162,43,130,15,236,204,201,7,112,185,205,84,123,99,229,86,194,222,109,95,154,83,55,90,42,230,240,58,83,99,206,215,7,174,35,230,202,178,132, +55,223,124,19,62,251,217,207,122,239,50,113,240,168,222,123,247,238,193,163,71,143,38,63,109,168,40,138,242,97,160,174,107,248,223,255,253,95,184,123,247,238,224,231,150,203,37,188,247,222,123,236,218,97,69,81,148,15,59,88,253,127,240,224,1,124,252,227, +31,247,250,219,131,9,238,237,219,183,247,173,179,161,135,30,142,97,78,9,179,228,216,164,100,73,235,52,39,57,146,156,171,79,2,168,47,249,200,154,139,157,112,205,220,102,179,33,119,34,65,110,223,190,13,239,190,251,238,228,237,133,20,69,81,206,25,220,66, +237,233,211,167,228,174,76,28,7,19,92,92,112,141,89,180,196,41,34,184,0,95,98,66,146,216,96,25,0,188,31,44,25,66,106,108,184,207,230,84,112,194,149,168,18,161,156,169,227,227,118,135,152,162,211,84,208,222,18,9,14,181,6,238,24,112,179,110,9,123,75,250, +128,84,204,73,117,134,230,22,115,101,89,194,227,199,143,225,254,253,251,228,251,119,239,222,133,199,143,31,139,233,173,40,138,114,206,148,101,9,15,31,62,244,170,226,14,174,193,13,130,224,185,69,207,83,55,161,70,184,117,26,199,48,101,143,180,54,146,71, +109,118,159,118,60,22,73,123,75,217,73,74,39,159,181,116,135,144,178,183,148,15,224,205,160,4,26,115,227,152,91,204,225,67,18,175,190,250,42,249,254,157,59,119,224,135,63,252,161,120,103,76,234,59,150,172,136,207,141,57,118,51,36,191,55,41,89,18,55,214, +0,243,180,247,57,119,108,37,125,64,74,39,9,95,194,7,12,203,178,220,175,15,62,196,96,5,23,79,148,152,227,143,148,162,40,202,156,41,138,130,220,14,8,223,107,119,198,36,38,0,238,41,229,99,152,122,10,82,91,39,137,206,24,118,69,36,116,146,56,162,21,96,190, +93,17,169,78,164,84,23,74,178,19,41,229,3,146,49,39,213,137,148,26,155,207,54,158,67,72,218,91,170,59,138,157,177,151,94,122,105,212,231,7,43,184,113,28,139,158,11,172,40,138,242,97,96,168,138,130,7,156,104,103,204,143,115,238,138,204,177,51,54,55,31, +192,173,189,36,56,119,31,144,98,110,49,87,85,21,92,94,94,194,103,63,251,217,81,135,233,12,86,112,169,13,172,21,69,81,148,195,52,77,67,238,45,121,247,238,221,125,5,73,81,20,69,25,79,81,20,228,129,17,20,7,31,50,107,131,103,217,79,5,79,90,57,116,204,220, +24,194,48,36,79,97,241,5,79,35,145,210,73,66,142,148,189,141,49,179,179,183,181,118,118,246,150,242,1,73,123,107,204,141,215,105,78,246,54,198,176,203,19,112,211,115,69,81,20,197,15,159,223,78,175,89,42,73,18,145,9,201,57,7,113,28,139,76,146,105,154, +138,76,72,120,34,137,196,36,153,101,153,136,78,81,20,137,76,220,214,90,72,211,84,196,222,120,156,160,148,15,204,201,222,97,24,138,216,219,24,35,102,111,60,194,83,194,222,120,236,226,84,52,230,14,131,49,71,65,29,235,169,40,138,162,28,166,105,154,209,243, +216,244,217,78,81,20,69,57,154,48,12,69,146,115,231,156,88,37,27,143,251,156,74,16,4,98,55,141,82,58,225,113,182,83,145,236,138,68,81,52,59,31,144,42,66,161,189,165,124,64,170,227,51,183,206,216,220,98,78,82,39,41,31,240,181,183,38,184,138,162,40,39, +36,142,99,145,174,136,181,86,172,43,34,89,165,151,90,134,146,36,137,104,50,41,97,111,169,174,136,148,28,231,156,88,18,40,213,133,66,31,152,138,49,70,204,78,82,49,39,217,141,198,238,232,84,36,111,42,165,124,64,234,6,14,127,227,70,127,126,242,21,21,69, +81,20,69,81,20,101,70,104,130,171,40,138,162,40,138,162,156,21,131,125,3,108,9,164,105,10,77,211,64,16,4,96,173,37,75,214,101,89,246,246,58,195,191,239,130,235,132,168,141,150,113,31,191,238,147,114,92,137,27,229,116,91,32,77,211,236,55,62,111,195,149, +184,219,37,125,74,167,178,44,123,219,250,112,173,137,32,8,32,142,99,8,195,176,167,19,110,194,220,253,124,247,179,168,19,183,213,16,183,153,51,245,96,11,238,88,144,36,73,111,12,184,49,120,215,222,220,58,53,148,67,237,109,72,249,0,103,111,124,90,157,58, +41,133,179,247,144,15,248,216,27,219,120,148,28,99,12,121,74,10,103,111,170,109,138,187,40,72,216,27,215,138,73,196,28,250,101,119,12,156,78,156,189,81,206,156,98,206,215,7,14,197,156,181,118,180,15,12,197,156,68,107,86,81,20,69,241,199,171,130,139,147, +145,196,250,30,78,206,117,202,62,36,223,247,218,199,92,227,24,164,229,77,225,148,186,28,243,221,93,183,63,29,35,231,24,89,115,26,7,55,134,83,142,107,174,156,251,248,20,69,81,230,202,96,121,1,143,145,204,243,124,95,193,45,138,130,60,221,130,218,246,166, +105,26,242,140,120,92,220,77,29,115,200,157,125,92,20,5,89,53,12,195,144,61,230,144,146,83,85,21,169,83,211,52,224,156,219,143,117,140,78,121,158,147,19,88,28,199,176,219,237,122,58,113,91,3,85,85,69,110,250,110,173,133,186,174,201,163,0,135,116,234, +226,156,219,143,109,172,189,185,227,21,195,48,132,221,110,71,158,76,66,201,193,227,44,169,215,81,214,88,157,118,187,29,107,111,202,7,56,123,115,58,161,236,169,62,128,21,92,31,31,224,236,237,156,131,178,44,69,98,206,90,43,26,115,212,123,62,62,112,76,204, +13,249,192,156,98,206,90,187,175,66,83,239,165,105,10,89,150,65,211,52,251,39,149,177,122,220,166,40,10,178,34,78,85,233,219,21,99,170,115,128,71,212,182,193,135,109,186,96,7,130,170,114,83,58,225,150,111,148,28,99,12,89,17,199,106,127,87,215,52,77,201, +152,138,162,104,223,37,104,131,39,92,117,109,141,219,254,117,137,162,104,111,43,170,74,223,61,238,24,31,182,233,130,157,200,52,77,71,219,27,175,221,5,245,196,49,182,241,245,1,156,95,187,58,113,246,230,30,220,194,177,81,246,166,186,71,156,15,224,152,168, +131,163,40,123,3,60,219,246,175,11,198,8,101,239,99,124,128,139,57,234,247,150,243,1,201,152,67,59,141,141,57,124,192,173,75,59,230,198,250,0,23,115,67,62,112,157,49,7,64,251,0,250,24,117,13,138,131,253,51,60,138,14,127,220,219,255,27,3,53,137,180,91, +211,99,79,243,57,116,77,159,83,129,168,207,182,199,53,85,167,235,144,51,197,222,237,54,176,132,78,109,127,56,86,39,148,225,115,212,225,117,219,187,174,235,253,242,132,41,178,112,50,151,28,219,220,98,206,71,14,167,211,185,199,220,144,253,218,191,171,248, +239,216,13,204,185,113,162,76,234,204,119,238,28,120,244,121,238,26,99,111,134,56,157,134,236,201,217,152,211,9,199,70,37,18,62,58,181,237,196,233,59,70,78,251,183,226,186,116,242,157,243,80,62,245,125,115,177,49,244,58,101,111,95,31,192,215,40,155,12, +221,128,118,125,160,237,75,99,237,221,190,62,245,249,177,133,177,33,57,67,246,246,245,111,159,152,227,116,194,207,75,232,132,114,36,252,123,200,222,156,78,93,80,151,177,191,243,186,64,76,81,20,229,6,193,10,49,86,174,219,93,145,49,73,117,211,208,85,122, +156,164,168,170,17,254,93,23,106,125,50,192,7,21,113,234,61,10,174,34,142,203,89,184,163,137,41,157,168,110,133,49,6,226,56,102,187,10,148,28,234,89,14,128,103,85,32,172,210,141,189,137,161,236,141,213,82,170,115,192,233,196,217,59,138,162,189,189,199, +232,52,212,21,9,130,192,203,222,84,55,14,224,89,101,151,179,55,197,80,87,164,105,154,201,62,128,21,115,9,123,159,115,204,1,60,179,249,156,98,206,57,7,85,85,137,196,220,208,184,123,159,31,245,41,69,81,20,69,140,110,101,222,183,74,47,85,125,62,244,185, +177,114,134,116,106,235,54,69,39,169,177,73,219,91,98,108,248,158,79,87,228,186,237,237,43,103,72,39,137,239,14,109,35,229,75,115,243,129,246,119,55,22,169,239,238,38,229,72,125,119,99,208,109,194,20,69,81,20,69,81,148,179,194,171,130,75,45,78,62,134, +186,174,71,183,98,110,82,39,223,187,213,235,214,73,202,70,77,211,140,110,197,28,2,229,76,149,213,52,205,232,86,204,88,157,166,130,235,190,164,198,38,161,19,181,85,214,49,224,3,15,146,62,32,161,19,128,95,197,130,99,174,49,167,40,138,162,156,6,175,4,23, +215,105,76,157,0,112,13,154,196,132,68,61,129,125,12,152,108,73,200,218,110,183,34,99,195,9,82,194,222,212,211,243,199,224,179,134,102,8,92,171,51,39,123,75,249,64,211,52,98,58,105,204,141,99,142,49,39,21,43,138,162,40,138,63,94,9,174,212,143,181,84, +165,20,192,111,247,132,33,36,39,162,115,214,233,156,199,118,206,58,105,204,141,227,20,58,97,245,89,226,198,74,170,106,44,117,51,36,213,21,1,144,235,28,72,201,145,236,140,73,221,12,73,235,36,89,56,144,64,210,7,36,98,78,186,51,38,21,115,18,99,3,144,243, +1,201,174,159,143,63,233,67,102,138,162,40,39,68,42,185,193,189,148,165,42,226,115,170,210,99,87,100,78,9,174,100,34,33,213,21,41,138,66,236,134,98,179,217,204,202,7,234,186,22,243,1,201,78,164,148,15,72,250,183,212,82,187,185,197,28,118,163,199,202, +210,4,87,81,20,229,132,72,86,141,37,43,254,115,146,35,41,75,117,122,49,229,72,202,82,157,94,76,57,190,178,116,23,5,69,81,20,69,81,20,229,172,240,74,112,23,139,5,68,81,52,249,124,245,48,12,97,185,92,146,199,213,249,114,113,113,49,250,216,182,33,226,56, +134,44,203,200,35,11,143,209,137,58,142,209,151,44,203,32,142,227,201,246,118,206,193,106,181,18,177,247,114,185,220,31,5,56,133,48,12,97,177,88,204,202,222,73,146,64,154,166,147,117,178,214,194,197,197,133,136,189,207,57,230,162,40,18,139,185,91,183, +110,137,248,64,154,166,144,36,137,72,204,45,151,203,201,114,20,69,81,148,227,240,154,89,240,84,26,101,24,73,27,73,201,154,155,28,73,230,168,147,36,231,250,221,205,77,31,128,121,198,174,162,40,138,226,143,46,81,80,20,69,57,33,203,229,82,180,74,47,85,17, +151,168,210,75,117,69,140,49,162,93,17,137,206,88,16,4,98,157,49,201,174,136,84,103,236,246,237,219,179,234,138,72,118,198,164,99,110,78,62,144,36,137,72,103,204,24,35,214,25,147,140,57,159,206,152,38,184,138,162,40,138,162,40,202,89,161,9,174,162,40, +138,162,40,138,114,86,12,214,158,141,49,96,173,5,107,45,52,77,179,95,131,139,255,221,134,219,72,158,42,147,119,229,118,161,100,113,235,127,219,58,77,145,99,173,245,146,195,141,77,82,39,41,123,227,107,82,246,230,190,59,95,157,240,127,20,212,230,210,215, +109,239,182,157,198,200,225,62,219,246,165,169,246,30,146,117,140,95,74,232,212,150,53,69,78,219,151,198,200,1,184,153,152,147,242,111,78,31,69,81,20,229,250,25,76,112,173,181,144,101,25,44,151,75,104,154,6,162,40,130,48,12,201,147,36,118,187,29,108, +183,219,231,94,51,198,192,114,185,36,229,226,147,248,221,9,163,170,42,200,243,188,119,141,52,77,201,181,32,184,174,131,74,136,242,60,135,60,207,159,123,205,57,7,89,150,245,62,27,4,1,24,99,32,8,130,158,78,101,89,66,158,231,80,85,213,115,175,115,235,92, +162,40,2,128,126,146,134,27,39,119,79,27,10,195,16,146,36,233,201,9,195,16,154,166,33,215,229,20,69,65,110,194,76,217,219,24,179,95,111,212,253,60,110,156,220,213,41,142,227,253,56,186,175,59,231,122,182,0,160,125,192,57,7,139,197,162,247,89,231,28,56, +231,200,68,162,170,42,216,110,183,189,107,164,105,74,174,117,226,236,13,240,108,243,108,60,238,22,9,130,0,210,52,237,125,22,125,0,237,222,166,44,75,242,56,88,206,222,113,28,3,64,127,207,62,206,7,162,40,218,255,77,247,245,185,197,92,146,36,96,173,21,139, +57,231,220,181,198,92,158,231,61,31,56,20,115,212,184,125,99,46,12,67,145,53,117,138,162,40,138,63,131,9,110,93,215,176,94,175,225,234,234,106,255,163,94,20,5,121,42,5,87,21,186,186,186,234,95,52,8,160,174,107,216,108,54,228,36,201,37,42,92,197,101,187, +221,146,9,0,165,83,85,85,164,78,81,20,129,115,14,242,60,39,39,73,74,214,102,179,33,245,177,214,194,122,189,38,147,64,106,108,69,81,144,159,77,211,148,61,211,158,211,137,26,27,38,145,62,246,222,237,118,236,177,159,187,221,14,202,178,28,229,3,117,93,147, +58,225,228,79,37,141,67,246,166,124,192,57,231,101,239,178,44,73,157,48,225,161,142,39,108,154,134,148,197,217,219,24,3,235,245,122,180,189,139,162,96,125,184,44,203,201,49,231,156,131,36,73,68,99,142,58,53,235,20,49,7,224,239,3,55,17,115,171,213,138, +140,33,76,234,241,102,218,90,187,79,242,169,27,208,174,254,248,247,93,240,134,17,255,237,234,78,157,184,228,156,27,172,100,83,137,190,175,78,248,222,88,157,168,107,162,62,148,190,156,28,174,59,128,114,168,98,6,53,54,78,39,212,5,227,125,140,78,67,246, +166,110,244,56,157,94,52,31,192,155,70,42,166,168,56,228,124,0,175,33,229,3,99,99,142,211,9,237,44,225,3,40,103,170,189,81,206,84,31,104,119,197,186,58,161,221,186,58,93,119,204,249,118,198,6,19,92,28,0,78,100,168,136,207,113,144,148,243,98,245,7,101, +141,129,59,15,185,173,227,24,184,128,170,235,26,140,49,251,163,247,198,192,93,83,82,39,9,123,183,229,73,216,187,170,170,209,58,113,99,67,135,247,177,55,247,57,95,95,226,116,170,170,74,196,7,186,177,50,134,49,99,155,26,115,190,126,121,40,230,198,158,9, +126,19,49,39,229,3,146,49,199,221,20,89,107,247,187,11,96,103,12,43,236,221,107,238,118,187,94,69,220,24,67,118,32,176,43,130,215,238,234,72,85,196,177,35,211,5,117,225,170,244,221,138,184,115,110,176,43,66,117,106,176,74,223,125,157,122,226,30,43,226, +73,146,144,73,18,213,133,10,130,128,237,138,212,117,77,78,182,69,81,244,116,226,236,141,223,25,234,208,166,170,170,125,33,160,13,87,213,199,238,10,149,124,80,62,96,173,29,244,1,170,83,83,150,37,236,118,187,158,15,96,71,134,210,105,200,222,93,223,8,130, +96,176,43,66,37,240,69,81,144,99,166,198,134,157,72,46,41,165,138,50,97,24,146,157,72,223,152,227,236,221,78,254,198,250,64,20,69,100,242,118,202,152,75,211,244,168,152,163,124,64,34,230,80,167,46,248,157,141,221,217,65,143,234,85,20,69,185,65,176,123, +181,94,175,161,105,158,61,219,224,219,21,89,175,215,189,215,113,114,161,170,244,92,245,153,171,210,59,231,96,179,217,140,174,136,87,85,69,234,132,75,200,168,9,140,155,204,135,58,99,62,29,8,174,74,15,0,131,93,17,234,53,106,108,152,176,249,216,155,235, +140,161,141,198,118,34,57,31,144,236,140,5,65,224,101,239,178,44,73,157,48,65,242,233,138,80,114,176,122,231,99,111,174,51,118,202,152,163,146,85,0,217,152,179,214,178,157,177,83,196,28,94,119,170,15,56,231,216,239,148,66,19,92,69,81,148,27,228,186,59, +99,18,93,17,156,116,164,58,99,92,27,146,130,146,211,150,49,151,42,61,86,73,37,186,34,248,222,212,177,57,231,102,233,3,248,222,20,123,183,219,226,115,234,140,73,118,235,164,236,141,250,78,141,57,41,31,240,237,252,114,58,181,59,145,99,208,71,124,21,69, +81,20,69,81,148,179,194,171,130,235,115,23,62,4,183,208,249,24,164,228,248,220,21,28,98,110,99,67,89,115,146,3,64,183,130,142,65,210,7,218,255,78,145,51,199,177,73,250,165,4,146,118,146,146,53,199,152,83,20,69,81,252,241,74,112,113,253,196,212,9,160, +174,107,114,253,211,49,80,235,76,142,1,203,249,18,58,81,235,159,142,1,215,7,73,216,91,202,78,248,144,194,84,157,80,198,220,236,61,245,40,65,68,74,39,140,19,9,31,160,214,63,29,3,245,176,210,49,72,198,28,183,78,204,23,233,152,83,20,69,81,78,131,87,130, +59,118,97,239,33,164,42,193,0,192,110,101,229,139,196,132,141,72,233,36,101,239,166,105,196,116,146,146,115,206,62,32,105,111,141,185,113,204,205,222,77,211,144,15,176,80,72,86,141,165,108,42,113,19,11,240,193,26,220,57,117,14,36,187,34,82,118,146,252, +237,153,163,15,72,33,53,182,185,118,198,36,237,45,229,151,115,146,227,219,105,215,135,204,20,69,81,78,8,238,187,60,167,174,136,100,149,94,2,110,91,162,99,224,182,166,242,69,186,43,34,213,137,156,99,103,12,64,102,233,23,181,71,249,49,72,197,220,92,59, +99,18,114,164,99,14,101,78,193,183,51,166,9,174,162,40,202,9,209,42,253,56,230,90,165,151,64,125,224,48,218,25,27,199,28,99,78,186,67,49,54,81,214,93,20,20,69,81,20,69,81,148,179,194,43,193,229,78,224,240,197,57,7,81,20,137,60,208,195,157,196,227,75, +16,4,251,211,100,166,194,157,12,227,11,110,218,61,85,39,107,237,126,243,231,169,72,217,91,210,7,230,102,111,99,140,152,78,24,115,83,117,210,152,27,135,116,204,73,61,180,168,40,138,162,248,225,157,224,114,231,40,123,93,212,218,253,81,121,83,145,74,220, +156,115,98,147,173,148,78,97,24,138,36,18,198,24,177,201,22,191,55,9,31,152,155,189,241,172,108,137,4,87,42,153,148,242,1,233,155,28,141,185,97,208,7,20,69,81,148,211,160,75,20,20,69,81,78,72,146,36,34,157,49,60,54,84,34,209,79,211,84,36,209,15,195,80, +228,102,207,24,3,105,154,138,221,160,73,220,88,57,231,196,58,7,82,62,32,101,111,0,128,44,203,102,215,21,145,246,129,169,104,204,141,35,138,34,49,31,72,146,100,180,28,77,112,21,69,81,78,72,16,4,34,93,17,99,140,200,164,13,0,98,29,54,231,156,72,215,15,0, +196,170,253,104,239,169,160,189,165,58,99,18,114,164,117,146,176,83,16,4,34,137,27,128,156,15,160,28,169,152,147,210,105,78,157,72,0,57,31,144,26,155,181,214,235,70,80,19,92,69,81,20,69,81,20,229,172,208,4,87,81,20,69,81,20,69,57,43,6,107,189,214,90, +200,178,12,150,203,37,52,77,179,127,200,140,106,131,21,69,209,219,128,215,24,3,139,197,130,148,139,101,253,238,126,102,85,85,237,143,131,109,195,173,81,194,7,57,226,56,238,189,183,219,237,96,183,219,61,247,154,115,14,210,52,237,125,22,75,250,206,185, +158,78,101,89,146,27,76,115,107,148,162,40,34,79,220,192,141,170,187,123,203,133,97,72,234,31,134,33,52,77,179,255,183,77,81,20,228,6,211,203,229,178,39,7,31,234,3,232,159,42,131,27,85,119,247,5,228,214,40,97,203,130,218,215,142,178,55,250,80,23,108, +93,90,107,71,251,0,183,70,201,215,222,65,16,64,146,36,61,57,56,222,32,8,70,251,192,98,177,232,181,130,218,15,24,81,246,46,138,162,167,83,20,69,228,67,73,184,118,73,42,230,0,250,155,109,87,85,5,69,81,244,124,224,38,98,206,90,123,214,49,39,181,100,64,81, +20,69,241,99,48,193,197,141,149,241,71,221,57,183,159,12,187,63,242,220,102,199,221,201,14,224,131,137,13,79,148,233,94,147,218,196,23,207,173,239,18,134,33,148,101,73,110,220,76,125,30,39,188,46,184,30,199,71,167,162,40,216,228,166,40,10,50,9,164,116, +194,36,179,11,38,127,212,164,202,109,116,76,201,193,100,146,210,137,59,250,142,219,76,57,8,130,189,189,199,248,0,103,111,156,248,125,236,93,150,37,105,83,73,123,251,234,68,109,132,141,201,164,143,189,57,157,110,42,230,56,31,24,138,57,202,71,124,124,0, +0,188,127,7,168,152,3,120,150,108,207,45,230,164,142,167,84,20,69,81,252,57,152,224,150,101,185,159,92,49,145,160,38,91,234,135,156,59,121,4,147,101,106,98,227,100,113,39,143,112,213,39,78,14,86,208,186,96,37,73,66,167,36,73,216,201,214,39,121,15,130, +96,175,47,103,223,46,212,216,234,186,102,19,46,78,78,89,150,100,34,129,246,230,190,87,234,53,238,52,20,238,134,98,72,39,138,170,170,216,155,28,31,31,192,135,97,184,163,23,199,218,251,208,77,142,143,189,207,57,230,140,49,16,4,129,168,78,18,49,135,54,156, +26,115,220,145,153,206,57,88,46,151,176,90,173,0,224,131,189,142,41,125,242,60,239,85,233,173,181,108,213,152,123,128,170,44,75,242,40,208,44,203,200,42,61,86,183,41,159,203,243,188,151,212,135,97,72,86,233,49,166,134,58,16,221,113,47,151,75,114,12,248, +244,52,117,83,149,231,57,217,21,225,58,53,117,93,179,29,136,60,207,159,187,134,49,102,255,93,181,25,122,192,168,170,42,200,243,188,231,175,105,154,146,182,192,39,241,199,250,128,115,142,236,212,96,87,140,234,116,113,62,176,88,44,216,206,216,98,177,24, +109,111,206,7,208,191,168,14,85,81,20,176,221,110,123,215,88,173,86,236,141,44,5,118,253,186,58,197,113,76,254,13,118,87,168,248,148,140,57,170,59,58,20,115,148,127,115,49,23,4,1,219,29,197,223,214,46,190,49,199,253,14,92,119,204,1,0,92,92,92,244,62, +139,157,177,177,91,48,30,124,28,13,43,41,237,139,251,156,117,205,125,14,95,159,42,103,236,251,135,62,219,30,231,92,116,234,234,118,172,156,182,173,37,116,146,248,238,164,237,45,49,182,174,143,31,43,7,127,152,37,117,58,133,95,222,132,127,75,249,128,175, +79,94,183,78,67,250,224,228,128,19,187,49,230,185,66,66,247,179,148,236,205,102,211,123,29,39,17,106,2,227,170,244,84,82,0,240,108,146,164,38,103,78,167,170,170,72,157,112,210,166,38,48,206,198,212,89,243,184,124,140,74,208,240,250,99,117,194,49,112, +85,122,234,53,74,14,38,133,148,189,241,26,93,184,27,67,107,45,251,93,112,178,41,157,112,25,161,175,15,80,4,65,192,218,219,199,7,48,225,225,124,128,98,187,221,246,94,179,214,238,237,52,214,7,202,178,36,117,149,138,57,188,33,230,124,128,91,202,39,17,115, +156,15,224,205,18,117,227,240,162,196,28,0,176,246,230,10,7,20,211,55,222,83,20,69,81,70,131,21,98,156,92,219,235,178,199,36,213,67,93,17,107,45,187,148,135,130,171,136,215,117,189,79,0,198,80,215,53,57,9,99,69,145,75,52,40,184,14,27,234,196,233,220, +133,155,8,163,40,98,147,27,31,157,0,62,176,147,132,189,49,249,157,226,3,88,133,243,209,233,208,216,198,218,155,243,1,92,207,62,213,7,156,115,98,62,208,238,68,78,141,57,231,156,136,15,180,59,145,99,116,186,238,152,51,198,136,198,28,142,111,138,78,0,31, +116,199,198,160,187,40,40,138,162,156,16,159,170,243,41,228,77,69,66,31,223,170,250,77,112,29,186,76,149,121,76,39,227,186,145,250,238,230,56,182,235,224,92,199,39,21,191,62,50,52,193,85,20,69,81,20,69,81,206,10,175,37,10,212,182,61,199,48,244,224,148, +47,146,58,213,117,61,43,157,198,182,7,15,209,52,244,83,225,199,128,114,36,238,198,231,230,3,216,246,144,24,155,148,189,165,108,196,173,127,58,6,201,152,147,186,171,159,99,204,73,201,82,20,69,81,252,241,78,112,37,240,89,36,124,8,106,49,250,49,72,78,70, +220,34,107,95,164,116,170,235,90,204,78,212,98,244,99,24,187,166,103,12,115,179,119,211,52,98,246,214,152,27,199,220,124,0,99,238,69,109,55,190,168,122,43,202,41,56,215,120,145,26,215,169,236,163,15,153,41,138,162,156,16,172,62,79,157,4,164,171,244,18, +55,68,82,93,17,0,16,239,66,77,69,210,222,220,83,248,167,212,105,187,221,138,232,36,85,204,192,221,10,36,59,62,115,139,57,169,78,164,212,30,220,115,235,140,113,91,78,114,104,130,171,40,138,114,66,180,74,127,24,201,174,136,228,100,43,213,209,154,99,103, +108,110,246,198,4,87,2,141,185,195,204,57,230,198,38,239,250,144,153,162,40,138,162,40,138,114,86,120,37,184,120,156,237,84,140,49,228,169,25,199,96,173,21,211,73,66,14,0,136,141,109,142,58,169,189,199,49,55,157,52,230,198,49,71,157,20,69,81,20,127,188, +126,129,23,139,5,68,81,52,121,2,192,35,230,168,227,1,125,89,46,151,228,145,116,190,68,81,4,105,154,138,76,74,171,213,74,68,167,52,77,247,39,1,77,1,143,6,149,176,247,98,177,128,32,8,196,124,96,78,246,142,227,24,146,36,153,172,19,30,235,40,97,239,44,203, +196,98,142,59,146,211,23,141,185,195,224,81,170,82,201,178,162,40,138,226,135,150,24,20,69,81,78,8,158,29,63,21,60,90,83,66,150,148,28,60,94,85,2,201,177,73,232,116,238,246,150,40,100,0,200,233,36,109,239,57,234,52,39,123,3,204,79,39,180,247,232,235, +78,190,162,162,40,138,114,52,105,154,66,100,200,205,206,0,0,32,0,73,68,65,84,24,134,34,85,250,52,77,69,38,36,201,42,125,28,199,147,39,55,99,12,44,22,11,145,73,50,73,18,17,123,59,231,196,186,80,216,25,155,10,250,128,132,78,82,93,168,56,142,69,186,80,146, +62,144,166,169,88,39,82,202,222,82,62,16,69,145,72,39,210,24,35,230,3,82,191,113,206,57,175,223,56,77,112,21,69,81,20,69,81,148,179,66,19,92,69,81,20,69,81,20,229,172,24,172,135,27,99,32,8,130,125,217,220,90,11,65,16,144,27,255,214,117,221,219,15,14, +255,190,119,209,32,0,231,28,4,65,208,43,163,55,77,67,110,82,204,181,19,80,39,138,99,117,234,94,155,211,41,12,67,242,186,206,57,118,237,74,85,85,61,251,89,107,201,54,0,218,154,218,103,143,123,157,210,9,215,191,112,246,198,99,138,187,99,160,90,28,214,90, +118,220,62,246,14,195,208,219,222,156,15,160,28,9,123,27,99,200,107,251,248,0,174,19,162,236,205,233,196,217,27,245,28,27,115,156,78,40,95,99,238,131,49,80,62,128,118,162,54,129,63,38,230,36,218,123,138,162,40,138,63,7,19,92,92,207,209,52,13,132,97,184, +255,225,238,254,248,23,69,65,254,248,199,113,220,123,13,39,200,56,142,123,19,15,78,106,93,89,237,68,187,251,122,93,215,228,68,66,157,198,99,173,37,117,194,137,63,142,227,222,216,202,178,36,39,60,180,71,23,231,28,57,182,166,105,200,147,65,240,243,220, +216,140,49,164,189,41,157,124,237,141,39,177,116,95,15,130,128,156,184,219,55,59,93,40,123,27,99,72,157,48,33,161,236,205,249,0,38,197,148,172,40,138,70,219,155,243,129,246,120,199,250,0,181,182,12,19,58,206,222,237,127,187,99,232,130,126,57,54,230,56, +123,31,138,57,28,99,247,218,31,198,152,107,154,70,44,230,52,193,85,20,69,57,13,131,9,46,158,100,177,217,108,246,63,250,69,81,144,167,82,80,21,166,166,105,200,51,226,241,71,127,179,217,144,19,18,117,74,197,110,183,35,175,235,156,131,237,118,219,155,84, +57,57,117,93,147,58,69,81,180,151,69,85,147,168,241,109,183,91,178,98,20,4,129,215,216,112,50,167,224,142,2,228,100,81,99,195,132,192,71,167,162,40,200,83,113,172,181,144,231,57,249,30,87,101,164,116,10,130,0,162,40,34,143,131,228,116,202,243,92,196, +222,85,85,145,58,225,205,4,117,82,10,231,3,155,205,134,76,112,173,181,222,246,166,110,16,141,49,80,150,37,121,242,14,37,71,99,110,90,204,225,231,37,98,142,139,33,99,12,132,97,8,81,20,65,211,52,251,155,8,42,169,174,235,186,39,3,255,190,11,222,0,114,55, +123,84,37,155,123,240,195,57,199,190,71,157,222,196,85,245,81,6,245,125,54,77,3,101,89,146,55,141,93,240,166,49,138,34,210,239,168,234,58,222,68,83,99,195,113,141,177,55,167,19,202,167,110,188,143,177,119,20,69,228,141,44,165,19,103,111,148,193,249,0, +101,239,67,62,192,117,161,198,218,59,12,195,125,236,80,49,53,214,7,176,35,194,249,0,101,111,174,139,134,114,164,98,78,194,7,176,168,68,189,231,227,3,40,99,170,15,96,39,146,242,129,99,98,14,101,76,137,57,44,26,140,45,28,28,76,112,113,16,109,7,245,57,195, +153,154,180,177,5,200,181,252,40,184,4,16,117,26,43,135,251,44,38,55,84,187,254,148,58,181,237,63,134,161,107,74,217,27,245,146,240,1,234,7,224,24,157,230,228,3,56,73,249,216,251,144,15,72,216,219,87,167,23,197,222,146,58,117,127,243,198,192,93,147,75, +210,49,89,195,137,191,189,132,168,11,117,131,193,77,182,248,195,79,45,249,224,226,140,155,44,80,159,238,164,199,217,153,91,186,132,135,130,80,58,149,101,73,38,24,212,117,241,166,145,74,88,184,243,233,57,157,48,193,229,110,52,187,239,113,246,198,132,43, +12,67,178,43,194,253,54,80,223,243,208,114,22,234,230,246,144,78,156,15,112,75,145,184,229,104,220,146,38,202,7,134,116,2,248,32,209,109,195,29,45,204,45,253,26,242,1,42,222,134,124,160,125,115,217,134,59,86,246,148,49,231,243,59,112,108,204,249,248, +0,38,165,99,127,7,156,115,80,215,53,107,111,74,167,33,123,143,221,33,98,250,158,20,138,162,40,202,104,154,166,129,60,207,247,157,49,231,220,190,90,78,85,184,186,112,21,113,76,32,168,174,8,254,93,23,42,121,66,89,155,205,134,189,9,232,194,117,69,112,139, +176,60,207,71,87,215,183,219,109,239,53,172,38,81,157,3,78,39,106,2,70,89,85,85,141,174,210,15,117,69,140,49,94,58,13,117,69,176,51,54,198,7,56,123,71,81,4,65,16,120,249,64,158,231,189,215,80,150,207,216,56,157,240,243,92,103,204,167,43,98,173,245,210, +105,168,19,137,221,232,49,246,230,124,0,151,125,113,246,230,124,128,2,191,55,74,95,159,223,129,99,98,142,242,1,76,160,79,17,115,0,180,15,4,65,192,126,167,20,154,224,42,138,162,220,32,221,46,200,49,85,122,46,121,105,203,59,86,14,234,56,244,62,245,121, +46,49,104,143,239,88,157,218,203,28,36,117,154,98,239,118,87,100,170,78,120,141,177,29,8,78,39,105,31,224,186,16,67,159,31,210,105,138,189,219,239,205,197,7,186,157,237,99,229,180,101,73,140,77,194,7,48,230,164,116,146,182,247,24,116,155,48,69,81,20, +69,81,20,229,172,240,170,224,250,172,151,28,2,215,239,140,205,194,15,233,36,33,7,215,3,206,73,39,41,57,0,64,182,190,142,1,43,12,82,54,151,96,110,62,224,179,22,244,16,146,49,39,233,3,146,246,150,96,110,49,135,246,86,20,69,81,78,131,87,130,139,235,39,166, +78,0,237,135,214,166,146,231,185,72,50,129,137,132,132,78,220,122,28,95,48,33,153,170,83,93,211,59,49,28,3,181,142,234,24,230,106,111,128,233,201,59,174,55,147,208,9,215,136,157,115,204,73,216,105,110,49,215,52,13,187,214,78,81,20,69,185,126,188,43,184, +18,72,86,184,164,170,36,82,213,68,0,57,157,36,237,61,55,157,230,104,239,57,234,164,49,55,142,185,218,123,76,162,60,199,170,241,208,214,133,62,84,85,69,110,125,117,172,44,9,230,216,21,145,146,35,29,231,115,250,222,0,100,117,146,140,57,201,162,143,132, +28,169,98,134,164,127,75,198,220,88,244,33,51,69,81,148,19,130,7,81,72,84,233,231,86,17,231,182,166,242,165,105,248,221,33,124,193,202,250,220,58,99,82,29,8,169,68,137,218,87,250,88,157,0,100,236,45,213,65,148,140,57,159,135,176,134,56,231,152,195,157, +67,36,124,128,218,249,130,67,19,92,69,81,148,19,34,89,53,150,90,179,63,199,78,205,220,116,146,94,107,47,129,250,192,205,202,153,163,15,204,209,222,167,138,57,221,69,65,81,20,69,81,20,69,57,43,188,18,220,36,73,216,163,228,124,8,130,0,210,52,29,125,26, +197,16,89,150,145,167,99,248,18,134,33,196,113,44,242,84,247,98,177,16,57,131,62,142,99,17,123,91,107,33,203,50,17,123,167,105,74,158,48,226,75,24,134,144,36,137,136,78,82,246,142,162,104,127,124,227,20,140,49,176,88,44,68,198,38,21,115,206,185,179,142, +185,229,114,41,22,115,18,62,96,173,133,52,77,197,118,137,80,20,69,81,252,240,154,237,184,227,220,124,193,83,105,36,126,252,169,163,237,142,1,143,56,156,147,78,62,103,46,15,129,199,246,73,141,13,101,78,69,98,108,0,243,243,1,73,255,246,57,150,112,8,238, +24,200,99,152,155,189,1,96,118,246,198,152,83,20,69,81,78,131,46,81,80,20,69,57,33,89,150,137,84,233,195,48,20,235,212,172,86,43,145,4,61,138,34,72,146,68,228,166,81,170,74,159,166,169,72,149,222,57,39,214,169,89,44,22,98,157,49,169,78,205,106,181,18, +235,138,72,116,106,172,181,98,62,48,199,152,91,46,151,179,139,57,41,31,72,146,68,44,230,178,44,27,45,71,19,92,69,81,148,19,98,173,21,91,202,32,49,209,162,28,169,42,189,49,70,76,150,4,82,99,51,198,136,201,146,234,102,161,78,18,72,117,69,206,217,191,37, +101,73,202,153,155,78,82,190,228,235,223,154,224,42,138,162,40,138,162,40,103,133,38,184,138,162,40,138,162,40,202,89,49,184,224,195,57,7,203,229,18,46,46,46,160,105,154,253,83,230,73,146,244,246,218,43,138,2,54,155,205,115,175,225,154,25,74,110,16,4, +224,156,235,201,169,235,26,182,219,109,239,180,10,238,201,237,36,73,192,57,71,238,141,150,231,57,228,121,254,252,128,131,0,178,44,235,125,22,31,160,11,195,176,167,83,89,150,228,241,164,171,213,138,44,187,227,250,23,106,239,183,237,118,219,59,194,19,109, +218,37,138,34,104,154,6,226,56,38,237,189,221,110,123,175,95,92,92,244,228,224,184,172,181,61,157,112,243,108,220,136,25,225,118,75,136,227,24,130,32,32,55,201,222,237,118,176,221,110,159,123,13,215,169,117,193,7,232,130,32,232,201,169,170,10,242,60, +239,249,0,183,91,130,175,189,113,157,90,23,28,47,218,189,77,89,150,228,166,215,148,189,141,49,16,199,49,105,111,220,60,187,107,111,92,167,214,37,138,34,168,235,122,116,204,225,186,169,46,237,152,163,124,96,110,49,87,85,21,108,183,219,27,143,57,244,1, +137,152,227,190,83,69,81,20,229,250,25,76,112,113,226,91,175,215,251,215,202,178,236,77,206,248,89,234,181,238,4,12,240,108,178,141,162,136,156,44,184,141,124,169,36,12,224,217,68,66,77,132,0,244,38,197,85,85,145,58,69,81,180,151,69,141,131,26,223,102, +179,33,39,91,231,28,121,10,12,119,226,73,89,150,164,78,248,121,234,76,123,238,20,22,74,14,30,149,185,217,108,70,219,123,183,219,145,71,226,25,99,216,247,124,124,32,8,2,8,195,208,219,7,36,236,205,249,0,126,182,155,160,225,123,148,189,215,235,53,169,147, +49,198,75,167,162,40,216,205,176,125,98,14,191,231,46,115,140,185,48,12,193,57,119,150,49,135,15,69,81,246,83,20,69,81,174,159,193,4,23,207,253,197,243,136,227,56,134,170,170,188,206,39,230,126,224,113,82,29,123,42,5,247,217,186,174,161,170,170,209,19, +73,211,52,236,164,141,85,169,177,167,110,112,9,32,234,52,246,204,100,110,50,15,195,16,234,186,158,108,111,172,148,75,218,123,172,78,156,189,1,158,217,220,231,140,106,206,158,82,246,198,133,240,83,125,0,43,183,120,108,230,20,157,162,40,58,235,152,195, +235,204,197,7,164,99,142,243,179,139,139,11,184,125,251,246,190,51,134,191,173,93,242,60,39,59,99,92,213,216,57,199,118,161,168,42,61,247,228,118,28,199,100,181,31,59,16,221,155,192,48,12,201,78,13,202,166,42,217,216,129,160,186,34,212,131,36,168,19, +215,245,235,222,148,196,113,204,118,106,208,95,186,236,118,187,94,33,192,24,3,183,110,221,234,125,214,24,3,97,24,178,93,40,170,83,147,101,25,68,81,212,147,21,69,209,190,51,214,166,105,26,200,243,188,119,19,24,4,1,219,29,197,174,72,23,188,169,163,186, +34,84,103,12,119,62,160,236,77,117,106,162,40,98,59,53,0,64,118,76,176,235,215,29,247,173,91,183,122,55,178,104,111,206,7,54,155,13,217,137,164,124,15,247,224,158,91,204,249,248,0,23,115,56,143,81,126,134,93,168,238,184,135,98,14,11,100,109,78,21,115, +214,90,72,146,100,116,103,236,100,27,53,74,29,39,56,55,206,117,92,109,62,12,99,84,148,235,162,174,107,184,186,186,130,167,79,159,66,211,52,144,101,25,20,69,225,85,165,127,250,244,105,239,245,32,8,32,138,34,182,83,227,83,17,199,247,184,27,156,46,101,89, +146,58,97,146,148,231,57,169,19,245,91,114,117,117,69,38,55,0,207,58,38,62,93,17,74,255,52,77,247,55,104,212,196,77,233,73,141,13,39,91,31,123,83,73,1,192,179,229,87,212,178,44,212,169,75,85,85,164,78,152,112,115,157,26,74,214,80,23,234,234,234,138,180, +55,245,189,21,69,65,234,132,203,171,118,187,29,105,111,74,167,171,171,43,82,159,44,203,188,58,53,92,23,10,99,142,186,145,229,58,145,47,74,204,97,55,154,139,57,206,222,47,66,204,225,146,199,177,197,21,221,137,92,81,20,229,6,193,74,58,78,174,88,217,168, +170,106,116,87,228,80,247,104,108,69,156,171,230,163,94,99,43,226,156,78,120,40,200,84,157,218,99,155,218,21,241,237,66,1,208,157,3,172,220,114,149,41,31,157,218,62,49,6,206,222,184,69,212,156,124,0,253,122,170,189,177,146,56,39,31,64,191,244,241,1,238, +115,40,71,34,230,240,58,83,99,206,215,7,110,194,222,92,114,77,161,187,40,40,138,162,40,138,162,40,103,133,87,130,203,181,38,142,229,92,91,221,82,118,146,180,247,220,228,72,50,71,157,36,153,155,47,73,49,199,223,146,57,234,164,40,138,162,248,227,181,68, +1,215,208,76,253,225,174,170,138,92,143,115,12,121,158,143,46,87,31,210,137,123,74,250,24,157,36,228,248,148,243,135,192,69,234,18,118,218,237,118,34,118,194,39,213,231,230,3,0,211,19,19,180,183,196,216,164,98,14,237,45,97,39,234,161,144,99,117,162,214, +100,29,131,148,15,72,197,28,183,19,131,162,40,138,114,51,120,37,184,82,91,222,72,254,248,83,91,58,29,195,216,53,38,99,144,210,105,142,246,150,146,227,179,142,234,16,115,179,55,38,184,18,156,179,15,156,115,204,113,15,213,112,159,157,91,5,90,178,11,37, +117,36,170,20,115,181,183,20,82,178,36,110,24,1,230,57,54,105,31,152,147,31,204,113,108,82,190,4,224,103,35,125,200,76,81,20,229,132,204,177,43,34,85,165,151,236,140,73,233,132,123,78,75,216,91,170,115,32,105,111,169,164,68,178,43,34,193,28,59,145,146, +221,232,185,197,92,211,52,228,110,28,199,128,157,49,169,223,184,177,104,130,171,40,138,114,66,164,170,198,146,93,145,185,85,233,177,34,46,129,100,87,68,170,50,53,71,31,152,91,119,244,220,125,96,110,49,7,32,167,147,164,189,125,150,181,233,46,10,138,162, +40,138,162,40,202,89,225,149,224,226,217,241,147,47,106,237,126,127,196,169,132,97,40,166,19,158,0,34,161,147,132,28,231,28,121,194,140,47,198,24,49,123,207,213,7,230,102,111,41,157,164,236,45,233,3,26,115,135,145,180,183,162,40,138,226,143,215,44,149, +36,137,200,68,226,156,131,36,73,68,38,201,52,77,69,38,36,60,186,79,98,66,202,178,76,68,167,56,142,69,236,109,173,133,44,203,68,237,45,225,3,115,179,119,24,134,251,83,96,166,96,140,129,52,77,69,236,45,229,3,65,16,136,233,164,49,119,24,107,45,121,100,165, +162,40,138,114,51,232,18,5,69,81,148,19,18,134,161,72,114,110,173,21,171,100,75,220,232,1,60,187,177,146,170,100,71,81,36,86,237,159,155,189,165,186,34,206,185,179,245,1,201,206,216,185,251,128,198,220,255,127,126,242,21,21,69,81,148,163,137,227,120, +118,93,17,169,42,125,16,4,34,9,128,49,70,172,235,23,69,145,72,2,96,173,157,93,39,210,57,39,150,148,72,117,253,194,48,220,31,31,59,5,233,206,152,100,204,205,201,7,176,19,41,17,115,82,58,73,198,92,28,199,227,63,63,233,106,138,162,40,138,162,40,138,50,51, +52,193,85,20,69,81,20,69,81,206,138,193,190,129,49,6,226,56,134,36,73,160,105,154,125,137,153,42,51,87,85,213,219,235,12,255,190,11,174,19,162,246,144,171,235,26,202,178,236,189,206,173,225,8,130,0,162,40,234,189,215,52,13,84,85,213,219,19,206,90,11, +81,20,245,228,96,73,159,218,140,24,229,116,95,231,218,129,168,83,183,45,195,233,132,107,148,186,132,97,184,63,9,104,172,78,73,146,244,228,224,211,234,113,28,147,246,166,246,78,28,178,55,182,119,186,80,62,192,217,27,199,76,109,72,205,249,0,183,38,12,117, +26,107,111,244,191,46,109,61,167,248,0,62,65,79,217,187,105,26,40,203,178,103,239,33,31,176,214,138,196,28,167,211,49,49,199,249,64,89,150,163,99,14,199,198,197,28,110,88,222,102,200,7,36,98,14,95,147,136,57,238,26,138,162,40,202,245,115,48,193,53,198, +236,39,161,246,127,119,225,54,151,166,62,139,19,54,37,139,59,218,145,187,110,91,191,174,28,106,3,102,78,206,144,172,186,174,201,9,239,144,78,93,184,13,161,135,228,180,237,62,70,214,144,189,185,113,251,124,119,40,71,202,7,184,239,142,98,200,78,156,47, +249,248,0,218,152,243,1,10,42,249,28,138,19,244,37,31,157,230,24,115,210,114,40,31,160,198,199,249,30,119,13,78,14,202,162,94,147,140,57,221,38,76,81,20,229,52,12,38,184,120,44,26,30,215,230,156,131,162,40,200,147,36,168,164,4,143,122,235,130,149,31, +234,216,61,238,56,183,162,40,200,19,58,194,48,132,60,207,201,247,40,57,85,85,145,58,97,21,216,71,39,238,148,143,40,138,32,207,115,114,98,165,228,80,21,61,128,103,147,54,119,252,38,167,19,103,111,107,45,169,19,151,76,114,58,5,65,0,121,158,147,39,147,80, +178,234,186,38,117,10,195,112,255,221,249,216,155,74,24,124,237,205,249,0,146,231,249,104,123,83,167,253,96,5,87,194,7,172,181,80,150,165,72,204,25,99,68,98,14,199,246,34,199,28,167,147,100,204,81,213,108,128,15,182,16,203,178,12,154,166,217,87,165,169, +106,47,254,222,118,117,164,182,32,195,42,125,154,166,100,245,25,143,168,109,195,85,226,195,48,220,111,11,217,6,59,16,93,157,176,67,212,5,247,113,166,110,98,56,191,78,211,148,140,243,48,12,33,77,83,182,3,209,181,53,254,198,116,65,191,163,198,77,217,27, +224,217,3,87,93,240,137,110,236,112,182,193,106,127,215,31,169,46,3,192,51,59,249,216,27,31,112,163,228,224,13,215,88,31,224,30,148,67,157,184,46,84,87,39,236,162,116,193,49,81,215,240,241,1,220,69,65,194,7,176,123,36,21,115,67,157,223,174,15,12,197, +92,211,52,98,49,71,21,229,208,70,99,125,0,253,91,194,222,92,204,113,62,64,197,28,118,95,199,118,198,14,126,10,151,17,224,23,136,85,177,177,71,165,81,85,15,231,220,115,178,198,192,77,46,190,114,56,157,218,114,198,202,226,62,119,29,99,155,98,111,252,161, +240,25,219,144,78,109,127,56,86,39,148,33,165,147,132,189,219,149,250,41,62,128,147,185,244,216,230,18,115,248,158,198,28,175,19,183,220,169,253,55,221,223,213,169,49,213,94,238,65,37,37,20,156,205,134,190,151,161,49,13,93,99,108,167,134,234,114,224, +127,75,141,13,255,149,250,142,167,234,116,232,189,177,58,181,199,118,93,58,29,242,235,33,157,198,250,0,245,217,161,223,85,95,157,218,127,115,157,49,55,52,135,114,58,93,119,204,141,213,73,210,191,15,249,0,55,31,119,225,150,180,113,232,2,49,69,81,148,27, +4,43,196,216,41,8,195,16,118,187,221,232,51,214,155,166,33,59,7,152,24,238,118,187,209,149,108,238,140,248,56,142,97,183,219,141,62,215,158,90,47,13,240,193,50,148,221,110,55,122,226,166,170,244,184,142,219,87,39,174,11,85,150,37,89,165,231,160,236,29, +4,1,56,231,188,236,205,85,245,219,99,27,163,83,93,215,164,78,232,79,84,87,132,211,137,235,138,36,73,34,98,111,76,74,124,124,128,26,27,86,75,37,236,61,215,152,227,58,99,20,67,49,103,173,157,28,115,198,24,177,152,115,206,65,85,85,147,99,142,123,54,131, +67,19,92,69,81,148,27,134,170,220,250,84,38,164,170,207,135,62,55,86,206,144,78,109,221,142,149,211,238,248,76,29,155,180,189,167,202,105,191,231,83,193,189,41,157,164,236,61,245,187,67,219,72,234,52,39,31,104,199,202,88,94,20,31,232,234,53,69,150,143, +12,221,38,76,81,20,69,81,20,69,57,43,188,42,184,212,226,228,99,192,5,202,62,119,42,67,58,73,200,105,223,29,78,69,74,39,159,82,252,16,77,211,140,110,197,28,2,199,54,85,86,211,52,163,219,30,99,117,154,74,85,85,228,194,124,95,112,108,82,246,150,138,57,105, +31,144,208,9,96,94,49,39,37,7,99,78,81,20,69,57,13,94,9,46,174,159,152,58,1,224,26,52,137,137,27,119,120,152,74,89,150,34,201,13,0,192,102,179,17,145,131,9,137,132,189,185,53,89,190,80,59,12,28,3,38,239,18,58,73,217,27,19,110,137,4,119,187,221,138,140, +77,210,7,52,230,198,233,36,105,111,9,157,20,69,81,20,127,188,18,92,137,201,17,192,111,13,197,33,206,89,39,41,57,146,178,206,217,222,146,201,136,218,251,48,115,212,233,20,49,135,85,122,137,27,43,169,170,49,181,157,212,49,72,117,69,0,100,171,244,115,235, +140,73,201,145,236,30,73,221,16,87,85,37,22,231,115,235,66,73,251,128,148,189,37,126,79,36,117,146,246,239,177,232,67,102,138,162,40,39,132,122,90,248,24,240,9,227,185,85,196,1,100,186,34,82,58,225,19,227,83,101,73,38,18,67,251,114,251,32,101,111,0,16, +237,66,1,76,215,169,174,107,177,238,17,198,220,84,89,184,207,173,148,189,207,53,230,164,124,160,170,42,175,46,178,38,184,138,162,40,39,68,170,186,37,217,129,80,157,110,86,214,220,228,0,204,179,51,54,71,59,205,77,167,115,30,155,175,44,221,69,65,81,20, +69,81,20,69,57,43,188,18,220,197,98,1,81,20,77,62,95,61,12,67,88,44,22,228,209,112,190,172,86,43,242,104,56,95,162,40,130,52,77,69,116,186,184,184,32,143,164,243,37,77,83,136,227,120,178,189,157,115,176,92,46,69,116,90,46,151,16,134,161,136,15,100,89, +38,102,239,177,71,247,13,145,36,9,36,73,50,121,108,214,90,49,31,200,178,76,36,230,130,32,208,152,27,129,116,204,77,149,163,40,138,162,28,135,215,204,130,167,210,72,32,37,107,110,250,72,202,146,212,73,34,137,0,144,179,183,164,44,105,157,230,148,148,72, +250,18,158,79,46,33,75,130,115,143,185,57,249,145,162,40,202,135,13,93,162,160,40,138,114,66,150,203,165,88,103,108,185,92,138,220,204,222,186,117,75,164,74,159,36,137,72,149,222,24,35,86,165,95,44,22,34,85,250,32,8,96,181,90,137,232,116,113,113,33,214, +21,145,234,212,220,190,125,91,164,51,150,166,233,236,58,99,210,49,55,39,31,72,146,68,164,59,106,140,129,91,183,110,137,248,128,100,204,249,116,198,52,193,85,20,69,81,20,69,81,206,10,77,112,21,69,81,20,69,81,148,179,226,96,237,153,90,147,198,149,135,169, +237,27,184,207,162,92,234,125,31,57,82,58,181,245,153,162,211,33,57,148,172,99,108,228,171,83,91,222,177,114,164,117,146,242,129,185,233,52,199,177,117,229,77,149,3,240,172,101,72,253,221,139,96,167,67,114,172,181,228,54,73,199,140,77,81,20,69,185,121, +6,19,92,231,28,44,22,11,88,173,86,208,52,13,196,113,12,81,20,145,27,27,23,69,1,155,205,230,185,215,172,181,176,92,46,73,185,65,16,128,115,174,55,137,224,102,206,221,211,42,210,52,37,215,130,36,73,2,206,57,168,170,170,247,94,158,231,189,77,212,131,32, +128,44,203,122,159,13,130,0,172,181,16,4,65,111,108,85,85,193,118,187,237,93,131,90,11,98,140,129,56,142,247,99,233,178,221,110,247,27,141,35,97,24,66,146,36,189,207,70,81,4,77,211,236,255,109,83,20,5,185,49,244,106,181,234,201,177,214,66,20,69,228,164, +141,199,248,118,79,64,74,146,132,92,15,20,199,241,254,123,235,94,123,183,219,245,54,44,71,31,234,226,156,219,255,143,178,119,158,231,61,31,224,214,150,13,217,155,242,129,48,12,33,77,211,222,103,113,188,97,24,246,116,42,203,146,220,248,156,178,55,250, +128,49,166,247,121,60,198,183,107,239,40,138,246,227,232,190,94,215,53,196,113,60,42,230,140,49,164,78,231,28,115,0,195,62,112,202,152,139,162,168,247,158,162,40,138,114,253,12,38,184,117,93,195,122,189,134,171,171,171,253,143,122,81,20,228,177,107,84, +101,163,174,107,184,186,186,234,95,52,8,32,142,99,216,108,54,228,132,196,77,82,92,165,4,39,194,49,58,85,85,69,234,20,199,49,88,107,33,207,115,50,41,161,100,173,215,107,82,31,107,45,172,215,107,50,1,160,198,86,20,5,251,217,186,174,201,227,242,56,157,168, +177,97,165,109,189,94,143,182,119,158,231,189,164,0,217,237,118,228,81,135,62,62,16,134,33,132,97,200,158,150,67,189,214,77,230,16,231,28,107,111,74,167,178,44,73,157,48,225,161,142,168,108,154,134,212,137,179,183,49,6,174,174,174,70,143,173,40,10,242, +8,66,60,154,112,108,204,53,77,243,194,196,92,20,69,16,4,1,233,3,62,49,7,48,236,3,190,49,215,52,13,235,3,62,49,183,92,46,201,163,115,241,55,2,111,238,172,181,207,253,119,247,154,148,254,212,67,45,109,57,221,239,13,117,239,202,231,118,214,192,234,51,117, +29,234,230,22,199,68,233,132,114,40,157,198,142,13,229,115,15,206,248,234,36,101,111,238,26,190,246,198,247,168,235,80,58,141,25,219,156,124,160,105,154,89,217,91,58,230,164,116,146,178,247,144,15,248,196,156,148,15,160,140,169,246,110,119,216,198,48, +152,224,226,133,113,34,195,132,203,231,104,58,106,18,193,74,34,202,26,3,119,170,10,234,53,246,124,226,166,105,200,107,226,107,120,252,226,24,56,221,125,199,198,233,132,114,124,206,205,230,174,217,254,46,199,48,100,111,159,35,65,185,177,97,0,206,201,222, +85,85,129,49,102,178,78,221,88,25,3,119,61,201,152,147,244,1,137,152,67,93,230,228,3,215,17,115,93,172,181,144,101,217,190,170,29,69,17,91,17,167,186,34,214,90,178,43,130,213,112,138,178,44,33,207,243,222,53,146,36,33,255,6,43,216,212,100,68,221,252, +6,65,64,118,69,80,54,53,89,21,69,65,22,20,178,44,35,19,0,78,39,174,11,197,85,233,195,48,132,32,8,200,14,213,110,183,235,29,5,106,140,33,237,109,140,97,159,122,231,186,80,113,28,179,157,49,110,89,12,213,21,225,124,192,57,199,38,80,156,15,164,105,74,126, +63,184,87,185,148,15,80,126,198,117,69,168,177,1,192,190,35,226,227,3,92,103,236,38,98,14,139,65,109,164,98,206,57,199,118,198,184,36,144,139,57,110,167,19,201,152,171,235,154,28,55,21,115,0,180,15,96,103,108,236,206,14,122,84,175,162,40,202,13,130,157, +177,245,122,189,255,81,151,232,138,12,85,233,185,234,51,87,165,183,214,194,102,179,25,93,17,231,186,34,184,84,199,167,43,114,168,51,230,211,21,161,244,207,178,108,176,43,66,189,70,141,13,171,81,62,246,30,234,140,81,9,49,202,234,194,249,192,49,93,145, +110,50,135,56,231,68,124,0,19,30,42,137,241,237,138,24,99,188,125,128,187,17,127,209,99,238,216,110,244,216,238,168,100,204,165,105,10,117,93,195,110,183,155,228,3,65,16,144,55,13,28,154,224,42,138,162,220,32,215,221,25,243,169,136,15,85,233,185,42,55, +247,121,110,98,150,232,138,224,122,118,201,42,253,84,123,27,99,196,186,34,248,158,68,23,202,90,43,210,21,241,29,219,144,189,241,189,41,246,70,159,156,91,103,76,178,91,39,21,115,168,239,212,152,147,250,29,240,237,252,114,58,181,59,145,99,208,109,194,20, +69,81,20,69,81,148,179,194,171,130,75,45,42,62,6,110,241,245,177,178,36,144,210,71,82,150,164,78,99,239,120,110,74,14,128,236,119,39,41,103,170,188,185,250,146,84,252,74,249,192,28,237,36,101,35,148,165,40,138,162,156,6,175,4,23,159,230,159,58,1,112, +107,49,142,129,218,74,232,24,176,156,47,161,19,247,164,186,47,184,70,76,194,222,212,122,156,99,216,237,118,94,109,6,14,252,206,230,100,111,9,63,66,184,221,33,124,153,99,204,81,15,170,28,131,100,204,73,217,219,231,225,178,33,208,222,138,162,40,202,105, +240,78,112,37,192,53,43,18,72,233,36,153,220,72,233,52,118,33,245,33,154,166,17,211,233,156,125,64,237,61,142,57,198,156,84,50,41,237,3,99,146,229,57,86,141,37,171,253,220,129,32,190,72,218,104,110,93,17,169,88,240,89,159,120,8,233,142,173,4,115,27,155, +164,172,185,117,216,80,214,156,198,230,235,223,250,144,153,162,40,202,9,193,29,6,36,186,34,82,201,132,100,103,76,66,78,211,52,162,93,17,169,206,152,84,87,4,59,99,83,145,244,1,201,78,36,128,204,210,47,201,78,228,220,98,78,106,108,190,15,115,113,204,57, +230,198,162,9,174,162,40,202,9,145,170,26,159,123,149,94,59,53,135,57,103,31,144,180,183,198,220,56,230,102,239,166,105,188,150,145,233,46,10,138,162,40,138,162,40,202,89,225,149,224,226,9,48,147,47,250,255,167,81,112,71,22,250,16,199,49,121,10,139,47, +120,178,141,148,78,99,143,146,27,2,237,61,85,39,73,123,227,9,48,83,113,206,205,210,222,18,58,25,99,196,125,96,42,26,115,227,152,99,204,41,138,162,40,254,120,205,8,56,177,77,253,209,118,206,65,20,69,34,19,146,212,196,38,153,112,37,73,50,171,228,198,24, +35,166,19,218,123,78,9,128,212,216,156,115,34,201,13,38,184,146,55,20,18,49,39,21,43,26,115,135,65,31,80,20,69,81,78,131,46,81,80,20,69,57,33,113,28,139,36,213,120,19,35,113,195,144,166,169,72,149,94,178,43,146,166,169,200,77,76,20,69,34,58,89,107,197, +110,246,146,36,17,235,138,72,21,14,164,236,45,233,3,146,133,26,141,185,97,230,28,115,99,229,104,130,171,40,138,114,66,194,48,20,235,138,72,85,196,165,58,108,82,93,17,0,16,27,27,218,123,42,210,75,191,164,116,154,219,178,159,32,8,68,18,55,99,140,152,189, +165,99,78,234,70,96,110,157,49,41,191,148,140,185,48,12,199,127,126,242,21,21,69,81,20,69,81,20,101,70,104,130,171,40,138,162,40,138,162,156,21,131,139,80,172,181,144,166,41,44,22,11,104,154,102,255,192,75,24,134,189,125,200,138,162,232,109,192,107,140, +129,44,203,122,114,219,109,171,238,30,114,85,85,65,81,20,189,189,220,184,53,51,81,20,61,247,111,155,221,110,215,219,199,205,57,7,73,146,244,62,27,4,1,88,107,201,83,119,170,170,218,111,12,221,134,91,159,18,69,17,185,63,30,238,227,215,213,41,12,67,82,255, +40,138,160,105,26,8,130,160,167,83,89,150,228,38,227,139,197,162,39,7,203,250,89,150,245,116,170,235,26,138,162,232,237,83,135,107,102,40,157,140,49,228,94,123,148,15,160,15,117,105,251,0,101,111,202,7,184,117,106,104,167,238,231,57,123,7,65,64,62,0, +132,227,117,206,141,182,119,150,101,189,86,16,182,210,168,83,87,56,123,115,62,128,126,47,17,115,56,62,74,39,106,163,121,141,185,233,49,231,211,78,83,20,69,81,228,24,76,112,49,105,192,141,117,131,32,128,186,174,201,141,118,185,141,119,185,13,126,173,181, +80,150,37,57,217,82,178,240,186,212,235,168,35,165,63,245,26,245,89,156,100,169,177,113,58,85,85,69,110,242,140,58,81,9,23,247,121,74,39,76,230,56,157,40,184,177,5,65,64,218,155,211,137,179,19,142,153,251,46,198,202,193,36,153,178,225,144,189,135,124, +131,178,183,143,15,28,107,111,42,193,29,242,1,31,157,52,230,158,231,69,138,57,201,227,64,21,69,81,20,63,14,38,184,88,37,106,154,6,194,48,220,87,67,198,252,112,55,77,67,30,171,134,231,147,83,85,58,252,187,46,220,164,29,199,49,236,118,187,209,39,101,112, +71,189,25,99,192,57,7,69,81,176,137,90,23,238,148,143,178,44,201,42,29,39,135,155,180,49,185,225,142,131,164,94,163,198,134,213,59,105,123,79,241,1,236,8,80,85,58,95,157,176,226,59,213,222,248,208,193,84,31,176,214,238,43,144,99,237,205,29,105,26,134, +33,91,57,164,248,176,198,156,148,15,96,245,94,34,230,184,239,212,57,7,139,197,2,86,171,213,62,14,130,32,32,63,187,219,237,32,207,243,231,94,179,214,178,85,99,172,138,115,213,231,238,53,210,52,101,171,244,77,211,244,42,239,104,155,238,152,131,32,32,59, +53,216,165,25,234,64,116,191,135,197,98,65,86,233,177,235,66,221,120,80,157,131,40,138,200,78,77,20,69,80,85,21,219,129,232,126,247,198,24,88,46,151,189,207,182,31,122,226,58,16,93,127,76,146,100,176,51,70,249,100,158,231,61,123,59,231,216,78,141,181, +118,176,11,213,245,129,44,203,216,206,88,150,101,228,141,117,158,231,100,87,132,234,212,224,119,143,62,213,166,40,10,200,243,188,247,250,106,181,234,201,65,123,163,14,109,56,31,136,227,152,237,212,92,119,204,85,85,5,121,158,143,142,57,244,85,169,152, +227,186,80,212,145,192,92,204,225,119,54,214,222,67,62,16,69,209,232,152,3,160,125,0,31,236,28,219,25,59,184,79,6,14,174,125,113,159,51,133,185,207,81,114,143,145,51,246,253,67,159,109,235,35,161,147,239,185,203,215,169,19,190,38,253,189,77,213,73,202, +222,190,114,134,116,106,203,155,34,231,58,198,118,211,126,249,34,197,156,148,15,28,35,235,144,47,117,193,201,1,39,118,172,172,83,201,59,151,248,119,39,96,0,216,79,154,84,210,200,141,135,234,124,0,0,123,67,220,52,124,69,156,210,9,224,89,98,66,37,49,156, +78,187,221,142,236,138,132,97,200,142,141,210,9,19,12,74,31,238,166,139,170,186,115,246,198,100,210,71,39,170,131,130,178,184,27,52,31,123,135,97,8,206,57,214,222,148,44,238,186,81,20,137,248,0,222,0,80,73,12,215,21,217,110,183,61,31,192,196,157,179, +55,229,199,156,15,204,49,230,130,32,16,177,55,254,166,76,141,57,0,240,142,185,33,31,240,137,57,0,96,237,205,21,39,40,166,111,4,167,40,138,162,140,166,105,154,253,228,218,52,13,196,113,76,174,19,198,207,82,175,113,159,197,42,61,53,33,81,20,69,65,78,108, +184,4,101,108,69,28,215,150,119,193,53,214,84,215,143,211,105,104,73,19,151,28,80,178,184,137,48,12,195,231,150,222,141,209,137,179,55,38,37,99,237,77,45,105,2,224,215,230,115,178,56,31,64,217,220,114,52,78,39,10,238,89,8,78,214,80,39,18,245,157,226, +3,88,189,243,241,1,206,222,113,28,179,9,238,169,98,14,151,77,105,204,61,131,179,55,46,71,27,131,38,184,138,162,40,55,12,87,189,158,75,247,200,87,159,161,207,14,85,179,125,229,204,177,74,63,116,29,31,157,36,228,72,117,161,164,117,146,238,138,72,233,196, +189,63,86,142,207,251,99,116,146,144,115,140,78,215,61,54,124,93,194,47,125,116,209,109,194,20,69,81,20,69,81,148,179,194,171,130,203,61,12,226,11,150,214,125,50,113,14,238,33,165,99,116,242,189,51,188,110,157,198,62,200,117,8,110,253,211,49,160,156, +169,178,184,150,213,177,58,73,216,27,219,108,83,145,179,0,0,32,0,73,68,65,84,30,115,26,155,148,156,161,135,21,125,57,231,152,227,30,98,243,133,107,105,42,138,162,40,55,131,87,130,203,61,68,224,11,247,116,241,49,80,11,169,143,65,114,50,218,110,183,98, +147,182,4,184,240,91,66,39,41,31,24,251,4,254,24,164,236,45,153,220,204,205,7,52,230,198,33,165,147,100,204,41,138,162,40,254,188,240,107,112,231,56,129,168,78,55,203,28,199,54,71,157,164,152,227,216,94,100,157,176,51,54,117,12,146,85,122,106,43,161, +99,144,234,138,0,128,216,216,230,216,21,145,178,183,100,119,84,74,39,169,98,134,116,39,82,50,230,36,236,36,217,137,228,246,140,247,69,202,7,36,139,117,62,69,136,23,62,193,85,20,69,121,145,153,99,103,108,187,221,138,200,145,238,138,72,32,221,25,147,96, +142,157,177,205,102,35,34,231,156,125,64,99,110,28,167,234,140,233,67,102,138,162,40,138,162,40,202,89,225,149,224,82,123,183,29,139,148,44,73,57,170,211,205,201,145,148,165,246,190,89,89,231,172,211,28,125,64,81,20,69,241,199,43,193,93,44,22,16,199, +241,228,31,238,48,12,97,177,88,144,199,3,250,178,90,173,70,31,219,54,68,20,69,144,166,41,121,92,157,47,23,23,23,228,81,124,190,164,105,42,98,111,231,28,172,86,43,17,123,47,151,75,8,195,80,196,7,178,44,155,149,189,227,56,134,36,73,38,235,100,173,21,179, +119,150,101,98,49,183,92,46,103,21,115,113,28,159,117,204,45,151,75,77,114,21,69,81,78,132,46,81,80,20,69,57,33,214,90,145,68,216,24,35,114,179,0,240,44,65,63,87,157,230,104,239,57,234,36,105,239,57,234,116,174,246,158,163,78,167,178,183,38,184,138,162, +40,39,36,203,50,145,174,72,16,4,98,93,145,229,114,41,214,21,137,227,120,178,78,198,24,88,44,22,34,99,75,211,20,162,40,18,169,210,75,117,34,165,236,29,134,161,88,87,68,170,11,21,199,177,136,189,173,181,98,62,32,29,115,18,118,90,44,22,179,234,68,26,99, +196,186,126,146,49,151,101,217,104,57,154,224,42,138,162,40,138,162,40,103,133,38,184,138,162,40,138,162,40,202,89,49,88,15,55,198,64,16,4,251,178,185,181,22,156,115,100,25,189,174,107,114,63,56,234,97,20,231,220,94,86,183,140,222,52,13,185,73,49,245, +217,182,78,93,154,166,129,186,174,123,155,20,227,152,40,157,218,255,235,142,141,218,20,58,8,2,178,84,142,58,117,223,227,116,226,198,128,50,166,218,27,159,12,151,178,55,215,70,161,116,226,244,15,130,96,239,75,221,107,159,202,222,168,167,164,15,80,246, +246,245,129,166,105,68,98,78,210,7,52,230,62,96,40,230,164,214,194,41,138,162,40,126,28,76,112,241,73,231,166,105,32,12,67,118,98,216,237,118,100,114,147,36,73,239,179,237,36,169,59,129,85,85,5,187,221,174,183,97,117,20,69,228,164,19,134,225,126,18,107, +131,167,158,116,55,116,118,206,145,58,225,100,110,140,233,233,84,150,37,185,185,48,183,182,44,8,2,136,227,152,76,220,168,211,74,56,157,112,108,212,53,184,211,143,40,57,198,152,189,172,177,246,14,130,0,162,40,34,117,194,247,187,72,249,64,89,150,164,172, +40,138,216,196,148,178,119,211,52,228,73,44,156,189,219,55,114,93,89,69,81,144,167,232,36,73,210,75,170,208,222,73,146,140,246,1,28,67,23,169,152,51,198,236,191,207,177,62,16,134,33,153,188,249,198,156,181,246,218,99,46,12,67,209,152,195,27,139,54,199, +196,156,196,154,58,69,81,20,197,159,193,95,223,166,105,96,179,217,192,122,189,222,255,168,151,101,73,30,5,72,157,44,209,52,13,172,215,235,222,235,56,185,108,54,27,114,146,164,100,229,121,78,158,62,98,173,133,205,102,67,86,86,168,35,230,170,170,34,117, +194,228,137,58,211,158,154,204,1,158,157,244,66,85,147,156,115,94,99,43,203,146,212,41,77,83,246,56,72,78,22,37,7,19,2,31,157,138,162,32,79,197,49,198,192,110,183,35,79,38,161,228,212,117,77,234,20,134,33,212,117,13,219,237,118,180,78,219,237,214,203, +222,120,253,46,156,189,113,123,40,42,177,26,242,129,46,88,189,243,181,55,119,34,142,84,204,161,190,99,117,226,190,103,107,45,108,183,91,210,63,184,239,96,40,230,168,155,144,83,197,28,222,148,72,196,220,80,12,225,205,3,38,211,120,35,65,93,179,43,131,171, +48,135,97,184,151,197,249,125,87,62,183,221,27,215,169,3,160,43,217,67,93,17,107,45,89,69,231,58,7,92,69,28,199,70,221,224,84,85,69,222,196,80,159,197,42,61,245,125,82,246,230,116,106,119,161,198,234,52,212,129,192,135,158,168,155,180,177,157,49,73,31, +192,34,4,165,175,175,15,224,223,80,246,30,235,3,40,95,202,7,36,99,206,199,7,110,42,230,40,31,56,38,230,56,31,56,101,204,141,125,240,237,96,130,139,134,69,197,218,255,61,6,106,210,110,255,224,141,61,230,142,59,15,25,245,26,43,135,251,108,93,215,96,140, +33,127,136,79,169,147,132,189,219,242,36,236,141,142,61,213,7,156,115,100,144,28,163,211,169,124,128,27,91,59,86,166,234,36,21,115,190,58,13,217,91,106,108,198,152,89,249,128,212,111,92,91,86,23,76,28,162,40,122,110,249,9,149,220,80,55,24,237,106,124, +27,252,225,143,162,168,119,93,180,113,87,87,110,178,192,9,146,154,172,168,206,129,181,150,212,9,39,71,76,230,219,148,101,73,254,142,80,79,183,183,19,220,174,190,248,247,212,50,20,78,167,170,170,246,246,239,234,212,253,238,143,177,55,142,139,74,0,184, +229,58,152,152,80,62,224,99,111,236,62,80,62,64,249,53,151,156,225,216,186,215,110,154,134,212,9,63,79,233,212,52,205,160,189,187,80,114,218,9,46,181,164,137,179,55,183,100,11,224,122,99,142,155,71,184,152,27,74,222,165,98,142,155,187,135,98,142,243, +1,28,227,24,157,218,137,239,152,152,3,160,125,0,109,55,118,233,151,246,207,20,69,81,110,16,60,79,125,179,217,236,43,184,88,45,31,83,165,175,235,154,236,28,224,132,182,221,110,217,228,189,11,213,21,67,89,92,149,158,146,83,85,21,169,83,211,52,251,174,200, +216,14,203,118,187,237,189,134,147,173,207,216,184,228,9,111,170,198,86,233,177,147,217,5,147,20,95,123,83,9,20,118,50,168,10,171,143,15,224,82,62,170,51,134,127,215,37,207,243,222,107,40,139,235,142,250,216,27,63,79,45,21,226,100,113,246,54,198,120, +217,155,235,162,72,197,28,46,45,147,136,57,252,222,166,198,92,93,215,96,173,21,137,185,32,8,68,124,192,55,230,0,104,31,8,130,128,253,78,41,52,193,85,20,69,185,65,176,210,212,174,58,113,15,213,113,112,19,87,187,195,114,172,28,212,145,171,64,15,125,158, +146,47,209,25,195,74,155,143,28,78,167,174,253,143,213,169,221,21,153,170,19,94,195,167,3,193,217,219,87,167,155,240,1,174,53,238,171,19,190,39,161,147,132,15,180,109,52,23,123,75,233,212,94,82,48,151,152,67,249,99,101,232,35,190,138,162,40,138,162,40, +202,89,225,85,193,245,169,12,12,129,217,252,216,44,252,144,78,18,114,176,210,32,129,164,78,18,246,6,144,211,9,43,12,82,227,147,64,218,7,166,202,242,185,227,29,163,147,84,204,73,250,192,220,98,110,110,191,39,62,235,129,21,69,81,20,121,188,18,92,92,63, +49,117,2,224,214,98,28,67,158,231,34,19,137,239,131,83,135,116,146,72,74,112,125,208,84,157,112,205,159,196,216,184,117,84,190,204,209,222,82,201,59,174,131,148,208,73,99,110,28,82,246,198,53,144,18,62,192,173,109,84,20,69,81,174,31,239,10,174,4,77,67, +111,11,113,12,82,114,164,42,110,0,244,83,152,199,160,246,30,199,220,236,13,32,103,39,245,129,113,204,205,7,124,42,230,115,172,26,227,14,7,83,145,234,138,0,200,125,55,146,157,72,169,239,142,122,184,108,138,78,18,72,233,36,117,19,11,32,167,147,116,204, +205,73,167,246,174,87,83,145,180,183,100,204,141,69,31,50,83,20,69,57,33,146,85,122,169,137,77,170,43,130,55,67,82,21,241,115,237,140,73,118,161,164,150,53,73,117,69,240,230,83,202,7,164,58,145,115,140,57,169,206,152,68,178,60,215,152,243,233,68,106, +130,171,40,138,114,66,164,171,198,18,204,177,74,63,199,174,136,100,85,89,130,57,218,91,74,167,57,218,91,99,110,28,167,178,183,238,162,160,40,138,162,40,138,162,156,21,94,9,110,28,199,228,137,23,190,224,81,189,99,79,163,24,34,203,178,209,199,182,13,17, +134,33,68,81,36,242,84,119,150,101,34,99,139,162,72,196,222,214,90,72,211,84,68,167,36,73,216,227,4,125,192,13,178,207,209,7,140,49,98,62,48,199,152,75,211,84,196,7,194,48,220,31,143,60,149,197,98,49,187,152,75,146,68,108,151,8,69,81,20,197,15,175,25, +129,59,70,206,251,162,3,103,92,251,194,29,51,120,74,157,164,236,132,199,46,78,5,143,237,147,26,155,49,70,36,9,148,72,146,218,58,77,5,143,1,148,26,219,220,252,91,218,7,36,116,146,176,55,128,156,157,164,99,78,81,20,69,57,13,186,68,65,81,20,229,132,164, +105,42,114,211,16,134,161,88,167,102,185,92,138,220,128,70,81,36,82,165,55,198,192,114,185,20,185,249,72,146,68,172,43,34,213,169,201,178,76,228,134,40,12,67,177,78,205,106,181,18,177,119,28,199,34,157,49,107,173,88,167,70,42,230,130,32,208,152,27,65, +146,36,34,62,224,156,131,52,77,71,203,209,4,87,81,20,229,132,72,85,177,81,150,148,28,169,42,189,181,86,76,150,4,206,57,17,89,198,24,209,14,132,4,168,147,4,210,62,32,129,148,78,82,114,36,125,64,50,78,230,102,39,105,123,143,69,19,92,69,81,20,69,81,20,229, +172,208,4,87,81,20,69,81,20,69,57,43,6,251,34,206,57,88,46,151,176,90,173,0,224,131,39,140,227,56,238,125,118,183,219,193,118,187,125,238,53,99,204,254,111,219,224,3,93,206,185,222,134,189,85,85,65,158,231,189,253,215,178,44,35,219,56,184,222,136,218, +251,45,207,243,222,113,153,65,16,64,150,101,189,207,226,67,65,212,53,202,178,36,55,97,94,46,151,100,235,5,237,211,29,27,30,225,218,61,117,41,138,34,72,146,164,39,39,12,67,104,154,6,162,40,234,189,87,20,5,108,183,219,222,53,46,46,46,122,159,53,198,236, +215,191,116,63,143,155,149,119,117,194,53,51,212,216,130,32,32,247,162,163,124,192,57,7,139,197,162,247,89,124,160,43,8,2,210,7,182,219,109,239,26,139,197,130,108,79,12,217,59,207,115,216,237,118,207,189,142,107,21,187,160,15,80,107,225,138,162,32,55, +189,94,173,86,100,235,5,159,160,31,107,239,56,142,201,184,138,162,8,170,170,18,139,57,107,237,232,152,195,117,106,93,112,247,139,169,49,135,173,226,83,196,28,231,3,210,49,71,125,111,138,162,40,202,245,51,152,224,214,117,13,219,237,22,54,155,205,254,53, +60,211,158,250,44,69,251,111,247,23,253,255,164,134,58,41,133,219,200,119,183,219,145,199,113,90,107,201,201,153,211,169,170,42,82,167,40,138,192,57,71,78,96,77,211,176,147,57,5,202,225,174,223,165,44,75,82,39,60,249,131,186,14,119,252,33,37,7,215,246, +112,246,166,244,44,138,130,212,213,24,3,69,81,144,223,5,37,167,174,107,82,167,48,12,33,8,2,111,123,83,201,100,16,4,236,41,48,220,107,148,78,184,48,159,58,45,135,59,133,165,155,96,2,124,176,78,200,215,7,184,24,242,137,185,166,105,200,177,57,231,32,142, +99,175,152,43,138,130,140,171,57,198,28,250,210,88,123,115,58,225,247,76,157,150,227,27,115,101,89,138,109,148,174,40,138,162,248,49,152,224,226,249,245,120,30,113,28,199,207,253,247,33,154,166,97,207,136,15,130,0,202,178,28,125,42,5,55,81,212,117,13, +101,89,142,62,139,158,211,9,43,91,62,103,176,83,114,140,49,80,215,53,84,85,53,122,114,227,142,86,12,195,112,47,107,138,78,65,16,236,237,52,214,222,120,220,31,165,171,132,15,24,99,192,90,203,94,135,130,179,39,218,122,170,189,177,146,56,213,7,218,227,26, +171,19,103,7,223,152,227,116,2,0,111,31,56,20,115,83,125,64,42,230,0,192,219,222,135,98,110,170,78,206,185,125,236,82,239,173,86,43,184,117,235,214,190,90,140,149,250,46,187,221,174,151,64,91,107,201,42,253,152,174,72,215,62,220,83,210,92,103,12,111, +184,187,55,26,97,24,14,118,198,226,56,238,233,132,55,246,221,107,92,92,92,244,110,100,81,6,218,181,171,211,118,187,237,221,4,198,113,76,118,198,162,40,218,127,55,93,157,176,43,210,126,221,24,67,86,233,113,235,61,170,19,137,197,161,174,111,112,187,37, +12,117,198,242,60,239,221,72,7,65,48,216,25,195,78,68,155,178,44,201,206,216,106,181,98,187,34,56,159,181,225,236,29,69,209,96,87,36,73,146,158,78,216,21,233,94,227,214,173,91,61,57,216,21,161,124,128,179,119,146,36,108,103,236,84,49,183,88,44,216,110, +52,231,223,199,196,92,20,69,163,125,96,40,230,184,223,1,159,152,67,31,160,98,174,40,10,216,108,54,163,98,14,247,115,31,219,25,59,217,81,189,18,103,55,207,145,235,24,151,196,153,210,146,72,200,195,74,217,156,252,160,105,26,209,141,249,165,236,52,87,230, +172,219,84,174,115,108,117,93,195,122,189,134,171,171,171,125,12,96,181,156,74,148,40,221,174,174,174,122,175,7,65,0,81,20,245,38,11,252,27,74,214,102,179,33,125,222,24,3,155,205,134,189,201,237,82,150,37,169,211,49,93,145,245,122,77,234,131,239,81,147, +45,37,135,235,66,97,114,91,20,197,168,42,61,103,111,236,138,248,216,155,90,50,213,126,207,167,43,66,233,116,76,103,108,189,94,147,62,96,173,133,171,171,43,182,51,215,133,243,1,76,108,169,174,8,167,19,37,7,151,124,81,55,69,156,156,221,110,71,218,244,148, +49,183,221,110,79,26,115,156,15,80,250,224,123,99,125,128,139,185,52,77,197,98,110,185,92,142,46,104,158,44,193,85,20,69,249,48,130,149,12,156,92,219,29,159,177,21,113,106,210,110,119,143,198,86,159,185,106,62,234,53,182,34,206,233,132,213,36,31,157, +14,141,109,108,7,130,171,210,251,218,155,211,9,0,158,251,254,198,48,100,111,159,14,4,103,111,220,146,235,20,62,192,217,27,171,118,83,237,141,29,159,83,248,192,161,152,147,240,1,148,35,17,115,190,62,192,141,77,202,7,164,98,174,109,239,49,232,46,10,138, +162,40,138,162,40,202,89,225,149,224,206,173,165,172,140,71,191,55,69,125,224,48,106,35,69,81,148,243,192,107,137,2,174,161,153,58,9,212,117,13,187,221,110,116,153,121,8,106,235,166,99,192,114,190,196,4,39,165,211,216,117,38,135,224,214,63,29,3,142,77, +202,7,230,100,111,108,29,73,172,121,166,214,63,29,131,84,204,225,78,12,26,115,195,72,237,122,128,49,167,40,138,162,156,6,175,4,87,42,225,242,89,67,115,8,110,219,32,95,36,183,243,161,182,142,58,6,41,123,227,222,171,18,72,77,218,146,62,48,55,123,99,130, +43,129,164,15,72,125,119,26,115,135,193,152,27,155,188,75,85,142,37,229,72,61,36,41,249,224,166,4,146,85,250,185,125,111,146,178,36,110,24,165,153,171,189,231,164,151,180,62,115,123,88,218,71,150,62,100,166,40,138,114,66,206,189,43,34,85,165,167,118, +6,56,6,124,146,91,194,222,82,118,146,180,183,84,82,34,217,21,145,74,146,164,116,194,110,214,156,98,142,219,199,219,23,169,152,147,236,68,82,187,39,28,67,93,215,94,69,8,77,112,21,69,81,78,136,118,198,14,35,185,228,67,178,74,47,85,229,156,99,103,108,110, +93,168,57,250,128,164,189,165,198,38,217,25,155,155,15,248,222,80,232,46,10,138,162,40,138,162,40,202,89,225,149,224,226,217,241,83,193,163,76,37,214,102,225,62,139,83,177,214,146,39,250,28,131,148,78,146,246,150,210,9,247,216,155,10,218,91,125,96,152, +15,67,204,205,73,167,57,218,91,81,20,69,241,199,235,151,60,77,83,8,195,112,242,143,118,16,4,144,166,169,200,68,146,101,25,121,236,157,47,97,24,238,143,165,155,202,98,177,16,73,148,226,56,134,40,138,38,219,219,90,11,89,150,137,140,45,77,83,145,137,27, +143,220,147,72,0,164,236,141,199,55,78,181,147,164,189,147,36,17,139,57,41,157,164,99,110,78,62,32,29,115,138,162,40,202,105,208,37,10,138,162,40,39,36,12,67,177,174,136,196,205,144,164,78,206,57,177,234,186,212,216,130,32,16,185,25,50,198,168,189,71, +128,246,158,42,75,218,222,18,62,160,49,55,14,201,152,243,25,155,38,184,138,162,40,39,36,142,99,145,9,201,57,39,86,17,207,178,76,100,66,10,195,80,100,146,52,198,136,117,253,36,237,157,36,137,104,103,108,42,146,62,32,213,21,65,31,152,138,180,15,72,117, +34,165,58,191,82,62,16,134,161,72,23,202,24,35,246,59,32,29,115,99,209,4,87,81,20,69,81,20,69,57,43,52,193,85,20,69,81,20,69,81,206,138,193,39,69,140,49,16,69,17,196,113,12,77,211,236,75,250,198,152,222,62,100,212,6,188,248,247,189,139,6,1,4,65,0,81, +20,245,246,17,172,235,122,191,81,113,27,110,125,10,202,161,222,171,170,170,183,39,28,174,153,233,130,37,253,40,138,200,177,81,155,85,115,109,0,212,169,91,218,111,154,134,220,55,15,215,204,80,114,218,127,59,70,167,56,142,123,114,240,105,117,9,123,15,181, +100,40,123,115,62,128,107,160,226,56,22,243,1,202,222,104,167,238,24,40,123,163,158,212,70,233,62,62,128,235,132,40,123,115,62,192,173,81,194,93,43,166,198,156,115,78,212,7,52,230,62,96,40,230,36,30,198,83,20,69,81,252,57,152,224,226,15,117,211,52,96, +173,221,39,186,221,31,121,110,227,93,106,210,182,214,178,91,4,25,99,200,205,179,185,45,156,112,59,30,234,250,148,28,252,60,245,122,123,172,212,251,221,215,185,53,60,220,53,48,113,234,78,182,220,216,78,105,111,110,12,40,43,8,2,50,1,240,149,195,217,144, +218,60,155,219,194,233,144,189,199,126,30,111,222,56,31,160,224,108,202,141,13,147,238,177,58,73,249,0,218,78,34,230,134,226,196,55,230,48,241,30,27,115,232,55,99,175,113,234,152,211,109,194,20,69,81,78,195,96,130,139,39,135,224,17,137,206,57,40,138, +130,60,118,141,250,241,111,154,134,60,35,30,23,27,115,71,211,81,178,118,187,29,57,89,132,97,8,219,237,150,60,189,131,155,128,41,157,176,42,73,29,5,200,37,74,220,41,31,81,20,193,118,187,37,147,52,74,78,89,150,228,103,49,241,160,78,238,224,116,162,198, +134,201,77,158,231,163,117,42,138,130,180,105,16,4,144,231,57,89,201,242,177,55,46,132,167,124,128,27,27,119,210,139,175,189,171,170,34,117,66,168,227,9,125,124,0,111,0,124,236,205,249,128,84,204,97,98,43,17,115,65,16,120,197,28,103,239,40,138,246,118, +186,105,31,184,137,152,43,203,146,180,145,181,22,146,36,129,52,77,161,105,154,253,67,88,84,162,92,150,37,89,165,167,30,180,192,206,88,146,36,61,61,177,178,222,181,51,85,245,70,89,248,96,72,27,188,89,232,234,132,85,253,46,56,54,234,102,5,229,116,95,231, +182,15,12,195,16,146,36,97,59,16,93,91,135,97,72,86,208,177,123,68,221,40,81,246,6,120,246,0,80,23,140,115,78,39,202,199,56,157,80,206,88,123,91,107,201,206,1,118,93,40,95,229,124,128,235,200,161,15,116,187,47,77,211,144,190,29,4,1,219,169,105,23,200, +218,160,156,49,62,128,157,49,9,123,163,157,166,198,156,115,14,194,48,36,143,198,245,141,57,148,35,21,115,248,183,93,157,124,98,142,243,1,46,230,56,31,56,20,115,148,15,80,49,135,246,30,219,25,59,152,224,226,113,132,24,48,248,218,216,10,23,55,153,162,140, +177,71,29,114,147,75,91,167,41,114,234,186,222,79,110,99,101,113,159,147,210,73,202,222,232,184,62,99,27,210,169,237,19,199,234,132,50,230,100,111,244,1,31,89,67,58,73,216,187,29,39,83,236,141,21,73,9,59,225,123,62,199,148,14,253,14,204,201,7,36,99,110, +200,126,212,231,165,160,146,201,23,189,146,60,164,255,177,99,163,236,228,251,247,215,109,215,83,127,111,167,186,62,215,25,157,27,168,147,198,220,225,191,193,247,167,198,156,15,186,64,76,81,20,229,6,193,10,49,118,10,130,32,128,221,110,71,86,14,185,36, +156,234,28,96,245,202,167,34,206,117,106,162,40,34,59,16,220,228,84,85,21,219,209,50,198,120,119,69,168,234,93,24,134,176,219,237,70,235,52,212,21,193,42,221,216,101,40,212,216,218,157,177,177,246,230,116,10,195,112,223,25,235,194,221,248,82,58,213,117, +189,183,147,79,87,132,74,28,226,56,246,246,129,161,155,61,159,174,8,215,25,115,206,137,248,192,185,199,28,250,229,148,152,3,0,209,152,171,170,106,178,15,96,181,151,186,6,133,38,184,138,162,40,55,12,213,25,243,169,248,114,21,113,169,206,193,208,117,124, +117,194,127,167,232,212,238,172,204,165,74,223,94,10,48,167,174,136,164,15,204,169,43,210,126,79,74,39,169,152,147,178,19,119,157,83,232,212,94,230,48,151,206,111,187,19,57,6,221,38,76,81,20,69,81,20,69,57,43,188,42,184,212,130,233,99,104,154,103,139, +166,167,172,197,104,235,36,33,7,199,53,39,157,184,150,143,47,77,211,144,237,184,99,192,214,138,212,248,36,152,155,15,52,77,51,59,31,224,182,184,58,134,185,217,27,96,158,49,71,181,33,21,69,81,148,155,193,43,193,197,245,19,83,39,18,156,68,36,38,18,106, +237,203,49,148,101,57,121,1,52,194,61,169,238,11,38,165,18,9,23,181,30,231,24,164,228,224,58,26,9,59,73,217,91,42,121,151,180,183,84,204,225,154,61,141,185,97,112,77,158,132,15,80,235,205,20,69,81,148,155,193,43,193,149,152,64,0,14,175,251,242,65,170, +10,56,71,157,230,104,239,57,234,52,55,123,3,204,79,167,57,218,123,142,58,73,218,123,172,78,88,125,150,234,28,72,80,20,133,136,45,170,170,18,187,137,145,236,64,204,173,51,38,37,71,178,123,36,165,147,84,183,22,64,78,39,41,27,73,218,91,202,47,177,112,36, +229,3,82,197,140,83,116,198,244,33,51,69,81,148,19,34,85,233,197,19,219,164,42,226,115,90,210,212,52,141,88,149,30,247,82,150,232,68,250,62,24,198,33,217,25,3,144,89,246,179,217,108,102,213,21,145,236,66,73,118,163,53,230,14,35,25,115,62,191,151,7,19, +220,23,125,47,55,69,81,148,83,49,230,247,83,178,106,44,133,234,52,14,41,157,206,121,108,115,212,233,156,199,166,58,125,192,193,93,20,168,147,39,20,69,81,148,97,184,147,146,20,69,81,148,235,103,48,123,173,170,234,185,31,232,44,203,158,59,6,238,88,130, +32,128,197,98,33,146,60,47,151,203,209,199,182,13,17,69,17,164,105,42,162,211,197,197,133,200,196,150,36,9,196,113,60,217,222,206,57,88,46,151,34,58,45,22,11,17,31,8,195,16,178,44,19,179,183,132,15,196,113,204,30,89,232,131,49,6,86,171,149,136,189,179, +44,131,40,138,102,23,115,212,113,140,190,156,115,204,5,65,0,23,23,23,164,157,180,43,166,40,138,114,253,12,206,44,219,237,22,178,44,219,79,28,214,90,145,201,8,143,56,148,248,161,183,214,138,200,145,60,118,113,110,99,67,89,115,146,3,32,55,209,75,127,111, +18,9,238,220,124,201,24,35,230,79,82,62,48,71,59,73,198,92,20,69,236,141,128,38,185,138,162,40,254,24,99,70,23,51,6,103,170,119,223,125,23,94,122,233,37,136,162,72,68,49,69,81,148,15,3,198,24,200,178,140,61,122,181,253,3,189,92,46,69,170,244,97,24,138, +85,233,165,186,34,73,146,136,84,233,141,49,98,85,250,44,203,196,170,244,82,157,154,213,106,37,214,21,145,234,140,221,186,117,75,196,7,210,52,21,233,140,89,107,197,124,64,50,230,150,203,165,88,204,73,248,64,28,199,103,29,115,62,126,57,104,129,166,105, +224,206,157,59,176,92,46,181,226,160,40,138,50,18,231,28,220,189,123,23,222,125,247,221,222,123,187,221,78,100,114,165,152,91,69,124,142,204,113,92,146,58,205,173,51,246,97,96,78,182,154,99,103,76,210,62,65,16,200,84,112,1,158,109,57,241,145,143,124, +68,228,78,78,81,20,229,220,49,198,192,114,185,132,79,127,250,211,240,211,159,254,180,247,254,163,71,143,224,238,221,187,250,155,170,40,138,226,129,49,6,210,52,29,189,199,248,193,4,247,135,63,252,33,124,225,11,95,128,197,98,49,203,187,204,235,146,119, +44,115,172,202,204,209,214,146,235,176,165,152,171,157,230,202,57,143,111,138,94,65,16,192,253,251,247,193,24,67,110,105,115,117,117,5,47,191,252,50,100,89,54,219,241,43,138,162,204,13,231,28,220,190,125,27,222,123,239,189,81,159,63,88,66,120,248,240, +33,220,185,115,7,94,123,237,53,120,253,245,215,97,183,219,145,235,202,118,187,29,108,54,155,231,94,179,214,194,106,181,234,125,214,90,187,47,51,119,247,71,171,170,10,182,219,109,239,26,139,197,130,172,120,196,113,12,206,185,222,68,130,71,101,110,183, +219,231,94,199,167,201,187,4,65,0,198,24,136,162,168,167,83,89,150,176,221,110,123,119,13,23,23,23,228,4,149,36,9,88,107,73,157,182,219,237,126,211,99,4,159,38,239,18,134,33,52,77,3,73,146,244,116,42,138,2,54,155,77,239,245,91,183,110,245,228,88,107, +33,12,67,176,214,246,62,95,215,53,108,183,219,253,102,220,72,154,166,228,218,235,56,142,33,12,67,242,14,138,242,1,220,193,161,139,115,14,156,115,16,4,193,104,31,224,118,130,24,178,119,158,231,144,231,249,115,175,227,14,14,93,208,7,226,56,38,237,77,109, +122,77,249,0,250,17,231,151,155,205,166,103,111,124,122,191,75,20,69,16,199,241,232,152,195,117,83,93,14,197,92,158,231,61,157,124,99,14,224,217,134,245,190,49,135,126,222,134,139,185,213,106,69,174,45,155,75,204,89,107,225,206,157,59,240,229,47,127, +25,190,243,157,239,244,228,183,175,127,231,206,29,184,188,188,100,63,163,40,138,162,60,3,171,183,159,250,212,167,224,91,223,250,214,168,191,25,213,35,251,251,191,255,123,248,173,223,250,45,120,252,248,49,188,245,214,91,189,73,21,128,222,124,183,174,107, +184,186,186,234,189,238,156,131,56,142,201,201,130,59,25,102,187,221,146,201,164,49,6,54,155,13,153,112,81,114,170,170,34,117,138,162,8,172,181,228,137,50,156,78,87,87,87,164,78,214,90,184,186,186,34,39,91,74,78,89,150,164,78,73,146,64,93,215,228,241, +132,220,81,124,148,28,107,45,164,105,10,235,245,122,244,216,168,132,7,63,207,221,228,248,248,64,16,4,16,69,145,151,15,108,54,27,111,123,83,54,226,236,141,139,224,41,31,168,235,122,180,15,224,127,175,215,235,209,62,192,217,20,143,38,228,124,128,250,188, +84,204,109,54,27,246,65,5,42,249,228,116,26,138,57,231,28,121,130,15,167,211,122,189,190,86,31,192,196,150,58,45,231,80,204,225,15,240,43,175,188,2,69,81,192,59,239,188,211,251,44,242,224,193,3,248,220,231,62,7,15,31,62,220,239,78,67,221,128,114,250, +83,223,11,238,0,193,125,103,148,61,185,207,162,141,169,247,41,157,184,110,12,234,51,86,14,119,77,148,79,217,104,138,78,83,236,45,169,19,94,99,170,157,164,125,128,147,229,51,54,180,143,132,127,183,229,77,209,73,218,7,124,236,116,221,246,246,149,195,233, +116,204,216,174,211,222,97,24,194,253,251,247,33,12,195,209,199,245,142,74,112,223,123,239,61,88,175,215,240,197,47,126,17,174,174,174,96,179,217,140,190,0,245,57,108,221,213,117,61,122,45,5,247,57,148,51,86,31,238,44,99,172,12,226,57,206,55,169,19,151, +60,181,229,140,61,9,132,27,27,38,12,99,237,205,233,212,52,141,215,241,132,156,189,141,49,123,57,55,109,111,78,39,172,40,78,213,9,43,137,56,190,49,112,246,70,25,83,125,192,24,35,234,3,26,115,31,80,150,229,190,106,255,137,79,124,2,190,244,165,47,193,215, +191,254,245,193,191,249,209,143,126,4,95,251,218,215,224,205,55,223,132,135,15,31,130,115,142,236,152,80,93,40,107,237,96,87,132,154,68,176,74,223,181,79,154,166,100,87,4,117,225,110,126,187,93,145,32,8,200,138,56,198,20,213,169,193,42,125,247,26,220, +114,56,236,112,80,19,36,213,133,10,195,16,146,36,33,199,86,215,53,249,196,58,118,106,218,215,192,53,213,93,176,51,134,177,213,6,59,99,93,123,39,73,66,94,23,187,34,148,127,83,246,118,206,145,93,17,244,1,170,83,83,150,37,228,121,222,187,6,183,235,66,20, +69,176,88,44,216,206,88,183,43,194,249,0,118,69,168,110,80,81,20,228,241,187,148,189,49,198,56,123,83,69,153,56,142,201,184,138,162,104,95,100,233,114,221,49,151,36,9,219,25,227,150,53,157,42,230,176,163,125,211,49,7,240,188,15,224,14,26,95,250,210,151, +224,95,254,229,95,122,50,56,70,63,229,240,183,127,251,183,240,199,127,252,199,240,107,191,246,107,240,79,255,244,79,240,248,241,227,209,147,137,162,40,202,185,98,173,133,56,142,225,83,159,250,20,252,206,239,252,14,124,251,219,223,134,245,122,125,240, +239,190,247,189,239,193,231,62,247,57,120,242,228,9,92,94,94,146,85,99,42,201,30,234,138,96,149,126,108,37,123,168,43,178,94,175,201,132,203,183,43,130,157,177,177,221,12,202,118,88,1,162,186,34,0,116,34,206,233,132,55,233,156,189,169,215,184,174,72, +146,36,164,189,57,157,168,196,16,199,135,93,145,41,62,128,137,27,149,196,12,249,0,133,115,142,245,1,223,78,36,192,179,196,113,172,15,112,157,72,0,186,51,198,233,180,219,237,200,78,36,192,179,196,138,234,140,93,119,204,113,221,104,107,45,91,60,124,81, +98,174,40,10,246,55,195,39,230,0,158,239,140,69,81,4,247,238,221,131,48,12,225,193,131,7,189,207,114,140,78,112,155,166,129,175,127,253,235,240,167,127,250,167,16,134,33,124,247,187,223,133,135,15,31,66,89,150,98,231,21,43,138,162,188,72,96,37,237,151, +126,233,151,224,43,95,249,10,124,255,251,223,135,55,222,120,99,212,223,254,248,199,63,134,47,126,241,139,112,121,121,9,79,159,62,37,147,18,142,67,157,131,177,114,184,207,225,164,51,182,218,207,125,22,151,117,76,173,210,31,211,245,227,174,215,238,174, +140,173,210,115,58,29,211,21,161,56,166,43,66,93,179,170,42,176,214,138,116,69,124,199,118,200,7,124,186,34,92,146,36,101,111,41,31,192,152,147,210,73,202,222,168,239,212,152,147,252,29,56,214,222,97,24,194,199,62,246,49,248,141,223,248,13,248,230,55, +191,57,234,111,17,175,157,128,243,60,135,63,251,179,63,131,87,95,125,21,126,239,247,126,15,94,123,237,53,184,125,251,246,254,1,38,125,34,88,81,148,115,7,79,210,201,178,12,94,121,229,21,248,205,223,252,77,248,253,223,255,125,248,206,119,190,3,223,255, +254,247,189,100,125,227,27,223,128,95,255,245,95,135,207,125,238,115,98,135,52,40,138,162,188,232,224,3,200,175,188,242,10,124,245,171,95,133,31,253,232,71,163,119,79,64,188,55,98,44,203,18,254,226,47,254,2,190,250,213,175,194,31,253,209,31,193,191,255, +251,191,195,15,126,240,3,120,244,232,17,108,54,155,253,26,31,238,129,12,106,16,18,204,105,99,99,28,247,92,198,134,119,98,82,99,147,144,131,127,63,39,157,218,72,110,133,38,129,132,156,185,249,101,91,206,156,99,14,255,191,115,14,194,48,132,56,142,225,226, +226,2,62,249,201,79,194,151,190,244,37,8,195,16,254,242,47,255,18,30,63,126,236,125,157,205,102,3,127,243,55,127,3,127,240,7,127,0,206,57,248,193,15,126,0,79,159,62,245,170,116,40,138,162,156,19,184,236,235,213,87,95,133,175,124,229,43,240,228,201,19, +248,222,247,190,231,45,231,232,157,198,255,238,239,254,14,254,241,31,255,17,126,247,119,127,23,254,228,79,254,4,222,120,227,13,120,227,141,55,224,157,119,222,129,39,79,158,192,110,183,99,203,218,248,52,157,196,143,56,110,89,53,117,153,4,86,160,199,38, +230,67,68,81,68,174,237,241,5,31,254,152,170,19,46,56,247,105,17,113,72,218,91,202,7,162,40,18,89,42,51,71,123,7,65,192,62,16,229,131,181,22,156,115,234,3,7,160,124,0,191,207,197,98,1,119,239,222,133,143,127,252,227,240,153,207,124,6,140,49,240,237,111, +127,27,254,227,63,254,99,210,53,127,241,139,95,192,55,190,241,13,248,195,63,252,67,184,125,251,54,252,219,191,253,27,60,122,244,104,191,100,65,19,93,69,81,62,12,224,60,117,235,214,45,248,244,167,63,13,191,253,219,191,13,63,255,249,207,225,31,254,225, +31,142,146,55,233,40,157,245,122,13,127,245,87,127,5,81,20,237,219,108,95,254,242,151,247,139,202,185,197,221,138,162,40,47,10,184,95,243,110,183,131,203,203,75,120,251,237,183,225,175,255,250,175,189,30,118,56,196,219,111,191,13,127,254,231,127,14,95, +251,218,215,224,181,215,94,131,127,254,231,127,134,255,254,239,255,134,39,79,158,236,159,198,31,187,107,201,28,43,226,83,101,73,119,124,166,234,131,127,47,37,75,210,222,82,62,128,55,139,115,233,248,72,119,34,37,116,146,150,37,33,7,215,205,78,181,211, +77,249,55,62,204,22,199,49,44,22,11,120,249,229,151,225,87,126,229,87,224,243,159,255,60,124,243,155,223,132,31,255,248,199,71,95,215,220,191,127,191,1,120,182,129,58,181,189,195,209,130,255,127,107,21,173,62,40,138,242,162,130,251,34,83,79,190,95,23, +159,255,252,231,225,43,95,249,10,108,183,91,248,207,255,252,79,120,240,224,1,60,126,252,152,124,42,186,205,185,119,198,112,255,75,137,206,24,247,52,185,15,184,22,91,194,222,146,157,154,185,218,155,123,90,126,44,115,181,183,198,220,97,184,152,195,117, +182,203,229,18,238,223,191,15,159,249,204,103,224,147,159,252,36,252,228,39,63,129,111,125,235,91,71,253,238,110,183,219,253,1,58,215,150,224,42,138,162,40,199,243,203,191,252,203,240,171,191,250,171,112,239,222,61,8,130,0,158,60,121,66,238,99,170,40, +138,242,162,209,78,110,147,36,129,199,143,31,195,127,253,215,127,193,119,191,251,93,118,235,186,49,104,130,171,40,138,242,2,145,101,25,124,244,163,31,133,44,203,200,131,25,20,69,81,94,52,54,155,13,188,247,222,123,240,232,209,35,49,153,237,4,119,210,26, +92,69,81,148,15,3,34,183,141,1,0,0,27,23,73,68,65,84,247,238,221,131,203,203,203,253,9,71,171,213,10,130,32,128,170,170,224,206,157,59,251,207,189,243,206,59,112,231,206,29,120,243,205,55,247,175,125,236,99,31,131,135,15,31,78,170,188,174,215,107,248, +233,79,127,122,252,0,20,69,81,62,100,232,166,139,138,162,40,7,184,123,247,46,124,230,51,159,1,128,103,107,220,62,251,217,207,194,173,91,183,224,234,234,10,222,126,251,109,184,117,235,22,188,253,246,219,144,231,57,56,231,224,165,151,94,2,0,128,139,139, +11,88,46,151,186,172,64,81,20,229,134,209,4,87,81,20,101,4,151,151,151,240,210,75,47,193,43,175,188,178,223,112,188,170,170,253,118,94,248,239,131,7,15,224,163,31,253,40,56,231,224,213,87,95,133,159,253,236,103,167,85,92,81,20,229,67,136,38,184,138,162, +40,35,120,251,237,183,225,222,189,123,16,199,241,224,137,58,77,211,192,131,7,15,224,11,95,248,2,60,122,244,104,244,241,171,138,162,40,138,28,186,6,87,81,20,101,36,175,191,254,58,20,69,1,81,20,13,126,46,207,115,136,227,24,214,235,245,13,105,166,40,138, +162,180,209,10,174,162,40,202,72,174,174,174,70,237,205,248,233,79,127,26,254,245,95,255,21,62,241,137,79,128,181,250,51,171,40,138,114,211,104,5,87,81,20,69,144,151,95,126,25,158,60,121,2,155,205,6,222,122,235,45,120,229,149,87,224,141,55,222,56,181, +90,202,135,132,166,105,96,183,219,237,215,132,75,28,66,160,40,99,193,163,205,131,32,128,52,77,79,186,173,161,38,184,138,162,40,7,184,188,188,124,238,20,158,170,170,224,234,234,10,238,220,185,3,47,191,252,50,20,69,1,175,189,246,26,60,120,240,0,210,52, +133,215,95,127,29,0,0,30,63,126,12,203,229,114,127,2,147,162,92,23,77,211,192,250,255,218,187,251,224,40,202,59,14,224,223,221,189,187,220,37,23,66,222,8,144,200,75,66,17,8,132,150,48,88,80,65,18,10,84,166,101,226,84,71,4,69,94,90,45,148,118,58,67,71, +80,167,128,128,84,68,162,40,160,212,90,108,4,74,65,164,181,165,229,53,54,66,192,12,16,65,170,188,135,0,121,79,200,219,229,94,247,118,251,7,179,55,183,217,189,215,92,238,46,240,251,204,100,90,111,223,158,61,146,223,253,238,217,231,249,61,102,51,218,218, +218,232,119,141,68,133,150,150,22,24,12,6,36,36,36,64,163,9,127,186,73,11,61,16,66,8,33,61,152,32,8,104,106,106,130,205,102,139,116,83,8,81,96,24,6,137,137,137,136,141,141,237,246,107,185,47,244,64,131,195,8,33,132,144,30,74,16,4,52,52,52,80,114,75,162, +150,40,138,184,115,231,14,76,38,83,88,175,75,9,46,33,132,16,210,67,221,185,115,7,14,135,35,210,205,32,196,167,214,214,214,176,126,17,139,170,49,184,162,40,186,126,252,197,48,140,107,150,114,231,227,25,134,1,0,217,44,102,65,16,100,231,103,24,198,245,227, +141,52,254,46,152,193,250,238,215,8,244,60,157,219,231,207,123,36,237,235,207,125,17,66,136,39,82,172,113,143,155,162,40,202,98,12,203,178,138,88,35,29,227,15,233,120,95,237,80,59,159,183,99,131,57,198,253,56,247,88,235,30,135,61,29,223,249,179,5,144, +127,62,133,170,125,238,44,22,139,107,249,104,66,162,157,40,138,104,105,105,65,90,90,90,88,174,23,53,9,110,231,153,159,254,210,104,52,136,141,141,5,195,48,176,217,108,176,217,108,178,4,87,167,211,65,175,215,131,101,89,215,196,16,247,1,248,44,203,194,96, +48,64,171,213,122,12,42,130,32,192,98,177,192,225,112,4,149,224,178,44,139,152,152,24,104,52,26,216,237,118,216,237,246,128,18,92,189,94,239,170,187,217,249,30,61,29,195,178,44,180,90,45,52,26,13,56,142,11,121,169,34,173,86,139,252,252,124,100,102,102, +70,116,150,164,154,119,223,125,55,236,143,66,124,145,126,7,162,237,189,34,68,141,40,138,112,58,157,224,121,30,118,187,29,14,135,3,60,207,187,146,56,41,198,104,52,26,232,116,58,232,116,58,112,28,231,250,253,118,56,28,176,88,44,62,99,57,199,113,174,25, +215,238,199,119,38,8,2,204,102,179,108,209,12,111,177,91,20,69,213,54,112,28,135,184,184,56,213,235,72,9,167,195,225,128,213,106,133,221,110,119,85,32,144,102,134,107,181,90,232,116,58,104,181,90,89,92,21,4,65,245,243,71,171,213,194,96,48,168,198,95, +79,247,36,197,123,127,146,220,104,139,115,132,248,34,253,93,26,12,134,110,191,86,212,76,50,19,4,1,125,251,246,197,163,143,62,26,80,130,203,243,60,62,253,244,83,176,44,139,156,156,28,12,27,54,76,22,96,110,222,188,137,147,39,79,66,171,213,194,102,179,97, +214,172,89,178,228,144,101,89,28,58,116,8,173,173,173,30,147,64,135,195,129,71,30,121,4,233,233,233,65,39,184,167,79,159,198,165,75,151,240,240,195,15,99,224,192,129,126,159,135,101,89,148,151,151,227,242,229,203,0,128,225,195,135,35,39,39,199,235,123, +100,183,219,81,91,91,139,175,191,254,26,181,181,181,136,141,141,117,37,216,161,96,48,24,176,97,195,6,100,102,102,134,228,124,161,54,113,226,68,88,44,150,72,55,67,129,97,24,244,234,213,11,90,173,54,210,77,33,196,35,167,211,233,250,16,210,104,52,24,63, +126,60,38,78,156,136,172,172,44,164,166,166,66,175,215,195,102,179,161,186,186,26,151,47,95,70,73,73,9,202,202,202,0,192,149,60,166,164,164,32,47,47,207,107,156,226,121,30,77,77,77,248,223,255,254,135,43,87,174,64,175,215,195,96,48,64,163,209,40,146, +59,155,205,134,167,159,126,90,246,26,203,178,56,114,228,8,154,155,155,21,177,91,16,4,36,38,38,98,202,148,41,178,54,48,12,131,93,187,118,33,38,38,70,182,191,40,138,224,121,30,102,179,25,90,173,22,51,103,206,196,164,73,147,48,112,224,64,215,130,29,215, +174,93,195,233,211,167,113,228,200,17,84,85,85,33,54,54,214,85,6,137,231,121,140,28,57,18,35,70,140,144,125,254,220,186,117,11,165,165,165,170,127,243,118,187,29,5,5,5,178,69,67,88,150,69,73,73,9,234,234,234,124,118,74,56,157,78,212,212,212,120,221,135, +144,104,20,23,23,135,196,196,196,110,57,183,251,36,179,168,234,193,29,56,112,32,22,46,92,24,208,113,173,173,173,216,179,103,15,24,134,193,152,49,99,48,123,246,108,217,246,195,135,15,163,180,180,212,245,237,124,254,252,249,138,111,239,229,229,229,104, +109,109,245,218,182,201,147,39,99,210,164,73,1,181,205,157,201,100,194,119,223,125,135,71,31,125,20,211,166,77,11,232,216,45,91,182,224,210,165,75,0,128,81,163,70,5,244,30,157,61,123,22,27,54,108,192,141,27,55,92,229,138,186,234,169,167,158,138,218,228, +54,154,137,162,136,246,246,118,36,37,37,69,186,41,132,40,72,189,182,22,139,5,44,203,98,193,130,5,152,51,103,142,106,79,75,124,124,60,82,82,82,144,147,147,131,159,253,236,103,176,90,173,216,189,123,55,118,239,222,13,187,221,142,190,125,251,6,20,167,42, +43,43,241,222,123,239,161,164,164,4,241,241,241,138,36,87,20,69,60,247,220,115,138,78,152,11,23,46,120,92,54,57,53,53,85,209,6,187,221,142,157,59,119,42,246,117,58,157,48,153,76,152,58,117,42,94,122,233,37,196,197,197,41,238,55,45,45,13,19,38,76,192, +175,127,253,107,156,63,127,30,31,124,240,1,190,253,246,91,176,44,11,81,20,145,155,155,139,57,115,230,200,142,59,114,228,8,78,156,56,161,218,62,65,16,48,107,214,44,36,39,39,203,94,191,122,245,42,106,107,107,85,143,233,124,47,132,244,68,225,26,135,27,85, +147,204,130,45,70,237,62,54,44,220,215,14,244,252,93,189,78,160,199,143,25,51,6,69,69,69,152,52,105,82,192,195,63,60,201,206,206,238,242,57,238,87,130,32,132,228,223,128,144,80,146,122,48,77,38,19,70,140,24,129,191,255,253,239,248,249,207,127,238,247, +99,68,189,94,143,185,115,231,226,169,167,158,10,234,250,3,7,14,196,155,111,190,137,37,75,150,192,108,54,43,254,70,60,205,59,240,20,15,189,197,201,206,219,164,33,104,207,60,243,12,94,123,237,53,69,114,171,38,39,39,7,239,190,251,46,250,247,239,239,115, +223,238,66,181,110,73,79,21,174,223,221,168,74,112,131,21,142,137,84,93,189,70,87,198,192,6,50,233,64,13,199,113,88,189,122,53,250,245,235,23,146,95,44,127,62,0,136,103,148,224,146,104,227,116,58,97,54,155,49,115,230,76,108,221,186,53,168,199,135,102, +179,25,251,247,239,239,82,172,155,51,103,14,242,243,243,101,227,82,187,27,207,243,24,49,98,4,150,44,89,18,208,113,197,197,197,168,175,175,143,216,68,94,138,35,164,167,10,180,152,64,176,162,102,136,66,176,164,193,255,221,249,102,73,19,33,186,66,171,213, +6,29,248,165,99,61,37,167,181,181,181,56,115,230,12,226,226,226,144,153,153,137,1,3,6,40,246,209,104,52,88,184,112,33,94,127,253,245,176,141,1,181,88,44,88,181,106,21,102,206,156,137,241,227,199,123,221,247,204,153,51,216,179,103,143,236,53,173,86,139, +140,140,12,140,29,59,22,185,185,185,33,109,219,184,113,227,240,196,19,79,96,245,234,213,232,232,232,80,108,47,40,40,192,131,15,62,136,63,252,225,15,0,128,252,252,124,252,232,71,63,146,237,99,179,217,112,227,198,13,156,60,121,18,23,47,94,12,105,251,8, +9,23,65,16,96,181,90,49,121,242,100,188,244,210,75,65,39,108,123,247,238,133,217,108,246,184,221,225,112,224,192,129,3,232,213,171,23,250,246,237,139,161,67,135,170,14,153,90,188,120,49,74,74,74,100,213,26,186,139,212,115,253,203,95,254,82,245,90,109, +109,109,168,175,175,71,74,74,10,122,247,238,237,122,93,16,4,20,21,21,209,164,81,66,162,88,212,39,184,181,181,181,152,63,127,190,98,82,128,59,105,144,127,119,97,89,22,111,188,241,134,162,220,88,86,86,22,54,110,220,40,219,87,16,4,204,152,49,67,49,86,140, +231,121,143,9,238,190,125,251,240,209,71,31,121,76,60,121,158,247,26,232,175,95,191,142,13,27,54,64,167,211,65,20,69,12,25,50,4,111,188,241,6,226,227,227,101,251,61,242,200,35,174,241,98,225,232,117,224,121,30,71,143,30,245,43,57,173,173,173,197,209, +163,71,241,240,195,15,187,222,59,171,213,138,99,199,142,225,195,15,63,68,126,126,62,214,172,89,19,178,137,114,233,233,233,200,207,207,199,250,245,235,85,19,220,225,195,135,203,146,242,172,172,44,228,229,229,225,216,177,99,174,215,140,70,35,102,206,156, +137,23,95,124,17,187,119,239,70,97,97,33,173,249,78,122,28,158,231,49,96,192,0,172,90,181,202,99,92,168,172,172,68,73,73,9,46,93,186,132,150,150,22,104,52,26,164,165,165,97,204,152,49,152,56,113,34,68,81,196,103,159,125,6,150,101,61,246,44,218,108,54, +108,220,184,17,122,189,30,162,40,34,49,49,17,107,215,174,197,144,33,67,100,251,245,237,219,23,153,153,153,168,170,170,234,246,4,82,20,69,36,36,36,224,251,223,255,190,98,219,230,205,155,241,143,127,252,195,245,55,157,146,146,130,201,147,39,227,201,39, +159,196,233,211,167,81,93,93,77,9,46,33,81,44,234,19,92,105,124,148,32,8,30,131,111,119,39,107,12,195,40,6,244,59,157,78,143,3,165,45,22,75,64,73,164,221,110,135,197,98,241,154,200,250,58,151,123,189,197,203,151,47,99,247,238,221,138,9,22,6,131,1,201, +201,201,104,107,107,243,171,93,145,176,124,249,114,69,141,188,255,252,231,63,248,253,239,127,143,79,62,249,4,207,63,255,124,100,26,134,187,255,230,203,150,45,147,189,198,48,12,230,206,157,139,197,139,23,227,155,111,190,193,225,195,135,35,212,58,66,2, +39,245,222,46,93,186,84,245,203,163,217,108,198,166,77,155,80,92,92,12,64,30,135,46,94,188,136,47,190,248,2,127,250,211,159,48,108,216,48,152,205,102,159,79,169,220,227,84,115,115,51,182,108,217,162,232,36,0,238,126,1,173,170,170,234,202,173,249,45,61, +61,93,17,95,27,26,26,176,99,199,14,24,141,70,215,16,177,59,119,238,96,239,222,189,248,215,191,254,229,177,244,23,33,36,122,244,136,191,80,105,98,142,211,233,148,253,168,21,214,142,22,129,36,221,82,133,135,80,222,227,245,235,215,85,95,15,71,237,185,80, +155,62,125,58,198,140,25,131,47,190,248,34,210,77,81,16,69,17,219,183,111,71,77,77,13,242,242,242,34,221,28,66,2,226,116,58,241,208,67,15,225,7,63,248,129,98,155,197,98,193,111,127,251,91,20,23,23,131,101,89,217,130,14,238,139,30,180,183,183,163,172, +172,44,168,132,175,178,178,82,245,245,112,141,243,119,95,124,199,157,209,104,68,175,94,189,208,209,209,1,135,195,225,218,135,101,89,216,108,54,180,180,180,248,29,227,213,226,186,20,219,9,33,221,39,234,123,112,129,187,189,8,14,135,67,17,80,220,23,80,232, +201,164,130,223,28,199,169,222,163,94,175,247,250,40,76,74,144,165,162,228,118,187,29,9,9,9,170,251,74,245,225,122,154,248,248,120,180,180,180,68,186,25,30,153,76,166,136,214,145,38,36,24,78,167,19,83,167,78,85,221,182,105,211,38,84,84,84,248,245,24, +62,208,100,79,90,136,193,83,34,219,218,218,26,182,201,195,213,213,213,112,58,157,178,251,52,24,12,248,228,147,79,176,114,229,74,148,150,150,194,96,48,184,226,112,32,147,126,5,65,64,71,71,135,106,217,51,90,94,151,144,238,21,245,153,97,108,108,44,166,79, +159,174,218,59,192,178,44,46,92,184,16,213,143,220,253,145,153,153,137,105,211,166,169,6,77,142,227,240,213,87,95,121,173,126,32,138,34,204,102,51,108,54,27,120,158,135,78,167,83,45,215,83,93,93,141,214,214,86,89,97,241,158,160,190,190,30,103,206,156, +81,76,242,138,22,67,135,14,197,224,193,131,113,232,208,161,72,55,133,16,191,73,195,168,212,234,123,87,85,85,225,240,225,195,33,157,144,42,138,162,107,40,150,180,74,90,231,186,177,192,221,164,240,202,149,43,97,171,78,96,179,217,112,224,192,1,252,228,39, +63,145,189,158,146,146,130,247,222,123,15,231,206,157,195,71,31,125,132,19,39,78,32,38,38,6,122,189,222,235,202,151,238,210,211,211,49,109,218,52,143,43,153,121,155,91,66,8,233,154,168,79,112,123,247,238,141,213,171,87,123,220,190,108,217,50,156,61,123, +54,140,45,10,189,241,227,199,123,173,50,240,204,51,207,160,169,169,201,227,246,180,180,52,76,155,54,13,26,141,6,195,134,13,67,94,94,30,82,83,83,21,251,29,56,112,32,234,123,187,79,156,56,225,234,125,118,56,28,184,121,243,38,246,237,219,7,157,78,135,5, +11,22,132,252,122,19,39,78,84,237,213,206,200,200,80,188,198,48,12,242,243,243,93,255,29,19,19,131,33,67,134,160,160,160,0,149,149,149,138,42,16,132,68,51,81,20,145,148,148,164,58,108,233,248,241,227,33,191,158,78,167,195,244,233,211,193,48,12,6,13,26, +132,73,147,38,33,43,43,75,177,223,169,83,167,208,214,214,22,182,88,197,178,44,138,138,138,48,110,220,56,197,248,127,0,24,61,122,52,222,121,231,29,220,190,125,27,155,55,111,198,145,35,71,92,171,67,250,234,221,206,206,206,246,250,249,69,8,233,62,209,157, +237,248,33,90,199,224,134,211,247,190,247,61,159,65,244,214,173,91,216,191,127,127,196,106,54,250,107,221,186,117,174,255,207,113,28,6,14,28,136,41,83,166,96,225,194,133,178,50,61,161,242,202,43,175,120,220,214,121,53,33,142,227,92,101,195,128,187,9, +120,69,69,5,254,246,183,191,97,251,246,237,81,185,60,48,33,222,168,125,17,6,238,198,139,80,139,137,137,241,25,167,44,22,11,254,248,199,63,134,181,58,1,195,48,104,107,107,195,239,126,247,59,172,95,191,30,125,251,246,85,221,47,35,35,3,235,214,173,195,156, +57,115,176,116,233,82,152,76,38,215,82,189,132,144,232,211,227,19,220,251,97,38,107,87,147,210,202,202,74,188,242,202,43,62,203,141,69,131,127,254,243,159,170,189,40,221,101,218,180,105,170,75,125,190,252,242,203,138,94,117,158,231,125,214,243,37,164, +167,96,24,38,160,21,191,186,155,201,100,194,138,21,43,80,93,93,29,246,184,206,48,12,234,235,235,241,194,11,47,224,185,231,158,67,65,65,129,199,54,100,103,103,99,231,206,157,88,178,100,9,110,223,190,77,99,239,9,137,82,61,62,59,236,60,120,255,94,20,236, +61,54,54,54,226,131,15,62,192,162,69,139,208,216,216,120,207,191,79,132,144,192,120,26,250,148,153,153,9,158,231,195,146,228,90,44,22,236,221,187,23,243,230,205,195,133,11,23,34,214,105,33,149,131,220,182,109,27,22,44,88,128,67,135,14,121,156,251,144, +152,152,136,77,155,54,33,38,38,134,150,204,37,36,74,69,125,15,110,67,67,3,150,45,91,230,113,98,84,93,93,93,143,79,220,14,30,60,136,189,123,247,170,142,57,147,234,47,122,187,199,155,55,111,34,45,45,77,49,97,193,110,183,99,207,158,61,112,58,157,52,153, +129,16,34,195,48,12,90,91,91,97,50,153,96,52,26,101,219,30,123,236,49,188,253,246,219,224,121,62,100,157,8,86,171,21,13,13,13,120,224,129,7,100,175,115,28,135,253,251,247,163,174,174,206,99,25,67,79,215,55,26,141,170,73,184,40,138,138,123,242,118,46, +233,28,82,233,179,154,154,26,188,245,214,91,216,177,99,7,102,205,154,133,233,211,167,43,142,73,74,74,194,236,217,179,177,125,251,118,143,73,121,89,89,25,182,109,219,166,58,89,207,110,183,99,227,198,141,30,43,222,16,66,186,38,234,123,112,29,14,7,174,95, +191,142,138,138,10,213,31,139,197,210,227,19,220,230,230,102,143,247,120,253,250,117,159,171,180,221,186,117,11,107,215,174,85,188,222,191,127,127,20,22,22,194,110,183,195,225,112,208,120,101,66,136,140,40,138,40,41,41,81,188,158,148,148,132,39,159,124, +18,102,179,217,103,79,174,84,166,208,23,158,231,241,242,203,47,43,22,200,209,233,116,120,251,237,183,17,23,23,7,187,221,238,241,90,106,61,165,189,123,247,86,189,182,32,8,72,76,76,84,109,131,218,107,22,139,69,86,239,86,74,116,235,234,234,176,113,227,70, +172,89,179,70,181,93,121,121,121,94,223,155,182,182,54,143,177,253,218,181,107,221,186,2,39,33,247,187,168,79,112,37,157,11,140,75,63,161,32,138,162,215,159,72,243,213,6,134,97,240,223,255,254,23,159,125,246,153,98,219,168,81,163,240,234,171,175,162, +163,163,131,130,41,33,68,134,227,56,28,57,114,68,117,219,162,69,139,48,118,236,88,180,183,183,187,74,16,118,94,172,192,225,112,192,98,177,192,98,177,248,245,168,190,178,178,82,117,229,178,148,148,20,20,22,22,130,231,121,213,47,227,82,111,115,103,89,89, +89,176,90,173,178,182,241,60,15,171,213,170,90,161,161,243,2,13,78,167,19,102,179,25,19,38,76,64,123,123,187,44,209,117,239,213,61,120,240,32,190,253,246,91,213,118,251,226,233,179,171,167,119,204,16,18,237,162,126,136,66,56,72,1,209,83,173,93,173,86, +219,173,51,101,165,229,50,213,18,80,134,97,160,209,104,124,150,204,225,56,14,219,182,109,195,131,15,62,136,17,35,70,200,182,253,248,199,63,198,197,139,23,177,103,207,30,24,141,198,176,207,250,253,234,171,175,96,54,155,85,183,229,230,230,98,228,200,145, +97,109,15,33,228,46,134,97,240,205,55,223,224,228,201,147,138,9,148,28,199,161,176,176,16,31,126,248,33,182,111,223,14,135,195,1,173,86,11,150,101,93,189,182,118,187,29,67,134,12,65,110,110,46,14,28,56,224,115,165,68,150,101,113,236,216,49,100,103,103, +227,167,63,253,169,108,219,176,97,195,176,98,197,10,188,250,234,171,48,26,141,178,161,17,210,176,129,244,244,116,217,49,143,63,254,56,182,111,223,142,218,218,90,87,140,228,121,30,105,105,105,120,252,241,199,21,215,175,169,169,113,197,121,105,177,133, +241,227,199,99,221,186,117,56,115,230,12,86,173,90,133,154,154,26,232,245,122,217,249,172,86,43,146,147,147,21,231,107,110,110,166,68,149,144,40,69,9,46,128,62,125,250,120,12,84,26,141,6,141,141,141,174,162,232,221,33,33,33,1,253,250,245,83,253,86,207, +178,44,58,58,58,20,143,245,212,136,162,136,53,107,214,224,253,247,223,71,175,94,189,100,219,126,243,155,223,160,162,162,2,229,229,229,136,141,141,13,203,68,14,150,101,145,145,145,129,107,215,174,225,218,181,107,170,251,196,199,199,99,228,200,145,48,24, +12,200,200,200,8,91,237,75,179,217,140,219,183,111,123,236,117,106,105,105,145,149,9,107,111,111,71,77,77,77,88,218,70,72,56,113,28,135,173,91,183,98,244,232,209,136,141,141,85,108,123,225,133,23,48,123,246,108,28,63,126,28,231,207,159,71,83,83,19,180, +90,45,210,211,211,49,97,194,4,140,30,61,26,14,135,3,199,143,31,135,197,98,241,25,91,56,142,195,251,239,191,143,161,67,135,98,216,176,97,178,109,83,166,76,193,245,235,215,241,231,63,255,217,149,228,2,119,99,201,249,243,231,49,118,236,88,217,254,122,189, +30,69,69,69,216,183,111,159,107,121,242,204,204,76,60,241,196,19,170,201,246,185,115,231,92,237,147,150,203,93,186,116,41,128,187,95,182,247,239,223,143,127,255,251,223,248,244,211,79,113,241,226,69,240,60,143,193,131,7,227,249,231,159,87,45,31,118,227, +198,141,251,162,146,15,33,61,17,37,184,0,214,172,89,227,117,251,236,217,179,189,46,180,208,85,51,102,204,192,140,25,51,60,110,223,186,117,43,246,237,219,231,243,60,12,195,160,169,169,9,43,87,174,196,155,111,190,41,235,169,101,89,22,235,215,175,199,188, +121,243,80,93,93,13,189,94,223,237,129,57,46,46,78,117,216,132,154,188,188,60,228,229,229,117,107,123,220,29,60,120,16,7,15,30,244,184,125,203,150,45,178,255,222,181,107,23,118,237,218,213,221,205,34,36,236,24,134,65,93,93,29,86,174,92,137,215,95,127, +93,245,75,166,209,104,196,244,233,211,85,39,91,1,128,86,171,197,179,207,62,139,205,155,55,251,92,41,145,97,24,8,130,128,215,94,123,77,245,203,248,47,126,241,11,84,84,84,224,203,47,191,68,108,108,172,107,121,220,226,226,98,204,157,59,87,241,4,42,33,33, +1,243,230,205,243,121,159,78,167,19,197,197,197,174,30,104,158,231,241,236,179,207,202,18,87,150,101,125,198,99,119,95,126,249,37,56,142,163,74,10,132,68,33,250,234,233,167,72,142,197,13,100,44,176,180,124,241,199,31,127,172,216,166,215,235,241,206,59, +239,64,175,215,123,157,204,225,11,173,161,222,53,244,72,147,68,27,150,101,113,238,220,57,172,94,189,58,232,5,75,10,10,10,144,156,156,236,87,92,145,190,140,175,93,187,86,117,146,216,170,85,171,48,120,240,96,216,108,54,8,130,224,74,194,63,255,252,243,160, +218,6,0,159,127,254,185,172,234,78,90,90,26,230,206,157,27,244,249,42,42,42,80,92,92,28,177,191,103,138,35,164,39,11,199,239,111,84,37,184,106,61,138,129,12,198,87,219,207,253,181,96,223,80,181,54,120,107,151,183,235,4,211,6,247,107,249,115,77,142,227, +240,215,191,254,21,165,165,165,138,253,250,244,233,131,183,222,122,203,53,33,35,24,87,175,94,13,234,56,114,247,223,137,86,62,34,209,136,101,89,156,58,117,10,191,250,213,175,112,227,198,141,128,143,215,106,181,40,40,40,240,59,254,177,44,139,242,242,114, +20,21,21,41,246,211,233,116,40,44,44,68,124,124,188,107,110,2,203,178,216,182,109,27,202,203,203,3,110,91,121,121,57,182,109,219,230,250,140,97,24,6,205,205,205,40,44,44,84,157,188,230,75,83,83,19,86,175,94,221,45,67,215,252,61,31,197,17,210,83,133,109, +25,238,176,92,197,15,210,100,42,181,215,253,121,148,206,178,172,234,241,210,227,173,174,36,22,106,199,121,106,175,167,253,165,54,6,211,6,105,178,133,175,123,236,124,173,245,235,215,163,186,186,90,177,255,200,145,35,177,98,197,138,128,219,33,217,181,107, +23,218,218,218,130,62,254,126,22,23,23,23,233,38,16,226,17,203,178,168,170,170,194,139,47,190,136,245,235,215,251,61,238,252,214,173,91,216,184,113,35,118,237,218,229,49,78,1,202,216,200,178,44,118,238,220,137,178,178,50,197,190,82,101,5,189,94,239,74, +36,5,65,192,242,229,203,241,241,199,31,195,100,50,249,108,87,71,71,7,254,242,151,191,96,249,242,229,174,158,96,247,107,31,61,122,20,243,231,207,199,142,29,59,252,74,116,5,65,192,209,163,71,177,120,241,98,84,87,87,203,38,193,169,221,179,70,163,241,248, +249,197,113,156,199,121,31,254,36,185,84,219,156,244,84,106,117,161,187,3,211,175,95,63,17,184,59,217,39,146,75,14,138,162,136,180,180,52,140,30,61,90,246,136,203,106,181,162,164,164,196,103,146,43,138,34,134,14,29,138,65,131,6,201,142,175,171,171,195, +249,243,231,93,193,113,234,212,169,1,181,139,97,24,215,228,137,206,18,18,18,48,110,220,56,197,35,185,67,135,14,169,182,87,20,69,140,26,53,202,227,90,231,158,174,127,229,202,21,84,84,84,0,184,91,22,39,43,43,75,118,205,166,166,38,156,61,123,86,17,20,69, +81,68,70,70,6,70,140,24,161,90,118,167,172,172,44,168,222,11,0,72,78,78,198,211,79,63,141,33,67,134,68,93,79,194,162,69,139,252,250,240,11,39,150,101,161,215,235,125,142,79,36,36,90,72,67,163,50,51,51,241,208,67,15,33,35,35,3,169,169,169,136,137,137, +129,197,98,65,67,67,3,174,93,187,134,211,167,79,227,214,173,91,174,142,4,81,20,145,156,156,140,220,220,92,89,220,225,121,30,199,142,29,83,196,70,105,81,134,9,19,38,168,198,169,75,151,46,161,178,178,82,22,223,4,65,128,94,175,199,15,127,248,67,12,31,62, +28,253,251,247,119,45,236,96,50,153,80,93,93,141,239,190,251,14,167,78,157,242,88,33,167,243,125,50,12,131,156,156,28,100,103,103,35,51,51,19,9,9,9,208,233,116,176,90,173,168,173,173,197,213,171,87,81,90,90,138,166,166,38,197,19,60,127,62,127,58,19,4, +1,147,39,79,150,125,216,51,12,131,175,191,254,26,245,245,245,126,37,185,181,181,181,84,254,145,244,56,137,137,137,221,214,217,99,181,90,209,222,222,14,32,138,18,92,192,243,56,87,127,31,217,248,115,124,48,227,78,189,93,95,237,124,129,238,31,72,27,2,125, +143,188,93,143,198,112,17,66,124,233,60,7,192,253,177,188,183,161,83,161,140,141,222,226,155,116,156,123,221,90,233,127,3,141,113,193,222,171,183,246,135,242,243,163,179,142,142,14,52,55,55,251,189,63,33,145,166,209,104,144,150,150,214,109,249,135,123, +130,27,85,85,20,186,122,195,254,28,31,169,241,82,161,186,126,184,175,71,8,185,191,5,187,40,65,56,98,85,168,23,76,232,202,249,194,241,30,117,22,27,27,139,142,142,14,216,237,246,46,157,135,144,112,233,213,171,87,216,242,146,168,25,131,75,8,33,132,16,255, +49,12,131,164,164,36,170,197,75,122,4,163,209,168,168,181,221,157,232,175,130,16,66,8,233,161,52,26,13,250,244,233,19,182,153,233,132,4,35,46,46,14,9,9,9,97,189,38,253,69,16,18,98,12,195,32,61,61,29,70,163,17,60,207,163,182,182,22,38,147,9,131,6,13,146, +149,95,210,106,181,72,78,78,134,86,171,85,124,171,109,108,108,236,214,197,69,8,33,247,14,41,201,109,107,107,67,71,71,71,68,235,182,19,226,78,163,209,160,119,239,222,17,153,227,69,9,46,33,33,54,96,192,0,116,116,116,224,246,237,219,208,104,52,72,77,77, +133,201,100,114,205,242,150,112,28,7,163,209,232,170,43,60,96,192,0,180,182,182,6,93,217,130,16,114,255,98,89,22,189,123,247,134,209,104,132,213,106,133,213,106,117,45,71,76,9,47,9,23,169,36,171,86,171,133,94,175,135,94,175,143,216,92,32,74,112,9,9,33, +150,101,17,23,23,135,202,202,74,0,119,75,35,249,91,75,148,16,66,186,74,163,209,192,104,52,42,190,80,19,114,191,161,49,184,132,132,144,193,96,128,217,108,142,116,51,8,33,132,144,251,26,37,184,132,132,144,32,8,52,163,153,16,66,8,137,48,250,36,38,36,132, +108,54,155,98,194,152,52,254,168,115,242,203,113,28,156,78,103,88,219,71,8,33,132,220,15,40,193,37,36,132,4,65,64,83,83,19,6,13,26,4,142,227,16,27,27,139,236,236,108,48,12,131,250,250,122,215,235,90,173,22,15,60,240,0,26,27,27,35,221,100,66,8,33,228, +158,67,147,204,8,9,177,154,154,26,36,38,38,34,51,51,19,60,207,227,202,149,43,16,69,17,141,141,141,112,58,157,24,60,120,48,68,81,68,85,85,149,107,73,65,0,104,107,107,131,205,102,139,96,203,9,33,132,144,123,3,211,175,95,63,17,0,226,227,227,35,82,167,140, +16,66,8,33,132,144,174,178,90,173,174,142,35,26,162,64,8,33,132,16,66,238,41,148,224,18,66,8,33,132,144,123,138,107,12,174,195,225,136,100,59,8,33,132,16,66,8,9,154,123,46,235,74,112,165,165,253,8,33,132,16,66,8,233,201,104,136,2,33,132,16,66,8,185,167, +252,31,114,133,21,76,228,72,236,4,0,0,0,0,73,69,78,68,174,66,96,130,0,0 }; + +const char* BG_png = (const char*) temp_binary_data_0; + + +const char* getNamedResource (const char* resourceNameUTF8, int& numBytes); +const char* getNamedResource (const char* resourceNameUTF8, int& numBytes) +{ + unsigned int hash = 0; + + if (resourceNameUTF8 != nullptr) + while (*resourceNameUTF8 != 0) + hash = 31 * hash + (unsigned int) *resourceNameUTF8++; + + switch (hash) + { + case 0x74b53f2f: numBytes = 31662; return BG_png; + default: break; + } + + numBytes = 0; + return nullptr; +} + +const char* namedResourceList[] = +{ + "BG_png" +}; + +const char* originalFilenames[] = +{ + "BG.png" +}; + +const char* getNamedResourceOriginalFilename (const char* resourceNameUTF8); +const char* getNamedResourceOriginalFilename (const char* resourceNameUTF8) +{ + for (unsigned int i = 0; i < (sizeof (namedResourceList) / sizeof (namedResourceList[0])); ++i) + if (strcmp (namedResourceList[i], resourceNameUTF8) == 0) + return originalFilenames[i]; + + return nullptr; +} + +} diff --git a/JuceLibraryCode/BinaryData.h b/JuceLibraryCode/BinaryData.h new file mode 100644 index 0000000..720ceeb --- /dev/null +++ b/JuceLibraryCode/BinaryData.h @@ -0,0 +1,30 @@ +/* ========================================================================================= + + This is an auto-generated file: Any edits you make may be overwritten! + +*/ + +#pragma once + +namespace BinaryData +{ + extern const char* BG_png; + const int BG_pngSize = 31662; + + // Number of elements in the namedResourceList and originalFileNames arrays. + const int namedResourceListSize = 1; + + // Points to the start of a list of resource names. + extern const char* namedResourceList[]; + + // Points to the start of a list of resource filenames. + extern const char* originalFilenames[]; + + // If you provide the name of one of the binary resource variables above, this function will + // return the corresponding data and its size (or a null pointer if the name isn't found). + const char* getNamedResource (const char* resourceNameUTF8, int& dataSizeInBytes); + + // If you provide the name of one of the binary resource variables above, this function will + // return the corresponding original, non-mangled filename (or a null pointer if the name isn't found). + const char* getNamedResourceOriginalFilename (const char* resourceNameUTF8); +} diff --git a/JuceLibraryCode/JuceHeader.h b/JuceLibraryCode/JuceHeader.h new file mode 100644 index 0000000..b07201e --- /dev/null +++ b/JuceLibraryCode/JuceHeader.h @@ -0,0 +1,51 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + + This is the header file that your files should include in order to get all the + JUCE library headers. You should avoid including the JUCE headers directly in + your own source files, because that wouldn't pick up the correct configuration + options for your app. + +*/ + +#pragma once + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "BinaryData.h" + +#if defined (JUCE_PROJUCER_VERSION) && JUCE_PROJUCER_VERSION < JUCE_VERSION + /** If you've hit this error then the version of the Projucer that was used to generate this project is + older than the version of the JUCE modules being included. To fix this error, re-save your project + using the latest version of the Projucer or, if you aren't using the Projucer to manage your project, + remove the JUCE_PROJUCER_VERSION define. + */ + #error "This project was last saved using an outdated version of the Projucer! Re-save this project with the latest version to fix this error." +#endif + + +#if ! JUCE_DONT_DECLARE_PROJECTINFO +namespace ProjectInfo +{ + const char* const projectName = "crushFX"; + const char* const companyName = ""; + const char* const versionString = "1.0.0"; + const int versionNumber = 0x10000; +} +#endif diff --git a/JuceLibraryCode/JuceLV2Defines.h b/JuceLibraryCode/JuceLV2Defines.h new file mode 100644 index 0000000..7e1a2c2 --- /dev/null +++ b/JuceLibraryCode/JuceLV2Defines.h @@ -0,0 +1,5 @@ +#pragma once + +#ifndef JucePlugin_LV2URI + #define JucePlugin_LV2URI "https://www.github.com/esca111/crushFX" +#endif diff --git a/JuceLibraryCode/JucePluginDefines.h b/JuceLibraryCode/JucePluginDefines.h new file mode 100644 index 0000000..5484f75 --- /dev/null +++ b/JuceLibraryCode/JucePluginDefines.h @@ -0,0 +1,162 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#pragma once + +//============================================================================== +// Audio plugin settings.. + +#ifndef JucePlugin_Build_VST + #define JucePlugin_Build_VST 0 +#endif +#ifndef JucePlugin_Build_VST3 + #define JucePlugin_Build_VST3 1 +#endif +#ifndef JucePlugin_Build_AU + #define JucePlugin_Build_AU 0 +#endif +#ifndef JucePlugin_Build_AUv3 + #define JucePlugin_Build_AUv3 1 +#endif +#ifndef JucePlugin_Build_AAX + #define JucePlugin_Build_AAX 0 +#endif +#ifndef JucePlugin_Build_Standalone + #define JucePlugin_Build_Standalone 0 +#endif +#ifndef JucePlugin_Build_Unity + #define JucePlugin_Build_Unity 0 +#endif +#ifndef JucePlugin_Build_LV2 + #define JucePlugin_Build_LV2 1 +#endif +#ifndef JucePlugin_Enable_IAA + #define JucePlugin_Enable_IAA 0 +#endif +#ifndef JucePlugin_Enable_ARA + #define JucePlugin_Enable_ARA 0 +#endif +#ifndef JucePlugin_Name + #define JucePlugin_Name "crushFX" +#endif +#ifndef JucePlugin_Desc + #define JucePlugin_Desc "crushFX" +#endif +#ifndef JucePlugin_Manufacturer + #define JucePlugin_Manufacturer "111euphoria" +#endif +#ifndef JucePlugin_ManufacturerWebsite + #define JucePlugin_ManufacturerWebsite "www.yourcompany.com" +#endif +#ifndef JucePlugin_ManufacturerEmail + #define JucePlugin_ManufacturerEmail "" +#endif +#ifndef JucePlugin_ManufacturerCode + #define JucePlugin_ManufacturerCode 0x4d616e75 +#endif +#ifndef JucePlugin_PluginCode + #define JucePlugin_PluginCode 0x49326a74 +#endif +#ifndef JucePlugin_IsSynth + #define JucePlugin_IsSynth 0 +#endif +#ifndef JucePlugin_WantsMidiInput + #define JucePlugin_WantsMidiInput 0 +#endif +#ifndef JucePlugin_ProducesMidiOutput + #define JucePlugin_ProducesMidiOutput 0 +#endif +#ifndef JucePlugin_IsMidiEffect + #define JucePlugin_IsMidiEffect 0 +#endif +#ifndef JucePlugin_EditorRequiresKeyboardFocus + #define JucePlugin_EditorRequiresKeyboardFocus 0 +#endif +#ifndef JucePlugin_Version + #define JucePlugin_Version 1.0.0 +#endif +#ifndef JucePlugin_VersionCode + #define JucePlugin_VersionCode 0x10000 +#endif +#ifndef JucePlugin_VersionString + #define JucePlugin_VersionString "1.0.0" +#endif +#ifndef JucePlugin_VSTUniqueID + #define JucePlugin_VSTUniqueID JucePlugin_PluginCode +#endif +#ifndef JucePlugin_VSTCategory + #define JucePlugin_VSTCategory kPlugCategEffect +#endif +#ifndef JucePlugin_Vst3Category + #define JucePlugin_Vst3Category "Fx" +#endif +#ifndef JucePlugin_AUMainType + #define JucePlugin_AUMainType 'aufx' +#endif +#ifndef JucePlugin_AUSubType + #define JucePlugin_AUSubType JucePlugin_PluginCode +#endif +#ifndef JucePlugin_AUExportPrefix + #define JucePlugin_AUExportPrefix crushFXAU +#endif +#ifndef JucePlugin_AUExportPrefixQuoted + #define JucePlugin_AUExportPrefixQuoted "crushFXAU" +#endif +#ifndef JucePlugin_AUManufacturerCode + #define JucePlugin_AUManufacturerCode JucePlugin_ManufacturerCode +#endif +#ifndef JucePlugin_CFBundleIdentifier + #define JucePlugin_CFBundleIdentifier com.yourcompany.crushFX +#endif +#ifndef JucePlugin_AAXIdentifier + #define JucePlugin_AAXIdentifier com.yourcompany.crushFX +#endif +#ifndef JucePlugin_AAXManufacturerCode + #define JucePlugin_AAXManufacturerCode JucePlugin_ManufacturerCode +#endif +#ifndef JucePlugin_AAXProductId + #define JucePlugin_AAXProductId JucePlugin_PluginCode +#endif +#ifndef JucePlugin_AAXCategory + #define JucePlugin_AAXCategory 0 +#endif +#ifndef JucePlugin_AAXDisableBypass + #define JucePlugin_AAXDisableBypass 0 +#endif +#ifndef JucePlugin_AAXDisableMultiMono + #define JucePlugin_AAXDisableMultiMono 0 +#endif +#ifndef JucePlugin_IAAType + #define JucePlugin_IAAType 0x61757278 +#endif +#ifndef JucePlugin_IAASubType + #define JucePlugin_IAASubType JucePlugin_PluginCode +#endif +#ifndef JucePlugin_IAAName + #define JucePlugin_IAAName "111euphoria: crushFX" +#endif +#ifndef JucePlugin_VSTNumMidiInputs + #define JucePlugin_VSTNumMidiInputs 16 +#endif +#ifndef JucePlugin_VSTNumMidiOutputs + #define JucePlugin_VSTNumMidiOutputs 16 +#endif +#ifndef JucePlugin_ARAContentTypes + #define JucePlugin_ARAContentTypes 0 +#endif +#ifndef JucePlugin_ARATransformationFlags + #define JucePlugin_ARATransformationFlags 0 +#endif +#ifndef JucePlugin_ARAFactoryID + #define JucePlugin_ARAFactoryID "com.yourcompany.crushFX.factory" +#endif +#ifndef JucePlugin_ARADocumentArchiveID + #define JucePlugin_ARADocumentArchiveID "com.yourcompany.crushFX.aradocumentarchive.1.0.0" +#endif +#ifndef JucePlugin_ARACompatibleArchiveIDs + #define JucePlugin_ARACompatibleArchiveIDs "" +#endif diff --git a/JuceLibraryCode/ReadMe.txt b/JuceLibraryCode/ReadMe.txt new file mode 100644 index 0000000..091a5aa --- /dev/null +++ b/JuceLibraryCode/ReadMe.txt @@ -0,0 +1,12 @@ + + Important Note!! + ================ + +The purpose of this folder is to contain files that are auto-generated by the Projucer, +and ALL files in this folder will be mercilessly DELETED and completely re-written whenever +the Projucer saves your project. + +Therefore, it's a bad idea to make any manual changes to the files in here, or to +put any of your own files in here if you don't want to lose them. (Of course you may choose +to add the folder's contents to your version-control system so that you can re-merge your own +modifications after the Projucer has saved its changes). diff --git a/JuceLibraryCode/include_juce_audio_basics.mm b/JuceLibraryCode/include_juce_audio_basics.mm new file mode 100644 index 0000000..c7f36c6 --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_basics.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_devices.cpp b/JuceLibraryCode/include_juce_audio_devices.cpp new file mode 100644 index 0000000..29b774f --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_devices.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_devices.mm b/JuceLibraryCode/include_juce_audio_devices.mm new file mode 100644 index 0000000..287da26 --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_devices.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_formats.cpp b/JuceLibraryCode/include_juce_audio_formats.cpp new file mode 100644 index 0000000..8dac332 --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_formats.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_formats.mm b/JuceLibraryCode/include_juce_audio_formats.mm new file mode 100644 index 0000000..79e6a22 --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_formats.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_plugin_client_AAX.cpp b/JuceLibraryCode/include_juce_audio_plugin_client_AAX.cpp new file mode 100644 index 0000000..8ce6c02 --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_plugin_client_AAX.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_plugin_client_AAX.mm b/JuceLibraryCode/include_juce_audio_plugin_client_AAX.mm new file mode 100644 index 0000000..c813bc9 --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_plugin_client_AAX.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_plugin_client_AAX_utils.cpp b/JuceLibraryCode/include_juce_audio_plugin_client_AAX_utils.cpp new file mode 100644 index 0000000..1135bc7 --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_plugin_client_AAX_utils.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_plugin_client_ARA.cpp b/JuceLibraryCode/include_juce_audio_plugin_client_ARA.cpp new file mode 100644 index 0000000..69f205b --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_plugin_client_ARA.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_plugin_client_AU_1.mm b/JuceLibraryCode/include_juce_audio_plugin_client_AU_1.mm new file mode 100644 index 0000000..179c513 --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_plugin_client_AU_1.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_plugin_client_AU_2.mm b/JuceLibraryCode/include_juce_audio_plugin_client_AU_2.mm new file mode 100644 index 0000000..3553cb9 --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_plugin_client_AU_2.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_plugin_client_AUv3.mm b/JuceLibraryCode/include_juce_audio_plugin_client_AUv3.mm new file mode 100644 index 0000000..a1fa5aa --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_plugin_client_AUv3.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_plugin_client_LV2.cpp b/JuceLibraryCode/include_juce_audio_plugin_client_LV2.cpp new file mode 100644 index 0000000..7de5bef --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_plugin_client_LV2.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_plugin_client_LV2.mm b/JuceLibraryCode/include_juce_audio_plugin_client_LV2.mm new file mode 100644 index 0000000..89611a6 --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_plugin_client_LV2.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_plugin_client_Standalone.cpp b/JuceLibraryCode/include_juce_audio_plugin_client_Standalone.cpp new file mode 100644 index 0000000..02eb7db --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_plugin_client_Standalone.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_plugin_client_Unity.cpp b/JuceLibraryCode/include_juce_audio_plugin_client_Unity.cpp new file mode 100644 index 0000000..5b42c8b --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_plugin_client_Unity.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_plugin_client_VST2.cpp b/JuceLibraryCode/include_juce_audio_plugin_client_VST2.cpp new file mode 100644 index 0000000..f3ab569 --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_plugin_client_VST2.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_plugin_client_VST2.mm b/JuceLibraryCode/include_juce_audio_plugin_client_VST2.mm new file mode 100644 index 0000000..c7ef970 --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_plugin_client_VST2.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_plugin_client_VST3.cpp b/JuceLibraryCode/include_juce_audio_plugin_client_VST3.cpp new file mode 100644 index 0000000..546dd91 --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_plugin_client_VST3.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_plugin_client_VST3.mm b/JuceLibraryCode/include_juce_audio_plugin_client_VST3.mm new file mode 100644 index 0000000..d3eae05 --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_plugin_client_VST3.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_processors.cpp b/JuceLibraryCode/include_juce_audio_processors.cpp new file mode 100644 index 0000000..217d330 --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_processors.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_processors.mm b/JuceLibraryCode/include_juce_audio_processors.mm new file mode 100644 index 0000000..1f7cc41 --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_processors.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_processors_ara.cpp b/JuceLibraryCode/include_juce_audio_processors_ara.cpp new file mode 100644 index 0000000..e0c34d4 --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_processors_ara.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp b/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp new file mode 100644 index 0000000..64b4d5f --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_processors_lv2_libs.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_utils.cpp b/JuceLibraryCode/include_juce_audio_utils.cpp new file mode 100644 index 0000000..046bf31 --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_utils.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_audio_utils.mm b/JuceLibraryCode/include_juce_audio_utils.mm new file mode 100644 index 0000000..a3f746d --- /dev/null +++ b/JuceLibraryCode/include_juce_audio_utils.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_core.cpp b/JuceLibraryCode/include_juce_core.cpp new file mode 100644 index 0000000..84fe988 --- /dev/null +++ b/JuceLibraryCode/include_juce_core.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_core.mm b/JuceLibraryCode/include_juce_core.mm new file mode 100644 index 0000000..9ee67bf --- /dev/null +++ b/JuceLibraryCode/include_juce_core.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_data_structures.cpp b/JuceLibraryCode/include_juce_data_structures.cpp new file mode 100644 index 0000000..152980a --- /dev/null +++ b/JuceLibraryCode/include_juce_data_structures.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_data_structures.mm b/JuceLibraryCode/include_juce_data_structures.mm new file mode 100644 index 0000000..02b9711 --- /dev/null +++ b/JuceLibraryCode/include_juce_data_structures.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_dsp.cpp b/JuceLibraryCode/include_juce_dsp.cpp new file mode 100644 index 0000000..0f0af65 --- /dev/null +++ b/JuceLibraryCode/include_juce_dsp.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_dsp.mm b/JuceLibraryCode/include_juce_dsp.mm new file mode 100644 index 0000000..a5cb956 --- /dev/null +++ b/JuceLibraryCode/include_juce_dsp.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_events.cpp b/JuceLibraryCode/include_juce_events.cpp new file mode 100644 index 0000000..39268e2 --- /dev/null +++ b/JuceLibraryCode/include_juce_events.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_events.mm b/JuceLibraryCode/include_juce_events.mm new file mode 100644 index 0000000..191a998 --- /dev/null +++ b/JuceLibraryCode/include_juce_events.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_graphics.cpp b/JuceLibraryCode/include_juce_graphics.cpp new file mode 100644 index 0000000..8ccabef --- /dev/null +++ b/JuceLibraryCode/include_juce_graphics.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_graphics.mm b/JuceLibraryCode/include_juce_graphics.mm new file mode 100644 index 0000000..6bb7456 --- /dev/null +++ b/JuceLibraryCode/include_juce_graphics.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_gui_basics.cpp b/JuceLibraryCode/include_juce_gui_basics.cpp new file mode 100644 index 0000000..71d04b2 --- /dev/null +++ b/JuceLibraryCode/include_juce_gui_basics.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_gui_basics.mm b/JuceLibraryCode/include_juce_gui_basics.mm new file mode 100644 index 0000000..e449e0b --- /dev/null +++ b/JuceLibraryCode/include_juce_gui_basics.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_gui_extra.cpp b/JuceLibraryCode/include_juce_gui_extra.cpp new file mode 100644 index 0000000..a33ece0 --- /dev/null +++ b/JuceLibraryCode/include_juce_gui_extra.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_gui_extra.mm b/JuceLibraryCode/include_juce_gui_extra.mm new file mode 100644 index 0000000..6dacee3 --- /dev/null +++ b/JuceLibraryCode/include_juce_gui_extra.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_opengl.cpp b/JuceLibraryCode/include_juce_opengl.cpp new file mode 100644 index 0000000..e6541a4 --- /dev/null +++ b/JuceLibraryCode/include_juce_opengl.cpp @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/JuceLibraryCode/include_juce_opengl.mm b/JuceLibraryCode/include_juce_opengl.mm new file mode 100644 index 0000000..793619e --- /dev/null +++ b/JuceLibraryCode/include_juce_opengl.mm @@ -0,0 +1,8 @@ +/* + + IMPORTANT! This file is auto-generated each time you save your + project - if you alter its contents, your changes may be overwritten! + +*/ + +#include diff --git a/Source/CrushSliderLook.cpp b/Source/CrushSliderLook.cpp new file mode 100644 index 0000000..838b0e9 --- /dev/null +++ b/Source/CrushSliderLook.cpp @@ -0,0 +1,23 @@ +/* + ============================================================================== + + CrushSliderLook.cpp + Created: 16 Jan 2026 9:40:57pm + Author: esca + + ============================================================================== +*/ + +#include "CrushSliderLook.h" +#include "BinaryData.h" +void CrushSliderLook::setImages(){ + bg = juce::ImageCache::getFromMemory(BinaryData::crushslidebg_png, BinaryData::crushslidebg_pngSize); + fg = juce::ImageCache::getFromMemory(BinaryData::crushslidefg_png, BinaryData::crushslidefg_pngSize); +} + +void CrushSliderLook::drawLinearSlider(juce::Graphics &g, int x, int y, int width, int height, float sliderPos, float minSliderPos, float maxSliderPos, juce::Slider::SliderStyle sliderStyle, juce::Slider &slider ){ + g.drawImage(bg, 0, 0, 205, 43, 0, 0, 205, 43, false); //draw background + float fraction = (sliderPos-minSliderPos)/(width); + int fgWidth = (int)(205*fraction); + g.drawImage(fg, 0, 0, fgWidth, 43, 0, 0, fgWidth, 43, false); +} diff --git a/Source/CrushSliderLook.h b/Source/CrushSliderLook.h new file mode 100644 index 0000000..a62a211 --- /dev/null +++ b/Source/CrushSliderLook.h @@ -0,0 +1,22 @@ +/* + ============================================================================== + + CrushSliderLook.h + Created: 16 Jan 2026 9:40:57pm + Author: esca + + ============================================================================== +*/ + +#pragma once +#include "juce_gui_basics/juce_gui_basics.h" +#include + +class CrushSliderLook : public juce::LookAndFeel_V4{ +public: + void drawLinearSlider(juce::Graphics &g, int x, int y, int width, int height, float sliderPos, float minSliderPos, float maxSliderPos, juce::Slider::SliderStyle sliderStyle, juce::Slider &slider ) override; + void setImages(); +private: + juce::Image bg; + juce::Image fg; +}; diff --git a/Source/CrushView.cpp b/Source/CrushView.cpp new file mode 100644 index 0000000..17163c8 --- /dev/null +++ b/Source/CrushView.cpp @@ -0,0 +1,51 @@ +/* + ============================================================================== + + CrushView.cpp + Created: 16 Jan 2026 5:05:38pm + Author: esca + + ============================================================================== +*/ + +#include +#include "CrushView.h" + +//============================================================================== +CrushView::CrushView() +{ + // In your constructor, you should add any child components, and + // initialise any special settings that your component needs. + +} + +CrushView::~CrushView() +{ +} + +void CrushView::paint (juce::Graphics& g) +{ + /* This demo code just fills the component's background and + draws some placeholder text to get you started. + + You should replace everything in this method with your own + drawing code.. + */ + + g.fillAll (getLookAndFeel().findColour (juce::ResizableWindow::backgroundColourId)); // clear the background + + g.setColour (juce::Colours::grey); + g.drawRect (getLocalBounds(), 1); // draw an outline around the component + + g.setColour (juce::Colours::white); + g.setFont (14.0f); + g.drawText ("CrushView", getLocalBounds(), + juce::Justification::centred, true); // draw some placeholder text +} + +void CrushView::resized() +{ + // This method is where you should set the bounds of any child + // components that your component contains.. + +} diff --git a/Source/CrushView.h b/Source/CrushView.h new file mode 100644 index 0000000..b2cd3ae --- /dev/null +++ b/Source/CrushView.h @@ -0,0 +1,29 @@ +/* + ============================================================================== + + CrushView.h + Created: 16 Jan 2026 5:05:38pm + Author: esca + + ============================================================================== +*/ + +#pragma once + +#include + +//============================================================================== +/* +*/ +class CrushView : public juce::Component +{ +public: + CrushView(); + ~CrushView() override; + + void paint (juce::Graphics&) override; + void resized() override; + +private: + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CrushView) +}; diff --git a/Source/DialLook.cpp b/Source/DialLook.cpp new file mode 100644 index 0000000..5211b71 --- /dev/null +++ b/Source/DialLook.cpp @@ -0,0 +1,34 @@ +/* + ============================================================================== + + Dial.cpp + Created: 16 Jan 2026 7:16:39pm + Author: esca + + ============================================================================== +*/ + +#include "DialLook.h" +#include "BinaryData.h" +#include "juce_graphics/juce_graphics.h" +void DialLook::drawRotarySlider(juce::Graphics& g, int x, int y, int width, int height, float sliderPos, const float rotaryStartAngle, const float rotaryEndAngle, juce::Slider&){ + + auto radius = (float) juce::jmin (width / 2, height / 2) - 4.0f; + auto centreX = (float) x + (float) width * 0.5f; + auto centreY = (float) y + (float) height * 0.5f; + auto rx = centreX - radius; + auto ry = centreY - radius; + auto rw = radius * 2.0f; + auto angle = rotaryStartAngle + sliderPos * (rotaryEndAngle - rotaryStartAngle); + + //background + g.drawImage(bgImg, x, y, width, height, 0, 0, 55, 56); + + //rotator + g.drawImageTransformed(rotator, juce::AffineTransform::translation(-3, -2).rotated(angle+3.141f).translated(centreX, centreY), false); +} + +void DialLook::setImage(){ + bgImg = juce::ImageCache::getFromMemory(BinaryData::dialbg_png, BinaryData::dialbg_pngSize); + rotator = juce::ImageCache::getFromMemory(BinaryData::rotator_png, BinaryData::rotator_pngSize); +} diff --git a/Source/DialLook.h b/Source/DialLook.h new file mode 100644 index 0000000..8e09728 --- /dev/null +++ b/Source/DialLook.h @@ -0,0 +1,22 @@ +/* + ============================================================================== + + Dial.h + Created: 16 Jan 2026 7:16:39pm + Author: esca + + ============================================================================== +*/ + +#pragma once +#include "juce_gui_basics/juce_gui_basics.h" +#include + +class DialLook : public juce::LookAndFeel_V4{ +public: + void drawRotarySlider(juce::Graphics& g, int x, int y, int width, int height, float sliderPos, const float rotaryStartAngle, const float rotaryEndAngle, juce::Slider&) override; + void setImage(); +private: + juce::Image bgImg; + juce::Image rotator; +}; diff --git a/Source/FilterButtonLook.cpp b/Source/FilterButtonLook.cpp new file mode 100644 index 0000000..49ebc38 --- /dev/null +++ b/Source/FilterButtonLook.cpp @@ -0,0 +1,27 @@ +/* + ============================================================================== + + FilterButtonLook.cpp + Created: 16 Jan 2026 8:58:45pm + Author: esca + + ============================================================================== +*/ + +#include "FilterButtonLook.h" +#include "BinaryData.h" +#include "juce_graphics/juce_graphics.h" + +void FilterButtonLook::setImages(){ + lp = juce::ImageCache::getFromMemory(BinaryData::lpon_png, BinaryData::lpon_pngSize); + hp = juce::ImageCache::getFromMemory(BinaryData::hpon_png, BinaryData::hpon_pngSize); +} + +void FilterButtonLook::drawButtonBackground(juce::Graphics& g, juce::Button& button, const juce::Colour& backgroundColour, bool, bool isButtonDown){ + int w = 94; + int h = 29; + if(button.getToggleState()){ + g.drawImage(hp, 0, 0, w, h, 0, 0, w, h, false); + } + else g.drawImage(lp, 0, 0, w, h, 0, 0, w, h, false); +} diff --git a/Source/FilterButtonLook.h b/Source/FilterButtonLook.h new file mode 100644 index 0000000..0b19a00 --- /dev/null +++ b/Source/FilterButtonLook.h @@ -0,0 +1,22 @@ +/* + ============================================================================== + + FilterButtonLook.h + Created: 16 Jan 2026 8:58:45pm + Author: esca + + ============================================================================== +*/ + +#pragma once +#include "juce_gui_basics/juce_gui_basics.h" +#include + +class FilterButtonLook : public juce::LookAndFeel_V4{ +public: + void setImages(); + void drawButtonBackground (juce::Graphics& g, juce::Button& button, const juce::Colour& backgroundColour, bool, bool isButtonDown) override; +private: + juce::Image lp; + juce::Image hp; +}; diff --git a/Source/FilterView.cpp b/Source/FilterView.cpp new file mode 100644 index 0000000..66df4e5 --- /dev/null +++ b/Source/FilterView.cpp @@ -0,0 +1,51 @@ +/* + ============================================================================== + + FilterView.cpp + Created: 16 Jan 2026 5:06:31pm + Author: esca + + ============================================================================== +*/ + +#include +#include "FilterView.h" + +//============================================================================== +FilterView::FilterView() +{ + // In your constructor, you should add any child components, and + // initialise any special settings that your component needs. + +} + +FilterView::~FilterView() +{ +} + +void FilterView::paint (juce::Graphics& g) +{ + /* This demo code just fills the component's background and + draws some placeholder text to get you started. + + You should replace everything in this method with your own + drawing code.. + */ + + g.fillAll (getLookAndFeel().findColour (juce::ResizableWindow::backgroundColourId)); // clear the background + + g.setColour (juce::Colours::grey); + g.drawRect (getLocalBounds(), 1); // draw an outline around the component + + g.setColour (juce::Colours::white); + g.setFont (14.0f); + g.drawText ("FilterView", getLocalBounds(), + juce::Justification::centred, true); // draw some placeholder text +} + +void FilterView::resized() +{ + // This method is where you should set the bounds of any child + // components that your component contains.. + +} diff --git a/Source/FilterView.h b/Source/FilterView.h new file mode 100644 index 0000000..4ed4874 --- /dev/null +++ b/Source/FilterView.h @@ -0,0 +1,29 @@ +/* + ============================================================================== + + FilterView.h + Created: 16 Jan 2026 5:06:31pm + Author: esca + + ============================================================================== +*/ + +#pragma once + +#include + +//============================================================================== +/* +*/ +class FilterView : public juce::Component +{ +public: + FilterView(); + ~FilterView() override; + + void paint (juce::Graphics&) override; + void resized() override; + +private: + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FilterView) +}; diff --git a/Source/OpenGLUtils.cpp b/Source/OpenGLUtils.cpp new file mode 100644 index 0000000..4fc9979 --- /dev/null +++ b/Source/OpenGLUtils.cpp @@ -0,0 +1,43 @@ +/* + ============================================================================== + + OpenGLUtils.cpp + Created: 17 Jan 2026 11:41:12am + Author: esca + + ============================================================================== +*/ + +#include "OpenGLUtils.h" +#include +#include +#include + +void svCol(Vertex &v, float newColour[4]){ + memcpy(&v.colour, &newColour, 4*sizeof(float)); +} + +void setColour(std::vector &verticeList, float newColour[4]){ + for(Vertex v : verticeList){ + svCol(v, newColour); + } +} + +void vTransform(std::vector &verticeList, int transform[2]){ + for(Vertex &v : verticeList){ + v.position[0] = transform[0]; + v.position[1] = transform[1]; + } +} + +std::vector generateSineWave(int numVertices, float angle, float startingColour[4]){ + //generates one cycle of a sine wave with vertices numVertices and starting at angle angle + + std::vector ret(numVertices, Vertex{}); + for (int i = 0; i +//random shit for convenience + +#define VERTEXSHADER R"(#version 330 core + in vec2 position; + in vec4 colour; + out vec4 fragcolour; + void main(){ + gl_Position = vec4(position, 1, 1); + fragcolour = colour; + } +)" + +#define FRAGSHADER R"(#version 330 core + in vec4 fragcolour; + void main(){ + gl_FragColour = fragcolour; + } +)"; + +struct Vertex{ + float position[2]; + float colour[4]; +}; +void svCol(Vertex &v, float newColour[4]); + +void setColour(std::vector &verticeList, float newColour[4]); + +void vTransform(std::vector &verticeList, int transform[2]); + +std::vector generateSineWave(int numVertices, float angle, float startingColour[4]); diff --git a/Source/PluginEditor.cpp b/Source/PluginEditor.cpp new file mode 100644 index 0000000..2464944 --- /dev/null +++ b/Source/PluginEditor.cpp @@ -0,0 +1,36 @@ +/* + ============================================================================== + + This file contains the basic framework code for a JUCE plugin editor. + + ============================================================================== +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + +//============================================================================== +CrushFXAudioProcessorEditor::CrushFXAudioProcessorEditor (CrushFXAudioProcessor& p) + : AudioProcessorEditor (&p), audioProcessor (p) +{ + // Make sure that before the constructor has finished, you've set the + // editor's size to whatever you need it to be. + bg = juce::ImageCache::getFromMemory(BinaryData::BG_png, BinaryData::BG_pngSize); + setSize (696, 400); +} + +CrushFXAudioProcessorEditor::~CrushFXAudioProcessorEditor() +{ +} + +//============================================================================== +void CrushFXAudioProcessorEditor::paint (juce::Graphics& g) +{ + g.drawImage(bg, getLocalBounds().toFloat()); +} + +void CrushFXAudioProcessorEditor::resized() +{ + // This is generally where you'll want to lay out the positions of any + // subcomponents in your editor.. +} diff --git a/Source/PluginEditor.h b/Source/PluginEditor.h new file mode 100644 index 0000000..8d35674 --- /dev/null +++ b/Source/PluginEditor.h @@ -0,0 +1,33 @@ +/* + ============================================================================== + + This file contains the basic framework code for a JUCE plugin editor. + + ============================================================================== +*/ + +#pragma once + +#include +#include "PluginProcessor.h" +//============================================================================== +/** +*/ +class CrushFXAudioProcessorEditor : public juce::AudioProcessorEditor +{ +public: + CrushFXAudioProcessorEditor (CrushFXAudioProcessor&); + ~CrushFXAudioProcessorEditor() override; + + //============================================================================== + void paint (juce::Graphics&) override; + void resized() override; + +private: + juce::Image bg; + // This reference is provided as a quick way for your editor to + // access the processor object that created it. + CrushFXAudioProcessor& audioProcessor; + + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CrushFXAudioProcessorEditor) +}; diff --git a/Source/PluginProcessor.cpp b/Source/PluginProcessor.cpp new file mode 100644 index 0000000..098dc93 --- /dev/null +++ b/Source/PluginProcessor.cpp @@ -0,0 +1,191 @@ +/* + ============================================================================== + + This file contains the basic framework code for a JUCE plugin processor. + + ============================================================================== +*/ + +#include "PluginProcessor.h" +#include "PluginEditor.h" + +//============================================================================== +CrushFXAudioProcessor::CrushFXAudioProcessor() +#ifndef JucePlugin_PreferredChannelConfigurations + : AudioProcessor (BusesProperties() + #if ! JucePlugin_IsMidiEffect + #if ! JucePlugin_IsSynth + .withInput ("Input", juce::AudioChannelSet::stereo(), true) + #endif + .withOutput ("Output", juce::AudioChannelSet::stereo(), true) + #endif + ) +#endif +{ +} + +CrushFXAudioProcessor::~CrushFXAudioProcessor() +{ +} + +//============================================================================== +const juce::String CrushFXAudioProcessor::getName() const +{ + return JucePlugin_Name; +} + +bool CrushFXAudioProcessor::acceptsMidi() const +{ + #if JucePlugin_WantsMidiInput + return true; + #else + return false; + #endif +} + +bool CrushFXAudioProcessor::producesMidi() const +{ + #if JucePlugin_ProducesMidiOutput + return true; + #else + return false; + #endif +} + +bool CrushFXAudioProcessor::isMidiEffect() const +{ + #if JucePlugin_IsMidiEffect + return true; + #else + return false; + #endif +} + +double CrushFXAudioProcessor::getTailLengthSeconds() const +{ + return 0.0; +} + +int CrushFXAudioProcessor::getNumPrograms() +{ + return 1; // NB: some hosts don't cope very well if you tell them there are 0 programs, + // so this should be at least 1, even if you're not really implementing programs. +} + +int CrushFXAudioProcessor::getCurrentProgram() +{ + return 0; +} + +void CrushFXAudioProcessor::setCurrentProgram (int index) +{ +} + +const juce::String CrushFXAudioProcessor::getProgramName (int index) +{ + return {}; +} + +void CrushFXAudioProcessor::changeProgramName (int index, const juce::String& newName) +{ +} + +//============================================================================== +void CrushFXAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) +{ + // Use this method as the place to do any pre-playback + // initialisation that you need.. +} + +void CrushFXAudioProcessor::releaseResources() +{ + // When playback stops, you can use this as an opportunity to free up any + // spare memory, etc. +} + +#ifndef JucePlugin_PreferredChannelConfigurations +bool CrushFXAudioProcessor::isBusesLayoutSupported (const BusesLayout& layouts) const +{ + #if JucePlugin_IsMidiEffect + juce::ignoreUnused (layouts); + return true; + #else + // This is the place where you check if the layout is supported. + // In this template code we only support mono or stereo. + // Some plugin hosts, such as certain GarageBand versions, will only + // load plugins that support stereo bus layouts. + if (layouts.getMainOutputChannelSet() != juce::AudioChannelSet::mono() + && layouts.getMainOutputChannelSet() != juce::AudioChannelSet::stereo()) + return false; + + // This checks if the input layout matches the output layout + #if ! JucePlugin_IsSynth + if (layouts.getMainOutputChannelSet() != layouts.getMainInputChannelSet()) + return false; + #endif + + return true; + #endif +} +#endif + +void CrushFXAudioProcessor::processBlock (juce::AudioBuffer& buffer, juce::MidiBuffer& midiMessages) +{ + juce::ScopedNoDenormals noDenormals; + auto totalNumInputChannels = getTotalNumInputChannels(); + auto totalNumOutputChannels = getTotalNumOutputChannels(); + + // In case we have more outputs than inputs, this code clears any output + // channels that didn't contain input data, (because these aren't + // guaranteed to be empty - they may contain garbage). + // This is here to avoid people getting screaming feedback + // when they first compile a plugin, but obviously you don't need to keep + // this code if your algorithm always overwrites all the output channels. + for (auto i = totalNumInputChannels; i < totalNumOutputChannels; ++i) + buffer.clear (i, 0, buffer.getNumSamples()); + + // This is the place where you'd normally do the guts of your plugin's + // audio processing... + // Make sure to reset the state if your inner loop is processing + // the samples and the outer loop is handling the channels. + // Alternatively, you can process the samples with the channels + // interleaved by keeping the same state. + for (int channel = 0; channel < totalNumInputChannels; ++channel) + { + auto* channelData = buffer.getWritePointer (channel); + + // ..do something to the data... + } +} + +//============================================================================== +bool CrushFXAudioProcessor::hasEditor() const +{ + return true; // (change this to false if you choose to not supply an editor) +} + +juce::AudioProcessorEditor* CrushFXAudioProcessor::createEditor() +{ + return new CrushFXAudioProcessorEditor (*this); +} + +//============================================================================== +void CrushFXAudioProcessor::getStateInformation (juce::MemoryBlock& destData) +{ + // You should use this method to store your parameters in the memory block. + // You could do that either as raw data, or use the XML or ValueTree classes + // as intermediaries to make it easy to save and load complex data. +} + +void CrushFXAudioProcessor::setStateInformation (const void* data, int sizeInBytes) +{ + // You should use this method to restore your parameters from this memory block, + // whose contents will have been created by the getStateInformation() call. +} + +//============================================================================== +// This creates new instances of the plugin.. +juce::AudioProcessor* JUCE_CALLTYPE createPluginFilter() +{ + return new CrushFXAudioProcessor(); +} diff --git a/Source/PluginProcessor.h b/Source/PluginProcessor.h new file mode 100644 index 0000000..4fb9e0d --- /dev/null +++ b/Source/PluginProcessor.h @@ -0,0 +1,59 @@ +/* + ============================================================================== + + This file contains the basic framework code for a JUCE plugin processor. + + ============================================================================== +*/ + +#pragma once + +#include + +//============================================================================== +/** +*/ +class CrushFXAudioProcessor : public juce::AudioProcessor +{ +public: + //============================================================================== + CrushFXAudioProcessor(); + ~CrushFXAudioProcessor() override; + + //============================================================================== + void prepareToPlay (double sampleRate, int samplesPerBlock) override; + void releaseResources() override; + + #ifndef JucePlugin_PreferredChannelConfigurations + bool isBusesLayoutSupported (const BusesLayout& layouts) const override; + #endif + + void processBlock (juce::AudioBuffer&, juce::MidiBuffer&) override; + + //============================================================================== + juce::AudioProcessorEditor* createEditor() override; + bool hasEditor() const override; + + //============================================================================== + const juce::String getName() const override; + + bool acceptsMidi() const override; + bool producesMidi() const override; + bool isMidiEffect() const override; + double getTailLengthSeconds() const override; + + //============================================================================== + int getNumPrograms() override; + int getCurrentProgram() override; + void setCurrentProgram (int index) override; + const juce::String getProgramName (int index) override; + void changeProgramName (int index, const juce::String& newName) override; + + //============================================================================== + void getStateInformation (juce::MemoryBlock& destData) override; + void setStateInformation (const void* data, int sizeInBytes) override; + +private: + //============================================================================== + JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CrushFXAudioProcessor) +}; diff --git a/assets/BG.png b/assets/BG.png new file mode 100644 index 0000000000000000000000000000000000000000..59b28a6b1b08607b8fb6bf56c06b6b97a3afae8c GIT binary patch literal 31662 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 I5;OGuF9#TinE(I) literal 0 HcmV?d00001 diff --git a/assets/crushslidebg.png b/assets/crushslidebg.png new file mode 100644 index 0000000000000000000000000000000000000000..c7e10aff1b9733de2850228e8aba5e2b7d59a1db GIT binary patch literal 679 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 P00000NkvXXu0mjfJ|O+e literal 0 HcmV?d00001 diff --git a/assets/rotator.png b/assets/rotator.png new file mode 100644 index 0000000000000000000000000000000000000000..547b15ce351e23be2469dd955d0b30da8aeeb5b3 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^tUxTy!3HF^YI`}F_~eDWMYyO>!St4zs;7=Nn&L4`ymmX-EMe{)q?4JhsErf*H>A6^xHdg z=J{1oYHtjg9YS>vPXG5Kdc`-%D{=?^8NOS%?f{!jgKup7yDQ3H + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +