DVDAuthor DVDAuthor true 0 0 594 433 3 3 0 0 KDE DVD Authoring Wizard image0 KDE DVD Authoring Wizard false page Welcome unnamed 11 6 Layout37 unnamed 0 6 Label5 7 5 0 0 Arial Black 36 DVDAuthor Wizard AlignCenter Label31 14 Version 1.4.6 AlignCenter Label56 Author: Dik Takken Copyright (C) 2005-2007 AlignCenter Spacer3 Vertical Expanding 0 36 Layout1 unnamed 0 6 Spacer1 Horizontal Expanding 111 0 PixmapLabel4 image1 Spacer1_2 Horizontal Expanding 111 0 Spacer3_2 Vertical Expanding 0 35 Label4 7 5 0 0 This wizard will help you create DVD disks from MPEG2 files, a process called 'DVD Authoring'. You need one or more DVD compatible MPEG2 files to use this wizard. WordBreak|AlignCenter Spacer3_2_2 Vertical Expanding 0 36 SetBanner @Banner.setText(@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/banner1.png) SystemCheck "@global(_KDDIR)/DVDAuthorWizard-Builder.sh" if [ "$?" -ne "0" ]; then kdialog --error "KDE DVDAuthor Wizard could not be started. $( @global(_KDDIR)/DVDAuthorWizard-Builder.sh )" kill @pid fi Banner 5 5 0 0 AlignTop|AlignLeft page DVD Title unnamed 11 6 SetBanner_2 @Banner_2.setText(@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/banner1.png) Banner_2 AlignTop|AlignLeft Layout70 unnamed 0 6 Label5_2 Arial Black 36 DVD Title Label7 Please choose a title and subtitle for you DVD. WordBreak|AlignVCenter Spacer5 Vertical Expanding 0 84 Layout69 unnamed 0 6 Spacer49_3 Horizontal Expanding 90 0 Title 7 0 0 0 0 StrongFocus @widgetText Spacer49 Horizontal Preferred 51 20 Label8_2 0 5 0 0 Subtitle: AlignVCenter|AlignRight Spacer49_3_2 Horizontal Expanding 90 0 Label8 0 5 0 0 Title: AlignVCenter|AlignRight Spacer49_2 Horizontal Preferred 51 20 Spacer49_3_4 Horizontal Preferred 40 20 Subtitle 7 0 0 0 0 @widgetText Spacer49_3_3 Horizontal Preferred 40 20 Spacer5_2 Vertical Expanding 0 84 Label50 7 5 0 0 1 Title and Subtitle are optional, they are only used for creating a DVD menu. WordBreak|AlignVCenter Spacer5_2_2 Vertical Expanding 0 84 page Storage Folder unnamed 11 6 Banner_3 AlignTop|AlignLeft SetBanner_3 @Banner_3.setText(@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/banner1.png) Layout148 unnamed 0 6 Label5_2_2_2_2_2_3 Arial Black 36 Storage Folder Label7_2_2_2_2_3 Choose which folder should be used to store the DVD. There should be plenty of free space left in the storage folder. WordBreak|AlignVCenter Spacer18 Vertical Expanding 0 114 Layout147 unnamed 0 6 Spacer14 Horizontal Fixed 60 16 Layout144 unnamed 0 6 Label26_2 Storage Folder: Layout22 unnamed 0 6 OutputDir TabFocus @OutputDir.setText("@exec(pwd)/Desktop/Nieuwe DVD") @widgetText() *. Directory SetPath @OutputDir.setText("@exec( if [ -z "@OutputDir" ]; then echo "$HOME" else echo "@OutputDir" fi )") CheckOutputDir @setGlobal(WorkingDir,@exec(echo "@OutputDir/DVDAuthorWizard_Temporary_Files_$RANDOM")) @OutputDirWarning.setText(@exec( if [ -d "@OutputDir" ]; then rm -f "@OutputDir/DebugOutput" if [ `ls -l "@OutputDir" | wc -l` -gt 1 ]; then echo "WARNING: The selected folder is not empty. Existing files might be overwritten!" fi fi )) OutputDirWarning 1 WordBreak|AlignVCenter Spacer14_2_2 Horizontal Fixed 60 20 Spacer18_2 Vertical Expanding 0 97 page Introduction unnamed 11 6 Banner_4 AlignTop|AlignLeft Layout39 unnamed 0 6 Label5_2_2_2_2_2_2_2_2 Arial Black 36 Introduction Label7_2_2_2_2_2_2_3 Before the main movie is played or the DVD menu appears, an introduction movie can be played. In case you would like to have an introduction movie, select one below. You can only select DVD compatible MPEG2 files. WordBreak|AlignVCenter Spacer25_2 Vertical Expanding 0 121 Layout41 unnamed 0 6 Spacer42_2 Horizontal Fixed 100 20 Layout23 unnamed 0 6 Label36 3 5 0 0 Introduction Movie: IntroMovie 7 0 0 0 TabFocus @widgetText video/mpeg Spacer42_2_2 Horizontal Fixed 100 16 Spacer42 Horizontal Expanding 641 0 Spacer25 Vertical Expanding 0 74 SetBanner_4 @Banner_4.setText(@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/banner1.png) SetOutputDir @setGlobal(WorkingDir,@exec(echo "@OutputDir/DVDAuthorWizard_Temporary_Files_$RANDOM")) CheckIntroMovie @setGlobal(MovieCheck,@exec( if [ ! -e "@IntroMovie" ]; then echo "ok" else if [ -n "`mplayer "@IntroMovie" -vo null -frames 0 -nosound 2>&1 | grep ^VIDEO: | grep MPEG2`" ]; then echo "ok" fi fi )) @if (@String.length(@global(MovieCheck)) == 0) @exec(kdialog --error "The selected introduction movie does not seem to be a DVD compatible MPEG2 file.\n\nPlease choose a different file.") @IntroMovie.setText("") @endif page Create Playlist unnamed 11 6 Layout72 unnamed 0 6 AddNewMPEGFile @setGlobal(FileName, @global(NewMPEGFile)) @setGlobal(NumItems, @Array.count(Scenes) ) # In case the Scenes array does not exist yet @if( @String.length(@Array.count(Scenes)) == 0) @setGlobal(NumItems,0) @endif @if( @String.length(@global(FileName)) != 0 ) # Add filename to Scenes array and Scene List Widget @Array.setValue(Scenes, @exec(echo file@global(NumItems)), @global(FileName)) @Playlist.insertItem(@global(FileName),-1) @Playlist.setPixmap("video",@global(NumItems)) # Initialise scene title @Array.setValue(SceneTitles, @global(FileName), @exec(echo "`basename "@global(FileName)"`" | sed "s/.mpg//;" )) @SceneTitle.setText(@exec(echo "`basename "@global(FileName)"`" | sed "s/.mpg//;" )) # Initialise scene pause length @Array.setValue(ScenePause, @exec(echo "@global(FileName)"), 0) @endif ChangeScenePause 7 5 0 0 @Array.setValue(SceneTitles, @Playlist.item(@Playlist.currentItem()), @SceneTitle.text()) @if(@global(Writeback) == true) @Array.setValue(ScenePause, @Playlist.item(@Playlist.currentItem()), @ScenePause) @endif UpdateSceneSettings # Don't trigger write back @setGlobal(Writeback,false) # Update Scene Title @SceneTitle.setText(@Array.value(SceneTitles, @Playlist.item(@Playlist.currentItem()))) # Update pause settings @setGlobal(tmp, @Array.value(ScenePause, @Playlist.item(@Playlist.currentItem()))) @if( @global(tmp) != 0) @PauseRadio2.setChecked(1) @PauseSeconds.setText(@global(tmp))) @endif @if( @global(tmp) == 0) @PauseRadio1.setChecked(1) @PauseSeconds.setText(0) @endif @setGlobal(Writeback,true) ChangeSceneTitle @Array.setValue(SceneTitles, @Playlist.item(@Playlist.currentItem()), @SceneTitle.text()) @Array.setValue(SceneTitles, @Playlist.item(@Playlist.currentItem()), @SceneTitle.text()) SetBanner_5 @Banner_5.setText(@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/banner1.png) ChangeSceneVisible @Array.setValue(SceneTitles, @Playlist.item(@Playlist.currentItem()), @SceneTitle.text()) @if(@global(Writeback) == true) @Array.setValue(SceneVisibility, @Playlist.item(@Playlist.currentItem()), @SceneVisible) @endif Layout73 unnamed 0 6 Layout59 unnamed 0 6 Label5_2_2_2_2 7 1 0 0 Arial Black 36 Create Playlist Create Playlist Label7_2_2_2 7 1 0 0 Add your MPEG2 files to the playlist below. Make sure that these files are DVD compatible. You can check your MPEG files by pressing the 'Check Compatibility' button. WordBreak|AlignVCenter Layout197 unnamed 9 6 ExecButton9 1 1 0 0 Add &to List image2 @if( @String.length(@NewFiles) == 0) @exec(kdialog --error "Please select one or multiple files.") @endif @Array.clear(NewFileArray) @Array.fromString(NewFileArray, @NewFiles) @setGlobal(loopcount, 0) @forEach(i, @Array.keys(NewFileArray)) @setGlobal(NewMPEGFile, @i) @setGlobal(loopcount, @expr(@global(loopcount)+1)) @AddNewMPEGFile @end @NewFiles.setText("") NewFiles 3 0 0 0 TabFocus true @widgetText video/mpeg true Label19_3 Add File(s): Layout57 unnamed 12 6 Playlist 0 true Sunken @exec(mkdir -p "@OutputDir") # Create a KDE .desktop file if [ ! -e "@OutputDir/.directory" ]; then echo "[Desktop Entry]" > "@OutputDir/.directory" echo "Icon=folder_video" >> "@OutputDir/.directory" fi # Create new Config file @exec(echo "# Kommander Generated configuration file" > "@OutputDir/Config") @exec(echo "" >> "@OutputDir/Config") @exec(echo "Command=\"@global(Command)\"" >> "@OutputDir/Config") @exec(echo "BuildMenu=\"@global(BuildMenu)\"" >> "@OutputDir/Config") @exec(echo "StaticMenu=\"@StaticMenu\"" >> "@OutputDir/Config") @exec(echo "ThumbnailSkip=@ThumbnailSkip" >> "@OutputDir/Config") @exec(echo "EditXML=\"@EditXML\"" >> "@OutputDir/Config") @exec(echo "Title=\"@Title\"" >> "@OutputDir/Config") @exec(echo "Subtitle=\"@Subtitle\"" >> "@OutputDir/Config") @exec(echo "BackgroundType=\"@BackgroundType\"" >> "@OutputDir/Config") @exec(echo "BackgroundPicture=\"@BackgroundPicture\"" >> "@OutputDir/Config") @exec(echo "BackgroundMovie=\"@BackgroundMovie\"" >> "@OutputDir/Config") @exec(echo "BackgroundWashout=\"@BackgroundWashout\"" >> "@OutputDir/Config") @exec(echo "TitleFont=\"@TitleFont\"" >> "@OutputDir/Config") @exec(echo "SubtitleFont=\"@SubtitleFont\"" >> "@OutputDir/Config") @exec(echo "LabelFont=\"@LabelFont\"" >> "@OutputDir/Config") @exec(echo "FontColor=\"@FontColor\"" >> "@OutputDir/Config") @exec(echo "FontOutlineColor=\"@FontOutlineColor\"" >> "@OutputDir/Config") @exec(echo "SceneDecoration=\"@SceneDecoration\"" >> "@OutputDir/Config") @exec(echo "TVSystem=\"@TVSystem\"" >> "@OutputDir/Config") @exec(echo "Widescreen=\"@Aspect\"" >> "@OutputDir/Config") @exec(echo "IntroMovie=\"@IntroMovie\"" >> "@OutputDir/Config") @exec(echo "SoundtrackFile=\"@Soundtrack\"" >> "@OutputDir/Config") @exec(echo "NumScenes=@Array.count(Scenes)" >> "@OutputDir/Config") @exec(echo "OutputDir=\"@OutputDir\"" >> "@OutputDir/Config") @exec(echo "WorkingDir=\"@global(WorkingDir)\"" >> "@OutputDir/Config") @exec(echo "" >> "@OutputDir/Config") # Write scene pathnames to file @for(Scene, 0, @expr(@Array.count(Scenes) - 1), 1) @exec(echo "SceneFiles[@Scene]=\"@Array.value(Scenes, file@Scene)\"" >> "@OutputDir/Config") @end # Write scene titles to file @for(Scene, 0, @expr(@Array.count(Scenes) - 1), 1) @exec(echo "SceneTitles[@Scene]=\"@Array.value(SceneTitles, @Array.value(Scenes, file@Scene))\"" >> "@OutputDir/Config") @end # Write scene delays to file @for(Scene, 0, @expr(@Array.count(Scenes) - 1), 1) @exec(echo "ScenePause[@Scene]=@Array.value(ScenePause, @Array.value(Scenes, file@Scene))" >> "@OutputDir/Config") @end Playlist Layout56 unnamed 0 3 ExecButton2_2 NoFocus image3 @if( @String.length( @Playlist.item(@Playlist.currentItem) ) != 0 ) @setGlobal(tmp, @Array.value(Scenes, file@expr(@Playlist.currentItem - 1))) @Array.setValue(Scenes, file@expr(@Playlist.currentItem - 1), @Array.value(Scenes,file@expr(@Playlist.currentItem))) @Array.setValue(Scenes, file@expr(@Playlist.currentItem), @global(tmp)) @Playlist.insertItem("@Playlist.item(@expr(@Playlist.currentItem - 1))",@expr(@Playlist.currentItem + 1)) @Playlist.removeItem(@expr(@Playlist.currentItem - 1)) @Playlist.setPixmap("video",@expr(@Playlist.currentItem + 1)) @Playlist.setPixmap("video",@expr(@Playlist.currentItem - 1)) @endif Play Sooner ExecButton2 NoFocus image4 @if( @String.length(@Playlist.item(@expr(@Playlist.currentItem + 1))) != 0 ) @setGlobal(tmp, @Array.value(Scenes, file@expr(@Playlist.currentItem + 1))) @Array.setValue(Scenes, file@expr(@Playlist.currentItem + 1), @Array.value(Scenes,file@expr(@Playlist.currentItem))) @Array.setValue(Scenes, file@expr(@Playlist.currentItem), @global(tmp)) @Playlist.insertItem("@Playlist.item(@expr(@Playlist.currentItem + 1))",@Playlist.currentItem) @Playlist.removeItem(@expr(@Playlist.currentItem + 1)) @Playlist.setPixmap("video",@expr(@Playlist.currentItem - 1)) @Playlist.setPixmap("video",@expr(@Playlist.currentItem + 1)) @endif Play Later ExecButton2_2_2 NoFocus image5 @for(Scene, @Playlist.currentItem, @expr(@Array.count(Scenes) - 1), 1) @Array.setValue(Scenes, file@Scene, @Array.value(Scenes, file@expr(@Scene + 1))) @end @Array.remove(Scenes, file@expr(@Array.count(Scenes) - 1)) @Playlist.removeItem(@Playlist.currentItem) Remove from Playlist Spacer386 Vertical Expanding 0 1 GroupBox1 3 3 0 0 Movie Properties unnamed 8 6 ScenePause 7 7 0 0 Transition @PauseRadio1@PauseRadio2 unnamed 11 6 PauseRadio1 Immediately play &next movie true @null 0 Layout11 unnamed 0 6 PauseRadio2 Pause &for @null @PauseSeconds PauseSeconds 60 1 @widgetText Label29 seconds ButtonGroup4 3 3 0 0 NoFrame unnamed 5 14 Layout14 unnamed 0 6 Label2 Title SceneTitle 0 false Layout62 unnamed 0 6 Spacer114_2 Horizontal Expanding 16 0 ExecButton13 1 1 0 0 &Check Compatibility MPEGFile="@Array.value(Scenes, file@Playlist.currentItem)" if [ -z "$MPEGFile" ]; then kdialog --msgbox "Select a file in the playlist first." exit fi WorkingDir="@global(WorkingDir)" mkdir -p "$WorkingDir/DVD" kdialog --msgbox "One moment please..." & PID=$! dvdauthor -o "$WorkingDir/DVD" -t -f "$MPEGFile" > "$WorkingDir/DVDAuthorOutput" 2>&1 kill $PID FreeSpace=`df -m "$WorkingDir/DVD" -P | awk '{print $4}' | tail -n 1` if [ $FreeSpace -le 1 ]; then PrintError "You ran out of disk space.\n\nPlease free more disk space and try again." exit fi if [ `cat "$WorkingDir/DVDAuthorOutput" | grep ERR: | wc -l` -gt 0 ]; then kdialog --error "The file\n\n$MPEGFile\n\nis not a DVD compatible MPEG2 file." elif [ `cat "$WorkingDir/DVDAuthorOutput" | grep WARN: | wc -l` -gt 0 ]; then NumWarnings=`cat "$WorkingDir/DVDAuthorOutput" | grep WARN: | wc -l` kdialog --yesno "The file\n\n$MPEGFile\n\ncontained no errors, but it did generate $NumWarnings warnings. Correct display on DVD players can not be guaranteed.\n\nWould you like to view the warnings?" if [ $? == 0 ]; then cat "$WorkingDir/DVDAuthorOutput" | grep WARN: > "$WorkingDir/DVDAuthorWarnings.txt" kfmclient exec "$WorkingDir/DVDAuthorWarnings.txt" & fi else kdialog --msgbox "The file\n\n$MPEGFile\n\nis fully DVD compatible." fi rm -f -R "$WorkingDir/DVD" Check file for DVD compatibility Spacer114_2_2 Horizontal Expanding 16 0 ExecButton13_2 1 1 0 0 Pla&y File MPEGFile="@Array.value(Scenes, file@Playlist.currentItem)" kfmclient exec "$MPEGFile" & Play selected file Spacer114_2_2_2 Horizontal Expanding 16 0 Banner_5 AlignTop|AlignLeft page Menu Fonts unnamed 11 6 SetBanner_6 @Banner_6.setText(@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/banner1.png) Banner_6 AlignTop|AlignLeft Layout41 unnamed 0 6 Label5_2_2 7 5 0 0 Arial Black 36 Menu Fonts Label7_2 7 5 0 0 Choose which fonts should be used to draw the menu. WordBreak|AlignVCenter Spacer30 Vertical Expanding 0 16 Layout29 unnamed 0 6 Layout28 unnamed 0 6 DrawTitleFont @execBegin mkdir -p /tmp/kde-$USER convert -size 210x50 -pointsize 40 xc:transparent -gravity center -fill @FontColor -stroke @FontOutlineColor -strokewidth 3 -draw "font '@TitleFont' text 0,0 'ABC abc'" -stroke none -draw "font '@TitleFont' text 0,0 'ABC abc'" /tmp/kde-$USER/Font.png @execEnd @FontPicture.setText(@exec(echo /tmp/kde-$USER/Font.png)) DrawSubtitleFont @execBegin mkdir -p /tmp/kde-$USER convert -size 210x50 -pointsize 40 xc:transparent -gravity center -fill white -stroke black -strokewidth 3 -draw "font '@SubtitleFont' text 0,0 'ABC abc'" -stroke none -draw "font '@SubtitleFont' text 0,0 'ABC abc'" /tmp/kde-$USER/Font.png @execEnd @FontPicture.setText(@exec(echo /tmp/kde-$USER/Font.png)) DrawLabelFont @execBegin mkdir -p /tmp/kde-$USER convert -size 210x50 -pointsize 40 xc:transparent -gravity center -fill white -stroke black -strokewidth 3 -draw "font '@LabelFont' text 0,0 'ABC abc'" -stroke none -draw "font '@LabelFont' text 0,0 'ABC abc'" /tmp/kde-$USER/Font.png @execEnd @FontPicture.setText(@exec(echo /tmp/kde-$USER/Font.png)) GroupBox4 Font Preview FontPicture 10 60 210 60 Layout26 unnamed 0 6 Label13_2 0 5 0 0 Subtitle: FontPath /usr/share/fonts/Type1 TitleFont 7 0 0 0 @Array.value(FontArray,@widgetText)/@widgetText Main menu title font AddFonts @if( @String.length( @TitleFont.item(0) ) == 0 ) @Array.fromString(FontArray,@exec(find "/usr/local/share/fonts" -iname "*.ttf" -printf "%f\t%h\n")) @Array.fromString(FontArray,@exec(find "/usr/local/share/fonts" -iname "*.pfb" -printf "%f\t%h\n")) @Array.fromString(FontArray,@exec(find "/usr/share/fonts" -iname "*.ttf" -printf "%f\t%h\n")) @Array.fromString(FontArray,@exec(find "/usr/share/fonts" -iname "*.pfb" -printf "%f\t%h\n")) @Array.fromString(FontArray,@exec(find "/usr/share/X11/fonts" -iname "*.pfb" -printf "%f\t%h\n")) @Array.fromString(FontArray,@exec(find "/usr/share/X11/fonts" -iname "*.ttf" -printf "%f\t%h\n")) @Array.fromString(FontArray,@exec(find "/usr/X11R6/lib/X11/fonts" -iname "*.pfb" -printf "%f\t%h\n")) @Array.fromString(FontArray,@exec(find "/usr/X11R6/lib/X11/fonts" -iname "*.ttf" -printf "%f\t%h\n")) @Array.fromString(FontArray,@exec(find "~/.fonts" -iname "*.ttf" -printf "%f\t%h\n")) @Array.fromString(FontArray,@exec(find "~/.fonts" -iname "*.pfb" -printf "%f\t%h\n")) @TitleFont.clear() @SubtitleFont.clear() @LabelFont.clear() @TitleFont.insertItems(@Array.keys(FontArray),0) @SubtitleFont.insertItems(@Array.keys(FontArray),0) @LabelFont.insertItems(@Array.keys(FontArray),0) @endif LabelFont 7 0 0 0 @Array.value(FontArray,@widgetText)/@widgetText Font for titles of thumbnails SubtitleFont 7 0 0 0 @Array.value(FontArray,@widgetText)/@widgetText Secondary DVD title font Label13 0 5 0 0 Title: Label13_2_2 0 5 0 0 Movies: qt_dead_widget_InitFont @TitleFont.setCurrentItem(1) Layout27 unnamed 0 6 Black White Red Blue Green FontColor 7 0 0 0 1 @widgetText Black White Red Blue Green FontOutlineColor 7 0 0 0 0 @widgetText Label13_2_2_2_2 0 5 0 0 Outline Color: Label13_2_2_2 0 5 0 0 Fill Color: Spacer30_2 Vertical Expanding 0 16 Layout33 unnamed 0 6 Spacer33_2 Horizontal Expanding 50 0 Label12 7 5 0 0 1 WinPanel You can safely skip this step if you don't need a DVD Menu. WordBreak|AlignCenter Spacer33 Horizontal Expanding 40 0 Spacer30_3 Vertical Expanding 0 16 page Background unnamed 11 6 Layout69 unnamed 0 6 Label5_2_2_2 7 5 0 0 Arial Black 36 Background Label7_2_2 Choose which background you want for the DVD Menu. WordBreak|AlignVCenter Spacer37_7 Vertical Expanding 0 18 BackgroundType @UseCheckersBackground@UsePictureBackground@UseMovieBackground @null unnamed 11 6 UseCheckersBackground Moving &Chequers true @null Checkers UsePictureBackground Ima&ge @null Picture Layout41 unnamed 0 6 Spacer39 Horizontal Expanding 90 0 Label19 1 Pick an image: BackgroundPicture false 7 0 0 0 @widgetText image/jpeg image/png UseMovieBackground Video &File @null Movie Layout42 unnamed 0 6 Spacer39_3 Horizontal Expanding 90 0 Label19_2 1 Pick a video file: BackgroundMovie false 7 0 0 0 @widgetText video/mpeg video/dv video/x-msvideo video/x-ms-asf video/x-ms-wmv application/vnd.rn-realmedia video/vnd.rn-realvideo video/quicktime video/x-matroska video/x-ogm video/x-theora Layout68 unnamed 0 6 Spacer129 Horizontal Expanding 191 0 BackgroundWashout false Apply Washout &Effect @null washout Spacer37 Vertical Expanding 0 18 Layout33_2 unnamed 0 6 Spacer33_2_2 Horizontal Expanding 50 0 Label12_2 7 5 0 0 1 WinPanel You can safely skip this step if you don't need a DVD Menu. WordBreak|AlignCenter Spacer33_3 Horizontal Expanding 40 0 Spacer37_2 Vertical Expanding 0 18 SetBanner_7 @Banner_7.setText(@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/banner1.png) Banner_7 AlignTop|AlignLeft page Menu Options unnamed 11 6 SetBanner_8 @Banner_8.setText(@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/banner1.png) Banner_8 AlignTop|AlignLeft Spacer37_2_2 Vertical Expanding 0 22 Layout75 unnamed 0 6 Label5_2_2_2_2_2 Arial Black 36 Menu Options Label7_2_2_2_2 Here are some options related to sound and animation of the DVD menu. WordBreak|AlignVCenter Spacer37_2_2_4 Vertical Expanding 0 22 Layout64 unnamed 0 6 Spacer115_5 Horizontal Expanding 41 0 Layout63 unnamed 0 21 GroupBox4_2 Menu Soundtrack unnamed 11 6 Label26 Select File: Soundtrack TabFocus @widgetText() audio/x-wav audio/x-vorbis audio/x-mp3 audio/x-mp2 Spacer69 Horizontal Expanding 158 0 GroupBox3 Thumbnail Animation unnamed 11 6 StaticMenu &Create fully animated menu (slow) false true false Layout57 unnamed 0 6 Label26_3 Skip the first ThumbnailSkip @widgetText Label26_3_2 seconds of thumbnail animation Spacer113_6 Horizontal Expanding 51 0 Spacer115_5_2 Horizontal Expanding 41 0 Spacer37_2_2_2 Vertical Expanding 0 22 Layout33_2_2 unnamed 0 6 Spacer33_2_2_6 Horizontal Expanding 50 0 Label12_2_6 7 5 0 0 1 WinPanel You can safely skip this step if you don't need a DVD Menu. WordBreak|AlignCenter Spacer33_3_6 Horizontal Expanding 40 0 page Menu Format unnamed 11 6 SetBanner_9 @Banner_9.setText(@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/banner1.png) Banner_9 AlignTop|AlignLeft Layout71 unnamed 0 6 Label5_2_2_2_2_2_2 Arial Black 36 Menu Format Label7_2_2_2_2_2 Select which image aspect ratio you like, widescreen or standard 4:3. WordBreak|AlignVCenter Spacer113 Vertical Expanding 0 16 Layout34 unnamed 0 6 Spacer72_2 Horizontal Expanding 184 0 Aspect Aspect Ratio @StandardAspect@WidescreenAspect unnamed 11 6 StandardAspect 7 0 0 0 &Normal (4:3) true @null false WidescreenAspect 7 0 0 0 Widescreen (&16:9) @null true Spacer72 Horizontal Expanding 184 0 Spacer113_2 Vertical Expanding 0 16 Label7_2_2_2_2_2_3 Select which television system is used in your country. Most countries use PAL, while North America, Japan, Korea and some other countries use NTSC. WordBreak|AlignVCenter Spacer113_3 Vertical Expanding 0 16 Layout53 unnamed 0 6 Spacer108_2 Horizontal Expanding 151 0 Label60 Television System: PAL NTSC TVSystem 7 0 0 0 0 @widgetText Spacer108 Horizontal Expanding 151 0 Spacer113_4 Vertical Expanding 0 16 Layout33_2_3 unnamed 0 6 Spacer33_2_2_3 Horizontal Expanding 50 0 Label12_2_3 7 5 0 0 1 WinPanel You can safely skip this step if you don't need a DVD Menu. WordBreak|AlignCenter Spacer33_3_3 Horizontal Expanding 40 0 Spacer113_5 Vertical Expanding 0 16 page Decoration unnamed 11 6 SetBanner_10 @Banner_10.setText(@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/banner1.png) Banner_10 AlignTop|AlignLeft Layout52 unnamed 0 6 Label5_2_2_2_2_2_2_2_2_2_2 Arial Black 36 Decoration Label7_2_2_2_2_2_2_3_2_2 The DVD Menu will show thumbnails of the movies in the playlist. Please choose what the thumbnails should look like. WordBreak|AlignVCenter Layout36 unnamed 0 6 Spacer76 Horizontal Expanding 51 0 DecoPicture 0 0 0 0 Spacer76_2 Horizontal Expanding 51 0 Spacer37_5_2 Vertical Expanding 0 16 Layout35 unnamed 0 6 Spacer74 Horizontal Expanding 111 0 Soft Edge Film Plain SceneDecoration 2 @exec( DecoName[0]="SoftEdge" DecoName[1]="FilmRoll" DecoName[2]="None" echo "${DecoName[@SceneDecoration.currentItem]}") Update @DecoPicture.setText(@exec( if [ "@SceneDecoration" == "SoftEdge" ]; then echo "@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/DecoSoftEdge.png" elif [ "@SceneDecoration" == "FilmRoll" ]; then echo "@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/DecoFilmroll.png" else echo "@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/DecoNone.png" fi )) InitDeco @DecoPicture.setText(@exec( if [ "@SceneDecoration" == "SoftEdge" ]; then echo "@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/DecoSoftEdge.png" elif [ "@SceneDecoration" == "FilmRoll" ]; then echo "@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/DecoFilmroll.png" else echo "@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/DecoNone.png" fi )) Spacer74_2 Horizontal Expanding 111 0 Spacer37_5 Vertical Expanding 0 16 Layout33_2_4 unnamed 0 6 Spacer33_2_2_4 Horizontal Expanding 50 0 Label12_2_4 7 5 0 0 1 WinPanel You can safely skip this step if you don't need a DVD Menu. WordBreak|AlignCenter Spacer33_3_4 Horizontal Expanding 40 0 Spacer37_2_4 Vertical Expanding 0 16 page Menu Preview unnamed 11 6 Banner_11 AlignTop|AlignLeft SetBanner_11 @Banner_11.setText(@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/banner1.png) Layout79 unnamed 0 6 Label5_2_2_2_2_2_2_2 Arial Black 36 Menu Preview Label7_2_2_2_2_2_2 Creating a DVD menu can be a time consuming process. If you want to get a quick impression of how the menu will look, you can press the 'Preview' button. In case you don't like the result, just press back and adjust your settings. WordBreak|AlignVCenter Spacer37_6_2_2 Vertical Expanding 0 20 Layout78 unnamed 0 6 Spacer139_3 Horizontal Expanding 81 0 ExecButton15 NoFocus Preview image6 @setGlobal(Command,Preview) @setGlobal(BuildMenu,true) @Playlist # Script expects to be working in it's own directory... cd "@global(_KDDIR)" echo "" >> "@OutputDir/DebugOutput" echo "" >> "@OutputDir/DebugOutput" echo "KOMMANDER: RUNNING SCRIPT FOR PREVIEW" >> "@OutputDir/DebugOutput" echo "" >> "@OutputDir/DebugOutput" echo "" >> "@OutputDir/DebugOutput" "@global(_KDDIR)/DVDAuthorWizard-Builder.sh" "@OutputDir/Config" \ "dcop @dcopid KommanderIf setText PreviewProgress" \ "dcop @dcopid KommanderIf setText PreviewProgress" \ "dcop @dcopid KommanderIf setText PreviewTask" >> "@OutputDir/DebugOutput" 2>&1 if [ "$?" != "0" ]; then kdialog --msgbox "The Preview process was aborted prematurely." else kfmclient exec "@OutputDir/Preview.png" fi Button Spacer139 Horizontal Expanding 81 0 ExecButton15_2_2 NoFocus Abort Process image5 @exec(killall DVDBuilder.sh) @exec(killall transcode) @exec(sleep 1) @PreviewProgress.setText(0) @PreviewTask.setText(Aborted.) GUI Spacer139_2 Horizontal Expanding 81 0 Spacer37_6_2 Vertical Expanding 0 16 Layout38 unnamed 0 6 Spacer81_4 Horizontal Expanding 91 0 Spacer81_3 Horizontal Expanding 91 0 Spacer81_2 Horizontal Expanding 91 0 PreviewProgress Spacer81 Horizontal Expanding 91 0 PreviewTask Spacer37_6 Vertical Expanding 0 20 Layout50 unnamed 0 6 Spacer33_2_2_5 Horizontal Expanding 80 0 Label12_2_5 7 5 0 0 1 WinPanel You can safely skip this step if you don't need a DVD Menu. WordBreak|AlignCenter Spacer33_3_5 Horizontal Expanding 80 0 Spacer37_2_5 Vertical Expanding 0 32 page Build Menu unnamed 11 6 SetBanner_12 @Banner_12.setText(@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/banner1.png) Banner_12 AlignTop|AlignLeft Layout67 unnamed 0 6 Label5_2_2_2_2_2_2_2_3 Arial Black 36 Build Menu Label7_2_2_2_2_2_2_4 When you are sure about your settings, you can press the 'Build Menu' button below. WordBreak|AlignVCenter Spacer115_4_3_3 Vertical Expanding 0 26 Layout76 unnamed 0 6 Spacer136_3 Horizontal Expanding 81 0 ExecButton15_2 NoFocus Build Menu image7 @setGlobal(Command,CreateMenu) @setGlobal(BuildMenu,true) @Playlist # Script expects to be working in it's own directory... cd "@global(_KDDIR)" echo "" >> "@OutputDir/DebugOutput" echo "" >> "@OutputDir/DebugOutput" echo "KOMMANDER: RUNNING SCRIPT TO BUILD MENU" >> "@OutputDir/DebugOutput" echo "" >> "@OutputDir/DebugOutput" echo "" >> "@OutputDir/DebugOutput" "@global(_KDDIR)/DVDAuthorWizard-Builder.sh" "@OutputDir/Config" \ "dcop @dcopid KommanderIf setText MenuProgress" \ "dcop @dcopid KommanderIf setText MenuProgressGlobal" \ "dcop @dcopid KommanderIf setText MenuTask" >> "@OutputDir/DebugOutput" 2>&1 if [ "$?" != "0" ]; then kdialog --msgbox "The Build Menu process was aborted prematurely." else kdialog --yesno "The DVD menu animation is ready.\n\nWould you like to play it?\n\n(This is not the DVD itself, just the menu)" if [ "$?" -eq 0 ]; then kfmclient exec "@OutputDir/MenuPage1.mpg" fi fi Button Spacer136 Horizontal Expanding 81 0 ExecButton15_2_2_2 NoFocus Abort Process image5 @exec(killall DVDBuilder.sh) @exec(killall transcode) @exec(sleep 1) @MenuProgress.setText(0) @MenuProgressGlobal.setText(0) @MenuTask.setText(Aborted.) GUI Spacer136_2 Horizontal Expanding 81 0 Spacer115_4_3_2 Vertical Expanding 0 26 Layout57 unnamed 0 6 Spacer90_3 Horizontal Expanding 180 0 Layout56 unnamed 0 6 MenuTask MenuProgress MenuProgressGlobal Spacer90 Horizontal Expanding 180 0 Spacer115_4_2 Vertical Expanding 0 26 Layout33_2_5_2 unnamed 0 6 Spacer33_2_2_5_2 Horizontal Expanding 164 0 Label12_2_5_2 7 5 0 0 1 WinPanel You can safely skip this step if you don't need a DVD Menu. WordBreak|AlignCenter Spacer33_3_5_2 Horizontal Expanding 163 0 Spacer115_4 Vertical Expanding 0 26 page Finalize DVD unnamed 11 6 Banner_13 AlignTop|AlignLeft SetBanner_13 @Banner_13.setText(@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/banner1.png) Layout67 unnamed 0 6 Label5_2_2_2_2_2_2_2_2_2 Arial Black 36 Finalize DVD Label7_2_2_2_2_2_2_3_2 Press the 'Finalize' button below to finalize your DVD. All files in the playlist will be gathered, merged into a DVD file structure and stored on your harddrive. When the Finalize process is finished, you can burn your DVD in the next step. WordBreak|AlignVCenter Spacer125_4 Vertical Expanding 0 21 Layout80 unnamed 0 6 Spacer142_3 Horizontal Expanding 71 0 ExecButton17 NoFocus Finalize image7 @setGlobal(Command,Build) @setGlobal(BuildMenu,false) @Playlist cd "@global(_KDDIR)" echo "" >> "@OutputDir/DebugOutput" echo "" >> "@OutputDir/DebugOutput" echo "KOMMANDER: RUNNING SCRIPT FOR DVD BUILD" >> "@OutputDir/DebugOutput" echo "" >> "@OutputDir/DebugOutput" echo "" >> "@OutputDir/DebugOutput" "@global(_KDDIR)/DVDAuthorWizard-Builder.sh" "@OutputDir/Config" \ "dcop @dcopid KommanderIf setText BuildProgress" \ "dcop @dcopid KommanderIf setText BuildProgress" \ "dcop @dcopid KommanderIf setText BuildTask" >> "@OutputDir/DebugOutput" 2>&1 if [ "$?" != "0" ]; then kdialog --msgbox "The Finalize process was aborted prematurely." else NumWarnings=`cat "@global(WorkingDir)/DVDAuthorOutput.txt" | grep "WARN:" | wc -l` if [ $NumWarnings -gt 0 ]; then kdialog --yesno "DVDAuthor issued $NumWarnings warnings. DVD players may experience display problems.\n\nWould you like to see the warnings?" if [ "$?" -eq 0 ]; then kfmclient exec "@global(WorkingDir)/DVDAuthorOutput.txt" fi fi kdialog --yesno "Your DVD has been finilized and is ready for testing.\n\nWould you like to test your DVD first?" if [ "$?" -eq 0 ]; then X=`type -p xine` if test $X && test -x $X; then kdialog --msgbox "Please close the DVD player when you are finished testing, and advance to the next step." xine "dvd://@OutputDir/DVD/" else kdialog --error "DVD playing application \"Xine\" ( Xine-UI ) is not installed on your computer. Xine is required for playing the DVD." fi fi kdialog --msgbox "Press next to continue to the last step." & fi rm -f "@OutputDir/Config" Button Spacer142_2 Horizontal Expanding 71 0 ExecButton15_2_2_2_2 NoFocus Abort Process image5 @exec(killall DVDBuilder.sh) @exec(killall transcode) @exec(sleep 1) @BuildProgress.setText(0) @BuildTask.setText(Aborted.) GUI Spacer142 Horizontal Expanding 71 0 Spacer125 Vertical Expanding 0 21 Layout66 unnamed 0 6 Spacer123_2 Horizontal Expanding 121 0 EditXML &Enable manual editing of XML file false true Spacer123 Horizontal Expanding 121 0 Spacer125_2 Vertical Expanding 0 21 Layout45 unnamed 0 6 BuildProgress BuildTask Spacer102_3 Horizontal Expanding 101 0 Spacer102_2 Horizontal Expanding 101 0 Spacer102_2_2 Horizontal Expanding 101 0 Spacer102 Horizontal Expanding 101 0 Spacer125_3 Vertical Expanding 0 21 page Create ISO unnamed 11 6 SetBanner_14 @Banner_14.setText(@global(_KDDIR)/../share/apps/dvdauthorwizard/Pictures/banner1.png) Banner_14 AlignTop|AlignLeft Layout55 unnamed 0 6 Label5_2_2_2_2_2_2_2_2_2_3 Arial Black 36 Create ISO Label7_2_2_2_2_2_2_3_2_3 Burning a DVD to disk is a lot easier when it has been packed into a single ISO DVD Image file. Press the 'Create ISO' button below to create a ISO Image file. WordBreak|AlignVCenter Spacer106_3_2 Vertical Expanding 0 63 Layout80_2 unnamed 0 6 Spacer142_3_2 Horizontal Expanding 71 0 ExecButton17_2 NoFocus Create ISO image7 if [ ! -e "@OutputDir/DVD/" ]; then kdialog --error "You did not finalize your DVD yet, please go back one step to finalize your DVD." exit fi RequiredSpace=`du -b -m "@OutputDir/DVD/" | awk '{print $1}' | tail -n 1` FreeSpace=`df -m "@OutputDir" -P | awk '{print $4}' | tail -n 1` if [ $FreeSpace -lt $[ $RequiredSpace + ($RequiredSpace / 10) ] ]; then kdialog --error "There is insufficient free disk space to create an ISO Image file.\n\nPlease free some disk space and try again." fi K3BVersion=`k3b --version | tail -n 1 | cut -d . -f 2` if [ "$K3BVersion" == "12" ]; then BurnImageCommand="--dvdimage" else BurnImageCommand="--cdimage" fi Label="@Title" if [ -z "$Label" ]; then Label="Untitled_DVD" fi konsole -e mkisofs -V "`echo "$Label" | head -c 30`" -dvd-video -o "@OutputDir/$Label.iso" "@OutputDir/DVD/" FreeSpace=`df -m "@OutputDir" -P | awk '{print $4}' | tail -n 1` if [ $FreeSpace -lt 2 ]; then kdialog --error "You ran out of free disk space while creating an ISO Image file.\n\nPlease free some disk space and try again." else # Create some handy desktop files: echo "[Desktop Entry]" > "@OutputDir/Burn $Label with K3B" echo "Exec=k3b $BurnImageCommand \"@OutputDir/$Label.iso\" " >> "@OutputDir/Burn $Label with K3B" echo "Icon=k3b" >> "@OutputDir/Burn $Label with K3B" echo "Type=Application" >> "@OutputDir/Burn $Label with K3B" if [ "@CleanDVD" == "true" ]; then rm -f -R "@global(WorkingDir)" rm -f -R "@global(OutputDir)/DVD" fi kdialog --yesno "The ISO Image is ready.\n\nWould you like to burn it to a DVD disk?" if [ "$?" -eq 0 ]; then X=`type -p k3b` if test $X && test -x $X; then k3b $BurnImageCommand "@OutputDir/$Label.iso" & else kdialog --error "DVD burning application \"K3B\" is not installed on your computer. You can burn the ISO Image file later, using the burning application you prefer.\n\nYou can find the ISO Image file of your DVD in this folder:\n\n@OutputDir" fi else kdialog --msgbox "You can find the ISO Image file of your DVD in this folder:\n\n@OutputDir" fi fi Button Spacer142_2_2 Horizontal Expanding 71 0 ExecButton15_2_2_2_2_2 NoFocus Abort Process image5 killall mkisofs GUI Spacer142_4 Horizontal Expanding 71 0 Spacer106_2_2 Vertical Expanding 0 64 Layout54 unnamed 0 6 Spacer111_2 Horizontal Expanding 101 0 CleanDVD Remove Temporary &Files true false true Spacer111 Horizontal Expanding 101 0 Spacer106_2_2_2 Vertical Expanding 0 64 789c7d9757535ccf11c5dff52928f59bcad5ffcda15c7e4088252f412082cb0f7dc30a566410c9e5efeeee5f2f0221ec7bd882b33373663acee5af4f73075b1b739ffefa70736bb727e55c796cd7739faa9f67678ffffcd73ffefde163bb35e73fcd616faef5f16f1f3e6edfce9573e38bf33a884e9d488327b82dc09b81e0d280b702f09cdf0e30ff04de09307e0bef0618efc07b01f836bc1f60fe3e7c18e03c77700b30dfe04580f95d7815607c0f5e07e04bf049003dced7e4617c13de0a30fe19de09a03f807703ccc79e662f005f83f703f0097c10404fe016402ff58b00f3cfe065007e0faf02acc7ffcd3ac0fa9be0b83fe3b30cc70038fe6bf1c0cfe1ed007a3fe09d00e30ff05e00de86f703ccff091f0618cffd2dc078135e04e0ebf02a003f86d701ce5fc02781e08506277db047896fbb19603fe673fc8c0ffe6ef330cef9da9d007c04ef06d80fffb4fb01781f3e0cc0bfc28b00fae44fbb0ca047bcda5500fe04af03ccdf094ebae7f9891fc7497f73fe4e37c0fa9c6f01f6efc18b00e3d453a70c303e0faf03f003f82400c7ff9457ee7f0a2761d15b85b7028c7f87f703f89ff3750701e67f830f0370f2a56b01f811bc0cc087f03a801ef9de9d04d80f3dca9df315c4b7d709305ec279d0db80f703f05d781160fe177819601c7ff4aa009c7ed1ab03f887f393ce693ff5d9ef04e0d433dbe5fef8bbcf03277ffb83001c7ff72dc0fa0a5e04e0b9be0a30ff0a5e07e0e3e0834600be02a761b0be86b7028c5fc279e08bf061004eff1b58004ebf1a9401ec273e832a803ef93ea803cca79f0f2601c6f13fed37f3897aa1fcd37fe4ebb01380d3bf4897cc6fea7fd80bb03ffd75c803a77e871680d38f874580f5a95f0618a7be875580f1167c1280936fb4d7ccf7433805c67af28ff4cdf3613fe1cbf85ec37120f3b99f385ede3ff4472b02cc27ffac0cc089bf5501f8057c12806f05e7ba4a7fd23f69ff799fe22fca3ffb17f55974038c53bfa47fe627f120ddb29f717f1683009cfe8d3bd3dff88be3677ed06f0b1e38f956940138fda3a802aca7fe8a3ac0f8237c12609cfba96c04e0f89feb2cf399f397ad00e3e40bed95fe28e433ed2ee3857f692f693ffd9872cf7ca2ff94fd009cfa21ddd37efc4dfa647dd05f0857d62bf721e666bd522f250feb737e158053af651d80e7fa49004efc79fd48fb79dfe0facef8524f5c87593fd423d749de0fe45bd509309f7854dd00e3c48ff696f6133fda4bdacf7d4279a7fdf437ca25f397fe407aa6fde40be14dfbe99f989bf613ff8a074e7d557580f9e4573509304e7df0ba95f9cdfdc8eb4ada4f3e73fd67fc739c0b14ce7dcdf596f6533f5c27693ff9443bc77ea55e69a7f97e42fed0cef27d8b7cad8701f4b80f6a0bc0b97f48e77c7f4c3d020ce7fec6dcec97bc4fd53c8c93fff52400a73ff37a99f1e7be98340370fa3faf3b197fec9bb40370fa2fd779f653f29beb33ed67bf492f00a79f4efa0138f94efb4efbc957da63c69ff71fda51c63fcf4301c3f13fe98cfd4afe12deb49ffac2dc8c7fdacb137cfbf64fa8a869a1a5565a3b26fa5d8ff544a7efcd7d4f437fe8a99ee9b95ee8e52f5ce9b5dee8adfefc53e7ad86dee9bd3ee8e3abd5bfe349e7f5f3ffd3d005fda28bcc1d3996669f653f45f215c65675edf5695e6be8ba6ef8ec4b1d3b96c19563ac9bba35fb26f892cfd8d69d1795170d9dea571fdd752fc49aad99d295fff5f89bca88b36cebdeb3cab3862b7cd37db7f6400ff5c8d76cfe5279d4867f928d5d23ec89cfb92ebcd1686a4bdbdad1aeab2cb2f3f3de477eb267d565562f61e1a5f6f224a9e1a7e8fbfe031d8a6a5744ec9546038d5059c6174bfe6d9cedc867e195d490425b52ea402aa965e21adfddaed7e7f015fe77c465e4bf8fe458f75de1514e64a6a153f921a7e25925e7da490db9904bac5f962b5ff1a2b0a50db9946b5d940bbd16959bd4905bf9e96bdf6adcf97ef7daf6792a0fae12b9bae90a8f7e82433f695b0fe449e6758ac66759902fb2e81a6e8b7bb52d4fbec79dc7afe3bfaf7c95b8975cc13ffbba2b23b8ca92eb3c6b2ccb8aacfa3906fe6dcb573ec529e4c1bf1db9de9aacebd86dadf1c121f16fc986fb6f55c6b229a9312f5bb22d0b7e8e0dd9c1a3877e8aa19cbb4d5f3d6653dd90635714d7169fb1e1bb7d915d5fb327df641f8d035f7d284732d6e18b25527a9ccfa51119204de70bbe839fc6f73ef2bf5b8eb62c4a47f27eeff9dc233f5bc7f7388d53b8cdd77e8ab1fba2ef511bc8d07db0eddfa4c2a1e94c63cfc4f29da6b0d223329c654628dcb9ed4f3efb5e4eb56795db70e62b365c654557ad46c135acd49ee47bf8c4f798bc56f0537866b8557beebf86b3b17d777f8cfd73f84b21ce51da71c6c54eb41ff1763fcc143c33a332221a47a0f2586db81f5f2bb4dca22d9ba6864eed87e7cbc8bb5d2a34665de8d1a3619e1dfedbbfbb76eb4f679e482cc8ba9da5c6f6ad9dbbbd772818b9147d247271dbb3e8422f5cebc1cfb96217763a8b4958b2659711b799c68979cf75bbcd77bcb46b6dda8df745b15bfbe99d606477766f37f620371ea7337bc4925aceece9a56edd9a07fffe113f5cdabc7df6dc7890862df8c8175bb4051b59e16bd4966cd9e3115e59b1153b79d14065d5abc3fb9c5cd99a8de4c2d6fdbb0dfd1116db580bdbd4ae6dd9b6edd8a37b65cfbefa49a7bff75399daaee7e948966ccfeedd9a07bd951dfbe60af3fa64fbe63ddb1eecc03366e8f139b4d1db7e9a778b1d79e58ca8a643cf06f597ab8635dda323cfc215ef73071e23ef07d6b276d4d13b1a53ebe877f7fc85674ad7f361cb4f5d7aaf59a48e3dad25a23f9135bf45a6efdd0dbf6e8835ebfa392aafcd33f75c153dcb23bd8bd28ef781523fbf5678efbef5f13b7bf2d8f43cbfb7bd1a25fa850efc3fa4810dfd2e9ebebd71dfbff7639e0c0a95f922ffdf2874c7f6fd2efe63fdffd678d6798bf7677efccfdf3ffc1765e617c5 789cacbdc992f33ad2a6b9afab482bedcada54a1595af442f33cc61c6dbde02891a24849d444d5cd3703efebfe599d3fad32fb589eb03c994f92220187c3e17038c0fff93ffef1b59affe37ffccfff965eac4be0fcc3d959e77ffc0ff77a3864ffcffffb7fffaffff6df4b2fb57fd4cbff28b7aab57f94fffbfff5dffebb53ff87f38fc28bf9e797dd82b2b91eb9ca5573ff9feb35733d526e98eb57e5d62f1fbe956df3fcb6b2f3cbe152d9336c0b974c79f689b229cffea65cf9e5ed40d994cfef2b9bf21d16caf55fdef9caa6bc8793b2296ff0a96cca1bfef9bd29ef61ab6ccafbd4fa964d792f25e59229ef54d994d769924b9077525436f573abcae67eafae6cea978c954dfddc86b2a9df365636f5b3ff5c6f9af2ff6153df6ca96c99e75f954dfdfdb2b2a9aff71046fb1c126553fec351d9946f3b5436efb75be432eaff785536bf3f95944d7da395b2799e535486be95954d7ddc176553fe53aaec1afe73ddd4e721fa59467d667765531ebfa76cdaa3ef299bf2c4076553bfe0a16cdee78a3e55505fe7a26c9effd8289be7bb0f6553ffb8ab6cdeb76b299bf69e15958d3cbcabb291c7e9ae6ce4f17c2a9bf2a57fee37f2083261d4ffa9e545ff5a46cae67e5bf4b38afa75abcaa63efbadb2f97d785236f579bc289bfab82565539fa7f4f76ac9f427e78b5cc3fb8e1d65733df85636e58f7bcaa63cc156d9942738291b793d3365239f58ea5bc3fb779fcae6f7871765f447f97d1de57b3695cdf550f4b18edf9f2ecae6fdce0fb981df7b7fd85cdf7d299bf205caec5fa24f4dfc3e3d2b437e2565f37ef7ae6cf4c35e0bc33ecedf954d7bbb629f5b2cdfb7b29177d752f64dfb7f902df6f77765d4ffaa6cdaff992a9bfaf42d6553bedd4418fdd111f9db2ccf5319fa7b5736f589ffdc6f9e97bc911df64f47d9c8cb13fd73d8fff53ae52dcf73f1fb50c6370fec77958d7d7d883c3c8c07fe9eecb3bd685ff2e1c1dcbf67ff2e71bc082fc2d09790fa58a27de951ff4aec8f7bcaaf447d0ce57a03bf4fd81e25cacf06977e472cd39e256523cfe39732c6db9ab2d1efc05536f2ee7e281b796d0bca787f53d9d477f7e73adafbcff3ccf8ebb7948d7e75f43aecb77b55c6787a5436f23e6d95a1ff1d6553feb4a26cca9fd4958dfe9fb47c6553fead9487edd37d5736fad35e289bfbcf7d32c7bfde4dd994a7e328637c93e7cbf8515336f50ba664b6f7f10f1bf9f57764da4bbba98cf6ab289bfed7f7954d7d1d8b5ce7f83c2737d0de6d795e03f23d0fc8cd32eceb0b99f622aa299bf29d5f85d11ecf07d942fddd2799fd7399915df867a71999fd6d067fa154e278d8c5fbcabf1e88799faf6ccadb3e2ac37fb2948dbeb91761b4ff7944667b3b9fcae6f77e5dd9b4777b49a67fd32928a3bd6d65a3ff1d4bd9bc3fbd91d9fecf9332c69b4419e3a5d4b702fd8dd664d18f9db291475fde4ffd48a5be75f49fd425733c79ac954d7f76bec9b4ef11ec55b944fbf13c2bc39e46649627803e55c4deb41365f3fe70ab6ce4d58e95e10f1595515f47d9c83fde2b1b7dd9fbca46beb1a56cc653afa16cdabbfb2a0c79441565f87f0b65cc2776ca463ecf8e32c69bbbb279bf5d22539fbcaab2b16f81c8a384e79f6ec215b44f4aa63df14eca469f66f27cfab3871e99fad49e2b9bfafbf27eb68fbf5346ff1079535f0e4d32c797ee4318e5edba64fa33d946d93c2f582a9bf29edfc8f44f821f65ccbf0a64f13f5265d3dec76f32f5311579d07e9ca7648ed70eec4955f4cffbc3b0776565d3defb9632fa5b5dd9b477f4e77ee8df4ad9b4bfd35136f5e9feb91ff38593b2d1bfcea730c6b7f847d9942ff973ddd8b3e9b7b291ef49ebc3f1ab288cf9aafb45a6fe3d1bcaa63ebd87b2691ff74ca6fe24a132e6cb3e99fae3959461ff8aca98dfcc954d79b385b2914fe090a96ffdadb291fffea86ce4dd95fbe9cf9ca47e6cff40deefa27e5d5b18e38f775736f24a3ec8f4cf5ce87b4df4e53c5136f2ef3d954d7dba9fca463ec7ae30fc077b45a6fccf6365c8ab4de6fcb6fb46e6fc6fe7299bfaec1232e5df79289bdffb523ecab3bd5236e5ef7c281b7df79bca46de6140667f778bcaf03742618ecf3f64f6fffd5c18faba5f9039be4cefc2986f1d7cb2f80f0332fbef439eefd37f817da895a8ff2eaf971a8cbfa0fe7569bffd4e19f1b08632c6675f19f12e4fd9c863375736f28daacaf06fbe84d17f773365cc4fb53c90c7419f8ff1e5f4102e63bcff26535f166d32ed7fc75346fca846667f0d0acaa67f254365ccffa5bed40ff74319feec94ccf6f78ecad047b99fededcafb9bf467e53aed73b05036f62f92f2389c4f4a7d5cc87fcafbf3f90ff4e74a66fd1d8c6f0d695fd75286bc4bca8867daca989f9f95113fab2ac37fff5636f28b36ca467ec74f61dae75765c42bc7c265cc4f63b2cc1f2aca66fc8f4232eb77dc2a1b793b727f05fd25b893ab187f3da94f0def4f4664b65fdc5436f5d93964b65fbba18cf9dd91dc64bc325536bfcfd664f6d7a4208cfe789893d9fee72199f67a2fe571a10f7bca53fcc994e52bd5511f1bf6b029ed1dc5cae8cf5d65d3dee71f65f833136523aff34c19f6abaa0c7fed5b19fdc51346fff60365c43f2365f33cef8bccf63ece948dfdeedc8551bf50ee67fb778565be7f5736fad9c9c8b4ffcfa332fc55914f95f1937765cc7fcb64f67f4fb881fa77de958d7ef6a5be0d8c673b797e93f3ef3ab9c578da92ccf6ee4af939be760bc2d05f07fe6e4be7072d65a3efe15319f549958d3c970b65e3bf441732e5df77c99457ef4ae6fcb827efab517f7fc875d467f74d667ff1db64eaff3e2653df9f7d65231fbb46b651bed82633def458917dc83b843db3441ec7b6329ef7a90c7f59ef877d0877cae6feb3decff1b2ab6ce43797eb32de1c85b91e33239751bede4518ef4b0664ea6bf79b4c793b5565d39ffc0e59e2151fca881735c88c9fb6e5fd32deb484d11f8f0199ed719c93195fdcb13e3a7ec09ed86a4f96ca886f5c944d7f99bd2b235eba50467caa234cfb102a239ee009c33fe9dec8e28fb78571fd7920539ea143aee17df68f30e4efedc9b4f78b1ab989fa6ce5794dc4039f5532fb6722e5b1f1feec95ec727e49f9e4d35173fffc836cc19e1c53b2c437e15f38da9f2365cccf3d65d3bf0e2d61eae73b99eb5f8945e6fac4b34b66fca23d2137602ff67732fdcdee0f99fdb37d1066fcfb49b6d17e498d2cf3891bd92b197984d027a7c4f9f6a344e67c3884febb527fa7ad8cf59f3765cc6f0ac2b4a7afca98ef4e84d13ec18c2cfec20f59d6675ec8ec0fbd26d9877c7cf817aec49bbd0b59fc67f8139e94df2e2b23fe5152c67a6f45d9d8a38b32f4bfbd21f37da76f7219f274e5f92dca7f429678ff8b30e4b382bdf1b4fc980ff952de6ca58cf9fd54d9d883f356d9c8d73b08b3fe0fb2d8c322b90cfd3b7f2863be5d2157d05ede2799edb1cbc835ac1776e579d497599bdcc078d497eb5619f1f411d9c1effb7bb20f7d7aa2fff825aed73a46ff4d781ff6654066794e0b32ed6d180aa3fee777721debdb9d2d99f6377c90d9bf4e3ed9e1f8df21bbe8cfd99cec313ebf0397aa2563cf1e65b28deb81d1bf92ae4fa47765630fec57658cd74565d8c72f61bcdf8b95b1de3025b37db77b32fda3ee46d9fc7ede5236edbd7f9029bfb84d6e427eed1399f6a6f324539f1f4b70a981f67f187df91d9d707d7e5436fd697f50c67a6c4518f25af864c6a3932fb2f8872365d39e27795f13f20b57649ff1de3eb854c1fd2bb447b9cc78c1d9d8c3dfd528c427171d32c7f3d821d7713d9c93397f680764daa76d9fccf97eafad6cf4e952162e637d4f58e2352c8fcc1fa2bdb291c752b886f58a9d4de678f9a8905de69398f1a5a4f1c2e4a16ce4e16e94e11fbd0ba3ff2d5d65c40f8764896f1cc82ef4bff306cecb63e4df467fd4f8d37c280c7b79be92391fdc3dc8d5b269cfe3982cf57b13e67a60406e70fda547b6f0fcae4f167f3d03ff6a98a90fefcf6b60ca7f40fbd5ca5cefd842bef57cfa8bf8fd824cfd884664962f69919b90ff3321b3ff2c9764ea47b74ef658df17b0ac37646fe43afacb1cef6b887dd87e9299df70389369cfda4532dbebf242167fa044e67a545c5436f2dd4fc0790f87be3864ce2fce1bb2ccbfa19f4db16f278f5c82bd5a1ec92ccf6245167f664d76106f98a2fd9a25ae4f3a2732d7a7a62d32fdcbc782ec411eb302b8ec5691bf65c6bb523e9f82fef80332edd9624bf6d1df57d0d75689f94cfd884cfbd36b9065bd0ffa6a89fc9fc2ac9f87fe996b27e72b1e99f66a0b7bf7ebdfc21f81bdcffd53ae1fc13e3832ff3e8ec835f82f8725b9c9f5e23e99fa36fb102e1b797864f13f7a29b95c36fd671b92abf40f61fff2d641fbcc51dedcba311f0ef6c215fff95105e7b7237e01fbe2bdd03f7b7c9129afc58d4c793e23b2cffc26f45f4fda7b95926dd8e339e4eb95e91fad3c32fd932deaabfece7443a6fec67d32df1fcfc81eda7f67da33371e92cfd323d7cba63f1e4332db3b9b916dbc3f7892f9fce91a5cae548c7ca63fe04a1df66cba24b72a465e47d33fcb25896f3a2eb84c7fe05123572a289ff187736bc6f941b70196f963c2ebd25ef3045c667f88519fdff529f3fef4a16cc6b3ed3799fab5b8834b6ccf5987ccf12f6e81cb8c873d66c255c42b8d7e95abbf336023ef8330e7672532e51791457f9727b2ac2f86c2d0f72dea57cdff1fa3dfab2bb8c2f9e00df2d7f8fe0ef2a949bec98a5ce67c2f7b2733df6e86f6c86773b097ed3a99fad03f289bf7b777ca461f7b9057eeada23d575b32f56de5832b5cbf3f43de1a8fb52370b9057fdb3e902df8bfab1b38af2fec097edfcce7cb581f80fc9a25fa67bb2b99f1b7282033ffc146799bf9f3918f6a911dd8a38ef13fcaad12d77b4e0199e39b1d933dda13b47fabccfcc6e996ccf53abb4db6619f8e66bc2be7da0d7978b86e95b9fef3ac28431e4fb253c67804f958150bf391b3b12765bbc4f5bf1edacf2e733ddbcec8b49f67b4b723f6603522bbd0af13dee794397e47789e2bfedd71482e57909f3226db18dfe38ceca0fc3edad72df3f7bd33b952c1fccd2257abb00f667c2b7b158ed733337e97fdbc87633daf2b0cfb62efc9d5aab9df36fd27779e5dd8ebed9b70c5c8afbb0697e9bffb0d70a50c7d5a197b9a3b775c2fdf9af94e259f7da2bf2d3ec91efa77700597e91f6453618c9753a3bf958ac8fb64e45fc9b513f66e67e49dd756c6d32638efc168ff9e30ecf5c12633dfb1d705574ae83f3b8bdc40ff49707fbdc478ef62072ed3be2ff1fe7a2e01e49f76c92df677e38fe44f63bc6bef92696f7c63cf2a4dd1df638b6c333fc3f86395562e1f8c273199eb4dcb0eb842ffd739925dcc17a62b70cdaa98facf8c3daf5865aeef2e27e412f23d8e0372ad8cf1bd43167f1af5b52a8c970790875df6311fc83ec015dadb2edad72937e84fd4c1b90136fab334f6392f6d09fada8fc90ecaff803eb815b78af501c8cf13f92d7fc015da97b6b11f15bf4c7ff0d827fb15f83f463faabfe926e67df19adc803d3a18ff241f3e5a5c5f7e802b120f7a25cb7ac7965c417bed8dbe547fdd25239fe51c5c2943fe275eaf501f930db949ffd9f4d76a45ed791f5c617bb56d7219f29a96c0f91fc65b23cf6a35d70facd7ce9411cf7d0157247efe06aefad4175eaf79d0ffa5b1afd55aae7160d33ed57ab58cf69e9af6af36aa8c573c1ae42ac69b03ee6fe6ed8f7ce40158de3ff5c89467fb0cae72fde260f4a5dafa1d31cc750b9ccb1bf90a27b2c40bf664cedfed84dc40797bc65faae6fa5935e5c926648ffaff01ceeb679e3fc1fb9dbcff9af7af766407f66b520557385f580897e9ff7d902bb87fe582f316c67c06f2756a1c6f26289f5b91f99543b650bec91bd9c57875c1f3dc1ac7f733cae7e5fdd1f4bf05e4ed55e82f74bec8f4a75db94effea86f6f773fb83f5c129b842fbd3f6c916de774279fddcc142fc14ede9d71a558cefa63df3e97d9df10c63df6a79ffc1f8d13b911de8eb640caeb23d27663ccfddad0ac6eff0072cf6ba9f90730999fed824733e9bdae0aa85f9c2f201aebd60bcbae2f9956a03fec62500d75e6ae67a3a22972ac89f32fdb156ad707d71f24a667e796cfce35a3e7e54101f9b807f4b6cf419cfaf577cbcafed82738b83f5224fd9f4a74542b6a0cf33c8a75e6b401e13633f6a8d4a8bfee80bd9417f7d96c179f9b1fe0e79346b2ec6ab89b17fb55685ebefd32f70fe7e53feec93ecc0fea413b28fdfcf33705e1eac07a07c5695eb0569462ec11eba0732e763b6d1bf9a9ddb0bf3bcee8accf85e3a04d7aa55ecff31fa58fbed2fa63ed73259e21968cfdc5b417f4ff17c37d728e4c724e43afccd09dee7497f0b503fafcaf13b457dbc7cfc447e23f4d9ff1df14cf903b28ff8c2ea0ece350af39d16b90afbf718931bb09717632fea2fb9fe623f9a4bf671ff2e05cbfd13339ee69329d677d20657391ea433720bfe6df24d66bef2b44cf6aaf05fa6e0bac5f29fc00de6074c8dfcebe5dc829bfa5e76e05a3e2498fa34c975b4dfc5275b188fa61db28bfed833fe583df75e71ff8a9c3f1ffb7dfae05a15faddc1fbaa55fa877e02aed11ff48dbcebb97ac05f5d8dc135da8b744aa6fe7866fe56cf1f88feec1fc9925f3c277bf057bb787fbd5682bd9ed9e43afcf7b3893fd51b22ff3021d770bf9f925b90a77f22737d778bfa376af4971f2332edd5c4f8bff56655f29721df66adcaf8f29e5caf627dc3f4e77aabeaa2fdf70d708df3bb5e855c457fbd84e43afa873723d31e7aa85fde7ff1bea543f6d0be97089ccb03f7cfc9f4cfbc4018e35136263b68ef1ef4dfced509fb0556649ff96868afbcbf433e1eeae7aa3c2f64c683161f640ffec5e500aed9e8bf59012cfade47fb7b797b9bfb3dbcdfab31ff395d902bd057ff4066fcd7477ff4abdc2fe02dc91ee7f3a8bf5f63fc7b09f9fa790df13ea39f8d971af38f661699eb65cb17709debc7b3b230fcf3ac48a67f3631fdad51aad0fff35ec9e20f0cc135f6e7e794ec401f7c63dff2e90afde18bf16f1bf90408e3e13420d7713d2e907df42fd7b44feefe717c4b97e05a8bf6fd42b6e18ffb3199f6ac83f256eb36c797944c7d99187d6ee4ea8ffa7b6f641bf389fd17b866a3ffdedfc97cfe05efcbd515fd77ee821b928f66c6d346bdcafd65fe0d5c63fcb35f07e7160bfb8d8c7e34f2f114e3559291e97fec9ae07a09f6a85d2373ff61f645b6d07f166b32f37b7b68ef5683fe4004795bb93cc10bb2c3f8a64b7639df84fced5cdec847d883eb9c4f1c7d7203d71f437213cfdf6dc91cdf22b487937b18a6bdfb27703e6299f7a5a6ff34dcfcf988579bf962c3ab39e87f69155c677ee7e49d5c477f9b9f8421df4b4276f1fb7d046e54c136caebd7196f3e97c08d17c8db33fd239f5cb5a00f031b9cd717fba343b205fbd737f3f766de1fb89feb4598fbb347e03ad7a30645726ea1ccfd3eb8c17c98a5f1e7f2e9bd87f8caf14af621ef740bae3b785eef28ccf883917733774f107fca46e42af4a56fe4994f976a904784fa551b15fc7e61e4990f0f4dd89b7e4d19f66844b6a93fcae85fdd1658fc01af238cfe181a7bd6ccc581facc26e4dce335f2b1c81ede3f2890fd2afc67bcafde60fe70bf452ed7609f1be44a0df132c8a3deac23fe13429e8d469df6b547b6105fdf9bfed86ce60334c62bc8b7d5e078d5c1fbec4685ebd1682fa7497ff860fa5fd3ad737d325d937dd89b451ddca8c09f9836c98c7765df6417f16e0ff2f1ea36c6d3ce8dece2f9f336b851c6f8ba5c9139ffed37c9560dfe27eae337685f2e27723e43fce513dee7374be84fa9e98ff964ae06fd4f8f641bfe41fb4d98f158638ff3c189f957cb26d986ff98acc10dfacf0fe36fb7cab9c531fab735f3b5dfe937ecc3f441ae423f4f21b90e7bd10d84194f3b2b1bfdef0b37d0be13d33ead6a6e5f4cf9e6457083f1cd7d40a63fb0c3ef7377b386f93ae4910fdf5c3f37fafdebfee079dd14fcbb0069e4eb281b796716b8c5f85fcff8afad5c7fa10f67c82777a8c003fcbe91b72ff2b93d70cbae231fc3e87bab29e35daf046e36305e778c7eb75a4dc6938e7bb20dff696fdabf65d5399f5a411e565e1ec30397dca4fda8905b90e716fa60b55eaa88f79af1a365379b98efce505eb7e1e1f753fcde6d72bc3aa37cbffa8778dd1799f3c5b005cef5d1d4cf7925d3dfdf1bff209fac34d13ef100dc64bcb06fdac72a35189f1c78640feb03fe109cdb07ccbffbe45c418dbeb5c12d0bf62f30ed6be5f616feb383df97737d35bf1ff8e026fdc1684cae421fe7dfe446dd3cef392353be0363dff3c9a307fb966ec04dc69ffa467fad7cba0bfbbe5b92eba8dfd9f417abd6f0309f6c8fc0f9fb8dfce64b32e357f14318bfef1bfdb1ea0dc6f7d21eb8d5807ccfa67f588d06fdad2db9c9f17cdb5086bd19919b8cc714c81ef46f8bfa35f3f242df76e0fcf746ff67c6be58ad868578f06202cecb6feaf3c4fb5bd29ffc05b982fa75cfc2a8dfca8cd796d5b4a1af133c2fd75ff86bbd845c61fef70fb9ce78b8b1bf96ddf011bfe9bf809b158cdffd944cfb92429e768bfe5302fd72f2fe077f1cfae3fc2e6899eb3b61b4d76a4266ff5e427fdc6603f29b37c916c6cfcc065b25fc7e6aeca5e5b7684fdd21b906ff7d5e16c67ad0bc4a66fb4cccf3ed97868bf2cd2ae0a643fd7e05b7589ee84ab638df2d83ad17d8a399f127ec5293f951fb37708bfad337f5b3cbb9bca07fafe40ae207a725b981fe783c822dce5707461fec4a2e7ff3be95a9bf9ddb5bc41b676bb0cdfcb623ca57cfdf8ffc0813bfb21b4deaf719ef6b36e9df4c2ee05c3f8c7e2eba641ff67eeb802dee075b18fdb773fd437b0f7a64e6032e0a648e57bd22d8a27fdb37fa675bad2ae4d70dc94db457bf47663c6880eb768bf1c46e9bdc42ff5b3cc0969c0f80eb6ecbe7f880fa7ad29ebb886ce1f9f70fb28dfba757b28ffe3b83fc3cab0efb74aa0bc3ff7f9684b97ec8f759b4a70b632f6ddf2ad3de99f1c07969d521dfc907d9c3f3daef608bf967b327d9657eca99eca3ff44c63ee5ce7313f2755d32e35fcf39382f2fd633bbe406ec51c7d82ba76cbfc03fda19f9e59dbd81f2f762703e801a3e38603b9f811bfbb422539e535cafe6f244bed08b30ec77f64376f1fcee1e6cd1bec601b9caf31beee426fc97ee89dc82fe6d53b0cd78f596d7f3e930e6234b32fdfdc8d823a7de627c7756257bd0c7be696fa7d1e2787cfb26b3bf0c50de5ff38df8f1935c86bd8a5ec835b4d714f26fd80df8ab0b9427376fd4cf02d9657f31e3bd93ab27e433cbc84de8ff15e5cd8b83fafb6bb24b79197bee58760dfe4cdff46fc7ceed27f209c664da8387e96f8ed3623c32417b3a968ff9de02faea8afeee86e42ae7b709b941ffe38d4cfd4c216fd796f9598bdcc0fc65007df4f2f221befd43ae421fdba8af67333f6b1992eb18bfe7a88f9feb1bd6dfba641fe3570279fb16cfa379a23cbe5d67fe60486e421e1dd3deee8bd5647b4764e68b6c676407e50dcae05cffb0fee89119dfdf5ec935d4d749c81c4f672db28ffe94f0f90ee7830b630fdc92c5e7f91bb287febb72c0bf091ca67f4464f6df6c406ef27dc69f70cb0efd11dbc8c3ad58b51af2392a640ff6ee88e7556cc6afb6c6fee5933907e5bbd860cb82fc823638b72758bfbb90a93ff1945c81fe87efc2b8ff3024d3bf3b57c83eda6311809d17ce1f8c7d706b2dfabff3186cb1bcbd6fb20f7ded3485d11efe2bd8e67cf0b0225bd09fb943663ced2cecd730fea27deb16f3fb56a84fdd96f8c35518fe43f748663ce261fc79b76171bd78fb426ec17e8d676407e3ebb82b0c7b3a823c73f795e7e19cc98c67cf2f64ae3fafdec816ea3fe7f39d0ada3b42f99a16e73f73e84f53da677020d3dfda7f9399ef13be90690f1619d9877c7b5f60a70679aef83ec7c2f8e49bfeefb62c1bf18219ea9b4f0fa1af7d335eba563ebec3dff5c1b9fd34d7274bb0cd78ccfe492e437f9ed07fcbe1f97fd627b90479acef64de9fa1bded16f753f4503edb6ac05f5996c81cef2f90bf6dd3dece7db285788ef54576a02f835819f1e10399f1a2c822535ff72c8ff352873e2dc8f48712632f5d47ec977d02e7e305f2012fe416da6fd0273b907f7020fbf4b7219f7c4060bc1bf2776de6874fb664ceb71715b2457f2125db98ef2628bf9bf75fe4c735c8cc37b0dec82de8cfdef89bae97cb13fe7387dcc2f87212e6feb7c19d4c7f7e5027331f2634e3b7fb3b1e603f08dacbb7b93ed11b92abf017871f64e6435d52618e1781b229cfa041663e73f6220c7d391cc8cc4fbcaec85cef8c216fdf617cf75a03bb25cc2f6e46dfbc178bf18f7008ce0778e8e7816ca37dba09d861bca15720fb68ff93197fbc92c5e74f5c720bfa1357c90ec6e3fb1bd8e6f8d49d93996fbbea08a3bed686ccf8daf14676e06f0d4e64fa2f830799fb03ec09d9673c2a063b8c0f66286fb9c5f8a18bfbcb16f313d21a58fae3a845e6fef8d15118fecef05d18e3c52425335f72fb247b880f0e509fb2c3f3261731b946fbf24ae67a52674d6ea2bf8dd17e95dc0099f61fa3bc159bf984134f18f3c55599ccf1a35d21bb68afbb45f6b85e7907e7fd0deb872d32d7e3379fe41adaefba24737d6b9c2a9be70d51feaac5f5dd35e4918fdf90c7e2ac6cda6b5d2037d03e932999f393e14219fe7085ccfce025de5f754ab87efa20d7a00f9b1a99e723c41b61d88f0def77b9bffa61fc13af96fb3788df37c1b9ff84fc9b3399e7b7ac1332c7b77591ccfaf85fe416e5f143e67af5652a0c7bb36c906de8bbd705e7ed63ae6f26e432ecd790cf77188fd9bc9239df1e7e92d91e831a99f92873b99fe3c115f6a396cb03fe95f17f7fc3f1b067ed0f32f3efae7532d78b2f13b28bfe7f77c8dc2f10bc0bc35e04a86fdda1fd8e9a649e8f765d0ba37d8e729deb15871ab98efaaf1d65ec4fec9365bdf4417651de39eafbeb1f617ebf1786fe1c6332e3a9fd36b981fe367e275b185f770db203ff6434237bcc471c0bc31f9836948d3c479f649febcb1765a3af63e84fee8fc19e643d32f79f7a3bb28ddfafa6cae6f713e36f794d8beb25c71a99fe6c1080f3f11af668a58cf88170039c2cc82df48f7847b6793e5893ccfda22bf4f766de5fb17fcb12467b0de764b65fc121339f7df82a8cf75b0d32ed7117ed9dcf7f51fec982dc82fe6c46649eff799991199f8f6e649ff941187f5a79f990ffff46a6fdddbd28c37f2b90691f0ac22cbfd514663c0df6a8e55610af7b42df737f95fb0b1d32c793febb30fce5fe156c33fe194e8561cf5736b902ff258884219fed9c4c7bde1b91e99f6f96e426c6ab628bcc7c8c824fe6fead694ae6f902d71f619e2739267b58af8c7acab0f7df64ee378b26cae6f7058c77b97f8ef1c9fa5636f2b81584e15ffa9497c3fd2e852299e76bde2c619e1fcef2e4fd09f7bb64daf74b5798f9690361ccf7a7337213fd217992e92f0d8ec2f0d7dbb0dff9fc00fab3867ee5dd07f51b5a64dac7719ddc807d5d3dc9cc279a9484f1bcb3dcdf42fbdf3c61b4c7ed41b6b17f2a8984e97f14c95cefef2fc83cff76b621331e141f8531df1a7794110fe5f31cae170dbbc2ccef2c934bf0ff861b61d8e311e525e39fd52257602f2e63658c97acbfc3f5d46d4718f35f87f2c8dbdb94ef22d7395e2e6d61cc8fc66732d7d70f537203f29a3e95311ef494614fe6640be3d7a04a663c6c86fe97771fb4df09ece4fe08f211511fc716f98dc9cc17590b733c1856c975f44f7f4266bcfe692b235e1e299bdfafe7e416f4bfaf8cfed5b92a633fe9864cfffefa4276707d7e20bb8c37b795315f1f92b93e76fd26fb6c5fc8d771b81fe3da5036e5bd6fc93c3ffebe5336f7df0365c473f87e87f197d38a4cff77ec936bf00f9eca9cef0e95513fcad3e1f97957cac3e1794a9b13b985fe1bdf95917ff1230cff2292fa58ccf7417f75ad26e23f9947a6fc8bd03757e6ab6b5f18fabf5e92197fea9494b1fe9690599f7585ccfd89cb0199e7c7166d61c8cb592863bfcd5618f6ab3825b760dfaf0199fbe55c5fd994e7da24dbb00fe11b99e7b52447b28ff86e11fe8d9bdb17d35ec58730e47dfd5236fda95051467e6f5518f3e73ee5e530bfa1f841e67ec6415318cf4f58df7cfc37bf1f7d0b633c3f1e94cdf51be5918f47469e9bb130c75f293ff7ab9df6c288bfd994b7d3803c8e9632f61b0cc95c6fbff27e97e7cf3e593f97f661027becb53cd8c714f2ce0760ceb73d32fd91f399cc78d012fea467b3fefd1199fdc97e90d93f6e3e99f9dbed4c18ed337d13c6786acfc8d4afc296ccf9e1a142b6f03c672f0c7fcb9f92b97ff57657c6f71fbacaf0977f8451dff54919f10e791ff5f37424333fd51d0b733f45a88cf12c21737fe4fc46f620affbab32d67f3c658c6f523f9e2f361679f890ef9def7378fe50e155d9b4efad284cfb715736e52f3ec9b4af56208cfe309a281b795f5d61ee3f94f7337ee744c2b03fae32f2a5f62b61acd7cd3b64ce078b9fc2a8cfb6228cfe5fa0bee4f6dbbc7fec2ac33feb0a335e4f7dcbfb13f2bda9af0ed7d35229bf9c4fec09733ecdf6735cf4a735dbcff1603f3a988f78ee4b0deb4f182f7dcb673e0fec8d6ff3fc82cd4698f3830bb9cafee908c39eeed6647ebfa27310a6ff5421d33e8c1fca986fac84511f774fe6f962a3a630c6f3b04ee67caaff268cfa77c764c63356f23eaef7dea43c0e7fff14863ccec22efd8b84ecf17c99ae30fcf5614119fbfd03619eb726e5e3fecb6b4b18fa5da0bc1d8e97fb9e30e47b6779f2e2c27e158561ef1f5b65d3becb9b30fcdfbb30c78bfdabb2918f6509d33e7c2ae33c0e9bccf95bf18bccfde713b99ff952857732cf935b4cc9cc6fb850fff2f932e233949f63a37f0fe43ae7c77be3bff9bfeb9518af1c32e3dfcf0db906f98ff6e43aea336a08737d51ae73bfe178250cfb3389c8cca7b416cac8075d0aa3fdee52be16e435ac932df4ffe24818edd3cfc8cc2f5d0f84196f97f2315ebc96f2315ffdf92a8cf23b521e8ffb714e64ee2778ec8421efcd19ec703fe8a02c0c7d9f359571bee34a18ed9b1ec83caf25692b9bfa3c7c61c8a3781386bfed8c8431ffde55c83cff2c2d28e3babcbf8cf63bdb649e0f71fd50867da992b9dfe8e129a37cae32fcb31999dfe329ce9521ff5818ed7397dfd7a1dfd95598e3f1b730c6e37d48e679d4f31ab9c5f37fe57ddc2f30617b395c7f194bf9b9de7091df7b580f3fb3beee0bc6bb8d700dfec3d0f4bf5c1938be5bd0ef92cdf3bcd66532c7b3cb5d18f3d791dccf7c8aeb965ce379742361c83bcac8dcbfb7f91646ff1abf911b98ff8cd6c2d0cfa24b663eab2de561bcd09a0b431ea32199e7912c66c2dc0ff2aa6cca3bfe24d39f8a2fc228fff04798f96c521fee2f281695115f682a237e2de571983f25f567bcb723d7b9fe11c9fb787eddaa2e0cfdf12c65e4cb2664e6bf2dcacac88f223b3c4f6c900a73bd4faeb3ff3e426553dfc25a18fa97ed85b93f55af733de285ccfedb2e09737d54eee77ee6b4280c79def7ca381f6e238cfeb9f1c8fc9e9725bfe7f7bc8a6d61da2f5f98fb69a84f4e13fa767d15467933296f13fde722cfe37c764b7d7778bece42e4e5a23c69007639deaca09f658be78d0d843de667cfc88ca7cf61efcab6ecc771c86c9f699fccf84acf26331e303d9399afb70e9511bfec90797ee9507ecff1cf5909c33e6e7764d94f5015867c860d32cfd31cc8fbb9bfadf7ae8cef31c9fb5bf067866532e569d584519e75976cc35e8d9ec2a8cfa6a16cf4efee931de8f7c65286bcde84399e4a79d81faf2361daf7b232f46f208cf16b28e5e17c682ef2e3f89a45ca8847f794b1be067b5376b8ded79d29c33f8c8451bff14919f13861eef71c768431ffb0327219f663362573fdeadc22733fddc21546fdeef27b8e873d4b18fde17e2773fcebaf8451fe91b0c45fa84f4e0bf22e40be158be371a14a663cfa522033bf6b00fb52b169bfe23199fec62625cbfedeb230e2bd967015f66b545746fef886ccf5b5e1815ce77cb3244c7bdb52c6fa884be6f7d056f27b7e7f663812e6f9294365ace7c8fb9b78bef520b7d03eb78cccf5bda93c9ff95eb3a3b2797e6fae0cff5fcacffd27935019f1820199fb91d70b32e73bf7aa30f4a93811e6fc44eae3c31e6ede8519bfdc29c37e969411ffe4fd0ecf4fdcff08c37e163e95b13f6027ccfebc56c6f8602b633f4042663eac43fd71f87dcdadfcbe8cf9f6f8835ce57ab4238cfe759b91998f307694315f6e90eb3cff2120333fb920cfe7fed5eb1b99e703eda9cff97c08f6baa78c78bbdc6f73bfd285ccfd894b9fccf3b09e2fc258bf77a98f0ed7bf6fa87fd572399f41fb566deea70fabcaf8dee9894cf96dda649e6f332d92abf03fe76b61f4efc423b3ff8c8fe406f4a12befa7fd98a5cad8effd49e6791a594519f942afc2b0e78f986c31dfb9a68cfd3f2332c79369ac8c7cf88132d6f30f64c6d7467d65a3bf564798f3b99db229df3a13863d5a2dc92ef333facac8b71b28e33ca94019fd73a36cca73bb9119bf9b25ca888f8afc787e4261a68cf8e70f99f1bbf68b30ea33c7785295f5cf714119f335cadfe1f77e475d61f80b96234cfb3450c6fa1cf543e2733d5719df17627bcb78565809333fab238cf5e74cdecff8d5acae8cf3d66bc290b7bb2573fff061a48cefdf4a7d9b68ef3bf5dfe1fae6599ec7786f47eac7f5a71bdaeb37dfd73cff86fe549378dbb2422ec3ff18ddc8fc3edfbd29ccfd25a930e6c7c33bb906fd5acfc8ccaf2dc8f506ea3b5e0a637df17e16e6fe9017728bf3a38132e237f2fe16d72be47dccaf9cefc9b45f565d18e57f3c85e1af17dfc83cefbbdd16e6f7083f8551fefb88ecf27cfb4098e3695b19eb3d525e8e6f63b99ff1bc51a60cfb3050c6f73a9459ffb532c68b0b99e7a70f27c228ffb0a68cfbc7c29cefaf95319ec6caa67c13693fe617cf30ded71c9e0f3d8b95113feb0b737da047e6f7b9d7b632d6bb0ec2d06fbb204cffe795ccef698fbf94cdfdeda130dab320ef67bec7e8248cf120a37e4bbed83d2273fd78dc16667e9545e6fe888dfc5efc334798e705bf2a9bf65eed856bc8476991998f796e0aa33f6f56c2f01707ec9f323f8cd85f1ce6ef3c613f6a2ec78319e451b7b91e71792373ff7a3851467c62ac8cf5932999f54b9b64f6e7fb5819e75f46c2b0a78efcbe89f69d1694119fdf0ac37ef766ca582f7c08f33cdd0d99eb0fc57732cf4f5d59caf0dfa57c16f3af7f9411bf19281b7d2de8fdf0b7e672bfcdf9c34d18fde5d65746bcfd5d19f5db91395e5b729df6b820d739be5a1fca582fb92b233f4ecac7f8ebf428ccfca45419f3a91f65d8fba732c613799f87fe323c937de61778c21c9f9fcac88f47ffa8cbf83b0e95e1affeb96ecabbfc10863e057b65d39e96ab0c7fb62f8cfed3fe26333e318b944d7dc63d61c8731408c3bf0e0fe432de3f1d0823ff6a4efd92fcb5f8260cfb56580a333fc013c67c6424efe7fcd62f0a33beb854c675eabbc3f33d2d911ff32b8a1d32e3b9bbae30f4d31779d4791e9dc893df5f3837c8ccb7efcaf3b89e7591fa713c9d48f9a9ff694c66fc71f3268cfe7d91fba92f45f8eb0d9be71fdcbfc88cbf4d2c61dae39a32be973924733e732e08337f499ecff8ee6d47e6fc77620bf33cd78cdce4f7ef0ec228dfb548663eaf27efe77adeb94d663cbc9828c3fe8764ae1f453361ca734ee679bda7be30ead77384218fe3ab32ec6b4318fa3f93f7b9287f71a78cf9f35e18f32b7749a67fb196fa319e1bc6ca88373d85e1bfeda57df87dcae35d18fd67182b63fe705136e57f2d2ae37bb0fa3cee5761fd243ebc5808d3ff282ac35f5f09331ec8f6157b10758579bef54a19f9562565f85b3fca189feac288df64ac8fc497afb132f2093bcaf89ede9b30eca5e529637ddb25333fe47a1486fdbc26ca18ffa47ecccff46c65e44bf585a10fc3b630fc85b4ae0cfb2cbf67ff8abe8499afff49e67eae3452c6f912525ffa2bde5818f62465ff769ad0077b4ae6fac956eac3f58f40e4eb34e0ffbd93f9fd107f248c7c9c3bcbef9650fe00fad4947877a144e6f9f8832fb20b7df120afa6cdefcf0c7e8451ff4d93ccf566fb42aee1fee98730eddd5e18ed7b3b2b43bf0a647e6f20290bc3de8d2c32f30f838132d6076bc2e80f9ea70c7d7f9019afd84464cafb1c0b733dc127733deaf94d663ecf305586bedc85d19e852f65c4e36265d81fca3fb777d88f3b1686be8637657c9fb8230cf98fafca98bf2e9491ef3412c678fe94f2307ebe7c53463e485518f66cb0267b983f0ca57d79def843da93f1dfa25e87fdb2447f7cd42f157df0a18fde5619f19e4418f5394c94b1dfc81566bc18f6aa29f1f9e2ab32f29dd7c2e88fc59332d6d73361ce7f5a64ee3798ec8599cfd75436f2ef9c95616f97c23c9f69aa8c7cc8ab30e6eb63ea736e0fcdefb3b332e421e5637c657350c6fcff228cfcfea2c883e717cfe43af355977d61ac0716da64c65b86221faec78fe664ae4faf22617e7f4fcacf78fc96ede3305e7867ff73180f1c1e8521bf625719fbcfd97f1d9ed76e3d85992fb5213bf04f36ec6f0ef52f86fc5a96c3787e40a6bf3f5892a96f57c8b765f3fc95db8acc7c9c6285ccf3236e4d32f30dfa0f61c62b3acac8d7c89471de9c2fccf9e52b99f6ec6a0be3798f8b32caf745a63c1f6761fa171199f11feb4ee67905e99732beb77610c6f34fc294ff61ac8cfce07765f8f37561f4cf91bc8fedf590f238ac6f83ec623cbc8d84d13efb0d99dfb3187c2863bef05046fede4498e79b1585d1bfac01d9e7f9e22765c42ffac2ecdf57658c27fcbdf853a74419fb4747c2dcff20f7331e3f182ac3fe9f9551fea930f7777c2ac31fa2be48bed7a8ad8cef63bc09333f9ae577f87de0c35a19df435a08c33f3a5be42ac7e78d32ce47b085f1be754ae67acaeca00c7f7922ccfd853fc2dcef602bc35e497938be6fd6ca988f7c08331f8cede5305eb2a53e389caf8c441ecc57db9695b17e5525f3fcf54324ccfd700561e8e3b0a80c7b26efe3feb448de27eb01227f9e2f3686bfd072e95f6fd09e9655e6f9c27d32c7ff31f4cb92fce7f58730f7bfbf926bf007b3944c7fe9d8208bfd782823ffbd4466fd6ea932f2ab8764399f2251c67ee09330cf471890b99e9fc5647e3f2fde0a437e8737653caf47667ce67615e67ae95919f3fb8632f2c7441e5c1f730e649ed7327a1186fe4d286fd9ff55780a33be7112467f1c2dc83cef7f26d7391f9aef94e11f6fc865e8e3692dccf5c38930f743ed9411cfaa2a9bfb7b1fca463e3bb9ceefd5051d6194bfb751c679373d6523afc35d19f19fb230e45774c85c6fb1b6c25caf8e9471fe41975cc3f9946bca5bf6bf15a5fe8cc7acdb64c63f0b03619e1ff645e67e9548e4cdf540774eb619ef6f911dfcbe27edc578ff09e3b595cf7f70fefa85ccfd5523c8d7fedd0069e4b32173fd7b06fb65db3c7f6d542573fd6a362073fff674220c7bec5be426fd639fcc7cb7ce8b32fcc70e99ebc3e7a330da7f120ba33cf72e99f982e34c98ef93dfbb184fdc9d32e6b37732cff3744361c8afb756c6f73ec6c2e81f9d0bd9877fd19d0ad3be8c9591bfd15746fec58732fc1ff4775bfae73c14e6fec39e32bef7ba17c6fae15aae733de4b81686bcbd8130ce57bbcfc8659e3ffcae8cfce49d30f42fa37c1d9e1f7eeb0a337fb4ac8cfd2f3765f89305659c07d312663ea83c8fdfebd8978431bf997d29c33fb18421cfac4eae315f4bca5f437b0e297f598f197584194f1679717feefd2accfd09d42787dfe71d57c80ecf23c57869bb3c6f64c7f671b95f720c7fe977bb39f2896ac218dfaf4f7205fda71892b99fbc7020f3bca0914766bce5f44e667e78e15b19f1c79930e6439b1732d74fd21f619e47f5ad8cfc9e16b985f9ffa4204cffb1ac8cf35ce6649ef751d80bf3f94d32bf7fd5db09b3bf4cc8cc472874c95c2fbd0d94116fe829e37cc69330f46b22e567fe6ad650863d7495916f7f1346ff3cbe09437ea31299f3f5552c4c7f96e593fc83f35e18e54ddf95717e484719e7b3bd2ac39e1d94711e9145e67ac6bcaf8cfcd84098f99e94b7ceb74fcad83f5110667c59cac7f1b6f729ccf31bea64ae5714aeca88b7c8fd55e8b7c3f674f8bde84e288cf68cf53aea6b537fa4bf2ea53c75dae75765e457fd6153bfa4228cfe6451bf1dc6cbee3561e613897c393f9f47c25c3ff920335ed643f97ff78b62ff6091ccfd55930799fbab4615728de7c93b648e8fbe32f3237c32bf5fb7390aa37efb0e99f941bdbd32beaf3e14863d8a4f641bebfd854898fb3da664ae27742265eca7f9c3a6bc9d1fb2cbef053594e17fc4c2b41f1765c4635f85795e658d2cfb95a4fc1c8fb384ccefb90e1d659c6f20f2f5713ec812fedbeffe56f89f7365ec37b909c37edf2664ae07866332f73f5b4761b4e775a68cfcdda530c7bbbe32f2e50664c6eb070b32bfb7beb92ac35e0e85616f828a32e423f7737c593584191f2d29233e110aa3beb6c8a706ffa128efe379d1f1882cfb63ebca384fe6a28cefcff584f1febbde0f7f6d26efe3f79886523ee69b4e44be5c0f18539ff3fe86fc8fb332e6abf2be16e4d3a1bee5e335ce077b92657e29f271b87f14e389eb56785ec05018eb133ef5c5e5f9fe16dafb777f2fd6f75fc8fc9ec4664be67ad80df5f16c9ecf5088c98cc7f76fc2f8fdb24c667cfeda15e6f9364b61b45f7fad8cf96395ccf346b25019ed99922dae97f5c836fd058b2ce3adad8cf31533618c6fd15398fbe99a64ae375e2c65ec47db9399ef670d95319e49f9181f2fcc8559ff7765c4bb0aca987fe875d8fb10f6c5735ef83dd95498f9a0b630e36f1561b447a74ee6fad1b0a98cf6cf84797e3fdb5bd6ff0aa130ca6b515f1c9e27703f2a633e47fd92f9e766a18cf9c15498f3db9b32d61b0bca38af3220d7207f672e8cf6ebc975c64fc62d61da6bb99ffee3e28dccfcf891c897f193e298ccf38b4f6c5f47f6478c84b13ebd2b91f93dc915e6c79e2be7b5f684d19eb1af8cfd4efcbdcbf32dd62e99f98133fc3e9ff0a2ff595332e3e50f87ccf5e6d14518fd3d837efb36bfffb26e0aa3ff4d2332e7d7d78130cf2bbf9379fee5281546fc6bdd22737e34da28e3fb2d2b65e46326c278fec356c6f7451e64d9ffd657463c63a28cf9405918bf9fbd0a637eb82991b97fe75114e6f990dfc29c4fc8fb6a187f7d97ccf9c960a58cfd5c9632f29ff43aca53f85186bd96f2f3fb64f3ba32c60bb9cef3117a5361fa0f6d65e473f9cad83f7f55c6f92c9132ce4b8a85f9fdc46f657c6fe34d19f1dc8a30ece3fa48a67dbf3594711e5e4d98fb2717c2e8afc54019f985dfcab0d77565ec2f2a2823dffa5398e75d0973be668d95b15e5353c6f87210e67a83e82bf3e5925819f1c186b2294f2151c67a58a88ceffffe61230f479f477bb555867dd5e7a3fe375b19fd55e4c5fdcb96949ff904b75765e4b3487f64bedee6a20cfda92a63ff9f3e9fdf07fcf37bac6f7f2aa37df5fd906726f5b1196fbd2ac39eb495f1fdd7ba32da63290c7fa5a0e5457f5847caf08fa47d1df8cff65519dfabf9c3d84f7e56463ef44919f14db10fdc3f9a05ca587f1b29a33ffaca58bffc733fd6eba57fd0bfb885cac83f9b2b633f48a48cfd910f65d8af2f65f40fb1bff27d162d0fecd55cdac3857e7466caa87f4f19f297fecef5bbf54819f1808d32e2533b65e4c3fdb98efcf2a332eccd5e98e711ac94e17f9c95a1ef525f17eb2fd68deca1bd8bdfca987f5595e1ffbf28233fc85346fdbbc23ccf64ab8cf8df9febf8be59a00c7b942863be3451867f2cfac5f84aaae545fd8a321ef0fb7189af0cff6ea26cfadfd155863cc59e497cf65d19f9cd3d65e45f6e95917f22f5637ce7dc51c6f7121365944f19fdf3acbfe778457b90fba7c8a78e95119f280af3fbb23365b4ef5519f3f5a932f2f52d65c877218cfaeef7cae6f7970f659c775357c6f79c3c65f8173d65e4a7f78599efa1ef477b7abe32c6b7b532e6235a7ed8b7d15998fb3ba80fb9ff0dffb7af8cf98d9497f92a4ea88cf6fe5046fcf15319f16a5f19eb630f61b4f7bda58cf5c58232fcef3ff7239ecafea4fb0f16ca980f8d84d19e435719e3e75d19df33f9c318cfb7cad88facccf3b5bf94b19fe3a18c7cdb4f659c5f5457c679d80361d4cff594713ea93e1ffed9baa16c7e3f17fd2843ff4f1c7f1cee0f8f457ff9bd3cdb56c6f72f0fca587fe808d3fe149591efbb5046febefe9ee7594f95113fd7f7419fa30f65ccb74ecaa6bcce4c19f18f9b30f33b5aca463f4e1b65f4b7b632f239caca882f71fc96fccd8da38c786b5f19f319e9bf5c1f2f7acac8977e57c6783854463c71a78c78c35d19df9b5d28637fcb5419fe99f45fee975c687938ff192b23deaecf47ff181d94910fa9ef437f0f447eccafb8de9431deed9421bfa532be87d415467f8fdaca880f7e29239fa2a68cfd840f659cf73351c67c2815e67efbbd32d65babcaf83e88b427cf07b46265f81f2fca380f4df48df1eec15319f9d80d65e4231495319e5c9431df282b637d3750863fa3ccfdaf5a1e9e67a3cfc779cd2bb9cefdc2dd9e32fc4b5719df6f2b29e3fc22697fc607b74b65e40f7d2a239f82febad3c4f875f59571fe84a58cf8c95c19fbe79ecaf0bf9bc2689f51ac8cf5979d32be072dcf6fe1bcfb819487e77b59a932e6b3620fb8ff683f54867d9a2b637d3251463c68aa8cfd02d29ff93d93bbdccffdd8db9530d76f6c65539e489ec77cdda1f427e6bb44dfcaf04fe6cad05f198f79deed70a98cf566d177ee275ecd94919fdb5086bf26fac8ef65dc445ff87d8491a38c7c19691f97f9d86fc2fc3eb6949feb814719cf98cf3b92f2f27cf1b0a28cf314449fe9df9e2261da73b1271ece1b5d88fe70bf8325edc1fcbab5c8c3677ea6b49f8ff328533ecf7d417ee97dae8c78d88f30fcbfb0248cf21c57ca383f7c24ccef8fd19eb95cff5bae85717ef6fa218cfd40058eaf2efd8b70a48cf2b484f9fd17295f99dfd7d90823de31a63cdd2ace73b964c2d0f7f65518fbf1c794b72bfb27a7c2fcfe98a70c7971bc70ebf0aff66c6fb781f9ee98e3a5cbef910ea98f2ed7f3d797fff35fb150b48a76d129ba45afe817b7c5ddffcfbfa01816f7c5a87828c6c5a4782c9e8a67fe9df2a7a7bceb92ff5dcddf5f7f7f2bde8b8f62567c16dbc54eb1fbafcabbbefc5bb5ea15fbc54171581c15c7c549715a9cfd8bbff95ffe16c56571555c1737c5d7e25bf13daf95fe99e77f143fcddf57fef7cf9ef75dfcc9ff5e8aa562b9582956ff43b5aa15ebc546b1596c15e78562a150b0fec59ffd973fa7e016bc825fd8167685a0104a6df227ffd6ec5cd8e77f91f9fbe7cf3b14e2425238164e8573212dfccb3afd7bb52a5c0bb7c2bdf028648567a15de814baffe2aff797bf7e615018164685716152981666d4bbfccfd4eb5c98ebdfc2fcfdf579cbc2aab02e6c0aafc58fc25be1fd3f54ab8fc267e1abf05df829bc144a8572aee3ffc7bf42e52f7fd542ad502f340acd42cb2a5a05d34aacd56fbdacbffcf3d7e75976fee758aee559beb5b576ff995a5981155a7b2bb20e566c25d6d13afd8bbff35ffe52eb625dad9b75b71e56663d45f77eeb66b5ad8ed5cdff7ae6ef9f3faf6f0daca135b2c6d6c49a5ab3ff50ade6d6c25a5a2b6b6d6dac57ebcd7aff177f1f7ff9fbb4beac6febc77ac99d94b255319a77b6aa79cd52ab662d72db676c9df96d3dfffbebf31a56d36ad9c5bc8b5ab66d3bff995ad9aeedd9bebdb577766087f6de8efec5dfe12f7fb19dd847fb649fedd4bed8d75cf74e56d5bee5356bdb77fb6167e6ef69b7cd5fe7bf3caf6bf7ecbe3db087f6c81edb93ff50ada6f6cc9edb0b7b69afecb5bdb15fed37fbddfeb03fed2ffbdbfeb15fec925db62b76d5aed9f5fcaf6137ed965d778aceef572eeb8eed388eeb788eef6c9d9d1338a1b37722e7e0c445cf499c637ec7c9393ba973c99ff4e25ced927373eecec3c9ec77e7e9b49d8ed3757ae62f73facec0193a2367ec4c9ca93373e6cee2efd5ca593a2b67ed6c9c57e7cd79773e9ccfbce41b7be37c39dfce8ff3e2949cb25371aa4ecd6e3975a791d7a5e9b4f2ff14dca25bb05baee5daaee3baaee7faeeb690b83b37b0ea6ee8eeddc83db8b19bb847f7e49eddd4bdb857f7e6def3e75ddd879be5cf7ec9fffde5fcb84fbbeeb6dd8edb757b6edf1db84377e48edd893b75ff493ffb776ae5cedd85bb7457eedaddb8afee9bfbee7ee4eff974bfdc6fa799bfedc77dc9dddadf9ad6ddb25b71ab6ec1ade5ff49dc7a5eb3c6ef5702dd9657f40a9ee5d99ee3b99ee7f9ded6db7981173a4f6fef7e7a512e9f8677f0622ff18edec93b3bd7df677ba973f52eded52d7937efee3dbccc7ef39ece97d7f63a5ed7ebd9aed7ff7bb5f206ded01b79636fe24dbd9937f716ded25b796b6fe3bd7a6fdebbf7e17d7a5f79c9bebd1fefc579f34af9a05b76cd37b19c8257f56a5edd6b784dafe517fd826ff976ee2cbbbee7fbfed6dff9811f3a057fef667ee41ffcd84ffca37ff2cf7eea5ffcab7ff3effec3cffcbc26eea7d3f4db7ec7effa3dbfef0ffca13ff2c7c597bf572b7fe24ffd993ff717fed25ff96b7fe3bffa6ffebbff61adfc4fffcbfff67ffc173faf8b5ff62bee975ff56b7edd353bc3fda6dfda16b785adb5b5b7ced6dd7a5b7fbbddee5c6f1b6cc35f3ddeeeb7d1f6b08db7c9f6b83d6dcfdb747bd95eb7b7edddd96d1fdb6cfbdcb6b79d6d77dbdbf6edf7ed603bb45bdbd176bc9d6ca7dbd976befd9bfd6abbdcaeb6ebed66fbba7ddbbe6f3fb69fdbafedf7f667fbb22d6dcbdbcab6baad6debdbc6b699f7864fe76bdbcacd74c17edf593b7be7ecdcbc5f7476decedf6d77bb5d607decc2dd7e17ed0ebb38d7baaf5db23bda6fbbd3eebc4b7797dd7577dbdd778f5db67beedabbceaebbeb59e75d7f37d80d77a3ddd86eed26bb697eff6c37df2d76cbdd6ab7fe7bb5da6d76afbbb7ddbbfde67cdb9bddc7ee73f7b5fbdefdec5e76a55d7957d95577b55d7dd7d835edd5ae1514b7ada0b073edf7c00aecc009f25a055ee007db6017044118ec83283804719038cde098b7e967700ace411a5c82ab5d0f6ece5b700f1e41163c8376d009ba412fe8078360188c82713009a6ce4f300be6c12258da6fc12a58079bbf57abe035780bde838fe033f80abe831f370b5e8252500e2a4135a805f5a011348356580c0ba1e514423b98878ed770bf4237f4423fdcdaf5701706ce4b1886fb300a0f611c26e1d1b5c35378ceef4dc34b780d6fe13d7c8459700a9f7e35bfd60e3b6137ec85fd70100ec351380e27e1349c85f370112ebd1f7b137c87ab701d6ec2d7bfd9af0ae15bf81e7eb8edf0337fe697d30abfc39ff0252c85e5b01256c35a580f1b61336ce5a3cbcfbeb8cfadf9def2fb7b7befecddfc7f7b7b7fbf75dbfbdd3ed887fbfd3eda1f9cde3e76eafb647f743ef7a7fd799fee2ff6dbfebabfe5ffbe7b8dfd639fed9ffbf6beb3efee7bfbfe7eb01fee47fbf17eb29fee67f9b3e7fb45eec62df7abfddfd4c0fd66ffba7fdbbf6fe3fd47683bd9fe337ff3d7fe7bffb37fd997f6e57d655fddd7f6f57dc3e9e5656feef311382a3a763eb5b072d7c071b2c875bedd46e4457eb48d76511085d13e8a9c667488e228898ed1293a47e9ef7757f78993e57df31a5da26b748beed123caa267d48e3a5137ea457da7170d8269945b0cbf168da2713489a67faf56d12c9a478b68e9d5a355b40ee6fb5bb4895ea3b7e83dfa883ea3af6239fa8e7ea297a81495a34a548d6ab915be46f5a81135a3d6a1988f64ad43c1a91facdc7d720eeec13bf8ced7617bd885d621388487fd213a1c0e71e4b9d921d9b60ec7c3e9703ea487cbe17ab81dee87c7213b3c0fed43e7d0b5df0ebdfcb77dbb156d0e83c3f0303a8cff5ead0e93c3f430739b4e737f3bcca3e8b0382c0fabc3fab039bc1ede76e1e1fdf071f83c7cd9abc3f7e127fc3ebcd8f543e9503e540ed543ed50df7f1c1a8766303fb4e2625c707ab115dbce97df8f9dd88dbdd88fb7f12e0ee230de3b9738b2ebf1218ee3243ec6a7f81ca7f125bec6b7f81e3fe22c7ec6edb81377e3dc778afbf1201ec6a3f86fd62a9ec4d37816ade379bc88975114afe275bc895fe3b7a21fbfc71ff167fc157fc73ff18b6be7652ae5e52dc795b81ad7e2ba13c58dbc8ea7b86997e2d5e1276e2545bb95140edf8995d88993b88997f8c936d9254112baed28723fa3c87e4bf649941c9238499263724ace499a5c720fe5915cf749724beec923c99267d24e3ac93f8963fc3bb54a7a493f19383fc930da24a3649c4c9269324be6c9225926ab649d6cc2efe4355c266fc97bf2917c265fc977f293bc24a5a49c54926a524bea4923f70c0b4933f7b3722fd2fd4c5ac7e2b170b48ef6d139ba47efe81fb7c7dd3ef9f51b8fc1313cee8fd1f1708c8fc9f1783c1dcff12a5c3a3fc774ff11bc44f1f172bc1e6fdbec783f3e9cbfe9071eb3e333f75bbf92cf63dbc98e9d63f7d83bf68f83e3f0383a8e8f93e3d4af1d67c7b99deb5a5ee6b7e3e2b83cae8eebe3e6f87a7c3bbe1f3f8e9fc7af63ee33fe5afde38f573fbe1c4bc7f2b172ac1e6bc7fab1716c1ef33abb59fc93fb8ceff984b2904f16ed9373724f9e939dfc5de1b43ded728964b944cea7dcfc9ff6a7e894abc029391dff5ead4ea7d3399f2d7c4595f03bb76fb90febfc9cd2e074ba9caec9dbe976badb75bf13974e8f53767a9edaa7cea97bea9dfaa7c169781a9dc6a7c9691acc4fb3d3dcef9f16e1b7fbb99d9c96a7d5697dda9c5e4f6fa7f7d3c7e933ee9ebe4edff91c243bfd44b57c346abb9ffbdb29f7da4fa5d3975ddfb64ee553e5543dd54ef553e3d43cb5cec573219f6adb7faf5667e7ecba6f67cfbd9efd7cce533d959c8babb391df9942dc75dbe7ed79770ecee1797f8ece87737c4ecec7f3c9fc9dcf69689f2fe76b3e23b1cfb7f3fdfc3867e7e7b97dee14bebcedb97bee9dfbe7817bb5dfcec3b09dcfcd5adbd67964afcee3f3c4cbced3bc4e85f3ec3c3f2fcecbf3ea5f95f7dfacd5fabc719ae757e72b9fd37d9ddfceefe78ff3e7f9ebfc6d57c3f3f927389f5fcea573f95c3957cfb573fddc307f4d777b6ea5c5b4905aa99d3aa9eb7ea69ef393fae936dda5411aa6fb344a0f699c26e9313da5e77c26fa96a6e129bda4d77c1e52488af91cad99ded27bfa48b3f499b6d34ee123fd0f4539d35eda4f07e9301da5e374924ed3593a4f17e9325da5eb7493bea66f9e97bea71fe967fa5538a6dfe9cf5ffe5ed2525a76bf9c2cad386f6935ada5f5b49136d3d6a578295cac8b7dc91bffe25dfccbf6b2bb0497f0b2bf4497c325be2497e3e574395fd2cbe572bddc2cf772bf3cfe33b5ba6497e7a57de95cba97de2ebcf42f83cbf032ba8c2f93cbf4322b6697f96571595e56f9ad9bcbebe5edf2cebf8ffceff3f275f9befc5c5e2ea54bf952b9542f356b77a95f1a97e6a555385d8bd7c2d5bada79e3b857efea5fb7d7dd35b886d7fd35ba1eaef135b91eafa7ebf99a5e2fd7ebf576bd5fff43b5ba66d7e7b57ded5cbbd7deb57f1d5c87d7d1757c9d5ca7d6fe3abbceaf8bebf2babaaeaf9bebebf5edfa7efdb87e5ebfaedfd71ffebd5c4bd772dcb5ebd7cab57aad5debd74631bb36afad5bf156b85937fbe6dcdc9b77f36fdbdbee16dcc25beebee47f875b7c4b6ec7dbe976bea5b7cbed7abbddeeb7ff50ad6ed9ed69f9b7f6ad73ebde7ab7fee5e336b80d6fa3dbf836c9ff33ba4d6fb3dbfcb6b82d6fabdbfab629968aa5dbabf97bbbbddf3e6e9fb7afdbf7ede7f6722bddcab7caad7aabddeab7c6ad796bdd8be1ebbd70b7eef6ddb9bb77efee17d3fbf6bebb07f7f0bebf47c5f5fd708fefc9fd783fddcff7f47eb95fff33b53a8ceeb7fbfdfeb867f7e7bd5d78bb77eedd7befdecf5bd1b3dcfbe03ebc8feee3fbe43ebdcfeef3fbe2bebcafeeebfb26ff5be7ff6b797f4dbfee6ff7f7fbc7fdf3fe75ffbeffdc5feea57bf95eb957efb57bfddeb837efaddfa0efc37ad80fe7e13ebc8777fd78f88fed63f7081ee1beffd83fa2c7e111dfab8fe43f53abc7f1717a9c1fe9e3f2b83e6e8ffbe3f1c8f2ff7e3eda8fcea3fbe83dfa8fc163f8183dc68fc963fa983de68fc563f9583dd68fcde3f5f1eabc3cdeb685c7fbe3e3f1f9f87a7c3f7edccfc7cba3f4283f2a8feaa3f6a83f1a8fe6a39515b34266657696bbed9997f9d936db65411666fb2cca0e599c25d9313b65e7bf57ab2ccd2ed935bb65f7ec51f4b32c7b66edac9375b35ed6cf06d9301b65e36c924db35936cf16d9d2a9ffef7fd9eaf1e9bce5b3f0ef6c6de283ad7cd63b7732e7e9e6ff9ddbef97e4cddfed8a4eb66d39f9fcefbffc7e93bd666fd97bf6917d665fd977f693bd64a5ac9c55b26a56cb4b53cf1a59336b3d8bcfc2adf7b0febd5aa5dfc9cbd37adacfbc184fefe93fb7cfdd337886cffd337a1e9ef13309bff3d9fef3798ce7cfdc79f96ba99ee767fabc3caffbe9f3eaf79fb7e7fdf938767ec79ee0f4cc9ecf67fbd98917cfeeb3f7ec2745b7fdd7dfef5a6e12cfed95f3b4df9e83e7f0397a8e9f93e7f4397bce9f8be7f2faf95c3dd7cfcdf3f5f9561c14ebff5ead9eefcf8fe7e7f3ebf9fdfc79be3c4bcff2b3f2ac3a1fbfb3b9672db99dcafb56e43cebcf869bcf9a4c64f37ffffb71b367f3d9caa744c576a16db5edb6d376db5edb6f6fdbbb76d00edbfb7614b849d1afb40f51e5afbf8ff27f9c6be0b6e3763e87ccd5d1fe8d99b58f5ed63eb5cfedb47d695fdbb7f6bdfd6867ed67bbfdefd5aadd6977dbbd76bf3d680fdba3f6b83d09e6dbdc8b694fdbb37c0edf6bcff391ffda5e389f6ea1bd6caffe5aaaf6babd69bfb6dfdaefed8ff667fbabfd9de50e52fba7fdd22eb5cbed4abbdaaeb5ebed46fb37265568ff17a9748a9d8253c8afb53b56c7ee381d3770ed55c73b953b7ebbd5d976769da01376f69da873e8c49d7f623dfe59ad3ac7cea973eea49d4be7dab939e7ce3db63a8f5fefecdcef649d27faca6f6f710b91dbf92f1ad4e974ba9d5ea7df1974869d5167dc9974a69d59679e943a8bceb2b3eaac3b9bce6be7ed547abc86412ea7bffc3e9fed369dbafb5bb38257f7ea9df7ce477a3bfb7b3ff9ec7c46e5ce57e73b6d747e3a2f9d52a7dca9fc9bb5aade4b9dda7ed3a9771a9d66a7d52deedcc377b7d0b5bc7cf8efda5de77746d07503e7575b7685bf96aaeb39cdaedfdd7677dda01b76f7dda87be8c6dda47bec9ebae76edabd74afdd5b1874efb967dc0cdcbffefedcff9518fefd2b3d7b93df77e93e0e8b6da19b759fdd76b7d3ed767bed47b7df1db8cb7faf56dd6177741f74c7dd4977da9d75e7dd4577d95d75d7dd4df7f53786d2fd5d11317fddf7c8ed7efcb554bf75cee7acb77dd2fdec7e75bfbb3fdd97e7c17efbb5304ed62dc5fb6eb95b815677abffd55af8d5c0f14adddaef1bb62dfff9ffb567263b8b634914def76b786f310fea15f69de77b99d979000cc68031068c54efde642fbb53aaacd49f8b2c95ced296e5cf118e7b8e221c7cf2cf2c1c86a3700c7ce081a8ce400c129082ed6909767f65b227f400c11e64e0008e200727508033b8802b28c10d54e07edcc7f34f5de6c1ffd56a720175013e537b14ce93faa8b703f008fb499367e0095e490d9a64734af3ddc7f3cfffbb11fadf69917eebbd5d1fbcc10404200400408000060450c0006f0640dc2320df3e504083ef24931f398581fd1c0b0e4cc10cccc1022cc10aacc106b4401b744017f4401f0cc0108cc018fad0034dbe87513c86f1b7a4190f6002d383fcf6979cccc79a7f8876106ed3265f241bb8837b98c1033ca60398c3132ce0195ee01596f0062b7887357cc0277c451a36f00d27308021047ff6be3f4605a15f5e9f5100d14718124821831c0a28a1821a1a68a18353388373b8804bb8826bb8812dd8861dd8853dd8870338842338463ef250846294a0146dd10eed51860ee888727442053a9f1dbaa02b2a6f67744315baa31a3dd013bd5083de68926528402102e83b9b9d9fa14208614410450c7d5c3a12c50b49a4f6066964ca53734716b98fa66886e66881966885d668835aa80da6a883baa887fa6880866884c6d8c71e8e708c139ce22ddee13dcef0011f711eeff00917f88c2ff88a4b7c2b21aef01dd7f8819ff8851bfcc6131ce0107f51ad30cc0618794f8c31c11433ccb1c0122bacb1c1163b3cc5333cc70bbcc42bbcc69b58e2166ee3ce21c05ddcc37d3cc0433cc263e2138f442426c95e93946cc98eec49460ee44872722205394fde892217722525b9918adc49fd98910779925735240d79930909c817656102082428deed15f97c3a4208258c702288248a6862884db7c4793199921999930559921559fb13b2212dd20e2ad22135e9921ee9930119921119539f7ab8a1118d694253baa53bbaa7193dd023cde98916f41c507aa1575ad21badc09240e0e89dd69f8679d0e7d750518fbe6843dfc59d4e6840430a1ef535a590228ad32d259446256594a7860a2aa9a29a1a6aa9c3119d024b67744e17b8a44bbaf202baa61bdaa26ddaa15ddaa37d3aa0433aa263e6338f452c66094bd996edd89e6574cd0e29654796b3935fb2c22f6e2776665f9444d8f501fd012bd98d55ecce6af6604ff6620d7bb3090b58c800830c31cc08a38c31ce04934c31cd0cb3ccb1299bb1395bb0255bb135dbb0166bb30eebb21eebb3011bb2111b739f7b3ce2314f78cab77cc7f73ce3077ee4f9e5cc4f08f1829ff9c52ff9355af0f26ba83e4fbd158f6ac82b7ee7357ff0277ff186bff9248d79c0430e382c6a8e383eae39e19433ceb9e0326c71c53537dc260d777cca677cce1781e04bbee26bbee12ddee61ddee53ddee7033ee4233e16bef0442462916442a4622b76622f32711047918b9328c4597c51adc45594e226aaf222eea2160ff1142fd188b79888408402082890c082085aac05bb45820b21a450420b23ac70622a66622e16622956624dcf62235aa22d3aa22b7aa22f06d9410cc5488cab34f5a42f3d19c95826328d9ddcca9ddcff39c5cf50c94c1ee451e67e294fb2906779915759ca5bd2c84ade652d1ff27904f2251bf9961319c8500209259258124925935c0a29a5925a1a69a59353399373b990cb782657722d37b225dbb2935d6457f6645f0ee4f059ca911c2b5f79ea3ba9f02ba80a0661ee7046a88a55a252b5553bb5bfae54a60eeaa87275ba14aa5067755157557abebaa94add55ad1eeaa95e9f2b8d7aab890a54a88082341548a10428ac88a28a29ae84924a29adcce72eab9c9aaa999aab4532534bb552eb5f43a536aaf55e01c71bd5569d28515dd5cb1faaaf066aa8466aac7dede948c73ad1a9deea9ddeeb4c1ff451e7faa40b7dd6177dd5a5bee94adf75ad1ffaa95fbad16f3dd1810e35d0909d34d258134d0f37cd34d7424badb4d6465bfd9d6df65750e9a99e7ddce054cff5a2447aa9577aad37baa5dbba13c7baab7bbaaf077aa8477a6c7ce39928cfcd27a09bd46ccdceec4d660ee66872733285399b8bb99ad2dc4c65eea6360ff3342fd398b79998c08406186890c186186a98e1467c9af6975019455ebc30da186393a29a1b67a66666e6669187666956666d36a665daa663baa667fa6660866664c6d6b79e8d6c6c139bdaadddd9bdcdca22a8ecc11e6d6e4fb6b0677bb1575bda9bad7c3fa5b6b60ffbb42fdbd8376bd9890d6c687fc021fd0c15c66861a145e7bbc5a46d89a596598e6f567892df28b0d22aabadb1d63a3bb5b3283a16766e1776f98aedcaaeedc6b66cdb7612516f6dd7f66cdf0eecd08eec185f9defbc1cbba8267ef56dc5e252b7753bb7775918ba4372704797ff1a2a7702fa215de1ce3273177775a5bbb9cadd5ded1eeee95eae716f377181d7b8d001071df2470eabbb593be2a8638e3be1a4534e3be3ac73cf9e9bba993bb9b95bb86539772bb7761b845dcbb55dc7755dcff5ddc00dddc88dbd68eaff1aaadf4fff50fd3efa87eaf7d1df94ea8f7fffeb3fe4bf8757 789c95d647731b570c07f0bb3e05c7b87932f076722793839a6df56ab54c0ed8465212d558543cf9ee59017fd0b1454f9c793ae8c7c572f18087953ebcef9cedef74de7f581a4f64322c3be5401e3aefabe968f4fce75f7f7c5d7a17459df627cc824ef4eeb7a57707934ed9d9bdbda95f216b2da8c8a23a08d4cfea5e1cc0ab6a8943f85e5dc411dc575771063faaebb86ba6eeabcb20ce717da60e63c1f573751c97f000aecc9cab1337cd60e44b37ea346ee0357382fcb9a7eeba690afb7e9ed4795ce0faaad9aff3119ce07a1fc6fec49e5fcce30fd565827a50a6ae9314f105ecf528d54dd2c3fd0730aef3feabab28417d64a44e12ec9ff7d46982fdcbb539f5fe89ba37f714f6fe35ea3c413f78d79c62bfb202237fee9ab322c8f5fa442d7e5d9661ec9f33735607857a475da65ebf2b75e5f1f2027b3ef6fc26457fdaa36df6f312bfba0e52afe700f6f312a9238fe76573e6cfbb53c709e2656cf6efe319ecf5add4a9e747c7e60cf5e47bd8cf8bf6afee665ebfd49c4791e8f52d75eef9b0f6af960ce781f6cc5dffbe8fea32f3fc2cffb2ebf76f9bdb03acf3cd8959c2b8abf993bacefcbc0e60afe73aecf55b31f77c3e26e6dce769047b7e3a6f7593219e6bd8e755df0f4dd8f5f9fc0c7b3eb159da89d17c6fd591f79f2bf33cfe018ee14718f5a14db3e72f437532ef17ecf56581d12f3a82fdfc8ccc3ddc4f8d599a50e781759e9bccefe702f6fef4cd791ec66aed47d3eb621ef813ecf96f9b7b387fbc619608fd9d9a8b1eea75a9cebdbf64f5cbbb3e4f966f9e5778be9ea7a698ef2f32576d45f47e7d1f35d5bcbf965f25a8373d998b30d0f3c563b88ead1ee7e632b4fc2854d7f3fa26b0f777dddcf3fe9e98737f7f9c9adb3f403a3f7c068b9d6fba83abd0eebf32b76f243bffac6efcfc490dfb3ce7b0cf4300fb3ca466ef3fafc1deef63d8fbb90afb3c9fc2fe3ce4339faf0bd89f7f02fbdf37db6fdb60f80becef035842ab171dc21ebf6b2efc7cecc0decf0dd8f35b862b7bdf93cd6b53fafd4338b17ad30bece7773c774ffd0cfb7e6c7edb03065fc3edbf0cba9f4bb7f58f2fdc389ff7b0f7c7e6a9a9035cbf82fdfbf17db5d717fd6fc228d4ef0fe15ed7ce17f6d3e4a9c557b0f7ab9cdbee7f725b3c07eeacd4f802aeec7d4102d7a9fe73c6a84fe3f33e99dbeab139b7cdc3963b34dfb8a3467deb4eb47e0793b78b8965d1e78be3b9e0922baeff477cc37d1efc72fc902ff98aaf7f2dbe8d1ef10ddff21ddfff52fc038f79d2ae29cffe3bbe8d7ee4277e6ed70b2ff3caa2785ee5355ee78ffc89853ff3066f6afc166ff30eeff21eeff3011ff291c5b7d1c7fc854ff894cff89c2f38d0e8d71572c431279c72c65deeb1bd3f8f898948a8685749d59b55b69fd7d4509f06c8a7cd858674f9937545d734a21bcebfed976eb9a03bba5fb01e684c139ad2ecfbfaf0901ee9899e7f582fb44c2bb44a6b6feb49ebf4913ed1e7efd6066df2114d17d79fb6689b76be5bbbb4f72dfa4dfc3e1dd0e10feb886e7e1a7f4c5f749dd0299de177a6f3c5f174ccd774d15e0f28a488624adadf2f28a58cba8be279463dca858544785f0a29a592ba5d8df417c5cb4086722957722d23bdbfcd5c6ee456eee47e61fc838c6522ffaa46fbd94c1ee5499e17c6bfc8b2fc707edb4ffbb22a6bf3f8bf7f5ffa07e1d37b0b 789cd595c97223370c86ef7e0a957173a530dd64b39b5da91cbc6ff2be3b95037bf32aaff29acabb87fa0129f6249999eb08aa527f220882d8facb4cef787ba337f365ea7118861775af3e0f0fbd99e6693078fbfd8fdffe9c9a36a617bf69ea7b66fa97a9e99d61afee6ddedeb423a01150123f0516e94cd89bae033f82d3241435f85cb8b0adac9f824d92150e7ca99c1739f8046c93b228c104cea2bd00be104e8d97f31f84f3d08abd7b619fa83fc76097b4450366709e74c25c0a9bb2c4799c828bd4fa049c80cbd4fb0c2cfe97d1418947050e3eeb2af0bb7221e7f31eb84a6befb17ea4dc285f0b17a1c37dd80b477b05d6ef949ddadb05d726f5388f7784ad0ff08f0ec18d315ee2ff26ecbdee5f07b7c679e15561db0589ef4078ec3f1d803b93978807cd0afb52edad8d384d4c28251ffbe0d454a5c5faac704c90d8bb11f6b5ee9f071bd39692bf3de15101805f857d507f6e952bdd3f07b6d64afea8131eaf13e29566d69512af47e1acad701e3f819d2d4aa90fb1e7f2b291f821be696e4329e7a1fe6339d741eae34ad8b94af2bf0df6319e72ff81702c6030bd084ffceb83836d82dc774b38cb02fa81af959dae3f0b4fe297812bdf6afd6d82ebac947c723b61b9ffb9701eff02df2a9b5ae2f1a26c9517272cfe6c809b3c533e9830fc63abec8449e2dbf8a445bf70036eb33648ff88bdce992ac57a3d6293385b493d2d83535768bed06f26966f25f32208e74925f1443d191bd381fee2a05c57521f57c2792afa8cf96532d754122f526e259fdc2977caa85fe322a33ef859389e2fbca09c56325ffaca4619fd61f2c8120fa36c8509f98ad328d7fc621ec6eeb29ddc07fd1dbb2bd77caf80db22a965ff12b88bf520f1917876e5b87fe09f4da33db92fe66fec9ebc93f85e4c58f62f2aebfca046795c7fa8779b97a5fa87fa8bdd548b7f0cff3213c785cc57f897d990ea7aa19ca97dcca72c8ffecaf9984fd968dcc87cc2bcc9ea309e8798b7591359ec635ec4ea2af47eb9f2785eb9113b17c6fee3fde17ca854ff4eb956c6fb236fabf17eccefc255e3fde8d732969732eab58aedac8cf9dbc481aa8cf7535b75eaffcef0c7e567d067e2c015d7dc70fb7d7deef88ccff9822ff98aaf79f06d7dbe89dab77cc7f7511ef89187fcf4fffafc1c7d79e1577e5379e7599ee3f9ffd6e785e8cb222ff1f20759e1555ee3f57feb733f5adfe04ddefa4ab679877779efb33eef47ed033ee42395e328e3e7133ee584d37ff4d9445f2c67ec3e483e792ad873494c34d1ef53a08a6a6abe92963a3a839cd3055d8a7ed4bea26b1ad0cd27b9a53bbaff200ff448a2dfd1133d4779a1577aa3779a8dbf2ff8e7b3cc893ecdd3022dfe802ca9fe32add02aad7d47d6a9affa1bdcd0266dd136edd02eedd13e1dd0211d8d6248c77442a7341ccbcfd02fdfd4ffebd7a9bf0140c0deaa 789ccd94c96e1b490c86ef7e0ac1bc1903a66be9ee2a0ce6e07db7253b8b93600ed5d5dd96177991256fc1bcfb9448b6ed380692dc224a874f642d24ffe2bb85de517fb7b7f06eee66122627b1178761dc5ba8a7a3d1c3d77ffff93637af752f7d95523d3dffd7dcfc60d28bbdbdcb8b6606384d0059fa94e4c44361575633863b66e55c244661cf8c8fccc68492fc57cc65680be2a170cd8c4ab811ff25b3d36d4bfe4cb86006be8fca6c99937f42ac3b86036293eeebc87f23ec4b4ffe5be6d2c979c7ccae94fd5788ad0a921fef6fd3fd693fe0fa589749fc2e719ec592f31f0b37cc70ce9cb6e7fb7866e764fd0e71a154c97cc1ec72c9ff9ab854c665e41f313fd5638dd8a9c219e26de128fde0fa7b553a4bfe55e290f2e3fa73bdab14cff971bd2a6303f51f1e88a36a5d20e6fe46ddf89a78405cab46cee3fbd75a49fdd68583673ddc1337da3a5e7fc66c62e0f3f7885b6dbda2fd46c285e37cc7c24efc545f95e9ca73fe15b3b581f40c543fa574f4943fd2794acf0441fec89cfacffa38253626099ae22db38d15ed8fecb726f7fc1e4e840b66dc24ce8bb6e67ae4cc2ef0fec8f185099eef179e98fb7dcb5cd435f70b889d69b81f38146ea53fcbcce90feee747e1b2e5f58bc4ded996f245431cac091c7f2c6c853f085752bf256617458f9ab8b22e703e07cca56ff83db6c431f9492ff885d91b59ff9eb8b631707db699735bf1fa86b8b1359f8f6bccce36ac27debff1dd7ca889db5c57ac87ad19eb2ccfa55f3bcc2e0d1862eab7567929e7d17bd03ab593eb43fad1268f15eba161f656cea37a6a9bd715e747fdd379a12ad23352bf7451988af55a337b79af48ef29a937937ed13c4dafa368594f7cffd675f37063c6699cb5d2bf15e6741f5e4ffd31da07594ffa33c6cb7c417a6f49adadb023ae4237bffa33b6cab50dbfc77d669f355cff92d8842eff82b80cdd7cea0bcbfcc4cf33cef3500b7f9a71aa4ed7af23e2a2ead6d3fc28caaaab0f9d9f8ae18569be964d94fb22cd0757c4ee3e345f7c888d30d52bd8bad31bbd8fa81ac53c98fcbafd89f10818b0c2883536d8e2310ef1044ff10ccf718417788957788d63bcc1094e599f788b7778ff137bc047895fc4255cfe055b91f8555cc375dcf889ade3a6c46fe136eee02eeebd69fbd84f36c0033ce4f8c104dfe307fc889ff0e8957dc62f9891a95974574fd468d0628ec59395e9e7d077d180387d8e1f4c00204005116ab1065a38e6681876d12ffb0527700a67700e23b20bb814bb7a8efebebf700d63b881094c5fd82ddc3d47bfd603dcc3033cc2222c892dc3cacbe81ff503abb006ebb0019bc9b660fbfbe8b7f4063bb00b7bb00f7d18bc8e7e5b9f700087b3c81fa3ffccf7f25bf1fffd3df73fedfcc51d 789c8dd44b6fd3401007f07b3e4594bd5568d8879f421ca0b4a54f5a28908238acd776d2d2f499425bc4776732334e1a3b08ea5e7ef27fd733b3ab3c5feb0f0ff7fb6bcf7bb7533f3d0dfd30f637fdb5f26e3279f8faede5afdec0da3efea7ae6f07cf7a83a3693ff40f2e2faa19d408a142a4f18f1cc8b1766220273a6643224ec53139d5b9d890331dc49a9ceb4abc4ff6733f8a6bf103391823be1247e24b72699aef8fc9b5c9c4d44f694c210ee2e67b05d99ae67b4764679befed91632bfdc32e39b18978839cd9a6df37646f9b7eefc8856df69f922b67c5e73357da35f3fc4eb6aea9bf2647aed9af2227aed9af246751733e9ccfe7e757889bfa3cbbc9831237f3ccc9de94da912336d69f91b7c845941aba3c704f0e513031f9825cc6b803f90b191b30bcff505c487ec28e6b53930fc9756a2dafdf99b9d669e938ff916c92d8b28fc5c17af23ad966a9e3f5b76497eb88f367e438f711bf3f25277919f3bc68be75359f5f29f662cf365e53ff4ab1f1fc13da2f63e37916e4941d69e9df890bc379cb8e1399d7093bd1d2dfa638b781fc939d5a17917f880bc7ef3fb3b348fafd242ea4df0fecdcc5fcfdf7e222e6f9bf637b93f0fb03719672fddbe22ae5fbf0965d4419bf7f2df6594e7ec50e3a37e41b7192f3795d8b0b2f3f46ffff3ccd8302bf2a0305846e1ed3255450af4ac308c6cb794a9fc2197c87f34e7a02177009578bbca4afe1066e610a77adf40ff809f7f0008ff3bcc74ace30fd0a5ec33abc818d567a13b6e07191c7773556728be9b7b00d3bb00b7b9df47eabdf73ac641dd307f00e0ee16855ba35cf3bac6407d3efe1031cc3c76e7a398f2b36b092434c7f82cfabd2ed3caed8c34a8ee7e9e1727a457ed66553c9097c010de6eff9a5999c80050711c490fce5fe3c4d0f716f0729649043a260c5fd69cf5be3de9952caab4205155af7a7733a60b0921cd3a5aa54ad466af4e4feac3c4b48b09202d3d56285e46737f6a23b6f055849ddcde38a31ded8fbf6e9e08a80b9ba5d0fadb89addd8e534ad18f1b3629e7463bbcf22dd3ddf7f3d83df2f7a7f0072844804 789c8d97496f1d3b0e85f7f91546b80b1a7c354a5568f4c2f1ecc4531ce73969f4821a2a9ee3797ae8ffdebc87b2172fb79144018ccf3a94488aa2ca7fbc5b38dcdd5a78f7c79b9b5bb93d8e0bf148ae17dea5bbf3f3a77fffe75f7fbd79db340bfabff67ea179fb8f376ff76e17e2c2f68f8b3c03da52a0aeea2ad7823f81dbae7515d8815de77ae885c0a10bfd083e786117a05f01c72e3a6c46cb33eec77e743dd883439f8b7ebbf0e42278179cfae43cd6b7f9a9ad6a301d1abbd64de0a719bbca751efbc93ab86e9ba2afc08d0e5bff11dcebb0fdf7c0def9a183fd3e7868c71af1d181b10e8b1ff972632b7502af81a51dea01fc191c5deb2d9f0338b9c9237e59044f6d303dfd30d679d38f33f6956fbc839e5fd9f4f0cfd7ea30e2179c97ef9c783b8f60ecbbc1cef74f70effbc1f2f51d3c0bd8f27109f63e0ce6df3378e89a128f80830fa3cddf8253e76c9e0f8d357cecc7a8179f7d1ecc7fe4d74f7dd7e27cd81b0fed80fc31fc536a478bffcb2bdbf94770373b20e83f1a0fdd88f3a2a3c2e3887a951bb0ef929d1fbf371efc68f1d7e051f516bfad178754ec2fc0a9af8afdd28cc76a7462fe5f837577413ef803b81fcbfa720ed6749bbdec183bdfd83cfc1d87bed4976c18bfcc33fc1fc7318bd5efaab154c67c0c4ed289e9afc059f5569f8877d4dbd4d8f9b733966a6cecfcf9c858879dd756e121d87d6fc0b5d401e7c1a85769a517bb0fdfc0bd7863be2c3c94fd515fe25c53f2877ea16a2d30f097c2a1f81f0ac760f19d149e8ce50e3cf8b641bdd05763c9c1ce23be32ea8d137854b67a3516cd87ad6ffe050936cfa86f89babfd94f855fd6cbe014eac2b7857d30ff717f43a5ed0ff5c45f0b8768fe9d826b65e4534cdf7829f1f460e7522d98c77907ef86caeec7601ceb68fea33ec3109b68f93c038b365cd813ea4177eb23fa1ba31e438c2ec23f41bf0cc9c5caceffd958e74dbf5cd847f3af0367ef1ad4076f1aab1efbf1c38c6315c768ebdd1596c2a86ff55ea2e56b2c1c8c09f5acd1c464f70ff72bb6bea94c7f6f1c53aaa187bf1a6d4e965ff4738d764ad63f503fd1a52aa13f30f2abd1e4b2df9a71aa939d3ff2a1d7bf49d6af90cfa817b6b678f19e4549adcd33fa6f0ca94b763fcddfa80f969d07fa9d7aeb92d53fde03f5764876bea8af38f960ebd3a9b1ce5bfef17ea9f792ac3fa1ffa8b79df94be80fea6d99e7d5c2a1e843e198ecfe637ff5be377f19f1eb6ac9e619f75d6773b2fca05fa9f7bec4735078ca960fbcc769c875b6fca3bfa43137d9fa05dea324b9cd967fd44f8ab93326f413ddbccf160fee67cad965e497901fdd4d9f10e40bf72f57636c6dbdda78f6c0405fe6f360ccf05fbdd396087bf4f7dc8cd9de1f62e359c3841edf1bea9d1813fa817aa70d007c513814c67d526fb5a0c0e83fea8d26108cfa576ff41f18f743779bb2f57fd47b0edaeeccfed6f8751ef596a3e8070ef8b1b06f2d1fa785f58184fd99f1544d564fb82f7a98f584fbc2e8d7394fcd64f1a3bef234b593dd17f46755f793f54be463d2fa19addef1fda4ea324f785fa64e3f58cc3fbc7f934b6df97e5a2edc97ef8987c26e30ffaf5ed9be2f4e0afbc1f2bb613c0d939dafadefa771b278d17fa6301bb0c7fb33a53c8cc6f785f505052fbdb2e577b37010e46bef763698583870e4c49927fe6ebffdfb78d1f3111ff3099ff2199febb8e01f7cc957ff4fcfd77cc3b7aabde37b1d0ffcc84ffccc8b7c3d4fcfef7949d5cbbcc2abbcc6ebaade50fd3a6ff287b9fa8fbca51e3cf136eff02eeff127dee7cfaa3fe02ffce71cfd217fd5d5d755fd8d2bd5d6dc70aba3e39edd1cbde781475e252622a140911265dea14c137dff594f477c46c77c4f2774aa5699ce7897ced52ad205fd98a3bfa42b3aa66b5ea71baee956d5776af38deee9811ee7e89ff8829ee94a3d6f6851fd88aa247acf152dd1f21cfd0aadaafe98d6d4f7458de281d6698336e9037da49539fa2ddad6fcecf3cadff43bb44b7bf3ce973ed13e3d6bac4173ffe2cf673aa02f3427ffb39f6a71485f677a9a10ef37aaa8a6865aeaa8ff59af165be4c8d340a3b090feb921fa05a38f9236ad49beffac9f37e4488ee5444ee54cce7f4b7f213fe452aed4e25a6e7ead578b5bb9937b7990477992e75febd56251decb922ccb8aaccadaaff56ab12e1bb2291fe4a36cfd8e5e2db6654776654f3efd9e1e16fbf2590edefef79f6ffe07ffbdcd55 789c8597c9721c390e86ef7e0a8571734ca033997b4ccc418bb5d9da7775cc01cc646adf4b52491df3eec3c28fca6a77cb6da52e5f1020b193f5db97b9e3ed8db92fbf7d7a1ac9e8a29d6bcfe571ee4bf77c73f3f6fb7ffff3c7a7cfcecde97f3ae73effebd3e79dd15c3bb779771b26201c81aa36897fca17cadd94299d709d0d9c28e783fca6719de4ca63e32629949d7211d7f570393116ac13f4fdb0df37e5d62569afeb90efa27cab7caa1c06f9ab09372e6dccbe37e599bddf95f3a9be57ff9a2295a453fd75b0eb9db217e532eed7e8faedc05ef7db50ae86fd71fe103f7a559ed9abf168fac1de63b06b8dd55e495d484b9557ff25abeba6d2f53be5dc49aaf25c2917c37917c6769eb4ca655a25aa4f97caf5549e8f9467f69e83ebd0a83eab7d32e45faec1599962ff5770d117881f29872c4654f5cb096b3aa1df293b57229e5c28674969f6687efcac9e0e958bb22bb1aef1f6e560ff81f2107fff06ce7bf3e7055ca715e2bfa55c6755aaf5eedfc1c5d47fd8d3a44592e9f9b0a7c92ba7f5e9e7c15379867d329cffa8ec0b67eb0bca437cfd185c64761eceef32877cfb4b70919bfea2f2502ffe015c14b6aef5d10ef1a512ec1cfa8b6b65e76245e8fab57148b49fbc071795e93f83e387f533e5aca8edbc91f2506f92810b316e94cb2933f69be5e70a5c16361f7694ebc2eadfbf82cba93d3a2fda187fab278d7feba7f54207e0d4e229cbca6d61f967f83b9b5f8760975a7ee14f5f4ef37533e16e16cf5e398d1fcecf06d6fe17cd57e74acb97a8bfb13d5ac497351e5d5e6419fa4fe3d915bef3ca1c94877a966d70d139ed0f7f0e2ef30cf373175cd5d63fb06fd6cf4fca4d6af1e37570d65a7d41bea92ba7ccb9b254798efe5855eed21cf921d8dfd54589790d7be20675aafa27c6dee605ec8b7f01f9d57eeb4299a07fe4d438731a3fcfc675867c7c0557a1803cfc09b594887f0aee42d075d6fba2ebcb50407f051c6f0c6576e0b669d10f3a9fc2905faff321a48dd58fbf57764d9e627f9d5761369fc4781adf2bb0337d5e020ff1d07c8749bbabbf8cf38a98508dbfe83c0b65e5501ffe092c550a7f0ec06d2d1a4f4ec0f1c3fedabfa19ae69bd6c0b9e59b6c3d362c18f657755e227f2be0f8613fbd2f429d76e6cf2d38ee87fa40fceaaa2d905ff8132fec0afb6b3e43536539ecdd57962ac950afdaefc1b79587bed65fe8a475b067191cba5e99f4fe09a14c13cceb67b04cef4b9d07a1af1287fad0fee9933617f029387e1a4fd2fbae4fcb26457d6bfff7aef40efdb807f6bda05eb41efb2c7ef04fe3d3e75585fea475e3c6217e5be0787eadeb9acfbe283dee1beac0759a613d18d716af55705b89dea7a4f77b5fc6f2833de7e0a629555fb41ffaaa2ae1bf2c18fb4ce3e7c9b8437dc90db8ce72e4f715ecfb46cfe331b86d04efc13570884f00b547eba5afe37cc5f9b0bf2e2545be1e8d5bc457eec1d13ef4b337aef1be927770ed100f3696aa827e0dee5c8dfb4beba56fe2fec8ef1b38c60bfafa3eeac58706bc3630f2a5f5d84f1e1098c7b5718b7ee30b702ba81f3f32f6781ff2bd718bf830fcf55d6af3fcc138f3b017dcd65d0e7b2ec1b1e0e11ff2dd86e0f1bed5faefe37cb4f7b1ceebbe2f3dea9ff68cbb14ebd8bfaf0aabafcc5830df69d73820de847aeeeb04f52189719ae97e343f30fa65c1b8407e448ccb0cfeed0c8cf970632c39ea61dbb8cd517f8be026c9918f19a37e1f8db302f5766bdc16f06fc9b803cb8c113fe4bf17a9506f6703231ec85fefe3134ff38b7eee3bc9f0de37fdaec57bd65f8383d9e3cdbf50e33ef2b753c6febe33f615ecb37c8578432a17c6a1d1787bf44fdf27d66fa5712ab81ff68d738fdf1f9571d5e2fd7d34e5a0feec8c7ef531b1b0e796bb5fcb73e09ecff89c2ff892af7e25cfd77cc3b77cc7f7fcc08ffcf4cff23ce2677ee1571ef35bd478e7f97f92e7055ee425fecacbbcc2abbcc6ebfcede7f2fc9d377893b7789b777897f7789f0ff8f0aff27c347cc77cc2a79c70ca8e33ceb9e07267f4a33c575c73434c44429e5aea28504f67744e17743991f8b33c5dd135ddd02dddd13d3dd0233dd1286a3cd30bbdd2183233797aa3779aa7055aa425fa4acbb442abb446ebf48dbed3c674cfa93c6dd2166dd38e6aecd21eedd3011dd2111dd3099dce2c863c25c39792a38c722aa8a48a6a6a28fd733c7ef45758280e412fad7412a4973339978b9fc9cba55cc9b5dcc8addcc9bd3cc823ddc993f0c7f232926779915719cb9bbccbbc2cc8a22cc9d78fe56559566455d6645dbec977d9904dd99ac44ab63f92971dd9953dd99703399423399693e8c9a924928afb503e935c8af8bcdc9778874823da1e3efea6fb517a2aef7dbc0cba89868f33db9f4d22e5cffdc55fa521ef2ffd95bff637fed6dff97bff60911dff5ddae41ffd931ff967ffe25ffdd88f4dfe0369937ff3effacdfbf99ff5ce20ffbf7f7ffa3f863e6316 Banner_10 widgetOpened() SetBanner_10 execute() FontColor widgetTextChanged(const QString&) DrawTitleFont execute() Banner_7 widgetOpened() SetBanner_7 execute() Banner_6 widgetOpened() SetBanner_6 execute() Banner_11 widgetOpened() SetBanner_11 execute() UsePictureBackground toggled(bool) BackgroundPicture setEnabled(bool) Banner_2 widgetOpened() SetBanner_2 execute() Banner_3 widgetOpened() SetBanner_3 execute() Banner_12 widgetOpened() SetBanner_12 execute() OutputDir widgetTextChanged(const QString&) CheckOutputDir execute() TitleFont widgetOpened() AddFonts execute() Banner_13 widgetOpened() SetBanner_13 execute() FontOutlineColor widgetTextChanged(const QString&) DrawTitleFont execute() DVDAuthor selected(const QString&) DrawTitleFont execute() TitleFont widgetTextChanged(const QString&) DrawTitleFont execute() Banner_5 widgetOpened() SetBanner_5 execute() Banner_8 widgetOpened() SetBanner_8 execute() PauseSeconds widgetTextChanged(const QString&) ChangeScenePause execute() Playlist selectionChanged() UpdateSceneSettings execute() Banner_14 widgetOpened() SetBanner_14 execute() IntroMovie widgetTextChanged(const QString&) CheckIntroMovie execute() SceneTitle textChanged(const QString&) ChangeSceneTitle execute() SceneDecoration widgetTextChanged(const QString&) Update execute() DecoPicture widgetOpened() InitDeco execute() Label4 widgetOpened() SystemCheck execute() UseMovieBackground toggled(bool) BackgroundWashout setEnabled(bool) PauseSeconds valueChanged(int) ChangeScenePause execute() SubtitleFont widgetTextChanged(const QString&) DrawSubtitleFont execute() Banner_9 widgetOpened() SetBanner_9 execute() LabelFont widgetTextChanged(const QString&) DrawLabelFont execute() IntroMovie widgetOpened() SetOutputDir execute() Banner widgetOpened() SetBanner execute() UseMovieBackground toggled(bool) BackgroundMovie setEnabled(bool) PauseRadio1 toggled(bool) ChangeScenePause execute() OutputDir widgetOpened() SetPath execute() Banner_4 widgetOpened() SetBanner_4 execute() Title Subtitle StandardAspect IntroMovie Playlist SceneTitle PauseRadio1 PauseSeconds TitleFont SubtitleFont LabelFont UseCheckersBackground ExecButton2_2_2 ExecButton2_2 ExecButton2 ExecButton15 ExecButton17