From 9aa0c05ac212bb46f7cdd01dc0f038b998f3f936 Mon Sep 17 00:00:00 2001 From: Julian Storer Date: Sat, 19 Sep 2009 14:01:55 +0100 Subject: [PATCH] Complete revamp of the Juce Demo's audio page, to include several tabs of handy demos, including audio recording, synths, playback, audio thumbnails and an automatic round-trip latency detector --- build/macosx/Juce.xcodeproj/project.pbxproj | 12 +- .../macosx/jucedemo.xcodeproj/project.pbxproj | 40 +- .../juce demo/build/win32_vc8/jucedemo.vcproj | 966 ++-- extras/juce demo/src/BinaryData.cpp | 4472 +---------------- extras/juce demo/src/BinaryData.h | 39 - extras/juce demo/src/MainDemoWindow.cpp | 117 +- extras/juce demo/src/binarydata/AudioDemo.cpp | 637 --- .../juce demo/src/binarydata/CameraDemo.cpp | 198 - .../src/binarydata/DragAndDropDemo.cpp | 234 - .../src/binarydata/FontsAndTextDemo.cpp | 209 - .../src/binarydata/InterprocessCommsDemo.cpp | 328 -- .../juce demo/src/binarydata/OpenGLDemo.cpp | 269 - .../src/binarydata/PathsAndTransformsDemo.cpp | 378 -- .../src/binarydata/QuickTimeDemo.cpp | 123 - extras/juce demo/src/binarydata/TableDemo.cpp | 325 -- .../src/binarydata/ThreadingDemo.cpp | 351 -- .../juce demo/src/binarydata/TreeViewDemo.cpp | 271 - .../src/binarydata/WebBrowserDemo.cpp | 148 - .../juce demo/src/binarydata/WidgetsDemo.cpp | 1429 ------ extras/juce demo/src/demos/AudioDemo.cpp | 637 --- .../src/demos/AudioDemoLatencyPage.cpp | 371 ++ .../src/demos/AudioDemoLatencyPage.h | 79 + .../src/demos/AudioDemoPlaybackPage.cpp | 352 ++ .../src/demos/AudioDemoPlaybackPage.h | 96 + .../src/demos/AudioDemoRecordPage.cpp | 392 ++ .../juce demo/src/demos/AudioDemoRecordPage.h | 80 + .../src/demos/AudioDemoSetupPage.cpp | 105 + .../juce demo/src/demos/AudioDemoSetupPage.h | 72 + .../src/demos/AudioDemoSynthPage.cpp | 393 ++ .../juce demo/src/demos/AudioDemoSynthPage.h | 82 + .../src/demos/AudioDemoTabComponent.cpp | 210 + .../src/demos/AudioDemoTabComponent.h | 102 + extras/juce demo/src/juce_AppConfig.h | 2 + juce_amalgamated.cpp | 3 + src/native/windows/juce_win32_Files.cpp | 3 + 35 files changed, 2908 insertions(+), 10617 deletions(-) delete mode 100644 extras/juce demo/src/binarydata/AudioDemo.cpp delete mode 100644 extras/juce demo/src/binarydata/CameraDemo.cpp delete mode 100644 extras/juce demo/src/binarydata/DragAndDropDemo.cpp delete mode 100644 extras/juce demo/src/binarydata/FontsAndTextDemo.cpp delete mode 100644 extras/juce demo/src/binarydata/InterprocessCommsDemo.cpp delete mode 100644 extras/juce demo/src/binarydata/OpenGLDemo.cpp delete mode 100644 extras/juce demo/src/binarydata/PathsAndTransformsDemo.cpp delete mode 100644 extras/juce demo/src/binarydata/QuickTimeDemo.cpp delete mode 100644 extras/juce demo/src/binarydata/TableDemo.cpp delete mode 100644 extras/juce demo/src/binarydata/ThreadingDemo.cpp delete mode 100644 extras/juce demo/src/binarydata/TreeViewDemo.cpp delete mode 100644 extras/juce demo/src/binarydata/WebBrowserDemo.cpp delete mode 100644 extras/juce demo/src/binarydata/WidgetsDemo.cpp delete mode 100644 extras/juce demo/src/demos/AudioDemo.cpp create mode 100644 extras/juce demo/src/demos/AudioDemoLatencyPage.cpp create mode 100644 extras/juce demo/src/demos/AudioDemoLatencyPage.h create mode 100644 extras/juce demo/src/demos/AudioDemoPlaybackPage.cpp create mode 100644 extras/juce demo/src/demos/AudioDemoPlaybackPage.h create mode 100644 extras/juce demo/src/demos/AudioDemoRecordPage.cpp create mode 100644 extras/juce demo/src/demos/AudioDemoRecordPage.h create mode 100644 extras/juce demo/src/demos/AudioDemoSetupPage.cpp create mode 100644 extras/juce demo/src/demos/AudioDemoSetupPage.h create mode 100644 extras/juce demo/src/demos/AudioDemoSynthPage.cpp create mode 100644 extras/juce demo/src/demos/AudioDemoSynthPage.h create mode 100644 extras/juce demo/src/demos/AudioDemoTabComponent.cpp create mode 100644 extras/juce demo/src/demos/AudioDemoTabComponent.h diff --git a/build/macosx/Juce.xcodeproj/project.pbxproj b/build/macosx/Juce.xcodeproj/project.pbxproj index ee2359cb4c..9d108a2c4e 100644 --- a/build/macosx/Juce.xcodeproj/project.pbxproj +++ b/build/macosx/Juce.xcodeproj/project.pbxproj @@ -1338,14 +1338,14 @@ 84F1E70210403614006A1807 /* juce_AudioThumbnail.h */, 84F1E70310403614006A1807 /* juce_AudioThumbnailCache.cpp */, 84F1E70410403614006A1807 /* juce_AudioThumbnailCache.h */, - 84F1E70510403614006A1807 /* juce_FlacAudioFormat.h */, - 84F1E70610403614006A1807 /* juce_OggVorbisAudioFormat.h */, - 84F1E70710403614006A1807 /* juce_QuickTimeAudioFormat.h */, - 84F1E70810403614006A1807 /* juce_WavAudioFormat.h */, - 84F1E70910403614006A1807 /* juce_WavAudioFormat.cpp */, - 84F1E70A10403614006A1807 /* juce_QuickTimeAudioFormat.cpp */, 84F1E70B10403614006A1807 /* juce_FlacAudioFormat.cpp */, + 84F1E70510403614006A1807 /* juce_FlacAudioFormat.h */, 84F1E70C10403614006A1807 /* juce_OggVorbisAudioFormat.cpp */, + 84F1E70610403614006A1807 /* juce_OggVorbisAudioFormat.h */, + 84F1E70A10403614006A1807 /* juce_QuickTimeAudioFormat.cpp */, + 84F1E70710403614006A1807 /* juce_QuickTimeAudioFormat.h */, + 84F1E70910403614006A1807 /* juce_WavAudioFormat.cpp */, + 84F1E70810403614006A1807 /* juce_WavAudioFormat.h */, ); name = audio_file_formats; path = ../../src/audio/audio_file_formats; diff --git a/extras/juce demo/build/macosx/jucedemo.xcodeproj/project.pbxproj b/extras/juce demo/build/macosx/jucedemo.xcodeproj/project.pbxproj index b8d319af9e..6b4f1fabf9 100644 --- a/extras/juce demo/build/macosx/jucedemo.xcodeproj/project.pbxproj +++ b/extras/juce demo/build/macosx/jucedemo.xcodeproj/project.pbxproj @@ -14,7 +14,6 @@ 841FE4410E8ABDD4003C3263 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 841FE43B0E8ABDD4003C3263 /* WebKit.framework */; }; 8450577A0EB52CE500029DFF /* QuickTime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 845057790EB52CE500029DFF /* QuickTime.framework */; }; 847F4D900E8AC35C00F64426 /* QTKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 847F4D8F0E8AC35C00F64426 /* QTKit.framework */; }; - 847F4EA50E8BA9C300F64426 /* AudioDemo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 847F4E9A0E8BA9C300F64426 /* AudioDemo.cpp */; }; 847F4EA60E8BA9C300F64426 /* DragAndDropDemo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 847F4E9B0E8BA9C300F64426 /* DragAndDropDemo.cpp */; }; 847F4EA70E8BA9C300F64426 /* FontsAndTextDemo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 847F4E9C0E8BA9C300F64426 /* FontsAndTextDemo.cpp */; }; 847F4EA80E8BA9C300F64426 /* InterprocessCommsDemo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 847F4E9D0E8BA9C300F64426 /* InterprocessCommsDemo.cpp */; }; @@ -29,6 +28,12 @@ 847F4EB90E8BA9DD00F64426 /* BinaryData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 847F4EB10E8BA9DD00F64426 /* BinaryData.cpp */; }; 847F4EBA0E8BA9DD00F64426 /* juce_LibrarySource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 847F4EB40E8BA9DD00F64426 /* juce_LibrarySource.mm */; }; 847F4EBB0E8BA9DD00F64426 /* MainDemoWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 847F4EB60E8BA9DD00F64426 /* MainDemoWindow.cpp */; }; + 84913FDE1063947900456AFC /* AudioDemoLatencyPage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84913FD41063947900456AFC /* AudioDemoLatencyPage.cpp */; }; + 84913FDF1063947900456AFC /* AudioDemoPlaybackPage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84913FD61063947900456AFC /* AudioDemoPlaybackPage.cpp */; }; + 84913FE01063947900456AFC /* AudioDemoSetupPage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84913FD81063947900456AFC /* AudioDemoSetupPage.cpp */; }; + 84913FE11063947900456AFC /* AudioDemoSynthPage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84913FDA1063947900456AFC /* AudioDemoSynthPage.cpp */; }; + 84913FE21063947900456AFC /* AudioDemoTabComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84913FDC1063947900456AFC /* AudioDemoTabComponent.cpp */; }; + 849144091064E54800456AFC /* AudioDemoRecordPage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 849144071064E54800456AFC /* AudioDemoRecordPage.cpp */; }; 849786F3103560630020003B /* DiscRecording.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 849786F2103560630020003B /* DiscRecording.framework */; }; 84E81551100BAF6200FAE212 /* WebBrowserDemo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84E81550100BAF6200FAE212 /* WebBrowserDemo.cpp */; }; 84EE00FA0FF22E390093FACA /* CameraDemo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84EE00F90FF22E390093FACA /* CameraDemo.cpp */; }; @@ -46,7 +51,6 @@ 841FE43B0E8ABDD4003C3263 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = /System/Library/Frameworks/WebKit.framework; sourceTree = ""; }; 845057790EB52CE500029DFF /* QuickTime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickTime.framework; path = /System/Library/Frameworks/QuickTime.framework; sourceTree = ""; }; 847F4D8F0E8AC35C00F64426 /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = /System/Library/Frameworks/QTKit.framework; sourceTree = ""; }; - 847F4E9A0E8BA9C300F64426 /* AudioDemo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AudioDemo.cpp; path = ../../src/demos/AudioDemo.cpp; sourceTree = SOURCE_ROOT; }; 847F4E9B0E8BA9C300F64426 /* DragAndDropDemo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DragAndDropDemo.cpp; path = ../../src/demos/DragAndDropDemo.cpp; sourceTree = SOURCE_ROOT; }; 847F4E9C0E8BA9C300F64426 /* FontsAndTextDemo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FontsAndTextDemo.cpp; path = ../../src/demos/FontsAndTextDemo.cpp; sourceTree = SOURCE_ROOT; }; 847F4E9D0E8BA9C300F64426 /* InterprocessCommsDemo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InterprocessCommsDemo.cpp; path = ../../src/demos/InterprocessCommsDemo.cpp; sourceTree = SOURCE_ROOT; }; @@ -65,6 +69,18 @@ 847F4EB50E8BA9DD00F64426 /* jucedemo_headers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jucedemo_headers.h; path = ../../src/jucedemo_headers.h; sourceTree = SOURCE_ROOT; }; 847F4EB60E8BA9DD00F64426 /* MainDemoWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MainDemoWindow.cpp; path = ../../src/MainDemoWindow.cpp; sourceTree = SOURCE_ROOT; }; 847F4EB70E8BA9DD00F64426 /* MainDemoWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MainDemoWindow.h; path = ../../src/MainDemoWindow.h; sourceTree = SOURCE_ROOT; }; + 84913FD41063947900456AFC /* AudioDemoLatencyPage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AudioDemoLatencyPage.cpp; path = ../../src/demos/AudioDemoLatencyPage.cpp; sourceTree = SOURCE_ROOT; }; + 84913FD51063947900456AFC /* AudioDemoLatencyPage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioDemoLatencyPage.h; path = ../../src/demos/AudioDemoLatencyPage.h; sourceTree = SOURCE_ROOT; }; + 84913FD61063947900456AFC /* AudioDemoPlaybackPage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AudioDemoPlaybackPage.cpp; path = ../../src/demos/AudioDemoPlaybackPage.cpp; sourceTree = SOURCE_ROOT; }; + 84913FD71063947900456AFC /* AudioDemoPlaybackPage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioDemoPlaybackPage.h; path = ../../src/demos/AudioDemoPlaybackPage.h; sourceTree = SOURCE_ROOT; }; + 84913FD81063947900456AFC /* AudioDemoSetupPage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AudioDemoSetupPage.cpp; path = ../../src/demos/AudioDemoSetupPage.cpp; sourceTree = SOURCE_ROOT; }; + 84913FD91063947900456AFC /* AudioDemoSetupPage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioDemoSetupPage.h; path = ../../src/demos/AudioDemoSetupPage.h; sourceTree = SOURCE_ROOT; }; + 84913FDA1063947900456AFC /* AudioDemoSynthPage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AudioDemoSynthPage.cpp; path = ../../src/demos/AudioDemoSynthPage.cpp; sourceTree = SOURCE_ROOT; }; + 84913FDB1063947900456AFC /* AudioDemoSynthPage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioDemoSynthPage.h; path = ../../src/demos/AudioDemoSynthPage.h; sourceTree = SOURCE_ROOT; }; + 84913FDC1063947900456AFC /* AudioDemoTabComponent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AudioDemoTabComponent.cpp; path = ../../src/demos/AudioDemoTabComponent.cpp; sourceTree = SOURCE_ROOT; }; + 84913FDD1063947900456AFC /* AudioDemoTabComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioDemoTabComponent.h; path = ../../src/demos/AudioDemoTabComponent.h; sourceTree = SOURCE_ROOT; }; + 849144071064E54800456AFC /* AudioDemoRecordPage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AudioDemoRecordPage.cpp; path = ../../src/demos/AudioDemoRecordPage.cpp; sourceTree = SOURCE_ROOT; }; + 849144081064E54800456AFC /* AudioDemoRecordPage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioDemoRecordPage.h; path = ../../src/demos/AudioDemoRecordPage.h; sourceTree = SOURCE_ROOT; }; 849786F2103560630020003B /* DiscRecording.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DiscRecording.framework; path = System/Library/Frameworks/DiscRecording.framework; sourceTree = SDKROOT; }; 84E81550100BAF6200FAE212 /* WebBrowserDemo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; lineEnding = 2; name = WebBrowserDemo.cpp; path = ../../src/demos/WebBrowserDemo.cpp; sourceTree = SOURCE_ROOT; }; 84EE00F90FF22E390093FACA /* CameraDemo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CameraDemo.cpp; path = ../../src/demos/CameraDemo.cpp; sourceTree = SOURCE_ROOT; }; @@ -160,7 +176,18 @@ 847F4D8A0E8AC27A00F64426 /* demos */ = { isa = PBXGroup; children = ( - 847F4E9A0E8BA9C300F64426 /* AudioDemo.cpp */, + 84913FD41063947900456AFC /* AudioDemoLatencyPage.cpp */, + 84913FD51063947900456AFC /* AudioDemoLatencyPage.h */, + 84913FD61063947900456AFC /* AudioDemoPlaybackPage.cpp */, + 84913FD71063947900456AFC /* AudioDemoPlaybackPage.h */, + 849144071064E54800456AFC /* AudioDemoRecordPage.cpp */, + 849144081064E54800456AFC /* AudioDemoRecordPage.h */, + 84913FD81063947900456AFC /* AudioDemoSetupPage.cpp */, + 84913FD91063947900456AFC /* AudioDemoSetupPage.h */, + 84913FDA1063947900456AFC /* AudioDemoSynthPage.cpp */, + 84913FDB1063947900456AFC /* AudioDemoSynthPage.h */, + 84913FDC1063947900456AFC /* AudioDemoTabComponent.cpp */, + 84913FDD1063947900456AFC /* AudioDemoTabComponent.h */, 84EE00F90FF22E390093FACA /* CameraDemo.cpp */, 847F4E9B0E8BA9C300F64426 /* DragAndDropDemo.cpp */, 847F4E9C0E8BA9C300F64426 /* FontsAndTextDemo.cpp */, @@ -230,7 +257,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 847F4EA50E8BA9C300F64426 /* AudioDemo.cpp in Sources */, 847F4EA60E8BA9C300F64426 /* DragAndDropDemo.cpp in Sources */, 847F4EA70E8BA9C300F64426 /* FontsAndTextDemo.cpp in Sources */, 847F4EA80E8BA9C300F64426 /* InterprocessCommsDemo.cpp in Sources */, @@ -247,6 +273,12 @@ 847F4EBB0E8BA9DD00F64426 /* MainDemoWindow.cpp in Sources */, 84EE00FA0FF22E390093FACA /* CameraDemo.cpp in Sources */, 84E81551100BAF6200FAE212 /* WebBrowserDemo.cpp in Sources */, + 84913FDE1063947900456AFC /* AudioDemoLatencyPage.cpp in Sources */, + 84913FDF1063947900456AFC /* AudioDemoPlaybackPage.cpp in Sources */, + 84913FE01063947900456AFC /* AudioDemoSetupPage.cpp in Sources */, + 84913FE11063947900456AFC /* AudioDemoSynthPage.cpp in Sources */, + 84913FE21063947900456AFC /* AudioDemoTabComponent.cpp in Sources */, + 849144091064E54800456AFC /* AudioDemoRecordPage.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/extras/juce demo/build/win32_vc8/jucedemo.vcproj b/extras/juce demo/build/win32_vc8/jucedemo.vcproj index 51ff8c745a..d42d5800bd 100644 --- a/extras/juce demo/build/win32_vc8/jucedemo.vcproj +++ b/extras/juce demo/build/win32_vc8/jucedemo.vcproj @@ -1,470 +1,496 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extras/juce demo/src/BinaryData.cpp b/extras/juce demo/src/BinaryData.cpp index c77515b5f9..c468e46581 100644 --- a/extras/juce demo/src/BinaryData.cpp +++ b/extras/juce demo/src/BinaryData.cpp @@ -2,4464 +2,16 @@ #include "BinaryData.h" -static const unsigned char temp1[] = {47,42,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,13,10,13,10,32,32,32,84,104,105,115,32,102,105,108,101,32,105,115,32,112,97,114,116,32,111,102,32,116,104,101,32,74,85,67,69, - 32,108,105,98,114,97,114,121,32,45,32,34,74,117,108,101,115,39,32,85,116,105,108,105,116,121,32,67,108,97,115,115,32,69,120,116,101,110,115,105, - 111,110,115,34,13,10,32,32,32,67,111,112,121,114,105,103,104,116,32,50,48,48,52,45,57,32,98,121,32,82,97,119,32,77,97,116,101,114,105,97, - 108,32,83,111,102,116,119,97,114,101,32,76,116,100,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,74,85,67,69,32,99,97,110,32,98,101,32,114,101, - 100,105,115,116,114,105,98,117,116,101,100,32,97,110,100,47,111,114,32,109,111,100,105,102,105,101,100,32,117,110,100,101,114,32,116,104,101,32,116,101, - 114,109,115,32,111,102,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,13,10,32,32,32,80,117,98,108,105,99,32,76,105,99,101,110,115, - 101,32,40,86,101,114,115,105,111,110,32,50,41,44,32,97,115,32,112,117,98,108,105,115,104,101,100,32,98,121,32,116,104,101,32,70,114,101,101,32, - 83,111,102,116,119,97,114,101,32,70,111,117,110,100,97,116,105,111,110,46,13,10,32,32,32,65,32,99,111,112,121,32,111,102,32,116,104,101,32,108, - 105,99,101,110,115,101,32,105,115,32,105,110,99,108,117,100,101,100,32,105,110,32,116,104,101,32,74,85,67,69,32,100,105,115,116,114,105,98,117,116, - 105,111,110,44,32,111,114,32,99,97,110,32,98,101,32,102,111,117,110,100,13,10,32,32,32,111,110,108,105,110,101,32,97,116,32,119,119,119,46,103, - 110,117,46,111,114,103,47,108,105,99,101,110,115,101,115,46,13,10,13,10,32,32,32,74,85,67,69,32,105,115,32,100,105,115,116,114,105,98,117,116, - 101,100,32,105,110,32,116,104,101,32,104,111,112,101,32,116,104,97,116,32,105,116,32,119,105,108,108,32,98,101,32,117,115,101,102,117,108,44,32,98, - 117,116,32,87,73,84,72,79,85,84,32,65,78,89,13,10,32,32,32,87,65,82,82,65,78,84,89,59,32,119,105,116,104,111,117,116,32,101,118,101, - 110,32,116,104,101,32,105,109,112,108,105,101,100,32,119,97,114,114,97,110,116,121,32,111,102,32,77,69,82,67,72,65,78,84,65,66,73,76,73,84, - 89,32,111,114,32,70,73,84,78,69,83,83,32,70,79,82,13,10,32,32,32,65,32,80,65,82,84,73,67,85,76,65,82,32,80,85,82,80,79,83, - 69,46,32,32,83,101,101,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,32,80,117,98,108,105,99,32,76,105,99,101,110,115,101,32,102, - 111,114,32,109,111,114,101,32,100,101,116,97,105,108,115,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,84,111,32,114,101,108,101,97,115,101,32,97,32, - 99,108,111,115,101,100,45,115,111,117,114,99,101,32,112,114,111,100,117,99,116,32,119,104,105,99,104,32,117,115,101,115,32,74,85,67,69,44,32,99, - 111,109,109,101,114,99,105,97,108,32,108,105,99,101,110,115,101,115,32,97,114,101,13,10,32,32,32,97,118,97,105,108,97,98,108,101,58,32,118,105, - 115,105,116,32,119,119,119,46,114,97,119,109,97,116,101,114,105,97,108,115,111,102,116,119,97,114,101,46,99,111,109,47,106,117,99,101,32,102,111,114, - 32,109,111,114,101,32,105,110,102,111,114,109,97,116,105,111,110,46,13,10,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,42,47,13,10,13,10,35,105,110,99,108,117,100,101,32,34, - 46,46,47,106,117,99,101,100,101,109,111,95,104,101,97,100,101,114,115,46,104,34,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,47,42,42,32,79,117,114,32,100,101, - 109,111,32,115,121,110,116,104,32,111,110,108,121,32,104,97,115,32,111,110,101,32,116,121,112,101,32,111,102,32,115,111,117,110,100,44,32,97,110,100, - 32,105,116,39,115,32,118,101,114,121,32,98,97,115,105,99,46,46,13,10,42,47,13,10,99,108,97,115,115,32,83,105,110,101,87,97,118,101,83,111, - 117,110,100,32,58,32,112,117,98,108,105,99,32,83,121,110,116,104,101,115,105,115,101,114,83,111,117,110,100,13,10,123,13,10,112,117,98,108,105,99, - 58,13,10,32,32,32,32,83,105,110,101,87,97,118,101,83,111,117,110,100,32,40,99,111,110,115,116,32,66,105,116,65,114,114,97,121,38,32,109,105, - 100,105,78,111,116,101,115,95,41,13,10,32,32,32,32,32,32,32,32,58,32,109,105,100,105,78,111,116,101,115,32,40,109,105,100,105,78,111,116,101, - 115,95,41,13,10,32,32,32,32,123,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,98,111,111,108,32,97,112,112,108,105,101,115,84,111,78, - 111,116,101,32,40,99,111,110,115,116,32,105,110,116,32,109,105,100,105,78,111,116,101,78,117,109,98,101,114,41,13,10,32,32,32,32,123,13,10,32, - 32,32,32,32,32,32,32,114,101,116,117,114,110,32,109,105,100,105,78,111,116,101,115,32,91,109,105,100,105,78,111,116,101,78,117,109,98,101,114,93, - 59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,98,111,111,108,32,97,112,112,108,105,101,115,84,111,67,104,97,110,110,101,108,32,40,99, - 111,110,115,116,32,105,110,116,32,109,105,100,105,67,104,97,110,110,101,108,41,32,32,32,32,32,32,32,32,32,32,32,123,32,114,101,116,117,114,110, - 32,116,114,117,101,59,32,125,13,10,13,10,112,114,105,118,97,116,101,58,13,10,32,32,32,32,47,47,32,116,104,105,115,32,119,105,108,108,32,99, - 111,110,116,97,105,110,32,116,104,101,32,110,111,116,101,115,32,116,104,97,116,32,116,104,105,115,32,115,111,117,110,100,32,105,115,32,97,116,116,97, - 99,104,101,100,32,116,111,46,13,10,32,32,32,32,66,105,116,65,114,114,97,121,32,109,105,100,105,78,111,116,101,115,59,13,10,125,59,13,10,13, - 10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,13,10,47,42,42,32,79,117,114,32,100,101,109,111,32,115,121,110,116,104,32,118,111,105,99,101,32,106,117,115,116,32,112,108,97,121,115, - 32,97,32,115,105,110,101,32,119,97,118,101,46,46,13,10,42,47,13,10,99,108,97,115,115,32,83,105,110,101,87,97,118,101,86,111,105,99,101,32, - 32,58,32,112,117,98,108,105,99,32,83,121,110,116,104,101,115,105,115,101,114,86,111,105,99,101,13,10,123,13,10,112,117,98,108,105,99,58,13,10, - 32,32,32,32,83,105,110,101,87,97,118,101,86,111,105,99,101,40,41,13,10,32,32,32,32,32,32,32,32,58,32,97,110,103,108,101,68,101,108,116, - 97,32,40,48,46,48,41,44,13,10,32,32,32,32,32,32,32,32,32,32,116,97,105,108,79,102,102,32,40,48,46,48,41,13,10,32,32,32,32,123, - 13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,98,111,111,108,32,99,97,110,80,108,97,121,83,111,117,110,100,32,40,83,121,110,116,104,101, - 115,105,115,101,114,83,111,117,110,100,42,32,115,111,117,110,100,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114, - 110,32,100,121,110,97,109,105,99,95,99,97,115,116,32,60,83,105,110,101,87,97,118,101,83,111,117,110,100,42,62,32,40,115,111,117,110,100,41,32, - 33,61,32,48,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,115,116,97,114,116,78,111,116,101,32,40,99,111,110,115, - 116,32,105,110,116,32,109,105,100,105,78,111,116,101,78,117,109,98,101,114,44,32,99,111,110,115,116,32,102,108,111,97,116,32,118,101,108,111,99,105, - 116,121,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,83,121,110,116,104,101,115,105,115,101,114,83,111,117,110, - 100,42,32,115,111,117,110,100,44,32,99,111,110,115,116,32,105,110,116,32,99,117,114,114,101,110,116,80,105,116,99,104,87,104,101,101,108,80,111,115, - 105,116,105,111,110,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,99,117,114,114,101,110,116,65,110,103,108,101,32,61,32,48,46, - 48,59,13,10,32,32,32,32,32,32,32,32,108,101,118,101,108,32,61,32,118,101,108,111,99,105,116,121,32,42,32,48,46,49,53,59,13,10,32,32, - 32,32,32,32,32,32,116,97,105,108,79,102,102,32,61,32,48,46,48,59,13,10,13,10,32,32,32,32,32,32,32,32,100,111,117,98,108,101,32,99, - 121,99,108,101,115,80,101,114,83,101,99,111,110,100,32,61,32,77,105,100,105,77,101,115,115,97,103,101,58,58,103,101,116,77,105,100,105,78,111,116, - 101,73,110,72,101,114,116,122,32,40,109,105,100,105,78,111,116,101,78,117,109,98,101,114,41,59,13,10,32,32,32,32,32,32,32,32,100,111,117,98, - 108,101,32,99,121,99,108,101,115,80,101,114,83,97,109,112,108,101,32,61,32,99,121,99,108,101,115,80,101,114,83,101,99,111,110,100,32,47,32,103, - 101,116,83,97,109,112,108,101,82,97,116,101,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,97,110,103,108,101,68,101,108,116,97,32,61,32, - 99,121,99,108,101,115,80,101,114,83,97,109,112,108,101,32,42,32,50,46,48,32,42,32,100,111,117,98,108,101,95,80,105,59,13,10,32,32,32,32, - 125,13,10,13,10,32,32,32,32,118,111,105,100,32,115,116,111,112,78,111,116,101,32,40,99,111,110,115,116,32,98,111,111,108,32,97,108,108,111,119, - 84,97,105,108,79,102,102,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102,32,40,97,108,108,111,119,84,97,105,108,79,102, - 102,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,115,116,97,114,116,32,97,32,116,97, - 105,108,45,111,102,102,32,98,121,32,115,101,116,116,105,110,103,32,116,104,105,115,32,102,108,97,103,46,32,84,104,101,32,114,101,110,100,101,114,32, - 99,97,108,108,98,97,99,107,32,119,105,108,108,32,112,105,99,107,32,117,112,32,111,110,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47, - 32,116,104,105,115,32,97,110,100,32,100,111,32,97,32,102,97,100,101,32,111,117,116,44,32,99,97,108,108,105,110,103,32,99,108,101,97,114,67,117, - 114,114,101,110,116,78,111,116,101,40,41,32,119,104,101,110,32,105,116,39,115,32,102,105,110,105,115,104,101,100,46,13,10,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,105,102,32,40,116,97,105,108,79,102,102,32,61,61,32,48,46,48,41,32,47,47,32,119,101,32,111,110,108,121,32,110,101, - 101,100,32,116,111,32,98,101,103,105,110,32,97,32,116,97,105,108,45,111,102,102,32,105,102,32,105,116,39,115,32,110,111,116,32,97,108,114,101,97, - 100,121,32,100,111,105,110,103,32,115,111,32,45,32,116,104,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,47,47,32,115,116,111,112,78,111,116,101,32,109,101,116,104,111,100,32,99,111,117,108,100,32,98,101,32,99, - 97,108,108,101,100,32,109,111,114,101,32,116,104,97,110,32,111,110,99,101,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116, - 97,105,108,79,102,102,32,61,32,49,46,48,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,13,10, - 32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,119,101,39,114,101,32,98,101,105,110,103,32,116,111, - 108,100,32,116,111,32,115,116,111,112,32,112,108,97,121,105,110,103,32,105,109,109,101,100,105,97,116,101,108,121,44,32,115,111,32,114,101,115,101,116, - 32,101,118,101,114,121,116,104,105,110,103,46,46,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,108,101,97,114,67,117,114,114,101,110, - 116,78,111,116,101,40,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,97,110,103,108,101,68,101,108,116,97,32,61,32,48,46,48,59,13, - 10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,112,105,116,99,104,87,104,101,101,108, - 77,111,118,101,100,32,40,99,111,110,115,116,32,105,110,116,32,110,101,119,86,97,108,117,101,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32, - 32,32,32,47,47,32,99,97,110,39,116,32,98,101,32,98,111,116,104,101,114,101,100,32,105,109,112,108,101,109,101,110,116,105,110,103,32,116,104,105, - 115,32,102,111,114,32,116,104,101,32,100,101,109,111,33,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,99,111,110,116,114, - 111,108,108,101,114,77,111,118,101,100,32,40,99,111,110,115,116,32,105,110,116,32,99,111,110,116,114,111,108,108,101,114,78,117,109,98,101,114,44,32, - 99,111,110,115,116,32,105,110,116,32,110,101,119,86,97,108,117,101,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,110, - 111,116,32,105,110,116,101,114,101,115,116,101,100,32,105,110,32,99,111,110,116,114,111,108,108,101,114,115,32,105,110,32,116,104,105,115,32,99,97,115, - 101,46,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,114,101,110,100,101,114,78,101,120,116,66,108,111,99,107,32,40,65, - 117,100,105,111,83,97,109,112,108,101,66,117,102,102,101,114,38,32,111,117,116,112,117,116,66,117,102,102,101,114,44,32,105,110,116,32,115,116,97,114, - 116,83,97,109,112,108,101,44,32,105,110,116,32,110,117,109,83,97,109,112,108,101,115,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32, - 32,105,102,32,40,97,110,103,108,101,68,101,108,116,97,32,33,61,32,48,46,48,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,105,102,32,40,116,97,105,108,79,102,102,32,62,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,123,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,119,104,105,108,101,32,40,45,45,110,117,109,83,97,109,112,108,101,115,32,62,61,32, - 48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,99,111,110,115,116,32,102,108,111,97,116,32,99,117,114,114,101,110,116,83,97,109,112,108,101,32,61,32,40,102,108,111,97,116,41,32,40, - 115,105,110,32,40,99,117,114,114,101,110,116,65,110,103,108,101,41,32,42,32,108,101,118,101,108,32,42,32,116,97,105,108,79,102,102,41,59,13,10, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,105,110,116,32,105,32,61,32,111,117,116,112,117, - 116,66,117,102,102,101,114,46,103,101,116,78,117,109,67,104,97,110,110,101,108,115,40,41,59,32,45,45,105,32,62,61,32,48,59,41,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,42,111,117,116,112,117,116,66,117,102,102,101,114,46,103,101,116,83, - 97,109,112,108,101,68,97,116,97,32,40,105,44,32,115,116,97,114,116,83,97,109,112,108,101,41,32,43,61,32,99,117,114,114,101,110,116,83,97,109, - 112,108,101,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,117,114,114,101,110,116,65,110,103,108,101, - 32,43,61,32,97,110,103,108,101,68,101,108,116,97,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,43,43,115, - 116,97,114,116,83,97,109,112,108,101,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,97,105,108,79, - 102,102,32,42,61,32,48,46,57,57,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,116, - 97,105,108,79,102,102,32,60,61,32,48,46,48,48,53,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,108,101,97,114,67,117,114,114,101,110,116,78,111,116, - 101,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,110,103,108,101,68,101,108, - 116,97,32,61,32,48,46,48,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,98,114,101,97,107, - 59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,119,104,105,108,101,32,40,45,45,110,117, - 109,83,97,109,112,108,101,115,32,62,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,111,110,115,116,32,102,108,111,97,116,32,99,117,114,114,101,110,116,83,97,109,112,108,101, - 32,61,32,40,102,108,111,97,116,41,32,40,115,105,110,32,40,99,117,114,114,101,110,116,65,110,103,108,101,41,32,42,32,108,101,118,101,108,41,59, - 13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,105,110,116,32,105,32,61,32,111,117,116, - 112,117,116,66,117,102,102,101,114,46,103,101,116,78,117,109,67,104,97,110,110,101,108,115,40,41,59,32,45,45,105,32,62,61,32,48,59,41,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,42,111,117,116,112,117,116,66,117,102,102,101,114,46,103,101, - 116,83,97,109,112,108,101,68,97,116,97,32,40,105,44,32,115,116,97,114,116,83,97,109,112,108,101,41,32,43,61,32,99,117,114,114,101,110,116,83, - 97,109,112,108,101,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,117,114,114,101,110,116,65,110,103, - 108,101,32,43,61,32,97,110,103,108,101,68,101,108,116,97,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,43, - 43,115,116,97,114,116,83,97,109,112,108,101,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,112,114,105,118,97,116,101,58,13,10,32, - 32,32,32,100,111,117,98,108,101,32,99,117,114,114,101,110,116,65,110,103,108,101,44,32,97,110,103,108,101,68,101,108,116,97,44,32,108,101,118,101, - 108,44,32,116,97,105,108,79,102,102,59,13,10,125,59,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,47,42,42,32,84,104,105,115,32,105,115,32,97,110,32,97,117,100,105, - 111,32,115,111,117,114,99,101,32,116,104,97,116,32,115,116,114,101,97,109,115,32,116,104,101,32,111,117,116,112,117,116,32,111,102,32,111,117,114,32, - 100,101,109,111,32,115,121,110,116,104,46,13,10,42,47,13,10,99,108,97,115,115,32,83,121,110,116,104,65,117,100,105,111,83,111,117,114,99,101,32, - 32,58,32,112,117,98,108,105,99,32,65,117,100,105,111,83,111,117,114,99,101,13,10,123,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,47, - 47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13, - 10,32,32,32,32,47,47,32,116,104,105,115,32,99,111,108,108,101,99,116,115,32,114,101,97,108,45,116,105,109,101,32,109,105,100,105,32,109,101,115, - 115,97,103,101,115,32,102,114,111,109,32,116,104,101,32,109,105,100,105,32,105,110,112,117,116,32,100,101,118,105,99,101,44,32,97,110,100,13,10,32, - 32,32,32,47,47,32,116,117,114,110,115,32,116,104,101,109,32,105,110,116,111,32,98,108,111,99,107,115,32,116,104,97,116,32,119,101,32,99,97,110, - 32,112,114,111,99,101,115,115,32,105,110,32,111,117,114,32,97,117,100,105,111,32,99,97,108,108,98,97,99,107,13,10,32,32,32,32,77,105,100,105, - 77,101,115,115,97,103,101,67,111,108,108,101,99,116,111,114,32,109,105,100,105,67,111,108,108,101,99,116,111,114,59,13,10,13,10,32,32,32,32,47, - 47,32,116,104,105,115,32,114,101,112,114,101,115,101,110,116,115,32,116,104,101,32,115,116,97,116,101,32,111,102,32,119,104,105,99,104,32,107,101,121, - 115,32,111,110,32,111,117,114,32,111,110,45,115,99,114,101,101,110,32,107,101,121,98,111,97,114,100,32,97,114,101,32,104,101,108,100,13,10,32,32, - 32,32,47,47,32,100,111,119,110,46,32,87,104,101,110,32,116,104,101,32,109,111,117,115,101,32,105,115,32,99,108,105,99,107,101,100,32,111,110,32, - 116,104,101,32,107,101,121,98,111,97,114,100,32,99,111,109,112,111,110,101,110,116,44,32,116,104,105,115,32,111,98,106,101,99,116,32,97,108,115,111, - 13,10,32,32,32,32,47,47,32,103,101,110,101,114,97,116,101,115,32,109,105,100,105,32,109,101,115,115,97,103,101,115,32,102,111,114,32,116,104,105, - 115,44,32,119,104,105,99,104,32,119,101,32,99,97,110,32,112,97,115,115,32,111,110,32,116,111,32,111,117,114,32,115,121,110,116,104,46,13,10,32, - 32,32,32,77,105,100,105,75,101,121,98,111,97,114,100,83,116,97,116,101,32,107,101,121,98,111,97,114,100,83,116,97,116,101,59,13,10,13,10,32, - 32,32,32,47,47,32,116,104,101,32,115,121,110,116,104,32,105,116,115,101,108,102,33,13,10,32,32,32,32,83,121,110,116,104,101,115,105,115,101,114, - 32,115,121,110,116,104,59,13,10,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,83,121,110,116,104,65,117,100,105,111,83,111,117,114,99,101,40,41,13, - 10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,119,101,39,108,108,32,98,101,32,109,105,120,105,110,103,32,116,119,111,32,100, - 105,102,102,101,114,101,110,116,32,116,121,112,101,115,32,111,102,32,115,111,117,110,100,44,32,115,111,32,104,101,114,101,32,119,101,39,108,108,32,99, - 114,101,97,116,101,32,116,119,111,13,10,32,32,32,32,32,32,32,32,47,47,32,115,101,116,115,32,111,102,32,110,111,116,101,32,109,97,112,115,44, - 32,112,117,116,116,105,110,103,32,101,97,99,104,32,115,111,117,110,100,32,111,110,32,97,32,100,105,102,102,101,114,101,110,116,32,111,99,116,97,118, - 101,32,111,102,32,116,104,101,32,107,101,121,98,111,97,114,100,58,13,10,32,32,32,32,32,32,32,32,66,105,116,65,114,114,97,121,32,115,105,110, - 101,119,97,118,101,78,111,116,101,115,44,32,115,97,109,112,108,101,114,78,111,116,101,115,59,13,10,13,10,32,32,32,32,32,32,32,32,105,110,116, - 32,105,59,13,10,32,32,32,32,32,32,32,32,102,111,114,32,40,105,32,61,32,48,59,32,105,32,60,32,49,50,56,59,32,43,43,105,41,13,10, - 32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,40,40,105,32,47,32,49,50,41,32,38,32,49, - 41,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,115,105,110,101,119,97,118,101,78,111,116,101,115,46,115, - 101,116,66,105,116,32,40,105,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,115,97,109,112,108,101,114,78,111,116,101,115,46,115,101,116,66,105,116,32,40,105,41,59,13,10,32,32,32,32,32,32,32,32, - 125,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,97,100,100,32,97,32,119,97,118,101,32,115,111,117,110,100,44,32,119,104,105,99,104,32, - 119,105,108,108,32,103,101,116,32,97,112,112,108,105,101,100,32,116,111,32,115,111,109,101,32,111,102,32,116,104,101,32,110,111,116,101,115,46,46,13, - 10,32,32,32,32,32,32,32,32,115,121,110,116,104,46,97,100,100,83,111,117,110,100,32,40,110,101,119,32,83,105,110,101,87,97,118,101,83,111,117, - 110,100,32,40,115,105,110,101,119,97,118,101,78,111,116,101,115,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,103,105,118,101,32, - 111,117,114,32,115,121,110,116,104,32,97,32,102,101,119,32,118,111,105,99,101,115,32,116,104,97,116,32,99,97,110,32,112,108,97,121,32,116,104,101, - 32,119,97,118,101,32,115,111,117,110,100,46,46,13,10,32,32,32,32,32,32,32,32,102,111,114,32,40,105,32,61,32,52,59,32,45,45,105,32,62, - 61,32,48,59,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,115,121,110,116,104,46,97,100,100,86,111,105,99,101,32,40,110,101,119,32,83, - 105,110,101,87,97,118,101,86,111,105,99,101,40,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,87,97,118,65,117,100,105,111,70,111,114,109, - 97,116,32,119,97,118,70,111,114,109,97,116,59,13,10,32,32,32,32,32,32,32,32,65,117,100,105,111,70,111,114,109,97,116,82,101,97,100,101,114, - 42,32,97,117,100,105,111,82,101,97,100,101,114,13,10,32,32,32,32,32,32,32,32,32,32,32,32,61,32,119,97,118,70,111,114,109,97,116,46,99, - 114,101,97,116,101,82,101,97,100,101,114,70,111,114,32,40,110,101,119,32,77,101,109,111,114,121,73,110,112,117,116,83,116,114,101,97,109,32,40,66, - 105,110,97,114,121,68,97,116,97,58,58,99,101,108,108,111,95,119,97,118,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,66,105,110,97,114,121,68,97,116,97,58,58,99,101,108,108,111,95,119,97,118,83,105,122,101,44,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,97,108,115,101,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,114,117,101,41,59,13,10,13,10,32, - 32,32,32,32,32,32,32,115,121,110,116,104,46,97,100,100,83,111,117,110,100,32,40,110,101,119,32,83,97,109,112,108,101,114,83,111,117,110,100,32, - 40,84,40,34,100,101,109,111,32,115,111,117,110,100,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,42,97,117,100,105,111,82,101,97,100,101,114,44,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,115,97, - 109,112,108,101,114,78,111,116,101,115,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,55,52,44,32,32,32,47,47,32,114,111,111,116,32,109,105,100,105,32,110,111,116,101,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,48,46,49,44,32,32,47,47,32,97,116,116,97,99,107,32,116,105,109,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,48,46,49,44,32,32,47,47,32,114,101,108,101,97, - 115,101,32,116,105,109,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,49,48,46,48,32,32,47,47,32,109,97,120,105,109,117,109,32,115,97,109,112,108,101,32,108,101,110,103,116, - 104,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,32,97,117,100,105,111,82,101,97,100,101,114,59,13, - 10,13,10,32,32,32,32,32,32,32,32,47,47,32,97,110,100,32,103,105,118,101,32,116,104,101,32,115,121,110,116,104,32,115,111,109,101,32,115,97, - 109,112,108,101,114,32,118,111,105,99,101,115,32,116,111,32,112,108,97,121,32,116,104,101,32,115,97,109,112,108,101,100,32,115,111,117,110,100,46,46, - 13,10,32,32,32,32,32,32,32,32,102,111,114,32,40,105,32,61,32,52,59,32,45,45,105,32,62,61,32,48,59,41,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,115,121,110,116,104,46,97,100,100,86,111,105,99,101,32,40,110,101,119,32,83,97,109,112,108,101,114,86,111,105,99,101,40,41, - 41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,112,114,101,112,97,114,101,84,111,80,108,97,121,32,40,105,110,116, - 32,115,97,109,112,108,101,115,80,101,114,66,108,111,99,107,69,120,112,101,99,116,101,100,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,100,111,117,98,108,101,32,115,97,109,112,108,101,82,97,116,101,41,13,10,32,32,32,32,123,13,10,32,32, - 32,32,32,32,32,32,109,105,100,105,67,111,108,108,101,99,116,111,114,46,114,101,115,101,116,32,40,115,97,109,112,108,101,82,97,116,101,41,59,13, - 10,13,10,32,32,32,32,32,32,32,32,115,121,110,116,104,46,115,101,116,67,117,114,114,101,110,116,80,108,97,121,98,97,99,107,83,97,109,112,108, - 101,82,97,116,101,32,40,115,97,109,112,108,101,82,97,116,101,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,114, - 101,108,101,97,115,101,82,101,115,111,117,114,99,101,115,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118, - 111,105,100,32,103,101,116,78,101,120,116,65,117,100,105,111,66,108,111,99,107,32,40,99,111,110,115,116,32,65,117,100,105,111,83,111,117,114,99,101, - 67,104,97,110,110,101,108,73,110,102,111,38,32,98,117,102,102,101,114,84,111,70,105,108,108,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32, - 32,32,32,47,47,32,116,104,101,32,115,121,110,116,104,32,97,108,119,97,121,115,32,97,100,100,115,32,105,116,115,32,111,117,116,112,117,116,32,116, - 111,32,116,104,101,32,97,117,100,105,111,32,98,117,102,102,101,114,44,32,115,111,32,119,101,32,104,97,118,101,32,116,111,32,99,108,101,97,114,32, - 105,116,13,10,32,32,32,32,32,32,32,32,47,47,32,102,105,114,115,116,46,46,13,10,32,32,32,32,32,32,32,32,98,117,102,102,101,114,84,111, - 70,105,108,108,46,99,108,101,97,114,65,99,116,105,118,101,66,117,102,102,101,114,82,101,103,105,111,110,40,41,59,13,10,13,10,32,32,32,32,32, - 32,32,32,47,47,32,102,105,108,108,32,97,32,109,105,100,105,32,98,117,102,102,101,114,32,119,105,116,104,32,105,110,99,111,109,105,110,103,32,109, - 101,115,115,97,103,101,115,32,102,114,111,109,32,116,104,101,32,109,105,100,105,32,105,110,112,117,116,46,13,10,32,32,32,32,32,32,32,32,77,105, - 100,105,66,117,102,102,101,114,32,105,110,99,111,109,105,110,103,77,105,100,105,59,13,10,32,32,32,32,32,32,32,32,109,105,100,105,67,111,108,108, - 101,99,116,111,114,46,114,101,109,111,118,101,78,101,120,116,66,108,111,99,107,79,102,77,101,115,115,97,103,101,115,32,40,105,110,99,111,109,105,110, - 103,77,105,100,105,44,32,98,117,102,102,101,114,84,111,70,105,108,108,46,110,117,109,83,97,109,112,108,101,115,41,59,13,10,13,10,32,32,32,32, - 32,32,32,32,47,47,32,112,97,115,115,32,116,104,101,115,101,32,109,101,115,115,97,103,101,115,32,116,111,32,116,104,101,32,107,101,121,98,111,97, - 114,100,32,115,116,97,116,101,32,115,111,32,116,104,97,116,32,105,116,32,99,97,110,32,117,112,100,97,116,101,32,116,104,101,32,99,111,109,112,111, - 110,101,110,116,13,10,32,32,32,32,32,32,32,32,47,47,32,116,111,32,115,104,111,119,32,111,110,45,115,99,114,101,101,110,32,119,104,105,99,104, - 32,107,101,121,115,32,97,114,101,32,98,101,105,110,103,32,112,114,101,115,115,101,100,32,111,110,32,116,104,101,32,112,104,121,115,105,99,97,108,32, - 109,105,100,105,32,107,101,121,98,111,97,114,100,46,13,10,32,32,32,32,32,32,32,32,47,47,32,84,104,105,115,32,99,97,108,108,32,119,105,108, - 108,32,97,108,115,111,32,97,100,100,32,109,105,100,105,32,109,101,115,115,97,103,101,115,32,116,111,32,116,104,101,32,98,117,102,102,101,114,32,119, - 104,105,99,104,32,119,101,114,101,32,103,101,110,101,114,97,116,101,100,32,98,121,13,10,32,32,32,32,32,32,32,32,47,47,32,116,104,101,32,109, - 111,117,115,101,45,99,108,105,99,107,105,110,103,32,111,110,32,116,104,101,32,111,110,45,115,99,114,101,101,110,32,107,101,121,98,111,97,114,100,46, - 13,10,32,32,32,32,32,32,32,32,107,101,121,98,111,97,114,100,83,116,97,116,101,46,112,114,111,99,101,115,115,78,101,120,116,77,105,100,105,66, - 117,102,102,101,114,32,40,105,110,99,111,109,105,110,103,77,105,100,105,44,32,48,44,32,98,117,102,102,101,114,84,111,70,105,108,108,46,110,117,109, - 83,97,109,112,108,101,115,44,32,116,114,117,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,97,110,100,32,110,111,119,32,103,101, - 116,32,116,104,101,32,115,121,110,116,104,32,116,111,32,112,114,111,99,101,115,115,32,116,104,101,32,109,105,100,105,32,101,118,101,110,116,115,32,97, - 110,100,32,103,101,110,101,114,97,116,101,32,105,116,115,32,111,117,116,112,117,116,46,13,10,32,32,32,32,32,32,32,32,115,121,110,116,104,46,114, - 101,110,100,101,114,78,101,120,116,66,108,111,99,107,32,40,42,98,117,102,102,101,114,84,111,70,105,108,108,46,98,117,102,102,101,114,44,32,105,110, - 99,111,109,105,110,103,77,105,100,105,44,32,48,44,32,98,117,102,102,101,114,84,111,70,105,108,108,46,110,117,109,83,97,109,112,108,101,115,41,59, - 13,10,32,32,32,32,125,13,10,125,59,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,65,117,100,105,111,73,110,112,117,116,87,97,118,101,102,111,114, - 109,68,105,115,112,108,97,121,32,32,58,32,112,117,98,108,105,99,32,67,111,109,112,111,110,101,110,116,44,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,84,105,109,101,114,44,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108, - 105,99,32,65,117,100,105,111,73,79,68,101,118,105,99,101,67,97,108,108,98,97,99,107,13,10,123,13,10,112,117,98,108,105,99,58,13,10,32,32, - 32,32,65,117,100,105,111,73,110,112,117,116,87,97,118,101,102,111,114,109,68,105,115,112,108,97,121,40,41,13,10,32,32,32,32,123,13,10,32,32, - 32,32,32,32,32,32,98,117,102,102,101,114,80,111,115,32,61,32,48,59,13,10,32,32,32,32,32,32,32,32,98,117,102,102,101,114,83,105,122,101, - 32,61,32,50,48,52,56,59,13,10,32,32,32,32,32,32,32,32,99,105,114,99,117,108,97,114,66,117,102,102,101,114,32,61,32,40,102,108,111,97, - 116,42,41,32,106,117,99,101,95,99,97,108,108,111,99,32,40,115,105,122,101,111,102,32,40,102,108,111,97,116,41,32,42,32,98,117,102,102,101,114, - 83,105,122,101,41,59,13,10,32,32,32,32,32,32,32,32,99,117,114,114,101,110,116,73,110,112,117,116,76,101,118,101,108,32,61,32,48,46,48,102, - 59,13,10,32,32,32,32,32,32,32,32,110,117,109,83,97,109,112,108,101,115,73,110,32,61,32,48,59,13,10,13,10,32,32,32,32,32,32,32,32, - 115,101,116,79,112,97,113,117,101,32,40,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,115,116,97,114,116,84,105,109,101,114,32,40,49, - 48,48,48,32,47,32,53,48,41,59,32,32,47,47,32,114,101,112,97,105,110,116,32,101,118,101,114,121,32,49,47,53,48,32,111,102,32,97,32,115, - 101,99,111,110,100,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,65,117,100,105,111,73,110,112,117,116,87,97,118,101,102,111,114,109,68, - 105,115,112,108,97,121,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,106,117,99,101,95,102,114,101,101,32,40,99,105,114,99, - 117,108,97,114,66,117,102,102,101,114,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,112,97,105,110,116,32,40,71, - 114,97,112,104,105,99,115,38,32,103,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,103,46,102,105,108,108,65,108,108,32,40,67, - 111,108,111,117,114,115,58,58,98,108,97,99,107,41,59,13,10,32,32,32,32,32,32,32,32,103,46,115,101,116,67,111,108,111,117,114,32,40,67,111, - 108,111,117,114,115,58,58,108,105,103,104,116,103,114,101,101,110,41,59,13,10,13,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,102,108,111, - 97,116,32,104,97,108,102,72,101,105,103,104,116,32,61,32,103,101,116,72,101,105,103,104,116,40,41,32,42,32,48,46,53,102,59,13,10,13,10,32, - 32,32,32,32,32,32,32,105,110,116,32,98,112,32,61,32,98,117,102,102,101,114,80,111,115,59,13,10,13,10,32,32,32,32,32,32,32,32,102,111, - 114,32,40,105,110,116,32,120,32,61,32,103,101,116,87,105,100,116,104,40,41,59,32,45,45,120,32,62,61,32,48,59,41,13,10,32,32,32,32,32, - 32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,110,115,116,32,105,110,116,32,115,97,109,112,108,101,115,65,103,111,32,61, - 32,103,101,116,87,105,100,116,104,40,41,32,45,32,120,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,110,115,116,32,102,108,111,97, - 116,32,108,101,118,101,108,32,61,32,99,105,114,99,117,108,97,114,66,117,102,102,101,114,32,91,40,98,112,32,43,32,98,117,102,102,101,114,83,105, - 122,101,32,45,32,115,97,109,112,108,101,115,65,103,111,41,32,37,32,98,117,102,102,101,114,83,105,122,101,93,59,13,10,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,105,102,32,40,108,101,118,101,108,32,62,32,48,46,48,49,102,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,103,46,100,114,97,119,76,105,110,101,32,40,40,102,108,111,97,116,41,32,120,44,32,104,97,108,102,72,101,105,103,104,116,32,45,32,104, - 97,108,102,72,101,105,103,104,116,32,42,32,108,101,118,101,108,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,40,102,108,111,97,116,41,32,120,44,32,104,97,108,102,72,101,105,103,104,116,32,43,32,104,97,108,102,72,101,105,103, - 104,116,32,42,32,108,101,118,101,108,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111, - 105,100,32,116,105,109,101,114,67,97,108,108,98,97,99,107,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,114,101,112,97,105, - 110,116,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,97,100,100,83,97,109,112,108,101,32,40,99,111,110,115, - 116,32,102,108,111,97,116,32,115,97,109,112,108,101,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,99,117,114,114,101,110,116,73, - 110,112,117,116,76,101,118,101,108,32,43,61,32,102,97,98,115,102,32,40,115,97,109,112,108,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32, - 99,111,110,115,116,32,105,110,116,32,115,97,109,112,108,101,115,84,111,65,118,101,114,97,103,101,32,61,32,49,50,56,59,13,10,13,10,32,32,32, - 32,32,32,32,32,105,102,32,40,43,43,110,117,109,83,97,109,112,108,101,115,73,110,32,62,32,115,97,109,112,108,101,115,84,111,65,118,101,114,97, - 103,101,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,105,114,99,117,108,97,114,66,117,102,102, - 101,114,32,91,98,117,102,102,101,114,80,111,115,43,43,32,37,32,98,117,102,102,101,114,83,105,122,101,93,32,61,32,99,117,114,114,101,110,116,73, - 110,112,117,116,76,101,118,101,108,32,47,32,115,97,109,112,108,101,115,84,111,65,118,101,114,97,103,101,59,13,10,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,110,117,109,83,97,109,112,108,101,115,73,110,32,61,32,48,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,117,114,114, - 101,110,116,73,110,112,117,116,76,101,118,101,108,32,61,32,48,46,48,102,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13, - 10,13,10,32,32,32,32,118,111,105,100,32,97,117,100,105,111,68,101,118,105,99,101,73,79,67,97,108,108,98,97,99,107,32,40,99,111,110,115,116, - 32,102,108,111,97,116,42,42,32,105,110,112,117,116,67,104,97,110,110,101,108,68,97,116,97,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,110,116,32,116,111,116,97,108,78,117,109,73,110,112,117,116,67,104,97, - 110,110,101,108,115,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 102,108,111,97,116,42,42,32,111,117,116,112,117,116,67,104,97,110,110,101,108,68,97,116,97,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,110,116,32,116,111,116,97,108,78,117,109,79,117,116,112,117,116,67,104, - 97,110,110,101,108,115,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,105,110,116,32,110,117,109,83,97,109,112,108,101,115,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,102,111,114,32,40,105,110, - 116,32,105,32,61,32,48,59,32,105,32,60,32,116,111,116,97,108,78,117,109,73,110,112,117,116,67,104,97,110,110,101,108,115,59,32,43,43,105,41, - 13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,105,110,112,117,116,67,104,97,110,110,101, - 108,68,97,116,97,32,91,105,93,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,102,111,114,32,40,105,110,116,32,106,32,61,32,48,59,32,106,32,60,32,110,117,109,83,97,109,112,108,101,115,59,32, - 43,43,106,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,100,100,83,97,109,112,108,101,32,40,105,110,112, - 117,116,67,104,97,110,110,101,108,68,97,116,97,32,91,105,93,91,106,93,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,98,114,101,97,107,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32, - 125,13,10,13,10,32,32,32,32,118,111,105,100,32,97,117,100,105,111,68,101,118,105,99,101,65,98,111,117,116,84,111,83,116,97,114,116,32,40,65, - 117,100,105,111,73,79,68,101,118,105,99,101,42,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,122,101,114,111,109,101,109,32,40, - 99,105,114,99,117,108,97,114,66,117,102,102,101,114,44,32,115,105,122,101,111,102,32,40,102,108,111,97,116,41,32,42,32,98,117,102,102,101,114,83, - 105,122,101,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,97,117,100,105,111,68,101,118,105,99,101,83,116,111,112, - 112,101,100,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,122,101,114,111,109,101,109,32,40,99,105,114,99,117,108,97,114,66, - 117,102,102,101,114,44,32,115,105,122,101,111,102,32,40,102,108,111,97,116,41,32,42,32,98,117,102,102,101,114,83,105,122,101,41,59,13,10,32,32, - 32,32,125,13,10,13,10,112,114,105,118,97,116,101,58,13,10,32,32,32,32,102,108,111,97,116,42,32,99,105,114,99,117,108,97,114,66,117,102,102, - 101,114,59,13,10,32,32,32,32,102,108,111,97,116,32,99,117,114,114,101,110,116,73,110,112,117,116,76,101,118,101,108,59,13,10,32,32,32,32,105, - 110,116,32,118,111,108,97,116,105,108,101,32,98,117,102,102,101,114,80,111,115,44,32,98,117,102,102,101,114,83,105,122,101,44,32,110,117,109,83,97, - 109,112,108,101,115,73,110,59,13,10,125,59,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,65,117,100,105,111,68,101,109,111,32,32,58,32,112, - 117,98,108,105,99,32,67,111,109,112,111,110,101,110,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98, - 108,105,99,32,70,105,108,101,110,97,109,101,67,111,109,112,111,110,101,110,116,76,105,115,116,101,110,101,114,44,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,66,117,116,116,111,110,76,105,115,116,101,110,101,114,44,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,67,104,97,110,103,101,76,105,115,116,101,110,101,114,44,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,65,117,100,105,111,73,79,68,101,118,105,99,101,67,97,108, - 108,98,97,99,107,13,10,123,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,70,105,108,101,110,97,109,101,67,111,109,112,111,110,101,110,116,42,32,102, - 105,108,101,67,104,111,111,115,101,114,59,13,10,32,32,32,32,84,101,120,116,66,117,116,116,111,110,42,32,112,108,97,121,66,117,116,116,111,110,59, - 13,10,32,32,32,32,84,101,120,116,66,117,116,116,111,110,42,32,115,116,111,112,66,117,116,116,111,110,59,13,10,32,32,32,32,84,101,120,116,66, - 117,116,116,111,110,42,32,97,117,100,105,111,83,101,116,116,105,110,103,115,66,117,116,116,111,110,59,13,10,13,10,32,32,32,32,77,105,100,105,75, - 101,121,98,111,97,114,100,67,111,109,112,111,110,101,110,116,42,32,107,101,121,98,111,97,114,100,67,111,109,112,111,110,101,110,116,59,13,10,32,32, - 32,32,65,117,100,105,111,73,110,112,117,116,87,97,118,101,102,111,114,109,68,105,115,112,108,97,121,42,32,119,97,118,101,102,111,114,109,67,111,109, - 112,111,110,101,110,116,59,13,10,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,47,47,32,116,104,105,115,32,119,114,97,112,115,32,116,104,101,32,97, - 99,116,117,97,108,32,97,117,100,105,111,32,100,101,118,105,99,101,13,10,32,32,32,32,65,117,100,105,111,68,101,118,105,99,101,77,97,110,97,103, - 101,114,32,97,117,100,105,111,68,101,118,105,99,101,77,97,110,97,103,101,114,59,13,10,13,10,32,32,32,32,47,47,32,116,104,105,115,32,97,108, - 108,111,119,115,32,97,110,32,97,117,100,105,111,32,115,111,117,114,99,101,32,116,111,32,98,101,32,115,116,114,101,97,109,101,100,32,116,111,32,116, - 104,101,32,73,79,32,100,101,118,105,99,101,13,10,32,32,32,32,65,117,100,105,111,83,111,117,114,99,101,80,108,97,121,101,114,32,97,117,100,105, - 111,83,111,117,114,99,101,80,108,97,121,101,114,59,13,10,13,10,32,32,32,32,47,47,32,116,104,105,115,32,99,111,110,116,114,111,108,115,32,116, - 104,101,32,112,108,97,121,98,97,99,107,32,111,102,32,97,32,112,111,115,105,116,105,111,110,97,98,108,101,32,97,117,100,105,111,32,115,116,114,101, - 97,109,44,32,104,97,110,100,108,105,110,103,32,116,104,101,13,10,32,32,32,32,47,47,32,115,116,97,114,116,105,110,103,47,115,116,111,112,112,105, - 110,103,32,97,110,100,32,115,97,109,112,108,101,45,114,97,116,101,32,99,111,110,118,101,114,115,105,111,110,13,10,32,32,32,32,65,117,100,105,111, - 84,114,97,110,115,112,111,114,116,83,111,117,114,99,101,32,116,114,97,110,115,112,111,114,116,83,111,117,114,99,101,59,13,10,13,10,32,32,32,32, - 47,47,32,116,104,105,115,32,115,111,117,114,99,101,32,99,111,110,116,97,105,110,115,32,111,117,114,32,115,121,110,116,104,44,32,97,110,100,32,103, - 101,110,101,114,97,116,101,115,32,105,116,115,32,111,117,116,112,117,116,13,10,32,32,32,32,83,121,110,116,104,65,117,100,105,111,83,111,117,114,99, - 101,32,115,121,110,116,104,83,111,117,114,99,101,59,13,10,13,10,32,32,32,32,47,47,32,116,104,105,115,32,115,111,117,114,99,101,32,105,115,32, - 117,115,101,100,32,116,111,32,109,105,120,32,116,111,103,101,116,104,101,114,32,116,104,101,32,111,117,116,112,117,116,32,102,114,111,109,32,111,117,114, - 32,115,121,110,116,104,32,115,111,117,114,99,101,13,10,32,32,32,32,47,47,32,97,110,100,32,119,97,118,101,32,112,108,97,121,101,114,32,115,111, - 117,114,99,101,13,10,32,32,32,32,77,105,120,101,114,65,117,100,105,111,83,111,117,114,99,101,32,109,105,120,101,114,83,111,117,114,99,101,59,13, - 10,13,10,32,32,32,32,47,47,32,116,104,105,115,32,105,115,32,116,104,101,32,97,99,116,117,97,108,32,115,116,114,101,97,109,32,116,104,97,116, - 39,115,32,103,111,105,110,103,32,116,111,32,114,101,97,100,32,102,114,111,109,32,116,104,101,32,97,117,100,105,111,32,102,105,108,101,46,13,10,32, - 32,32,32,65,117,100,105,111,70,111,114,109,97,116,82,101,97,100,101,114,83,111,117,114,99,101,42,32,99,117,114,114,101,110,116,65,117,100,105,111, - 70,105,108,101,83,111,117,114,99,101,59,13,10,13,10,32,32,32,32,70,105,108,101,32,99,117,114,114,101,110,116,70,105,108,101,59,13,10,13,10, - 112,117,98,108,105,99,58,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,65,117,100,105,111,68,101,109,111,40,41,13,10,32,32,32,32,123,13,10,32, - 32,32,32,32,32,32,32,115,101,116,78,97,109,101,32,40,84,40,34,65,117,100,105,111,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32, - 99,117,114,114,101,110,116,65,117,100,105,111,70,105,108,101,83,111,117,114,99,101,32,61,32,48,59,13,10,13,10,32,32,32,32,32,32,32,32,47, - 47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13, - 10,32,32,32,32,32,32,32,32,65,117,100,105,111,70,111,114,109,97,116,77,97,110,97,103,101,114,32,102,111,114,109,97,116,77,97,110,97,103,101, - 114,59,13,10,32,32,32,32,32,32,32,32,102,111,114,109,97,116,77,97,110,97,103,101,114,46,114,101,103,105,115,116,101,114,66,97,115,105,99,70, - 111,114,109,97,116,115,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40, - 102,105,108,101,67,104,111,111,115,101,114,32,61,32,110,101,119,32,70,105,108,101,110,97,109,101,67,111,109,112,111,110,101,110,116,32,40,84,40,34, - 97,117,100,105,111,102,105,108,101,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,70,105, - 108,101,58,58,110,111,110,101,120,105,115,116,101,110,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,116,114,117,101,44,32,102,97,108,115,101,44,32,102,97,108,115,101,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,102,111,114,109,97,116,77,97,110,97,103,101,114,46,103,101,116,87,105,108,100,99,97,114,100,70,111,114,65,108,108,70,111, - 114,109,97,116,115,40,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,83,116,114,105,110,103, - 58,58,101,109,112,116,121,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,40,99,104, - 111,111,115,101,32,97,32,87,65,86,32,111,114,32,65,73,70,70,32,102,105,108,101,32,116,111,32,112,108,97,121,41,34,41,41,41,59,13,10,32, - 32,32,32,32,32,32,32,102,105,108,101,67,104,111,111,115,101,114,45,62,97,100,100,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13, - 10,32,32,32,32,32,32,32,32,102,105,108,101,67,104,111,111,115,101,114,45,62,115,101,116,66,114,111,119,115,101,66,117,116,116,111,110,84,101,120, - 116,32,40,84,40,34,98,114,111,119,115,101,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105, - 115,105,98,108,101,32,40,112,108,97,121,66,117,116,116,111,110,32,61,32,110,101,119,32,84,101,120,116,66,117,116,116,111,110,32,40,84,40,34,112, - 108,97,121,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,99,108,105,99,107,32,104,101,114,101,32,116,111, - 32,112,108,97,121,32,116,104,101,32,99,117,114,114,101,110,116,32,97,117,100,105,111,32,102,105,108,101,34,41,41,41,59,13,10,32,32,32,32,32, - 32,32,32,112,108,97,121,66,117,116,116,111,110,45,62,97,100,100,66,117,116,116,111,110,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59, - 13,10,32,32,32,32,32,32,32,32,112,108,97,121,66,117,116,116,111,110,45,62,115,101,116,67,111,108,111,117,114,32,40,84,101,120,116,66,117,116, - 116,111,110,58,58,98,117,116,116,111,110,67,111,108,111,117,114,73,100,44,32,67,111,108,111,117,114,115,58,58,108,105,103,104,116,103,114,101,101,110, - 41,59,13,10,32,32,32,32,32,32,32,32,112,108,97,121,66,117,116,116,111,110,45,62,115,101,116,67,111,108,111,117,114,32,40,84,101,120,116,66, - 117,116,116,111,110,58,58,98,117,116,116,111,110,79,110,67,111,108,111,117,114,73,100,44,32,67,111,108,111,117,114,115,58,58,108,105,103,104,116,103, - 114,101,101,110,41,59,13,10,32,32,32,32,32,32,32,32,112,108,97,121,66,117,116,116,111,110,45,62,115,101,116,67,111,110,110,101,99,116,101,100, - 69,100,103,101,115,32,40,66,117,116,116,111,110,58,58,67,111,110,110,101,99,116,101,100,79,110,82,105,103,104,116,41,59,13,10,13,10,32,32,32, - 32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,115,116,111,112,66,117,116,116,111,110,32,61,32,110,101,119, - 32,84,101,120,116,66,117,116,116,111,110,32,40,84,40,34,115,116,111,112,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,84,40,34,99,108,105,99,107,32,104,101,114,101,32,116,111,32,112,108,97,121,32,116,104,101,32,99,117,114,114,101,110,116,32,97,117,100,105,111, - 32,102,105,108,101,34,41,41,41,59,13,10,32,32,32,32,32,32,32,32,115,116,111,112,66,117,116,116,111,110,45,62,97,100,100,66,117,116,116,111, - 110,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,32,32,32,32,32,32,32,32,115,116,111,112,66,117,116,116,111,110,45,62,115, - 101,116,67,111,108,111,117,114,32,40,84,101,120,116,66,117,116,116,111,110,58,58,98,117,116,116,111,110,67,111,108,111,117,114,73,100,44,32,67,111, - 108,111,117,114,115,58,58,114,101,100,41,59,13,10,32,32,32,32,32,32,32,32,115,116,111,112,66,117,116,116,111,110,45,62,115,101,116,67,111,108, - 111,117,114,32,40,84,101,120,116,66,117,116,116,111,110,58,58,98,117,116,116,111,110,79,110,67,111,108,111,117,114,73,100,44,32,67,111,108,111,117, - 114,115,58,58,114,101,100,41,59,13,10,32,32,32,32,32,32,32,32,115,116,111,112,66,117,116,116,111,110,45,62,115,101,116,67,111,110,110,101,99, - 116,101,100,69,100,103,101,115,32,40,66,117,116,116,111,110,58,58,67,111,110,110,101,99,116,101,100,79,110,76,101,102,116,41,59,13,10,13,10,32, - 32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,97,117,100,105,111,83,101,116,116,105,110,103,115,66, - 117,116,116,111,110,32,61,32,110,101,119,32,84,101,120,116,66,117,116,116,111,110,32,40,84,40,34,115,104,111,119,32,97,117,100,105,111,32,115,101, - 116,116,105,110,103,115,46,46,46,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84, - 40,34,99,108,105,99,107,32,104,101,114,101,32,116,111,32,99,104,97,110,103,101,32,116,104,101,32,97,117,100,105,111,32,100,101,118,105,99,101,32, - 115,101,116,116,105,110,103,115,34,41,41,41,59,13,10,32,32,32,32,32,32,32,32,97,117,100,105,111,83,101,116,116,105,110,103,115,66,117,116,116, - 111,110,45,62,97,100,100,66,117,116,116,111,110,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,13,10,32,32,32,32,32,32,32, - 32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,107,101,121,98,111,97,114,100,67,111,109,112,111,110,101,110,116,32,61,32, - 110,101,119,32,77,105,100,105,75,101,121,98,111,97,114,100,67,111,109,112,111,110,101,110,116,32,40,115,121,110,116,104,83,111,117,114,99,101,46,107, - 101,121,98,111,97,114,100,83,116,97,116,101,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,77,105,100,105,75,101,121,98,111,97,114,100,67,111,109,112,111,110,101,110,116,58,58,104,111,114,105,122,111,110,116, - 97,108,75,101,121,98,111,97,114,100,41,41,59,13,10,13,10,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115, - 105,98,108,101,32,40,119,97,118,101,102,111,114,109,67,111,109,112,111,110,101,110,116,32,61,32,110,101,119,32,65,117,100,105,111,73,110,112,117,116, - 87,97,118,101,102,111,114,109,68,105,115,112,108,97,121,40,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,32,32,32, - 32,47,47,32,114,101,103,105,115,116,101,114,32,102,111,114,32,115,116,97,114,116,47,115,116,111,112,32,109,101,115,115,97,103,101,115,32,102,114,111, - 109,32,116,104,101,32,116,114,97,110,115,112,111,114,116,32,115,111,117,114,99,101,46,46,13,10,32,32,32,32,32,32,32,32,116,114,97,110,115,112, - 111,114,116,83,111,117,114,99,101,46,97,100,100,67,104,97,110,103,101,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,13,10,32, - 32,32,32,32,32,32,32,47,47,32,97,110,100,32,105,110,105,116,105,97,108,105,115,101,32,116,104,101,32,100,101,118,105,99,101,32,109,97,110,97, - 103,101,114,32,119,105,116,104,32,110,111,32,115,101,116,116,105,110,103,115,32,115,111,32,116,104,97,116,32,105,116,32,112,105,99,107,115,32,97,13, - 10,32,32,32,32,32,32,32,32,47,47,32,100,101,102,97,117,108,116,32,100,101,118,105,99,101,32,116,111,32,117,115,101,46,13,10,32,32,32,32, - 32,32,32,32,99,111,110,115,116,32,83,116,114,105,110,103,32,101,114,114,111,114,32,40,97,117,100,105,111,68,101,118,105,99,101,77,97,110,97,103, - 101,114,46,105,110,105,116,105,97,108,105,115,101,32,40,49,44,32,47,42,32,110,117,109,98,101,114,32,111,102,32,105,110,112,117,116,32,99,104,97, - 110,110,101,108,115,32,42,47,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,50,44,32,47,42,32,110,117,109,98,101, - 114,32,111,102,32,111,117,116,112,117,116,32,99,104,97,110,110,101,108,115,32,42,47,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,48,44,32,47,42,32,110,111,32,88,77,76,32,115,101,116,116,105,110,103,115,46,46,32,42,47,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,116,114,117,101,32,32,47,42,32,115,101,108,101,99,116,32,100,101,102,97,117,108,116,32,100,101,118,105,99, - 101,32,111,110,32,102,97,105,108,117,114,101,32,42,47,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,101,114,114,111,114,46, - 105,115,78,111,116,69,109,112,116,121,40,41,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,65,108, - 101,114,116,87,105,110,100,111,119,58,58,115,104,111,119,77,101,115,115,97,103,101,66,111,120,32,40,65,108,101,114,116,87,105,110,100,111,119,58,58, - 87,97,114,110,105,110,103,73,99,111,110,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,65,117,100,105,111,32,68,101,109,111,34,41,44,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,67,111,117, - 108,100,110,39,116,32,111,112,101,110,32,97,110,32,111,117,116,112,117,116,32,100,101,118,105,99,101,33,92,110,92,110,34,41,32,43,32,101,114,114, - 111,114,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,123, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,97,100,100,32,116,104,101,32,116,119,111,32,97,117,100,105,111,32,115,111,117,114,99, - 101,115,32,116,111,32,111,117,114,32,109,105,120,101,114,46,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,109,105,120,101,114,83,111,117,114, - 99,101,46,97,100,100,73,110,112,117,116,83,111,117,114,99,101,32,40,38,116,114,97,110,115,112,111,114,116,83,111,117,114,99,101,44,32,102,97,108, - 115,101,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,109,105,120,101,114,83,111,117,114,99,101,46,97,100,100,73,110,112,117,116,83,111, - 117,114,99,101,32,40,38,115,121,110,116,104,83,111,117,114,99,101,44,32,102,97,108,115,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,47,47,32,46,46,97,110,100,32,99,111,110,110,101,99,116,32,116,104,101,32,109,105,120,101,114,32,116,111,32,111,117,114,32,115,111,117, - 114,99,101,32,112,108,97,121,101,114,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,97,117,100,105,111,83,111,117,114,99,101,80,108,97,121, - 101,114,46,115,101,116,83,111,117,114,99,101,32,40,38,109,105,120,101,114,83,111,117,114,99,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,47,47,32,115,116,97,114,116,32,116,104,101,32,73,79,32,100,101,118,105,99,101,32,112,117,108,108,105,110,103,32,105,116,115,32,100, - 97,116,97,32,102,114,111,109,32,111,117,114,32,99,97,108,108,98,97,99,107,46,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,97,117,100, - 105,111,68,101,118,105,99,101,77,97,110,97,103,101,114,46,97,100,100,65,117,100,105,111,67,97,108,108,98,97,99,107,32,40,116,104,105,115,41,59, - 13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,97,110,100,32,119,101,32,110,101,101,100,32,116,111,32,115,101,110,100,32,109, - 105,100,105,32,105,110,112,117,116,32,116,111,32,111,117,114,32,115,121,110,116,104,32,102,111,114,32,112,114,111,99,101,115,115,105,110,103,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,97,117,100,105,111,68,101,118,105,99,101,77,97,110,97,103,101,114,46,97,100,100,77,105,100,105,73,110,112, - 117,116,67,97,108,108,98,97,99,107,32,40,83,116,114,105,110,103,58,58,101,109,112,116,121,44,32,38,115,121,110,116,104,83,111,117,114,99,101,46, - 109,105,100,105,67,111,108,108,101,99,116,111,114,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,32,32,32, - 32,126,65,117,100,105,111,68,101,109,111,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,97,117,100,105,111,68,101,118,105,99, - 101,77,97,110,97,103,101,114,46,114,101,109,111,118,101,77,105,100,105,73,110,112,117,116,67,97,108,108,98,97,99,107,32,40,83,116,114,105,110,103, - 58,58,101,109,112,116,121,44,32,38,115,121,110,116,104,83,111,117,114,99,101,46,109,105,100,105,67,111,108,108,101,99,116,111,114,41,59,13,10,32, - 32,32,32,32,32,32,32,97,117,100,105,111,68,101,118,105,99,101,77,97,110,97,103,101,114,46,114,101,109,111,118,101,65,117,100,105,111,67,97,108, - 108,98,97,99,107,32,40,116,104,105,115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,116,114,97,110,115,112,111,114,116,83,111,117,114,99,101, - 46,114,101,109,111,118,101,67,104,97,110,103,101,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,13,10,32,32,32,32,32,32,32, - 32,116,114,97,110,115,112,111,114,116,83,111,117,114,99,101,46,115,101,116,83,111,117,114,99,101,32,40,48,41,59,13,10,32,32,32,32,32,32,32, - 32,100,101,108,101,116,101,65,110,100,90,101,114,111,32,40,99,117,114,114,101,110,116,65,117,100,105,111,70,105,108,101,83,111,117,114,99,101,41,59, - 13,10,13,10,32,32,32,32,32,32,32,32,97,117,100,105,111,83,111,117,114,99,101,80,108,97,121,101,114,46,115,101,116,83,111,117,114,99,101,32, - 40,48,41,59,13,10,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65,108,108,67,104,105,108,100,114,101,110,40,41,59,13,10,32,32, - 32,32,125,13,10,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,118,111,105,100,32,97,117,100,105,111,68,101,118,105,99,101,73,79,67,97,108,108,98, - 97,99,107,32,40,99,111,110,115,116,32,102,108,111,97,116,42,42,32,105,110,112,117,116,67,104,97,110,110,101,108,68,97,116,97,44,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,110,116,32,116,111,116,97,108,78, - 117,109,73,110,112,117,116,67,104,97,110,110,101,108,115,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,102,108,111,97,116,42,42,32,111,117,116,112,117,116,67,104,97,110,110,101,108,68,97,116,97,44,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,110,116,32,116,111,116,97,108,78, - 117,109,79,117,116,112,117,116,67,104,97,110,110,101,108,115,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,105,110,116,32,110,117,109,83,97,109,112,108,101,115,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32, - 32,32,32,47,47,32,112,97,115,115,32,116,104,101,32,97,117,100,105,111,32,99,97,108,108,98,97,99,107,32,111,110,32,116,111,32,111,117,114,32, - 112,108,97,121,101,114,32,115,111,117,114,99,101,44,32,97,110,100,32,97,108,115,111,32,116,104,101,32,119,97,118,101,102,111,114,109,32,100,105,115, - 112,108,97,121,32,99,111,109,112,13,10,32,32,32,32,32,32,32,32,97,117,100,105,111,83,111,117,114,99,101,80,108,97,121,101,114,46,97,117,100, - 105,111,68,101,118,105,99,101,73,79,67,97,108,108,98,97,99,107,32,40,105,110,112,117,116,67,104,97,110,110,101,108,68,97,116,97,44,32,116,111, - 116,97,108,78,117,109,73,110,112,117,116,67,104,97,110,110,101,108,115,44,32,111,117,116,112,117,116,67,104,97,110,110,101,108,68,97,116,97,44,32, - 116,111,116,97,108,78,117,109,79,117,116,112,117,116,67,104,97,110,110,101,108,115,44,32,110,117,109,83,97,109,112,108,101,115,41,59,13,10,32,32, - 32,32,32,32,32,32,119,97,118,101,102,111,114,109,67,111,109,112,111,110,101,110,116,45,62,97,117,100,105,111,68,101,118,105,99,101,73,79,67,97, - 108,108,98,97,99,107,32,40,105,110,112,117,116,67,104,97,110,110,101,108,68,97,116,97,44,32,116,111,116,97,108,78,117,109,73,110,112,117,116,67, - 104,97,110,110,101,108,115,44,32,111,117,116,112,117,116,67,104,97,110,110,101,108,68,97,116,97,44,32,116,111,116,97,108,78,117,109,79,117,116,112, - 117,116,67,104,97,110,110,101,108,115,44,32,110,117,109,83,97,109,112,108,101,115,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118, - 111,105,100,32,97,117,100,105,111,68,101,118,105,99,101,65,98,111,117,116,84,111,83,116,97,114,116,32,40,65,117,100,105,111,73,79,68,101,118,105, - 99,101,42,32,100,101,118,105,99,101,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,97,117,100,105,111,83,111,117,114,99,101,80, - 108,97,121,101,114,46,97,117,100,105,111,68,101,118,105,99,101,65,98,111,117,116,84,111,83,116,97,114,116,32,40,100,101,118,105,99,101,41,59,13, - 10,32,32,32,32,32,32,32,32,119,97,118,101,102,111,114,109,67,111,109,112,111,110,101,110,116,45,62,97,117,100,105,111,68,101,118,105,99,101,65, - 98,111,117,116,84,111,83,116,97,114,116,32,40,100,101,118,105,99,101,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100, - 32,97,117,100,105,111,68,101,118,105,99,101,83,116,111,112,112,101,100,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,97,117, - 100,105,111,83,111,117,114,99,101,80,108,97,121,101,114,46,97,117,100,105,111,68,101,118,105,99,101,83,116,111,112,112,101,100,40,41,59,13,10,32, - 32,32,32,32,32,32,32,119,97,118,101,102,111,114,109,67,111,109,112,111,110,101,110,116,45,62,97,117,100,105,111,68,101,118,105,99,101,83,116,111, - 112,112,101,100,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,118,111,105,100,32,112,97,105,110,116,32,40, - 71,114,97,112,104,105,99,115,38,32,103,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,112,114,105,110,116,32,115,111, - 109,101,32,116,101,120,116,32,116,111,32,101,120,112,108,97,105,110,32,119,104,97,116,32,115,116,97,116,101,32,119,101,39,114,101,32,105,110,46,13, - 10,13,10,32,32,32,32,32,32,32,32,103,46,115,101,116,67,111,108,111,117,114,32,40,67,111,108,111,117,114,115,58,58,98,108,97,99,107,41,59, - 13,10,32,32,32,32,32,32,32,32,103,46,115,101,116,70,111,110,116,32,40,49,52,46,48,102,41,59,13,10,13,10,32,32,32,32,32,32,32,32, - 83,116,114,105,110,103,32,115,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,116,114,97,110,115,112,111,114,116,83,111,117,114,99,101, - 46,105,115,80,108,97,121,105,110,103,40,41,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,115,32,61,32,84,40,34,112,108,97,121,105,110, - 103,34,41,59,13,10,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,115,32,61,32,84,40,34,115, - 116,111,112,112,101,100,34,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,99,117,114,114,101,110,116,65,117,100,105,111,70,105,108, - 101,83,111,117,114,99,101,32,61,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,115,32,43,61,32,84,40,34,32,45,32,110,111, - 32,115,111,117,114,99,101,32,102,105,108,101,32,115,101,108,101,99,116,101,100,34,41,59,13,10,32,32,32,32,32,32,32,32,101,108,115,101,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,115,32,43,61,32,84,40,34,32,45,32,102,105,108,101,58,32,92,34,34,41,32,43,32,99,117,114,114, - 101,110,116,70,105,108,101,46,103,101,116,70,117,108,108,80,97,116,104,78,97,109,101,40,41,32,43,32,84,40,34,92,34,34,41,59,13,10,13,10, - 32,32,32,32,32,32,32,32,103,46,100,114,97,119,84,101,120,116,32,40,115,44,32,50,53,48,44,32,53,48,44,32,103,101,116,87,105,100,116,104, - 40,41,32,45,32,50,53,48,44,32,50,52,44,32,74,117,115,116,105,102,105,99,97,116,105,111,110,58,58,99,101,110,116,114,101,100,76,101,102,116, - 44,32,116,114,117,101,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,114,101,115,105,122,101,100,40,41,13,10,32, - 32,32,32,123,13,10,32,32,32,32,32,32,32,32,102,105,108,101,67,104,111,111,115,101,114,45,62,115,101,116,66,111,117,110,100,115,32,40,49,48, - 44,32,49,48,44,32,103,101,116,87,105,100,116,104,40,41,32,45,32,50,48,44,32,50,52,41,59,13,10,32,32,32,32,32,32,32,32,112,108,97, - 121,66,117,116,116,111,110,45,62,115,101,116,66,111,117,110,100,115,32,40,49,48,44,32,53,48,44,32,49,48,48,44,32,50,52,41,59,13,10,32, - 32,32,32,32,32,32,32,115,116,111,112,66,117,116,116,111,110,45,62,115,101,116,66,111,117,110,100,115,32,40,49,49,48,44,32,53,48,44,32,49, - 48,48,44,32,50,52,41,59,13,10,32,32,32,32,32,32,32,32,97,117,100,105,111,83,101,116,116,105,110,103,115,66,117,116,116,111,110,45,62,115, - 101,116,66,111,117,110,100,115,32,40,49,48,44,32,49,50,48,44,32,50,48,48,44,32,50,52,41,59,13,10,32,32,32,32,32,32,32,32,97,117, - 100,105,111,83,101,116,116,105,110,103,115,66,117,116,116,111,110,45,62,99,104,97,110,103,101,87,105,100,116,104,84,111,70,105,116,84,101,120,116,40, - 41,59,13,10,32,32,32,32,32,32,32,32,107,101,121,98,111,97,114,100,67,111,109,112,111,110,101,110,116,45,62,115,101,116,66,111,117,110,100,115, - 32,40,49,48,44,32,50,48,48,44,32,103,101,116,87,105,100,116,104,40,41,32,45,32,50,48,44,32,54,48,41,59,13,10,32,32,32,32,32,32, - 32,32,119,97,118,101,102,111,114,109,67,111,109,112,111,110,101,110,116,45,62,115,101,116,66,111,117,110,100,115,32,40,49,48,44,32,51,48,48,44, - 32,52,48,48,44,32,56,48,41,59,13,10,13,10,32,32,32,32,32,32,32,32,117,112,100,97,116,101,66,117,116,116,111,110,115,40,41,59,13,10, - 32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,117,112,100,97,116,101,66,117,116,116,111,110,115,40,41,13,10,32,32,32,32,123, - 13,10,32,32,32,32,32,32,32,32,112,108,97,121,66,117,116,116,111,110,45,62,115,101,116,69,110,97,98,108,101,100,32,40,99,117,114,114,101,110, - 116,65,117,100,105,111,70,105,108,101,83,111,117,114,99,101,32,33,61,32,48,32,38,38,32,33,32,116,114,97,110,115,112,111,114,116,83,111,117,114, - 99,101,46,105,115,80,108,97,121,105,110,103,40,41,41,59,13,10,32,32,32,32,32,32,32,32,115,116,111,112,66,117,116,116,111,110,45,62,115,101, - 116,69,110,97,98,108,101,100,32,40,116,114,97,110,115,112,111,114,116,83,111,117,114,99,101,46,105,115,80,108,97,121,105,110,103,40,41,41,59,13, - 10,32,32,32,32,32,32,32,32,114,101,112,97,105,110,116,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,98, - 117,116,116,111,110,67,108,105,99,107,101,100,32,40,66,117,116,116,111,110,42,32,98,117,116,116,111,110,41,13,10,32,32,32,32,123,13,10,32,32, - 32,32,32,32,32,32,105,102,32,40,98,117,116,116,111,110,32,61,61,32,112,108,97,121,66,117,116,116,111,110,41,13,10,32,32,32,32,32,32,32, - 32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,116,114,97,110,115,112,111,114,116,83,111,117,114,99,101,46,115,101,116,80,111,115,105,116, - 105,111,110,32,40,48,46,48,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,116,114,97,110,115,112,111,114,116,83,111,117,114,99,101,46, - 115,116,97,114,116,40,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,98,117, - 116,116,111,110,32,61,61,32,115,116,111,112,66,117,116,116,111,110,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,116,114,97,110,115,112,111,114,116,83,111,117,114,99,101,46,115,116,111,112,40,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10, - 32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,98,117,116,116,111,110,32,61,61,32,97,117,100,105,111,83,101,116,116,105,110,103,115, - 66,117,116,116,111,110,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,67,114,101,97,116, - 101,32,97,110,32,65,117,100,105,111,68,101,118,105,99,101,83,101,108,101,99,116,111,114,67,111,109,112,111,110,101,110,116,32,119,104,105,99,104,32, - 99,111,110,116,97,105,110,115,32,116,104,101,32,97,117,100,105,111,32,99,104,111,105,99,101,32,119,105,100,103,101,116,115,46,46,46,13,10,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,65,117,100,105,111,68,101,118,105,99,101,83,101,108,101,99,116,111,114,67,111,109,112,111,110,101,110,116, - 32,97,117,100,105,111,83,101,116,116,105,110,103,115,67,111,109,112,32,40,97,117,100,105,111,68,101,118,105,99,101,77,97,110,97,103,101,114,44,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,48,44,32,49,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,50,44,32,50,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,114,117,101,44, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,97,108,115,101,44,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,116,114,117,101,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,97,108, - 115,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,46,46,46,97,110,100,32,115,104,111,119,32,105,116,32,105,110, - 32,97,32,68,105,97,108,111,103,87,105,110,100,111,119,46,46,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,97,117,100,105,111,83,101,116, - 116,105,110,103,115,67,111,109,112,46,115,101,116,83,105,122,101,32,40,53,48,48,44,32,52,53,48,41,59,13,10,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,68,105,97,108,111,103,87,105,110,100,111,119,58,58,115,104,111,119,77,111,100,97,108,68,105,97,108,111,103,32,40,84,40,34,65, - 117,100,105,111,32,83,101,116,116,105,110,103,115,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,38,97,117,100,105,111,83,101,116,116,105,110,103,115,67,111,109,112,44, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,116,104,105,115,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,67,111,108,111,117,114,115,58,58,97,122,117,114,101,44,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,114,117,101,41, - 59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,102,105,108,101,110,97,109,101, - 67,111,109,112,111,110,101,110,116,67,104,97,110,103,101,100,32,40,70,105,108,101,110,97,109,101,67,111,109,112,111,110,101,110,116,42,41,13,10,32, - 32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,116,104,105,115,32,105,115,32,99,97,108,108,101,100,32,119,104,101,110,32,116,104,101, - 32,117,115,101,114,32,99,104,97,110,103,101,115,32,116,104,101,32,102,105,108,101,110,97,109,101,32,105,110,32,116,104,101,32,102,105,108,101,32,99, - 104,111,111,115,101,114,32,98,111,120,13,10,13,10,32,32,32,32,32,32,32,32,70,105,108,101,32,97,117,100,105,111,70,105,108,101,32,40,102,105, - 108,101,67,104,111,111,115,101,114,45,62,103,101,116,67,117,114,114,101,110,116,70,105,108,101,40,41,41,59,13,10,13,10,32,32,32,32,32,32,32, - 32,47,47,32,117,110,108,111,97,100,32,116,104,101,32,112,114,101,118,105,111,117,115,32,102,105,108,101,32,115,111,117,114,99,101,32,97,110,100,32, - 100,101,108,101,116,101,32,105,116,46,46,13,10,32,32,32,32,32,32,32,32,116,114,97,110,115,112,111,114,116,83,111,117,114,99,101,46,115,116,111, - 112,40,41,59,13,10,32,32,32,32,32,32,32,32,116,114,97,110,115,112,111,114,116,83,111,117,114,99,101,46,115,101,116,83,111,117,114,99,101,32, - 40,48,41,59,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65,110,100,90,101,114,111,32,40,99,117,114,114,101,110,116,65,117,100,105, - 111,70,105,108,101,83,111,117,114,99,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,99,114,101,97,116,101,32,97,32,110,101,119, - 32,102,105,108,101,32,115,111,117,114,99,101,32,102,114,111,109,32,116,104,101,32,102,105,108,101,46,46,13,10,13,10,32,32,32,32,32,32,32,32, - 47,47,32,103,101,116,32,97,32,102,111,114,109,97,116,32,109,97,110,97,103,101,114,32,97,110,100,32,115,101,116,32,105,116,32,117,112,32,119,105, - 116,104,32,116,104,101,32,98,97,115,105,99,32,116,121,112,101,115,32,40,119,97,118,32,97,110,100,32,97,105,102,102,41,46,13,10,32,32,32,32, - 32,32,32,32,65,117,100,105,111,70,111,114,109,97,116,77,97,110,97,103,101,114,32,102,111,114,109,97,116,77,97,110,97,103,101,114,59,13,10,32, - 32,32,32,32,32,32,32,102,111,114,109,97,116,77,97,110,97,103,101,114,46,114,101,103,105,115,116,101,114,66,97,115,105,99,70,111,114,109,97,116, - 115,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,65,117,100,105,111,70,111,114,109,97,116,82,101,97,100,101,114,42,32,114,101,97,100,101, - 114,32,61,32,102,111,114,109,97,116,77,97,110,97,103,101,114,46,99,114,101,97,116,101,82,101,97,100,101,114,70,111,114,32,40,97,117,100,105,111, - 70,105,108,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,114,101,97,100,101,114,32,33,61,32,48,41,13,10,32,32,32,32, - 32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,117,114,114,101,110,116,70,105,108,101,32,61,32,97,117,100,105,111,70,105, - 108,101,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,117,114,114,101,110,116,65,117,100,105,111,70,105,108,101,83,111,117,114,99, - 101,32,61,32,110,101,119,32,65,117,100,105,111,70,111,114,109,97,116,82,101,97,100,101,114,83,111,117,114,99,101,32,40,114,101,97,100,101,114,44, - 32,116,114,117,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,46,46,97,110,100,32,112,108,117,103,32,105,116,32, - 105,110,116,111,32,111,117,114,32,116,114,97,110,115,112,111,114,116,32,115,111,117,114,99,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,116, - 114,97,110,115,112,111,114,116,83,111,117,114,99,101,46,115,101,116,83,111,117,114,99,101,32,40,99,117,114,114,101,110,116,65,117,100,105,111,70,105, - 108,101,83,111,117,114,99,101,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,51,50,55,54,56,44,32,47,47,32,116,101,108,108,115,32,105,116,32,116,111,32,98,117,102,102,101,114,32,116, - 104,105,115,32,109,97,110,121,32,115,97,109,112,108,101,115,32,97,104,101,97,100,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,97,100,101,114,45,62,115,97,109,112,108,101,82,97,116, - 101,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,117,112,100,97,116,101,66,117,116,116,111,110,115,40, - 41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,99,104,97,110,103,101,76,105,115,116,101,110,101,114,67,97,108,108, - 98,97,99,107,32,40,118,111,105,100,42,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,99,97,108,108,98,97,99,107, - 32,102,114,111,109,32,116,104,101,32,116,114,97,110,115,112,111,114,116,32,115,111,117,114,99,101,32,116,111,32,116,101,108,108,32,117,115,32,116,104, - 97,116,32,112,108,97,121,32,104,97,115,13,10,32,32,32,32,32,32,32,32,47,47,32,115,116,97,114,116,101,100,32,111,114,32,115,116,111,112,112, - 101,100,44,32,115,111,32,117,112,100,97,116,101,32,111,117,114,32,98,117,116,116,111,110,115,46,46,13,10,32,32,32,32,32,32,32,32,117,112,100, - 97,116,101,66,117,116,116,111,110,115,40,41,59,13,10,32,32,32,32,125,13,10,125,59,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,67,111,109,112,111,110,101,110, - 116,42,32,99,114,101,97,116,101,65,117,100,105,111,68,101,109,111,40,41,13,10,123,13,10,32,32,32,32,114,101,116,117,114,110,32,110,101,119,32, - 65,117,100,105,111,68,101,109,111,40,41,59,13,10,125,13,10,0,0}; -const char* BinaryData::audiodemo_cpp = (const char*) temp1; - -static const unsigned char temp2[] = {47,42,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,13,10,13,10,32,32,32,84,104,105,115,32,102,105,108,101,32,105,115,32,112,97,114,116,32,111,102,32,116,104,101,32,74,85,67,69, - 32,108,105,98,114,97,114,121,32,45,32,34,74,117,108,101,115,39,32,85,116,105,108,105,116,121,32,67,108,97,115,115,32,69,120,116,101,110,115,105, - 111,110,115,34,13,10,32,32,32,67,111,112,121,114,105,103,104,116,32,50,48,48,52,45,57,32,98,121,32,82,97,119,32,77,97,116,101,114,105,97, - 108,32,83,111,102,116,119,97,114,101,32,76,116,100,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,74,85,67,69,32,99,97,110,32,98,101,32,114,101, - 100,105,115,116,114,105,98,117,116,101,100,32,97,110,100,47,111,114,32,109,111,100,105,102,105,101,100,32,117,110,100,101,114,32,116,104,101,32,116,101, - 114,109,115,32,111,102,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,13,10,32,32,32,80,117,98,108,105,99,32,76,105,99,101,110,115, - 101,32,40,86,101,114,115,105,111,110,32,50,41,44,32,97,115,32,112,117,98,108,105,115,104,101,100,32,98,121,32,116,104,101,32,70,114,101,101,32, - 83,111,102,116,119,97,114,101,32,70,111,117,110,100,97,116,105,111,110,46,13,10,32,32,32,65,32,99,111,112,121,32,111,102,32,116,104,101,32,108, - 105,99,101,110,115,101,32,105,115,32,105,110,99,108,117,100,101,100,32,105,110,32,116,104,101,32,74,85,67,69,32,100,105,115,116,114,105,98,117,116, - 105,111,110,44,32,111,114,32,99,97,110,32,98,101,32,102,111,117,110,100,13,10,32,32,32,111,110,108,105,110,101,32,97,116,32,119,119,119,46,103, - 110,117,46,111,114,103,47,108,105,99,101,110,115,101,115,46,13,10,13,10,32,32,32,74,85,67,69,32,105,115,32,100,105,115,116,114,105,98,117,116, - 101,100,32,105,110,32,116,104,101,32,104,111,112,101,32,116,104,97,116,32,105,116,32,119,105,108,108,32,98,101,32,117,115,101,102,117,108,44,32,98, - 117,116,32,87,73,84,72,79,85,84,32,65,78,89,13,10,32,32,32,87,65,82,82,65,78,84,89,59,32,119,105,116,104,111,117,116,32,101,118,101, - 110,32,116,104,101,32,105,109,112,108,105,101,100,32,119,97,114,114,97,110,116,121,32,111,102,32,77,69,82,67,72,65,78,84,65,66,73,76,73,84, - 89,32,111,114,32,70,73,84,78,69,83,83,32,70,79,82,13,10,32,32,32,65,32,80,65,82,84,73,67,85,76,65,82,32,80,85,82,80,79,83, - 69,46,32,32,83,101,101,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,32,80,117,98,108,105,99,32,76,105,99,101,110,115,101,32,102, - 111,114,32,109,111,114,101,32,100,101,116,97,105,108,115,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,84,111,32,114,101,108,101,97,115,101,32,97,32, - 99,108,111,115,101,100,45,115,111,117,114,99,101,32,112,114,111,100,117,99,116,32,119,104,105,99,104,32,117,115,101,115,32,74,85,67,69,44,32,99, - 111,109,109,101,114,99,105,97,108,32,108,105,99,101,110,115,101,115,32,97,114,101,13,10,32,32,32,97,118,97,105,108,97,98,108,101,58,32,118,105, - 115,105,116,32,119,119,119,46,114,97,119,109,97,116,101,114,105,97,108,115,111,102,116,119,97,114,101,46,99,111,109,47,106,117,99,101,32,102,111,114, - 32,109,111,114,101,32,105,110,102,111,114,109,97,116,105,111,110,46,13,10,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,42,47,13,10,13,10,35,105,110,99,108,117,100,101,32,34, - 46,46,47,106,117,99,101,100,101,109,111,95,104,101,97,100,101,114,115,46,104,34,13,10,13,10,35,105,102,32,74,85,67,69,95,85,83,69,95,67, - 65,77,69,82,65,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,67,97,109,101,114,97,68,101,109,111,32,32,58,32,112,117,98,108,105,99,32, - 67,111,109,112,111,110,101,110,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,67, - 111,109,98,111,66,111,120,76,105,115,116,101,110,101,114,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117, - 98,108,105,99,32,66,117,116,116,111,110,76,105,115,116,101,110,101,114,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,112,117,98,108,105,99,32,67,97,109,101,114,97,73,109,97,103,101,76,105,115,116,101,110,101,114,13,10,123,13,10,112,117,98,108,105,99,58, - 13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,13,10,32,32,32,32,67,97,109,101,114,97,68,101,109,111,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32, - 32,115,101,116,78,97,109,101,32,40,84,40,34,67,97,109,101,114,97,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,99,97,109,101,114, - 97,68,101,118,105,99,101,32,61,32,48,59,13,10,32,32,32,32,32,32,32,32,99,97,109,101,114,97,80,114,101,118,105,101,119,67,111,109,112,32, - 61,32,48,59,13,10,32,32,32,32,32,32,32,32,108,97,115,116,83,110,97,112,115,104,111,116,32,61,32,48,59,13,10,32,32,32,32,32,32,32, - 32,114,101,99,111,114,100,105,110,103,77,111,118,105,101,32,61,32,102,97,108,115,101,59,13,10,13,10,32,32,32,32,32,32,32,32,97,100,100,65, - 110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,99,97,109,101,114,97,83,101,108,101,99,116,111,114,67,111,109,98,111,66,111,120,32,61,32, - 110,101,119,32,67,111,109,98,111,66,111,120,32,40,84,40,34,67,97,109,101,114,97,34,41,41,41,59,13,10,32,32,32,32,32,32,32,32,99,114, - 101,97,116,101,76,105,115,116,79,102,67,97,109,101,114,97,115,40,41,59,13,10,32,32,32,32,32,32,32,32,99,97,109,101,114,97,83,101,108,101, - 99,116,111,114,67,111,109,98,111,66,111,120,45,62,115,101,116,83,101,108,101,99,116,101,100,73,100,32,40,49,41,59,13,10,32,32,32,32,32,32, - 32,32,99,97,109,101,114,97,83,101,108,101,99,116,111,114,67,111,109,98,111,66,111,120,45,62,97,100,100,76,105,115,116,101,110,101,114,32,40,116, - 104,105,115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,115,110,97,112, - 115,104,111,116,66,117,116,116,111,110,32,61,32,110,101,119,32,84,101,120,116,66,117,116,116,111,110,32,40,84,40,34,84,97,107,101,32,97,32,115, - 110,97,112,115,104,111,116,34,41,41,41,59,13,10,32,32,32,32,32,32,32,32,115,110,97,112,115,104,111,116,66,117,116,116,111,110,45,62,97,100, - 100,66,117,116,116,111,110,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,32,32,32,32,32,32,32,32,115,110,97,112,115,104,111, - 116,66,117,116,116,111,110,45,62,115,101,116,69,110,97,98,108,101,100,32,40,102,97,108,115,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32, - 97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,114,101,99,111,114,100,77,111,118,105,101,66,117,116,116,111,110,32,61,32,110, - 101,119,32,84,101,120,116,66,117,116,116,111,110,32,40,84,40,34,82,101,99,111,114,100,32,97,32,109,111,118,105,101,32,102,105,108,101,32,40,116, - 111,32,121,111,117,114,32,100,101,115,107,116,111,112,41,46,46,46,34,41,41,41,59,13,10,32,32,32,32,32,32,32,32,114,101,99,111,114,100,77, - 111,118,105,101,66,117,116,116,111,110,45,62,97,100,100,66,117,116,116,111,110,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,32, - 32,32,32,32,32,32,32,114,101,99,111,114,100,77,111,118,105,101,66,117,116,116,111,110,45,62,115,101,116,69,110,97,98,108,101,100,32,40,102,97, - 108,115,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,99,97,109,101,114,97,83,101,108,101,99,116,111,114,67,111,109,98,111,66,111,120,45, - 62,115,101,116,83,101,108,101,99,116,101,100,73,100,32,40,50,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,67,97,109,101,114, - 97,68,101,109,111,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65,108,108,67,104,105,108,100,114,101, - 110,40,41,59,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,32,99,97,109,101,114,97,68,101,118,105,99,101,59,13,10,32,32,32,32, - 32,32,32,32,100,101,108,101,116,101,32,108,97,115,116,83,110,97,112,115,104,111,116,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118, - 111,105,100,32,112,97,105,110,116,32,40,71,114,97,112,104,105,99,115,38,32,103,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32, - 105,102,32,40,108,97,115,116,83,110,97,112,115,104,111,116,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,46,100,114, - 97,119,73,109,97,103,101,87,105,116,104,105,110,32,40,108,97,115,116,83,110,97,112,115,104,111,116,44,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,101,116,87,105,100,116,104,40,41,32,47,32,50,32,43,32,49,48, - 44,32,52,48,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,101, - 116,87,105,100,116,104,40,41,32,47,32,50,32,45,32,50,48,44,32,103,101,116,72,101,105,103,104,116,40,41,32,45,32,53,48,44,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,82,101,99,116,97,110,103,108,101,80,108, - 97,99,101,109,101,110,116,58,58,99,101,110,116,114,101,100,44,32,102,97,108,115,101,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32, - 118,111,105,100,32,114,101,115,105,122,101,100,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,99,97,109,101,114,97,83,101,108, - 101,99,116,111,114,67,111,109,98,111,66,111,120,45,62,115,101,116,66,111,117,110,100,115,32,40,49,48,44,32,52,44,32,50,53,48,44,32,50,52, - 41,59,13,10,32,32,32,32,32,32,32,32,115,110,97,112,115,104,111,116,66,117,116,116,111,110,45,62,99,104,97,110,103,101,87,105,100,116,104,84, - 111,70,105,116,84,101,120,116,32,40,50,52,41,59,13,10,32,32,32,32,32,32,32,32,115,110,97,112,115,104,111,116,66,117,116,116,111,110,45,62, - 115,101,116,84,111,112,76,101,102,116,80,111,115,105,116,105,111,110,32,40,99,97,109,101,114,97,83,101,108,101,99,116,111,114,67,111,109,98,111,66, - 111,120,45,62,103,101,116,82,105,103,104,116,40,41,32,43,32,50,48,44,32,52,41,59,13,10,32,32,32,32,32,32,32,32,114,101,99,111,114,100, - 77,111,118,105,101,66,117,116,116,111,110,45,62,99,104,97,110,103,101,87,105,100,116,104,84,111,70,105,116,84,101,120,116,32,40,50,52,41,59,13, - 10,32,32,32,32,32,32,32,32,114,101,99,111,114,100,77,111,118,105,101,66,117,116,116,111,110,45,62,115,101,116,84,111,112,76,101,102,116,80,111, - 115,105,116,105,111,110,32,40,115,110,97,112,115,104,111,116,66,117,116,116,111,110,45,62,103,101,116,82,105,103,104,116,40,41,32,43,32,50,48,44, - 32,52,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,99,97,109,101,114,97,80,114,101,118,105,101,119,67,111,109,112,32,33,61, - 32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,109,101,114,97,80,114,101,118,105,101,119,67,111,109,112,45,62,115,101,116,66, - 111,117,110,100,115,32,40,49,48,44,32,52,48,44,32,103,101,116,87,105,100,116,104,40,41,32,47,32,50,32,45,32,50,48,44,32,103,101,116,72, - 101,105,103,104,116,40,41,32,45,32,53,48,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,99,111,109,98,111,66, - 111,120,67,104,97,110,103,101,100,32,40,67,111,109,98,111,66,111,120,42,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47, - 32,84,104,105,115,32,105,115,32,99,97,108,108,101,100,32,119,104,101,110,32,116,104,101,32,117,115,101,114,32,99,104,111,111,115,101,115,32,97,32, - 99,97,109,101,114,97,32,102,114,111,109,32,116,104,101,32,100,114,111,112,45,100,111,119,110,32,108,105,115,116,46,13,10,32,32,32,32,32,32,32, - 32,100,101,108,101,116,101,65,110,100,90,101,114,111,32,40,99,97,109,101,114,97,68,101,118,105,99,101,41,59,13,10,32,32,32,32,32,32,32,32, - 100,101,108,101,116,101,65,110,100,90,101,114,111,32,40,99,97,109,101,114,97,80,114,101,118,105,101,119,67,111,109,112,41,59,13,10,32,32,32,32, - 32,32,32,32,114,101,99,111,114,100,105,110,103,77,111,118,105,101,32,61,32,102,97,108,115,101,59,13,10,13,10,32,32,32,32,32,32,32,32,105, - 102,32,40,99,97,109,101,114,97,83,101,108,101,99,116,111,114,67,111,109,98,111,66,111,120,45,62,103,101,116,83,101,108,101,99,116,101,100,73,100, - 40,41,32,62,32,49,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,84,114,121,32,116, - 111,32,111,112,101,110,32,116,104,101,32,117,115,101,114,39,115,32,99,104,111,105,99,101,32,111,102,32,99,97,109,101,114,97,46,46,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,99,97,109,101,114,97,68,101,118,105,99,101,32,61,32,67,97,109,101,114,97,68,101,118,105,99,101,58,58,111, - 112,101,110,68,101,118,105,99,101,32,40,99,97,109,101,114,97,83,101,108,101,99,116,111,114,67,111,109,98,111,66,111,120,45,62,103,101,116,83,101, - 108,101,99,116,101,100,73,100,40,41,32,45,32,50,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,97,110,100,32,105, - 102,32,105,116,32,119,111,114,107,101,100,44,32,99,114,101,97,116,101,32,97,32,112,114,101,118,105,101,119,32,99,111,109,112,111,110,101,110,116,32, - 102,111,114,32,105,116,46,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,99,97,109,101,114,97,68,101,118,105,99,101,32,33, - 61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32, - 40,99,97,109,101,114,97,80,114,101,118,105,101,119,67,111,109,112,32,61,32,99,97,109,101,114,97,68,101,118,105,99,101,45,62,99,114,101,97,116, - 101,86,105,101,119,101,114,67,111,109,112,111,110,101,110,116,40,41,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32, - 32,32,32,115,110,97,112,115,104,111,116,66,117,116,116,111,110,45,62,115,101,116,69,110,97,98,108,101,100,32,40,99,97,109,101,114,97,68,101,118, - 105,99,101,32,33,61,32,48,41,59,13,10,32,32,32,32,32,32,32,32,114,101,99,111,114,100,77,111,118,105,101,66,117,116,116,111,110,45,62,115, - 101,116,69,110,97,98,108,101,100,32,40,99,97,109,101,114,97,68,101,118,105,99,101,32,33,61,32,48,41,59,13,10,32,32,32,32,32,32,32,32, - 114,101,115,105,122,101,100,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,99,114,101,97,116,101,76,105,115,116, - 79,102,67,97,109,101,114,97,115,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,99,97,109,101,114,97,83,101,108,101,99,116, - 111,114,67,111,109,98,111,66,111,120,45,62,99,108,101,97,114,40,41,59,13,10,32,32,32,32,32,32,32,32,99,97,109,101,114,97,83,101,108,101, - 99,116,111,114,67,111,109,98,111,66,111,120,45,62,97,100,100,73,116,101,109,32,40,34,78,111,32,99,97,109,101,114,97,34,44,32,49,41,59,13, - 10,32,32,32,32,32,32,32,32,99,97,109,101,114,97,83,101,108,101,99,116,111,114,67,111,109,98,111,66,111,120,45,62,97,100,100,83,101,112,97, - 114,97,116,111,114,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,83,116,114,105,110,103,65,114,114,97,121,32,99,97,109,101,114,97,115,32, - 61,32,67,97,109,101,114,97,68,101,118,105,99,101,58,58,103,101,116,65,118,97,105,108,97,98,108,101,68,101,118,105,99,101,115,40,41,59,13,10, - 13,10,32,32,32,32,32,32,32,32,102,111,114,32,40,105,110,116,32,105,32,61,32,48,59,32,105,32,60,32,99,97,109,101,114,97,115,46,115,105, - 122,101,40,41,59,32,43,43,105,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,109,101,114,97,83,101,108,101,99,116,111,114,67,111, - 109,98,111,66,111,120,45,62,97,100,100,73,116,101,109,32,40,99,97,109,101,114,97,115,91,105,93,44,32,105,32,43,32,50,41,59,13,10,32,32, - 32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,98,117,116,116,111,110,67,108,105,99,107,101,100,32,40,66,117,116,116,111,110,42,32,98, - 41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102,32,40,99,97,109,101,114,97,68,101,118,105,99,101,32,33,61,32,48,41, - 13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,98,32,61,61,32,114,101,99,111,114,100, - 77,111,118,105,101,66,117,116,116,111,110,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,47,47,32,84,104,101,32,117,115,101,114,32,104,97,115,32,99,108,105,99,107,101,100,32,116,104,101,32,114,101,99,111,114,100,32, - 109,111,118,105,101,32,98,117,116,116,111,110,46,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,33,32,114,101, - 99,111,114,100,105,110,103,77,111,118,105,101,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,83,116,97,114,116,32,114,101,99,111,114,100,105,110,103,32,116,111,32,97,32,102,105, - 108,101,32,111,110,32,116,104,101,32,117,115,101,114,39,115,32,100,101,115,107,116,111,112,46,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,114,101,99,111,114,100,105,110,103,77,111,118,105,101,32,61,32,116,114,117,101,59,13,10,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,70,105,108,101,32,102,105,108,101,32,40,70,105,108,101,58,58,103,101,116,83,112,101,99,105,97, - 108,76,111,99,97,116,105,111,110,32,40,70,105,108,101,58,58,117,115,101,114,68,101,115,107,116,111,112,68,105,114,101,99,116,111,114,121,41,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,103,101,116,78,111,110,101, - 120,105,115,116,101,110,116,67,104,105,108,100,70,105,108,101,32,40,84,40,34,74,117,99,101,67,97,109,101,114,97,68,101,109,111,34,41,44,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,67,97,109,101,114,97,68,101,118,105,99,101,58,58,103,101,116,70,105,108,101,69, - 120,116,101,110,115,105,111,110,40,41,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,97,109, - 101,114,97,68,101,118,105,99,101,45,62,115,116,97,114,116,82,101,99,111,114,100,105,110,103,84,111,70,105,108,101,32,40,102,105,108,101,41,59,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,99,111,114,100,77,111,118,105,101,66,117,116,116,111,110,45,62, - 115,101,116,66,117,116,116,111,110,84,101,120,116,32,40,84,40,34,83,116,111,112,32,82,101,99,111,114,100,105,110,103,34,41,41,59,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47, - 32,65,108,114,101,97,100,121,32,114,101,99,111,114,100,105,110,103,44,32,115,111,32,115,116,111,112,46,46,46,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,114,101,99,111,114,100,105,110,103,77,111,118,105,101,32,61,32,102,97,108,115,101,59,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,97,109,101,114,97,68,101,118,105,99,101,45,62,115,116,111,112,82,101,99,111,114, - 100,105,110,103,40,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,99,111,114,100,77,111,118,105,101, - 66,117,116,116,111,110,45,62,115,101,116,66,117,116,116,111,110,84,101,120,116,32,40,84,40,34,83,116,97,114,116,32,114,101,99,111,114,100,105,110, - 103,32,40,116,111,32,97,32,102,105,108,101,32,111,110,32,121,111,117,114,32,100,101,115,107,116,111,112,41,34,41,41,59,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47, - 32,87,104,101,110,32,116,104,101,32,117,115,101,114,32,99,108,105,99,107,115,32,116,104,101,32,115,110,97,112,115,104,111,116,32,98,117,116,116,111, - 110,44,32,119,101,39,108,108,32,97,116,116,97,99,104,32,111,117,114,115,101,108,118,101,115,32,116,111,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,47,47,32,116,104,101,32,99,97,109,101,114,97,32,97,115,32,97,32,108,105,115,116,101,110,101,114,44,32,97,110,100,32,119, - 97,105,116,32,102,111,114,32,97,110,32,105,109,97,103,101,32,116,111,32,97,114,114,105,118,101,46,46,46,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,99,97,109,101,114,97,68,101,118,105,99,101,45,62,97,100,100,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,32,32,32, - 32,47,47,32,84,104,105,115,32,105,115,32,99,97,108,108,101,100,32,98,121,32,116,104,101,32,99,97,109,101,114,97,32,100,101,118,105,99,101,32, - 119,104,101,110,32,97,32,110,101,119,32,105,109,97,103,101,32,97,114,114,105,118,101,115,13,10,32,32,32,32,118,111,105,100,32,105,109,97,103,101, - 82,101,99,101,105,118,101,100,32,40,73,109,97,103,101,38,32,105,109,97,103,101,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32, - 47,47,32,73,110,32,116,104,105,115,32,97,112,112,32,119,101,32,106,117,115,116,32,119,97,110,116,32,116,111,32,116,97,107,101,32,111,110,101,32, - 105,109,97,103,101,44,32,115,111,32,97,115,32,115,111,111,110,32,97,115,32,116,104,105,115,32,104,97,112,112,101,110,115,44,13,10,32,32,32,32, - 32,32,32,32,47,47,32,119,101,39,108,108,32,117,110,114,101,103,105,115,116,101,114,32,111,117,114,115,101,108,118,101,115,32,97,115,32,97,32,108, - 105,115,116,101,110,101,114,46,13,10,32,32,32,32,32,32,32,32,105,102,32,40,99,97,109,101,114,97,68,101,118,105,99,101,32,33,61,32,48,41, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,109,101,114,97,68,101,118,105,99,101,45,62,114,101,109,111,118,101,76,105,115,116,101,110, - 101,114,32,40,116,104,105,115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,84,104,105,115,32,99,97,108,108,98,97,99,107,32,119, - 111,110,39,116,32,98,101,32,111,110,32,116,104,101,32,109,101,115,115,97,103,101,32,116,104,114,101,97,100,44,32,115,111,32,110,101,101,100,32,116, - 111,32,108,111,99,107,32,105,116,32,98,101,102,111,114,101,32,117,115,105,110,103,13,10,32,32,32,32,32,32,32,32,47,47,32,100,97,116,97,32, - 116,104,97,116,32,109,97,121,32,97,108,114,101,97,100,121,32,98,101,32,105,110,32,117,115,101,46,46,13,10,32,32,32,32,32,32,32,32,99,111, - 110,115,116,32,77,101,115,115,97,103,101,77,97,110,97,103,101,114,76,111,99,107,32,109,109,59,13,10,32,32,32,32,32,32,32,32,100,101,108,101, - 116,101,65,110,100,90,101,114,111,32,40,108,97,115,116,83,110,97,112,115,104,111,116,41,59,13,10,32,32,32,32,32,32,32,32,108,97,115,116,83, - 110,97,112,115,104,111,116,32,61,32,105,109,97,103,101,46,99,114,101,97,116,101,67,111,112,121,40,41,59,13,10,32,32,32,32,32,32,32,32,114, - 101,112,97,105,110,116,40,41,59,13,10,32,32,32,32,125,13,10,13,10,112,114,105,118,97,116,101,58,13,10,32,32,32,32,47,47,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32, - 67,97,109,101,114,97,68,101,118,105,99,101,42,32,99,97,109,101,114,97,68,101,118,105,99,101,59,13,10,13,10,32,32,32,32,67,111,109,98,111, - 66,111,120,42,32,99,97,109,101,114,97,83,101,108,101,99,116,111,114,67,111,109,98,111,66,111,120,59,13,10,32,32,32,32,84,101,120,116,66,117, - 116,116,111,110,42,32,115,110,97,112,115,104,111,116,66,117,116,116,111,110,59,13,10,32,32,32,32,84,101,120,116,66,117,116,116,111,110,42,32,114, - 101,99,111,114,100,77,111,118,105,101,66,117,116,116,111,110,59,13,10,32,32,32,32,67,111,109,112,111,110,101,110,116,42,32,99,97,109,101,114,97, - 80,114,101,118,105,101,119,67,111,109,112,59,13,10,32,32,32,32,98,111,111,108,32,114,101,99,111,114,100,105,110,103,77,111,118,105,101,59,13,10, - 13,10,32,32,32,32,73,109,97,103,101,42,32,108,97,115,116,83,110,97,112,115,104,111,116,59,13,10,125,59,13,10,13,10,13,10,47,47,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,67,111, - 109,112,111,110,101,110,116,42,32,99,114,101,97,116,101,67,97,109,101,114,97,68,101,109,111,40,41,13,10,123,13,10,32,32,32,32,114,101,116,117, - 114,110,32,110,101,119,32,67,97,109,101,114,97,68,101,109,111,40,41,59,13,10,125,13,10,13,10,35,101,110,100,105,102,13,10,0,0}; -const char* BinaryData::camerademo_cpp = (const char*) temp2; - -static const unsigned char temp3[] = {47,42,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,13,10,13,10,32,32,32,84,104,105,115,32,102,105,108,101,32,105,115,32,112,97,114,116,32,111,102,32,116,104,101,32,74,85,67,69, - 32,108,105,98,114,97,114,121,32,45,32,34,74,117,108,101,115,39,32,85,116,105,108,105,116,121,32,67,108,97,115,115,32,69,120,116,101,110,115,105, - 111,110,115,34,13,10,32,32,32,67,111,112,121,114,105,103,104,116,32,50,48,48,52,45,57,32,98,121,32,82,97,119,32,77,97,116,101,114,105,97, - 108,32,83,111,102,116,119,97,114,101,32,76,116,100,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,74,85,67,69,32,99,97,110,32,98,101,32,114,101, - 100,105,115,116,114,105,98,117,116,101,100,32,97,110,100,47,111,114,32,109,111,100,105,102,105,101,100,32,117,110,100,101,114,32,116,104,101,32,116,101, - 114,109,115,32,111,102,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,13,10,32,32,32,80,117,98,108,105,99,32,76,105,99,101,110,115, - 101,32,40,86,101,114,115,105,111,110,32,50,41,44,32,97,115,32,112,117,98,108,105,115,104,101,100,32,98,121,32,116,104,101,32,70,114,101,101,32, - 83,111,102,116,119,97,114,101,32,70,111,117,110,100,97,116,105,111,110,46,13,10,32,32,32,65,32,99,111,112,121,32,111,102,32,116,104,101,32,108, - 105,99,101,110,115,101,32,105,115,32,105,110,99,108,117,100,101,100,32,105,110,32,116,104,101,32,74,85,67,69,32,100,105,115,116,114,105,98,117,116, - 105,111,110,44,32,111,114,32,99,97,110,32,98,101,32,102,111,117,110,100,13,10,32,32,32,111,110,108,105,110,101,32,97,116,32,119,119,119,46,103, - 110,117,46,111,114,103,47,108,105,99,101,110,115,101,115,46,13,10,13,10,32,32,32,74,85,67,69,32,105,115,32,100,105,115,116,114,105,98,117,116, - 101,100,32,105,110,32,116,104,101,32,104,111,112,101,32,116,104,97,116,32,105,116,32,119,105,108,108,32,98,101,32,117,115,101,102,117,108,44,32,98, - 117,116,32,87,73,84,72,79,85,84,32,65,78,89,13,10,32,32,32,87,65,82,82,65,78,84,89,59,32,119,105,116,104,111,117,116,32,101,118,101, - 110,32,116,104,101,32,105,109,112,108,105,101,100,32,119,97,114,114,97,110,116,121,32,111,102,32,77,69,82,67,72,65,78,84,65,66,73,76,73,84, - 89,32,111,114,32,70,73,84,78,69,83,83,32,70,79,82,13,10,32,32,32,65,32,80,65,82,84,73,67,85,76,65,82,32,80,85,82,80,79,83, - 69,46,32,32,83,101,101,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,32,80,117,98,108,105,99,32,76,105,99,101,110,115,101,32,102, - 111,114,32,109,111,114,101,32,100,101,116,97,105,108,115,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,84,111,32,114,101,108,101,97,115,101,32,97,32, - 99,108,111,115,101,100,45,115,111,117,114,99,101,32,112,114,111,100,117,99,116,32,119,104,105,99,104,32,117,115,101,115,32,74,85,67,69,44,32,99, - 111,109,109,101,114,99,105,97,108,32,108,105,99,101,110,115,101,115,32,97,114,101,13,10,32,32,32,97,118,97,105,108,97,98,108,101,58,32,118,105, - 115,105,116,32,119,119,119,46,114,97,119,109,97,116,101,114,105,97,108,115,111,102,116,119,97,114,101,46,99,111,109,47,106,117,99,101,32,102,111,114, - 32,109,111,114,101,32,105,110,102,111,114,109,97,116,105,111,110,46,13,10,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,42,47,13,10,13,10,35,105,110,99,108,117,100,101,32,34, - 46,46,47,106,117,99,101,100,101,109,111,95,104,101,97,100,101,114,115,46,104,34,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,47,47,32,116,104,105,115,32,105,115,32,116, - 104,101,32,108,105,115,116,98,111,120,32,99,111,110,116,97,105,110,105,110,103,32,116,104,101,32,100,114,97,103,103,97,98,108,101,32,115,111,117,114, - 99,101,32,99,111,109,112,111,110,101,110,116,115,46,46,13,10,13,10,99,108,97,115,115,32,68,114,97,103,65,110,100,68,114,111,112,68,101,109,111, - 83,111,117,114,99,101,32,32,58,32,112,117,98,108,105,99,32,76,105,115,116,66,111,120,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,76,105,115,116,66,111,120,77,111,100,101,108,13,10,123, - 13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,68,114,97,103,65,110,100,68,114,111,112,68,101,109,111,83,111,117,114, - 99,101,40,41,13,10,32,32,32,32,32,32,32,32,58,32,76,105,115,116,66,111,120,32,40,84,40,34,100,43,100,32,115,111,117,114,99,101,34,41, - 44,32,48,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,116,101,108,108,115,32,116,104,101,32,76,105,115,116,66,111, - 120,32,116,104,97,116,32,116,104,105,115,32,111,98,106,101,99,116,32,115,117,112,112,108,105,101,115,32,116,104,101,32,105,110,102,111,32,97,98,111, - 117,116,13,10,32,32,32,32,32,32,32,32,47,47,32,105,116,115,32,114,111,119,115,46,13,10,32,32,32,32,32,32,32,32,115,101,116,77,111,100, - 101,108,32,40,116,104,105,115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,115,101,116,77,117,108,116,105,112,108,101,83,101,108,101,99,116,105, - 111,110,69,110,97,98,108,101,100,32,40,116,114,117,101,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,68,114,97,103,65,110,100, - 68,114,111,112,68,101,109,111,83,111,117,114,99,101,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47,47, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10, - 32,32,32,32,47,47,32,84,104,101,32,102,111,108,108,111,119,105,110,103,32,109,101,116,104,111,100,115,32,105,109,112,108,101,109,101,110,116,32,116, - 104,101,32,110,101,99,101,115,115,97,114,121,32,118,105,114,116,117,97,108,32,102,117,110,99,116,105,111,110,115,32,102,114,111,109,32,76,105,115,116, - 66,111,120,77,111,100,101,108,44,13,10,32,32,32,32,47,47,32,116,101,108,108,105,110,103,32,116,104,101,32,108,105,115,116,98,111,120,32,104,111, - 119,32,109,97,110,121,32,114,111,119,115,32,116,104,101,114,101,32,97,114,101,44,32,112,97,105,110,116,105,110,103,32,116,104,101,109,44,32,101,116, - 99,46,13,10,32,32,32,32,105,110,116,32,103,101,116,78,117,109,82,111,119,115,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32, - 32,114,101,116,117,114,110,32,51,48,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,112,97,105,110,116,76,105,115,116, - 66,111,120,73,116,101,109,32,40,105,110,116,32,114,111,119,78,117,109,98,101,114,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,71,114,97,112,104,105,99,115,38,32,103,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,105,110,116,32,119,105,100,116,104,44,32,105,110,116,32,104,101,105,103,104,116,44,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,98,111,111,108,32,114,111,119,73,115,83,101,108,101,99,116, - 101,100,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102,32,40,114,111,119,73,115,83,101,108,101,99,116,101,100,41,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,103,46,102,105,108,108,65,108,108,32,40,67,111,108,111,117,114,115,58,58,108,105,103,104,116,98,108,117, - 101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,103,46,115,101,116,67,111,108,111,117,114,32,40,67,111,108,111,117,114,115,58,58,98,108,97, - 99,107,41,59,13,10,32,32,32,32,32,32,32,32,103,46,115,101,116,70,111,110,116,32,40,104,101,105,103,104,116,32,42,32,48,46,55,102,41,59, - 13,10,13,10,32,32,32,32,32,32,32,32,103,46,100,114,97,119,84,101,120,116,32,40,84,40,34,82,111,119,32,78,117,109,98,101,114,32,34,41, - 32,43,32,83,116,114,105,110,103,32,40,114,111,119,78,117,109,98,101,114,32,43,32,49,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,53,44,32,48,44,32,119,105,100,116,104,44,32,104,101,105,103,104,116,44,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,74,117,115,116,105,102,105,99,97,116,105,111,110,58,58,99,101,110,116,114,101,100,76,101,102,116,44,32,116,114, - 117,101,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,99,111,110,115,116,32,83,116,114,105,110,103,32,103,101,116,68,114,97,103,83, - 111,117,114,99,101,68,101,115,99,114,105,112,116,105,111,110,32,40,99,111,110,115,116,32,83,112,97,114,115,101,83,101,116,60,105,110,116,62,38,32, - 115,101,108,101,99,116,101,100,82,111,119,115,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,102,111,114,32,111,117,114, - 32,100,114,97,103,32,100,101,115,99,116,114,105,112,116,105,111,110,44,32,119,101,39,108,108,32,106,117,115,116,32,109,97,107,101,32,97,32,108,105, - 115,116,32,111,102,32,116,104,101,32,115,101,108,101,99,116,101,100,13,10,32,32,32,32,32,32,32,32,47,47,32,114,111,119,32,110,117,109,98,101, - 114,115,32,45,32,116,104,105,115,32,119,105,108,108,32,98,101,32,112,105,99,107,101,100,32,117,112,32,98,121,32,116,104,101,32,100,114,97,103,32, - 116,97,114,103,101,116,32,97,110,100,32,100,105,115,112,108,97,121,101,100,32,105,110,13,10,32,32,32,32,32,32,32,32,47,47,32,105,116,115,32, - 98,111,120,46,13,10,32,32,32,32,32,32,32,32,83,116,114,105,110,103,32,100,101,115,99,59,13,10,13,10,32,32,32,32,32,32,32,32,102,111, - 114,32,40,105,110,116,32,105,32,61,32,48,59,32,105,32,60,32,115,101,108,101,99,116,101,100,82,111,119,115,46,115,105,122,101,40,41,59,32,43, - 43,105,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,101,115,99,32,60,60,32,40,115,101,108,101,99,116,101,100,82,111,119,115,32,91, - 105,93,32,43,32,49,41,32,60,60,32,84,40,34,32,34,41,59,13,10,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,100,101,115, - 99,46,116,114,105,109,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,47,47,32,116,104,105,115,32,106,117, - 115,116,32,102,105,108,108,115,32,105,110,32,116,104,101,32,98,97,99,107,103,114,111,117,110,100,32,111,102,32,116,104,101,32,108,105,115,116,98,111, - 120,13,10,32,32,32,32,118,111,105,100,32,112,97,105,110,116,32,40,71,114,97,112,104,105,99,115,38,32,103,41,13,10,32,32,32,32,123,13,10, - 32,32,32,32,32,32,32,32,103,46,102,105,108,108,65,108,108,32,40,67,111,108,111,117,114,115,58,58,119,104,105,116,101,46,119,105,116,104,65,108, - 112,104,97,32,40,48,46,55,102,41,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47,42,118,111,105,100,32,108,105,115,116,66,111, - 120,73,116,101,109,67,108,105,99,107,101,100,32,40,105,110,116,32,114,111,119,44,32,99,111,110,115,116,32,77,111,117,115,101,69,118,101,110,116,38, - 32,101,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,80,111,112,117,112,77,101,110,117,32,109,59,13,10,32,32,32,32,32,32, - 32,32,109,46,97,100,100,73,116,101,109,32,40,49,44,32,34,115,100,102,115,100,102,115,34,41,59,13,10,13,10,32,32,32,32,32,32,32,32,109, - 46,115,104,111,119,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,65,108,101,114,116,87,105,110,100,111,119,58,58,115,104,111,119,77, - 101,115,115,97,103,101,66,111,120,32,40,65,108,101,114,116,87,105,110,100,111,119,58,58,73,110,102,111,73,99,111,110,44,32,34,97,115,100,102,115, - 97,100,102,97,100,115,34,44,32,34,115,114,100,102,115,100,102,97,34,41,59,13,10,32,32,32,32,32,32,32,32,68,111,99,117,109,101,110,116,87, - 105,110,100,111,119,42,32,100,119,32,61,32,110,101,119,32,68,111,99,117,109,101,110,116,87,105,110,100,111,119,32,40,34,115,102,100,115,100,34,44, - 32,67,111,108,111,117,114,115,58,58,119,104,105,116,101,44,32,68,111,99,117,109,101,110,116,87,105,110,100,111,119,58,58,97,108,108,66,117,116,116, - 111,110,115,44,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,100,119,45,62,115,101,116,66,111,117,110,100,115,32,40,49,48,48,44, - 32,49,48,48,44,32,53,48,48,44,32,53,48,48,41,59,13,10,32,32,32,32,32,32,32,32,100,119,45,62,115,101,116,86,105,115,105,98,108,101, - 32,40,116,114,117,101,41,59,13,10,32,32,32,32,125,42,47,13,10,125,59,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,47,47,32,97,110,100,32,116,104,105,115, - 32,105,115,32,97,32,99,111,109,112,111,110,101,110,116,32,116,104,97,116,32,99,97,110,32,104,97,118,101,32,116,104,105,110,103,115,32,100,114,111, - 112,112,101,100,32,111,110,116,111,32,105,116,46,46,13,10,13,10,99,108,97,115,115,32,68,114,97,103,65,110,100,68,114,111,112,68,101,109,111,84, - 97,114,103,101,116,32,32,58,32,112,117,98,108,105,99,32,67,111,109,112,111,110,101,110,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,68,114,97,103,65,110,100,68,114,111,112,84,97,114, - 103,101,116,13,10,123,13,10,32,32,32,32,98,111,111,108,32,115,111,109,101,116,104,105,110,103,73,115,66,101,105,110,103,68,114,97,103,103,101,100, - 79,118,101,114,59,13,10,32,32,32,32,83,116,114,105,110,103,32,109,101,115,115,97,103,101,59,13,10,13,10,112,117,98,108,105,99,58,13,10,32, - 32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,13,10,32,32,32,32,68,114,97,103,65,110,100,68,114,111,112,68,101,109,111,84,97,114,103,101,116,40,41,13,10,32,32,32,32,123,13, - 10,32,32,32,32,32,32,32,32,115,111,109,101,116,104,105,110,103,73,115,66,101,105,110,103,68,114,97,103,103,101,100,79,118,101,114,32,61,32,102, - 97,108,115,101,59,13,10,13,10,32,32,32,32,32,32,32,32,109,101,115,115,97,103,101,32,61,32,84,40,34,68,114,97,103,45,97,110,100,45,100, - 114,111,112,32,115,111,109,101,32,114,111,119,115,32,102,114,111,109,32,116,104,101,32,116,111,112,45,108,101,102,116,32,98,111,120,32,111,110,116,111, - 32,116,104,105,115,32,99,111,109,112,111,110,101,110,116,33,34,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,68,114,97,103,65, - 110,100,68,114,111,112,68,101,109,111,84,97,114,103,101,116,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32, - 47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 13,10,32,32,32,32,118,111,105,100,32,112,97,105,110,116,32,40,71,114,97,112,104,105,99,115,38,32,103,41,13,10,32,32,32,32,123,13,10,32, - 32,32,32,32,32,32,32,103,46,102,105,108,108,65,108,108,32,40,67,111,108,111,117,114,115,58,58,103,114,101,101,110,46,119,105,116,104,65,108,112, - 104,97,32,40,48,46,50,102,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,100,114,97,119,32,97,32,114,101,100,32,108,105,110, - 101,32,97,114,111,117,110,100,32,116,104,101,32,99,111,109,112,32,105,102,32,116,104,101,32,117,115,101,114,39,115,32,99,117,114,114,101,110,116,108, - 121,32,100,114,97,103,103,105,110,103,32,115,111,109,101,116,104,105,110,103,32,111,118,101,114,32,105,116,46,46,13,10,32,32,32,32,32,32,32,32, - 105,102,32,40,115,111,109,101,116,104,105,110,103,73,115,66,101,105,110,103,68,114,97,103,103,101,100,79,118,101,114,41,13,10,32,32,32,32,32,32, - 32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,46,115,101,116,67,111,108,111,117,114,32,40,67,111,108,111,117,114,115,58,58,114, - 101,100,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,46,100,114,97,119,82,101,99,116,32,40,48,44,32,48,44,32,103,101,116,87, - 105,100,116,104,40,41,44,32,103,101,116,72,101,105,103,104,116,40,41,44,32,51,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,13,10,32, - 32,32,32,32,32,32,32,103,46,115,101,116,67,111,108,111,117,114,32,40,67,111,108,111,117,114,115,58,58,98,108,97,99,107,41,59,13,10,32,32, - 32,32,32,32,32,32,103,46,115,101,116,70,111,110,116,32,40,49,52,46,48,102,41,59,13,10,32,32,32,32,32,32,32,32,103,46,100,114,97,119, - 70,105,116,116,101,100,84,101,120,116,32,40,109,101,115,115,97,103,101,44,32,49,48,44,32,48,44,32,103,101,116,87,105,100,116,104,40,41,32,45, - 32,50,48,44,32,103,101,116,72,101,105,103,104,116,40,41,44,32,74,117,115,116,105,102,105,99,97,116,105,111,110,58,58,99,101,110,116,114,101,100, - 44,32,52,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,98,111,111,108,32,105,115,73,110,116,101,114,101,115, - 116,101,100,73,110,68,114,97,103,83,111,117,114,99,101,32,40,99,111,110,115,116,32,83,116,114,105,110,103,38,32,115,111,117,114,99,101,68,101,115, - 99,114,105,112,116,105,111,110,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,67,111,109,112,111,110,101,110,116,42,32,115,111,117,114,99,101,67,111,109,112,111,110,101,110,116,41,13,10,32,32,32,32,123, - 13,10,32,32,32,32,32,32,32,32,47,47,32,110,111,114,109,97,108,108,121,32,121,111,117,39,100,32,99,104,101,99,107,32,116,104,101,32,115,111, - 117,114,99,101,68,101,115,99,114,105,112,116,105,111,110,32,118,97,108,117,101,32,116,111,32,115,101,101,32,105,102,32,105,116,39,115,32,116,104,101, - 13,10,32,32,32,32,32,32,32,32,47,47,32,115,111,114,116,32,111,102,32,111,98,106,101,99,116,32,116,104,97,116,32,121,111,117,39,114,101,32, - 105,110,116,101,114,101,115,116,101,100,32,105,110,32,98,101,102,111,114,101,32,114,101,116,117,114,110,105,110,103,32,116,114,117,101,44,32,98,117,116, - 32,102,111,114,13,10,32,32,32,32,32,32,32,32,47,47,32,116,104,101,32,100,101,109,111,44,32,119,101,39,108,108,32,115,97,121,32,121,101,115, - 32,116,111,32,97,110,121,116,104,105,110,103,46,46,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,116,114,117,101,59,13,10,32,32, - 32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,105,116,101,109,68,114,97,103,69,110,116,101,114,32,40,99,111,110,115,116,32,83,116,114, - 105,110,103,38,32,115,111,117,114,99,101,68,101,115,99,114,105,112,116,105,111,110,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,67,111,109,112,111,110,101,110,116,42,32,115,111,117,114,99,101,67,111,109,112,111,110,101,110,116,44,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,110,116,32,120,44,32,105,110,116,32,121,41,13,10,32,32,32, - 32,123,13,10,32,32,32,32,32,32,32,32,115,111,109,101,116,104,105,110,103,73,115,66,101,105,110,103,68,114,97,103,103,101,100,79,118,101,114,32, - 61,32,116,114,117,101,59,13,10,32,32,32,32,32,32,32,32,114,101,112,97,105,110,116,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32, - 32,32,118,111,105,100,32,105,116,101,109,68,114,97,103,77,111,118,101,32,40,99,111,110,115,116,32,83,116,114,105,110,103,38,32,115,111,117,114,99, - 101,68,101,115,99,114,105,112,116,105,111,110,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,67,111, - 109,112,111,110,101,110,116,42,32,115,111,117,114,99,101,67,111,109,112,111,110,101,110,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,105,110,116,32,120,44,32,105,110,116,32,121,41,13,10,32,32,32,32,123,13,10,32,32,32,32,125,13,10,13, - 10,32,32,32,32,118,111,105,100,32,105,116,101,109,68,114,97,103,69,120,105,116,32,40,99,111,110,115,116,32,83,116,114,105,110,103,38,32,115,111, - 117,114,99,101,68,101,115,99,114,105,112,116,105,111,110,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,67,111,109,112,111,110,101,110,116,42,32,115,111,117,114,99,101,67,111,109,112,111,110,101,110,116,41,13,10,32,32,32,32,123,13,10,32,32,32, - 32,32,32,32,32,115,111,109,101,116,104,105,110,103,73,115,66,101,105,110,103,68,114,97,103,103,101,100,79,118,101,114,32,61,32,102,97,108,115,101, - 59,13,10,32,32,32,32,32,32,32,32,114,101,112,97,105,110,116,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100, - 32,105,116,101,109,68,114,111,112,112,101,100,32,40,99,111,110,115,116,32,83,116,114,105,110,103,38,32,115,111,117,114,99,101,68,101,115,99,114,105, - 112,116,105,111,110,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,67,111,109,112,111,110,101,110,116,42, - 32,115,111,117,114,99,101,67,111,109,112,111,110,101,110,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,105,110,116,32,120,44,32,105,110,116,32,121,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,109,101,115,115,97,103,101,32,61, - 32,84,40,34,108,97,115,116,32,114,111,119,115,32,100,114,111,112,112,101,100,58,32,34,41,32,43,32,115,111,117,114,99,101,68,101,115,99,114,105, - 112,116,105,111,110,59,13,10,13,10,32,32,32,32,32,32,32,32,115,111,109,101,116,104,105,110,103,73,115,66,101,105,110,103,68,114,97,103,103,101, - 100,79,118,101,114,32,61,32,102,97,108,115,101,59,13,10,32,32,32,32,32,32,32,32,114,101,112,97,105,110,116,40,41,59,13,10,32,32,32,32, - 125,13,10,125,59,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,68,114,97,103,65,110,100,68,114,111,112,68,101,109,111,32,32,58,32,112,117, - 98,108,105,99,32,67,111,109,112,111,110,101,110,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,112,117,98,108,105,99,32,68,114,97,103,65,110,100,68,114,111,112,67,111,110,116,97,105,110,101,114,13,10,123,13,10,32,32,32,32,47,47, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10, - 32,32,32,32,68,114,97,103,65,110,100,68,114,111,112,68,101,109,111,83,111,117,114,99,101,42,32,115,111,117,114,99,101,59,13,10,32,32,32,32, - 68,114,97,103,65,110,100,68,114,111,112,68,101,109,111,84,97,114,103,101,116,42,32,116,97,114,103,101,116,59,13,10,13,10,112,117,98,108,105,99, - 58,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,13,10,32,32,32,32,68,114,97,103,65,110,100,68,114,111,112,68,101,109,111,40,41,13,10,32,32,32,32,123,13,10,32, - 32,32,32,32,32,32,32,115,101,116,78,97,109,101,32,40,84,40,34,68,114,97,103,45,97,110,100,45,68,114,111,112,34,41,41,59,13,10,13,10, - 32,32,32,32,32,32,32,32,115,111,117,114,99,101,32,61,32,110,101,119,32,68,114,97,103,65,110,100,68,114,111,112,68,101,109,111,83,111,117,114, - 99,101,40,41,59,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,115,111,117,114,99,101, - 41,59,13,10,13,10,32,32,32,32,32,32,32,32,116,97,114,103,101,116,32,61,32,110,101,119,32,68,114,97,103,65,110,100,68,114,111,112,68,101, - 109,111,84,97,114,103,101,116,40,41,59,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40, - 116,97,114,103,101,116,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,68,114,97,103,65,110,100,68,114,111,112,68,101,109,111,40, - 41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65,108,108,67,104,105,108,100,114,101,110,40,41,59,13,10, - 32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,114,101,115,105,122,101,100,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32, - 32,32,32,32,115,111,117,114,99,101,45,62,115,101,116,66,111,117,110,100,115,32,40,49,48,44,32,49,48,44,32,50,53,48,44,32,49,53,48,41, - 59,13,10,32,32,32,32,32,32,32,32,116,97,114,103,101,116,45,62,115,101,116,66,111,117,110,100,115,32,40,103,101,116,87,105,100,116,104,40,41, - 32,45,32,50,54,48,44,32,103,101,116,72,101,105,103,104,116,40,41,32,45,32,49,54,48,44,32,50,53,48,44,32,49,53,48,41,59,13,10,32, - 32,32,32,125,13,10,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,47,47,32,40,110,101,101,100,32,116,111,32,112,117,116,32,116,104,105,115,32,105, - 110,32,116,111,32,100,105,115,97,109,98,105,103,117,97,116,101,32,116,104,101,32,110,101,119,47,100,101,108,101,116,101,32,111,112,101,114,97,116,111, - 114,115,32,117,115,101,100,32,105,110,32,116,104,101,13,10,32,32,32,32,47,47,32,116,119,111,32,98,97,115,101,32,99,108,97,115,115,101,115,41, - 46,13,10,32,32,32,32,106,117,99,101,95,85,115,101,68,101,98,117,103,103,105,110,103,78,101,119,79,112,101,114,97,116,111,114,13,10,125,59,13, - 10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,13,10,67,111,109,112,111,110,101,110,116,42,32,99,114,101,97,116,101,68,114,97,103,65,110,100,68,114,111,112,68,101,109,111,40, - 41,13,10,123,13,10,32,32,32,32,114,101,116,117,114,110,32,110,101,119,32,68,114,97,103,65,110,100,68,114,111,112,68,101,109,111,40,41,59,13, - 10,125,13,10,0,0}; -const char* BinaryData::draganddropdemo_cpp = (const char*) temp3; - -static const unsigned char temp4[] = {47,42,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,13,10,13,10,32,32,32,84,104,105,115,32,102,105,108,101,32,105,115,32,112,97,114,116,32,111,102,32,116,104,101,32,74,85,67,69, - 32,108,105,98,114,97,114,121,32,45,32,34,74,117,108,101,115,39,32,85,116,105,108,105,116,121,32,67,108,97,115,115,32,69,120,116,101,110,115,105, - 111,110,115,34,13,10,32,32,32,67,111,112,121,114,105,103,104,116,32,50,48,48,52,45,57,32,98,121,32,82,97,119,32,77,97,116,101,114,105,97, - 108,32,83,111,102,116,119,97,114,101,32,76,116,100,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,74,85,67,69,32,99,97,110,32,98,101,32,114,101, - 100,105,115,116,114,105,98,117,116,101,100,32,97,110,100,47,111,114,32,109,111,100,105,102,105,101,100,32,117,110,100,101,114,32,116,104,101,32,116,101, - 114,109,115,32,111,102,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,13,10,32,32,32,80,117,98,108,105,99,32,76,105,99,101,110,115, - 101,32,40,86,101,114,115,105,111,110,32,50,41,44,32,97,115,32,112,117,98,108,105,115,104,101,100,32,98,121,32,116,104,101,32,70,114,101,101,32, - 83,111,102,116,119,97,114,101,32,70,111,117,110,100,97,116,105,111,110,46,13,10,32,32,32,65,32,99,111,112,121,32,111,102,32,116,104,101,32,108, - 105,99,101,110,115,101,32,105,115,32,105,110,99,108,117,100,101,100,32,105,110,32,116,104,101,32,74,85,67,69,32,100,105,115,116,114,105,98,117,116, - 105,111,110,44,32,111,114,32,99,97,110,32,98,101,32,102,111,117,110,100,13,10,32,32,32,111,110,108,105,110,101,32,97,116,32,119,119,119,46,103, - 110,117,46,111,114,103,47,108,105,99,101,110,115,101,115,46,13,10,13,10,32,32,32,74,85,67,69,32,105,115,32,100,105,115,116,114,105,98,117,116, - 101,100,32,105,110,32,116,104,101,32,104,111,112,101,32,116,104,97,116,32,105,116,32,119,105,108,108,32,98,101,32,117,115,101,102,117,108,44,32,98, - 117,116,32,87,73,84,72,79,85,84,32,65,78,89,13,10,32,32,32,87,65,82,82,65,78,84,89,59,32,119,105,116,104,111,117,116,32,101,118,101, - 110,32,116,104,101,32,105,109,112,108,105,101,100,32,119,97,114,114,97,110,116,121,32,111,102,32,77,69,82,67,72,65,78,84,65,66,73,76,73,84, - 89,32,111,114,32,70,73,84,78,69,83,83,32,70,79,82,13,10,32,32,32,65,32,80,65,82,84,73,67,85,76,65,82,32,80,85,82,80,79,83, - 69,46,32,32,83,101,101,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,32,80,117,98,108,105,99,32,76,105,99,101,110,115,101,32,102, - 111,114,32,109,111,114,101,32,100,101,116,97,105,108,115,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,84,111,32,114,101,108,101,97,115,101,32,97,32, - 99,108,111,115,101,100,45,115,111,117,114,99,101,32,112,114,111,100,117,99,116,32,119,104,105,99,104,32,117,115,101,115,32,74,85,67,69,44,32,99, - 111,109,109,101,114,99,105,97,108,32,108,105,99,101,110,115,101,115,32,97,114,101,13,10,32,32,32,97,118,97,105,108,97,98,108,101,58,32,118,105, - 115,105,116,32,119,119,119,46,114,97,119,109,97,116,101,114,105,97,108,115,111,102,116,119,97,114,101,46,99,111,109,47,106,117,99,101,32,102,111,114, - 32,109,111,114,101,32,105,110,102,111,114,109,97,116,105,111,110,46,13,10,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,42,47,13,10,13,10,35,105,110,99,108,117,100,101,32,34, - 46,46,47,106,117,99,101,100,101,109,111,95,104,101,97,100,101,114,115,46,104,34,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,70,111,110,116, - 115,65,110,100,84,101,120,116,68,101,109,111,32,32,58,32,112,117,98,108,105,99,32,67,111,109,112,111,110,101,110,116,44,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,76,105,115,116,66,111,120,77,111,100,101,108, - 44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,66,117,116,116, - 111,110,76,105,115,116,101,110,101,114,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112, - 117,98,108,105,99,32,83,108,105,100,101,114,76,105,115,116,101,110,101,114,13,10,123,13,10,32,32,32,32,79,119,110,101,100,65,114,114,97,121,32, - 60,70,111,110,116,62,32,102,111,110,116,115,59,13,10,32,32,32,32,76,105,115,116,66,111,120,42,32,108,105,115,116,66,111,120,59,13,10,32,32, - 32,32,84,101,120,116,69,100,105,116,111,114,42,32,116,101,120,116,66,111,120,59,13,10,32,32,32,32,84,111,103,103,108,101,66,117,116,116,111,110, - 42,32,98,111,108,100,66,117,116,116,111,110,59,13,10,32,32,32,32,84,111,103,103,108,101,66,117,116,116,111,110,42,32,105,116,97,108,105,99,66, - 117,116,116,111,110,59,13,10,32,32,32,32,83,108,105,100,101,114,42,32,115,105,122,101,83,108,105,100,101,114,59,13,10,13,10,32,32,32,32,83, - 116,114,101,116,99,104,97,98,108,101,76,97,121,111,117,116,77,97,110,97,103,101,114,32,118,101,114,116,105,99,97,108,76,97,121,111,117,116,59,13, - 10,32,32,32,32,83,116,114,101,116,99,104,97,98,108,101,76,97,121,111,117,116,77,97,110,97,103,101,114,32,104,111,114,105,122,111,110,116,97,108, - 76,97,121,111,117,116,59,13,10,13,10,32,32,32,32,83,116,114,101,116,99,104,97,98,108,101,76,97,121,111,117,116,82,101,115,105,122,101,114,66, - 97,114,42,32,118,101,114,116,105,99,97,108,68,105,118,105,100,101,114,66,97,114,59,13,10,32,32,32,32,83,116,114,101,116,99,104,97,98,108,101, - 76,97,121,111,117,116,82,101,115,105,122,101,114,66,97,114,42,32,104,111,114,105,122,111,110,116,97,108,68,105,118,105,100,101,114,66,97,114,59,13, - 10,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,70,111,110,116,115,65,110,100,84,101,120,116,68,101,109,111,40,41, - 13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,115,101,116,78,97,109,101,32,40,84,40,34,70,111,110,116,115,34,41,41,59,13,10, - 13,10,32,32,32,32,32,32,32,32,70,111,110,116,58,58,102,105,110,100,70,111,110,116,115,32,40,102,111,110,116,115,41,59,13,10,13,10,32,32, - 32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,108,105,115,116,66,111,120,32,61,32,110,101,119,32,76, - 105,115,116,66,111,120,32,40,84,40,34,102,111,110,116,115,34,41,44,32,116,104,105,115,41,41,59,13,10,32,32,32,32,32,32,32,32,108,105,115, - 116,66,111,120,45,62,115,101,116,82,111,119,72,101,105,103,104,116,32,40,50,56,41,59,13,10,13,10,32,32,32,32,32,32,32,32,97,100,100,65, - 110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,116,101,120,116,66,111,120,32,61,32,110,101,119,32,84,101,120,116,69,100,105,116,111,114,40, - 41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,116,101,120,116,66,111,120,45,62,115,101,116,67,111,108,111,117,114,32,40,84,101,120,116,69, - 100,105,116,111,114,58,58,98,97,99,107,103,114,111,117,110,100,67,111,108,111,117,114,73,100,44,32,67,111,108,111,117,114,115,58,58,119,104,105,116, - 101,41,59,13,10,32,32,32,32,32,32,32,32,116,101,120,116,66,111,120,45,62,115,101,116,67,111,108,111,117,114,32,40,84,101,120,116,69,100,105, - 116,111,114,58,58,111,117,116,108,105,110,101,67,111,108,111,117,114,73,100,44,32,67,111,108,111,117,114,115,58,58,98,108,97,99,107,46,119,105,116, - 104,65,108,112,104,97,32,40,48,46,53,102,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,116,101,120,116,66,111,120,45,62,115,101,116,77, - 117,108,116,105,76,105,110,101,32,40,116,114,117,101,44,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,116,101,120,116,66,111,120,45, - 62,115,101,116,82,101,116,117,114,110,75,101,121,83,116,97,114,116,115,78,101,119,76,105,110,101,32,40,116,114,117,101,41,59,13,10,32,32,32,32, - 32,32,32,32,116,101,120,116,66,111,120,45,62,115,101,116,84,101,120,116,32,40,84,40,34,84,104,101,32,81,117,105,99,107,32,66,114,111,119,110, - 32,70,111,120,32,74,117,109,112,101,100,32,79,118,101,114,32,84,104,101,32,76,97,122,121,32,68,111,103,92,110,92,110,65,97,32,66,98,32,67, - 99,32,68,100,32,69,101,32,70,102,32,71,103,32,72,104,32,73,105,32,74,106,32,75,107,32,76,108,32,77,109,32,78,110,32,79,111,32,80,112, - 32,81,113,32,82,114,32,83,115,32,84,116,32,85,117,32,86,118,32,87,119,32,88,120,32,89,121,32,90,122,32,48,49,50,51,52,53,54,55,56, - 57,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,98,111,108,100, - 66,117,116,116,111,110,32,61,32,110,101,119,32,84,111,103,103,108,101,66,117,116,116,111,110,32,40,84,40,34,98,111,108,100,34,41,41,41,59,13, - 10,32,32,32,32,32,32,32,32,98,111,108,100,66,117,116,116,111,110,45,62,97,100,100,66,117,116,116,111,110,76,105,115,116,101,110,101,114,32,40, - 116,104,105,115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,105,116,97, - 108,105,99,66,117,116,116,111,110,32,61,32,110,101,119,32,84,111,103,103,108,101,66,117,116,116,111,110,32,40,84,40,34,105,116,97,108,105,99,34, - 41,41,41,59,13,10,32,32,32,32,32,32,32,32,105,116,97,108,105,99,66,117,116,116,111,110,45,62,97,100,100,66,117,116,116,111,110,76,105,115, - 116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98, - 108,101,32,40,115,105,122,101,83,108,105,100,101,114,32,61,32,110,101,119,32,83,108,105,100,101,114,32,40,84,40,34,115,105,122,101,34,41,41,41, - 59,13,10,32,32,32,32,32,32,32,32,115,105,122,101,83,108,105,100,101,114,45,62,115,101,116,82,97,110,103,101,32,40,51,46,48,44,32,49,53, - 48,46,48,44,32,48,46,49,41,59,13,10,32,32,32,32,32,32,32,32,115,105,122,101,83,108,105,100,101,114,45,62,115,101,116,86,97,108,117,101, - 32,40,50,48,46,48,41,59,13,10,32,32,32,32,32,32,32,32,115,105,122,101,83,108,105,100,101,114,45,62,97,100,100,76,105,115,116,101,110,101, - 114,32,40,116,104,105,115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,108,105,115,116,66,111,120,45,62,115,101,108,101,99,116,82,111,119,32, - 40,48,41,59,13,10,32,32,32,32,32,32,32,32,108,105,115,116,66,111,120,45,62,115,101,116,67,111,108,111,117,114,32,40,76,105,115,116,66,111, - 120,58,58,111,117,116,108,105,110,101,67,111,108,111,117,114,73,100,44,32,67,111,108,111,117,114,115,58,58,98,108,97,99,107,46,119,105,116,104,65, - 108,112,104,97,32,40,48,46,53,102,41,41,59,13,10,32,32,32,32,32,32,32,32,108,105,115,116,66,111,120,45,62,115,101,116,79,117,116,108,105, - 110,101,84,104,105,99,107,110,101,115,115,32,40,49,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,115,101,116,32,117,112,32,116,104, - 101,32,108,97,121,111,117,116,32,97,110,100,32,114,101,115,105,122,101,114,32,98,97,114,115,46,46,13,10,13,10,32,32,32,32,32,32,32,32,118, - 101,114,116,105,99,97,108,76,97,121,111,117,116,46,115,101,116,73,116,101,109,76,97,121,111,117,116,32,40,48,44,32,45,48,46,50,44,32,45,48, - 46,56,44,32,45,48,46,53,41,59,32,32,47,47,32,119,105,100,116,104,32,111,102,32,116,104,101,32,102,111,110,116,32,108,105,115,116,32,109,117, - 115,116,32,98,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,98,101,116,119,101,101,110,32,50, - 48,37,32,97,110,100,32,56,48,37,44,32,112,114,101,102,101,114,97,98,108,121,32,53,48,37,13,10,32,32,32,32,32,32,32,32,118,101,114,116, - 105,99,97,108,76,97,121,111,117,116,46,115,101,116,73,116,101,109,76,97,121,111,117,116,32,40,49,44,32,56,44,32,56,44,32,56,41,59,32,32, - 32,32,32,32,32,32,32,32,32,47,47,32,116,104,101,32,118,101,114,116,105,99,97,108,32,100,105,118,105,100,101,114,32,100,114,97,103,45,98,97, - 114,32,116,104,105,110,103,32,105,115,32,97,108,119,97,121,115,32,56,32,112,105,120,101,108,115,32,119,105,100,101,13,10,32,32,32,32,32,32,32, - 32,118,101,114,116,105,99,97,108,76,97,121,111,117,116,46,115,101,116,73,116,101,109,76,97,121,111,117,116,32,40,50,44,32,49,53,48,44,32,45, - 49,46,48,44,32,45,48,46,53,41,59,32,32,32,47,47,32,116,104,101,32,99,111,109,112,111,110,101,110,116,115,32,111,110,32,116,104,101,32,114, - 105,103,104,116,32,109,117,115,116,32,98,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,97,116, - 32,108,101,97,115,116,32,49,53,48,32,112,105,120,101,108,115,32,119,105,100,101,44,32,112,114,101,102,101,114,97,98,108,121,32,53,48,37,32,111, - 102,32,116,104,101,32,116,111,116,97,108,32,119,105,100,116,104,13,10,13,10,32,32,32,32,32,32,32,32,118,101,114,116,105,99,97,108,68,105,118, - 105,100,101,114,66,97,114,32,61,32,110,101,119,32,83,116,114,101,116,99,104,97,98,108,101,76,97,121,111,117,116,82,101,115,105,122,101,114,66,97, - 114,32,40,38,118,101,114,116,105,99,97,108,76,97,121,111,117,116,44,32,49,44,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,97, - 100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,118,101,114,116,105,99,97,108,68,105,118,105,100,101,114,66,97,114,41,59,13,10, - 13,10,32,32,32,32,32,32,32,32,104,111,114,105,122,111,110,116,97,108,76,97,121,111,117,116,46,115,101,116,73,116,101,109,76,97,121,111,117,116, - 32,40,48,44,32,45,48,46,50,44,32,45,49,46,48,44,32,45,48,46,52,41,59,32,32,47,47,32,104,101,105,103,104,116,32,111,102,32,116,104, - 101,32,102,111,110,116,32,116,101,120,116,32,98,111,120,32,109,117,115,116,32,98,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,47,47,32,98,101,116,119,101,101,110,32,50,48,37,32,97,110,100,32,49,48,48,37,44,32,112,114,101,102,101,114,97, - 98,108,121,32,52,48,37,13,10,32,32,32,32,32,32,32,32,104,111,114,105,122,111,110,116,97,108,76,97,121,111,117,116,46,115,101,116,73,116,101, - 109,76,97,121,111,117,116,32,40,49,44,32,56,44,32,56,44,32,56,41,59,32,32,32,32,32,32,32,32,32,32,32,47,47,32,116,104,101,32,104, - 111,114,105,122,111,110,116,97,108,32,100,105,118,105,100,101,114,32,100,114,97,103,45,98,97,114,32,116,104,105,110,103,32,105,115,32,97,108,119,97, - 121,115,32,56,32,112,105,120,101,108,115,32,104,105,103,104,13,10,32,32,32,32,32,32,32,32,104,111,114,105,122,111,110,116,97,108,76,97,121,111, - 117,116,46,115,101,116,73,116,101,109,76,97,121,111,117,116,32,40,50,44,32,50,44,32,53,44,32,53,41,59,32,32,32,32,32,32,32,32,32,32, - 32,47,47,32,97,32,103,97,112,32,98,101,116,119,101,101,110,32,116,104,101,32,99,111,110,116,114,111,108,115,13,10,32,32,32,32,32,32,32,32, - 104,111,114,105,122,111,110,116,97,108,76,97,121,111,117,116,46,115,101,116,73,116,101,109,76,97,121,111,117,116,32,40,51,44,32,49,53,44,32,50, - 48,44,32,50,48,41,59,32,32,32,32,32,32,32,32,47,47,32,116,104,101,32,105,116,97,108,105,99,32,98,117,116,116,111,110,32,119,111,117,108, - 100,32,108,105,107,101,32,116,111,32,98,101,32,50,48,32,112,105,120,101,108,115,32,104,105,103,104,13,10,32,32,32,32,32,32,32,32,104,111,114, - 105,122,111,110,116,97,108,76,97,121,111,117,116,46,115,101,116,73,116,101,109,76,97,121,111,117,116,32,40,52,44,32,50,44,32,53,44,32,53,41, - 59,32,32,32,32,32,32,32,32,32,32,32,47,47,32,97,32,103,97,112,32,98,101,116,119,101,101,110,32,116,104,101,32,99,111,110,116,114,111,108, - 115,13,10,32,32,32,32,32,32,32,32,104,111,114,105,122,111,110,116,97,108,76,97,121,111,117,116,46,115,101,116,73,116,101,109,76,97,121,111,117, - 116,32,40,53,44,32,49,53,44,32,50,48,44,32,50,48,41,59,32,32,32,32,32,32,32,32,47,47,32,116,104,101,32,98,111,108,100,32,98,117, - 116,116,111,110,32,119,111,117,108,100,32,108,105,107,101,32,116,111,32,98,101,32,50,48,32,112,105,120,101,108,115,32,104,105,103,104,13,10,32,32, - 32,32,32,32,32,32,104,111,114,105,122,111,110,116,97,108,76,97,121,111,117,116,46,115,101,116,73,116,101,109,76,97,121,111,117,116,32,40,54,44, - 32,50,44,32,53,44,32,53,41,59,32,32,32,32,32,32,32,32,32,32,32,47,47,32,97,32,103,97,112,32,98,101,116,119,101,101,110,32,116,104, - 101,32,99,111,110,116,114,111,108,115,13,10,32,32,32,32,32,32,32,32,104,111,114,105,122,111,110,116,97,108,76,97,121,111,117,116,46,115,101,116, - 73,116,101,109,76,97,121,111,117,116,32,40,55,44,32,49,53,44,32,50,48,44,32,50,48,41,59,32,32,32,32,32,32,32,32,47,47,32,116,104, - 101,32,105,116,97,108,105,99,32,98,117,116,116,111,110,32,119,111,117,108,100,32,108,105,107,101,32,116,111,32,98,101,32,50,48,32,112,105,120,101, - 108,115,32,104,105,103,104,13,10,32,32,32,32,32,32,32,32,104,111,114,105,122,111,110,116,97,108,76,97,121,111,117,116,46,115,101,116,73,116,101, - 109,76,97,121,111,117,116,32,40,56,44,32,50,44,32,53,44,32,53,41,59,32,32,32,32,32,32,32,32,32,32,32,47,47,32,97,32,103,97,112, - 32,98,101,116,119,101,101,110,32,116,104,101,32,99,111,110,116,114,111,108,115,13,10,32,32,32,32,32,32,32,32,104,111,114,105,122,111,110,116,97, - 108,76,97,121,111,117,116,46,115,101,116,73,116,101,109,76,97,121,111,117,116,32,40,57,44,32,49,53,44,32,50,48,44,32,50,48,41,59,32,32, - 32,32,32,32,32,32,47,47,32,116,104,101,32,99,111,112,121,32,99,111,100,101,32,98,117,116,116,111,110,32,119,111,117,108,100,32,108,105,107,101, - 32,116,111,32,98,101,32,50,48,32,112,105,120,101,108,115,32,104,105,103,104,13,10,32,32,32,32,32,32,32,32,104,111,114,105,122,111,110,116,97, - 108,76,97,121,111,117,116,46,115,101,116,73,116,101,109,76,97,121,111,117,116,32,40,49,48,44,32,53,44,32,45,49,46,48,44,32,53,41,59,32, - 32,32,32,32,32,32,32,47,47,32,97,100,100,32,97,32,103,97,112,32,97,116,32,116,104,101,32,98,111,116,116,111,109,32,116,104,97,116,32,119, - 105,108,108,32,102,105,108,108,32,117,112,32,97,110,121,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 47,47,32,115,112,97,99,101,32,108,101,102,116,32,111,118,101,114,32,45,32,116,104,105,115,32,119,105,108,108,32,115,116,111,112,32,116,104,101,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,115,108,105,100,101,114,115,32,102,114,111,109,32, - 97,108,119,97,121,115,32,115,116,105,99,107,105,110,103,32,116,111,32,116,104,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,47,47,32,98,111,116,116,111,109,32,111,102,32,116,104,101,32,119,105,110,100,111,119,13,10,13,10,32,32,32,32,32,32, - 32,32,104,111,114,105,122,111,110,116,97,108,68,105,118,105,100,101,114,66,97,114,32,61,32,110,101,119,32,83,116,114,101,116,99,104,97,98,108,101, - 76,97,121,111,117,116,82,101,115,105,122,101,114,66,97,114,32,40,38,104,111,114,105,122,111,110,116,97,108,76,97,121,111,117,116,44,32,49,44,32, - 102,97,108,115,101,41,59,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,104,111,114,105, - 122,111,110,116,97,108,68,105,118,105,100,101,114,66,97,114,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,70,111,110,116,115,65, - 110,100,84,101,120,116,68,101,109,111,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65,108,108,67,104, - 105,108,100,114,101,110,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,114,101,115,105,122,101,100,40,41,13,10, - 32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,108,97,121,32,111,117,116,32,116,104,101,32,108,105,115,116,32,98,111,120,32,97, - 110,100,32,118,101,114,116,105,99,97,108,32,100,105,118,105,100,101,114,46,46,13,10,32,32,32,32,32,32,32,32,67,111,109,112,111,110,101,110,116, - 42,32,118,99,111,109,112,115,91,93,32,61,32,123,32,108,105,115,116,66,111,120,44,32,118,101,114,116,105,99,97,108,68,105,118,105,100,101,114,66, - 97,114,44,32,48,32,125,59,13,10,13,10,32,32,32,32,32,32,32,32,118,101,114,116,105,99,97,108,76,97,121,111,117,116,46,108,97,121,79,117, - 116,67,111,109,112,111,110,101,110,116,115,32,40,118,99,111,109,112,115,44,32,51,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,52,44,32,52,44,32,103,101,116,87,105,100,116,104, - 40,41,32,45,32,56,44,32,103,101,116,72,101,105,103,104,116,40,41,32,45,32,56,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,97,108,115,101,44,32,32,32,32,32,47,47, - 32,108,97,121,32,111,117,116,32,115,105,100,101,45,98,121,45,115,105,100,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,114,117,101,41,59,32,32,32,32,32,47,47,32,114,101, - 115,105,122,101,32,116,104,101,32,99,111,109,112,111,110,101,110,116,115,39,32,104,101,105,103,104,116,115,32,97,115,32,119,101,108,108,32,97,115,32, - 119,105,100,116,104,115,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,110,111,119,32,108,97,121,32,111,117,116,32,116,104,101,32,116,101,120, - 116,32,98,111,120,32,97,110,100,32,116,104,101,32,99,111,110,116,114,111,108,115,32,98,101,108,111,119,32,105,116,46,46,13,10,32,32,32,32,32, - 32,32,32,67,111,109,112,111,110,101,110,116,42,32,104,99,111,109,112,115,91,93,32,61,32,123,32,116,101,120,116,66,111,120,44,32,104,111,114,105, - 122,111,110,116,97,108,68,105,118,105,100,101,114,66,97,114,44,32,48,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,98,111,108,100,66,117,116,116,111,110,44,32,48,44,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,116,97,108,105,99,66,117,116,116,111,110,44,32,48,44,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,115,105,122,101,83,108,105,100, - 101,114,32,125,59,13,10,13,10,32,32,32,32,32,32,32,32,104,111,114,105,122,111,110,116,97,108,76,97,121,111,117,116,46,108,97,121,79,117,116, - 67,111,109,112,111,110,101,110,116,115,32,40,104,99,111,109,112,115,44,32,56,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,52,32,43,32,118,101,114,116,105,99,97,108,76, - 97,121,111,117,116,46,103,101,116,73,116,101,109,67,117,114,114,101,110,116,80,111,115,105,116,105,111,110,32,40,50,41,44,32,47,47,32,102,111,114, - 32,116,104,101,105,114,32,119,105,100,116,104,115,44,32,114,101,102,101,114,32,116,111,32,116,104,101,32,118,101,114,116,105,99,97,108,32,108,97,121, - 111,117,116,32,115,116,97,116,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,52,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,118,101,114,116,105,99,97,108,76,97,121,111,117,116,46,103,101,116,73, - 116,101,109,67,117,114,114,101,110,116,65,98,115,111,108,117,116,101,83,105,122,101,32,40,50,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,101,116,72,101,105,103,104, - 116,40,41,32,45,32,56,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,116,114,117,101,44,32,32,32,32,47,47,32,108,97,121,32,111,117,116,32,97,98,111,118,101,32,101, - 97,99,104,32,111,116,104,101,114,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,114,117,101,41,59,32,32,32,47,47,32,114,101,115,105,122,101,32,116,104,101,32,99,111,109, - 112,111,110,101,110,116,115,39,32,119,105,100,116,104,115,32,97,115,32,119,101,108,108,32,97,115,32,104,101,105,103,104,116,115,13,10,32,32,32,32, - 125,13,10,13,10,32,32,32,32,47,47,32,105,109,112,108,101,109,101,110,116,115,32,116,104,101,32,76,105,115,116,66,111,120,77,111,100,101,108,32, - 109,101,116,104,111,100,13,10,32,32,32,32,105,110,116,32,103,101,116,78,117,109,82,111,119,115,40,41,13,10,32,32,32,32,123,13,10,32,32,32, - 32,32,32,32,32,114,101,116,117,114,110,32,102,111,110,116,115,46,115,105,122,101,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32, - 47,47,32,105,109,112,108,101,109,101,110,116,115,32,116,104,101,32,76,105,115,116,66,111,120,77,111,100,101,108,32,109,101,116,104,111,100,13,10,32, - 32,32,32,118,111,105,100,32,112,97,105,110,116,76,105,115,116,66,111,120,73,116,101,109,32,40,105,110,116,32,114,111,119,78,117,109,98,101,114,44, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,71,114,97,112,104,105,99,115,38,32,103, - 44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,110,116,32,119,105,100,116,104,44, - 32,105,110,116,32,104,101,105,103,104,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,98,111,111,108,32,114,111,119,73,115,83,101,108,101,99,116,101,100,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102,32, - 40,114,111,119,73,115,83,101,108,101,99,116,101,100,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,46,102,105,108,108,65,108,108,32,40, - 67,111,108,111,117,114,115,58,58,108,105,103,104,116,98,108,117,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,102,111,110,116, - 115,32,91,114,111,119,78,117,109,98,101,114,93,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,70,111,110,116,32,102,111,110,116,32,40,42,102,111,110,116,115,32,91,114,111,119,78,117,109,98,101,114,93,41,59,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,102,111,110,116,46,115,101,116,72,101,105,103,104,116,32,40,104,101,105,103,104,116,32,42,32,48,46,55,102,41,59, - 13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,46,115,101,116,70,111,110,116,32,40,102,111,110,116,41,59,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,103,46,100,114,97,119,84,101,120,116,32,40,102,111,110,116,46,103,101,116,84,121,112,101,102,97,99,101,78,97,109,101,40, - 41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,52,44,32,48,44,32,119,105,100,116,104,32, - 45,32,52,44,32,104,101,105,103,104,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,74,117, - 115,116,105,102,105,99,97,116,105,111,110,58,58,99,101,110,116,114,101,100,76,101,102,116,44,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32, - 32,32,125,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,117,112,100,97,116,101,80,114,101,118,105,101,119,66,111,120,84, - 101,120,116,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,70,111,110,116,42,32,102,32,61,32,102,111,110,116,115,32,91,108, - 105,115,116,66,111,120,45,62,103,101,116,83,101,108,101,99,116,101,100,82,111,119,40,41,93,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102, - 32,40,102,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,70,111,110,116,32,102, - 111,110,116,32,40,42,102,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,102,111,110,116,46,115,101,116,72,101,105,103,104,116,32, - 40,40,102,108,111,97,116,41,32,115,105,122,101,83,108,105,100,101,114,45,62,103,101,116,86,97,108,117,101,40,41,41,59,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,102,111,110,116,46,115,101,116,66,111,108,100,32,40,98,111,108,100,66,117,116,116,111,110,45,62,103,101,116,84,111,103,103, - 108,101,83,116,97,116,101,40,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,102,111,110,116,46,115,101,116,73,116,97,108,105,99,32, - 40,105,116,97,108,105,99,66,117,116,116,111,110,45,62,103,101,116,84,111,103,103,108,101,83,116,97,116,101,40,41,41,59,13,10,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,116,101,120,116,66,111,120,45,62,97,112,112,108,121,70,111,110,116,84,111,65,108,108,84,101,120,116,32,40,102,111, - 110,116,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,115,101,108,101,99, - 116,101,100,82,111,119,115,67,104,97,110,103,101,100,32,40,105,110,116,32,108,97,115,116,82,111,119,115,101,108,101,99,116,101,100,41,13,10,32,32, - 32,32,123,13,10,32,32,32,32,32,32,32,32,117,112,100,97,116,101,80,114,101,118,105,101,119,66,111,120,84,101,120,116,40,41,59,13,10,32,32, - 32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,98,117,116,116,111,110,67,108,105,99,107,101,100,32,40,66,117,116,116,111,110,42,32,98, - 117,116,116,111,110,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,117,112,100,97,116,101,80,114,101,118,105,101,119,66,111,120,84, - 101,120,116,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,115,108,105,100,101,114,86,97,108,117,101,67,104,97, - 110,103,101,100,32,40,83,108,105,100,101,114,42,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,40,116,104,105,115,32, - 105,115,32,99,97,108,108,101,100,32,119,104,101,110,32,116,104,101,32,115,105,122,101,32,115,108,105,100,101,114,32,105,115,32,109,111,118,101,100,41, - 13,10,32,32,32,32,32,32,32,32,117,112,100,97,116,101,80,114,101,118,105,101,119,66,111,120,84,101,120,116,40,41,59,13,10,32,32,32,32,125, - 13,10,125,59,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,13,10,67,111,109,112,111,110,101,110,116,42,32,99,114,101,97,116,101,70,111,110,116,115,65,110,100,84,101,120, - 116,68,101,109,111,40,41,13,10,123,13,10,32,32,32,32,114,101,116,117,114,110,32,110,101,119,32,70,111,110,116,115,65,110,100,84,101,120,116,68, - 101,109,111,40,41,59,13,10,125,13,10,0,0}; -const char* BinaryData::fontsandtextdemo_cpp = (const char*) temp4; - -static const unsigned char temp5[] = {47,42,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,13,10,13,10,32,32,32,84,104,105,115,32,102,105,108,101,32,105,115,32,112,97,114,116,32,111,102,32,116,104,101,32,74,85,67,69, - 32,108,105,98,114,97,114,121,32,45,32,34,74,117,108,101,115,39,32,85,116,105,108,105,116,121,32,67,108,97,115,115,32,69,120,116,101,110,115,105, - 111,110,115,34,13,10,32,32,32,67,111,112,121,114,105,103,104,116,32,50,48,48,52,45,57,32,98,121,32,82,97,119,32,77,97,116,101,114,105,97, - 108,32,83,111,102,116,119,97,114,101,32,76,116,100,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,74,85,67,69,32,99,97,110,32,98,101,32,114,101, - 100,105,115,116,114,105,98,117,116,101,100,32,97,110,100,47,111,114,32,109,111,100,105,102,105,101,100,32,117,110,100,101,114,32,116,104,101,32,116,101, - 114,109,115,32,111,102,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,13,10,32,32,32,80,117,98,108,105,99,32,76,105,99,101,110,115, - 101,32,40,86,101,114,115,105,111,110,32,50,41,44,32,97,115,32,112,117,98,108,105,115,104,101,100,32,98,121,32,116,104,101,32,70,114,101,101,32, - 83,111,102,116,119,97,114,101,32,70,111,117,110,100,97,116,105,111,110,46,13,10,32,32,32,65,32,99,111,112,121,32,111,102,32,116,104,101,32,108, - 105,99,101,110,115,101,32,105,115,32,105,110,99,108,117,100,101,100,32,105,110,32,116,104,101,32,74,85,67,69,32,100,105,115,116,114,105,98,117,116, - 105,111,110,44,32,111,114,32,99,97,110,32,98,101,32,102,111,117,110,100,13,10,32,32,32,111,110,108,105,110,101,32,97,116,32,119,119,119,46,103, - 110,117,46,111,114,103,47,108,105,99,101,110,115,101,115,46,13,10,13,10,32,32,32,74,85,67,69,32,105,115,32,100,105,115,116,114,105,98,117,116, - 101,100,32,105,110,32,116,104,101,32,104,111,112,101,32,116,104,97,116,32,105,116,32,119,105,108,108,32,98,101,32,117,115,101,102,117,108,44,32,98, - 117,116,32,87,73,84,72,79,85,84,32,65,78,89,13,10,32,32,32,87,65,82,82,65,78,84,89,59,32,119,105,116,104,111,117,116,32,101,118,101, - 110,32,116,104,101,32,105,109,112,108,105,101,100,32,119,97,114,114,97,110,116,121,32,111,102,32,77,69,82,67,72,65,78,84,65,66,73,76,73,84, - 89,32,111,114,32,70,73,84,78,69,83,83,32,70,79,82,13,10,32,32,32,65,32,80,65,82,84,73,67,85,76,65,82,32,80,85,82,80,79,83, - 69,46,32,32,83,101,101,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,32,80,117,98,108,105,99,32,76,105,99,101,110,115,101,32,102, - 111,114,32,109,111,114,101,32,100,101,116,97,105,108,115,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,84,111,32,114,101,108,101,97,115,101,32,97,32, - 99,108,111,115,101,100,45,115,111,117,114,99,101,32,112,114,111,100,117,99,116,32,119,104,105,99,104,32,117,115,101,115,32,74,85,67,69,44,32,99, - 111,109,109,101,114,99,105,97,108,32,108,105,99,101,110,115,101,115,32,97,114,101,13,10,32,32,32,97,118,97,105,108,97,98,108,101,58,32,118,105, - 115,105,116,32,119,119,119,46,114,97,119,109,97,116,101,114,105,97,108,115,111,102,116,119,97,114,101,46,99,111,109,47,106,117,99,101,32,102,111,114, - 32,109,111,114,101,32,105,110,102,111,114,109,97,116,105,111,110,46,13,10,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,42,47,13,10,13,10,35,105,110,99,108,117,100,101,32,34, - 46,46,47,106,117,99,101,100,101,109,111,95,104,101,97,100,101,114,115,46,104,34,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,73,110,116,101, - 114,112,114,111,99,101,115,115,67,111,109,109,115,68,101,109,111,32,32,58,32,112,117,98,108,105,99,32,67,111,109,112,111,110,101,110,116,44,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,66,117, - 116,116,111,110,76,105,115,116,101,110,101,114,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,112,117,98,108,105,99,32,67,111,109,98,111,66,111,120,76,105,115,116,101,110,101,114,13,10,123,13,10,112,117,98,108,105,99, - 58,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,13,10,32,32,32,32,73,110,116,101,114,112,114,111,99,101,115,115,67,111,109,109,115,68,101,109,111,40,41,13,10,32,32, - 32,32,123,13,10,32,32,32,32,32,32,32,32,115,101,114,118,101,114,32,61,32,110,101,119,32,68,101,109,111,73,110,116,101,114,112,114,111,99,101, - 115,115,67,111,110,110,101,99,116,105,111,110,83,101,114,118,101,114,32,40,42,116,104,105,115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,115, - 101,116,78,97,109,101,32,40,84,40,34,73,110,116,101,114,112,114,111,99,101,115,115,32,67,111,109,109,117,110,105,99,97,116,105,111,110,34,41,41, - 59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,99,114,101,97,116,101,32,97,108,108,32,111,117,114,32,85,73,32,98,105,116,115,32,97, - 110,100,32,112,105,101,99,101,115,46,46,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40, - 109,111,100,101,83,101,108,101,99,116,111,114,32,61,32,110,101,119,32,67,111,109,98,111,66,111,120,32,40,84,40,34,109,111,100,101,58,34,41,41, - 41,59,13,10,32,32,32,32,32,32,32,32,109,111,100,101,83,101,108,101,99,116,111,114,45,62,115,101,116,66,111,117,110,100,115,32,40,49,48,48, - 44,32,50,53,44,32,50,48,48,44,32,50,52,41,59,13,10,32,32,32,32,32,32,32,32,40,110,101,119,32,76,97,98,101,108,32,40,109,111,100, - 101,83,101,108,101,99,116,111,114,45,62,103,101,116,78,97,109,101,40,41,44,32,109,111,100,101,83,101,108,101,99,116,111,114,45,62,103,101,116,78, - 97,109,101,40,41,41,41,45,62,97,116,116,97,99,104,84,111,67,111,109,112,111,110,101,110,116,32,40,109,111,100,101,83,101,108,101,99,116,111,114, - 44,32,116,114,117,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,109,111,100,101,83,101,108,101,99,116,111,114,45,62,97,100,100,73,116,101, - 109,32,40,84,40,34,40,68,105,115,99,111,110,110,101,99,116,101,100,41,34,41,44,32,56,41,59,13,10,32,32,32,32,32,32,32,32,109,111,100, - 101,83,101,108,101,99,116,111,114,45,62,97,100,100,83,101,112,97,114,97,116,111,114,40,41,59,13,10,32,32,32,32,32,32,32,32,109,111,100,101, - 83,101,108,101,99,116,111,114,45,62,97,100,100,73,116,101,109,32,40,84,40,34,78,97,109,101,100,32,112,105,112,101,32,40,108,105,115,116,101,110, - 105,110,103,41,34,41,44,32,49,41,59,13,10,32,32,32,32,32,32,32,32,109,111,100,101,83,101,108,101,99,116,111,114,45,62,97,100,100,73,116, - 101,109,32,40,84,40,34,78,97,109,101,100,32,112,105,112,101,32,40,99,111,110,110,101,99,116,32,116,111,32,101,120,105,115,116,105,110,103,32,112, - 105,112,101,41,34,41,44,32,53,41,59,13,10,32,32,32,32,32,32,32,32,109,111,100,101,83,101,108,101,99,116,111,114,45,62,97,100,100,83,101, - 112,97,114,97,116,111,114,40,41,59,13,10,32,32,32,32,32,32,32,32,109,111,100,101,83,101,108,101,99,116,111,114,45,62,97,100,100,73,116,101, - 109,32,40,84,40,34,83,111,99,107,101,116,32,40,108,105,115,116,101,110,105,110,103,41,34,41,44,32,50,41,59,13,10,32,32,32,32,32,32,32, - 32,109,111,100,101,83,101,108,101,99,116,111,114,45,62,97,100,100,73,116,101,109,32,40,84,40,34,83,111,99,107,101,116,32,40,99,111,110,110,101, - 99,116,32,116,111,32,101,120,105,115,116,105,110,103,32,115,111,99,107,101,116,41,34,41,44,32,54,41,59,13,10,13,10,32,32,32,32,32,32,32, - 32,109,111,100,101,83,101,108,101,99,116,111,114,45,62,115,101,116,83,101,108,101,99,116,101,100,73,100,32,40,56,41,59,13,10,32,32,32,32,32, - 32,32,32,109,111,100,101,83,101,108,101,99,116,111,114,45,62,97,100,100,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,13,10, - 32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,112,105,112,101,78,97,109,101,32,61,32,110,101, - 119,32,84,101,120,116,69,100,105,116,111,114,32,40,84,40,34,112,105,112,101,32,110,97,109,101,58,34,41,41,41,59,13,10,32,32,32,32,32,32, - 32,32,112,105,112,101,78,97,109,101,45,62,115,101,116,66,111,117,110,100,115,32,40,49,48,48,44,32,54,48,44,32,49,51,48,44,32,50,52,41, - 59,13,10,32,32,32,32,32,32,32,32,112,105,112,101,78,97,109,101,45,62,115,101,116,77,117,108,116,105,76,105,110,101,32,40,102,97,108,115,101, - 41,59,13,10,32,32,32,32,32,32,32,32,112,105,112,101,78,97,109,101,45,62,115,101,116,84,101,120,116,32,40,84,40,34,106,117,99,101,32,100, - 101,109,111,32,112,105,112,101,34,41,41,59,13,10,32,32,32,32,32,32,32,32,40,110,101,119,32,76,97,98,101,108,32,40,112,105,112,101,78,97, - 109,101,45,62,103,101,116,78,97,109,101,40,41,44,32,112,105,112,101,78,97,109,101,45,62,103,101,116,78,97,109,101,40,41,41,41,45,62,97,116, - 116,97,99,104,84,111,67,111,109,112,111,110,101,110,116,32,40,112,105,112,101,78,97,109,101,44,32,116,114,117,101,41,59,13,10,13,10,32,32,32, - 32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,115,111,99,107,101,116,78,117,109,98,101,114,32,61,32,110, - 101,119,32,84,101,120,116,69,100,105,116,111,114,32,40,84,40,34,115,111,99,107,101,116,32,112,111,114,116,58,34,41,41,41,59,13,10,32,32,32, - 32,32,32,32,32,115,111,99,107,101,116,78,117,109,98,101,114,45,62,115,101,116,66,111,117,110,100,115,32,40,51,53,48,44,32,54,48,44,32,56, - 48,44,32,50,52,41,59,13,10,32,32,32,32,32,32,32,32,115,111,99,107,101,116,78,117,109,98,101,114,45,62,115,101,116,77,117,108,116,105,76, - 105,110,101,32,40,102,97,108,115,101,41,59,13,10,32,32,32,32,32,32,32,32,115,111,99,107,101,116,78,117,109,98,101,114,45,62,115,101,116,84, - 101,120,116,32,40,84,40,34,49,50,51,52,53,34,41,41,59,13,10,32,32,32,32,32,32,32,32,115,111,99,107,101,116,78,117,109,98,101,114,45, - 62,115,101,116,73,110,112,117,116,82,101,115,116,114,105,99,116,105,111,110,115,32,40,53,44,32,84,40,34,48,49,50,51,52,53,54,55,56,57,34, - 41,41,59,13,10,32,32,32,32,32,32,32,32,40,110,101,119,32,76,97,98,101,108,32,40,115,111,99,107,101,116,78,117,109,98,101,114,45,62,103, - 101,116,78,97,109,101,40,41,44,32,115,111,99,107,101,116,78,117,109,98,101,114,45,62,103,101,116,78,97,109,101,40,41,41,41,45,62,97,116,116, - 97,99,104,84,111,67,111,109,112,111,110,101,110,116,32,40,115,111,99,107,101,116,78,117,109,98,101,114,44,32,116,114,117,101,41,59,13,10,13,10, - 32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,115,111,99,107,101,116,72,111,115,116,32,61,32, - 110,101,119,32,84,101,120,116,69,100,105,116,111,114,32,40,84,40,34,115,111,99,107,101,116,32,104,111,115,116,58,34,41,41,41,59,13,10,32,32, - 32,32,32,32,32,32,115,111,99,107,101,116,72,111,115,116,45,62,115,101,116,66,111,117,110,100,115,32,40,53,51,48,44,32,54,48,44,32,49,51, - 48,44,32,50,52,41,59,13,10,32,32,32,32,32,32,32,32,115,111,99,107,101,116,72,111,115,116,45,62,115,101,116,77,117,108,116,105,76,105,110, - 101,32,40,102,97,108,115,101,41,59,13,10,32,32,32,32,32,32,32,32,115,111,99,107,101,116,72,111,115,116,45,62,115,101,116,84,101,120,116,32, - 40,84,40,34,108,111,99,97,108,104,111,115,116,34,41,41,59,13,10,32,32,32,32,32,32,32,32,115,111,99,107,101,116,78,117,109,98,101,114,45, - 62,115,101,116,73,110,112,117,116,82,101,115,116,114,105,99,116,105,111,110,115,32,40,53,49,50,41,59,13,10,32,32,32,32,32,32,32,32,40,110, - 101,119,32,76,97,98,101,108,32,40,115,111,99,107,101,116,72,111,115,116,45,62,103,101,116,78,97,109,101,40,41,44,32,115,111,99,107,101,116,72, - 111,115,116,45,62,103,101,116,78,97,109,101,40,41,41,41,45,62,97,116,116,97,99,104,84,111,67,111,109,112,111,110,101,110,116,32,40,115,111,99, - 107,101,116,72,111,115,116,44,32,116,114,117,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,97,100,100,67,104,105,108,100,67,111,109,112,111, - 110,101,110,116,32,40,115,101,110,100,84,101,120,116,32,61,32,110,101,119,32,84,101,120,116,69,100,105,116,111,114,32,40,84,40,34,115,101,110,100, - 116,101,120,116,34,41,41,41,59,13,10,32,32,32,32,32,32,32,32,115,101,110,100,84,101,120,116,45,62,115,101,116,66,111,117,110,100,115,32,40, - 51,48,44,32,49,50,48,44,32,50,48,48,44,32,50,52,41,59,13,10,32,32,32,32,32,32,32,32,115,101,110,100,84,101,120,116,45,62,115,101, - 116,77,117,108,116,105,76,105,110,101,32,40,102,97,108,115,101,41,59,13,10,32,32,32,32,32,32,32,32,115,101,110,100,84,101,120,116,45,62,115, - 101,116,82,101,97,100,79,110,108,121,32,40,102,97,108,115,101,41,59,13,10,32,32,32,32,32,32,32,32,115,101,110,100,84,101,120,116,45,62,115, - 101,116,84,101,120,116,32,40,84,40,34,116,101,115,116,105,110,103,32,49,50,51,52,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,97, - 100,100,67,104,105,108,100,67,111,109,112,111,110,101,110,116,32,40,115,101,110,100,66,117,116,116,111,110,32,61,32,110,101,119,32,84,101,120,116,66, - 117,116,116,111,110,32,40,84,40,34,115,101,110,100,34,41,44,32,84,40,34,70,105,114,101,115,32,111,102,102,32,116,104,101,32,109,101,115,115,97, - 103,101,34,41,41,41,59,13,10,32,32,32,32,32,32,32,32,115,101,110,100,66,117,116,116,111,110,45,62,115,101,116,66,111,117,110,100,115,32,40, - 50,52,48,44,32,49,50,48,44,32,50,48,48,44,32,50,52,41,59,13,10,32,32,32,32,32,32,32,32,115,101,110,100,66,117,116,116,111,110,45, - 62,99,104,97,110,103,101,87,105,100,116,104,84,111,70,105,116,84,101,120,116,40,41,59,13,10,32,32,32,32,32,32,32,32,115,101,110,100,66,117, - 116,116,111,110,45,62,97,100,100,66,117,116,116,111,110,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,13,10,32,32,32,32,32, - 32,32,32,97,100,100,67,104,105,108,100,67,111,109,112,111,110,101,110,116,32,40,105,110,99,111,109,105,110,103,77,101,115,115,97,103,101,115,32,61, - 32,110,101,119,32,84,101,120,116,69,100,105,116,111,114,32,40,84,40,34,109,101,115,115,97,103,101,115,34,41,41,41,59,13,10,32,32,32,32,32, - 32,32,32,105,110,99,111,109,105,110,103,77,101,115,115,97,103,101,115,45,62,115,101,116,82,101,97,100,79,110,108,121,32,40,116,114,117,101,41,59, - 13,10,32,32,32,32,32,32,32,32,105,110,99,111,109,105,110,103,77,101,115,115,97,103,101,115,45,62,115,101,116,77,117,108,116,105,76,105,110,101, - 32,40,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,105,110,99,111,109,105,110,103,77,101,115,115,97,103,101,115,45,62,115,101,116,66, - 111,117,110,100,115,32,40,51,48,44,32,49,53,48,44,32,53,48,48,44,32,50,53,48,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47, - 32,99,97,108,108,32,116,104,105,115,32,116,111,32,115,101,116,32,117,112,32,101,118,101,114,121,116,104,105,110,103,39,115,32,115,116,97,116,101,32, - 99,111,114,114,101,99,116,108,121,46,13,10,32,32,32,32,32,32,32,32,99,111,109,98,111,66,111,120,67,104,97,110,103,101,100,32,40,48,41,59, - 13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,73,110,116,101,114,112,114,111,99,101,115,115,67,111,109,109,115,68,101,109,111,40,41,13, - 10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,99,108,111,115,101,40,41,59,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101, - 32,115,101,114,118,101,114,59,13,10,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65,108,108,67,104,105,108,100,114,101,110,40,41,59, - 13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,98,117,116,116,111,110,67,108,105,99,107,101,100,32,40,66,117,116,116,111, - 110,42,32,98,117,116,116,111,110,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102,32,40,98,117,116,116,111,110,32,61,61, - 32,115,101,110,100,66,117,116,116,111,110,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32, - 84,104,101,32,115,101,110,100,32,98,117,116,116,111,110,32,104,97,115,32,98,101,101,110,32,112,114,101,115,115,101,100,44,32,115,111,32,119,114,105, - 116,101,32,111,117,116,32,116,104,101,32,99,111,110,116,101,110,116,115,32,111,102,32,116,104,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 47,47,32,116,101,120,116,32,98,111,120,32,116,111,32,116,104,101,32,115,111,99,107,101,116,32,111,114,32,112,105,112,101,44,32,100,101,112,101,110, - 100,105,110,103,32,111,110,32,119,104,105,99,104,32,105,115,32,97,99,116,105,118,101,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111, - 110,115,116,32,83,116,114,105,110,103,32,116,101,120,116,32,40,115,101,110,100,84,101,120,116,45,62,103,101,116,84,101,120,116,40,41,41,59,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,77,101,109,111,114,121,66,108,111,99,107,32,109,101,115,115,97,103,101,68,97,116,97,32,40,40,99,111, - 110,115,116,32,99,104,97,114,42,41,32,116,101,120,116,44,32,116,101,120,116,46,108,101,110,103,116,104,40,41,41,59,13,10,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,102,111,114,32,40,105,110,116,32,105,32,61,32,97,99,116,105,118,101,67,111,110,110,101,99,116,105,111,110,115,46,115, - 105,122,101,40,41,59,32,45,45,105,32,62,61,32,48,59,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,105,102,32,40,33,32,97,99,116,105,118,101,67,111,110,110,101,99,116,105,111,110,115,91,105,93,45,62,115,101, - 110,100,77,101,115,115,97,103,101,32,40,109,101,115,115,97,103,101,68,97,116,97,41,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,116,104,101,32,119,114,105,116,101,32,102,97, - 105,108,101,100,44,32,115,111,32,105,110,100,105,99,97,116,101,32,116,104,97,116,32,116,104,101,32,99,111,110,110,101,99,116,105,111,110,32,104,97, - 115,32,98,114,111,107,101,110,46,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,112,112,101,110,100,77,101, - 115,115,97,103,101,32,40,84,40,34,115,101,110,100,32,109,101,115,115,97,103,101,32,102,97,105,108,101,100,33,34,41,41,59,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,125,13, - 10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,99,111,109,98,111,66,111,120,67,104,97,110,103,101,100,32,40,67,111,109,98, - 111,66,111,120,42,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,84,104,105,115,32,105,115,32,99,97,108,108,101,100, - 32,119,104,101,110,32,116,104,101,32,117,115,101,114,32,112,105,99,107,115,32,97,32,100,105,102,102,101,114,101,110,116,32,109,111,100,101,32,102,114, - 111,109,32,116,104,101,32,100,114,111,112,45,100,111,119,110,32,108,105,115,116,46,46,13,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,105, - 110,116,32,109,111,100,101,73,100,32,61,32,109,111,100,101,83,101,108,101,99,116,111,114,45,62,103,101,116,83,101,108,101,99,116,101,100,73,100,40, - 41,59,13,10,13,10,32,32,32,32,32,32,32,32,99,108,111,115,101,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,109,111, - 100,101,73,100,32,60,32,56,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,111,112,101,110,32,40, - 40,109,111,100,101,73,100,32,38,32,50,41,32,33,61,32,48,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,109, - 111,100,101,73,100,32,38,32,52,41,32,33,61,32,48,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,32, - 32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,13,10,32,32,32,32,47,47,32,74,117,115,116,32,99,108,111,115,101,115,32,97,110,121,32,99,111,110,110,101,99,116,105,111,110,115,32, - 116,104,97,116,32,97,114,101,32,99,117,114,114,101,110,116,108,121,32,111,112,101,110,46,13,10,32,32,32,32,118,111,105,100,32,99,108,111,115,101, - 40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,115,101,114,118,101,114,45,62,115,116,111,112,40,41,59,13,10,32,32,32,32, - 32,32,32,32,97,99,116,105,118,101,67,111,110,110,101,99,116,105,111,110,115,46,99,108,101,97,114,40,41,59,13,10,13,10,32,32,32,32,32,32, - 32,32,47,47,32,82,101,115,101,116,32,116,104,101,32,85,73,32,115,116,117,102,102,32,116,111,32,97,32,100,105,115,97,98,108,101,100,32,115,116, - 97,116,101,46,13,10,32,32,32,32,32,32,32,32,115,101,110,100,84,101,120,116,45,62,115,101,116,86,105,115,105,98,108,101,32,40,102,97,108,115, - 101,41,59,13,10,32,32,32,32,32,32,32,32,115,101,110,100,66,117,116,116,111,110,45,62,115,101,116,86,105,115,105,98,108,101,32,40,102,97,108, - 115,101,41,59,13,10,32,32,32,32,32,32,32,32,105,110,99,111,109,105,110,103,77,101,115,115,97,103,101,115,45,62,115,101,116,84,101,120,116,32, - 40,83,116,114,105,110,103,58,58,101,109,112,116,121,44,32,102,97,108,115,101,41,59,13,10,32,32,32,32,32,32,32,32,105,110,99,111,109,105,110, - 103,77,101,115,115,97,103,101,115,45,62,115,101,116,86,105,115,105,98,108,101,32,40,116,114,117,101,41,59,13,10,13,10,32,32,32,32,32,32,32, - 32,97,112,112,101,110,100,77,101,115,115,97,103,101,32,40,13,10,32,32,32,32,32,32,32,32,32,32,32,32,34,84,111,32,100,101,109,111,110,115, - 116,114,97,116,101,32,110,97,109,101,100,32,112,105,112,101,115,44,32,121,111,117,39,108,108,32,110,101,101,100,32,116,111,32,114,117,110,32,116,119, - 111,32,105,110,115,116,97,110,99,101,115,32,111,102,32,116,104,101,32,74,117,99,101,68,101,109,111,32,97,112,112,108,105,99,97,116,105,111,110,32, - 111,110,32,116,104,105,115,32,109,97,99,104,105,110,101,46,32,79,110,32,34,13,10,32,32,32,32,32,32,32,32,32,32,32,32,34,111,110,101,32, - 111,102,32,116,104,101,109,44,32,115,101,108,101,99,116,32,92,34,110,97,109,101,100,32,112,105,112,101,32,40,108,105,115,116,101,110,105,110,103,41, - 92,34,44,32,97,110,100,32,116,104,101,110,32,111,110,32,116,104,101,32,111,116,104,101,114,44,32,115,101,108,101,99,116,32,92,34,110,97,109,101, - 100,32,112,105,112,101,32,40,99,111,110,110,101,99,116,32,116,111,32,101,120,105,115,116,105,110,103,32,112,105,112,101,41,92,34,46,32,84,104,101, - 110,32,109,101,115,115,97,103,101,115,32,116,104,97,116,32,121,111,117,32,34,13,10,32,32,32,32,32,32,32,32,32,32,32,32,34,115,101,110,100, - 32,102,114,111,109,32,116,104,101,32,39,115,101,110,100,101,114,39,32,97,112,112,32,115,104,111,117,108,100,32,97,112,112,101,97,114,32,111,110,32, - 116,104,101,32,108,105,115,116,101,110,101,114,32,97,112,112,46,32,84,104,101,32,92,34,112,105,112,101,32,110,97,109,101,92,34,32,102,105,101,108, - 100,32,108,101,116,115,32,121,111,117,32,99,104,111,111,115,101,32,97,32,110,97,109,101,32,102,111,114,32,116,104,101,32,112,105,112,101,92,110,92, - 110,34,13,10,32,32,32,32,32,32,32,32,32,32,32,32,34,84,111,32,100,101,109,111,110,115,116,114,97,116,101,32,115,111,99,107,101,116,115,44, - 32,121,111,117,32,99,97,110,32,101,105,116,104,101,114,32,114,117,110,32,116,119,111,32,105,110,115,116,97,110,99,101,115,32,111,102,32,116,104,101, - 32,97,112,112,32,111,110,32,116,104,101,32,115,97,109,101,32,109,97,99,104,105,110,101,44,32,111,114,32,111,110,32,100,105,102,102,101,114,101,110, - 116,32,34,13,10,32,32,32,32,32,32,32,32,32,32,32,32,34,109,97,99,104,105,110,101,115,32,111,110,32,121,111,117,114,32,110,101,116,119,111, - 114,107,46,32,73,110,32,101,97,99,104,32,111,110,101,32,101,110,116,101,114,32,97,32,115,111,99,107,101,116,32,110,117,109,98,101,114,44,32,116, - 104,101,110,32,111,110,32,111,110,101,32,111,102,32,116,104,101,32,97,112,112,115,44,32,115,101,108,101,99,116,32,116,104,101,32,34,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,34,92,34,83,111,99,107,101,116,32,40,108,105,115,116,101,110,105,110,103,41,92,34,32,109,111,100,101,46,32, - 79,110,32,116,104,101,32,111,116,104,101,114,44,32,101,110,116,101,114,32,116,104,101,32,104,111,115,116,32,97,100,100,114,101,115,115,32,111,102,32, - 116,104,101,32,108,105,115,116,101,110,105,110,103,32,97,112,112,44,32,97,110,100,32,115,101,108,101,99,116,32,92,34,83,111,99,107,101,116,32,40, - 99,111,110,110,101,99,116,32,116,111,32,101,120,105,115,116,105,110,103,32,115,111,99,107,101,116,41,92,34,46,32,34,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,34,77,101,115,115,97,103,101,115,32,115,104,111,117,108,100,32,116,104,101,110,32,98,101,32,98,101,32,115,101,110,116,32,98, - 101,116,119,101,101,110,32,116,104,101,32,97,112,112,115,32,105,110,32,116,104,101,32,115,97,109,101,32,119,97,121,32,97,115,32,116,104,114,111,117, - 103,104,32,116,104,101,32,110,97,109,101,100,32,112,105,112,101,115,46,34,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105, - 100,32,111,112,101,110,32,40,98,111,111,108,32,97,115,83,111,99,107,101,116,44,32,98,111,111,108,32,97,115,83,101,110,100,101,114,41,13,10,32, - 32,32,32,123,13,10,32,32,32,32,32,32,32,32,99,108,111,115,101,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,77,97,107, - 101,32,116,104,101,32,97,112,112,114,111,112,114,105,97,116,101,32,98,105,116,115,32,111,102,32,85,73,32,118,105,115,105,98,108,101,46,46,13,10, - 32,32,32,32,32,32,32,32,115,101,110,100,84,101,120,116,45,62,115,101,116,86,105,115,105,98,108,101,32,40,116,114,117,101,41,59,13,10,32,32, - 32,32,32,32,32,32,115,101,110,100,66,117,116,116,111,110,45,62,115,101,116,86,105,115,105,98,108,101,32,40,116,114,117,101,41,59,13,10,13,10, - 32,32,32,32,32,32,32,32,105,110,99,111,109,105,110,103,77,101,115,115,97,103,101,115,45,62,115,101,116,84,101,120,116,32,40,83,116,114,105,110, - 103,58,58,101,109,112,116,121,44,32,102,97,108,115,101,41,59,13,10,32,32,32,32,32,32,32,32,105,110,99,111,109,105,110,103,77,101,115,115,97, - 103,101,115,45,62,115,101,116,86,105,115,105,98,108,101,32,40,116,114,117,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,97,110, - 100,32,116,114,121,32,116,111,32,111,112,101,110,32,116,104,101,32,115,111,99,107,101,116,32,111,114,32,112,105,112,101,46,46,46,13,10,32,32,32, - 32,32,32,32,32,98,111,111,108,32,111,112,101,110,101,100,79,107,32,61,32,102,97,108,115,101,59,13,10,13,10,32,32,32,32,32,32,32,32,105, - 102,32,40,97,115,83,101,110,100,101,114,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32, - 105,102,32,119,101,39,114,101,32,99,111,110,110,101,99,116,105,110,103,32,116,111,32,97,110,32,101,120,105,115,116,105,110,103,32,115,101,114,118,101, - 114,44,32,119,101,32,99,97,110,32,106,117,115,116,32,99,114,101,97,116,101,32,97,32,99,111,110,110,101,99,116,105,111,110,32,111,98,106,101,99, - 116,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,100,105,114,101,99,116,108,121,46,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,68,101,109,111,73,110,116,101,114,112,114,111,99,101,115,115,67,111,110,110,101,99,116,105,111,110,42,32,110,101,119,67,111,110,110,101,99,116,105, - 111,110,32,61,32,110,101,119,32,68,101,109,111,73,110,116,101,114,112,114,111,99,101,115,115,67,111,110,110,101,99,116,105,111,110,32,40,42,116,104, - 105,115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,97,115,83,111,99,107,101,116,41,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,111,112,101,110,101,100,79,107,32,61,32,110,101,119, - 67,111,110,110,101,99,116,105,111,110,45,62,99,111,110,110,101,99,116,84,111,83,111,99,107,101,116,32,40,115,111,99,107,101,116,72,111,115,116,45, - 62,103,101,116,84,101,120,116,40,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,115,111,99,107,101,116,78,117, - 109,98,101,114,45,62,103,101,116,84,101,120,116,40,41,46,103,101,116,73,110,116,86,97,108,117,101,40,41,44,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,49,48,48,48,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,111,112,101,110,101,100,79,107,32,61,32,110,101,119,67,111,110,110,101,99,116,105,111,110,45,62,99,111,110,110,101,99,116,84,111,80,105, - 112,101,32,40,112,105,112,101,78,97,109,101,45,62,103,101,116,84,101,120,116,40,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125, - 13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,111,112,101,110,101,100,79,107,41,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,97,99,116,105,118,101,67,111,110,110,101,99,116,105,111,110,115,46,97,100,100,32,40,110,101,119,67,111,110,110,101,99,116, - 105,111,110,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,100,101,108,101,116,101,32,110,101,119,67,111,110,110,101,99,116,105,111,110,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32, - 32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,105,102,32,119,101, - 39,114,101,32,115,116,97,114,116,105,110,103,32,117,112,32,97,32,115,101,114,118,101,114,44,32,119,101,32,110,101,101,100,32,116,111,32,116,101,108, - 108,32,116,104,101,32,115,101,114,118,101,114,32,116,111,32,115,116,97,114,116,32,119,97,105,116,105,110,103,32,102,111,114,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,47,47,32,99,108,105,101,110,116,115,32,116,111,32,99,111,110,110,101,99,116,46,32,73,116,39,108,108,32,116,104,101,110, - 32,99,114,101,97,116,101,32,99,111,110,110,101,99,116,105,111,110,32,111,98,106,101,99,116,115,32,102,111,114,32,117,115,32,119,104,101,110,32,99, - 108,105,101,110,116,115,32,97,114,114,105,118,101,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,97,115,83,111,99,107,101,116, - 41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,111,112,101,110,101,100, - 79,107,32,61,32,115,101,114,118,101,114,45,62,98,101,103,105,110,87,97,105,116,105,110,103,70,111,114,83,111,99,107,101,116,32,40,115,111,99,107, - 101,116,78,117,109,98,101,114,45,62,103,101,116,84,101,120,116,40,41,46,103,101,116,73,110,116,86,97,108,117,101,40,41,41,59,13,10,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,111,112,101,110,101,100,79,107,41,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,97,112,112,101,110,100,77,101,115,115,97,103,101,32,40,84,40,34,87,97,105,116,105,110,103,32,102,111,114,32, - 97,110,111,116,104,101,114,32,97,112,112,32,116,111,32,99,111,110,110,101,99,116,32,116,111,32,116,104,105,115,32,115,111,99,107,101,116,46,46,34, - 41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,68,101,109,111,73,110,116,101,114,112,114, - 111,99,101,115,115,67,111,110,110,101,99,116,105,111,110,42,32,110,101,119,67,111,110,110,101,99,116,105,111,110,32,61,32,110,101,119,32,68,101,109, - 111,73,110,116,101,114,112,114,111,99,101,115,115,67,111,110,110,101,99,116,105,111,110,32,40,42,116,104,105,115,41,59,13,10,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,111,112,101,110,101,100,79,107,32,61,32,110,101,119,67,111,110,110,101,99,116,105,111,110,45,62,99,114, - 101,97,116,101,80,105,112,101,32,40,112,105,112,101,78,97,109,101,45,62,103,101,116,84,101,120,116,40,41,41,59,13,10,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,111,112,101,110,101,100,79,107,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,112,112,101,110,100,77,101,115,115,97,103,101,32,40, - 84,40,34,87,97,105,116,105,110,103,32,102,111,114,32,97,110,111,116,104,101,114,32,97,112,112,32,116,111,32,99,111,110,110,101,99,116,32,116,111, - 32,116,104,105,115,32,112,105,112,101,46,46,34,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,99, - 116,105,118,101,67,111,110,110,101,99,116,105,111,110,115,46,97,100,100,32,40,110,101,119,67,111,110,110,101,99,116,105,111,110,41,59,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,100,101, - 108,101,116,101,32,110,101,119,67,111,110,110,101,99,116,105,111,110,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40, - 33,32,111,112,101,110,101,100,79,107,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,109,111,100,101, - 83,101,108,101,99,116,111,114,45,62,115,101,116,83,101,108,101,99,116,101,100,73,100,32,40,56,41,59,13,10,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,65,108,101,114,116,87,105,110,100,111,119,58,58,115,104,111,119,77,101,115,115,97,103,101,66,111,120,32,40,65,108,101,114,116,87,105, - 110,100,111,119,58,58,87,97,114,110,105,110,103,73,99,111,110,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,73,110,116,101,114,112,114,111,99,101,115,115,32,67,111,109, - 109,115,32,68,101,109,111,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,70,97,105,108,101,100,32,116,111,32,111,112,101,110,32,116,104,101,32,115,111,99,107,101, - 116,32,111,114,32,112,105,112,101,46,46,46,34,41,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,32,32, - 32,32,118,111,105,100,32,97,112,112,101,110,100,77,101,115,115,97,103,101,32,40,99,111,110,115,116,32,83,116,114,105,110,103,38,32,109,101,115,115, - 97,103,101,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,110,99,111,109,105,110,103,77,101,115,115,97,103,101,115,45,62,115, - 101,116,67,97,114,101,116,80,111,115,105,116,105,111,110,32,40,73,78,84,95,77,65,88,41,59,13,10,32,32,32,32,32,32,32,32,105,110,99,111, - 109,105,110,103,77,101,115,115,97,103,101,115,45,62,105,110,115,101,114,116,84,101,120,116,65,116,67,117,114,115,111,114,32,40,109,101,115,115,97,103, - 101,32,43,32,84,40,34,92,110,34,41,41,59,13,10,32,32,32,32,32,32,32,32,105,110,99,111,109,105,110,103,77,101,115,115,97,103,101,115,45, - 62,115,101,116,67,97,114,101,116,80,111,115,105,116,105,111,110,32,40,73,78,84,95,77,65,88,41,59,13,10,32,32,32,32,125,13,10,13,10,32, - 32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,13,10,32,32,32,32,99,108,97,115,115,32,68,101,109,111,73,110,116,101,114,112,114,111,99,101,115,115,67,111,110,110,101,99,116,105,111, - 110,32,32,58,32,112,117,98,108,105,99,32,73,110,116,101,114,112,114,111,99,101,115,115,67,111,110,110,101,99,116,105,111,110,13,10,32,32,32,32, - 123,13,10,32,32,32,32,32,32,32,32,73,110,116,101,114,112,114,111,99,101,115,115,67,111,109,109,115,68,101,109,111,38,32,111,119,110,101,114,59, - 13,10,32,32,32,32,32,32,32,32,105,110,116,32,111,117,114,78,117,109,98,101,114,59,13,10,13,10,32,32,32,32,112,117,98,108,105,99,58,13, - 10,32,32,32,32,32,32,32,32,68,101,109,111,73,110,116,101,114,112,114,111,99,101,115,115,67,111,110,110,101,99,116,105,111,110,32,40,73,110,116, - 101,114,112,114,111,99,101,115,115,67,111,109,109,115,68,101,109,111,38,32,111,119,110,101,114,95,41,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,58,32,73,110,116,101,114,112,114,111,99,101,115,115,67,111,110,110,101,99,116,105,111,110,32,40,116,114,117,101,41,44,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,111,119,110,101,114,32,40,111,119,110,101,114,95,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,115,116,97,116,105,99,32,105,110,116,32,116,111,116,97,108,67,111,110,110,101,99,116,105,111,110,115,32,61,32,48,59, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,111,117,114,78,117,109,98,101,114,32,61,32,43,43,116,111,116,97,108,67,111,110,110,101,99,116, - 105,111,110,115,59,13,10,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,126,68,101,109,111,73,110,116,101,114,112,114, - 111,99,101,115,115,67,111,110,110,101,99,116,105,111,110,40,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,125,13, - 10,13,10,32,32,32,32,32,32,32,32,118,111,105,100,32,99,111,110,110,101,99,116,105,111,110,77,97,100,101,40,41,13,10,32,32,32,32,32,32, - 32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,111,119,110,101,114,46,97,112,112,101,110,100,77,101,115,115,97,103,101,32,40,84,40, - 34,67,111,110,110,101,99,116,105,111,110,32,35,34,41,32,43,32,83,116,114,105,110,103,32,40,111,117,114,78,117,109,98,101,114,41,32,43,32,84, - 40,34,32,45,32,99,111,110,110,101,99,116,105,111,110,32,115,116,97,114,116,101,100,34,41,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10, - 13,10,32,32,32,32,32,32,32,32,118,111,105,100,32,99,111,110,110,101,99,116,105,111,110,76,111,115,116,40,41,13,10,32,32,32,32,32,32,32, - 32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,111,119,110,101,114,46,97,112,112,101,110,100,77,101,115,115,97,103,101,32,40,84,40,34, - 67,111,110,110,101,99,116,105,111,110,32,35,34,41,32,43,32,83,116,114,105,110,103,32,40,111,117,114,78,117,109,98,101,114,41,32,43,32,84,40, - 34,32,45,32,99,111,110,110,101,99,116,105,111,110,32,108,111,115,116,34,41,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32, - 32,32,32,32,32,32,118,111,105,100,32,109,101,115,115,97,103,101,82,101,99,101,105,118,101,100,32,40,99,111,110,115,116,32,77,101,109,111,114,121, - 66,108,111,99,107,38,32,109,101,115,115,97,103,101,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 111,119,110,101,114,46,97,112,112,101,110,100,77,101,115,115,97,103,101,32,40,84,40,34,67,111,110,110,101,99,116,105,111,110,32,35,34,41,32,43, - 32,83,116,114,105,110,103,32,40,111,117,114,78,117,109,98,101,114,41,32,43,32,84,40,34,32,45,32,109,101,115,115,97,103,101,32,114,101,99,101, - 105,118,101,100,58,32,34,41,32,43,32,109,101,115,115,97,103,101,46,116,111,83,116,114,105,110,103,40,41,41,59,13,10,32,32,32,32,32,32,32, - 32,125,13,10,32,32,32,32,125,59,13,10,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,99,108,97,115,115,32,68,101,109,111,73,110,116,101,114,112, - 114,111,99,101,115,115,67,111,110,110,101,99,116,105,111,110,83,101,114,118,101,114,32,32,32,58,32,112,117,98,108,105,99,32,73,110,116,101,114,112, - 114,111,99,101,115,115,67,111,110,110,101,99,116,105,111,110,83,101,114,118,101,114,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,73, - 110,116,101,114,112,114,111,99,101,115,115,67,111,109,109,115,68,101,109,111,38,32,111,119,110,101,114,59,13,10,13,10,32,32,32,32,112,117,98,108, - 105,99,58,13,10,32,32,32,32,32,32,32,32,68,101,109,111,73,110,116,101,114,112,114,111,99,101,115,115,67,111,110,110,101,99,116,105,111,110,83, - 101,114,118,101,114,32,40,73,110,116,101,114,112,114,111,99,101,115,115,67,111,109,109,115,68,101,109,111,38,32,111,119,110,101,114,95,41,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,58,32,111,119,110,101,114,32,40,111,119,110,101,114,95,41,13,10,32,32,32,32,32,32,32,32,123,13,10, - 32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,126,68,101,109,111,73,110,116,101,114,112,114,111,99,101,115,115,67,111, - 110,110,101,99,116,105,111,110,83,101,114,118,101,114,40,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,125,13,10, - 13,10,32,32,32,32,32,32,32,32,73,110,116,101,114,112,114,111,99,101,115,115,67,111,110,110,101,99,116,105,111,110,42,32,99,114,101,97,116,101, - 67,111,110,110,101,99,116,105,111,110,79,98,106,101,99,116,40,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,68,101,109,111,73,110,116,101,114,112,114,111,99,101,115,115,67,111,110,110,101,99,116,105,111,110,42,32,110,101,119,67,111,110,110,101,99, - 116,105,111,110,32,61,32,110,101,119,32,68,101,109,111,73,110,116,101,114,112,114,111,99,101,115,115,67,111,110,110,101,99,116,105,111,110,32,40,111, - 119,110,101,114,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,111,119,110,101,114,46,97,99,116,105,118,101,67,111,110,110,101,99, - 116,105,111,110,115,46,97,100,100,32,40,110,101,119,67,111,110,110,101,99,116,105,111,110,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 114,101,116,117,114,110,32,110,101,119,67,111,110,110,101,99,116,105,111,110,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,59, - 13,10,13,10,32,32,32,32,79,119,110,101,100,65,114,114,97,121,32,60,68,101,109,111,73,110,116,101,114,112,114,111,99,101,115,115,67,111,110,110, - 101,99,116,105,111,110,44,32,67,114,105,116,105,99,97,108,83,101,99,116,105,111,110,62,32,97,99,116,105,118,101,67,111,110,110,101,99,116,105,111, - 110,115,59,13,10,13,10,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,106,117,99,101,95,85,115,101,68,101,98,117,103,103,105,110,103,78,101,119,79, - 112,101,114,97,116,111,114,13,10,13,10,112,114,105,118,97,116,101,58,13,10,32,32,32,32,67,111,109,98,111,66,111,120,42,32,109,111,100,101,83, - 101,108,101,99,116,111,114,59,13,10,32,32,32,32,84,101,120,116,69,100,105,116,111,114,42,32,115,101,110,100,84,101,120,116,59,13,10,32,32,32, - 32,84,101,120,116,66,117,116,116,111,110,42,32,115,101,110,100,66,117,116,116,111,110,59,13,10,32,32,32,32,84,101,120,116,69,100,105,116,111,114, - 42,32,105,110,99,111,109,105,110,103,77,101,115,115,97,103,101,115,59,13,10,13,10,32,32,32,32,84,101,120,116,69,100,105,116,111,114,42,32,112, - 105,112,101,78,97,109,101,59,13,10,32,32,32,32,84,101,120,116,69,100,105,116,111,114,42,32,115,111,99,107,101,116,78,117,109,98,101,114,59,13, - 10,32,32,32,32,84,101,120,116,69,100,105,116,111,114,42,32,115,111,99,107,101,116,72,111,115,116,59,13,10,13,10,32,32,32,32,68,101,109,111, - 73,110,116,101,114,112,114,111,99,101,115,115,67,111,110,110,101,99,116,105,111,110,83,101,114,118,101,114,42,32,115,101,114,118,101,114,59,13,10,125, - 59,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,13,10,67,111,109,112,111,110,101,110,116,42,32,99,114,101,97,116,101,73,110,116,101,114,112,114,111,99,101,115,115,67,111, - 109,109,115,68,101,109,111,40,41,13,10,123,13,10,32,32,32,32,114,101,116,117,114,110,32,110,101,119,32,73,110,116,101,114,112,114,111,99,101,115, - 115,67,111,109,109,115,68,101,109,111,40,41,59,13,10,125,13,10,0,0}; -const char* BinaryData::interprocesscommsdemo_cpp = (const char*) temp5; - -static const unsigned char temp6[] = {47,42,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,13,10,13,10,32,32,32,84,104,105,115,32,102,105,108,101,32,105,115,32,112,97,114,116,32,111,102,32,116,104,101,32,74,85,67,69, - 32,108,105,98,114,97,114,121,32,45,32,34,74,117,108,101,115,39,32,85,116,105,108,105,116,121,32,67,108,97,115,115,32,69,120,116,101,110,115,105, - 111,110,115,34,13,10,32,32,32,67,111,112,121,114,105,103,104,116,32,50,48,48,52,45,57,32,98,121,32,82,97,119,32,77,97,116,101,114,105,97, - 108,32,83,111,102,116,119,97,114,101,32,76,116,100,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,74,85,67,69,32,99,97,110,32,98,101,32,114,101, - 100,105,115,116,114,105,98,117,116,101,100,32,97,110,100,47,111,114,32,109,111,100,105,102,105,101,100,32,117,110,100,101,114,32,116,104,101,32,116,101, - 114,109,115,32,111,102,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,13,10,32,32,32,80,117,98,108,105,99,32,76,105,99,101,110,115, - 101,32,40,86,101,114,115,105,111,110,32,50,41,44,32,97,115,32,112,117,98,108,105,115,104,101,100,32,98,121,32,116,104,101,32,70,114,101,101,32, - 83,111,102,116,119,97,114,101,32,70,111,117,110,100,97,116,105,111,110,46,13,10,32,32,32,65,32,99,111,112,121,32,111,102,32,116,104,101,32,108, - 105,99,101,110,115,101,32,105,115,32,105,110,99,108,117,100,101,100,32,105,110,32,116,104,101,32,74,85,67,69,32,100,105,115,116,114,105,98,117,116, - 105,111,110,44,32,111,114,32,99,97,110,32,98,101,32,102,111,117,110,100,13,10,32,32,32,111,110,108,105,110,101,32,97,116,32,119,119,119,46,103, - 110,117,46,111,114,103,47,108,105,99,101,110,115,101,115,46,13,10,13,10,32,32,32,74,85,67,69,32,105,115,32,100,105,115,116,114,105,98,117,116, - 101,100,32,105,110,32,116,104,101,32,104,111,112,101,32,116,104,97,116,32,105,116,32,119,105,108,108,32,98,101,32,117,115,101,102,117,108,44,32,98, - 117,116,32,87,73,84,72,79,85,84,32,65,78,89,13,10,32,32,32,87,65,82,82,65,78,84,89,59,32,119,105,116,104,111,117,116,32,101,118,101, - 110,32,116,104,101,32,105,109,112,108,105,101,100,32,119,97,114,114,97,110,116,121,32,111,102,32,77,69,82,67,72,65,78,84,65,66,73,76,73,84, - 89,32,111,114,32,70,73,84,78,69,83,83,32,70,79,82,13,10,32,32,32,65,32,80,65,82,84,73,67,85,76,65,82,32,80,85,82,80,79,83, - 69,46,32,32,83,101,101,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,32,80,117,98,108,105,99,32,76,105,99,101,110,115,101,32,102, - 111,114,32,109,111,114,101,32,100,101,116,97,105,108,115,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,84,111,32,114,101,108,101,97,115,101,32,97,32, - 99,108,111,115,101,100,45,115,111,117,114,99,101,32,112,114,111,100,117,99,116,32,119,104,105,99,104,32,117,115,101,115,32,74,85,67,69,44,32,99, - 111,109,109,101,114,99,105,97,108,32,108,105,99,101,110,115,101,115,32,97,114,101,13,10,32,32,32,97,118,97,105,108,97,98,108,101,58,32,118,105, - 115,105,116,32,119,119,119,46,114,97,119,109,97,116,101,114,105,97,108,115,111,102,116,119,97,114,101,46,99,111,109,47,106,117,99,101,32,102,111,114, - 32,109,111,114,101,32,105,110,102,111,114,109,97,116,105,111,110,46,13,10,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,42,47,13,10,13,10,35,105,102,100,101,102,32,95,87,73, - 78,51,50,13,10,32,35,105,110,99,108,117,100,101,32,60,119,105,110,100,111,119,115,46,104,62,13,10,35,101,110,100,105,102,13,10,13,10,35,105, - 110,99,108,117,100,101,32,34,46,46,47,106,117,99,101,100,101,109,111,95,104,101,97,100,101,114,115,46,104,34,13,10,13,10,35,105,102,32,74,85, - 67,69,95,79,80,69,78,71,76,13,10,13,10,35,105,102,100,101,102,32,95,87,73,78,51,50,13,10,32,35,105,110,99,108,117,100,101,32,60,103, - 108,47,103,108,46,104,62,13,10,32,35,105,110,99,108,117,100,101,32,60,103,108,47,103,108,117,46,104,62,13,10,35,101,108,105,102,32,100,101,102, - 105,110,101,100,32,40,76,73,78,85,88,41,13,10,32,35,105,110,99,108,117,100,101,32,60,71,76,47,103,108,46,104,62,13,10,32,35,105,110,99, - 108,117,100,101,32,60,71,76,47,103,108,117,116,46,104,62,13,10,32,35,117,110,100,101,102,32,75,101,121,80,114,101,115,115,13,10,35,101,108,115, - 101,13,10,32,35,105,110,99,108,117,100,101,32,60,71,76,85,84,47,103,108,117,116,46,104,62,13,10,35,101,110,100,105,102,13,10,13,10,35,105, - 102,110,100,101,102,32,71,76,95,66,71,82,65,95,69,88,84,13,10,32,35,100,101,102,105,110,101,32,71,76,95,66,71,82,65,95,69,88,84,32, - 48,120,56,48,101,49,13,10,35,101,110,100,105,102,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,68,101,109,111,79,112,101,110,71,76,67,97,110,118, - 97,115,32,32,58,32,112,117,98,108,105,99,32,79,112,101,110,71,76,67,111,109,112,111,110,101,110,116,44,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,84,105,109,101,114,13,10,123,13,10,32,32,32,32,102,108, - 111,97,116,32,114,111,116,97,116,105,111,110,44,32,100,101,108,116,97,59,13,10,32,32,32,32,73,109,97,103,101,42,32,105,109,97,103,101,59,13, - 10,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,68,101,109,111,79,112,101,110,71,76,67,97,110,118,97,115,40,41,13,10,32,32,32,32, - 123,13,10,32,32,32,32,32,32,32,32,114,111,116,97,116,105,111,110,32,61,32,48,46,48,102,59,13,10,32,32,32,32,32,32,32,32,100,101,108, - 116,97,32,61,32,49,46,48,102,59,13,10,13,10,32,32,32,32,32,32,32,32,73,109,97,103,101,42,32,105,109,32,61,32,73,109,97,103,101,70, - 105,108,101,70,111,114,109,97,116,58,58,108,111,97,100,70,114,111,109,32,40,66,105,110,97,114,121,68,97,116,97,58,58,106,117,99,101,95,112,110, - 103,44,32,66,105,110,97,114,121,68,97,116,97,58,58,106,117,99,101,95,112,110,103,83,105,122,101,41,59,13,10,32,32,32,32,32,32,32,32,105, - 109,97,103,101,32,61,32,110,101,119,32,73,109,97,103,101,32,40,73,109,97,103,101,58,58,82,71,66,44,32,53,49,50,44,32,53,49,50,44,32, - 116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,71,114,97,112,104,105,99,115,32,103,32,40,42,105,109,97,103,101,41,59,13,10,32,32, - 32,32,32,32,32,32,103,46,102,105,108,108,65,108,108,32,40,67,111,108,111,117,114,115,58,58,119,104,105,116,101,41,59,13,10,32,32,32,32,32, - 32,32,32,103,46,100,114,97,119,73,109,97,103,101,32,40,105,109,44,32,48,44,32,48,44,32,53,49,50,44,32,53,49,50,44,32,48,44,32,48, - 44,32,105,109,45,62,103,101,116,87,105,100,116,104,40,41,44,32,105,109,45,62,103,101,116,72,101,105,103,104,116,40,41,41,59,13,10,32,32,32, - 32,32,32,32,32,100,101,108,101,116,101,32,105,109,59,13,10,13,10,32,32,32,32,32,32,32,32,115,116,97,114,116,84,105,109,101,114,32,40,50, - 48,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,74,117,115,116,32,102,111,114,32,100,101,109,111,32,112,117,114,112,111,115,101,115, - 44,32,108,101,116,39,115,32,100,117,109,112,32,97,32,108,105,115,116,32,111,102,32,97,108,108,32,116,104,101,32,97,118,97,105,108,97,98,108,101, - 32,112,105,120,101,108,32,102,111,114,109,97,116,115,46,46,13,10,32,32,32,32,32,32,32,32,79,119,110,101,100,65,114,114,97,121,32,60,79,112, - 101,110,71,76,80,105,120,101,108,70,111,114,109,97,116,62,32,97,118,97,105,108,97,98,108,101,80,105,120,101,108,70,111,114,109,97,116,115,59,13, - 10,32,32,32,32,32,32,32,32,79,112,101,110,71,76,80,105,120,101,108,70,111,114,109,97,116,58,58,103,101,116,65,118,97,105,108,97,98,108,101, - 80,105,120,101,108,70,111,114,109,97,116,115,32,40,116,104,105,115,44,32,97,118,97,105,108,97,98,108,101,80,105,120,101,108,70,111,114,109,97,116, - 115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,102,111,114,32,40,105,110,116,32,105,32,61,32,48,59,32,105,32,60,32,97,118,97,105,108, - 97,98,108,101,80,105,120,101,108,70,111,114,109,97,116,115,46,115,105,122,101,40,41,59,32,43,43,105,41,13,10,32,32,32,32,32,32,32,32,123, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,110,115,116,32,79,112,101,110,71,76,80,105,120,101,108,70,111,114,109,97,116,42,32,99, - 111,110,115,116,32,112,105,120,70,111,114,109,97,116,32,61,32,97,118,97,105,108,97,98,108,101,80,105,120,101,108,70,111,114,109,97,116,115,91,105, - 93,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,83,116,114,105,110,103,32,102,111,114,109,97,116,68,101,115,99,114,105,112,116,105, - 111,110,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,102,111,114,109,97,116,68,101,115,99,114,105,112,116,105,111,110,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,60,60,32,105,32,60,60,32,34,58,32,82,71,66,65,61,40,34,32,60,60,32,112,105,120,70,111,114,109,97, - 116,45,62,114,101,100,66,105,116,115,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,60,32,34,44,32,34,32,60,60,32,112,105,120, - 70,111,114,109,97,116,45,62,103,114,101,101,110,66,105,116,115,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,60,32,34,44,32,34, - 32,60,60,32,112,105,120,70,111,114,109,97,116,45,62,98,108,117,101,66,105,116,115,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60, - 60,32,34,44,32,34,32,60,60,32,112,105,120,70,111,114,109,97,116,45,62,97,108,112,104,97,66,105,116,115,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,60,60,32,34,41,44,32,100,101,112,116,104,61,34,32,60,60,32,112,105,120,70,111,114,109,97,116,45,62,100,101,112,116,104, - 66,117,102,102,101,114,66,105,116,115,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,60,32,34,44,32,115,116,101,110,99,105,108,61, - 34,32,60,60,32,112,105,120,70,111,114,109,97,116,45,62,115,116,101,110,99,105,108,66,117,102,102,101,114,66,105,116,115,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,60,60,32,34,44,32,97,99,99,117,109,32,82,71,66,65,61,40,34,32,60,60,32,112,105,120,70,111,114,109,97, - 116,45,62,97,99,99,117,109,117,108,97,116,105,111,110,66,117,102,102,101,114,82,101,100,66,105,116,115,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,60,60,32,34,44,32,34,32,60,60,32,112,105,120,70,111,114,109,97,116,45,62,97,99,99,117,109,117,108,97,116,105,111,110,66,117, - 102,102,101,114,71,114,101,101,110,66,105,116,115,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,60,32,34,44,32,34,32,60,60,32, - 112,105,120,70,111,114,109,97,116,45,62,97,99,99,117,109,117,108,97,116,105,111,110,66,117,102,102,101,114,66,108,117,101,66,105,116,115,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,60,60,32,34,44,32,34,32,60,60,32,112,105,120,70,111,114,109,97,116,45,62,97,99,99,117,109, - 117,108,97,116,105,111,110,66,117,102,102,101,114,65,108,112,104,97,66,105,116,115,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,60, - 32,34,41,44,32,102,117,108,108,45,115,99,101,110,101,32,65,65,61,34,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,60,60,32,112, - 105,120,70,111,114,109,97,116,45,62,102,117,108,108,83,99,101,110,101,65,110,116,105,65,108,105,97,115,105,110,103,78,117,109,83,97,109,112,108,101, - 115,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,76,111,103,103,101,114,58,58,111,117,116,112,117,116,68,101,98,117,103,83,116,114, - 105,110,103,32,40,102,111,114,109,97,116,68,101,115,99,114,105,112,116,105,111,110,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32, - 32,125,13,10,13,10,32,32,32,32,126,68,101,109,111,79,112,101,110,71,76,67,97,110,118,97,115,40,41,13,10,32,32,32,32,123,13,10,32,32, - 32,32,32,32,32,32,100,101,108,101,116,101,32,105,109,97,103,101,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47,47,32,119,104,101, - 110,32,116,104,101,32,99,111,109,112,111,110,101,110,116,32,99,114,101,97,116,101,115,32,97,32,110,101,119,32,105,110,116,101,114,110,97,108,32,99, - 111,110,116,101,120,116,44,32,116,104,105,115,32,105,115,32,99,97,108,108,101,100,44,32,97,110,100,13,10,32,32,32,32,47,47,32,119,101,39,108, - 108,32,117,115,101,32,116,104,101,32,111,112,112,111,114,116,117,110,105,116,121,32,116,111,32,99,114,101,97,116,101,32,116,104,101,32,116,101,120,116, - 117,114,101,115,32,110,101,101,100,101,100,46,13,10,32,32,32,32,118,111,105,100,32,110,101,119,79,112,101,110,71,76,67,111,110,116,101,120,116,67, - 114,101,97,116,101,100,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,40,110,111,32,110,101,101,100,32,116,111,32, - 99,97,108,108,32,109,97,107,101,67,117,114,114,101,110,116,67,111,110,116,101,120,116,65,99,116,105,118,101,40,41,44,32,97,115,32,116,104,97,116, - 32,119,105,108,108,32,104,97,118,101,13,10,32,32,32,32,32,32,32,32,47,47,32,98,101,101,110,32,100,111,110,101,32,102,111,114,32,117,115,32, - 98,101,102,111,114,101,32,116,104,101,32,109,101,116,104,111,100,32,99,97,108,108,41,46,13,10,32,32,32,32,32,32,32,32,103,108,67,108,101,97, - 114,67,111,108,111,114,32,40,48,46,48,102,44,32,48,46,48,102,44,32,48,46,48,102,44,32,48,46,48,102,41,59,13,10,32,32,32,32,32,32, - 32,32,103,108,67,108,101,97,114,68,101,112,116,104,32,40,49,46,48,41,59,13,10,13,10,32,32,32,32,32,32,32,32,103,108,68,101,112,116,104, - 70,117,110,99,32,40,71,76,95,76,69,83,83,41,59,13,10,32,32,32,32,32,32,32,32,103,108,69,110,97,98,108,101,32,40,71,76,95,68,69, - 80,84,72,95,84,69,83,84,41,59,13,10,32,32,32,32,32,32,32,32,103,108,69,110,97,98,108,101,32,40,71,76,95,84,69,88,84,85,82,69, - 95,50,68,41,59,13,10,32,32,32,32,32,32,32,32,103,108,69,110,97,98,108,101,32,40,71,76,95,66,76,69,78,68,41,59,13,10,32,32,32, - 32,32,32,32,32,103,108,83,104,97,100,101,77,111,100,101,108,32,40,71,76,95,83,77,79,79,84,72,41,59,13,10,13,10,32,32,32,32,32,32, - 32,32,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,32,40,71,76,95,84,69,88,84,85,82,69,95,50,68,44,32,71,76,95,84,69,88, - 84,85,82,69,95,87,82,65,80,95,83,44,32,71,76,95,67,76,65,77,80,41,59,13,10,32,32,32,32,32,32,32,32,103,108,84,101,120,80,97, - 114,97,109,101,116,101,114,105,32,40,71,76,95,84,69,88,84,85,82,69,95,50,68,44,32,71,76,95,84,69,88,84,85,82,69,95,87,82,65,80, - 95,84,44,32,71,76,95,67,76,65,77,80,41,59,13,10,32,32,32,32,32,32,32,32,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,32, - 40,71,76,95,84,69,88,84,85,82,69,95,50,68,44,32,71,76,95,84,69,88,84,85,82,69,95,77,65,71,95,70,73,76,84,69,82,44,32,71, - 76,95,76,73,78,69,65,82,41,59,13,10,32,32,32,32,32,32,32,32,103,108,84,101,120,80,97,114,97,109,101,116,101,114,105,32,40,71,76,95, - 84,69,88,84,85,82,69,95,50,68,44,32,71,76,95,84,69,88,84,85,82,69,95,77,73,78,95,70,73,76,84,69,82,44,32,71,76,95,76,73, - 78,69,65,82,41,59,13,10,13,10,32,32,32,32,32,32,32,32,103,108,80,105,120,101,108,83,116,111,114,101,105,32,40,71,76,95,85,78,80,65, - 67,75,95,65,76,73,71,78,77,69,78,84,44,32,52,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,110,116,32,115,116,114,105,100,101,44, - 32,112,105,120,83,116,114,105,100,101,59,13,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,118,111,105,100,42,32,112,105,120,101,108,115,32, - 61,32,105,109,97,103,101,45,62,108,111,99,107,80,105,120,101,108,68,97,116,97,82,101,97,100,79,110,108,121,32,40,48,44,32,48,44,32,105,109, - 97,103,101,45,62,103,101,116,87,105,100,116,104,40,41,44,32,105,109,97,103,101,45,62,103,101,116,72,101,105,103,104,116,40,41,44,32,115,116,114, - 105,100,101,44,32,112,105,120,83,116,114,105,100,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,103,108,84,101,120,73,109,97,103,101,50,68, - 32,40,71,76,95,84,69,88,84,85,82,69,95,50,68,44,32,48,44,32,52,44,32,105,109,97,103,101,45,62,103,101,116,87,105,100,116,104,40,41, - 44,32,105,109,97,103,101,45,62,103,101,116,72,101,105,103,104,116,40,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,48,44,32,71,76,95,82,71,66,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,71, - 76,95,85,78,83,73,71,78,69,68,95,66,89,84,69,44,32,112,105,120,101,108,115,41,59,13,10,32,32,32,32,32,32,32,32,105,109,97,103,101, - 45,62,114,101,108,101,97,115,101,80,105,120,101,108,68,97,116,97,82,101,97,100,79,110,108,121,32,40,112,105,120,101,108,115,41,59,13,10,13,10, - 32,32,32,32,32,32,32,32,103,108,72,105,110,116,32,40,71,76,95,76,73,78,69,95,83,77,79,79,84,72,95,72,73,78,84,44,32,71,76,95, - 78,73,67,69,83,84,41,59,13,10,32,32,32,32,32,32,32,32,103,108,72,105,110,116,32,40,71,76,95,80,79,73,78,84,95,83,77,79,79,84, - 72,95,72,73,78,84,44,32,71,76,95,78,73,67,69,83,84,41,59,13,10,32,32,32,32,32,32,32,32,103,108,66,108,101,110,100,70,117,110,99, - 32,40,71,76,95,83,82,67,95,65,76,80,72,65,44,32,71,76,95,79,78,69,95,77,73,78,85,83,95,83,82,67,95,65,76,80,72,65,41,59, - 13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,109,111,117,115,101,68,114,97,103,32,40,99,111,110,115,116,32,77,111,117, - 115,101,69,118,101,110,116,38,32,101,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,100,101,108,116,97,32,61,32,101,46,103,101, - 116,68,105,115,116,97,110,99,101,70,114,111,109,68,114,97,103,83,116,97,114,116,88,40,41,32,47,32,49,48,48,46,48,102,59,13,10,32,32,32, - 32,32,32,32,32,114,101,112,97,105,110,116,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,114,101,110,100,101, - 114,79,112,101,110,71,76,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,103,108,67,108,101,97,114,67,111,108,111,114,32,40, - 48,46,56,102,44,32,48,46,48,102,44,32,48,46,52,102,44,32,48,46,48,102,41,59,13,10,32,32,32,32,32,32,32,32,103,108,67,108,101,97, - 114,32,40,71,76,95,67,79,76,79,82,95,66,85,70,70,69,82,95,66,73,84,32,124,32,71,76,95,68,69,80,84,72,95,66,85,70,70,69,82, - 95,66,73,84,41,59,13,10,13,10,32,32,32,32,32,32,32,32,103,108,77,97,116,114,105,120,77,111,100,101,40,71,76,95,80,82,79,74,69,67, - 84,73,79,78,41,59,13,10,32,32,32,32,32,32,32,32,103,108,76,111,97,100,73,100,101,110,116,105,116,121,40,41,59,13,10,32,32,32,32,32, - 32,32,32,103,108,79,114,116,104,111,32,40,48,46,48,44,32,103,101,116,87,105,100,116,104,40,41,44,32,48,46,48,44,32,103,101,116,72,101,105, - 103,104,116,40,41,44,32,48,44,32,49,41,59,13,10,13,10,32,32,32,32,32,32,32,32,103,108,67,111,108,111,114,52,102,32,40,49,46,48,102, - 44,32,49,46,48,102,44,32,49,46,48,102,44,32,102,97,98,115,102,32,40,58,58,115,105,110,102,32,40,114,111,116,97,116,105,111,110,32,47,32, - 49,48,48,46,48,102,41,41,41,59,13,10,32,32,32,32,32,32,32,32,103,108,66,101,103,105,110,40,71,76,95,81,85,65,68,83,41,59,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,105,32,40,48,44,32,48,41,59,32,103,108,86,101,114,116,101, - 120,50,102,32,40,53,48,46,48,102,44,32,103,101,116,72,101,105,103,104,116,40,41,32,45,32,53,48,46,48,102,41,59,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,105,32,40,49,44,32,48,41,59,32,103,108,86,101,114,116,101,120,50,102,32,40, - 103,101,116,87,105,100,116,104,40,41,32,45,32,53,48,46,48,102,44,32,103,101,116,72,101,105,103,104,116,40,41,32,45,32,53,48,46,48,102,41, - 59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,105,32,40,49,44,32,49,41,59,32,103,108,86,101, - 114,116,101,120,50,102,32,40,103,101,116,87,105,100,116,104,40,41,32,45,32,53,48,46,48,102,44,32,53,48,46,48,102,41,59,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,105,32,40,48,44,32,49,41,59,32,103,108,86,101,114,116,101,120,50,102, - 32,40,53,48,46,48,102,44,32,53,48,46,48,102,41,59,13,10,32,32,32,32,32,32,32,32,103,108,69,110,100,40,41,59,13,10,13,10,32,32, - 32,32,32,32,32,32,103,108,77,97,116,114,105,120,77,111,100,101,32,40,71,76,95,80,82,79,74,69,67,84,73,79,78,41,59,13,10,32,32,32, - 32,32,32,32,32,103,108,76,111,97,100,73,100,101,110,116,105,116,121,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,103,108,67,108,101,97, - 114,32,40,71,76,95,68,69,80,84,72,95,66,85,70,70,69,82,95,66,73,84,41,59,13,10,32,32,32,32,32,32,32,32,103,108,117,80,101,114, - 115,112,101,99,116,105,118,101,32,40,52,53,46,48,102,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,103,101,116,87,105,100,116,104,40,41,32,47,32,40,71,76,102,108,111,97,116,41,32,103,101,116,72,101,105,103,104,116,40,41,44,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,48,46,49,102,44,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,49,48,48,46,48,102,41,59,13,10,13,10,32,32,32,32,32,32,32,32,103,108,77,97,116,114, - 105,120,77,111,100,101,32,40,71,76,95,77,79,68,69,76,86,73,69,87,41,59,13,10,13,10,32,32,32,32,32,32,32,32,103,108,76,111,97,100, - 73,100,101,110,116,105,116,121,40,41,59,13,10,32,32,32,32,32,32,32,32,103,108,80,117,115,104,77,97,116,114,105,120,40,41,59,13,10,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,114,97,110,115,108,97,116,101,102,32,40,48,46,48,102,44,32,48,46,48,102,44,32,45,53, - 46,48,102,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,108,82,111,116,97,116,101,102,32,40,114,111,116,97,116,105,111,110,44,32, - 48,46,53,102,44,32,49,46,48,102,44,32,48,46,48,102,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,108,66,101,103,105, - 110,32,40,71,76,95,81,85,65,68,83,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,67,111,108,111,114, - 51,102,32,40,48,46,48,102,44,32,49,46,48,102,44,32,48,46,48,102,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,103,108,84,101,120,67,111,111,114,100,50,102,40,48,46,48,102,44,32,48,46,48,102,41,59,32,103,108,86,101,114,116,101,120,51,102,40,45, - 49,46,48,102,44,32,45,49,46,48,102,44,32,32,49,46,48,102,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108, - 84,101,120,67,111,111,114,100,50,102,40,48,46,48,102,44,32,49,46,48,102,41,59,32,103,108,86,101,114,116,101,120,51,102,40,32,49,46,48,102, - 44,32,45,49,46,48,102,44,32,32,49,46,48,102,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67, - 111,111,114,100,50,102,40,49,46,48,102,44,32,49,46,48,102,41,59,32,103,108,86,101,114,116,101,120,51,102,40,32,49,46,48,102,44,32,32,49, - 46,48,102,44,32,32,49,46,48,102,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100, - 50,102,40,49,46,48,102,44,32,48,46,48,102,41,59,32,103,108,86,101,114,116,101,120,51,102,40,45,49,46,48,102,44,32,32,49,46,48,102,44, - 32,32,49,46,48,102,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,67,111,108,111,114,51,102,32,40,49, - 46,48,102,44,32,48,46,48,102,44,32,48,46,48,102,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84, - 101,120,67,111,111,114,100,50,102,40,48,46,48,102,44,32,48,46,48,102,41,59,32,103,108,86,101,114,116,101,120,51,102,40,45,49,46,48,102,44, - 32,45,49,46,48,102,44,32,45,49,46,48,102,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111, - 111,114,100,50,102,40,48,46,48,102,44,32,49,46,48,102,41,59,32,103,108,86,101,114,116,101,120,51,102,40,45,49,46,48,102,44,32,32,49,46, - 48,102,44,32,45,49,46,48,102,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50, - 102,40,49,46,48,102,44,32,49,46,48,102,41,59,32,103,108,86,101,114,116,101,120,51,102,40,32,49,46,48,102,44,32,32,49,46,48,102,44,32, - 45,49,46,48,102,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,102,40,49,46, - 48,102,44,32,48,46,48,102,41,59,32,103,108,86,101,114,116,101,120,51,102,40,32,49,46,48,102,44,32,45,49,46,48,102,44,32,45,49,46,48, - 102,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,67,111,108,111,114,51,102,32,40,48,46,48,102,44,32, - 48,46,48,102,44,32,49,46,48,102,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111, - 114,100,50,102,40,48,46,48,102,44,32,48,46,48,102,41,59,32,103,108,86,101,114,116,101,120,51,102,40,45,49,46,48,102,44,32,32,49,46,48, - 102,44,32,45,49,46,48,102,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,102, - 40,48,46,48,102,44,32,49,46,48,102,41,59,32,103,108,86,101,114,116,101,120,51,102,40,45,49,46,48,102,44,32,32,49,46,48,102,44,32,32, - 49,46,48,102,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,102,40,49,46,48, - 102,44,32,49,46,48,102,41,59,32,103,108,86,101,114,116,101,120,51,102,40,32,49,46,48,102,44,32,32,49,46,48,102,44,32,32,49,46,48,102, - 41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,102,40,49,46,48,102,44,32,48, - 46,48,102,41,59,32,103,108,86,101,114,116,101,120,51,102,40,32,49,46,48,102,44,32,32,49,46,48,102,44,32,45,49,46,48,102,41,59,13,10, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,67,111,108,111,114,51,102,32,40,49,46,48,102,44,32,49,46,48,102,44, - 32,48,46,48,102,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,102,40, - 48,46,48,102,44,32,48,46,48,102,41,59,32,103,108,86,101,114,116,101,120,51,102,40,45,49,46,48,102,44,32,45,49,46,48,102,44,32,45,49, - 46,48,102,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,102,40,48,46,48,102, - 44,32,49,46,48,102,41,59,32,103,108,86,101,114,116,101,120,51,102,40,32,49,46,48,102,44,32,45,49,46,48,102,44,32,45,49,46,48,102,41, - 59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,102,40,49,46,48,102,44,32,49,46, - 48,102,41,59,32,103,108,86,101,114,116,101,120,51,102,40,32,49,46,48,102,44,32,45,49,46,48,102,44,32,32,49,46,48,102,41,59,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,102,40,49,46,48,102,44,32,48,46,48,102,41,59, - 32,103,108,86,101,114,116,101,120,51,102,40,45,49,46,48,102,44,32,45,49,46,48,102,44,32,32,49,46,48,102,41,59,13,10,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,67,111,108,111,114,51,102,32,40,48,46,48,102,44,32,49,46,48,102,44,32,49,46,48,102, - 41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,102,40,48,46,48,102,44, - 32,48,46,48,102,41,59,32,103,108,86,101,114,116,101,120,51,102,40,32,49,46,48,102,44,32,45,49,46,48,102,44,32,45,49,46,48,102,41,59, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,102,40,48,46,48,102,44,32,49,46,48, - 102,41,59,32,103,108,86,101,114,116,101,120,51,102,40,32,49,46,48,102,44,32,32,49,46,48,102,44,32,45,49,46,48,102,41,59,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,102,40,49,46,48,102,44,32,49,46,48,102,41,59,32, - 103,108,86,101,114,116,101,120,51,102,40,32,49,46,48,102,44,32,32,49,46,48,102,44,32,32,49,46,48,102,41,59,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,102,40,49,46,48,102,44,32,48,46,48,102,41,59,32,103,108,86,101, - 114,116,101,120,51,102,40,32,49,46,48,102,44,32,45,49,46,48,102,44,32,32,49,46,48,102,41,59,13,10,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,103,108,67,111,108,111,114,51,102,32,40,49,46,48,102,44,32,48,46,48,102,44,32,49,46,48,102,41,59,13,10,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,102,40,48,46,48,102,44,32,48,46,48,102, - 41,59,32,103,108,86,101,114,116,101,120,51,102,40,45,49,46,48,102,44,32,45,49,46,48,102,44,32,45,49,46,48,102,41,59,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,102,40,48,46,48,102,44,32,49,46,48,102,41,59,32,103, - 108,86,101,114,116,101,120,51,102,40,45,49,46,48,102,44,32,45,49,46,48,102,44,32,32,49,46,48,102,41,59,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,102,40,49,46,48,102,44,32,49,46,48,102,41,59,32,103,108,86,101,114, - 116,101,120,51,102,40,45,49,46,48,102,44,32,32,49,46,48,102,44,32,32,49,46,48,102,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,103,108,84,101,120,67,111,111,114,100,50,102,40,49,46,48,102,44,32,48,46,48,102,41,59,32,103,108,86,101,114,116,101,120,51, - 102,40,45,49,46,48,102,44,32,32,49,46,48,102,44,32,45,49,46,48,102,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103, - 108,69,110,100,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,103,108,80,111,112,77,97,116,114,105,120,40,41,59,13,10,32,32,32,32,125, - 13,10,13,10,32,32,32,32,118,111,105,100,32,116,105,109,101,114,67,97,108,108,98,97,99,107,40,41,13,10,32,32,32,32,123,13,10,32,32,32, - 32,32,32,32,32,114,111,116,97,116,105,111,110,32,43,61,32,100,101,108,116,97,59,13,10,13,10,32,32,32,32,32,32,32,32,114,101,112,97,105, - 110,116,40,41,59,13,10,32,32,32,32,125,13,10,125,59,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,79,112,101,110,71,76,68,101,109,111,32,32, - 58,32,112,117,98,108,105,99,32,67,111,109,112,111,110,101,110,116,13,10,123,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,68,101,109,111,79,112,101, - 110,71,76,67,97,110,118,97,115,42,32,99,97,110,118,97,115,59,13,10,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,47,47,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32, - 32,79,112,101,110,71,76,68,101,109,111,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,115,101,116,78,97,109,101,32,40,84, - 40,34,79,112,101,110,71,76,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,99,97,110,118,97,115,32,61,32,110,101,119,32,68,101,109, - 111,79,112,101,110,71,76,67,97,110,118,97,115,40,41,59,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105, - 98,108,101,32,40,99,97,110,118,97,115,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,79,112,101,110,71,76,68,101,109,111,40, - 41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65,108,108,67,104,105,108,100,114,101,110,40,41,59,13,10, - 32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,114,101,115,105,122,101,100,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32, - 32,32,32,32,99,97,110,118,97,115,45,62,115,101,116,66,111,117,110,100,115,32,40,49,48,44,32,49,48,44,32,103,101,116,87,105,100,116,104,40, - 41,32,45,32,50,48,44,32,103,101,116,72,101,105,103,104,116,40,41,32,45,32,53,48,41,59,13,10,32,32,32,32,125,13,10,125,59,13,10,13, - 10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,13,10,67,111,109,112,111,110,101,110,116,42,32,99,114,101,97,116,101,79,112,101,110,71,76,68,101,109,111,40,41,13,10,123,13,10,32, - 32,32,32,114,101,116,117,114,110,32,110,101,119,32,79,112,101,110,71,76,68,101,109,111,40,41,59,13,10,125,13,10,13,10,35,101,110,100,105,102, - 13,10,0,0}; -const char* BinaryData::opengldemo_cpp = (const char*) temp6; - -static const unsigned char temp7[] = {47,42,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,13,10,13,10,32,32,32,84,104,105,115,32,102,105,108,101,32,105,115,32,112,97,114,116,32,111,102,32,116,104,101,32,74,85,67,69, - 32,108,105,98,114,97,114,121,32,45,32,34,74,117,108,101,115,39,32,85,116,105,108,105,116,121,32,67,108,97,115,115,32,69,120,116,101,110,115,105, - 111,110,115,34,13,10,32,32,32,67,111,112,121,114,105,103,104,116,32,50,48,48,52,45,57,32,98,121,32,82,97,119,32,77,97,116,101,114,105,97, - 108,32,83,111,102,116,119,97,114,101,32,76,116,100,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,74,85,67,69,32,99,97,110,32,98,101,32,114,101, - 100,105,115,116,114,105,98,117,116,101,100,32,97,110,100,47,111,114,32,109,111,100,105,102,105,101,100,32,117,110,100,101,114,32,116,104,101,32,116,101, - 114,109,115,32,111,102,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,13,10,32,32,32,80,117,98,108,105,99,32,76,105,99,101,110,115, - 101,32,40,86,101,114,115,105,111,110,32,50,41,44,32,97,115,32,112,117,98,108,105,115,104,101,100,32,98,121,32,116,104,101,32,70,114,101,101,32, - 83,111,102,116,119,97,114,101,32,70,111,117,110,100,97,116,105,111,110,46,13,10,32,32,32,65,32,99,111,112,121,32,111,102,32,116,104,101,32,108, - 105,99,101,110,115,101,32,105,115,32,105,110,99,108,117,100,101,100,32,105,110,32,116,104,101,32,74,85,67,69,32,100,105,115,116,114,105,98,117,116, - 105,111,110,44,32,111,114,32,99,97,110,32,98,101,32,102,111,117,110,100,13,10,32,32,32,111,110,108,105,110,101,32,97,116,32,119,119,119,46,103, - 110,117,46,111,114,103,47,108,105,99,101,110,115,101,115,46,13,10,13,10,32,32,32,74,85,67,69,32,105,115,32,100,105,115,116,114,105,98,117,116, - 101,100,32,105,110,32,116,104,101,32,104,111,112,101,32,116,104,97,116,32,105,116,32,119,105,108,108,32,98,101,32,117,115,101,102,117,108,44,32,98, - 117,116,32,87,73,84,72,79,85,84,32,65,78,89,13,10,32,32,32,87,65,82,82,65,78,84,89,59,32,119,105,116,104,111,117,116,32,101,118,101, - 110,32,116,104,101,32,105,109,112,108,105,101,100,32,119,97,114,114,97,110,116,121,32,111,102,32,77,69,82,67,72,65,78,84,65,66,73,76,73,84, - 89,32,111,114,32,70,73,84,78,69,83,83,32,70,79,82,13,10,32,32,32,65,32,80,65,82,84,73,67,85,76,65,82,32,80,85,82,80,79,83, - 69,46,32,32,83,101,101,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,32,80,117,98,108,105,99,32,76,105,99,101,110,115,101,32,102, - 111,114,32,109,111,114,101,32,100,101,116,97,105,108,115,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,84,111,32,114,101,108,101,97,115,101,32,97,32, - 99,108,111,115,101,100,45,115,111,117,114,99,101,32,112,114,111,100,117,99,116,32,119,104,105,99,104,32,117,115,101,115,32,74,85,67,69,44,32,99, - 111,109,109,101,114,99,105,97,108,32,108,105,99,101,110,115,101,115,32,97,114,101,13,10,32,32,32,97,118,97,105,108,97,98,108,101,58,32,118,105, - 115,105,116,32,119,119,119,46,114,97,119,109,97,116,101,114,105,97,108,115,111,102,116,119,97,114,101,46,99,111,109,47,106,117,99,101,32,102,111,114, - 32,109,111,114,101,32,105,110,102,111,114,109,97,116,105,111,110,46,13,10,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,42,47,13,10,13,10,35,105,110,99,108,117,100,101,32,34, - 46,46,47,106,117,99,101,100,101,109,111,95,104,101,97,100,101,114,115,46,104,34,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,115,116,97,116,105,99,32,102,108,111, - 97,116,32,114,97,110,100,111,109,78,117,109,98,101,114,40,41,13,10,123,13,10,32,32,32,32,114,101,116,117,114,110,32,82,97,110,100,111,109,58, - 58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,70,108,111,97,116,40,41,32,42,32,51,48,48,46,48,102,32, - 45,32,49,53,48,46,48,102,59,13,10,125,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,80,97,116,104,115,65,110,100,84,114,97,110,115,102, - 111,114,109,115,68,101,109,111,32,32,58,32,112,117,98,108,105,99,32,67,111,109,112,111,110,101,110,116,44,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,83,108,105,100,101,114,76,105,115,116, - 101,110,101,114,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112, - 117,98,108,105,99,32,67,111,109,98,111,66,111,120,76,105,115,116,101,110,101,114,13,10,123,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32, - 47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 13,10,32,32,32,32,80,97,116,104,115,65,110,100,84,114,97,110,115,102,111,114,109,115,68,101,109,111,40,41,13,10,32,32,32,32,123,13,10,32, - 32,32,32,32,32,32,32,115,101,116,78,97,109,101,32,40,84,40,34,80,97,116,104,115,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32, - 47,47,32,78,111,32,112,97,114,116,115,32,111,102,32,116,104,105,115,32,99,111,109,112,111,110,101,110,116,32,97,114,101,32,115,101,109,105,45,116, - 114,97,110,115,112,97,114,101,110,116,44,32,115,111,32,99,97,108,108,105,110,103,32,115,101,116,79,112,97,113,117,101,40,41,13,10,32,32,32,32, - 32,32,32,32,47,47,32,97,108,108,111,119,115,32,116,104,101,32,114,101,100,114,97,119,32,115,121,115,116,101,109,32,116,111,32,101,120,112,108,111, - 105,116,32,116,104,105,115,32,102,97,99,116,32,97,110,100,32,111,112,116,105,109,105,115,101,32,114,101,112,97,105,110,116,105,110,103,46,13,10,32, - 32,32,32,32,32,32,32,115,101,116,79,112,97,113,117,101,32,40,116,114,117,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,103,101,110,101, - 114,97,116,101,82,97,110,100,111,109,83,104,97,112,101,40,41,59,13,10,32,32,32,32,32,32,32,32,103,101,110,101,114,97,116,101,73,109,97,103, - 101,40,41,59,13,10,32,32,32,32,32,32,32,32,103,101,110,101,114,97,116,101,68,114,97,119,97,98,108,101,40,41,59,13,10,32,32,32,32,32, - 32,32,32,103,101,110,101,114,97,116,101,83,86,71,68,114,97,119,97,98,108,101,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,97,100,100, - 65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,116,121,112,101,67,104,111,111,115,101,114,32,32,32,32,61,32,110,101,119,32,67,111,109, - 98,111,66,111,120,32,40,84,40,34,116,121,112,101,34,41,41,41,59,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86, - 105,115,105,98,108,101,32,40,115,99,97,108,101,83,108,105,100,101,114,32,32,32,32,61,32,110,101,119,32,83,108,105,100,101,114,32,40,84,40,34, - 115,99,97,108,101,34,41,41,41,59,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,97, - 110,103,108,101,83,108,105,100,101,114,32,32,32,32,61,32,110,101,119,32,83,108,105,100,101,114,32,40,84,40,34,97,110,103,108,101,34,41,41,41, - 59,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,120,83,108,105,100,101,114,32,32,32, - 32,32,32,32,32,61,32,110,101,119,32,83,108,105,100,101,114,32,40,84,40,34,120,34,41,41,41,59,13,10,32,32,32,32,32,32,32,32,97,100, - 100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,121,83,108,105,100,101,114,32,32,32,32,32,32,32,32,61,32,110,101,119,32,83,108, - 105,100,101,114,32,40,84,40,34,121,34,41,41,41,59,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98, - 108,101,32,40,111,112,97,99,105,116,121,83,108,105,100,101,114,32,32,61,32,110,101,119,32,83,108,105,100,101,114,32,40,84,40,34,111,112,97,99, - 105,116,121,34,41,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,40,110,101,119,32,76,97,98,101,108,32,40,83,116,114,105,110,103,58,58, - 101,109,112,116,121,44,32,84,40,34,116,121,112,101,58,34,41,41,41,32,32,32,32,32,45,62,97,116,116,97,99,104,84,111,67,111,109,112,111,110, - 101,110,116,32,40,116,121,112,101,67,104,111,111,115,101,114,44,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,40,110,101,119,32,76, - 97,98,101,108,32,40,83,116,114,105,110,103,58,58,101,109,112,116,121,44,32,84,40,34,115,99,97,108,101,58,34,41,41,41,32,32,32,32,45,62, - 97,116,116,97,99,104,84,111,67,111,109,112,111,110,101,110,116,32,40,115,99,97,108,101,83,108,105,100,101,114,44,32,116,114,117,101,41,59,13,10, - 32,32,32,32,32,32,32,32,40,110,101,119,32,76,97,98,101,108,32,40,83,116,114,105,110,103,58,58,101,109,112,116,121,44,32,84,40,34,97,110, - 103,108,101,58,34,41,41,41,32,32,32,32,45,62,97,116,116,97,99,104,84,111,67,111,109,112,111,110,101,110,116,32,40,97,110,103,108,101,83,108, - 105,100,101,114,44,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,40,110,101,119,32,76,97,98,101,108,32,40,83,116,114,105,110,103, - 58,58,101,109,112,116,121,44,32,84,40,34,120,32,111,102,102,115,101,116,58,34,41,41,41,32,45,62,97,116,116,97,99,104,84,111,67,111,109,112, - 111,110,101,110,116,32,40,120,83,108,105,100,101,114,44,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,40,110,101,119,32,76,97,98, - 101,108,32,40,83,116,114,105,110,103,58,58,101,109,112,116,121,44,32,84,40,34,121,32,111,102,102,115,101,116,58,34,41,41,41,32,45,62,97,116, - 116,97,99,104,84,111,67,111,109,112,111,110,101,110,116,32,40,121,83,108,105,100,101,114,44,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32, - 32,32,40,110,101,119,32,76,97,98,101,108,32,40,83,116,114,105,110,103,58,58,101,109,112,116,121,44,32,84,40,34,111,112,97,99,105,116,121,58, - 34,41,41,41,32,32,45,62,97,116,116,97,99,104,84,111,67,111,109,112,111,110,101,110,116,32,40,111,112,97,99,105,116,121,83,108,105,100,101,114, - 44,32,116,114,117,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,116,121,112,101,67,104,111,111,115,101,114,45,62,97,100,100,73,116,101,109, - 32,40,84,40,34,114,97,110,100,111,109,32,115,104,97,112,101,32,45,32,115,111,108,105,100,32,99,111,108,111,117,114,34,41,44,32,49,41,59,13, - 10,32,32,32,32,32,32,32,32,116,121,112,101,67,104,111,111,115,101,114,45,62,97,100,100,73,116,101,109,32,40,84,40,34,114,97,110,100,111,109, - 32,115,104,97,112,101,32,45,32,108,105,110,101,97,114,32,103,114,97,100,105,101,110,116,32,102,105,108,108,34,41,44,32,50,41,59,13,10,32,32, - 32,32,32,32,32,32,116,121,112,101,67,104,111,111,115,101,114,45,62,97,100,100,73,116,101,109,32,40,84,40,34,114,97,110,100,111,109,32,115,104, - 97,112,101,32,45,32,114,97,100,105,97,108,32,103,114,97,100,105,101,110,116,32,102,105,108,108,34,41,44,32,51,41,59,13,10,32,32,32,32,32, - 32,32,32,116,121,112,101,67,104,111,111,115,101,114,45,62,97,100,100,73,116,101,109,32,40,84,40,34,114,97,110,100,111,109,32,115,104,97,112,101, - 32,45,32,116,105,108,101,100,32,105,109,97,103,101,32,102,105,108,108,34,41,44,32,56,41,59,13,10,32,32,32,32,32,32,32,32,116,121,112,101, - 67,104,111,111,115,101,114,45,62,97,100,100,73,116,101,109,32,40,84,40,34,105,109,97,103,101,32,45,32,108,111,119,32,113,117,97,108,105,116,121, - 34,41,44,32,52,41,59,13,10,32,32,32,32,32,32,32,32,116,121,112,101,67,104,111,111,115,101,114,45,62,97,100,100,73,116,101,109,32,40,84, - 40,34,105,109,97,103,101,32,45,32,104,105,103,104,32,113,117,97,108,105,116,121,34,41,44,32,53,41,59,13,10,32,32,32,32,32,32,32,32,116, - 121,112,101,67,104,111,111,115,101,114,45,62,97,100,100,73,116,101,109,32,40,84,40,34,105,109,97,103,101,32,45,32,99,111,108,111,117,114,45,102, - 105,108,108,101,100,32,97,108,112,104,97,32,99,104,97,110,110,101,108,34,41,44,32,54,41,59,13,10,32,32,32,32,32,32,32,32,116,121,112,101, - 67,104,111,111,115,101,114,45,62,97,100,100,73,116,101,109,32,40,84,40,34,105,109,97,103,101,32,45,32,103,114,97,100,105,101,110,116,45,102,105, - 108,108,101,100,32,97,108,112,104,97,32,99,104,97,110,110,101,108,34,41,44,32,55,41,59,13,10,32,32,32,32,32,32,32,32,116,121,112,101,67, - 104,111,111,115,101,114,45,62,97,100,100,73,116,101,109,32,40,84,40,34,105,109,97,103,101,32,45,32,97,108,112,104,97,109,97,112,45,102,105,108, - 108,101,100,32,97,108,112,104,97,32,99,104,97,110,110,101,108,34,41,44,32,57,41,59,13,10,32,32,32,32,32,32,32,32,116,121,112,101,67,104, - 111,111,115,101,114,45,62,97,100,100,73,116,101,109,32,40,84,40,34,100,114,97,119,97,98,108,101,32,111,98,106,101,99,116,34,41,44,32,49,48, - 41,59,13,10,32,32,32,32,32,32,32,32,116,121,112,101,67,104,111,111,115,101,114,45,62,97,100,100,73,116,101,109,32,40,84,40,34,83,86,71, - 32,111,98,106,101,99,116,34,41,44,32,49,49,41,59,13,10,32,32,32,32,32,32,32,32,116,121,112,101,67,104,111,111,115,101,114,45,62,115,101, - 116,83,101,108,101,99,116,101,100,73,100,32,40,49,49,41,59,13,10,32,32,32,32,32,32,32,32,116,121,112,101,67,104,111,111,115,101,114,45,62, - 97,100,100,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,115,99,97,108,101,83,108,105,100, - 101,114,32,32,32,45,62,97,100,100,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,32,32,32,32,32,32,32,32,97,110,103,108, - 101,83,108,105,100,101,114,32,32,32,45,62,97,100,100,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,32,32,32,32,32,32,32, - 32,120,83,108,105,100,101,114,32,32,32,32,32,32,32,45,62,97,100,100,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,32,32, - 32,32,32,32,32,32,121,83,108,105,100,101,114,32,32,32,32,32,32,32,45,62,97,100,100,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41, - 59,13,10,32,32,32,32,32,32,32,32,111,112,97,99,105,116,121,83,108,105,100,101,114,32,45,62,97,100,100,76,105,115,116,101,110,101,114,32,40, - 116,104,105,115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,115,99,97,108,101,83,108,105,100,101,114,45,62,115,101,116,82,97,110,103,101,32, - 40,48,46,48,49,44,32,49,48,46,48,44,32,48,46,48,48,49,41,59,13,10,32,32,32,32,32,32,32,32,115,99,97,108,101,83,108,105,100,101, - 114,45,62,115,101,116,86,97,108,117,101,32,40,49,46,48,41,59,13,10,13,10,32,32,32,32,32,32,32,32,97,110,103,108,101,83,108,105,100,101, - 114,45,62,115,101,116,82,97,110,103,101,32,40,45,49,46,48,44,32,49,46,48,44,32,48,46,48,48,49,41,59,13,10,32,32,32,32,32,32,32, - 32,97,110,103,108,101,83,108,105,100,101,114,45,62,115,101,116,86,97,108,117,101,32,40,48,41,59,13,10,13,10,32,32,32,32,32,32,32,32,120, - 83,108,105,100,101,114,45,62,115,101,116,82,97,110,103,101,32,40,45,49,48,44,32,49,48,44,32,48,46,48,48,49,41,59,13,10,32,32,32,32, - 32,32,32,32,120,83,108,105,100,101,114,45,62,115,101,116,86,97,108,117,101,32,40,48,41,59,13,10,13,10,32,32,32,32,32,32,32,32,121,83, - 108,105,100,101,114,45,62,115,101,116,82,97,110,103,101,32,40,45,49,48,44,32,49,48,44,32,48,46,48,48,49,41,59,13,10,32,32,32,32,32, - 32,32,32,121,83,108,105,100,101,114,45,62,115,101,116,86,97,108,117,101,32,40,48,41,59,13,10,13,10,32,32,32,32,32,32,32,32,111,112,97, - 99,105,116,121,83,108,105,100,101,114,45,62,115,101,116,82,97,110,103,101,32,40,48,44,32,49,44,32,48,46,48,49,41,59,13,10,32,32,32,32, - 32,32,32,32,111,112,97,99,105,116,121,83,108,105,100,101,114,45,62,115,101,116,86,97,108,117,101,32,40,49,46,48,41,59,13,10,32,32,32,32, - 125,13,10,13,10,32,32,32,32,126,80,97,116,104,115,65,110,100,84,114,97,110,115,102,111,114,109,115,68,101,109,111,40,41,13,10,32,32,32,32, - 123,13,10,32,32,32,32,32,32,32,32,105,102,32,40,105,109,97,103,101,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 100,101,108,101,116,101,32,105,109,97,103,101,59,13,10,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,32,100,114,97,119,97,98,108,101, - 59,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,32,115,118,103,68,114,97,119,97,98,108,101,59,13,10,13,10,32,32,32,32,32,32, - 32,32,100,101,108,101,116,101,65,108,108,67,104,105,108,100,114,101,110,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105, - 100,32,112,97,105,110,116,32,40,71,114,97,112,104,105,99,115,38,32,103,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,103,46, - 102,105,108,108,67,104,101,99,107,101,114,66,111,97,114,100,32,40,48,44,32,48,44,32,103,101,116,87,105,100,116,104,40,41,44,32,103,101,116,72, - 101,105,103,104,116,40,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,53,48, - 44,32,53,48,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,67,111,108,111,117, - 114,32,40,48,120,102,102,101,48,101,48,101,48,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,67,111,108,111,117,114,115,58,58,119,104,105,116,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,105, - 110,116,32,116,121,112,101,32,61,32,116,121,112,101,67,104,111,111,115,101,114,45,62,103,101,116,83,101,108,101,99,116,101,100,73,100,40,41,59,13, - 10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,116,121,112,101,32,61,61,32,49,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,103,46,115,101,116,67,111,108,111,117,114,32,40,67,111,108,111,117,114,115,58,58,98,108,117,101,46,119,105,116, - 104,65,108,112,104,97,32,40,40,102,108,111,97,116,41,32,111,112,97,99,105,116,121,83,108,105,100,101,114,45,62,103,101,116,86,97,108,117,101,40, - 41,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,46,102,105,108,108,80,97,116,104,32,40,115,104,97,112,101,44,32,103,101,116, - 84,114,97,110,115,102,111,114,109,40,41,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,32,105, - 102,32,40,116,121,112,101,32,61,61,32,50,32,124,124,32,116,121,112,101,32,61,61,32,51,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,71,114,97,100,105,101,110,116,66,114,117,115,104,32,103,98,32,40,67,111,108,111,117,114,115,58,58,98,108, - 117,101,46,119,105,116,104,65,108,112,104,97,32,40,40,102,108,111,97,116,41,32,111,112,97,99,105,116,121,83,108,105,100,101,114,45,62,103,101,116, - 86,97,108,117,101,40,41,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,103,101,116,87,105,100,116,104,40,41,32,42,32,48,46,53,102,44,32,103,101,116,72,101,105,103,104,116,40,41,32,42,32,48,46,53,102,44,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,67,111,108,111,117,114,115,58,58, - 114,101,100,46,119,105,116,104,65,108,112,104,97,32,40,40,102,108,111,97,116,41,32,111,112,97,99,105,116,121,83,108,105,100,101,114,45,62,103,101, - 116,86,97,108,117,101,40,41,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,103,101,116,87,105,100,116,104,40,41,32,42,32,48,46,54,102,44,32,103,101,116,72,101,105,103,104,116,40,41,32,42,32,48,46,55,102,44, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,121,112,101,32,61,61,32, - 51,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,46,115,101,116,66,114,117,115,104,32,40,38,103,98,41,59,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,103,46,102,105,108,108,80,97,116,104,32,40,115,104,97,112,101,44,32,103,101,116,84,114,97,110,115,102,111,114, - 109,40,41,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,116,121,112,101,32, - 61,61,32,56,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,73,109,97,103,101,66,114,117,115,104, - 32,105,98,32,40,105,109,97,103,101,44,32,49,48,48,44,32,49,48,48,44,32,40,102,108,111,97,116,41,32,111,112,97,99,105,116,121,83,108,105, - 100,101,114,45,62,103,101,116,86,97,108,117,101,40,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,46,115,101,116,66,114, - 117,115,104,32,40,38,105,98,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,46,102,105,108,108,80,97,116,104,32,40,115,104,97,112, - 101,44,32,103,101,116,84,114,97,110,115,102,111,114,109,40,41,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32, - 101,108,115,101,32,105,102,32,40,116,121,112,101,32,61,61,32,52,32,124,124,32,116,121,112,101,32,61,61,32,53,41,13,10,32,32,32,32,32,32, - 32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,116,121,112,101,32,61,61,32,52,41,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,103,46,115,101,116,73,109,97,103,101,82,101,115,97,109,112,108,105,110,103,81,117,97,108,105,116,121,32,40,71,114, - 97,112,104,105,99,115,58,58,108,111,119,82,101,115,97,109,112,108,105,110,103,81,117,97,108,105,116,121,41,59,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,46,115,101,116,73,109,97,103,101,82,101,115,97, - 109,112,108,105,110,103,81,117,97,108,105,116,121,32,40,71,114,97,112,104,105,99,115,58,58,109,101,100,105,117,109,82,101,115,97,109,112,108,105,110, - 103,81,117,97,108,105,116,121,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,46,115,101,116,79,112,97,99,105,116,121,32,40, - 40,102,108,111,97,116,41,32,111,112,97,99,105,116,121,83,108,105,100,101,114,45,62,103,101,116,86,97,108,117,101,40,41,41,59,13,10,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,105,109,97,103,101,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,46,100,114,97,119,73,109,97,103,101,84,114,97,110,115,102,111,114,109,101, - 100,32,40,105,109,97,103,101,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,48,44,32,48,44,32,105,109,97,103,101,45,62,103,101,116,87,105,100,116,104,40,41,44,32,105,109,97,103, - 101,45,62,103,101,116,72,101,105,103,104,116,40,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,65,102,102,105,110,101,84,114,97,110,115,102,111,114,109,58,58,116,114,97,110,115,108, - 97,116,105,111,110,32,40,45,48,46,53,102,32,42,32,105,109,97,103,101,45,62,103,101,116,87,105,100,116,104,40,41,44,32,45,48,46,53,102,32, - 42,32,105,109,97,103,101,45,62,103,101,116,72,101,105,103,104,116,40,41,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,102,111,108,108,111,119,101,100,66,121,32,40, - 103,101,116,84,114,97,110,115,102,111,114,109,40,41,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,97,108,115,101,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125, - 13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,116,121,112,101,32,61,61,32,54,41, - 13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,46,115,101,116,67,111,108,111,117,114,32,40,67,111, - 108,111,117,114,115,58,58,98,108,117,101,46,119,105,116,104,65,108,112,104,97,32,40,40,102,108,111,97,116,41,32,111,112,97,99,105,116,121,83,108, - 105,100,101,114,45,62,103,101,116,86,97,108,117,101,40,41,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,105, - 109,97,103,101,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,103,46,100,114,97,119,73,109,97,103,101,84,114,97,110,115,102,111,114,109,101,100,32,40,105,109,97,103,101,44,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,48,44,32,48,44, - 32,105,109,97,103,101,45,62,103,101,116,87,105,100,116,104,40,41,44,32,105,109,97,103,101,45,62,103,101,116,72,101,105,103,104,116,40,41,44,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,65,102,102,105,110,101,84,114,97,110,115,102,111,114,109,58,58,116,114,97,110,115,108,97,116,105,111,110,32,40,45,48,46,53,102,32,42,32,105, - 109,97,103,101,45,62,103,101,116,87,105,100,116,104,40,41,44,32,45,48,46,53,102,32,42,32,105,109,97,103,101,45,62,103,101,116,72,101,105,103, - 104,116,40,41,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,46,102,111,108,108,111,119,101,100,66,121,32,40,103,101,116,84,114,97,110,115,102,111,114,109,40,41,41,44, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32, - 32,32,32,32,101,108,115,101,32,105,102,32,40,116,121,112,101,32,61,61,32,55,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,71,114,97,100,105,101,110,116,66,114,117,115,104,32,103,98,32,40,67,111,108,111,117,114,115,58,58,98,108,117,101,46, - 119,105,116,104,65,108,112,104,97,32,40,40,102,108,111,97,116,41,32,111,112,97,99,105,116,121,83,108,105,100,101,114,45,62,103,101,116,86,97,108, - 117,101,40,41,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,101, - 116,87,105,100,116,104,40,41,32,42,32,48,46,53,102,44,32,103,101,116,72,101,105,103,104,116,40,41,32,42,32,48,46,53,102,44,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,67,111,108,111,117,114,115,58,58,114,101,100, - 46,119,105,116,104,65,108,112,104,97,32,40,40,102,108,111,97,116,41,32,111,112,97,99,105,116,121,83,108,105,100,101,114,45,62,103,101,116,86,97, - 108,117,101,40,41,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103, - 101,116,87,105,100,116,104,40,41,32,42,32,48,46,54,102,44,32,103,101,116,72,101,105,103,104,116,40,41,32,42,32,48,46,55,102,44,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,97,108,115,101,41,59,13,10,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,103,46,115,101,116,66,114,117,115,104,32,40,38,103,98,41,59,13,10,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,105,102,32,40,105,109,97,103,101,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,103,46,100,114,97,119,73,109,97,103,101,84,114,97,110,115,102,111,114,109,101,100,32,40,105,109,97, - 103,101,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,48,44,32,48,44,32,105,109,97,103,101,45,62,103,101,116,87,105,100,116,104,40,41,44,32,105,109,97,103,101,45,62,103,101,116, - 72,101,105,103,104,116,40,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,65,102,102,105,110,101,84,114,97,110,115,102,111,114,109,58,58,116,114,97,110,115,108,97,116,105,111,110,32, - 40,45,48,46,53,102,32,42,32,105,109,97,103,101,45,62,103,101,116,87,105,100,116,104,40,41,44,32,45,48,46,53,102,32,42,32,105,109,97,103, - 101,45,62,103,101,116,72,101,105,103,104,116,40,41,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,102,111,108,108,111,119,101,100,66,121,32,40,103,101,116,84,114,97, - 110,115,102,111,114,109,40,41,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32, - 32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,116,121,112,101,32,61,61,32,57,41,13,10,32,32,32,32,32, - 32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,73,109,97,103,101,66,114,117,115,104,32,105,98,32,40,105,109,97,103,101,44,32, - 49,48,48,44,32,49,48,48,44,32,40,102,108,111,97,116,41,32,111,112,97,99,105,116,121,83,108,105,100,101,114,45,62,103,101,116,86,97,108,117, - 101,40,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,46,115,101,116,66,114,117,115,104,32,40,38,105,98,41,59,13,10,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,105,109,97,103,101,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,46,100,114,97,119,73,109,97,103,101,84,114,97,110,115,102,111,114,109, - 101,100,32,40,105,109,97,103,101,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,48,44,32,48,44,32,105,109,97,103,101,45,62,103,101,116,87,105,100,116,104,40,41,44,32,105,109,97, - 103,101,45,62,103,101,116,72,101,105,103,104,116,40,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,65,102,102,105,110,101,84,114,97,110,115,102,111,114,109,58,58,116,114,97,110,115, - 108,97,116,105,111,110,32,40,45,48,46,53,102,32,42,32,105,109,97,103,101,45,62,103,101,116,87,105,100,116,104,40,41,44,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,45,48,46,53,102,32,42,32,105,109,97,103,101,45, - 62,103,101,116,72,101,105,103,104,116,40,41,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,102,111,108,108,111,119,101,100,66,121,32,40,103,101,116,84,114,97,110,115, - 102,111,114,109,40,41,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32, - 32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,116,121,112,101,32,61,61,32,49,48,41,13,10,32,32,32,32,32,32, - 32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,46,115,101,116,79,112,97,99,105,116,121,32,40,40,102,108,111,97,116,41,32,111, - 112,97,99,105,116,121,83,108,105,100,101,114,45,62,103,101,116,86,97,108,117,101,40,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,102,108,111,97,116,32,120,44,32,121,44,32,119,44,32,104,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,114,97,119,97,98,108, - 101,45,62,103,101,116,66,111,117,110,100,115,32,40,120,44,32,121,44,32,119,44,32,104,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,100,114,97,119,97,98,108,101,45,62,100,114,97,119,32,40,103,44,32,65,102,102,105,110,101,84,114,97,110,115,102,111,114,109,58,58,116,114, - 97,110,115,108,97,116,105,111,110,32,40,45,120,32,45,32,48,46,53,102,32,42,32,119,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,45,121,32,45,32,48,46,53,102,32,42,32,104,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,102,111,108,108,111,119,101,100,66,121,32,40,103,101,116,84,114,97,110,115,102,111,114, - 109,40,41,41,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,116,121,112,101, - 32,61,61,32,49,49,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,46,115,101,116,79,112,97, - 99,105,116,121,32,40,40,102,108,111,97,116,41,32,111,112,97,99,105,116,121,83,108,105,100,101,114,45,62,103,101,116,86,97,108,117,101,40,41,41, - 59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,102,108,111,97,116,32,120,44,32,121,44,32,119,44,32,104,59,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,115,118,103,68,114,97,119,97,98,108,101,45,62,103,101,116,66,111,117,110,100,115,32,40,120,44,32,121,44,32,119,44, - 32,104,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,115,118,103,68,114,97,119,97,98,108,101,45,62,100,114,97,119,32,40,103, - 44,32,65,102,102,105,110,101,84,114,97,110,115,102,111,114,109,58,58,116,114,97,110,115,108,97,116,105,111,110,32,40,45,120,32,45,32,48,46,53, - 102,32,42,32,119,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,45,121,32,45,32,48,46,53, - 102,32,42,32,104,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,46,102,111,108,108,111,119,101,100,66,121,32,40,103,101,116,84,114,97,110,115,102,111,114,109,40,41,41,41,59,13,10,32,32,32,32,32, - 32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,114,101,115,105,122,101,100,40,41,13,10,32,32,32,32,123, - 13,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,105,110,116,32,120,32,61,32,49,48,48,59,13,10,32,32,32,32,32,32,32,32,105,110, - 116,32,121,32,61,32,52,59,13,10,32,32,32,32,32,32,32,32,116,121,112,101,67,104,111,111,115,101,114,45,62,115,101,116,66,111,117,110,100,115, - 32,40,120,44,32,121,44,32,51,48,48,44,32,50,52,41,59,13,10,32,32,32,32,32,32,32,32,121,32,43,61,32,50,56,59,13,10,32,32,32, - 32,32,32,32,32,115,99,97,108,101,83,108,105,100,101,114,45,62,115,101,116,66,111,117,110,100,115,32,40,120,44,32,121,44,32,51,48,48,44,32, - 50,52,41,59,13,10,32,32,32,32,32,32,32,32,121,32,43,61,32,50,56,59,13,10,32,32,32,32,32,32,32,32,97,110,103,108,101,83,108,105, - 100,101,114,45,62,115,101,116,66,111,117,110,100,115,32,40,120,44,32,121,44,32,51,48,48,44,32,50,52,41,59,13,10,32,32,32,32,32,32,32, - 32,121,32,43,61,32,50,56,59,13,10,32,32,32,32,32,32,32,32,120,83,108,105,100,101,114,45,62,115,101,116,66,111,117,110,100,115,32,40,120, - 44,32,121,44,32,51,48,48,44,32,50,52,41,59,13,10,32,32,32,32,32,32,32,32,121,32,43,61,32,50,56,59,13,10,32,32,32,32,32,32, - 32,32,121,83,108,105,100,101,114,45,62,115,101,116,66,111,117,110,100,115,32,40,120,44,32,121,44,32,51,48,48,44,32,50,52,41,59,13,10,32, - 32,32,32,32,32,32,32,121,32,43,61,32,50,56,59,13,10,32,32,32,32,32,32,32,32,111,112,97,99,105,116,121,83,108,105,100,101,114,45,62, - 115,101,116,66,111,117,110,100,115,32,40,120,44,32,121,44,32,51,48,48,44,32,50,52,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32, - 32,118,111,105,100,32,115,108,105,100,101,114,86,97,108,117,101,67,104,97,110,103,101,100,32,40,83,108,105,100,101,114,42,41,13,10,32,32,32,32, - 123,13,10,32,32,32,32,32,32,32,32,114,101,112,97,105,110,116,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100, - 32,99,111,109,98,111,66,111,120,67,104,97,110,103,101,100,32,40,67,111,109,98,111,66,111,120,42,41,13,10,32,32,32,32,123,13,10,32,32,32, - 32,32,32,32,32,114,101,112,97,105,110,116,40,41,59,13,10,32,32,32,32,125,13,10,13,10,112,114,105,118,97,116,101,58,13,10,32,32,32,32, - 80,97,116,104,32,115,104,97,112,101,59,13,10,32,32,32,32,73,109,97,103,101,42,32,105,109,97,103,101,59,13,10,32,32,32,32,68,114,97,119, - 97,98,108,101,42,32,100,114,97,119,97,98,108,101,59,13,10,32,32,32,32,68,114,97,119,97,98,108,101,67,111,109,112,111,115,105,116,101,42,32, - 115,118,103,68,114,97,119,97,98,108,101,59,13,10,13,10,32,32,32,32,67,111,109,98,111,66,111,120,42,32,116,121,112,101,67,104,111,111,115,101, - 114,59,13,10,32,32,32,32,83,108,105,100,101,114,42,32,115,99,97,108,101,83,108,105,100,101,114,59,13,10,32,32,32,32,83,108,105,100,101,114, - 42,32,97,110,103,108,101,83,108,105,100,101,114,59,13,10,32,32,32,32,83,108,105,100,101,114,42,32,120,83,108,105,100,101,114,59,13,10,32,32, - 32,32,83,108,105,100,101,114,42,32,121,83,108,105,100,101,114,59,13,10,32,32,32,32,83,108,105,100,101,114,42,32,111,112,97,99,105,116,121,83, - 108,105,100,101,114,59,13,10,13,10,32,32,32,32,118,111,105,100,32,103,101,110,101,114,97,116,101,82,97,110,100,111,109,83,104,97,112,101,40,41, - 13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,115,104,97,112,101,46,115,116,97,114,116,78,101,119,83,117,98,80,97,116,104,32,40, - 114,97,110,100,111,109,78,117,109,98,101,114,40,41,44,32,114,97,110,100,111,109,78,117,109,98,101,114,40,41,41,59,13,10,13,10,32,32,32,32, - 32,32,32,32,102,111,114,32,40,105,110,116,32,105,32,61,32,48,59,32,105,32,60,32,55,59,32,43,43,105,41,13,10,32,32,32,32,32,32,32, - 32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,115,104,97,112,101,46,108,105,110,101,84,111,32,40,114,97,110,100,111,109,78,117,109,98, - 101,114,40,41,44,32,114,97,110,100,111,109,78,117,109,98,101,114,40,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,115,104, - 97,112,101,46,113,117,97,100,114,97,116,105,99,84,111,32,40,114,97,110,100,111,109,78,117,109,98,101,114,40,41,44,32,114,97,110,100,111,109,78, - 117,109,98,101,114,40,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,114,97,110,100,111,109,78,117,109,98,101,114,40,41,44,32,114,97,110,100,111,109,78,117,109,98,101,114,40,41,41,59,13,10,32,32,32,32,32, - 32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,115,104,97,112,101,46,99,108,111,115,101,83,117,98,80,97,116,104,40,41,59,13,10,32, - 32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,103,101,110,101,114,97,116,101,73,109,97,103,101,40,41,13,10,32,32,32,32,123,13, - 10,32,32,32,32,32,32,32,32,105,109,97,103,101,32,61,32,73,109,97,103,101,70,105,108,101,70,111,114,109,97,116,58,58,108,111,97,100,70,114, - 111,109,32,40,66,105,110,97,114,121,68,97,116,97,58,58,106,117,99,101,95,112,110,103,44,32,66,105,110,97,114,121,68,97,116,97,58,58,106,117, - 99,101,95,112,110,103,83,105,122,101,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,103,101,110,101,114,97,116,101, - 68,114,97,119,97,98,108,101,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,99,114,101,97,116,101,32,97,32,99, - 111,109,112,111,115,105,116,101,32,100,114,97,119,97,98,108,101,32,111,98,106,101,99,116,46,46,13,10,32,32,32,32,32,32,32,32,68,114,97,119, - 97,98,108,101,67,111,109,112,111,115,105,116,101,42,32,100,99,32,61,32,110,101,119,32,68,114,97,119,97,98,108,101,67,111,109,112,111,115,105,116, - 101,40,41,59,13,10,32,32,32,32,32,32,32,32,100,114,97,119,97,98,108,101,32,61,32,100,99,59,13,10,13,10,32,32,32,32,32,32,32,32, - 47,47,32,46,46,97,100,100,32,97,32,112,97,116,104,115,32,100,114,97,119,97,98,108,101,32,116,111,32,105,116,46,46,46,13,10,32,32,32,32, - 32,32,32,32,68,114,97,119,97,98,108,101,80,97,116,104,32,100,112,59,13,10,32,32,32,32,32,32,32,32,100,112,46,115,101,116,80,97,116,104, - 32,40,115,104,97,112,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,100,112,46,115,101,116,79,117,116,108,105,110,101,32,40,52,46,48,102, - 44,32,67,111,108,111,117,114,115,58,58,98,108,117,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,71,114,97,100,105,101,110,116,66,114,117, - 115,104,32,103,98,32,40,67,111,108,111,117,114,71,114,97,100,105,101,110,116,32,40,67,111,108,111,117,114,115,58,58,114,101,100,46,119,105,116,104, - 65,108,112,104,97,32,40,48,46,52,102,41,44,32,45,49,48,48,46,48,102,44,32,45,49,48,48,46,48,102,44,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,67,111,108,111,117, - 114,115,58,58,103,114,101,101,110,46,119,105,116,104,65,108,112,104,97,32,40,48,46,54,102,41,44,32,49,48,48,46,48,102,44,32,49,48,48,46, - 48,102,44,32,102,97,108,115,101,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,100,112,46,115,101,116,70,105,108,108,66,114,117,115,104,32, - 40,103,98,41,59,13,10,13,10,32,32,32,32,32,32,32,32,100,99,45,62,105,110,115,101,114,116,68,114,97,119,97,98,108,101,32,40,100,112,41, - 59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,46,46,97,100,100,32,97,110,32,105,109,97,103,101,32,100,114,97,119,97,98,108,101,46, - 46,13,10,32,32,32,32,32,32,32,32,68,114,97,119,97,98,108,101,73,109,97,103,101,32,100,105,59,13,10,32,32,32,32,32,32,32,32,100,105, - 46,115,101,116,73,109,97,103,101,32,40,105,109,97,103,101,44,32,102,97,108,115,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,100,99,45, - 62,105,110,115,101,114,116,68,114,97,119,97,98,108,101,32,40,100,105,44,32,65,102,102,105,110,101,84,114,97,110,115,102,111,114,109,58,58,115,99, - 97,108,101,32,40,48,46,51,102,44,32,48,46,56,102,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,46,46,97,110,100,32,97, - 32,116,101,120,116,32,111,98,106,101,99,116,13,10,32,32,32,32,32,32,32,32,68,114,97,119,97,98,108,101,84,101,120,116,32,100,116,59,13,10, - 32,32,32,32,32,32,32,32,100,116,46,115,101,116,84,101,120,116,32,40,84,40,34,74,85,67,69,32,68,114,97,119,97,98,108,101,115,34,41,44, - 32,70,111,110,116,32,40,51,48,46,48,102,44,32,70,111,110,116,58,58,98,111,108,100,41,41,59,13,10,32,32,32,32,32,32,32,32,100,116,46, - 115,101,116,67,111,108,111,117,114,32,40,67,111,108,111,117,114,115,58,58,103,114,101,101,110,41,59,13,10,13,10,32,32,32,32,32,32,32,32,100, - 99,45,62,105,110,115,101,114,116,68,114,97,119,97,98,108,101,32,40,100,116,44,32,65,102,102,105,110,101,84,114,97,110,115,102,111,114,109,58,58, - 116,114,97,110,115,108,97,116,105,111,110,32,40,45,56,48,46,48,102,44,32,45,50,48,46,48,102,41,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,115,99,97,108,101,100,32,40,50,46,48,102,44, - 32,48,46,56,102,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,46,114,111,116,97,116,101,100,32,40,45,49,46,51,102,41,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105, - 100,32,103,101,110,101,114,97,116,101,83,86,71,68,114,97,119,97,98,108,101,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32, - 115,118,103,68,114,97,119,97,98,108,101,32,61,32,48,59,13,10,13,10,32,32,32,32,32,32,32,32,77,101,109,111,114,121,73,110,112,117,116,83, - 116,114,101,97,109,32,105,99,111,110,115,70,105,108,101,83,116,114,101,97,109,32,40,66,105,110,97,114,121,68,97,116,97,58,58,105,99,111,110,115, - 95,122,105,112,44,32,66,105,110,97,114,121,68,97,116,97,58,58,105,99,111,110,115,95,122,105,112,83,105,122,101,44,32,102,97,108,115,101,41,59, - 13,10,32,32,32,32,32,32,32,32,90,105,112,70,105,108,101,32,105,99,111,110,115,32,40,38,105,99,111,110,115,70,105,108,101,83,116,114,101,97, - 109,44,32,102,97,108,115,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,76,111,97,100,32,97,32,114,97,110,100,111,109,32,83, - 86,71,32,102,105,108,101,32,102,114,111,109,32,111,117,114,32,101,109,98,101,100,100,101,100,32,105,99,111,110,115,46,122,105,112,32,102,105,108,101, - 46,13,10,32,32,32,32,32,32,32,32,73,110,112,117,116,83,116,114,101,97,109,42,32,115,118,103,70,105,108,101,83,116,114,101,97,109,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,61,32,105,99,111,110,115,46,99,114,101,97,116,101,83,116,114,101,97,109,70,111,114,69,110,116,114,121,32, - 40,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,73,110,116,32,40,105,99,111,110, - 115,46,103,101,116,78,117,109,69,110,116,114,105,101,115,40,41,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,115,118,103,70, - 105,108,101,83,116,114,101,97,109,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 68,114,97,119,97,98,108,101,42,32,108,111,97,100,101,100,83,86,71,32,61,32,68,114,97,119,97,98,108,101,58,58,99,114,101,97,116,101,70,114, - 111,109,73,109,97,103,101,68,97,116,97,83,116,114,101,97,109,32,40,42,115,118,103,70,105,108,101,83,116,114,101,97,109,41,59,13,10,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,108,111,97,100,101,100,83,86,71,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,116,111,32,109,97,107,101,32,111,117,114,32,105,99, - 111,110,32,116,104,101,32,114,105,103,104,116,32,115,105,122,101,44,32,119,101,39,108,108,32,112,117,116,32,105,116,32,105,110,115,105,100,101,32,97, - 32,68,114,97,119,97,98,108,101,67,111,109,112,111,115,105,116,101,44,32,97,110,100,32,97,112,112,108,121,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,47,47,32,97,32,116,114,97,110,115,102,111,114,109,32,116,111,32,103,101,116,32,105,116,32,116,111,32,116,104,101,32,115, - 105,122,101,32,119,101,32,119,97,110,116,46,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,108,111,97,116,32,120,44, - 32,121,44,32,119,44,32,104,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,108,111,97,100,101,100,83,86,71,45,62,103,101, - 116,66,111,117,110,100,115,32,40,120,44,32,121,44,32,119,44,32,104,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99, - 111,110,115,116,32,102,108,111,97,116,32,115,99,97,108,101,70,97,99,116,111,114,32,61,32,51,48,48,46,48,102,32,47,32,106,109,97,120,32,40, - 119,44,32,104,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,115,118,103,68,114,97,119,97,98,108,101,32,61,32, - 110,101,119,32,68,114,97,119,97,98,108,101,67,111,109,112,111,115,105,116,101,40,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,115,118,103,68,114,97,119,97,98,108,101,45,62,105,110,115,101,114,116,68,114,97,119,97,98,108,101,32,40,108,111,97,100,101,100,83,86,71, - 44,32,65,102,102,105,110,101,84,114,97,110,115,102,111,114,109,58,58,115,99,97,108,101,32,40,115,99,97,108,101,70,97,99,116,111,114,44,32,115, - 99,97,108,101,70,97,99,116,111,114,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,100,101,108,101,116,101,32,115,118,103,70,105,108,101,83,116,114,101,97,109,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32, - 32,32,125,13,10,13,10,32,32,32,32,99,111,110,115,116,32,65,102,102,105,110,101,84,114,97,110,115,102,111,114,109,32,103,101,116,84,114,97,110, - 115,102,111,114,109,40,41,32,99,111,110,115,116,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,65,102,102, - 105,110,101,84,114,97,110,115,102,111,114,109,58,58,114,111,116,97,116,105,111,110,32,40,102,108,111,97,116,95,80,105,32,42,32,50,46,48,102,32, - 42,32,40,102,108,111,97,116,41,32,97,110,103,108,101,83,108,105,100,101,114,45,62,103,101,116,86,97,108,117,101,40,41,41,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,46,115,99,97,108,101,100,32,40,40,102,108,111,97,116,41,32,115,99,97,108,101,83,108,105,100,101,114, - 45,62,103,101,116,86,97,108,117,101,40,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 40,102,108,111,97,116,41,32,115,99,97,108,101,83,108,105,100,101,114,45,62,103,101,116,86,97,108,117,101,40,41,41,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,46,116,114,97,110,115,108,97,116,101,100,32,40,103,101,116,87,105,100,116,104,40,41,32,42,32,48,46,53,102, - 32,43,32,40,102,108,111,97,116,41,32,120,83,108,105,100,101,114,45,62,103,101,116,86,97,108,117,101,40,41,44,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,101,116,72,101,105,103,104,116,40,41,32,42,32,48,46,53,102, - 32,43,32,40,102,108,111,97,116,41,32,121,83,108,105,100,101,114,45,62,103,101,116,86,97,108,117,101,40,41,41,59,13,10,32,32,32,32,125,13, - 10,125,59,13,10,13,10,67,111,109,112,111,110,101,110,116,42,32,99,114,101,97,116,101,80,97,116,104,115,65,110,100,84,114,97,110,115,102,111,114, - 109,115,68,101,109,111,40,41,13,10,123,13,10,32,32,32,32,114,101,116,117,114,110,32,110,101,119,32,80,97,116,104,115,65,110,100,84,114,97,110, - 115,102,111,114,109,115,68,101,109,111,40,41,59,13,10,125,13,10,0,0}; -const char* BinaryData::pathsandtransformsdemo_cpp = (const char*) temp7; - -static const unsigned char temp8[] = {47,42,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,13,10,13,10,32,32,32,84,104,105,115,32,102,105,108,101,32,105,115,32,112,97,114,116,32,111,102,32,116,104,101,32,74,85,67,69, - 32,108,105,98,114,97,114,121,32,45,32,34,74,117,108,101,115,39,32,85,116,105,108,105,116,121,32,67,108,97,115,115,32,69,120,116,101,110,115,105, - 111,110,115,34,13,10,32,32,32,67,111,112,121,114,105,103,104,116,32,50,48,48,52,45,57,32,98,121,32,82,97,119,32,77,97,116,101,114,105,97, - 108,32,83,111,102,116,119,97,114,101,32,76,116,100,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,74,85,67,69,32,99,97,110,32,98,101,32,114,101, - 100,105,115,116,114,105,98,117,116,101,100,32,97,110,100,47,111,114,32,109,111,100,105,102,105,101,100,32,117,110,100,101,114,32,116,104,101,32,116,101, - 114,109,115,32,111,102,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,13,10,32,32,32,80,117,98,108,105,99,32,76,105,99,101,110,115, - 101,32,40,86,101,114,115,105,111,110,32,50,41,44,32,97,115,32,112,117,98,108,105,115,104,101,100,32,98,121,32,116,104,101,32,70,114,101,101,32, - 83,111,102,116,119,97,114,101,32,70,111,117,110,100,97,116,105,111,110,46,13,10,32,32,32,65,32,99,111,112,121,32,111,102,32,116,104,101,32,108, - 105,99,101,110,115,101,32,105,115,32,105,110,99,108,117,100,101,100,32,105,110,32,116,104,101,32,74,85,67,69,32,100,105,115,116,114,105,98,117,116, - 105,111,110,44,32,111,114,32,99,97,110,32,98,101,32,102,111,117,110,100,13,10,32,32,32,111,110,108,105,110,101,32,97,116,32,119,119,119,46,103, - 110,117,46,111,114,103,47,108,105,99,101,110,115,101,115,46,13,10,13,10,32,32,32,74,85,67,69,32,105,115,32,100,105,115,116,114,105,98,117,116, - 101,100,32,105,110,32,116,104,101,32,104,111,112,101,32,116,104,97,116,32,105,116,32,119,105,108,108,32,98,101,32,117,115,101,102,117,108,44,32,98, - 117,116,32,87,73,84,72,79,85,84,32,65,78,89,13,10,32,32,32,87,65,82,82,65,78,84,89,59,32,119,105,116,104,111,117,116,32,101,118,101, - 110,32,116,104,101,32,105,109,112,108,105,101,100,32,119,97,114,114,97,110,116,121,32,111,102,32,77,69,82,67,72,65,78,84,65,66,73,76,73,84, - 89,32,111,114,32,70,73,84,78,69,83,83,32,70,79,82,13,10,32,32,32,65,32,80,65,82,84,73,67,85,76,65,82,32,80,85,82,80,79,83, - 69,46,32,32,83,101,101,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,32,80,117,98,108,105,99,32,76,105,99,101,110,115,101,32,102, - 111,114,32,109,111,114,101,32,100,101,116,97,105,108,115,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,84,111,32,114,101,108,101,97,115,101,32,97,32, - 99,108,111,115,101,100,45,115,111,117,114,99,101,32,112,114,111,100,117,99,116,32,119,104,105,99,104,32,117,115,101,115,32,74,85,67,69,44,32,99, - 111,109,109,101,114,99,105,97,108,32,108,105,99,101,110,115,101,115,32,97,114,101,13,10,32,32,32,97,118,97,105,108,97,98,108,101,58,32,118,105, - 115,105,116,32,119,119,119,46,114,97,119,109,97,116,101,114,105,97,108,115,111,102,116,119,97,114,101,46,99,111,109,47,106,117,99,101,32,102,111,114, - 32,109,111,114,101,32,105,110,102,111,114,109,97,116,105,111,110,46,13,10,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,42,47,13,10,13,10,35,105,110,99,108,117,100,101,32,34, - 46,46,47,106,117,99,101,100,101,109,111,95,104,101,97,100,101,114,115,46,104,34,13,10,13,10,35,105,102,32,74,85,67,69,95,81,85,73,67,75, - 84,73,77,69,32,38,38,32,33,32,74,85,67,69,95,76,73,78,85,88,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,47,47,32,115,111,32,116,104,97,116,32,119,101,32, - 99,97,110,32,101,97,115,105,108,121,32,104,97,118,101,32,116,119,111,32,81,84,32,119,105,110,100,111,119,115,32,101,97,99,104,32,119,105,116,104, - 32,97,32,102,105,108,101,32,98,114,111,119,115,101,114,44,32,119,114,97,112,32,116,104,105,115,32,117,112,32,97,115,32,97,32,99,108,97,115,115, - 46,46,13,10,99,108,97,115,115,32,81,117,105,99,107,84,105,109,101,87,105,110,100,111,119,87,105,116,104,70,105,108,101,66,114,111,119,115,101,114, - 32,32,58,32,112,117,98,108,105,99,32,67,111,109,112,111,110,101,110,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,70,105,108,101,110,97,109,101,67,111, - 109,112,111,110,101,110,116,76,105,115,116,101,110,101,114,13,10,123,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,81,117,105,99,107,84,105, - 109,101,87,105,110,100,111,119,87,105,116,104,70,105,108,101,66,114,111,119,115,101,114,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32, - 32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,113,116,67,111,109,112,32,61,32,110,101,119,32,81,117,105,99,107,84, - 105,109,101,77,111,118,105,101,67,111,109,112,111,110,101,110,116,40,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,97,110,100,32, - 97,32,102,105,108,101,45,99,104,111,111,115,101,114,46,46,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105, - 98,108,101,32,40,102,105,108,101,67,104,111,111,115,101,114,32,61,32,110,101,119,32,70,105,108,101,110,97,109,101,67,111,109,112,111,110,101,110,116, - 32,40,84,40,34,109,111,118,105,101,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,70, - 105,108,101,58,58,110,111,110,101,120,105,115,116,101,110,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,116,114,117,101,44,32,102,97,108,115,101,44,32,102,97,108,115,101,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,84,40,34,42,46,42,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,83,116,114,105,110,103,58,58,101,109,112,116,121,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,84,40,34,40,99,104,111,111,115,101,32,97,32,118,105,100,101,111,32,102,105,108,101,32,116,111,32,112,108,97,121,41,34,41,41,41,59, - 13,10,32,32,32,32,32,32,32,32,102,105,108,101,67,104,111,111,115,101,114,45,62,97,100,100,76,105,115,116,101,110,101,114,32,40,116,104,105,115, - 41,59,13,10,32,32,32,32,32,32,32,32,102,105,108,101,67,104,111,111,115,101,114,45,62,115,101,116,66,114,111,119,115,101,66,117,116,116,111,110, - 84,101,120,116,32,40,84,40,34,98,114,111,119,115,101,34,41,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,81,117,105,99,107, - 84,105,109,101,87,105,110,100,111,119,87,105,116,104,70,105,108,101,66,114,111,119,115,101,114,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32, - 32,32,32,32,100,101,108,101,116,101,65,108,108,67,104,105,108,100,114,101,110,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118, - 111,105,100,32,114,101,115,105,122,101,100,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,113,116,67,111,109,112,45,62,115,101, - 116,66,111,117,110,100,115,32,40,48,44,32,48,44,32,103,101,116,87,105,100,116,104,40,41,44,32,103,101,116,72,101,105,103,104,116,40,41,32,45, - 32,51,48,41,59,13,10,32,32,32,32,32,32,32,32,102,105,108,101,67,104,111,111,115,101,114,45,62,115,101,116,66,111,117,110,100,115,32,40,48, - 44,32,103,101,116,72,101,105,103,104,116,40,41,32,45,32,50,52,44,32,103,101,116,87,105,100,116,104,40,41,44,32,50,52,41,59,13,10,32,32, - 32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,102,105,108,101,110,97,109,101,67,111,109,112,111,110,101,110,116,67,104,97,110,103,101,100, - 32,40,70,105,108,101,110,97,109,101,67,111,109,112,111,110,101,110,116,42,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47, - 32,116,104,105,115,32,105,115,32,99,97,108,108,101,100,32,119,104,101,110,32,116,104,101,32,117,115,101,114,32,99,104,97,110,103,101,115,32,116,104, - 101,32,102,105,108,101,110,97,109,101,32,105,110,32,116,104,101,32,102,105,108,101,32,99,104,111,111,115,101,114,32,98,111,120,13,10,32,32,32,32, - 32,32,32,32,105,102,32,40,113,116,67,111,109,112,45,62,108,111,97,100,77,111,118,105,101,32,40,102,105,108,101,67,104,111,111,115,101,114,45,62, - 103,101,116,67,117,114,114,101,110,116,70,105,108,101,40,41,44,32,116,114,117,101,41,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,47,47,32,108,111,97,100,101,100,32,116,104,101,32,102,105,108,101,32,111,107,44,32,115,111,32,108,101,116,39,115, - 32,115,116,97,114,116,32,105,116,32,112,108,97,121,105,110,103,46,46,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,113,116,67,111,109, - 112,45,62,112,108,97,121,40,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32, - 32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,65,108,101,114,116,87,105,110,100,111,119,58,58,115,104,111,119,77,101,115, - 115,97,103,101,66,111,120,32,40,65,108,101,114,116,87,105,110,100,111,119,58,58,87,97,114,110,105,110,103,73,99,111,110,44,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34, - 67,111,117,108,100,110,39,116,32,108,111,97,100,32,116,104,101,32,102,105,108,101,33,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,83,111,114,114,121,44,32,81, - 117,105,99,107,84,105,109,101,32,100,105,100,110,39,116,32,109,97,110,97,103,101,32,116,111,32,108,111,97,100,32,116,104,97,116,32,102,105,108,101, - 33,34,41,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,112,114,105,118,97,116,101,58,13,10,32,32,32, - 32,81,117,105,99,107,84,105,109,101,77,111,118,105,101,67,111,109,112,111,110,101,110,116,42,32,113,116,67,111,109,112,59,13,10,32,32,32,32,70, - 105,108,101,110,97,109,101,67,111,109,112,111,110,101,110,116,42,32,102,105,108,101,67,104,111,111,115,101,114,59,13,10,125,59,13,10,13,10,13,10, - 47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 13,10,99,108,97,115,115,32,81,117,105,99,107,84,105,109,101,68,101,109,111,32,32,58,32,112,117,98,108,105,99,32,67,111,109,112,111,110,101,110, - 116,13,10,123,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,81,117,105,99,107,84,105,109,101,68,101,109,111,40,41, - 13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,115,101,116,78,97,109,101,32,40,84,40,34,81,117,105,99,107,84,105,109,101,34,41, - 41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,97,100,100,32,97,32,109,111,118,105,101,32,99,111,109,112,111,110,101,110,116,46,46, - 13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,113,116,67,111,109,112,49,32,61,32,110, - 101,119,32,81,117,105,99,107,84,105,109,101,87,105,110,100,111,119,87,105,116,104,70,105,108,101,66,114,111,119,115,101,114,40,41,41,59,13,10,32, - 32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,113,116,67,111,109,112,50,32,61,32,110,101,119,32, - 81,117,105,99,107,84,105,109,101,87,105,110,100,111,119,87,105,116,104,70,105,108,101,66,114,111,119,115,101,114,40,41,41,59,13,10,32,32,32,32, - 125,13,10,13,10,32,32,32,32,126,81,117,105,99,107,84,105,109,101,68,101,109,111,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32, - 32,32,100,101,108,101,116,101,65,108,108,67,104,105,108,100,114,101,110,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105, - 100,32,114,101,115,105,122,101,100,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,113,116,67,111,109,112,49,45,62,115,101,116, - 66,111,117,110,100,115,82,101,108,97,116,105,118,101,32,40,48,46,48,53,102,44,32,48,46,48,53,102,44,32,48,46,52,50,53,102,44,32,48,46, - 57,102,41,59,13,10,32,32,32,32,32,32,32,32,113,116,67,111,109,112,50,45,62,115,101,116,66,111,117,110,100,115,82,101,108,97,116,105,118,101, - 32,40,48,46,53,50,53,102,44,32,48,46,48,53,102,44,32,48,46,52,50,53,102,44,32,48,46,57,102,41,59,13,10,32,32,32,32,125,13,10, - 13,10,112,114,105,118,97,116,101,58,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,81,117,105,99,107,84,105,109,101,87,105,110,100,111,119,87,105,116, - 104,70,105,108,101,66,114,111,119,115,101,114,42,32,113,116,67,111,109,112,49,59,13,10,32,32,32,32,81,117,105,99,107,84,105,109,101,87,105,110, - 100,111,119,87,105,116,104,70,105,108,101,66,114,111,119,115,101,114,42,32,113,116,67,111,109,112,50,59,13,10,125,59,13,10,13,10,13,10,47,47, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10, - 67,111,109,112,111,110,101,110,116,42,32,99,114,101,97,116,101,81,117,105,99,107,84,105,109,101,68,101,109,111,40,41,13,10,123,13,10,32,32,32, - 32,114,101,116,117,114,110,32,110,101,119,32,81,117,105,99,107,84,105,109,101,68,101,109,111,40,41,59,13,10,125,13,10,13,10,35,101,110,100,105, - 102,13,10,0,0}; -const char* BinaryData::quicktimedemo_cpp = (const char*) temp8; - -static const unsigned char temp9[] = {13,10,70,89,73,46,46,13,10,13,10,84,111,32,101,109,98,101,100,32,116,104,101,32,102,105,108,101,115,32,97,110,100,32,116,104,105,110,103,115, +static const unsigned char temp1[] = {13,10,70,89,73,46,46,13,10,13,10,84,111,32,101,109,98,101,100,32,116,104,101,32,102,105,108,101,115,32,97,110,100,32,116,104,105,110,103,115, 32,116,104,97,116,32,116,104,101,32,100,101,109,111,32,110,101,101,100,115,32,105,110,116,111,32,105,116,115,32,101,120,101,99,117,116,97,98,108,101, 44,32,13,10,73,39,118,101,32,117,115,101,100,32,109,121,32,66,105,110,97,114,121,66,117,105,108,100,101,114,32,117,116,105,108,105,116,121,32,45, 32,116,104,101,32,102,105,108,101,115,32,105,110,32,116,104,105,115,32,100,105,114,101,99,116,111,114,121,32,97,114,101,32,116,104,101,13,10,111,110, 101,115,32,116,104,97,116,32,103,101,116,32,101,110,99,111,100,101,100,32,105,110,116,111,32,66,105,110,97,114,121,68,97,116,97,46,99,112,112,32, 97,110,100,32,66,105,110,97,114,121,68,97,116,97,46,104,44,32,119,104,105,99,104,32,103,101,116,32,98,117,105,108,116,32,13,10,105,110,116,111, 32,116,104,101,32,97,112,112,108,105,99,97,116,105,111,110,46,13,10,0,0}; -const char* BinaryData::readme__what_this_directory_is_for_txt = (const char*) temp9; +const char* BinaryData::readme__what_this_directory_is_for_txt = (const char*) temp1; -static const unsigned char temp10[] = {47,42,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,13,10,13,10,32,32,32,84,104,105,115,32,102,105,108,101,32,105,115,32,112,97,114,116,32,111,102,32,116,104,101,32,74,85,67,69, - 32,108,105,98,114,97,114,121,32,45,32,34,74,117,108,101,115,39,32,85,116,105,108,105,116,121,32,67,108,97,115,115,32,69,120,116,101,110,115,105, - 111,110,115,34,13,10,32,32,32,67,111,112,121,114,105,103,104,116,32,50,48,48,52,45,57,32,98,121,32,82,97,119,32,77,97,116,101,114,105,97, - 108,32,83,111,102,116,119,97,114,101,32,76,116,100,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,74,85,67,69,32,99,97,110,32,98,101,32,114,101, - 100,105,115,116,114,105,98,117,116,101,100,32,97,110,100,47,111,114,32,109,111,100,105,102,105,101,100,32,117,110,100,101,114,32,116,104,101,32,116,101, - 114,109,115,32,111,102,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,13,10,32,32,32,80,117,98,108,105,99,32,76,105,99,101,110,115, - 101,32,40,86,101,114,115,105,111,110,32,50,41,44,32,97,115,32,112,117,98,108,105,115,104,101,100,32,98,121,32,116,104,101,32,70,114,101,101,32, - 83,111,102,116,119,97,114,101,32,70,111,117,110,100,97,116,105,111,110,46,13,10,32,32,32,65,32,99,111,112,121,32,111,102,32,116,104,101,32,108, - 105,99,101,110,115,101,32,105,115,32,105,110,99,108,117,100,101,100,32,105,110,32,116,104,101,32,74,85,67,69,32,100,105,115,116,114,105,98,117,116, - 105,111,110,44,32,111,114,32,99,97,110,32,98,101,32,102,111,117,110,100,13,10,32,32,32,111,110,108,105,110,101,32,97,116,32,119,119,119,46,103, - 110,117,46,111,114,103,47,108,105,99,101,110,115,101,115,46,13,10,13,10,32,32,32,74,85,67,69,32,105,115,32,100,105,115,116,114,105,98,117,116, - 101,100,32,105,110,32,116,104,101,32,104,111,112,101,32,116,104,97,116,32,105,116,32,119,105,108,108,32,98,101,32,117,115,101,102,117,108,44,32,98, - 117,116,32,87,73,84,72,79,85,84,32,65,78,89,13,10,32,32,32,87,65,82,82,65,78,84,89,59,32,119,105,116,104,111,117,116,32,101,118,101, - 110,32,116,104,101,32,105,109,112,108,105,101,100,32,119,97,114,114,97,110,116,121,32,111,102,32,77,69,82,67,72,65,78,84,65,66,73,76,73,84, - 89,32,111,114,32,70,73,84,78,69,83,83,32,70,79,82,13,10,32,32,32,65,32,80,65,82,84,73,67,85,76,65,82,32,80,85,82,80,79,83, - 69,46,32,32,83,101,101,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,32,80,117,98,108,105,99,32,76,105,99,101,110,115,101,32,102, - 111,114,32,109,111,114,101,32,100,101,116,97,105,108,115,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,84,111,32,114,101,108,101,97,115,101,32,97,32, - 99,108,111,115,101,100,45,115,111,117,114,99,101,32,112,114,111,100,117,99,116,32,119,104,105,99,104,32,117,115,101,115,32,74,85,67,69,44,32,99, - 111,109,109,101,114,99,105,97,108,32,108,105,99,101,110,115,101,115,32,97,114,101,13,10,32,32,32,97,118,97,105,108,97,98,108,101,58,32,118,105, - 115,105,116,32,119,119,119,46,114,97,119,109,97,116,101,114,105,97,108,115,111,102,116,119,97,114,101,46,99,111,109,47,106,117,99,101,32,102,111,114, - 32,109,111,114,101,32,105,110,102,111,114,109,97,116,105,111,110,46,13,10,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,42,47,13,10,13,10,35,105,110,99,108,117,100,101,32,34, - 46,46,47,106,117,99,101,100,101,109,111,95,104,101,97,100,101,114,115,46,104,34,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,47,42,42,13,10,32,32,32,32,84, - 104,105,115,32,99,108,97,115,115,32,115,104,111,119,115,32,104,111,119,32,116,111,32,105,109,112,108,101,109,101,110,116,32,97,32,84,97,98,108,101, - 76,105,115,116,66,111,120,77,111,100,101,108,32,116,111,32,115,104,111,119,32,105,110,32,97,32,84,97,98,108,101,76,105,115,116,66,111,120,46,13, - 10,42,47,13,10,99,108,97,115,115,32,84,97,98,108,101,68,101,109,111,67,111,109,112,111,110,101,110,116,32,32,32,32,58,32,112,117,98,108,105, - 99,32,67,111,109,112,111,110,101,110,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,112,117,98,108,105,99,32,84,97,98,108,101,76,105,115,116,66,111,120,77,111,100,101,108,13,10,123,13,10,112,117,98,108,105,99,58, - 13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,13,10,32,32,32,32,84,97,98,108,101,68,101,109,111,67,111,109,112,111,110,101,110,116,40,41,13,10,32,32,32,32,32,32, - 32,32,58,32,102,111,110,116,32,40,49,52,46,48,102,41,44,13,10,32,32,32,32,32,32,32,32,32,32,100,101,109,111,68,97,116,97,32,40,48, - 41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,76,111,97,100,32,115,111,109,101,32,100,97,116,97,32,102,114,111,109, - 32,97,110,32,101,109,98,101,100,100,101,100,32,88,77,76,32,102,105,108,101,46,46,13,10,32,32,32,32,32,32,32,32,108,111,97,100,68,97,116, - 97,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,67,114,101,97,116,101,32,111,117,114,32,116,97,98,108,101,32,99,111,109,112, - 111,110,101,110,116,32,97,110,100,32,97,100,100,32,105,116,32,116,111,32,116,104,105,115,32,99,111,109,112,111,110,101,110,116,46,46,13,10,32,32, - 32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,116,97,98,108,101,32,61,32,110,101,119,32,84,97,98, - 108,101,76,105,115,116,66,111,120,32,40,84,40,34,100,101,109,111,32,116,97,98,108,101,34,41,44,32,116,104,105,115,41,41,59,13,10,13,10,32, - 32,32,32,32,32,32,32,47,47,32,103,105,118,101,32,105,116,32,97,32,98,111,114,100,101,114,13,10,32,32,32,32,32,32,32,32,116,97,98,108, - 101,45,62,115,101,116,67,111,108,111,117,114,32,40,76,105,115,116,66,111,120,58,58,111,117,116,108,105,110,101,67,111,108,111,117,114,73,100,44,32, - 67,111,108,111,117,114,115,58,58,103,114,101,121,41,59,13,10,32,32,32,32,32,32,32,32,116,97,98,108,101,45,62,115,101,116,79,117,116,108,105, - 110,101,84,104,105,99,107,110,101,115,115,32,40,49,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,65,100,100,32,115,111,109,101,32, - 99,111,108,117,109,110,115,32,116,111,32,116,104,101,32,116,97,98,108,101,32,104,101,97,100,101,114,44,32,98,97,115,101,100,32,111,110,32,116,104, - 101,32,99,111,108,117,109,110,32,108,105,115,116,32,105,110,32,111,117,114,32,100,97,116,97,98,97,115,101,46,46,13,10,32,32,32,32,32,32,32, - 32,102,111,114,69,97,99,104,88,109,108,67,104,105,108,100,69,108,101,109,101,110,116,32,40,42,99,111,108,117,109,110,76,105,115,116,44,32,99,111, - 108,117,109,110,88,109,108,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,116,97,98,108,101,45,62, - 103,101,116,72,101,97,100,101,114,40,41,45,62,97,100,100,67,111,108,117,109,110,32,40,99,111,108,117,109,110,88,109,108,45,62,103,101,116,83,116, - 114,105,110,103,65,116,116,114,105,98,117,116,101,32,84,40,34,110,97,109,101,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,111,108,117,109,110,88,109,108,45,62, - 103,101,116,73,110,116,65,116,116,114,105,98,117,116,101,32,84,40,34,99,111,108,117,109,110,73,100,34,41,44,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,111,108,117,109, - 110,88,109,108,45,62,103,101,116,73,110,116,65,116,116,114,105,98,117,116,101,32,84,40,34,119,105,100,116,104,34,41,44,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,53,48, - 44,32,52,48,48,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,84,97,98,108,101,72,101,97,100,101,114,67,111,109,112,111,110,101,110,116,58,58,100,101,102,97,117,108,116, - 70,108,97,103,115,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,119,101,32,99,111,117,108, - 100,32,110,111,119,32,99,104,97,110,103,101,32,115,111,109,101,32,105,110,105,116,105,97,108,32,115,101,116,116,105,110,103,115,46,46,13,10,32,32, - 32,32,32,32,32,32,116,97,98,108,101,45,62,103,101,116,72,101,97,100,101,114,40,41,45,62,115,101,116,83,111,114,116,67,111,108,117,109,110,73, - 100,32,40,49,44,32,116,114,117,101,41,59,32,47,47,32,115,111,114,116,32,102,111,114,119,97,114,100,115,32,98,121,32,116,104,101,32,73,68,32, - 99,111,108,117,109,110,13,10,32,32,32,32,32,32,32,32,116,97,98,108,101,45,62,103,101,116,72,101,97,100,101,114,40,41,45,62,115,101,116,67, - 111,108,117,109,110,86,105,115,105,98,108,101,32,40,55,44,32,102,97,108,115,101,41,59,32,47,47,32,104,105,100,101,32,116,104,101,32,34,108,101, - 110,103,116,104,34,32,99,111,108,117,109,110,32,117,110,116,105,108,32,116,104,101,32,117,115,101,114,32,115,104,111,119,115,32,105,116,13,10,13,10, - 32,32,32,32,32,32,32,32,47,47,32,117,110,45,99,111,109,109,101,110,116,32,116,104,105,115,32,108,105,110,101,32,116,111,32,104,97,118,101,32, - 97,32,103,111,32,111,102,32,115,116,114,101,116,99,104,45,116,111,45,102,105,116,32,109,111,100,101,13,10,32,32,32,32,32,32,32,32,47,47,32, - 116,97,98,108,101,45,62,103,101,116,72,101,97,100,101,114,40,41,45,62,115,101,116,83,116,114,101,116,99,104,84,111,70,105,116,65,99,116,105,118, - 101,32,40,116,114,117,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,116,97,98,108,101,45,62,115,101,116,77,117,108,116,105,112,108,101,83, - 101,108,101,99,116,105,111,110,69,110,97,98,108,101,100,32,40,116,114,117,101,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,84, - 97,98,108,101,68,101,109,111,67,111,109,112,111,110,101,110,116,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,100,101,108,101, - 116,101,65,108,108,67,104,105,108,100,114,101,110,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,32,100,101,109,111,68, - 97,116,97,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,47,47,32,84,104,105,115,32,105,115,32,111,118,101,114, - 108,111,97,100,101,100,32,102,114,111,109,32,84,97,98,108,101,76,105,115,116,66,111,120,77,111,100,101,108,44,32,97,110,100,32,109,117,115,116,32, - 114,101,116,117,114,110,32,116,104,101,32,116,111,116,97,108,32,110,117,109,98,101,114,32,111,102,32,114,111,119,115,32,105,110,32,111,117,114,32,116, - 97,98,108,101,13,10,32,32,32,32,105,110,116,32,103,101,116,78,117,109,82,111,119,115,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32, - 32,32,32,114,101,116,117,114,110,32,110,117,109,82,111,119,115,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47,47,32,84,104,105,115, - 32,105,115,32,111,118,101,114,108,111,97,100,101,100,32,102,114,111,109,32,84,97,98,108,101,76,105,115,116,66,111,120,77,111,100,101,108,44,32,97, - 110,100,32,115,104,111,117,108,100,32,102,105,108,108,32,105,110,32,116,104,101,32,98,97,99,107,103,114,111,117,110,100,32,111,102,32,116,104,101,32, - 119,104,111,108,101,32,114,111,119,13,10,32,32,32,32,118,111,105,100,32,112,97,105,110,116,82,111,119,66,97,99,107,103,114,111,117,110,100,32,40, - 71,114,97,112,104,105,99,115,38,32,103,44,32,105,110,116,32,114,111,119,78,117,109,98,101,114,44,32,105,110,116,32,119,105,100,116,104,44,32,105, - 110,116,32,104,101,105,103,104,116,44,32,98,111,111,108,32,114,111,119,73,115,83,101,108,101,99,116,101,100,41,13,10,32,32,32,32,123,13,10,32, - 32,32,32,32,32,32,32,105,102,32,40,114,111,119,73,115,83,101,108,101,99,116,101,100,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103, - 46,102,105,108,108,65,108,108,32,40,67,111,108,111,117,114,115,58,58,108,105,103,104,116,98,108,117,101,41,59,13,10,32,32,32,32,125,13,10,13, - 10,32,32,32,32,47,47,32,84,104,105,115,32,105,115,32,111,118,101,114,108,111,97,100,101,100,32,102,114,111,109,32,84,97,98,108,101,76,105,115, - 116,66,111,120,77,111,100,101,108,44,32,97,110,100,32,109,117,115,116,32,112,97,105,110,116,32,97,110,121,32,99,101,108,108,115,32,116,104,97,116, - 32,97,114,101,110,39,116,32,117,115,105,110,103,32,99,117,115,116,111,109,13,10,32,32,32,32,47,47,32,99,111,109,112,111,110,101,110,116,115,46, - 13,10,32,32,32,32,118,111,105,100,32,112,97,105,110,116,67,101,108,108,32,40,71,114,97,112,104,105,99,115,38,32,103,44,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,110,116,32,114,111,119,78,117,109,98,101,114,44,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,105,110,116,32,99,111,108,117,109,110,73,100,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,105,110,116,32,119,105,100,116,104,44,32,105,110,116,32,104,101,105,103,104,116,44,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,98,111,111,108,32,114,111,119,73,115,83,101,108,101,99,116,101,100,41,13,10,32,32,32,32,123,13,10,32, - 32,32,32,32,32,32,32,103,46,115,101,116,67,111,108,111,117,114,32,40,67,111,108,111,117,114,115,58,58,98,108,97,99,107,41,59,13,10,32,32, - 32,32,32,32,32,32,103,46,115,101,116,70,111,110,116,32,40,102,111,110,116,41,59,13,10,13,10,32,32,32,32,32,32,32,32,99,111,110,115,116, - 32,88,109,108,69,108,101,109,101,110,116,42,32,114,111,119,69,108,101,109,101,110,116,32,61,32,100,97,116,97,76,105,115,116,45,62,103,101,116,67, - 104,105,108,100,69,108,101,109,101,110,116,32,40,114,111,119,78,117,109,98,101,114,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40, - 114,111,119,69,108,101,109,101,110,116,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,99,111,110,115,116,32,83,116,114,105,110,103,32,116,101,120,116,32,40,114,111,119,69,108,101,109,101,110,116,45,62,103,101,116,83,116,114,105,110, - 103,65,116,116,114,105,98,117,116,101,32,40,103,101,116,65,116,116,114,105,98,117,116,101,78,97,109,101,70,111,114,67,111,108,117,109,110,73,100,32, - 40,99,111,108,117,109,110,73,100,41,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,46,100,114,97,119,84,101,120,116,32, - 40,116,101,120,116,44,32,50,44,32,48,44,32,119,105,100,116,104,32,45,32,52,44,32,104,101,105,103,104,116,44,32,74,117,115,116,105,102,105,99, - 97,116,105,111,110,58,58,99,101,110,116,114,101,100,76,101,102,116,44,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,13, - 10,32,32,32,32,32,32,32,32,103,46,115,101,116,67,111,108,111,117,114,32,40,67,111,108,111,117,114,115,58,58,98,108,97,99,107,46,119,105,116, - 104,65,108,112,104,97,32,40,48,46,50,102,41,41,59,13,10,32,32,32,32,32,32,32,32,103,46,102,105,108,108,82,101,99,116,32,40,119,105,100, - 116,104,32,45,32,49,44,32,48,44,32,49,44,32,104,101,105,103,104,116,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47,47,32, - 84,104,105,115,32,105,115,32,111,118,101,114,108,111,97,100,101,100,32,102,114,111,109,32,84,97,98,108,101,76,105,115,116,66,111,120,77,111,100,101, - 108,44,32,97,110,100,32,116,101,108,108,115,32,117,115,32,116,104,97,116,32,116,104,101,32,117,115,101,114,32,104,97,115,32,99,108,105,99,107,101, - 100,32,97,32,116,97,98,108,101,32,104,101,97,100,101,114,13,10,32,32,32,32,47,47,32,116,111,32,99,104,97,110,103,101,32,116,104,101,32,115, - 111,114,116,32,111,114,100,101,114,46,13,10,32,32,32,32,118,111,105,100,32,115,111,114,116,79,114,100,101,114,67,104,97,110,103,101,100,32,40,105, - 110,116,32,110,101,119,83,111,114,116,67,111,108,117,109,110,73,100,44,32,99,111,110,115,116,32,98,111,111,108,32,105,115,70,111,114,119,97,114,100, - 115,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102,32,40,110,101,119,83,111,114,116,67,111,108,117,109,110,73,100,32,33, - 61,32,48,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,68,101,109,111,68,97,116,97,83,111,114, - 116,101,114,32,115,111,114,116,101,114,32,40,103,101,116,65,116,116,114,105,98,117,116,101,78,97,109,101,70,111,114,67,111,108,117,109,110,73,100,32, - 40,110,101,119,83,111,114,116,67,111,108,117,109,110,73,100,41,44,32,105,115,70,111,114,119,97,114,100,115,41,59,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,100,97,116,97,76,105,115,116,45,62,115,111,114,116,67,104,105,108,100,69,108,101,109,101,110,116,115,32,40,115,111,114,116,101,114, - 41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,116,97,98,108,101,45,62,117,112,100,97,116,101,67,111,110,116,101,110,116,40,41, - 59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47,47,32,84,104,105,115,32,105,115,32,111,118, - 101,114,108,111,97,100,101,100,32,102,114,111,109,32,84,97,98,108,101,76,105,115,116,66,111,120,77,111,100,101,108,44,32,97,110,100,32,109,117,115, - 116,32,117,112,100,97,116,101,32,97,110,121,32,99,117,115,116,111,109,32,99,111,109,112,111,110,101,110,116,115,32,116,104,97,116,32,119,101,39,114, - 101,32,117,115,105,110,103,13,10,32,32,32,32,67,111,109,112,111,110,101,110,116,42,32,114,101,102,114,101,115,104,67,111,109,112,111,110,101,110,116, - 70,111,114,67,101,108,108,32,40,105,110,116,32,114,111,119,78,117,109,98,101,114,44,32,105,110,116,32,99,111,108,117,109,110,73,100,44,32,98,111, - 111,108,32,105,115,82,111,119,83,101,108,101,99,116,101,100,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,67,111,109,112,111,110,101,110,116,42,32,101,120,105,115,116,105,110,103,67,111, - 109,112,111,110,101,110,116,84,111,85,112,100,97,116,101,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102,32,40,99,111,108, - 117,109,110,73,100,32,61,61,32,53,41,32,47,47,32,73,102,32,105,116,39,115,32,116,104,101,32,114,97,116,105,110,103,115,32,99,111,108,117,109, - 110,44,32,119,101,39,108,108,32,114,101,116,117,114,110,32,111,117,114,32,99,117,115,116,111,109,32,99,111,109,112,111,110,101,110,116,46,46,13,10, - 32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,82,97,116,105,110,103,67,111,108,117,109,110,67,117,115,116,111, - 109,67,111,109,112,111,110,101,110,116,42,32,114,97,116,105,110,103,115,66,111,120,32,61,32,40,82,97,116,105,110,103,67,111,108,117,109,110,67,117, - 115,116,111,109,67,111,109,112,111,110,101,110,116,42,41,32,101,120,105,115,116,105,110,103,67,111,109,112,111,110,101,110,116,84,111,85,112,100,97,116, - 101,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,73,102,32,97,110,32,101,120,105,115,116,105,110,103,32,99,111,109,112, - 111,110,101,110,116,32,105,115,32,98,101,105,110,103,32,112,97,115,115,101,100,45,105,110,32,102,111,114,32,117,112,100,97,116,105,110,103,44,32,119, - 101,39,108,108,32,114,101,45,117,115,101,32,105,116,44,32,98,117,116,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,105,102,32,110, - 111,116,44,32,119,101,39,108,108,32,104,97,118,101,32,116,111,32,99,114,101,97,116,101,32,111,110,101,46,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,105,102,32,40,114,97,116,105,110,103,115,66,111,120,32,61,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,114,97,116,105,110,103,115,66,111,120,32,61,32,110,101,119,32,82,97,116,105,110,103,67,111,108,117,109,110,67,117,115,116,111,109,67,111,109,112, - 111,110,101,110,116,32,40,42,116,104,105,115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,114,97,116,105,110,103,115,66,111,120, - 45,62,115,101,116,82,111,119,65,110,100,67,111,108,117,109,110,32,40,114,111,119,78,117,109,98,101,114,44,32,99,111,108,117,109,110,73,100,41,59, - 13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,114,97,116,105,110,103,115,66,111,120,59,13,10,32,32,32,32, - 32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,47,47,32,102,111,114,32,97,110,121,32,111,116,104,101,114,32,99,111,108,117,109,110,44,32,106,117,115,116,32,114,101,116,117,114,110, - 32,48,44,32,97,115,32,119,101,39,108,108,32,98,101,32,112,97,105,110,116,105,110,103,32,116,104,101,115,101,32,99,111,108,117,109,110,115,32,100, - 105,114,101,99,116,108,121,46,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,106,97,115,115,101,114,116,32,40,101,120,105,115,116,105,110, - 103,67,111,109,112,111,110,101,110,116,84,111,85,112,100,97,116,101,32,61,61,32,48,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,114, - 101,116,117,114,110,32,48,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47,47,32,84,104,105, - 115,32,105,115,32,111,118,101,114,108,111,97,100,101,100,32,102,114,111,109,32,84,97,98,108,101,76,105,115,116,66,111,120,77,111,100,101,108,44,32, - 97,110,100,32,115,104,111,117,108,100,32,99,104,111,111,115,101,32,116,104,101,32,98,101,115,116,32,119,105,100,116,104,32,102,111,114,32,116,104,101, - 32,115,112,101,99,105,102,105,101,100,13,10,32,32,32,32,47,47,32,99,111,108,117,109,110,46,13,10,32,32,32,32,105,110,116,32,103,101,116,67, - 111,108,117,109,110,65,117,116,111,83,105,122,101,87,105,100,116,104,32,40,105,110,116,32,99,111,108,117,109,110,73,100,41,13,10,32,32,32,32,123, - 13,10,32,32,32,32,32,32,32,32,105,102,32,40,99,111,108,117,109,110,73,100,32,61,61,32,53,41,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,114,101,116,117,114,110,32,49,48,48,59,32,47,47,32,40,116,104,105,115,32,105,115,32,116,104,101,32,114,97,116,105,110,103,115,32,99,111, - 108,117,109,110,44,32,99,111,110,116,97,105,110,105,110,103,32,97,32,99,117,115,116,111,109,32,99,111,109,112,111,110,101,110,116,41,13,10,13,10, - 32,32,32,32,32,32,32,32,105,110,116,32,119,105,100,101,115,116,32,61,32,51,50,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,102, - 105,110,100,32,116,104,101,32,119,105,100,101,115,116,32,98,105,116,32,111,102,32,116,101,120,116,32,105,110,32,116,104,105,115,32,99,111,108,117,109, - 110,46,46,13,10,32,32,32,32,32,32,32,32,102,111,114,32,40,105,110,116,32,105,32,61,32,103,101,116,78,117,109,82,111,119,115,40,41,59,32, - 45,45,105,32,62,61,32,48,59,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,110,115,116, - 32,88,109,108,69,108,101,109,101,110,116,42,32,114,111,119,69,108,101,109,101,110,116,32,61,32,100,97,116,97,76,105,115,116,45,62,103,101,116,67, - 104,105,108,100,69,108,101,109,101,110,116,32,40,105,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,114,111,119,69, - 108,101,109,101,110,116,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,99,111,110,115,116,32,83,116,114,105,110,103,32,116,101,120,116,32,40,114,111,119,69,108,101,109,101,110,116,45,62,103,101,116,83, - 116,114,105,110,103,65,116,116,114,105,98,117,116,101,32,40,103,101,116,65,116,116,114,105,98,117,116,101,78,97,109,101,70,111,114,67,111,108,117,109, - 110,73,100,32,40,99,111,108,117,109,110,73,100,41,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,119,105,100, - 101,115,116,32,61,32,106,109,97,120,32,40,119,105,100,101,115,116,44,32,102,111,110,116,46,103,101,116,83,116,114,105,110,103,87,105,100,116,104,32, - 40,116,101,120,116,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32, - 32,32,32,32,32,32,114,101,116,117,114,110,32,119,105,100,101,115,116,32,43,32,56,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47, - 47,32,65,32,99,111,117,112,108,101,32,111,102,32,113,117,105,99,107,32,109,101,116,104,111,100,115,32,116,111,32,115,101,116,32,97,110,100,32,103, - 101,116,32,116,104,101,32,34,114,97,116,105,110,103,34,32,118,97,108,117,101,32,119,104,101,110,32,116,104,101,32,117,115,101,114,13,10,32,32,32, - 32,47,47,32,99,104,97,110,103,101,115,32,116,104,101,32,99,111,109,98,111,32,98,111,120,13,10,32,32,32,32,105,110,116,32,103,101,116,82,97, - 116,105,110,103,32,40,99,111,110,115,116,32,105,110,116,32,114,111,119,78,117,109,98,101,114,44,32,99,111,110,115,116,32,105,110,116,32,99,111,108, - 117,109,110,73,100,41,32,99,111,110,115,116,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,100,97,116,97, - 76,105,115,116,45,62,103,101,116,67,104,105,108,100,69,108,101,109,101,110,116,32,40,114,111,119,78,117,109,98,101,114,41,45,62,103,101,116,73,110, - 116,65,116,116,114,105,98,117,116,101,32,40,84,40,34,82,97,116,105,110,103,34,41,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32, - 118,111,105,100,32,115,101,116,82,97,116,105,110,103,32,40,99,111,110,115,116,32,105,110,116,32,114,111,119,78,117,109,98,101,114,44,32,99,111,110, - 115,116,32,105,110,116,32,99,111,108,117,109,110,73,100,44,32,99,111,110,115,116,32,105,110,116,32,110,101,119,82,97,116,105,110,103,41,13,10,32, - 32,32,32,123,13,10,32,32,32,32,32,32,32,32,100,97,116,97,76,105,115,116,45,62,103,101,116,67,104,105,108,100,69,108,101,109,101,110,116,32, - 40,114,111,119,78,117,109,98,101,114,41,45,62,115,101,116,65,116,116,114,105,98,117,116,101,32,40,84,40,34,82,97,116,105,110,103,34,41,44,32, - 110,101,119,82,97,116,105,110,103,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,118,111,105,100,32,114,101,115, - 105,122,101,100,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,112,111,115,105,116,105,111,110,32,111,117,114,32,116, - 97,98,108,101,32,119,105,116,104,32,97,32,103,97,112,32,97,114,111,117,110,100,32,105,116,115,32,101,100,103,101,13,10,32,32,32,32,32,32,32, - 32,116,97,98,108,101,45,62,115,101,116,66,111,117,110,100,115,73,110,115,101,116,32,40,66,111,114,100,101,114,83,105,122,101,32,40,56,41,41,59, - 13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,106,117,99,101,95,85,115,101,68,101,98,117,103,103,105,110,103,78,101, - 119,79,112,101,114,97,116,111,114,13,10,13,10,112,114,105,118,97,116,101,58,13,10,32,32,32,32,84,97,98,108,101,76,105,115,116,66,111,120,42, - 32,116,97,98,108,101,59,32,32,32,32,47,47,32,116,104,101,32,116,97,98,108,101,32,99,111,109,112,111,110,101,110,116,32,105,116,115,101,108,102, - 13,10,32,32,32,32,70,111,110,116,32,102,111,110,116,59,13,10,13,10,32,32,32,32,88,109,108,69,108,101,109,101,110,116,42,32,100,101,109,111, - 68,97,116,97,59,32,32,32,47,47,32,84,104,105,115,32,105,115,32,116,104,101,32,88,77,76,32,100,111,99,117,109,101,110,116,32,108,111,97,100, - 101,100,32,102,114,111,109,32,116,104,101,32,101,109,98,101,100,100,101,100,32,102,105,108,101,32,34,100,101,109,111,32,116,97,98,108,101,32,100,97, - 116,97,46,120,109,108,34,13,10,32,32,32,32,88,109,108,69,108,101,109,101,110,116,42,32,99,111,108,117,109,110,76,105,115,116,59,32,47,47,32, - 65,32,112,111,105,110,116,101,114,32,116,111,32,116,104,101,32,115,117,98,45,110,111,100,101,32,111,102,32,100,101,109,111,68,97,116,97,32,116,104, - 97,116,32,99,111,110,116,97,105,110,115,32,116,104,101,32,108,105,115,116,32,111,102,32,99,111,108,117,109,110,115,13,10,32,32,32,32,88,109,108, - 69,108,101,109,101,110,116,42,32,100,97,116,97,76,105,115,116,59,32,32,32,47,47,32,65,32,112,111,105,110,116,101,114,32,116,111,32,116,104,101, - 32,115,117,98,45,110,111,100,101,32,111,102,32,100,101,109,111,68,97,116,97,32,116,104,97,116,32,99,111,110,116,97,105,110,115,32,116,104,101,32, - 108,105,115,116,32,111,102,32,100,97,116,97,32,114,111,119,115,13,10,32,32,32,32,105,110,116,32,110,117,109,82,111,119,115,59,32,32,32,32,32, - 32,32,32,32,32,32,32,47,47,32,84,104,101,32,110,117,109,98,101,114,32,111,102,32,114,111,119,115,32,111,102,32,100,97,116,97,32,119,101,39, - 118,101,32,103,111,116,13,10,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,47,47,32,84,104,105,115,32,105,115,32,97,32,99,117,115,116,111,109,32, - 99,111,109,112,111,110,101,110,116,32,99,111,110,116,97,105,110,105,110,103,32,97,32,99,111,109,98,111,32,98,111,120,44,32,119,104,105,99,104,32, - 119,101,39,114,101,32,103,111,105,110,103,32,116,111,32,112,117,116,32,105,110,115,105,100,101,13,10,32,32,32,32,47,47,32,111,117,114,32,116,97, - 98,108,101,39,115,32,34,114,97,116,105,110,103,34,32,99,111,108,117,109,110,46,13,10,32,32,32,32,99,108,97,115,115,32,82,97,116,105,110,103, - 67,111,108,117,109,110,67,117,115,116,111,109,67,111,109,112,111,110,101,110,116,32,32,32,32,58,32,112,117,98,108,105,99,32,67,111,109,112,111,110, - 101,110,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,67,111,109,98,111,66,111,120,76,105,115,116,101,110,101,114,13,10,32,32,32,32,123,13, - 10,32,32,32,32,112,117,98,108,105,99,58,13,10,32,32,32,32,32,32,32,32,82,97,116,105,110,103,67,111,108,117,109,110,67,117,115,116,111,109, - 67,111,109,112,111,110,101,110,116,32,40,84,97,98,108,101,68,101,109,111,67,111,109,112,111,110,101,110,116,38,32,111,119,110,101,114,95,41,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,58,32,111,119,110,101,114,32,40,111,119,110,101,114,95,41,13,10,32,32,32,32,32,32,32,32,123,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,106,117,115,116,32,112,117,116,32,97,32,99,111,109,98,111,32,98,111,120,32,105,110,115, - 105,100,101,32,116,104,105,115,32,99,111,109,112,111,110,101,110,116,13,10,32,32,32,32,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97, - 107,101,86,105,115,105,98,108,101,32,40,99,111,109,98,111,66,111,120,32,61,32,110,101,119,32,67,111,109,98,111,66,111,120,32,40,83,116,114,105, - 110,103,58,58,101,109,112,116,121,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,109,98,111,66,111,120,45,62,97,100,100,73, - 116,101,109,32,40,84,40,34,102,97,98,34,41,44,32,49,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,109,98,111,66,111,120, - 45,62,97,100,100,73,116,101,109,32,40,84,40,34,103,114,111,111,118,121,34,41,44,32,50,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,99,111,109,98,111,66,111,120,45,62,97,100,100,73,116,101,109,32,40,84,40,34,104,101,112,34,41,44,32,51,41,59,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,99,111,109,98,111,66,111,120,45,62,97,100,100,73,116,101,109,32,40,84,40,34,110,101,97,116,34,41,44,32,52,41,59, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,109,98,111,66,111,120,45,62,97,100,100,73,116,101,109,32,40,84,40,34,119,105,108,100, - 34,41,44,32,53,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,109,98,111,66,111,120,45,62,97,100,100,73,116,101,109,32,40, - 84,40,34,115,119,105,110,103,105,110,34,41,44,32,54,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,109,98,111,66,111,120,45, - 62,97,100,100,73,116,101,109,32,40,84,40,34,109,97,100,32,102,111,114,32,105,116,34,41,44,32,55,41,59,13,10,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,47,47,32,119,104,101,110,32,116,104,101,32,99,111,109,98,111,32,105,115,32,99,104,97,110,103,101,100,44,32,119,101,39,108, - 108,32,103,101,116,32,97,32,99,97,108,108,98,97,99,107,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,109,98,111,66,111,120,45, - 62,97,100,100,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,109,98,111,66, - 111,120,45,62,115,101,116,87,97,110,116,115,75,101,121,98,111,97,114,100,70,111,99,117,115,32,40,102,97,108,115,101,41,59,13,10,32,32,32,32, - 32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,126,82,97,116,105,110,103,67,111,108,117,109,110,67,117,115,116,111,109,67,111,109,112, - 111,110,101,110,116,40,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65,108, - 108,67,104,105,108,100,114,101,110,40,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,118,111,105,100,32, - 114,101,115,105,122,101,100,40,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,109,98,111,66, - 111,120,45,62,115,101,116,66,111,117,110,100,115,73,110,115,101,116,32,40,66,111,114,100,101,114,83,105,122,101,32,40,50,41,41,59,13,10,32,32, - 32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,79,117,114,32,100,101,109,111,32,99,111,100,101,32,119,105,108,108, - 32,99,97,108,108,32,116,104,105,115,32,119,104,101,110,32,119,101,32,109,97,121,32,110,101,101,100,32,116,111,32,117,112,100,97,116,101,32,111,117, - 114,32,99,111,110,116,101,110,116,115,13,10,32,32,32,32,32,32,32,32,118,111,105,100,32,115,101,116,82,111,119,65,110,100,67,111,108,117,109,110, - 32,40,99,111,110,115,116,32,105,110,116,32,110,101,119,82,111,119,44,32,99,111,110,115,116,32,105,110,116,32,110,101,119,67,111,108,117,109,110,41, - 13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,114,111,119,32,61,32,110,101,119,82,111,119,59,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,99,111,108,117,109,110,73,100,32,61,32,110,101,119,67,111,108,117,109,110,59,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,99,111,109,98,111,66,111,120,45,62,115,101,116,83,101,108,101,99,116,101,100,73,100,32,40,111,119,110,101,114,46,103,101, - 116,82,97,116,105,110,103,32,40,114,111,119,44,32,99,111,108,117,109,110,73,100,41,44,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32, - 32,125,13,10,13,10,32,32,32,32,32,32,32,32,118,111,105,100,32,99,111,109,98,111,66,111,120,67,104,97,110,103,101,100,32,40,67,111,109,98, - 111,66,111,120,42,32,99,111,109,98,111,66,111,120,84,104,97,116,72,97,115,67,104,97,110,103,101,100,41,13,10,32,32,32,32,32,32,32,32,123, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,111,119,110,101,114,46,115,101,116,82,97,116,105,110,103,32,40,114,111,119,44,32,99,111,108,117, - 109,110,73,100,44,32,99,111,109,98,111,66,111,120,45,62,103,101,116,83,101,108,101,99,116,101,100,73,100,40,41,41,59,13,10,32,32,32,32,32, - 32,32,32,125,13,10,13,10,32,32,32,32,112,114,105,118,97,116,101,58,13,10,32,32,32,32,32,32,32,32,84,97,98,108,101,68,101,109,111,67, - 111,109,112,111,110,101,110,116,38,32,111,119,110,101,114,59,13,10,32,32,32,32,32,32,32,32,67,111,109,98,111,66,111,120,42,32,99,111,109,98, - 111,66,111,120,59,13,10,32,32,32,32,32,32,32,32,105,110,116,32,114,111,119,44,32,99,111,108,117,109,110,73,100,59,13,10,32,32,32,32,125, - 59,13,10,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,47,47,32,65,32,99,111,109,112,97,114,97,116,111,114,32,117,115,101,100,32,116,111,32,115, - 111,114,116,32,111,117,114,32,100,97,116,97,32,119,104,101,110,32,116,104,101,32,117,115,101,114,32,99,108,105,99,107,115,32,97,32,99,111,108,117, - 109,110,32,104,101,97,100,101,114,13,10,32,32,32,32,99,108,97,115,115,32,68,101,109,111,68,97,116,97,83,111,114,116,101,114,13,10,32,32,32, - 32,123,13,10,32,32,32,32,112,117,98,108,105,99,58,13,10,32,32,32,32,32,32,32,32,68,101,109,111,68,97,116,97,83,111,114,116,101,114,32, - 40,99,111,110,115,116,32,83,116,114,105,110,103,32,97,116,116,114,105,98,117,116,101,84,111,83,111,114,116,95,44,32,98,111,111,108,32,102,111,114, - 119,97,114,100,115,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,58,32,97,116,116,114,105,98,117,116,101,84,111,83,111,114,116,32,40,97, - 116,116,114,105,98,117,116,101,84,111,83,111,114,116,95,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,100,105,114,101,99,116,105, - 111,110,32,40,102,111,114,119,97,114,100,115,32,63,32,49,32,58,32,45,49,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32, - 32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,105,110,116,32,99,111,109,112,97,114,101,69,108,101,109,101,110,116,115,32,40,88,109,108, - 69,108,101,109,101,110,116,42,32,102,105,114,115,116,44,32,88,109,108,69,108,101,109,101,110,116,42,32,115,101,99,111,110,100,41,32,99,111,110,115, - 116,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,110,116,32,114,101,115,117,108,116,32,61,32,102, - 105,114,115,116,45,62,103,101,116,83,116,114,105,110,103,65,116,116,114,105,98,117,116,101,32,40,97,116,116,114,105,98,117,116,101,84,111,83,111,114, - 116,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,99,111,109,112,97,114,101,76, - 101,120,105,99,111,103,114,97,112,104,105,99,97,108,108,121,32,40,115,101,99,111,110,100,45,62,103,101,116,83,116,114,105,110,103,65,116,116,114,105, - 98,117,116,101,32,40,97,116,116,114,105,98,117,116,101,84,111,83,111,114,116,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 105,102,32,40,114,101,115,117,108,116,32,61,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,115,117,108,116, - 32,61,32,102,105,114,115,116,45,62,103,101,116,83,116,114,105,110,103,65,116,116,114,105,98,117,116,101,32,40,84,40,34,73,68,34,41,41,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,46,99,111,109,112,97,114,101,76,101,120,105,99, - 111,103,114,97,112,104,105,99,97,108,108,121,32,40,115,101,99,111,110,100,45,62,103,101,116,83,116,114,105,110,103,65,116,116,114,105,98,117,116,101, - 32,40,84,40,34,73,68,34,41,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,100,105,114,101,99, - 116,105,111,110,32,42,32,114,101,115,117,108,116,59,13,10,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,112,114,105,118,97,116,101, - 58,13,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,83,116,114,105,110,103,32,97,116,116,114,105,98,117,116,101,84,111,83,111,114,116,59, - 13,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,105,110,116,32,100,105,114,101,99,116,105,111,110,59,13,10,32,32,32,32,125,59,13,10, - 13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,13,10,32,32,32,32,47,47,32,116,104,105,115,32,108,111,97,100,115,32,116,104,101,32,101,109,98,101,100,100,101,100,32,100, - 97,116,97,98,97,115,101,32,88,77,76,32,102,105,108,101,32,105,110,116,111,32,109,101,109,111,114,121,13,10,32,32,32,32,118,111,105,100,32,108, - 111,97,100,68,97,116,97,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,88,109,108,68,111,99,117,109,101,110,116,32,100,97, - 116,97,68,111,99,32,40,83,116,114,105,110,103,32,40,40,99,111,110,115,116,32,99,104,97,114,42,41,32,66,105,110,97,114,121,68,97,116,97,58, - 58,100,101,109,111,95,116,97,98,108,101,95,100,97,116,97,95,120,109,108,41,41,59,13,10,32,32,32,32,32,32,32,32,100,101,109,111,68,97,116, - 97,32,61,32,100,97,116,97,68,111,99,46,103,101,116,68,111,99,117,109,101,110,116,69,108,101,109,101,110,116,40,41,59,13,10,13,10,32,32,32, - 32,32,32,32,32,100,97,116,97,76,105,115,116,32,61,32,100,101,109,111,68,97,116,97,45,62,103,101,116,67,104,105,108,100,66,121,78,97,109,101, - 32,40,84,40,34,68,65,84,65,34,41,41,59,13,10,32,32,32,32,32,32,32,32,99,111,108,117,109,110,76,105,115,116,32,61,32,100,101,109,111, - 68,97,116,97,45,62,103,101,116,67,104,105,108,100,66,121,78,97,109,101,32,40,84,40,34,67,79,76,85,77,78,83,34,41,41,59,13,10,13,10, - 32,32,32,32,32,32,32,32,110,117,109,82,111,119,115,32,61,32,100,97,116,97,76,105,115,116,45,62,103,101,116,78,117,109,67,104,105,108,100,69, - 108,101,109,101,110,116,115,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47,47,32,40,97,32,117,116,105,108,105,116,121,32,109, - 101,116,104,111,100,32,116,111,32,115,101,97,114,99,104,32,111,117,114,32,88,77,76,32,102,111,114,32,116,104,101,32,97,116,116,114,105,98,117,116, - 101,32,116,104,97,116,32,109,97,116,99,104,101,115,32,97,32,99,111,108,117,109,110,32,73,68,41,13,10,32,32,32,32,99,111,110,115,116,32,83, - 116,114,105,110,103,32,103,101,116,65,116,116,114,105,98,117,116,101,78,97,109,101,70,111,114,67,111,108,117,109,110,73,100,32,40,99,111,110,115,116, - 32,105,110,116,32,99,111,108,117,109,110,73,100,41,32,99,111,110,115,116,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,102,111,114, - 69,97,99,104,88,109,108,67,104,105,108,100,69,108,101,109,101,110,116,32,40,42,99,111,108,117,109,110,76,105,115,116,44,32,99,111,108,117,109,110, - 88,109,108,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,99,111,108,117,109,110,88, - 109,108,45,62,103,101,116,73,110,116,65,116,116,114,105,98,117,116,101,32,84,40,34,99,111,108,117,109,110,73,100,34,41,32,61,61,32,99,111,108, - 117,109,110,73,100,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,111,108,117,109,110,88,109,108, - 45,62,103,101,116,83,116,114,105,110,103,65,116,116,114,105,98,117,116,101,32,84,40,34,110,97,109,101,34,41,59,13,10,32,32,32,32,32,32,32, - 32,125,13,10,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,83,116,114,105,110,103,58,58,101,109,112,116,121,59,13,10,32,32,32, - 32,125,13,10,125,59,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,13,10,67,111,109,112,111,110,101,110,116,42,32,99,114,101,97,116,101,84,97,98,108,101,68,101,109,111, - 40,41,13,10,123,13,10,32,32,32,32,114,101,116,117,114,110,32,110,101,119,32,84,97,98,108,101,68,101,109,111,67,111,109,112,111,110,101,110,116, - 40,41,59,13,10,125,13,10,0,0}; -const char* BinaryData::tabledemo_cpp = (const char*) temp10; - -static const unsigned char temp11[] = {47,42,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,13,10,13,10,32,32,32,84,104,105,115,32,102,105,108,101,32,105,115,32,112,97,114,116,32,111,102,32,116,104,101,32,74,85,67,69, - 32,108,105,98,114,97,114,121,32,45,32,34,74,117,108,101,115,39,32,85,116,105,108,105,116,121,32,67,108,97,115,115,32,69,120,116,101,110,115,105, - 111,110,115,34,13,10,32,32,32,67,111,112,121,114,105,103,104,116,32,50,48,48,52,45,57,32,98,121,32,82,97,119,32,77,97,116,101,114,105,97, - 108,32,83,111,102,116,119,97,114,101,32,76,116,100,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,74,85,67,69,32,99,97,110,32,98,101,32,114,101, - 100,105,115,116,114,105,98,117,116,101,100,32,97,110,100,47,111,114,32,109,111,100,105,102,105,101,100,32,117,110,100,101,114,32,116,104,101,32,116,101, - 114,109,115,32,111,102,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,13,10,32,32,32,80,117,98,108,105,99,32,76,105,99,101,110,115, - 101,32,40,86,101,114,115,105,111,110,32,50,41,44,32,97,115,32,112,117,98,108,105,115,104,101,100,32,98,121,32,116,104,101,32,70,114,101,101,32, - 83,111,102,116,119,97,114,101,32,70,111,117,110,100,97,116,105,111,110,46,13,10,32,32,32,65,32,99,111,112,121,32,111,102,32,116,104,101,32,108, - 105,99,101,110,115,101,32,105,115,32,105,110,99,108,117,100,101,100,32,105,110,32,116,104,101,32,74,85,67,69,32,100,105,115,116,114,105,98,117,116, - 105,111,110,44,32,111,114,32,99,97,110,32,98,101,32,102,111,117,110,100,13,10,32,32,32,111,110,108,105,110,101,32,97,116,32,119,119,119,46,103, - 110,117,46,111,114,103,47,108,105,99,101,110,115,101,115,46,13,10,13,10,32,32,32,74,85,67,69,32,105,115,32,100,105,115,116,114,105,98,117,116, - 101,100,32,105,110,32,116,104,101,32,104,111,112,101,32,116,104,97,116,32,105,116,32,119,105,108,108,32,98,101,32,117,115,101,102,117,108,44,32,98, - 117,116,32,87,73,84,72,79,85,84,32,65,78,89,13,10,32,32,32,87,65,82,82,65,78,84,89,59,32,119,105,116,104,111,117,116,32,101,118,101, - 110,32,116,104,101,32,105,109,112,108,105,101,100,32,119,97,114,114,97,110,116,121,32,111,102,32,77,69,82,67,72,65,78,84,65,66,73,76,73,84, - 89,32,111,114,32,70,73,84,78,69,83,83,32,70,79,82,13,10,32,32,32,65,32,80,65,82,84,73,67,85,76,65,82,32,80,85,82,80,79,83, - 69,46,32,32,83,101,101,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,32,80,117,98,108,105,99,32,76,105,99,101,110,115,101,32,102, - 111,114,32,109,111,114,101,32,100,101,116,97,105,108,115,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,84,111,32,114,101,108,101,97,115,101,32,97,32, - 99,108,111,115,101,100,45,115,111,117,114,99,101,32,112,114,111,100,117,99,116,32,119,104,105,99,104,32,117,115,101,115,32,74,85,67,69,44,32,99, - 111,109,109,101,114,99,105,97,108,32,108,105,99,101,110,115,101,115,32,97,114,101,13,10,32,32,32,97,118,97,105,108,97,98,108,101,58,32,118,105, - 115,105,116,32,119,119,119,46,114,97,119,109,97,116,101,114,105,97,108,115,111,102,116,119,97,114,101,46,99,111,109,47,106,117,99,101,32,102,111,114, - 32,109,111,114,101,32,105,110,102,111,114,109,97,116,105,111,110,46,13,10,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,42,47,13,10,13,10,35,105,110,99,108,117,100,101,32,34, - 46,46,47,106,117,99,101,100,101,109,111,95,104,101,97,100,101,114,115,46,104,34,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,66,111,117,110, - 99,105,110,103,66,97,108,108,67,111,109,112,32,32,58,32,112,117,98,108,105,99,32,67,111,109,112,111,110,101,110,116,13,10,123,13,10,32,32,32, - 32,102,108,111,97,116,32,120,44,32,121,44,32,115,105,122,101,44,32,100,120,44,32,100,121,44,32,119,44,32,104,44,32,112,97,114,101,110,116,87, - 105,100,116,104,44,32,112,97,114,101,110,116,72,101,105,103,104,116,59,13,10,32,32,32,32,102,108,111,97,116,32,105,110,110,101,114,88,44,32,105, - 110,110,101,114,89,59,13,10,32,32,32,32,67,111,108,111,117,114,32,99,111,108,111,117,114,59,13,10,32,32,32,32,84,104,114,101,97,100,58,58, - 84,104,114,101,97,100,73,68,32,116,104,114,101,97,100,73,100,59,13,10,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,66,111,117,110,99, - 105,110,103,66,97,108,108,67,111,109,112,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,120,32,61,32,82,97,110,100,111,109, - 58,58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,70,108,111,97,116,40,41,32,42,32,50,48,48,46,48,102, - 59,13,10,32,32,32,32,32,32,32,32,121,32,61,32,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41, - 46,110,101,120,116,70,108,111,97,116,40,41,32,42,32,50,48,48,46,48,102,59,13,10,32,32,32,32,32,32,32,32,112,97,114,101,110,116,87,105, - 100,116,104,32,61,32,53,48,59,13,10,32,32,32,32,32,32,32,32,112,97,114,101,110,116,72,101,105,103,104,116,32,61,32,53,48,59,13,10,32, - 32,32,32,32,32,32,32,105,110,110,101,114,88,32,61,32,48,59,13,10,32,32,32,32,32,32,32,32,105,110,110,101,114,89,32,61,32,48,59,13, - 10,32,32,32,32,32,32,32,32,116,104,114,101,97,100,73,100,32,61,32,48,59,13,10,13,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32, - 102,108,111,97,116,32,115,112,101,101,100,32,61,32,53,46,48,102,59,32,47,47,32,103,105,118,101,32,101,97,99,104,32,98,97,108,108,32,97,32, - 102,105,120,101,100,32,115,112,101,101,100,32,115,111,32,119,101,32,99,97,110,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,115,101,101,32,116,104,101,32,101,102,102,101,99,116,115,32,111,102,32,116, - 104,114,101,97,100,32,112,114,105,111,114,105,116,121,32,111,110,32,104,111,119,32,102,97,115,116,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,116,104,101,121,32,97,99,116,117,97,108,108,121,32,103, - 111,46,13,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,102,108,111,97,116,32,97,110,103,108,101,32,61,32,82,97,110,100,111,109,58,58, - 103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,70,108,111,97,116,40,41,32,42,32,102,108,111,97,116,95,80,105, - 32,42,32,50,46,48,102,59,13,10,13,10,32,32,32,32,32,32,32,32,100,120,32,61,32,115,105,110,102,32,40,97,110,103,108,101,41,32,42,32, - 115,112,101,101,100,59,13,10,32,32,32,32,32,32,32,32,100,121,32,61,32,99,111,115,102,32,40,97,110,103,108,101,41,32,42,32,115,112,101,101, - 100,59,13,10,13,10,32,32,32,32,32,32,32,32,115,105,122,101,32,61,32,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109,82,97, - 110,100,111,109,40,41,46,110,101,120,116,70,108,111,97,116,40,41,32,42,32,51,48,46,48,102,32,43,32,51,48,46,48,102,59,13,10,13,10,32, - 32,32,32,32,32,32,32,99,111,108,111,117,114,32,61,32,67,111,108,111,117,114,32,40,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101, - 109,82,97,110,100,111,109,40,41,46,110,101,120,116,73,110,116,40,41,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,46,119,105,116,104,65,108,112,104,97,32,40,48,46,53,102,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,46,119,105,116,104,66,114,105,103,104,116,110,101,115,115,32,40,48,46,55,102,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126, - 66,111,117,110,99,105,110,103,66,97,108,108,67,111,109,112,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32, - 118,111,105,100,32,112,97,105,110,116,32,40,71,114,97,112,104,105,99,115,38,32,103,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32, - 32,103,46,115,101,116,67,111,108,111,117,114,32,40,99,111,108,111,117,114,41,59,13,10,32,32,32,32,32,32,32,32,103,46,102,105,108,108,69,108, - 108,105,112,115,101,32,40,105,110,110,101,114,88,44,32,105,110,110,101,114,89,44,32,115,105,122,101,44,32,115,105,122,101,41,59,13,10,13,10,32, - 32,32,32,32,32,32,32,103,46,115,101,116,67,111,108,111,117,114,32,40,67,111,108,111,117,114,115,58,58,98,108,97,99,107,41,59,13,10,32,32, - 32,32,32,32,32,32,103,46,115,101,116,70,111,110,116,32,40,49,48,46,48,102,41,59,13,10,32,32,32,32,32,32,32,32,103,46,100,114,97,119, - 84,101,120,116,32,40,83,116,114,105,110,103,58,58,116,111,72,101,120,83,116,114,105,110,103,32,40,40,105,110,116,54,52,41,32,116,104,114,101,97, - 100,73,100,41,44,32,48,44,32,48,44,32,103,101,116,87,105,100,116,104,40,41,44,32,103,101,116,72,101,105,103,104,116,40,41,44,32,74,117,115, - 116,105,102,105,99,97,116,105,111,110,58,58,99,101,110,116,114,101,100,44,32,102,97,108,115,101,41,59,13,10,32,32,32,32,125,13,10,13,10,32, - 32,32,32,118,111,105,100,32,112,97,114,101,110,116,83,105,122,101,67,104,97,110,103,101,100,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32, - 32,32,32,32,112,97,114,101,110,116,87,105,100,116,104,32,61,32,103,101,116,80,97,114,101,110,116,87,105,100,116,104,40,41,32,45,32,115,105,122, - 101,59,13,10,32,32,32,32,32,32,32,32,112,97,114,101,110,116,72,101,105,103,104,116,32,61,32,103,101,116,80,97,114,101,110,116,72,101,105,103, - 104,116,40,41,32,45,32,115,105,122,101,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,109,111,118,101,66,97,108,108, - 40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,116,104,114,101,97,100,73,100,32,61,32,84,104,114,101,97,100,58,58,103,101, - 116,67,117,114,114,101,110,116,84,104,114,101,97,100,73,100,40,41,59,32,47,47,32,116,104,105,115,32,105,115,32,115,111,32,116,104,101,32,99,111, - 109,112,111,110,101,110,116,32,99,97,110,32,112,114,105,110,116,32,116,104,101,32,116,104,114,101,97,100,32,73,68,32,105,110,115,105,100,101,32,116, - 104,101,32,98,97,108,108,13,10,13,10,32,32,32,32,32,32,32,32,120,32,43,61,32,100,120,59,13,10,32,32,32,32,32,32,32,32,121,32,43, - 61,32,100,121,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,120,32,60,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,100,120,32,61,32,102,97,98,115,102,32,40,100,120,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,120,32,62,32,112,97,114, - 101,110,116,87,105,100,116,104,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,120,32,61,32,45,102,97,98,115,102,32,40,100,120,41,59, - 13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,121,32,60,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,121,32,61, - 32,102,97,98,115,102,32,40,100,121,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,121,32,62,32,112,97,114,101,110,116,72,101, - 105,103,104,116,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,121,32,61,32,45,102,97,98,115,102,32,40,100,121,41,59,13,10,13,10, - 32,32,32,32,32,32,32,32,115,101,116,66,111,117,110,100,115,32,40,40,40,105,110,116,41,32,120,41,32,45,32,50,44,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,105,110,116,41,32,121,41,32,45,32,50,44,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,40,40,105,110,116,41,32,115,105,122,101,41,32,43,32,52,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,40,40,105,110,116,41,32,115,105,122,101,41,32,43,32,52,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,110,110, - 101,114,88,32,61,32,120,32,45,32,103,101,116,88,40,41,59,13,10,32,32,32,32,32,32,32,32,105,110,110,101,114,89,32,61,32,121,32,45,32, - 103,101,116,89,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,114,101,112,97,105,110,116,40,41,59,13,10,32,32,32,32,125,13,10,13,10, - 32,32,32,32,106,117,99,101,95,85,115,101,68,101,98,117,103,103,105,110,103,78,101,119,79,112,101,114,97,116,111,114,13,10,125,59,13,10,13,10, - 13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,13,10,99,108,97,115,115,32,68,101,109,111,84,104,114,101,97,100,32,32,32,32,58,32,112,117,98,108,105,99,32,66,111,117,110,99,105,110, - 103,66,97,108,108,67,111,109,112,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99, - 32,84,104,114,101,97,100,13,10,123,13,10,32,32,32,32,105,110,116,32,105,110,116,101,114,118,97,108,59,13,10,13,10,112,117,98,108,105,99,58, - 13,10,32,32,32,32,68,101,109,111,84,104,114,101,97,100,40,41,13,10,32,32,32,32,32,32,32,32,58,32,84,104,114,101,97,100,32,40,84,40, - 34,74,117,99,101,32,68,101,109,111,32,84,104,114,101,97,100,34,41,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,110,116, - 101,114,118,97,108,32,61,32,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,73,110, - 116,32,40,53,48,41,32,43,32,54,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,103,105,118,101,32,116,104,101,32,116,104,114,101,97, - 100,115,32,97,32,114,97,110,100,111,109,32,112,114,105,111,114,105,116,121,44,32,115,111,32,115,111,109,101,32,119,105,108,108,32,109,111,118,101,32, - 109,111,114,101,13,10,32,32,32,32,32,32,32,32,47,47,32,115,109,111,111,116,104,108,121,32,116,104,97,110,32,111,116,104,101,114,115,46,46,13, - 10,32,32,32,32,32,32,32,32,115,116,97,114,116,84,104,114,101,97,100,32,40,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109,82, - 97,110,100,111,109,40,41,46,110,101,120,116,73,110,116,32,40,51,41,32,43,32,51,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32, - 126,68,101,109,111,84,104,114,101,97,100,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,97,108,108,111,119,32,116, - 104,101,32,116,104,114,101,97,100,32,50,32,115,101,99,111,110,100,115,32,116,111,32,115,116,111,112,32,99,108,101,97,110,108,121,32,45,32,115,104, - 111,117,108,100,32,98,101,32,112,108,101,110,116,121,32,111,102,32,116,105,109,101,46,13,10,32,32,32,32,32,32,32,32,115,116,111,112,84,104,114, - 101,97,100,32,40,50,48,48,48,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,114,117,110,40,41,13,10,32,32, - 32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,116,104,105,115,32,105,115,32,116,104,101,32,99,111,100,101,32,116,104,97,116,32,114,117, - 110,115,32,116,104,105,115,32,116,104,114,101,97,100,32,45,32,119,101,39,108,108,32,108,111,111,112,32,99,111,110,116,105,110,117,111,117,115,108,121, - 44,13,10,32,32,32,32,32,32,32,32,47,47,32,117,112,100,97,116,105,110,103,32,116,104,101,32,99,111,45,111,114,100,105,110,97,116,101,115,32, - 111,102,32,111,117,114,32,98,108,111,98,46,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,116,104,114,101,97,100,83,104,111,117,108,100,69, - 120,105,116,40,41,32,114,101,116,117,114,110,115,32,116,114,117,101,32,119,104,101,110,32,116,104,101,32,115,116,111,112,84,104,114,101,97,100,40,41, - 32,109,101,116,104,111,100,32,104,97,115,32,98,101,101,110,13,10,32,32,32,32,32,32,32,32,47,47,32,99,97,108,108,101,100,44,32,115,111,32, - 119,101,32,115,104,111,117,108,100,32,99,104,101,99,107,32,105,116,32,111,102,116,101,110,44,32,97,110,100,32,101,120,105,116,32,97,115,32,115,111, - 111,110,32,97,115,32,105,116,32,103,101,116,115,32,102,108,97,103,103,101,100,46,13,10,32,32,32,32,32,32,32,32,119,104,105,108,101,32,40,33, - 32,116,104,114,101,97,100,83,104,111,117,108,100,69,120,105,116,40,41,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,47,47,32,115,108,101,101,112,32,97,32,98,105,116,32,115,111,32,116,104,101,32,116,104,114,101,97,100,115,32,100,111,110,39,116, - 32,97,108,108,32,103,114,105,110,100,32,116,104,101,32,67,80,85,32,116,111,32,97,32,104,97,108,116,46,46,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,119,97,105,116,32,40,105,110,116,101,114,118,97,108,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,98, - 101,99,97,117,115,101,32,116,104,105,115,32,105,115,32,97,32,98,97,99,107,103,114,111,117,110,100,32,116,104,114,101,97,100,44,32,119,101,32,109, - 117,115,116,110,39,116,32,100,111,32,97,110,121,32,85,73,32,119,111,114,107,32,119,105,116,104,111,117,116,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,47,47,32,102,105,114,115,116,32,103,114,97,98,98,105,110,103,32,97,32,77,101,115,115,97,103,101,77,97,110,97,103,101,114,76,111,99, - 107,46,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,110,115,116,32,77,101,115,115,97,103,101,77,97,110,97,103,101,114,76,111,99, - 107,32,109,109,108,32,40,84,104,114,101,97,100,58,58,103,101,116,67,117,114,114,101,110,116,84,104,114,101,97,100,40,41,41,59,13,10,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,33,32,109,109,108,46,108,111,99,107,87,97,115,71,97,105,110,101,100,40,41,41,32,32,47, - 47,32,105,102,32,115,111,109,101,116,104,105,110,103,32,105,115,32,116,114,121,105,110,103,32,116,111,32,107,105,108,108,32,116,104,105,115,32,106,111, - 98,44,32,116,104,101,32,108,111,99,107,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,59,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,119,105,108,108,32,102,97,105,108,44,32,105,110,32,119,104,105,99,104,32,99,97,115,101, - 32,119,101,39,100,32,98,101,116,116,101,114,32,114,101,116,117,114,110,46,46,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32, - 110,111,119,32,119,101,39,118,101,32,103,111,116,32,116,104,101,32,85,73,32,116,104,114,101,97,100,32,108,111,99,107,101,100,44,32,119,101,32,99, - 97,110,32,109,101,115,115,32,97,98,111,117,116,32,119,105,116,104,32,116,104,101,32,99,111,109,112,111,110,101,110,116,115,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,109,111,118,101,66,97,108,108,40,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10, - 32,32,32,32,106,117,99,101,95,85,115,101,68,101,98,117,103,103,105,110,103,78,101,119,79,112,101,114,97,116,111,114,13,10,125,59,13,10,13,10, - 13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,13,10,99,108,97,115,115,32,68,101,109,111,84,104,114,101,97,100,80,111,111,108,74,111,98,32,32,58,32,112,117,98,108,105,99,32,66,111, - 117,110,99,105,110,103,66,97,108,108,67,111,109,112,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,112,117,98,108,105,99,32,84,104,114,101,97,100,80,111,111,108,74,111,98,13,10,123,13,10,112,117,98,108,105,99,58,13,10,32,32, - 32,32,68,101,109,111,84,104,114,101,97,100,80,111,111,108,74,111,98,40,41,13,10,32,32,32,32,32,32,32,32,58,32,84,104,114,101,97,100,80, - 111,111,108,74,111,98,32,40,84,40,34,68,101,109,111,32,84,104,114,101,97,100,112,111,111,108,32,74,111,98,34,41,41,13,10,32,32,32,32,123, - 13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,68,101,109,111,84,104,114,101,97,100,80,111,111,108,74,111,98,40,41,13,10,32,32,32, - 32,123,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,74,111,98,83,116,97,116,117,115,32,114,117,110,74,111,98,40,41,13,10,32,32,32, - 32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,116,104,105,115,32,105,115,32,116,104,101,32,99,111,100,101,32,116,104,97,116,32,114,117,110, - 115,32,116,104,105,115,32,106,111,98,46,32,73,116,39,108,108,32,98,101,32,114,101,112,101,97,116,101,100,108,121,32,99,97,108,108,101,100,32,117, - 110,116,105,108,32,119,101,32,114,101,116,117,114,110,13,10,32,32,32,32,32,32,32,32,47,47,32,106,111,98,72,97,115,70,105,110,105,115,104,101, - 100,32,105,110,115,116,101,97,100,32,111,102,32,106,111,98,78,101,101,100,115,82,117,110,110,105,110,103,65,103,97,105,110,46,13,10,13,10,32,32, - 32,32,32,32,32,32,84,104,114,101,97,100,58,58,115,108,101,101,112,32,40,51,48,41,59,13,10,13,10,13,10,32,32,32,32,32,32,32,32,47, - 47,32,98,101,99,97,117,115,101,32,116,104,105,115,32,105,115,32,97,32,98,97,99,107,103,114,111,117,110,100,32,116,104,114,101,97,100,44,32,119, - 101,32,109,117,115,116,110,39,116,32,100,111,32,97,110,121,32,85,73,32,119,111,114,107,32,119,105,116,104,111,117,116,13,10,32,32,32,32,32,32, - 32,32,47,47,32,102,105,114,115,116,32,103,114,97,98,98,105,110,103,32,97,32,77,101,115,115,97,103,101,77,97,110,97,103,101,114,76,111,99,107, - 46,46,13,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,77,101,115,115,97,103,101,77,97,110,97,103,101,114,76,111,99,107,32,109,109,108, - 32,40,116,104,105,115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,98,101,102,111,114,101,32,109,111,118,105,110,103,32,116,104,101, - 32,98,97,108,108,44,32,119,101,32,110,101,101,100,32,116,111,32,99,104,101,99,107,32,119,104,101,116,104,101,114,32,116,104,101,32,108,111,99,107, - 32,119,97,115,32,97,99,116,117,97,108,108,121,32,103,97,105,110,101,100,44,32,98,101,99,97,117,115,101,13,10,32,32,32,32,32,32,32,32,47, - 47,32,105,102,32,115,111,109,101,116,104,105,110,103,32,105,115,32,116,114,121,105,110,103,32,116,111,32,115,116,111,112,32,116,104,105,115,32,106,111, - 98,44,32,105,116,32,119,105,108,108,32,104,97,118,101,32,102,97,105,108,101,100,46,46,13,10,32,32,32,32,32,32,32,32,105,102,32,40,109,109, - 108,46,108,111,99,107,87,97,115,71,97,105,110,101,100,40,41,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,109,111,118,101,66,97,108,108, - 40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,106,111,98,78,101,101,100,115,82,117,110,110,105,110,103,65,103,97, - 105,110,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,114,101,109,111,118,101,100,70,114,111,109,81,117,101,117,101,40, - 41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,84,104,105,115,32,105,115,32,99,97,108,108,101,100,32,116,111,32,116, - 101,108,108,32,117,115,32,116,104,97,116,32,111,117,114,32,106,111,98,32,104,97,115,32,98,101,101,110,32,114,101,109,111,118,101,100,32,102,114,111, - 109,32,116,104,101,32,112,111,111,108,46,13,10,32,32,32,32,32,32,32,32,47,47,32,73,110,32,116,104,105,115,32,99,97,115,101,32,116,104,101, - 114,101,39,115,32,110,111,32,110,101,101,100,32,116,111,32,100,111,32,97,110,121,116,104,105,110,103,32,104,101,114,101,46,13,10,32,32,32,32,125, - 13,10,13,10,32,32,32,32,106,117,99,101,95,85,115,101,68,101,98,117,103,103,105,110,103,78,101,119,79,112,101,114,97,116,111,114,13,10,125,59, - 13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,13,10,99,108,97,115,115,32,84,104,114,101,97,100,105,110,103,68,101,109,111,32,32,58,32,112,117,98,108,105,99,32,67,111,109,112, - 111,110,101,110,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,84,105, - 109,101,114,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,66,117,116,116, - 111,110,76,105,115,116,101,110,101,114,13,10,123,13,10,32,32,32,32,98,111,111,108,32,105,115,85,115,105,110,103,80,111,111,108,59,13,10,32,32, - 32,32,84,104,114,101,97,100,80,111,111,108,32,112,111,111,108,59,13,10,32,32,32,32,84,101,120,116,66,117,116,116,111,110,42,32,99,111,110,116, - 114,111,108,66,117,116,116,111,110,59,13,10,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,84,104,114,101,97,100,105, - 110,103,68,101,109,111,40,41,13,10,32,32,32,32,32,32,32,32,58,32,112,111,111,108,32,40,51,41,13,10,32,32,32,32,123,13,10,32,32,32, - 32,32,32,32,32,105,115,85,115,105,110,103,80,111,111,108,32,61,32,102,97,108,115,101,59,13,10,13,10,32,32,32,32,32,32,32,32,115,101,116, - 78,97,109,101,32,40,84,40,34,77,117,108,116,105,116,104,114,101,97,100,105,110,103,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,115, - 101,116,79,112,97,113,117,101,32,40,116,114,117,101,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,84,104,114,101,97,100,105,110, - 103,68,101,109,111,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,112,111,111,108,46,114,101,109,111,118,101,65,108,108,74,111, - 98,115,32,40,116,114,117,101,44,32,50,48,48,48,41,59,13,10,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65,108,108,67,104,105, - 108,100,114,101,110,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47,47,32,116,104,105,115,32,103,101,116,115,32,99,97,108,108, - 101,100,32,119,104,101,110,32,97,32,99,111,109,112,111,110,101,110,116,32,105,115,32,97,100,100,101,100,32,111,114,32,114,101,109,111,118,101,100,32, - 102,114,111,109,32,97,32,112,97,114,101,110,116,32,99,111,109,112,111,110,101,110,116,46,13,10,32,32,32,32,118,111,105,100,32,112,97,114,101,110, - 116,72,105,101,114,97,114,99,104,121,67,104,97,110,103,101,100,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,119, - 101,39,108,108,32,117,115,101,32,116,104,105,115,32,97,115,32,97,110,32,111,112,112,111,114,116,117,110,105,116,121,32,116,111,32,115,116,97,114,116, - 32,97,110,100,32,115,116,111,112,32,116,104,101,32,116,104,114,101,97,100,115,44,32,115,111,32,116,104,97,116,13,10,32,32,32,32,32,32,32,32, - 47,47,32,119,101,32,100,111,110,39,116,32,108,101,97,118,101,32,116,104,101,109,32,103,111,105,110,103,32,119,104,101,110,32,116,104,101,32,99,111, - 109,112,111,110,101,110,116,39,115,32,110,111,116,32,97,99,116,117,97,108,108,121,32,118,105,115,105,98,108,101,46,13,10,32,32,32,32,32,32,32, - 32,115,116,111,112,84,105,109,101,114,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,112,111,111,108,46,114,101,109,111,118,101,65,108,108,74, - 111,98,115,32,40,116,114,117,101,44,32,52,48,48,48,41,59,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65,108,108,67,104,105,108, - 100,114,101,110,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,99,111, - 110,116,114,111,108,66,117,116,116,111,110,32,61,32,110,101,119,32,84,101,120,116,66,117,116,116,111,110,32,40,84,40,34,84,104,114,101,97,100,32, - 116,121,112,101,34,41,41,41,59,13,10,32,32,32,32,32,32,32,32,99,111,110,116,114,111,108,66,117,116,116,111,110,45,62,99,104,97,110,103,101, - 87,105,100,116,104,84,111,70,105,116,84,101,120,116,32,40,50,48,41,59,13,10,32,32,32,32,32,32,32,32,99,111,110,116,114,111,108,66,117,116, - 116,111,110,45,62,115,101,116,84,111,112,76,101,102,116,80,111,115,105,116,105,111,110,32,40,50,48,44,32,50,48,41,59,13,10,32,32,32,32,32, - 32,32,32,99,111,110,116,114,111,108,66,117,116,116,111,110,45,62,115,101,116,84,114,105,103,103,101,114,101,100,79,110,77,111,117,115,101,68,111,119, - 110,32,40,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,99,111,110,116,114,111,108,66,117,116,116,111,110,45,62,115,101,116,65,108,119, - 97,121,115,79,110,84,111,112,32,40,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,99,111,110,116,114,111,108,66,117,116,116,111,110,45, - 62,97,100,100,66,117,116,116,111,110,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102, - 32,40,105,115,83,104,111,119,105,110,103,40,41,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,119, - 104,105,108,101,32,40,103,101,116,78,117,109,67,104,105,108,100,67,111,109,112,111,110,101,110,116,115,40,41,32,60,32,53,41,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,97,100,100,65,66,97,108,108,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,115, - 116,97,114,116,84,105,109,101,114,32,40,50,48,48,48,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,32, - 32,32,32,118,111,105,100,32,112,97,105,110,116,32,40,71,114,97,112,104,105,99,115,38,32,103,41,13,10,32,32,32,32,123,13,10,32,32,32,32, - 32,32,32,32,103,46,102,105,108,108,65,108,108,32,40,67,111,108,111,117,114,115,58,58,119,104,105,116,101,41,59,13,10,32,32,32,32,125,13,10, - 13,10,32,32,32,32,118,111,105,100,32,115,101,116,85,115,105,110,103,80,111,111,108,32,40,98,111,111,108,32,117,115,101,80,111,111,108,41,13,10, - 32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,115,85,115,105,110,103,80,111,111,108,32,61,32,117,115,101,80,111,111,108,59,13,10,32, - 32,32,32,32,32,32,32,112,97,114,101,110,116,72,105,101,114,97,114,99,104,121,67,104,97,110,103,101,100,40,41,59,32,47,47,32,114,101,115,101, - 116,115,32,101,118,101,114,121,116,104,105,110,103,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,97,100,100,65,66,97,108, - 108,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102,32,40,105,115,85,115,105,110,103,80,111,111,108,41,13,10,32,32, - 32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,68,101,109,111,84,104,114,101,97,100,80,111,111,108,74,111,98,42,32, - 110,101,119,67,111,109,112,32,61,32,110,101,119,32,68,101,109,111,84,104,114,101,97,100,80,111,111,108,74,111,98,40,41,59,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,110,101,119,67,111,109,112,41,59,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,110,101,119,67,111,109,112,45,62,112,97,114,101,110,116,83,105,122,101,67,104,97,110,103,101,100,40,41,59,13, - 10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,112,111,111,108,46,97,100,100,74,111,98,32,40,110,101,119,67,111,109,112,41,59,13,10,32, - 32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,68,101,109,111,84,104,114,101,97,100,42,32,110,101,119,67,111,109,112,32,61,32,110,101,119,32,68,101,109,111,84,104,114, - 101,97,100,40,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,110, - 101,119,67,111,109,112,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,110,101,119,67,111,109,112,45,62,112,97,114,101,110,116,83,105,122, - 101,67,104,97,110,103,101,100,40,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105, - 100,32,114,101,109,111,118,101,65,66,97,108,108,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102,32,40,105,115,85,115, - 105,110,103,80,111,111,108,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,84,104,114,101,97,100,80, - 111,111,108,74,111,98,42,32,106,111,98,84,111,82,101,109,111,118,101,32,61,32,112,111,111,108,46,103,101,116,74,111,98,32,40,82,97,110,100,111, - 109,58,58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,73,110,116,32,40,112,111,111,108,46,103,101,116,78,117, - 109,74,111,98,115,40,41,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,106,111,98,84,111,82,101,109,111,118, - 101,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 112,111,111,108,46,114,101,109,111,118,101,74,111,98,32,40,106,111,98,84,111,82,101,109,111,118,101,44,32,116,114,117,101,44,32,52,48,48,48,41, - 59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,100,101,108,101,116,101,32,106,111,98,84,111,82,101,109,111,118,101,59,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,13,10, - 32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,103,101,116,78,117,109,67,104,105,108,100,67,111, - 109,112,111,110,101,110,116,115,40,41,32,62,32,49,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,67,111,109,112,111,110,101,110,116,42,32,98,97,108,108,32,61,32,103,101,116,67,104,105,108,100,67,111,109,112,111,110, - 101,110,116,32,40,49,32,43,32,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,73, - 110,116,32,40,103,101,116,78,117,109,67,104,105,108,100,67,111,109,112,111,110,101,110,116,115,40,41,32,45,32,49,41,41,59,13,10,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,100,121,110,97,109,105,99,95,99,97,115,116,32,60,66,117,116,116,111,110,42,62, - 32,40,98,97,108,108,41,32,61,61,32,48,41,32,47,47,32,100,111,110,39,116,32,100,101,108,101,116,101,32,111,117,114,32,98,117,116,116,111,110, - 33,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,100,101,108,101,116,101,32,98,97,108,108,59,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100, - 32,116,105,109,101,114,67,97,108,108,98,97,99,107,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102,32,40,82,97,110, - 100,111,109,58,58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,66,111,111,108,40,41,41,13,10,32,32,32,32, - 32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,103,101,116,78,117,109,67,104,105,108,100,67,111,109,112,111,110, - 101,110,116,115,40,41,32,60,61,32,49,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,100,100,65,66,97,108,108,40, - 41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,123,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,103,101,116,78,117,109,67,104,105,108,100,67,111,109,112,111,110,101,110,116,115,40,41,32, - 62,32,51,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,109,111,118,101,65,66,97,108,108,40,41,59,13,10,32,32, - 32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,98,117,116,116,111,110,67,108,105,99,107,101,100, - 32,40,66,117,116,116,111,110,42,32,98,117,116,116,111,110,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,80,111,112,117,112,77, - 101,110,117,32,109,59,13,10,32,32,32,32,32,32,32,32,109,46,97,100,100,73,116,101,109,32,40,49,44,32,84,40,34,85,115,101,32,111,110,101, - 32,116,104,114,101,97,100,32,112,101,114,32,98,97,108,108,34,41,44,32,116,114,117,101,44,32,33,32,105,115,85,115,105,110,103,80,111,111,108,41, - 59,13,10,32,32,32,32,32,32,32,32,109,46,97,100,100,73,116,101,109,32,40,50,44,32,84,40,34,85,115,101,32,97,32,116,104,114,101,97,100, - 32,112,111,111,108,34,41,44,32,116,114,117,101,44,32,105,115,85,115,105,110,103,80,111,111,108,41,59,13,10,13,10,32,32,32,32,32,32,32,32, - 99,111,110,115,116,32,105,110,116,32,114,101,115,32,61,32,109,46,115,104,111,119,65,116,32,40,98,117,116,116,111,110,41,59,13,10,13,10,32,32, - 32,32,32,32,32,32,105,102,32,40,114,101,115,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,115,101,116,85,115,105,110, - 103,80,111,111,108,32,40,114,101,115,32,61,61,32,50,41,59,13,10,32,32,32,32,125,13,10,125,59,13,10,13,10,13,10,13,10,47,47,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,67,111, - 109,112,111,110,101,110,116,42,32,99,114,101,97,116,101,84,104,114,101,97,100,105,110,103,68,101,109,111,40,41,13,10,123,13,10,32,32,32,32,114, - 101,116,117,114,110,32,110,101,119,32,84,104,114,101,97,100,105,110,103,68,101,109,111,40,41,59,13,10,125,13,10,0,0}; -const char* BinaryData::threadingdemo_cpp = (const char*) temp11; - -static const unsigned char temp12[] = {47,42,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,13,10,13,10,32,32,32,84,104,105,115,32,102,105,108,101,32,105,115,32,112,97,114,116,32,111,102,32,116,104,101,32,74,85,67,69, - 32,108,105,98,114,97,114,121,32,45,32,34,74,117,108,101,115,39,32,85,116,105,108,105,116,121,32,67,108,97,115,115,32,69,120,116,101,110,115,105, - 111,110,115,34,13,10,32,32,32,67,111,112,121,114,105,103,104,116,32,50,48,48,52,45,57,32,98,121,32,82,97,119,32,77,97,116,101,114,105,97, - 108,32,83,111,102,116,119,97,114,101,32,76,116,100,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,74,85,67,69,32,99,97,110,32,98,101,32,114,101, - 100,105,115,116,114,105,98,117,116,101,100,32,97,110,100,47,111,114,32,109,111,100,105,102,105,101,100,32,117,110,100,101,114,32,116,104,101,32,116,101, - 114,109,115,32,111,102,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,13,10,32,32,32,80,117,98,108,105,99,32,76,105,99,101,110,115, - 101,32,40,86,101,114,115,105,111,110,32,50,41,44,32,97,115,32,112,117,98,108,105,115,104,101,100,32,98,121,32,116,104,101,32,70,114,101,101,32, - 83,111,102,116,119,97,114,101,32,70,111,117,110,100,97,116,105,111,110,46,13,10,32,32,32,65,32,99,111,112,121,32,111,102,32,116,104,101,32,108, - 105,99,101,110,115,101,32,105,115,32,105,110,99,108,117,100,101,100,32,105,110,32,116,104,101,32,74,85,67,69,32,100,105,115,116,114,105,98,117,116, - 105,111,110,44,32,111,114,32,99,97,110,32,98,101,32,102,111,117,110,100,13,10,32,32,32,111,110,108,105,110,101,32,97,116,32,119,119,119,46,103, - 110,117,46,111,114,103,47,108,105,99,101,110,115,101,115,46,13,10,13,10,32,32,32,74,85,67,69,32,105,115,32,100,105,115,116,114,105,98,117,116, - 101,100,32,105,110,32,116,104,101,32,104,111,112,101,32,116,104,97,116,32,105,116,32,119,105,108,108,32,98,101,32,117,115,101,102,117,108,44,32,98, - 117,116,32,87,73,84,72,79,85,84,32,65,78,89,13,10,32,32,32,87,65,82,82,65,78,84,89,59,32,119,105,116,104,111,117,116,32,101,118,101, - 110,32,116,104,101,32,105,109,112,108,105,101,100,32,119,97,114,114,97,110,116,121,32,111,102,32,77,69,82,67,72,65,78,84,65,66,73,76,73,84, - 89,32,111,114,32,70,73,84,78,69,83,83,32,70,79,82,13,10,32,32,32,65,32,80,65,82,84,73,67,85,76,65,82,32,80,85,82,80,79,83, - 69,46,32,32,83,101,101,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,32,80,117,98,108,105,99,32,76,105,99,101,110,115,101,32,102, - 111,114,32,109,111,114,101,32,100,101,116,97,105,108,115,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,84,111,32,114,101,108,101,97,115,101,32,97,32, - 99,108,111,115,101,100,45,115,111,117,114,99,101,32,112,114,111,100,117,99,116,32,119,104,105,99,104,32,117,115,101,115,32,74,85,67,69,44,32,99, - 111,109,109,101,114,99,105,97,108,32,108,105,99,101,110,115,101,115,32,97,114,101,13,10,32,32,32,97,118,97,105,108,97,98,108,101,58,32,118,105, - 115,105,116,32,119,119,119,46,114,97,119,109,97,116,101,114,105,97,108,115,111,102,116,119,97,114,101,46,99,111,109,47,106,117,99,101,32,102,111,114, - 32,109,111,114,101,32,105,110,102,111,114,109,97,116,105,111,110,46,13,10,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,42,47,13,10,13,10,35,105,110,99,108,117,100,101,32,34, - 46,46,47,106,117,99,101,100,101,109,111,95,104,101,97,100,101,114,115,46,104,34,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,84,114,101,101, - 86,105,101,119,68,101,109,111,73,116,101,109,32,32,58,32,112,117,98,108,105,99,32,84,114,101,101,86,105,101,119,73,116,101,109,13,10,123,13,10, - 32,32,32,32,88,109,108,69,108,101,109,101,110,116,42,32,120,109,108,59,13,10,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,84,114,101, - 101,86,105,101,119,68,101,109,111,73,116,101,109,32,40,88,109,108,69,108,101,109,101,110,116,42,32,99,111,110,115,116,32,120,109,108,95,41,13,10, - 32,32,32,32,32,32,32,32,58,32,120,109,108,32,40,120,109,108,95,41,13,10,32,32,32,32,123,13,10,32,32,32,32,125,13,10,13,10,32,32, - 32,32,126,84,114,101,101,86,105,101,119,68,101,109,111,73,116,101,109,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,125,13,10,13,10,32, - 32,32,32,105,110,116,32,103,101,116,73,116,101,109,87,105,100,116,104,40,41,32,99,111,110,115,116,13,10,32,32,32,32,123,13,10,32,32,32,32, - 32,32,32,32,114,101,116,117,114,110,32,120,109,108,45,62,103,101,116,73,110,116,65,116,116,114,105,98,117,116,101,32,40,84,40,34,119,105,100,116, - 104,34,41,44,32,45,49,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,99,111,110,115,116,32,83,116,114,105,110,103,32,103,101,116, - 85,110,105,113,117,101,78,97,109,101,40,41,32,99,111,110,115,116,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102,32,40,120, - 109,108,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,120,109,108,45,62,103,101,116,84,97,103, - 78,97,109,101,40,41,59,13,10,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114, - 110,32,83,116,114,105,110,103,58,58,101,109,112,116,121,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,98,111,111,108,32,109,105,103,104, - 116,67,111,110,116,97,105,110,83,117,98,73,116,101,109,115,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114, - 110,32,120,109,108,32,33,61,32,48,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,38,38,32,120,109,108,45,62,103,101,116,70, - 105,114,115,116,67,104,105,108,100,69,108,101,109,101,110,116,40,41,32,33,61,32,48,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118, - 111,105,100,32,112,97,105,110,116,73,116,101,109,32,40,71,114,97,112,104,105,99,115,38,32,103,44,32,105,110,116,32,119,105,100,116,104,44,32,105, - 110,116,32,104,101,105,103,104,116,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102,32,40,120,109,108,32,33,61,32,48,41, - 13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,105,102,32,116,104,105,115,32,105,116,101,109, - 32,105,115,32,115,101,108,101,99,116,101,100,44,32,102,105,108,108,32,105,116,32,119,105,116,104,32,97,32,98,97,99,107,103,114,111,117,110,100,32, - 99,111,108,111,117,114,46,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,105,115,83,101,108,101,99,116,101,100,40,41,41,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,103,46,102,105,108,108,65,108,108,32,40,67,111,108,111,117,114,115,58,58,98,108,117, - 101,46,119,105,116,104,65,108,112,104,97,32,40,48,46,51,102,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,117, - 115,101,32,97,32,34,99,111,108,111,117,114,34,32,97,116,116,114,105,98,117,116,101,32,105,110,32,116,104,101,32,120,109,108,32,116,97,103,32,102, - 111,114,32,116,104,105,115,32,110,111,100,101,32,116,111,32,115,101,116,32,116,104,101,32,116,101,120,116,32,99,111,108,111,117,114,46,46,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,103,46,115,101,116,67,111,108,111,117,114,32,40,67,111,108,111,117,114,32,40,120,109,108,45,62,103,101,116, - 83,116,114,105,110,103,65,116,116,114,105,98,117,116,101,32,40,84,40,34,99,111,108,111,117,114,34,41,44,32,84,40,34,102,102,48,48,48,48,48, - 48,34,41,41,46,103,101,116,72,101,120,86,97,108,117,101,51,50,40,41,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103, - 46,115,101,116,70,111,110,116,32,40,104,101,105,103,104,116,32,42,32,48,46,55,102,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,47,47,32,100,114,97,119,32,116,104,101,32,120,109,108,32,101,108,101,109,101,110,116,39,115,32,116,97,103,32,110,97,109,101,46,46,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,103,46,100,114,97,119,84,101,120,116,32,40,120,109,108,45,62,103,101,116,84,97,103,78,97,109,101,40,41, - 44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,52,44,32,48,44,32,119,105,100,116,104,32,45, - 32,52,44,32,104,101,105,103,104,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,74,117,115, - 116,105,102,105,99,97,116,105,111,110,58,58,99,101,110,116,114,101,100,76,101,102,116,44,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32, - 32,125,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,105,116,101,109,79,112,101,110,110,101,115,115,67,104,97,110,103,101, - 100,32,40,98,111,111,108,32,105,115,78,111,119,79,112,101,110,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102,32,40,105, - 115,78,111,119,79,112,101,110,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,105,102,32, - 119,101,39,118,101,32,110,111,116,32,97,108,114,101,97,100,121,32,100,111,110,101,32,115,111,44,32,119,101,39,108,108,32,110,111,119,32,97,100,100, - 32,116,104,101,32,116,114,101,101,39,115,32,115,117,98,45,105,116,101,109,115,46,32,89,111,117,32,99,111,117,108,100,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,47,47,32,97,108,115,111,32,99,104,111,111,115,101,32,116,111,32,100,101,108,101,116,101,32,116,104,101,32,101,120,105,115,116, - 105,110,103,32,111,110,101,115,32,97,110,100,32,114,101,102,114,101,115,104,32,116,104,101,109,32,105,102,32,116,104,97,116,39,115,32,109,111,114,101, - 32,115,117,105,116,97,98,108,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,105,110,32,121,111,117,114,32,97,112,112,46,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,103,101,116,78,117,109,83,117,98,73,116,101,109,115,40,41,32,61,61,32,48,41,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,99,114,101,97,116,101, - 32,97,110,100,32,97,100,100,32,115,117,98,45,105,116,101,109,115,32,116,111,32,116,104,105,115,32,110,111,100,101,32,111,102,32,116,104,101,32,116, - 114,101,101,44,32,99,111,114,114,101,115,112,111,110,100,105,110,103,32,116,111,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47, - 47,32,101,97,99,104,32,115,117,98,45,101,108,101,109,101,110,116,32,105,110,32,116,104,101,32,88,77,76,46,46,13,10,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,120,109,108,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,111,114,69,97,99,104,88,109,108,67,104,105,108,100, - 69,108,101,109,101,110,116,32,40,42,120,109,108,44,32,99,104,105,108,100,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,100,100,83,117,98,73,116,101,109, - 32,40,110,101,119,32,84,114,101,101,86,105,101,119,68,101,109,111,73,116,101,109,32,40,99,104,105,108,100,41,41,59,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32,32, - 32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,105,110,32,116,104,105,115,32,99,97,115,101,44,32,119,101,39,108, - 108,32,108,101,97,118,101,32,97,110,121,32,115,117,98,45,105,116,101,109,115,32,105,110,32,116,104,101,32,116,114,101,101,32,119,104,101,110,32,116, - 104,101,32,110,111,100,101,32,103,101,116,115,32,99,108,111,115,101,100,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,116,104,111, - 117,103,104,32,121,111,117,32,99,111,117,108,100,32,99,104,111,111,115,101,32,116,111,32,100,101,108,101,116,101,32,116,104,101,109,32,105,102,32,116, - 104,97,116,39,115,32,109,111,114,101,32,97,112,112,114,111,112,114,105,97,116,101,32,102,111,114,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 47,47,32,121,111,117,114,32,97,112,112,108,105,99,97,116,105,111,110,46,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10, - 13,10,32,32,32,32,99,111,110,115,116,32,83,116,114,105,110,103,32,103,101,116,68,114,97,103,83,111,117,114,99,101,68,101,115,99,114,105,112,116, - 105,111,110,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,84,40,34,84,114,101,101,86,105,101,119, - 32,73,116,101,109,115,34,41,59,13,10,32,32,32,32,125,13,10,125,59,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,84,114,101,101,86,105,101,119, - 68,101,109,111,32,32,58,32,112,117,98,108,105,99,32,67,111,109,112,111,110,101,110,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,68,114,97,103,65,110,100,68,114,111,112,67,111,110,116,97,105,110,101,114,44,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,66,117,116,116,111,110,76,105,115,116,101,110, - 101,114,13,10,123,13,10,32,32,32,32,88,109,108,69,108,101,109,101,110,116,42,32,116,114,101,101,88,109,108,59,13,10,13,10,32,32,32,32,84, - 114,101,101,86,105,101,119,73,116,101,109,42,32,114,111,111,116,73,116,101,109,59,13,10,32,32,32,32,84,114,101,101,86,105,101,119,42,32,116,114, - 101,101,86,105,101,119,59,13,10,13,10,32,32,32,32,70,105,108,101,84,114,101,101,67,111,109,112,111,110,101,110,116,42,32,102,105,108,101,84,114, - 101,101,67,111,109,112,59,13,10,32,32,32,32,68,105,114,101,99,116,111,114,121,67,111,110,116,101,110,116,115,76,105,115,116,42,32,100,105,114,101, - 99,116,111,114,121,76,105,115,116,59,13,10,32,32,32,32,84,105,109,101,83,108,105,99,101,84,104,114,101,97,100,32,116,104,114,101,97,100,59,13, - 10,13,10,32,32,32,32,84,101,120,116,66,117,116,116,111,110,42,32,116,121,112,101,66,117,116,116,111,110,59,13,10,13,10,112,117,98,108,105,99, - 58,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,13,10,32,32,32,32,84,114,101,101,86,105,101,119,68,101,109,111,40,41,13,10,32,32,32,32,32,32,32,32,58,32,116, - 114,101,101,86,105,101,119,32,40,48,41,44,13,10,32,32,32,32,32,32,32,32,32,32,114,111,111,116,73,116,101,109,32,40,48,41,44,13,10,32, - 32,32,32,32,32,32,32,32,32,102,105,108,101,84,114,101,101,67,111,109,112,32,40,48,41,44,13,10,32,32,32,32,32,32,32,32,32,32,100,105, - 114,101,99,116,111,114,121,76,105,115,116,32,40,48,41,44,13,10,32,32,32,32,32,32,32,32,32,32,116,104,114,101,97,100,32,40,34,68,101,109, - 111,32,102,105,108,101,32,116,114,101,101,32,116,104,114,101,97,100,34,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,115,101,116, - 78,97,109,101,32,40,84,40,34,84,114,101,101,32,86,105,101,119,115,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,99,111,110,115,116, - 32,83,116,114,105,110,103,32,116,114,101,101,88,109,108,83,116,114,105,110,103,32,40,66,105,110,97,114,121,68,97,116,97,58,58,116,114,101,101,100, - 101,109,111,95,120,109,108,41,59,13,10,32,32,32,32,32,32,32,32,88,109,108,68,111,99,117,109,101,110,116,32,112,97,114,115,101,114,32,40,116, - 114,101,101,88,109,108,83,116,114,105,110,103,41,59,13,10,32,32,32,32,32,32,32,32,116,114,101,101,88,109,108,32,61,32,112,97,114,115,101,114, - 46,103,101,116,68,111,99,117,109,101,110,116,69,108,101,109,101,110,116,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,114,111,111,116,73,116, - 101,109,32,61,32,110,101,119,32,84,114,101,101,86,105,101,119,68,101,109,111,73,116,101,109,32,40,116,114,101,101,88,109,108,41,59,13,10,32,32, - 32,32,32,32,32,32,114,111,111,116,73,116,101,109,45,62,115,101,116,79,112,101,110,32,40,116,114,117,101,41,59,13,10,13,10,32,32,32,32,32, - 32,32,32,47,47,32,102,105,110,100,32,116,104,101,32,114,111,111,116,32,111,102,32,116,104,101,32,117,115,101,114,39,115,32,104,111,109,101,32,100, - 114,105,118,101,44,32,97,110,100,32,115,101,116,32,116,104,97,116,32,97,115,32,111,117,114,32,114,111,111,116,46,46,13,10,32,32,32,32,32,32, - 32,32,70,105,108,101,32,102,111,108,100,101,114,32,40,70,105,108,101,58,58,103,101,116,83,112,101,99,105,97,108,76,111,99,97,116,105,111,110,32, - 40,70,105,108,101,58,58,117,115,101,114,72,111,109,101,68,105,114,101,99,116,111,114,121,41,41,59,13,10,32,32,32,32,32,32,32,32,119,104,105, - 108,101,32,40,102,111,108,100,101,114,46,103,101,116,80,97,114,101,110,116,68,105,114,101,99,116,111,114,121,40,41,32,33,61,32,102,111,108,100,101, - 114,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,102,111,108,100,101,114,32,61,32,102,111,108,100,101,114,46,103,101,116,80,97,114,101,110, - 116,68,105,114,101,99,116,111,114,121,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,100,105,114,101,99,116,111,114,121,76,105,115,116,32,61, - 32,110,101,119,32,68,105,114,101,99,116,111,114,121,67,111,110,116,101,110,116,115,76,105,115,116,32,40,48,44,32,116,104,114,101,97,100,41,59,13, - 10,32,32,32,32,32,32,32,32,100,105,114,101,99,116,111,114,121,76,105,115,116,45,62,115,101,116,68,105,114,101,99,116,111,114,121,32,40,102,111, - 108,100,101,114,44,32,116,114,117,101,44,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,116,104,114,101,97,100,46,115,116,97,114,116, - 84,104,114,101,97,100,32,40,51,41,59,13,10,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101, - 32,40,116,121,112,101,66,117,116,116,111,110,32,61,32,110,101,119,32,84,101,120,116,66,117,116,116,111,110,32,40,84,40,34,84,121,112,101,32,111, - 102,32,116,114,101,101,118,105,101,119,46,46,46,34,41,41,41,59,13,10,32,32,32,32,32,32,32,32,116,121,112,101,66,117,116,116,111,110,45,62, - 97,100,100,66,117,116,116,111,110,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,32,32,32,32,32,32,32,32,116,121,112,101,66, - 117,116,116,111,110,45,62,115,101,116,65,108,119,97,121,115,79,110,84,111,112,32,40,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,116, - 121,112,101,66,117,116,116,111,110,45,62,115,101,116,84,114,105,103,103,101,114,101,100,79,110,77,111,117,115,101,68,111,119,110,32,40,116,114,117,101, - 41,59,13,10,13,10,32,32,32,32,32,32,32,32,115,104,111,119,67,117,115,116,111,109,84,114,101,101,86,105,101,119,40,41,59,13,10,32,32,32, - 32,125,13,10,13,10,32,32,32,32,126,84,114,101,101,86,105,101,119,68,101,109,111,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32, - 32,32,100,101,108,101,116,101,65,108,108,67,104,105,108,100,114,101,110,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101, - 32,114,111,111,116,73,116,101,109,59,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,32,116,114,101,101,88,109,108,59,13,10,32,32,32, - 32,32,32,32,32,100,101,108,101,116,101,32,100,105,114,101,99,116,111,114,121,76,105,115,116,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32, - 32,118,111,105,100,32,112,97,105,110,116,32,40,71,114,97,112,104,105,99,115,38,32,103,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32, - 32,32,103,46,115,101,116,67,111,108,111,117,114,32,40,67,111,108,111,117,114,115,58,58,103,114,101,121,41,59,13,10,13,10,32,32,32,32,32,32, - 32,32,105,102,32,40,116,114,101,101,86,105,101,119,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,46,100,114,97,119, - 82,101,99,116,32,40,116,114,101,101,86,105,101,119,45,62,103,101,116,88,40,41,44,32,116,114,101,101,86,105,101,119,45,62,103,101,116,89,40,41, - 44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,114,101,101,86,105,101,119,45,62,103,101,116, - 87,105,100,116,104,40,41,44,32,116,114,101,101,86,105,101,119,45,62,103,101,116,72,101,105,103,104,116,40,41,41,59,13,10,13,10,32,32,32,32, - 32,32,32,32,105,102,32,40,102,105,108,101,84,114,101,101,67,111,109,112,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 103,46,100,114,97,119,82,101,99,116,32,40,102,105,108,101,84,114,101,101,67,111,109,112,45,62,103,101,116,88,40,41,44,32,102,105,108,101,84,114, - 101,101,67,111,109,112,45,62,103,101,116,89,40,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,102,105,108,101,84,114,101,101,67,111,109,112,45,62,103,101,116,87,105,100,116,104,40,41,44,32,102,105,108,101,84,114,101,101,67,111,109,112,45, - 62,103,101,116,72,101,105,103,104,116,40,41,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,114,101,115,105,122,101, - 100,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102,32,40,116,114,101,101,86,105,101,119,32,33,61,32,48,41,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,116,114,101,101,86,105,101,119,45,62,115,101,116,66,111,117,110,100,115,73,110,115,101,116,32,40,66,111, - 114,100,101,114,83,105,122,101,32,40,52,48,44,32,49,48,44,32,49,48,44,32,49,48,41,41,59,13,10,32,32,32,32,32,32,32,32,101,108,115, - 101,32,105,102,32,40,102,105,108,101,84,114,101,101,67,111,109,112,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,102,105, - 108,101,84,114,101,101,67,111,109,112,45,62,115,101,116,66,111,117,110,100,115,73,110,115,101,116,32,40,66,111,114,100,101,114,83,105,122,101,32,40, - 52,48,44,32,49,48,44,32,49,48,44,32,49,48,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,116,121,112,101,66,117,116,116,111,110,45, - 62,99,104,97,110,103,101,87,105,100,116,104,84,111,70,105,116,84,101,120,116,32,40,50,50,41,59,13,10,32,32,32,32,32,32,32,32,116,121,112, - 101,66,117,116,116,111,110,45,62,115,101,116,84,111,112,76,101,102,116,80,111,115,105,116,105,111,110,32,40,49,48,44,32,49,48,41,59,13,10,32, - 32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,115,104,111,119,67,117,115,116,111,109,84,114,101,101,86,105,101,119,40,41,13,10,32, - 32,32,32,123,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65,110,100,90,101,114,111,32,40,116,114,101,101,86,105,101,119,41,59,13, - 10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65,110,100,90,101,114,111,32,40,102,105,108,101,84,114,101,101,67,111,109,112,41,59,13,10, - 13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,116,114,101,101,86,105,101,119,32,61,32, - 110,101,119,32,84,114,101,101,86,105,101,119,40,41,41,59,13,10,32,32,32,32,32,32,32,32,116,114,101,101,86,105,101,119,45,62,115,101,116,82, - 111,111,116,73,116,101,109,32,40,114,111,111,116,73,116,101,109,41,59,13,10,32,32,32,32,32,32,32,32,116,114,101,101,86,105,101,119,45,62,115, - 101,116,77,117,108,116,105,83,101,108,101,99,116,69,110,97,98,108,101,100,32,40,116,114,117,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32, - 114,101,115,105,122,101,100,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,115,104,111,119,70,105,108,101,84,114, - 101,101,67,111,109,112,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65,110,100,90,101,114,111,32,40, - 116,114,101,101,86,105,101,119,41,59,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65,110,100,90,101,114,111,32,40,102,105,108,101,84, - 114,101,101,67,111,109,112,41,59,13,10,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40, - 102,105,108,101,84,114,101,101,67,111,109,112,32,61,32,110,101,119,32,70,105,108,101,84,114,101,101,67,111,109,112,111,110,101,110,116,32,40,42,100, - 105,114,101,99,116,111,114,121,76,105,115,116,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,114,101,115,105,122,101,100,40,41,59,13,10,32, - 32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,98,117,116,116,111,110,67,108,105,99,107,101,100,32,40,66,117,116,116,111,110,42,41, - 13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,80,111,112,117,112,77,101,110,117,32,109,59,13,10,32,32,32,32,32,32,32,32,109, - 46,97,100,100,73,116,101,109,32,40,49,44,32,84,40,34,67,117,115,116,111,109,32,116,114,101,101,118,105,101,119,32,115,104,111,119,105,110,103,32, - 97,110,32,88,77,76,32,116,114,101,101,34,41,41,59,13,10,32,32,32,32,32,32,32,32,109,46,97,100,100,73,116,101,109,32,40,50,44,32,84, - 40,34,70,105,108,101,84,114,101,101,67,111,109,112,111,110,101,110,116,32,115,104,111,119,105,110,103,32,116,104,101,32,102,105,108,101,32,115,121,115, - 116,101,109,34,41,41,59,13,10,32,32,32,32,32,32,32,32,109,46,97,100,100,83,101,112,97,114,97,116,111,114,40,41,59,13,10,32,32,32,32, - 32,32,32,32,109,46,97,100,100,73,116,101,109,32,40,51,44,32,84,40,34,83,104,111,119,32,114,111,111,116,32,105,116,101,109,34,41,44,32,116, - 114,117,101,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,114,101,101,86,105,101,119,32,33,61,32,48,32,63, - 32,116,114,101,101,86,105,101,119,45,62,105,115,82,111,111,116,73,116,101,109,86,105,115,105,98,108,101,40,41,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,58,32,102,105,108,101,84,114,101,101,67,111,109,112,45, - 62,105,115,82,111,111,116,73,116,101,109,86,105,115,105,98,108,101,40,41,41,59,13,10,32,32,32,32,32,32,32,32,109,46,97,100,100,73,116,101, - 109,32,40,52,44,32,84,40,34,83,104,111,119,32,111,112,101,110,47,99,108,111,115,101,32,98,117,116,116,111,110,115,34,41,44,32,116,114,117,101, - 44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,114,101,101,86,105,101,119,32,33,61,32,48,32,63,32,116,114, - 101,101,86,105,101,119,45,62,97,114,101,79,112,101,110,67,108,111,115,101,66,117,116,116,111,110,115,86,105,115,105,98,108,101,40,41,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,58,32,102,105,108,101,84,114,101, - 101,67,111,109,112,45,62,97,114,101,79,112,101,110,67,108,111,115,101,66,117,116,116,111,110,115,86,105,115,105,98,108,101,40,41,41,59,13,10,13, - 10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,105,110,116,32,114,32,61,32,109,46,115,104,111,119,65,116,32,40,116,121,112,101,66,117,116, - 116,111,110,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,114,32,61,61,32,49,41,13,10,32,32,32,32,32,32,32,32,123,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,115,104,111,119,67,117,115,116,111,109,84,114,101,101,86,105,101,119,40,41,59,13,10,32,32,32,32, - 32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,114,32,61,61,32,50,41,13,10,32,32,32,32,32,32,32, - 32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,115,104,111,119,70,105,108,101,84,114,101,101,67,111,109,112,40,41,59,13,10,32,32,32, - 32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,114,32,61,61,32,51,41,13,10,32,32,32,32,32,32, - 32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,116,114,101,101,86,105,101,119,32,33,61,32,48,41,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,116,114,101,101,86,105,101,119,45,62,115,101,116,82,111,111,116,73,116,101,109,86,105,115,105,98,108, - 101,32,40,33,32,116,114,101,101,86,105,101,119,45,62,105,115,82,111,111,116,73,116,101,109,86,105,115,105,98,108,101,40,41,41,59,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,105,108,101,84,114,101,101, - 67,111,109,112,45,62,115,101,116,82,111,111,116,73,116,101,109,86,105,115,105,98,108,101,32,40,33,32,102,105,108,101,84,114,101,101,67,111,109,112, - 45,62,105,115,82,111,111,116,73,116,101,109,86,105,115,105,98,108,101,40,41,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32, - 32,32,32,32,101,108,115,101,32,105,102,32,40,114,32,61,61,32,52,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,105,102,32,40,116,114,101,101,86,105,101,119,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,116,114,101,101,86,105,101,119,45,62,115,101,116,79,112,101,110,67,108,111,115,101,66,117,116,116,111,110,115,86,105,115,105,98,108,101,32,40,33, - 32,116,114,101,101,86,105,101,119,45,62,97,114,101,79,112,101,110,67,108,111,115,101,66,117,116,116,111,110,115,86,105,115,105,98,108,101,40,41,41, - 59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,105,108, - 101,84,114,101,101,67,111,109,112,45,62,115,101,116,79,112,101,110,67,108,111,115,101,66,117,116,116,111,110,115,86,105,115,105,98,108,101,32,40,33, - 32,102,105,108,101,84,114,101,101,67,111,109,112,45,62,97,114,101,79,112,101,110,67,108,111,115,101,66,117,116,116,111,110,115,86,105,115,105,98,108, - 101,40,41,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,106,117,99,101,95,85,115,101,68, - 101,98,117,103,103,105,110,103,78,101,119,79,112,101,114,97,116,111,114,13,10,125,59,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,67,111,109,112,111,110,101,110,116, - 42,32,99,114,101,97,116,101,84,114,101,101,86,105,101,119,68,101,109,111,40,41,13,10,123,13,10,32,32,32,32,114,101,116,117,114,110,32,110,101, - 119,32,84,114,101,101,86,105,101,119,68,101,109,111,40,41,59,13,10,125,13,10,0,0}; -const char* BinaryData::treeviewdemo_cpp = (const char*) temp12; - -static const unsigned char temp13[] = {47,42,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,13,10,13,10,32,32,32,84,104,105,115,32,102,105,108,101,32,105,115,32,112,97,114,116,32,111,102,32,116,104,101,32,74,85,67,69, - 32,108,105,98,114,97,114,121,32,45,32,34,74,117,108,101,115,39,32,85,116,105,108,105,116,121,32,67,108,97,115,115,32,69,120,116,101,110,115,105, - 111,110,115,34,13,10,32,32,32,67,111,112,121,114,105,103,104,116,32,50,48,48,52,45,57,32,98,121,32,82,97,119,32,77,97,116,101,114,105,97, - 108,32,83,111,102,116,119,97,114,101,32,76,116,100,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,74,85,67,69,32,99,97,110,32,98,101,32,114,101, - 100,105,115,116,114,105,98,117,116,101,100,32,97,110,100,47,111,114,32,109,111,100,105,102,105,101,100,32,117,110,100,101,114,32,116,104,101,32,116,101, - 114,109,115,32,111,102,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,13,10,32,32,32,80,117,98,108,105,99,32,76,105,99,101,110,115, - 101,32,40,86,101,114,115,105,111,110,32,50,41,44,32,97,115,32,112,117,98,108,105,115,104,101,100,32,98,121,32,116,104,101,32,70,114,101,101,32, - 83,111,102,116,119,97,114,101,32,70,111,117,110,100,97,116,105,111,110,46,13,10,32,32,32,65,32,99,111,112,121,32,111,102,32,116,104,101,32,108, - 105,99,101,110,115,101,32,105,115,32,105,110,99,108,117,100,101,100,32,105,110,32,116,104,101,32,74,85,67,69,32,100,105,115,116,114,105,98,117,116, - 105,111,110,44,32,111,114,32,99,97,110,32,98,101,32,102,111,117,110,100,13,10,32,32,32,111,110,108,105,110,101,32,97,116,32,119,119,119,46,103, - 110,117,46,111,114,103,47,108,105,99,101,110,115,101,115,46,13,10,13,10,32,32,32,74,85,67,69,32,105,115,32,100,105,115,116,114,105,98,117,116, - 101,100,32,105,110,32,116,104,101,32,104,111,112,101,32,116,104,97,116,32,105,116,32,119,105,108,108,32,98,101,32,117,115,101,102,117,108,44,32,98, - 117,116,32,87,73,84,72,79,85,84,32,65,78,89,13,10,32,32,32,87,65,82,82,65,78,84,89,59,32,119,105,116,104,111,117,116,32,101,118,101, - 110,32,116,104,101,32,105,109,112,108,105,101,100,32,119,97,114,114,97,110,116,121,32,111,102,32,77,69,82,67,72,65,78,84,65,66,73,76,73,84, - 89,32,111,114,32,70,73,84,78,69,83,83,32,70,79,82,13,10,32,32,32,65,32,80,65,82,84,73,67,85,76,65,82,32,80,85,82,80,79,83, - 69,46,32,32,83,101,101,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,32,80,117,98,108,105,99,32,76,105,99,101,110,115,101,32,102, - 111,114,32,109,111,114,101,32,100,101,116,97,105,108,115,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,84,111,32,114,101,108,101,97,115,101,32,97,32, - 99,108,111,115,101,100,45,115,111,117,114,99,101,32,112,114,111,100,117,99,116,32,119,104,105,99,104,32,117,115,101,115,32,74,85,67,69,44,32,99, - 111,109,109,101,114,99,105,97,108,32,108,105,99,101,110,115,101,115,32,97,114,101,13,10,32,32,32,97,118,97,105,108,97,98,108,101,58,32,118,105, - 115,105,116,32,119,119,119,46,114,97,119,109,97,116,101,114,105,97,108,115,111,102,116,119,97,114,101,46,99,111,109,47,106,117,99,101,32,102,111,114, - 32,109,111,114,101,32,105,110,102,111,114,109,97,116,105,111,110,46,13,10,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,42,47,13,10,13,10,35,105,110,99,108,117,100,101,32,34, - 46,46,47,106,117,99,101,100,101,109,111,95,104,101,97,100,101,114,115,46,104,34,13,10,13,10,35,105,102,32,74,85,67,69,95,87,69,66,95,66, - 82,79,87,83,69,82,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,13,10,47,42,42,32,87,101,39,108,108,32,117,115,101,32,97,32,115,117,98,99,108,97,115,115,32,111,102,32, - 87,101,98,66,114,111,119,115,101,114,67,111,109,112,111,110,101,110,116,32,116,111,32,100,101,109,111,110,115,116,114,97,116,101,32,104,111,119,32,116, - 111,32,103,101,116,32,99,97,108,108,98,97,99,107,115,13,10,32,32,32,32,119,104,101,110,32,116,104,101,32,98,114,111,119,115,101,114,32,99,104, - 97,110,103,101,115,32,85,82,76,46,32,89,111,117,32,100,111,110,39,116,32,110,101,101,100,32,116,111,32,100,111,32,116,104,105,115,44,32,121,111, - 117,32,99,97,110,32,106,117,115,116,32,97,108,115,111,13,10,32,32,32,32,106,117,115,116,32,117,115,101,32,116,104,101,32,87,101,98,66,114,111, - 119,115,101,114,67,111,109,112,111,110,101,110,116,32,99,108,97,115,115,32,100,105,114,101,99,116,108,121,46,13,10,42,47,13,10,99,108,97,115,115, - 32,68,101,109,111,66,114,111,119,115,101,114,67,111,109,112,111,110,101,110,116,32,32,58,32,112,117,98,108,105,99,32,87,101,98,66,114,111,119,115, - 101,114,67,111,109,112,111,110,101,110,116,13,10,123,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,68,101,109,111,66, - 114,111,119,115,101,114,67,111,109,112,111,110,101,110,116,32,40,84,101,120,116,69,100,105,116,111,114,42,32,97,100,100,114,101,115,115,84,101,120,116, - 66,111,120,95,41,13,10,32,32,32,32,32,32,32,32,58,32,97,100,100,114,101,115,115,84,101,120,116,66,111,120,32,40,97,100,100,114,101,115,115, - 84,101,120,116,66,111,120,95,41,13,10,32,32,32,32,123,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47,47,32,84,104,105,115,32,109, - 101,116,104,111,100,32,103,101,116,115,32,99,97,108,108,101,100,32,119,104,101,110,32,116,104,101,32,98,114,111,119,115,101,114,32,105,115,32,97,98, - 111,117,116,32,116,111,32,103,111,32,116,111,32,97,32,110,101,119,32,85,82,76,46,46,13,10,32,32,32,32,98,111,111,108,32,112,97,103,101,65, - 98,111,117,116,84,111,76,111,97,100,32,40,99,111,110,115,116,32,83,116,114,105,110,103,38,32,110,101,119,85,82,76,41,13,10,32,32,32,32,123, - 13,10,32,32,32,32,32,32,32,32,47,47,32,87,101,39,108,108,32,106,117,115,116,32,117,112,100,97,116,101,32,111,117,114,32,97,100,100,114,101, - 115,115,32,98,111,120,32,116,111,32,114,101,102,108,101,99,116,32,116,104,101,32,110,101,119,32,108,111,99,97,116,105,111,110,46,46,13,10,32,32, - 32,32,32,32,32,32,97,100,100,114,101,115,115,84,101,120,116,66,111,120,45,62,115,101,116,84,101,120,116,32,40,110,101,119,85,82,76,44,32,102, - 97,108,115,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,119,101,32,99,111,117,108,100,32,114,101,116,117,114,110,32,102,97,108, - 115,101,32,104,101,114,101,32,116,111,32,116,101,108,108,32,116,104,101,32,98,114,111,119,115,101,114,32,110,111,116,32,116,111,32,103,111,32,97,104, - 101,97,100,32,119,105,116,104,13,10,32,32,32,32,32,32,32,32,47,47,32,108,111,97,100,105,110,103,32,116,104,101,32,112,97,103,101,46,13,10, - 32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,116,114,117,101,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47,47,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32, - 32,106,117,99,101,95,85,115,101,68,101,98,117,103,103,105,110,103,78,101,119,79,112,101,114,97,116,111,114,13,10,13,10,112,114,105,118,97,116,101, - 58,13,10,32,32,32,32,84,101,120,116,69,100,105,116,111,114,42,32,97,100,100,114,101,115,115,84,101,120,116,66,111,120,59,13,10,13,10,32,32, - 32,32,68,101,109,111,66,114,111,119,115,101,114,67,111,109,112,111,110,101,110,116,32,40,68,101,109,111,66,114,111,119,115,101,114,67,111,109,112,111, - 110,101,110,116,38,41,59,13,10,32,32,32,32,99,111,110,115,116,32,68,101,109,111,66,114,111,119,115,101,114,67,111,109,112,111,110,101,110,116,38, - 32,111,112,101,114,97,116,111,114,61,32,40,99,111,110,115,116,32,68,101,109,111,66,114,111,119,115,101,114,67,111,109,112,111,110,101,110,116,38,41, - 59,13,10,125,59,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,87,101,98,66,114,111,119,115,101,114,68,101,109,111,32,32,32,58,32,112,117, - 98,108,105,99,32,67,111,109,112,111,110,101,110,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,112,117,98,108,105,99,32,84,101,120,116,69,100,105,116,111,114,76,105,115,116,101,110,101,114,44,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,66,117,116,116,111,110,76,105,115,116,101,110,101,114,13,10,123,13, - 10,112,117,98,108,105,99,58,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,87,101,98,66,114,111,119,115,101,114,68,101,109,111,40,41,13,10,32,32, - 32,32,123,13,10,32,32,32,32,32,32,32,32,115,101,116,78,97,109,101,32,40,34,87,101,98,32,66,114,111,119,115,101,114,34,41,59,13,10,13, - 10,32,32,32,32,32,32,32,32,47,47,32,67,114,101,97,116,101,32,97,110,32,97,100,100,114,101,115,115,32,98,111,120,46,46,13,10,32,32,32, - 32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,97,100,100,114,101,115,115,84,101,120,116,66,111,120,32,61, - 32,110,101,119,32,84,101,120,116,69,100,105,116,111,114,40,41,41,59,13,10,32,32,32,32,32,32,32,32,97,100,100,114,101,115,115,84,101,120,116, - 66,111,120,45,62,115,101,116,84,101,120,116,84,111,83,104,111,119,87,104,101,110,69,109,112,116,121,32,40,34,69,110,116,101,114,32,97,32,119,101, - 98,32,97,100,100,114,101,115,115,44,32,101,46,103,46,32,104,116,116,112,58,47,47,119,119,119,46,114,97,119,109,97,116,101,114,105,97,108,115,111, - 102,116,119,97,114,101,46,99,111,109,34,44,32,67,111,108,111,117,114,115,58,58,103,114,101,121,41,59,13,10,32,32,32,32,32,32,32,32,97,100, - 100,114,101,115,115,84,101,120,116,66,111,120,45,62,97,100,100,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,13,10,32,32,32, - 32,32,32,32,32,47,47,32,99,114,101,97,116,101,32,116,104,101,32,97,99,116,117,97,108,32,98,114,111,119,115,101,114,32,99,111,109,112,111,110, - 101,110,116,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,119,101,98,86,105,101,119,32, - 61,32,110,101,119,32,68,101,109,111,66,114,111,119,115,101,114,67,111,109,112,111,110,101,110,116,32,40,97,100,100,114,101,115,115,84,101,120,116,66, - 111,120,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,97,100,100,32,115,111,109,101,32,98,117,116,116,111,110,115,46,46,13,10, - 32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,103,111,66,117,116,116,111,110,32,61,32,110,101, - 119,32,84,101,120,116,66,117,116,116,111,110,32,40,34,71,111,34,44,32,34,71,111,32,116,111,32,85,82,76,34,41,41,59,13,10,32,32,32,32, - 32,32,32,32,103,111,66,117,116,116,111,110,45,62,97,100,100,66,117,116,116,111,110,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13, - 10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,98,97,99,107,66,117,116,116,111,110,32,61, - 32,110,101,119,32,84,101,120,116,66,117,116,116,111,110,32,40,34,60,60,34,44,32,34,66,97,99,107,34,41,41,59,13,10,32,32,32,32,32,32, - 32,32,98,97,99,107,66,117,116,116,111,110,45,62,97,100,100,66,117,116,116,111,110,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13, - 10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,102,111,114,119,97,114,100,66,117,116,116,111, - 110,32,61,32,110,101,119,32,84,101,120,116,66,117,116,116,111,110,32,40,34,62,62,34,44,32,34,70,111,114,119,97,114,100,34,41,41,59,13,10, - 32,32,32,32,32,32,32,32,102,111,114,119,97,114,100,66,117,116,116,111,110,45,62,97,100,100,66,117,116,116,111,110,76,105,115,116,101,110,101,114, - 32,40,116,104,105,115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,115,101,110,100,32,116,104,101,32,98,114,111,119,115,101,114,32, - 116,111,32,97,32,115,116,97,114,116,32,112,97,103,101,46,46,13,10,32,32,32,32,32,32,32,32,119,101,98,86,105,101,119,45,62,103,111,84,111, - 85,82,76,32,40,34,104,116,116,112,58,47,47,119,119,119,46,103,111,111,103,108,101,46,99,111,109,34,41,59,13,10,32,32,32,32,125,13,10,13, - 10,32,32,32,32,126,87,101,98,66,114,111,119,115,101,114,68,101,109,111,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,100, - 101,108,101,116,101,65,108,108,67,104,105,108,100,114,101,110,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,114, - 101,115,105,122,101,100,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,119,101,98,86,105,101,119,45,62,115,101,116,66,111,117, - 110,100,115,32,40,49,48,44,32,52,53,44,32,103,101,116,87,105,100,116,104,40,41,32,45,32,50,48,44,32,103,101,116,72,101,105,103,104,116,40, - 41,32,45,32,53,53,41,59,13,10,32,32,32,32,32,32,32,32,103,111,66,117,116,116,111,110,45,62,115,101,116,66,111,117,110,100,115,32,40,103, - 101,116,87,105,100,116,104,40,41,32,45,32,52,53,44,32,49,48,44,32,51,53,44,32,50,53,41,59,13,10,32,32,32,32,32,32,32,32,97,100, - 100,114,101,115,115,84,101,120,116,66,111,120,45,62,115,101,116,66,111,117,110,100,115,32,40,49,48,48,44,32,49,48,44,32,103,101,116,87,105,100, - 116,104,40,41,32,45,32,49,53,53,44,32,50,53,41,59,13,10,32,32,32,32,32,32,32,32,98,97,99,107,66,117,116,116,111,110,45,62,115,101, - 116,66,111,117,110,100,115,32,40,49,48,44,32,49,48,44,32,51,53,44,32,50,53,41,59,13,10,32,32,32,32,32,32,32,32,102,111,114,119,97, - 114,100,66,117,116,116,111,110,45,62,115,101,116,66,111,117,110,100,115,32,40,53,53,44,32,49,48,44,32,51,53,44,32,50,53,41,59,13,10,32, - 32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,116,101,120,116,69,100,105,116,111,114,84,101,120,116,67,104,97,110,103,101,100,32,40, - 84,101,120,116,69,100,105,116,111,114,38,32,101,100,105,116,111,114,41,32,32,32,32,32,32,32,32,32,32,32,32,32,123,125,13,10,32,32,32,32, - 118,111,105,100,32,116,101,120,116,69,100,105,116,111,114,69,115,99,97,112,101,75,101,121,80,114,101,115,115,101,100,32,40,84,101,120,116,69,100,105, - 116,111,114,38,32,101,100,105,116,111,114,41,32,32,32,32,32,32,32,32,123,125,13,10,32,32,32,32,118,111,105,100,32,116,101,120,116,69,100,105, - 116,111,114,70,111,99,117,115,76,111,115,116,32,40,84,101,120,116,69,100,105,116,111,114,38,32,101,100,105,116,111,114,41,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,123,125,13,10,13,10,32,32,32,32,118,111,105,100,32,116,101,120,116,69,100,105,116,111,114,82,101,116,117,114,110,75, - 101,121,80,114,101,115,115,101,100,32,40,84,101,120,116,69,100,105,116,111,114,38,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32, - 119,101,98,86,105,101,119,45,62,103,111,84,111,85,82,76,32,40,97,100,100,114,101,115,115,84,101,120,116,66,111,120,45,62,103,101,116,84,101,120, - 116,40,41,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,98,117,116,116,111,110,67,108,105,99,107,101,100,32,40, - 66,117,116,116,111,110,42,32,98,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102,32,40,98,32,61,61,32,98,97,99,107, - 66,117,116,116,111,110,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,119,101,98,86,105,101,119,45,62,103,111,66,97,99,107,40,41,59,13, - 10,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,98,32,61,61,32,102,111,114,119,97,114,100,66,117,116,116,111,110,41,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,119,101,98,86,105,101,119,45,62,103,111,70,111,114,119,97,114,100,40,41,59,13,10,32,32,32,32,32,32, - 32,32,101,108,115,101,32,105,102,32,40,98,32,61,61,32,103,111,66,117,116,116,111,110,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,119, - 101,98,86,105,101,119,45,62,103,111,84,111,85,82,76,32,40,97,100,100,114,101,115,115,84,101,120,116,66,111,120,45,62,103,101,116,84,101,120,116, - 40,41,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,106,117,99,101,95,85,115,101,68,101,98,117,103,103,105,110,103,78,101,119,79, - 112,101,114,97,116,111,114,13,10,13,10,112,114,105,118,97,116,101,58,13,10,32,32,32,32,68,101,109,111,66,114,111,119,115,101,114,67,111,109,112, - 111,110,101,110,116,42,32,119,101,98,86,105,101,119,59,13,10,13,10,32,32,32,32,84,101,120,116,69,100,105,116,111,114,42,32,97,100,100,114,101, - 115,115,84,101,120,116,66,111,120,59,13,10,32,32,32,32,84,101,120,116,66,117,116,116,111,110,42,32,103,111,66,117,116,116,111,110,59,13,10,32, - 32,32,32,84,101,120,116,66,117,116,116,111,110,42,32,98,97,99,107,66,117,116,116,111,110,59,13,10,32,32,32,32,84,101,120,116,66,117,116,116, - 111,110,42,32,102,111,114,119,97,114,100,66,117,116,116,111,110,59,13,10,125,59,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,67,111,109,112,111,110,101,110,116,42, - 32,99,114,101,97,116,101,87,101,98,66,114,111,119,115,101,114,68,101,109,111,40,41,13,10,123,13,10,32,32,32,32,114,101,116,117,114,110,32,110, - 101,119,32,87,101,98,66,114,111,119,115,101,114,68,101,109,111,40,41,59,13,10,125,13,10,13,10,35,101,110,100,105,102,13,10,0,0}; -const char* BinaryData::webbrowserdemo_cpp = (const char*) temp13; - -static const unsigned char temp14[] = {47,42,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,13,10,13,10,32,32,32,84,104,105,115,32,102,105,108,101,32,105,115,32,112,97,114,116,32,111,102,32,116,104,101,32,74,85,67,69, - 32,108,105,98,114,97,114,121,32,45,32,34,74,117,108,101,115,39,32,85,116,105,108,105,116,121,32,67,108,97,115,115,32,69,120,116,101,110,115,105, - 111,110,115,34,13,10,32,32,32,67,111,112,121,114,105,103,104,116,32,50,48,48,52,45,57,32,98,121,32,82,97,119,32,77,97,116,101,114,105,97, - 108,32,83,111,102,116,119,97,114,101,32,76,116,100,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,74,85,67,69,32,99,97,110,32,98,101,32,114,101, - 100,105,115,116,114,105,98,117,116,101,100,32,97,110,100,47,111,114,32,109,111,100,105,102,105,101,100,32,117,110,100,101,114,32,116,104,101,32,116,101, - 114,109,115,32,111,102,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,13,10,32,32,32,80,117,98,108,105,99,32,76,105,99,101,110,115, - 101,32,40,86,101,114,115,105,111,110,32,50,41,44,32,97,115,32,112,117,98,108,105,115,104,101,100,32,98,121,32,116,104,101,32,70,114,101,101,32, - 83,111,102,116,119,97,114,101,32,70,111,117,110,100,97,116,105,111,110,46,13,10,32,32,32,65,32,99,111,112,121,32,111,102,32,116,104,101,32,108, - 105,99,101,110,115,101,32,105,115,32,105,110,99,108,117,100,101,100,32,105,110,32,116,104,101,32,74,85,67,69,32,100,105,115,116,114,105,98,117,116, - 105,111,110,44,32,111,114,32,99,97,110,32,98,101,32,102,111,117,110,100,13,10,32,32,32,111,110,108,105,110,101,32,97,116,32,119,119,119,46,103, - 110,117,46,111,114,103,47,108,105,99,101,110,115,101,115,46,13,10,13,10,32,32,32,74,85,67,69,32,105,115,32,100,105,115,116,114,105,98,117,116, - 101,100,32,105,110,32,116,104,101,32,104,111,112,101,32,116,104,97,116,32,105,116,32,119,105,108,108,32,98,101,32,117,115,101,102,117,108,44,32,98, - 117,116,32,87,73,84,72,79,85,84,32,65,78,89,13,10,32,32,32,87,65,82,82,65,78,84,89,59,32,119,105,116,104,111,117,116,32,101,118,101, - 110,32,116,104,101,32,105,109,112,108,105,101,100,32,119,97,114,114,97,110,116,121,32,111,102,32,77,69,82,67,72,65,78,84,65,66,73,76,73,84, - 89,32,111,114,32,70,73,84,78,69,83,83,32,70,79,82,13,10,32,32,32,65,32,80,65,82,84,73,67,85,76,65,82,32,80,85,82,80,79,83, - 69,46,32,32,83,101,101,32,116,104,101,32,71,78,85,32,71,101,110,101,114,97,108,32,80,117,98,108,105,99,32,76,105,99,101,110,115,101,32,102, - 111,114,32,109,111,114,101,32,100,101,116,97,105,108,115,46,13,10,13,10,32,32,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,13,10,13,10,32,32,32,84,111,32,114,101,108,101,97,115,101,32,97,32, - 99,108,111,115,101,100,45,115,111,117,114,99,101,32,112,114,111,100,117,99,116,32,119,104,105,99,104,32,117,115,101,115,32,74,85,67,69,44,32,99, - 111,109,109,101,114,99,105,97,108,32,108,105,99,101,110,115,101,115,32,97,114,101,13,10,32,32,32,97,118,97,105,108,97,98,108,101,58,32,118,105, - 115,105,116,32,119,119,119,46,114,97,119,109,97,116,101,114,105,97,108,115,111,102,116,119,97,114,101,46,99,111,109,47,106,117,99,101,32,102,111,114, - 32,109,111,114,101,32,105,110,102,111,114,109,97,116,105,111,110,46,13,10,13,10,32,32,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,42,47,13,10,13,10,35,105,110,99,108,117,100,101,32,34, - 46,46,47,106,117,99,101,100,101,109,111,95,104,101,97,100,101,114,115,46,104,34,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,66,111,117,110, - 99,105,110,103,66,97,108,108,67,111,109,112,111,110,101,110,116,32,58,32,112,117,98,108,105,99,32,67,111,109,112,111,110,101,110,116,44,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,84,105,109,101, - 114,13,10,123,13,10,32,32,32,32,67,111,108,111,117,114,32,99,111,108,111,117,114,59,13,10,32,32,32,32,102,108,111,97,116,32,120,44,32,121, - 44,32,100,120,44,32,100,121,59,13,10,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,66,111,117,110,99,105,110,103,66,97,108,108,67,111, - 109,112,111,110,101,110,116,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,120,32,61,32,82,97,110,100,111,109,58,58,103,101, - 116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,70,108,111,97,116,40,41,32,42,32,49,48,48,46,48,102,59,13,10,32, - 32,32,32,32,32,32,32,121,32,61,32,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120, - 116,70,108,111,97,116,40,41,32,42,32,49,48,48,46,48,102,59,13,10,13,10,32,32,32,32,32,32,32,32,100,120,32,61,32,82,97,110,100,111, - 109,58,58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,70,108,111,97,116,40,41,32,42,32,56,46,48,102,32, - 45,32,52,46,48,102,59,13,10,32,32,32,32,32,32,32,32,100,121,32,61,32,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109,82, - 97,110,100,111,109,40,41,46,110,101,120,116,70,108,111,97,116,40,41,32,42,32,56,46,48,102,32,45,32,52,46,48,102,59,13,10,13,10,32,32, - 32,32,32,32,32,32,99,111,108,111,117,114,32,61,32,67,111,108,111,117,114,32,40,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109, - 82,97,110,100,111,109,40,41,46,110,101,120,116,73,110,116,40,41,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,46,119,105,116,104,65,108,112,104,97,32,40,48,46,53,102,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 46,119,105,116,104,66,114,105,103,104,116,110,101,115,115,32,40,48,46,55,102,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,110,116,32,115, - 105,122,101,32,61,32,49,48,32,43,32,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120, - 116,73,110,116,32,40,51,48,41,59,13,10,32,32,32,32,32,32,32,32,115,101,116,83,105,122,101,32,40,115,105,122,101,44,32,115,105,122,101,41, - 59,13,10,13,10,32,32,32,32,32,32,32,32,115,116,97,114,116,84,105,109,101,114,32,40,54,48,41,59,13,10,32,32,32,32,125,13,10,13,10, - 32,32,32,32,126,66,111,117,110,99,105,110,103,66,97,108,108,67,111,109,112,111,110,101,110,116,40,41,13,10,32,32,32,32,123,13,10,32,32,32, - 32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,112,97,105,110,116,32,40,71,114,97,112,104,105,99,115,38,32,103,41,13,10,32,32,32,32, - 123,13,10,32,32,32,32,32,32,32,32,103,46,115,101,116,67,111,108,111,117,114,32,40,99,111,108,111,117,114,41,59,13,10,32,32,32,32,32,32, - 32,32,103,46,102,105,108,108,69,108,108,105,112,115,101,32,40,120,32,45,32,103,101,116,88,40,41,44,32,121,32,45,32,103,101,116,89,40,41,44, - 32,103,101,116,87,105,100,116,104,40,41,32,45,32,50,46,48,102,44,32,103,101,116,72,101,105,103,104,116,40,41,32,45,32,50,46,48,102,41,59, - 13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,116,105,109,101,114,67,97,108,108,98,97,99,107,40,41,13,10,32,32,32, - 32,123,13,10,32,32,32,32,32,32,32,32,120,32,43,61,32,100,120,59,13,10,32,32,32,32,32,32,32,32,121,32,43,61,32,100,121,59,13,10, - 13,10,32,32,32,32,32,32,32,32,105,102,32,40,120,32,60,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,120,32,61,32,102, - 97,98,115,102,32,40,100,120,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,120,32,62,32,103,101,116,80,97,114,101,110,116,87, - 105,100,116,104,40,41,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,120,32,61,32,45,102,97,98,115,102,32,40,100,120,41,59,13,10, - 13,10,32,32,32,32,32,32,32,32,105,102,32,40,121,32,60,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,121,32,61,32,102, - 97,98,115,102,32,40,100,121,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,121,32,62,32,103,101,116,80,97,114,101,110,116,72, - 101,105,103,104,116,40,41,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,121,32,61,32,45,102,97,98,115,102,32,40,100,121,41,59,13, - 10,13,10,32,32,32,32,32,32,32,32,115,101,116,84,111,112,76,101,102,116,80,111,115,105,116,105,111,110,32,40,40,105,110,116,41,32,120,44,32, - 40,105,110,116,41,32,121,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,98,111,111,108,32,104,105,116,84,101,115,116,32,40,105,110, - 116,32,120,44,32,105,110,116,32,121,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,102,97,108,115,101, - 59,13,10,32,32,32,32,125,13,10,125,59,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,68,114,97,103,79,110,116,111,68,101,115,107,116,111,112,68, - 101,109,111,67,111,109,112,32,58,32,112,117,98,108,105,99,32,67,111,109,112,111,110,101,110,116,13,10,123,13,10,32,32,32,32,67,111,109,112,111, - 110,101,110,116,42,32,112,97,114,101,110,116,59,13,10,32,32,32,32,67,111,109,112,111,110,101,110,116,68,114,97,103,103,101,114,32,100,114,97,103, - 103,101,114,59,13,10,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,68,114,97,103,79,110,116,111,68,101,115,107,116,111,112,68,101,109,111, - 67,111,109,112,32,40,67,111,109,112,111,110,101,110,116,42,32,112,41,13,10,32,32,32,32,32,32,32,32,58,32,112,97,114,101,110,116,32,40,112, - 41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,115,104,111,119,32,111,102,102,32,115,101,109,105,45,116,114,97,110,115, - 112,97,114,101,110,99,121,32,105,102,32,105,116,39,115,32,115,117,112,112,111,114,116,101,100,32,98,121,32,116,104,101,32,99,117,114,114,101,110,116, - 32,79,83,46,13,10,32,32,32,32,32,32,32,32,115,101,116,79,112,97,113,117,101,32,40,33,32,68,101,115,107,116,111,112,58,58,99,97,110,85, - 115,101,83,101,109,105,84,114,97,110,115,112,97,114,101,110,116,87,105,110,100,111,119,115,40,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32, - 102,111,114,32,40,105,110,116,32,105,32,61,32,51,59,32,45,45,105,32,62,61,32,48,59,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,110,101,119,32,66,111,117,110,99,105,110,103,66,97,108,108,67,111,109,112,111, - 110,101,110,116,40,41,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,68,114,97,103,79,110,116,111,68,101,115,107,116,111,112,68, - 101,109,111,67,111,109,112,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65,108,108,67,104,105,108,100, - 114,101,110,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,109,111,117,115,101,68,111,119,110,32,40,99,111,110, - 115,116,32,77,111,117,115,101,69,118,101,110,116,38,32,101,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,100,114,97,103,103,101, - 114,46,115,116,97,114,116,68,114,97,103,103,105,110,103,67,111,109,112,111,110,101,110,116,32,40,116,104,105,115,44,32,48,41,59,13,10,32,32,32, - 32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,109,111,117,115,101,68,114,97,103,32,40,99,111,110,115,116,32,77,111,117,115,101,69,118,101, - 110,116,38,32,101,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102,32,40,33,32,112,97,114,101,110,116,45,62,105,115,86, - 97,108,105,100,67,111,109,112,111,110,101,110,116,40,41,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,100,101,108,101,116,101,32,116,104,105,115,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,13,10, - 32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,77,111,117,115,101,69,118,101,110,116,32,101,50,32,40,101,46, - 103,101,116,69,118,101,110,116,82,101,108,97,116,105,118,101,84,111,32,40,112,97,114,101,110,116,41,41,59,13,10,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,47,47,32,105,102,32,116,104,101,32,109,111,117,115,101,32,105,115,32,105,110,115,105,100,101,32,116,104,101,32,112,97,114,101,110, - 116,32,99,111,109,112,111,110,101,110,116,44,32,119,101,39,108,108,32,109,97,107,101,32,116,104,97,116,32,116,104,101,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,47,47,32,112,97,114,101,110,116,32,45,32,111,116,104,101,114,119,105,115,101,44,32,119,101,39,108,108,32,112,117,116,32,116, - 104,105,115,32,99,111,109,112,32,111,110,32,116,104,101,32,100,101,115,107,116,111,112,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102, - 32,40,101,50,46,120,32,62,61,32,48,32,38,38,32,101,50,46,121,32,62,61,32,48,32,38,38,32,101,50,46,120,32,60,32,112,97,114,101,110, - 116,45,62,103,101,116,87,105,100,116,104,40,41,32,38,38,32,101,50,46,121,32,60,32,112,97,114,101,110,116,45,62,103,101,116,72,101,105,103,104, - 116,40,41,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32, - 114,101,45,97,100,100,32,116,104,105,115,32,99,111,109,112,111,110,101,110,116,32,116,111,32,97,32,112,97,114,101,110,116,32,99,111,109,112,111,110, - 101,110,116,44,32,119,104,105,99,104,32,119,105,108,108,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,114,101,109,111, - 118,101,32,105,116,32,102,114,111,109,32,116,104,101,32,100,101,115,107,116,111,112,46,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,112,97,114,101,110,116,45,62,97,100,100,67,104,105,108,100,67,111,109,112,111,110,101,110,116,32,40,116,104,105,115,41,59,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,97,100,100,32,116,104,101,32,99,111,109,112,111,110,101,110, - 116,32,116,111,32,116,104,101,32,100,101,115,107,116,111,112,44,32,119,104,105,99,104,32,119,105,108,108,32,114,101,109,111,118,101,32,105,116,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,102,114,111,109,32,105,116,115,32,99,117,114,114,101,110,116,32,112,97,114,101, - 110,116,32,99,111,109,112,111,110,101,110,116,46,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,100,100,84,111,68,101,115, - 107,116,111,112,32,40,67,111,109,112,111,110,101,110,116,80,101,101,114,58,58,119,105,110,100,111,119,73,115,84,101,109,112,111,114,97,114,121,41,59, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,114,97,103,103,101,114,46,100, - 114,97,103,67,111,109,112,111,110,101,110,116,32,40,116,104,105,115,44,32,101,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32, - 125,13,10,13,10,32,32,32,32,118,111,105,100,32,112,97,105,110,116,32,40,71,114,97,112,104,105,99,115,38,32,103,41,13,10,32,32,32,32,123, - 13,10,32,32,32,32,32,32,32,32,105,102,32,40,105,115,79,112,97,113,117,101,40,41,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,103, - 46,102,105,108,108,65,108,108,32,40,67,111,108,111,117,114,115,58,58,119,104,105,116,101,41,59,13,10,32,32,32,32,32,32,32,32,101,108,115,101, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,103,46,102,105,108,108,65,108,108,32,40,67,111,108,111,117,114,115,58,58,98,108,117,101,46,119, - 105,116,104,65,108,112,104,97,32,40,48,46,50,102,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,83,116,114,105,110,103,32,100,101,115,99, - 32,40,84,40,34,100,114,97,103,32,116,104,105,115,32,98,111,120,32,111,110,116,111,32,116,104,101,32,100,101,115,107,116,111,112,32,116,111,32,115, - 104,111,119,32,104,111,119,32,116,104,101,32,115,97,109,101,32,99,111,109,112,111,110,101,110,116,32,99,97,110,32,109,111,118,101,32,102,114,111,109, - 32,98,101,105,110,103,32,108,105,103,104,116,119,101,105,103,104,116,32,116,111,32,98,101,105,110,103,32,97,32,115,101,112,97,114,97,116,101,32,119, - 105,110,100,111,119,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,103,46,115,101,116,70,111,110,116,32,40,49,53,46,48,102,41,59,13, - 10,32,32,32,32,32,32,32,32,103,46,115,101,116,67,111,108,111,117,114,32,40,67,111,108,111,117,114,115,58,58,98,108,97,99,107,41,59,13,10, - 32,32,32,32,32,32,32,32,103,46,100,114,97,119,70,105,116,116,101,100,84,101,120,116,32,40,100,101,115,99,44,32,52,44,32,48,44,32,103,101, - 116,87,105,100,116,104,40,41,32,45,32,56,44,32,103,101,116,72,101,105,103,104,116,40,41,44,32,74,117,115,116,105,102,105,99,97,116,105,111,110, - 58,58,104,111,114,105,122,111,110,116,97,108,108,121,74,117,115,116,105,102,105,101,100,44,32,53,41,59,13,10,13,10,32,32,32,32,32,32,32,32, - 103,46,100,114,97,119,82,101,99,116,32,40,48,44,32,48,44,32,103,101,116,87,105,100,116,104,40,41,44,32,103,101,116,72,101,105,103,104,116,40, - 41,41,59,13,10,32,32,32,32,125,13,10,125,59,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,67,117,115,116,111,109,77,101,110,117,67,111,109,112, - 111,110,101,110,116,32,32,58,32,112,117,98,108,105,99,32,80,111,112,117,112,77,101,110,117,67,117,115,116,111,109,67,111,109,112,111,110,101,110,116, - 44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,84, - 105,109,101,114,13,10,123,13,10,32,32,32,32,105,110,116,32,98,108,111,98,88,44,32,98,108,111,98,89,59,13,10,13,10,112,117,98,108,105,99, - 58,13,10,32,32,32,32,67,117,115,116,111,109,77,101,110,117,67,111,109,112,111,110,101,110,116,40,41,13,10,32,32,32,32,32,32,32,32,58,32, - 98,108,111,98,88,32,40,48,41,44,13,10,32,32,32,32,32,32,32,32,32,32,98,108,111,98,89,32,40,48,41,13,10,32,32,32,32,123,13,10, - 32,32,32,32,32,32,32,32,47,47,32,115,101,116,32,111,102,102,32,97,32,116,105,109,101,114,32,116,111,32,109,111,118,101,32,97,32,98,108,111, - 98,32,97,114,111,117,110,100,32,111,110,32,116,104,105,115,32,99,111,109,112,111,110,101,110,116,32,101,118,101,114,121,13,10,32,32,32,32,32,32, - 32,32,47,47,32,51,48,48,32,109,105,108,108,105,115,101,99,111,110,100,115,32,45,32,115,101,101,32,116,104,101,32,116,105,109,101,114,67,97,108, - 108,98,97,99,107,40,41,32,109,101,116,104,111,100,46,13,10,32,32,32,32,32,32,32,32,115,116,97,114,116,84,105,109,101,114,32,40,51,48,48, - 41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,67,117,115,116,111,109,77,101,110,117,67,111,109,112,111,110,101,110,116,40,41,13, - 10,32,32,32,32,123,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,103,101,116,73,100,101,97,108,83,105,122,101,32,40, - 105,110,116,38,32,105,100,101,97,108,87,105,100,116,104,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,105,110,116,38,32,105,100,101,97,108,72,101,105,103,104,116,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,116,101, - 108,108,115,32,116,104,101,32,109,101,110,117,32,104,111,119,32,98,105,103,32,119,101,39,100,32,108,105,107,101,32,116,111,32,98,101,46,46,13,10, - 32,32,32,32,32,32,32,32,105,100,101,97,108,87,105,100,116,104,32,61,32,50,48,48,59,13,10,32,32,32,32,32,32,32,32,105,100,101,97,108, - 72,101,105,103,104,116,32,61,32,54,48,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,112,97,105,110,116,32,40,71, - 114,97,112,104,105,99,115,38,32,103,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,103,46,102,105,108,108,65,108,108,32,40,67, - 111,108,111,117,114,115,58,58,121,101,108,108,111,119,46,119,105,116,104,65,108,112,104,97,32,40,48,46,51,102,41,41,59,13,10,13,10,32,32,32, - 32,32,32,32,32,103,46,115,101,116,67,111,108,111,117,114,32,40,67,111,108,111,117,114,115,58,58,112,105,110,107,41,59,13,10,32,32,32,32,32, - 32,32,32,103,46,102,105,108,108,69,108,108,105,112,115,101,32,40,40,102,108,111,97,116,41,32,98,108,111,98,88,44,32,40,102,108,111,97,116,41, - 32,98,108,111,98,89,44,32,51,48,46,48,102,44,32,52,48,46,48,102,41,59,13,10,13,10,32,32,32,32,32,32,32,32,103,46,115,101,116,70, - 111,110,116,32,40,49,52,46,48,102,44,32,70,111,110,116,58,58,105,116,97,108,105,99,41,59,13,10,32,32,32,32,32,32,32,32,103,46,115,101, - 116,67,111,108,111,117,114,32,40,67,111,108,111,117,114,115,58,58,98,108,97,99,107,41,59,13,10,13,10,32,32,32,32,32,32,32,32,103,46,100, - 114,97,119,70,105,116,116,101,100,84,101,120,116,32,40,84,40,34,116,104,105,115,32,105,115,32,97,32,99,117,115,116,111,109,105,115,101,100,32,109, - 101,110,117,32,105,116,101,109,32,40,97,108,115,111,32,100,101,109,111,110,115,116,114,97,116,105,110,103,32,116,104,101,32,84,105,109,101,114,32,99, - 108,97,115,115,41,46,46,46,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,52, - 44,32,48,44,32,103,101,116,87,105,100,116,104,40,41,32,45,32,56,44,32,103,101,116,72,101,105,103,104,116,40,41,44,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,74,117,115,116,105,102,105,99,97,116,105,111,110,58,58,99,101,110,116, - 114,101,100,44,32,51,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,116,105,109,101,114,67,97,108,108,98,97,99, - 107,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,98,108,111,98,88,32,61,32,82,97,110,100,111,109,58,58,103,101,116,83, - 121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,73,110,116,32,40,103,101,116,87,105,100,116,104,40,41,41,59,13,10,32,32,32, - 32,32,32,32,32,98,108,111,98,89,32,61,32,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110, - 101,120,116,73,110,116,32,40,103,101,116,72,101,105,103,104,116,40,41,41,59,13,10,32,32,32,32,32,32,32,32,114,101,112,97,105,110,116,40,41, - 59,13,10,32,32,32,32,125,13,10,125,59,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,47,42,42,32,84,111,32,100,101,109,111,110,115,116,114,97,116,101,32,104,111,119, - 32,115,108,105,100,101,114,115,32,99,97,110,32,104,97,118,101,32,99,117,115,116,111,109,32,115,110,97,112,112,105,110,103,32,97,112,112,108,105,101, - 100,32,116,111,32,116,104,101,105,114,32,118,97,108,117,101,115,44,13,10,32,32,32,32,116,104,105,115,32,115,105,109,112,108,101,32,99,108,97,115, - 115,32,115,110,97,112,115,32,116,104,101,32,118,97,108,117,101,32,116,111,32,53,48,32,105,102,32,105,116,32,99,111,109,101,115,32,110,101,97,114, - 46,13,10,42,47,13,10,99,108,97,115,115,32,83,110,97,112,112,105,110,103,83,108,105,100,101,114,32,32,58,32,112,117,98,108,105,99,32,83,108, - 105,100,101,114,13,10,123,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,83,110,97,112,112,105,110,103,83,108,105,100,101,114,32,40,99,111, - 110,115,116,32,83,116,114,105,110,103,38,32,110,97,109,101,41,13,10,32,32,32,32,32,32,32,32,58,32,83,108,105,100,101,114,32,40,110,97,109, - 101,41,13,10,32,32,32,32,123,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,100,111,117,98,108,101,32,115,110,97,112,86,97,108,117,101, - 32,40,100,111,117,98,108,101,32,97,116,116,101,109,112,116,101,100,86,97,108,117,101,44,32,99,111,110,115,116,32,98,111,111,108,32,117,115,101,114, - 73,115,68,114,97,103,103,105,110,103,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102,32,40,33,32,117,115,101,114,73,115, - 68,114,97,103,103,105,110,103,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,97,116,116,101,109,112,116,101,100,86, - 97,108,117,101,59,32,32,47,47,32,105,102,32,116,104,101,121,39,114,101,32,101,110,116,101,114,105,110,103,32,116,104,101,32,118,97,108,117,101,32, - 105,110,32,116,104,101,32,116,101,120,116,45,98,111,120,44,32,100,111,110,39,116,32,109,101,115,115,32,119,105,116,104,32,105,116,46,13,10,13,10, - 32,32,32,32,32,32,32,32,105,102,32,40,97,116,116,101,109,112,116,101,100,86,97,108,117,101,32,62,32,52,48,32,38,38,32,97,116,116,101,109, - 112,116,101,100,86,97,108,117,101,32,60,32,54,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,53,48,46,48, - 59,13,10,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,97,116,116,101, - 109,112,116,101,100,86,97,108,117,101,59,13,10,32,32,32,32,125,13,10,125,59,13,10,13,10,47,42,42,32,65,32,84,101,120,116,66,117,116,116, - 111,110,32,116,104,97,116,32,112,111,112,115,32,117,112,32,97,32,99,111,108,111,117,114,32,99,104,111,111,115,101,114,32,116,111,32,99,104,97,110, - 103,101,32,105,116,115,32,99,111,108,111,117,114,115,46,32,42,47,13,10,99,108,97,115,115,32,67,111,108,111,117,114,67,104,97,110,103,101,66,117, - 116,116,111,110,32,32,58,32,112,117,98,108,105,99,32,84,101,120,116,66,117,116,116,111,110,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,67,104,97,110,103,101,76,105,115,116,101,110,101,114,13,10,123, - 13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,67,111,108,111,117,114,67,104,97,110,103,101,66,117,116,116,111,110,40,41,13,10,32,32,32, - 32,32,32,32,32,58,32,84,101,120,116,66,117,116,116,111,110,32,40,84,40,34,99,108,105,99,107,32,116,111,32,99,104,97,110,103,101,32,99,111, - 108,111,117,114,46,46,46,34,41,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,115,101,116,83,105,122,101,32,40,49,48,44,32, - 50,52,41,59,13,10,32,32,32,32,32,32,32,32,99,104,97,110,103,101,87,105,100,116,104,84,111,70,105,116,84,101,120,116,40,41,59,13,10,32, - 32,32,32,125,13,10,13,10,32,32,32,32,126,67,111,108,111,117,114,67,104,97,110,103,101,66,117,116,116,111,110,40,41,13,10,32,32,32,32,123, - 13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,99,108,105,99,107,101,100,40,41,13,10,32,32,32,32,123,13,10,32,32, - 32,32,32,32,32,32,47,47,32,99,114,101,97,116,101,32,116,119,111,32,99,111,108,111,117,114,32,115,101,108,101,99,116,111,114,32,99,111,109,112, - 111,110,101,110,116,115,32,102,111,114,32,111,117,114,32,98,97,99,107,103,114,111,117,110,100,32,97,110,100,13,10,32,32,32,32,32,32,32,32,47, - 47,32,116,101,120,116,32,99,111,108,111,117,114,46,46,13,10,32,32,32,32,32,32,32,32,67,111,108,111,117,114,83,101,108,101,99,116,111,114,32, - 99,111,108,111,117,114,83,101,108,101,99,116,111,114,49,59,13,10,32,32,32,32,32,32,32,32,99,111,108,111,117,114,83,101,108,101,99,116,111,114, - 49,46,115,101,116,78,97,109,101,32,40,84,40,34,98,97,99,107,103,114,111,117,110,100,34,41,41,59,13,10,32,32,32,32,32,32,32,32,99,111, - 108,111,117,114,83,101,108,101,99,116,111,114,49,46,115,101,116,67,117,114,114,101,110,116,67,111,108,111,117,114,32,40,102,105,110,100,67,111,108,111, - 117,114,32,40,84,101,120,116,66,117,116,116,111,110,58,58,98,117,116,116,111,110,67,111,108,111,117,114,73,100,41,41,59,13,10,32,32,32,32,32, - 32,32,32,99,111,108,111,117,114,83,101,108,101,99,116,111,114,49,46,97,100,100,67,104,97,110,103,101,76,105,115,116,101,110,101,114,32,40,116,104, - 105,115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,67,111,108,111,117,114,83,101,108,101,99,116,111,114,32,99,111,108,111,117,114,83,101,108, - 101,99,116,111,114,50,59,13,10,32,32,32,32,32,32,32,32,99,111,108,111,117,114,83,101,108,101,99,116,111,114,50,46,115,101,116,78,97,109,101, - 32,40,84,40,34,116,101,120,116,34,41,41,59,13,10,32,32,32,32,32,32,32,32,99,111,108,111,117,114,83,101,108,101,99,116,111,114,50,46,115, - 101,116,67,117,114,114,101,110,116,67,111,108,111,117,114,32,40,102,105,110,100,67,111,108,111,117,114,32,40,84,101,120,116,66,117,116,116,111,110,58, - 58,116,101,120,116,67,111,108,111,117,114,73,100,41,41,59,13,10,32,32,32,32,32,32,32,32,99,111,108,111,117,114,83,101,108,101,99,116,111,114, - 50,46,97,100,100,67,104,97,110,103,101,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47, - 47,32,97,110,100,32,97,100,100,32,116,104,101,32,115,101,108,101,99,116,111,114,115,32,97,115,32,99,117,115,116,111,109,32,109,101,110,117,32,105, - 116,101,109,115,32,116,111,32,97,32,80,111,112,117,112,77,101,110,117,44,32,112,117,116,116,105,110,103,13,10,32,32,32,32,32,32,32,32,47,47, - 32,116,104,101,109,32,105,110,32,116,119,111,32,100,105,102,102,101,114,101,110,116,32,115,117,98,45,109,101,110,117,115,46,46,13,10,32,32,32,32, - 32,32,32,32,80,111,112,117,112,77,101,110,117,32,109,44,32,115,117,98,49,44,32,115,117,98,50,59,13,10,13,10,32,32,32,32,32,32,32,32, - 115,117,98,49,46,97,100,100,67,117,115,116,111,109,73,116,101,109,32,40,49,50,51,52,44,32,38,99,111,108,111,117,114,83,101,108,101,99,116,111, - 114,49,44,32,51,48,48,44,32,51,48,48,44,32,102,97,108,115,101,41,59,13,10,32,32,32,32,32,32,32,32,109,46,97,100,100,83,117,98,77, - 101,110,117,32,40,84,40,34,98,97,99,107,103,114,111,117,110,100,32,99,111,108,111,117,114,34,41,44,32,115,117,98,49,41,59,13,10,13,10,32, - 32,32,32,32,32,32,32,115,117,98,50,46,97,100,100,67,117,115,116,111,109,73,116,101,109,32,40,49,50,51,52,44,32,38,99,111,108,111,117,114, - 83,101,108,101,99,116,111,114,50,44,32,51,48,48,44,32,51,48,48,44,32,102,97,108,115,101,41,59,13,10,32,32,32,32,32,32,32,32,109,46, - 97,100,100,83,117,98,77,101,110,117,32,40,84,40,34,116,101,120,116,32,99,111,108,111,117,114,34,41,44,32,115,117,98,50,41,59,13,10,13,10, - 32,32,32,32,32,32,32,32,47,47,32,97,110,100,32,115,104,111,119,32,116,104,101,32,109,101,110,117,32,40,109,111,100,97,108,108,121,41,46,46, - 13,10,32,32,32,32,32,32,32,32,109,46,115,104,111,119,65,116,32,40,116,104,105,115,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32, - 32,118,111,105,100,32,99,104,97,110,103,101,76,105,115,116,101,110,101,114,67,97,108,108,98,97,99,107,32,40,118,111,105,100,42,32,115,111,117,114, - 99,101,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,67,111,108,111,117,114,83,101,108,101,99,116,111,114,42,32,99,115,32,61, - 32,40,67,111,108,111,117,114,83,101,108,101,99,116,111,114,42,41,32,115,111,117,114,99,101,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102, - 32,40,99,115,45,62,103,101,116,78,97,109,101,40,41,32,61,61,32,84,40,34,116,101,120,116,34,41,41,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,115,101,116,67,111,108,111,117,114,32,40,84,101,120,116,66,117,116,116,111,110,58,58,116,101,120,116,67,111,108,111,117,114,73,100,44,32, - 99,115,45,62,103,101,116,67,117,114,114,101,110,116,67,111,108,111,117,114,40,41,41,59,13,10,32,32,32,32,32,32,32,32,101,108,115,101,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,115,101,116,67,111,108,111,117,114,32,40,84,101,120,116,66,117,116,116,111,110,58,58,98,117,116,116,111, - 110,67,111,108,111,117,114,73,100,44,32,99,115,45,62,103,101,116,67,117,114,114,101,110,116,67,111,108,111,117,114,40,41,41,59,13,10,32,32,32, - 32,125,13,10,125,59,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,13,10,47,47,32,106,117,115,116,32,97,32,99,111,109,112,111,110,101,110,116,32,116,104,97,116,32,100,101,108, - 101,116,101,115,32,97,108,108,32,105,116,115,32,99,104,105,108,100,114,101,110,44,32,116,111,32,117,115,101,32,102,111,114,32,116,104,101,32,116,97, - 98,98,101,100,32,112,97,103,101,115,32,116,111,32,97,118,111,105,100,13,10,47,47,32,109,101,109,111,114,121,32,108,101,97,107,115,32,119,104,101, - 110,32,116,104,101,121,39,114,101,32,100,101,108,101,116,101,100,13,10,99,108,97,115,115,32,68,101,109,111,80,97,103,101,67,111,109,112,32,32,58, - 32,112,117,98,108,105,99,32,67,111,109,112,111,110,101,110,116,13,10,123,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,68,101,109,111,80, - 97,103,101,67,111,109,112,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,68,101,109,111,80,97,103,101, - 67,111,109,112,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65,108,108,67,104,105,108,100,114,101,110, - 40,41,59,13,10,32,32,32,32,125,13,10,125,59,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,115,116,97,116,105,99,32,67,111,109,112,111,110,101,110,116,42,32,99,114, - 101,97,116,101,83,108,105,100,101,114,115,80,97,103,101,40,41,13,10,123,13,10,32,32,32,32,68,101,109,111,80,97,103,101,67,111,109,112,42,32, - 112,97,103,101,32,61,32,110,101,119,32,68,101,109,111,80,97,103,101,67,111,109,112,40,41,59,13,10,13,10,32,32,32,32,99,111,110,115,116,32, - 105,110,116,32,110,117,109,83,108,105,100,101,114,115,32,61,32,49,49,59,13,10,32,32,32,32,83,108,105,100,101,114,42,32,115,108,105,100,101,114, - 115,32,91,110,117,109,83,108,105,100,101,114,115,93,59,13,10,13,10,32,32,32,32,105,110,116,32,105,59,13,10,32,32,32,32,102,111,114,32,40, - 105,32,61,32,48,59,32,105,32,60,32,110,117,109,83,108,105,100,101,114,115,59,32,43,43,105,41,13,10,32,32,32,32,123,13,10,32,32,32,32, - 32,32,32,32,105,102,32,40,105,32,61,61,32,50,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,112,97,103,101,45,62,97,100,100,65,110, - 100,77,97,107,101,86,105,115,105,98,108,101,32,40,115,108,105,100,101,114,115,91,105,93,32,61,32,110,101,119,32,83,110,97,112,112,105,110,103,83, - 108,105,100,101,114,32,40,84,40,34,115,108,105,100,101,114,34,41,41,41,59,13,10,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,112,97,103,101,45,62,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,115,108,105,100,101,114, - 115,91,105,93,32,61,32,110,101,119,32,83,108,105,100,101,114,32,40,84,40,34,115,108,105,100,101,114,34,41,41,41,59,13,10,13,10,32,32,32, - 32,32,32,32,32,115,108,105,100,101,114,115,91,105,93,45,62,115,101,116,82,97,110,103,101,32,40,48,46,48,44,32,49,48,48,46,48,44,32,48, - 46,49,41,59,13,10,32,32,32,32,32,32,32,32,115,108,105,100,101,114,115,91,105,93,45,62,115,101,116,80,111,112,117,112,77,101,110,117,69,110, - 97,98,108,101,100,32,40,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,115,108,105,100,101,114,115,91,105,93,45,62,115,101,116,86,97, - 108,117,101,32,40,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,68,111,117,98,108, - 101,40,41,32,42,32,49,48,48,46,48,44,32,102,97,108,115,101,44,32,102,97,108,115,101,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32, - 32,32,115,108,105,100,101,114,115,91,48,93,45,62,115,101,116,83,108,105,100,101,114,83,116,121,108,101,32,40,83,108,105,100,101,114,58,58,76,105, - 110,101,97,114,86,101,114,116,105,99,97,108,41,59,13,10,32,32,32,32,115,108,105,100,101,114,115,91,48,93,45,62,115,101,116,84,101,120,116,66, - 111,120,83,116,121,108,101,32,40,83,108,105,100,101,114,58,58,84,101,120,116,66,111,120,66,101,108,111,119,44,32,102,97,108,115,101,44,32,49,48, - 48,44,32,50,48,41,59,13,10,32,32,32,32,115,108,105,100,101,114,115,91,48,93,45,62,115,101,116,66,111,117,110,100,115,32,40,49,48,44,32, - 50,53,44,32,55,48,44,32,50,48,48,41,59,13,10,32,32,32,32,115,108,105,100,101,114,115,91,48,93,45,62,115,101,116,68,111,117,98,108,101, - 67,108,105,99,107,82,101,116,117,114,110,86,97,108,117,101,32,40,116,114,117,101,44,32,53,48,46,48,41,59,32,47,47,32,100,111,117,98,108,101, - 45,99,108,105,99,107,105,110,103,32,116,104,105,115,32,115,108,105,100,101,114,32,119,105,108,108,32,115,101,116,32,105,116,32,116,111,32,53,48,46, - 48,13,10,32,32,32,32,115,108,105,100,101,114,115,91,48,93,45,62,115,101,116,84,101,120,116,86,97,108,117,101,83,117,102,102,105,120,32,40,84, - 40,34,32,117,110,105,116,115,34,41,41,59,13,10,13,10,32,32,32,32,115,108,105,100,101,114,115,91,49,93,45,62,115,101,116,83,108,105,100,101, - 114,83,116,121,108,101,32,40,83,108,105,100,101,114,58,58,76,105,110,101,97,114,86,101,114,116,105,99,97,108,41,59,13,10,32,32,32,32,115,108, - 105,100,101,114,115,91,49,93,45,62,115,101,116,86,101,108,111,99,105,116,121,66,97,115,101,100,77,111,100,101,32,40,116,114,117,101,41,59,13,10, - 32,32,32,32,115,108,105,100,101,114,115,91,49,93,45,62,115,101,116,83,107,101,119,70,97,99,116,111,114,32,40,48,46,53,41,59,13,10,32,32, - 32,32,115,108,105,100,101,114,115,91,49,93,45,62,115,101,116,84,101,120,116,66,111,120,83,116,121,108,101,32,40,83,108,105,100,101,114,58,58,84, - 101,120,116,66,111,120,65,98,111,118,101,44,32,116,114,117,101,44,32,49,48,48,44,32,50,48,41,59,13,10,32,32,32,32,115,108,105,100,101,114, - 115,91,49,93,45,62,115,101,116,66,111,117,110,100,115,32,40,56,53,44,32,50,53,44,32,55,48,44,32,50,48,48,41,59,13,10,32,32,32,32, - 115,108,105,100,101,114,115,91,49,93,45,62,115,101,116,84,101,120,116,86,97,108,117,101,83,117,102,102,105,120,32,40,84,40,34,32,114,101,108,115, - 34,41,41,59,13,10,13,10,32,32,32,32,115,108,105,100,101,114,115,91,50,93,45,62,115,101,116,83,108,105,100,101,114,83,116,121,108,101,32,40, - 83,108,105,100,101,114,58,58,76,105,110,101,97,114,72,111,114,105,122,111,110,116,97,108,41,59,13,10,32,32,32,32,115,108,105,100,101,114,115,91, - 50,93,45,62,115,101,116,84,101,120,116,66,111,120,83,116,121,108,101,32,40,83,108,105,100,101,114,58,58,84,101,120,116,66,111,120,76,101,102,116, - 44,32,102,97,108,115,101,44,32,56,48,44,32,50,48,41,59,13,10,32,32,32,32,115,108,105,100,101,114,115,91,50,93,45,62,115,101,116,66,111, - 117,110,100,115,32,40,49,56,48,44,32,51,53,44,32,49,53,48,44,32,50,48,41,59,13,10,13,10,32,32,32,32,115,108,105,100,101,114,115,91, - 51,93,45,62,115,101,116,83,108,105,100,101,114,83,116,121,108,101,32,40,83,108,105,100,101,114,58,58,76,105,110,101,97,114,72,111,114,105,122,111, - 110,116,97,108,41,59,13,10,32,32,32,32,115,108,105,100,101,114,115,91,51,93,45,62,115,101,116,84,101,120,116,66,111,120,83,116,121,108,101,32, - 40,83,108,105,100,101,114,58,58,78,111,84,101,120,116,66,111,120,44,32,102,97,108,115,101,44,32,48,44,32,48,41,59,13,10,32,32,32,32,115, - 108,105,100,101,114,115,91,51,93,45,62,115,101,116,66,111,117,110,100,115,32,40,49,56,48,44,32,54,53,44,32,49,53,48,44,32,50,48,41,59, - 13,10,32,32,32,32,115,108,105,100,101,114,115,91,51,93,45,62,115,101,116,80,111,112,117,112,68,105,115,112,108,97,121,69,110,97,98,108,101,100, - 32,40,116,114,117,101,44,32,112,97,103,101,41,59,13,10,32,32,32,32,115,108,105,100,101,114,115,91,51,93,45,62,115,101,116,84,101,120,116,86, - 97,108,117,101,83,117,102,102,105,120,32,40,84,40,34,32,110,117,110,115,32,114,101,113,117,105,114,101,100,32,116,111,32,99,104,97,110,103,101,32, - 97,32,108,105,103,104,116,98,117,108,98,34,41,41,59,13,10,13,10,32,32,32,32,115,108,105,100,101,114,115,91,52,93,45,62,115,101,116,83,108, - 105,100,101,114,83,116,121,108,101,32,40,83,108,105,100,101,114,58,58,73,110,99,68,101,99,66,117,116,116,111,110,115,41,59,13,10,32,32,32,32, - 115,108,105,100,101,114,115,91,52,93,45,62,115,101,116,84,101,120,116,66,111,120,83,116,121,108,101,32,40,83,108,105,100,101,114,58,58,84,101,120, - 116,66,111,120,76,101,102,116,44,32,102,97,108,115,101,44,32,53,48,44,32,50,48,41,59,13,10,32,32,32,32,115,108,105,100,101,114,115,91,52, - 93,45,62,115,101,116,66,111,117,110,100,115,32,40,49,56,48,44,32,49,48,53,44,32,49,48,48,44,32,50,48,41,59,13,10,32,32,32,32,115, - 108,105,100,101,114,115,91,52,93,45,62,115,101,116,73,110,99,68,101,99,66,117,116,116,111,110,115,77,111,100,101,32,40,83,108,105,100,101,114,58, - 58,105,110,99,68,101,99,66,117,116,116,111,110,115,68,114,97,103,103,97,98,108,101,95,86,101,114,116,105,99,97,108,41,59,13,10,13,10,32,32, - 32,32,115,108,105,100,101,114,115,91,53,93,45,62,115,101,116,83,108,105,100,101,114,83,116,121,108,101,32,40,83,108,105,100,101,114,58,58,82,111, - 116,97,114,121,41,59,13,10,32,32,32,32,115,108,105,100,101,114,115,91,53,93,45,62,115,101,116,82,111,116,97,114,121,80,97,114,97,109,101,116, - 101,114,115,32,40,102,108,111,97,116,95,80,105,32,42,32,49,46,50,102,44,32,102,108,111,97,116,95,80,105,32,42,32,50,46,56,102,44,32,102, - 97,108,115,101,41,59,13,10,32,32,32,32,115,108,105,100,101,114,115,91,53,93,45,62,115,101,116,84,101,120,116,66,111,120,83,116,121,108,101,32, - 40,83,108,105,100,101,114,58,58,84,101,120,116,66,111,120,82,105,103,104,116,44,32,102,97,108,115,101,44,32,55,48,44,32,50,48,41,59,13,10, - 32,32,32,32,115,108,105,100,101,114,115,91,53,93,45,62,115,101,116,66,111,117,110,100,115,32,40,49,57,48,44,32,49,52,53,44,32,49,50,48, - 44,32,52,48,41,59,13,10,32,32,32,32,115,108,105,100,101,114,115,91,53,93,45,62,115,101,116,84,101,120,116,86,97,108,117,101,83,117,102,102, - 105,120,32,40,84,40,34,32,109,109,34,41,41,59,13,10,13,10,32,32,32,32,115,108,105,100,101,114,115,91,54,93,45,62,115,101,116,83,108,105, - 100,101,114,83,116,121,108,101,32,40,83,108,105,100,101,114,58,58,76,105,110,101,97,114,66,97,114,41,59,13,10,32,32,32,32,115,108,105,100,101, - 114,115,91,54,93,45,62,115,101,116,66,111,117,110,100,115,32,40,49,56,48,44,32,49,57,53,44,32,49,48,48,44,32,51,48,41,59,13,10,32, - 32,32,32,115,108,105,100,101,114,115,91,54,93,45,62,115,101,116,84,101,120,116,86,97,108,117,101,83,117,102,102,105,120,32,40,84,40,34,32,103, - 97,108,108,111,110,115,34,41,41,59,13,10,13,10,32,32,32,32,115,108,105,100,101,114,115,91,55,93,45,62,115,101,116,83,108,105,100,101,114,83, - 116,121,108,101,32,40,83,108,105,100,101,114,58,58,84,119,111,86,97,108,117,101,72,111,114,105,122,111,110,116,97,108,41,59,13,10,32,32,32,32, - 115,108,105,100,101,114,115,91,55,93,45,62,115,101,116,66,111,117,110,100,115,32,40,51,54,48,44,32,50,48,44,32,49,54,48,44,32,52,48,41, - 59,13,10,13,10,32,32,32,32,115,108,105,100,101,114,115,91,56,93,45,62,115,101,116,83,108,105,100,101,114,83,116,121,108,101,32,40,83,108,105, - 100,101,114,58,58,84,119,111,86,97,108,117,101,86,101,114,116,105,99,97,108,41,59,13,10,32,32,32,32,115,108,105,100,101,114,115,91,56,93,45, - 62,115,101,116,66,111,117,110,100,115,32,40,51,54,48,44,32,49,49,48,44,32,52,48,44,32,49,54,48,41,59,13,10,13,10,32,32,32,32,115, - 108,105,100,101,114,115,91,57,93,45,62,115,101,116,83,108,105,100,101,114,83,116,121,108,101,32,40,83,108,105,100,101,114,58,58,84,104,114,101,101, - 86,97,108,117,101,72,111,114,105,122,111,110,116,97,108,41,59,13,10,32,32,32,32,115,108,105,100,101,114,115,91,57,93,45,62,115,101,116,66,111, - 117,110,100,115,32,40,51,54,48,44,32,55,48,44,32,49,54,48,44,32,52,48,41,59,13,10,13,10,32,32,32,32,115,108,105,100,101,114,115,91, - 49,48,93,45,62,115,101,116,83,108,105,100,101,114,83,116,121,108,101,32,40,83,108,105,100,101,114,58,58,84,104,114,101,101,86,97,108,117,101,86, - 101,114,116,105,99,97,108,41,59,13,10,32,32,32,32,115,108,105,100,101,114,115,91,49,48,93,45,62,115,101,116,66,111,117,110,100,115,32,40,52, - 52,48,44,32,49,49,48,44,32,52,48,44,32,49,54,48,41,59,13,10,13,10,32,32,32,32,102,111,114,32,40,105,32,61,32,55,59,32,105,32, - 60,61,32,49,48,59,32,43,43,105,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,115,108,105,100,101,114,115,91,105,93,45,62, - 115,101,116,84,101,120,116,66,111,120,83,116,121,108,101,32,40,83,108,105,100,101,114,58,58,78,111,84,101,120,116,66,111,120,44,32,102,97,108,115, - 101,44,32,48,44,32,48,41,59,13,10,32,32,32,32,32,32,32,32,115,108,105,100,101,114,115,91,105,93,45,62,115,101,116,77,105,110,86,97,108, - 117,101,32,40,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,68,111,117,98,108,101, - 40,41,32,42,32,49,48,48,46,48,44,32,102,97,108,115,101,44,32,102,97,108,115,101,41,59,13,10,32,32,32,32,32,32,32,32,115,108,105,100, - 101,114,115,91,105,93,45,62,115,101,116,77,97,120,86,97,108,117,101,32,40,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109,82,97, - 110,100,111,109,40,41,46,110,101,120,116,68,111,117,98,108,101,40,41,32,42,32,49,48,48,46,48,44,32,102,97,108,115,101,44,32,102,97,108,115, - 101,41,59,13,10,32,32,32,32,32,32,32,32,115,108,105,100,101,114,115,91,105,93,45,62,115,101,116,80,111,112,117,112,68,105,115,112,108,97,121, - 69,110,97,98,108,101,100,32,40,116,114,117,101,44,32,112,97,103,101,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,76,97,98,101, - 108,42,32,108,97,98,101,108,32,61,32,110,101,119,32,76,97,98,101,108,32,40,84,40,34,104,105,110,116,34,41,44,32,84,40,34,84,114,121,32, - 114,105,103,104,116,45,99,108,105,99,107,105,110,103,32,111,110,32,97,32,115,108,105,100,101,114,32,102,111,114,32,97,110,32,111,112,116,105,111,110, - 115,32,109,101,110,117,46,32,92,110,92,110,65,108,115,111,44,32,104,111,108,100,105,110,103,32,100,111,119,110,32,67,84,82,76,32,119,104,105,108, - 101,32,100,114,97,103,103,105,110,103,32,119,105,108,108,32,116,117,114,110,32,111,110,32,97,32,115,108,105,100,101,114,39,115,32,118,101,108,111,99, - 105,116,121,45,115,101,110,115,105,116,105,118,101,32,109,111,100,101,34,41,41,59,13,10,32,32,32,32,108,97,98,101,108,45,62,115,101,116,66,111, - 117,110,100,115,32,40,50,48,44,32,50,52,53,44,32,51,53,48,44,32,49,53,48,41,59,13,10,32,32,32,32,112,97,103,101,45,62,97,100,100, - 65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,108,97,98,101,108,41,59,13,10,13,10,32,32,32,32,114,101,116,117,114,110,32,112,97, - 103,101,59,13,10,125,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,13,10,115,116,97,116,105,99,32,67,111,109,112,111,110,101,110,116,42,32,99,114,101,97,116,101,82,97,100,105, - 111,66,117,116,116,111,110,80,97,103,101,40,41,13,10,123,13,10,32,32,32,32,68,101,109,111,80,97,103,101,67,111,109,112,42,32,112,97,103,101, - 32,61,32,110,101,119,32,68,101,109,111,80,97,103,101,67,111,109,112,40,41,59,13,10,13,10,32,32,32,32,71,114,111,117,112,67,111,109,112,111, - 110,101,110,116,42,32,103,114,111,117,112,32,61,32,110,101,119,32,71,114,111,117,112,67,111,109,112,111,110,101,110,116,32,40,84,40,34,103,114,111, - 117,112,34,41,44,32,84,40,34,114,97,100,105,111,32,98,117,116,116,111,110,115,34,41,41,59,13,10,32,32,32,32,103,114,111,117,112,45,62,115, - 101,116,66,111,117,110,100,115,32,40,50,48,44,32,50,48,44,32,50,50,48,44,32,49,52,48,41,59,13,10,32,32,32,32,112,97,103,101,45,62, - 97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,103,114,111,117,112,41,59,13,10,13,10,32,32,32,32,105,110,116,32,105,59, - 13,10,32,32,32,32,102,111,114,32,40,105,32,61,32,48,59,32,105,32,60,32,52,59,32,43,43,105,41,13,10,32,32,32,32,123,13,10,32,32, - 32,32,32,32,32,32,84,111,103,103,108,101,66,117,116,116,111,110,42,32,116,98,32,61,32,110,101,119,32,84,111,103,103,108,101,66,117,116,116,111, - 110,32,40,84,40,34,114,97,100,105,111,32,98,117,116,116,111,110,32,35,34,41,32,43,32,83,116,114,105,110,103,32,40,105,32,43,32,49,41,41, - 59,13,10,32,32,32,32,32,32,32,32,112,97,103,101,45,62,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,116,98,41,59, - 13,10,32,32,32,32,32,32,32,32,116,98,45,62,115,101,116,82,97,100,105,111,71,114,111,117,112,73,100,32,40,49,50,51,52,41,59,13,10,32, - 32,32,32,32,32,32,32,116,98,45,62,115,101,116,66,111,117,110,100,115,32,40,52,53,44,32,52,54,32,43,32,105,32,42,32,50,50,44,32,49, - 56,48,44,32,50,50,41,59,13,10,32,32,32,32,32,32,32,32,116,98,45,62,115,101,116,84,111,111,108,116,105,112,32,40,84,40,34,97,32,115, - 101,116,32,111,102,32,109,117,116,117,97,108,108,121,45,101,120,99,108,117,115,105,118,101,32,114,97,100,105,111,32,98,117,116,116,111,110,115,34,41, - 41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,105,32,61,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,116, - 98,45,62,115,101,116,84,111,103,103,108,101,83,116,97,116,101,32,40,116,114,117,101,44,32,102,97,108,115,101,41,59,13,10,32,32,32,32,125,13, - 10,13,10,32,32,32,32,102,111,114,32,40,105,32,61,32,48,59,32,105,32,60,32,52,59,32,43,43,105,41,13,10,32,32,32,32,123,13,10,32, - 32,32,32,32,32,32,32,68,114,97,119,97,98,108,101,80,97,116,104,32,110,111,114,109,97,108,44,32,111,118,101,114,59,13,10,13,10,32,32,32, - 32,32,32,32,32,80,97,116,104,32,112,59,13,10,32,32,32,32,32,32,32,32,112,46,97,100,100,83,116,97,114,32,40,48,46,48,102,44,32,48, - 46,48,102,44,32,105,32,43,32,53,44,32,50,48,46,48,102,44,32,53,48,46,48,102,44,32,45,48,46,50,102,41,59,13,10,32,32,32,32,32, - 32,32,32,110,111,114,109,97,108,46,115,101,116,80,97,116,104,32,40,112,41,59,13,10,32,32,32,32,32,32,32,32,110,111,114,109,97,108,46,115, - 101,116,83,111,108,105,100,70,105,108,108,32,40,67,111,108,111,117,114,115,58,58,108,105,103,104,116,98,108,117,101,41,59,13,10,32,32,32,32,32, - 32,32,32,110,111,114,109,97,108,46,115,101,116,79,117,116,108,105,110,101,32,40,52,46,48,102,44,32,67,111,108,111,117,114,115,58,58,98,108,97, - 99,107,41,59,13,10,13,10,32,32,32,32,32,32,32,32,111,118,101,114,46,115,101,116,80,97,116,104,32,40,112,41,59,13,10,32,32,32,32,32, - 32,32,32,111,118,101,114,46,115,101,116,83,111,108,105,100,70,105,108,108,32,40,67,111,108,111,117,114,115,58,58,98,108,117,101,41,59,13,10,32, - 32,32,32,32,32,32,32,111,118,101,114,46,115,101,116,79,117,116,108,105,110,101,32,40,52,46,48,102,44,32,67,111,108,111,117,114,115,58,58,98, - 108,97,99,107,41,59,13,10,13,10,32,32,32,32,32,32,32,32,68,114,97,119,97,98,108,101,66,117,116,116,111,110,42,32,100,98,32,61,32,110, - 101,119,32,68,114,97,119,97,98,108,101,66,117,116,116,111,110,32,40,83,116,114,105,110,103,32,40,105,32,43,32,53,41,32,43,32,84,40,34,32, - 112,111,105,110,116,115,34,41,44,32,68,114,97,119,97,98,108,101,66,117,116,116,111,110,58,58,73,109,97,103,101,65,98,111,118,101,84,101,120,116, - 76,97,98,101,108,41,59,13,10,32,32,32,32,32,32,32,32,100,98,45,62,115,101,116,73,109,97,103,101,115,32,40,38,110,111,114,109,97,108,44, - 32,38,111,118,101,114,44,32,48,41,59,13,10,13,10,32,32,32,32,32,32,32,32,112,97,103,101,45,62,97,100,100,65,110,100,77,97,107,101,86, - 105,115,105,98,108,101,32,40,100,98,41,59,13,10,32,32,32,32,32,32,32,32,100,98,45,62,115,101,116,67,108,105,99,107,105,110,103,84,111,103, - 103,108,101,115,83,116,97,116,101,32,40,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,100,98,45,62,115,101,116,82,97,100,105,111,71, - 114,111,117,112,73,100,32,40,50,51,52,53,54,41,59,13,10,13,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,105,110,116,32,98,117,116, - 116,111,110,83,105,122,101,32,61,32,53,48,59,13,10,32,32,32,32,32,32,32,32,100,98,45,62,115,101,116,66,111,117,110,100,115,32,40,50,53, - 32,43,32,105,32,42,32,98,117,116,116,111,110,83,105,122,101,44,32,49,56,48,44,32,98,117,116,116,111,110,83,105,122,101,44,32,98,117,116,116, - 111,110,83,105,122,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,105,32,61,61,32,48,41,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,100,98,45,62,115,101,116,84,111,103,103,108,101,83,116,97,116,101,32,40,116,114,117,101,44,32,102,97,108,115,101,41,59,13,10, - 32,32,32,32,125,13,10,13,10,32,32,32,32,102,111,114,32,40,105,32,61,32,48,59,32,105,32,60,32,52,59,32,43,43,105,41,13,10,32,32, - 32,32,123,13,10,32,32,32,32,32,32,32,32,84,101,120,116,66,117,116,116,111,110,42,32,116,98,32,61,32,110,101,119,32,84,101,120,116,66,117, - 116,116,111,110,32,40,84,40,34,98,117,116,116,111,110,32,34,41,32,43,32,83,116,114,105,110,103,32,40,105,32,43,32,49,41,41,59,13,10,13, - 10,32,32,32,32,32,32,32,32,112,97,103,101,45,62,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,116,98,41,59,13,10, - 32,32,32,32,32,32,32,32,116,98,45,62,115,101,116,67,108,105,99,107,105,110,103,84,111,103,103,108,101,115,83,116,97,116,101,32,40,116,114,117, - 101,41,59,13,10,32,32,32,32,32,32,32,32,116,98,45,62,115,101,116,82,97,100,105,111,71,114,111,117,112,73,100,32,40,51,52,53,54,55,41, - 59,13,10,32,32,32,32,32,32,32,32,116,98,45,62,115,101,116,67,111,108,111,117,114,32,40,84,101,120,116,66,117,116,116,111,110,58,58,98,117, - 116,116,111,110,67,111,108,111,117,114,73,100,44,32,67,111,108,111,117,114,115,58,58,119,104,105,116,101,41,59,13,10,32,32,32,32,32,32,32,32, - 116,98,45,62,115,101,116,67,111,108,111,117,114,32,40,84,101,120,116,66,117,116,116,111,110,58,58,98,117,116,116,111,110,79,110,67,111,108,111,117, - 114,73,100,44,32,67,111,108,111,117,114,115,58,58,98,108,117,101,118,105,111,108,101,116,46,98,114,105,103,104,116,101,114,40,41,41,59,13,10,13, - 10,32,32,32,32,32,32,32,32,116,98,45,62,115,101,116,66,111,117,110,100,115,32,40,50,48,32,43,32,105,32,42,32,53,53,44,32,50,54,48, - 44,32,53,53,44,32,50,52,41,59,13,10,32,32,32,32,32,32,32,32,116,98,45,62,115,101,116,67,111,110,110,101,99,116,101,100,69,100,103,101, - 115,32,40,40,40,105,32,33,61,32,48,41,32,63,32,66,117,116,116,111,110,58,58,67,111,110,110,101,99,116,101,100,79,110,76,101,102,116,32,58, - 32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,124,32,40, - 40,105,32,33,61,32,51,41,32,63,32,66,117,116,116,111,110,58,58,67,111,110,110,101,99,116,101,100,79,110,82,105,103,104,116,32,58,32,48,41, - 41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,105,32,61,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,116, - 98,45,62,115,101,116,84,111,103,103,108,101,83,116,97,116,101,32,40,116,114,117,101,44,32,102,97,108,115,101,41,59,13,10,32,32,32,32,125,13, - 10,13,10,32,32,32,32,114,101,116,117,114,110,32,112,97,103,101,59,13,10,125,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,66,117,116,116,111,110, - 115,80,97,103,101,32,32,32,58,32,112,117,98,108,105,99,32,67,111,109,112,111,110,101,110,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,66,117,116,116,111,110,76,105,115,116,101,110,101,114,13,10,123,13,10,112,117,98, - 108,105,99,58,13,10,32,32,32,32,66,117,116,116,111,110,115,80,97,103,101,32,40,66,117,116,116,111,110,76,105,115,116,101,110,101,114,42,32,98, - 117,116,116,111,110,76,105,115,116,101,110,101,114,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,32,32,32, - 32,47,47,32,99,114,101,97,116,101,32,115,111,109,101,32,100,114,97,119,97,98,108,101,115,32,116,111,32,117,115,101,32,102,111,114,32,111,117,114, - 32,100,114,97,119,97,98,108,101,32,98,117,116,116,111,110,115,46,46,46,13,10,32,32,32,32,32,32,32,32,68,114,97,119,97,98,108,101,80,97, - 116,104,32,110,111,114,109,97,108,44,32,111,118,101,114,59,13,10,13,10,32,32,32,32,32,32,32,32,80,97,116,104,32,112,59,13,10,32,32,32, - 32,32,32,32,32,112,46,97,100,100,83,116,97,114,32,40,48,46,48,102,44,32,48,46,48,102,44,32,53,44,32,50,48,46,48,102,44,32,53,48, - 46,48,102,44,32,48,46,50,102,41,59,13,10,32,32,32,32,32,32,32,32,110,111,114,109,97,108,46,115,101,116,80,97,116,104,32,40,112,41,59, - 13,10,32,32,32,32,32,32,32,32,110,111,114,109,97,108,46,115,101,116,83,111,108,105,100,70,105,108,108,32,40,67,111,108,111,117,114,115,58,58, - 114,101,100,41,59,13,10,13,10,32,32,32,32,32,32,32,32,112,46,99,108,101,97,114,40,41,59,13,10,32,32,32,32,32,32,32,32,112,46,97, - 100,100,83,116,97,114,32,40,48,46,48,102,44,32,48,46,48,102,44,32,55,44,32,51,48,46,48,102,44,32,53,48,46,48,102,44,32,48,46,48, - 102,41,59,13,10,32,32,32,32,32,32,32,32,111,118,101,114,46,115,101,116,80,97,116,104,32,40,112,41,59,13,10,32,32,32,32,32,32,32,32, - 111,118,101,114,46,115,101,116,83,111,108,105,100,70,105,108,108,32,40,67,111,108,111,117,114,115,58,58,112,105,110,107,41,59,13,10,32,32,32,32, - 32,32,32,32,111,118,101,114,46,115,101,116,79,117,116,108,105,110,101,32,40,53,46,48,102,44,32,67,111,108,111,117,114,115,58,58,98,108,97,99, - 107,41,59,13,10,13,10,32,32,32,32,32,32,32,32,68,114,97,119,97,98,108,101,73,109,97,103,101,32,100,111,119,110,59,13,10,32,32,32,32, - 32,32,32,32,100,111,119,110,46,115,101,116,73,109,97,103,101,32,40,73,109,97,103,101,67,97,99,104,101,58,58,103,101,116,70,114,111,109,77,101, - 109,111,114,121,32,40,66,105,110,97,114,121,68,97,116,97,58,58,106,117,99,101,95,112,110,103,44,32,66,105,110,97,114,121,68,97,116,97,58,58, - 106,117,99,101,95,112,110,103,83,105,122,101,41,44,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,100,111,119,110,46,115,101,116,79, - 118,101,114,108,97,121,67,111,108,111,117,114,32,40,67,111,108,111,117,114,115,58,58,98,108,97,99,107,46,119,105,116,104,65,108,112,104,97,32,40, - 48,46,51,102,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,32,32,32,32,47,47,32,99,114,101,97,116,101,32,97, - 110,32,105,109,97,103,101,45,97,98,111,118,101,45,116,101,120,116,32,98,117,116,116,111,110,32,102,114,111,109,32,116,104,101,115,101,32,100,114,97, - 119,97,98,108,101,115,46,46,13,10,32,32,32,32,32,32,32,32,68,114,97,119,97,98,108,101,66,117,116,116,111,110,42,32,100,98,32,61,32,110, - 101,119,32,68,114,97,119,97,98,108,101,66,117,116,116,111,110,32,40,84,40,34,66,117,116,116,111,110,32,49,34,41,44,32,68,114,97,119,97,98, - 108,101,66,117,116,116,111,110,58,58,73,109,97,103,101,65,98,111,118,101,84,101,120,116,76,97,98,101,108,41,59,13,10,32,32,32,32,32,32,32, - 32,100,98,45,62,115,101,116,73,109,97,103,101,115,32,40,38,110,111,114,109,97,108,44,32,38,111,118,101,114,44,32,38,100,111,119,110,41,59,13, - 10,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,100,98,41,59,13,10,32,32,32,32, - 32,32,32,32,100,98,45,62,115,101,116,66,111,117,110,100,115,32,40,49,48,44,32,51,48,44,32,56,48,44,32,56,48,41,59,13,10,32,32,32, - 32,32,32,32,32,100,98,45,62,115,101,116,84,111,111,108,116,105,112,32,40,84,40,34,116,104,105,115,32,105,115,32,97,32,68,114,97,119,97,98, - 108,101,66,117,116,116,111,110,32,119,105,116,104,32,97,32,108,97,98,101,108,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32, - 32,32,32,32,32,32,32,47,47,32,99,114,101,97,116,101,32,97,110,32,105,109,97,103,101,45,111,110,108,121,32,98,117,116,116,111,110,32,102,114, - 111,109,32,116,104,101,115,101,32,100,114,97,119,97,98,108,101,115,46,46,13,10,32,32,32,32,32,32,32,32,100,98,32,61,32,110,101,119,32,68, - 114,97,119,97,98,108,101,66,117,116,116,111,110,32,40,84,40,34,66,117,116,116,111,110,32,50,34,41,44,32,68,114,97,119,97,98,108,101,66,117, - 116,116,111,110,58,58,73,109,97,103,101,70,105,116,116,101,100,41,59,13,10,32,32,32,32,32,32,32,32,100,98,45,62,115,101,116,73,109,97,103, - 101,115,32,40,38,110,111,114,109,97,108,44,32,38,111,118,101,114,44,32,38,100,111,119,110,41,59,13,10,32,32,32,32,32,32,32,32,100,98,45, - 62,115,101,116,67,108,105,99,107,105,110,103,84,111,103,103,108,101,115,83,116,97,116,101,32,40,116,114,117,101,41,59,13,10,13,10,32,32,32,32, - 32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,100,98,41,59,13,10,32,32,32,32,32,32,32,32,100,98,45, - 62,115,101,116,66,111,117,110,100,115,32,40,57,48,44,32,51,48,44,32,56,48,44,32,56,48,41,59,13,10,32,32,32,32,32,32,32,32,100,98, - 45,62,115,101,116,84,111,111,108,116,105,112,32,40,84,40,34,116,104,105,115,32,105,115,32,97,110,32,105,109,97,103,101,45,111,110,108,121,32,68, - 114,97,119,97,98,108,101,66,117,116,116,111,110,34,41,41,59,13,10,32,32,32,32,32,32,32,32,100,98,45,62,97,100,100,66,117,116,116,111,110, - 76,105,115,116,101,110,101,114,32,40,98,117,116,116,111,110,76,105,115,116,101,110,101,114,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10, - 32,32,32,32,32,32,32,32,47,47,32,99,114,101,97,116,101,32,97,110,32,105,109,97,103,101,45,111,110,45,98,117,116,116,111,110,45,115,104,97, - 112,101,32,98,117,116,116,111,110,32,102,114,111,109,32,116,104,101,32,115,97,109,101,32,100,114,97,119,97,98,108,101,115,46,46,13,10,32,32,32, - 32,32,32,32,32,100,98,32,61,32,110,101,119,32,68,114,97,119,97,98,108,101,66,117,116,116,111,110,32,40,84,40,34,66,117,116,116,111,110,32, - 51,34,41,44,32,68,114,97,119,97,98,108,101,66,117,116,116,111,110,58,58,73,109,97,103,101,79,110,66,117,116,116,111,110,66,97,99,107,103,114, - 111,117,110,100,41,59,13,10,32,32,32,32,32,32,32,32,100,98,45,62,115,101,116,73,109,97,103,101,115,32,40,38,110,111,114,109,97,108,44,32, - 48,44,32,48,41,59,13,10,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,100,98,41, - 59,13,10,32,32,32,32,32,32,32,32,100,98,45,62,115,101,116,66,111,117,110,100,115,32,40,50,48,48,44,32,51,48,44,32,49,49,48,44,32, - 50,53,41,59,13,10,32,32,32,32,32,32,32,32,100,98,45,62,115,101,116,84,111,111,108,116,105,112,32,40,84,40,34,116,104,105,115,32,105,115, - 32,97,32,68,114,97,119,97,98,108,101,66,117,116,116,111,110,32,111,110,32,97,32,115,116,97,110,100,97,114,100,32,98,117,116,116,111,110,32,98, - 97,99,107,103,114,111,117,110,100,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,32,32,32,32,100,98,32,61,32, - 110,101,119,32,68,114,97,119,97,98,108,101,66,117,116,116,111,110,32,40,84,40,34,66,117,116,116,111,110,32,52,34,41,44,32,68,114,97,119,97, - 98,108,101,66,117,116,116,111,110,58,58,73,109,97,103,101,79,110,66,117,116,116,111,110,66,97,99,107,103,114,111,117,110,100,41,59,13,10,32,32, - 32,32,32,32,32,32,100,98,45,62,115,101,116,73,109,97,103,101,115,32,40,38,110,111,114,109,97,108,44,32,38,111,118,101,114,44,32,38,100,111, - 119,110,41,59,13,10,32,32,32,32,32,32,32,32,100,98,45,62,115,101,116,67,108,105,99,107,105,110,103,84,111,103,103,108,101,115,83,116,97,116, - 101,32,40,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,100,98,45,62,115,101,116,66,97,99,107,103,114,111,117,110,100,67,111,108,111, - 117,114,115,32,40,67,111,108,111,117,114,115,58,58,119,104,105,116,101,44,32,67,111,108,111,117,114,115,58,58,121,101,108,108,111,119,41,59,13,10, - 13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,100,98,41,59,13,10,32,32,32,32,32, - 32,32,32,100,98,45,62,115,101,116,66,111,117,110,100,115,32,40,50,48,48,44,32,55,48,44,32,53,48,44,32,53,48,41,59,13,10,32,32,32, - 32,32,32,32,32,100,98,45,62,115,101,116,84,111,111,108,116,105,112,32,40,84,40,34,116,104,105,115,32,105,115,32,97,32,68,114,97,119,97,98, - 108,101,66,117,116,116,111,110,32,111,110,32,97,32,115,116,97,110,100,97,114,100,32,98,117,116,116,111,110,32,98,97,99,107,103,114,111,117,110,100, - 34,41,41,59,13,10,32,32,32,32,32,32,32,32,100,98,45,62,97,100,100,66,117,116,116,111,110,76,105,115,116,101,110,101,114,32,40,98,117,116, - 116,111,110,76,105,115,116,101,110,101,114,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,32,32,32,32,72,121,112,101,114, - 108,105,110,107,66,117,116,116,111,110,42,32,104,121,112,101,114,108,105,110,107,13,10,32,32,32,32,32,32,32,32,32,32,32,32,61,32,110,101,119, - 32,72,121,112,101,114,108,105,110,107,66,117,116,116,111,110,32,40,84,40,34,116,104,105,115,32,105,115,32,97,32,72,121,112,101,114,108,105,110,107, - 66,117,116,116,111,110,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,85,82,76,32,40,84,40,34,104,116,116,112,58,47,47,119,119,119,46,114,97,119,109,97,116,101,114,105,97,108,115,111,102, - 116,119,97,114,101,46,99,111,109,47,106,117,99,101,34,41,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,104,121,112,101,114,108,105,110,107, - 45,62,115,101,116,66,111,117,110,100,115,32,40,49,48,44,32,49,51,48,44,32,50,48,48,44,32,50,52,41,59,13,10,32,32,32,32,32,32,32, - 32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,104,121,112,101,114,108,105,110,107,41,59,13,10,13,10,32,32,32,32,32, - 32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,13,10,32,32,32,32,32,32,32,32,73,109,97,103,101,66,117,116,116,111,110,42,32,105,109,97,103,101,66,117,116,116,111,110,32,61,32, - 110,101,119,32,73,109,97,103,101,66,117,116,116,111,110,32,40,84,40,34,105,109,97,103,101,98,117,116,116,111,110,34,41,41,59,13,10,32,32,32, - 32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,105,109,97,103,101,66,117,116,116,111,110,41,59,13,10,13, - 10,32,32,32,32,32,32,32,32,73,109,97,103,101,42,32,106,117,99,101,73,109,97,103,101,32,61,32,73,109,97,103,101,67,97,99,104,101,58,58, - 103,101,116,70,114,111,109,77,101,109,111,114,121,32,40,66,105,110,97,114,121,68,97,116,97,58,58,106,117,99,101,95,112,110,103,44,32,66,105,110, - 97,114,121,68,97,116,97,58,58,106,117,99,101,95,112,110,103,83,105,122,101,41,59,13,10,32,32,32,32,32,32,32,32,73,109,97,103,101,67,97, - 99,104,101,58,58,105,110,99,82,101,102,101,114,101,110,99,101,67,111,117,110,116,32,40,106,117,99,101,73,109,97,103,101,41,59,13,10,32,32,32, - 32,32,32,32,32,73,109,97,103,101,67,97,99,104,101,58,58,105,110,99,82,101,102,101,114,101,110,99,101,67,111,117,110,116,32,40,106,117,99,101, - 73,109,97,103,101,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,109,97,103,101,66,117,116,116,111,110,45,62,115,101,116,73,109,97,103,101, - 115,32,40,116,114,117,101,44,32,116,114,117,101,44,32,116,114,117,101,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,106,117,99,101,73,109,97,103,101,44,32,48,46,55,102,44,32,67,111,108,111,117,114,115,58,58, - 116,114,97,110,115,112,97,114,101,110,116,66,108,97,99,107,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,106,117,99,101,73,109,97,103,101,44,32,49,46,48,102,44,32,67,111,108,111,117,114,115,58,58,116,114,97, - 110,115,112,97,114,101,110,116,66,108,97,99,107,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,106,117,99,101,73,109,97,103,101,44,32,49,46,48,102,44,32,67,111,108,111,117,114,115,58,58,112,105,110,107,46,119, - 105,116,104,65,108,112,104,97,32,40,48,46,56,102,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,48,46,53,102,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,109,97,103,101,66,117,116,116,111,110,45, - 62,115,101,116,84,111,112,76,101,102,116,80,111,115,105,116,105,111,110,32,40,49,48,44,32,49,54,48,41,59,13,10,32,32,32,32,32,32,32,32, - 105,109,97,103,101,66,117,116,116,111,110,45,62,115,101,116,84,111,111,108,116,105,112,32,40,84,40,34,105,109,97,103,101,32,98,117,116,116,111,110, - 32,45,32,115,104,111,119,105,110,103,32,97,108,112,104,97,45,99,104,97,110,110,101,108,32,104,105,116,45,116,101,115,116,105,110,103,32,97,110,100, - 32,99,111,108,111,117,114,32,111,118,101,114,108,97,121,32,119,104,101,110,32,99,108,105,99,107,101,100,34,41,41,59,13,10,13,10,32,32,32,32, - 32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,13,10,32,32,32,32,32,32,32,32,67,111,108,111,117,114,67,104,97,110,103,101,66,117,116,116,111,110,42,32,99,111,108,111,117,114, - 67,104,97,110,103,101,66,117,116,116,111,110,32,61,32,110,101,119,32,67,111,108,111,117,114,67,104,97,110,103,101,66,117,116,116,111,110,40,41,59, - 13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,99,111,108,111,117,114,67,104,97,110,103, - 101,66,117,116,116,111,110,41,59,13,10,32,32,32,32,32,32,32,32,99,111,108,111,117,114,67,104,97,110,103,101,66,117,116,116,111,110,45,62,115, - 101,116,84,111,112,76,101,102,116,80,111,115,105,116,105,111,110,32,40,51,53,48,44,32,51,48,41,59,13,10,13,10,32,32,32,32,32,32,32,32, - 47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 13,10,32,32,32,32,32,32,32,32,97,110,105,109,97,116,101,66,117,116,116,111,110,32,61,32,110,101,119,32,84,101,120,116,66,117,116,116,111,110, - 32,40,84,40,34,99,108,105,99,107,32,116,111,32,97,110,105,109,97,116,101,46,46,46,34,41,41,59,13,10,32,32,32,32,32,32,32,32,97,100, - 100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,97,110,105,109,97,116,101,66,117,116,116,111,110,41,59,13,10,32,32,32,32,32,32, - 32,32,97,110,105,109,97,116,101,66,117,116,116,111,110,45,62,99,104,97,110,103,101,87,105,100,116,104,84,111,70,105,116,84,101,120,116,32,40,50, - 52,41,59,13,10,32,32,32,32,32,32,32,32,97,110,105,109,97,116,101,66,117,116,116,111,110,45,62,115,101,116,84,111,112,76,101,102,116,80,111, - 115,105,116,105,111,110,32,40,51,53,48,44,32,55,48,41,59,13,10,32,32,32,32,32,32,32,32,97,110,105,109,97,116,101,66,117,116,116,111,110, - 45,62,97,100,100,66,117,116,116,111,110,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32, - 32,32,126,66,117,116,116,111,110,115,80,97,103,101,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65, - 108,108,67,104,105,108,100,114,101,110,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,98,117,116,116,111,110,67, - 108,105,99,107,101,100,32,40,66,117,116,116,111,110,42,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,102,111,114,32,40,105,110, - 116,32,105,32,61,32,103,101,116,78,117,109,67,104,105,108,100,67,111,109,112,111,110,101,110,116,115,40,41,59,32,45,45,105,32,62,61,32,48,59, - 41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,103,101,116,67,104,105,108,100,67,111, - 109,112,111,110,101,110,116,32,40,105,41,32,33,61,32,97,110,105,109,97,116,101,66,117,116,116,111,110,41,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,110,105,109,97,116,111,114,46,97,110,105,109,97,116,101,67,111, - 109,112,111,110,101,110,116,32,40,103,101,116,67,104,105,108,100,67,111,109,112,111,110,101,110,116,32,40,105,41,44,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,82,101,99,116, - 97,110,103,108,101,32,40,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,73,110,116, - 32,40,103,101,116,87,105,100,116,104,40,41,32,47,32,50,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,82,97,110,100,111,109, - 58,58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,73,110,116,32,40,103,101,116,72,101,105,103,104,116,40,41, - 32,47,32,50,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,54,48,32,43,32,82,97,110,100,111,109,58,58,103,101,116,83,121, - 115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,73,110,116,32,40,103,101,116,87,105,100,116,104,40,41,32,47,32,51,41,44,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,49,54,32,43,32,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109,82,97,110,100, - 111,109,40,41,46,110,101,120,116,73,110,116,32,40,103,101,116,72,101,105,103,104,116,40,41,32,47,32,54,41,41,44,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,53,48,48, - 32,43,32,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,73,110,116,32,40,50,48, - 48,48,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,68, - 111,117,98,108,101,40,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,82,97,110,100,111,109,58,58,103,101,116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110, - 101,120,116,68,111,117,98,108,101,40,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,125,13, - 10,32,32,32,32,125,13,10,13,10,112,114,105,118,97,116,101,58,13,10,32,32,32,32,84,101,120,116,66,117,116,116,111,110,42,32,97,110,105,109, - 97,116,101,66,117,116,116,111,110,59,13,10,32,32,32,32,67,111,109,112,111,110,101,110,116,65,110,105,109,97,116,111,114,32,97,110,105,109,97,116, - 111,114,59,13,10,125,59,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,115,116,97,116,105,99,32,67,111,109,112,111,110,101,110,116,42,32,99,114,101,97,116,101,77, - 105,115,99,80,97,103,101,40,41,13,10,123,13,10,32,32,32,32,68,101,109,111,80,97,103,101,67,111,109,112,42,32,112,97,103,101,32,61,32,110, - 101,119,32,68,101,109,111,80,97,103,101,67,111,109,112,40,41,59,13,10,13,10,32,32,32,32,84,101,120,116,69,100,105,116,111,114,42,32,116,101, - 120,116,69,100,105,116,111,114,32,61,32,110,101,119,32,84,101,120,116,69,100,105,116,111,114,40,41,59,13,10,32,32,32,32,112,97,103,101,45,62, - 97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,116,101,120,116,69,100,105,116,111,114,41,59,13,10,32,32,32,32,116,101,120, - 116,69,100,105,116,111,114,45,62,115,101,116,66,111,117,110,100,115,32,40,49,48,44,32,50,53,44,32,50,48,48,44,32,50,52,41,59,13,10,32, - 32,32,32,116,101,120,116,69,100,105,116,111,114,45,62,115,101,116,84,101,120,116,32,40,84,40,34,115,105,110,103,108,101,45,108,105,110,101,32,116, - 101,120,116,32,98,111,120,34,41,41,59,13,10,13,10,32,32,32,32,116,101,120,116,69,100,105,116,111,114,32,61,32,110,101,119,32,84,101,120,116, - 69,100,105,116,111,114,32,40,84,40,34,112,97,115,115,119,111,114,100,34,41,44,32,40,116,99,104,97,114,41,32,48,120,50,48,50,50,41,59,13, - 10,32,32,32,32,112,97,103,101,45,62,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,116,101,120,116,69,100,105,116,111,114, - 41,59,13,10,32,32,32,32,116,101,120,116,69,100,105,116,111,114,45,62,115,101,116,66,111,117,110,100,115,32,40,49,48,44,32,53,53,44,32,50, - 48,48,44,32,50,52,41,59,13,10,32,32,32,32,116,101,120,116,69,100,105,116,111,114,45,62,115,101,116,84,101,120,116,32,40,84,40,34,112,97, - 115,115,119,111,114,100,34,41,41,59,13,10,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,67,111,109,98,111,66,111,120,42,32,99,111,109,98,111,66, - 111,120,32,61,32,110,101,119,32,67,111,109,98,111,66,111,120,32,40,84,40,34,99,111,109,98,111,34,41,41,59,13,10,32,32,32,32,112,97,103, - 101,45,62,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,99,111,109,98,111,66,111,120,41,59,13,10,32,32,32,32,99,111, - 109,98,111,66,111,120,45,62,115,101,116,66,111,117,110,100,115,32,40,51,48,48,44,32,50,53,44,32,50,48,48,44,32,50,52,41,59,13,10,32, - 32,32,32,99,111,109,98,111,66,111,120,45,62,115,101,116,69,100,105,116,97,98,108,101,84,101,120,116,32,40,116,114,117,101,41,59,13,10,32,32, - 32,32,99,111,109,98,111,66,111,120,45,62,115,101,116,74,117,115,116,105,102,105,99,97,116,105,111,110,84,121,112,101,32,40,74,117,115,116,105,102, - 105,99,97,116,105,111,110,58,58,99,101,110,116,114,101,100,41,59,13,10,13,10,32,32,32,32,105,110,116,32,105,59,13,10,32,32,32,32,102,111, - 114,32,40,105,32,61,32,49,59,32,105,32,60,32,49,48,48,59,32,43,43,105,41,13,10,32,32,32,32,32,32,32,32,99,111,109,98,111,66,111, - 120,45,62,97,100,100,73,116,101,109,32,40,84,40,34,99,111,109,98,111,32,98,111,120,32,105,116,101,109,32,34,41,32,43,32,83,116,114,105,110, - 103,32,40,105,41,44,32,105,41,59,13,10,13,10,32,32,32,32,99,111,109,98,111,66,111,120,45,62,115,101,116,83,101,108,101,99,116,101,100,73, - 100,32,40,49,41,59,13,10,13,10,32,32,32,32,68,114,97,103,79,110,116,111,68,101,115,107,116,111,112,68,101,109,111,67,111,109,112,42,32,100, - 32,61,32,110,101,119,32,68,114,97,103,79,110,116,111,68,101,115,107,116,111,112,68,101,109,111,67,111,109,112,32,40,112,97,103,101,41,59,13,10, - 32,32,32,32,112,97,103,101,45,62,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,100,41,59,13,10,32,32,32,32,100,45, - 62,115,101,116,66,111,117,110,100,115,32,40,50,48,44,32,49,48,48,44,32,50,48,48,44,32,56,48,41,59,13,10,13,10,32,32,32,32,114,101, - 116,117,114,110,32,112,97,103,101,59,13,10,125,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,84,111,111,108,98,97,114,68,101,109,111,67,111,109,112, - 32,32,32,58,32,112,117,98,108,105,99,32,67,111,109,112,111,110,101,110,116,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,83,108,105,100,101,114,76,105,115,116,101,110,101,114,44,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,66,117,116,116,111,110,76,105,115,116,101,110,101, - 114,13,10,123,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,84,111,111,108,98,97,114,68,101,109,111,67,111,109,112,32,40,65,112,112,108, - 105,99,97,116,105,111,110,67,111,109,109,97,110,100,77,97,110,97,103,101,114,42,32,99,111,109,109,97,110,100,77,97,110,97,103,101,114,41,13,10, - 32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,67,114,101,97,116,101,32,97,110,100,32,97,100,100,32,116,104,101,32,116,111,111, - 108,98,97,114,46,46,46,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,116,111,111,108, - 98,97,114,32,61,32,110,101,119,32,84,111,111,108,98,97,114,40,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,65,110,100,32, - 117,115,101,32,111,117,114,32,105,116,101,109,32,102,97,99,116,111,114,121,32,116,111,32,97,100,100,32,97,32,115,101,116,32,111,102,32,100,101,102, - 97,117,108,116,32,105,99,111,110,115,32,116,111,32,105,116,46,46,46,13,10,32,32,32,32,32,32,32,32,116,111,111,108,98,97,114,45,62,97,100, - 100,68,101,102,97,117,108,116,73,116,101,109,115,32,40,102,97,99,116,111,114,121,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,78, - 111,119,32,119,101,39,108,108,32,106,117,115,116,32,99,114,101,97,116,101,32,116,104,101,32,111,116,104,101,114,32,115,108,105,100,101,114,115,32,97, - 110,100,32,98,117,116,116,111,110,115,32,111,110,32,116,104,101,32,100,101,109,111,32,112,97,103,101,44,32,119,104,105,99,104,32,97,100,106,117,115, - 116,13,10,32,32,32,32,32,32,32,32,47,47,32,116,104,101,32,116,111,111,108,98,97,114,39,115,32,112,114,111,112,101,114,116,105,101,115,46,46, - 46,13,10,32,32,32,32,32,32,32,32,76,97,98,101,108,42,32,105,110,102,111,32,61,32,110,101,119,32,76,97,98,101,108,32,40,83,116,114,105, - 110,103,58,58,101,109,112,116,121,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,34,65,115,32,119,101,108,108,32,97,115,32,115,104,111,119, - 105,110,103,32,111,102,102,32,116,111,111,108,98,97,114,115,44,32,116,104,105,115,32,100,101,109,111,32,105,108,108,117,115,116,114,97,116,101,115,32, - 104,111,119,32,116,111,32,115,116,111,114,101,32,34,13,10,32,32,32,32,32,32,32,32,32,32,32,32,34,97,32,115,101,116,32,111,102,32,83,86, - 71,32,102,105,108,101,115,32,105,110,32,97,32,90,105,112,32,102,105,108,101,44,32,101,109,98,101,100,32,116,104,97,116,32,105,110,32,121,111,117, - 114,32,97,112,112,108,105,99,97,116,105,111,110,44,32,97,110,100,32,114,101,97,100,32,34,13,10,32,32,32,32,32,32,32,32,32,32,32,32,34, - 116,104,101,109,32,98,97,99,107,32,105,110,32,97,116,32,114,117,110,116,105,109,101,46,92,110,92,110,84,104,101,32,105,99,111,110,32,105,109,97, - 103,101,115,32,104,101,114,101,32,97,114,101,32,116,97,107,101,110,32,102,114,111,109,32,116,104,101,32,111,112,101,110,45,115,111,117,114,99,101,32, - 34,13,10,32,32,32,32,32,32,32,32,32,32,32,32,34,84,97,110,103,111,32,105,99,111,110,32,112,114,111,106,101,99,116,46,34,41,59,13,10, - 13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,105,110,102,111,41,59,13,10,32,32,32, - 32,32,32,32,32,105,110,102,111,45,62,115,101,116,74,117,115,116,105,102,105,99,97,116,105,111,110,84,121,112,101,32,40,74,117,115,116,105,102,105, - 99,97,116,105,111,110,58,58,116,111,112,76,101,102,116,41,59,13,10,32,32,32,32,32,32,32,32,105,110,102,111,45,62,115,101,116,66,111,117,110, - 100,115,32,40,56,48,44,32,56,48,44,32,52,53,48,44,32,49,48,48,41,59,13,10,32,32,32,32,32,32,32,32,105,110,102,111,45,62,115,101, - 116,73,110,116,101,114,99,101,112,116,115,77,111,117,115,101,67,108,105,99,107,115,32,40,102,97,108,115,101,44,32,102,97,108,115,101,41,59,13,10, - 13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,100,101,112,116,104,83,108,105,100,101,114, - 32,61,32,110,101,119,32,83,108,105,100,101,114,32,40,84,40,34,116,111,111,108,98,97,114,32,100,101,112,116,104,58,34,41,41,41,59,13,10,32, - 32,32,32,32,32,32,32,100,101,112,116,104,83,108,105,100,101,114,45,62,115,101,116,82,97,110,103,101,32,40,49,48,46,48,44,32,50,48,48,46, - 48,44,32,49,46,48,41,59,13,10,32,32,32,32,32,32,32,32,100,101,112,116,104,83,108,105,100,101,114,45,62,115,101,116,86,97,108,117,101,32, - 40,53,48,44,32,102,97,108,115,101,41,59,13,10,32,32,32,32,32,32,32,32,100,101,112,116,104,83,108,105,100,101,114,45,62,115,101,116,83,108, - 105,100,101,114,83,116,121,108,101,32,40,83,108,105,100,101,114,58,58,76,105,110,101,97,114,72,111,114,105,122,111,110,116,97,108,41,59,13,10,32, - 32,32,32,32,32,32,32,100,101,112,116,104,83,108,105,100,101,114,45,62,115,101,116,84,101,120,116,66,111,120,83,116,121,108,101,32,40,83,108,105, - 100,101,114,58,58,84,101,120,116,66,111,120,76,101,102,116,44,32,102,97,108,115,101,44,32,56,48,44,32,50,48,41,59,13,10,32,32,32,32,32, - 32,32,32,100,101,112,116,104,83,108,105,100,101,114,45,62,97,100,100,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,32,32,32, - 32,32,32,32,32,100,101,112,116,104,83,108,105,100,101,114,45,62,115,101,116,66,111,117,110,100,115,32,40,56,48,44,32,50,49,48,44,32,51,48, - 48,44,32,50,50,41,59,13,10,32,32,32,32,32,32,32,32,40,110,101,119,32,76,97,98,101,108,32,40,100,101,112,116,104,83,108,105,100,101,114, - 45,62,103,101,116,78,97,109,101,40,41,44,32,100,101,112,116,104,83,108,105,100,101,114,45,62,103,101,116,78,97,109,101,40,41,41,41,45,62,97, - 116,116,97,99,104,84,111,67,111,109,112,111,110,101,110,116,32,40,100,101,112,116,104,83,108,105,100,101,114,44,32,102,97,108,115,101,41,59,13,10, - 13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,111,114,105,101,110,116,97,116,105,111,110, - 66,117,116,116,111,110,32,61,32,110,101,119,32,84,101,120,116,66,117,116,116,111,110,32,40,84,40,34,118,101,114,116,105,99,97,108,47,104,111,114, - 105,122,111,110,116,97,108,34,41,41,41,59,13,10,32,32,32,32,32,32,32,32,111,114,105,101,110,116,97,116,105,111,110,66,117,116,116,111,110,45, - 62,97,100,100,66,117,116,116,111,110,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13,10,32,32,32,32,32,32,32,32,111,114,105,101, - 110,116,97,116,105,111,110,66,117,116,116,111,110,45,62,99,104,97,110,103,101,87,105,100,116,104,84,111,70,105,116,84,101,120,116,32,40,50,50,41, - 59,13,10,32,32,32,32,32,32,32,32,111,114,105,101,110,116,97,116,105,111,110,66,117,116,116,111,110,45,62,115,101,116,84,111,112,76,101,102,116, - 80,111,115,105,116,105,111,110,32,40,100,101,112,116,104,83,108,105,100,101,114,45,62,103,101,116,88,40,41,44,32,100,101,112,116,104,83,108,105,100, - 101,114,45,62,103,101,116,66,111,116,116,111,109,40,41,32,43,32,50,48,41,59,13,10,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100, - 77,97,107,101,86,105,115,105,98,108,101,32,40,99,117,115,116,111,109,105,115,101,66,117,116,116,111,110,32,61,32,110,101,119,32,84,101,120,116,66, - 117,116,116,111,110,32,40,84,40,34,99,117,115,116,111,109,105,115,101,46,46,46,34,41,41,41,59,13,10,32,32,32,32,32,32,32,32,99,117,115, - 116,111,109,105,115,101,66,117,116,116,111,110,45,62,97,100,100,66,117,116,116,111,110,76,105,115,116,101,110,101,114,32,40,116,104,105,115,41,59,13, - 10,32,32,32,32,32,32,32,32,99,117,115,116,111,109,105,115,101,66,117,116,116,111,110,45,62,99,104,97,110,103,101,87,105,100,116,104,84,111,70, - 105,116,84,101,120,116,32,40,50,50,41,59,13,10,32,32,32,32,32,32,32,32,99,117,115,116,111,109,105,115,101,66,117,116,116,111,110,45,62,115, - 101,116,84,111,112,76,101,102,116,80,111,115,105,116,105,111,110,32,40,111,114,105,101,110,116,97,116,105,111,110,66,117,116,116,111,110,45,62,103,101, - 116,82,105,103,104,116,40,41,32,43,32,50,48,44,32,111,114,105,101,110,116,97,116,105,111,110,66,117,116,116,111,110,45,62,103,101,116,89,40,41, - 41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,84,111,111,108,98,97,114,68,101,109,111,67,111,109,112,40,41,13,10,32,32,32, - 32,123,13,10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65,108,108,67,104,105,108,100,114,101,110,40,41,59,13,10,32,32,32,32,125,13, - 10,13,10,32,32,32,32,118,111,105,100,32,114,101,115,105,122,101,100,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102, - 32,40,116,111,111,108,98,97,114,45,62,105,115,86,101,114,116,105,99,97,108,40,41,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,116,111, - 111,108,98,97,114,45,62,115,101,116,66,111,117,110,100,115,32,40,48,44,32,48,44,32,40,105,110,116,41,32,100,101,112,116,104,83,108,105,100,101, - 114,45,62,103,101,116,86,97,108,117,101,40,41,44,32,103,101,116,72,101,105,103,104,116,40,41,41,59,13,10,32,32,32,32,32,32,32,32,101,108, - 115,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,116,111,111,108,98,97,114,45,62,115,101,116,66,111,117,110,100,115,32,40,48,44,32,48, - 44,32,103,101,116,87,105,100,116,104,40,41,44,32,40,105,110,116,41,32,100,101,112,116,104,83,108,105,100,101,114,45,62,103,101,116,86,97,108,117, - 101,40,41,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,115,108,105,100,101,114,86,97,108,117,101,67,104,97,110, - 103,101,100,32,40,83,108,105,100,101,114,42,32,115,108,105,100,101,114,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,114,101,115, - 105,122,101,100,40,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,98,117,116,116,111,110,67,108,105,99,107,101,100, - 32,40,66,117,116,116,111,110,42,32,98,117,116,116,111,110,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,105,102,32,40,98,117, - 116,116,111,110,32,61,61,32,111,114,105,101,110,116,97,116,105,111,110,66,117,116,116,111,110,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,116,111,111,108,98,97,114,45,62,115,101,116,86,101,114,116,105,99,97,108,32,40,33,32,116,111,111,108,98, - 97,114,45,62,105,115,86,101,114,116,105,99,97,108,40,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,115,105,122,101,100,40, - 41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,98,117,116,116,111,110,32,61, - 61,32,99,117,115,116,111,109,105,115,101,66,117,116,116,111,110,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,116,111,111,108,98,97,114,45,62,115,104,111,119,67,117,115,116,111,109,105,115,97,116,105,111,110,68,105,97,108,111,103,32,40,102,97,99, - 116,111,114,121,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10,13,10,112,114,105,118,97,116,101,58,13,10,32,32, - 32,32,84,111,111,108,98,97,114,42,32,116,111,111,108,98,97,114,59,13,10,32,32,32,32,83,108,105,100,101,114,42,32,100,101,112,116,104,83,108, - 105,100,101,114,59,13,10,32,32,32,32,84,101,120,116,66,117,116,116,111,110,42,32,111,114,105,101,110,116,97,116,105,111,110,66,117,116,116,111,110, - 59,13,10,32,32,32,32,84,101,120,116,66,117,116,116,111,110,42,32,99,117,115,116,111,109,105,115,101,66,117,116,116,111,110,59,13,10,13,10,32, - 32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,13,10,32,32,32,32,99,108,97,115,115,32,68,101,109,111,84,111,111,108,98,97,114,73,116,101,109,70,97,99,116,111,114,121,32,32,32, - 58,32,112,117,98,108,105,99,32,84,111,111,108,98,97,114,73,116,101,109,70,97,99,116,111,114,121,13,10,32,32,32,32,123,13,10,32,32,32,32, - 112,117,98,108,105,99,58,13,10,32,32,32,32,32,32,32,32,68,101,109,111,84,111,111,108,98,97,114,73,116,101,109,70,97,99,116,111,114,121,40, - 41,32,123,125,13,10,32,32,32,32,32,32,32,32,126,68,101,109,111,84,111,111,108,98,97,114,73,116,101,109,70,97,99,116,111,114,121,40,41,32, - 123,125,13,10,13,10,32,32,32,32,32,32,32,32,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,32,32,32,32,47,47,32,69,97,99,104,32,116,121,112,101,32,111,102,32, - 105,116,101,109,32,97,32,116,111,111,108,98,97,114,32,99,97,110,32,99,111,110,116,97,105,110,32,109,117,115,116,32,98,101,32,103,105,118,101,110, - 32,97,32,117,110,105,113,117,101,32,73,68,46,32,84,104,101,115,101,13,10,32,32,32,32,32,32,32,32,47,47,32,97,114,101,32,116,104,101,32, - 111,110,101,115,32,119,101,39,108,108,32,117,115,101,32,105,110,32,116,104,105,115,32,100,101,109,111,46,13,10,32,32,32,32,32,32,32,32,101,110, - 117,109,32,68,101,109,111,84,111,111,108,98,97,114,73,116,101,109,73,100,115,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,100,111,99,95,110,101,119,32,32,32,32,32,32,32,32,32,61,32,49,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 100,111,99,95,111,112,101,110,32,32,32,32,32,32,32,32,61,32,50,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,111,99,95,115,97, - 118,101,32,32,32,32,32,32,32,32,61,32,51,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,111,99,95,115,97,118,101,65,115,32,32, - 32,32,32,32,61,32,52,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,100,105,116,95,99,111,112,121,32,32,32,32,32,32,32,61,32, - 53,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,101,100,105,116,95,99,117,116,32,32,32,32,32,32,32,32,61,32,54,44,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,101,100,105,116,95,112,97,115,116,101,32,32,32,32,32,32,61,32,55,44,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,106,117,99,101,76,111,103,111,66,117,116,116,111,110,32,32,61,32,56,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,117, - 115,116,111,109,67,111,109,98,111,66,111,120,32,32,61,32,57,13,10,32,32,32,32,32,32,32,32,125,59,13,10,13,10,32,32,32,32,32,32,32, - 32,118,111,105,100,32,103,101,116,65,108,108,84,111,111,108,98,97,114,73,116,101,109,73,100,115,32,40,65,114,114,97,121,32,60,105,110,116,62,38, - 32,105,100,115,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,84,104,105,115,32,114,101, - 116,117,114,110,115,32,116,104,101,32,99,111,109,112,108,101,116,101,32,108,105,115,116,32,111,102,32,97,108,108,32,105,116,101,109,32,73,68,115,32, - 116,104,97,116,32,97,114,101,32,97,108,108,111,119,101,100,32,116,111,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,103,111,32,105, - 110,32,111,117,114,32,116,111,111,108,98,97,114,46,32,65,110,121,32,105,116,101,109,115,32,121,111,117,32,109,105,103,104,116,32,119,97,110,116,32, - 116,111,32,97,100,100,32,109,117,115,116,32,98,101,32,108,105,115,116,101,100,32,104,101,114,101,46,32,84,104,101,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,47,47,32,111,114,100,101,114,32,105,110,32,119,104,105,99,104,32,116,104,101,121,32,97,114,101,32,108,105,115,116,101,100,32,119, - 105,108,108,32,98,101,32,117,115,101,100,32,98,121,32,116,104,101,32,116,111,111,108,98,97,114,32,99,117,115,116,111,109,105,115,97,116,105,111,110, - 32,112,97,110,101,108,46,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46,97,100,100,32,40,100,111,99,95,110,101,119,41, - 59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46,97,100,100,32,40,100,111,99,95,111,112,101,110,41,59,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,105,100,115,46,97,100,100,32,40,100,111,99,95,115,97,118,101,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,105,100,115,46,97,100,100,32,40,100,111,99,95,115,97,118,101,65,115,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46, - 97,100,100,32,40,101,100,105,116,95,99,111,112,121,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46,97,100,100,32,40,101, - 100,105,116,95,99,117,116,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46,97,100,100,32,40,101,100,105,116,95,112,97,115, - 116,101,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46,97,100,100,32,40,106,117,99,101,76,111,103,111,66,117,116,116,111, - 110,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46,97,100,100,32,40,99,117,115,116,111,109,67,111,109,98,111,66,111,120, - 41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,73,102,32,121,111,117,39,114,101,32,103,111,105,110,103,32,116,111,32, - 117,115,101,32,115,101,112,97,114,97,116,111,114,115,44,32,116,104,101,110,32,116,104,101,121,32,109,117,115,116,32,97,108,115,111,32,98,101,32,97, - 100,100,101,100,32,101,120,112,108,105,99,105,116,108,121,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,116,111,32,116,104,101,32,108, - 105,115,116,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46,97,100,100,32,40,115,101,112,97,114,97,116,111,114,66,97,114,73, - 100,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46,97,100,100,32,40,115,112,97,99,101,114,73,100,41,59,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,105,100,115,46,97,100,100,32,40,102,108,101,120,105,98,108,101,83,112,97,99,101,114,73,100,41,59,13,10,32, - 32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,118,111,105,100,32,103,101,116,68,101,102,97,117,108,116,73,116,101,109,83, - 101,116,32,40,65,114,114,97,121,32,60,105,110,116,62,38,32,105,100,115,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,47,47,32,84,104,105,115,32,114,101,116,117,114,110,115,32,97,110,32,111,114,100,101,114,101,100,32,108,105,115,116,32,111,102, - 32,116,104,101,32,115,101,116,32,111,102,32,105,116,101,109,115,32,116,104,97,116,32,109,97,107,101,32,117,112,32,97,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,47,47,32,116,111,111,108,98,97,114,39,115,32,100,101,102,97,117,108,116,32,115,101,116,46,32,78,111,116,32,97,108,108,32, - 105,116,101,109,115,32,110,101,101,100,32,116,111,32,98,101,32,111,110,32,116,104,105,115,32,108,105,115,116,44,32,97,110,100,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,47,47,32,105,116,101,109,115,32,99,97,110,32,97,112,112,101,97,114,32,109,117,108,116,105,112,108,101,32,116,105,109, - 101,115,32,40,101,46,103,46,32,116,104,101,32,115,101,112,97,114,97,116,111,114,115,32,117,115,101,100,32,104,101,114,101,41,46,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,105,100,115,46,97,100,100,32,40,100,111,99,95,110,101,119,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,105,100,115,46,97,100,100,32,40,100,111,99,95,111,112,101,110,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46,97,100, - 100,32,40,100,111,99,95,115,97,118,101,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46,97,100,100,32,40,100,111,99,95, - 115,97,118,101,65,115,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46,97,100,100,32,40,115,112,97,99,101,114,73,100,41, - 59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46,97,100,100,32,40,115,101,112,97,114,97,116,111,114,66,97,114,73,100,41,59, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46,97,100,100,32,40,101,100,105,116,95,99,111,112,121,41,59,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,105,100,115,46,97,100,100,32,40,101,100,105,116,95,99,117,116,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,105,100,115,46,97,100,100,32,40,101,100,105,116,95,112,97,115,116,101,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46, - 97,100,100,32,40,115,101,112,97,114,97,116,111,114,66,97,114,73,100,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46,97, - 100,100,32,40,102,108,101,120,105,98,108,101,83,112,97,99,101,114,73,100,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46, - 97,100,100,32,40,99,117,115,116,111,109,67,111,109,98,111,66,111,120,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46,97, - 100,100,32,40,102,108,101,120,105,98,108,101,83,112,97,99,101,114,73,100,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46, - 97,100,100,32,40,115,101,112,97,114,97,116,111,114,66,97,114,73,100,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,100,115,46,97, - 100,100,32,40,106,117,99,101,76,111,103,111,66,117,116,116,111,110,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32, - 32,32,32,84,111,111,108,98,97,114,73,116,101,109,67,111,109,112,111,110,101,110,116,42,32,99,114,101,97,116,101,73,116,101,109,32,40,99,111,110, - 115,116,32,105,110,116,32,105,116,101,109,73,100,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,115, - 119,105,116,99,104,32,40,105,116,101,109,73,100,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,99,97,115,101,32,100,111,99,95,110,101,119,58,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110, - 32,99,114,101,97,116,101,66,117,116,116,111,110,70,114,111,109,90,105,112,70,105,108,101,83,86,71,32,40,105,116,101,109,73,100,44,32,84,40,34, - 110,101,119,34,41,44,32,84,40,34,100,111,99,117,109,101,110,116,45,110,101,119,46,115,118,103,34,41,41,59,13,10,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,99,97,115,101,32,100,111,99,95,111,112,101,110,58,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101, - 116,117,114,110,32,99,114,101,97,116,101,66,117,116,116,111,110,70,114,111,109,90,105,112,70,105,108,101,83,86,71,32,40,105,116,101,109,73,100,44, - 32,84,40,34,111,112,101,110,34,41,44,32,84,40,34,100,111,99,117,109,101,110,116,45,111,112,101,110,46,115,118,103,34,41,41,59,13,10,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,100,111,99,95,115,97,118,101,58,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,114,101,116,117,114,110,32,99,114,101,97,116,101,66,117,116,116,111,110,70,114,111,109,90,105,112,70,105,108,101,83,86,71,32,40,105, - 116,101,109,73,100,44,32,84,40,34,115,97,118,101,34,41,44,32,84,40,34,100,111,99,117,109,101,110,116,45,115,97,118,101,46,115,118,103,34,41, - 41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,100,111,99,95,115,97,118,101,65,115,58,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,114,101,97,116,101,66,117,116,116,111,110,70,114,111,109,90,105,112,70,105, - 108,101,83,86,71,32,40,105,116,101,109,73,100,44,32,84,40,34,115,97,118,101,32,97,115,34,41,44,32,84,40,34,100,111,99,117,109,101,110,116, - 45,115,97,118,101,45,97,115,46,115,118,103,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,101,100,105, - 116,95,99,111,112,121,58,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,114,101,97,116,101,66,117, - 116,116,111,110,70,114,111,109,90,105,112,70,105,108,101,83,86,71,32,40,105,116,101,109,73,100,44,32,84,40,34,99,111,112,121,34,41,44,32,84, - 40,34,101,100,105,116,45,99,111,112,121,46,115,118,103,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32, - 101,100,105,116,95,99,117,116,58,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,114,101,97,116,101, - 66,117,116,116,111,110,70,114,111,109,90,105,112,70,105,108,101,83,86,71,32,40,105,116,101,109,73,100,44,32,84,40,34,99,117,116,34,41,44,32, - 84,40,34,101,100,105,116,45,99,117,116,46,115,118,103,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32, - 101,100,105,116,95,112,97,115,116,101,58,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,99,114,101,97, - 116,101,66,117,116,116,111,110,70,114,111,109,90,105,112,70,105,108,101,83,86,71,32,40,105,116,101,109,73,100,44,32,84,40,34,112,97,115,116,101, - 34,41,44,32,84,40,34,101,100,105,116,45,112,97,115,116,101,46,115,118,103,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,99,97,115,101,32,106,117,99,101,76,111,103,111,66,117,116,116,111,110,58,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114, - 101,116,117,114,110,32,110,101,119,32,84,111,111,108,98,97,114,66,117,116,116,111,110,32,40,105,116,101,109,73,100,44,32,84,40,34,106,117,99,101, - 33,34,41,44,32,68,114,97,119,97,98,108,101,58,58,99,114,101,97,116,101,70,114,111,109,73,109,97,103,101,68,97,116,97,32,40,66,105,110,97, - 114,121,68,97,116,97,58,58,106,117,99,101,95,112,110,103,44,32,66,105,110,97,114,121,68,97,116,97,58,58,106,117,99,101,95,112,110,103,83,105, - 122,101,41,44,32,48,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,97,115,101,32,99,117,115,116,111,109,67,111,109,98,111, - 66,111,120,58,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,110,101,119,32,67,117,115,116,111,109,84, - 111,111,108,98,97,114,67,111,109,98,111,66,111,120,32,40,105,116,101,109,73,100,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 100,101,102,97,117,108,116,58,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,98,114,101,97,107,59,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,48,59,13,10,32,32,32,32,32,32, - 32,32,125,13,10,13,10,32,32,32,32,112,114,105,118,97,116,101,58,13,10,32,32,32,32,32,32,32,32,83,116,114,105,110,103,65,114,114,97,121, - 32,105,99,111,110,78,97,109,101,115,59,13,10,32,32,32,32,32,32,32,32,79,119,110,101,100,65,114,114,97,121,32,60,68,114,97,119,97,98,108, - 101,62,32,105,99,111,110,115,70,114,111,109,90,105,112,70,105,108,101,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,32,84,104,105,115,32, - 105,115,32,97,32,108,105,116,116,108,101,32,117,116,105,108,105,116,121,32,116,111,32,99,114,101,97,116,101,32,97,32,98,117,116,116,111,110,32,119, - 105,116,104,32,111,110,101,32,111,102,32,116,104,101,32,83,86,71,32,105,109,97,103,101,115,32,105,110,13,10,32,32,32,32,32,32,32,32,47,47, - 32,111,117,114,32,101,109,98,101,100,100,101,100,32,90,73,80,32,102,105,108,101,32,34,105,99,111,110,115,46,122,105,112,34,13,10,32,32,32,32, - 32,32,32,32,84,111,111,108,98,97,114,66,117,116,116,111,110,42,32,99,114,101,97,116,101,66,117,116,116,111,110,70,114,111,109,90,105,112,70,105, - 108,101,83,86,71,32,40,99,111,110,115,116,32,105,110,116,32,105,116,101,109,73,100,44,32,99,111,110,115,116,32,83,116,114,105,110,103,38,32,116, - 101,120,116,44,32,99,111,110,115,116,32,83,116,114,105,110,103,38,32,102,105,108,101,110,97,109,101,41,13,10,32,32,32,32,32,32,32,32,123,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,105,99,111,110,115,70,114,111,109,90,105,112,70,105,108,101,46,115,105,122,101,40,41, - 32,61,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47, - 47,32,73,102,32,119,101,39,118,101,32,110,111,116,32,97,108,114,101,97,100,121,32,100,111,110,101,32,115,111,44,32,108,111,97,100,32,97,108,108, - 32,116,104,101,32,105,109,97,103,101,115,32,102,114,111,109,32,116,104,101,32,122,105,112,32,102,105,108,101,46,46,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,77,101,109,111,114,121,73,110,112,117,116,83,116,114,101,97,109,32,105,99,111,110,115,70,105,108,101,83,116,114,101, - 97,109,32,40,66,105,110,97,114,121,68,97,116,97,58,58,105,99,111,110,115,95,122,105,112,44,32,66,105,110,97,114,121,68,97,116,97,58,58,105, - 99,111,110,115,95,122,105,112,83,105,122,101,44,32,102,97,108,115,101,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,90, - 105,112,70,105,108,101,32,105,99,111,110,115,32,40,38,105,99,111,110,115,70,105,108,101,83,116,114,101,97,109,44,32,102,97,108,115,101,41,59,13, - 10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102,111,114,32,40,105,110,116,32,105,32,61,32,48,59,32,105,32,60,32,105, - 99,111,110,115,46,103,101,116,78,117,109,69,110,116,114,105,101,115,40,41,59,32,43,43,105,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,73,110,112,117,116,83,116,114,101,97,109,42,32, - 115,118,103,70,105,108,101,83,116,114,101,97,109,32,61,32,105,99,111,110,115,46,99,114,101,97,116,101,83,116,114,101,97,109,70,111,114,69,110,116, - 114,121,32,40,105,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,115,118,103,70,105, - 108,101,83,116,114,101,97,109,32,33,61,32,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,99,111,110,78,97,109,101,115,46,97,100,100,32,40,105,99, - 111,110,115,46,103,101,116,69,110,116,114,121,40,105,41,45,62,102,105,108,101,110,97,109,101,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,105,99,111,110,115,70,114,111,109,90,105,112,70,105,108,101,46,97,100,100,32,40,68,114,97,119,97, - 98,108,101,58,58,99,114,101,97,116,101,70,114,111,109,73,109,97,103,101,68,97,116,97,83,116,114,101,97,109,32,40,42,115,118,103,70,105,108,101, - 83,116,114,101,97,109,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,100,101,108, - 101,116,101,32,115,118,103,70,105,108,101,83,116,114,101,97,109,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,68,114,97,119,97,98,108,101,42,32,105,109,97,103,101,32,61,32,105,99,111,110,115,70,114,111,109,90,105, - 112,70,105,108,101,32,91,105,99,111,110,78,97,109,101,115,46,105,110,100,101,120,79,102,32,40,102,105,108,101,110,97,109,101,41,93,45,62,99,114, - 101,97,116,101,67,111,112,121,40,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,110,101,119,32,84,111,111,108, - 98,97,114,66,117,116,116,111,110,32,40,105,116,101,109,73,100,44,32,116,101,120,116,44,32,105,109,97,103,101,44,32,48,41,59,13,10,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,48,59,13,10,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32, - 32,32,32,47,47,32,68,101,109,111,110,115,116,114,97,116,101,115,32,104,111,119,32,116,111,32,112,117,116,32,97,32,99,117,115,116,111,109,32,99, - 111,109,112,111,110,101,110,116,32,105,110,116,111,32,97,32,116,111,111,108,98,97,114,32,45,32,116,104,105,115,32,111,110,101,32,99,111,110,116,97, - 105,110,115,13,10,32,32,32,32,32,32,32,32,47,47,32,97,32,67,111,109,98,111,66,111,120,46,13,10,32,32,32,32,32,32,32,32,99,108,97, - 115,115,32,67,117,115,116,111,109,84,111,111,108,98,97,114,67,111,109,98,111,66,111,120,32,58,32,112,117,98,108,105,99,32,84,111,111,108,98,97, - 114,73,116,101,109,67,111,109,112,111,110,101,110,116,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,112,117,98,108,105, - 99,58,13,10,32,32,32,32,32,32,32,32,32,32,32,32,67,117,115,116,111,109,84,111,111,108,98,97,114,67,111,109,98,111,66,111,120,32,40,99, - 111,110,115,116,32,105,110,116,32,116,111,111,108,98,97,114,73,116,101,109,73,100,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,58,32,84,111,111,108,98,97,114,73,116,101,109,67,111,109,112,111,110,101,110,116,32,40,116,111,111,108,98,97,114,73,116,101,109,73,100,44,32, - 84,40,34,67,117,115,116,111,109,32,84,111,111,108,98,97,114,32,73,116,101,109,34,41,44,32,102,97,108,115,101,41,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77,97,107,101,86,105,115,105,98, - 108,101,32,40,99,111,109,98,111,66,111,120,32,61,32,110,101,119,32,67,111,109,98,111,66,111,120,32,40,84,40,34,100,101,109,111,32,116,111,111, - 108,98,97,114,32,99,111,109,98,111,32,98,111,120,34,41,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,102, - 111,114,32,40,105,110,116,32,105,32,61,32,49,59,32,105,32,60,32,50,48,59,32,43,43,105,41,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,99,111,109,98,111,66,111,120,45,62,97,100,100,73,116,101,109,32,40,84,40,34,84,111,111,108,98,97,114,32,67, - 111,109,98,111,66,111,120,32,105,116,101,109,32,34,41,32,43,32,83,116,114,105,110,103,32,40,105,41,44,32,105,41,59,13,10,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,99,111,109,98,111,66,111,120,45,62,115,101,116,83,101,108,101,99,116,101,100,73,100,32,40,49,41, - 59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,111,109,98,111,66,111,120,45,62,115,101,116,69,100,105,116,97,98,108,101, - 84,101,120,116,32,40,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,126,67,117,115,116,111,109,84,111,111,108,98,97,114,67,111,109,98,111,66,111,120,40,41,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,100,101,108,101,116,101,32,99,111,109,98,111,66,111,120,59,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,98,111,111,108,32,103,101,116,84,111,111,108,98, - 97,114,73,116,101,109,83,105,122,101,115,32,40,105,110,116,32,116,111,111,108,98,97,114,68,101,112,116,104,44,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,98,111,111,108,32,105,115,84,111,111, - 108,98,97,114,86,101,114,116,105,99,97,108,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,105,110,116,38,32,112,114,101,102,101,114,114,101,100,83,105,122,101,44,32,105,110,116,38,32,109,105, - 110,83,105,122,101,44,32,105,110,116,38,32,109,97,120,83,105,122,101,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,105,115,84,111,111,108,98,97,114,86,101,114,116,105,99,97,108,41,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,102,97,108,115,101,59,13,10,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,112,114,101,102,101,114,114,101,100,83,105,122,101,32,61,32,50,53,48,59,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,109,105,110,83,105,122,101,32,61,32,56,48,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,109, - 97,120,83,105,122,101,32,61,32,51,48,48,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,116,114, - 117,101,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,118,111,105,100,32,112, - 97,105,110,116,66,117,116,116,111,110,65,114,101,97,32,40,71,114,97,112,104,105,99,115,38,44,32,105,110,116,44,32,105,110,116,44,32,98,111,111, - 108,44,32,98,111,111,108,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,118,111,105,100,32,99,111,110,116,101,110,116,65,114,101,97,67,104,97,110,103,101,100,32,40,99, - 111,110,115,116,32,82,101,99,116,97,110,103,108,101,38,32,99,111,110,116,101,110,116,65,114,101,97,41,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,111,109,98,111,66,111,120,45,62,115,101,116,83,105,122,101,32,40, - 99,111,110,116,101,110,116,65,114,101,97,46,103,101,116,87,105,100,116,104,40,41,32,45,32,50,44,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,106,109,105,110,32,40,99,111,110,116,101,110,116,65,114,101, - 97,46,103,101,116,72,101,105,103,104,116,40,41,32,45,32,50,44,32,50,50,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,99,111,109,98,111,66,111,120,45,62,115,101,116,67,101,110,116,114,101,80,111,115,105,116,105,111,110,32,40,99,111,110,116,101,110,116, - 65,114,101,97,46,103,101,116,67,101,110,116,114,101,88,40,41,44,32,99,111,110,116,101,110,116,65,114,101,97,46,103,101,116,67,101,110,116,114,101, - 89,40,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,112,114,105,118,97,116,101,58, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,67,111,109,98,111,66,111,120,42,32,99,111,109,98,111,66,111,120,59,13,10,32,32,32,32,32, - 32,32,32,125,59,13,10,32,32,32,32,125,59,13,10,13,10,32,32,32,32,68,101,109,111,84,111,111,108,98,97,114,73,116,101,109,70,97,99,116, - 111,114,121,32,102,97,99,116,111,114,121,59,13,10,125,59,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,68,101,109,111,84,97,98,98,101,100,67,111, - 109,112,111,110,101,110,116,32,32,58,32,112,117,98,108,105,99,32,84,97,98,98,101,100,67,111,109,112,111,110,101,110,116,44,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,66,117,116,116,111,110,76,105, - 115,116,101,110,101,114,13,10,123,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,68,101,109,111,84,97,98,98,101,100,67,111,109,112,111,110, - 101,110,116,32,40,65,112,112,108,105,99,97,116,105,111,110,67,111,109,109,97,110,100,77,97,110,97,103,101,114,42,32,99,111,109,109,97,110,100,77, - 97,110,97,103,101,114,41,13,10,32,32,32,32,32,32,32,32,58,32,84,97,98,98,101,100,67,111,109,112,111,110,101,110,116,32,40,84,97,98,98, - 101,100,66,117,116,116,111,110,66,97,114,58,58,84,97,98,115,65,116,84,111,112,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32, - 97,100,100,84,97,98,32,40,84,40,34,115,108,105,100,101,114,115,34,41,44,32,32,32,32,32,32,32,103,101,116,82,97,110,100,111,109,66,114,105, - 103,104,116,67,111,108,111,117,114,40,41,44,32,99,114,101,97,116,101,83,108,105,100,101,114,115,80,97,103,101,40,41,44,32,32,32,32,32,32,116, - 114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,97,100,100,84,97,98,32,40,84,40,34,116,111,111,108,98,97,114,115,34,41,44,32,32,32, - 32,32,32,103,101,116,82,97,110,100,111,109,66,114,105,103,104,116,67,111,108,111,117,114,40,41,44,32,110,101,119,32,84,111,111,108,98,97,114,68, - 101,109,111,67,111,109,112,32,40,99,111,109,109,97,110,100,77,97,110,97,103,101,114,41,44,32,32,32,32,116,114,117,101,41,59,13,10,32,32,32, - 32,32,32,32,32,97,100,100,84,97,98,32,40,84,40,34,98,117,116,116,111,110,115,34,41,44,32,32,32,32,32,32,32,103,101,116,82,97,110,100, - 111,109,66,114,105,103,104,116,67,111,108,111,117,114,40,41,44,32,110,101,119,32,66,117,116,116,111,110,115,80,97,103,101,32,40,116,104,105,115,41, - 44,32,32,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,97,100,100,84,97,98,32,40,84,40,34,114,97,100,105,111,32,98,117,116, - 116,111,110,115,34,41,44,32,103,101,116,82,97,110,100,111,109,66,114,105,103,104,116,67,111,108,111,117,114,40,41,44,32,99,114,101,97,116,101,82, - 97,100,105,111,66,117,116,116,111,110,80,97,103,101,40,41,44,32,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,97,100,100,84,97, - 98,32,40,84,40,34,109,105,115,99,32,119,105,100,103,101,116,115,34,41,44,32,32,103,101,116,82,97,110,100,111,109,66,114,105,103,104,116,67,111, - 108,111,117,114,40,41,44,32,99,114,101,97,116,101,77,105,115,99,80,97,103,101,40,41,44,32,32,32,32,32,32,32,32,32,116,114,117,101,41,59, - 13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,68,101,109,111,84,97,98,98,101,100,67,111,109,112,111,110,101,110,116,40,41,13,10,32, - 32,32,32,123,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,98,117,116,116,111,110,67,108,105,99,107,101,100,32,40,66, - 117,116,116,111,110,42,32,98,117,116,116,111,110,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,66,117,98,98,108,101,77,101,115, - 115,97,103,101,67,111,109,112,111,110,101,110,116,42,32,98,109,99,32,61,32,110,101,119,32,66,117,98,98,108,101,77,101,115,115,97,103,101,67,111, - 109,112,111,110,101,110,116,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,68,101,115,107,116,111,112,58,58,99,97,110,85,115, - 101,83,101,109,105,84,114,97,110,115,112,97,114,101,110,116,87,105,110,100,111,119,115,40,41,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,98,109,99,45,62,115,101,116,65,108,119,97,121,115,79,110,84,111,112,32,40,116,114,117,101,41,59,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,98,109,99,45,62,97,100,100,84,111,68,101,115,107,116,111,112,32,40,48,41,59,13,10,32,32,32,32, - 32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,97,100,100,67,104,105,108,100,67,111,109,112,111,110,101,110,116,32,40,98,109,99,41,59,13,10,32,32,32,32,32,32,32,32,125,13, - 10,13,10,32,32,32,32,32,32,32,32,98,109,99,45,62,115,104,111,119,65,116,32,40,98,117,116,116,111,110,44,32,84,40,34,84,104,105,115,32, - 105,115,32,97,32,100,101,109,111,32,111,102,32,116,104,101,32,66,117,98,98,108,101,77,101,115,115,97,103,101,67,111,109,112,111,110,101,110,116,44, - 32,119,104,105,99,104,32,108,101,116,115,32,121,111,117,32,112,111,112,32,117,112,32,97,32,109,101,115,115,97,103,101,32,112,111,105,110,116,105,110, - 103,32,97,116,32,97,32,99,111,109,112,111,110,101,110,116,32,111,114,32,115,111,109,101,119,104,101,114,101,32,111,110,32,116,104,101,32,115,99,114, - 101,101,110,46,92,110,92,110,84,104,101,32,109,101,115,115,97,103,101,32,98,117,98,98,108,101,115,32,119,105,108,108,32,100,105,115,97,112,112,101, - 97,114,32,97,102,116,101,114,32,97,32,116,105,109,101,111,117,116,32,112,101,114,105,111,100,44,32,111,114,32,119,104,101,110,32,116,104,101,32,109, - 111,117,115,101,32,105,115,32,99,108,105,99,107,101,100,46,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,50,48,48,48,44,32,116,114,117,101,44,32,116,114,117,101,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,115,116,97,116,105, - 99,32,99,111,110,115,116,32,67,111,108,111,117,114,32,103,101,116,82,97,110,100,111,109,66,114,105,103,104,116,67,111,108,111,117,114,40,41,13,10, - 32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,114,101,116,117,114,110,32,67,111,108,111,117,114,32,40,82,97,110,100,111,109,58,58,103,101, - 116,83,121,115,116,101,109,82,97,110,100,111,109,40,41,46,110,101,120,116,70,108,111,97,116,40,41,44,32,48,46,49,102,44,32,48,46,57,55,102, - 44,32,49,46,48,102,41,59,13,10,32,32,32,32,125,13,10,125,59,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,99,108,97,115,115,32,68,101,109,111,66,97,99, - 107,103,114,111,117,110,100,84,104,114,101,97,100,32,32,58,32,112,117,98,108,105,99,32,84,104,114,101,97,100,87,105,116,104,80,114,111,103,114,101, - 115,115,87,105,110,100,111,119,13,10,123,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,68,101,109,111,66,97,99,107,103,114,111,117,110,100, - 84,104,114,101,97,100,40,41,13,10,32,32,32,32,32,32,32,32,58,32,84,104,114,101,97,100,87,105,116,104,80,114,111,103,114,101,115,115,87,105, - 110,100,111,119,32,40,84,40,34,98,117,115,121,32,100,111,105,110,103,32,115,111,109,101,32,105,109,112,111,114,116,97,110,116,32,116,104,105,110,103, - 115,46,46,46,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,116,114,117,101,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,116,114,117,101,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,115,101,116,83,116,97,116,117,115,77, - 101,115,115,97,103,101,32,40,84,40,34,71,101,116,116,105,110,103,32,114,101,97,100,121,46,46,46,34,41,41,59,13,10,32,32,32,32,125,13,10, - 13,10,32,32,32,32,126,68,101,109,111,66,97,99,107,103,114,111,117,110,100,84,104,114,101,97,100,40,41,13,10,32,32,32,32,123,13,10,32,32, - 32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,114,117,110,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,115,101, - 116,80,114,111,103,114,101,115,115,32,40,45,49,46,48,41,59,32,47,47,32,115,101,116,116,105,110,103,32,97,32,118,97,108,117,101,32,98,101,121, - 111,110,100,32,116,104,101,32,114,97,110,103,101,32,48,32,45,62,32,49,32,119,105,108,108,32,115,104,111,119,32,97,32,115,112,105,110,110,105,110, - 103,32,98,97,114,46,46,13,10,32,32,32,32,32,32,32,32,115,101,116,83,116,97,116,117,115,77,101,115,115,97,103,101,32,40,84,40,34,80,114, - 101,112,97,114,105,110,103,32,116,111,32,100,111,32,115,111,109,101,32,115,116,117,102,102,46,46,46,34,41,41,59,13,10,32,32,32,32,32,32,32, - 32,119,97,105,116,32,40,50,48,48,48,41,59,13,10,13,10,32,32,32,32,32,32,32,32,99,111,110,115,116,32,105,110,116,32,116,104,105,110,103, - 115,84,111,68,111,32,61,32,49,48,59,13,10,13,10,32,32,32,32,32,32,32,32,102,111,114,32,40,105,110,116,32,105,32,61,32,48,59,32,105, - 32,60,32,116,104,105,110,103,115,84,111,68,111,59,32,43,43,105,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,47,47,32,109,117,115,116,32,99,104,101,99,107,32,116,104,105,115,32,97,115,32,111,102,116,101,110,32,97,115,32,112,111,115,115,105, - 98,108,101,44,32,98,101,99,97,117,115,101,32,116,104,105,115,32,105,115,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,104,111,119, - 32,119,101,32,107,110,111,119,32,105,102,32,116,104,101,32,117,115,101,114,39,115,32,112,114,101,115,115,101,100,32,39,99,97,110,99,101,108,39,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,116,104,114,101,97,100,83,104,111,117,108,100,69,120,105,116,40,41,41,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,114,101,116,117,114,110,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32, - 116,104,105,115,32,119,105,108,108,32,117,112,100,97,116,101,32,116,104,101,32,112,114,111,103,114,101,115,115,32,98,97,114,32,111,110,32,116,104,101, - 32,100,105,97,108,111,103,32,98,111,120,13,10,32,32,32,32,32,32,32,32,32,32,32,32,115,101,116,80,114,111,103,114,101,115,115,32,40,105,32, - 47,32,40,100,111,117,98,108,101,41,32,116,104,105,110,103,115,84,111,68,111,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,115, - 101,116,83,116,97,116,117,115,77,101,115,115,97,103,101,32,40,83,116,114,105,110,103,32,40,116,104,105,110,103,115,84,111,68,111,32,45,32,105,41, - 32,43,32,84,40,34,32,116,104,105,110,103,115,32,108,101,102,116,32,116,111,32,100,111,46,46,46,34,41,41,59,13,10,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,119,97,105,116,32,40,53,48,48,41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32, - 32,115,101,116,80,114,111,103,114,101,115,115,32,40,45,49,46,48,41,59,32,47,47,32,115,101,116,116,105,110,103,32,97,32,118,97,108,117,101,32, - 98,101,121,111,110,100,32,116,104,101,32,114,97,110,103,101,32,48,32,45,62,32,49,32,119,105,108,108,32,115,104,111,119,32,97,32,115,112,105,110, - 110,105,110,103,32,98,97,114,46,46,13,10,32,32,32,32,32,32,32,32,115,101,116,83,116,97,116,117,115,77,101,115,115,97,103,101,32,40,84,40, - 34,70,105,110,105,115,104,105,110,103,32,111,102,102,32,116,104,101,32,108,97,115,116,32,102,101,119,32,98,105,116,115,32,97,110,100,32,112,105,101, - 99,101,115,33,34,41,41,59,13,10,32,32,32,32,32,32,32,32,119,97,105,116,32,40,50,48,48,48,41,59,13,10,32,32,32,32,125,13,10,125, - 59,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,13,10,47,42,42,32,65,32,68,105,97,108,111,103,87,105,110,100,111,119,32,99,111,110,116,97,105,110,105,110,103,32,97,32,67, - 111,108,111,117,114,83,101,108,101,99,116,111,114,32,99,111,109,112,111,110,101,110,116,32,42,47,13,10,99,108,97,115,115,32,67,111,108,111,117,114, - 83,101,108,101,99,116,111,114,68,105,97,108,111,103,87,105,110,100,111,119,32,32,58,32,112,117,98,108,105,99,32,68,105,97,108,111,103,87,105,110, - 100,111,119,13,10,123,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,67,111,108,111,117,114,83,101,108,101,99,116,111,114,68,105,97,108,111, - 103,87,105,110,100,111,119,40,41,13,10,32,32,32,32,32,32,32,32,58,32,68,105,97,108,111,103,87,105,110,100,111,119,32,40,84,40,34,67,111, - 108,111,117,114,32,115,101,108,101,99,116,111,114,32,100,101,109,111,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,67,111,108,111,117,114,115,58,58,108,105,103,104,116,103,114,101,121,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,116,114,117,101,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,115,101,116,67,111,110, - 116,101,110,116,67,111,109,112,111,110,101,110,116,32,40,110,101,119,32,67,111,108,111,117,114,83,101,108,101,99,116,111,114,40,41,41,59,13,10,32, - 32,32,32,32,32,32,32,99,101,110,116,114,101,87,105,116,104,83,105,122,101,32,40,52,48,48,44,32,52,48,48,41,59,13,10,32,32,32,32,32, - 32,32,32,115,101,116,82,101,115,105,122,97,98,108,101,32,40,116,114,117,101,44,32,116,114,117,101,41,59,13,10,32,32,32,32,125,13,10,13,10, - 32,32,32,32,126,67,111,108,111,117,114,83,101,108,101,99,116,111,114,68,105,97,108,111,103,87,105,110,100,111,119,40,41,13,10,32,32,32,32,123, - 13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,99,108,111,115,101,66,117,116,116,111,110,80,114,101,115,115,101,100,40,41, - 13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,47,47,32,119,101,32,101,120,112,101,99,116,32,116,104,105,115,32,99,111,109,112,111, - 110,101,110,116,32,116,111,32,98,101,32,114,117,110,32,119,105,116,104,105,110,32,97,32,109,111,100,97,108,32,108,111,111,112,44,32,115,111,32,119, - 104,101,110,32,116,104,101,32,99,108,111,115,101,13,10,32,32,32,32,32,32,32,32,47,47,32,98,117,116,116,111,110,32,105,115,32,99,108,105,99, - 107,101,100,44,32,119,101,32,99,97,110,32,109,97,107,101,32,105,116,32,105,110,118,105,115,105,98,108,101,32,116,111,32,99,97,117,115,101,32,116, - 104,101,32,108,111,111,112,32,116,111,32,101,120,105,116,32,97,110,100,32,116,104,101,13,10,32,32,32,32,32,32,32,32,47,47,32,99,97,108,108, - 105,110,103,32,99,111,100,101,32,119,105,108,108,32,100,101,108,101,116,101,32,116,104,105,115,32,111,98,106,101,99,116,46,13,10,32,32,32,32,32, - 32,32,32,115,101,116,86,105,115,105,98,108,101,32,40,102,97,108,115,101,41,59,13,10,32,32,32,32,125,13,10,125,59,13,10,13,10,35,105,102, - 32,74,85,67,69,95,77,65,67,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,47,42,42,32,84,104,105,115,32,112,111,112,115,32,111,112,101,110,32,97,32,100,105,97,108, - 111,103,32,98,111,120,32,97,110,100,32,119,97,105,116,115,32,102,111,114,32,121,111,117,32,116,111,32,112,114,101,115,115,32,107,101,121,115,32,111, - 110,32,121,111,117,114,32,65,112,112,108,101,32,82,101,109,111,116,101,44,13,10,32,32,32,32,119,104,105,99,104,32,105,116,32,100,101,115,99,114, - 105,98,101,115,32,105,110,32,116,104,101,32,98,111,120,46,13,10,42,47,13,10,99,108,97,115,115,32,65,112,112,108,101,82,101,109,111,116,101,84, - 101,115,116,87,105,110,100,111,119,32,32,58,32,112,117,98,108,105,99,32,65,108,101,114,116,87,105,110,100,111,119,44,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,65,112,112,108,101,82,101,109, - 111,116,101,68,101,118,105,99,101,13,10,123,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32,65,112,112,108,101,82,101,109,111,116,101,84,101, - 115,116,87,105,110,100,111,119,40,41,13,10,32,32,32,32,32,32,32,32,58,32,65,108,101,114,116,87,105,110,100,111,119,32,40,34,65,112,112,108, - 101,32,82,101,109,111,116,101,32,67,111,110,116,114,111,108,32,84,101,115,116,33,34,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,34,73,102,32,121,111,117,39,118,101,32,103,111,116,32,97,110,32,65,112,112,108,101,32,82,101,109,111,116,101,44, - 32,112,114,101,115,115,32,115,111,109,101,32,98,117,116,116,111,110,115,32,110,111,119,46,46,46,34,44,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,65,108,101,114,116,87,105,110,100,111,119,58,58,78,111,73,99,111,110,41,13,10,32,32,32,32,123, - 13,10,32,32,32,32,32,32,32,32,97,100,100,66,117,116,116,111,110,32,40,84,40,34,100,111,110,101,34,41,44,32,48,41,59,13,10,13,10,32, - 32,32,32,32,32,32,32,47,47,32,40,84,111,32,111,112,101,110,32,116,104,101,32,100,101,118,105,99,101,32,105,110,32,110,111,110,45,101,120,99, - 108,117,115,105,118,101,32,109,111,100,101,44,32,112,97,115,115,32,39,102,97,108,115,101,39,32,105,110,32,104,101,114,101,41,46,46,13,10,32,32, - 32,32,32,32,32,32,105,102,32,40,33,32,115,116,97,114,116,32,40,116,114,117,101,41,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,115, - 101,116,77,101,115,115,97,103,101,32,40,34,67,111,117,108,100,110,39,116,32,111,112,101,110,32,116,104,101,32,114,101,109,111,116,101,32,99,111,110, - 116,114,111,108,32,100,101,118,105,99,101,33,34,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,65,112,112,108,101,82,101,109,111, - 116,101,84,101,115,116,87,105,110,100,111,119,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,115,116,111,112,40,41,59,13,10, - 32,32,32,32,125,13,10,13,10,32,32,32,32,118,111,105,100,32,98,117,116,116,111,110,80,114,101,115,115,101,100,32,40,99,111,110,115,116,32,66, - 117,116,116,111,110,84,121,112,101,32,98,117,116,116,111,110,73,100,44,32,99,111,110,115,116,32,98,111,111,108,32,105,115,68,111,119,110,41,13,10, - 32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,83,116,114,105,110,103,32,100,101,115,99,59,13,10,13,10,32,32,32,32,32,32,32,32,115, - 119,105,116,99,104,32,40,98,117,116,116,111,110,73,100,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,99,97,115, - 101,32,109,101,110,117,66,117,116,116,111,110,58,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,101,115,99,32,61,32,34,109,101,110,117,32, - 98,117,116,116,111,110,32,40,115,104,111,114,116,41,34,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,98,114,101,97,107,59,13,10,32,32, - 32,32,32,32,32,32,99,97,115,101,32,112,108,97,121,66,117,116,116,111,110,58,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,101,115,99, - 32,61,32,34,112,108,97,121,32,98,117,116,116,111,110,34,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,98,114,101,97,107,59,13,10,32, - 32,32,32,32,32,32,32,99,97,115,101,32,112,108,117,115,66,117,116,116,111,110,58,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,101,115, - 99,32,61,32,34,112,108,117,115,32,98,117,116,116,111,110,34,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,98,114,101,97,107,59,13,10, - 32,32,32,32,32,32,32,32,99,97,115,101,32,109,105,110,117,115,66,117,116,116,111,110,58,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100, - 101,115,99,32,61,32,34,109,105,110,117,115,32,98,117,116,116,111,110,34,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,98,114,101,97,107, - 59,13,10,32,32,32,32,32,32,32,32,99,97,115,101,32,114,105,103,104,116,66,117,116,116,111,110,58,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,100,101,115,99,32,61,32,34,114,105,103,104,116,32,98,117,116,116,111,110,32,40,115,104,111,114,116,41,34,59,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,98,114,101,97,107,59,13,10,32,32,32,32,32,32,32,32,99,97,115,101,32,108,101,102,116,66,117,116,116,111,110,58,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,100,101,115,99,32,61,32,34,108,101,102,116,32,98,117,116,116,111,110,32,40,115,104,111,114,116,41,34, - 59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,98,114,101,97,107,59,13,10,32,32,32,32,32,32,32,32,99,97,115,101,32,114,105,103,104, - 116,66,117,116,116,111,110,95,76,111,110,103,58,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,101,115,99,32,61,32,34,114,105,103,104,116, - 32,98,117,116,116,111,110,32,40,108,111,110,103,41,34,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,98,114,101,97,107,59,13,10,32,32, - 32,32,32,32,32,32,99,97,115,101,32,108,101,102,116,66,117,116,116,111,110,95,76,111,110,103,58,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,100,101,115,99,32,61,32,34,108,101,102,116,32,98,117,116,116,111,110,32,40,108,111,110,103,41,34,59,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,98,114,101,97,107,59,13,10,32,32,32,32,32,32,32,32,99,97,115,101,32,109,101,110,117,66,117,116,116,111,110,95,76,111,110,103,58, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,101,115,99,32,61,32,34,109,101,110,117,32,98,117,116,116,111,110,32,40,108,111,110,103,41, - 34,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,98,114,101,97,107,59,13,10,32,32,32,32,32,32,32,32,99,97,115,101,32,112,108,97, - 121,66,117,116,116,111,110,83,108,101,101,112,77,111,100,101,58,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,101,115,99,32,61,32,34,112, - 108,97,121,32,40,115,108,101,101,112,32,109,111,100,101,41,34,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,98,114,101,97,107,59,13,10, - 32,32,32,32,32,32,32,32,99,97,115,101,32,115,119,105,116,99,104,101,100,58,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,101,115,99, - 32,61,32,34,114,101,109,111,116,101,32,115,119,105,116,99,104,101,100,34,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,98,114,101,97,107, - 59,13,10,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,105,102,32,40,105,115,68,111,119,110,41,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,100,101,115,99,32,60,60,32,34,32,45,45,32,91,100,111,119,110,93,34,59,13,10,32,32,32,32,32,32,32,32, - 101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,101,115,99,32,60,60,32,34,32,45,45,32,91,117,112,93,34,59,13,10,13, - 10,32,32,32,32,32,32,32,32,115,101,116,77,101,115,115,97,103,101,32,40,100,101,115,99,41,59,13,10,32,32,32,32,125,13,10,125,59,13,10, - 13,10,35,101,110,100,105,102,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,13,10,99,111,110,115,116,32,105,110,116,32,110,117,109,71,114,111,117,112,115,32,61,32,52,59,13,10, - 13,10,99,108,97,115,115,32,87,105,100,103,101,116,115,68,101,109,111,32,32,58,32,112,117,98,108,105,99,32,67,111,109,112,111,110,101,110,116,44, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,112,117,98,108,105,99,32,66,117,116,116,111,110,76,105,115,116, - 101,110,101,114,13,10,123,13,10,32,32,32,32,84,101,120,116,66,117,116,116,111,110,42,32,109,101,110,117,66,117,116,116,111,110,59,13,10,32,32, - 32,32,84,111,103,103,108,101,66,117,116,116,111,110,42,32,101,110,97,98,108,101,66,117,116,116,111,110,59,13,10,13,10,32,32,32,32,68,101,109, - 111,84,97,98,98,101,100,67,111,109,112,111,110,101,110,116,42,32,116,97,98,115,59,13,10,13,10,112,117,98,108,105,99,58,13,10,32,32,32,32, - 47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 13,10,32,32,32,32,87,105,100,103,101,116,115,68,101,109,111,32,40,65,112,112,108,105,99,97,116,105,111,110,67,111,109,109,97,110,100,77,97,110, - 97,103,101,114,42,32,99,111,109,109,97,110,100,77,97,110,97,103,101,114,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,115,101, - 116,78,97,109,101,32,40,84,40,34,87,105,100,103,101,116,115,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,97,100,100,65,110,100,77, - 97,107,101,86,105,115,105,98,108,101,32,40,116,97,98,115,32,61,32,110,101,119,32,68,101,109,111,84,97,98,98,101,100,67,111,109,112,111,110,101, - 110,116,32,40,99,111,109,109,97,110,100,77,97,110,97,103,101,114,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,47,47,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,32, - 32,32,32,109,101,110,117,66,117,116,116,111,110,32,61,32,110,101,119,32,84,101,120,116,66,117,116,116,111,110,32,40,84,40,34,99,108,105,99,107, - 32,102,111,114,32,97,32,112,111,112,117,112,32,109,101,110,117,46,46,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,99,108,105,99,107,32,102,111,114,32,97,32,100,101,109,111, - 32,111,102,32,116,104,101,32,100,105,102,102,101,114,101,110,116,32,116,121,112,101,115,32,111,102,32,105,116,101,109,32,121,111,117,32,99,97,110,32, - 112,117,116,32,105,110,116,111,32,97,32,112,111,112,117,112,32,109,101,110,117,46,46,46,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32, - 97,100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,109,101,110,117,66,117,116,116,111,110,41,59,13,10,32,32,32,32,32,32,32, - 32,109,101,110,117,66,117,116,116,111,110,45,62,115,101,116,66,111,117,110,100,115,32,40,49,48,44,32,49,48,44,32,50,48,48,44,32,50,52,41, - 59,13,10,32,32,32,32,32,32,32,32,109,101,110,117,66,117,116,116,111,110,45,62,97,100,100,66,117,116,116,111,110,76,105,115,116,101,110,101,114, - 32,40,116,104,105,115,41,59,13,10,32,32,32,32,32,32,32,32,109,101,110,117,66,117,116,116,111,110,45,62,115,101,116,84,114,105,103,103,101,114, - 101,100,79,110,77,111,117,115,101,68,111,119,110,32,40,116,114,117,101,41,59,32,47,47,32,98,101,99,97,117,115,101,32,116,104,105,115,32,98,117, - 116,116,111,110,32,112,111,112,115,32,117,112,32,97,32,109,101,110,117,44,32,116,104,105,115,32,108,101,116,115,32,117,115,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,47,47,32,104,111,108,100,32,100,111,119,110,32,116,104,101,32,98,117,116,116,111,110,32,97,110,100,32,100,114,97,103,32, - 115,116,114,97,105,103,104,116,32,111,110,116,111,32,116,104,101,32,109,101,110,117,13,10,13,10,32,32,32,32,32,32,32,32,47,47,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32, - 32,32,32,32,101,110,97,98,108,101,66,117,116,116,111,110,32,61,32,110,101,119,32,84,111,103,103,108,101,66,117,116,116,111,110,32,40,84,40,34, - 101,110,97,98,108,101,47,100,105,115,97,98,108,101,32,99,111,109,112,111,110,101,110,116,115,34,41,41,59,13,10,32,32,32,32,32,32,32,32,97, - 100,100,65,110,100,77,97,107,101,86,105,115,105,98,108,101,32,40,101,110,97,98,108,101,66,117,116,116,111,110,41,59,13,10,32,32,32,32,32,32, - 32,32,101,110,97,98,108,101,66,117,116,116,111,110,45,62,115,101,116,66,111,117,110,100,115,32,40,50,51,48,44,32,49,48,44,32,49,56,48,44, - 32,50,52,41,59,13,10,32,32,32,32,32,32,32,32,101,110,97,98,108,101,66,117,116,116,111,110,45,62,115,101,116,84,111,111,108,116,105,112,32, - 40,84,40,34,116,111,103,103,108,101,32,98,117,116,116,111,110,34,41,41,59,13,10,32,32,32,32,32,32,32,32,101,110,97,98,108,101,66,117,116, - 116,111,110,45,62,115,101,116,84,111,103,103,108,101,83,116,97,116,101,32,40,116,114,117,101,44,32,102,97,108,115,101,41,59,13,10,32,32,32,32, - 32,32,32,32,101,110,97,98,108,101,66,117,116,116,111,110,45,62,97,100,100,66,117,116,116,111,110,76,105,115,116,101,110,101,114,32,40,116,104,105, - 115,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,126,87,105,100,103,101,116,115,68,101,109,111,40,41,13,10,32,32,32,32,123,13, - 10,32,32,32,32,32,32,32,32,100,101,108,101,116,101,65,108,108,67,104,105,108,100,114,101,110,40,41,59,13,10,32,32,32,32,125,13,10,13,10, - 32,32,32,32,118,111,105,100,32,114,101,115,105,122,101,100,40,41,13,10,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,116,97,98,115,45, - 62,115,101,116,66,111,117,110,100,115,32,40,49,48,44,32,52,48,44,32,103,101,116,87,105,100,116,104,40,41,32,45,32,50,48,44,32,103,101,116, - 72,101,105,103,104,116,40,41,32,45,32,53,48,41,59,13,10,32,32,32,32,125,13,10,13,10,32,32,32,32,47,47,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,13,10,32,32,32,32,118,111,105,100, - 32,98,117,116,116,111,110,67,108,105,99,107,101,100,32,40,66,117,116,116,111,110,42,32,98,117,116,116,111,110,41,13,10,32,32,32,32,123,13,10, - 32,32,32,32,32,32,32,32,105,102,32,40,98,117,116,116,111,110,32,61,61,32,101,110,97,98,108,101,66,117,116,116,111,110,41,13,10,32,32,32, - 32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,110,115,116,32,98,111,111,108,32,101,110,97,98,108,101,100,32,61, - 32,101,110,97,98,108,101,66,117,116,116,111,110,45,62,103,101,116,84,111,103,103,108,101,83,116,97,116,101,40,41,59,13,10,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,109,101,110,117,66,117,116,116,111,110,45,62,115,101,116,69,110,97,98,108,101,100,32,40,101,110,97,98,108,101,100,41, - 59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,116,97,98,115,45,62,115,101,116,69,110,97,98,108,101,100,32,40,101,110,97,98,108,101,100, - 41,59,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,98,117,116,116,111,110,32,61, - 61,32,109,101,110,117,66,117,116,116,111,110,41,13,10,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,80,111, - 112,117,112,77,101,110,117,32,109,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,109,46,97,100,100,73,116,101,109,32,40,49,44,32,84,40, - 34,78,111,114,109,97,108,32,105,116,101,109,34,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,109,46,97,100,100,73,116,101,109,32, - 40,50,44,32,84,40,34,68,105,115,97,98,108,101,100,32,105,116,101,109,34,41,44,32,102,97,108,115,101,41,59,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,109,46,97,100,100,73,116,101,109,32,40,51,44,32,84,40,34,84,105,99,107,101,100,32,105,116,101,109,34,41,44,32,116,114,117, - 101,44,32,116,114,117,101,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,109,46,97,100,100,67,111,108,111,117,114,101,100,73,116,101,109, - 32,40,52,44,32,84,40,34,67,111,108,111,117,114,101,100,32,105,116,101,109,34,41,44,32,67,111,108,111,117,114,115,58,58,103,114,101,101,110,41, - 59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,109,46,97,100,100,83,101,112,97,114,97,116,111,114,40,41,59,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,109,46,97,100,100,67,117,115,116,111,109,73,116,101,109,32,40,53,44,32,110,101,119,32,67,117,115,116,111,109,77,101,110,117, - 67,111,109,112,111,110,101,110,116,40,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,109,46,97,100,100,83,101,112,97,114,97, - 116,111,114,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,80,111,112,117,112,77,101,110,117,32,116,97,98,115,77,101,110,117, - 59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,116,97,98,115,77,101,110,117,46,97,100,100,73,116,101,109,32,40,49,48,48,49,44,32,84, - 40,34,83,104,111,119,32,116,97,98,115,32,97,116,32,116,104,101,32,116,111,112,34,41,44,32,116,114,117,101,44,32,116,97,98,115,45,62,103,101, - 116,79,114,105,101,110,116,97,116,105,111,110,40,41,32,61,61,32,84,97,98,98,101,100,66,117,116,116,111,110,66,97,114,58,58,84,97,98,115,65, - 116,84,111,112,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,116,97,98,115,77,101,110,117,46,97,100,100,73,116,101,109,32,40,49,48, - 48,50,44,32,84,40,34,83,104,111,119,32,116,97,98,115,32,97,116,32,116,104,101,32,98,111,116,116,111,109,34,41,44,32,116,114,117,101,44,32, - 116,97,98,115,45,62,103,101,116,79,114,105,101,110,116,97,116,105,111,110,40,41,32,61,61,32,84,97,98,98,101,100,66,117,116,116,111,110,66,97, - 114,58,58,84,97,98,115,65,116,66,111,116,116,111,109,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,116,97,98,115,77,101,110,117,46, - 97,100,100,73,116,101,109,32,40,49,48,48,51,44,32,84,40,34,83,104,111,119,32,116,97,98,115,32,97,116,32,116,104,101,32,108,101,102,116,34, - 41,44,32,116,114,117,101,44,32,116,97,98,115,45,62,103,101,116,79,114,105,101,110,116,97,116,105,111,110,40,41,32,61,61,32,84,97,98,98,101, - 100,66,117,116,116,111,110,66,97,114,58,58,84,97,98,115,65,116,76,101,102,116,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,116,97, - 98,115,77,101,110,117,46,97,100,100,73,116,101,109,32,40,49,48,48,52,44,32,84,40,34,83,104,111,119,32,116,97,98,115,32,97,116,32,116,104, - 101,32,114,105,103,104,116,34,41,44,32,116,114,117,101,44,32,116,97,98,115,45,62,103,101,116,79,114,105,101,110,116,97,116,105,111,110,40,41,32, - 61,61,32,84,97,98,98,101,100,66,117,116,116,111,110,66,97,114,58,58,84,97,98,115,65,116,82,105,103,104,116,41,59,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,109,46,97,100,100,83,117,98,77,101,110,117,32,40,84,40,34,84,97,98,32,112,111,115,105,116,105,111,110,34,41,44,32, - 116,97,98,115,77,101,110,117,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,109,46,97,100,100,83,101,112,97,114,97,116,111,114, - 40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,80,111,112,117,112,77,101,110,117,32,100,105,97,108,111,103,77,101,110,117,59, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,105,97,108,111,103,77,101,110,117,46,97,100,100,73,116,101,109,32,40,49,48,48,44,32,84, - 40,34,83,104,111,119,32,97,32,112,108,97,105,110,32,97,108,101,114,116,45,119,105,110,100,111,119,46,46,46,34,41,41,59,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,100,105,97,108,111,103,77,101,110,117,46,97,100,100,73,116,101,109,32,40,49,48,49,44,32,84,40,34,83,104,111,119, - 32,97,110,32,97,108,101,114,116,45,119,105,110,100,111,119,32,119,105,116,104,32,97,32,39,119,97,114,110,105,110,103,39,32,105,99,111,110,46,46, - 46,34,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,105,97,108,111,103,77,101,110,117,46,97,100,100,73,116,101,109,32,40,49, - 48,50,44,32,84,40,34,83,104,111,119,32,97,110,32,97,108,101,114,116,45,119,105,110,100,111,119,32,119,105,116,104,32,97,110,32,39,105,110,102, - 111,39,32,105,99,111,110,46,46,46,34,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,105,97,108,111,103,77,101,110,117,46,97, - 100,100,73,116,101,109,32,40,49,48,51,44,32,84,40,34,83,104,111,119,32,97,110,32,97,108,101,114,116,45,119,105,110,100,111,119,32,119,105,116, - 104,32,97,32,39,113,117,101,115,116,105,111,110,39,32,105,99,111,110,46,46,46,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,100,105,97,108,111,103,77,101,110,117,46,97,100,100,83,101,112,97,114,97,116,111,114,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,100,105,97,108,111,103,77,101,110,117,46,97,100,100,73,116,101,109,32,40,49,49,48,44,32,84,40,34,83,104,111,119,32,97,110,32, - 111,107,47,99,97,110,99,101,108,32,97,108,101,114,116,45,119,105,110,100,111,119,46,46,46,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,100,105,97,108,111,103,77,101,110,117,46,97,100,100,83,101,112,97,114,97,116,111,114,40,41,59,13,10,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,100,105,97,108,111,103,77,101,110,117,46,97,100,100,73,116,101,109,32,40,49,49,49,44,32,84,40,34,83,104,111,119,32, - 97,110,32,97,108,101,114,116,45,119,105,110,100,111,119,32,119,105,116,104,32,115,111,109,101,32,101,120,116,114,97,32,99,111,109,112,111,110,101,110, - 116,115,46,46,46,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,105,97,108,111,103,77,101,110,117,46,97,100,100,83, - 101,112,97,114,97,116,111,114,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,100,105,97,108,111,103,77,101,110,117,46,97,100, - 100,73,116,101,109,32,40,49,49,50,44,32,84,40,34,83,104,111,119,32,97,32,84,104,114,101,97,100,87,105,116,104,80,114,111,103,114,101,115,115, - 87,105,110,100,111,119,32,100,101,109,111,46,46,46,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,109,46,97,100,100,83, - 117,98,77,101,110,117,32,40,84,40,34,65,108,101,114,116,87,105,110,100,111,119,32,100,101,109,111,110,115,116,114,97,116,105,111,110,115,34,41,44, - 32,100,105,97,108,111,103,77,101,110,117,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,109,46,97,100,100,83,101,112,97,114,97, - 116,111,114,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,109,46,97,100,100,73,116,101,109,32,40,49,50,48,44,32,84,40, - 34,83,104,111,119,32,97,32,99,111,108,111,117,114,32,115,101,108,101,99,116,111,114,32,100,101,109,111,46,46,46,34,41,41,59,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,109,46,97,100,100,83,101,112,97,114,97,116,111,114,40,41,59,13,10,13,10,35,105,102,32,74,85,67,69,95,77, - 65,67,13,10,32,32,32,32,32,32,32,32,32,32,32,32,109,46,97,100,100,73,116,101,109,32,40,49,52,48,44,32,84,40,34,82,117,110,32,116, - 104,101,32,65,112,112,108,101,32,82,101,109,111,116,101,32,67,111,110,116,114,111,108,32,116,101,115,116,46,46,46,34,41,41,59,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,109,46,97,100,100,83,101,112,97,114,97,116,111,114,40,41,59,13,10,35,101,110,100,105,102,13,10,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,80,111,112,117,112,77,101,110,117,32,110,97,116,105,118,101,70,105,108,101,67,104,111,111,115,101,114,115,59,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,110,97,116,105,118,101,70,105,108,101,67,104,111,111,115,101,114,115,46,97,100,100,73,116,101,109,32, - 40,49,50,49,44,32,84,40,34,39,76,111,97,100,39,32,102,105,108,101,32,98,114,111,119,115,101,114,46,46,46,34,41,41,59,13,10,32,32,32, - 32,32,32,32,32,32,32,32,32,110,97,116,105,118,101,70,105,108,101,67,104,111,111,115,101,114,115,46,97,100,100,73,116,101,109,32,40,49,50,52, - 44,32,84,40,34,39,76,111,97,100,39,32,102,105,108,101,32,98,114,111,119,115,101,114,32,119,105,116,104,32,97,110,32,105,109,97,103,101,32,102, - 105,108,101,32,112,114,101,118,105,101,119,46,46,46,34,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,110,97,116,105,118,101,70,105, - 108,101,67,104,111,111,115,101,114,115,46,97,100,100,73,116,101,109,32,40,49,50,50,44,32,84,40,34,39,83,97,118,101,39,32,102,105,108,101,32, - 98,114,111,119,115,101,114,46,46,46,34,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,110,97,116,105,118,101,70,105,108,101,67,104, - 111,111,115,101,114,115,46,97,100,100,73,116,101,109,32,40,49,50,51,44,32,84,40,34,39,67,104,111,111,115,101,32,100,105,114,101,99,116,111,114, - 121,39,32,102,105,108,101,32,98,114,111,119,115,101,114,46,46,46,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,80,111, - 112,117,112,77,101,110,117,32,106,117,99,101,70,105,108,101,67,104,111,111,115,101,114,115,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,106, - 117,99,101,70,105,108,101,67,104,111,111,115,101,114,115,46,97,100,100,73,116,101,109,32,40,49,51,49,44,32,84,40,34,39,76,111,97,100,39,32, - 102,105,108,101,32,98,114,111,119,115,101,114,46,46,46,34,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,106,117,99,101,70,105,108, - 101,67,104,111,111,115,101,114,115,46,97,100,100,73,116,101,109,32,40,49,51,52,44,32,84,40,34,39,76,111,97,100,39,32,102,105,108,101,32,98, - 114,111,119,115,101,114,32,119,105,116,104,32,97,110,32,105,109,97,103,101,32,102,105,108,101,32,112,114,101,118,105,101,119,46,46,46,34,41,41,59, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,106,117,99,101,70,105,108,101,67,104,111,111,115,101,114,115,46,97,100,100,73,116,101,109,32,40, - 49,51,50,44,32,84,40,34,39,83,97,118,101,39,32,102,105,108,101,32,98,114,111,119,115,101,114,46,46,46,34,41,41,59,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,106,117,99,101,70,105,108,101,67,104,111,111,115,101,114,115,46,97,100,100,73,116,101,109,32,40,49,51,51,44,32,84, - 40,34,39,67,104,111,111,115,101,32,100,105,114,101,99,116,111,114,121,39,32,102,105,108,101,32,98,114,111,119,115,101,114,46,46,46,34,41,41,59, - 13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,80,111,112,117,112,77,101,110,117,32,102,105,108,101,67,104,111,111,115,101,114,115,59,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,102,105,108,101,67,104,111,111,115,101,114,115,46,97,100,100,83,117,98,77,101,110,117,32,40,84,40, - 34,79,112,101,114,97,116,105,110,103,32,115,121,115,116,101,109,32,100,105,97,108,111,103,115,34,41,44,32,110,97,116,105,118,101,70,105,108,101,67, - 104,111,111,115,101,114,115,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,102,105,108,101,67,104,111,111,115,101,114,115,46,97,100,100,83, - 117,98,77,101,110,117,32,40,84,40,34,74,117,99,101,32,100,105,97,108,111,103,115,34,41,44,32,106,117,99,101,70,105,108,101,67,104,111,111,115, - 101,114,115,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,109,46,97,100,100,83,117,98,77,101,110,117,32,40,84,40,34,70,105, - 108,101,32,99,104,111,111,115,101,114,32,100,105,97,108,111,103,115,34,41,44,32,102,105,108,101,67,104,111,111,115,101,114,115,41,59,13,10,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,105,110,116,32,114,101,115,117,108,116,32,61,32,109,46,115,104,111,119,65,116,32,40,109,101,110,117,66, - 117,116,116,111,110,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,114,101,115,117,108,116,32,33,61,32,48,41,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,117,115,101,114,32, - 99,104,111,115,101,32,115,111,109,101,116,104,105,110,103,32,102,114,111,109,32,116,104,101,32,109,101,110,117,46,46,13,10,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,114,101,115,117,108,116,32,62,61,32,49,48,48,32,38,38,32,114,101,115,117,108,116,32,60, - 32,49,48,53,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,65,108,101,114,116,87,105,110,100,111,119,58,58,65,108,101,114,116,73,99,111,110,84,121,112,101,32,105,99,111,110,32,61,32, - 65,108,101,114,116,87,105,110,100,111,119,58,58,78,111,73,99,111,110,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,105,102,32,40,114,101,115,117,108,116,32,61,61,32,49,48,49,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,105,99,111,110,32,61,32,65,108,101,114,116,87,105,110,100,111,119,58,58,87,97,114,110,105,110,103,73,99,111,110,59, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,114,101,115,117,108,116,32,61,61, - 32,49,48,50,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,99,111,110,32,61,32,65,108, - 101,114,116,87,105,110,100,111,119,58,58,73,110,102,111,73,99,111,110,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,101,108,115,101,32,105,102,32,40,114,101,115,117,108,116,32,61,61,32,49,48,51,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,105,99,111,110,32,61,32,65,108,101,114,116,87,105,110,100,111,119,58,58,81,117,101,115,116,105,111,110,73, - 99,111,110,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,65,108,101,114,116,87,105,110,100,111,119,58, - 58,115,104,111,119,77,101,115,115,97,103,101,66,111,120,32,40,105,99,111,110,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,84,104,105,115, - 32,105,115,32,97,110,32,65,108,101,114,116,87,105,110,100,111,119,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,65,110,100,32,116, - 104,105,115,32,105,115,32,116,104,101,32,65,108,101,114,116,87,105,110,100,111,119,39,115,32,109,101,115,115,97,103,101,46,32,66,108,97,104,32,98, - 108,97,104,32,98,108,97,104,32,98,108,97,104,32,98,108,97,104,32,98,108,97,104,32,98,108,97,104,32,98,108,97,104,32,98,108,97,104,32,98, - 108,97,104,32,98,108,97,104,32,98,108,97,104,32,98,108,97,104,46,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,111,107,34,41, - 41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101, - 108,115,101,32,105,102,32,40,114,101,115,117,108,116,32,61,61,32,49,49,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,98,111,111,108,32,117,115,101,114,80,105,99,107,101,100,79,107, - 13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,61,32,65,108,101,114,116,87,105,110,100,111,119,58, - 58,115,104,111,119,79,107,67,97,110,99,101,108,66,111,120,32,40,65,108,101,114,116,87,105,110,100,111,119,58,58,81,117,101,115,116,105,111,110,73, - 99,111,110,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,84,104,105,115,32,105,115,32,97,110,32,111,107,47,99, - 97,110,99,101,108,32,65,108,101,114,116,87,105,110,100,111,119,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40, - 34,65,110,100,32,116,104,105,115,32,105,115,32,116,104,101,32,65,108,101,114,116,87,105,110,100,111,119,39,115,32,109,101,115,115,97,103,101,46,32, - 66,108,97,104,32,98,108,97,104,32,98,108,97,104,32,98,108,97,104,32,98,108,97,104,32,98,108,97,104,32,98,108,97,104,32,98,108,97,104,32, - 98,108,97,104,32,98,108,97,104,32,98,108,97,104,32,98,108,97,104,32,98,108,97,104,46,34,41,41,59,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,114,101,115,117,108, - 116,32,61,61,32,49,49,49,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,65,108,101,114,116,87,105,110,100,111,119,32,119,32,40,84,40,34,65,108,101,114,116,87,105,110,100,111,119,32, - 100,101,109,111,46,46,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,84,40,34,84,104,105,115,32,65,108,101,114,116,87,105,110,100,111,119,32,104,97,115,32,97,32,99,111,117,112,108,101,32,111, - 102,32,101,120,116,114,97,32,99,111,109,112,111,110,101,110,116,115,32,97,100,100,101,100,32,116,111,32,115,104,111,119,32,104,111,119,32,116,111,32, - 97,100,100,32,100,114,111,112,45,100,111,119,110,32,108,105,115,116,115,32,97,110,100,32,116,101,120,116,32,101,110,116,114,121,32,98,111,120,101,115, - 46,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,65,108,101,114,116,87,105,110,100,111,119,58,58,81,117,101,115,116,105,111,110,73,99,111,110,41,59,13,10,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,119,46,97,100,100,84,101,120,116,69,100,105,116,111,114,32,40,84,40,34,116,101,120,116,34,41,44,32, - 84,40,34,101,110,116,101,114,32,115,111,109,101,32,116,101,120,116,32,104,101,114,101,34,41,44,32,84,40,34,116,101,120,116,32,102,105,101,108,100, - 58,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,83,116,114,105,110,103,65,114,114,97,121, - 32,111,112,116,105,111,110,115,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,111,112,116,105,111,110,115,46,97, - 100,100,32,40,84,40,34,111,112,116,105,111,110,32,49,34,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,111,112,116,105,111,110,115,46,97,100,100,32,40,84,40,34,111,112,116,105,111,110,32,50,34,41,41,59,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,111,112,116,105,111,110,115,46,97,100,100,32,40,84,40,34,111,112,116,105,111,110,32,51,34,41,41,59,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,111,112,116,105,111,110,115,46,97,100,100,32,40,84,40,34,111,112,116, - 105,111,110,32,52,34,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,119,46,97,100,100,67,111,109,98, - 111,66,111,120,32,40,84,40,34,111,112,116,105,111,110,34,41,44,32,111,112,116,105,111,110,115,44,32,84,40,34,115,111,109,101,32,111,112,116,105, - 111,110,115,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,119,46,97,100,100,66,117,116,116, - 111,110,32,40,84,40,34,111,107,34,41,44,32,49,44,32,75,101,121,80,114,101,115,115,32,40,75,101,121,80,114,101,115,115,58,58,114,101,116,117, - 114,110,75,101,121,44,32,48,44,32,48,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,119,46,97,100, - 100,66,117,116,116,111,110,32,40,84,40,34,99,97,110,99,101,108,34,41,44,32,48,44,32,75,101,121,80,114,101,115,115,32,40,75,101,121,80,114, - 101,115,115,58,58,101,115,99,97,112,101,75,101,121,44,32,48,44,32,48,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,105,102,32,40,119,46,114,117,110,77,111,100,97,108,76,111,111,112,40,41,32,33,61,32,48,41,32,47,47,32,105,115,32, - 116,104,101,121,32,112,105,99,107,101,100,32,39,111,107,39,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,116,104,105,115,32,105,115,32,116,104,101,32, - 105,116,101,109,32,116,104,101,121,32,99,104,111,115,101,32,105,110,32,116,104,101,32,100,114,111,112,45,100,111,119,110,32,108,105,115,116,46,46,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,111,110,115,116,32,105,110,116,32,111,112,116,105,111, - 110,73,110,100,101,120,67,104,111,115,101,110,32,61,32,119,46,103,101,116,67,111,109,98,111,66,111,120,67,111,109,112,111,110,101,110,116,32,40,84, - 40,34,111,112,116,105,111,110,34,41,41,45,62,103,101,116,83,101,108,101,99,116,101,100,73,116,101,109,73,110,100,101,120,40,41,59,13,10,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,116,104,105,115,32,105,115,32,116,104,101,32,116, - 101,120,116,32,116,104,101,121,32,101,110,116,101,114,101,100,46,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,83,116,114,105,110,103,32,116,101,120,116,32,61,32,119,46,103,101,116,84,101,120,116,69,100,105,116,111,114,67,111,110,116,101,110,116, - 115,32,40,84,40,34,116,101,120,116,34,41,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101, - 32,105,102,32,40,114,101,115,117,108,116,32,61,61,32,49,49,50,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,68,101,109,111,66,97,99,107,103,114,111,117,110,100,84,104,114,101,97,100, - 32,100,101,109,111,84,104,114,101,97,100,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40, - 100,101,109,111,84,104,114,101,97,100,46,114,117,110,84,104,114,101,97,100,40,41,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,116,104,114,101,97, - 100,32,102,105,110,105,115,104,101,100,32,110,111,114,109,97,108,108,121,46,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,65,108,101,114,116,87,105,110,100,111,119,58,58,115,104,111,119,77,101,115,115,97,103,101,66,111,120,32,40,65,108,101,114, - 116,87,105,110,100,111,119,58,58,87,97,114,110,105,110,103,73,99,111,110,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,80, - 114,111,103,114,101,115,115,32,119,105,110,100,111,119,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,84,104,114,101,97, - 100,32,102,105,110,105,115,104,101,100,32,111,107,33,34,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,117, - 115,101,114,32,112,114,101,115,115,101,100,32,116,104,101,32,99,97,110,99,101,108,32,98,117,116,116,111,110,46,46,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,65,108,101,114,116,87,105,110,100,111,119,58,58,115,104,111,119,77,101,115,115,97,103, - 101,66,111,120,32,40,65,108,101,114,116,87,105,110,100,111,119,58,58,87,97,114,110,105,110,103,73,99,111,110,44,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,84,40,34,80,114,111,103,114,101,115,115,32,119,105,110,100,111,119,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,84,40,34,89,111,117,32,112,114,101,115,115,101,100,32,99,97,110,99,101,108,33,34,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,125,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,114,101,115,117,108,116,32,61,61,32,49,50,48,41,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,67,111,108,111,117,114, - 83,101,108,101,99,116,111,114,68,105,97,108,111,103,87,105,110,100,111,119,32,99,111,108,111,117,114,68,105,97,108,111,103,59,13,10,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,116,104,105,115,32,119,105,108,108,32,114,117,110,32,97,110,32,101,118, - 101,110,116,32,108,111,111,112,32,117,110,116,105,108,32,116,104,101,32,100,105,97,108,111,103,39,115,32,99,108,111,115,101,66,117,116,116,111,110,80, - 114,101,115,115,101,100,40,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,47,47,32,109,101,116,104,111,100,32, - 99,97,117,115,101,115,32,116,104,101,32,108,111,111,112,32,116,111,32,101,120,105,116,46,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,99,111,108,111,117,114,68,105,97,108,111,103,46,114,117,110,77,111,100,97,108,76,111,111,112,40,41,59,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40, - 114,101,115,117,108,116,32,61,61,32,49,52,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,35,105,102,32,74, - 85,67,69,95,77,65,67,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,65,112,112,108,101,82,101,109,111,116,101, - 84,101,115,116,87,105,110,100,111,119,32,116,101,115,116,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,101, - 115,116,46,114,117,110,77,111,100,97,108,76,111,111,112,40,41,59,13,10,35,101,110,100,105,102,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,114,101,115,117,108,116,32,62, - 61,32,49,50,49,32,38,38,32,114,101,115,117,108,116,32,60,32,49,51,57,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,99,111,110,115,116,32,98,111,111,108,32,117,115,101,78,97,116, - 105,118,101,86,101,114,115,105,111,110,32,61,32,114,101,115,117,108,116,32,60,32,49,51,48,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,105,102,32,40,114,101,115,117,108,116,32,62,32,49,51,48,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,114,101,115,117,108,116,32,45,61,32,49,48,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,105,102,32,40,114,101,115,117,108,116,32,61,61,32,49,50,49,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,70,105,108,101,67, - 104,111,111,115,101,114,32,102,99,32,40,84,40,34,67,104,111,111,115,101,32,97,32,102,105,108,101,32,116,111,32,111,112,101,110,46,46,46,34,41, - 44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,70,105,108,101,58,58,103,101,116,67,117,114,114,101,110,116,87,111,114,107,105,110,103,68,105,114,101,99,116,111,114,121,40,41,44,13,10, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 84,40,34,42,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,117,115,101,78,97,116,105,118,101,86,101,114,115,105,111,110,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40,102,99,46,98,114,111,119,115,101,70,111,114,70,105,108,101,84,111,79,112,101, - 110,40,41,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,70,105,108,101,32,99,104,111,115,101,110,70,105,108,101,32,61,32,102, - 99,46,103,101,116,82,101,115,117,108,116,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,65,108,101,114,116,87,105,110,100,111,119,58,58,115,104,111,119,77,101,115,115,97,103,101,66,111,120,32,40,65,108,101,114,116, - 87,105,110,100,111,119,58,58,73,110,102,111,73,99,111,110,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,70, - 105,108,101,32,67,104,111,111,115,101,114,46,46,46,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,89, - 111,117,32,112,105,99,107,101,100,58,32,34,41,32,43,32,99,104,111,115,101,110,70,105,108,101,46,103,101,116,70,117,108,108,80,97,116,104,78,97, - 109,101,40,41,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108, - 115,101,32,105,102,32,40,114,101,115,117,108,116,32,61,61,32,49,50,52,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,73,109,97,103,101,80,114,101,118,105, - 101,119,67,111,109,112,111,110,101,110,116,32,105,109,97,103,101,80,114,101,118,105,101,119,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,105,109,97,103,101,80,114,101,118,105,101,119,46,115,101,116,83,105,122,101,32,40,50,48,48,44,32,50,48, - 48,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,70,105,108,101,67,104,111,111,115, - 101,114,32,102,99,32,40,84,40,34,67,104,111,111,115,101,32,97,110,32,105,109,97,103,101,32,116,111,32,111,112,101,110,46,46,46,34,41,44,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,70,105,108,101,58,58,103,101,116,67,117,114,114,101,110,116,87,111,114,107,105,110,103,68,105,114,101,99,116,111,114,121,40,41,44,13,10,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40, - 34,42,46,106,112,103,59,42,46,106,112,101,103,59,42,46,112,110,103,59,42,46,103,105,102,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,117,115,101,78,97,116,105,118,101,86, - 101,114,115,105,111,110,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,105,102,32,40, - 102,99,46,98,114,111,119,115,101,70,111,114,70,105,108,101,84,111,79,112,101,110,32,40,38,105,109,97,103,101,80,114,101,118,105,101,119,41,41,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,70,105,108,101,32,99,104,111,115,101,110,70,105,108,101,32,61,32,102,99,46,103,101,116, - 82,101,115,117,108,116,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,65,108,101,114,116,87,105,110,100,111,119,58,58,115,104,111,119,77,101,115,115,97,103,101,66,111,120,32,40,65,108,101,114,116,87,105,110,100,111, - 119,58,58,73,110,102,111,73,99,111,110,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,70,105,108,101,32,67, - 104,111,111,115,101,114,46,46,46,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,89,111,117,32,112,105, - 99,107,101,100,58,32,34,41,32,43,32,99,104,111,115,101,110,70,105,108,101,46,103,101,116,70,117,108,108,80,97,116,104,78,97,109,101,40,41,41, - 59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102, - 32,40,114,101,115,117,108,116,32,61,61,32,49,50,50,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,70,105,108,101,67,104,111,111,115,101,114,32,102,99,32, - 40,84,40,34,67,104,111,111,115,101,32,97,32,102,105,108,101,32,116,111,32,115,97,118,101,46,46,46,34,41,44,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,70,105,108,101,58,58,103, - 101,116,67,117,114,114,101,110,116,87,111,114,107,105,110,103,68,105,114,101,99,116,111,114,121,40,41,44,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,42,34,41,44,13,10,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,117, - 115,101,78,97,116,105,118,101,86,101,114,115,105,111,110,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,105,102,32,40,102,99,46,98,114,111,119,115,101,70,111,114,70,105,108,101,84,111,83,97,118,101,32,40,116,114,117,101,41,41,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,70,105,108,101,32,99,104,111,115,101,110,70,105,108,101,32,61,32,102,99,46,103,101,116, - 82,101,115,117,108,116,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,65,108,101,114,116,87,105,110,100,111,119,58,58,115,104,111,119,77,101,115,115,97,103,101,66,111,120,32,40,65,108,101,114,116,87,105,110,100,111, - 119,58,58,73,110,102,111,73,99,111,110,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,70,105,108,101,32,67, - 104,111,111,115,101,114,46,46,46,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,89,111,117,32,112,105, - 99,107,101,100,58,32,34,41,32,43,32,99,104,111,115,101,110,70,105,108,101,46,103,101,116,70,117,108,108,80,97,116,104,78,97,109,101,40,41,41, - 59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102, - 32,40,114,101,115,117,108,116,32,61,61,32,49,50,51,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,70,105,108,101,67,104,111,111,115,101,114,32,102,99,32, - 40,84,40,34,67,104,111,111,115,101,32,97,32,100,105,114,101,99,116,111,114,121,46,46,46,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,70,105,108,101,58,58,103,101,116,67, - 117,114,114,101,110,116,87,111,114,107,105,110,103,68,105,114,101,99,116,111,114,121,40,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,42,34,41,44,13,10,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,117,115,101,78, - 97,116,105,118,101,86,101,114,115,105,111,110,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,105,102,32,40,102,99,46,98,114,111,119,115,101,70,111,114,68,105,114,101,99,116,111,114,121,40,41,41,13,10,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,70,105,108,101,32,99,104,111,115,101,110,68,105,114,101,99,116,111,114,121,32,61,32,102,99,46,103,101,116,82,101,115,117, - 108,116,40,41,59,13,10,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,65,108,101, - 114,116,87,105,110,100,111,119,58,58,115,104,111,119,77,101,115,115,97,103,101,66,111,120,32,40,65,108,101,114,116,87,105,110,100,111,119,58,58,73, - 110,102,111,73,99,111,110,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,70,105,108,101,32,67,104,111,111,115, - 101,114,46,46,46,34,41,44,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,84,40,34,89,111,117,32,112,105,99,107,101,100, - 58,32,34,41,32,43,32,99,104,111,115,101,110,68,105,114,101,99,116,111,114,121,46,103,101,116,70,117,108,108,80,97,116,104,78,97,109,101,40,41, - 41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,114,101,115,117,108,116,32,61,61,32,49,48,48,49,41,13,10,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,97,98,115,45,62, - 115,101,116,79,114,105,101,110,116,97,116,105,111,110,32,40,84,97,98,98,101,100,66,117,116,116,111,110,66,97,114,58,58,84,97,98,115,65,116,84, - 111,112,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,101,108,115,101,32,105,102,32,40,114,101,115,117,108,116,32,61,61,32,49,48,48,50,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,123,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,97,98,115,45,62,115,101,116,79,114,105,101,110, - 116,97,116,105,111,110,32,40,84,97,98,98,101,100,66,117,116,116,111,110,66,97,114,58,58,84,97,98,115,65,116,66,111,116,116,111,109,41,59,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101, - 32,105,102,32,40,114,101,115,117,108,116,32,61,61,32,49,48,48,51,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13, - 10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,97,98,115,45,62,115,101,116,79,114,105,101,110,116,97,116,105,111, - 110,32,40,84,97,98,98,101,100,66,117,116,116,111,110,66,97,114,58,58,84,97,98,115,65,116,76,101,102,116,41,59,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,101,108,115,101,32,105,102,32,40,114,101, - 115,117,108,116,32,61,61,32,49,48,48,52,41,13,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,123,13,10,32,32,32,32,32,32, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,116,97,98,115,45,62,115,101,116,79,114,105,101,110,116,97,116,105,111,110,32,40,84,97,98,98, - 101,100,66,117,116,116,111,110,66,97,114,58,58,84,97,98,115,65,116,82,105,103,104,116,41,59,13,10,32,32,32,32,32,32,32,32,32,32,32,32, - 32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,32,32,32,32,125,13,10,32,32,32,32,125,13,10, - 125,59,13,10,13,10,13,10,47,47,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,13,10,67,111,109,112,111,110,101,110,116,42,32,99,114,101,97,116,101,87,105,100,103,101,116,115,68,101,109,111,32,40, - 65,112,112,108,105,99,97,116,105,111,110,67,111,109,109,97,110,100,77,97,110,97,103,101,114,42,32,99,111,109,109,97,110,100,77,97,110,97,103,101, - 114,41,13,10,123,13,10,32,32,32,32,114,101,116,117,114,110,32,110,101,119,32,87,105,100,103,101,116,115,68,101,109,111,32,40,99,111,109,109,97, - 110,100,77,97,110,97,103,101,114,41,59,13,10,125,13,10,0,0}; -const char* BinaryData::widgetsdemo_cpp = (const char*) temp14; - -static const unsigned char temp15[] = {82,73,70,70,4,181,0,0,87,65,86,69,102,109,116,32,16,0,0,0,1,0,1,0,34,86,0,0,68,172,0,0,2,0,16,0,98,101,120,116, +static const unsigned char temp2[] = {82,73,70,70,4,181,0,0,87,65,86,69,102,109,116,32,16,0,0,0,1,0,1,0,34,86,0,0,68,172,0,0,2,0,16,0,98,101,120,116, 92,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -5618,9 +1170,9 @@ static const unsigned char temp15[] = {82,73,70,70,4,181,0,0,87,65,86,69,102,109 238,255,239,255,237,255,239,255,241,255,235,255,232,255,231,255,230,255,234,255,231,255,232,255,230,255,234,255,235,255,234,255,227,255,230,255,231,255,220,255, 217,255,210,255,213,255,217,255,217,255,219,255,220,255,219,255,226,255,223,255,212,255,220,255,220,255,220,255,210,255,223,255,230,255,224,255,227,255,231,255, 231,255,231,255,234,255,226,255,232,255,237,255,241,255,235,255,232,255,231,255,232,255,237,255,235,255,234,255,0,0}; -const char* BinaryData::cello_wav = (const char*) temp15; +const char* BinaryData::cello_wav = (const char*) temp2; -static const unsigned char temp16[] = {60,68,69,77,79,95,84,65,66,76,69,95,68,65,84,65,62,13,10,32,32,32,32,60,67,79,76,85,77,78,83,62,13,10,32,32,32,32,32,32, +static const unsigned char temp3[] = {60,68,69,77,79,95,84,65,66,76,69,95,68,65,84,65,62,13,10,32,32,32,32,60,67,79,76,85,77,78,83,62,13,10,32,32,32,32,32,32, 32,32,60,67,79,76,85,77,78,32,99,111,108,117,109,110,73,100,61,34,49,34,32,110,97,109,101,61,34,73,68,34,32,119,105,100,116,104,61,34, 53,48,34,47,62,13,10,32,32,32,32,32,32,32,32,60,67,79,76,85,77,78,32,99,111,108,117,109,110,73,100,61,34,50,34,32,110,97,109,101, 61,34,65,114,116,105,115,116,34,32,119,105,100,116,104,61,34,49,53,48,34,47,62,13,10,32,32,32,32,32,32,32,32,60,67,79,76,85,77,78, @@ -5751,9 +1303,9 @@ static const unsigned char temp16[] = {60,68,69,77,79,95,84,65,66,76,69,95,68,65 34,32,65,108,98,117,109,61,34,66,97,114,114,101,116,116,34,32,83,111,110,103,61,34,69,102,102,101,114,118,101,115,99,105,110,103,32,69,108,101, 112,104,97,110,116,34,32,71,101,110,114,101,61,34,82,111,99,107,34,32,76,101,110,103,116,104,61,34,49,58,53,50,34,32,82,97,116,105,110,103, 61,34,53,34,47,62,13,10,32,32,32,32,60,47,68,65,84,65,62,13,10,60,47,68,69,77,79,95,84,65,66,76,69,95,68,65,84,65,62,0,0}; -const char* BinaryData::demo_table_data_xml = (const char*) temp16; +const char* BinaryData::demo_table_data_xml = (const char*) temp3; -static const unsigned char temp17[] = {80,75,3,4,20,0,2,0,8,0,128,122,250,52,23,17,234,255,206,13,0,0,219,67,0,0,16,0,0,0,100,111,99,117,109,101,110,116,45,110, +static const unsigned char temp4[] = {80,75,3,4,20,0,2,0,8,0,128,122,250,52,23,17,234,255,206,13,0,0,219,67,0,0,16,0,0,0,100,111,99,117,109,101,110,116,45,110, 101,119,46,115,118,103,237,28,93,115,219,54,242,61,191,66,167,188,212,83,139,196,55,64,37,118,39,77,38,157,222,244,122,51,77,59,247,216,161,40, 72,102,77,145,58,146,178,236,252,250,91,144,20,9,82,144,45,217,106,210,155,169,213,142,169,197,114,23,216,47,236,46,16,191,253,238,126,149,140,238, 116,94,196,89,122,53,198,30,26,143,116,26,101,243,56,93,94,141,127,251,245,227,68,141,71,69,25,166,243,48,201,82,125,53,78,179,241,119,215,175, @@ -7850,9 +3402,9 @@ static const unsigned char temp17[] = {80,75,3,4,20,0,2,0,8,0,128,122,250,52,23, 32,0,0,0,236,35,1,0,112,114,101,102,101,114,101,110,99,101,115,45,115,121,115,116,101,109,46,115,118,103,80,75,1,2,20,0,20,0,2,0, 8,0,183,128,249,52,199,174,1,222,145,13,0,0,154,63,0,0,18,0,0,0,0,0,0,0,1,0,32,0,0,0,212,52,1,0,115,121,115,116, 101,109,45,108,111,103,45,111,117,116,46,115,118,103,80,75,5,6,0,0,0,0,20,0,20,0,249,4,0,0,149,66,1,0,0,0,0,0}; -const char* BinaryData::icons_zip = (const char*) temp17; +const char* BinaryData::icons_zip = (const char*) temp4; -static const unsigned char temp18[] = {137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,140,0,0,0,86,8,6,0,0,0,29,101,126,119,0,0,0,9,112,72,89, +static const unsigned char temp5[] = {137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,0,140,0,0,0,86,8,6,0,0,0,29,101,126,119,0,0,0,9,112,72,89, 115,0,0,11,19,0,0,11,19,1,0,154,156,24,0,0,0,4,103,65,77,65,0,0,177,142,124,251,81,147,0,0,0,32,99,72,82,77,0,0, 122,37,0,0,128,131,0,0,249,255,0,0,128,233,0,0,117,48,0,0,234,96,0,0,58,152,0,0,23,111,146,95,197,70,0,0,59,48,73,68, 65,84,120,218,98,100,160,30,96,68,195,76,72,24,89,140,17,77,223,63,32,254,143,70,255,67,226,195,212,12,58,160,163,163,192,112,252,248,20,6, @@ -8235,9 +3787,9 @@ static const unsigned char temp18[] = {137,80,78,71,13,10,26,10,0,0,0,13,73,72,6 60,183,67,179,173,12,163,128,58,0,32,128,24,169,104,14,108,152,30,148,104,96,183,130,192,206,199,67,62,144,8,54,143,129,124,139,202,223,209,196, 50,52,0,64,0,49,82,217,44,88,245,132,126,19,61,174,9,48,228,33,254,209,196,50,4,0,64,128,1,0,102,20,176,16,7,130,12,56,0,0, 0,0,73,69,78,68,174,66,96,130,0,0}; -const char* BinaryData::juce_png = (const char*) temp18; +const char* BinaryData::juce_png = (const char*) temp5; -static const unsigned char temp19[] = {60,116,114,101,101,62,13,10,32,32,32,32,60,105,116,101,109,49,62,13,10,32,32,32,32,32,32,32,32,60,115,117,98,110,111,100,101,32,99,111, +static const unsigned char temp6[] = {60,116,114,101,101,62,13,10,32,32,32,32,60,105,116,101,109,49,62,13,10,32,32,32,32,32,32,32,32,60,115,117,98,110,111,100,101,32,99,111, 108,111,117,114,61,34,102,102,102,102,48,48,48,48,34,32,119,105,100,116,104,61,34,56,48,48,34,32,47,62,13,10,32,32,32,32,32,32,32,32, 60,115,117,98,110,111,100,101,32,99,111,108,111,117,114,61,34,102,102,51,51,98,98,48,48,34,32,119,105,100,116,104,61,34,53,48,34,32,47,62, 13,10,32,32,32,32,32,32,32,32,60,115,117,98,110,111,100,101,32,99,111,108,111,117,114,61,34,51,51,48,48,48,48,48,48,34,32,47,62,13, @@ -8266,4 +3818,4 @@ static const unsigned char temp19[] = {60,116,114,101,101,62,13,10,32,32,32,32,6 101,47,62,13,10,32,32,32,32,32,32,32,32,60,115,117,98,110,111,100,101,47,62,13,10,32,32,32,32,32,32,32,32,60,115,117,98,110,111,100, 101,47,62,13,10,32,32,32,32,32,32,32,32,60,115,117,98,110,111,100,101,47,62,13,10,32,32,32,32,60,47,105,116,101,109,52,62,13,10,60, 47,116,114,101,101,62,0,0}; -const char* BinaryData::treedemo_xml = (const char*) temp19; +const char* BinaryData::treedemo_xml = (const char*) temp6; diff --git a/extras/juce demo/src/BinaryData.h b/extras/juce demo/src/BinaryData.h index 8955b772a1..e2c70ba19d 100644 --- a/extras/juce demo/src/BinaryData.h +++ b/extras/juce demo/src/BinaryData.h @@ -5,48 +5,9 @@ namespace BinaryData { - extern const char* audiodemo_cpp; - const int audiodemo_cppSize = 23377; - - extern const char* camerademo_cpp; - const int camerademo_cppSize = 7155; - - extern const char* draganddropdemo_cpp; - const int draganddropdemo_cppSize = 7724; - - extern const char* fontsandtextdemo_cpp; - const int fontsandtextdemo_cppSize = 8851; - - extern const char* interprocesscommsdemo_cpp; - const int interprocesscommsdemo_cppSize = 12418; - - extern const char* opengldemo_cpp; - const int opengldemo_cppSize = 9362; - - extern const char* pathsandtransformsdemo_cpp; - const int pathsandtransformsdemo_cppSize = 14018; - - extern const char* quicktimedemo_cpp; - const int quicktimedemo_cppSize = 4363; - extern const char* readme__what_this_directory_is_for_txt; const int readme__what_this_directory_is_for_txtSize = 259; - extern const char* tabledemo_cpp; - const int tabledemo_cppSize = 12168; - - extern const char* threadingdemo_cpp; - const int threadingdemo_cppSize = 10271; - - extern const char* treeviewdemo_cpp; - const int treeviewdemo_cppSize = 8502; - - extern const char* webbrowserdemo_cpp; - const int webbrowserdemo_cppSize = 5195; - - extern const char* widgetsdemo_cpp; - const int widgetsdemo_cppSize = 53176; - extern const char* cello_wav; const int cello_wavSize = 46348; diff --git a/extras/juce demo/src/MainDemoWindow.cpp b/extras/juce demo/src/MainDemoWindow.cpp index 4032fea820..bff296e166 100644 --- a/extras/juce demo/src/MainDemoWindow.cpp +++ b/extras/juce demo/src/MainDemoWindow.cpp @@ -27,57 +27,6 @@ #include "MainDemoWindow.h" -//============================================================================== -class SourceCodeWindow; -static SourceCodeWindow* sourceWindow = 0; - - -//============================================================================== -class SourceCodeWindow : public DialogWindow -{ - TextEditor* textBox; - -public: - SourceCodeWindow() - : DialogWindow (T("JUCE Demo Source Code!"), - Colours::floralwhite, - false) - { - setContentComponent (textBox = new TextEditor()); - - textBox->setColour (TextEditor::backgroundColourId, Colours::white); - textBox->setMultiLine (true, false); - textBox->setReturnKeyStartsNewLine (true); - - setResizable (true, true); // we'll choose a corner-resizer component for this window, - // as a contrast to the resizable border on the main window - } - - ~SourceCodeWindow() - { - // the text editor gets deleted automatically because it's the - // window's content component. - - sourceWindow = 0; - } - - void closeButtonPressed() - { - delete this; - } - - void updateSourceCode (const String& text) - { - Font font (14.0f); - font.setTypefaceName (Font::getDefaultMonospacedFontName()); - textBox->setFont (font); - - textBox->setText (text); - - toFront (true); - } -}; - //============================================================================== class ContentComp : public Component, public MenuBarModel, @@ -90,7 +39,6 @@ class ContentComp : public Component, Component* currentDemo; int currentDemoId; - const char* demoSourceCodeText; TooltipWindow tooltipWindow; // to add tooltips to an application, you // just need to create one of these and leave it @@ -112,8 +60,6 @@ class ContentComp : public Component, showCamera = 0x2011, showWebBrowser = 0x2012, - showSourceCode = 0x200a, - setDefaultLookAndFeel = 0x200b, setOldSchoolLookAndFeel = 0x200c, useNativeTitleBar = 0x200d, @@ -126,8 +72,7 @@ public: ContentComp (MainDemoWindow* mainWindow_) : mainWindow (mainWindow_), currentDemo (0), - currentDemoId (0), - demoSourceCodeText (0) + currentDemoId (0) { invokeDirectly (showPathsAndTransforms, true); } @@ -139,8 +84,6 @@ public: LookAndFeel::setDefaultLookAndFeel (0); deleteAllChildren(); - - deleteAndZero (sourceWindow); } //============================================================================== @@ -151,33 +94,19 @@ public: } //============================================================================== - void showDemo (Component* demoComp, const char* sourceCodeText) + void showDemo (Component* demoComp) { delete currentDemo; currentDemo = demoComp; addAndMakeVisible (currentDemo); resized(); - - demoSourceCodeText = sourceCodeText; - } - - void showSource() - { - if (sourceWindow == 0) - { - sourceWindow = new SourceCodeWindow(); - sourceWindow->centreAroundComponent (this, 750, 600); - sourceWindow->setVisible (true); - } - - sourceWindow->updateSourceCode (demoSourceCodeText); } //============================================================================== const StringArray getMenuBarNames() { - const tchar* const names[] = { T("Demo"), T("Source Code"), T("Look-and-feel"), 0 }; + const tchar* const names[] = { T("Demo"), T("Look-and-feel"), 0 }; return StringArray ((const tchar**) names); } @@ -209,10 +138,6 @@ public: menu.addCommandItem (commandManager, StandardApplicationCommandIDs::quit); } else if (menuIndex == 1) - { - menu.addCommandItem (commandManager, showSourceCode); - } - else if (menuIndex == 2) { menu.addCommandItem (commandManager, setDefaultLookAndFeel); menu.addCommandItem (commandManager, setOldSchoolLookAndFeel); @@ -266,7 +191,6 @@ public: showCamera, showWebBrowser, showInterprocessComms, - showSourceCode, setDefaultLookAndFeel, setOldSchoolLookAndFeel, useNativeTitleBar @@ -381,11 +305,6 @@ public: result.setTicked (currentDemoId == showInterprocessComms); break; - case showSourceCode: - result.setInfo (T("Show the source code for this demo"), T("Opens a window containing this demo's source code"), generalCategory, 0); - result.addDefaultKeypress (T('s'), ModifierKeys::commandModifier); - break; - case setDefaultLookAndFeel: result.setInfo (T("Use default look-and-feel"), String::empty, generalCategory, 0); result.setTicked ((typeid (LookAndFeel) == typeid (getLookAndFeel())) != 0); @@ -426,82 +345,78 @@ public: switch (info.commandID) { case showPathsAndTransforms: - showDemo (createPathsAndTransformsDemo(), BinaryData::pathsandtransformsdemo_cpp); + showDemo (createPathsAndTransformsDemo()); currentDemoId = showPathsAndTransforms; break; case showFontsAndText: - showDemo (createFontsAndTextDemo(), BinaryData::fontsandtextdemo_cpp); + showDemo (createFontsAndTextDemo()); currentDemoId = showFontsAndText; break; case showWidgets: - showDemo (createWidgetsDemo (mainWindow->commandManager), BinaryData::widgetsdemo_cpp); + showDemo (createWidgetsDemo (mainWindow->commandManager)); currentDemoId = showWidgets; break; case showThreading: - showDemo (createThreadingDemo(), BinaryData::threadingdemo_cpp); + showDemo (createThreadingDemo()); currentDemoId = showThreading; break; case showTreeView: - showDemo (createTreeViewDemo(), BinaryData::treeviewdemo_cpp); + showDemo (createTreeViewDemo()); currentDemoId = showTreeView; break; case showTable: - showDemo (createTableDemo(), BinaryData::tabledemo_cpp); + showDemo (createTableDemo()); currentDemoId = showTable; break; case showAudio: - showDemo (createAudioDemo(), BinaryData::audiodemo_cpp); + showDemo (createAudioDemo()); currentDemoId = showAudio; break; case showDragAndDrop: - showDemo (createDragAndDropDemo(), BinaryData::draganddropdemo_cpp); + showDemo (createDragAndDropDemo()); currentDemoId = showDragAndDrop; break; case showOpenGL: #if JUCE_OPENGL - showDemo (createOpenGLDemo(), BinaryData::opengldemo_cpp); + showDemo (createOpenGLDemo()); currentDemoId = showOpenGL; #endif break; case showQuicktime: #if JUCE_QUICKTIME && ! JUCE_LINUX - showDemo (createQuickTimeDemo(), BinaryData::quicktimedemo_cpp); + showDemo (createQuickTimeDemo()); currentDemoId = showQuicktime; #endif break; case showCamera: #if JUCE_USE_CAMERA - showDemo (createCameraDemo(), BinaryData::camerademo_cpp); + showDemo (createCameraDemo()); currentDemoId = showCamera; #endif break; case showWebBrowser: #if JUCE_WEB_BROWSER - showDemo (createWebBrowserDemo(), BinaryData::webbrowserdemo_cpp); + showDemo (createWebBrowserDemo()); currentDemoId = showWebBrowser; #endif break; case showInterprocessComms: - showDemo (createInterprocessCommsDemo(), BinaryData::interprocesscommsdemo_cpp); + showDemo (createInterprocessCommsDemo()); currentDemoId = showInterprocessComms; break; - case showSourceCode: - showSource(); - break; - case setDefaultLookAndFeel: LookAndFeel::setDefaultLookAndFeel (0); break; diff --git a/extras/juce demo/src/binarydata/AudioDemo.cpp b/extras/juce demo/src/binarydata/AudioDemo.cpp deleted file mode 100644 index 36d827cf07..0000000000 --- a/extras/juce demo/src/binarydata/AudioDemo.cpp +++ /dev/null @@ -1,637 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-9 by Raw Material Software Ltd. - - ------------------------------------------------------------------------------ - - JUCE can be redistributed and/or modified under the terms of the GNU General - Public License (Version 2), as published by the Free Software Foundation. - A copy of the license is included in the JUCE distribution, or can be found - online at www.gnu.org/licenses. - - JUCE is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - ------------------------------------------------------------------------------ - - To release a closed-source product which uses JUCE, commercial licenses are - available: visit www.rawmaterialsoftware.com/juce for more information. - - ============================================================================== -*/ - -#include "../jucedemo_headers.h" - - -//============================================================================== -/** Our demo synth only has one type of sound, and it's very basic.. -*/ -class SineWaveSound : public SynthesiserSound -{ -public: - SineWaveSound (const BitArray& midiNotes_) - : midiNotes (midiNotes_) - { - } - - bool appliesToNote (const int midiNoteNumber) - { - return midiNotes [midiNoteNumber]; - } - - bool appliesToChannel (const int midiChannel) { return true; } - -private: - // this will contain the notes that this sound is attached to. - BitArray midiNotes; -}; - - -//============================================================================== -/** Our demo synth voice just plays a sine wave.. -*/ -class SineWaveVoice : public SynthesiserVoice -{ -public: - SineWaveVoice() - : angleDelta (0.0), - tailOff (0.0) - { - } - - bool canPlaySound (SynthesiserSound* sound) - { - return dynamic_cast (sound) != 0; - } - - void startNote (const int midiNoteNumber, const float velocity, - SynthesiserSound* sound, const int currentPitchWheelPosition) - { - currentAngle = 0.0; - level = velocity * 0.15; - tailOff = 0.0; - - double cyclesPerSecond = MidiMessage::getMidiNoteInHertz (midiNoteNumber); - double cyclesPerSample = cyclesPerSecond / getSampleRate(); - - angleDelta = cyclesPerSample * 2.0 * double_Pi; - } - - void stopNote (const bool allowTailOff) - { - if (allowTailOff) - { - // start a tail-off by setting this flag. The render callback will pick up on - // this and do a fade out, calling clearCurrentNote() when it's finished. - - if (tailOff == 0.0) // we only need to begin a tail-off if it's not already doing so - the - // stopNote method could be called more than once. - tailOff = 1.0; - } - else - { - // we're being told to stop playing immediately, so reset everything.. - - clearCurrentNote(); - angleDelta = 0.0; - } - } - - void pitchWheelMoved (const int newValue) - { - // can't be bothered implementing this for the demo! - } - - void controllerMoved (const int controllerNumber, const int newValue) - { - // not interested in controllers in this case. - } - - void renderNextBlock (AudioSampleBuffer& outputBuffer, int startSample, int numSamples) - { - if (angleDelta != 0.0) - { - if (tailOff > 0) - { - while (--numSamples >= 0) - { - const float currentSample = (float) (sin (currentAngle) * level * tailOff); - - for (int i = outputBuffer.getNumChannels(); --i >= 0;) - *outputBuffer.getSampleData (i, startSample) += currentSample; - - currentAngle += angleDelta; - ++startSample; - - tailOff *= 0.99; - - if (tailOff <= 0.005) - { - clearCurrentNote(); - - angleDelta = 0.0; - break; - } - } - } - else - { - while (--numSamples >= 0) - { - const float currentSample = (float) (sin (currentAngle) * level); - - for (int i = outputBuffer.getNumChannels(); --i >= 0;) - *outputBuffer.getSampleData (i, startSample) += currentSample; - - currentAngle += angleDelta; - ++startSample; - } - } - } - } - -private: - double currentAngle, angleDelta, level, tailOff; -}; - -//============================================================================== -/** This is an audio source that streams the output of our demo synth. -*/ -class SynthAudioSource : public AudioSource -{ -public: - //============================================================================== - // this collects real-time midi messages from the midi input device, and - // turns them into blocks that we can process in our audio callback - MidiMessageCollector midiCollector; - - // this represents the state of which keys on our on-screen keyboard are held - // down. When the mouse is clicked on the keyboard component, this object also - // generates midi messages for this, which we can pass on to our synth. - MidiKeyboardState keyboardState; - - // the synth itself! - Synthesiser synth; - - //============================================================================== - SynthAudioSource() - { - // we'll be mixing two different types of sound, so here we'll create two - // sets of note maps, putting each sound on a different octave of the keyboard: - BitArray sinewaveNotes, samplerNotes; - - int i; - for (i = 0; i < 128; ++i) - { - if (((i / 12) & 1) != 0) - sinewaveNotes.setBit (i); - else - samplerNotes.setBit (i); - } - - // add a wave sound, which will get applied to some of the notes.. - synth.addSound (new SineWaveSound (sinewaveNotes)); - - // give our synth a few voices that can play the wave sound.. - for (i = 4; --i >= 0;) - synth.addVoice (new SineWaveVoice()); - - WavAudioFormat wavFormat; - AudioFormatReader* audioReader - = wavFormat.createReaderFor (new MemoryInputStream (BinaryData::cello_wav, - BinaryData::cello_wavSize, - false), - true); - - synth.addSound (new SamplerSound (T("demo sound"), - *audioReader, - samplerNotes, - 74, // root midi note - 0.1, // attack time - 0.1, // release time - 10.0 // maximum sample length - )); - - delete audioReader; - - // and give the synth some sampler voices to play the sampled sound.. - for (i = 4; --i >= 0;) - synth.addVoice (new SamplerVoice()); - } - - void prepareToPlay (int samplesPerBlockExpected, - double sampleRate) - { - midiCollector.reset (sampleRate); - - synth.setCurrentPlaybackSampleRate (sampleRate); - } - - void releaseResources() - { - } - - void getNextAudioBlock (const AudioSourceChannelInfo& bufferToFill) - { - // the synth always adds its output to the audio buffer, so we have to clear it - // first.. - bufferToFill.clearActiveBufferRegion(); - - // fill a midi buffer with incoming messages from the midi input. - MidiBuffer incomingMidi; - midiCollector.removeNextBlockOfMessages (incomingMidi, bufferToFill.numSamples); - - // pass these messages to the keyboard state so that it can update the component - // to show on-screen which keys are being pressed on the physical midi keyboard. - // This call will also add midi messages to the buffer which were generated by - // the mouse-clicking on the on-screen keyboard. - keyboardState.processNextMidiBuffer (incomingMidi, 0, bufferToFill.numSamples, true); - - // and now get the synth to process the midi events and generate its output. - synth.renderNextBlock (*bufferToFill.buffer, incomingMidi, 0, bufferToFill.numSamples); - } -}; - -//============================================================================== -class AudioInputWaveformDisplay : public Component, - public Timer, - public AudioIODeviceCallback -{ -public: - AudioInputWaveformDisplay() - { - bufferPos = 0; - bufferSize = 2048; - circularBuffer = (float*) juce_calloc (sizeof (float) * bufferSize); - currentInputLevel = 0.0f; - numSamplesIn = 0; - - setOpaque (true); - startTimer (1000 / 50); // repaint every 1/50 of a second - } - - ~AudioInputWaveformDisplay() - { - juce_free (circularBuffer); - } - - void paint (Graphics& g) - { - g.fillAll (Colours::black); - g.setColour (Colours::lightgreen); - - const float halfHeight = getHeight() * 0.5f; - - int bp = bufferPos; - - for (int x = getWidth(); --x >= 0;) - { - const int samplesAgo = getWidth() - x; - const float level = circularBuffer [(bp + bufferSize - samplesAgo) % bufferSize]; - - if (level > 0.01f) - g.drawLine ((float) x, halfHeight - halfHeight * level, - (float) x, halfHeight + halfHeight * level); - } - } - - void timerCallback() - { - repaint(); - } - - void addSample (const float sample) - { - currentInputLevel += fabsf (sample); - - const int samplesToAverage = 128; - - if (++numSamplesIn > samplesToAverage) - { - circularBuffer [bufferPos++ % bufferSize] = currentInputLevel / samplesToAverage; - - numSamplesIn = 0; - currentInputLevel = 0.0f; - } - } - - void audioDeviceIOCallback (const float** inputChannelData, - int totalNumInputChannels, - float** outputChannelData, - int totalNumOutputChannels, - int numSamples) - { - for (int i = 0; i < totalNumInputChannels; ++i) - { - if (inputChannelData [i] != 0) - { - for (int j = 0; j < numSamples; ++j) - addSample (inputChannelData [i][j]); - - break; - } - } - } - - void audioDeviceAboutToStart (AudioIODevice*) - { - zeromem (circularBuffer, sizeof (float) * bufferSize); - } - - void audioDeviceStopped() - { - zeromem (circularBuffer, sizeof (float) * bufferSize); - } - -private: - float* circularBuffer; - float currentInputLevel; - int volatile bufferPos, bufferSize, numSamplesIn; -}; - - -//============================================================================== -class AudioDemo : public Component, - public FilenameComponentListener, - public ButtonListener, - public ChangeListener, - public AudioIODeviceCallback -{ - //============================================================================== - FilenameComponent* fileChooser; - TextButton* playButton; - TextButton* stopButton; - TextButton* audioSettingsButton; - - MidiKeyboardComponent* keyboardComponent; - AudioInputWaveformDisplay* waveformComponent; - - //============================================================================== - // this wraps the actual audio device - AudioDeviceManager audioDeviceManager; - - // this allows an audio source to be streamed to the IO device - AudioSourcePlayer audioSourcePlayer; - - // this controls the playback of a positionable audio stream, handling the - // starting/stopping and sample-rate conversion - AudioTransportSource transportSource; - - // this source contains our synth, and generates its output - SynthAudioSource synthSource; - - // this source is used to mix together the output from our synth source - // and wave player source - MixerAudioSource mixerSource; - - // this is the actual stream that's going to read from the audio file. - AudioFormatReaderSource* currentAudioFileSource; - - File currentFile; - -public: - //============================================================================== - AudioDemo() - { - setName (T("Audio")); - - currentAudioFileSource = 0; - - //============================================================================== - AudioFormatManager formatManager; - formatManager.registerBasicFormats(); - - addAndMakeVisible (fileChooser = new FilenameComponent (T("audiofile"), - File::nonexistent, - true, false, false, - formatManager.getWildcardForAllFormats(), - String::empty, - T("(choose a WAV or AIFF file to play)"))); - fileChooser->addListener (this); - fileChooser->setBrowseButtonText (T("browse")); - - addAndMakeVisible (playButton = new TextButton (T("play"), - T("click here to play the current audio file"))); - playButton->addButtonListener (this); - playButton->setColour (TextButton::buttonColourId, Colours::lightgreen); - playButton->setColour (TextButton::buttonOnColourId, Colours::lightgreen); - playButton->setConnectedEdges (Button::ConnectedOnRight); - - addAndMakeVisible (stopButton = new TextButton (T("stop"), - T("click here to play the current audio file"))); - stopButton->addButtonListener (this); - stopButton->setColour (TextButton::buttonColourId, Colours::red); - stopButton->setColour (TextButton::buttonOnColourId, Colours::red); - stopButton->setConnectedEdges (Button::ConnectedOnLeft); - - addAndMakeVisible (audioSettingsButton = new TextButton (T("show audio settings..."), - T("click here to change the audio device settings"))); - audioSettingsButton->addButtonListener (this); - - addAndMakeVisible (keyboardComponent = new MidiKeyboardComponent (synthSource.keyboardState, - MidiKeyboardComponent::horizontalKeyboard)); - - - addAndMakeVisible (waveformComponent = new AudioInputWaveformDisplay()); - - //============================================================================== - // register for start/stop messages from the transport source.. - transportSource.addChangeListener (this); - - // and initialise the device manager with no settings so that it picks a - // default device to use. - const String error (audioDeviceManager.initialise (1, /* number of input channels */ - 2, /* number of output channels */ - 0, /* no XML settings.. */ - true /* select default device on failure */)); - - if (error.isNotEmpty()) - { - AlertWindow::showMessageBox (AlertWindow::WarningIcon, - T("Audio Demo"), - T("Couldn't open an output device!\n\n") + error); - } - else - { - // add the two audio sources to our mixer.. - mixerSource.addInputSource (&transportSource, false); - mixerSource.addInputSource (&synthSource, false); - - // ..and connect the mixer to our source player. - audioSourcePlayer.setSource (&mixerSource); - - // start the IO device pulling its data from our callback.. - audioDeviceManager.addAudioCallback (this); - - // and we need to send midi input to our synth for processing - audioDeviceManager.addMidiInputCallback (String::empty, &synthSource.midiCollector); - } - } - - ~AudioDemo() - { - audioDeviceManager.removeMidiInputCallback (String::empty, &synthSource.midiCollector); - audioDeviceManager.removeAudioCallback (this); - - transportSource.removeChangeListener (this); - - transportSource.setSource (0); - deleteAndZero (currentAudioFileSource); - - audioSourcePlayer.setSource (0); - - deleteAllChildren(); - } - - //============================================================================== - void audioDeviceIOCallback (const float** inputChannelData, - int totalNumInputChannels, - float** outputChannelData, - int totalNumOutputChannels, - int numSamples) - { - // pass the audio callback on to our player source, and also the waveform display comp - audioSourcePlayer.audioDeviceIOCallback (inputChannelData, totalNumInputChannels, outputChannelData, totalNumOutputChannels, numSamples); - waveformComponent->audioDeviceIOCallback (inputChannelData, totalNumInputChannels, outputChannelData, totalNumOutputChannels, numSamples); - } - - void audioDeviceAboutToStart (AudioIODevice* device) - { - audioSourcePlayer.audioDeviceAboutToStart (device); - waveformComponent->audioDeviceAboutToStart (device); - } - - void audioDeviceStopped() - { - audioSourcePlayer.audioDeviceStopped(); - waveformComponent->audioDeviceStopped(); - } - - //============================================================================== - void paint (Graphics& g) - { - // print some text to explain what state we're in. - - g.setColour (Colours::black); - g.setFont (14.0f); - - String s; - - if (transportSource.isPlaying()) - s = T("playing"); - else - s = T("stopped"); - - if (currentAudioFileSource == 0) - s += T(" - no source file selected"); - else - s += T(" - file: \"") + currentFile.getFullPathName() + T("\""); - - g.drawText (s, 250, 50, getWidth() - 250, 24, Justification::centredLeft, true); - } - - void resized() - { - fileChooser->setBounds (10, 10, getWidth() - 20, 24); - playButton->setBounds (10, 50, 100, 24); - stopButton->setBounds (110, 50, 100, 24); - audioSettingsButton->setBounds (10, 120, 200, 24); - audioSettingsButton->changeWidthToFitText(); - keyboardComponent->setBounds (10, 200, getWidth() - 20, 60); - waveformComponent->setBounds (10, 300, 400, 80); - - updateButtons(); - } - - void updateButtons() - { - playButton->setEnabled (currentAudioFileSource != 0 && ! transportSource.isPlaying()); - stopButton->setEnabled (transportSource.isPlaying()); - repaint(); - } - - void buttonClicked (Button* button) - { - if (button == playButton) - { - transportSource.setPosition (0.0); - transportSource.start(); - } - else if (button == stopButton) - { - transportSource.stop(); - } - else if (button == audioSettingsButton) - { - // Create an AudioDeviceSelectorComponent which contains the audio choice widgets... - - AudioDeviceSelectorComponent audioSettingsComp (audioDeviceManager, - 0, 1, - 2, 2, - true, - false, - true, - false); - - // ...and show it in a DialogWindow... - audioSettingsComp.setSize (500, 450); - - DialogWindow::showModalDialog (T("Audio Settings"), - &audioSettingsComp, - this, - Colours::azure, - true); - } - } - - void filenameComponentChanged (FilenameComponent*) - { - // this is called when the user changes the filename in the file chooser box - - File audioFile (fileChooser->getCurrentFile()); - - // unload the previous file source and delete it.. - transportSource.stop(); - transportSource.setSource (0); - deleteAndZero (currentAudioFileSource); - - // create a new file source from the file.. - - // get a format manager and set it up with the basic types (wav and aiff). - AudioFormatManager formatManager; - formatManager.registerBasicFormats(); - - AudioFormatReader* reader = formatManager.createReaderFor (audioFile); - - if (reader != 0) - { - currentFile = audioFile; - - currentAudioFileSource = new AudioFormatReaderSource (reader, true); - - // ..and plug it into our transport source - transportSource.setSource (currentAudioFileSource, - 32768, // tells it to buffer this many samples ahead - reader->sampleRate); - } - - updateButtons(); - } - - void changeListenerCallback (void*) - { - // callback from the transport source to tell us that play has - // started or stopped, so update our buttons.. - updateButtons(); - } -}; - - -//============================================================================== -Component* createAudioDemo() -{ - return new AudioDemo(); -} diff --git a/extras/juce demo/src/binarydata/CameraDemo.cpp b/extras/juce demo/src/binarydata/CameraDemo.cpp deleted file mode 100644 index 3d29731330..0000000000 --- a/extras/juce demo/src/binarydata/CameraDemo.cpp +++ /dev/null @@ -1,198 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-9 by Raw Material Software Ltd. - - ------------------------------------------------------------------------------ - - JUCE can be redistributed and/or modified under the terms of the GNU General - Public License (Version 2), as published by the Free Software Foundation. - A copy of the license is included in the JUCE distribution, or can be found - online at www.gnu.org/licenses. - - JUCE is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - ------------------------------------------------------------------------------ - - To release a closed-source product which uses JUCE, commercial licenses are - available: visit www.rawmaterialsoftware.com/juce for more information. - - ============================================================================== -*/ - -#include "../jucedemo_headers.h" - -#if JUCE_USE_CAMERA - - -//============================================================================== -class CameraDemo : public Component, - public ComboBoxListener, - public ButtonListener, - public CameraImageListener -{ -public: - //============================================================================== - CameraDemo() - { - setName (T("Camera")); - - cameraDevice = 0; - cameraPreviewComp = 0; - lastSnapshot = 0; - recordingMovie = false; - - addAndMakeVisible (cameraSelectorComboBox = new ComboBox (T("Camera"))); - createListOfCameras(); - cameraSelectorComboBox->setSelectedId (1); - cameraSelectorComboBox->addListener (this); - - addAndMakeVisible (snapshotButton = new TextButton (T("Take a snapshot"))); - snapshotButton->addButtonListener (this); - snapshotButton->setEnabled (false); - - addAndMakeVisible (recordMovieButton = new TextButton (T("Record a movie file (to your desktop)..."))); - recordMovieButton->addButtonListener (this); - recordMovieButton->setEnabled (false); - - cameraSelectorComboBox->setSelectedId (2); - } - - ~CameraDemo() - { - deleteAllChildren(); - delete cameraDevice; - delete lastSnapshot; - } - - void paint (Graphics& g) - { - if (lastSnapshot != 0) - g.drawImageWithin (lastSnapshot, - getWidth() / 2 + 10, 40, - getWidth() / 2 - 20, getHeight() - 50, - RectanglePlacement::centred, false); - } - - void resized() - { - cameraSelectorComboBox->setBounds (10, 4, 250, 24); - snapshotButton->changeWidthToFitText (24); - snapshotButton->setTopLeftPosition (cameraSelectorComboBox->getRight() + 20, 4); - recordMovieButton->changeWidthToFitText (24); - recordMovieButton->setTopLeftPosition (snapshotButton->getRight() + 20, 4); - - if (cameraPreviewComp != 0) - cameraPreviewComp->setBounds (10, 40, getWidth() / 2 - 20, getHeight() - 50); - } - - void comboBoxChanged (ComboBox*) - { - // This is called when the user chooses a camera from the drop-down list. - deleteAndZero (cameraDevice); - deleteAndZero (cameraPreviewComp); - recordingMovie = false; - - if (cameraSelectorComboBox->getSelectedId() > 1) - { - // Try to open the user's choice of camera.. - cameraDevice = CameraDevice::openDevice (cameraSelectorComboBox->getSelectedId() - 2); - - // and if it worked, create a preview component for it.. - if (cameraDevice != 0) - addAndMakeVisible (cameraPreviewComp = cameraDevice->createViewerComponent()); - } - - snapshotButton->setEnabled (cameraDevice != 0); - recordMovieButton->setEnabled (cameraDevice != 0); - resized(); - } - - void createListOfCameras() - { - cameraSelectorComboBox->clear(); - cameraSelectorComboBox->addItem ("No camera", 1); - cameraSelectorComboBox->addSeparator(); - - StringArray cameras = CameraDevice::getAvailableDevices(); - - for (int i = 0; i < cameras.size(); ++i) - cameraSelectorComboBox->addItem (cameras[i], i + 2); - } - - void buttonClicked (Button* b) - { - if (cameraDevice != 0) - { - if (b == recordMovieButton) - { - // The user has clicked the record movie button.. - if (! recordingMovie) - { - // Start recording to a file on the user's desktop.. - recordingMovie = true; - - File file (File::getSpecialLocation (File::userDesktopDirectory) - .getNonexistentChildFile (T("JuceCameraDemo"), - CameraDevice::getFileExtension())); - - cameraDevice->startRecordingToFile (file); - recordMovieButton->setButtonText (T("Stop Recording")); - } - else - { - // Already recording, so stop... - recordingMovie = false; - cameraDevice->stopRecording(); - recordMovieButton->setButtonText (T("Start recording (to a file on your desktop)")); - } - } - else - { - // When the user clicks the snapshot button, we'll attach ourselves to - // the camera as a listener, and wait for an image to arrive... - cameraDevice->addListener (this); - } - } - } - - // This is called by the camera device when a new image arrives - void imageReceived (Image& image) - { - // In this app we just want to take one image, so as soon as this happens, - // we'll unregister ourselves as a listener. - if (cameraDevice != 0) - cameraDevice->removeListener (this); - - // This callback won't be on the message thread, so need to lock it before using - // data that may already be in use.. - const MessageManagerLock mm; - deleteAndZero (lastSnapshot); - lastSnapshot = image.createCopy(); - repaint(); - } - -private: - //============================================================================== - CameraDevice* cameraDevice; - - ComboBox* cameraSelectorComboBox; - TextButton* snapshotButton; - TextButton* recordMovieButton; - Component* cameraPreviewComp; - bool recordingMovie; - - Image* lastSnapshot; -}; - - -//============================================================================== -Component* createCameraDemo() -{ - return new CameraDemo(); -} - -#endif diff --git a/extras/juce demo/src/binarydata/DragAndDropDemo.cpp b/extras/juce demo/src/binarydata/DragAndDropDemo.cpp deleted file mode 100644 index 27e5aaca5a..0000000000 --- a/extras/juce demo/src/binarydata/DragAndDropDemo.cpp +++ /dev/null @@ -1,234 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-9 by Raw Material Software Ltd. - - ------------------------------------------------------------------------------ - - JUCE can be redistributed and/or modified under the terms of the GNU General - Public License (Version 2), as published by the Free Software Foundation. - A copy of the license is included in the JUCE distribution, or can be found - online at www.gnu.org/licenses. - - JUCE is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - ------------------------------------------------------------------------------ - - To release a closed-source product which uses JUCE, commercial licenses are - available: visit www.rawmaterialsoftware.com/juce for more information. - - ============================================================================== -*/ - -#include "../jucedemo_headers.h" - -//============================================================================== -// this is the listbox containing the draggable source components.. - -class DragAndDropDemoSource : public ListBox, - public ListBoxModel -{ -public: - //============================================================================== - DragAndDropDemoSource() - : ListBox (T("d+d source"), 0) - { - // tells the ListBox that this object supplies the info about - // its rows. - setModel (this); - - setMultipleSelectionEnabled (true); - } - - ~DragAndDropDemoSource() - { - } - - //============================================================================== - // The following methods implement the necessary virtual functions from ListBoxModel, - // telling the listbox how many rows there are, painting them, etc. - int getNumRows() - { - return 30; - } - - void paintListBoxItem (int rowNumber, - Graphics& g, - int width, int height, - bool rowIsSelected) - { - if (rowIsSelected) - g.fillAll (Colours::lightblue); - - g.setColour (Colours::black); - g.setFont (height * 0.7f); - - g.drawText (T("Row Number ") + String (rowNumber + 1), - 5, 0, width, height, - Justification::centredLeft, true); - } - - const String getDragSourceDescription (const SparseSet& selectedRows) - { - // for our drag desctription, we'll just make a list of the selected - // row numbers - this will be picked up by the drag target and displayed in - // its box. - String desc; - - for (int i = 0; i < selectedRows.size(); ++i) - desc << (selectedRows [i] + 1) << T(" "); - - return desc.trim(); - } - - //============================================================================== - // this just fills in the background of the listbox - void paint (Graphics& g) - { - g.fillAll (Colours::white.withAlpha (0.7f)); - } - - /*void listBoxItemClicked (int row, const MouseEvent& e) - { - PopupMenu m; - m.addItem (1, "sdfsdfs"); - - m.show(); - - //AlertWindow::showMessageBox (AlertWindow::InfoIcon, "asdfsadfads", "srdfsdfa"); - DocumentWindow* dw = new DocumentWindow ("sfdsd", Colours::white, DocumentWindow::allButtons, true); - dw->setBounds (100, 100, 500, 500); - dw->setVisible (true); - }*/ -}; - - -//============================================================================== -// and this is a component that can have things dropped onto it.. - -class DragAndDropDemoTarget : public Component, - public DragAndDropTarget -{ - bool somethingIsBeingDraggedOver; - String message; - -public: - //============================================================================== - DragAndDropDemoTarget() - { - somethingIsBeingDraggedOver = false; - - message = T("Drag-and-drop some rows from the top-left box onto this component!"); - } - - ~DragAndDropDemoTarget() - { - } - - //============================================================================== - void paint (Graphics& g) - { - g.fillAll (Colours::green.withAlpha (0.2f)); - - // draw a red line around the comp if the user's currently dragging something over it.. - if (somethingIsBeingDraggedOver) - { - g.setColour (Colours::red); - g.drawRect (0, 0, getWidth(), getHeight(), 3); - } - - g.setColour (Colours::black); - g.setFont (14.0f); - g.drawFittedText (message, 10, 0, getWidth() - 20, getHeight(), Justification::centred, 4); - } - - //============================================================================== - bool isInterestedInDragSource (const String& sourceDescription, - Component* sourceComponent) - { - // normally you'd check the sourceDescription value to see if it's the - // sort of object that you're interested in before returning true, but for - // the demo, we'll say yes to anything.. - return true; - } - - void itemDragEnter (const String& sourceDescription, - Component* sourceComponent, - int x, int y) - { - somethingIsBeingDraggedOver = true; - repaint(); - } - - void itemDragMove (const String& sourceDescription, - Component* sourceComponent, - int x, int y) - { - } - - void itemDragExit (const String& sourceDescription, - Component* sourceComponent) - { - somethingIsBeingDraggedOver = false; - repaint(); - } - - void itemDropped (const String& sourceDescription, - Component* sourceComponent, - int x, int y) - { - message = T("last rows dropped: ") + sourceDescription; - - somethingIsBeingDraggedOver = false; - repaint(); - } -}; - - -//============================================================================== -class DragAndDropDemo : public Component, - public DragAndDropContainer -{ - //============================================================================== - DragAndDropDemoSource* source; - DragAndDropDemoTarget* target; - -public: - //============================================================================== - DragAndDropDemo() - { - setName (T("Drag-and-Drop")); - - source = new DragAndDropDemoSource(); - addAndMakeVisible (source); - - target = new DragAndDropDemoTarget(); - addAndMakeVisible (target); - } - - ~DragAndDropDemo() - { - deleteAllChildren(); - } - - void resized() - { - source->setBounds (10, 10, 250, 150); - target->setBounds (getWidth() - 260, getHeight() - 160, 250, 150); - } - - //============================================================================== - // (need to put this in to disambiguate the new/delete operators used in the - // two base classes). - juce_UseDebuggingNewOperator -}; - - -//============================================================================== -Component* createDragAndDropDemo() -{ - return new DragAndDropDemo(); -} diff --git a/extras/juce demo/src/binarydata/FontsAndTextDemo.cpp b/extras/juce demo/src/binarydata/FontsAndTextDemo.cpp deleted file mode 100644 index 43fad8b879..0000000000 --- a/extras/juce demo/src/binarydata/FontsAndTextDemo.cpp +++ /dev/null @@ -1,209 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-9 by Raw Material Software Ltd. - - ------------------------------------------------------------------------------ - - JUCE can be redistributed and/or modified under the terms of the GNU General - Public License (Version 2), as published by the Free Software Foundation. - A copy of the license is included in the JUCE distribution, or can be found - online at www.gnu.org/licenses. - - JUCE is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - ------------------------------------------------------------------------------ - - To release a closed-source product which uses JUCE, commercial licenses are - available: visit www.rawmaterialsoftware.com/juce for more information. - - ============================================================================== -*/ - -#include "../jucedemo_headers.h" - - -//============================================================================== -class FontsAndTextDemo : public Component, - public ListBoxModel, - public ButtonListener, - public SliderListener -{ - OwnedArray fonts; - ListBox* listBox; - TextEditor* textBox; - ToggleButton* boldButton; - ToggleButton* italicButton; - Slider* sizeSlider; - - StretchableLayoutManager verticalLayout; - StretchableLayoutManager horizontalLayout; - - StretchableLayoutResizerBar* verticalDividerBar; - StretchableLayoutResizerBar* horizontalDividerBar; - -public: - //============================================================================== - FontsAndTextDemo() - { - setName (T("Fonts")); - - Font::findFonts (fonts); - - addAndMakeVisible (listBox = new ListBox (T("fonts"), this)); - listBox->setRowHeight (28); - - addAndMakeVisible (textBox = new TextEditor()); - - textBox->setColour (TextEditor::backgroundColourId, Colours::white); - textBox->setColour (TextEditor::outlineColourId, Colours::black.withAlpha (0.5f)); - - textBox->setMultiLine (true, true); - textBox->setReturnKeyStartsNewLine (true); - textBox->setText (T("The Quick Brown Fox Jumped Over The Lazy Dog\n\nAa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm Nn Oo Pp Qq Rr Ss Tt Uu Vv Ww Xx Yy Zz 0123456789")); - - addAndMakeVisible (boldButton = new ToggleButton (T("bold"))); - boldButton->addButtonListener (this); - - addAndMakeVisible (italicButton = new ToggleButton (T("italic"))); - italicButton->addButtonListener (this); - - addAndMakeVisible (sizeSlider = new Slider (T("size"))); - sizeSlider->setRange (3.0, 150.0, 0.1); - sizeSlider->setValue (20.0); - sizeSlider->addListener (this); - - listBox->selectRow (0); - listBox->setColour (ListBox::outlineColourId, Colours::black.withAlpha (0.5f)); - listBox->setOutlineThickness (1); - - // set up the layout and resizer bars.. - - verticalLayout.setItemLayout (0, -0.2, -0.8, -0.5); // width of the font list must be - // between 20% and 80%, preferably 50% - verticalLayout.setItemLayout (1, 8, 8, 8); // the vertical divider drag-bar thing is always 8 pixels wide - verticalLayout.setItemLayout (2, 150, -1.0, -0.5); // the components on the right must be - // at least 150 pixels wide, preferably 50% of the total width - - verticalDividerBar = new StretchableLayoutResizerBar (&verticalLayout, 1, true); - addAndMakeVisible (verticalDividerBar); - - horizontalLayout.setItemLayout (0, -0.2, -1.0, -0.4); // height of the font text box must be - // between 20% and 100%, preferably 40% - horizontalLayout.setItemLayout (1, 8, 8, 8); // the horizontal divider drag-bar thing is always 8 pixels high - horizontalLayout.setItemLayout (2, 2, 5, 5); // a gap between the controls - horizontalLayout.setItemLayout (3, 15, 20, 20); // the italic button would like to be 20 pixels high - horizontalLayout.setItemLayout (4, 2, 5, 5); // a gap between the controls - horizontalLayout.setItemLayout (5, 15, 20, 20); // the bold button would like to be 20 pixels high - horizontalLayout.setItemLayout (6, 2, 5, 5); // a gap between the controls - horizontalLayout.setItemLayout (7, 15, 20, 20); // the italic button would like to be 20 pixels high - horizontalLayout.setItemLayout (8, 2, 5, 5); // a gap between the controls - horizontalLayout.setItemLayout (9, 15, 20, 20); // the copy code button would like to be 20 pixels high - horizontalLayout.setItemLayout (10, 5, -1.0, 5); // add a gap at the bottom that will fill up any - // space left over - this will stop the - // sliders from always sticking to the - // bottom of the window - - horizontalDividerBar = new StretchableLayoutResizerBar (&horizontalLayout, 1, false); - addAndMakeVisible (horizontalDividerBar); - } - - ~FontsAndTextDemo() - { - deleteAllChildren(); - } - - void resized() - { - // lay out the list box and vertical divider.. - Component* vcomps[] = { listBox, verticalDividerBar, 0 }; - - verticalLayout.layOutComponents (vcomps, 3, - 4, 4, getWidth() - 8, getHeight() - 8, - false, // lay out side-by-side - true); // resize the components' heights as well as widths - - // now lay out the text box and the controls below it.. - Component* hcomps[] = { textBox, horizontalDividerBar, 0, - boldButton, 0, - italicButton, 0, - sizeSlider }; - - horizontalLayout.layOutComponents (hcomps, 8, - 4 + verticalLayout.getItemCurrentPosition (2), // for their widths, refer to the vertical layout state - 4, - verticalLayout.getItemCurrentAbsoluteSize (2), - getHeight() - 8, - true, // lay out above each other - true); // resize the components' widths as well as heights - } - - // implements the ListBoxModel method - int getNumRows() - { - return fonts.size(); - } - - // implements the ListBoxModel method - void paintListBoxItem (int rowNumber, - Graphics& g, - int width, int height, - bool rowIsSelected) - { - if (rowIsSelected) - g.fillAll (Colours::lightblue); - - if (fonts [rowNumber] != 0) - { - Font font (*fonts [rowNumber]); - font.setHeight (height * 0.7f); - - g.setFont (font); - g.drawText (font.getTypefaceName(), - 4, 0, width - 4, height, - Justification::centredLeft, true); - } - } - - void updatePreviewBoxText() - { - Font* f = fonts [listBox->getSelectedRow()]; - - if (f != 0) - { - Font font (*f); - - font.setHeight ((float) sizeSlider->getValue()); - font.setBold (boldButton->getToggleState()); - font.setItalic (italicButton->getToggleState()); - - textBox->applyFontToAllText (font); - } - } - - void selectedRowsChanged (int lastRowselected) - { - updatePreviewBoxText(); - } - - void buttonClicked (Button* button) - { - updatePreviewBoxText(); - } - - void sliderValueChanged (Slider*) - { - // (this is called when the size slider is moved) - updatePreviewBoxText(); - } -}; - - -//============================================================================== -Component* createFontsAndTextDemo() -{ - return new FontsAndTextDemo(); -} diff --git a/extras/juce demo/src/binarydata/InterprocessCommsDemo.cpp b/extras/juce demo/src/binarydata/InterprocessCommsDemo.cpp deleted file mode 100644 index 0e4427b5a4..0000000000 --- a/extras/juce demo/src/binarydata/InterprocessCommsDemo.cpp +++ /dev/null @@ -1,328 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-9 by Raw Material Software Ltd. - - ------------------------------------------------------------------------------ - - JUCE can be redistributed and/or modified under the terms of the GNU General - Public License (Version 2), as published by the Free Software Foundation. - A copy of the license is included in the JUCE distribution, or can be found - online at www.gnu.org/licenses. - - JUCE is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - ------------------------------------------------------------------------------ - - To release a closed-source product which uses JUCE, commercial licenses are - available: visit www.rawmaterialsoftware.com/juce for more information. - - ============================================================================== -*/ - -#include "../jucedemo_headers.h" - - -//============================================================================== -class InterprocessCommsDemo : public Component, - public ButtonListener, - public ComboBoxListener -{ -public: - //============================================================================== - InterprocessCommsDemo() - { - server = new DemoInterprocessConnectionServer (*this); - - setName (T("Interprocess Communication")); - - // create all our UI bits and pieces.. - addAndMakeVisible (modeSelector = new ComboBox (T("mode:"))); - modeSelector->setBounds (100, 25, 200, 24); - (new Label (modeSelector->getName(), modeSelector->getName()))->attachToComponent (modeSelector, true); - - modeSelector->addItem (T("(Disconnected)"), 8); - modeSelector->addSeparator(); - modeSelector->addItem (T("Named pipe (listening)"), 1); - modeSelector->addItem (T("Named pipe (connect to existing pipe)"), 5); - modeSelector->addSeparator(); - modeSelector->addItem (T("Socket (listening)"), 2); - modeSelector->addItem (T("Socket (connect to existing socket)"), 6); - - modeSelector->setSelectedId (8); - modeSelector->addListener (this); - - addAndMakeVisible (pipeName = new TextEditor (T("pipe name:"))); - pipeName->setBounds (100, 60, 130, 24); - pipeName->setMultiLine (false); - pipeName->setText (T("juce demo pipe")); - (new Label (pipeName->getName(), pipeName->getName()))->attachToComponent (pipeName, true); - - addAndMakeVisible (socketNumber = new TextEditor (T("socket port:"))); - socketNumber->setBounds (350, 60, 80, 24); - socketNumber->setMultiLine (false); - socketNumber->setText (T("12345")); - socketNumber->setInputRestrictions (5, T("0123456789")); - (new Label (socketNumber->getName(), socketNumber->getName()))->attachToComponent (socketNumber, true); - - addAndMakeVisible (socketHost = new TextEditor (T("socket host:"))); - socketHost->setBounds (530, 60, 130, 24); - socketHost->setMultiLine (false); - socketHost->setText (T("localhost")); - socketNumber->setInputRestrictions (512); - (new Label (socketHost->getName(), socketHost->getName()))->attachToComponent (socketHost, true); - - addChildComponent (sendText = new TextEditor (T("sendtext"))); - sendText->setBounds (30, 120, 200, 24); - sendText->setMultiLine (false); - sendText->setReadOnly (false); - sendText->setText (T("testing 1234")); - - addChildComponent (sendButton = new TextButton (T("send"), T("Fires off the message"))); - sendButton->setBounds (240, 120, 200, 24); - sendButton->changeWidthToFitText(); - sendButton->addButtonListener (this); - - addChildComponent (incomingMessages = new TextEditor (T("messages"))); - incomingMessages->setReadOnly (true); - incomingMessages->setMultiLine (true); - incomingMessages->setBounds (30, 150, 500, 250); - - // call this to set up everything's state correctly. - comboBoxChanged (0); - } - - ~InterprocessCommsDemo() - { - close(); - delete server; - - deleteAllChildren(); - } - - void buttonClicked (Button* button) - { - if (button == sendButton) - { - // The send button has been pressed, so write out the contents of the - // text box to the socket or pipe, depending on which is active. - const String text (sendText->getText()); - MemoryBlock messageData ((const char*) text, text.length()); - - for (int i = activeConnections.size(); --i >= 0;) - { - if (! activeConnections[i]->sendMessage (messageData)) - { - // the write failed, so indicate that the connection has broken.. - appendMessage (T("send message failed!")); - } - } - } - } - - void comboBoxChanged (ComboBox*) - { - // This is called when the user picks a different mode from the drop-down list.. - const int modeId = modeSelector->getSelectedId(); - - close(); - - if (modeId < 8) - { - open ((modeId & 2) != 0, - (modeId & 4) != 0); - } - } - - //============================================================================== - // Just closes any connections that are currently open. - void close() - { - server->stop(); - activeConnections.clear(); - - // Reset the UI stuff to a disabled state. - sendText->setVisible (false); - sendButton->setVisible (false); - incomingMessages->setText (String::empty, false); - incomingMessages->setVisible (true); - - appendMessage ( - "To demonstrate named pipes, you'll need to run two instances of the JuceDemo application on this machine. On " - "one of them, select \"named pipe (listening)\", and then on the other, select \"named pipe (connect to existing pipe)\". Then messages that you " - "send from the 'sender' app should appear on the listener app. The \"pipe name\" field lets you choose a name for the pipe\n\n" - "To demonstrate sockets, you can either run two instances of the app on the same machine, or on different " - "machines on your network. In each one enter a socket number, then on one of the apps, select the " - "\"Socket (listening)\" mode. On the other, enter the host address of the listening app, and select \"Socket (connect to existing socket)\". " - "Messages should then be be sent between the apps in the same way as through the named pipes."); - } - - void open (bool asSocket, bool asSender) - { - close(); - - // Make the appropriate bits of UI visible.. - sendText->setVisible (true); - sendButton->setVisible (true); - - incomingMessages->setText (String::empty, false); - incomingMessages->setVisible (true); - - // and try to open the socket or pipe... - bool openedOk = false; - - if (asSender) - { - // if we're connecting to an existing server, we can just create a connection object - // directly. - DemoInterprocessConnection* newConnection = new DemoInterprocessConnection (*this); - - if (asSocket) - { - openedOk = newConnection->connectToSocket (socketHost->getText(), - socketNumber->getText().getIntValue(), - 1000); - } - else - { - openedOk = newConnection->connectToPipe (pipeName->getText()); - } - - if (openedOk) - activeConnections.add (newConnection); - else - delete newConnection; - } - else - { - // if we're starting up a server, we need to tell the server to start waiting for - // clients to connect. It'll then create connection objects for us when clients arrive. - if (asSocket) - { - openedOk = server->beginWaitingForSocket (socketNumber->getText().getIntValue()); - - if (openedOk) - appendMessage (T("Waiting for another app to connect to this socket..")); - } - else - { - DemoInterprocessConnection* newConnection = new DemoInterprocessConnection (*this); - - openedOk = newConnection->createPipe (pipeName->getText()); - - if (openedOk) - { - appendMessage (T("Waiting for another app to connect to this pipe..")); - activeConnections.add (newConnection); - } - else - { - delete newConnection; - } - } - } - - if (! openedOk) - { - modeSelector->setSelectedId (8); - - AlertWindow::showMessageBox (AlertWindow::WarningIcon, - T("Interprocess Comms Demo"), - T("Failed to open the socket or pipe...")); - } - } - - void appendMessage (const String& message) - { - incomingMessages->setCaretPosition (INT_MAX); - incomingMessages->insertTextAtCursor (message + T("\n")); - incomingMessages->setCaretPosition (INT_MAX); - } - - //============================================================================== - class DemoInterprocessConnection : public InterprocessConnection - { - InterprocessCommsDemo& owner; - int ourNumber; - - public: - DemoInterprocessConnection (InterprocessCommsDemo& owner_) - : InterprocessConnection (true), - owner (owner_) - { - static int totalConnections = 0; - ourNumber = ++totalConnections; - } - - ~DemoInterprocessConnection() - { - } - - void connectionMade() - { - owner.appendMessage (T("Connection #") + String (ourNumber) + T(" - connection started")); - } - - void connectionLost() - { - owner.appendMessage (T("Connection #") + String (ourNumber) + T(" - connection lost")); - } - - void messageReceived (const MemoryBlock& message) - { - owner.appendMessage (T("Connection #") + String (ourNumber) + T(" - message received: ") + message.toString()); - } - }; - - //============================================================================== - class DemoInterprocessConnectionServer : public InterprocessConnectionServer - { - InterprocessCommsDemo& owner; - - public: - DemoInterprocessConnectionServer (InterprocessCommsDemo& owner_) - : owner (owner_) - { - } - - ~DemoInterprocessConnectionServer() - { - } - - InterprocessConnection* createConnectionObject() - { - DemoInterprocessConnection* newConnection = new DemoInterprocessConnection (owner); - - owner.activeConnections.add (newConnection); - return newConnection; - } - }; - - OwnedArray activeConnections; - - - //============================================================================== - juce_UseDebuggingNewOperator - -private: - ComboBox* modeSelector; - TextEditor* sendText; - TextButton* sendButton; - TextEditor* incomingMessages; - - TextEditor* pipeName; - TextEditor* socketNumber; - TextEditor* socketHost; - - DemoInterprocessConnectionServer* server; -}; - - -//============================================================================== -Component* createInterprocessCommsDemo() -{ - return new InterprocessCommsDemo(); -} diff --git a/extras/juce demo/src/binarydata/OpenGLDemo.cpp b/extras/juce demo/src/binarydata/OpenGLDemo.cpp deleted file mode 100644 index 853cf20eed..0000000000 --- a/extras/juce demo/src/binarydata/OpenGLDemo.cpp +++ /dev/null @@ -1,269 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-9 by Raw Material Software Ltd. - - ------------------------------------------------------------------------------ - - JUCE can be redistributed and/or modified under the terms of the GNU General - Public License (Version 2), as published by the Free Software Foundation. - A copy of the license is included in the JUCE distribution, or can be found - online at www.gnu.org/licenses. - - JUCE is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - ------------------------------------------------------------------------------ - - To release a closed-source product which uses JUCE, commercial licenses are - available: visit www.rawmaterialsoftware.com/juce for more information. - - ============================================================================== -*/ - -#ifdef _WIN32 - #include -#endif - -#include "../jucedemo_headers.h" - -#if JUCE_OPENGL - -#ifdef _WIN32 - #include - #include -#elif defined (LINUX) - #include - #include - #undef KeyPress -#else - #include -#endif - -#ifndef GL_BGRA_EXT - #define GL_BGRA_EXT 0x80e1 -#endif - -//============================================================================== -class DemoOpenGLCanvas : public OpenGLComponent, - public Timer -{ - float rotation, delta; - Image* image; - -public: - DemoOpenGLCanvas() - { - rotation = 0.0f; - delta = 1.0f; - - Image* im = ImageFileFormat::loadFrom (BinaryData::juce_png, BinaryData::juce_pngSize); - image = new Image (Image::RGB, 512, 512, true); - Graphics g (*image); - g.fillAll (Colours::white); - g.drawImage (im, 0, 0, 512, 512, 0, 0, im->getWidth(), im->getHeight()); - delete im; - - startTimer (20); - - // Just for demo purposes, let's dump a list of all the available pixel formats.. - OwnedArray availablePixelFormats; - OpenGLPixelFormat::getAvailablePixelFormats (this, availablePixelFormats); - - for (int i = 0; i < availablePixelFormats.size(); ++i) - { - const OpenGLPixelFormat* const pixFormat = availablePixelFormats[i]; - - String formatDescription; - formatDescription - << i << ": RGBA=(" << pixFormat->redBits - << ", " << pixFormat->greenBits - << ", " << pixFormat->blueBits - << ", " << pixFormat->alphaBits - << "), depth=" << pixFormat->depthBufferBits - << ", stencil=" << pixFormat->stencilBufferBits - << ", accum RGBA=(" << pixFormat->accumulationBufferRedBits - << ", " << pixFormat->accumulationBufferGreenBits - << ", " << pixFormat->accumulationBufferBlueBits - << ", " << pixFormat->accumulationBufferAlphaBits - << "), full-scene AA=" - << pixFormat->fullSceneAntiAliasingNumSamples; - - Logger::outputDebugString (formatDescription); - } - } - - ~DemoOpenGLCanvas() - { - delete image; - } - - // when the component creates a new internal context, this is called, and - // we'll use the opportunity to create the textures needed. - void newOpenGLContextCreated() - { - // (no need to call makeCurrentContextActive(), as that will have - // been done for us before the method call). - glClearColor (0.0f, 0.0f, 0.0f, 0.0f); - glClearDepth (1.0); - - glDepthFunc (GL_LESS); - glEnable (GL_DEPTH_TEST); - glEnable (GL_TEXTURE_2D); - glEnable (GL_BLEND); - glShadeModel (GL_SMOOTH); - - glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - - glPixelStorei (GL_UNPACK_ALIGNMENT, 4); - - int stride, pixStride; - const void* pixels = image->lockPixelDataReadOnly (0, 0, image->getWidth(), image->getHeight(), stride, pixStride); - - glTexImage2D (GL_TEXTURE_2D, 0, 4, image->getWidth(), image->getHeight(), - 0, GL_RGB, - GL_UNSIGNED_BYTE, pixels); - image->releasePixelDataReadOnly (pixels); - - glHint (GL_LINE_SMOOTH_HINT, GL_NICEST); - glHint (GL_POINT_SMOOTH_HINT, GL_NICEST); - glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - } - - void mouseDrag (const MouseEvent& e) - { - delta = e.getDistanceFromDragStartX() / 100.0f; - repaint(); - } - - void renderOpenGL() - { - glClearColor (0.8f, 0.0f, 0.4f, 0.0f); - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho (0.0, getWidth(), 0.0, getHeight(), 0, 1); - - glColor4f (1.0f, 1.0f, 1.0f, fabsf (::sinf (rotation / 100.0f))); - glBegin(GL_QUADS); - glTexCoord2i (0, 0); glVertex2f (50.0f, getHeight() - 50.0f); - glTexCoord2i (1, 0); glVertex2f (getWidth() - 50.0f, getHeight() - 50.0f); - glTexCoord2i (1, 1); glVertex2f (getWidth() - 50.0f, 50.0f); - glTexCoord2i (0, 1); glVertex2f (50.0f, 50.0f); - glEnd(); - - glMatrixMode (GL_PROJECTION); - glLoadIdentity(); - - glClear (GL_DEPTH_BUFFER_BIT); - gluPerspective (45.0f, - getWidth() / (GLfloat) getHeight(), - 0.1f, - 100.0f); - - glMatrixMode (GL_MODELVIEW); - - glLoadIdentity(); - glPushMatrix(); - - glTranslatef (0.0f, 0.0f, -5.0f); - glRotatef (rotation, 0.5f, 1.0f, 0.0f); - - glBegin (GL_QUADS); - - glColor3f (0.0f, 1.0f, 0.0f); - - glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); - glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, 1.0f); - glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); - glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f); - - glColor3f (1.0f, 0.0f, 0.0f); - - glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f); - glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); - glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); - glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f); - - glColor3f (0.0f, 0.0f, 1.0f); - - glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, 1.0f, -1.0f); - glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); - glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); - glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, -1.0f); - - glColor3f (1.0f, 1.0f, 0.0f); - - glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f); - glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f); - glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, -1.0f, 1.0f); - glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); - - glColor3f (0.0f, 1.0f, 1.0f); - - glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f); - glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); - glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); - glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); - - glColor3f (1.0f, 0.0f, 1.0f); - - glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f); - glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, -1.0f, 1.0f); - glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); - glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, 1.0f, -1.0f); - - glEnd(); - - glPopMatrix(); - } - - void timerCallback() - { - rotation += delta; - - repaint(); - } -}; - -//============================================================================== -class OpenGLDemo : public Component -{ - //============================================================================== - DemoOpenGLCanvas* canvas; - -public: - //============================================================================== - OpenGLDemo() - { - setName (T("OpenGL")); - - canvas = new DemoOpenGLCanvas(); - addAndMakeVisible (canvas); - } - - ~OpenGLDemo() - { - deleteAllChildren(); - } - - void resized() - { - canvas->setBounds (10, 10, getWidth() - 20, getHeight() - 50); - } -}; - - -//============================================================================== -Component* createOpenGLDemo() -{ - return new OpenGLDemo(); -} - -#endif diff --git a/extras/juce demo/src/binarydata/PathsAndTransformsDemo.cpp b/extras/juce demo/src/binarydata/PathsAndTransformsDemo.cpp deleted file mode 100644 index 795eacd7e1..0000000000 --- a/extras/juce demo/src/binarydata/PathsAndTransformsDemo.cpp +++ /dev/null @@ -1,378 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-9 by Raw Material Software Ltd. - - ------------------------------------------------------------------------------ - - JUCE can be redistributed and/or modified under the terms of the GNU General - Public License (Version 2), as published by the Free Software Foundation. - A copy of the license is included in the JUCE distribution, or can be found - online at www.gnu.org/licenses. - - JUCE is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - ------------------------------------------------------------------------------ - - To release a closed-source product which uses JUCE, commercial licenses are - available: visit www.rawmaterialsoftware.com/juce for more information. - - ============================================================================== -*/ - -#include "../jucedemo_headers.h" - - -//============================================================================== -static float randomNumber() -{ - return Random::getSystemRandom().nextFloat() * 300.0f - 150.0f; -} - - -//============================================================================== -class PathsAndTransformsDemo : public Component, - public SliderListener, - public ComboBoxListener -{ -public: - //============================================================================== - PathsAndTransformsDemo() - { - setName (T("Paths")); - - // No parts of this component are semi-transparent, so calling setOpaque() - // allows the redraw system to exploit this fact and optimise repainting. - setOpaque (true); - - generateRandomShape(); - generateImage(); - generateDrawable(); - generateSVGDrawable(); - - addAndMakeVisible (typeChooser = new ComboBox (T("type"))); - addAndMakeVisible (scaleSlider = new Slider (T("scale"))); - addAndMakeVisible (angleSlider = new Slider (T("angle"))); - addAndMakeVisible (xSlider = new Slider (T("x"))); - addAndMakeVisible (ySlider = new Slider (T("y"))); - addAndMakeVisible (opacitySlider = new Slider (T("opacity"))); - - (new Label (String::empty, T("type:"))) ->attachToComponent (typeChooser, true); - (new Label (String::empty, T("scale:"))) ->attachToComponent (scaleSlider, true); - (new Label (String::empty, T("angle:"))) ->attachToComponent (angleSlider, true); - (new Label (String::empty, T("x offset:"))) ->attachToComponent (xSlider, true); - (new Label (String::empty, T("y offset:"))) ->attachToComponent (ySlider, true); - (new Label (String::empty, T("opacity:"))) ->attachToComponent (opacitySlider, true); - - typeChooser->addItem (T("random shape - solid colour"), 1); - typeChooser->addItem (T("random shape - linear gradient fill"), 2); - typeChooser->addItem (T("random shape - radial gradient fill"), 3); - typeChooser->addItem (T("random shape - tiled image fill"), 8); - typeChooser->addItem (T("image - low quality"), 4); - typeChooser->addItem (T("image - high quality"), 5); - typeChooser->addItem (T("image - colour-filled alpha channel"), 6); - typeChooser->addItem (T("image - gradient-filled alpha channel"), 7); - typeChooser->addItem (T("image - alphamap-filled alpha channel"), 9); - typeChooser->addItem (T("drawable object"), 10); - typeChooser->addItem (T("SVG object"), 11); - typeChooser->setSelectedId (11); - typeChooser->addListener (this); - - scaleSlider ->addListener (this); - angleSlider ->addListener (this); - xSlider ->addListener (this); - ySlider ->addListener (this); - opacitySlider ->addListener (this); - - scaleSlider->setRange (0.01, 10.0, 0.001); - scaleSlider->setValue (1.0); - - angleSlider->setRange (-1.0, 1.0, 0.001); - angleSlider->setValue (0); - - xSlider->setRange (-10, 10, 0.001); - xSlider->setValue (0); - - ySlider->setRange (-10, 10, 0.001); - ySlider->setValue (0); - - opacitySlider->setRange (0, 1, 0.01); - opacitySlider->setValue (1.0); - } - - ~PathsAndTransformsDemo() - { - if (image != 0) - delete image; - - delete drawable; - delete svgDrawable; - - deleteAllChildren(); - } - - void paint (Graphics& g) - { - g.fillCheckerBoard (0, 0, getWidth(), getHeight(), - 50, 50, - Colour (0xffe0e0e0), - Colours::white); - - const int type = typeChooser->getSelectedId(); - - if (type == 1) - { - g.setColour (Colours::blue.withAlpha ((float) opacitySlider->getValue())); - g.fillPath (shape, getTransform()); - } - else if (type == 2 || type == 3) - { - GradientBrush gb (Colours::blue.withAlpha ((float) opacitySlider->getValue()), - getWidth() * 0.5f, getHeight() * 0.5f, - Colours::red.withAlpha ((float) opacitySlider->getValue()), - getWidth() * 0.6f, getHeight() * 0.7f, - type == 3); - - g.setBrush (&gb); - g.fillPath (shape, getTransform()); - } - else if (type == 8) - { - ImageBrush ib (image, 100, 100, (float) opacitySlider->getValue()); - - g.setBrush (&ib); - g.fillPath (shape, getTransform()); - } - else if (type == 4 || type == 5) - { - if (type == 4) - g.setImageResamplingQuality (Graphics::lowResamplingQuality); - else - g.setImageResamplingQuality (Graphics::mediumResamplingQuality); - - g.setOpacity ((float) opacitySlider->getValue()); - - if (image != 0) - { - g.drawImageTransformed (image, - 0, 0, image->getWidth(), image->getHeight(), - AffineTransform::translation (-0.5f * image->getWidth(), -0.5f * image->getHeight()) - .followedBy (getTransform()), - false); - } - } - else if (type == 6) - { - g.setColour (Colours::blue.withAlpha ((float) opacitySlider->getValue())); - - if (image != 0) - { - g.drawImageTransformed (image, - 0, 0, image->getWidth(), image->getHeight(), - AffineTransform::translation (-0.5f * image->getWidth(), -0.5f * image->getHeight()) - .followedBy (getTransform()), - true); - } - } - else if (type == 7) - { - GradientBrush gb (Colours::blue.withAlpha ((float) opacitySlider->getValue()), - getWidth() * 0.5f, getHeight() * 0.5f, - Colours::red.withAlpha ((float) opacitySlider->getValue()), - getWidth() * 0.6f, getHeight() * 0.7f, - false); - - g.setBrush (&gb); - - if (image != 0) - { - g.drawImageTransformed (image, - 0, 0, image->getWidth(), image->getHeight(), - AffineTransform::translation (-0.5f * image->getWidth(), -0.5f * image->getHeight()) - .followedBy (getTransform()), - true); - } - } - else if (type == 9) - { - ImageBrush ib (image, 100, 100, (float) opacitySlider->getValue()); - g.setBrush (&ib); - - if (image != 0) - { - g.drawImageTransformed (image, - 0, 0, image->getWidth(), image->getHeight(), - AffineTransform::translation (-0.5f * image->getWidth(), - -0.5f * image->getHeight()) - .followedBy (getTransform()), - true); - } - } - else if (type == 10) - { - g.setOpacity ((float) opacitySlider->getValue()); - - float x, y, w, h; - drawable->getBounds (x, y, w, h); - - drawable->draw (g, AffineTransform::translation (-x - 0.5f * w, - -y - 0.5f * h) - .followedBy (getTransform())); - } - else if (type == 11) - { - g.setOpacity ((float) opacitySlider->getValue()); - - float x, y, w, h; - svgDrawable->getBounds (x, y, w, h); - - svgDrawable->draw (g, AffineTransform::translation (-x - 0.5f * w, - -y - 0.5f * h) - .followedBy (getTransform())); - } - } - - void resized() - { - const int x = 100; - int y = 4; - typeChooser->setBounds (x, y, 300, 24); - y += 28; - scaleSlider->setBounds (x, y, 300, 24); - y += 28; - angleSlider->setBounds (x, y, 300, 24); - y += 28; - xSlider->setBounds (x, y, 300, 24); - y += 28; - ySlider->setBounds (x, y, 300, 24); - y += 28; - opacitySlider->setBounds (x, y, 300, 24); - } - - void sliderValueChanged (Slider*) - { - repaint(); - } - - void comboBoxChanged (ComboBox*) - { - repaint(); - } - -private: - Path shape; - Image* image; - Drawable* drawable; - DrawableComposite* svgDrawable; - - ComboBox* typeChooser; - Slider* scaleSlider; - Slider* angleSlider; - Slider* xSlider; - Slider* ySlider; - Slider* opacitySlider; - - void generateRandomShape() - { - shape.startNewSubPath (randomNumber(), randomNumber()); - - for (int i = 0; i < 7; ++i) - { - shape.lineTo (randomNumber(), randomNumber()); - - shape.quadraticTo (randomNumber(), randomNumber(), - randomNumber(), randomNumber()); - } - - shape.closeSubPath(); - } - - void generateImage() - { - image = ImageFileFormat::loadFrom (BinaryData::juce_png, BinaryData::juce_pngSize); - } - - void generateDrawable() - { - // create a composite drawable object.. - DrawableComposite* dc = new DrawableComposite(); - drawable = dc; - - // ..add a paths drawable to it... - DrawablePath dp; - dp.setPath (shape); - - dp.setOutline (4.0f, Colours::blue); - - GradientBrush gb (ColourGradient (Colours::red.withAlpha (0.4f), -100.0f, -100.0f, - Colours::green.withAlpha (0.6f), 100.0f, 100.0f, false)); - - dp.setFillBrush (gb); - - dc->insertDrawable (dp); - - // ..add an image drawable.. - DrawableImage di; - di.setImage (image, false); - - dc->insertDrawable (di, AffineTransform::scale (0.3f, 0.8f)); - - // ..and a text object - DrawableText dt; - dt.setText (T("JUCE Drawables"), Font (30.0f, Font::bold)); - dt.setColour (Colours::green); - - dc->insertDrawable (dt, AffineTransform::translation (-80.0f, -20.0f) - .scaled (2.0f, 0.8f) - .rotated (-1.3f)); - } - - void generateSVGDrawable() - { - svgDrawable = 0; - - MemoryInputStream iconsFileStream (BinaryData::icons_zip, BinaryData::icons_zipSize, false); - ZipFile icons (&iconsFileStream, false); - - // Load a random SVG file from our embedded icons.zip file. - InputStream* svgFileStream - = icons.createStreamForEntry (Random::getSystemRandom().nextInt (icons.getNumEntries())); - - if (svgFileStream != 0) - { - Drawable* loadedSVG = Drawable::createFromImageDataStream (*svgFileStream); - - if (loadedSVG != 0) - { - // to make our icon the right size, we'll put it inside a DrawableComposite, and apply - // a transform to get it to the size we want. - - float x, y, w, h; - loadedSVG->getBounds (x, y, w, h); - const float scaleFactor = 300.0f / jmax (w, h); - - svgDrawable = new DrawableComposite(); - svgDrawable->insertDrawable (loadedSVG, AffineTransform::scale (scaleFactor, scaleFactor)); - } - - delete svgFileStream; - } - } - - const AffineTransform getTransform() const - { - return AffineTransform::rotation (float_Pi * 2.0f * (float) angleSlider->getValue()) - .scaled ((float) scaleSlider->getValue(), - (float) scaleSlider->getValue()) - .translated (getWidth() * 0.5f + (float) xSlider->getValue(), - getHeight() * 0.5f + (float) ySlider->getValue()); - } -}; - -Component* createPathsAndTransformsDemo() -{ - return new PathsAndTransformsDemo(); -} diff --git a/extras/juce demo/src/binarydata/QuickTimeDemo.cpp b/extras/juce demo/src/binarydata/QuickTimeDemo.cpp deleted file mode 100644 index 72865aea47..0000000000 --- a/extras/juce demo/src/binarydata/QuickTimeDemo.cpp +++ /dev/null @@ -1,123 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-9 by Raw Material Software Ltd. - - ------------------------------------------------------------------------------ - - JUCE can be redistributed and/or modified under the terms of the GNU General - Public License (Version 2), as published by the Free Software Foundation. - A copy of the license is included in the JUCE distribution, or can be found - online at www.gnu.org/licenses. - - JUCE is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - ------------------------------------------------------------------------------ - - To release a closed-source product which uses JUCE, commercial licenses are - available: visit www.rawmaterialsoftware.com/juce for more information. - - ============================================================================== -*/ - -#include "../jucedemo_headers.h" - -#if JUCE_QUICKTIME && ! JUCE_LINUX - -//============================================================================== -// so that we can easily have two QT windows each with a file browser, wrap this up as a class.. -class QuickTimeWindowWithFileBrowser : public Component, - public FilenameComponentListener -{ -public: - QuickTimeWindowWithFileBrowser() - { - addAndMakeVisible (qtComp = new QuickTimeMovieComponent()); - - // and a file-chooser.. - addAndMakeVisible (fileChooser = new FilenameComponent (T("movie"), - File::nonexistent, - true, false, false, - T("*.*"), - String::empty, - T("(choose a video file to play)"))); - fileChooser->addListener (this); - fileChooser->setBrowseButtonText (T("browse")); - } - - ~QuickTimeWindowWithFileBrowser() - { - deleteAllChildren(); - } - - void resized() - { - qtComp->setBounds (0, 0, getWidth(), getHeight() - 30); - fileChooser->setBounds (0, getHeight() - 24, getWidth(), 24); - } - - void filenameComponentChanged (FilenameComponent*) - { - // this is called when the user changes the filename in the file chooser box - if (qtComp->loadMovie (fileChooser->getCurrentFile(), true)) - { - // loaded the file ok, so let's start it playing.. - - qtComp->play(); - } - else - { - AlertWindow::showMessageBox (AlertWindow::WarningIcon, - T("Couldn't load the file!"), - T("Sorry, QuickTime didn't manage to load that file!")); - } - } - -private: - QuickTimeMovieComponent* qtComp; - FilenameComponent* fileChooser; -}; - - -//============================================================================== -class QuickTimeDemo : public Component -{ -public: - //============================================================================== - QuickTimeDemo() - { - setName (T("QuickTime")); - - // add a movie component.. - addAndMakeVisible (qtComp1 = new QuickTimeWindowWithFileBrowser()); - addAndMakeVisible (qtComp2 = new QuickTimeWindowWithFileBrowser()); - } - - ~QuickTimeDemo() - { - deleteAllChildren(); - } - - void resized() - { - qtComp1->setBoundsRelative (0.05f, 0.05f, 0.425f, 0.9f); - qtComp2->setBoundsRelative (0.525f, 0.05f, 0.425f, 0.9f); - } - -private: - //============================================================================== - QuickTimeWindowWithFileBrowser* qtComp1; - QuickTimeWindowWithFileBrowser* qtComp2; -}; - - -//============================================================================== -Component* createQuickTimeDemo() -{ - return new QuickTimeDemo(); -} - -#endif diff --git a/extras/juce demo/src/binarydata/TableDemo.cpp b/extras/juce demo/src/binarydata/TableDemo.cpp deleted file mode 100644 index 7b127f4b2b..0000000000 --- a/extras/juce demo/src/binarydata/TableDemo.cpp +++ /dev/null @@ -1,325 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-9 by Raw Material Software Ltd. - - ------------------------------------------------------------------------------ - - JUCE can be redistributed and/or modified under the terms of the GNU General - Public License (Version 2), as published by the Free Software Foundation. - A copy of the license is included in the JUCE distribution, or can be found - online at www.gnu.org/licenses. - - JUCE is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - ------------------------------------------------------------------------------ - - To release a closed-source product which uses JUCE, commercial licenses are - available: visit www.rawmaterialsoftware.com/juce for more information. - - ============================================================================== -*/ - -#include "../jucedemo_headers.h" - - -//============================================================================== -/** - This class shows how to implement a TableListBoxModel to show in a TableListBox. -*/ -class TableDemoComponent : public Component, - public TableListBoxModel -{ -public: - //============================================================================== - TableDemoComponent() - : font (14.0f), - demoData (0) - { - // Load some data from an embedded XML file.. - loadData(); - - // Create our table component and add it to this component.. - addAndMakeVisible (table = new TableListBox (T("demo table"), this)); - - // give it a border - table->setColour (ListBox::outlineColourId, Colours::grey); - table->setOutlineThickness (1); - - // Add some columns to the table header, based on the column list in our database.. - forEachXmlChildElement (*columnList, columnXml) - { - table->getHeader()->addColumn (columnXml->getStringAttribute T("name"), - columnXml->getIntAttribute T("columnId"), - columnXml->getIntAttribute T("width"), - 50, 400, - TableHeaderComponent::defaultFlags); - } - - // we could now change some initial settings.. - table->getHeader()->setSortColumnId (1, true); // sort forwards by the ID column - table->getHeader()->setColumnVisible (7, false); // hide the "length" column until the user shows it - - // un-comment this line to have a go of stretch-to-fit mode - // table->getHeader()->setStretchToFitActive (true); - - table->setMultipleSelectionEnabled (true); - } - - ~TableDemoComponent() - { - deleteAllChildren(); - - delete demoData; - } - - //============================================================================== - // This is overloaded from TableListBoxModel, and must return the total number of rows in our table - int getNumRows() - { - return numRows; - } - - // This is overloaded from TableListBoxModel, and should fill in the background of the whole row - void paintRowBackground (Graphics& g, int rowNumber, int width, int height, bool rowIsSelected) - { - if (rowIsSelected) - g.fillAll (Colours::lightblue); - } - - // This is overloaded from TableListBoxModel, and must paint any cells that aren't using custom - // components. - void paintCell (Graphics& g, - int rowNumber, - int columnId, - int width, int height, - bool rowIsSelected) - { - g.setColour (Colours::black); - g.setFont (font); - - const XmlElement* rowElement = dataList->getChildElement (rowNumber); - - if (rowElement != 0) - { - const String text (rowElement->getStringAttribute (getAttributeNameForColumnId (columnId))); - - g.drawText (text, 2, 0, width - 4, height, Justification::centredLeft, true); - } - - g.setColour (Colours::black.withAlpha (0.2f)); - g.fillRect (width - 1, 0, 1, height); - } - - // This is overloaded from TableListBoxModel, and tells us that the user has clicked a table header - // to change the sort order. - void sortOrderChanged (int newSortColumnId, const bool isForwards) - { - if (newSortColumnId != 0) - { - DemoDataSorter sorter (getAttributeNameForColumnId (newSortColumnId), isForwards); - dataList->sortChildElements (sorter); - - table->updateContent(); - } - } - - // This is overloaded from TableListBoxModel, and must update any custom components that we're using - Component* refreshComponentForCell (int rowNumber, int columnId, bool isRowSelected, - Component* existingComponentToUpdate) - { - if (columnId == 5) // If it's the ratings column, we'll return our custom component.. - { - RatingColumnCustomComponent* ratingsBox = (RatingColumnCustomComponent*) existingComponentToUpdate; - - // If an existing component is being passed-in for updating, we'll re-use it, but - // if not, we'll have to create one. - if (ratingsBox == 0) - ratingsBox = new RatingColumnCustomComponent (*this); - - ratingsBox->setRowAndColumn (rowNumber, columnId); - - return ratingsBox; - } - else - { - // for any other column, just return 0, as we'll be painting these columns directly. - - jassert (existingComponentToUpdate == 0); - return 0; - } - } - - // This is overloaded from TableListBoxModel, and should choose the best width for the specified - // column. - int getColumnAutoSizeWidth (int columnId) - { - if (columnId == 5) - return 100; // (this is the ratings column, containing a custom component) - - int widest = 32; - - // find the widest bit of text in this column.. - for (int i = getNumRows(); --i >= 0;) - { - const XmlElement* rowElement = dataList->getChildElement (i); - - if (rowElement != 0) - { - const String text (rowElement->getStringAttribute (getAttributeNameForColumnId (columnId))); - - widest = jmax (widest, font.getStringWidth (text)); - } - } - - return widest + 8; - } - - // A couple of quick methods to set and get the "rating" value when the user - // changes the combo box - int getRating (const int rowNumber, const int columnId) const - { - return dataList->getChildElement (rowNumber)->getIntAttribute (T("Rating")); - } - - void setRating (const int rowNumber, const int columnId, const int newRating) - { - dataList->getChildElement (rowNumber)->setAttribute (T("Rating"), newRating); - } - - //============================================================================== - void resized() - { - // position our table with a gap around its edge - table->setBoundsInset (BorderSize (8)); - } - - //============================================================================== - juce_UseDebuggingNewOperator - -private: - TableListBox* table; // the table component itself - Font font; - - XmlElement* demoData; // This is the XML document loaded from the embedded file "demo table data.xml" - XmlElement* columnList; // A pointer to the sub-node of demoData that contains the list of columns - XmlElement* dataList; // A pointer to the sub-node of demoData that contains the list of data rows - int numRows; // The number of rows of data we've got - - //============================================================================== - // This is a custom component containing a combo box, which we're going to put inside - // our table's "rating" column. - class RatingColumnCustomComponent : public Component, - public ComboBoxListener - { - public: - RatingColumnCustomComponent (TableDemoComponent& owner_) - : owner (owner_) - { - // just put a combo box inside this component - addAndMakeVisible (comboBox = new ComboBox (String::empty)); - comboBox->addItem (T("fab"), 1); - comboBox->addItem (T("groovy"), 2); - comboBox->addItem (T("hep"), 3); - comboBox->addItem (T("neat"), 4); - comboBox->addItem (T("wild"), 5); - comboBox->addItem (T("swingin"), 6); - comboBox->addItem (T("mad for it"), 7); - - // when the combo is changed, we'll get a callback. - comboBox->addListener (this); - comboBox->setWantsKeyboardFocus (false); - } - - ~RatingColumnCustomComponent() - { - deleteAllChildren(); - } - - void resized() - { - comboBox->setBoundsInset (BorderSize (2)); - } - - // Our demo code will call this when we may need to update our contents - void setRowAndColumn (const int newRow, const int newColumn) - { - row = newRow; - columnId = newColumn; - comboBox->setSelectedId (owner.getRating (row, columnId), true); - } - - void comboBoxChanged (ComboBox* comboBoxThatHasChanged) - { - owner.setRating (row, columnId, comboBox->getSelectedId()); - } - - private: - TableDemoComponent& owner; - ComboBox* comboBox; - int row, columnId; - }; - - //============================================================================== - // A comparator used to sort our data when the user clicks a column header - class DemoDataSorter - { - public: - DemoDataSorter (const String attributeToSort_, bool forwards) - : attributeToSort (attributeToSort_), - direction (forwards ? 1 : -1) - { - } - - int compareElements (XmlElement* first, XmlElement* second) const - { - int result = first->getStringAttribute (attributeToSort) - .compareLexicographically (second->getStringAttribute (attributeToSort)); - - if (result == 0) - result = first->getStringAttribute (T("ID")) - .compareLexicographically (second->getStringAttribute (T("ID"))); - - return direction * result; - } - - private: - const String attributeToSort; - const int direction; - }; - - //============================================================================== - // this loads the embedded database XML file into memory - void loadData() - { - XmlDocument dataDoc (String ((const char*) BinaryData::demo_table_data_xml)); - demoData = dataDoc.getDocumentElement(); - - dataList = demoData->getChildByName (T("DATA")); - columnList = demoData->getChildByName (T("COLUMNS")); - - numRows = dataList->getNumChildElements(); - } - - // (a utility method to search our XML for the attribute that matches a column ID) - const String getAttributeNameForColumnId (const int columnId) const - { - forEachXmlChildElement (*columnList, columnXml) - { - if (columnXml->getIntAttribute T("columnId") == columnId) - return columnXml->getStringAttribute T("name"); - } - - return String::empty; - } -}; - - -//============================================================================== -Component* createTableDemo() -{ - return new TableDemoComponent(); -} diff --git a/extras/juce demo/src/binarydata/ThreadingDemo.cpp b/extras/juce demo/src/binarydata/ThreadingDemo.cpp deleted file mode 100644 index 94bcd0b6fc..0000000000 --- a/extras/juce demo/src/binarydata/ThreadingDemo.cpp +++ /dev/null @@ -1,351 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-9 by Raw Material Software Ltd. - - ------------------------------------------------------------------------------ - - JUCE can be redistributed and/or modified under the terms of the GNU General - Public License (Version 2), as published by the Free Software Foundation. - A copy of the license is included in the JUCE distribution, or can be found - online at www.gnu.org/licenses. - - JUCE is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - ------------------------------------------------------------------------------ - - To release a closed-source product which uses JUCE, commercial licenses are - available: visit www.rawmaterialsoftware.com/juce for more information. - - ============================================================================== -*/ - -#include "../jucedemo_headers.h" - - -//============================================================================== -class BouncingBallComp : public Component -{ - float x, y, size, dx, dy, w, h, parentWidth, parentHeight; - float innerX, innerY; - Colour colour; - Thread::ThreadID threadId; - -public: - BouncingBallComp() - { - x = Random::getSystemRandom().nextFloat() * 200.0f; - y = Random::getSystemRandom().nextFloat() * 200.0f; - parentWidth = 50; - parentHeight = 50; - innerX = 0; - innerY = 0; - threadId = 0; - - const float speed = 5.0f; // give each ball a fixed speed so we can - // see the effects of thread priority on how fast - // they actually go. - const float angle = Random::getSystemRandom().nextFloat() * float_Pi * 2.0f; - - dx = sinf (angle) * speed; - dy = cosf (angle) * speed; - - size = Random::getSystemRandom().nextFloat() * 30.0f + 30.0f; - - colour = Colour (Random::getSystemRandom().nextInt()) - .withAlpha (0.5f) - .withBrightness (0.7f); - } - - ~BouncingBallComp() - { - } - - void paint (Graphics& g) - { - g.setColour (colour); - g.fillEllipse (innerX, innerY, size, size); - - g.setColour (Colours::black); - g.setFont (10.0f); - g.drawText (String::toHexString ((int64) threadId), 0, 0, getWidth(), getHeight(), Justification::centred, false); - } - - void parentSizeChanged() - { - parentWidth = getParentWidth() - size; - parentHeight = getParentHeight() - size; - } - - void moveBall() - { - threadId = Thread::getCurrentThreadId(); // this is so the component can print the thread ID inside the ball - - x += dx; - y += dy; - - if (x < 0) - dx = fabsf (dx); - - if (x > parentWidth) - dx = -fabsf (dx); - - if (y < 0) - dy = fabsf (dy); - - if (y > parentHeight) - dy = -fabsf (dy); - - setBounds (((int) x) - 2, - ((int) y) - 2, - ((int) size) + 4, - ((int) size) + 4); - - innerX = x - getX(); - innerY = y - getY(); - - repaint(); - } - - juce_UseDebuggingNewOperator -}; - - -//============================================================================== -class DemoThread : public BouncingBallComp, - public Thread -{ - int interval; - -public: - DemoThread() - : Thread (T("Juce Demo Thread")) - { - interval = Random::getSystemRandom().nextInt (50) + 6; - - // give the threads a random priority, so some will move more - // smoothly than others.. - startThread (Random::getSystemRandom().nextInt (3) + 3); - } - - ~DemoThread() - { - // allow the thread 2 seconds to stop cleanly - should be plenty of time. - stopThread (2000); - } - - void run() - { - // this is the code that runs this thread - we'll loop continuously, - // updating the co-ordinates of our blob. - - // threadShouldExit() returns true when the stopThread() method has been - // called, so we should check it often, and exit as soon as it gets flagged. - while (! threadShouldExit()) - { - // sleep a bit so the threads don't all grind the CPU to a halt.. - wait (interval); - - // because this is a background thread, we mustn't do any UI work without - // first grabbing a MessageManagerLock.. - const MessageManagerLock mml (Thread::getCurrentThread()); - - if (! mml.lockWasGained()) // if something is trying to kill this job, the lock - return; // will fail, in which case we'd better return.. - - // now we've got the UI thread locked, we can mess about with the components - moveBall(); - } - } - - juce_UseDebuggingNewOperator -}; - - -//============================================================================== -class DemoThreadPoolJob : public BouncingBallComp, - public ThreadPoolJob -{ -public: - DemoThreadPoolJob() - : ThreadPoolJob (T("Demo Threadpool Job")) - { - } - - ~DemoThreadPoolJob() - { - } - - JobStatus runJob() - { - // this is the code that runs this job. It'll be repeatedly called until we return - // jobHasFinished instead of jobNeedsRunningAgain. - - Thread::sleep (30); - - - // because this is a background thread, we mustn't do any UI work without - // first grabbing a MessageManagerLock.. - const MessageManagerLock mml (this); - - // before moving the ball, we need to check whether the lock was actually gained, because - // if something is trying to stop this job, it will have failed.. - if (mml.lockWasGained()) - moveBall(); - - return jobNeedsRunningAgain; - } - - void removedFromQueue() - { - // This is called to tell us that our job has been removed from the pool. - // In this case there's no need to do anything here. - } - - juce_UseDebuggingNewOperator -}; - -//============================================================================== -class ThreadingDemo : public Component, - public Timer, - public ButtonListener -{ - bool isUsingPool; - ThreadPool pool; - TextButton* controlButton; - -public: - //============================================================================== - ThreadingDemo() - : pool (3) - { - isUsingPool = false; - - setName (T("Multithreading")); - - setOpaque (true); - } - - ~ThreadingDemo() - { - pool.removeAllJobs (true, 2000); - - deleteAllChildren(); - } - - // this gets called when a component is added or removed from a parent component. - void parentHierarchyChanged() - { - // we'll use this as an opportunity to start and stop the threads, so that - // we don't leave them going when the component's not actually visible. - stopTimer(); - - pool.removeAllJobs (true, 4000); - deleteAllChildren(); - - addAndMakeVisible (controlButton = new TextButton (T("Thread type"))); - controlButton->changeWidthToFitText (20); - controlButton->setTopLeftPosition (20, 20); - controlButton->setTriggeredOnMouseDown (true); - controlButton->setAlwaysOnTop (true); - controlButton->addButtonListener (this); - - if (isShowing()) - { - while (getNumChildComponents() < 5) - addABall(); - - startTimer (2000); - } - } - - void paint (Graphics& g) - { - g.fillAll (Colours::white); - } - - void setUsingPool (bool usePool) - { - isUsingPool = usePool; - parentHierarchyChanged(); // resets everything - } - - void addABall() - { - if (isUsingPool) - { - DemoThreadPoolJob* newComp = new DemoThreadPoolJob(); - addAndMakeVisible (newComp); - newComp->parentSizeChanged(); - - pool.addJob (newComp); - } - else - { - DemoThread* newComp = new DemoThread(); - addAndMakeVisible (newComp); - newComp->parentSizeChanged(); - } - } - - void removeABall() - { - if (isUsingPool) - { - ThreadPoolJob* jobToRemove = pool.getJob (Random::getSystemRandom().nextInt (pool.getNumJobs())); - - if (jobToRemove != 0) - { - pool.removeJob (jobToRemove, true, 4000); - delete jobToRemove; - } - } - else - { - if (getNumChildComponents() > 1) - { - Component* ball = getChildComponent (1 + Random::getSystemRandom().nextInt (getNumChildComponents() - 1)); - - if (dynamic_cast (ball) == 0) // don't delete our button! - delete ball; - } - } - } - - void timerCallback() - { - if (Random::getSystemRandom().nextBool()) - { - if (getNumChildComponents() <= 10) - addABall(); - } - else - { - if (getNumChildComponents() > 3) - removeABall(); - } - } - - void buttonClicked (Button* button) - { - PopupMenu m; - m.addItem (1, T("Use one thread per ball"), true, ! isUsingPool); - m.addItem (2, T("Use a thread pool"), true, isUsingPool); - - const int res = m.showAt (button); - - if (res != 0) - setUsingPool (res == 2); - } -}; - - - -//============================================================================== -Component* createThreadingDemo() -{ - return new ThreadingDemo(); -} diff --git a/extras/juce demo/src/binarydata/TreeViewDemo.cpp b/extras/juce demo/src/binarydata/TreeViewDemo.cpp deleted file mode 100644 index e9c884e06b..0000000000 --- a/extras/juce demo/src/binarydata/TreeViewDemo.cpp +++ /dev/null @@ -1,271 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-9 by Raw Material Software Ltd. - - ------------------------------------------------------------------------------ - - JUCE can be redistributed and/or modified under the terms of the GNU General - Public License (Version 2), as published by the Free Software Foundation. - A copy of the license is included in the JUCE distribution, or can be found - online at www.gnu.org/licenses. - - JUCE is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - ------------------------------------------------------------------------------ - - To release a closed-source product which uses JUCE, commercial licenses are - available: visit www.rawmaterialsoftware.com/juce for more information. - - ============================================================================== -*/ - -#include "../jucedemo_headers.h" - - -//============================================================================== -class TreeViewDemoItem : public TreeViewItem -{ - XmlElement* xml; - -public: - TreeViewDemoItem (XmlElement* const xml_) - : xml (xml_) - { - } - - ~TreeViewDemoItem() - { - } - - int getItemWidth() const - { - return xml->getIntAttribute (T("width"), -1); - } - - const String getUniqueName() const - { - if (xml != 0) - return xml->getTagName(); - else - return String::empty; - } - - bool mightContainSubItems() - { - return xml != 0 - && xml->getFirstChildElement() != 0; - } - - void paintItem (Graphics& g, int width, int height) - { - if (xml != 0) - { - // if this item is selected, fill it with a background colour.. - if (isSelected()) - g.fillAll (Colours::blue.withAlpha (0.3f)); - - // use a "colour" attribute in the xml tag for this node to set the text colour.. - g.setColour (Colour (xml->getStringAttribute (T("colour"), T("ff000000")).getHexValue32())); - - g.setFont (height * 0.7f); - - // draw the xml element's tag name.. - g.drawText (xml->getTagName(), - 4, 0, width - 4, height, - Justification::centredLeft, true); - } - } - - void itemOpennessChanged (bool isNowOpen) - { - if (isNowOpen) - { - // if we've not already done so, we'll now add the tree's sub-items. You could - // also choose to delete the existing ones and refresh them if that's more suitable - // in your app. - if (getNumSubItems() == 0) - { - // create and add sub-items to this node of the tree, corresponding to - // each sub-element in the XML.. - - if (xml != 0) - { - forEachXmlChildElement (*xml, child) - { - addSubItem (new TreeViewDemoItem (child)); - } - } - } - } - else - { - // in this case, we'll leave any sub-items in the tree when the node gets closed, - // though you could choose to delete them if that's more appropriate for - // your application. - } - } - - const String getDragSourceDescription() - { - return T("TreeView Items"); - } -}; - -//============================================================================== -class TreeViewDemo : public Component, - public DragAndDropContainer, - public ButtonListener -{ - XmlElement* treeXml; - - TreeViewItem* rootItem; - TreeView* treeView; - - FileTreeComponent* fileTreeComp; - DirectoryContentsList* directoryList; - TimeSliceThread thread; - - TextButton* typeButton; - -public: - //============================================================================== - TreeViewDemo() - : treeView (0), - rootItem (0), - fileTreeComp (0), - directoryList (0), - thread ("Demo file tree thread") - { - setName (T("Tree Views")); - - const String treeXmlString (BinaryData::treedemo_xml); - XmlDocument parser (treeXmlString); - treeXml = parser.getDocumentElement(); - - rootItem = new TreeViewDemoItem (treeXml); - rootItem->setOpen (true); - - // find the root of the user's home drive, and set that as our root.. - File folder (File::getSpecialLocation (File::userHomeDirectory)); - while (folder.getParentDirectory() != folder) - folder = folder.getParentDirectory(); - - directoryList = new DirectoryContentsList (0, thread); - directoryList->setDirectory (folder, true, true); - thread.startThread (3); - - addAndMakeVisible (typeButton = new TextButton (T("Type of treeview..."))); - typeButton->addButtonListener (this); - typeButton->setAlwaysOnTop (true); - typeButton->setTriggeredOnMouseDown (true); - - showCustomTreeView(); - } - - ~TreeViewDemo() - { - deleteAllChildren(); - - delete rootItem; - delete treeXml; - delete directoryList; - } - - void paint (Graphics& g) - { - g.setColour (Colours::grey); - - if (treeView != 0) - g.drawRect (treeView->getX(), treeView->getY(), - treeView->getWidth(), treeView->getHeight()); - - if (fileTreeComp != 0) - g.drawRect (fileTreeComp->getX(), fileTreeComp->getY(), - fileTreeComp->getWidth(), fileTreeComp->getHeight()); - } - - void resized() - { - if (treeView != 0) - treeView->setBoundsInset (BorderSize (40, 10, 10, 10)); - else if (fileTreeComp != 0) - fileTreeComp->setBoundsInset (BorderSize (40, 10, 10, 10)); - - typeButton->changeWidthToFitText (22); - typeButton->setTopLeftPosition (10, 10); - } - - void showCustomTreeView() - { - deleteAndZero (treeView); - deleteAndZero (fileTreeComp); - - addAndMakeVisible (treeView = new TreeView()); - treeView->setRootItem (rootItem); - treeView->setMultiSelectEnabled (true); - - resized(); - } - - void showFileTreeComp() - { - deleteAndZero (treeView); - deleteAndZero (fileTreeComp); - - addAndMakeVisible (fileTreeComp = new FileTreeComponent (*directoryList)); - - resized(); - } - - void buttonClicked (Button*) - { - PopupMenu m; - m.addItem (1, T("Custom treeview showing an XML tree")); - m.addItem (2, T("FileTreeComponent showing the file system")); - m.addSeparator(); - m.addItem (3, T("Show root item"), true, - treeView != 0 ? treeView->isRootItemVisible() - : fileTreeComp->isRootItemVisible()); - m.addItem (4, T("Show open/close buttons"), true, - treeView != 0 ? treeView->areOpenCloseButtonsVisible() - : fileTreeComp->areOpenCloseButtonsVisible()); - - const int r = m.showAt (typeButton); - - if (r == 1) - { - showCustomTreeView(); - } - else if (r == 2) - { - showFileTreeComp(); - } - else if (r == 3) - { - if (treeView != 0) - treeView->setRootItemVisible (! treeView->isRootItemVisible()); - else - fileTreeComp->setRootItemVisible (! fileTreeComp->isRootItemVisible()); - } - else if (r == 4) - { - if (treeView != 0) - treeView->setOpenCloseButtonsVisible (! treeView->areOpenCloseButtonsVisible()); - else - fileTreeComp->setOpenCloseButtonsVisible (! fileTreeComp->areOpenCloseButtonsVisible()); - } - } - - juce_UseDebuggingNewOperator -}; - - -//============================================================================== -Component* createTreeViewDemo() -{ - return new TreeViewDemo(); -} diff --git a/extras/juce demo/src/binarydata/WebBrowserDemo.cpp b/extras/juce demo/src/binarydata/WebBrowserDemo.cpp deleted file mode 100644 index 835bf166af..0000000000 --- a/extras/juce demo/src/binarydata/WebBrowserDemo.cpp +++ /dev/null @@ -1,148 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-9 by Raw Material Software Ltd. - - ------------------------------------------------------------------------------ - - JUCE can be redistributed and/or modified under the terms of the GNU General - Public License (Version 2), as published by the Free Software Foundation. - A copy of the license is included in the JUCE distribution, or can be found - online at www.gnu.org/licenses. - - JUCE is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - ------------------------------------------------------------------------------ - - To release a closed-source product which uses JUCE, commercial licenses are - available: visit www.rawmaterialsoftware.com/juce for more information. - - ============================================================================== -*/ - -#include "../jucedemo_headers.h" - -#if JUCE_WEB_BROWSER - -//============================================================================== -/** We'll use a subclass of WebBrowserComponent to demonstrate how to get callbacks - when the browser changes URL. You don't need to do this, you can just also - just use the WebBrowserComponent class directly. -*/ -class DemoBrowserComponent : public WebBrowserComponent -{ -public: - //============================================================================== - DemoBrowserComponent (TextEditor* addressTextBox_) - : addressTextBox (addressTextBox_) - { - } - - // This method gets called when the browser is about to go to a new URL.. - bool pageAboutToLoad (const String& newURL) - { - // We'll just update our address box to reflect the new location.. - addressTextBox->setText (newURL, false); - - // we could return false here to tell the browser not to go ahead with - // loading the page. - return true; - } - - //============================================================================== - juce_UseDebuggingNewOperator - -private: - TextEditor* addressTextBox; - - DemoBrowserComponent (DemoBrowserComponent&); - const DemoBrowserComponent& operator= (const DemoBrowserComponent&); -}; - - -//============================================================================== -class WebBrowserDemo : public Component, - public TextEditorListener, - public ButtonListener -{ -public: - //============================================================================== - WebBrowserDemo() - { - setName ("Web Browser"); - - // Create an address box.. - addAndMakeVisible (addressTextBox = new TextEditor()); - addressTextBox->setTextToShowWhenEmpty ("Enter a web address, e.g. http://www.rawmaterialsoftware.com", Colours::grey); - addressTextBox->addListener (this); - - // create the actual browser component - addAndMakeVisible (webView = new DemoBrowserComponent (addressTextBox)); - - // add some buttons.. - addAndMakeVisible (goButton = new TextButton ("Go", "Go to URL")); - goButton->addButtonListener (this); - addAndMakeVisible (backButton = new TextButton ("<<", "Back")); - backButton->addButtonListener (this); - addAndMakeVisible (forwardButton = new TextButton (">>", "Forward")); - forwardButton->addButtonListener (this); - - // send the browser to a start page.. - webView->goToURL ("http://www.google.com"); - } - - ~WebBrowserDemo() - { - deleteAllChildren(); - } - - void resized() - { - webView->setBounds (10, 45, getWidth() - 20, getHeight() - 55); - goButton->setBounds (getWidth() - 45, 10, 35, 25); - addressTextBox->setBounds (100, 10, getWidth() - 155, 25); - backButton->setBounds (10, 10, 35, 25); - forwardButton->setBounds (55, 10, 35, 25); - } - - void textEditorTextChanged (TextEditor& editor) {} - void textEditorEscapeKeyPressed (TextEditor& editor) {} - void textEditorFocusLost (TextEditor& editor) {} - - void textEditorReturnKeyPressed (TextEditor&) - { - webView->goToURL (addressTextBox->getText()); - } - - void buttonClicked (Button* b) - { - if (b == backButton) - webView->goBack(); - else if (b == forwardButton) - webView->goForward(); - else if (b == goButton) - webView->goToURL (addressTextBox->getText()); - } - - juce_UseDebuggingNewOperator - -private: - DemoBrowserComponent* webView; - - TextEditor* addressTextBox; - TextButton* goButton; - TextButton* backButton; - TextButton* forwardButton; -}; - - -//============================================================================== -Component* createWebBrowserDemo() -{ - return new WebBrowserDemo(); -} - -#endif diff --git a/extras/juce demo/src/binarydata/WidgetsDemo.cpp b/extras/juce demo/src/binarydata/WidgetsDemo.cpp deleted file mode 100644 index 32046987a2..0000000000 --- a/extras/juce demo/src/binarydata/WidgetsDemo.cpp +++ /dev/null @@ -1,1429 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-9 by Raw Material Software Ltd. - - ------------------------------------------------------------------------------ - - JUCE can be redistributed and/or modified under the terms of the GNU General - Public License (Version 2), as published by the Free Software Foundation. - A copy of the license is included in the JUCE distribution, or can be found - online at www.gnu.org/licenses. - - JUCE is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - ------------------------------------------------------------------------------ - - To release a closed-source product which uses JUCE, commercial licenses are - available: visit www.rawmaterialsoftware.com/juce for more information. - - ============================================================================== -*/ - -#include "../jucedemo_headers.h" - - -//============================================================================== -class BouncingBallComponent : public Component, - public Timer -{ - Colour colour; - float x, y, dx, dy; - -public: - BouncingBallComponent() - { - x = Random::getSystemRandom().nextFloat() * 100.0f; - y = Random::getSystemRandom().nextFloat() * 100.0f; - - dx = Random::getSystemRandom().nextFloat() * 8.0f - 4.0f; - dy = Random::getSystemRandom().nextFloat() * 8.0f - 4.0f; - - colour = Colour (Random::getSystemRandom().nextInt()) - .withAlpha (0.5f) - .withBrightness (0.7f); - - int size = 10 + Random::getSystemRandom().nextInt (30); - setSize (size, size); - - startTimer (60); - } - - ~BouncingBallComponent() - { - } - - void paint (Graphics& g) - { - g.setColour (colour); - g.fillEllipse (x - getX(), y - getY(), getWidth() - 2.0f, getHeight() - 2.0f); - } - - void timerCallback() - { - x += dx; - y += dy; - - if (x < 0) - dx = fabsf (dx); - - if (x > getParentWidth()) - dx = -fabsf (dx); - - if (y < 0) - dy = fabsf (dy); - - if (y > getParentHeight()) - dy = -fabsf (dy); - - setTopLeftPosition ((int) x, (int) y); - } - - bool hitTest (int x, int y) - { - return false; - } -}; - -//============================================================================== -class DragOntoDesktopDemoComp : public Component -{ - Component* parent; - ComponentDragger dragger; - -public: - DragOntoDesktopDemoComp (Component* p) - : parent (p) - { - // show off semi-transparency if it's supported by the current OS. - setOpaque (! Desktop::canUseSemiTransparentWindows()); - - for (int i = 3; --i >= 0;) - addAndMakeVisible (new BouncingBallComponent()); - } - - ~DragOntoDesktopDemoComp() - { - deleteAllChildren(); - } - - void mouseDown (const MouseEvent& e) - { - dragger.startDraggingComponent (this, 0); - } - - void mouseDrag (const MouseEvent& e) - { - if (! parent->isValidComponent()) - { - delete this; - } - else - { - MouseEvent e2 (e.getEventRelativeTo (parent)); - - // if the mouse is inside the parent component, we'll make that the - // parent - otherwise, we'll put this comp on the desktop. - if (e2.x >= 0 && e2.y >= 0 && e2.x < parent->getWidth() && e2.y < parent->getHeight()) - { - // re-add this component to a parent component, which will - // remove it from the desktop.. - parent->addChildComponent (this); - } - else - { - // add the component to the desktop, which will remove it - // from its current parent component.. - addToDesktop (ComponentPeer::windowIsTemporary); - } - - dragger.dragComponent (this, e); - } - } - - void paint (Graphics& g) - { - if (isOpaque()) - g.fillAll (Colours::white); - else - g.fillAll (Colours::blue.withAlpha (0.2f)); - - String desc (T("drag this box onto the desktop to show how the same component can move from being lightweight to being a separate window")); - - g.setFont (15.0f); - g.setColour (Colours::black); - g.drawFittedText (desc, 4, 0, getWidth() - 8, getHeight(), Justification::horizontallyJustified, 5); - - g.drawRect (0, 0, getWidth(), getHeight()); - } -}; - -//============================================================================== -class CustomMenuComponent : public PopupMenuCustomComponent, - public Timer -{ - int blobX, blobY; - -public: - CustomMenuComponent() - : blobX (0), - blobY (0) - { - // set off a timer to move a blob around on this component every - // 300 milliseconds - see the timerCallback() method. - startTimer (300); - } - - ~CustomMenuComponent() - { - } - - void getIdealSize (int& idealWidth, - int& idealHeight) - { - // tells the menu how big we'd like to be.. - idealWidth = 200; - idealHeight = 60; - } - - void paint (Graphics& g) - { - g.fillAll (Colours::yellow.withAlpha (0.3f)); - - g.setColour (Colours::pink); - g.fillEllipse ((float) blobX, (float) blobY, 30.0f, 40.0f); - - g.setFont (14.0f, Font::italic); - g.setColour (Colours::black); - - g.drawFittedText (T("this is a customised menu item (also demonstrating the Timer class)..."), - 4, 0, getWidth() - 8, getHeight(), - Justification::centred, 3); - } - - void timerCallback() - { - blobX = Random::getSystemRandom().nextInt (getWidth()); - blobY = Random::getSystemRandom().nextInt (getHeight()); - repaint(); - } -}; - -//============================================================================== -/** To demonstrate how sliders can have custom snapping applied to their values, - this simple class snaps the value to 50 if it comes near. -*/ -class SnappingSlider : public Slider -{ -public: - SnappingSlider (const String& name) - : Slider (name) - { - } - - double snapValue (double attemptedValue, const bool userIsDragging) - { - if (! userIsDragging) - return attemptedValue; // if they're entering the value in the text-box, don't mess with it. - - if (attemptedValue > 40 && attemptedValue < 60) - return 50.0; - else - return attemptedValue; - } -}; - -/** A TextButton that pops up a colour chooser to change its colours. */ -class ColourChangeButton : public TextButton, - public ChangeListener -{ -public: - ColourChangeButton() - : TextButton (T("click to change colour...")) - { - setSize (10, 24); - changeWidthToFitText(); - } - - ~ColourChangeButton() - { - } - - void clicked() - { - // create two colour selector components for our background and - // text colour.. - ColourSelector colourSelector1; - colourSelector1.setName (T("background")); - colourSelector1.setCurrentColour (findColour (TextButton::buttonColourId)); - colourSelector1.addChangeListener (this); - - ColourSelector colourSelector2; - colourSelector2.setName (T("text")); - colourSelector2.setCurrentColour (findColour (TextButton::textColourId)); - colourSelector2.addChangeListener (this); - - // and add the selectors as custom menu items to a PopupMenu, putting - // them in two different sub-menus.. - PopupMenu m, sub1, sub2; - - sub1.addCustomItem (1234, &colourSelector1, 300, 300, false); - m.addSubMenu (T("background colour"), sub1); - - sub2.addCustomItem (1234, &colourSelector2, 300, 300, false); - m.addSubMenu (T("text colour"), sub2); - - // and show the menu (modally).. - m.showAt (this); - } - - void changeListenerCallback (void* source) - { - ColourSelector* cs = (ColourSelector*) source; - - if (cs->getName() == T("text")) - setColour (TextButton::textColourId, cs->getCurrentColour()); - else - setColour (TextButton::buttonColourId, cs->getCurrentColour()); - } -}; - -//============================================================================== -// just a component that deletes all its children, to use for the tabbed pages to avoid -// memory leaks when they're deleted -class DemoPageComp : public Component -{ -public: - DemoPageComp() - { - } - - ~DemoPageComp() - { - deleteAllChildren(); - } -}; - -//============================================================================== -static Component* createSlidersPage() -{ - DemoPageComp* page = new DemoPageComp(); - - const int numSliders = 11; - Slider* sliders [numSliders]; - - int i; - for (i = 0; i < numSliders; ++i) - { - if (i == 2) - page->addAndMakeVisible (sliders[i] = new SnappingSlider (T("slider"))); - else - page->addAndMakeVisible (sliders[i] = new Slider (T("slider"))); - - sliders[i]->setRange (0.0, 100.0, 0.1); - sliders[i]->setPopupMenuEnabled (true); - sliders[i]->setValue (Random::getSystemRandom().nextDouble() * 100.0, false, false); - } - - sliders[0]->setSliderStyle (Slider::LinearVertical); - sliders[0]->setTextBoxStyle (Slider::TextBoxBelow, false, 100, 20); - sliders[0]->setBounds (10, 25, 70, 200); - sliders[0]->setDoubleClickReturnValue (true, 50.0); // double-clicking this slider will set it to 50.0 - sliders[0]->setTextValueSuffix (T(" units")); - - sliders[1]->setSliderStyle (Slider::LinearVertical); - sliders[1]->setVelocityBasedMode (true); - sliders[1]->setSkewFactor (0.5); - sliders[1]->setTextBoxStyle (Slider::TextBoxAbove, true, 100, 20); - sliders[1]->setBounds (85, 25, 70, 200); - sliders[1]->setTextValueSuffix (T(" rels")); - - sliders[2]->setSliderStyle (Slider::LinearHorizontal); - sliders[2]->setTextBoxStyle (Slider::TextBoxLeft, false, 80, 20); - sliders[2]->setBounds (180, 35, 150, 20); - - sliders[3]->setSliderStyle (Slider::LinearHorizontal); - sliders[3]->setTextBoxStyle (Slider::NoTextBox, false, 0, 0); - sliders[3]->setBounds (180, 65, 150, 20); - sliders[3]->setPopupDisplayEnabled (true, page); - sliders[3]->setTextValueSuffix (T(" nuns required to change a lightbulb")); - - sliders[4]->setSliderStyle (Slider::IncDecButtons); - sliders[4]->setTextBoxStyle (Slider::TextBoxLeft, false, 50, 20); - sliders[4]->setBounds (180, 105, 100, 20); - sliders[4]->setIncDecButtonsMode (Slider::incDecButtonsDraggable_Vertical); - - sliders[5]->setSliderStyle (Slider::Rotary); - sliders[5]->setRotaryParameters (float_Pi * 1.2f, float_Pi * 2.8f, false); - sliders[5]->setTextBoxStyle (Slider::TextBoxRight, false, 70, 20); - sliders[5]->setBounds (190, 145, 120, 40); - sliders[5]->setTextValueSuffix (T(" mm")); - - sliders[6]->setSliderStyle (Slider::LinearBar); - sliders[6]->setBounds (180, 195, 100, 30); - sliders[6]->setTextValueSuffix (T(" gallons")); - - sliders[7]->setSliderStyle (Slider::TwoValueHorizontal); - sliders[7]->setBounds (360, 20, 160, 40); - - sliders[8]->setSliderStyle (Slider::TwoValueVertical); - sliders[8]->setBounds (360, 110, 40, 160); - - sliders[9]->setSliderStyle (Slider::ThreeValueHorizontal); - sliders[9]->setBounds (360, 70, 160, 40); - - sliders[10]->setSliderStyle (Slider::ThreeValueVertical); - sliders[10]->setBounds (440, 110, 40, 160); - - for (i = 7; i <= 10; ++i) - { - sliders[i]->setTextBoxStyle (Slider::NoTextBox, false, 0, 0); - sliders[i]->setMinValue (Random::getSystemRandom().nextDouble() * 100.0, false, false); - sliders[i]->setMaxValue (Random::getSystemRandom().nextDouble() * 100.0, false, false); - sliders[i]->setPopupDisplayEnabled (true, page); - } - - Label* label = new Label (T("hint"), T("Try right-clicking on a slider for an options menu. \n\nAlso, holding down CTRL while dragging will turn on a slider's velocity-sensitive mode")); - label->setBounds (20, 245, 350, 150); - page->addAndMakeVisible (label); - - return page; -} - -//============================================================================== -static Component* createRadioButtonPage() -{ - DemoPageComp* page = new DemoPageComp(); - - GroupComponent* group = new GroupComponent (T("group"), T("radio buttons")); - group->setBounds (20, 20, 220, 140); - page->addAndMakeVisible (group); - - int i; - for (i = 0; i < 4; ++i) - { - ToggleButton* tb = new ToggleButton (T("radio button #") + String (i + 1)); - page->addAndMakeVisible (tb); - tb->setRadioGroupId (1234); - tb->setBounds (45, 46 + i * 22, 180, 22); - tb->setTooltip (T("a set of mutually-exclusive radio buttons")); - - if (i == 0) - tb->setToggleState (true, false); - } - - for (i = 0; i < 4; ++i) - { - DrawablePath normal, over; - - Path p; - p.addStar (0.0f, 0.0f, i + 5, 20.0f, 50.0f, -0.2f); - normal.setPath (p); - normal.setSolidFill (Colours::lightblue); - normal.setOutline (4.0f, Colours::black); - - over.setPath (p); - over.setSolidFill (Colours::blue); - over.setOutline (4.0f, Colours::black); - - DrawableButton* db = new DrawableButton (String (i + 5) + T(" points"), DrawableButton::ImageAboveTextLabel); - db->setImages (&normal, &over, 0); - - page->addAndMakeVisible (db); - db->setClickingTogglesState (true); - db->setRadioGroupId (23456); - - const int buttonSize = 50; - db->setBounds (25 + i * buttonSize, 180, buttonSize, buttonSize); - - if (i == 0) - db->setToggleState (true, false); - } - - for (i = 0; i < 4; ++i) - { - TextButton* tb = new TextButton (T("button ") + String (i + 1)); - - page->addAndMakeVisible (tb); - tb->setClickingTogglesState (true); - tb->setRadioGroupId (34567); - tb->setColour (TextButton::buttonColourId, Colours::white); - tb->setColour (TextButton::buttonOnColourId, Colours::blueviolet.brighter()); - - tb->setBounds (20 + i * 55, 260, 55, 24); - tb->setConnectedEdges (((i != 0) ? Button::ConnectedOnLeft : 0) - | ((i != 3) ? Button::ConnectedOnRight : 0)); - - if (i == 0) - tb->setToggleState (true, false); - } - - return page; -} - -//============================================================================== -class ButtonsPage : public Component, - public ButtonListener -{ -public: - ButtonsPage (ButtonListener* buttonListener) - { - //============================================================================== - // create some drawables to use for our drawable buttons... - DrawablePath normal, over; - - Path p; - p.addStar (0.0f, 0.0f, 5, 20.0f, 50.0f, 0.2f); - normal.setPath (p); - normal.setSolidFill (Colours::red); - - p.clear(); - p.addStar (0.0f, 0.0f, 7, 30.0f, 50.0f, 0.0f); - over.setPath (p); - over.setSolidFill (Colours::pink); - over.setOutline (5.0f, Colours::black); - - DrawableImage down; - down.setImage (ImageCache::getFromMemory (BinaryData::juce_png, BinaryData::juce_pngSize), true); - down.setOverlayColour (Colours::black.withAlpha (0.3f)); - - //============================================================================== - // create an image-above-text button from these drawables.. - DrawableButton* db = new DrawableButton (T("Button 1"), DrawableButton::ImageAboveTextLabel); - db->setImages (&normal, &over, &down); - - addAndMakeVisible (db); - db->setBounds (10, 30, 80, 80); - db->setTooltip (T("this is a DrawableButton with a label")); - - //============================================================================== - // create an image-only button from these drawables.. - db = new DrawableButton (T("Button 2"), DrawableButton::ImageFitted); - db->setImages (&normal, &over, &down); - db->setClickingTogglesState (true); - - addAndMakeVisible (db); - db->setBounds (90, 30, 80, 80); - db->setTooltip (T("this is an image-only DrawableButton")); - db->addButtonListener (buttonListener); - - //============================================================================== - // create an image-on-button-shape button from the same drawables.. - db = new DrawableButton (T("Button 3"), DrawableButton::ImageOnButtonBackground); - db->setImages (&normal, 0, 0); - - addAndMakeVisible (db); - db->setBounds (200, 30, 110, 25); - db->setTooltip (T("this is a DrawableButton on a standard button background")); - - //============================================================================== - db = new DrawableButton (T("Button 4"), DrawableButton::ImageOnButtonBackground); - db->setImages (&normal, &over, &down); - db->setClickingTogglesState (true); - db->setBackgroundColours (Colours::white, Colours::yellow); - - addAndMakeVisible (db); - db->setBounds (200, 70, 50, 50); - db->setTooltip (T("this is a DrawableButton on a standard button background")); - db->addButtonListener (buttonListener); - - //============================================================================== - HyperlinkButton* hyperlink - = new HyperlinkButton (T("this is a HyperlinkButton"), - URL (T("http://www.rawmaterialsoftware.com/juce"))); - - hyperlink->setBounds (10, 130, 200, 24); - addAndMakeVisible (hyperlink); - - //============================================================================== - ImageButton* imageButton = new ImageButton (T("imagebutton")); - addAndMakeVisible (imageButton); - - Image* juceImage = ImageCache::getFromMemory (BinaryData::juce_png, BinaryData::juce_pngSize); - ImageCache::incReferenceCount (juceImage); - ImageCache::incReferenceCount (juceImage); - - imageButton->setImages (true, true, true, - juceImage, 0.7f, Colours::transparentBlack, - juceImage, 1.0f, Colours::transparentBlack, - juceImage, 1.0f, Colours::pink.withAlpha (0.8f), - 0.5f); - - imageButton->setTopLeftPosition (10, 160); - imageButton->setTooltip (T("image button - showing alpha-channel hit-testing and colour overlay when clicked")); - - //============================================================================== - ColourChangeButton* colourChangeButton = new ColourChangeButton(); - addAndMakeVisible (colourChangeButton); - colourChangeButton->setTopLeftPosition (350, 30); - - //============================================================================== - animateButton = new TextButton (T("click to animate...")); - addAndMakeVisible (animateButton); - animateButton->changeWidthToFitText (24); - animateButton->setTopLeftPosition (350, 70); - animateButton->addButtonListener (this); - } - - ~ButtonsPage() - { - deleteAllChildren(); - } - - void buttonClicked (Button*) - { - for (int i = getNumChildComponents(); --i >= 0;) - { - if (getChildComponent (i) != animateButton) - { - animator.animateComponent (getChildComponent (i), - Rectangle (Random::getSystemRandom().nextInt (getWidth() / 2), - Random::getSystemRandom().nextInt (getHeight() / 2), - 60 + Random::getSystemRandom().nextInt (getWidth() / 3), - 16 + Random::getSystemRandom().nextInt (getHeight() / 6)), - 500 + Random::getSystemRandom().nextInt (2000), - Random::getSystemRandom().nextDouble(), - Random::getSystemRandom().nextDouble()); - } - } - } - -private: - TextButton* animateButton; - ComponentAnimator animator; -}; - - -//============================================================================== -static Component* createMiscPage() -{ - DemoPageComp* page = new DemoPageComp(); - - TextEditor* textEditor = new TextEditor(); - page->addAndMakeVisible (textEditor); - textEditor->setBounds (10, 25, 200, 24); - textEditor->setText (T("single-line text box")); - - textEditor = new TextEditor (T("password"), (tchar) 0x2022); - page->addAndMakeVisible (textEditor); - textEditor->setBounds (10, 55, 200, 24); - textEditor->setText (T("password")); - - //============================================================================== - ComboBox* comboBox = new ComboBox (T("combo")); - page->addAndMakeVisible (comboBox); - comboBox->setBounds (300, 25, 200, 24); - comboBox->setEditableText (true); - comboBox->setJustificationType (Justification::centred); - - int i; - for (i = 1; i < 100; ++i) - comboBox->addItem (T("combo box item ") + String (i), i); - - comboBox->setSelectedId (1); - - DragOntoDesktopDemoComp* d = new DragOntoDesktopDemoComp (page); - page->addAndMakeVisible (d); - d->setBounds (20, 100, 200, 80); - - return page; -} - -//============================================================================== -class ToolbarDemoComp : public Component, - public SliderListener, - public ButtonListener -{ -public: - ToolbarDemoComp (ApplicationCommandManager* commandManager) - { - // Create and add the toolbar... - addAndMakeVisible (toolbar = new Toolbar()); - - // And use our item factory to add a set of default icons to it... - toolbar->addDefaultItems (factory); - - // Now we'll just create the other sliders and buttons on the demo page, which adjust - // the toolbar's properties... - Label* info = new Label (String::empty, - "As well as showing off toolbars, this demo illustrates how to store " - "a set of SVG files in a Zip file, embed that in your application, and read " - "them back in at runtime.\n\nThe icon images here are taken from the open-source " - "Tango icon project."); - - addAndMakeVisible (info); - info->setJustificationType (Justification::topLeft); - info->setBounds (80, 80, 450, 100); - info->setInterceptsMouseClicks (false, false); - - addAndMakeVisible (depthSlider = new Slider (T("toolbar depth:"))); - depthSlider->setRange (10.0, 200.0, 1.0); - depthSlider->setValue (50, false); - depthSlider->setSliderStyle (Slider::LinearHorizontal); - depthSlider->setTextBoxStyle (Slider::TextBoxLeft, false, 80, 20); - depthSlider->addListener (this); - depthSlider->setBounds (80, 210, 300, 22); - (new Label (depthSlider->getName(), depthSlider->getName()))->attachToComponent (depthSlider, false); - - addAndMakeVisible (orientationButton = new TextButton (T("vertical/horizontal"))); - orientationButton->addButtonListener (this); - orientationButton->changeWidthToFitText (22); - orientationButton->setTopLeftPosition (depthSlider->getX(), depthSlider->getBottom() + 20); - - addAndMakeVisible (customiseButton = new TextButton (T("customise..."))); - customiseButton->addButtonListener (this); - customiseButton->changeWidthToFitText (22); - customiseButton->setTopLeftPosition (orientationButton->getRight() + 20, orientationButton->getY()); - } - - ~ToolbarDemoComp() - { - deleteAllChildren(); - } - - void resized() - { - if (toolbar->isVertical()) - toolbar->setBounds (0, 0, (int) depthSlider->getValue(), getHeight()); - else - toolbar->setBounds (0, 0, getWidth(), (int) depthSlider->getValue()); - } - - void sliderValueChanged (Slider* slider) - { - resized(); - } - - void buttonClicked (Button* button) - { - if (button == orientationButton) - { - toolbar->setVertical (! toolbar->isVertical()); - resized(); - } - else if (button == customiseButton) - { - toolbar->showCustomisationDialog (factory); - } - } - -private: - Toolbar* toolbar; - Slider* depthSlider; - TextButton* orientationButton; - TextButton* customiseButton; - - //============================================================================== - class DemoToolbarItemFactory : public ToolbarItemFactory - { - public: - DemoToolbarItemFactory() {} - ~DemoToolbarItemFactory() {} - - //============================================================================== - // Each type of item a toolbar can contain must be given a unique ID. These - // are the ones we'll use in this demo. - enum DemoToolbarItemIds - { - doc_new = 1, - doc_open = 2, - doc_save = 3, - doc_saveAs = 4, - edit_copy = 5, - edit_cut = 6, - edit_paste = 7, - juceLogoButton = 8, - customComboBox = 9 - }; - - void getAllToolbarItemIds (Array & ids) - { - // This returns the complete list of all item IDs that are allowed to - // go in our toolbar. Any items you might want to add must be listed here. The - // order in which they are listed will be used by the toolbar customisation panel. - - ids.add (doc_new); - ids.add (doc_open); - ids.add (doc_save); - ids.add (doc_saveAs); - ids.add (edit_copy); - ids.add (edit_cut); - ids.add (edit_paste); - ids.add (juceLogoButton); - ids.add (customComboBox); - - // If you're going to use separators, then they must also be added explicitly - // to the list. - ids.add (separatorBarId); - ids.add (spacerId); - ids.add (flexibleSpacerId); - } - - void getDefaultItemSet (Array & ids) - { - // This returns an ordered list of the set of items that make up a - // toolbar's default set. Not all items need to be on this list, and - // items can appear multiple times (e.g. the separators used here). - ids.add (doc_new); - ids.add (doc_open); - ids.add (doc_save); - ids.add (doc_saveAs); - ids.add (spacerId); - ids.add (separatorBarId); - ids.add (edit_copy); - ids.add (edit_cut); - ids.add (edit_paste); - ids.add (separatorBarId); - ids.add (flexibleSpacerId); - ids.add (customComboBox); - ids.add (flexibleSpacerId); - ids.add (separatorBarId); - ids.add (juceLogoButton); - } - - ToolbarItemComponent* createItem (const int itemId) - { - switch (itemId) - { - case doc_new: - return createButtonFromZipFileSVG (itemId, T("new"), T("document-new.svg")); - - case doc_open: - return createButtonFromZipFileSVG (itemId, T("open"), T("document-open.svg")); - - case doc_save: - return createButtonFromZipFileSVG (itemId, T("save"), T("document-save.svg")); - - case doc_saveAs: - return createButtonFromZipFileSVG (itemId, T("save as"), T("document-save-as.svg")); - - case edit_copy: - return createButtonFromZipFileSVG (itemId, T("copy"), T("edit-copy.svg")); - - case edit_cut: - return createButtonFromZipFileSVG (itemId, T("cut"), T("edit-cut.svg")); - - case edit_paste: - return createButtonFromZipFileSVG (itemId, T("paste"), T("edit-paste.svg")); - - case juceLogoButton: - return new ToolbarButton (itemId, T("juce!"), Drawable::createFromImageData (BinaryData::juce_png, BinaryData::juce_pngSize), 0); - - case customComboBox: - return new CustomToolbarComboBox (itemId); - - default: - break; - } - - return 0; - } - - private: - StringArray iconNames; - OwnedArray iconsFromZipFile; - - // This is a little utility to create a button with one of the SVG images in - // our embedded ZIP file "icons.zip" - ToolbarButton* createButtonFromZipFileSVG (const int itemId, const String& text, const String& filename) - { - if (iconsFromZipFile.size() == 0) - { - // If we've not already done so, load all the images from the zip file.. - MemoryInputStream iconsFileStream (BinaryData::icons_zip, BinaryData::icons_zipSize, false); - ZipFile icons (&iconsFileStream, false); - - for (int i = 0; i < icons.getNumEntries(); ++i) - { - InputStream* svgFileStream = icons.createStreamForEntry (i); - - if (svgFileStream != 0) - { - iconNames.add (icons.getEntry(i)->filename); - iconsFromZipFile.add (Drawable::createFromImageDataStream (*svgFileStream)); - - delete svgFileStream; - } - } - } - - Drawable* image = iconsFromZipFile [iconNames.indexOf (filename)]->createCopy(); - return new ToolbarButton (itemId, text, image, 0); - - return 0; - } - - // Demonstrates how to put a custom component into a toolbar - this one contains - // a ComboBox. - class CustomToolbarComboBox : public ToolbarItemComponent - { - public: - CustomToolbarComboBox (const int toolbarItemId) - : ToolbarItemComponent (toolbarItemId, T("Custom Toolbar Item"), false) - { - addAndMakeVisible (comboBox = new ComboBox (T("demo toolbar combo box"))); - - for (int i = 1; i < 20; ++i) - comboBox->addItem (T("Toolbar ComboBox item ") + String (i), i); - - comboBox->setSelectedId (1); - comboBox->setEditableText (true); - } - - ~CustomToolbarComboBox() - { - delete comboBox; - } - - bool getToolbarItemSizes (int toolbarDepth, - bool isToolbarVertical, - int& preferredSize, int& minSize, int& maxSize) - { - if (isToolbarVertical) - return false; - - preferredSize = 250; - minSize = 80; - maxSize = 300; - return true; - } - - void paintButtonArea (Graphics&, int, int, bool, bool) - { - } - - void contentAreaChanged (const Rectangle& contentArea) - { - comboBox->setSize (contentArea.getWidth() - 2, - jmin (contentArea.getHeight() - 2, 22)); - - comboBox->setCentrePosition (contentArea.getCentreX(), contentArea.getCentreY()); - } - - private: - ComboBox* comboBox; - }; - }; - - DemoToolbarItemFactory factory; -}; - -//============================================================================== -class DemoTabbedComponent : public TabbedComponent, - public ButtonListener -{ -public: - DemoTabbedComponent (ApplicationCommandManager* commandManager) - : TabbedComponent (TabbedButtonBar::TabsAtTop) - { - addTab (T("sliders"), getRandomBrightColour(), createSlidersPage(), true); - addTab (T("toolbars"), getRandomBrightColour(), new ToolbarDemoComp (commandManager), true); - addTab (T("buttons"), getRandomBrightColour(), new ButtonsPage (this), true); - addTab (T("radio buttons"), getRandomBrightColour(), createRadioButtonPage(), true); - addTab (T("misc widgets"), getRandomBrightColour(), createMiscPage(), true); - } - - ~DemoTabbedComponent() - { - } - - void buttonClicked (Button* button) - { - BubbleMessageComponent* bmc = new BubbleMessageComponent(); - - if (Desktop::canUseSemiTransparentWindows()) - { - bmc->setAlwaysOnTop (true); - bmc->addToDesktop (0); - } - else - { - addChildComponent (bmc); - } - - bmc->showAt (button, T("This is a demo of the BubbleMessageComponent, which lets you pop up a message pointing at a component or somewhere on the screen.\n\nThe message bubbles will disappear after a timeout period, or when the mouse is clicked."), - 2000, true, true); - } - - static const Colour getRandomBrightColour() - { - return Colour (Random::getSystemRandom().nextFloat(), 0.1f, 0.97f, 1.0f); - } -}; - - -//============================================================================== -class DemoBackgroundThread : public ThreadWithProgressWindow -{ -public: - DemoBackgroundThread() - : ThreadWithProgressWindow (T("busy doing some important things..."), - true, - true) - { - setStatusMessage (T("Getting ready...")); - } - - ~DemoBackgroundThread() - { - } - - void run() - { - setProgress (-1.0); // setting a value beyond the range 0 -> 1 will show a spinning bar.. - setStatusMessage (T("Preparing to do some stuff...")); - wait (2000); - - const int thingsToDo = 10; - - for (int i = 0; i < thingsToDo; ++i) - { - // must check this as often as possible, because this is - // how we know if the user's pressed 'cancel' - if (threadShouldExit()) - return; - - // this will update the progress bar on the dialog box - setProgress (i / (double) thingsToDo); - - setStatusMessage (String (thingsToDo - i) + T(" things left to do...")); - - wait (500); - } - - setProgress (-1.0); // setting a value beyond the range 0 -> 1 will show a spinning bar.. - setStatusMessage (T("Finishing off the last few bits and pieces!")); - wait (2000); - } -}; - -//============================================================================== -/** A DialogWindow containing a ColourSelector component */ -class ColourSelectorDialogWindow : public DialogWindow -{ -public: - ColourSelectorDialogWindow() - : DialogWindow (T("Colour selector demo"), - Colours::lightgrey, - true) - { - setContentComponent (new ColourSelector()); - centreWithSize (400, 400); - setResizable (true, true); - } - - ~ColourSelectorDialogWindow() - { - } - - void closeButtonPressed() - { - // we expect this component to be run within a modal loop, so when the close - // button is clicked, we can make it invisible to cause the loop to exit and the - // calling code will delete this object. - setVisible (false); - } -}; - -#if JUCE_MAC - -//============================================================================== -/** This pops open a dialog box and waits for you to press keys on your Apple Remote, - which it describes in the box. -*/ -class AppleRemoteTestWindow : public AlertWindow, - public AppleRemoteDevice -{ -public: - AppleRemoteTestWindow() - : AlertWindow ("Apple Remote Control Test!", - "If you've got an Apple Remote, press some buttons now...", - AlertWindow::NoIcon) - { - addButton (T("done"), 0); - - // (To open the device in non-exclusive mode, pass 'false' in here).. - if (! start (true)) - setMessage ("Couldn't open the remote control device!"); - } - - ~AppleRemoteTestWindow() - { - stop(); - } - - void buttonPressed (const ButtonType buttonId, const bool isDown) - { - String desc; - - switch (buttonId) - { - case menuButton: - desc = "menu button (short)"; - break; - case playButton: - desc = "play button"; - break; - case plusButton: - desc = "plus button"; - break; - case minusButton: - desc = "minus button"; - break; - case rightButton: - desc = "right button (short)"; - break; - case leftButton: - desc = "left button (short)"; - break; - case rightButton_Long: - desc = "right button (long)"; - break; - case leftButton_Long: - desc = "left button (long)"; - break; - case menuButton_Long: - desc = "menu button (long)"; - break; - case playButtonSleepMode: - desc = "play (sleep mode)"; - break; - case switched: - desc = "remote switched"; - break; - } - - if (isDown) - desc << " -- [down]"; - else - desc << " -- [up]"; - - setMessage (desc); - } -}; - -#endif - -//============================================================================== -const int numGroups = 4; - -class WidgetsDemo : public Component, - public ButtonListener -{ - TextButton* menuButton; - ToggleButton* enableButton; - - DemoTabbedComponent* tabs; - -public: - //============================================================================== - WidgetsDemo (ApplicationCommandManager* commandManager) - { - setName (T("Widgets")); - - addAndMakeVisible (tabs = new DemoTabbedComponent (commandManager)); - - //============================================================================== - menuButton = new TextButton (T("click for a popup menu.."), - T("click for a demo of the different types of item you can put into a popup menu...")); - - addAndMakeVisible (menuButton); - menuButton->setBounds (10, 10, 200, 24); - menuButton->addButtonListener (this); - menuButton->setTriggeredOnMouseDown (true); // because this button pops up a menu, this lets us - // hold down the button and drag straight onto the menu - - //============================================================================== - enableButton = new ToggleButton (T("enable/disable components")); - addAndMakeVisible (enableButton); - enableButton->setBounds (230, 10, 180, 24); - enableButton->setTooltip (T("toggle button")); - enableButton->setToggleState (true, false); - enableButton->addButtonListener (this); - } - - ~WidgetsDemo() - { - deleteAllChildren(); - } - - void resized() - { - tabs->setBounds (10, 40, getWidth() - 20, getHeight() - 50); - } - - //============================================================================== - void buttonClicked (Button* button) - { - if (button == enableButton) - { - const bool enabled = enableButton->getToggleState(); - - menuButton->setEnabled (enabled); - tabs->setEnabled (enabled); - } - else if (button == menuButton) - { - PopupMenu m; - m.addItem (1, T("Normal item")); - m.addItem (2, T("Disabled item"), false); - m.addItem (3, T("Ticked item"), true, true); - m.addColouredItem (4, T("Coloured item"), Colours::green); - m.addSeparator(); - m.addCustomItem (5, new CustomMenuComponent()); - - m.addSeparator(); - - PopupMenu tabsMenu; - tabsMenu.addItem (1001, T("Show tabs at the top"), true, tabs->getOrientation() == TabbedButtonBar::TabsAtTop); - tabsMenu.addItem (1002, T("Show tabs at the bottom"), true, tabs->getOrientation() == TabbedButtonBar::TabsAtBottom); - tabsMenu.addItem (1003, T("Show tabs at the left"), true, tabs->getOrientation() == TabbedButtonBar::TabsAtLeft); - tabsMenu.addItem (1004, T("Show tabs at the right"), true, tabs->getOrientation() == TabbedButtonBar::TabsAtRight); - m.addSubMenu (T("Tab position"), tabsMenu); - - m.addSeparator(); - - PopupMenu dialogMenu; - dialogMenu.addItem (100, T("Show a plain alert-window...")); - dialogMenu.addItem (101, T("Show an alert-window with a 'warning' icon...")); - dialogMenu.addItem (102, T("Show an alert-window with an 'info' icon...")); - dialogMenu.addItem (103, T("Show an alert-window with a 'question' icon...")); - - dialogMenu.addSeparator(); - - dialogMenu.addItem (110, T("Show an ok/cancel alert-window...")); - - dialogMenu.addSeparator(); - - dialogMenu.addItem (111, T("Show an alert-window with some extra components...")); - - dialogMenu.addSeparator(); - - dialogMenu.addItem (112, T("Show a ThreadWithProgressWindow demo...")); - - m.addSubMenu (T("AlertWindow demonstrations"), dialogMenu); - - m.addSeparator(); - - m.addItem (120, T("Show a colour selector demo...")); - m.addSeparator(); - -#if JUCE_MAC - m.addItem (140, T("Run the Apple Remote Control test...")); - m.addSeparator(); -#endif - - PopupMenu nativeFileChoosers; - nativeFileChoosers.addItem (121, T("'Load' file browser...")); - nativeFileChoosers.addItem (124, T("'Load' file browser with an image file preview...")); - nativeFileChoosers.addItem (122, T("'Save' file browser...")); - nativeFileChoosers.addItem (123, T("'Choose directory' file browser...")); - - PopupMenu juceFileChoosers; - juceFileChoosers.addItem (131, T("'Load' file browser...")); - juceFileChoosers.addItem (134, T("'Load' file browser with an image file preview...")); - juceFileChoosers.addItem (132, T("'Save' file browser...")); - juceFileChoosers.addItem (133, T("'Choose directory' file browser...")); - - PopupMenu fileChoosers; - fileChoosers.addSubMenu (T("Operating system dialogs"), nativeFileChoosers); - fileChoosers.addSubMenu (T("Juce dialogs"), juceFileChoosers); - - m.addSubMenu (T("File chooser dialogs"), fileChoosers); - - int result = m.showAt (menuButton); - - if (result != 0) - { - // user chose something from the menu.. - - if (result >= 100 && result < 105) - { - AlertWindow::AlertIconType icon = AlertWindow::NoIcon; - - if (result == 101) - icon = AlertWindow::WarningIcon; - else if (result == 102) - icon = AlertWindow::InfoIcon; - else if (result == 103) - icon = AlertWindow::QuestionIcon; - - AlertWindow::showMessageBox (icon, - T("This is an AlertWindow"), - T("And this is the AlertWindow's message. Blah blah blah blah blah blah blah blah blah blah blah blah blah."), - T("ok")); - } - else if (result == 110) - { - bool userPickedOk - = AlertWindow::showOkCancelBox (AlertWindow::QuestionIcon, - T("This is an ok/cancel AlertWindow"), - T("And this is the AlertWindow's message. Blah blah blah blah blah blah blah blah blah blah blah blah blah.")); - } - else if (result == 111) - { - AlertWindow w (T("AlertWindow demo.."), - T("This AlertWindow has a couple of extra components added to show how to add drop-down lists and text entry boxes."), - AlertWindow::QuestionIcon); - - w.addTextEditor (T("text"), T("enter some text here"), T("text field:")); - - StringArray options; - options.add (T("option 1")); - options.add (T("option 2")); - options.add (T("option 3")); - options.add (T("option 4")); - w.addComboBox (T("option"), options, T("some options")); - - w.addButton (T("ok"), 1, KeyPress (KeyPress::returnKey, 0, 0)); - w.addButton (T("cancel"), 0, KeyPress (KeyPress::escapeKey, 0, 0)); - - if (w.runModalLoop() != 0) // is they picked 'ok' - { - // this is the item they chose in the drop-down list.. - const int optionIndexChosen = w.getComboBoxComponent (T("option"))->getSelectedItemIndex(); - - // this is the text they entered.. - String text = w.getTextEditorContents (T("text")); - - } - } - else if (result == 112) - { - DemoBackgroundThread demoThread; - - if (demoThread.runThread()) - { - // thread finished normally.. - AlertWindow::showMessageBox (AlertWindow::WarningIcon, - T("Progress window"), - T("Thread finished ok!")); - } - else - { - // user pressed the cancel button.. - AlertWindow::showMessageBox (AlertWindow::WarningIcon, - T("Progress window"), - T("You pressed cancel!")); - } - - } - else if (result == 120) - { - ColourSelectorDialogWindow colourDialog; - - // this will run an event loop until the dialog's closeButtonPressed() - // method causes the loop to exit. - colourDialog.runModalLoop(); - } - else if (result == 140) - { -#if JUCE_MAC - AppleRemoteTestWindow test; - test.runModalLoop(); -#endif - } - else if (result >= 121 && result < 139) - { - const bool useNativeVersion = result < 130; - if (result > 130) - result -= 10; - - if (result == 121) - { - FileChooser fc (T("Choose a file to open..."), - File::getCurrentWorkingDirectory(), - T("*"), - useNativeVersion); - - if (fc.browseForFileToOpen()) - { - File chosenFile = fc.getResult(); - - AlertWindow::showMessageBox (AlertWindow::InfoIcon, - T("File Chooser..."), - T("You picked: ") + chosenFile.getFullPathName()); - } - } - else if (result == 124) - { - ImagePreviewComponent imagePreview; - imagePreview.setSize (200, 200); - - FileChooser fc (T("Choose an image to open..."), - File::getCurrentWorkingDirectory(), - T("*.jpg;*.jpeg;*.png;*.gif"), - useNativeVersion); - - if (fc.browseForFileToOpen (&imagePreview)) - { - File chosenFile = fc.getResult(); - - AlertWindow::showMessageBox (AlertWindow::InfoIcon, - T("File Chooser..."), - T("You picked: ") + chosenFile.getFullPathName()); - } - } - else if (result == 122) - { - FileChooser fc (T("Choose a file to save..."), - File::getCurrentWorkingDirectory(), - T("*"), - useNativeVersion); - - if (fc.browseForFileToSave (true)) - { - File chosenFile = fc.getResult(); - - AlertWindow::showMessageBox (AlertWindow::InfoIcon, - T("File Chooser..."), - T("You picked: ") + chosenFile.getFullPathName()); - } - } - else if (result == 123) - { - FileChooser fc (T("Choose a directory..."), - File::getCurrentWorkingDirectory(), - T("*"), - useNativeVersion); - - if (fc.browseForDirectory()) - { - File chosenDirectory = fc.getResult(); - - AlertWindow::showMessageBox (AlertWindow::InfoIcon, - T("File Chooser..."), - T("You picked: ") + chosenDirectory.getFullPathName()); - } - } - } - else if (result == 1001) - { - tabs->setOrientation (TabbedButtonBar::TabsAtTop); - } - else if (result == 1002) - { - tabs->setOrientation (TabbedButtonBar::TabsAtBottom); - } - else if (result == 1003) - { - tabs->setOrientation (TabbedButtonBar::TabsAtLeft); - } - else if (result == 1004) - { - tabs->setOrientation (TabbedButtonBar::TabsAtRight); - } - } - } - } -}; - - -//============================================================================== -Component* createWidgetsDemo (ApplicationCommandManager* commandManager) -{ - return new WidgetsDemo (commandManager); -} diff --git a/extras/juce demo/src/demos/AudioDemo.cpp b/extras/juce demo/src/demos/AudioDemo.cpp deleted file mode 100644 index 36d827cf07..0000000000 --- a/extras/juce demo/src/demos/AudioDemo.cpp +++ /dev/null @@ -1,637 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE library - "Jules' Utility Class Extensions" - Copyright 2004-9 by Raw Material Software Ltd. - - ------------------------------------------------------------------------------ - - JUCE can be redistributed and/or modified under the terms of the GNU General - Public License (Version 2), as published by the Free Software Foundation. - A copy of the license is included in the JUCE distribution, or can be found - online at www.gnu.org/licenses. - - JUCE is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - ------------------------------------------------------------------------------ - - To release a closed-source product which uses JUCE, commercial licenses are - available: visit www.rawmaterialsoftware.com/juce for more information. - - ============================================================================== -*/ - -#include "../jucedemo_headers.h" - - -//============================================================================== -/** Our demo synth only has one type of sound, and it's very basic.. -*/ -class SineWaveSound : public SynthesiserSound -{ -public: - SineWaveSound (const BitArray& midiNotes_) - : midiNotes (midiNotes_) - { - } - - bool appliesToNote (const int midiNoteNumber) - { - return midiNotes [midiNoteNumber]; - } - - bool appliesToChannel (const int midiChannel) { return true; } - -private: - // this will contain the notes that this sound is attached to. - BitArray midiNotes; -}; - - -//============================================================================== -/** Our demo synth voice just plays a sine wave.. -*/ -class SineWaveVoice : public SynthesiserVoice -{ -public: - SineWaveVoice() - : angleDelta (0.0), - tailOff (0.0) - { - } - - bool canPlaySound (SynthesiserSound* sound) - { - return dynamic_cast (sound) != 0; - } - - void startNote (const int midiNoteNumber, const float velocity, - SynthesiserSound* sound, const int currentPitchWheelPosition) - { - currentAngle = 0.0; - level = velocity * 0.15; - tailOff = 0.0; - - double cyclesPerSecond = MidiMessage::getMidiNoteInHertz (midiNoteNumber); - double cyclesPerSample = cyclesPerSecond / getSampleRate(); - - angleDelta = cyclesPerSample * 2.0 * double_Pi; - } - - void stopNote (const bool allowTailOff) - { - if (allowTailOff) - { - // start a tail-off by setting this flag. The render callback will pick up on - // this and do a fade out, calling clearCurrentNote() when it's finished. - - if (tailOff == 0.0) // we only need to begin a tail-off if it's not already doing so - the - // stopNote method could be called more than once. - tailOff = 1.0; - } - else - { - // we're being told to stop playing immediately, so reset everything.. - - clearCurrentNote(); - angleDelta = 0.0; - } - } - - void pitchWheelMoved (const int newValue) - { - // can't be bothered implementing this for the demo! - } - - void controllerMoved (const int controllerNumber, const int newValue) - { - // not interested in controllers in this case. - } - - void renderNextBlock (AudioSampleBuffer& outputBuffer, int startSample, int numSamples) - { - if (angleDelta != 0.0) - { - if (tailOff > 0) - { - while (--numSamples >= 0) - { - const float currentSample = (float) (sin (currentAngle) * level * tailOff); - - for (int i = outputBuffer.getNumChannels(); --i >= 0;) - *outputBuffer.getSampleData (i, startSample) += currentSample; - - currentAngle += angleDelta; - ++startSample; - - tailOff *= 0.99; - - if (tailOff <= 0.005) - { - clearCurrentNote(); - - angleDelta = 0.0; - break; - } - } - } - else - { - while (--numSamples >= 0) - { - const float currentSample = (float) (sin (currentAngle) * level); - - for (int i = outputBuffer.getNumChannels(); --i >= 0;) - *outputBuffer.getSampleData (i, startSample) += currentSample; - - currentAngle += angleDelta; - ++startSample; - } - } - } - } - -private: - double currentAngle, angleDelta, level, tailOff; -}; - -//============================================================================== -/** This is an audio source that streams the output of our demo synth. -*/ -class SynthAudioSource : public AudioSource -{ -public: - //============================================================================== - // this collects real-time midi messages from the midi input device, and - // turns them into blocks that we can process in our audio callback - MidiMessageCollector midiCollector; - - // this represents the state of which keys on our on-screen keyboard are held - // down. When the mouse is clicked on the keyboard component, this object also - // generates midi messages for this, which we can pass on to our synth. - MidiKeyboardState keyboardState; - - // the synth itself! - Synthesiser synth; - - //============================================================================== - SynthAudioSource() - { - // we'll be mixing two different types of sound, so here we'll create two - // sets of note maps, putting each sound on a different octave of the keyboard: - BitArray sinewaveNotes, samplerNotes; - - int i; - for (i = 0; i < 128; ++i) - { - if (((i / 12) & 1) != 0) - sinewaveNotes.setBit (i); - else - samplerNotes.setBit (i); - } - - // add a wave sound, which will get applied to some of the notes.. - synth.addSound (new SineWaveSound (sinewaveNotes)); - - // give our synth a few voices that can play the wave sound.. - for (i = 4; --i >= 0;) - synth.addVoice (new SineWaveVoice()); - - WavAudioFormat wavFormat; - AudioFormatReader* audioReader - = wavFormat.createReaderFor (new MemoryInputStream (BinaryData::cello_wav, - BinaryData::cello_wavSize, - false), - true); - - synth.addSound (new SamplerSound (T("demo sound"), - *audioReader, - samplerNotes, - 74, // root midi note - 0.1, // attack time - 0.1, // release time - 10.0 // maximum sample length - )); - - delete audioReader; - - // and give the synth some sampler voices to play the sampled sound.. - for (i = 4; --i >= 0;) - synth.addVoice (new SamplerVoice()); - } - - void prepareToPlay (int samplesPerBlockExpected, - double sampleRate) - { - midiCollector.reset (sampleRate); - - synth.setCurrentPlaybackSampleRate (sampleRate); - } - - void releaseResources() - { - } - - void getNextAudioBlock (const AudioSourceChannelInfo& bufferToFill) - { - // the synth always adds its output to the audio buffer, so we have to clear it - // first.. - bufferToFill.clearActiveBufferRegion(); - - // fill a midi buffer with incoming messages from the midi input. - MidiBuffer incomingMidi; - midiCollector.removeNextBlockOfMessages (incomingMidi, bufferToFill.numSamples); - - // pass these messages to the keyboard state so that it can update the component - // to show on-screen which keys are being pressed on the physical midi keyboard. - // This call will also add midi messages to the buffer which were generated by - // the mouse-clicking on the on-screen keyboard. - keyboardState.processNextMidiBuffer (incomingMidi, 0, bufferToFill.numSamples, true); - - // and now get the synth to process the midi events and generate its output. - synth.renderNextBlock (*bufferToFill.buffer, incomingMidi, 0, bufferToFill.numSamples); - } -}; - -//============================================================================== -class AudioInputWaveformDisplay : public Component, - public Timer, - public AudioIODeviceCallback -{ -public: - AudioInputWaveformDisplay() - { - bufferPos = 0; - bufferSize = 2048; - circularBuffer = (float*) juce_calloc (sizeof (float) * bufferSize); - currentInputLevel = 0.0f; - numSamplesIn = 0; - - setOpaque (true); - startTimer (1000 / 50); // repaint every 1/50 of a second - } - - ~AudioInputWaveformDisplay() - { - juce_free (circularBuffer); - } - - void paint (Graphics& g) - { - g.fillAll (Colours::black); - g.setColour (Colours::lightgreen); - - const float halfHeight = getHeight() * 0.5f; - - int bp = bufferPos; - - for (int x = getWidth(); --x >= 0;) - { - const int samplesAgo = getWidth() - x; - const float level = circularBuffer [(bp + bufferSize - samplesAgo) % bufferSize]; - - if (level > 0.01f) - g.drawLine ((float) x, halfHeight - halfHeight * level, - (float) x, halfHeight + halfHeight * level); - } - } - - void timerCallback() - { - repaint(); - } - - void addSample (const float sample) - { - currentInputLevel += fabsf (sample); - - const int samplesToAverage = 128; - - if (++numSamplesIn > samplesToAverage) - { - circularBuffer [bufferPos++ % bufferSize] = currentInputLevel / samplesToAverage; - - numSamplesIn = 0; - currentInputLevel = 0.0f; - } - } - - void audioDeviceIOCallback (const float** inputChannelData, - int totalNumInputChannels, - float** outputChannelData, - int totalNumOutputChannels, - int numSamples) - { - for (int i = 0; i < totalNumInputChannels; ++i) - { - if (inputChannelData [i] != 0) - { - for (int j = 0; j < numSamples; ++j) - addSample (inputChannelData [i][j]); - - break; - } - } - } - - void audioDeviceAboutToStart (AudioIODevice*) - { - zeromem (circularBuffer, sizeof (float) * bufferSize); - } - - void audioDeviceStopped() - { - zeromem (circularBuffer, sizeof (float) * bufferSize); - } - -private: - float* circularBuffer; - float currentInputLevel; - int volatile bufferPos, bufferSize, numSamplesIn; -}; - - -//============================================================================== -class AudioDemo : public Component, - public FilenameComponentListener, - public ButtonListener, - public ChangeListener, - public AudioIODeviceCallback -{ - //============================================================================== - FilenameComponent* fileChooser; - TextButton* playButton; - TextButton* stopButton; - TextButton* audioSettingsButton; - - MidiKeyboardComponent* keyboardComponent; - AudioInputWaveformDisplay* waveformComponent; - - //============================================================================== - // this wraps the actual audio device - AudioDeviceManager audioDeviceManager; - - // this allows an audio source to be streamed to the IO device - AudioSourcePlayer audioSourcePlayer; - - // this controls the playback of a positionable audio stream, handling the - // starting/stopping and sample-rate conversion - AudioTransportSource transportSource; - - // this source contains our synth, and generates its output - SynthAudioSource synthSource; - - // this source is used to mix together the output from our synth source - // and wave player source - MixerAudioSource mixerSource; - - // this is the actual stream that's going to read from the audio file. - AudioFormatReaderSource* currentAudioFileSource; - - File currentFile; - -public: - //============================================================================== - AudioDemo() - { - setName (T("Audio")); - - currentAudioFileSource = 0; - - //============================================================================== - AudioFormatManager formatManager; - formatManager.registerBasicFormats(); - - addAndMakeVisible (fileChooser = new FilenameComponent (T("audiofile"), - File::nonexistent, - true, false, false, - formatManager.getWildcardForAllFormats(), - String::empty, - T("(choose a WAV or AIFF file to play)"))); - fileChooser->addListener (this); - fileChooser->setBrowseButtonText (T("browse")); - - addAndMakeVisible (playButton = new TextButton (T("play"), - T("click here to play the current audio file"))); - playButton->addButtonListener (this); - playButton->setColour (TextButton::buttonColourId, Colours::lightgreen); - playButton->setColour (TextButton::buttonOnColourId, Colours::lightgreen); - playButton->setConnectedEdges (Button::ConnectedOnRight); - - addAndMakeVisible (stopButton = new TextButton (T("stop"), - T("click here to play the current audio file"))); - stopButton->addButtonListener (this); - stopButton->setColour (TextButton::buttonColourId, Colours::red); - stopButton->setColour (TextButton::buttonOnColourId, Colours::red); - stopButton->setConnectedEdges (Button::ConnectedOnLeft); - - addAndMakeVisible (audioSettingsButton = new TextButton (T("show audio settings..."), - T("click here to change the audio device settings"))); - audioSettingsButton->addButtonListener (this); - - addAndMakeVisible (keyboardComponent = new MidiKeyboardComponent (synthSource.keyboardState, - MidiKeyboardComponent::horizontalKeyboard)); - - - addAndMakeVisible (waveformComponent = new AudioInputWaveformDisplay()); - - //============================================================================== - // register for start/stop messages from the transport source.. - transportSource.addChangeListener (this); - - // and initialise the device manager with no settings so that it picks a - // default device to use. - const String error (audioDeviceManager.initialise (1, /* number of input channels */ - 2, /* number of output channels */ - 0, /* no XML settings.. */ - true /* select default device on failure */)); - - if (error.isNotEmpty()) - { - AlertWindow::showMessageBox (AlertWindow::WarningIcon, - T("Audio Demo"), - T("Couldn't open an output device!\n\n") + error); - } - else - { - // add the two audio sources to our mixer.. - mixerSource.addInputSource (&transportSource, false); - mixerSource.addInputSource (&synthSource, false); - - // ..and connect the mixer to our source player. - audioSourcePlayer.setSource (&mixerSource); - - // start the IO device pulling its data from our callback.. - audioDeviceManager.addAudioCallback (this); - - // and we need to send midi input to our synth for processing - audioDeviceManager.addMidiInputCallback (String::empty, &synthSource.midiCollector); - } - } - - ~AudioDemo() - { - audioDeviceManager.removeMidiInputCallback (String::empty, &synthSource.midiCollector); - audioDeviceManager.removeAudioCallback (this); - - transportSource.removeChangeListener (this); - - transportSource.setSource (0); - deleteAndZero (currentAudioFileSource); - - audioSourcePlayer.setSource (0); - - deleteAllChildren(); - } - - //============================================================================== - void audioDeviceIOCallback (const float** inputChannelData, - int totalNumInputChannels, - float** outputChannelData, - int totalNumOutputChannels, - int numSamples) - { - // pass the audio callback on to our player source, and also the waveform display comp - audioSourcePlayer.audioDeviceIOCallback (inputChannelData, totalNumInputChannels, outputChannelData, totalNumOutputChannels, numSamples); - waveformComponent->audioDeviceIOCallback (inputChannelData, totalNumInputChannels, outputChannelData, totalNumOutputChannels, numSamples); - } - - void audioDeviceAboutToStart (AudioIODevice* device) - { - audioSourcePlayer.audioDeviceAboutToStart (device); - waveformComponent->audioDeviceAboutToStart (device); - } - - void audioDeviceStopped() - { - audioSourcePlayer.audioDeviceStopped(); - waveformComponent->audioDeviceStopped(); - } - - //============================================================================== - void paint (Graphics& g) - { - // print some text to explain what state we're in. - - g.setColour (Colours::black); - g.setFont (14.0f); - - String s; - - if (transportSource.isPlaying()) - s = T("playing"); - else - s = T("stopped"); - - if (currentAudioFileSource == 0) - s += T(" - no source file selected"); - else - s += T(" - file: \"") + currentFile.getFullPathName() + T("\""); - - g.drawText (s, 250, 50, getWidth() - 250, 24, Justification::centredLeft, true); - } - - void resized() - { - fileChooser->setBounds (10, 10, getWidth() - 20, 24); - playButton->setBounds (10, 50, 100, 24); - stopButton->setBounds (110, 50, 100, 24); - audioSettingsButton->setBounds (10, 120, 200, 24); - audioSettingsButton->changeWidthToFitText(); - keyboardComponent->setBounds (10, 200, getWidth() - 20, 60); - waveformComponent->setBounds (10, 300, 400, 80); - - updateButtons(); - } - - void updateButtons() - { - playButton->setEnabled (currentAudioFileSource != 0 && ! transportSource.isPlaying()); - stopButton->setEnabled (transportSource.isPlaying()); - repaint(); - } - - void buttonClicked (Button* button) - { - if (button == playButton) - { - transportSource.setPosition (0.0); - transportSource.start(); - } - else if (button == stopButton) - { - transportSource.stop(); - } - else if (button == audioSettingsButton) - { - // Create an AudioDeviceSelectorComponent which contains the audio choice widgets... - - AudioDeviceSelectorComponent audioSettingsComp (audioDeviceManager, - 0, 1, - 2, 2, - true, - false, - true, - false); - - // ...and show it in a DialogWindow... - audioSettingsComp.setSize (500, 450); - - DialogWindow::showModalDialog (T("Audio Settings"), - &audioSettingsComp, - this, - Colours::azure, - true); - } - } - - void filenameComponentChanged (FilenameComponent*) - { - // this is called when the user changes the filename in the file chooser box - - File audioFile (fileChooser->getCurrentFile()); - - // unload the previous file source and delete it.. - transportSource.stop(); - transportSource.setSource (0); - deleteAndZero (currentAudioFileSource); - - // create a new file source from the file.. - - // get a format manager and set it up with the basic types (wav and aiff). - AudioFormatManager formatManager; - formatManager.registerBasicFormats(); - - AudioFormatReader* reader = formatManager.createReaderFor (audioFile); - - if (reader != 0) - { - currentFile = audioFile; - - currentAudioFileSource = new AudioFormatReaderSource (reader, true); - - // ..and plug it into our transport source - transportSource.setSource (currentAudioFileSource, - 32768, // tells it to buffer this many samples ahead - reader->sampleRate); - } - - updateButtons(); - } - - void changeListenerCallback (void*) - { - // callback from the transport source to tell us that play has - // started or stopped, so update our buttons.. - updateButtons(); - } -}; - - -//============================================================================== -Component* createAudioDemo() -{ - return new AudioDemo(); -} diff --git a/extras/juce demo/src/demos/AudioDemoLatencyPage.cpp b/extras/juce demo/src/demos/AudioDemoLatencyPage.cpp new file mode 100644 index 0000000000..2b635ee936 --- /dev/null +++ b/extras/juce demo/src/demos/AudioDemoLatencyPage.cpp @@ -0,0 +1,371 @@ +/* + ============================================================================== + + This is an automatically generated file created by the Jucer! + + Creation date: 18 Sep 2009 5:32:11 pm + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Jucer version: 1.12 + + ------------------------------------------------------------------------------ + + The Jucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-6 by Raw Material Software ltd. + + ============================================================================== +*/ + +//[Headers] You can add your own extra header files here... +//[/Headers] + +#include "AudioDemoLatencyPage.h" + + +//[MiscUserDefs] You can add your own user definitions and misc code here... + +//============================================================================== +class LatencyTester : public AudioIODeviceCallback, + public Timer +{ +public: + LatencyTester (TextEditor* resultsBox_) + : testSound (1, 1), + recordedSound (1, 1), + playingSampleNum (0), + recordedSampleNum (-1), + sineWaveFrequency (300.0), + isRunning (false), + resultsBox (resultsBox_) + { + } + + ~LatencyTester() + { + } + + //============================================================================== + void beginTest() + { + startTimer (50); + + const ScopedLock sl (lock); + recordedSound.clear(); + playingSampleNum = recordedSampleNum = 0; + isRunning = true; + } + + void timerCallback() + { + if (isRunning && recordedSampleNum >= recordedSound.getNumSamples()) + { + isRunning = false; + stopTimer(); + + // Test has finished, so calculate the result.. + String message; + + const int latencySamples = calculateLatencySamples(); + + if (latencySamples >= 0) + { + message << "\n\nLatency test results:\n" + << latencySamples << " samples (" << (latencySamples * 1000.0 / sampleRate) << " milliseconds)\n" + << "The audio device reports an input latency of " + << deviceInputLatency << " samples, output latency of " + << deviceOutputLatency << " samples." + << "\nSo the corrected latency = " + << (latencySamples - deviceInputLatency - deviceOutputLatency) + << " samples (" << ((latencySamples - deviceInputLatency - deviceOutputLatency) * 1000.0 / sampleRate) + << " milliseconds)"; + } + else + { + message = "\n\nCouldn't detect the test signal!!\nMake sure there's no background noise that might be confusing it.."; + } + + resultsBox->setCaretPosition (INT_MAX); + resultsBox->insertTextAtCursor (message); + resultsBox->setCaretPosition (INT_MAX); + } + } + + //============================================================================== + void audioDeviceAboutToStart (AudioIODevice* device) + { + isRunning = false; + sampleRate = device->getCurrentSampleRate(); + deviceInputLatency = device->getInputLatencyInSamples(); + deviceOutputLatency = device->getOutputLatencyInSamples(); + playingSampleNum = recordedSampleNum = 0; + + createTestSound(); + + recordedSound.setSize (1, (int) (1.5 * sampleRate)); + recordedSound.clear(); + } + + void audioDeviceStopped() + { + } + + void audioDeviceIOCallback (const float** inputChannelData, + int numInputChannels, + float** outputChannelData, + int numOutputChannels, + int numSamples) + { + const ScopedLock sl (lock); + + if (isRunning) + { + float* const recordingBuffer = recordedSound.getSampleData (0, 0); + const float* const playBuffer = testSound.getSampleData (0, 0); + + for (int i = 0; i < numSamples; ++i) + { + if (recordedSampleNum < recordedSound.getNumSamples()) + { + float inputSamp = 0; + for (int j = numInputChannels; --j >= 0;) + if (inputChannelData[j] != 0) + inputSamp += inputChannelData[j][i]; + + recordingBuffer [recordedSampleNum] = inputSamp; + } + + ++recordedSampleNum; + + float outputSamp = (playingSampleNum < testSound.getNumSamples()) ? playBuffer [playingSampleNum] : 0; + + for (int j = numOutputChannels; --j >= 0;) + if (outputChannelData[j] != 0) + outputChannelData[j][i] = outputSamp; + + ++playingSampleNum; + } + } + else + { + // We need to clear the output buffers, in case they're full of junk.. + for (int i = 0; i < numOutputChannels; ++i) + if (outputChannelData[i] != 0) + zeromem (outputChannelData[i], sizeof (float) * numSamples); + } + } + +private: + AudioSampleBuffer testSound, recordedSound; + int playingSampleNum, recordedSampleNum; + CriticalSection lock; + const double sineWaveFrequency; + double sampleRate; + bool isRunning; + TextEditor* resultsBox; + int deviceInputLatency, deviceOutputLatency; + + void createTestSound() + { + const int length = ((int) sampleRate) / 4; + testSound.setSize (1, length); + testSound.clear(); + float* s = testSound.getSampleData (0, 0); + + const double scale = 2.0 * double_Pi / (sampleRate / sineWaveFrequency); + int n = 0; + + for (int i = 512; i < length; ++i) + s[i] = 0.95f * sinf ((float) (scale * n++)); + + testSound.applyGainRamp (0, length - length / 3, length / 3, 1.0f, 0.0f); + } + + int findStartSampleOfSineWave (const AudioSampleBuffer& buffer, const double sampleRate) const + { + const float* s = buffer.getSampleData (0, 0); + + const double damping = 0.995; + double avG = 0; + + for (int i = 0; i < buffer.getNumSamples(); i += 2) + { + const int num = jmin (512, buffer.getNumSamples() - i); + + const double g = calcGoertzel (s + i, num, sampleRate, sineWaveFrequency); + avG = avG * damping + (1.0 - damping) * g * g; + + if (avG > 3) + return i; + } + + return -1; + } + + static double calcGoertzel (const float* const samples, const int numSamples, + const double sampleRate, const double frequency) throw() + { + double n = 0, n1 = 0; + const double pi2freqOverRate = (2.0 * double_Pi) * frequency / sampleRate; + const double multiplier = 2.0 * cos (pi2freqOverRate); + + for (int i = 0; i < numSamples; ++i) + { + const double n2 = n1; + n1 = n; + n = multiplier * n1 - n2 + samples[i]; + } + + return n - n1 * exp (-pi2freqOverRate); + } + + int calculateLatencySamples() const + { + // Detect the sound in both our test sound and the recording of it, and measure the difference + // in their start times.. + const int referenceStart = findStartSampleOfSineWave (testSound, sampleRate); + jassert (referenceStart >= 0); + + const int recordedStart = findStartSampleOfSineWave (recordedSound, sampleRate); + + return (recordedStart < 0) ? -1 : (recordedStart - referenceStart); + } + + LatencyTester (const LatencyTester&); + const LatencyTester& operator= (const LatencyTester&); +}; + + +//[/MiscUserDefs] + +//============================================================================== +AudioDemoLatencyPage::AudioDemoLatencyPage (AudioDeviceManager& deviceManager_) + : deviceManager (deviceManager_), + liveAudioDisplayComp (0), + startTestButton (0), + testResultsBox (0) +{ + addAndMakeVisible (liveAudioDisplayComp = new LiveAudioInputDisplayComp()); + + addAndMakeVisible (startTestButton = new TextButton (String::empty)); + startTestButton->setButtonText (T("Test Latency")); + startTestButton->addButtonListener (this); + + addAndMakeVisible (testResultsBox = new TextEditor (String::empty)); + testResultsBox->setMultiLine (true); + testResultsBox->setReturnKeyStartsNewLine (true); + testResultsBox->setReadOnly (true); + testResultsBox->setScrollbarsShown (true); + testResultsBox->setCaretVisible (false); + testResultsBox->setPopupMenuEnabled (true); + testResultsBox->setColour (TextEditor::backgroundColourId, Colour (0x32ffffff)); + testResultsBox->setColour (TextEditor::outlineColourId, Colour (0x1c000000)); + testResultsBox->setColour (TextEditor::shadowColourId, Colour (0x16000000)); + testResultsBox->setText (T("Running this test measures the round-trip latency between the audio output and input devices you\'ve got selected.\n\nIt\'ll play a sound, then try to measure the time at which the sound arrives back at the audio input. Obviously for this to work you need to have your microphone somewhere near your speakers...")); + + + //[UserPreSize] + //[/UserPreSize] + + setSize (600, 400); + + //[Constructor] You can add your own custom stuff here.. + deviceManager.addAudioCallback (liveAudioDisplayComp); + + latencyTester = new LatencyTester (testResultsBox); + deviceManager.addAudioCallback (latencyTester); + //[/Constructor] +} + +AudioDemoLatencyPage::~AudioDemoLatencyPage() +{ + //[Destructor_pre]. You can add your own custom destruction code here.. + deviceManager.removeAudioCallback (liveAudioDisplayComp); + + deviceManager.removeAudioCallback (latencyTester); + delete latencyTester; + //[/Destructor_pre] + + deleteAndZero (liveAudioDisplayComp); + deleteAndZero (startTestButton); + deleteAndZero (testResultsBox); + + //[Destructor]. You can add your own custom destruction code here.. + //[/Destructor] +} + +//============================================================================== +void AudioDemoLatencyPage::paint (Graphics& g) +{ + //[UserPrePaint] Add your own custom painting code here.. + //[/UserPrePaint] + + g.fillAll (Colours::lightgrey); + + //[UserPaint] Add your own custom painting code here.. + //[/UserPaint] +} + +void AudioDemoLatencyPage::resized() +{ + liveAudioDisplayComp->setBounds (8, 8, getWidth() - 16, 64); + startTestButton->setBounds (8, getHeight() - 41, 168, 32); + testResultsBox->setBounds (8, 88, getWidth() - 16, getHeight() - 137); + //[UserResized] Add your own custom resize handling here.. + //[/UserResized] +} + +void AudioDemoLatencyPage::buttonClicked (Button* buttonThatWasClicked) +{ + //[UserbuttonClicked_Pre] + //[/UserbuttonClicked_Pre] + + if (buttonThatWasClicked == startTestButton) + { + //[UserButtonCode_startTestButton] -- add your button handler code here.. + latencyTester->beginTest(); + //[/UserButtonCode_startTestButton] + } + + //[UserbuttonClicked_Post] + //[/UserbuttonClicked_Post] +} + + + +//[MiscUserCode] You can add your own definitions of your custom methods or any other code here... +//[/MiscUserCode] + + +//============================================================================== +#if 0 +/* -- Jucer information section -- + + This is where the Jucer puts all of its metadata, so don't change anything in here! + +BEGIN_JUCER_METADATA + + + + + + + + +END_JUCER_METADATA +*/ +#endif diff --git a/extras/juce demo/src/demos/AudioDemoLatencyPage.h b/extras/juce demo/src/demos/AudioDemoLatencyPage.h new file mode 100644 index 0000000000..b9d628b12d --- /dev/null +++ b/extras/juce demo/src/demos/AudioDemoLatencyPage.h @@ -0,0 +1,79 @@ +/* + ============================================================================== + + This is an automatically generated file created by the Jucer! + + Creation date: 18 Sep 2009 5:32:11 pm + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Jucer version: 1.12 + + ------------------------------------------------------------------------------ + + The Jucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-6 by Raw Material Software ltd. + + ============================================================================== +*/ + +#ifndef __JUCER_HEADER_AUDIODEMOLATENCYPAGE_AUDIODEMOLATENCYPAGE_BFCD772A__ +#define __JUCER_HEADER_AUDIODEMOLATENCYPAGE_AUDIODEMOLATENCYPAGE_BFCD772A__ + +//[Headers] -- You can add your own extra header files here -- +#include "../jucedemo_headers.h" +#include "AudioDemoTabComponent.h" +class LatencyTester; +//[/Headers] + + + +//============================================================================== +/** + //[Comments] + An auto-generated component, created by the Jucer. + + Describe your class and how it works here! + //[/Comments] +*/ +class AudioDemoLatencyPage : public Component, + public ButtonListener +{ +public: + //============================================================================== + AudioDemoLatencyPage (AudioDeviceManager& deviceManager_); + ~AudioDemoLatencyPage(); + + //============================================================================== + //[UserMethods] -- You can add your own custom methods in this section. + //[/UserMethods] + + void paint (Graphics& g); + void resized(); + void buttonClicked (Button* buttonThatWasClicked); + + + //============================================================================== + juce_UseDebuggingNewOperator + +private: + //[UserVariables] -- You can add your own custom variables in this section. + AudioDeviceManager& deviceManager; + LatencyTester* latencyTester; + //[/UserVariables] + + //============================================================================== + LiveAudioInputDisplayComp* liveAudioDisplayComp; + TextButton* startTestButton; + TextEditor* testResultsBox; + + //============================================================================== + // (prevent copy constructor and operator= being generated..) + AudioDemoLatencyPage (const AudioDemoLatencyPage&); + const AudioDemoLatencyPage& operator= (const AudioDemoLatencyPage&); +}; + + +#endif // __JUCER_HEADER_AUDIODEMOLATENCYPAGE_AUDIODEMOLATENCYPAGE_BFCD772A__ diff --git a/extras/juce demo/src/demos/AudioDemoPlaybackPage.cpp b/extras/juce demo/src/demos/AudioDemoPlaybackPage.cpp new file mode 100644 index 0000000000..415385adf2 --- /dev/null +++ b/extras/juce demo/src/demos/AudioDemoPlaybackPage.cpp @@ -0,0 +1,352 @@ +/* + ============================================================================== + + This is an automatically generated file created by the Jucer! + + Creation date: 18 Sep 2009 7:17:11 pm + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Jucer version: 1.12 + + ------------------------------------------------------------------------------ + + The Jucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-6 by Raw Material Software ltd. + + ============================================================================== +*/ + +//[Headers] You can add your own extra header files here... +//[/Headers] + +#include "AudioDemoPlaybackPage.h" + + +//[MiscUserDefs] You can add your own user definitions and misc code here... +class DemoThumbnailComp : public Component, + public ChangeListener +{ +public: + DemoThumbnailComp() + : thumbnailCache (5), + thumbnail (512, formatManager, thumbnailCache) + { + startTime = endTime = 0; + formatManager.registerBasicFormats(); + thumbnail.addChangeListener (this); + } + + ~DemoThumbnailComp() + { + thumbnail.removeChangeListener (this); + } + + void setFile (const File& file) + { + thumbnail.setSource (new FileInputSource (file)); + startTime = 0; + endTime = thumbnail.getTotalLength(); + } + + void setZoomFactor (double amount) + { + if (thumbnail.getTotalLength() > 0) + { + double timeDisplayed = jmax (0.001, (thumbnail.getTotalLength() - startTime) * (1.0 - jlimit (0.0, 1.0, amount))); + endTime = startTime + timeDisplayed; + repaint(); + } + } + + void mouseWheelMove (const MouseEvent& e, float wheelIncrementX, float wheelIncrementY) + { + if (thumbnail.getTotalLength() > 0) + { + double newStart = startTime + (wheelIncrementX + wheelIncrementY) * (endTime - startTime) / 10.0; + newStart = jlimit (0.0, thumbnail.getTotalLength() - (endTime - startTime), newStart); + endTime = newStart + (endTime - startTime); + startTime = newStart; + repaint(); + } + } + + void paint (Graphics& g) + { + g.fillAll (Colours::white); + + g.setColour (Colours::mediumblue); + + if (thumbnail.getTotalLength() > 0) + { + int heightPerChannel = (getHeight() - 4) / thumbnail.getNumChannels(); + + for (int i = 0; i < thumbnail.getNumChannels(); ++i) + { + thumbnail.drawChannel (g, 2, 2 + heightPerChannel * i, + getWidth() - 4, heightPerChannel, + startTime, endTime, + i, 1.0f); + } + } + else + { + g.setFont (14.0f); + g.drawFittedText ("(No audio file selected)", 0, 0, getWidth(), getHeight(), Justification::centred, 2); + } + } + + void changeListenerCallback (void*) + { + // this method is called by the thumbnail when it has changed, so we should repaint it.. + repaint(); + } + + AudioFormatManager formatManager; + AudioThumbnailCache thumbnailCache; + AudioThumbnail thumbnail; + double startTime, endTime; +}; + +//[/MiscUserDefs] + +//============================================================================== +AudioDemoPlaybackPage::AudioDemoPlaybackPage (AudioDeviceManager& deviceManager_) + : deviceManager (deviceManager_), + thread ("audio file preview"), + directoryList (0, thread), + zoomLabel (0), + thumbnail (0), + startStopButton (0), + fileTreeComp (0), + explanation (0), + zoomSlider (0) +{ + addAndMakeVisible (zoomLabel = new Label (String::empty, + T("zoom:"))); + zoomLabel->setFont (Font (15.0000f, Font::plain)); + zoomLabel->setJustificationType (Justification::centredRight); + zoomLabel->setEditable (false, false, false); + zoomLabel->setColour (TextEditor::textColourId, Colours::black); + zoomLabel->setColour (TextEditor::backgroundColourId, Colour (0x0)); + + addAndMakeVisible (thumbnail = new DemoThumbnailComp()); + + addAndMakeVisible (startStopButton = new TextButton (String::empty)); + startStopButton->setButtonText (T("Play/Stop")); + startStopButton->addButtonListener (this); + startStopButton->setColour (TextButton::buttonColourId, Colour (0xff79ed7f)); + + addAndMakeVisible (fileTreeComp = new FileTreeComponent (directoryList)); + + addAndMakeVisible (explanation = new Label (String::empty, + T("Select an audio file in the treeview above, and this page will display its waveform, and let you play it.."))); + explanation->setFont (Font (14.0000f, Font::plain)); + explanation->setJustificationType (Justification::bottomRight); + explanation->setEditable (false, false, false); + explanation->setColour (TextEditor::textColourId, Colours::black); + explanation->setColour (TextEditor::backgroundColourId, Colour (0x0)); + + addAndMakeVisible (zoomSlider = new Slider (String::empty)); + zoomSlider->setRange (0, 1, 0); + zoomSlider->setSliderStyle (Slider::LinearHorizontal); + zoomSlider->setTextBoxStyle (Slider::NoTextBox, false, 80, 20); + zoomSlider->addListener (this); + zoomSlider->setSkewFactor (2); + + + //[UserPreSize] + //[/UserPreSize] + + setSize (600, 400); + + //[Constructor] You can add your own custom stuff here.. + directoryList.setDirectory (File::getSpecialLocation (File::userHomeDirectory), true, true); + thread.startThread (3); + + fileTreeComp->setColour (FileTreeComponent::backgroundColourId, Colours::white); + fileTreeComp->addListener (this); + + deviceManager.addAudioCallback (&audioSourcePlayer); + audioSourcePlayer.setSource (&transportSource); + currentAudioFileSource = 0; + //[/Constructor] +} + +AudioDemoPlaybackPage::~AudioDemoPlaybackPage() +{ + //[Destructor_pre]. You can add your own custom destruction code here.. + transportSource.setSource (0); + audioSourcePlayer.setSource (0); + + deviceManager.removeAudioCallback (&audioSourcePlayer); + fileTreeComp->removeListener (this); + + deleteAndZero (currentAudioFileSource); + //[/Destructor_pre] + + deleteAndZero (zoomLabel); + deleteAndZero (thumbnail); + deleteAndZero (startStopButton); + deleteAndZero (fileTreeComp); + deleteAndZero (explanation); + deleteAndZero (zoomSlider); + + //[Destructor]. You can add your own custom destruction code here.. + //[/Destructor] +} + +//============================================================================== +void AudioDemoPlaybackPage::paint (Graphics& g) +{ + //[UserPrePaint] Add your own custom painting code here.. + //[/UserPrePaint] + + g.fillAll (Colours::lightgrey); + + //[UserPaint] Add your own custom painting code here.. + //[/UserPaint] +} + +void AudioDemoPlaybackPage::resized() +{ + zoomLabel->setBounds (16, getHeight() - 90, 55, 24); + thumbnail->setBounds (16, getHeight() - 221, getWidth() - 32, 123); + startStopButton->setBounds (16, getHeight() - 46, 150, 32); + fileTreeComp->setBounds (16, 8, getWidth() - 32, getHeight() - 245); + explanation->setBounds (256, getHeight() - 82, getWidth() - 275, 64); + zoomSlider->setBounds (72, getHeight() - 90, 200, 24); + //[UserResized] Add your own custom resize handling here.. + //[/UserResized] +} + +void AudioDemoPlaybackPage::buttonClicked (Button* buttonThatWasClicked) +{ + //[UserbuttonClicked_Pre] + //[/UserbuttonClicked_Pre] + + if (buttonThatWasClicked == startStopButton) + { + //[UserButtonCode_startStopButton] -- add your button handler code here.. + if (transportSource.isPlaying()) + { + transportSource.stop(); + } + else + { + transportSource.setPosition (0); + transportSource.start(); + } + //[/UserButtonCode_startStopButton] + } + + //[UserbuttonClicked_Post] + //[/UserbuttonClicked_Post] +} + +void AudioDemoPlaybackPage::sliderValueChanged (Slider* sliderThatWasMoved) +{ + //[UsersliderValueChanged_Pre] + //[/UsersliderValueChanged_Pre] + + if (sliderThatWasMoved == zoomSlider) + { + //[UserSliderCode_zoomSlider] -- add your slider handling code here.. + thumbnail->setZoomFactor (zoomSlider->getValue()); + //[/UserSliderCode_zoomSlider] + } + + //[UsersliderValueChanged_Post] + //[/UsersliderValueChanged_Post] +} + + + +//[MiscUserCode] You can add your own definitions of your custom methods or any other code here... + +void AudioDemoPlaybackPage::loadFileIntoTransport (const File& audioFile) +{ + // unload the previous file source and delete it.. + transportSource.stop(); + transportSource.setSource (0); + deleteAndZero (currentAudioFileSource); + + // get a format manager and set it up with the basic types (wav and aiff). + AudioFormatManager formatManager; + formatManager.registerBasicFormats(); + + AudioFormatReader* reader = formatManager.createReaderFor (audioFile); + + if (reader != 0) + { + currentAudioFileSource = new AudioFormatReaderSource (reader, true); + + // ..and plug it into our transport source + transportSource.setSource (currentAudioFileSource, + 32768, // tells it to buffer this many samples ahead + reader->sampleRate); + } +} + +void AudioDemoPlaybackPage::selectionChanged() +{ + loadFileIntoTransport (fileTreeComp->getSelectedFile()); + + zoomSlider->setValue (0, false, false); + thumbnail->setFile (fileTreeComp->getSelectedFile()); +} + +void AudioDemoPlaybackPage::fileClicked (const File& file, const MouseEvent& e) +{ +} + +void AudioDemoPlaybackPage::fileDoubleClicked (const File& file) +{ +} +//[/MiscUserCode] + + +//============================================================================== +#if 0 +/* -- Jucer information section -- + + This is where the Jucer puts all of its metadata, so don't change anything in here! + +BEGIN_JUCER_METADATA + + + + + +END_JUCER_METADATA +*/ +#endif diff --git a/extras/juce demo/src/demos/AudioDemoPlaybackPage.h b/extras/juce demo/src/demos/AudioDemoPlaybackPage.h new file mode 100644 index 0000000000..f622c88090 --- /dev/null +++ b/extras/juce demo/src/demos/AudioDemoPlaybackPage.h @@ -0,0 +1,96 @@ +/* + ============================================================================== + + This is an automatically generated file created by the Jucer! + + Creation date: 18 Sep 2009 7:17:11 pm + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Jucer version: 1.12 + + ------------------------------------------------------------------------------ + + The Jucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-6 by Raw Material Software ltd. + + ============================================================================== +*/ + +#ifndef __JUCER_HEADER_AUDIODEMOPLAYBACKPAGE_AUDIODEMOPLAYBACKPAGE_8AB55057__ +#define __JUCER_HEADER_AUDIODEMOPLAYBACKPAGE_AUDIODEMOPLAYBACKPAGE_8AB55057__ + +//[Headers] -- You can add your own extra header files here -- +#include "../jucedemo_headers.h" +class DemoThumbnailComp; +//[/Headers] + + + +//============================================================================== +/** + //[Comments] + An auto-generated component, created by the Jucer. + + Describe your class and how it works here! + //[/Comments] +*/ +class AudioDemoPlaybackPage : public Component, + public FileBrowserListener, + public ButtonListener, + public SliderListener +{ +public: + //============================================================================== + AudioDemoPlaybackPage (AudioDeviceManager& deviceManager_); + ~AudioDemoPlaybackPage(); + + //============================================================================== + //[UserMethods] -- You can add your own custom methods in this section. + + // These methods are our FileBrowserListener implementation: + void selectionChanged(); + void fileClicked (const File& file, const MouseEvent& e); + void fileDoubleClicked (const File& file); + //[/UserMethods] + + void paint (Graphics& g); + void resized(); + void buttonClicked (Button* buttonThatWasClicked); + void sliderValueChanged (Slider* sliderThatWasMoved); + + + //============================================================================== + juce_UseDebuggingNewOperator + +private: + //[UserVariables] -- You can add your own custom variables in this section. + AudioDeviceManager& deviceManager; + TimeSliceThread thread; + DirectoryContentsList directoryList; + + AudioSourcePlayer audioSourcePlayer; + AudioTransportSource transportSource; + AudioFormatReaderSource* currentAudioFileSource; + + void loadFileIntoTransport (const File& audioFile); + //[/UserVariables] + + //============================================================================== + Label* zoomLabel; + DemoThumbnailComp* thumbnail; + TextButton* startStopButton; + FileTreeComponent* fileTreeComp; + Label* explanation; + Slider* zoomSlider; + + //============================================================================== + // (prevent copy constructor and operator= being generated..) + AudioDemoPlaybackPage (const AudioDemoPlaybackPage&); + const AudioDemoPlaybackPage& operator= (const AudioDemoPlaybackPage&); +}; + + +#endif // __JUCER_HEADER_AUDIODEMOPLAYBACKPAGE_AUDIODEMOPLAYBACKPAGE_8AB55057__ diff --git a/extras/juce demo/src/demos/AudioDemoRecordPage.cpp b/extras/juce demo/src/demos/AudioDemoRecordPage.cpp new file mode 100644 index 0000000000..522e0eefee --- /dev/null +++ b/extras/juce demo/src/demos/AudioDemoRecordPage.cpp @@ -0,0 +1,392 @@ +/* + ============================================================================== + + This is an automatically generated file created by the Jucer! + + Creation date: 19 Sep 2009 12:36:23 pm + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Jucer version: 1.12 + + ------------------------------------------------------------------------------ + + The Jucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-6 by Raw Material Software ltd. + + ============================================================================== +*/ + +//[Headers] You can add your own extra header files here... +//[/Headers] + +#include "AudioDemoRecordPage.h" + + +//[MiscUserDefs] You can add your own user definitions and misc code here... + +//============================================================================== +/* This is a rough-and-ready circular buffer, used to allow the audio thread to + push data quickly into a queue, allowing a background thread to come along and + write it to disk later. +*/ +class CircularAudioBuffer +{ +public: + CircularAudioBuffer (const int numChannels, const int numSamples) + : buffer (numChannels, numSamples) + { + clear(); + } + + ~CircularAudioBuffer() + { + } + + void clear() + { + buffer.clear(); + + const ScopedLock sl (bufferLock); + bufferValidStart = bufferValidEnd = 0; + } + + void addSamplesToBuffer (const AudioSampleBuffer& sourceBuffer, int numSamples) + { + const int bufferSize = buffer.getNumSamples(); + + bufferLock.enter(); + int newDataStart = bufferValidEnd; + int newDataEnd = newDataStart + numSamples; + const int actualNewDataEnd = newDataEnd; + bufferValidStart = jmax (bufferValidStart, newDataEnd - bufferSize); + bufferLock.exit(); + + newDataStart %= bufferSize; + newDataEnd %= bufferSize; + + if (newDataEnd < newDataStart) + { + for (int i = jmin (buffer.getNumChannels(), sourceBuffer.getNumChannels()); --i >= 0;) + { + buffer.copyFrom (i, newDataStart, sourceBuffer, i, 0, bufferSize - newDataStart); + buffer.copyFrom (i, 0, sourceBuffer, i, bufferSize - newDataStart, newDataEnd); + } + } + else + { + for (int i = jmin (buffer.getNumChannels(), sourceBuffer.getNumChannels()); --i >= 0;) + buffer.copyFrom (i, newDataStart, sourceBuffer, i, 0, newDataEnd - newDataStart); + } + + const ScopedLock sl (bufferLock); + bufferValidEnd = actualNewDataEnd; + } + + int readSamplesFromBuffer (AudioSampleBuffer& destBuffer, int numSamples) + { + const int bufferSize = buffer.getNumSamples(); + + bufferLock.enter(); + int availableDataStart = bufferValidStart; + const int numSamplesDone = jmin (numSamples, bufferValidEnd - availableDataStart); + int availableDataEnd = availableDataStart + numSamplesDone; + bufferValidStart = availableDataEnd; + bufferLock.exit(); + + availableDataStart %= bufferSize; + availableDataEnd %= bufferSize; + + if (availableDataEnd < availableDataStart) + { + for (int i = jmin (buffer.getNumChannels(), destBuffer.getNumChannels()); --i >= 0;) + { + destBuffer.copyFrom (i, 0, buffer, i, availableDataStart, bufferSize - availableDataStart); + destBuffer.copyFrom (i, bufferSize - availableDataStart, buffer, i, 0, availableDataEnd); + } + } + else + { + for (int i = jmin (buffer.getNumChannels(), destBuffer.getNumChannels()); --i >= 0;) + destBuffer.copyFrom (i, 0, buffer, i, availableDataStart, numSamplesDone); + } + + return numSamplesDone; + } + +private: + CriticalSection bufferLock; + AudioSampleBuffer buffer; + int bufferValidStart, bufferValidEnd; +}; + +//============================================================================== +class AudioRecorder : public AudioIODeviceCallback, + public Thread +{ +public: + AudioRecorder() + : Thread ("audio recorder"), + circularBuffer (2, 48000), + recording (false), + sampleRate (0) + { + } + + ~AudioRecorder() + { + stop(); + } + + //============================================================================== + void startRecording (const File& file) + { + stop(); + + if (sampleRate > 0) + { + fileToRecord = file; + startThread(); + + circularBuffer.clear(); + recording = true; + } + } + + void stop() + { + recording = false; + + stopThread (5000); + } + + bool isRecording() const + { + return isThreadRunning() && recording; + } + + //============================================================================== + void audioDeviceAboutToStart (AudioIODevice* device) + { + sampleRate = device->getCurrentSampleRate(); + } + + void audioDeviceStopped() + { + sampleRate = 0; + } + + void audioDeviceIOCallback (const float** inputChannelData, int numInputChannels, + float** outputChannelData, int numOutputChannels, + int numSamples) + { + if (recording) + { + const AudioSampleBuffer incomingData ((float**) inputChannelData, numInputChannels, numSamples); + circularBuffer.addSamplesToBuffer (incomingData, numSamples); + } + + // We need to clear the output buffers, in case they're full of junk.. + for (int i = 0; i < numOutputChannels; ++i) + if (outputChannelData[i] != 0) + zeromem (outputChannelData[i], sizeof (float) * numSamples); + } + + //============================================================================== + void run() + { + fileToRecord.deleteFile(); + + OutputStream* outStream = fileToRecord.createOutputStream(); + if (outStream == 0) + return; + + WavAudioFormat wavFormat; + AudioFormatWriter* writer = wavFormat.createWriterFor (outStream, sampleRate, 1, 16, StringPairArray(), 0); + + if (writer == 0) + { + delete outStream; + return; + } + + AudioSampleBuffer tempBuffer (2, 8192); + + while (! threadShouldExit()) + { + int numSamplesReady = circularBuffer.readSamplesFromBuffer (tempBuffer, tempBuffer.getNumSamples()); + + if (numSamplesReady > 0) + tempBuffer.writeToAudioWriter (writer, 0, numSamplesReady); + + Thread::sleep (1); + } + + delete writer; + } + + File fileToRecord; + double sampleRate; + bool recording; + + CircularAudioBuffer circularBuffer; +}; + +//[/MiscUserDefs] + +//============================================================================== +AudioDemoRecordPage::AudioDemoRecordPage (AudioDeviceManager& deviceManager_) + : deviceManager (deviceManager_), + liveAudioDisplayComp (0), + explanationLabel (0), + recordButton (0) +{ + addAndMakeVisible (liveAudioDisplayComp = new LiveAudioInputDisplayComp()); + + addAndMakeVisible (explanationLabel = new Label (String::empty, + T("This page demonstrates how to record a wave file from the live audio input..\n\nPressing record will start recording a file to your desktop."))); + explanationLabel->setFont (Font (15.0000f, Font::plain)); + explanationLabel->setJustificationType (Justification::topLeft); + explanationLabel->setEditable (false, false, false); + explanationLabel->setColour (TextEditor::textColourId, Colours::black); + explanationLabel->setColour (TextEditor::backgroundColourId, Colour (0x0)); + + addAndMakeVisible (recordButton = new TextButton (String::empty)); + recordButton->setButtonText (T("Record")); + recordButton->addButtonListener (this); + recordButton->setColour (TextButton::buttonColourId, Colour (0xffff5c5c)); + recordButton->setColour (TextButton::textColourId, Colours::black); + + + //[UserPreSize] + //[/UserPreSize] + + setSize (600, 400); + + //[Constructor] You can add your own custom stuff here.. + recorder = new AudioRecorder(); + deviceManager.addAudioCallback (recorder); + deviceManager.addAudioCallback (liveAudioDisplayComp); + //[/Constructor] +} + +AudioDemoRecordPage::~AudioDemoRecordPage() +{ + //[Destructor_pre]. You can add your own custom destruction code here.. + recorder->stop(); + deviceManager.removeAudioCallback (recorder); + delete recorder; + deviceManager.removeAudioCallback (liveAudioDisplayComp); + //[/Destructor_pre] + + deleteAndZero (liveAudioDisplayComp); + deleteAndZero (explanationLabel); + deleteAndZero (recordButton); + + //[Destructor]. You can add your own custom destruction code here.. + //[/Destructor] +} + +//============================================================================== +void AudioDemoRecordPage::paint (Graphics& g) +{ + //[UserPrePaint] Add your own custom painting code here.. + //[/UserPrePaint] + + g.fillAll (Colours::lightgrey); + + //[UserPaint] Add your own custom painting code here.. + //[/UserPaint] +} + +void AudioDemoRecordPage::resized() +{ + liveAudioDisplayComp->setBounds (8, 8, getWidth() - 16, 64); + explanationLabel->setBounds (184, 88, getWidth() - 194, 120); + recordButton->setBounds (8, 88, 136, 40); + //[UserResized] Add your own custom resize handling here.. + //[/UserResized] +} + +void AudioDemoRecordPage::buttonClicked (Button* buttonThatWasClicked) +{ + //[UserbuttonClicked_Pre] + //[/UserbuttonClicked_Pre] + + if (buttonThatWasClicked == recordButton) + { + //[UserButtonCode_recordButton] -- add your button handler code here.. + if (recorder->isRecording()) + { + recorder->stop(); + } + else + { + File file (File::getSpecialLocation (File::userDesktopDirectory) + .getNonexistentChildFile ("Juce Demo Audio Recording", ".wav")); + + recorder->startRecording (file); + } + + if (recorder->isRecording()) + recordButton->setButtonText ("Stop"); + else + recordButton->setButtonText ("Record"); + + //[/UserButtonCode_recordButton] + } + + //[UserbuttonClicked_Post] + //[/UserbuttonClicked_Post] +} + +void AudioDemoRecordPage::visibilityChanged() +{ + //[UserCode_visibilityChanged] -- Add your code here... + recorder->stop(); + recordButton->setButtonText ("Record"); + //[/UserCode_visibilityChanged] +} + + + +//[MiscUserCode] You can add your own definitions of your custom methods or any other code here... +//[/MiscUserCode] + + +//============================================================================== +#if 0 +/* -- Jucer information section -- + + This is where the Jucer puts all of its metadata, so don't change anything in here! + +BEGIN_JUCER_METADATA + + + + + + + + + +END_JUCER_METADATA +*/ +#endif diff --git a/extras/juce demo/src/demos/AudioDemoRecordPage.h b/extras/juce demo/src/demos/AudioDemoRecordPage.h new file mode 100644 index 0000000000..bf1aad63d1 --- /dev/null +++ b/extras/juce demo/src/demos/AudioDemoRecordPage.h @@ -0,0 +1,80 @@ +/* + ============================================================================== + + This is an automatically generated file created by the Jucer! + + Creation date: 19 Sep 2009 12:36:23 pm + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Jucer version: 1.12 + + ------------------------------------------------------------------------------ + + The Jucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-6 by Raw Material Software ltd. + + ============================================================================== +*/ + +#ifndef __JUCER_HEADER_AUDIODEMORECORDPAGE_AUDIODEMORECORDPAGE_9632FFAA__ +#define __JUCER_HEADER_AUDIODEMORECORDPAGE_AUDIODEMORECORDPAGE_9632FFAA__ + +//[Headers] -- You can add your own extra header files here -- +#include "../jucedemo_headers.h" +#include "AudioDemoTabComponent.h" +class AudioRecorder; +//[/Headers] + + + +//============================================================================== +/** + //[Comments] + An auto-generated component, created by the Jucer. + + Describe your class and how it works here! + //[/Comments] +*/ +class AudioDemoRecordPage : public Component, + public ButtonListener +{ +public: + //============================================================================== + AudioDemoRecordPage (AudioDeviceManager& deviceManager_); + ~AudioDemoRecordPage(); + + //============================================================================== + //[UserMethods] -- You can add your own custom methods in this section. + //[/UserMethods] + + void paint (Graphics& g); + void resized(); + void buttonClicked (Button* buttonThatWasClicked); + void visibilityChanged(); + + + //============================================================================== + juce_UseDebuggingNewOperator + +private: + //[UserVariables] -- You can add your own custom variables in this section. + AudioDeviceManager& deviceManager; + AudioRecorder* recorder; + //[/UserVariables] + + //============================================================================== + LiveAudioInputDisplayComp* liveAudioDisplayComp; + Label* explanationLabel; + TextButton* recordButton; + + //============================================================================== + // (prevent copy constructor and operator= being generated..) + AudioDemoRecordPage (const AudioDemoRecordPage&); + const AudioDemoRecordPage& operator= (const AudioDemoRecordPage&); +}; + + +#endif // __JUCER_HEADER_AUDIODEMORECORDPAGE_AUDIODEMORECORDPAGE_9632FFAA__ diff --git a/extras/juce demo/src/demos/AudioDemoSetupPage.cpp b/extras/juce demo/src/demos/AudioDemoSetupPage.cpp new file mode 100644 index 0000000000..95f282ab9d --- /dev/null +++ b/extras/juce demo/src/demos/AudioDemoSetupPage.cpp @@ -0,0 +1,105 @@ +/* + ============================================================================== + + This is an automatically generated file created by the Jucer! + + Creation date: 18 Sep 2009 11:26:45 am + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Jucer version: 1.12 + + ------------------------------------------------------------------------------ + + The Jucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-6 by Raw Material Software ltd. + + ============================================================================== +*/ + +//[Headers] You can add your own extra header files here... +//[/Headers] + +#include "AudioDemoSetupPage.h" + + +//[MiscUserDefs] You can add your own user definitions and misc code here... +//[/MiscUserDefs] + +//============================================================================== +AudioDemoSetupPage::AudioDemoSetupPage (AudioDeviceManager& deviceManager_) + : deviceManager (deviceManager_), + deviceSelector (0) +{ + addAndMakeVisible (deviceSelector = new AudioDeviceSelectorComponent (deviceManager, 0, 2, 0, 2, true, true, true, false)); + + + //[UserPreSize] + //[/UserPreSize] + + setSize (600, 400); + + //[Constructor] You can add your own custom stuff here.. + //[/Constructor] +} + +AudioDemoSetupPage::~AudioDemoSetupPage() +{ + //[Destructor_pre]. You can add your own custom destruction code here.. + //[/Destructor_pre] + + deleteAndZero (deviceSelector); + + //[Destructor]. You can add your own custom destruction code here.. + //[/Destructor] +} + +//============================================================================== +void AudioDemoSetupPage::paint (Graphics& g) +{ + //[UserPrePaint] Add your own custom painting code here.. + //[/UserPrePaint] + + g.fillAll (Colours::lightgrey); + + //[UserPaint] Add your own custom painting code here.. + //[/UserPaint] +} + +void AudioDemoSetupPage::resized() +{ + deviceSelector->setBounds (8, 8, getWidth() - 16, getHeight() - 16); + //[UserResized] Add your own custom resize handling here.. + //[/UserResized] +} + + + +//[MiscUserCode] You can add your own definitions of your custom methods or any other code here... +//[/MiscUserCode] + + +//============================================================================== +#if 0 +/* -- Jucer information section -- + + This is where the Jucer puts all of its metadata, so don't change anything in here! + +BEGIN_JUCER_METADATA + + + + + + +END_JUCER_METADATA +*/ +#endif diff --git a/extras/juce demo/src/demos/AudioDemoSetupPage.h b/extras/juce demo/src/demos/AudioDemoSetupPage.h new file mode 100644 index 0000000000..d24f567fa4 --- /dev/null +++ b/extras/juce demo/src/demos/AudioDemoSetupPage.h @@ -0,0 +1,72 @@ +/* + ============================================================================== + + This is an automatically generated file created by the Jucer! + + Creation date: 18 Sep 2009 11:26:45 am + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Jucer version: 1.12 + + ------------------------------------------------------------------------------ + + The Jucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-6 by Raw Material Software ltd. + + ============================================================================== +*/ + +#ifndef __JUCER_HEADER_AUDIODEMOSETUPPAGE_AUDIODEMOSETUPPAGE_244CE6A7__ +#define __JUCER_HEADER_AUDIODEMOSETUPPAGE_AUDIODEMOSETUPPAGE_244CE6A7__ + +//[Headers] -- You can add your own extra header files here -- +#include "../jucedemo_headers.h" +//[/Headers] + + + +//============================================================================== +/** + //[Comments] + An auto-generated component, created by the Jucer. + + Describe your class and how it works here! + //[/Comments] +*/ +class AudioDemoSetupPage : public Component +{ +public: + //============================================================================== + AudioDemoSetupPage (AudioDeviceManager& deviceManager_); + ~AudioDemoSetupPage(); + + //============================================================================== + //[UserMethods] -- You can add your own custom methods in this section. + //[/UserMethods] + + void paint (Graphics& g); + void resized(); + + + //============================================================================== + juce_UseDebuggingNewOperator + +private: + //[UserVariables] -- You can add your own custom variables in this section. + AudioDeviceManager& deviceManager; + //[/UserVariables] + + //============================================================================== + AudioDeviceSelectorComponent* deviceSelector; + + //============================================================================== + // (prevent copy constructor and operator= being generated..) + AudioDemoSetupPage (const AudioDemoSetupPage&); + const AudioDemoSetupPage& operator= (const AudioDemoSetupPage&); +}; + + +#endif // __JUCER_HEADER_AUDIODEMOSETUPPAGE_AUDIODEMOSETUPPAGE_244CE6A7__ diff --git a/extras/juce demo/src/demos/AudioDemoSynthPage.cpp b/extras/juce demo/src/demos/AudioDemoSynthPage.cpp new file mode 100644 index 0000000000..ae08b6dbe9 --- /dev/null +++ b/extras/juce demo/src/demos/AudioDemoSynthPage.cpp @@ -0,0 +1,393 @@ +/* + ============================================================================== + + This is an automatically generated file created by the Jucer! + + Creation date: 18 Sep 2009 9:46:49 pm + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Jucer version: 1.12 + + ------------------------------------------------------------------------------ + + The Jucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-6 by Raw Material Software ltd. + + ============================================================================== +*/ + +//[Headers] You can add your own extra header files here... +//[/Headers] + +#include "AudioDemoSynthPage.h" + + +//[MiscUserDefs] + +//============================================================================== +/** Our demo synth sound is just a basic sine wave.. +*/ +class SineWaveSound : public SynthesiserSound +{ +public: + SineWaveSound() + { + } + + bool appliesToNote (const int midiNoteNumber) { return true; } + bool appliesToChannel (const int midiChannel) { return true; } +}; + + +//============================================================================== +/** Our demo synth voice just plays a sine wave.. +*/ +class SineWaveVoice : public SynthesiserVoice +{ +public: + SineWaveVoice() + : angleDelta (0.0), + tailOff (0.0) + { + } + + bool canPlaySound (SynthesiserSound* sound) + { + return dynamic_cast (sound) != 0; + } + + void startNote (const int midiNoteNumber, const float velocity, + SynthesiserSound* sound, const int currentPitchWheelPosition) + { + currentAngle = 0.0; + level = velocity * 0.15; + tailOff = 0.0; + + double cyclesPerSecond = MidiMessage::getMidiNoteInHertz (midiNoteNumber); + double cyclesPerSample = cyclesPerSecond / getSampleRate(); + + angleDelta = cyclesPerSample * 2.0 * double_Pi; + } + + void stopNote (const bool allowTailOff) + { + if (allowTailOff) + { + // start a tail-off by setting this flag. The render callback will pick up on + // this and do a fade out, calling clearCurrentNote() when it's finished. + + if (tailOff == 0.0) // we only need to begin a tail-off if it's not already doing so - the + // stopNote method could be called more than once. + tailOff = 1.0; + } + else + { + // we're being told to stop playing immediately, so reset everything.. + + clearCurrentNote(); + angleDelta = 0.0; + } + } + + void pitchWheelMoved (const int newValue) + { + // can't be bothered implementing this for the demo! + } + + void controllerMoved (const int controllerNumber, const int newValue) + { + // not interested in controllers in this case. + } + + void renderNextBlock (AudioSampleBuffer& outputBuffer, int startSample, int numSamples) + { + if (angleDelta != 0.0) + { + if (tailOff > 0) + { + while (--numSamples >= 0) + { + const float currentSample = (float) (sin (currentAngle) * level * tailOff); + + for (int i = outputBuffer.getNumChannels(); --i >= 0;) + *outputBuffer.getSampleData (i, startSample) += currentSample; + + currentAngle += angleDelta; + ++startSample; + + tailOff *= 0.99; + + if (tailOff <= 0.005) + { + clearCurrentNote(); + + angleDelta = 0.0; + break; + } + } + } + else + { + while (--numSamples >= 0) + { + const float currentSample = (float) (sin (currentAngle) * level); + + for (int i = outputBuffer.getNumChannels(); --i >= 0;) + *outputBuffer.getSampleData (i, startSample) += currentSample; + + currentAngle += angleDelta; + ++startSample; + } + } + } + } + +private: + double currentAngle, angleDelta, level, tailOff; +}; + + +// This is an audio source that streams the output of our demo synth. +class SynthAudioSource : public AudioSource +{ +public: + //============================================================================== + // this collects real-time midi messages from the midi input device, and + // turns them into blocks that we can process in our audio callback + MidiMessageCollector midiCollector; + + // this represents the state of which keys on our on-screen keyboard are held + // down. When the mouse is clicked on the keyboard component, this object also + // generates midi messages for this, which we can pass on to our synth. + MidiKeyboardState& keyboardState; + + // the synth itself! + Synthesiser synth; + + //============================================================================== + SynthAudioSource (MidiKeyboardState& keyboardState_) + : keyboardState (keyboardState_) + { + // add some voices to our synth, to play the sounds.. + for (int i = 4; --i >= 0;) + { + synth.addVoice (new SineWaveVoice()); // These voices will play our custom sine-wave sounds.. + synth.addVoice (new SamplerVoice()); // and these ones play the sampled sounds + } + + // and add some sounds for them to play... + setUsingSineWaveSound(); + } + + void setUsingSineWaveSound() + { + synth.clearSounds(); + synth.addSound (new SineWaveSound()); + } + + void setUsingSampledSound() + { + synth.clearSounds(); + + WavAudioFormat wavFormat; + + AudioFormatReader* audioReader + = wavFormat.createReaderFor (new MemoryInputStream (BinaryData::cello_wav, + BinaryData::cello_wavSize, + false), + true); + + BitArray allNotes; + allNotes.setRange (0, 128, true); + + synth.addSound (new SamplerSound (T("demo sound"), + *audioReader, + allNotes, + 74, // root midi note + 0.1, // attack time + 0.1, // release time + 10.0 // maximum sample length + )); + + delete audioReader; + } + + void prepareToPlay (int samplesPerBlockExpected, + double sampleRate) + { + midiCollector.reset (sampleRate); + + synth.setCurrentPlaybackSampleRate (sampleRate); + } + + void releaseResources() + { + } + + void getNextAudioBlock (const AudioSourceChannelInfo& bufferToFill) + { + // the synth always adds its output to the audio buffer, so we have to clear it + // first.. + bufferToFill.clearActiveBufferRegion(); + + // fill a midi buffer with incoming messages from the midi input. + MidiBuffer incomingMidi; + midiCollector.removeNextBlockOfMessages (incomingMidi, bufferToFill.numSamples); + + // pass these messages to the keyboard state so that it can update the component + // to show on-screen which keys are being pressed on the physical midi keyboard. + // This call will also add midi messages to the buffer which were generated by + // the mouse-clicking on the on-screen keyboard. + keyboardState.processNextMidiBuffer (incomingMidi, 0, bufferToFill.numSamples, true); + + // and now get the synth to process the midi events and generate its output. + synth.renderNextBlock (*bufferToFill.buffer, incomingMidi, 0, bufferToFill.numSamples); + } +}; + +//[/MiscUserDefs] + +//============================================================================== +AudioDemoSynthPage::AudioDemoSynthPage (AudioDeviceManager& deviceManager_) + : deviceManager (deviceManager_), + keyboardComponent (0), + sineButton (0), + sampledButton (0), + liveAudioDisplayComp (0) +{ + addAndMakeVisible (keyboardComponent = new MidiKeyboardComponent (keyboardState, MidiKeyboardComponent::horizontalKeyboard)); + + addAndMakeVisible (sineButton = new ToggleButton (String::empty)); + sineButton->setButtonText (T("Use sine wave")); + sineButton->setRadioGroupId (321); + sineButton->addButtonListener (this); + sineButton->setToggleState (true, false); + + addAndMakeVisible (sampledButton = new ToggleButton (String::empty)); + sampledButton->setButtonText (T("Use sampled sound")); + sampledButton->setRadioGroupId (321); + sampledButton->addButtonListener (this); + + addAndMakeVisible (liveAudioDisplayComp = new LiveAudioInputDisplayComp()); + + + //[UserPreSize] + //[/UserPreSize] + + setSize (600, 400); + + //[Constructor] You can add your own custom stuff here.. + deviceManager.addAudioCallback (liveAudioDisplayComp); + + synthAudioSource = new SynthAudioSource (keyboardState); + audioSourcePlayer.setSource (synthAudioSource); + + deviceManager.addAudioCallback (&audioSourcePlayer); + deviceManager.addMidiInputCallback (String::empty, &(synthAudioSource->midiCollector)); + //[/Constructor] +} + +AudioDemoSynthPage::~AudioDemoSynthPage() +{ + //[Destructor_pre]. You can add your own custom destruction code here.. + audioSourcePlayer.setSource (0); + deviceManager.removeMidiInputCallback (String::empty, &(synthAudioSource->midiCollector)); + deviceManager.removeAudioCallback (&audioSourcePlayer); + deviceManager.removeAudioCallback (liveAudioDisplayComp); + + delete synthAudioSource; + //[/Destructor_pre] + + deleteAndZero (keyboardComponent); + deleteAndZero (sineButton); + deleteAndZero (sampledButton); + deleteAndZero (liveAudioDisplayComp); + + //[Destructor]. You can add your own custom destruction code here.. + //[/Destructor] +} + +//============================================================================== +void AudioDemoSynthPage::paint (Graphics& g) +{ + //[UserPrePaint] Add your own custom painting code here.. + //[/UserPrePaint] + + g.fillAll (Colours::lightgrey); + + //[UserPaint] Add your own custom painting code here.. + //[/UserPaint] +} + +void AudioDemoSynthPage::resized() +{ + keyboardComponent->setBounds (8, 96, getWidth() - 16, 64); + sineButton->setBounds (16, 176, 150, 24); + sampledButton->setBounds (16, 200, 150, 24); + liveAudioDisplayComp->setBounds (8, 8, getWidth() - 16, 64); + //[UserResized] Add your own custom resize handling here.. + //[/UserResized] +} + +void AudioDemoSynthPage::buttonClicked (Button* buttonThatWasClicked) +{ + //[UserbuttonClicked_Pre] + //[/UserbuttonClicked_Pre] + + if (buttonThatWasClicked == sineButton) + { + //[UserButtonCode_sineButton] -- add your button handler code here.. + synthAudioSource->setUsingSineWaveSound(); + //[/UserButtonCode_sineButton] + } + else if (buttonThatWasClicked == sampledButton) + { + //[UserButtonCode_sampledButton] -- add your button handler code here.. + synthAudioSource->setUsingSampledSound(); + //[/UserButtonCode_sampledButton] + } + + //[UserbuttonClicked_Post] + //[/UserbuttonClicked_Post] +} + + + +//[MiscUserCode] You can add your own definitions of your custom methods or any other code here... +//[/MiscUserCode] + + +//============================================================================== +#if 0 +/* -- Jucer information section -- + + This is where the Jucer puts all of its metadata, so don't change anything in here! + +BEGIN_JUCER_METADATA + + + + + + + + + +END_JUCER_METADATA +*/ +#endif diff --git a/extras/juce demo/src/demos/AudioDemoSynthPage.h b/extras/juce demo/src/demos/AudioDemoSynthPage.h new file mode 100644 index 0000000000..13058b7281 --- /dev/null +++ b/extras/juce demo/src/demos/AudioDemoSynthPage.h @@ -0,0 +1,82 @@ +/* + ============================================================================== + + This is an automatically generated file created by the Jucer! + + Creation date: 18 Sep 2009 9:46:49 pm + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Jucer version: 1.12 + + ------------------------------------------------------------------------------ + + The Jucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-6 by Raw Material Software ltd. + + ============================================================================== +*/ + +#ifndef __JUCER_HEADER_AUDIODEMOSYNTHPAGE_AUDIODEMOSYNTHPAGE_76557DC7__ +#define __JUCER_HEADER_AUDIODEMOSYNTHPAGE_AUDIODEMOSYNTHPAGE_76557DC7__ + +//[Headers] -- You can add your own extra header files here -- +#include "../jucedemo_headers.h" +#include "AudioDemoTabComponent.h" +class SynthAudioSource; +//[/Headers] + + + +//============================================================================== +/** + //[Comments] + An auto-generated component, created by the Jucer. + + Describe your class and how it works here! + //[/Comments] +*/ +class AudioDemoSynthPage : public Component, + public ButtonListener +{ +public: + //============================================================================== + AudioDemoSynthPage (AudioDeviceManager& deviceManager_); + ~AudioDemoSynthPage(); + + //============================================================================== + //[UserMethods] -- You can add your own custom methods in this section. + //[/UserMethods] + + void paint (Graphics& g); + void resized(); + void buttonClicked (Button* buttonThatWasClicked); + + + //============================================================================== + juce_UseDebuggingNewOperator + +private: + //[UserVariables] -- You can add your own custom variables in this section. + AudioDeviceManager& deviceManager; + MidiKeyboardState keyboardState; + AudioSourcePlayer audioSourcePlayer; + SynthAudioSource* synthAudioSource; + //[/UserVariables] + + //============================================================================== + MidiKeyboardComponent* keyboardComponent; + ToggleButton* sineButton; + ToggleButton* sampledButton; + LiveAudioInputDisplayComp* liveAudioDisplayComp; + + //============================================================================== + // (prevent copy constructor and operator= being generated..) + AudioDemoSynthPage (const AudioDemoSynthPage&); + const AudioDemoSynthPage& operator= (const AudioDemoSynthPage&); +}; + + +#endif // __JUCER_HEADER_AUDIODEMOSYNTHPAGE_AUDIODEMOSYNTHPAGE_76557DC7__ diff --git a/extras/juce demo/src/demos/AudioDemoTabComponent.cpp b/extras/juce demo/src/demos/AudioDemoTabComponent.cpp new file mode 100644 index 0000000000..478218f93d --- /dev/null +++ b/extras/juce demo/src/demos/AudioDemoTabComponent.cpp @@ -0,0 +1,210 @@ +/* + ============================================================================== + + This is an automatically generated file created by the Jucer! + + Creation date: 19 Sep 2009 11:10:57 am + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Jucer version: 1.12 + + ------------------------------------------------------------------------------ + + The Jucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-6 by Raw Material Software ltd. + + ============================================================================== +*/ + +//[Headers] You can add your own extra header files here... +//[/Headers] + +#include "AudioDemoTabComponent.h" +#include "AudioDemoSetupPage.h" +#include "AudioDemoPlaybackPage.h" +#include "AudioDemoSynthPage.h" +#include "AudioDemoLatencyPage.h" +#include "AudioDemoRecordPage.h" + + +//[MiscUserDefs] You can add your own user definitions and misc code here... +LiveAudioInputDisplayComp::LiveAudioInputDisplayComp() +{ + nextSample = subSample = 0; + accumulator = 0; + zeromem (samples, sizeof (samples)); + setOpaque (true); + + startTimer (1000 / 50); // use a timer to keep repainting this component +} + +LiveAudioInputDisplayComp::~LiveAudioInputDisplayComp() +{ +} + +void LiveAudioInputDisplayComp::paint (Graphics& g) +{ + g.fillAll (Colours::black); + + g.setColour (Colours::green); + const float midY = getHeight() * 0.5f; + int sampleNum = (nextSample + numElementsInArray (samples) - 1); + + for (int x = jmin (getWidth(), numElementsInArray (samples)); --x >= 0;) + { + const float sampleSize = midY * samples [sampleNum-- % numElementsInArray (samples)]; + g.drawVerticalLine (x, midY - sampleSize, midY + sampleSize); + } +} + +void LiveAudioInputDisplayComp::timerCallback() +{ + repaint(); +} + +void LiveAudioInputDisplayComp::audioDeviceAboutToStart (AudioIODevice* device) +{ + zeromem (samples, sizeof (samples)); +} + +void LiveAudioInputDisplayComp::audioDeviceStopped() +{ + zeromem (samples, sizeof (samples)); +} + +void LiveAudioInputDisplayComp::audioDeviceIOCallback (const float** inputChannelData, int numInputChannels, + float** outputChannelData, int numOutputChannels, int numSamples) +{ + for (int i = 0; i < numSamples; ++i) + { + for (int chan = 0; chan < numInputChannels; ++chan) + { + if (inputChannelData[chan] != 0) + accumulator += fabsf (inputChannelData[chan][i]); + } + + const int numSubSamples = 100; // how many input samples go onto one pixel. + const float boost = 10.0f; // how much to boost the levels to make it more visible. + + if (subSample == 0) + { + samples[nextSample] = accumulator * boost / numSubSamples; + nextSample = (nextSample + 1) % numElementsInArray (samples); + subSample = numSubSamples; + accumulator = 0; + } + else + { + --subSample; + } + } + + // We need to clear the output buffers, in case they're full of junk.. + for (int i = 0; i < numOutputChannels; ++i) + if (outputChannelData[i] != 0) + zeromem (outputChannelData[i], sizeof (float) * numSamples); +} + +//[/MiscUserDefs] + +//============================================================================== +AudioDemoTabComponent::AudioDemoTabComponent () + : tabbedComponent (0) +{ + addAndMakeVisible (tabbedComponent = new TabbedComponent (TabbedButtonBar::TabsAtTop)); + tabbedComponent->setTabBarDepth (30); + tabbedComponent->addTab (T("Audio Device Setup"), Colours::lightgrey, new AudioDemoSetupPage (deviceManager), true); + tabbedComponent->addTab (T("File Playback"), Colours::lightgrey, new AudioDemoPlaybackPage (deviceManager), true); + tabbedComponent->addTab (T("Synth Playback"), Colours::lightgrey, new AudioDemoSynthPage (deviceManager), true); + tabbedComponent->addTab (T("Latency Test"), Colours::lightgrey, new AudioDemoLatencyPage (deviceManager), true); + tabbedComponent->addTab (T("Recording"), Colours::lightgrey, new AudioDemoRecordPage (deviceManager), true); + tabbedComponent->setCurrentTabIndex (0); + + + //[UserPreSize] + deviceManager.initialise (2, 2, 0, true, String::empty, 0); + //[/UserPreSize] + + setSize (600, 400); + + //[Constructor] You can add your own custom stuff here.. + //[/Constructor] +} + +AudioDemoTabComponent::~AudioDemoTabComponent() +{ + //[Destructor_pre]. You can add your own custom destruction code here.. + //[/Destructor_pre] + + deleteAndZero (tabbedComponent); + + //[Destructor]. You can add your own custom destruction code here.. + //[/Destructor] +} + +//============================================================================== +void AudioDemoTabComponent::paint (Graphics& g) +{ + //[UserPrePaint] Add your own custom painting code here.. + //[/UserPrePaint] + + g.fillAll (Colours::white); + + //[UserPaint] Add your own custom painting code here.. + //[/UserPaint] +} + +void AudioDemoTabComponent::resized() +{ + tabbedComponent->setBounds (0, 0, getWidth() - 0, getHeight() - 0); + //[UserResized] Add your own custom resize handling here.. + //[/UserResized] +} + + + +//[MiscUserCode] You can add your own definitions of your custom methods or any other code here... +//============================================================================== +Component* createAudioDemo() +{ + return new AudioDemoTabComponent(); +} + +//[/MiscUserCode] + + +//============================================================================== +#if 0 +/* -- Jucer information section -- + + This is where the Jucer puts all of its metadata, so don't change anything in here! + +BEGIN_JUCER_METADATA + + + + + + + + + + + + +END_JUCER_METADATA +*/ +#endif diff --git a/extras/juce demo/src/demos/AudioDemoTabComponent.h b/extras/juce demo/src/demos/AudioDemoTabComponent.h new file mode 100644 index 0000000000..cb773ebc53 --- /dev/null +++ b/extras/juce demo/src/demos/AudioDemoTabComponent.h @@ -0,0 +1,102 @@ +/* + ============================================================================== + + This is an automatically generated file created by the Jucer! + + Creation date: 19 Sep 2009 11:10:57 am + + Be careful when adding custom code to these files, as only the code within + the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded + and re-saved. + + Jucer version: 1.12 + + ------------------------------------------------------------------------------ + + The Jucer is part of the JUCE library - "Jules' Utility Class Extensions" + Copyright 2004-6 by Raw Material Software ltd. + + ============================================================================== +*/ + +#ifndef __JUCER_HEADER_AUDIODEMOTABCOMPONENT_AUDIODEMOTABCOMPONENT_10720733__ +#define __JUCER_HEADER_AUDIODEMOTABCOMPONENT_AUDIODEMOTABCOMPONENT_10720733__ + +//[Headers] -- You can add your own extra header files here -- +#include "../jucedemo_headers.h" + + +//============================================================================== +/* This component scrolls a continuous waveform showing the audio that's currently + coming into the audio input. +*/ +class LiveAudioInputDisplayComp : public Component, + public AudioIODeviceCallback, + public Timer +{ +public: + //============================================================================== + LiveAudioInputDisplayComp(); + ~LiveAudioInputDisplayComp(); + + void paint (Graphics& g); + void timerCallback(); + + void audioDeviceAboutToStart (AudioIODevice* device); + void audioDeviceStopped(); + void audioDeviceIOCallback (const float** inputChannelData, int numInputChannels, + float** outputChannelData, int numOutputChannels, int numSamples); +private: + float samples [1024]; + int nextSample, subSample; + float accumulator; + + LiveAudioInputDisplayComp (const LiveAudioInputDisplayComp&); + const LiveAudioInputDisplayComp& operator= (const LiveAudioInputDisplayComp&); +}; + +//[/Headers] + + + +//============================================================================== +/** + //[Comments] + This component creates the set of tabs that hold the various + audio demo pages.. + //[/Comments] +*/ +class AudioDemoTabComponent : public Component +{ +public: + //============================================================================== + AudioDemoTabComponent (); + ~AudioDemoTabComponent(); + + //============================================================================== + //[UserMethods] -- You can add your own custom methods in this section. + //[/UserMethods] + + void paint (Graphics& g); + void resized(); + + + //============================================================================== + juce_UseDebuggingNewOperator + +private: + //[UserVariables] -- You can add your own custom variables in this section. + AudioDeviceManager deviceManager; + //[/UserVariables] + + //============================================================================== + TabbedComponent* tabbedComponent; + + //============================================================================== + // (prevent copy constructor and operator= being generated..) + AudioDemoTabComponent (const AudioDemoTabComponent&); + const AudioDemoTabComponent& operator= (const AudioDemoTabComponent&); +}; + + +#endif // __JUCER_HEADER_AUDIODEMOTABCOMPONENT_AUDIODEMOTABCOMPONENT_10720733__ diff --git a/extras/juce demo/src/juce_AppConfig.h b/extras/juce demo/src/juce_AppConfig.h index 553cbb1adc..7a23626dc2 100644 --- a/extras/juce demo/src/juce_AppConfig.h +++ b/extras/juce demo/src/juce_AppConfig.h @@ -41,8 +41,10 @@ //#define JUCE_ONLY_BUILD_CORE_LIBRARY 1 //#define JUCE_FORCE_DEBUG 1 //#define JUCE_LOG_ASSERTIONS 1 +#define JUCE_WASAPI 1 //#define JUCE_ASIO 1 //#define JUCE_ALSA 1 + #ifdef _MSC_VER #define JUCE_QUICKTIME 0 // (This is disabled here by default because on windows it requires the QT SDK, // but you can turn it on again if you've got the SDK) diff --git a/juce_amalgamated.cpp b/juce_amalgamated.cpp index 6fcebceecc..8a2ad6bd39 100644 --- a/juce_amalgamated.cpp +++ b/juce_amalgamated.cpp @@ -232850,6 +232850,9 @@ const File JUCE_CALLTYPE File::getSpecialLocation (const SpecialLocationType typ switch (type) { case userHomeDirectory: + csidlType = CSIDL_PROFILE; + break; + case userDocumentsDirectory: csidlType = CSIDL_PERSONAL; break; diff --git a/src/native/windows/juce_win32_Files.cpp b/src/native/windows/juce_win32_Files.cpp index f0f19951e8..ce99091fea 100644 --- a/src/native/windows/juce_win32_Files.cpp +++ b/src/native/windows/juce_win32_Files.cpp @@ -450,6 +450,9 @@ const File JUCE_CALLTYPE File::getSpecialLocation (const SpecialLocationType typ switch (type) { case userHomeDirectory: + csidlType = CSIDL_PROFILE; + break; + case userDocumentsDirectory: csidlType = CSIDL_PERSONAL; break;