From 4fcf0081caef8b4c57467e1486ba3c8755490fa0 Mon Sep 17 00:00:00 2001 From: Zygo Blaxell Date: Mon, 16 Apr 2018 00:16:34 -0400 Subject: [PATCH 1/1] From http://www.jwz.org/xscreensaver/xscreensaver-5.39.tar.gz -rw-rw-r-- 1 zblaxell zblaxell 12157285 Apr 13 13:26 xscreensaver-5.39.tar.gz 7166c9f4a860785e0829df046f0328f5be74c0d7 xscreensaver-5.39.tar.gz --- INSTALL | 183 + Makefile.in | 357 + OSX/English.lproj/InfoPlist.strings | Bin 0 -> 92 bytes .../SaverRunner.nib/designable.nib | 1790 + .../SaverRunner.nib/keyedobjects.nib | Bin 0 -> 13707 bytes OSX/Gallant19.bdf | 13691 ++ OSX/InvertedSlider.h | 38 + OSX/InvertedSlider.m | 151 + OSX/LaunchScreen.xib | 19 + OSX/Makefile | 436 + .../AppIcon.appiconset/Contents.json | 154 + .../AppIcon.appiconset/iSaverRunner100.png | Bin 0 -> 3261 bytes .../AppIcon.appiconset/iSaverRunner1024.png | Bin 0 -> 46983 bytes .../AppIcon.appiconset/iSaverRunner114.png | Bin 0 -> 3809 bytes .../AppIcon.appiconset/iSaverRunner120.png | Bin 0 -> 7620 bytes .../AppIcon.appiconset/iSaverRunner144.png | Bin 0 -> 5807 bytes .../AppIcon.appiconset/iSaverRunner152.png | Bin 0 -> 10257 bytes .../AppIcon.appiconset/iSaverRunner167.png | Bin 0 -> 10232 bytes .../AppIcon.appiconset/iSaverRunner180.png | Bin 0 -> 6341 bytes .../AppIcon.appiconset/iSaverRunner29.png | Bin 0 -> 845 bytes .../AppIcon.appiconset/iSaverRunner40.png | Bin 0 -> 1106 bytes .../AppIcon.appiconset/iSaverRunner50.png | Bin 0 -> 1506 bytes .../AppIcon.appiconset/iSaverRunner57.png | Bin 0 -> 1688 bytes .../AppIcon.appiconset/iSaverRunner58.png | Bin 0 -> 1673 bytes .../AppIcon.appiconset/iSaverRunner72.png | Bin 0 -> 2224 bytes .../AppIcon.appiconset/iSaverRunner76.png | Bin 0 -> 4410 bytes .../AppIcon.appiconset/iSaverRunner80.png | Bin 0 -> 2432 bytes .../AppIcon.appiconset/iSaverRunner87.png | Bin 0 -> 2766 bytes OSX/Media-iOS.xcassets/Contents.json | 6 + .../Image.imageset/Contents.json | 20 + .../LaunchImage.launchimage/1242x2208.png | Bin 0 -> 607 bytes .../LaunchImage.launchimage/640x1136.png | Bin 0 -> 360 bytes .../LaunchImage.launchimage/640x960.png | Bin 0 -> 346 bytes .../LaunchImage.launchimage/750x1334.png | Bin 0 -> 394 bytes .../LaunchImage.launchimage/Contents.json | 51 + OSX/OCRAStd.otf | Bin 0 -> 30636 bytes OSX/PrefsReader.h | 56 + OSX/PrefsReader.m | 608 + OSX/PxPlus_IBM_VGA8.ttf | Bin 0 -> 70956 bytes OSX/README | 42 + OSX/SaverListController.h | 36 + OSX/SaverListController.m | 402 + OSX/SaverRunner.h | 111 + OSX/SaverRunner.icns | Bin 0 -> 62554 bytes OSX/SaverRunner.m | 1645 + OSX/SaverRunner.plist | 38 + OSX/Sparkle.framework/Headers | 1 + OSX/Sparkle.framework/Resources | 1 + OSX/Sparkle.framework/Sparkle | 1 + .../Versions/A/Headers/SUAppcast.h | 36 + .../Versions/A/Headers/SUAppcastItem.h | 60 + .../Versions/A/Headers/SUUpdater.h | 161 + .../A/Headers/SUVersionComparisonProtocol.h | 29 + .../A/Headers/SUVersionDisplayProtocol.h | 27 + .../Versions/A/Headers/Sparkle.h | 21 + .../Versions/A/Resources/Info.plist | 40 + .../Versions/A/Resources/License.txt | 38 + .../A/Resources/SUModelTranslation.plist | 182 + .../Versions/A/Resources/SUStatus.nib | Bin 0 -> 6565 bytes .../ar.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7118 bytes .../A/Resources/ar.lproj/SUPasswordPrompt.nib | Bin 0 -> 5993 bytes .../A/Resources/ar.lproj/SUUpdateAlert.nib | Bin 0 -> 10445 bytes .../ar.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12737 bytes .../A/Resources/ar.lproj/Sparkle.strings | Bin 0 -> 8896 bytes .../cs.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7039 bytes .../A/Resources/cs.lproj/SUUpdateAlert.nib | Bin 0 -> 10241 bytes .../cs.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12782 bytes .../A/Resources/cs.lproj/Sparkle.strings | Bin 0 -> 8642 bytes .../da.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7018 bytes .../A/Resources/da.lproj/SUPasswordPrompt.nib | Bin 0 -> 5942 bytes .../A/Resources/da.lproj/SUUpdateAlert.nib | Bin 0 -> 10347 bytes .../da.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12635 bytes .../A/Resources/da.lproj/Sparkle.strings | Bin 0 -> 8818 bytes .../de.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7109 bytes .../A/Resources/de.lproj/SUUpdateAlert.nib | Bin 0 -> 10386 bytes .../de.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12699 bytes .../A/Resources/de.lproj/Sparkle.strings | Bin 0 -> 9246 bytes .../en.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7015 bytes .../A/Resources/en.lproj/SUPasswordPrompt.nib | Bin 0 -> 5936 bytes .../A/Resources/en.lproj/SUUpdateAlert.nib | Bin 0 -> 10258 bytes .../en.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12566 bytes .../A/Resources/en.lproj/Sparkle.strings | Bin 0 -> 9042 bytes .../es.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7052 bytes .../A/Resources/es.lproj/SUUpdateAlert.nib | Bin 0 -> 10492 bytes .../es.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12872 bytes .../A/Resources/es.lproj/Sparkle.strings | Bin 0 -> 8956 bytes .../Contents/Info.plist | 50 + .../Contents/MacOS/finish_installation | Bin 0 -> 138260 bytes .../finish_installation.app/Contents/PkgInfo | 1 + .../Contents/Resources/SUStatus.nib | Bin 0 -> 6565 bytes .../Contents/Resources/Sparkle.icns | Bin 0 -> 50219 bytes .../Resources/ar.lproj/Sparkle.strings | Bin 0 -> 8896 bytes .../Resources/cs.lproj/Sparkle.strings | Bin 0 -> 8642 bytes .../Resources/da.lproj/Sparkle.strings | Bin 0 -> 8818 bytes .../Resources/de.lproj/Sparkle.strings | Bin 0 -> 9246 bytes .../Resources/en.lproj/Sparkle.strings | Bin 0 -> 9042 bytes .../Resources/es.lproj/Sparkle.strings | Bin 0 -> 8956 bytes .../Resources/fr.lproj/Sparkle.strings | Bin 0 -> 9204 bytes .../Resources/is.lproj/Sparkle.strings | Bin 0 -> 6772 bytes .../Resources/it.lproj/Sparkle.strings | Bin 0 -> 9136 bytes .../Resources/ja.lproj/Sparkle.strings | Bin 0 -> 7518 bytes .../Resources/nl.lproj/Sparkle.strings | Bin 0 -> 9374 bytes .../Resources/pl.lproj/Sparkle.strings | Bin 0 -> 9532 bytes .../Resources/pt_BR.lproj/Sparkle.strings | Bin 0 -> 8330 bytes .../Resources/pt_PT.lproj/Sparkle.strings | Bin 0 -> 8652 bytes .../Resources/ro.lproj/Sparkle.strings | Bin 0 -> 9386 bytes .../Resources/ru.lproj/Sparkle.strings | Bin 0 -> 8662 bytes .../Resources/sl.lproj/Sparkle.strings | Bin 0 -> 8778 bytes .../Resources/sv.lproj/Sparkle.strings | Bin 0 -> 8600 bytes .../Resources/th.lproj/Sparkle.strings | Bin 0 -> 8946 bytes .../Resources/tr.lproj/Sparkle.strings | Bin 0 -> 9284 bytes .../Resources/uk.lproj/Sparkle.strings | Bin 0 -> 8644 bytes .../Resources/zh_CN.lproj/Sparkle.strings | Bin 0 -> 6908 bytes .../Resources/zh_TW.lproj/Sparkle.strings | Bin 0 -> 6642 bytes .../fr.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7076 bytes .../A/Resources/fr.lproj/SUUpdateAlert.nib | Bin 0 -> 10436 bytes .../fr.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12914 bytes .../A/Resources/fr.lproj/Sparkle.strings | Bin 0 -> 9204 bytes .../Versions/A/Resources/fr_CA.lproj | 1 + .../is.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7013 bytes .../A/Resources/is.lproj/SUUpdateAlert.nib | Bin 0 -> 10221 bytes .../is.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12780 bytes .../A/Resources/is.lproj/Sparkle.strings | Bin 0 -> 6772 bytes .../it.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7002 bytes .../A/Resources/it.lproj/SUUpdateAlert.nib | Bin 0 -> 10353 bytes .../it.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12716 bytes .../A/Resources/it.lproj/Sparkle.strings | Bin 0 -> 9136 bytes .../ja.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7103 bytes .../A/Resources/ja.lproj/SUUpdateAlert.nib | Bin 0 -> 10436 bytes .../ja.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12524 bytes .../A/Resources/ja.lproj/Sparkle.strings | Bin 0 -> 7518 bytes .../ko.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 6919 bytes .../A/Resources/ko.lproj/SUUpdateAlert.nib | Bin 0 -> 10079 bytes .../ko.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12417 bytes .../nl.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7007 bytes .../A/Resources/nl.lproj/SUUpdateAlert.nib | Bin 0 -> 10333 bytes .../nl.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12515 bytes .../A/Resources/nl.lproj/Sparkle.strings | Bin 0 -> 9374 bytes .../pl.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7039 bytes .../A/Resources/pl.lproj/SUUpdateAlert.nib | Bin 0 -> 10223 bytes .../pl.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12564 bytes .../A/Resources/pl.lproj/Sparkle.strings | Bin 0 -> 9532 bytes .../Versions/A/Resources/pt.lproj | 1 + .../pt_BR.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7080 bytes .../pt_BR.lproj/SUPasswordPrompt.nib | Bin 0 -> 5967 bytes .../A/Resources/pt_BR.lproj/SUUpdateAlert.nib | Bin 0 -> 10328 bytes .../pt_BR.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12785 bytes .../A/Resources/pt_BR.lproj/Sparkle.strings | Bin 0 -> 8330 bytes .../pt_PT.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7094 bytes .../A/Resources/pt_PT.lproj/SUUpdateAlert.nib | Bin 0 -> 10513 bytes .../pt_PT.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12886 bytes .../A/Resources/pt_PT.lproj/Sparkle.strings | Bin 0 -> 8652 bytes .../ro.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7117 bytes .../A/Resources/ro.lproj/SUUpdateAlert.nib | Bin 0 -> 10466 bytes .../ro.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12592 bytes .../A/Resources/ro.lproj/Sparkle.strings | Bin 0 -> 9386 bytes .../ru.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7143 bytes .../A/Resources/ru.lproj/SUUpdateAlert.nib | Bin 0 -> 10524 bytes .../ru.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12864 bytes .../A/Resources/ru.lproj/Sparkle.strings | Bin 0 -> 8662 bytes .../sk.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7068 bytes .../A/Resources/sk.lproj/SUUpdateAlert.nib | Bin 0 -> 10270 bytes .../sk.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12778 bytes .../sl.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7103 bytes .../A/Resources/sl.lproj/SUUpdateAlert.nib | Bin 0 -> 10232 bytes .../sl.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12751 bytes .../A/Resources/sl.lproj/Sparkle.strings | Bin 0 -> 8778 bytes .../sv.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7022 bytes .../A/Resources/sv.lproj/SUUpdateAlert.nib | Bin 0 -> 10385 bytes .../sv.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12727 bytes .../A/Resources/sv.lproj/Sparkle.strings | Bin 0 -> 8600 bytes .../th.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7087 bytes .../A/Resources/th.lproj/SUPasswordPrompt.nib | Bin 0 -> 5985 bytes .../A/Resources/th.lproj/SUUpdateAlert.nib | Bin 0 -> 10342 bytes .../th.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12658 bytes .../A/Resources/th.lproj/Sparkle.strings | Bin 0 -> 8946 bytes .../tr.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7179 bytes .../A/Resources/tr.lproj/SUUpdateAlert.nib | Bin 0 -> 10477 bytes .../tr.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12731 bytes .../A/Resources/tr.lproj/Sparkle.strings | Bin 0 -> 9284 bytes .../uk.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 7233 bytes .../A/Resources/uk.lproj/SUUpdateAlert.nib | Bin 0 -> 10624 bytes .../uk.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12774 bytes .../A/Resources/uk.lproj/Sparkle.strings | Bin 0 -> 8644 bytes .../zh_CN.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 6938 bytes .../A/Resources/zh_CN.lproj/SUUpdateAlert.nib | Bin 0 -> 10244 bytes .../zh_CN.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12334 bytes .../A/Resources/zh_CN.lproj/Sparkle.strings | Bin 0 -> 6908 bytes .../zh_TW.lproj/SUAutomaticUpdateAlert.nib | Bin 0 -> 6891 bytes .../A/Resources/zh_TW.lproj/SUUpdateAlert.nib | Bin 0 -> 10040 bytes .../zh_TW.lproj/SUUpdatePermissionPrompt.nib | Bin 0 -> 12315 bytes .../A/Resources/zh_TW.lproj/Sparkle.strings | Bin 0 -> 6642 bytes OSX/Sparkle.framework/Versions/A/Sparkle | Bin 0 -> 403600 bytes OSX/Sparkle.framework/Versions/Current | 1 + OSX/Updater.h | 39 + OSX/Updater.m | 176 + OSX/Updater.plist | 50 + OSX/Updater.xib | 344 + OSX/XScreenSaver.icns | Bin 0 -> 77001 bytes OSX/XScreenSaver.plist | 30 + OSX/XScreenSaverAndroidWebloc.icns | Bin 0 -> 87465 bytes OSX/XScreenSaverConfigSheet.h | 79 + OSX/XScreenSaverConfigSheet.m | 3710 + OSX/XScreenSaverDMG.icns | Bin 0 -> 110173 bytes OSX/XScreenSaverFolder.icns | Bin 0 -> 327214 bytes OSX/XScreenSaverGLView.h | 39 + OSX/XScreenSaverGLView.m | 433 + OSX/XScreenSaverPkg.icns | Bin 0 -> 256741 bytes OSX/XScreenSaverSubclass.m | 33 + OSX/XScreenSaverView.h | 182 + OSX/XScreenSaverView.m | 3059 + OSX/XScreenSaverWebloc.icns | Bin 0 -> 88285 bytes OSX/YearlReg.ttf | Bin 0 -> 44984 bytes OSX/apple2-app.xml | 35 + OSX/bindist-DS_Store | Bin 0 -> 12292 bytes OSX/bindist.rtf | 78 + OSX/bindist.webloc | 8 + OSX/bindist2.webloc | 8 + OSX/build-fntable.pl | 188 + OSX/enable_gc.c | 368 + OSX/fuzztest.sh | 54 + OSX/grabclient-ios.m | 95 + OSX/grabclient-osx.m | 463 + OSX/iSaverRunner.ai | 3593 + OSX/iSaverRunner.plist | 71 + OSX/iSaverRunner.xib | 36 + OSX/iSaverRunner1024.png | Bin 0 -> 46983 bytes OSX/iSaverRunner57t.png | Bin 0 -> 1763 bytes OSX/icmp-warning.pl | 69 + OSX/installer.png | Bin 0 -> 26216 bytes OSX/installer.rtf | 27 + OSX/installer.sh | 141 + OSX/installer.xml | 29 + OSX/ios-function-table.m | 474 + OSX/luximr.ttf | Bin 0 -> 71784 bytes OSX/main.m | 29 + OSX/phosphor-app.xml | 37 + OSX/seticon.pl | 110 + OSX/settings.png | Bin 0 -> 3680 bytes OSX/settings@2x.png | Bin 0 -> 4181 bytes OSX/settings@3x.png | Bin 0 -> 5617 bytes OSX/sign_update.rb | 7 + OSX/sparkle_dsa_pub.pem | 20 + OSX/stop.png | Bin 0 -> 470 bytes OSX/stop@2x.png | Bin 0 -> 859 bytes OSX/stop@3x.png | Bin 0 -> 1701 bytes OSX/textclient-ios.m | 129 + OSX/update-info-plist.pl | 508 + OSX/updates.pl | 219 + OSX/updates.xml | 66 + OSX/xscreensaver.xcconfig | 11 + OSX/xscreensaver.xcodeproj/project.pbxproj | 40268 ++++ OSX/xscreensaver_Prefix.pch | 33 + README | 1603 + README.VMS | 57 + README.hacking | 198 + aclocal.m4 | 717 + android/Makefile | 416 + android/README | 208 + android/android.iml | 19 + android/build.gradle | 24 + android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + android/gradlew | 160 + android/gradlew.bat | 90 + android/local.properties | 11 + android/screenhack-android.c | 209 + android/settings.gradle | 1 + .../.idea/caches/build_file_checksums.ser | Bin 0 -> 521 bytes .../xscreensaver/.idea/codeStyles/Project.xml | 29 + android/xscreensaver/.idea/compiler.xml | 22 + android/xscreensaver/.idea/gradle.xml | 19 + android/xscreensaver/.idea/misc.xml | 9 + android/xscreensaver/.idea/modules.xml | 9 + .../xscreensaver/.idea/runConfigurations.xml | 12 + android/xscreensaver/.idea/workspace.xml | 1949 + android/xscreensaver/assets/fonts/OCRAStd.otf | 1 + .../assets/fonts/PxPlus_IBM_VGA8.ttf | 1 + .../xscreensaver/assets/fonts/YearlReg.ttf | 1 + android/xscreensaver/build.gradle | 108 + android/xscreensaver/build.xml | 92 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + android/xscreensaver/gradlew | 160 + android/xscreensaver/gradlew.bat | 90 + android/xscreensaver/jni/Android.mk | 198 + android/xscreensaver/jni/Application.mk | 6 + android/xscreensaver/local.properties | 11 + android/xscreensaver/project.properties | 15 + .../xscreensaver/res/drawable-ldpi/icon.png | Bin 0 -> 2134 bytes .../xscreensaver/res/drawable-mdpi/icon.png | Bin 0 -> 3039 bytes .../xscreensaver/res/drawable/thumbnail.png | Bin 0 -> 69607 bytes .../res/layout-land/activity_xscreensaver.xml | 59 + .../res/layout/activity_tv_xscreensaver.xml | 41 + .../res/layout/activity_xscreensaver.xml | 44 + android/xscreensaver/res/layout/main.xml | 7 + .../res/layout/preference_blurb.xml | 45 + .../res/layout/slider_preference.xml | 60 + .../src/org/jwz/xscreensaver/Activity.java | 59 + .../src/org/jwz/xscreensaver/App.java | 22 + .../src/org/jwz/xscreensaver/Daydream.java | 269 + .../src/org/jwz/xscreensaver/Settings.java | 179 + .../jwz/xscreensaver/SliderPreference.java | 160 + .../src/org/jwz/xscreensaver/TTFAnalyzer.java | 153 + .../src/org/jwz/xscreensaver/TVActivity.java | 50 + .../src/org/jwz/xscreensaver/Wallpaper.java | 128 + .../src/org/jwz/xscreensaver/jwxyz.java | 1076 + android/xscreensaver/xscreensaver.iml | 94 + ax_pthread.m4 | 332 + config.guess | 1476 + config.h-vms | 284 + config.h.in | 475 + config.sub | 1801 + configure | 18008 ++ configure.in | 4708 + driver/.gdbinit | 27 + driver/Makefile.in | 1023 + driver/README | 6 + driver/XScreenSaver-Xm.ad | 126 + driver/XScreenSaver.ad.in | 550 + driver/XScreenSaver_Xm_ad.h | 108 + driver/XScreenSaver_ad.h | 410 + driver/auth.h | 54 + driver/compile_axp.com | 15 + driver/compile_decc.com | 15 + driver/demo-Gtk-conf.c | 1998 + driver/demo-Gtk-conf.h | 31 + driver/demo-Gtk.c | 5337 + driver/demo-Xm-widgets.c | 907 + driver/demo-Xm.c | 1875 + driver/dpms.c | 304 + driver/exec.c | 300 + driver/exec.h | 21 + driver/link_axp.com | 15 + driver/link_decc.com | 15 + driver/lock.c | 2259 + driver/mlstring.c | 229 + driver/mlstring.h | 57 + driver/passwd-helper.c | 162 + driver/passwd-kerberos.c | 251 + driver/passwd-pam.c | 526 + driver/passwd-pwent.c | 312 + driver/passwd.c | 339 + driver/pdf2jpeg.m | 152 + driver/pdf2jpeg.man | 43 + driver/prefs.c | 1770 + driver/prefs.h | 37 + driver/remote.c | 595 + driver/remote.h | 24 + driver/screens.c | 1094 + driver/screensaver-properties.desktop.in | 8 + driver/setuid.c | 361 + driver/splash.c | 917 + driver/stderr.c | 560 + driver/subprocs.c | 1423 + driver/test-apm.c | 101 + driver/test-fade.c | 123 + driver/test-grab.c | 89 + driver/test-mlstring.c | 312 + driver/test-passwd.c | 306 + driver/test-randr.c | 339 + driver/test-screens.c | 208 + driver/test-uid.c | 209 + driver/test-vp.c | 213 + driver/test-xdpms.c | 179 + driver/test-xinerama.c | 112 + driver/timers.c | 1788 + driver/types.h | 442 + driver/vms-getpwnam.c | 129 + driver/vms-hpwd.c | 75 + driver/vms-pwd.h | 48 + driver/vms-validate.c | 75 + driver/vms_axp.opt | 5 + driver/vms_axp_12.opt | 5 + driver/vms_decc.opt | 5 + driver/vms_decc_12.opt | 5 + driver/windows.c | 2003 + driver/xdpyinfo.c | 1098 + driver/xscreensaver-command.c | 450 + driver/xscreensaver-command.man | 263 + driver/xscreensaver-demo.glade2.in | 3136 + driver/xscreensaver-demo.glade2p | 19 + driver/xscreensaver-demo.man | 402 + driver/xscreensaver-getimage-desktop | 174 + driver/xscreensaver-getimage-desktop.man | 55 + driver/xscreensaver-getimage-file | 1178 + driver/xscreensaver-getimage-file.man | 66 + driver/xscreensaver-getimage-video | 144 + driver/xscreensaver-getimage-video.man | 51 + driver/xscreensaver-getimage.c | 1998 + driver/xscreensaver-getimage.man | 73 + driver/xscreensaver-text | 884 + driver/xscreensaver-text.man | 85 + driver/xscreensaver.c | 2463 + driver/xscreensaver.h | 210 + driver/xscreensaver.man | 1035 + driver/xscreensaver.pam.in | 13 + driver/xset.c | 389 + hacks/.gdbinit | 12 + hacks/Makefile.in | 3056 + hacks/README | 6 + hacks/abstractile.c | 1605 + hacks/abstractile.man | 52 + hacks/analogtv.c | 2514 + hacks/analogtv.h | 328 + hacks/anemone.c | 448 + hacks/anemone.man | 74 + hacks/anemotaxis.c | 755 + hacks/anemotaxis.man | 78 + hacks/ant.c | 1350 + hacks/ant.man | 96 + hacks/apollonian.c | 810 + hacks/apollonian.man | 70 + hacks/apple2-main.c | 1913 + hacks/apple2.c | 885 + hacks/apple2.h | 121 + hacks/apple2.man | 206 + hacks/asm6502.c | 2275 + hacks/asm6502.h | 181 + hacks/attraction.c | 1109 + hacks/attraction.man | 214 + hacks/automata.h | 64 + hacks/barcode.c | 1995 + hacks/barcode.man | 61 + hacks/binaryring.c | 587 + hacks/binaryring.man | 88 + hacks/blaster.c | 1191 + hacks/blaster.man | 65 + hacks/blitspin.c | 451 + hacks/blitspin.man | 96 + hacks/bouboule.c | 858 + hacks/bouboule.man | 80 + hacks/boxfit.c | 561 + hacks/boxfit.man | 102 + hacks/braid.c | 443 + hacks/braid.man | 69 + hacks/bsod.c | 6007 + hacks/bsod.man | 149 + hacks/bubbles-default.c | 154 + hacks/bubbles.c | 1437 + hacks/bubbles.h | 208 + hacks/bubbles.man | 140 + hacks/bumps.c | 700 + hacks/bumps.man | 80 + hacks/ccurve.c | 866 + hacks/ccurve.man | 60 + hacks/celtic.c | 1131 + hacks/celtic.man | 64 + hacks/check-configs.pl | 1243 + hacks/cloudlife.c | 428 + hacks/cloudlife.man | 87 + hacks/compass.c | 986 + hacks/compass.man | 57 + hacks/compile_axp.com | 153 + hacks/compile_decc.com | 153 + hacks/config/README | 262 + hacks/config/abstractile.xml | 36 + hacks/config/anemone.xml | 61 + hacks/config/anemotaxis.xml | 39 + hacks/config/ant.xml | 74 + hacks/config/antinspect.xml | 25 + hacks/config/antmaze.xml | 23 + hacks/config/antspotlight.xml | 25 + hacks/config/apollonian.xml | 42 + hacks/config/apple2.xml | 65 + hacks/config/atlantis.xml | 50 + hacks/config/attraction.xml | 87 + hacks/config/atunnel.xml | 26 + hacks/config/barcode.xml | 35 + hacks/config/binaryring.xml | 31 + hacks/config/blaster.xml | 63 + hacks/config/blinkbox.xml | 35 + hacks/config/blitspin.xml | 46 + hacks/config/blocktube.xml | 33 + hacks/config/boing.xml | 51 + hacks/config/bouboule.xml | 33 + hacks/config/bouncingcow.xml | 32 + hacks/config/boxed.xml | 58 + hacks/config/boxfit.xml | 65 + hacks/config/braid.xml | 39 + hacks/config/bsod.xml | 105 + hacks/config/bubble3d.xml | 30 + hacks/config/bubbles.xml | 42 + hacks/config/bumps.xml | 36 + hacks/config/cage.xml | 27 + hacks/config/carousel.xml | 57 + hacks/config/ccurve.xml | 32 + hacks/config/celtic.xml | 32 + hacks/config/circuit.xml | 37 + hacks/config/cityflow.xml | 55 + hacks/config/cloudlife.xml | 41 + hacks/config/companioncube.xml | 56 + hacks/config/compass.xml | 24 + hacks/config/coral.xml | 36 + hacks/config/crackberg.xml | 52 + hacks/config/critical.xml | 31 + hacks/config/crumbler.xml | 49 + hacks/config/crystal.xml | 48 + hacks/config/cube21.xml | 77 + hacks/config/cubenetic.xml | 67 + hacks/config/cubestack.xml | 44 + hacks/config/cubestorm.xml | 41 + hacks/config/cubetwist.xml | 46 + hacks/config/cubicgrid.xml | 31 + hacks/config/cwaves.xml | 31 + hacks/config/cynosure.xml | 32 + hacks/config/dangerball.xml | 37 + hacks/config/decayscreen.xml | 48 + hacks/config/deco.xml | 45 + hacks/config/deluxe.xml | 39 + hacks/config/demon.xml | 41 + hacks/config/discoball.xml | 37 + hacks/config/discrete.xml | 32 + hacks/config/distort.xml | 53 + hacks/config/dnalogo.xml | 50 + hacks/config/drift.xml | 31 + hacks/config/dymaxionmap.xml | 45 + hacks/config/endgame.xml | 29 + hacks/config/energystream.xml | 26 + hacks/config/engine.xml | 44 + hacks/config/epicycle.xml | 57 + hacks/config/eruption.xml | 53 + hacks/config/esper.xml | 46 + hacks/config/euler2d.xml | 53 + hacks/config/extrusion.xml | 44 + hacks/config/fadeplot.xml | 35 + hacks/config/fiberlamp.xml | 31 + hacks/config/fireworkx.xml | 30 + hacks/config/flag.xml | 41 + hacks/config/flame.xml | 39 + hacks/config/flipflop.xml | 52 + hacks/config/flipscreen3d.xml | 27 + hacks/config/fliptext.xml | 55 + hacks/config/flow.xml | 60 + hacks/config/fluidballs.xml | 55 + hacks/config/flurry.xml | 29 + hacks/config/flyingtoasters.xml | 42 + hacks/config/fontglide.xml | 54 + hacks/config/forest.xml | 30 + hacks/config/fuzzyflakes.xml | 66 + hacks/config/galaxy.xml | 36 + hacks/config/gears.xml | 39 + hacks/config/geodesic.xml | 61 + hacks/config/geodesicgears.xml | 41 + hacks/config/gflux.xml | 61 + hacks/config/glblur.xml | 46 + hacks/config/glcells.xml | 64 + hacks/config/gleidescope.xml | 41 + hacks/config/glforestfire.xml | 46 + hacks/config/glhanoi.xml | 54 + hacks/config/glknots.xml | 63 + hacks/config/glmatrix.xml | 53 + hacks/config/glplanet.xml | 41 + hacks/config/glschool.xml | 45 + hacks/config/glslideshow.xml | 55 + hacks/config/glsnake.xml | 56 + hacks/config/gltext.xml | 51 + hacks/config/goop.xml | 65 + hacks/config/grav.xml | 36 + hacks/config/greynetic.xml | 25 + hacks/config/halftone.xml | 61 + hacks/config/halo.xml | 42 + hacks/config/helix.xml | 27 + hacks/config/hexadrop.xml | 60 + hacks/config/hexstrut.xml | 48 + hacks/config/hilbert.xml | 77 + hacks/config/hopalong.xml | 64 + hacks/config/hydrostat.xml | 76 + hacks/config/hyperball.xml | 66 + hacks/config/hypercube.xml | 77 + hacks/config/hypertorus.xml | 116 + hacks/config/hypnowheel.xml | 54 + hacks/config/ifs.xml | 65 + hacks/config/imsmap.xml | 46 + hacks/config/interaggregate.xml | 33 + hacks/config/interference.xml | 57 + hacks/config/intermomentary.xml | 37 + hacks/config/jigglypuff.xml | 95 + hacks/config/jigsaw.xml | 51 + hacks/config/juggle.xml | 60 + hacks/config/juggler3d.xml | 55 + hacks/config/julia.xml | 39 + hacks/config/kaleidescope.xml | 42 + hacks/config/kaleidocycle.xml | 57 + hacks/config/klein.xml | 131 + hacks/config/kumppa.xml | 32 + hacks/config/lament.xml | 29 + hacks/config/laser.xml | 38 + hacks/config/lavalite.xml | 90 + hacks/config/lcdscrub.xml | 58 + hacks/config/lightning.xml | 30 + hacks/config/lisa.xml | 50 + hacks/config/lissie.xml | 52 + hacks/config/lmorph.xml | 51 + hacks/config/lockward.xml | 67 + hacks/config/loop.xml | 37 + hacks/config/m6502.xml | 55 + hacks/config/maze.xml | 71 + hacks/config/maze3d.xml | 122 + hacks/config/memscroller.xml | 35 + hacks/config/menger.xml | 51 + hacks/config/metaballs.xml | 53 + hacks/config/mirrorblob.xml | 75 + hacks/config/mismunch.xml | 44 + hacks/config/moebius.xml | 29 + hacks/config/moebiusgears.xml | 47 + hacks/config/moire.xml | 38 + hacks/config/moire2.xml | 34 + hacks/config/molecule.xml | 60 + hacks/config/morph3d.xml | 34 + hacks/config/mountain.xml | 31 + hacks/config/munch.xml | 63 + hacks/config/nerverot.xml | 62 + hacks/config/noof.xml | 23 + hacks/config/noseguy.xml | 19 + hacks/config/pacman.xml | 28 + hacks/config/pedal.xml | 33 + hacks/config/peepers.xml | 47 + hacks/config/penetrate.xml | 34 + hacks/config/penrose.xml | 55 + hacks/config/petri.xml | 83 + hacks/config/phosphor.xml | 49 + hacks/config/photopile.xml | 65 + hacks/config/piecewise.xml | 45 + hacks/config/pinion.xml | 49 + hacks/config/pipes.xml | 49 + hacks/config/polyhedra.xml | 201 + hacks/config/polyominoes.xml | 36 + hacks/config/polytopes.xml | 112 + hacks/config/pong.xml | 47 + hacks/config/popsquares.xml | 56 + hacks/config/projectiveplane.xml | 153 + hacks/config/providence.xml | 29 + hacks/config/pulsar.xml | 42 + hacks/config/pyro.xml | 37 + hacks/config/qix.xml | 74 + hacks/config/quasicrystal.xml | 56 + hacks/config/queens.xml | 31 + hacks/config/raverhoop.xml | 54 + hacks/config/razzledazzle.xml | 66 + hacks/config/rd-bomb.xml | 67 + hacks/config/rdbomb.xml | 1 + hacks/config/ripples.xml | 55 + hacks/config/rocks.xml | 45 + hacks/config/romanboy.xml | 128 + hacks/config/rorschach.xml | 36 + hacks/config/rotor.xml | 40 + hacks/config/rotzoomer.xml | 43 + hacks/config/rubik.xml | 39 + hacks/config/rubikblocks.xml | 67 + hacks/config/sballs.xml | 37 + hacks/config/shadebobs.xml | 38 + hacks/config/sierpinski.xml | 37 + hacks/config/sierpinski3d.xml | 34 + hacks/config/skytentacles.xml | 71 + hacks/config/slidescreen.xml | 54 + hacks/config/slip.xml | 43 + hacks/config/sonar.xml | 85 + hacks/config/speedmine.xml | 62 + hacks/config/sphere.xml | 30 + hacks/config/spheremonics.xml | 60 + hacks/config/spiral.xml | 38 + hacks/config/splitflap.xml | 72 + hacks/config/splodesic.xml | 32 + hacks/config/spotlight.xml | 34 + hacks/config/sproingies.xml | 36 + hacks/config/squiral.xml | 51 + hacks/config/stairs.xml | 25 + hacks/config/starfish.xml | 43 + hacks/config/starwars.xml | 63 + hacks/config/stonerview.xml | 27 + hacks/config/strange.xml | 58 + hacks/config/substrate.xml | 47 + hacks/config/superquadrics.xml | 36 + hacks/config/surfaces.xml | 75 + hacks/config/swirl.xml | 33 + hacks/config/t3d.xml | 60 + hacks/config/tangram.xml | 45 + hacks/config/tessellimage.xml | 57 + hacks/config/testx11.xml | 17 + hacks/config/thornbird.xml | 37 + hacks/config/timetunnel.xml | 42 + hacks/config/topblock.xml | 64 + hacks/config/triangle.xml | 28 + hacks/config/tronbit.xml | 41 + hacks/config/truchet.xml | 41 + hacks/config/twang.xml | 61 + hacks/config/unicrud.xml | 44 + hacks/config/unknownpleasures.xml | 57 + hacks/config/vermiculate.xml | 22 + hacks/config/vidwhacker.xml | 32 + hacks/config/vigilance.xml | 30 + hacks/config/vines.xml | 30 + hacks/config/voronoi.xml | 63 + hacks/config/wander.xml | 55 + hacks/config/webcollage.xml | 56 + hacks/config/whirlwindwarp.xml | 28 + hacks/config/whirlygig.xml | 90 + hacks/config/winduprobot.xml | 62 + hacks/config/worm.xml | 39 + hacks/config/wormhole.xml | 31 + hacks/config/xanalogtv.xml | 42 + hacks/config/xflame.xml | 34 + hacks/config/xjack.xml | 25 + hacks/config/xlyap.xml | 52 + hacks/config/xmatrix.xml | 68 + hacks/config/xrayswarm.xml | 23 + hacks/config/xspirograph.xml | 32 + hacks/config/xss.dtd | 109 + hacks/config/xss.xsd | 375 + hacks/config/zoom.xml | 54 + hacks/coral.c | 314 + hacks/coral.man | 64 + hacks/critical.c | 454 + hacks/critical.man | 94 + hacks/crystal.c | 1284 + hacks/crystal.man | 81 + hacks/cwaves.c | 212 + hacks/cwaves.man | 76 + hacks/cynosure.c | 443 + hacks/cynosure.man | 64 + hacks/decayscreen.c | 397 + hacks/decayscreen.man | 92 + hacks/deco.c | 339 + hacks/deco.man | 105 + hacks/delaunay.c | 301 + hacks/delaunay.h | 52 + hacks/deluxe.c | 465 + hacks/deluxe.man | 72 + hacks/demon.c | 952 + hacks/demon.man | 69 + hacks/discrete.c | 440 + hacks/discrete.man | 61 + hacks/distort.c | 864 + hacks/distort.man | 137 + hacks/drift.c | 672 + hacks/drift.man | 79 + hacks/epicycle.c | 794 + hacks/epicycle.man | 204 + hacks/eruption.c | 526 + hacks/eruption.man | 77 + hacks/euler2d.c | 887 + hacks/euler2d.man | 69 + hacks/euler2d.tex | 337 + hacks/fadeplot.c | 233 + hacks/fadeplot.man | 65 + hacks/fiberlamp.c | 474 + hacks/fiberlamp.man | 65 + hacks/fireworkx.c | 868 + hacks/fireworkx.man | 88 + hacks/flag.c | 565 + hacks/flag.man | 92 + hacks/flame.c | 466 + hacks/flame.man | 74 + hacks/flow.c | 1211 + hacks/flow.man | 137 + hacks/fluidballs.c | 852 + hacks/fluidballs.man | 90 + hacks/fontglide.c | 2489 + hacks/fontglide.man | 124 + hacks/forest.c | 244 + hacks/forest.man | 62 + hacks/fps.c | 268 + hacks/fps.h | 35 + hacks/fpsI.h | 40 + hacks/fuzzyflakes.c | 646 + hacks/fuzzyflakes.man | 112 + hacks/galaxy.c | 451 + hacks/galaxy.man | 87 + hacks/glx/Makefile.in | 3325 + hacks/glx/README | 10 + hacks/glx/antinspect.c | 704 + hacks/glx/antinspect.man | 56 + hacks/glx/antmaze.c | 1613 + hacks/glx/antmaze.man | 52 + hacks/glx/ants.h | 45 + hacks/glx/antspotlight.c | 799 + hacks/glx/antspotlight.man | 56 + hacks/glx/atlantis.c | 577 + hacks/glx/atlantis.h | 133 + hacks/glx/atlantis.man | 78 + hacks/glx/atunnel.c | 317 + hacks/glx/atunnel.man | 83 + hacks/glx/b_draw.c | 239 + hacks/glx/b_lockglue.c | 240 + hacks/glx/b_sphere.c | 219 + hacks/glx/blinkbox.c | 608 + hacks/glx/blinkbox.man | 73 + hacks/glx/blocktube.c | 457 + hacks/glx/blocktube.man | 73 + hacks/glx/boing.c | 658 + hacks/glx/boing.man | 105 + hacks/glx/bouncingcow.c | 519 + hacks/glx/bouncingcow.man | 73 + hacks/glx/boxed.c | 1370 + hacks/glx/boxed.h | 4116 + hacks/glx/boxed.man | 56 + hacks/glx/bubble3d.c | 281 + hacks/glx/bubble3d.h | 100 + hacks/glx/bubble3d.man | 62 + hacks/glx/buildlwo.c | 96 + hacks/glx/buildlwo.h | 43 + hacks/glx/cage.c | 480 + hacks/glx/cage.man | 61 + hacks/glx/carousel.c | 941 + hacks/glx/carousel.man | 109 + hacks/glx/chessgames.h | 343 + hacks/glx/chessmodels.c | 1738 + hacks/glx/chessmodels.h | 44 + hacks/glx/circuit.c | 2094 + hacks/glx/circuit.man | 72 + hacks/glx/cityflow.c | 545 + hacks/glx/cityflow.man | 77 + hacks/glx/companion.c | 592 + hacks/glx/companion_disc.c | 9593 + hacks/glx/companion_heart.c | 653 + hacks/glx/companion_quad.c | 389 + hacks/glx/companioncube.man | 85 + hacks/glx/cow_face.c | 341 + hacks/glx/cow_hide.c | 13055 + hacks/glx/cow_hoofs.c | 1037 + hacks/glx/cow_horns.c | 1025 + hacks/glx/cow_tail.c | 464 + hacks/glx/cow_udder.c | 1520 + hacks/glx/crackberg.c | 1468 + hacks/glx/crackberg.man | 123 + hacks/glx/crumbler.c | 822 + hacks/glx/crumbler.man | 77 + hacks/glx/cube21.c | 941 + hacks/glx/cube21.man | 147 + hacks/glx/cubenetic.c | 598 + hacks/glx/cubenetic.man | 89 + hacks/glx/cubestack.c | 462 + hacks/glx/cubestack.man | 72 + hacks/glx/cubestorm.c | 413 + hacks/glx/cubestorm.man | 77 + hacks/glx/cubetwist.c | 595 + hacks/glx/cubetwist.man | 80 + hacks/glx/cubicgrid.c | 269 + hacks/glx/cubicgrid.man | 83 + hacks/glx/curlicue.h | 261 + hacks/glx/dangerball.c | 364 + hacks/glx/dangerball.man | 72 + hacks/glx/discoball.c | 707 + hacks/glx/discoball.man | 72 + hacks/glx/dnalogo.c | 3570 + hacks/glx/dnapizza.h | 122 + hacks/glx/dolphin.c | 2061 + hacks/glx/dropshadow.c | 181 + hacks/glx/dropshadow.h | 40 + hacks/glx/dxf2gl.pl | 729 + hacks/glx/dymaxionmap.c | 1020 + hacks/glx/dymaxionmap.man | 70 + hacks/glx/e_textures.h | 1478 + hacks/glx/endgame.c | 971 + hacks/glx/endgame.man | 72 + hacks/glx/energystream.c | 534 + hacks/glx/energystream.man | 56 + hacks/glx/engine.c | 1006 + hacks/glx/engine.man | 80 + hacks/glx/erase-gl.c | 38 + hacks/glx/esper.c | 2412 + hacks/glx/esper.man | 68 + hacks/glx/extrusion-helix2.c | 47 + hacks/glx/extrusion-helix3.c | 46 + hacks/glx/extrusion-helix4.c | 63 + hacks/glx/extrusion-joinoffset.c | 148 + hacks/glx/extrusion-screw.c | 114 + hacks/glx/extrusion-taper.c | 218 + hacks/glx/extrusion-twistoid.c | 215 + hacks/glx/extrusion.c | 556 + hacks/glx/extrusion.h | 55 + hacks/glx/extrusion.man | 71 + hacks/glx/flipflop.c | 859 + hacks/glx/flipflop.man | 95 + hacks/glx/flipscreen3d.c | 518 + hacks/glx/flipscreen3d.man | 61 + hacks/glx/fliptext.c | 1001 + hacks/glx/fliptext.man | 114 + hacks/glx/flurry-smoke.c | 1441 + hacks/glx/flurry-spark.c | 285 + hacks/glx/flurry-star.c | 106 + hacks/glx/flurry-texture.c | 224 + hacks/glx/flurry.c | 549 + hacks/glx/flurry.h | 299 + hacks/glx/flurry.man | 73 + hacks/glx/flyingtoasters.c | 868 + hacks/glx/flyingtoasters.man | 86 + hacks/glx/fps-gl.c | 98 + hacks/glx/gears.c | 938 + hacks/glx/gears.man | 79 + hacks/glx/geodesic.c | 816 + hacks/glx/geodesic.man | 79 + hacks/glx/geodesicgears.c | 1803 + hacks/glx/geodesicgears.man | 78 + hacks/glx/gflux.c | 803 + hacks/glx/gflux.man | 111 + hacks/glx/glblur.c | 610 + hacks/glx/glblur.man | 76 + hacks/glx/glcells.c | 1388 + hacks/glx/glcells.man | 97 + hacks/glx/gleidescope.c | 1624 + hacks/glx/gleidescope.man | 77 + hacks/glx/glforestfire.c | 1097 + hacks/glx/glforestfire.man | 130 + hacks/glx/glhanoi.c | 2086 + hacks/glx/glhanoi.man | 83 + hacks/glx/glknots.c | 445 + hacks/glx/glknots.man | 81 + hacks/glx/gllist.c | 127 + hacks/glx/gllist.h | 44 + hacks/glx/glmatrix.c | 1068 + hacks/glx/glmatrix.man | 116 + hacks/glx/glplanet.c | 649 + hacks/glx/glplanet.man | 66 + hacks/glx/glschool.c | 216 + hacks/glx/glschool.h | 17 + hacks/glx/glschool.man | 126 + hacks/glx/glschool_alg.c | 364 + hacks/glx/glschool_alg.h | 126 + hacks/glx/glschool_gl.c | 274 + hacks/glx/glschool_gl.h | 51 + hacks/glx/glslideshow.c | 1222 + hacks/glx/glslideshow.man | 131 + hacks/glx/glsnake.c | 2694 + hacks/glx/glsnake.man | 98 + hacks/glx/gltext.c | 660 + hacks/glx/gltext.man | 152 + hacks/glx/gltrackball.c | 337 + hacks/glx/gltrackball.h | 72 + hacks/glx/glut_mroman.h | 2456 + hacks/glx/glut_roman.h | 2455 + hacks/glx/glut_stroke.c | 66 + hacks/glx/glut_swidth.c | 77 + hacks/glx/glutstroke.h | 47 + hacks/glx/grab-ximage.c | 813 + hacks/glx/grab-ximage.h | 76 + hacks/glx/hexstrut.c | 509 + hacks/glx/hexstrut.man | 77 + hacks/glx/hilbert.c | 1144 + hacks/glx/hilbert.man | 103 + hacks/glx/hydrostat.c | 809 + hacks/glx/hydrostat.man | 103 + hacks/glx/hypertorus.c | 1016 + hacks/glx/hypertorus.man | 188 + hacks/glx/hypnowheel.c | 322 + hacks/glx/hypnowheel.man | 80 + hacks/glx/involute.c | 998 + hacks/glx/involute.h | 78 + hacks/glx/jigglypuff.c | 1076 + hacks/glx/jigglypuff.man | 121 + hacks/glx/jigsaw.c | 1509 + hacks/glx/jigsaw.man | 90 + hacks/glx/juggler3d.c | 3022 + hacks/glx/juggler3d.man | 183 + hacks/glx/kaleidocycle.c | 574 + hacks/glx/kaleidocycle.man | 96 + hacks/glx/klein.c | 2099 + hacks/glx/klein.man | 308 + hacks/glx/lament.c | 1786 + hacks/glx/lament.dxf | 163404 +++++++++++++ hacks/glx/lament.man | 68 + hacks/glx/lament_model.c | 16258 ++ hacks/glx/lavalite.c | 1539 + hacks/glx/lavalite.man | 160 + hacks/glx/lockward.c | 970 + hacks/glx/lockward.man | 79 + hacks/glx/marching.c | 645 + hacks/glx/marching.h | 48 + hacks/glx/maze3d.c | 1955 + hacks/glx/maze3d.man | 116 + hacks/glx/menger.c | 562 + hacks/glx/menger.man | 78 + hacks/glx/mirrorblob.c | 1841 + hacks/glx/mirrorblob.man | 107 + hacks/glx/moebius.c | 788 + hacks/glx/moebius.man | 65 + hacks/glx/moebiusgears.c | 437 + hacks/glx/moebiusgears.man | 86 + hacks/glx/molecule.c | 1682 + hacks/glx/molecule.man | 160 + hacks/glx/molecules.sh | 23 + hacks/glx/morph3d.c | 837 + hacks/glx/morph3d.man | 57 + hacks/glx/noof.c | 465 + hacks/glx/noof.man | 52 + hacks/glx/normals.c | 52 + hacks/glx/normals.h | 48 + hacks/glx/peepers.c | 1455 + hacks/glx/peepers.man | 80 + hacks/glx/photopile.c | 833 + hacks/glx/photopile.man | 113 + hacks/glx/pinion.c | 1470 + hacks/glx/pinion.man | 82 + hacks/glx/pipeobjs.c | 3262 + hacks/glx/pipes.c | 1220 + hacks/glx/pipes.man | 85 + hacks/glx/polyhedra-gl.c | 683 + hacks/glx/polyhedra.c | 2457 + hacks/glx/polyhedra.h | 52 + hacks/glx/polyhedra.man | 124 + hacks/glx/polytopes.c | 3189 + hacks/glx/polytopes.man | 207 + hacks/glx/projectiveplane.c | 1550 + hacks/glx/projectiveplane.man | 400 + hacks/glx/providence.c | 799 + hacks/glx/providence.man | 66 + hacks/glx/pulsar.c | 515 + hacks/glx/pulsar.man | 102 + hacks/glx/quasicrystal.c | 476 + hacks/glx/quasicrystal.man | 83 + hacks/glx/queens.c | 610 + hacks/glx/queens.man | 66 + hacks/glx/quickhull.c | 1348 + hacks/glx/quickhull.h | 56 + hacks/glx/raverhoop.c | 767 + hacks/glx/raverhoop.man | 83 + hacks/glx/razzledazzle.c | 725 + hacks/glx/razzledazzle.man | 76 + hacks/glx/robot-wireframe.c | 154 + hacks/glx/robot-wireframe.dxf | 1160 + hacks/glx/robot.c | 18539 ++ hacks/glx/robot.dxf | 185616 +++++++++++++++ hacks/glx/romanboy.c | 1552 + hacks/glx/romanboy.man | 390 + hacks/glx/rotator.c | 274 + hacks/glx/rotator.h | 60 + hacks/glx/rubik.c | 2140 + hacks/glx/rubik.man | 69 + hacks/glx/rubikblocks.c | 633 + hacks/glx/rubikblocks.man | 117 + hacks/glx/s1_1.c | 1733 + hacks/glx/s1_2.c | 1733 + hacks/glx/s1_3.c | 1733 + hacks/glx/s1_4.c | 1733 + hacks/glx/s1_5.c | 1733 + hacks/glx/s1_6.c | 1733 + hacks/glx/s1_b.c | 505 + hacks/glx/sballs.c | 823 + hacks/glx/sballs.man | 125 + hacks/glx/seccam.c | 1388 + hacks/glx/seccam.dxf | 13606 ++ hacks/glx/shark.c | 1395 + hacks/glx/ships.c | 4976 + hacks/glx/ships.dxf | 49148 ++++ hacks/glx/sierpinski3d.c | 581 + hacks/glx/sierpinski3d.man | 67 + hacks/glx/skytentacles.c | 1103 + hacks/glx/skytentacles.man | 102 + hacks/glx/sonar-icmp.c | 1701 + hacks/glx/sonar-sim.c | 112 + hacks/glx/sonar.c | 1258 + hacks/glx/sonar.h | 71 + hacks/glx/sonar.man | 169 + hacks/glx/sphere.c | 155 + hacks/glx/sphere.h | 24 + hacks/glx/spheremonics.c | 882 + hacks/glx/spheremonics.man | 92 + hacks/glx/splitflap.c | 1408 + hacks/glx/splitflap.dxf | 1658 + hacks/glx/splitflap.man | 98 + hacks/glx/splitflap_obj.c | 200 + hacks/glx/splodesic.c | 640 + hacks/glx/splodesic.man | 69 + hacks/glx/sproingies.c | 906 + hacks/glx/sproingies.h | 43 + hacks/glx/sproingies.man | 68 + hacks/glx/sproingiewrap.c | 231 + hacks/glx/stairs.c | 589 + hacks/glx/stairs.man | 56 + hacks/glx/starwars.c | 1075 + hacks/glx/starwars.h | 363 + hacks/glx/starwars.man | 181 + hacks/glx/starwars.txt | 415 + hacks/glx/stonerview-move.c | 147 + hacks/glx/stonerview-move.h | 32 + hacks/glx/stonerview-osc.c | 341 + hacks/glx/stonerview-osc.h | 175 + hacks/glx/stonerview-view.c | 134 + hacks/glx/stonerview.c | 154 + hacks/glx/stonerview.h | 59 + hacks/glx/stonerview.man | 53 + hacks/glx/superquadrics.c | 807 + hacks/glx/superquadrics.man | 70 + hacks/glx/surfaces.c | 648 + hacks/glx/surfaces.man | 127 + hacks/glx/swim.c | 232 + hacks/glx/tangram.c | 1067 + hacks/glx/tangram.man | 67 + hacks/glx/tangram_shapes.c | 240 + hacks/glx/tangram_shapes.h | 15 + hacks/glx/teapot.c | 285 + hacks/glx/teapot.h | 7 + hacks/glx/teapot2.h | 6330 + hacks/glx/texfont.c | 961 + hacks/glx/texfont.h | 72 + hacks/glx/timetunnel.c | 1240 + hacks/glx/timetunnel.man | 105 + hacks/glx/toast.c | 190 + hacks/glx/toast.dxf | 1814 + hacks/glx/toast2.c | 214 + hacks/glx/toast2.dxf | 2054 + hacks/glx/toaster.c | 376 + hacks/glx/toaster.dxf | 3674 + hacks/glx/toaster_base.c | 130 + hacks/glx/toaster_base.dxf | 1214 + hacks/glx/toaster_handle.c | 64 + hacks/glx/toaster_handle.dxf | 554 + hacks/glx/toaster_handle2.c | 40 + hacks/glx/toaster_handle2.dxf | 314 + hacks/glx/toaster_jet.c | 178 + hacks/glx/toaster_jet.dxf | 1694 + hacks/glx/toaster_knob.c | 76 + hacks/glx/toaster_knob.dxf | 674 + hacks/glx/toaster_slots.c | 106 + hacks/glx/toaster_slots.dxf | 974 + hacks/glx/toaster_wing.c | 43 + hacks/glx/toaster_wing.dxf | 344 + hacks/glx/topblock.c | 883 + hacks/glx/topblock.h | 45 + hacks/glx/topblock.man | 170 + hacks/glx/trackball.c | 331 + hacks/glx/trackball.h | 82 + hacks/glx/tronbit.c | 536 + hacks/glx/tronbit.man | 79 + hacks/glx/tronbit_idle1.c | 247 + hacks/glx/tronbit_idle2.c | 175 + hacks/glx/tronbit_no.c | 1087 + hacks/glx/tronbit_yes.c | 31 + hacks/glx/tube.c | 403 + hacks/glx/tube.h | 32 + hacks/glx/tunnel_draw.c | 512 + hacks/glx/tunnel_draw.h | 11 + hacks/glx/unicrud.c | 961 + hacks/glx/unicrud.man | 74 + hacks/glx/unknownpleasures.c | 486 + hacks/glx/unknownpleasures.man | 74 + hacks/glx/vigilance.c | 1150 + hacks/glx/vigilance.man | 57 + hacks/glx/voronoi.c | 543 + hacks/glx/voronoi.man | 88 + hacks/glx/vrml2gl.pl | 361 + hacks/glx/wfront2gl.pl | 361 + hacks/glx/whale.c | 1887 + hacks/glx/winduprobot.c | 2483 + hacks/glx/winduprobot.man | 85 + hacks/glx/xlock-gl-utils.c | 230 + hacks/glx/xscreensaver-gl-helper.c | 74 + hacks/glx/xscreensaver-gl-helper.man | 33 + hacks/glx/zalgo.txt | 20 + hacks/goop.c | 650 + hacks/goop.man | 84 + hacks/grav.c | 356 + hacks/grav.man | 78 + hacks/greynetic.c | 296 + hacks/greynetic.man | 56 + hacks/halftone.c | 397 + hacks/halftone.man | 83 + hacks/halo.c | 440 + hacks/halo.man | 75 + hacks/helix.c | 356 + hacks/helix.man | 62 + hacks/hexadrop.c | 414 + hacks/hexadrop.man | 74 + hacks/hopalong.c | 555 + hacks/hopalong.man | 82 + hacks/hyperball.c | 2458 + hacks/hyperball.man | 88 + hacks/hypercube.c | 569 + hacks/hypercube.man | 97 + hacks/ifs.c | 551 + hacks/ifs.man | 111 + hacks/images/6x10font.png | Bin 0 -> 1968 bytes hacks/images/Makefile | 46 + hacks/images/amiga.png | Bin 0 -> 1136 bytes hacks/images/android.png | Bin 0 -> 1091 bytes hacks/images/apple.png | Bin 0 -> 1562 bytes hacks/images/apple2font.png | Bin 0 -> 651 bytes hacks/images/atari.png | Bin 0 -> 148 bytes hacks/images/atm.png | Bin 0 -> 982 bytes hacks/images/blocktube.png | Bin 0 -> 23571 bytes hacks/images/bob.png | Bin 0 -> 1491 bytes hacks/images/brick1.png | Bin 0 -> 8544 bytes hacks/images/brick2.png | Bin 0 -> 688 bytes hacks/images/bubbles/blood.pov | 24 + hacks/images/bubbles/blood1.png | Bin 0 -> 583 bytes hacks/images/bubbles/blood10.png | Bin 0 -> 8605 bytes hacks/images/bubbles/blood11.png | Bin 0 -> 11682 bytes hacks/images/bubbles/blood2.png | Bin 0 -> 781 bytes hacks/images/bubbles/blood3.png | Bin 0 -> 1020 bytes hacks/images/bubbles/blood4.png | Bin 0 -> 1276 bytes hacks/images/bubbles/blood5.png | Bin 0 -> 1768 bytes hacks/images/bubbles/blood6.png | Bin 0 -> 2612 bytes hacks/images/bubbles/blood7.png | Bin 0 -> 3571 bytes hacks/images/bubbles/blood8.png | Bin 0 -> 5076 bytes hacks/images/bubbles/blood9.png | Bin 0 -> 6324 bytes hacks/images/bubbles/blue.pov | 22 + hacks/images/bubbles/blue1.png | Bin 0 -> 583 bytes hacks/images/bubbles/blue10.png | Bin 0 -> 7064 bytes hacks/images/bubbles/blue11.png | Bin 0 -> 9455 bytes hacks/images/bubbles/blue2.png | Bin 0 -> 781 bytes hacks/images/bubbles/blue3.png | Bin 0 -> 1018 bytes hacks/images/bubbles/blue4.png | Bin 0 -> 1184 bytes hacks/images/bubbles/blue5.png | Bin 0 -> 1626 bytes hacks/images/bubbles/blue6.png | Bin 0 -> 2354 bytes hacks/images/bubbles/blue7.png | Bin 0 -> 3133 bytes hacks/images/bubbles/blue8.png | Bin 0 -> 4300 bytes hacks/images/bubbles/blue9.png | Bin 0 -> 5286 bytes hacks/images/bubbles/glass.pov | 27 + hacks/images/bubbles/glass1.png | Bin 0 -> 583 bytes hacks/images/bubbles/glass10.png | Bin 0 -> 6805 bytes hacks/images/bubbles/glass11.png | Bin 0 -> 9200 bytes hacks/images/bubbles/glass2.png | Bin 0 -> 781 bytes hacks/images/bubbles/glass3.png | Bin 0 -> 1018 bytes hacks/images/bubbles/glass4.png | Bin 0 -> 1045 bytes hacks/images/bubbles/glass5.png | Bin 0 -> 1425 bytes hacks/images/bubbles/glass6.png | Bin 0 -> 2110 bytes hacks/images/bubbles/glass7.png | Bin 0 -> 2856 bytes hacks/images/bubbles/glass8.png | Bin 0 -> 4014 bytes hacks/images/bubbles/glass9.png | Bin 0 -> 4996 bytes hacks/images/bubbles/jade.pov | 24 + hacks/images/bubbles/jade1.png | Bin 0 -> 583 bytes hacks/images/bubbles/jade10.png | Bin 0 -> 7853 bytes hacks/images/bubbles/jade11.png | Bin 0 -> 10816 bytes hacks/images/bubbles/jade2.png | Bin 0 -> 781 bytes hacks/images/bubbles/jade3.png | Bin 0 -> 1018 bytes hacks/images/bubbles/jade4.png | Bin 0 -> 1202 bytes hacks/images/bubbles/jade5.png | Bin 0 -> 1670 bytes hacks/images/bubbles/jade6.png | Bin 0 -> 2416 bytes hacks/images/bubbles/jade7.png | Bin 0 -> 3255 bytes hacks/images/bubbles/jade8.png | Bin 0 -> 4670 bytes hacks/images/bubbles/jade9.png | Bin 0 -> 5758 bytes hacks/images/chromesphere.png | Bin 0 -> 33091 bytes hacks/images/dymaxionmap.png | Bin 0 -> 152179 bytes hacks/images/earth.png | Bin 0 -> 433159 bytes hacks/images/earth_night.png | Bin 0 -> 390020 bytes hacks/images/ground.png | Bin 0 -> 13299 bytes hacks/images/hmac.png | Bin 0 -> 439 bytes hacks/images/iris.png | Bin 0 -> 143843 bytes hacks/images/jigglymap.png | Bin 0 -> 29863 bytes hacks/images/lament512.png | Bin 0 -> 566651 bytes hacks/images/logo-180.png | Bin 0 -> 8734 bytes hacks/images/logo-32.png | Bin 0 -> 1614 bytes hacks/images/logo-50.png | Bin 0 -> 2030 bytes hacks/images/m6502/amiga.asm | 120 + hacks/images/m6502/breakout.asm | 195 + hacks/images/m6502/byterun.asm | 100 + hacks/images/m6502/cellular-30.asm | 67 + hacks/images/m6502/cellular-600.asm | 209 + hacks/images/m6502/colors.asm | 46 + hacks/images/m6502/crunch6502.asm | 292 + hacks/images/m6502/demoscene.asm | 457 + hacks/images/m6502/disco.asm | 23 + hacks/images/m6502/dmsc.asm | 130 + hacks/images/m6502/dmsc.txt | 768 + hacks/images/m6502/dragon-fractal.asm | 49 + hacks/images/m6502/fullscreenlogo.asm | 107 + hacks/images/m6502/greynetic.asm | 96 + hacks/images/m6502/keftal.asm | 82 + hacks/images/m6502/life.asm | 127 + hacks/images/m6502/lines.asm | 313 + hacks/images/m6502/matrix.asm | 67 + hacks/images/m6502/noise.asm | 16 + hacks/images/m6502/random-walk.asm | 82 + hacks/images/m6502/random.asm | 11 + hacks/images/m6502/random2.asm | 11 + hacks/images/m6502/rorschach.asm | 124 + hacks/images/m6502/santa.asm | 142 + hacks/images/m6502/selfmodify.asm | 12 + hacks/images/m6502/sflake.asm | 320 + hacks/images/m6502/sierpinski.asm | 24 + hacks/images/m6502/sierpinsky.asm | 131 + hacks/images/m6502/softsprite.asm | 132 + hacks/images/m6502/spacer.asm | 235 + hacks/images/m6502/starfield2d.asm | 50 + hacks/images/m6502/texture.asm | 393 + hacks/images/m6502/wave6502.asm | 164 + hacks/images/m6502/zookeeper.asm | 109 + hacks/images/mac.png | Bin 0 -> 211 bytes hacks/images/macbomb.png | Bin 0 -> 697 bytes hacks/images/matrix1.png | Bin 0 -> 29412 bytes hacks/images/matrix1b.png | Bin 0 -> 11525 bytes hacks/images/matrix2.png | Bin 0 -> 27982 bytes hacks/images/matrix2b.png | Bin 0 -> 11468 bytes hacks/images/matrix3.png | Bin 0 -> 125539 bytes hacks/images/molecules/adenine.pdb | 37 + hacks/images/molecules/adrenochrome.pdb | 55 + hacks/images/molecules/bucky.pdb | 156 + hacks/images/molecules/caffeine.pdb | 54 + hacks/images/molecules/capsaicin.pdb | 49 + hacks/images/molecules/chlordecone.pdb | 49 + hacks/images/molecules/cocaine.pdb | 93 + hacks/images/molecules/codeine.pdb | 93 + hacks/images/molecules/cyclohexane.pdb | 151 + hacks/images/molecules/cytosine.pdb | 33 + hacks/images/molecules/dna.pdb | 972 + hacks/images/molecules/dodecahedrane.pdb | 87 + hacks/images/molecules/dthc.pdb | 107 + hacks/images/molecules/dynamite.pdb | 47 + hacks/images/molecules/glycol.pdb | 27 + hacks/images/molecules/guanine.pdb | 39 + hacks/images/molecules/heroin.pdb | 107 + hacks/images/molecules/hexahelicene.pdb | 90 + hacks/images/molecules/ibuprofen.pdb | 72 + hacks/images/molecules/lsd.pdb | 104 + hacks/images/molecules/menthol.pdb | 69 + hacks/images/molecules/mescaline.pdb | 71 + hacks/images/molecules/methamphetamine.pdb | 88 + hacks/images/molecules/morphine.pdb | 87 + hacks/images/molecules/nicotine.pdb | 59 + hacks/images/molecules/novocaine.pdb | 81 + hacks/images/molecules/olestra.pdb | 913 + hacks/images/molecules/penicillin.pdb | 89 + hacks/images/molecules/salvinorin.pdb | 92 + hacks/images/molecules/sarin.pdb | 43 + hacks/images/molecules/strychnine.pdb | 101 + hacks/images/molecules/sucrose.pdb | 97 + hacks/images/molecules/thalidomide.pdb | 65 + hacks/images/molecules/thymine.pdb | 37 + hacks/images/molecules/viagra.pdb | 133 + hacks/images/molecules/vitaminb6.pdb | 56 + hacks/images/molecules/vitaminc.pdb | 47 + hacks/images/molecules/vx.pdb | 92 + hacks/images/noseguy/nose-f1.png | Bin 0 -> 454 bytes hacks/images/noseguy/nose-f2.png | Bin 0 -> 397 bytes hacks/images/noseguy/nose-f3.png | Bin 0 -> 396 bytes hacks/images/noseguy/nose-f4.png | Bin 0 -> 448 bytes hacks/images/noseguy/nose-l1.png | Bin 0 -> 388 bytes hacks/images/noseguy/nose-l2.png | Bin 0 -> 470 bytes hacks/images/noseguy/nose-r1.png | Bin 0 -> 386 bytes hacks/images/noseguy/nose-r2.png | Bin 0 -> 467 bytes hacks/images/osx_10_2.png | Bin 0 -> 53621 bytes hacks/images/osx_10_3.png | Bin 0 -> 28292 bytes hacks/images/pacman.png | Bin 0 -> 2695 bytes hacks/images/ransomware.png | Bin 0 -> 976 bytes hacks/images/sball-bg.png | Bin 0 -> 31249 bytes hacks/images/sball.png | Bin 0 -> 2334 bytes hacks/images/scales.png | Bin 0 -> 8573 bytes hacks/images/sclera.png | Bin 0 -> 230321 bytes hacks/images/sea-texture.png | Bin 0 -> 6933 bytes hacks/images/som.png | Bin 0 -> 7593 bytes hacks/images/start.png | Bin 0 -> 1153 bytes hacks/images/timetunnel0.png | Bin 0 -> 35798 bytes hacks/images/timetunnel1.png | Bin 0 -> 131957 bytes hacks/images/timetunnel2.png | Bin 0 -> 50547 bytes hacks/images/toast.png | Bin 0 -> 11667 bytes hacks/images/tree.png | Bin 0 -> 5944 bytes hacks/images/tunnel0.png | Bin 0 -> 6996 bytes hacks/images/tunnel1.png | Bin 0 -> 3449 bytes hacks/images/tunnel2.png | Bin 0 -> 11424 bytes hacks/images/tunnel3.png | Bin 0 -> 6725 bytes hacks/images/tunnel4.png | Bin 0 -> 3297 bytes hacks/images/tunnel5.png | Bin 0 -> 3340 bytes hacks/images/tunnelstar.png | Bin 0 -> 23414 bytes hacks/images/win10_spinner.gif | Bin 0 -> 64501 bytes hacks/images/wood.png | Bin 0 -> 2130 bytes hacks/images/wood2.png | Bin 0 -> 3274 bytes hacks/imsmap.c | 420 + hacks/imsmap.man | 64 + hacks/interaggregate.c | 981 + hacks/interaggregate.man | 72 + hacks/interference.c | 997 + hacks/interference.man | 86 + hacks/intermomentary.c | 577 + hacks/intermomentary.man | 82 + hacks/juggle.c | 2796 + hacks/juggle.man | 181 + hacks/julia.c | 442 + hacks/julia.man | 81 + hacks/kaleidescope.c | 490 + hacks/kaleidescope.man | 89 + hacks/kumppa.c | 537 + hacks/kumppa.man | 65 + hacks/laser.c | 355 + hacks/laser.man | 68 + hacks/lcdscrub.c | 401 + hacks/lcdscrub.man | 73 + hacks/lightning.c | 601 + hacks/lightning.man | 62 + hacks/link_axp.com | 107 + hacks/link_decc.com | 107 + hacks/lisa.c | 739 + hacks/lisa.man | 71 + hacks/lissie.c | 322 + hacks/lissie.man | 69 + hacks/ljlatest | 1 + hacks/ljlatest.man | 61 + hacks/lmorph.c | 568 + hacks/lmorph.man | 65 + hacks/loop.c | 1694 + hacks/loop.man | 65 + hacks/m6502.c | 307 + hacks/m6502.sh | 26 + hacks/maze.c | 1661 + hacks/maze.man | 148 + hacks/memscroller.c | 636 + hacks/memscroller.man | 78 + hacks/metaballs.c | 436 + hacks/metaballs.man | 73 + hacks/moire.c | 245 + hacks/moire.man | 68 + hacks/moire2.c | 356 + hacks/moire2.man | 63 + hacks/mountain.c | 282 + hacks/mountain.man | 60 + hacks/munch.c | 476 + hacks/munch.man | 153 + hacks/munge-ad.pl | 237 + hacks/nerverot.c | 1354 + hacks/nerverot.man | 132 + hacks/noseguy.c | 689 + hacks/noseguy.man | 84 + hacks/pacman.c | 1467 + hacks/pacman.h | 220 + hacks/pacman.man | 67 + hacks/pacman_ai.c | 876 + hacks/pacman_ai.h | 32 + hacks/pacman_level.c | 772 + hacks/pacman_level.h | 33 + hacks/pedal.c | 335 + hacks/pedal.man | 60 + hacks/penetrate.c | 977 + hacks/penetrate.man | 98 + hacks/penrose.c | 1352 + hacks/penrose.man | 106 + hacks/petri.c | 761 + hacks/petri.man | 129 + hacks/phosphor.c | 1451 + hacks/phosphor.man | 173 + hacks/piecewise.c | 1006 + hacks/piecewise.man | 77 + hacks/polyominoes.c | 2368 + hacks/polyominoes.man | 65 + hacks/pong.c | 1118 + hacks/pong.man | 86 + hacks/popsquares.c | 306 + hacks/pyro.c | 368 + hacks/pyro.man | 64 + hacks/qix.c | 624 + hacks/qix.man | 132 + hacks/rd-bomb.c | 549 + hacks/rd-bomb.man | 100 + hacks/recanim.c | 351 + hacks/recanim.h | 27 + hacks/ripples.c | 1118 + hacks/ripples.man | 96 + hacks/rocks.c | 550 + hacks/rocks.man | 90 + hacks/rorschach.c | 214 + hacks/rorschach.man | 75 + hacks/rotor.c | 389 + hacks/rotor.man | 68 + hacks/rotzoomer.c | 585 + hacks/rotzoomer.man | 88 + hacks/screenhack.c | 984 + hacks/screenhack.h | 67 + hacks/screenhackI.h | 158 + hacks/shadebobs.c | 471 + hacks/shadebobs.man | 65 + hacks/sierpinski.c | 213 + hacks/sierpinski.man | 69 + hacks/slidescreen.c | 510 + hacks/slidescreen.man | 97 + hacks/slip.c | 375 + hacks/slip.man | 86 + hacks/speedmine.c | 1647 + hacks/speedmine.man | 246 + hacks/sphere.c | 303 + hacks/sphere.man | 62 + hacks/spiral.c | 330 + hacks/spiral.man | 71 + hacks/spotlight.c | 353 + hacks/spotlight.man | 80 + hacks/squiral.c | 290 + hacks/squiral.man | 80 + hacks/starfish.c | 559 + hacks/starfish.man | 84 + hacks/strange.c | 1341 + hacks/strange.man | 79 + hacks/substrate.c | 773 + hacks/substrate.man | 73 + hacks/swirl.c | 1445 + hacks/swirl.man | 70 + hacks/t3d.c | 980 + hacks/t3d.man | 131 + hacks/tessellimage.c | 968 + hacks/tessellimage.man | 86 + hacks/testx11.c | 967 + hacks/thornbird.c | 264 + hacks/thornbird.man | 64 + hacks/triangle.c | 354 + hacks/triangle.man | 56 + hacks/truchet.c | 536 + hacks/truchet.man | 139 + hacks/twang.c | 775 + hacks/twang.man | 132 + hacks/vermiculate.c | 1221 + hacks/vermiculate.man | 48 + hacks/vidwhacker | 506 + hacks/vidwhacker.man | 89 + hacks/vines.c | 179 + hacks/vines.man | 66 + hacks/vms_axp.opt | 4 + hacks/vms_axp_12.opt | 4 + hacks/vms_decc.opt | 4 + hacks/vms_decc_12.opt | 4 + hacks/wander.c | 280 + hacks/wander.man | 76 + hacks/webcollage | 4048 + hacks/webcollage-cocoa.m | 428 + hacks/webcollage-helper-cocoa.m | 510 + hacks/webcollage-helper.c | 592 + hacks/webcollage.man | 247 + hacks/whirlwindwarp.c | 506 + hacks/whirlwindwarp.man | 64 + hacks/whirlygig.c | 733 + hacks/whirlygig.man | 137 + hacks/worm.c | 433 + hacks/worm.man | 65 + hacks/wormhole.c | 725 + hacks/wormhole.man | 69 + hacks/xanalogtv.c | 629 + hacks/xanalogtv.man | 84 + hacks/xflame.c | 832 + hacks/xflame.man | 72 + hacks/ximage-loader.c | 680 + hacks/ximage-loader.h | 36 + hacks/xjack.c | 487 + hacks/xjack.man | 52 + hacks/xlockmore.c | 773 + hacks/xlockmore.h | 255 + hacks/xlockmoreI.h | 177 + hacks/xlyap.c | 1932 + hacks/xlyap.man | 223 + hacks/xmatrix.c | 1856 + hacks/xmatrix.man | 146 + hacks/xml2man.pl | 266 + hacks/xrayswarm.c | 1224 + hacks/xrayswarm.man | 50 + hacks/xscreensaver-sgigl.c | 266 + hacks/xspirograph.c | 333 + hacks/xspirograph.man | 71 + hacks/xsublim.c | 799 + hacks/xsublim.man | 91 + hacks/zoom.c | 291 + hacks/zoom.man | 111 + install-sh | 250 + intltool-extract.in | 309 + intltool-merge.in | 567 + intltool-update.in | 613 + jwxyz/Makefile.in | 141 + jwxyz/README | 30 + jwxyz/jwxyz-android.c | 1723 + jwxyz/jwxyz-android.h | 121 + jwxyz/jwxyz-cocoa.h | 98 + jwxyz/jwxyz-cocoa.m | 1041 + jwxyz/jwxyz-common.c | 1808 + jwxyz/jwxyz-gl.c | 1981 + jwxyz/jwxyz-image.c | 522 + jwxyz/jwxyz-timers.c | 357 + jwxyz/jwxyz-timers.h | 25 + jwxyz/jwxyz.h | 904 + jwxyz/jwxyz.m | 1798 + jwxyz/jwxyzI.h | 205 + jwxyz/jwzgles.c | 4312 + jwxyz/jwzgles.h | 520 + jwxyz/jwzglesI.h | 350 + makevms.com | 57 + po/ChangeLog | 300 + po/Makefile.in.in | 389 + po/POTFILES.in | 258 + po/da.po | 9938 + po/de.po | 9219 + po/es.po | 10021 + po/et.po | 8995 + po/fi.po | 8939 + po/fr.po | 9248 + po/hu.po | 9760 + po/it.po | 8967 + po/ja.po | 9994 + po/ko.po | 9340 + po/nb.po | 9071 + po/nl.po | 10290 + po/pl.po | 9387 + po/pt.po | 9995 + po/pt_BR.po | 9563 + po/ru.po | 10067 + po/sk.po | 9242 + po/sv.po | 11236 + po/update.sh | 24 + po/vi.po | 9347 + po/wa.po | 9138 + po/zh_CN.po | 9513 + po/zh_TW.po | 9358 + setup.com | 127 + utils/Makefile.in | 332 + utils/README | 6 + utils/ad2c | 42 + utils/aligned_malloc.c | 48 + utils/aligned_malloc.h | 26 + utils/alpha.c | 215 + utils/alpha.h | 22 + utils/async_netdb.c | 449 + utils/async_netdb.h | 223 + utils/bin2c | 46 + utils/colorbars.c | 133 + utils/colorbars.h | 25 + utils/colors.c | 732 + utils/colors.h | 147 + utils/compile_axp.com | 34 + utils/compile_decc.com | 34 + utils/erase.c | 811 + utils/erase.h | 21 + utils/fade.c | 962 + utils/fade.h | 21 + utils/font-retry.c | 148 + utils/font-retry.h | 20 + utils/grabclient.c | 1037 + utils/grabscreen.c | 937 + utils/grabscreen.h | 109 + utils/hsv.c | 81 + utils/hsv.h | 27 + utils/images/logo-180.gif | Bin 0 -> 3328 bytes utils/images/logo-180.xpm | 207 + utils/images/logo-50.gif | Bin 0 -> 857 bytes utils/images/logo-50.xpm | 77 + utils/images/logo-big.gif | Bin 0 -> 17019 bytes utils/images/logo.eps | 8058 + utils/images/screensaver-cmndln.png | Bin 0 -> 1040 bytes utils/images/screensaver-colorselector.png | Bin 0 -> 1104 bytes utils/images/screensaver-diagnostic.png | Bin 0 -> 1307 bytes utils/images/screensaver-locking.png | Bin 0 -> 944 bytes utils/images/screensaver-power.png | Bin 0 -> 973 bytes utils/images/screensaver-snap.png | Bin 0 -> 1272 bytes utils/logo.c | 75 + utils/minixpm.c | 251 + utils/minixpm.h | 28 + utils/overlay.c | 158 + utils/pow2.c | 51 + utils/pow2.h | 20 + utils/resources.c | 296 + utils/resources.h | 41 + utils/spline.c | 319 + utils/spline.h | 51 + utils/textclient-mobile.c | 813 + utils/textclient.c | 673 + utils/textclient.h | 37 + utils/thread_util.c | 1043 + utils/thread_util.h | 446 + utils/usleep.c | 64 + utils/usleep.h | 28 + utils/utf8wc.c | 858 + utils/utf8wc.h | 47 + utils/utils.h | 27 + utils/version.h | 2 + utils/visual-gl.c | 308 + utils/visual.c | 555 + utils/visual.h | 36 + utils/vms-gtod.c | 31 + utils/vms-gtod.h | 85 + utils/vms-strdup.c | 25 + utils/vroot.h | 156 + utils/xdbe.c | 75 + utils/xdbe.h | 27 + utils/xft.c | 368 + utils/xft.h | 167 + utils/xmu.c | 173 + utils/xmu.h | 14 + utils/xscreensaver-intl.h | 36 + utils/xshm.c | 340 + utils/xshm.h | 54 + utils/yarandom.c | 139 + utils/yarandom.h | 103 + xscreensaver.spec | 204 + 1674 files changed, 1271384 insertions(+) create mode 100644 INSTALL create mode 100644 Makefile.in create mode 100644 OSX/English.lproj/InfoPlist.strings create mode 100644 OSX/English.lproj/SaverRunner.nib/designable.nib create mode 100644 OSX/English.lproj/SaverRunner.nib/keyedobjects.nib create mode 100644 OSX/Gallant19.bdf create mode 100644 OSX/InvertedSlider.h create mode 100644 OSX/InvertedSlider.m create mode 100644 OSX/LaunchScreen.xib create mode 100644 OSX/Makefile create mode 100644 OSX/Media-iOS.xcassets/AppIcon.appiconset/Contents.json create mode 100644 OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner100.png create mode 100644 OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner1024.png create mode 100644 OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner114.png create mode 100644 OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner120.png create mode 100644 OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner144.png create mode 100644 OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner152.png create mode 100644 OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner167.png create mode 100644 OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner180.png create mode 100644 OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner29.png create mode 100644 OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner40.png create mode 100644 OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner50.png create mode 100644 OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner57.png create mode 100644 OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner58.png create mode 100644 OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner72.png create mode 100644 OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner76.png create mode 100644 OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner80.png create mode 100644 OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner87.png create mode 100644 OSX/Media-iOS.xcassets/Contents.json create mode 100644 OSX/Media-iOS.xcassets/Image.imageset/Contents.json create mode 100644 OSX/Media-iOS.xcassets/LaunchImage.launchimage/1242x2208.png create mode 100644 OSX/Media-iOS.xcassets/LaunchImage.launchimage/640x1136.png create mode 100644 OSX/Media-iOS.xcassets/LaunchImage.launchimage/640x960.png create mode 100644 OSX/Media-iOS.xcassets/LaunchImage.launchimage/750x1334.png create mode 100644 OSX/Media-iOS.xcassets/LaunchImage.launchimage/Contents.json create mode 100644 OSX/OCRAStd.otf create mode 100644 OSX/PrefsReader.h create mode 100644 OSX/PrefsReader.m create mode 100644 OSX/PxPlus_IBM_VGA8.ttf create mode 100644 OSX/README create mode 100644 OSX/SaverListController.h create mode 100644 OSX/SaverListController.m create mode 100644 OSX/SaverRunner.h create mode 100644 OSX/SaverRunner.icns create mode 100644 OSX/SaverRunner.m create mode 100644 OSX/SaverRunner.plist create mode 120000 OSX/Sparkle.framework/Headers create mode 120000 OSX/Sparkle.framework/Resources create mode 120000 OSX/Sparkle.framework/Sparkle create mode 100755 OSX/Sparkle.framework/Versions/A/Headers/SUAppcast.h create mode 100755 OSX/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h create mode 100755 OSX/Sparkle.framework/Versions/A/Headers/SUUpdater.h create mode 100755 OSX/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h create mode 100755 OSX/Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h create mode 100755 OSX/Sparkle.framework/Versions/A/Headers/Sparkle.h create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/Info.plist create mode 100755 OSX/Sparkle.framework/Versions/A/Resources/License.txt create mode 100755 OSX/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/SUStatus.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUPasswordPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUPasswordPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUPasswordPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Info.plist create mode 100755 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/MacOS/finish_installation create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/PkgInfo create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/SUStatus.nib create mode 100755 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/Sparkle.icns create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ar.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/cs.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/da.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/de.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/en.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/es.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/fr.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/is.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/it.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ja.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/nl.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pl.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pt_BR.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pt_PT.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ro.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ru.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/sl.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/sv.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/th.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/tr.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/uk.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/zh_CN.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/zh_TW.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings create mode 120000 OSX/Sparkle.framework/Versions/A/Resources/fr_CA.lproj create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings create mode 120000 OSX/Sparkle.framework/Versions/A/Resources/pt.lproj create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUPasswordPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUPasswordPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib create mode 100644 OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings create mode 100755 OSX/Sparkle.framework/Versions/A/Sparkle create mode 120000 OSX/Sparkle.framework/Versions/Current create mode 100644 OSX/Updater.h create mode 100644 OSX/Updater.m create mode 100644 OSX/Updater.plist create mode 100644 OSX/Updater.xib create mode 100644 OSX/XScreenSaver.icns create mode 100644 OSX/XScreenSaver.plist create mode 100644 OSX/XScreenSaverAndroidWebloc.icns create mode 100644 OSX/XScreenSaverConfigSheet.h create mode 100644 OSX/XScreenSaverConfigSheet.m create mode 100644 OSX/XScreenSaverDMG.icns create mode 100644 OSX/XScreenSaverFolder.icns create mode 100644 OSX/XScreenSaverGLView.h create mode 100644 OSX/XScreenSaverGLView.m create mode 100644 OSX/XScreenSaverPkg.icns create mode 100644 OSX/XScreenSaverSubclass.m create mode 100644 OSX/XScreenSaverView.h create mode 100644 OSX/XScreenSaverView.m create mode 100644 OSX/XScreenSaverWebloc.icns create mode 100644 OSX/YearlReg.ttf create mode 100644 OSX/apple2-app.xml create mode 100644 OSX/bindist-DS_Store create mode 100644 OSX/bindist.rtf create mode 100644 OSX/bindist.webloc create mode 100644 OSX/bindist2.webloc create mode 100755 OSX/build-fntable.pl create mode 100644 OSX/enable_gc.c create mode 100755 OSX/fuzztest.sh create mode 100644 OSX/grabclient-ios.m create mode 100644 OSX/grabclient-osx.m create mode 100644 OSX/iSaverRunner.ai create mode 100644 OSX/iSaverRunner.plist create mode 100644 OSX/iSaverRunner.xib create mode 100644 OSX/iSaverRunner1024.png create mode 100644 OSX/iSaverRunner57t.png create mode 100755 OSX/icmp-warning.pl create mode 100644 OSX/installer.png create mode 100644 OSX/installer.rtf create mode 100755 OSX/installer.sh create mode 100644 OSX/installer.xml create mode 100644 OSX/ios-function-table.m create mode 100644 OSX/luximr.ttf create mode 100644 OSX/main.m create mode 100644 OSX/phosphor-app.xml create mode 100755 OSX/seticon.pl create mode 100644 OSX/settings.png create mode 100644 OSX/settings@2x.png create mode 100644 OSX/settings@3x.png create mode 100755 OSX/sign_update.rb create mode 100644 OSX/sparkle_dsa_pub.pem create mode 100644 OSX/stop.png create mode 100644 OSX/stop@2x.png create mode 100644 OSX/stop@3x.png create mode 100644 OSX/textclient-ios.m create mode 100755 OSX/update-info-plist.pl create mode 100755 OSX/updates.pl create mode 100644 OSX/updates.xml create mode 100644 OSX/xscreensaver.xcconfig create mode 100644 OSX/xscreensaver.xcodeproj/project.pbxproj create mode 100644 OSX/xscreensaver_Prefix.pch create mode 100644 README create mode 100644 README.VMS create mode 100644 README.hacking create mode 100644 aclocal.m4 create mode 100644 android/Makefile create mode 100644 android/README create mode 100644 android/android.iml create mode 100644 android/build.gradle create mode 100644 android/gradle/wrapper/gradle-wrapper.jar create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100755 android/gradlew create mode 100644 android/gradlew.bat create mode 100644 android/local.properties create mode 100644 android/screenhack-android.c create mode 100644 android/settings.gradle create mode 100644 android/xscreensaver/.idea/caches/build_file_checksums.ser create mode 100644 android/xscreensaver/.idea/codeStyles/Project.xml create mode 100644 android/xscreensaver/.idea/compiler.xml create mode 100644 android/xscreensaver/.idea/gradle.xml create mode 100644 android/xscreensaver/.idea/misc.xml create mode 100644 android/xscreensaver/.idea/modules.xml create mode 100644 android/xscreensaver/.idea/runConfigurations.xml create mode 100644 android/xscreensaver/.idea/workspace.xml create mode 120000 android/xscreensaver/assets/fonts/OCRAStd.otf create mode 120000 android/xscreensaver/assets/fonts/PxPlus_IBM_VGA8.ttf create mode 120000 android/xscreensaver/assets/fonts/YearlReg.ttf create mode 100644 android/xscreensaver/build.gradle create mode 100644 android/xscreensaver/build.xml create mode 100644 android/xscreensaver/gradle/wrapper/gradle-wrapper.jar create mode 100644 android/xscreensaver/gradle/wrapper/gradle-wrapper.properties create mode 100644 android/xscreensaver/gradlew create mode 100644 android/xscreensaver/gradlew.bat create mode 100644 android/xscreensaver/jni/Android.mk create mode 100644 android/xscreensaver/jni/Application.mk create mode 100644 android/xscreensaver/local.properties create mode 100644 android/xscreensaver/project.properties create mode 100644 android/xscreensaver/res/drawable-ldpi/icon.png create mode 100644 android/xscreensaver/res/drawable-mdpi/icon.png create mode 100644 android/xscreensaver/res/drawable/thumbnail.png create mode 100644 android/xscreensaver/res/layout-land/activity_xscreensaver.xml create mode 100644 android/xscreensaver/res/layout/activity_tv_xscreensaver.xml create mode 100644 android/xscreensaver/res/layout/activity_xscreensaver.xml create mode 100644 android/xscreensaver/res/layout/main.xml create mode 100644 android/xscreensaver/res/layout/preference_blurb.xml create mode 100644 android/xscreensaver/res/layout/slider_preference.xml create mode 100644 android/xscreensaver/src/org/jwz/xscreensaver/Activity.java create mode 100644 android/xscreensaver/src/org/jwz/xscreensaver/App.java create mode 100644 android/xscreensaver/src/org/jwz/xscreensaver/Daydream.java create mode 100644 android/xscreensaver/src/org/jwz/xscreensaver/Settings.java create mode 100644 android/xscreensaver/src/org/jwz/xscreensaver/SliderPreference.java create mode 100644 android/xscreensaver/src/org/jwz/xscreensaver/TTFAnalyzer.java create mode 100644 android/xscreensaver/src/org/jwz/xscreensaver/TVActivity.java create mode 100644 android/xscreensaver/src/org/jwz/xscreensaver/Wallpaper.java create mode 100644 android/xscreensaver/src/org/jwz/xscreensaver/jwxyz.java create mode 100644 android/xscreensaver/xscreensaver.iml create mode 100644 ax_pthread.m4 create mode 100755 config.guess create mode 100644 config.h-vms create mode 100644 config.h.in create mode 100644 config.sub create mode 100755 configure create mode 100644 configure.in create mode 100644 driver/.gdbinit create mode 100644 driver/Makefile.in create mode 100644 driver/README create mode 100644 driver/XScreenSaver-Xm.ad create mode 100644 driver/XScreenSaver.ad.in create mode 100644 driver/XScreenSaver_Xm_ad.h create mode 100644 driver/XScreenSaver_ad.h create mode 100644 driver/auth.h create mode 100644 driver/compile_axp.com create mode 100644 driver/compile_decc.com create mode 100644 driver/demo-Gtk-conf.c create mode 100644 driver/demo-Gtk-conf.h create mode 100644 driver/demo-Gtk.c create mode 100644 driver/demo-Xm-widgets.c create mode 100644 driver/demo-Xm.c create mode 100644 driver/dpms.c create mode 100644 driver/exec.c create mode 100644 driver/exec.h create mode 100644 driver/link_axp.com create mode 100644 driver/link_decc.com create mode 100644 driver/lock.c create mode 100644 driver/mlstring.c create mode 100644 driver/mlstring.h create mode 100644 driver/passwd-helper.c create mode 100644 driver/passwd-kerberos.c create mode 100644 driver/passwd-pam.c create mode 100644 driver/passwd-pwent.c create mode 100644 driver/passwd.c create mode 100644 driver/pdf2jpeg.m create mode 100644 driver/pdf2jpeg.man create mode 100644 driver/prefs.c create mode 100644 driver/prefs.h create mode 100644 driver/remote.c create mode 100644 driver/remote.h create mode 100644 driver/screens.c create mode 100644 driver/screensaver-properties.desktop.in create mode 100644 driver/setuid.c create mode 100644 driver/splash.c create mode 100644 driver/stderr.c create mode 100644 driver/subprocs.c create mode 100644 driver/test-apm.c create mode 100644 driver/test-fade.c create mode 100644 driver/test-grab.c create mode 100644 driver/test-mlstring.c create mode 100644 driver/test-passwd.c create mode 100644 driver/test-randr.c create mode 100644 driver/test-screens.c create mode 100644 driver/test-uid.c create mode 100644 driver/test-vp.c create mode 100644 driver/test-xdpms.c create mode 100644 driver/test-xinerama.c create mode 100644 driver/timers.c create mode 100644 driver/types.h create mode 100644 driver/vms-getpwnam.c create mode 100644 driver/vms-hpwd.c create mode 100644 driver/vms-pwd.h create mode 100644 driver/vms-validate.c create mode 100644 driver/vms_axp.opt create mode 100644 driver/vms_axp_12.opt create mode 100644 driver/vms_decc.opt create mode 100644 driver/vms_decc_12.opt create mode 100644 driver/windows.c create mode 100644 driver/xdpyinfo.c create mode 100644 driver/xscreensaver-command.c create mode 100644 driver/xscreensaver-command.man create mode 100644 driver/xscreensaver-demo.glade2.in create mode 100644 driver/xscreensaver-demo.glade2p create mode 100644 driver/xscreensaver-demo.man create mode 100755 driver/xscreensaver-getimage-desktop create mode 100644 driver/xscreensaver-getimage-desktop.man create mode 100755 driver/xscreensaver-getimage-file create mode 100644 driver/xscreensaver-getimage-file.man create mode 100755 driver/xscreensaver-getimage-video create mode 100644 driver/xscreensaver-getimage-video.man create mode 100644 driver/xscreensaver-getimage.c create mode 100644 driver/xscreensaver-getimage.man create mode 100755 driver/xscreensaver-text create mode 100644 driver/xscreensaver-text.man create mode 100644 driver/xscreensaver.c create mode 100644 driver/xscreensaver.h create mode 100644 driver/xscreensaver.man create mode 100644 driver/xscreensaver.pam.in create mode 100644 driver/xset.c create mode 100644 hacks/.gdbinit create mode 100644 hacks/Makefile.in create mode 100644 hacks/README create mode 100644 hacks/abstractile.c create mode 100644 hacks/abstractile.man create mode 100644 hacks/analogtv.c create mode 100644 hacks/analogtv.h create mode 100644 hacks/anemone.c create mode 100644 hacks/anemone.man create mode 100644 hacks/anemotaxis.c create mode 100644 hacks/anemotaxis.man create mode 100644 hacks/ant.c create mode 100644 hacks/ant.man create mode 100644 hacks/apollonian.c create mode 100644 hacks/apollonian.man create mode 100644 hacks/apple2-main.c create mode 100644 hacks/apple2.c create mode 100644 hacks/apple2.h create mode 100644 hacks/apple2.man create mode 100644 hacks/asm6502.c create mode 100644 hacks/asm6502.h create mode 100644 hacks/attraction.c create mode 100644 hacks/attraction.man create mode 100644 hacks/automata.h create mode 100644 hacks/barcode.c create mode 100644 hacks/barcode.man create mode 100644 hacks/binaryring.c create mode 100644 hacks/binaryring.man create mode 100644 hacks/blaster.c create mode 100644 hacks/blaster.man create mode 100644 hacks/blitspin.c create mode 100644 hacks/blitspin.man create mode 100644 hacks/bouboule.c create mode 100644 hacks/bouboule.man create mode 100644 hacks/boxfit.c create mode 100644 hacks/boxfit.man create mode 100644 hacks/braid.c create mode 100644 hacks/braid.man create mode 100644 hacks/bsod.c create mode 100644 hacks/bsod.man create mode 100644 hacks/bubbles-default.c create mode 100644 hacks/bubbles.c create mode 100644 hacks/bubbles.h create mode 100644 hacks/bubbles.man create mode 100644 hacks/bumps.c create mode 100644 hacks/bumps.man create mode 100644 hacks/ccurve.c create mode 100644 hacks/ccurve.man create mode 100644 hacks/celtic.c create mode 100644 hacks/celtic.man create mode 100755 hacks/check-configs.pl create mode 100644 hacks/cloudlife.c create mode 100644 hacks/cloudlife.man create mode 100644 hacks/compass.c create mode 100644 hacks/compass.man create mode 100644 hacks/compile_axp.com create mode 100644 hacks/compile_decc.com create mode 100644 hacks/config/README create mode 100644 hacks/config/abstractile.xml create mode 100644 hacks/config/anemone.xml create mode 100644 hacks/config/anemotaxis.xml create mode 100644 hacks/config/ant.xml create mode 100644 hacks/config/antinspect.xml create mode 100644 hacks/config/antmaze.xml create mode 100644 hacks/config/antspotlight.xml create mode 100644 hacks/config/apollonian.xml create mode 100644 hacks/config/apple2.xml create mode 100644 hacks/config/atlantis.xml create mode 100644 hacks/config/attraction.xml create mode 100644 hacks/config/atunnel.xml create mode 100644 hacks/config/barcode.xml create mode 100644 hacks/config/binaryring.xml create mode 100644 hacks/config/blaster.xml create mode 100644 hacks/config/blinkbox.xml create mode 100644 hacks/config/blitspin.xml create mode 100644 hacks/config/blocktube.xml create mode 100644 hacks/config/boing.xml create mode 100644 hacks/config/bouboule.xml create mode 100644 hacks/config/bouncingcow.xml create mode 100644 hacks/config/boxed.xml create mode 100644 hacks/config/boxfit.xml create mode 100644 hacks/config/braid.xml create mode 100644 hacks/config/bsod.xml create mode 100644 hacks/config/bubble3d.xml create mode 100644 hacks/config/bubbles.xml create mode 100644 hacks/config/bumps.xml create mode 100644 hacks/config/cage.xml create mode 100644 hacks/config/carousel.xml create mode 100644 hacks/config/ccurve.xml create mode 100644 hacks/config/celtic.xml create mode 100644 hacks/config/circuit.xml create mode 100644 hacks/config/cityflow.xml create mode 100644 hacks/config/cloudlife.xml create mode 100644 hacks/config/companioncube.xml create mode 100644 hacks/config/compass.xml create mode 100644 hacks/config/coral.xml create mode 100644 hacks/config/crackberg.xml create mode 100644 hacks/config/critical.xml create mode 100644 hacks/config/crumbler.xml create mode 100644 hacks/config/crystal.xml create mode 100644 hacks/config/cube21.xml create mode 100644 hacks/config/cubenetic.xml create mode 100644 hacks/config/cubestack.xml create mode 100644 hacks/config/cubestorm.xml create mode 100644 hacks/config/cubetwist.xml create mode 100644 hacks/config/cubicgrid.xml create mode 100644 hacks/config/cwaves.xml create mode 100644 hacks/config/cynosure.xml create mode 100644 hacks/config/dangerball.xml create mode 100644 hacks/config/decayscreen.xml create mode 100644 hacks/config/deco.xml create mode 100644 hacks/config/deluxe.xml create mode 100644 hacks/config/demon.xml create mode 100644 hacks/config/discoball.xml create mode 100644 hacks/config/discrete.xml create mode 100644 hacks/config/distort.xml create mode 100644 hacks/config/dnalogo.xml create mode 100644 hacks/config/drift.xml create mode 100644 hacks/config/dymaxionmap.xml create mode 100644 hacks/config/endgame.xml create mode 100644 hacks/config/energystream.xml create mode 100644 hacks/config/engine.xml create mode 100644 hacks/config/epicycle.xml create mode 100644 hacks/config/eruption.xml create mode 100644 hacks/config/esper.xml create mode 100644 hacks/config/euler2d.xml create mode 100644 hacks/config/extrusion.xml create mode 100644 hacks/config/fadeplot.xml create mode 100644 hacks/config/fiberlamp.xml create mode 100644 hacks/config/fireworkx.xml create mode 100644 hacks/config/flag.xml create mode 100644 hacks/config/flame.xml create mode 100644 hacks/config/flipflop.xml create mode 100644 hacks/config/flipscreen3d.xml create mode 100644 hacks/config/fliptext.xml create mode 100644 hacks/config/flow.xml create mode 100644 hacks/config/fluidballs.xml create mode 100644 hacks/config/flurry.xml create mode 100644 hacks/config/flyingtoasters.xml create mode 100644 hacks/config/fontglide.xml create mode 100644 hacks/config/forest.xml create mode 100644 hacks/config/fuzzyflakes.xml create mode 100644 hacks/config/galaxy.xml create mode 100644 hacks/config/gears.xml create mode 100644 hacks/config/geodesic.xml create mode 100644 hacks/config/geodesicgears.xml create mode 100644 hacks/config/gflux.xml create mode 100644 hacks/config/glblur.xml create mode 100644 hacks/config/glcells.xml create mode 100644 hacks/config/gleidescope.xml create mode 100644 hacks/config/glforestfire.xml create mode 100644 hacks/config/glhanoi.xml create mode 100644 hacks/config/glknots.xml create mode 100644 hacks/config/glmatrix.xml create mode 100644 hacks/config/glplanet.xml create mode 100644 hacks/config/glschool.xml create mode 100644 hacks/config/glslideshow.xml create mode 100644 hacks/config/glsnake.xml create mode 100644 hacks/config/gltext.xml create mode 100644 hacks/config/goop.xml create mode 100644 hacks/config/grav.xml create mode 100644 hacks/config/greynetic.xml create mode 100644 hacks/config/halftone.xml create mode 100644 hacks/config/halo.xml create mode 100644 hacks/config/helix.xml create mode 100644 hacks/config/hexadrop.xml create mode 100644 hacks/config/hexstrut.xml create mode 100644 hacks/config/hilbert.xml create mode 100644 hacks/config/hopalong.xml create mode 100644 hacks/config/hydrostat.xml create mode 100644 hacks/config/hyperball.xml create mode 100644 hacks/config/hypercube.xml create mode 100644 hacks/config/hypertorus.xml create mode 100644 hacks/config/hypnowheel.xml create mode 100644 hacks/config/ifs.xml create mode 100644 hacks/config/imsmap.xml create mode 100644 hacks/config/interaggregate.xml create mode 100644 hacks/config/interference.xml create mode 100644 hacks/config/intermomentary.xml create mode 100644 hacks/config/jigglypuff.xml create mode 100644 hacks/config/jigsaw.xml create mode 100644 hacks/config/juggle.xml create mode 100644 hacks/config/juggler3d.xml create mode 100644 hacks/config/julia.xml create mode 100644 hacks/config/kaleidescope.xml create mode 100644 hacks/config/kaleidocycle.xml create mode 100644 hacks/config/klein.xml create mode 100644 hacks/config/kumppa.xml create mode 100644 hacks/config/lament.xml create mode 100644 hacks/config/laser.xml create mode 100644 hacks/config/lavalite.xml create mode 100644 hacks/config/lcdscrub.xml create mode 100644 hacks/config/lightning.xml create mode 100644 hacks/config/lisa.xml create mode 100644 hacks/config/lissie.xml create mode 100644 hacks/config/lmorph.xml create mode 100644 hacks/config/lockward.xml create mode 100644 hacks/config/loop.xml create mode 100644 hacks/config/m6502.xml create mode 100644 hacks/config/maze.xml create mode 100755 hacks/config/maze3d.xml create mode 100644 hacks/config/memscroller.xml create mode 100644 hacks/config/menger.xml create mode 100644 hacks/config/metaballs.xml create mode 100644 hacks/config/mirrorblob.xml create mode 100644 hacks/config/mismunch.xml create mode 100644 hacks/config/moebius.xml create mode 100644 hacks/config/moebiusgears.xml create mode 100644 hacks/config/moire.xml create mode 100644 hacks/config/moire2.xml create mode 100644 hacks/config/molecule.xml create mode 100644 hacks/config/morph3d.xml create mode 100644 hacks/config/mountain.xml create mode 100644 hacks/config/munch.xml create mode 100644 hacks/config/nerverot.xml create mode 100644 hacks/config/noof.xml create mode 100644 hacks/config/noseguy.xml create mode 100644 hacks/config/pacman.xml create mode 100644 hacks/config/pedal.xml create mode 100644 hacks/config/peepers.xml create mode 100644 hacks/config/penetrate.xml create mode 100644 hacks/config/penrose.xml create mode 100644 hacks/config/petri.xml create mode 100644 hacks/config/phosphor.xml create mode 100644 hacks/config/photopile.xml create mode 100644 hacks/config/piecewise.xml create mode 100644 hacks/config/pinion.xml create mode 100644 hacks/config/pipes.xml create mode 100644 hacks/config/polyhedra.xml create mode 100644 hacks/config/polyominoes.xml create mode 100644 hacks/config/polytopes.xml create mode 100644 hacks/config/pong.xml create mode 100644 hacks/config/popsquares.xml create mode 100644 hacks/config/projectiveplane.xml create mode 100644 hacks/config/providence.xml create mode 100644 hacks/config/pulsar.xml create mode 100644 hacks/config/pyro.xml create mode 100644 hacks/config/qix.xml create mode 100644 hacks/config/quasicrystal.xml create mode 100644 hacks/config/queens.xml create mode 100644 hacks/config/raverhoop.xml create mode 100644 hacks/config/razzledazzle.xml create mode 100644 hacks/config/rd-bomb.xml create mode 120000 hacks/config/rdbomb.xml create mode 100644 hacks/config/ripples.xml create mode 100644 hacks/config/rocks.xml create mode 100644 hacks/config/romanboy.xml create mode 100644 hacks/config/rorschach.xml create mode 100644 hacks/config/rotor.xml create mode 100644 hacks/config/rotzoomer.xml create mode 100644 hacks/config/rubik.xml create mode 100644 hacks/config/rubikblocks.xml create mode 100644 hacks/config/sballs.xml create mode 100644 hacks/config/shadebobs.xml create mode 100644 hacks/config/sierpinski.xml create mode 100644 hacks/config/sierpinski3d.xml create mode 100644 hacks/config/skytentacles.xml create mode 100644 hacks/config/slidescreen.xml create mode 100644 hacks/config/slip.xml create mode 100644 hacks/config/sonar.xml create mode 100644 hacks/config/speedmine.xml create mode 100644 hacks/config/sphere.xml create mode 100644 hacks/config/spheremonics.xml create mode 100644 hacks/config/spiral.xml create mode 100644 hacks/config/splitflap.xml create mode 100644 hacks/config/splodesic.xml create mode 100644 hacks/config/spotlight.xml create mode 100644 hacks/config/sproingies.xml create mode 100644 hacks/config/squiral.xml create mode 100644 hacks/config/stairs.xml create mode 100644 hacks/config/starfish.xml create mode 100644 hacks/config/starwars.xml create mode 100644 hacks/config/stonerview.xml create mode 100644 hacks/config/strange.xml create mode 100644 hacks/config/substrate.xml create mode 100644 hacks/config/superquadrics.xml create mode 100644 hacks/config/surfaces.xml create mode 100644 hacks/config/swirl.xml create mode 100644 hacks/config/t3d.xml create mode 100644 hacks/config/tangram.xml create mode 100644 hacks/config/tessellimage.xml create mode 100644 hacks/config/testx11.xml create mode 100644 hacks/config/thornbird.xml create mode 100644 hacks/config/timetunnel.xml create mode 100644 hacks/config/topblock.xml create mode 100644 hacks/config/triangle.xml create mode 100644 hacks/config/tronbit.xml create mode 100644 hacks/config/truchet.xml create mode 100644 hacks/config/twang.xml create mode 100644 hacks/config/unicrud.xml create mode 100644 hacks/config/unknownpleasures.xml create mode 100644 hacks/config/vermiculate.xml create mode 100644 hacks/config/vidwhacker.xml create mode 100644 hacks/config/vigilance.xml create mode 100644 hacks/config/vines.xml create mode 100644 hacks/config/voronoi.xml create mode 100644 hacks/config/wander.xml create mode 100644 hacks/config/webcollage.xml create mode 100644 hacks/config/whirlwindwarp.xml create mode 100644 hacks/config/whirlygig.xml create mode 100644 hacks/config/winduprobot.xml create mode 100644 hacks/config/worm.xml create mode 100644 hacks/config/wormhole.xml create mode 100644 hacks/config/xanalogtv.xml create mode 100644 hacks/config/xflame.xml create mode 100644 hacks/config/xjack.xml create mode 100644 hacks/config/xlyap.xml create mode 100644 hacks/config/xmatrix.xml create mode 100644 hacks/config/xrayswarm.xml create mode 100644 hacks/config/xspirograph.xml create mode 100644 hacks/config/xss.dtd create mode 100644 hacks/config/xss.xsd create mode 100644 hacks/config/zoom.xml create mode 100644 hacks/coral.c create mode 100644 hacks/coral.man create mode 100644 hacks/critical.c create mode 100644 hacks/critical.man create mode 100644 hacks/crystal.c create mode 100644 hacks/crystal.man create mode 100644 hacks/cwaves.c create mode 100644 hacks/cwaves.man create mode 100644 hacks/cynosure.c create mode 100644 hacks/cynosure.man create mode 100644 hacks/decayscreen.c create mode 100644 hacks/decayscreen.man create mode 100644 hacks/deco.c create mode 100644 hacks/deco.man create mode 100644 hacks/delaunay.c create mode 100644 hacks/delaunay.h create mode 100644 hacks/deluxe.c create mode 100644 hacks/deluxe.man create mode 100644 hacks/demon.c create mode 100644 hacks/demon.man create mode 100644 hacks/discrete.c create mode 100644 hacks/discrete.man create mode 100644 hacks/distort.c create mode 100644 hacks/distort.man create mode 100644 hacks/drift.c create mode 100644 hacks/drift.man create mode 100644 hacks/epicycle.c create mode 100644 hacks/epicycle.man create mode 100644 hacks/eruption.c create mode 100644 hacks/eruption.man create mode 100644 hacks/euler2d.c create mode 100644 hacks/euler2d.man create mode 100644 hacks/euler2d.tex create mode 100644 hacks/fadeplot.c create mode 100644 hacks/fadeplot.man create mode 100644 hacks/fiberlamp.c create mode 100644 hacks/fiberlamp.man create mode 100644 hacks/fireworkx.c create mode 100644 hacks/fireworkx.man create mode 100644 hacks/flag.c create mode 100644 hacks/flag.man create mode 100644 hacks/flame.c create mode 100644 hacks/flame.man create mode 100644 hacks/flow.c create mode 100644 hacks/flow.man create mode 100644 hacks/fluidballs.c create mode 100644 hacks/fluidballs.man create mode 100644 hacks/fontglide.c create mode 100644 hacks/fontglide.man create mode 100644 hacks/forest.c create mode 100644 hacks/forest.man create mode 100644 hacks/fps.c create mode 100644 hacks/fps.h create mode 100644 hacks/fpsI.h create mode 100644 hacks/fuzzyflakes.c create mode 100644 hacks/fuzzyflakes.man create mode 100644 hacks/galaxy.c create mode 100644 hacks/galaxy.man create mode 100644 hacks/glx/Makefile.in create mode 100644 hacks/glx/README create mode 100644 hacks/glx/antinspect.c create mode 100644 hacks/glx/antinspect.man create mode 100644 hacks/glx/antmaze.c create mode 100644 hacks/glx/antmaze.man create mode 100644 hacks/glx/ants.h create mode 100644 hacks/glx/antspotlight.c create mode 100644 hacks/glx/antspotlight.man create mode 100644 hacks/glx/atlantis.c create mode 100644 hacks/glx/atlantis.h create mode 100644 hacks/glx/atlantis.man create mode 100644 hacks/glx/atunnel.c create mode 100644 hacks/glx/atunnel.man create mode 100644 hacks/glx/b_draw.c create mode 100644 hacks/glx/b_lockglue.c create mode 100644 hacks/glx/b_sphere.c create mode 100644 hacks/glx/blinkbox.c create mode 100644 hacks/glx/blinkbox.man create mode 100644 hacks/glx/blocktube.c create mode 100644 hacks/glx/blocktube.man create mode 100644 hacks/glx/boing.c create mode 100644 hacks/glx/boing.man create mode 100644 hacks/glx/bouncingcow.c create mode 100644 hacks/glx/bouncingcow.man create mode 100644 hacks/glx/boxed.c create mode 100644 hacks/glx/boxed.h create mode 100644 hacks/glx/boxed.man create mode 100644 hacks/glx/bubble3d.c create mode 100644 hacks/glx/bubble3d.h create mode 100644 hacks/glx/bubble3d.man create mode 100644 hacks/glx/buildlwo.c create mode 100644 hacks/glx/buildlwo.h create mode 100644 hacks/glx/cage.c create mode 100644 hacks/glx/cage.man create mode 100644 hacks/glx/carousel.c create mode 100644 hacks/glx/carousel.man create mode 100644 hacks/glx/chessgames.h create mode 100644 hacks/glx/chessmodels.c create mode 100644 hacks/glx/chessmodels.h create mode 100644 hacks/glx/circuit.c create mode 100644 hacks/glx/circuit.man create mode 100644 hacks/glx/cityflow.c create mode 100644 hacks/glx/cityflow.man create mode 100644 hacks/glx/companion.c create mode 100644 hacks/glx/companion_disc.c create mode 100644 hacks/glx/companion_heart.c create mode 100644 hacks/glx/companion_quad.c create mode 100644 hacks/glx/companioncube.man create mode 100644 hacks/glx/cow_face.c create mode 100644 hacks/glx/cow_hide.c create mode 100644 hacks/glx/cow_hoofs.c create mode 100644 hacks/glx/cow_horns.c create mode 100644 hacks/glx/cow_tail.c create mode 100644 hacks/glx/cow_udder.c create mode 100644 hacks/glx/crackberg.c create mode 100644 hacks/glx/crackberg.man create mode 100644 hacks/glx/crumbler.c create mode 100644 hacks/glx/crumbler.man create mode 100644 hacks/glx/cube21.c create mode 100644 hacks/glx/cube21.man create mode 100644 hacks/glx/cubenetic.c create mode 100644 hacks/glx/cubenetic.man create mode 100644 hacks/glx/cubestack.c create mode 100644 hacks/glx/cubestack.man create mode 100644 hacks/glx/cubestorm.c create mode 100644 hacks/glx/cubestorm.man create mode 100644 hacks/glx/cubetwist.c create mode 100644 hacks/glx/cubetwist.man create mode 100644 hacks/glx/cubicgrid.c create mode 100644 hacks/glx/cubicgrid.man create mode 100644 hacks/glx/curlicue.h create mode 100644 hacks/glx/dangerball.c create mode 100644 hacks/glx/dangerball.man create mode 100644 hacks/glx/discoball.c create mode 100644 hacks/glx/discoball.man create mode 100644 hacks/glx/dnalogo.c create mode 100644 hacks/glx/dnapizza.h create mode 100644 hacks/glx/dolphin.c create mode 100644 hacks/glx/dropshadow.c create mode 100644 hacks/glx/dropshadow.h create mode 100755 hacks/glx/dxf2gl.pl create mode 100644 hacks/glx/dymaxionmap.c create mode 100644 hacks/glx/dymaxionmap.man create mode 100644 hacks/glx/e_textures.h create mode 100644 hacks/glx/endgame.c create mode 100644 hacks/glx/endgame.man create mode 100644 hacks/glx/energystream.c create mode 100644 hacks/glx/energystream.man create mode 100644 hacks/glx/engine.c create mode 100644 hacks/glx/engine.man create mode 100644 hacks/glx/erase-gl.c create mode 100644 hacks/glx/esper.c create mode 100644 hacks/glx/esper.man create mode 100644 hacks/glx/extrusion-helix2.c create mode 100644 hacks/glx/extrusion-helix3.c create mode 100644 hacks/glx/extrusion-helix4.c create mode 100644 hacks/glx/extrusion-joinoffset.c create mode 100644 hacks/glx/extrusion-screw.c create mode 100644 hacks/glx/extrusion-taper.c create mode 100644 hacks/glx/extrusion-twistoid.c create mode 100644 hacks/glx/extrusion.c create mode 100644 hacks/glx/extrusion.h create mode 100644 hacks/glx/extrusion.man create mode 100644 hacks/glx/flipflop.c create mode 100644 hacks/glx/flipflop.man create mode 100644 hacks/glx/flipscreen3d.c create mode 100644 hacks/glx/flipscreen3d.man create mode 100644 hacks/glx/fliptext.c create mode 100644 hacks/glx/fliptext.man create mode 100644 hacks/glx/flurry-smoke.c create mode 100644 hacks/glx/flurry-spark.c create mode 100644 hacks/glx/flurry-star.c create mode 100644 hacks/glx/flurry-texture.c create mode 100644 hacks/glx/flurry.c create mode 100644 hacks/glx/flurry.h create mode 100644 hacks/glx/flurry.man create mode 100644 hacks/glx/flyingtoasters.c create mode 100644 hacks/glx/flyingtoasters.man create mode 100644 hacks/glx/fps-gl.c create mode 100644 hacks/glx/gears.c create mode 100644 hacks/glx/gears.man create mode 100644 hacks/glx/geodesic.c create mode 100644 hacks/glx/geodesic.man create mode 100644 hacks/glx/geodesicgears.c create mode 100644 hacks/glx/geodesicgears.man create mode 100644 hacks/glx/gflux.c create mode 100644 hacks/glx/gflux.man create mode 100644 hacks/glx/glblur.c create mode 100644 hacks/glx/glblur.man create mode 100644 hacks/glx/glcells.c create mode 100644 hacks/glx/glcells.man create mode 100644 hacks/glx/gleidescope.c create mode 100644 hacks/glx/gleidescope.man create mode 100644 hacks/glx/glforestfire.c create mode 100644 hacks/glx/glforestfire.man create mode 100644 hacks/glx/glhanoi.c create mode 100644 hacks/glx/glhanoi.man create mode 100644 hacks/glx/glknots.c create mode 100644 hacks/glx/glknots.man create mode 100644 hacks/glx/gllist.c create mode 100644 hacks/glx/gllist.h create mode 100644 hacks/glx/glmatrix.c create mode 100644 hacks/glx/glmatrix.man create mode 100644 hacks/glx/glplanet.c create mode 100644 hacks/glx/glplanet.man create mode 100644 hacks/glx/glschool.c create mode 100644 hacks/glx/glschool.h create mode 100644 hacks/glx/glschool.man create mode 100644 hacks/glx/glschool_alg.c create mode 100644 hacks/glx/glschool_alg.h create mode 100644 hacks/glx/glschool_gl.c create mode 100644 hacks/glx/glschool_gl.h create mode 100644 hacks/glx/glslideshow.c create mode 100644 hacks/glx/glslideshow.man create mode 100644 hacks/glx/glsnake.c create mode 100644 hacks/glx/glsnake.man create mode 100644 hacks/glx/gltext.c create mode 100644 hacks/glx/gltext.man create mode 100644 hacks/glx/gltrackball.c create mode 100644 hacks/glx/gltrackball.h create mode 100644 hacks/glx/glut_mroman.h create mode 100644 hacks/glx/glut_roman.h create mode 100644 hacks/glx/glut_stroke.c create mode 100644 hacks/glx/glut_swidth.c create mode 100644 hacks/glx/glutstroke.h create mode 100644 hacks/glx/grab-ximage.c create mode 100644 hacks/glx/grab-ximage.h create mode 100644 hacks/glx/hexstrut.c create mode 100644 hacks/glx/hexstrut.man create mode 100644 hacks/glx/hilbert.c create mode 100644 hacks/glx/hilbert.man create mode 100644 hacks/glx/hydrostat.c create mode 100644 hacks/glx/hydrostat.man create mode 100644 hacks/glx/hypertorus.c create mode 100644 hacks/glx/hypertorus.man create mode 100644 hacks/glx/hypnowheel.c create mode 100644 hacks/glx/hypnowheel.man create mode 100644 hacks/glx/involute.c create mode 100644 hacks/glx/involute.h create mode 100644 hacks/glx/jigglypuff.c create mode 100644 hacks/glx/jigglypuff.man create mode 100644 hacks/glx/jigsaw.c create mode 100644 hacks/glx/jigsaw.man create mode 100644 hacks/glx/juggler3d.c create mode 100644 hacks/glx/juggler3d.man create mode 100644 hacks/glx/kaleidocycle.c create mode 100644 hacks/glx/kaleidocycle.man create mode 100644 hacks/glx/klein.c create mode 100644 hacks/glx/klein.man create mode 100644 hacks/glx/lament.c create mode 100644 hacks/glx/lament.dxf create mode 100644 hacks/glx/lament.man create mode 100644 hacks/glx/lament_model.c create mode 100644 hacks/glx/lavalite.c create mode 100644 hacks/glx/lavalite.man create mode 100644 hacks/glx/lockward.c create mode 100644 hacks/glx/lockward.man create mode 100644 hacks/glx/marching.c create mode 100644 hacks/glx/marching.h create mode 100755 hacks/glx/maze3d.c create mode 100755 hacks/glx/maze3d.man create mode 100644 hacks/glx/menger.c create mode 100644 hacks/glx/menger.man create mode 100644 hacks/glx/mirrorblob.c create mode 100644 hacks/glx/mirrorblob.man create mode 100644 hacks/glx/moebius.c create mode 100644 hacks/glx/moebius.man create mode 100644 hacks/glx/moebiusgears.c create mode 100644 hacks/glx/moebiusgears.man create mode 100644 hacks/glx/molecule.c create mode 100644 hacks/glx/molecule.man create mode 100755 hacks/glx/molecules.sh create mode 100644 hacks/glx/morph3d.c create mode 100644 hacks/glx/morph3d.man create mode 100644 hacks/glx/noof.c create mode 100644 hacks/glx/noof.man create mode 100644 hacks/glx/normals.c create mode 100644 hacks/glx/normals.h create mode 100644 hacks/glx/peepers.c create mode 100644 hacks/glx/peepers.man create mode 100644 hacks/glx/photopile.c create mode 100644 hacks/glx/photopile.man create mode 100644 hacks/glx/pinion.c create mode 100644 hacks/glx/pinion.man create mode 100644 hacks/glx/pipeobjs.c create mode 100644 hacks/glx/pipes.c create mode 100644 hacks/glx/pipes.man create mode 100644 hacks/glx/polyhedra-gl.c create mode 100644 hacks/glx/polyhedra.c create mode 100644 hacks/glx/polyhedra.h create mode 100644 hacks/glx/polyhedra.man create mode 100644 hacks/glx/polytopes.c create mode 100644 hacks/glx/polytopes.man create mode 100644 hacks/glx/projectiveplane.c create mode 100644 hacks/glx/projectiveplane.man create mode 100644 hacks/glx/providence.c create mode 100644 hacks/glx/providence.man create mode 100644 hacks/glx/pulsar.c create mode 100644 hacks/glx/pulsar.man create mode 100644 hacks/glx/quasicrystal.c create mode 100644 hacks/glx/quasicrystal.man create mode 100644 hacks/glx/queens.c create mode 100644 hacks/glx/queens.man create mode 100644 hacks/glx/quickhull.c create mode 100644 hacks/glx/quickhull.h create mode 100644 hacks/glx/raverhoop.c create mode 100644 hacks/glx/raverhoop.man create mode 100644 hacks/glx/razzledazzle.c create mode 100644 hacks/glx/razzledazzle.man create mode 100644 hacks/glx/robot-wireframe.c create mode 100644 hacks/glx/robot-wireframe.dxf create mode 100644 hacks/glx/robot.c create mode 100644 hacks/glx/robot.dxf create mode 100644 hacks/glx/romanboy.c create mode 100644 hacks/glx/romanboy.man create mode 100644 hacks/glx/rotator.c create mode 100644 hacks/glx/rotator.h create mode 100644 hacks/glx/rubik.c create mode 100644 hacks/glx/rubik.man create mode 100644 hacks/glx/rubikblocks.c create mode 100644 hacks/glx/rubikblocks.man create mode 100644 hacks/glx/s1_1.c create mode 100644 hacks/glx/s1_2.c create mode 100644 hacks/glx/s1_3.c create mode 100644 hacks/glx/s1_4.c create mode 100644 hacks/glx/s1_5.c create mode 100644 hacks/glx/s1_6.c create mode 100644 hacks/glx/s1_b.c create mode 100644 hacks/glx/sballs.c create mode 100644 hacks/glx/sballs.man create mode 100644 hacks/glx/seccam.c create mode 100644 hacks/glx/seccam.dxf create mode 100644 hacks/glx/shark.c create mode 100644 hacks/glx/ships.c create mode 100644 hacks/glx/ships.dxf create mode 100644 hacks/glx/sierpinski3d.c create mode 100644 hacks/glx/sierpinski3d.man create mode 100644 hacks/glx/skytentacles.c create mode 100644 hacks/glx/skytentacles.man create mode 100644 hacks/glx/sonar-icmp.c create mode 100644 hacks/glx/sonar-sim.c create mode 100644 hacks/glx/sonar.c create mode 100644 hacks/glx/sonar.h create mode 100644 hacks/glx/sonar.man create mode 100644 hacks/glx/sphere.c create mode 100644 hacks/glx/sphere.h create mode 100644 hacks/glx/spheremonics.c create mode 100644 hacks/glx/spheremonics.man create mode 100644 hacks/glx/splitflap.c create mode 100644 hacks/glx/splitflap.dxf create mode 100644 hacks/glx/splitflap.man create mode 100644 hacks/glx/splitflap_obj.c create mode 100644 hacks/glx/splodesic.c create mode 100644 hacks/glx/splodesic.man create mode 100644 hacks/glx/sproingies.c create mode 100644 hacks/glx/sproingies.h create mode 100644 hacks/glx/sproingies.man create mode 100644 hacks/glx/sproingiewrap.c create mode 100644 hacks/glx/stairs.c create mode 100644 hacks/glx/stairs.man create mode 100644 hacks/glx/starwars.c create mode 100644 hacks/glx/starwars.h create mode 100644 hacks/glx/starwars.man create mode 100644 hacks/glx/starwars.txt create mode 100644 hacks/glx/stonerview-move.c create mode 100644 hacks/glx/stonerview-move.h create mode 100644 hacks/glx/stonerview-osc.c create mode 100644 hacks/glx/stonerview-osc.h create mode 100644 hacks/glx/stonerview-view.c create mode 100644 hacks/glx/stonerview.c create mode 100644 hacks/glx/stonerview.h create mode 100644 hacks/glx/stonerview.man create mode 100644 hacks/glx/superquadrics.c create mode 100644 hacks/glx/superquadrics.man create mode 100644 hacks/glx/surfaces.c create mode 100644 hacks/glx/surfaces.man create mode 100644 hacks/glx/swim.c create mode 100644 hacks/glx/tangram.c create mode 100644 hacks/glx/tangram.man create mode 100644 hacks/glx/tangram_shapes.c create mode 100644 hacks/glx/tangram_shapes.h create mode 100644 hacks/glx/teapot.c create mode 100644 hacks/glx/teapot.h create mode 100644 hacks/glx/teapot2.h create mode 100644 hacks/glx/texfont.c create mode 100644 hacks/glx/texfont.h create mode 100644 hacks/glx/timetunnel.c create mode 100644 hacks/glx/timetunnel.man create mode 100644 hacks/glx/toast.c create mode 100644 hacks/glx/toast.dxf create mode 100644 hacks/glx/toast2.c create mode 100644 hacks/glx/toast2.dxf create mode 100644 hacks/glx/toaster.c create mode 100644 hacks/glx/toaster.dxf create mode 100644 hacks/glx/toaster_base.c create mode 100644 hacks/glx/toaster_base.dxf create mode 100644 hacks/glx/toaster_handle.c create mode 100644 hacks/glx/toaster_handle.dxf create mode 100644 hacks/glx/toaster_handle2.c create mode 100644 hacks/glx/toaster_handle2.dxf create mode 100644 hacks/glx/toaster_jet.c create mode 100644 hacks/glx/toaster_jet.dxf create mode 100644 hacks/glx/toaster_knob.c create mode 100644 hacks/glx/toaster_knob.dxf create mode 100644 hacks/glx/toaster_slots.c create mode 100644 hacks/glx/toaster_slots.dxf create mode 100644 hacks/glx/toaster_wing.c create mode 100644 hacks/glx/toaster_wing.dxf create mode 100644 hacks/glx/topblock.c create mode 100644 hacks/glx/topblock.h create mode 100644 hacks/glx/topblock.man create mode 100644 hacks/glx/trackball.c create mode 100644 hacks/glx/trackball.h create mode 100644 hacks/glx/tronbit.c create mode 100644 hacks/glx/tronbit.man create mode 100644 hacks/glx/tronbit_idle1.c create mode 100644 hacks/glx/tronbit_idle2.c create mode 100644 hacks/glx/tronbit_no.c create mode 100644 hacks/glx/tronbit_yes.c create mode 100644 hacks/glx/tube.c create mode 100644 hacks/glx/tube.h create mode 100644 hacks/glx/tunnel_draw.c create mode 100644 hacks/glx/tunnel_draw.h create mode 100644 hacks/glx/unicrud.c create mode 100644 hacks/glx/unicrud.man create mode 100644 hacks/glx/unknownpleasures.c create mode 100644 hacks/glx/unknownpleasures.man create mode 100644 hacks/glx/vigilance.c create mode 100644 hacks/glx/vigilance.man create mode 100644 hacks/glx/voronoi.c create mode 100644 hacks/glx/voronoi.man create mode 100755 hacks/glx/vrml2gl.pl create mode 100755 hacks/glx/wfront2gl.pl create mode 100644 hacks/glx/whale.c create mode 100644 hacks/glx/winduprobot.c create mode 100644 hacks/glx/winduprobot.man create mode 100644 hacks/glx/xlock-gl-utils.c create mode 100644 hacks/glx/xscreensaver-gl-helper.c create mode 100644 hacks/glx/xscreensaver-gl-helper.man create mode 100644 hacks/glx/zalgo.txt create mode 100644 hacks/goop.c create mode 100644 hacks/goop.man create mode 100644 hacks/grav.c create mode 100644 hacks/grav.man create mode 100644 hacks/greynetic.c create mode 100644 hacks/greynetic.man create mode 100644 hacks/halftone.c create mode 100644 hacks/halftone.man create mode 100644 hacks/halo.c create mode 100644 hacks/halo.man create mode 100644 hacks/helix.c create mode 100644 hacks/helix.man create mode 100644 hacks/hexadrop.c create mode 100644 hacks/hexadrop.man create mode 100644 hacks/hopalong.c create mode 100644 hacks/hopalong.man create mode 100644 hacks/hyperball.c create mode 100644 hacks/hyperball.man create mode 100644 hacks/hypercube.c create mode 100644 hacks/hypercube.man create mode 100644 hacks/ifs.c create mode 100644 hacks/ifs.man create mode 100644 hacks/images/6x10font.png create mode 100644 hacks/images/Makefile create mode 100644 hacks/images/amiga.png create mode 100644 hacks/images/android.png create mode 100644 hacks/images/apple.png create mode 100644 hacks/images/apple2font.png create mode 100644 hacks/images/atari.png create mode 100644 hacks/images/atm.png create mode 100644 hacks/images/blocktube.png create mode 100644 hacks/images/bob.png create mode 100644 hacks/images/brick1.png create mode 100644 hacks/images/brick2.png create mode 100644 hacks/images/bubbles/blood.pov create mode 100644 hacks/images/bubbles/blood1.png create mode 100644 hacks/images/bubbles/blood10.png create mode 100644 hacks/images/bubbles/blood11.png create mode 100644 hacks/images/bubbles/blood2.png create mode 100644 hacks/images/bubbles/blood3.png create mode 100644 hacks/images/bubbles/blood4.png create mode 100644 hacks/images/bubbles/blood5.png create mode 100644 hacks/images/bubbles/blood6.png create mode 100644 hacks/images/bubbles/blood7.png create mode 100644 hacks/images/bubbles/blood8.png create mode 100644 hacks/images/bubbles/blood9.png create mode 100644 hacks/images/bubbles/blue.pov create mode 100644 hacks/images/bubbles/blue1.png create mode 100644 hacks/images/bubbles/blue10.png create mode 100644 hacks/images/bubbles/blue11.png create mode 100644 hacks/images/bubbles/blue2.png create mode 100644 hacks/images/bubbles/blue3.png create mode 100644 hacks/images/bubbles/blue4.png create mode 100644 hacks/images/bubbles/blue5.png create mode 100644 hacks/images/bubbles/blue6.png create mode 100644 hacks/images/bubbles/blue7.png create mode 100644 hacks/images/bubbles/blue8.png create mode 100644 hacks/images/bubbles/blue9.png create mode 100644 hacks/images/bubbles/glass.pov create mode 100644 hacks/images/bubbles/glass1.png create mode 100644 hacks/images/bubbles/glass10.png create mode 100644 hacks/images/bubbles/glass11.png create mode 100644 hacks/images/bubbles/glass2.png create mode 100644 hacks/images/bubbles/glass3.png create mode 100644 hacks/images/bubbles/glass4.png create mode 100644 hacks/images/bubbles/glass5.png create mode 100644 hacks/images/bubbles/glass6.png create mode 100644 hacks/images/bubbles/glass7.png create mode 100644 hacks/images/bubbles/glass8.png create mode 100644 hacks/images/bubbles/glass9.png create mode 100644 hacks/images/bubbles/jade.pov create mode 100644 hacks/images/bubbles/jade1.png create mode 100644 hacks/images/bubbles/jade10.png create mode 100644 hacks/images/bubbles/jade11.png create mode 100644 hacks/images/bubbles/jade2.png create mode 100644 hacks/images/bubbles/jade3.png create mode 100644 hacks/images/bubbles/jade4.png create mode 100644 hacks/images/bubbles/jade5.png create mode 100644 hacks/images/bubbles/jade6.png create mode 100644 hacks/images/bubbles/jade7.png create mode 100644 hacks/images/bubbles/jade8.png create mode 100644 hacks/images/bubbles/jade9.png create mode 100644 hacks/images/chromesphere.png create mode 100644 hacks/images/dymaxionmap.png create mode 100644 hacks/images/earth.png create mode 100644 hacks/images/earth_night.png create mode 100644 hacks/images/ground.png create mode 100644 hacks/images/hmac.png create mode 100644 hacks/images/iris.png create mode 100644 hacks/images/jigglymap.png create mode 100644 hacks/images/lament512.png create mode 100644 hacks/images/logo-180.png create mode 100644 hacks/images/logo-32.png create mode 100644 hacks/images/logo-50.png create mode 100644 hacks/images/m6502/amiga.asm create mode 100644 hacks/images/m6502/breakout.asm create mode 100644 hacks/images/m6502/byterun.asm create mode 100644 hacks/images/m6502/cellular-30.asm create mode 100644 hacks/images/m6502/cellular-600.asm create mode 100644 hacks/images/m6502/colors.asm create mode 100644 hacks/images/m6502/crunch6502.asm create mode 100644 hacks/images/m6502/demoscene.asm create mode 100644 hacks/images/m6502/disco.asm create mode 100644 hacks/images/m6502/dmsc.asm create mode 100644 hacks/images/m6502/dmsc.txt create mode 100644 hacks/images/m6502/dragon-fractal.asm create mode 100644 hacks/images/m6502/fullscreenlogo.asm create mode 100644 hacks/images/m6502/greynetic.asm create mode 100644 hacks/images/m6502/keftal.asm create mode 100644 hacks/images/m6502/life.asm create mode 100644 hacks/images/m6502/lines.asm create mode 100644 hacks/images/m6502/matrix.asm create mode 100644 hacks/images/m6502/noise.asm create mode 100644 hacks/images/m6502/random-walk.asm create mode 100644 hacks/images/m6502/random.asm create mode 100644 hacks/images/m6502/random2.asm create mode 100644 hacks/images/m6502/rorschach.asm create mode 100644 hacks/images/m6502/santa.asm create mode 100644 hacks/images/m6502/selfmodify.asm create mode 100644 hacks/images/m6502/sflake.asm create mode 100644 hacks/images/m6502/sierpinski.asm create mode 100644 hacks/images/m6502/sierpinsky.asm create mode 100644 hacks/images/m6502/softsprite.asm create mode 100644 hacks/images/m6502/spacer.asm create mode 100644 hacks/images/m6502/starfield2d.asm create mode 100644 hacks/images/m6502/texture.asm create mode 100644 hacks/images/m6502/wave6502.asm create mode 100644 hacks/images/m6502/zookeeper.asm create mode 100644 hacks/images/mac.png create mode 100644 hacks/images/macbomb.png create mode 100644 hacks/images/matrix1.png create mode 100644 hacks/images/matrix1b.png create mode 100644 hacks/images/matrix2.png create mode 100644 hacks/images/matrix2b.png create mode 100644 hacks/images/matrix3.png create mode 100644 hacks/images/molecules/adenine.pdb create mode 100644 hacks/images/molecules/adrenochrome.pdb create mode 100644 hacks/images/molecules/bucky.pdb create mode 100644 hacks/images/molecules/caffeine.pdb create mode 100644 hacks/images/molecules/capsaicin.pdb create mode 100644 hacks/images/molecules/chlordecone.pdb create mode 100644 hacks/images/molecules/cocaine.pdb create mode 100644 hacks/images/molecules/codeine.pdb create mode 100644 hacks/images/molecules/cyclohexane.pdb create mode 100644 hacks/images/molecules/cytosine.pdb create mode 100644 hacks/images/molecules/dna.pdb create mode 100644 hacks/images/molecules/dodecahedrane.pdb create mode 100644 hacks/images/molecules/dthc.pdb create mode 100644 hacks/images/molecules/dynamite.pdb create mode 100644 hacks/images/molecules/glycol.pdb create mode 100644 hacks/images/molecules/guanine.pdb create mode 100644 hacks/images/molecules/heroin.pdb create mode 100644 hacks/images/molecules/hexahelicene.pdb create mode 100644 hacks/images/molecules/ibuprofen.pdb create mode 100644 hacks/images/molecules/lsd.pdb create mode 100644 hacks/images/molecules/menthol.pdb create mode 100644 hacks/images/molecules/mescaline.pdb create mode 100644 hacks/images/molecules/methamphetamine.pdb create mode 100644 hacks/images/molecules/morphine.pdb create mode 100644 hacks/images/molecules/nicotine.pdb create mode 100644 hacks/images/molecules/novocaine.pdb create mode 100644 hacks/images/molecules/olestra.pdb create mode 100644 hacks/images/molecules/penicillin.pdb create mode 100644 hacks/images/molecules/salvinorin.pdb create mode 100644 hacks/images/molecules/sarin.pdb create mode 100644 hacks/images/molecules/strychnine.pdb create mode 100644 hacks/images/molecules/sucrose.pdb create mode 100644 hacks/images/molecules/thalidomide.pdb create mode 100644 hacks/images/molecules/thymine.pdb create mode 100644 hacks/images/molecules/viagra.pdb create mode 100644 hacks/images/molecules/vitaminb6.pdb create mode 100644 hacks/images/molecules/vitaminc.pdb create mode 100644 hacks/images/molecules/vx.pdb create mode 100644 hacks/images/noseguy/nose-f1.png create mode 100644 hacks/images/noseguy/nose-f2.png create mode 100644 hacks/images/noseguy/nose-f3.png create mode 100644 hacks/images/noseguy/nose-f4.png create mode 100644 hacks/images/noseguy/nose-l1.png create mode 100644 hacks/images/noseguy/nose-l2.png create mode 100644 hacks/images/noseguy/nose-r1.png create mode 100644 hacks/images/noseguy/nose-r2.png create mode 100644 hacks/images/osx_10_2.png create mode 100644 hacks/images/osx_10_3.png create mode 100644 hacks/images/pacman.png create mode 100644 hacks/images/ransomware.png create mode 100644 hacks/images/sball-bg.png create mode 100644 hacks/images/sball.png create mode 100644 hacks/images/scales.png create mode 100644 hacks/images/sclera.png create mode 100644 hacks/images/sea-texture.png create mode 100644 hacks/images/som.png create mode 100644 hacks/images/start.png create mode 100644 hacks/images/timetunnel0.png create mode 100644 hacks/images/timetunnel1.png create mode 100644 hacks/images/timetunnel2.png create mode 100644 hacks/images/toast.png create mode 100644 hacks/images/tree.png create mode 100644 hacks/images/tunnel0.png create mode 100644 hacks/images/tunnel1.png create mode 100644 hacks/images/tunnel2.png create mode 100644 hacks/images/tunnel3.png create mode 100644 hacks/images/tunnel4.png create mode 100644 hacks/images/tunnel5.png create mode 100644 hacks/images/tunnelstar.png create mode 100644 hacks/images/win10_spinner.gif create mode 100644 hacks/images/wood.png create mode 100644 hacks/images/wood2.png create mode 100644 hacks/imsmap.c create mode 100644 hacks/imsmap.man create mode 100644 hacks/interaggregate.c create mode 100644 hacks/interaggregate.man create mode 100644 hacks/interference.c create mode 100644 hacks/interference.man create mode 100644 hacks/intermomentary.c create mode 100644 hacks/intermomentary.man create mode 100644 hacks/juggle.c create mode 100644 hacks/juggle.man create mode 100644 hacks/julia.c create mode 100644 hacks/julia.man create mode 100644 hacks/kaleidescope.c create mode 100644 hacks/kaleidescope.man create mode 100644 hacks/kumppa.c create mode 100644 hacks/kumppa.man create mode 100644 hacks/laser.c create mode 100644 hacks/laser.man create mode 100644 hacks/lcdscrub.c create mode 100644 hacks/lcdscrub.man create mode 100644 hacks/lightning.c create mode 100644 hacks/lightning.man create mode 100644 hacks/link_axp.com create mode 100644 hacks/link_decc.com create mode 100644 hacks/lisa.c create mode 100644 hacks/lisa.man create mode 100644 hacks/lissie.c create mode 100644 hacks/lissie.man create mode 100755 hacks/ljlatest create mode 100644 hacks/ljlatest.man create mode 100644 hacks/lmorph.c create mode 100644 hacks/lmorph.man create mode 100644 hacks/loop.c create mode 100644 hacks/loop.man create mode 100644 hacks/m6502.c create mode 100755 hacks/m6502.sh create mode 100644 hacks/maze.c create mode 100644 hacks/maze.man create mode 100644 hacks/memscroller.c create mode 100644 hacks/memscroller.man create mode 100644 hacks/metaballs.c create mode 100644 hacks/metaballs.man create mode 100644 hacks/moire.c create mode 100644 hacks/moire.man create mode 100644 hacks/moire2.c create mode 100644 hacks/moire2.man create mode 100644 hacks/mountain.c create mode 100644 hacks/mountain.man create mode 100644 hacks/munch.c create mode 100644 hacks/munch.man create mode 100755 hacks/munge-ad.pl create mode 100644 hacks/nerverot.c create mode 100644 hacks/nerverot.man create mode 100644 hacks/noseguy.c create mode 100644 hacks/noseguy.man create mode 100644 hacks/pacman.c create mode 100644 hacks/pacman.h create mode 100644 hacks/pacman.man create mode 100644 hacks/pacman_ai.c create mode 100644 hacks/pacman_ai.h create mode 100644 hacks/pacman_level.c create mode 100644 hacks/pacman_level.h create mode 100644 hacks/pedal.c create mode 100644 hacks/pedal.man create mode 100644 hacks/penetrate.c create mode 100644 hacks/penetrate.man create mode 100644 hacks/penrose.c create mode 100644 hacks/penrose.man create mode 100644 hacks/petri.c create mode 100644 hacks/petri.man create mode 100644 hacks/phosphor.c create mode 100644 hacks/phosphor.man create mode 100644 hacks/piecewise.c create mode 100644 hacks/piecewise.man create mode 100644 hacks/polyominoes.c create mode 100644 hacks/polyominoes.man create mode 100644 hacks/pong.c create mode 100644 hacks/pong.man create mode 100644 hacks/popsquares.c create mode 100644 hacks/pyro.c create mode 100644 hacks/pyro.man create mode 100644 hacks/qix.c create mode 100644 hacks/qix.man create mode 100644 hacks/rd-bomb.c create mode 100644 hacks/rd-bomb.man create mode 100644 hacks/recanim.c create mode 100644 hacks/recanim.h create mode 100644 hacks/ripples.c create mode 100644 hacks/ripples.man create mode 100644 hacks/rocks.c create mode 100644 hacks/rocks.man create mode 100644 hacks/rorschach.c create mode 100644 hacks/rorschach.man create mode 100644 hacks/rotor.c create mode 100644 hacks/rotor.man create mode 100644 hacks/rotzoomer.c create mode 100644 hacks/rotzoomer.man create mode 100644 hacks/screenhack.c create mode 100644 hacks/screenhack.h create mode 100644 hacks/screenhackI.h create mode 100644 hacks/shadebobs.c create mode 100644 hacks/shadebobs.man create mode 100644 hacks/sierpinski.c create mode 100644 hacks/sierpinski.man create mode 100644 hacks/slidescreen.c create mode 100644 hacks/slidescreen.man create mode 100644 hacks/slip.c create mode 100644 hacks/slip.man create mode 100644 hacks/speedmine.c create mode 100644 hacks/speedmine.man create mode 100644 hacks/sphere.c create mode 100644 hacks/sphere.man create mode 100644 hacks/spiral.c create mode 100644 hacks/spiral.man create mode 100644 hacks/spotlight.c create mode 100644 hacks/spotlight.man create mode 100644 hacks/squiral.c create mode 100644 hacks/squiral.man create mode 100644 hacks/starfish.c create mode 100644 hacks/starfish.man create mode 100644 hacks/strange.c create mode 100644 hacks/strange.man create mode 100644 hacks/substrate.c create mode 100644 hacks/substrate.man create mode 100644 hacks/swirl.c create mode 100644 hacks/swirl.man create mode 100644 hacks/t3d.c create mode 100644 hacks/t3d.man create mode 100644 hacks/tessellimage.c create mode 100644 hacks/tessellimage.man create mode 100644 hacks/testx11.c create mode 100644 hacks/thornbird.c create mode 100644 hacks/thornbird.man create mode 100644 hacks/triangle.c create mode 100644 hacks/triangle.man create mode 100644 hacks/truchet.c create mode 100644 hacks/truchet.man create mode 100644 hacks/twang.c create mode 100644 hacks/twang.man create mode 100644 hacks/vermiculate.c create mode 100644 hacks/vermiculate.man create mode 100755 hacks/vidwhacker create mode 100644 hacks/vidwhacker.man create mode 100644 hacks/vines.c create mode 100644 hacks/vines.man create mode 100644 hacks/vms_axp.opt create mode 100644 hacks/vms_axp_12.opt create mode 100644 hacks/vms_decc.opt create mode 100644 hacks/vms_decc_12.opt create mode 100644 hacks/wander.c create mode 100644 hacks/wander.man create mode 100755 hacks/webcollage create mode 100644 hacks/webcollage-cocoa.m create mode 100644 hacks/webcollage-helper-cocoa.m create mode 100644 hacks/webcollage-helper.c create mode 100644 hacks/webcollage.man create mode 100644 hacks/whirlwindwarp.c create mode 100644 hacks/whirlwindwarp.man create mode 100644 hacks/whirlygig.c create mode 100644 hacks/whirlygig.man create mode 100644 hacks/worm.c create mode 100644 hacks/worm.man create mode 100644 hacks/wormhole.c create mode 100644 hacks/wormhole.man create mode 100644 hacks/xanalogtv.c create mode 100644 hacks/xanalogtv.man create mode 100644 hacks/xflame.c create mode 100644 hacks/xflame.man create mode 100644 hacks/ximage-loader.c create mode 100644 hacks/ximage-loader.h create mode 100644 hacks/xjack.c create mode 100644 hacks/xjack.man create mode 100644 hacks/xlockmore.c create mode 100644 hacks/xlockmore.h create mode 100644 hacks/xlockmoreI.h create mode 100644 hacks/xlyap.c create mode 100644 hacks/xlyap.man create mode 100644 hacks/xmatrix.c create mode 100644 hacks/xmatrix.man create mode 100755 hacks/xml2man.pl create mode 100644 hacks/xrayswarm.c create mode 100644 hacks/xrayswarm.man create mode 100644 hacks/xscreensaver-sgigl.c create mode 100644 hacks/xspirograph.c create mode 100644 hacks/xspirograph.man create mode 100644 hacks/xsublim.c create mode 100644 hacks/xsublim.man create mode 100644 hacks/zoom.c create mode 100644 hacks/zoom.man create mode 100644 install-sh create mode 100644 intltool-extract.in create mode 100644 intltool-merge.in create mode 100644 intltool-update.in create mode 100644 jwxyz/Makefile.in create mode 100644 jwxyz/README create mode 100644 jwxyz/jwxyz-android.c create mode 100644 jwxyz/jwxyz-android.h create mode 100644 jwxyz/jwxyz-cocoa.h create mode 100644 jwxyz/jwxyz-cocoa.m create mode 100644 jwxyz/jwxyz-common.c create mode 100644 jwxyz/jwxyz-gl.c create mode 100644 jwxyz/jwxyz-image.c create mode 100644 jwxyz/jwxyz-timers.c create mode 100644 jwxyz/jwxyz-timers.h create mode 100644 jwxyz/jwxyz.h create mode 100644 jwxyz/jwxyz.m create mode 100644 jwxyz/jwxyzI.h create mode 100644 jwxyz/jwzgles.c create mode 100644 jwxyz/jwzgles.h create mode 100644 jwxyz/jwzglesI.h create mode 100644 makevms.com create mode 100644 po/ChangeLog create mode 100644 po/Makefile.in.in create mode 100644 po/POTFILES.in create mode 100644 po/da.po create mode 100644 po/de.po create mode 100644 po/es.po create mode 100644 po/et.po create mode 100644 po/fi.po create mode 100644 po/fr.po create mode 100644 po/hu.po create mode 100644 po/it.po create mode 100644 po/ja.po create mode 100644 po/ko.po create mode 100644 po/nb.po create mode 100644 po/nl.po create mode 100644 po/pl.po create mode 100644 po/pt.po create mode 100644 po/pt_BR.po create mode 100644 po/ru.po create mode 100644 po/sk.po create mode 100644 po/sv.po create mode 100755 po/update.sh create mode 100644 po/vi.po create mode 100644 po/wa.po create mode 100644 po/zh_CN.po create mode 100644 po/zh_TW.po create mode 100644 setup.com create mode 100644 utils/Makefile.in create mode 100644 utils/README create mode 100755 utils/ad2c create mode 100644 utils/aligned_malloc.c create mode 100644 utils/aligned_malloc.h create mode 100644 utils/alpha.c create mode 100644 utils/alpha.h create mode 100644 utils/async_netdb.c create mode 100644 utils/async_netdb.h create mode 100755 utils/bin2c create mode 100644 utils/colorbars.c create mode 100644 utils/colorbars.h create mode 100644 utils/colors.c create mode 100644 utils/colors.h create mode 100644 utils/compile_axp.com create mode 100644 utils/compile_decc.com create mode 100644 utils/erase.c create mode 100644 utils/erase.h create mode 100644 utils/fade.c create mode 100644 utils/fade.h create mode 100644 utils/font-retry.c create mode 100644 utils/font-retry.h create mode 100644 utils/grabclient.c create mode 100644 utils/grabscreen.c create mode 100644 utils/grabscreen.h create mode 100644 utils/hsv.c create mode 100644 utils/hsv.h create mode 100644 utils/images/logo-180.gif create mode 100644 utils/images/logo-180.xpm create mode 100644 utils/images/logo-50.gif create mode 100644 utils/images/logo-50.xpm create mode 100644 utils/images/logo-big.gif create mode 100644 utils/images/logo.eps create mode 100644 utils/images/screensaver-cmndln.png create mode 100644 utils/images/screensaver-colorselector.png create mode 100644 utils/images/screensaver-diagnostic.png create mode 100644 utils/images/screensaver-locking.png create mode 100644 utils/images/screensaver-power.png create mode 100644 utils/images/screensaver-snap.png create mode 100644 utils/logo.c create mode 100644 utils/minixpm.c create mode 100644 utils/minixpm.h create mode 100644 utils/overlay.c create mode 100644 utils/pow2.c create mode 100644 utils/pow2.h create mode 100644 utils/resources.c create mode 100644 utils/resources.h create mode 100644 utils/spline.c create mode 100644 utils/spline.h create mode 100644 utils/textclient-mobile.c create mode 100644 utils/textclient.c create mode 100644 utils/textclient.h create mode 100644 utils/thread_util.c create mode 100644 utils/thread_util.h create mode 100644 utils/usleep.c create mode 100644 utils/usleep.h create mode 100644 utils/utf8wc.c create mode 100644 utils/utf8wc.h create mode 100644 utils/utils.h create mode 100644 utils/version.h create mode 100644 utils/visual-gl.c create mode 100644 utils/visual.c create mode 100644 utils/visual.h create mode 100644 utils/vms-gtod.c create mode 100644 utils/vms-gtod.h create mode 100644 utils/vms-strdup.c create mode 100644 utils/vroot.h create mode 100644 utils/xdbe.c create mode 100644 utils/xdbe.h create mode 100644 utils/xft.c create mode 100644 utils/xft.h create mode 100644 utils/xmu.c create mode 100644 utils/xmu.h create mode 100644 utils/xscreensaver-intl.h create mode 100644 utils/xshm.c create mode 100644 utils/xshm.h create mode 100644 utils/yarandom.c create mode 100644 utils/yarandom.h create mode 100644 xscreensaver.spec diff --git a/INSTALL b/INSTALL new file mode 100644 index 00000000..50dbe439 --- /dev/null +++ b/INSTALL @@ -0,0 +1,183 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. + diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 00000000..a9486814 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,357 @@ +# Makefile.in --- xscreensaver, Copyright (c) 1999-2014 Jamie Zawinski. +# the `../configure' script generates `Makefile' from this file. + +@SET_MAKE@ +srcdir = @srcdir@ +VPATH = @srcdir@ + +SHELL = /bin/sh +SUBDIRS = utils jwxyz hacks/images hacks hacks/glx driver po +SUBDIRS2 = $(SUBDIRS) OSX android +TARFILES = README README.hacking README.VMS INSTALL \ + configure configure.in Makefile.in config.h.in \ + config.h-vms install-sh setup.com config.guess aclocal.m4 \ + ax_pthread.m4 config.sub makevms.com \ + intltool-merge.in intltool-extract.in intltool-update.in \ + xscreensaver.spec \ + OSX/xscreensaver.xcodeproj/project.pbxproj + +TAR = tar + +MAKE_SUBDIR = for dir in $(SUBDIRS); do (cd $$dir; $(MAKE) $@) || exit 5; done +MAKE_SUBDIR2 = for dir in $(SUBDIRS2); do (cd $$dir; $(MAKE) $@) || exit 5; done + +default:: + @+$(MAKE_SUBDIR) +all:: + @+$(MAKE_SUBDIR) +install:: + @+$(MAKE_SUBDIR) +install-program:: + @+$(MAKE_SUBDIR) +install-man:: + @+$(MAKE_SUBDIR) +install-strip:: + @+$(MAKE_SUBDIR) +uninstall:: + @$(MAKE_SUBDIR) +uninstall-program:: + @$(MAKE_SUBDIR) +uninstall-man:: + @$(MAKE_SUBDIR) +depend:: + @$(MAKE_SUBDIR) +distdepend:: + @$(MAKE) update_spec_version + @$(MAKE_SUBDIR2) + @cd po ; $(MAKE) update-po + +TAGS:: tags +tags:: + @$(MAKE_SUBDIR) + +clean:: + @$(MAKE_SUBDIR2) + +distclean:: clean + -rm -f config.h Makefile config.status config.cache config.log TAGS *~ "#"* intltool-extract intltool-merge intltool-update + @$(MAKE_SUBDIR2) + +dist:: tar + +# This really makes me sick... +tar:: + @ \ + sh config.status ; \ + rm -f configure ; \ + $(MAKE) configure ; \ + $(MAKE) version-date distdepend ; \ + VERS=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' utils/version.h` ; \ + NAME="xscreensaver-$$VERS" ; \ + rm -rf $$NAME ; ln -s . $$NAME ; \ + FILES= ; \ + ADIR=archive/ ; \ + for subdir in $(SUBDIRS2) ; do \ + d=`pwd` ; \ + cd $$subdir ; \ + FILES="$$FILES `$(MAKE) echo_tarfiles \ + | grep -v '^.*make\[' \ + | sed \"s|^|$$subdir/|g;s| | $$subdir/|g\" \ + ` "; \ + cd $$d ; done ; \ + echo creating tar file $$ADIR$$NAME.tar.gz... ; \ + export COPYFILE_DISABLE=true ; \ + GZIP="-9v" $(TAR) -vczf $$ADIR$$NAME.tar.gz \ + `echo $(TARFILES) $$FILES | sed "s|^|$$NAME/|g; s| | $$NAME/|g" ` ; \ + rm $$NAME + + +# This also makes me sick... +# autoconf generates a configure script that begins with a very hard to read, +# nearly impossible to customize --help blurb. This horrid set of regexps +# go through and clean up the help text, by inserting whitespace and ripping +# out options we don't use. Odds are good that this will fail with any version +# of autoconf other than the ones I've tried (2.12 and 2.13.) +# +configure:: + aclocal + autoconf + autoheader + @TMP=configure.$$$$ ; \ + echo "munging configure's --help message..." ; \ + ( perl -e ' \ + my $$file=""; \ + while (<>) { $$file .= $$_; } \ + $$_ = $$file; \ + \ + s/^(Configuration:)$$/\n$$1\n/m; \ + s/^(Directory and file names:)$$/\n$$1\n/m; \ + s/^ --sbindir=.*\n//m; \ + s/^ --sysconfdir.*\n//m; \ + s/^ --sharedstatedir.*\n.*\n//m; \ + s/^ --localstatedir.*\n//m; \ + s/^ --infodir.*\n//m; \ + s/^(Host type:)$$/\n$$1\n/m; \ + s/\nFeatures and packages:\n.*library files are in DIR\n/\n/s;\ + s/--enable and --with options recognized://m; \ + s/\n --with-x .*?(["\n])/$$1/s; \ + s/\n(Installation options:\n)/$$1/s; \ + \ + s/^ --oldincludedir=.*$$/ \ + --x-includes=DIR X include files are in DIR\n \ + --x-libraries=DIR X library files are in DIR/m; \ + \ + s@mandir=.\$$\{prefix}/man.@mandir=\\\$${datadir}/man@; \ + \ + s@rm -f conftest@rm -rf conftest@g; \ + \ + print;' \ + < configure \ + > $$TMP && \ + cat $$TMP > configure ) ; \ + rm -f $$TMP + +bump-version:: + @ \ + SRC=utils/version.h ; \ + VERS=`sed -n 's/[^0-9]*\([0-9]\)\.\([0-9][^. ]*\).*/\1 \2/p' $$SRC` ; \ + set - $$VERS ; \ + MAJOR="$$1"; MINOR="$$2"; \ + NEW=`echo $$MINOR + 1 | bc` ; \ + NEW=`echo $$NEW | sed 's/^\([0-9]\)$$/0\1/'` ; \ + D=`date '+%d-%b-%Y'`; \ + ADIR=archive/ ; \ + if [ ! -f $${ADIR}xscreensaver-$$MAJOR.$$MINOR.tar.gz ]; then \ + echo "WARNING: $${ADIR}xscreensaver-$$MAJOR.$$MINOR.tar.gz does not exist.";\ + fi ; \ + if [ -f $${ADIR}xscreensaver-$$MAJOR.$$NEW.tar.gz ]; then \ + echo "WARNING: $${ADIR}xscreensaver-$$MAJOR.$$NEW.tar.gz already exists.";\ + fi ; \ + /bin/echo -n "Bumping $$MAJOR.$$MINOR to $$MAJOR.$$NEW ($$D), ok? "; \ + read line; \ + if [ "x$$line" != "xyes" -a "x$$line" != "xy" ]; then \ + exit 1 ; \ + fi ; \ + TMP=/tmp/bv.$$ ; \ + sed -e "s/\([0-9]\.[0-9][0-9]*\)/$$MAJOR.$$NEW/" \ + -e "s/\(([0-9][0-9]*-[A-Za-z][a-z][a-z]-[0-9][0-9][0-9]*\))/($$D)/" \ + $$SRC > $$TMP ; \ + /bin/echo -n "New version and date are "; \ + sed -n "s/[^0-9]*\([0-9]\.[0-9][0-9]*\) (\([-A-Za-z0-9]*\)).*/\1, \2./p" \ + $$TMP; \ + cat $$TMP > $$SRC ; \ + rm -f $$TMP; \ + echo "overwrote $$SRC"; \ + ls -lFd $$SRC + +bump_version:: bump-version +tick-version:: bump-version +tick_version:: bump-version + +version-date:: + @ \ + SRC=utils/version.h ; \ + D=`date '+%d-%b-%Y'`; \ + TMP=/tmp/bv.$$ ; \ + sed -e "s/([0-9][^()]*)/($$D)/" < $$SRC > $$TMP ; \ + /bin/echo -n "Updating date in $$SRC to \"$$D\"... " ; \ + if cmp -s $$SRC $$TMP ; then \ + echo "unchanged." ; \ + else \ + cat $$TMP > $$SRC ; \ + echo "done." ; \ + fi ; \ + rm -f $$TMP + + +update_spec_version:: + @S=$(srcdir)/xscreensaver.spec ; \ + U=$(srcdir)/utils/version.h ; \ + VERS=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' < $$U` ; \ + /bin/echo -n "Updating $$S to \"$$VERS\"... " ; \ + T=/tmp/xs.$$$$ ; \ + sed "s/^\(%define.version[^0-9]*\)\(.*\)/\1$$VERS/" \ + < $$S > $$T ; \ + if cmp -s $$S $$T ; then \ + echo "unchanged." ; \ + else \ + cat $$T > $$S ; \ + echo "done." ; \ + fi ; \ + rm $$T + +rpm:: + @ \ + VERS=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' utils/version.h` ; \ + DIR=`pwd`/rpm_build ; \ + ARCH=`rpm --showrc | sed -n 's/^build arch *: //p'` ; \ + ADIR=archive/ ; \ + TGZ=xscreensaver-$$VERS.tar.gz ; \ + if [ ! -f $${ADIR}$$TGZ ]; then \ + echo "$${ADIR}$$TGZ does not exist! Did you forget to \`make tar'?" ; \ + exit 1 ; \ + fi ; \ + rm -rf /var/tmp/xscreensaver-$$VERS-root ; \ + rm -rf $$DIR ; \ + mkdir $$DIR ; \ + ( cd $$DIR; mkdir BUILD RPMS RPMS/$$ARCH SOURCES SPECS SRPMS ) ; \ + cp -p $${ADIR}$$TGZ $$DIR/SOURCES/ ; \ + rpmbuild --define "_topdir $$DIR" \ + --define "USE_GL yes" \ + -v -ba xscreensaver.spec ; \ + echo '' ; \ + echo 'RPM build complete' ; \ + echo '' ; \ + rm -f $$DIR/$$TGZ ; \ + rm -rf $$DIR/BUILD/xscreensaver-$$VERS ; \ + mv $$DIR/SRPMS/xscreensaver*-$$VERS-*.rpm . ; \ + mv $$DIR/RPMS/$$ARCH/xscreensaver*-$$VERS-*.rpm . ; \ + rm -rf $$DIR ; \ + echo '' ; \ + ls -lFG xscreensaver*-$$VERS-*.rpm + +dmg:: + $(MAKE) -C OSX release dmg +apk:: + $(MAKE) -C android apk + +www:: + @ \ + DEST=$$HOME/www/xscreensaver ; \ + VERS=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' utils/version.h` ; \ + HEAD="xscreensaver-$$VERS" ; \ + ADIR=archive/ ; \ + BNAME="$$HEAD.tar.gz" ; \ + NAME="$$ADIR$$BNAME" ; \ + DNAME="$$DEST/$$HEAD.tar.gz" ; \ + BNAME2="$$HEAD.dmg" ; \ + NAME2="$$ADIR$$BNAME2" ; \ + DNAME2="$$DEST/$$HEAD.dmg" ; \ + BNAME3="$$HEAD.apk" ; \ + NAME3="$$ADIR$$BNAME3" ; \ + DNAME3="$$DEST/$$HEAD.apk" ; \ + \ + if ! git diff --quiet ; then \ + echo "uncommitted changes exist!" ; \ + exit 1 ; \ + fi ; \ + \ + $(MAKE) -C OSX updates.xml ; \ + \ + if [ ! -f $$NAME ]; then \ + echo "$$NAME does not exist! Did you forget to \`make tar'?" ; \ + exit 1 ; \ + fi ; \ + if [ ! -f $$NAME2 ]; then \ + echo "$$NAME2 does not exist! Did you forget to \`make dmg'?" ; \ + exit 1 ; \ + fi ; \ + if [ ! -f $$NAME3 ]; then \ + echo "$$NAME3 does not exist! Did you forget to \`make apk'?" ; \ + exit 1 ; \ + fi ; \ + chmod a-w $$NAME ; \ + if [ -f $$DNAME ]; then \ + /bin/echo -n "WARNING: $$DNAME already exists! Overwrite? "; \ + read line; \ + if [ "x$$line" != "xyes" -a "x$$line" != "xy" ]; then \ + exit 1 ; \ + fi ; \ + fi ; \ + if [ -f $$DNAME2 ]; then \ + /bin/echo -n "WARNING: $$DNAME2 already exists! Overwrite? "; \ + read line; \ + if [ "x$$line" != "xyes" -a "x$$line" != "xy" ]; then \ + exit 1 ; \ + fi ; \ + fi ; \ + if [ -f $$DNAME3 ]; then \ + /bin/echo -n "WARNING: $$DNAME3 already exists! Overwrite? "; \ + read line; \ + if [ "x$$line" != "xyes" -a "x$$line" != "xy" ]; then \ + exit 1 ; \ + fi ; \ + fi ; \ + \ + git tag -a "v$$VERS" -m "$$VERS" ; \ + git commit -m "$$VERS" . ; \ + \ + ( cd $$DEST ; git pull ) ; \ + \ + cp -p $$NAME $$DNAME ; \ + cp -p $$NAME2 $$DNAME2 ; \ + cp -p $$NAME3 $$DNAME3 ; \ + chmod u+w $$DNAME $$DNAME2 $$DNAME3 ; \ + cp -p OSX/updates.xml $$DEST ; \ + cd $$DEST ; \ + \ + TMP=/tmp/xd.$$$$ ; \ + sed "s/xscreensaver-5\.[0-9][0-9ab]*/$$HEAD/g" download.html > $$TMP ; \ + echo '' ; \ + diff -U0 download.html $$TMP ; \ + echo '' ; \ + \ + for EXT in tar.gz dmg ; do \ + OLDEST=`ls xscreensaver*.$$EXT | \ + fgrep -v 5.14 | \ + fgrep -v 5.34 | \ + head -n 1` ; \ + /bin/echo -n "Delete $$DEST/$$OLDEST? "; \ + read line; \ + if [ "x$$line" = "xyes" -o "x$$line" = "xy" ]; then \ + set -x ; \ + rm $$OLDEST ; \ + git rm $$OLDEST ; \ + set +x ; \ + fi ; \ + done ; \ + set -x ; \ + cat $$TMP > download.html ; \ + rm -f $$TMP ; \ + \ + git add $$BNAME $$BNAME2 $$BNAME3 ; \ + \ + $(MAKE) -C ../ xscreensaver/changelog.html xscreensaver/screenshots/index.html; \ + git diff changelog.html ; \ + set +x ; \ + \ + /bin/echo -n "Ok? "; \ + read line; \ + if [ "x$$line" != "xyes" -a "x$$line" != "xy" ]; then \ + exit 1 ; \ + fi ; \ + \ + git tag -a "v$$VERS" -m "$$VERS" ; \ + git commit -m "$$VERS" . ; \ + git push ; \ + + +count:: + @ \ + /bin/echo -n "Current hack count: " ; \ + ( ( cd hacks; make -s INSTALL=true install-program install-scripts ) ; \ + ( cd hacks/glx; make -s INSTALL=true install-program ) ) | \ + grep true | \ + grep -v helper | \ + grep -v ljlatest | \ + wc -l diff --git a/OSX/English.lproj/InfoPlist.strings b/OSX/English.lproj/InfoPlist.strings new file mode 100644 index 0000000000000000000000000000000000000000..dea12de4cad936a6204d4da70d2ca96aef900b31 GIT binary patch literal 92 zcmW-Z!3uyN5C!M#S9tbN-x2r|Q3;V~qzLu#)x*oq?lA28G2*azG7B@2orjH8u89{# bCX+-f2F*!V&^~bXzEEWk)pxI)ej3aVcM}l{ literal 0 HcmV?d00001 diff --git a/OSX/English.lproj/SaverRunner.nib/designable.nib b/OSX/English.lproj/SaverRunner.nib/designable.nib new file mode 100644 index 00000000..1facee5e --- /dev/null +++ b/OSX/English.lproj/SaverRunner.nib/designable.nib @@ -0,0 +1,1790 @@ + + + + 1050 + 10K549 + 851 + 1038.36 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 851 + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + + NSApplication + + + + FirstResponder + + + NSApplication + + + MainMenu + + + + XScreenSaver + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + XScreenSaver + + + + About XScreenSaver + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + YES + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + + Services + + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide XScreenSaver + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit XScreenSaver + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + + File + + + + + Close + w + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup… + P + 1048576 + 2147483647 + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + + Edit + + + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Paste and Match Style + V + 1572864 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + + Find + + + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1048576 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling + + 1048576 + 2147483647 + + + submenuAction: + + Spelling + + + + Spelling… + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling as You Type + + 1048576 + 2147483647 + + + + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + + Window + + + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + Help + + + + YES + XScreenSaver Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + SaverRunner + + + + + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + showHelp: + + + + 122 + + + + terminate: + + + + 139 + + + + hideOtherApplications: + + + + 146 + + + + hide: + + + + 152 + + + + unhideAllApplications: + + + + 153 + + + + cut: + + + + 175 + + + + paste: + + + + 176 + + + + redo: + + + + 178 + + + + selectAll: + + + + 179 + + + + undo: + + + + 180 + + + + copy: + + + + 181 + + + + showGuessPanel: + + + + 188 + + + + checkSpelling: + + + + 190 + + + + toggleContinuousSpellChecking: + + + + 192 + + + + performClose: + + + + 193 + + + + delete: + + + + 195 + + + + performZoom: + + + + 198 + + + + performFindPanelAction: + + + + 199 + + + + performFindPanelAction: + + + + 200 + + + + performFindPanelAction: + + + + 201 + + + + performFindPanelAction: + + + + 202 + + + + centerSelectionInVisibleArea: + + + + 203 + + + + pasteAsPlainText: + + + + 205 + + + + delegate + + + + 207 + + + + menubar + + + + 209 + + + + openPreferences: + + + + 212 + + + + aboutPanel: + + + + 213 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + + + + + + + + MainMenu + + + 19 + + + + + + + + 24 + + + + + + + + + + + 5 + + + + + 23 + + + + + 92 + + + + + 197 + + + + + 56 + + + + + + + + 57 + + + + + + + + + + + + + + + + + + 58 + + + + + 129 + + + + + 131 + + + + + + + + 130 + + + + + 134 + + + + + 136 + + + + + 143 + + + + + 144 + + + + + 145 + + + + + 149 + + + + + 150 + + + + + 196 + + + + + 83 + + + + + + + + 81 + + + + + + + + + + + 73 + + + + + 74 + + + + + 77 + + + + + 78 + + + + + 103 + + + + + + + + 106 + + + + + + + + 111 + + + + + 163 + + + + + + + + 169 + + + + + + + + + + + + + + + + + + + 156 + + + + + 157 + + + + + 158 + + + + + 160 + + + + + 164 + + + + + 168 + + + + + + + + 159 + + + + + + + + + + + + 154 + + + + + 155 + + + + + 161 + + + + + 162 + + + + + 167 + + + + + 171 + + + + + 172 + + + + + 173 + + + + + 174 + + + + + 184 + + + + + + + + 185 + + + + + + + + + + 187 + + + + + 189 + + + + + 191 + + + + + 204 + + + + + 206 + + + SaverRunner + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{72, 1365}, {344, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{84, 1182}, {225, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + + 213 + + + + + SaverRunner + NSObject + + id + id + + + + aboutPanel: + id + + + openPreferences: + id + + + + menubar + NSMenu + + + menubar + + menubar + NSMenu + + + + IBProjectSource + OSX/SaverRunner.h + + + + + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSApplicationScripting.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSColorPanel.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSHelpManager.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSPageLayout.h + + + + NSBrowser + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSBrowser.h + + + + NSControl + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSDocument + NSObject + + id + id + id + id + id + id + + + + printDocument: + id + + + revertDocumentToSaved: + id + + + runPageLayout: + id + + + saveDocument: + id + + + saveDocumentAs: + id + + + saveDocumentTo: + id + + + + IBFrameworkSource + AppKit.framework/Headers/NSDocument.h + + + + NSDocument + + IBFrameworkSource + AppKit.framework/Headers/NSDocumentScripting.h + + + + NSMatrix + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSMatrix.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSMenuItem + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSMovieView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSMovieView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSAccessibility.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSAlert.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSAnimation.h + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSComboBox.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSComboBoxCell.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDatePickerCell.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDragging.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDrawer.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontManager.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontPanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSImage.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSKeyValueBinding.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSNibLoading.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSOutlineView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSPasteboard.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSavePanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSound.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSpeechRecognizer.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSpeechSynthesizer.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSplitView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTabView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSText.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTextStorage.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTextView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTokenField.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTokenFieldCell.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbar.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbarItem.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSInterfaceStyle.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSTableView + NSControl + + + + NSText + NSView + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSClipView.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSRulerView.h + + + + NSView + NSResponder + + + + NSWindow + + + + NSWindow + NSResponder + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSWindowScripting.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + YES + ../../xscreensaver.xcodeproj + 3 + + {9, 8} + {7, 2} + + + diff --git a/OSX/English.lproj/SaverRunner.nib/keyedobjects.nib b/OSX/English.lproj/SaverRunner.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..96d6891c19180e3ef02fa68453004348827e9178 GIT binary patch literal 13707 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 + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * This is a subclass of NSSlider that is flipped horizontally: + * the high value is on the left and the low value is on the right. + */ + +#ifdef USE_IPHONE +# import +# define NSSlider UISlider +# define NSRect CGRect +# define minValue minimumValue +# define maxValue maximumValue +#else +# import +#endif + +@interface InvertedSlider : NSSlider +{ + BOOL inverted; + BOOL integers; +} + +- (id) initWithFrame:(NSRect)r inverted:(BOOL)_inv integers:(BOOL)_int; + +# ifdef USE_IPHONE +- (double) transformedValue; +- (void) setTransformedValue:(double)v; +# endif + +@end diff --git a/OSX/InvertedSlider.m b/OSX/InvertedSlider.m new file mode 100644 index 00000000..6ac0b419 --- /dev/null +++ b/OSX/InvertedSlider.m @@ -0,0 +1,151 @@ +/* xscreensaver, Copyright (c) 2006-2015 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + * + * This is a subclass of NSSlider that is flipped horizontally: + * the high value is on the left and the low value is on the right. + */ + +#import "InvertedSlider.h" + +@implementation InvertedSlider + +- (id) initWithFrame:(NSRect)r +{ + self = [super initWithFrame:r]; + if (! self) return 0; + inverted = YES; + integers = NO; + return self; +} + +- (id) initWithFrame:(NSRect)r inverted:(BOOL)_inv integers:(BOOL)_int +{ + self = [self initWithFrame:r]; + inverted = _inv; + integers = _int; + return self; +} + + +-(double) transformValue:(double) value +{ + double v2 = (integers + ? (int) (value + (value < 0 ? -0.5 : 0.5)) + : value); + double low = [self minValue]; + double high = [self maxValue]; + double range = high - low; + double off = v2 - low; + if (inverted) + v2 = low + (range - off); + // NSLog (@" ... %.1f -> %.1f [%.1f - %.1f]", value, v2, low, high); + return v2; +} + +#ifndef USE_IPHONE + +/* On MacOS, we have to transform the value on every entry and exit point + to this class. So, we implement doubleValue and setDoubleValue to + transform the value; and we then have to re-implement every getter and + setter in terms of those. There's no way to simply change how the + slider is displayed without mucking with the value inside of it. + */ + +-(double) doubleValue +{ + return [self transformValue:[super doubleValue]]; +} + +-(void) setDoubleValue:(double)v +{ + return [super setDoubleValue:[self transformValue:v]]; +} + +-(float)floatValue { return (float) [self doubleValue]; } +-(int)intValue { return (int) [self doubleValue]; } +-(NSInteger)integerValue { return (NSInteger) [self doubleValue]; } +-(id)objectValue { return [NSNumber numberWithDouble:[self doubleValue]]; } + +-(NSString *)stringValue +{ + if (integers) + return [NSString stringWithFormat:@"%d", [self intValue]]; + else + return [NSString stringWithFormat:@"%f", [self doubleValue]]; +} + +- (NSAttributedString *)attributedStringValue; +{ + return [[[NSAttributedString alloc] initWithString:[self stringValue]] + autorelease]; +} + +-(void)setFloatValue:(float)v { [self setDoubleValue: (double) v]; } +-(void)setIntValue: (int)v { [self setDoubleValue: (double) v]; } +-(void)setIntegerValue:(NSInteger)v { [self setDoubleValue: (double) v]; } +-(void)setStringValue:(NSString *)v { [self setDoubleValue: [v doubleValue]]; } +-(void)takeIntValueFrom:(id)f { [self setIntValue: [f intValue]]; } +-(void)takeFloatValueFrom:(id)f { [self setFloatValue: [f floatValue]]; } +-(void)takeDoubleValueFrom:(id)f { [self setDoubleValue: [f doubleValue]]; } +-(void)takeStringValueFrom:(id)f { [self setStringValue: [f stringValue]]; } +-(void)takeObjectValueFrom:(id)f { [self setObjectValue: [f objectValue]]; } +-(void)takeIntegerValueFrom:(id)f { [self setIntegerValue:[f integerValue]];} +-(void) setAttributedStringValue:(NSAttributedString *)v { + [self setStringValue:[v string]]; +} + +-(void) setObjectValue:(id )v +{ + NSAssert2((v == nil) || + [(NSObject *) v respondsToSelector:@selector(doubleValue)], + @"argument %@ to %s does not respond to doubleValue", + v, __PRETTY_FUNCTION__); + [self setDoubleValue:[((NSNumber *) v) doubleValue]]; +} + +#else // USE_IPHONE + +/* On iOS, we have control over how the value is displayed, but there's no + way to transform the value on input and output: if we wrap 'value' and + 'setValue' analagously to what we do on MacOS, things fail in weird + ways. Presumably some parts of the system are accessing the value + instance variable directly instead of going through the methods. + + So the only way around this is to enforce that all of our calls into + this object use a new API: 'transformedValue' and 'setTransformedValue'. + The code in XScreenSaverConfigSheet uses that instead. + */ + +- (CGRect)thumbRectForBounds:(CGRect)bounds + trackRect:(CGRect)rect + value:(float)value +{ + CGRect thumb = [super thumbRectForBounds: bounds + trackRect: rect + value: [self transformValue:value]]; + if (inverted) + thumb.origin.x = rect.size.width - thumb.origin.x - thumb.size.width; + return thumb; +} + +-(double) transformedValue +{ + return [self transformValue: [self value]]; +} + +-(void) setTransformedValue:(double)v +{ + [self setValue: [self transformValue: v]]; +} + +#endif // USE_IPHONE + + +@end diff --git a/OSX/LaunchScreen.xib b/OSX/LaunchScreen.xib new file mode 100644 index 00000000..731d86e2 --- /dev/null +++ b/OSX/LaunchScreen.xib @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/OSX/Makefile b/OSX/Makefile new file mode 100644 index 00000000..373df6b2 --- /dev/null +++ b/OSX/Makefile @@ -0,0 +1,436 @@ +# XScreenSaver for MacOS X, Copyright (c) 2006-2015 by Jamie Zawinski. + +XCODE_APP = /Applications/Xcode.app + +# To build savers that will run on MacOS 10.6 and 10.7, Xcode 5.0.2 must +# be used (as that's the latest version of Xcode that ships with a version +# of clang that implements "-fobjc-gc"). However, Xcode 5.0.2 will not +# launch on MacOS 10.11 or later. +# +# XCODE_APP = /Applications/Xcode-5.0.2.app + +TARGETS = All Savers +#ARCH = -arch i386 -arch x86_64 ONLY_ACTIVE_ARCH=NO +CERT = 'Developer ID Installer: Jamie Zawinski (4627ATJELP)' +PKGID = org.jwz.xscreensaver +THUMBDIR = build/screenshots +XCODEBUILD = $(XCODE_APP)/Contents/Developer/usr/bin/xcodebuild +SETFILE = $(XCODE_APP)/Contents/Developer/Tools/SetFile +SETICON = ./seticon.pl + +default: release +all: debug release + +clean: + -rm -rf build +# $(XCODEBUILD) -target "$(TARGETS)" clean + +distclean: + -rm -f config.status config.cache config.log \ + *.bak *.rej TAGS *~ "#"* + -rm -rf autom4te*.cache + -rm -rf build Sparkle.framework + +distdepend:: Sparkle.framework +distdepend:: update_plist_version + +debug: distdepend + $(XCODEBUILD) $(ARCH) -target "$(TARGETS)" -configuration Debug build + +release:: distdepend + $(XCODEBUILD) $(ARCH) -target "$(TARGETS)" -configuration Release build + +release:: check_versions + +Sparkle.framework: + unzip ../archive/Sparkle.framework-2013-12-04.zip + +# Download and resize images from jwz.org. +# This saves us having to include 4MB of images in the tar file +# that will only be used by a vast minority of people building +# from source. +# update-info-plist.pl runs this as needed. +# Might be better to do this with curl, since that is installed by default. + +BASE = xscreensaver/screenshots/ +URL = https://www.jwz.org/$(BASE) +WGET = wget -q -U xscreensaver-build-osx +CVT = -thumbnail '200x150^' -gravity center -extent 200x150 \ + \( +clone -alpha extract \ + -draw 'fill black polygon 0,0 0,6 6,0 fill white circle 6,6 6,0' \ + \( +clone -flip \) -compose Multiply -composite \ + \( +clone -flop \) -compose Multiply -composite \ + \) -alpha off -compose CopyOpacity -composite \ + -colorspace sRGB \ + -strip \ + -quality 95 \ + +dither -colors 128 + +$(THUMBDIR)/%.png: + @\ + FILE1=`echo "$@" | sed 's!^.*/\([^/]*\)\.png$$!\1.jpg!'` ; \ + FILE2="$@" ; \ + TMP="$$FILE2".tmp ; \ + URL="$(URL)$$FILE1" ; \ + URL2="$(URL)retired/$$FILE1" ; \ + if [ ! -d $(THUMBDIR) ]; then mkdir -p $(THUMBDIR) ; fi ; \ + rm -f "$$FILE2" "$$TMP" ; \ + set +e ; \ + if [ -f "$$HOME/www/$(BASE)/$$FILE1" ]; then \ + cp -p "$$HOME/www/$(BASE)/$$FILE1" "$$TMP" ; \ + else \ + echo "downloading $$URL..." ; \ + $(WGET) -O"$$TMP" "$$URL" ; \ + if [ ! -s "$$TMP" ]; then \ + echo "downloading $$URL2..." ; \ + $(WGET) -O"$$TMP" "$$URL2" ; \ + fi ; \ + if [ ! -s "$$TMP" ]; then \ + rm -f "$$TMP" ; \ + echo "failed: $$URL" ; \ + exit 1 ; \ + fi ; \ + fi ; \ + rm -f "$$FILE2" ; \ + convert jpg:- $(CVT) "$$FILE2" < "$$TMP" ; \ + if [ ! -s "$$FILE2" ]; then \ + echo "$$FILE2 failed" >&2 ; \ + rm -f "$$FILE2" "$$TMP" ; \ + exit 1 ; \ + else \ + rm -f "$$TMP" ; \ + fi + + +check_versions: + @\ + SRC=../utils/version.h ; \ + V=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' $$SRC` ; \ + DIR=build/Release ; \ + RESULT=0 ; \ + for S in $$DIR/*.{saver,app} ; do \ + for P in $$S/Contents/Info.plist ; do \ + V2=`plutil -convert xml1 -o - "$$P" | \ + perl -0000 -n -e \ + 'm@CFBundleVersion\s*(.*?)@si \ + && print $$1'` ; \ + if [ "$$V2" != "$$V" ] ; then \ + echo "Wrong version: $$S ($$V2)" ; \ + RESULT=1 ; \ + fi ; \ + done ; \ + done ; \ + if [ "$$RESULT" = 0 ]; then echo "Versions match ($$V2)" ; fi ; \ + exit $$RESULT + + +check_gc: + @\ + DIR="build/Release" ; \ + RESULT=0 ; \ + for S in "$$DIR/"*.saver ; do \ + SS=`echo "$$S" | sed -e 's@^.*/@@' -e 's/.saver$$//'` ; \ + D="$$S/Contents/MacOS/$$SS" ; \ + V=`otool -s __DATA __objc_imageinfo "$$D" \ + | grep ' 00 02 00 '` ; \ + if [ -z "$$V" ]; then \ + echo "$$S does not have GC enabled" ; \ + RESULT=1 ; \ + fi ; \ + done ; \ + \ + for D in "$$DIR"/webcollage-helper \ + "$$DIR"/*.saver/Contents/*/webcollage-helper \ + "$$DIR"/*.app/Contents/*/XScreenSaverUpdater \ + ; do \ + V=`otool -s __DATA __objc_imageinfo "$$D" \ + | grep ' 00 02 00 '` ; \ + if [ ! -z "$$V" ]; then \ + echo "$$D has GC enabled" ; \ + RESULT=1 ; \ + fi ; \ + done ; \ + \ + if [ "$$RESULT" = 0 ]; then echo "GC enabled" ; fi ; \ + exit $$RESULT + + +check_coretext: + @\ + DIR="build/Release" ; \ + RESULT=0 ; \ + for S in "$$DIR/"*.{saver,app} ; do \ + SS=`echo "$$S" | sed -e 's@^.*/@@' -e 's/[.][a-z]*$$//'` ; \ + D="$$S/Contents/MacOS/$$SS" ; \ + FF=`otool -l "$$D" \ + | fgrep '/CoreText.framework/' \ + | sed -n 's/^ *name \([^ ]*\).*$$/\1/p'` ; \ + if [ -z "$$FF" ] ; then \ + echo "$$S not linked with CoreText" >/dev/null ; \ + else \ + OK=`echo "$$FF" | fgrep -v '/ApplicationServices.framework/'` ; \ + if [ ! -z "$$OK" ]; then \ + echo "$$S is linked with the wrong CoreText: $$FF" ; \ + RESULT=1 ; \ + else \ + echo "$$S linked right: $$FF" >/dev/null ; \ + fi ; \ + fi ; \ + done ; \ + if [ "$$RESULT" = 0 ]; then echo "CoreText linked correctly" ; fi ; \ + exit $$RESULT + + +# Arrrrgh +ios-function-table.m:: + @./build-fntable.pl build/Debug-iphonesimulator/XScreenSaver.app $@ + + +echo_tarfiles: + @echo `( find . \ + \( \( -name '.??*' -o -name build -o -name CVS -o -name '*~*' \ + -o -name 'jwz.*' -o -name 'Screen Savers' \ + -o -name xscreensaver.xcodeproj \) \ + -prune \) \ + -o \( -type f -o -type l \) -print ; \ + echo xscreensaver.xcodeproj/project.pbxproj ) \ + | sed 's@^\./@@' \ + | sort` + +update_plist_version: + @ \ + SRC=../utils/version.h ; \ + V=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' $$SRC` ; \ + T=/tmp/xs.$$$$ ; \ + for S in *.plist ; do \ + /bin/echo -n "Updating version number in $$S to \"$$V\"... " ; \ + KEYS="CFBundleVersion|CFBundleShortVersionString|CFBundleLongVersionString|CFBundleGetInfoString|NSHumanReadableCopyright" ; \ + perl -0777 -pne \ + "s@(($$KEYS)\s*)[^<>]+()@\$${1}$$V\$${3}@g" \ + < $$S > $$T ; \ + if cmp -s $$S $$T ; then \ + echo "unchanged." ; \ + else \ + cat $$T > $$S ; \ + echo "done." ; \ + fi ; \ + done ; \ + rm $$T + + +updates.xml:: + ./updates.pl xscreensaver ../README ../archive ~/www/xscreensaver + @$(MAKE) test_sig + +test_sig:: + @ \ + U=../utils/version.h ; \ + V=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ;]*\).*/\1/p' < $$U` ; \ + BASE="xscreensaver-$$V" ; \ + OUTDIR="../archive" ; \ + DMG="$$OUTDIR/$$BASE.dmg" ; \ + SIG=`sed -n 's/^.*dsaSignature="\(.*\)".*/\1/p' updates.xml` ; \ + PUB="sparkle_dsa_pub.pem" ; \ + NN="t.$$$$" ; \ + SIGB=/tmp/$$NN.sig ; \ + HASH=/tmp/$$NN.hash ; \ + rm -f "$$SIGB" "$$HASH" ; \ + echo "$$SIG " | base64 -D > "$$SIGB" ; \ + set -e ; \ + for OPENSSL in /usr/bin/openssl /opt/local/bin/openssl ; do \ + $$OPENSSL dgst -sha1 -binary < "$$DMG" > "$$HASH" ; \ + /bin/echo -n "$$OPENSSL `$$OPENSSL version`: " ; \ + $$OPENSSL dgst -dss1 -verify "$$PUB" -signature "$$SIGB" "$$HASH" ; \ + done ; \ + rm -f "$$SIGB" "$$HASH" ; \ + + +build/Release/installer.pkg: installer.rtf installer.xml installer.sh installer.png ../utils/version.h + @\ + set -e ; \ + SRC=../utils/version.h ; \ + V=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' $$SRC` ; \ + \ + DIST="installer.xml" ; \ + STAGE="build/Release/pkg_stage" ; \ + FINAL="$@" ; \ + UNSIGNED="$$STAGE/contents.pkg" ; \ + PRODUCT="$$STAGE/product_unsigned.pkg" ; \ + SCRIPTS="$$STAGE/scripts" ; \ + RES="$$STAGE/resources" ; \ + \ + set -x ; \ + rm -rf "$$STAGE" ; \ + mkdir -p "$$SCRIPTS" "$$RES" ; \ + \ + cp -p installer.sh "$$SCRIPTS/preinstall" ; \ + cp -p installer.png "$$RES/background.png" ; \ + cp -p installer.rtf "$$RES/welcome.rtf" ; \ + \ + pkgbuild --identifier "$(PKGID)" --version "$$V" \ + --scripts "$$SCRIPTS" --nopayload "$$UNSIGNED" ; \ + \ + productbuild --distribution "$$DIST" --resources "$$RES" \ + --package-path "$$STAGE" --version "$$V" "$$PRODUCT" ; \ + \ + productsign --sign $(CERT) "$$PRODUCT" "$$FINAL" ; \ + spctl --assess --verbose=4 --type install "$$FINAL" ; \ + \ + rm -rf "$$STAGE" ; \ + + +# -format UDBZ saves 4% (~1.2 MB) over UDZO. +dmg:: distdepend +dmg:: check_versions check_coretext +#dmg:: check_gc +dmg:: build/Release/installer.pkg +dmg:: + @ \ + set -e ; \ + SRC=../utils/version.h ; \ + V=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' $$SRC` ; \ + TMPDIR="build" ; \ + SRC="build/Release" ; \ + EXTRAS=../../xdaliclock/OSX/build/Release/*.saver ; \ + BASE="xscreensaver-$$V" ; \ + OUTDIR="../archive" ; \ + DMG="$$OUTDIR/$$BASE.dmg" ; \ + TMPDMG="$$TMPDIR/tmp.dmg" ; \ + VOLNAME="XScreenSaver $$V" ; \ + STAGE="$$TMPDIR/dmg_stage" ; \ + DST="$$STAGE/Screen Savers" ; \ + PKG="$$STAGE/Install Everything.pkg" ; \ + rm -f "$$DMG" ; \ + rm -rf "$$STAGE" ; \ + echo + mkdir -p "$$DST" ; \ + mkdir -p "$$DST" ; \ + \ + retired=`perl -0 -ne \ + 's/\\\\\\n//g; m/^RETIRED_EXES\s*=\s*(.*)$$/m && print "$$1\n"' \ + ../hacks/Makefile.in ; \ + perl -0 -ne \ + 's/\\\\\\n//g; m/^RETIRED_GL_EXES\s*=\s*(.*)$$/m && print "$$1\n"' \ + ../hacks/glx/Makefile.in ; \ + echo xscreensaver ; \ + echo savertester` ; \ + \ + for f in $$SRC/*.{saver,app} $$EXTRAS ; do \ + f2=`basename "$$f"` ; \ + ok=yes ; \ + ff=`echo $$f | perl -e '$$_=<>; s@^.*/(.*)\..*$$@\L$$1@; print'`; \ + for r in $$retired ; do \ + if [ "$$ff" = "$$r" ]; then ok=no ; fi ; \ + done ; \ + if [ "$$ff" = testx11 ]; then ok=no ; fi ; \ + if [ "$$f2" = "XScreenSaverUpdater.app" ]; then \ + DST_HACK="XScreenSaver.updater" ; \ + echo + tar ... "$$DST/$$DST_HACK" ; \ + ( cd $$SRC ; tar -czf - "$$f2" ) > "$$DST/$$DST_HACK" ; \ + elif [ "$$ok" = yes ]; then \ + echo + cp -pR "$$f" "$$DST/" ; \ + cp -pR "$$f" "$$DST/" ; \ + else \ + echo skipping "$$f" ; \ + fi ; \ + done ; \ + \ + set -x ; \ + cp -p bindist.rtf "$$STAGE/Read Me.rtf" ; \ + cp -p build/Release/installer.pkg "$$PKG" ; \ + cp -p bindist-DS_Store "$$STAGE/.DS_Store" ; \ + cp -p bindist*.webloc "$$STAGE/" ; \ + cp -p XScreenSaverDMG.icns "$$STAGE/.VolumeIcon.icns" ; \ + ${SETFILE} -a C "$$STAGE" ; \ + ${SETFILE} -a E "$$STAGE"/*.{rtf,pkg,webloc} ; \ + $(SETICON) -d ../../xdaliclock/OSX/daliclockSaver.icns \ + "$$DST/DaliClock.saver" ; \ + $(SETICON) -d XScreenSaverFolder.icns "$$DST" ; \ + $(SETICON) -d XScreenSaver.icns "$$DST"/*.saver ; \ + $(SETICON) -d SaverRunner.icns "$$DST"/*.app ; \ + $(SETICON) -d XScreenSaverWebloc.icns "$$STAGE"/bindist.webloc ; \ + $(SETICON) -d XScreenSaverAndroidWebloc.icns "$$STAGE"/bindist2.webloc ; \ + $(SETICON) -d XScreenSaverPkg.icns "$$STAGE"/*.pkg ; \ + mv "$$STAGE/bindist.webloc" "$$STAGE/Get the iPhone:iPad Version.webloc" ; \ + mv "$$STAGE/bindist2.webloc" "$$STAGE/Get the Android Version.webloc" ; \ + \ + set +x ; \ + echo "Checking signatures..." ; \ + spctl --assess --type install "$$PKG" ; \ + spctl --assess --type execute "$$SRC/XScreenSaverUpdater.app" ; \ + spctl --assess --type execute "$$DST/"*.app ; \ + spctl --assess --type install "$$DST/"*.saver ; \ + set -x ; \ + \ + hdiutil makehybrid -quiet -ov -hfs -hfs-volume-name "$$VOLNAME" \ + -hfs-openfolder "$$STAGE" "$$STAGE" -o "$$TMPDMG" ; \ + rm -rf "$$STAGE" ; \ + \ + hdiutil convert -quiet -ov -format UDBZ -imagekey zlib-level=9 \ + "$$TMPDMG" -o "$$DMG" ; \ + xattr -w com.apple.quarantine "0000;00000000;;" "$$DMG" ; \ + rm -f "$$TMPDMG" ; \ + ls -ldhgF "$$DMG" + + +# When debugging, sometimes I have to reset the preferences for all +# the savers. Also I like FPS to be turned on, and them all to be +# pointed at the same image directory. +# +show_prefs:: + @cd build/Debug ; \ + for f in *.saver ; do \ + f=`echo "$$f" | sed 's/\..*//'` ; \ + echo "########################## $$f" ; \ + defaults -currentHost read org.jwz.xscreensaver."$$f" 2>&- ; \ + done ; \ + for f in Apple2 Phosphor updater ; do \ + echo "########################## $$f" ; \ + defaults read org.jwz.xscreensaver."$$f" 2>&- ; \ + done + +reset_prefs:: + @cd build/Debug ; \ + W1='defaults' ; \ + W2="$$W1 -currentHost write" ; \ + img='~/Pictures/Screensaver' ; \ + for f in *.saver ; do \ + name=`echo "$$f" | sed 's/\..*//'` ; \ + echo "########################## $$name" ; \ + domain="org.jwz.xscreensaver" ; \ + dd="$$domain.$$name" ; \ + $$W1 -currentHost delete "$$dd" 2>&- ; \ + $$W2 "$$dd" doFPS -bool true ; \ + if [ -f $$f/Contents/Resources/xscreensaver-text ] ; then \ + $$W2 "$$dd" textMode url ; \ + fi ; \ + if [ -f $$f/Contents/Resources/xscreensaver-getimage-file ] ; then \ + $$W2 "$$dd" chooseRandomImages -bool true ; \ + $$W2 "$$dd" grabDesktopImages -bool false ; \ + $$W2 "$$dd" imageDirectory "$$img" ; \ + fi ; \ + if ( strings "$$f/Contents/MacOS/$$name" | \ + grep NSOpenGLContext >/dev/null ) ; then \ + $$W2 "$$dd" multiSample -bool true ; \ + fi ; \ + done ; \ + \ + $$W1 delete "$$domain.Apple2" 2>&- ; \ + $$W1 delete "$$domain.Phosphor" 2>&- ; \ + $$W1 delete "$$domain.updater" 2>&- ; \ + $$W1 write "$$domain.updater" SUScheduledCheckIntervalKey 86400; \ + \ + $$W2 "$$domain.BoxFit" grab -bool true ; \ + $$W2 "$$domain.FlipFlop" textured -bool true ; \ + $$W2 "$$domain.GLSlideshow" titles -bool true ; \ + $$W2 "$$domain.Photopile" titles -bool true ; \ + $$W2 "$$domain.SkyTentacles" mode cel ; \ + $$W2 "$$domain.Sonar" ping \ + '/etc/hosts,$$HOME/.ssh/known_hosts,$$HOME/.ssh/known_hosts2' ; \ + $$W2 "$$domain.XMatrix" matrixFont small ; \ + $$W2 "$$domain.XMatrix" textMode literal ; \ + $$W2 "$$domain.XMatrix" textLiteral "MONKEY BUTTER" ; \ + +# defaults -currentHost write org.jwz.xscreensaver.FontGlide debugMetrics -bool true +# defaults -currentHost write org.jwz.xscreensaver.StarWars debug -bool true +# defaults -currentHost write org.jwz.xscreensaver.StarWars textMode file +# defaults -currentHost write org.jwz.xscreensaver.StarWars textFile ~/src/xscreensaver/hacks/glx/zalgo.txt diff --git a/OSX/Media-iOS.xcassets/AppIcon.appiconset/Contents.json b/OSX/Media-iOS.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..f7aa929a --- /dev/null +++ b/OSX/Media-iOS.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,154 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "iSaverRunner29.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "iSaverRunner58.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "iSaverRunner87.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "iSaverRunner80.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "iSaverRunner120.png", + "scale" : "3x" + }, + { + "size" : "57x57", + "idiom" : "iphone", + "filename" : "iSaverRunner57.png", + "scale" : "1x" + }, + { + "size" : "57x57", + "idiom" : "iphone", + "filename" : "iSaverRunner114.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "iSaverRunner120.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "iSaverRunner180.png", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "iSaverRunner29.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "iSaverRunner58.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "iSaverRunner40.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "iSaverRunner80.png", + "scale" : "2x" + }, + { + "size" : "50x50", + "idiom" : "ipad", + "filename" : "iSaverRunner50.png", + "scale" : "1x" + }, + { + "size" : "50x50", + "idiom" : "ipad", + "filename" : "iSaverRunner100.png", + "scale" : "2x" + }, + { + "size" : "72x72", + "idiom" : "ipad", + "filename" : "iSaverRunner72.png", + "scale" : "1x" + }, + { + "size" : "72x72", + "idiom" : "ipad", + "filename" : "iSaverRunner144.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "iSaverRunner76.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "iSaverRunner152.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "iSaverRunner167.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "iSaverRunner1024.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner100.png b/OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner100.png new file mode 100644 index 0000000000000000000000000000000000000000..4a71d44790d2552eaf9d0462faab93f2cb937d49 GIT binary patch literal 3261 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 literal 0 HcmV?d00001 diff --git a/OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner1024.png b/OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner1024.png new file mode 100644 index 0000000000000000000000000000000000000000..a548d1c6bac889284f2015a51b3fd4b467cc50f9 GIT binary patch literal 46983 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%0D(78^vw#a%Kmg|W1o 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 literal 0 HcmV?d00001 diff --git a/OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner114.png b/OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner114.png new file mode 100644 index 0000000000000000000000000000000000000000..97da0c72cc800dd38119566e204354e09d21c316 GIT binary patch literal 3809 zcmV<74j%D|P)L{exucP!l`z;18u$krn#y95R>I&gAl-j|lK1e_+6(_N-l!pI zB?inyIa{U#5nxDU@ROvKFo+iBtylNPtGg_nP2-H&NYV{FibbjOGuZv_zhqUlle7{5{=C&ChN0)U;vWz3=1NVyd!Hp~B>?nz(Yf>) zu(2~vD$p_~=&y|rk&S$nrB*KNuvuWEfRZZbGAXrhj{}j7JguCmS*J}1Y{(d_7xc+W zDQg^vY~*PLKX8f8K)0Xb2*-!WM#WG|>*SxgxAR#OC}!$Z#|?Ga&Ji1;;|U-dXdO(_ zdLQ~HPIYe!Y4m5ciA$C7>JxtrJPHH6YbuN3n7c(QZK@8ER!^{G%38C|{VVvbJN1;U zi-mpfzv!=t@kR~s4s{yH1%K`;P!f_>Z<{6b*z=@WBp1^`3WjTscpnd4p7Hkc!Y5va z|FsQv0J)^L`i|BM=KJ1MLhh=+X5YO$!KcF7Kil=B!^xRCA4*q+CHWs@7%8SQurc6O9_rb5chnJF0U=)Dd1wXSg;w<+kF7C;HY!M_^bze&w zxTuseA!bQheZ!|c8fMuv2FKw#9hNu{(`~)2P?b512uMU@w-u@hl2+e3_G zR9_^mctds0nPPX>23$%;a+LAKRa$ZGR*d+zukE_#{#8b2HFR4@TK&RMylO97fDP3J zGnq9vP0i|f!MxS({hG>s&&7Wqsxk%(F*-?FeZ%y@uaB#`QQME=B1a3VdiZNSAHyjC z#20%QV5p6%l(LN9ohNC%4+BT@_g$~`HULlp9I4ZbFv-f?(YR1I8o@&N7m~b$TECJL#coSyyoPykNvWfktc zBrv$Wv)e(U9$z?=f|1<8Ex@qCrdV$Ov$-Lnb#QQyV^&9z z6WGE}hM(xx_Hd&1jL~h{|(gIxz?7?6i1AM4Q+%;Q` zu^6zSp*7Am*4JsXteMTjsgi(~7)hH;G#+u+VIO&1bt5n7P^Iy}D#>`J6%+tXO&xaY znpvYrCJ?Z5+FkV(Rti8yM$`eoq5*Nc+O|}|8Mm}z$D2_%ioZL9P+s|*x^=No$f3G- zp1$9u`2;-3bEh40#z}KZTY=g9Pc&%5tH(d3 zXmK_CZONU|4M~fN`Z8x_WoKuP*hHhz96WdsL6B&t)vW+-fM;T4W^UiUJ+I;{rCW>V zB!{_^wq5DWTfi@`uZP<%1U=b*+-J$_Q8;WGk``C>K+JAFSr1pl!z?_u_3PJ1y9i*1 zMIiOJ589wRx3#so9^fN0@u(z9P=PtE;kH#N=m%=nty{OviR*bNSe!X62~Yv=ewzO1 zqmNcqRgKsrJv}`Jv=#LL?$i%yWQLSgUtbTu0y`xJycG*D`-UkEek$0lxw*NI|7jC; zUU6V`R(;``NA%`$(W|e%I!;m+*7GZvoSIfMh(JR_1E?5ux34l%@t+DpZ$nQCY&ccd z;K95v$LpWA2$J`f8eYj340SexhQvIrX>=x50U_3g?z%RhA}A{>gN@~Rzrh)F*iOBA zHuu}JM~8Xw`*j028*X-_6jUH!fyV=_3NOQNZ(%~Ezf{RVX$2i96_3tZLZ`l6P0!2b z*VonT8t%iX&hR|Ynhjc^${xeCde>1)ID+yfLyjW;#EBE21F$FKxnH8+8N`o#)`S!1 z&0x8PosRuF70y;rvmLI}FIB`B78b@ft=^6m9k_#{0O}v~_8^VCOE-_|v>+xg8j?jE z8i)z#0M38~IlBE7)!k8Im{u9xhqaXU#DmR(UX03|NF+*r;rY=9EIgj7FYQqEk1AkS z(#43;q3Q1kzYY*et1rjCk(XF>MhAXC#=MI%8$`fT?tP`Grq#5178ifOqJ0GvHv9og z7_DFf{B>dORZh)K6Xa#6d_ZA?3s@-L&=&y^u=xEi^c7_)3r}4TrL_7~0C&J1sx+bj z8??fr9D&bQN|_~wA>89W35dZF!?Xs@IV%Q}imHa8S_fJ|>4FPbcsvDV!ywbmRuj&) zpiAJLg>)TS>5VH|QJMSpoNL1WnoI{;QwC=V=Cq3%ZrNmFI-cQe6ud51EgR;54c{EB zopI7Xeu#kmtg8GBatH*h@rkU_1}szu8}3Y8X-!lx@s<^+?TgiDy?Dr1D&H6xxGPI)DgR-ASc zYW$DNO?lY@2-xiG?5h(({YuAkkASWi}O_=NWo!A`iN62#*RC8 z9LiKyY|{$Ziu6#T36mz#}5fO2ETWQNAimuX^*R*^`w;oahBkb+|lHB@wqiu%^BT^sYX z0&;V6``4`qb!{3Lh{H~wVlAjZsEO0UHg_oGZwCqs3*VB7!Z4`n5Bqg0D%*L!FELgJ z2K{00$EB~>BeO;YcjOk^fgb+(~1p^^z`(CGbgu3B7H%<*Vt`^9+R1w>8~?| z;<}6w-Or94J3IoUUa!_zHT&-Usgdwt*Ki-ydqSaWI;Kxm1sfY8%f$%YU3q`vV-(6f z7B@VrghBQE=Do2r1VO5+tHaz&!o8?So~ElruMYK9z7w)XV~>IjUR3 zPR9?6R+QNgl?l~yl38RW!sGxw*Tv`h>4^hXTF>9VmtO%cP?fH5B;}lBk<(d%}ZNU%lmY)o^C)=HK z**vhfX$+Qv$?=%N2E2FJEfC{f5@Y6UT2Gg?vFZP_IpHxwa1r%k;A{{5WR@y>TX0KZ z1-T9uiV>F=8x_)et55xNlfMOvWMX=bB3_xwyf-16Ro-MMs6aZ@b}SK#U;15m04~<-(qy!)ENid^*4)P{1I%n9Ds*2fUZXg|?c;v!-e5OmUH4>p5E1L!Wr- zvxcv0M?9>t+j^upK2-WMIa4t+QgXHq}d z_|A=^Zx9uySoHSxny-C1jcai5CqyKJjmcmI-RmV?wRdYunwpwMT>o*5-czAaB+Xo+ z`O#Csx%$|km8b8XaCYnUZ|mCI!}@1j<#IWA`>sWM!WOxVaNZu!I?#C=A~Yo>C7joV zE5dadcH_7e0b&cYQ4J62xYDp)juGbDBd{=wX3!`kNLoo+Nm@yew34)vw2~kc{}W&U XGf004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x9JWbBK~#9!?VWj?RMoZb*V_9`b!zIln`Ryr5WxXOAz(yt zyk6nrfQlpPQ{zq4I3$|n=4oQ&MZLVdIB?Y%^lz4y1)S$plZ*VzY${3QlIDEngF-GP4={Qx>g>KUL( z0?F>~M0V8!Kog;Epr!*+cXuU=>UPkCnvtxmNL8;#&2N>)P0~4DHYfIjTCiT0`ERQl^W@tPN7gS=JpN;kbvIkIB$219OHRGy443a-cdrwNkbLRZM4*vr#xWLwba!}% z9FsPTKK~V$d$v(9PL_@@tZIDrHl}OGn4|7?&?xMruVmojfv2>J@a@5}d{J<6aDLtE zv(-G$vE)Fy8#Dj`xER!pK5tnnHq@tIwzp_diMwpcL(Qu{SG~SthIRLY24u_%sl06^4Z*E>A`G=L=G($!r9#?)Cc4H;>4b!&dPS~wv(fA1SlY8^UjDVfU!h`>4X zc)EKuM^=vj4S*U!YyZ(Zq;LU7gdFbEPu}huJHp#{>91NguTk7>FU_T3E_ZzEGMS9Z zSRnlQeLR~xHNqUlc253NXY@T0UZTdhs07wL;3&-#Ca_+yOc-79=XKP-Q z#5awah^u-k*qHe9%;L*`6InGczUkAF8~#L=1K2~x^|g9NhY(3Rip#&xoo@?^Au@oF zBPRPi`&Z&M=NI>?cp|iOD>vMSM<7VjGBoY^+Xm*B;|Y@+|KCjihWD7!d{;fCYluuZ zsl0fr#uZ5f00PL*_`9*t*a_;Je{ZPjds)%waUu~x088hd59Zus+cm@#HFf_v=9Xq| zmJcHb5PIA+m{!jKO@xeF@nGL@v!-YS1OOVt+NiT}PxEdzz~^ z&RFyA;QX?xNc`&Y?xDqOXV@?c%cKxJFy2V3XMhGmRTmArPKX9j(SXPS@*{sa(K3Ci z>!amOmA(F@V8kgR5oHLL#_~RS<|ZkLaYxc|y;PZUBIHs`FG&GESaf@m(ow+Nw&XM+ zlE?tSWNd51+BZCQR)6gepUdKl?vxG?k)pX<_HLWD{)3_3lDM!rpb%i$G6gzUHIO}S z<$Xv!0yO7JBpx5N?)?)?e_RRzas&GxyXBfo+#jxN`YQjN!ch}MJcJhF6ksbG9jx3XM#R8(=*4Sv+sbZGb=^ z6;%%go6cJM-Y9orTsj2cVJsda#+eGX6i$zI(9rFmNebO?*EiQqe(MiYy(O*E0RWTO zJQ29+LUZ+omX$cR=@Zr*QZ6%T9_mI|0=|#W6a}0Bn2TPtRXMo{fKG? z8RtX*Kma;pdlDA)xBHhF@2wA}22D1+CJ76qKvk7{Hjax1rJ^Bxo!(0k^)=LZHM)Gp zV6ih=U(FQ_rRbnbUHKfXM^d_u7)TO1Oe0Ls_4wWYKvFWF<~)BF?A~nu`jhyAIr?c= z8of)SZ$3V^X0x|saL`UF2h;op;ua@4a0r5g#k)YiU`h(W<|Yz3D!6MljwDKbGgKxb zmx`q=dR^hB38CLMOL(*h_Dl;2zRSKrIjBo6;wV^LwDf z!aw-xW?ZLS@W&u?<*7Wgkp~iyrW<|7o*S9`P?J%v3ablt-4%2CiDCKG!1Hc%`Ns6~(tuy^}7XTnK%(OT|39w_u2L+95g<^DJZtOzTLBzO{ z2u8yp0FYA9kpz-};CeG(1NihOo$UF#r%!9{4Uv z0N_J*#K9pzLdp>yJ-JcM%VVeZ)g2)bD6^7M0zfPt$7tgb{bV*kr^kowG=%^H$c^ke zci~1mvCT;xqI#NU7IVc0!f#)K#9)wPY^b*T7b#wy0emCE;BDWk2q-yCO88c8wr-p3 z{nmvU6cKc7CWNDkquVB(w$}3v-yqGkBoS3i>f=)!AOJW?Gmn_~VE{1_r|Ir>YlYj3 zqkF3Wzz!RfXuCZI5Ef#h&t0>OjUK8VSF8%z<1(gQ1x@Y$kpSRIGanEtV)3(%H;Oz5 z8XBZ%ZEZJMlKQ%pURCZ-s}eVk_rf>-TdNf9qC-W6ABXamZc06Hu^#~VF#@{XZA=V(fj2o&S8dGD{N}F(U1`5 z=XrO1#zqfQ&lsRP@*6iqw<{Z<5dbcB`AfLckaYU=VLuvVv?e3~0)p1Ib4LJ6QZKi1 z&fda#D`J0`o(}*V54iK~PAW;n+H;Xe3QbQG&R?9EJtP0?f9Gb@Ohok@o zNj%^$z3er{FH5^eC-cIa`h(d^PI80gFH^{I>r*G|Z44 z&F^N1LZK~Nw^g;R%F4>x+S<8u=Vpm==0Qs!060hYIz$9uFlNPp8;Xx7np%QmhYb%5 z=p9KUc)Po(3?M0Fk(=MvQnq##`{|EUS6q3Ok830DnDu_JA)l-5gnAsH)fPW4bdRXW zdwFH-^LtBv`oCtq^ZtjWB_(-zc?E5#u&~hWcF&qM>$KBO0|3r5pVZDIXatY|&z{8mxMPO`zpVof42>?8k&e#@@xEOE$7UhUxM;xE0UAD8hvEDO%aMejCpE-TT zjAdg-G`9woc0nkJjgE6mX`%IwYfY2<;$Gji(=S=Gb{%6(2+{u9&oGRPBhEbNwBI;Y zGfSCj14$ycf@+vY;_{TfY~9+m0C4)$e_f`5Av=C{P(cjZ;><$x>D_Ag6ISG**7zW(@B^`844f{r4PEFsQ3=yXrd)ZH9`(k1%} z7ALf=`>n|%eOouK27t+DjNdbM)c#0F?ZoY=AU4^~g~gs>OT9z-6_?b`d+oIafvYar z*4W@u)b{TQB#bk8uiopA&xK}AE)8#6`0-~;(ng(Cpt%5@cAaBYw?)JN)0Nvr2Og6&vXmo41-Qb$0bY|qUz~jnE@n-MruaYHVGc}^s?mJ z?|%dU|8nW26+`>QV=>mb!XgE*MLKu+i!0{C?H8F%6(7Fhb?p>M7h~=JPzqu|h#9{8 z&llL^$K>r^`*C$mE$2LYFZj6^KTp=I3m@2kye~uC+L5KH*Aj)&GllS>H*1`C)z^iY* z2LRpTJu+$00C2ow7>M%gjcPc}w#M%h|-g2A0<;^WPA+hxi`*1iMbfFU8yH+^5OkY|q67ry@v0Ce(B>Yh5EagPgQ@IMHq#MR6Pd)t%01PcDExc~Vl3=4xQ9HToq#y=`bG4^n@kh?>Q+!OP z|7>k?BkS;9cP7u$Lc_sm^b7+C(KLAG*g=-D3ah+`PH*<|>ggu>()d023(Bl%D;2 z)jsZ)PZuu(0Gab=m@@`CZCRyEb-tMe<$$eHOm*k2{6t8N-F%98`1g+iz=-nRzL{4n z4K(;WZPXkvN^*+kTfWl1e!Lq1UW^3X$lCYR2#^r+IG2t)wX#B3v1Bm-{G(cQI^^I0 zK6V7B=@8|)*m*4lvlj$^{%?JDu9*MfCyM~!vRiImQ0jwJiaKZ02#}O=h+A{Es+K}i zPd1;6v;;w@fbC-=07JvUEry|}d$v|M5)>uF*|Z#iPD@2*Ad}zO59EMB$C;YvulbZ$ zwc3wdU7e1QodXH++4peIsQa-aX6-RdS(8ckApAV((C^|_S@>}-D3s}(q>HiBGBOdKAt)x#ofLV^&PK2sGVRMHg)_n z5s{%{|A=WY_;TGU_y+}@PUAa3?Puki9p|Q^f*tc&3$oi!4&D0i_W{7PTW@(k-=$b~ zCyg2a5FpOvweEtyT7xfj`@>T3j;a6H0sM^h5uQ+R-_D)8Ah+HlW1!Q)?80QEPS`rMIXiL0R$ELcG>5PDe_7A28d`VL z9rsKcbMpRC$F)QwN;Yq2BGMT4b4+Q;ZCkfMZUc`@t_(Tgeqn!*2zyw2i--d|ASH#h z^ZDrE`I|qQyK!69kf|4c6$!aG&#H|Pqdt!AX0Ub3=4`fe1ZC2K(ysaCcuVR#HH_a9 z2MmJqGoxhPB7V_md-lV>8$SMw?HsgD?7VbY2q=JxrBbLu)sC+KAlththbxny)0^AN zQ?Vtfn77@PF#gyY_)KD8_ zGODx{zmsTPnTmRmcjO09(ctVBzXtl^H=kPa)ppHgWcATk37`QKaf3O*UDY*^!}&1t zvpfeRfH{$-b^_`{ZAYXy&1Fv7U)-yp6+$g4S7kOq697l_lA5nU<&G-IVT70YB$fa| zfcc5m&r{JK>7H=gYefLyfH4%;u)^pLI?-=9Z4{bjOhg<(m8`cPs&-Unv7zrMD{*TY z)&CCG%1(fj1cK8&u9At&8wZ)ybuj@j1R-Eh3GCjr19BL6WMy3GO_MK7^>r(hkKE}f zF%JYmauOi3J?QkRH6_LIy}^I`>OzqiBId?TXK{1}!HtjpZmtQsZD-w9J0}Gp==yY5;# zW&GC0{ccUmYUtLXB#=h93?dhv>3(+JzOeViiQ`U!T)F8iwvnFD4Zu5}{?n6w&Jsz? zLfvsEl`htyV{bsnm6sPL1Dx$ICU9#j0lK{Me(k zIaep_&Hckqe;l0ki^nfG_s7XpD*fonA!W4>Sp?nK*a!fss;Zg>M8ALdk&QQBRnfe^ zK+&AsvKByY$zIcfZ|rV8|LXf6xaTKQN<-KAK{3WuRVAW8AOP8!97|!8Z{CcE*~m0yt6+zS5OL0&IdkUB`MNP=4$|e^_)s5WB1@9YHfsUk zLe?PcTLU!?K}~hdk0wrR-(a&8?PYf|Oy8A+Qtl&DDZP1J;?M|1L`cC;$xL zhCt0OC&dwMApn52p=>;ibx7HrbA=G{FcFahqyR2SMXzkx%@DH3S^_Wt5AvG>dp=D@ z6hM(aj*LjQp{&k_-B6O9X8mz8JiWP^fLzEjJ~ui*Dxit%#z4)h@nHI}pxlr2aCP}$ zl%oZq04_|1FKXTylp-IwojKQN6Zw(bK>yaf>y>z*Cs2l?vgk~(UXhATYOGvg#Y(w~ z2Orq)veI6tl&kCQ#H7Z`50c>?LK%+YV3f{R%C#v6hyzwT)|95I{|N0<01KEx0M7T^ zH%wo`804Ws5*`WHpWV1)i=E_|ri=*K)i3Nyc!yF7!|(R`psAHHb~I6^1mMU7(Qm{1 z-%N%d@|9iW^0|@4q(~B_ORe!p$M(>{G7^qxGNwvwh&!LM*5{z<<4BYdDvXKDZHysf zB!ua5k-LZpx^O#xZ_tE{%T&NKuMNr@)gsRz4Wx13&f;ZPaT#0Os{zNoa)c=Ph}eJ+h0J5y&^shZaR)N^9z z{ie~?UlmFE{@X!a0ey(IrtpH;9+nCNcG-6wQu=K|tcWE8FaLB!#TUpJ9dt?tGB+|6 zQA!%oTb(pqA6%}Km$2RiydflBUKW3?A{Mg=5fGV_a@2_92i)>>BQH|PrlSmD5rBwP zSF2}0T(Yj6mkC{7f)k)Zj$=9XdS7z!3{<@!qI7IsGb-QSws8#rFd_sb011>NnLJpP z7ufIA3wuJ`INjEt`Z)T|rnn$L1co39h$H~++PL|bDXnR12gzP9kfanm{4WnTBlN-KR4uJH{NQMskq~US~3Pa9-=-WrW z5=lU|Y10<-vq!xeTBxQm9c?F%PTl|F5+vyma+iD1hNsuP{$!Fmp1{&@9Z7ASs*4~6 z;Oe)Z@4Ng_m!aFBAa(Qm!g;}^4|Z4END@d|is{vG;HoFqzwlsVIGL$J3q(vh)UtWm zNMFhsG$D#67b%3Som<+Gx(76pAOM@`%y9LIRr=n)Z`G?$w#2N=ma`yY!lr#2mkx|= z$?t!B)Yso4#-zhQ=Kgi5M>`pIK?EpNm%&6qc$a(QyuBa)SLM##5?T5z;tUTDkpO|@ z;J&>EPPsmL@>PMn@>G$hNjzJTkLUwuG-{s~7``0eqy{kGU0ht0>pnPD2 zh=52!C`kSL_AWo=9CgekwSCVOsN|A$PC+9HOY;ud{qFAB({_eM+EH}n)ax!ZecD|z_@M(yhFI` z;u^1uZRgxalVqx*X{?*xYJ~s-K-dg!(6}7Gxwk& zonh{2N5f}Z-M=#YC(#d}bEF?Y=SV+*&XIlqog@7KI!F5dX}&qX@&R~&0000bbVXQn zWMOn=I%9HWVRU5xGB7bTEif}JFgR2(GCDLgIxsgaFgQ9eFl4r;kN^MxC3HntbYx+4 zWjbwdWNBu305UK!GA%GREiy7xF*Q0hHaamkEigAaFfdi#`;Y(t02y>eSaefwW^{L9 ma%BKPWN%_+AW3auXJt}lVPtu6$z?nM0000gA{GlP|aL)VXecxxk zFG0EIJ6r~l5b!R*f#HG!!vzP11H%Oew&y!Z(>c-V_i#>w1{kZLiKHBkb8>fJlC7Vy zavv6NxC|qVKp+SjPvfZEeT3077XvDo4;dmIU2IhDx{uRxYhVGpzVRZGQI3?Jxdh1h z<*&hMx%(O>ncO-TQv@o96WSWK;%yw5TLTkqx)zRVHcB)C8W(_(xdGB`U*N#p`uX$; zQ=e7n=b|z;iKs=X%(y8yFt>g_biqp{V%=xq@wqhC)F=jth_I$Ti34+Ak?y#w6B_>; z90QU-r7TV5Aw;5R?FTq8_Z3}w-9fqT%ZP-3>myTzzJ(DiUx7-#{VN=pn~Hz^i&MoW zU?2zO+VMKNn(xC(D8YfbslZ?|pqg7@ab{*qg`#;Q{5*Cs8yw#H;K*?&HKAr;H^buc z1qE$Gs%8^nQTU?6YmBGSaZg^?^@Oaod84$SRDu=MruVtqR>kXDJj zegs#-CNq;~J2t`Y{2B-5a#3u#9n4pC1a>epjjOxhjlqR%L!&s5Q_oA|ZXwSoR?om^uW^xOdaRh|O%3Xm2bD@Mp z7oAXtbOZ)cgYgel%8fz_E1|Rp-~YxdeiRPMRm!*DrHg~SD9k}RHx3$Lf!Ry<%d{52 zK>Ns7(atQ^z|cV(Ubb<$CaOU0Me(2h6r->izRb#7jjv&@6;9dCO(LZQFp$Y8`;Gd* z8Hrq9aZq>Hil^;MVqrn@D0I#H2m-4fLALoO4$Q^=j_Um@I%xLovQMU2ohG=sE*MN{ z-n?U7#%PS9phiJ}tY8gOpJ*Chx&&NHbiHOj_h_A1YYpsu!>~d%+5 z4xo$mxTm8(#4vj1-<1aI1uRwM``O0O><|_+rpWRVWAdpsm+{kbor3NK)8@)d0WB;O z2i7l!voYmueS`(Dc|vr5sq{a~45kdm&S7ZY{1@`EKc>(pq?#GAegLd0flnS)g9CH9 z$TnRM=Bw|7$9JT4S{I(Hq<_;IJ~7IVIm}W&G=z+8kI3whsJG;c09a0hKQ(I!4y->^ z#5p33#qg@act>j#AFVQ4rz}EhcMAGH4dqFxW?d!*z|z75wA_brV6ON4#!Nh_4C+V= z{EFkX3{VbdCUV*Okrv{`q_qxut(OE^_=rmlEckwLjK6PkEe_0;GGSe{(9-;>K)J_fsqSwI_oI4Q zq~btuQY#HV+c|OuIgJ?-Dgc|C#PNwM#(}v?#M7QkN7Xk%V>|Z#Yuc~^wQ2P_SS}+| z=oVoum>vs+U3joY^Qd<=gsjWOXjTgz4y=#7y>x8GJzXXdH#lY ziwlKIUd^57Qi9%D)(Am zK5oT!siw;dVQPg`Mz~Og(l`~nabSH{u2QmPDyHtT)8EjBPt=;U`FEG-Axa{B{Eo%7 zMs?f=#$jDv3o;I6TwWPe8qH>os=|ReEW-7dXbEK&6_pSliNJKAg?HKGo5YIkMPdL3 zaY(-A0n5Co)@$Jcb$7HtR*J-bDV6Ri7Ss4r9GHWt*G=aj=?s<=__trtdj3O4{-`X9 znY3T7@2tP^)e^l8U@xkJYa-YmuL&|~E02Ec>A=*xzYX2` zX>9A+_?G|lD8|UFRhTqXGd#5Z8B_P=EHHgI=gD+|+(wU&`$hQ`1ySyzQLEbS$+6D$r$f_{*drS0${%w3dzp}D2WZP}G z0G71jt*C?t?SJ}2vI)!s-sFxSQV4{ngn0AMqQCA0 zT=?mH+J9FYm26@^GgBy(8Fky-0$BR|9c(t+&gb?eATSwT2#OXUoqAo;Q+L1jXa3DjFLcG#u6bBMX z&{^%1BIpZetTLjkWt&9VJQjsnF;?d7^awM@GqdHsA9gcRabTA79w_K2f|N!xI)c2_ zlfD1~Zul{%@2&MAPm}~8&aPqYg=LVy1B1*9!GYP-=ApB|T4Esxgr?emq#}~+?C6bR z*@_f@2(Ne(yU-GEgvHu12AmPBeYic413KyWW_DBOUGID0IuKhvwR*N zUxV^D=ZPBA{gKYU#Ug#twt%KnBw#&1L%Df^5W#_UY;!s2|2(jm5P)58GWl?K?%a9s z;K5j#yt^1!cXBm!cs`#A=2VJ~u2U=b?b`?U$%#*}ND%H(V28MLkuOY)<*_Uti?L(J zj)RW0ZQHg*L_`cVU`zygse>E7Q6zq@MgjIO{OH3EKm7go-|I@JzSO;+-iH4^gHJm? zOQAujQ%j5CJ||C}tWoP6z0ZER2C}}vS{S3J2OG3seDTHajy1w#s04wc!lcfgUjD%Dh)kQ2gaY;1%VzIpRzmRkF{Bg;>_ zysQZwEA~BHCHEpBFu}g@#v2ornmZ2O3V!u$Q~(t&kWHLnWTYmKb_m#{Nt1>SFfed; zbPfc=2&j$X01%j~_qop}@dT2n&11uK6T%coIs1HSGUt)f8{9Uw{1--uc+EWA!SXbHG6M z$^wgnn7by6V7HFLhYx3Hbf0vUPTJ!Hn<1q^M)%Tm|H!Z)4+R!LBwDN5<5AYRMgz=0 zK3>Rcue}EE{L@cAjSUGuZ#x7=iNLa`j4m_I4wT7YR?LrJ&9AF7zxMV`k8N;D^=RLa4~oYAS}rS&=IAx5G-J>O ztGxUk1;%AMO1rYkSQW>aP?+zDz&2nq>wbY{tRjSE-VMc{%lz%P-{7@DpH6jZD(k4| zr(wQlml=#ATFR(VOBBuwvaJ#&_?IDb1foCp?%ne&UlHHaXOi0q|dQ8jd!oM6En<6lo(t!f%-o1N03m7DB zz*ZVv_6wAgY%MgU@z##wWu=cXzxnm+*FnF(ZAWa(R$v&hFvVYrq4N~Z%(0O7 z0h_ffP3I*iC3+SxFqykEi699csuLhF6toZU<6XIO#r*QiY9HDo@6{lK6#P6D?emQx zbTVv{tW7EVZ`2aC#^h>TQgoUj)Dp)$@K<_EfBRYkc60h`CgZ1+p85H;)fIU%g# zNfXWQf9cYtTo`2G&JQwhHNmb@pqL%=3$@11#NRGMA_>y3cXJzm3rkizNH zr#%8#m?QaXpeCdXXm2mlt;i5a#n=x&`~ZDXo{@2?s|`E)N5DLIkVlPEF?y#YE%>w6$bNa(5D7_VdEu%rSS!1guk_8WPWg^sr zfFX{!sXCg{uvc&GC_jm}w-fI6KGW<)@>N;>@D@M+{IjP3GY>K+BEKg!A?C|_lVjRT zfuma>yA=NBE?l_aLBOER=_vr+o%`eHz}aD@dL)?^wwqA$Dc$9F3|U|S-sFEdQaA1< z0;SV%%w~F!UvqP_X944II8{pRpaTYH?X1tjYDfB+%LY9Nm_#C(KB1_WapeA&$HmHR zMdB?Jgt1ZK9tR9^*)p~Ij|a|~>x48)M36rTXY;V=RF4A&ueWpamU?;MAOeO<57qJSdBT(xY(^oQRMhbJl`~0)tjt zR=!!`)>=N4PA?kCYe*CD*i0LHL3j!By-@r<Rp$Ux8p{A(4oj7qKPpSFH z%@h#GNKD44kfYGFX0>fvKmPcmNF*Avz@$`D;61HkQKpG|VlSHHt)XDiP`H9r=b7Fmnh@l3|ybWwE2fZ_J#@Vw9eF)7}J8cg^V9>nVwg4WGaRz6M7${!&j-<{o zgSoMv*Rw-%9nHnt$PQUx=JhPqhkmucqA-xqZ=`t<2sp6b>5ap@$WCmF;^=N*+f_<6 zm4t87+&2wQ`Dhi%T|^6ZGfm_AqTYySZG)aZcMG%aWJDJ=I2dje+4to>O(cb#`Q{1H zB+RE@kMby))DukSDnQucf*PlY@&$Gk4y}c)umJi=_ z!Cg+7HSG92r+Rtp=uD+5Q10SJB$~Vsa5RpBNXn!#noubudO{*MWIRIs1k82d`-jR2 zI5_9;O2ckRAe<}nH4g-4H=Qa){X%X#-Y$62%M zUVO_3$<42(G@WvtjIVErO-!=raZ=k^2L1>FbxleyQXJQ(KuL$wWS5Ne-;^hWP1!zN zX@G-DXN+JY1j~Wt%xejYigl^x z4ND^&jP3r5nY#ni?feSHR@eh^{bMavR8+>doW+4TDY32RvdiZyHM)MYaLHtHTHchj zWrtu`scSWeRGwt~V9b`qg~8*G^r6dsjbUZ1q?G_0LCFxwuJFTu>rnDfY(yeR?< zBMe-FKa{BWBpBZ*E1w_s_%$3@7cz3)o0XN7k#VEgY&O9?8mwwCA?Hn+T2#9R2WFuP zehsu>2_d*;gJ+B0d<6&AIS|_L)cBIh^ujWClZho26J{)Pll5$n`4Vx#f#JY#!GYm| t1H*ygf&;?^2ZjT~1qX%;4s7Vi{{tBqq+;^y2&Mo4002ovPDHLkV1f!c4xa!3 literal 0 HcmV?d00001 diff --git a/OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner152.png b/OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner152.png new file mode 100644 index 0000000000000000000000000000000000000000..b50697a13c79a9f9fc278bf5e720d21db1afa328 GIT binary patch literal 10257 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 Hu0mjfJbF_E literal 0 HcmV?d00001 diff --git a/OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner29.png b/OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner29.png new file mode 100644 index 0000000000000000000000000000000000000000..77738a92995dcc30026a4d7d9e9cdfa65b0d66cb GIT binary patch literal 845 zcmV-T1G4;yP)+<;P>}HL0JY)enyV}o2K;uMHobt zb=f#McP%|L3rn&y%%AnyAR2o({QLe9!mwuNQIKNx=Hv&md0(^Hs<6Y=q_c?12{B`u z`|H;)eBl5De2h%i?A+fi6+RyQ!q3F4^N%b1i^vHx8HW4cfwDT^xih7NZn)VfsOtf_ z7cN}bxN#%l@C5=Jb{>94W_u&$E9b6S|NIXWiDVXL{`r2}{~unA0zhu~Td_4i?v*yI z1F{bsIDpk$Ea^dql@l0__l_L<5#j?E4130LO%Pi00X?C4`Q!ebn@CG%a?GqiQu8JQ zv)rF6oCptD{op;u@d?7#{>FXbuhkE}S1Z=tbh1Pi;r+x4cksA4Eh0!w1g(ef$h*=5G7`@#DY05J$P+{r2eZFRVJ{g_s{actC==pZ@>r z{PYrrrQTjO$AlSdeWf8`|#Z#aT6cD;1={20k`xY7EbKuVgmMu z$DT|}{P^k#vLG89n`(03PqRc~-HQgK?rwT@dK<8e$11C&rT@UBfE;sa*p4C_00bBS X#dj@rOBkJ~00000NkvXXu0mjf07;*g literal 0 HcmV?d00001 diff --git a/OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner40.png b/OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner40.png new file mode 100644 index 0000000000000000000000000000000000000000..20db74e83526ea7469194f7bd3d6a34d42805d5f GIT binary patch literal 1106 zcmV-Y1g-mtP)K+BXKz`uL$|}`I^wzi*muhNCi3qDERjgi^SJ!G_+WA`^5IE2SMeR_V;}(&i}rB zG<|s&$o=<x|@GAw4n6yo^#j^W})2>a)+UmWLme^AgbJGU3eef0O&N7g^Wf8KoE z)d|d3KoRTzJo7Ie;b54L$Buuh4!;By30wSqWy#(BDUq7s$o`c6?Wyf&FxOt=nwHGHpBmX~dPCf|Nnw|T>{eO@g1y^J7 zlHX31gPL&+^cFuOv%D}$sCc{tOq9kk96&r8=WWV$mW$!u zbBLh!H|}&+(U+N?S9f2~{{9Cd=>AIRvf_8u)OrI0189x%;X`0xAek0hv+;mK^^0Ic zG(+1oxOh5?=&Ze4cgm<~-~I?M%hJAzuRSrxq2LM?f*Kg3Ky?4+Lt!iPE5E-ZO98EU z@Zcga-N8j<|FCOZ`m|xyB1$cW%dd_=p>x>^EK4=Qk{))}wet|5a^`86Q>1~u+ z3{SUO&w1V+U(FWk2h7AMF8jx&%fo@}X<#b5yY&RsN-m%aEN%(zUo-7hkSCf{_!p6n z|NkP3Xutn^;lc%qEPnh4;XhzXmOOIgnZ5#=r-AY6#leRr^5E7biYx}&fgFrsZ$$Ub zo$*Xv3BPf`#CY-geM*CR#+TQ~+^}aq51l_t(8PDQk5X#!wjZC6Jq@f6(z!(ln)v_o z6DlOGlg1iYlRCb{`1=_ZEOx0VIccOxdvq8V2?S%|cFm6Uj4 z%PdG)O_9ZkiHU-Og1+}Iq7|7~LD%P(Q%@cRs%K!}`T!evesAvKw|mByH=Une zQoqdwwA=pG?VR_I(aI1Y0H%DPv#LKnV;}`EVs^}t+gzC7<(5A27tbNd+fIf3G0V@* zx4wP+{?8<-=?A+IMQtvSelzS{Lbe;*KfZkO`Zv_mN3SBB#cWtnA*fmYeCIed z|4x6@uV25gDgd?*|1U}cg%;UCjkUqcyD;qGL&9A`9v&X?l$p;(&8TDXNF98kE&vEH Y0MY%Qkip6Ca{vGU07*qoM6N<$f+V3NF8}}l literal 0 HcmV?d00001 diff --git a/OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner50.png b/OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner50.png new file mode 100644 index 0000000000000000000000000000000000000000..f2fada114186c3a35011cd368f108d4abff187a3 GIT binary patch literal 1506 zcmV<81s(c{P)r=bbvvjPK1Dg1RT;F@{y?cN6JkRg zd1?Rf05nF^XCPEi;5&c%T*_p7ar&|e1k}(MtqPRRfKcf?F0A+@wh6f2Kw)&+K z_j;yRI*n^e$mI`Kz!ngi3k!tB4DWRl_T&4=FTJ0}Z#0kN45U(!j4;{Y>30!O;J!1p z)~>ood>n)!3iON{;%*jxbwhFbfny6+r!fzlb~AaA!iuwwXnH!xo@~jwL1ISE;!06= zz=P5lN@B#bC{tef$tuhWYbRH+!pKllKOGT-#EwYJd^e1^} z&&J7Yh8T09i1*)1kgrN#;sr!&O_w2K4)R^QjVmw8tU6ahYHBLkf9={e9LFhuRmkxt z&Z}oWvpp+!-45hvQ%GPwPFtl(OIG7|$Ub7|ee(o+e>qGpR=D1QiQg^7D>)C!c0$MFkG6s_$ypfI*GdaFb^HlTA*oR!eab z$<%`y+Bqz_+Io0wM`75`QYJerX@Dyf!)mpe$)_MlB@>M61AP}AGZBsf60;bvLTO*> zjQ_Q{Wh7A&`7maknqpXbk88Fdea4e|^`jAv0TQF?9i(0$YH79*>cR41uV6*w!-%XJ z>S3+T&bqlhFY4t0RAEsXcV1+SR8I36K2h_S(ZQOQIQtzk48y301rHS-uM4Z9a~s^E z7`HWk(;0vjVay^5fJ&vRsHlMF4kZbzN2Ws-gL9h#AKmnLQC(eKaA89kEU^0e`g`j* z7WZ4p!x16_3b%pmo%P$|?h|1;+BG>8Nj48njh9=7mu^=L$Tp4*%oZ~;^>$4R)lQE` zOMd=78FTuddD_cB%!tl(FTb44FMG3|pW_Jx)TrfOnv*w(e)>$yfV3PdS~=$Zrvg z#VH?LnGqx{BCI&;NEB}$_Co^&avHRGz4TIlr2L=4`dfej02j4BgU)wT>i_@%07*qo IM6N<$g53i`CTC zI61KD>(6U0m)V9jlK^W3i=QjK+IwjGB*1D(%v{44=E`b@t{od0qH zgc~f@_Jnje{_NnI{@6jZaD&B46QpK-c z2*XgV-A2taR&xq~R0s<1J(fPrYsk_1`=Nq$>9O6P%bWseVHz6yP2}vI(9Wu>0H5Go zYAQs)FoXnF;q5cKn=A1)HPd)nnSd{&-1{RgR$!%#Z_?-=R&ej&jNtVk)35*9kMq}L z#(2@B_NW!Od>82kMg|jx3K6PnbO_SI#)_ZvTGO4=c9#gbN~L&&>2DkQ-<=va&uYd` z>LSf1%ubWvv>z!ltNQ@r==HG!j4AgemY%v-qK(O;rEf5a#DQQPJh)Yb&SO%PVl0Hcy^lb!*3d{GN7Y_6KsOd0m68x zwTjF=ym!|a)NUGx$|rj%UqSITx9SPRil+gtHm8j{Pa}gxtz77{^m9$PUPw@$s5BZ4 zQCKfxT2Cdccs#Z4_#S2Ye1Bh=#bGrxG!TV#$YDQj81!84n<@MwS1v=by3&*_E* zgoj_hOrz=|7His?{I;bT!Ka~!(8{qY2=}iUWqZA5SbkYcgkCQyARH@?#|u9s@ps|7 z8U)^p29e~zZv@r_U=oQW?x|I-&MvrcEdZIqAU{%f@B8FO$SOylNeEW0R$Ek5gtyD7 z^qQ#I{$l-1s{ntpe*O9h-6Mj6wpiWmml)vs6T|A)v!4YoUf195D|d05`gMKnK>`hS zpAgu6OVwIBr1FIrP(p8NkJPgk_ny|U*+v@QS1);t-{d{_vwYb=ORYfN52X%XL5TQ> zXgczkW&BmD!S@qpF37QSq6ys3a^5Bqzm$1&P-eTc7&wN{$SEC3s6)C2pQ{;wQnns` z>6lH#X}~#FE2jSaW4+$JTyX^oCaXHdXgd2k^~&sPQSV)j?-0J!+REOiR{sQJ3;1>9 z!2Ux5D9u;)%c@SA&1S!Dj1)U_(ikg7X>nvCua(9 i(tmUQ$Lihw6<`1z&7S>2s#)9s00004PF- zg#t#If>@QQ3_)EMMZ^ebHn$m*)q(wC{w4)oI2n0m5LN! z5rKj*P^g6=g~IJ^>5H~>r(SGod%@n));96{adS@3Ik}(v>-YCNzjN-TPTH@hgioPS z!m5lG*Q$OLHn@P*ez{CveL6gFp)m)wdbT4n zWMBFT=s4tXf$tX|E5*qeS*BxH8tzpKp4!`v`Pnz1(M{qwHnmZ+U_|A+mz63+nwN9 zH&Xk+wP{3q<{saDjLjXNQ&e*MIOVB8>G9Tk&C~F~DIK-W@o{>lnAHb2o#%{C@^;Z- z$66u87hJ|48}3{<==#gM>_`x_`V8pex~uV#Vi%9I%cNBl>2y%t7?nt2@th0CR0HRm zU2l4Czr^&#(1zo_hykm+;`YlXUd%a@7F2Q({&2JSRJv<3qJ#NfI>&q5fp)onw42F{ z&<@%tOotm~!p{)cRBF|QqSq>b;3PMg@uKM_Gb%KHv#aF3#A*9i0{u4!ej>*wR zzShxRasTd(vF?rt9(B&0sFa>lrKQh2j6fhLE-v;zZWhzwTRa^!J&qxjN||rv5e{3Y zj}cX#*@ksugYF6j+l`dR+};~M2SW_031X80@$|vldOW^`%4Ipl%+5O0R@-0Co(pp|#K7xVQ z*~Sv?Da8FOMYBABxM0KR=``8((GRcgGc20#=~B;gT+X!{)d9o>Kt~LyXB^GxfqDlM|9(3$lg^i z6C~5r8{Z!#Ydy_yxRp})$rpje1!)bqF5L3jt+eFP;BM{i`gG6H88c?!O;SEb;uHsj zp5@DzgWG5(idrkHz}C$N*0O%JK6%o$Cj~bFseF>$q0`AH#dWhuP6ieu$lNJ4ok2}; z@bWR*PPldqAG!5;>egVNk+~5Q?sGiLZk;Mm{g7;SK@Jz0JkJ{~zTVveu7m*&@SV3~ zGrO90X;t2;Gb(*u!f5(Cz)sZ4 zGUcUmolZw~ZrsFVVZm14gyG}62^fa0F;fy&@9=H9&+jp*FTZqpi5sT4{|hhx(Byx} TRaF3;00000NkvXXu0mjfmKi@2 literal 0 HcmV?d00001 diff --git a/OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner72.png b/OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner72.png new file mode 100644 index 0000000000000000000000000000000000000000..7d12845ab9cf3736537e1cc2aa0b0c67ed9f5eca GIT binary patch literal 2224 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 A#sB~S literal 0 HcmV?d00001 diff --git a/OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner80.png b/OSX/Media-iOS.xcassets/AppIcon.appiconset/iSaverRunner80.png new file mode 100644 index 0000000000000000000000000000000000000000..adc5ad7e94709911d0f25cbf0bc88c710cb92760 GIT binary patch literal 2432 zcmV-`34iv9P)so6&Zd+Gpw6sp$b{DmHb*1HSwWF0I z3aeO;1$5OQ5&~JGIY=Pn4*kZbSr(E<4DW?-eE(p6Jbv%J-{*b4$LIUY3x4yXZAfELNM;IPfNJb+RaJj5gBTuYsu;XgtG|C`MgS)Bq8D2%LCoMMA8!WV zo)HYUrstR2{OGD4#i<=L0x%;jug9OZmmLvw@ASaciWyOsLrOpDKIGTL?P_Tli?13G*pm~jM5q_c0#iG=~5M9tB1Q{`uM zw`!fvgyZ1z-U)SlrKLDL4jDisui`U|C%24sY-`OQ%!=;5vH~b(Qy#F68|4^Be93$- zn=s0;fmm+qMT=5G=J9FqnbWFy$n|6M85F2eBS~I!X6Fz$vj5^=SWDMW!)}Q+K*>v{ zIZBjY^QpB8>4UqMqq$`7(Cbye-B!~8&vdel?9Wd|+NrnC9njcpKTfhhdh<>I;|`di z>T!&(&C#^>nh2R&0iK=hx{o#zDKOZX%kE>oGEFuB(jMPN2JL2jY_{!i3z4&Y8**gR zwX?_o{Mnmfh2zbjH(ah$6G&7Te;KbODlHCrA$oIc!;`Yzg5y2c*6!m!LkoIK_&w6z z3mON#xlJe8MAEcUTA{~FO4Rb_)i_ZvQCZcm6d?3MmM&7skUuS?1c*9}-jvz601i95 zyW)N`!XYGQZi=)7bEA}y2;U8lGpl2i~(B|lHdHNY$1i_I1-#<6^V_Ev{ldH4QbNlo!`*X-Q>*q z0bbkv!T>O7|7ut+B9gy-VuwBbju0C$0zXlQf$?hIi_|Sz>dzQ?dZM1rp%L{Dyad?Y zvc&4Usc-z7$!HpNoT^oBlRez^&tDqVPYt@>_xm~sFX9tSYB4X5q_+0<2egzAx0J(? zMY66@SAckK=_ByEE({<4iN`QP(pM-F-oOlSkhY_9{~D!IIrdNQu;#Setm?;77$@JX z;|Ir#og-0NB;qs3ctHS*FlG+pF0EK-+5WFH9s`y({X2D6m?~-+HZBbw>l7{6W(M!7 z@%hJb>lj?8bE1R4eymAU+Sm!;)oj{?g3Dww4avl~$M8CO5F#6qUzbuDqb5L^t!>qh zdmZpB*>!(a!yV-z{1DScOc!DF!8|1vCuUXaDtWGcW9XT6vwNC>ES^#8| zX)r6!AHn7d3H1FAk8Lv>P)IHo2Kp}G%}ky>QAJWyBB|)l#eA9Oa94-_J12QA4e#d3 z^Q*6*vFyash~^8ll&og!DF0!tls}v9|xJh51px&pI zyQ;}ZFb`{pw?*fC0x+LM`9^;yra&pKuc_$o?+@Mh7IaAHrvsQMT|i7M@rX`=G7SWF zCf^7-dGY~|(!)@7s;?OH7MKqmIs~b!B`smxD@5F5g2(=K5DoAWgI$DFS65FyV3yzL z+QYa-U!TD!Kk_Fa`CHq6J}$}75`)L4%%h-3@)85<_H~gDFifG1l@^Unmg2?3kY?N@ z89Wv=_IW+p_8kNZpYj#9xf-)Ap7<}=$x+n0PY*-7c8BC#69?+;UHTAuEs!X!6VX-J z0B&=phavrT)R5oLWfv6{xk>WIufmU$1?XjLnLnekv2l_COI@&6U=HrQLs-UnbnxIo zNY^M;XXIl-pO9#yPd>xv^;#5>1RDEj+1}LD)XziN6JOul!2m?YO(tN7&+`VYD<{lo z<3jy}>_u6;2m`=md(Fo%Z+V!sP)aCxX+jqZlyFZtZ{q6%e}N8k@&Pv)2T@x2TqB3= zN35x@!(@rr<}J_5(jT>QlNBH#O5uAlqjlC0Jf7n zAV=4aSglgs-R={B)3yE&fhz;;e(OgnPLxWFf={0W^ zR%WK+hxWp-hD|578RJ07_)7Dz;mDuybL`$&-KI~?<>lqBc5NpCFf3(B)d}?7EYA$O z<-_;-kDjc=ir$F=uBxg+3I;65a$q-#6!E|yHSE;LN_Kq+z1OIlP9&Zu^tlG~F#>^L zq~56E#g5wmxoL$e31BXLX1=%qfN)Z%lwgvyi`7z4uXrQ{j9+SjMryU9bArANXi@gM zd%tyNLLrcKv#WYy=YQ>{{1M-)0ZxH9gCt_EfwpRhu;xmJTgFR@c z0DwEN0p!nY65w{+tv^>rrBdk;aqi6YbMqVG+@7n-x=%bQ16KV5Q4OT-l{D7e5g)SJ zHDid07;2R=4d)&XiNy9d0|EmBLl>>^;4bdJw&aKRSK>KW4*c(vUyp7EXvC~I|CC6o zL}mHMb=^p!Qg_w5^Y)R)hA&{IuJ_3YLYYkF{waw|mRpNXS;(}hl(e2Zvqf*M`qfLJ z1-sjPiF@;7{8mNc=I_LbTffTEw*Q{>;9PmDXdcsInwxGTQl@}Q1F;88HYK$d-ib8cfSAszW>}SwD?0v(4cSh zAqa+07(&6HC^YV#V{1_kY7_th-l$Yf{zrov1%SX%dQ@L}6s@{6cu^3gES+p<71J5b zU$4Q9x{ob>{z z5moRBf5PjUyewhLvVmVy0v&{EcIFHrQhxF&3deWPvD=ZGC&fIvV8ZKzqO#W6F-4<= z&J#OcLY1-f_8A?H&53Mgh04Kk4onon8>@)^F=JcOc*fr=n4)Q&%om*83t6+mYTCO{ zitwWcrc#3bMO%!-%PZm94mwO)OAi)1i13c;K6Fy!IXV<)`JD)ULIK1-gDWD4@Ybur z9~TEnX8*?Vj{W?>CBf28nLzE#fraZ?o5QE*AUtKt(~719$5T;BH)jhav7sv$}Kw8vGB7Kd%!q5Ufzu`NO-gx!r27v zXWT7`Ww43y5*{5lY6lbwu&c9tu}u&HP!~JW!PbY*tgy_C%uVE#JTURc z&n3u`-1M+3gX)=yQEc>{zYnaLeHdy(Bh=TJn5p|m^@=O$rQcpc8jXqziE&}pAO1jC z07rw$dUaH=qES0WU<_(F3-7emRzf1^G7o&~9;#vfSny)QD?Tplaagj6BO@6FfM8_d zZ;MXn8w`f-pQdmGVivcdED!pHI~E=f{Yen#nVF^X4zax5VA1VZNW2;I!l*9ufUWrF zU0Zr&bB@z6FPcy&OrAcgd0w`MKzJGvzyengK-(+~FEw{Q0RYNJNaNG;3B`$@M03_i zq6uoa)8n~55&^EW^!(`v^>vc-0tA992w($am@MKnDT62KVRKqK77SH$ufGUP6qK8C z8Pi7~EEbFBS(b$CxK*eckWGlkESMt~52=0CzL zsUx_A>~|jqV{!`7x#NO8nR5**3}VN3I`|I-SRMcYNg*+cMc~ro$oKGwE^8x#s5>26 zt}*>d2cJ=Ra$W>hN77r&L&~f<$8cU-h1KM0@Fw;Pw`;6mF#^snxC#eHAKXq{T%1HA zsZ=43I=XvaxtcRAE$!mPi~SZ6V3r6wAeS*9$UFF)54LUu>Uu~Aa7Q^M$h<^e0jhHkI^M+a(H;2%1!x~~ zqdv^lXa3X|6*~^K0?sw<4KlhvTp}9j@Y?#=U?O@eu#^^(sn4`Wn<^KxkJ&P z)zrqX4(_EHDTM%3SsG{m;!ez=Lx%#iri8edob`K8DoC%}R-Nj^JyvdRu0$dUI27{p z^BoLIdWdhLlPy!F(IWHhmz+VNd&?%71ioP)l;92t9M^(c@hXSo2&icL@0a? z`Uwyt=6Z%`o5{TnU4rRP}LtCr+IB-(krlE2W7eLl*3xJ@yo;ZT9Z61W03M z-uI3(f*2-yn$we^dZCpj#$|H57RAdHomn6xBxHQrYo0&F`z&oaXu<-uD4u-3&?bs+ zo3!5R&51j;&d~unz&~QQp;Atb=D^RKtB6u#BgVJ3wz5LybuYi~hrHmYX9{0zID6;v z`5r%lmFHZw_4rXu(RX1ZUQ^4)J;xeBvqejFAo&XpOzK8C)Gco^dcFuH?~nUHP@^eS#j|G(Ve~=6Ji)vTYWD=eSNr$s};rL zbQTqtN~7X$`oaDS9u_rUFQ}-fuvo~kJwl-{At6CDZCR6ib~`^R&`|&iMEIfAC`aaz_EZ4D8O*=WswPxVo7)Ob!1@J*w6hZkrl{S zNcITwWnidMV_;}#VPNH=O_6JPT!hDuL)^!y#FfgWjx;TbZ+^Vv7|ftIx;Y9?C1WI$O_~u zBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHrx4R1i$-}8LIs{Kjv*Dd-X3J+1@aCp`0k&}XTAW)qz$m+Nv~&M z?0wsq12kW?#5JNMC9x#cD!C{XNHG{07@FxC80i|BhZtH~8Jbv`n(G=^SQ!{du3-WC e4oO39eoAIqC2kEFANTZteBkNo=d#Wzp$Py5bVkqs literal 0 HcmV?d00001 diff --git a/OSX/Media-iOS.xcassets/LaunchImage.launchimage/640x960.png b/OSX/Media-iOS.xcassets/LaunchImage.launchimage/640x960.png new file mode 100644 index 0000000000000000000000000000000000000000..0bfc1a93da30f21ca23991d092378f5d1365654f GIT binary patch literal 346 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sU_QVI6kzC``85nkv7|ftIx;Y9?C1WI$O_~u zBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHrx4R1i$-}8LP?%3jv*Dd-X1grS$Sx|SN~jY{RKcKwLpc0{&@z* zTP(8^fF`PzxJHzuB$lLFB^RXvDF!10Lo;0iBV8l&5JO8VLlY}gb6o=qD+2?`H7r2? eAZf_WPsvQH#H}IY}6qT-G@yGywqBLPnkd literal 0 HcmV?d00001 diff --git a/OSX/Media-iOS.xcassets/LaunchImage.launchimage/750x1334.png b/OSX/Media-iOS.xcassets/LaunchImage.launchimage/750x1334.png new file mode 100644 index 0000000000000000000000000000000000000000..4ec452de8b36754984726a456722543bf91461e7 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0y~yV0y>Ez-q<_6kvF?hHo{HVo7)Ob!1@J*w6hZkrl{S zNcITwWnidMV_;}#VPNH=O_6JPT!hDuL)^!yFg(i8rIEGZ*dVA0iWaXg+U;T60>K6c+0|XlGGrX5% zV0_#7-W})y)e_f;l9a@fRIB8oR3OD*WMF8fYha{nWFBH@X=P|)WooW#U}0roAi0JG f=zk;)x%nxXX_dG&WPIGy1M;J%tDnm{r-UW|U^gtPm5@BiNWeBS#!3u(&j_nv#o_ngb7 zty?!?V=*%(#Wt^85&mLHaLrK++j9@Yuw|=OuMVEH^Nk7&qu_bn#TUX~TBD?cr(xLM zSr|s=t=YUOyd$R_()KtZ|CTl3+g4uK_FgrH?R*cz{H|>Z4_mm?oAxD!NuG!Fh(pPd zs`I}@t;R570*3jYiHnYm`se;zry=cY_&yN_FNn4W(;+{kW7Ff3)3R2Fzo5pj?Y&SR zn;e;?lE^nhl4L3T5Gj$#(c=~u7sIm~>eHxFwP_DN!lI$S&^{K7N#NJ-k#Em^bjI(% zBhUO3lS*&H8|f$e-}U?R@6X5GzM6bV zqd$;iGbWM4lfU0}NhOA30e;1PVy){QUM2gnD9I|Zc_I*#_!CkR(xjuMeU}w4tb9>& z2@4kd9<~L27z*~a4W(!)1(|{|fB02M{QlGav+yjAO8gDPo*ljS!$@rP=)Dx1gl!nT z_x~SxaBLaO%)_z-I9s31(Eb$M7)^cD)9^Ol^@sje< zdp}GLGym|t6q_&UAHDa7_uq`(<5-&H-snB?Ki&smi~S---v?p`{c1+6UrITY3ahS(OpA^R4PKFy6s(Dl zjZ4!8YofK$nhbckY1NkC6~WYs+B6_5ZAn^wNKJzArU zPfZDan7%n&yqQ1$>A2LiL#Zhl!3#p?hd%M-)5(#E(Wz-Mp-J%v7ltkgU9@Py6H7;{ zS&h@*WPdYKA65J!{({S#+I%pD4?KMASH(4R!8Ps|eo zZbD)X;9-bEDS!GzE3EW{$q7RedA7sw6xKd|KFDggEw#Bp1nS(3y#jO`j%~%ZVcW4C*iLL0wj0}n?Zx(C`>_KsuuiNS>&5!8 zlh_&TB6bCP6T6DNfxV5rg}sAa!`{c<#oog{z&^r0#I9o>W1nC*uurkifSY~+vh7Rk zD_Hd=nCF8)0~$Z9_8s;Ob{Qz-ChUMD z2`LExnpFAdFbnIz`hnvQU`Mc{*fH!lb^<$vi8A;s_9}J(dkw3=^q2uNVkXRtSuiV> zhvj1hAm`d3PZZ1~4yz!p!2#%z5p!c6?15x~WThlr5-G`&7$r8pxBTAm`-}8a@SlPw z1S^Bt;Az1#gXae?3w|NEcWThoX;WuT4V~sUjhObxwDHpv)0ETLX>+Enofa`Idiu&4 z*KSI0l7ioZ2hduuZ>1w(-rO)>ZP3aJ$recjv|@l(-h@^@_q7rfJSlieaImkHr~WTm z83(OQ{!c4W)1QY{u$#CbdGO%DU$GVNRl+yo!D|@yU_Z1Ae-B>5uz!C7-={F_{`{LG z58q42lzjs_$ybwL z0DmWl|Ll`Ls@M)&hLVhtfcEe|zwk6cGEt(GuzzIyKVK!F6NukG{y;AP@jUtz3v1H| z)RhZ#br|TQMk0YZGXmAQBr+(a1G-WJ4Ok_CKvNl5J?4a2%?1i;2a4$N(RUG0_z|G- zexQyMqtxL5ia+b4kaIx!Z9u87`RL>#b_uHkI(`%O!d2J@Z@^9{hrRGV>;`c!d<45e z+zTGq4L4vvdlk+V-krZ zU{q#{_w)D{F#bgezuJ#qE#)8eFC8Np8smRIO0Z7B-NWzVQ^u}%WXjn0#+{z>{D$$^ zTu~GA2mU1kj->!T6$~6`G4Pi)z(uwLor)4E3;JIKyT}gXYloRV2J?3XX5~}h0=KYV zvHP$d<0Zk8xspYaXC-SSuSm8_>LqP42jXK6B)yofNqr$YDJ^nSGDv$>d{VSl8?8={ zOp4V+gPNo9-KV6c`L2;Fl_oXIcN?D)6Q2^FmYtNE6P*$p9iNgG9jl2E%riMoF@9e1=BK9|5J(BnfVLmNB-xP*}i)Je^DZ_YH|H%ft)#loyUH|1j(b4g_0K}YhexdNLnSGl3vMq$z{pU z65h|xZ?@kuzvX@gzh=MVepmh8m#&hok*=2}NDb0Fsax71?UUY<{!@D2f2IE#{}}&F zf4zUJe~15Z|119g@_&F&$CL3K+=>_DmH0bE01-q?Cc=p*!a@`ft;7-H0`WTWHF1~t z2f-5~q=cMEP9YbN%gE*AK{AhQC*LC9BR?WPBflhXlE0AuAbIkBfFvL=KoKw{U`{|- zz|w$c16Brv2kZzq6c8Jb8ju}e4JZp}4CoCwA8;+;lYlP+z74n&@Xvq;fnx$E2Qq=v z0z(6z3|tZTV&F@GTLTXSCIqGjnga_1O9SnJ?!dOd{=id#=K`+;z7_a>;KzYC_{aH8 zitF{JRb2WeDslmZzI=)i_A4&c>9%tj2dH<+{-ZW8D=Qg9GY0<|O9eAB-aGLLN;pU) zW>vV1oYsry+43AU${zGKd9|kgb?$TWQvQ(x{cKb>-W8KxxtCrR(< zt$ao3CZQjHA4DOWscF!UThB9zM4G0`W#z1{VsCLvE;>Ky5K}9>Ubdt7;Hj9&s-7-u zJNTYk(bY$0YU9suq+i77bv1-%4=QeaFUD9$WV>;fF+o4ZWhVLtnXN8GG za&k7~&2BVssRMn7FVJWfaqIoF_pT=%+t9%Yc}RjAs!Ub&%I?0xW>!W%M#%=WF10L? z;vT428M}r7}gE z$8lspYu9iV^ph~<5OrKA%Oy0`OdBUlrDldQf0l(XxicA=JA>a8OQ8q+YDHCTZFw!- zL%dO$wmFh&OG&GZpVfG-Aw&{|LS)1` zk*3;ZQvUM9SVnk~*q>W|B9nUpt-wtlOM{L14z0wGHrXmp(dcOcax5p7N2pfEb78`U zGAgklp1mb(#9!_?m3)JiNp>~s5^8YS=7_=r z`?!e6qC;DiM%7_PmKdLRP^L(($W&{U`^c9mZ==Ui#iDz$cvoSw*P}d3E@#x)T2nqN zMJM^q#czA@BAcz)Mt3&1w>MboGi$g-$M9-hc4ZcwompVWi^YThzCuOQsIW@Xw3-^5#o>$+P-$XYyRXN?9%u4ZNfH=qSH7`)|)OZHXeU?fU z$@j)uN`~+u9U~)ABg)3xJr(5x%Gb%>l1g<8`_xCc!(gq3w#*i@i4z)y3|v>n)VpeH z9W1Is$*)Gj)t6}fdeED~QC98R;F z?rdoG)aTpHPEN*$qP;IO!t6zqY!D4?rl7tsvd!X&jxlL9tWbgGgpokN~ z*=%#xwJ2K+t}Gkuc@p+)bc|W6W`zJ!{yloMxy#;CdTes>F>_01myFmMl^=JI(`F_d zOi-#@vb;UDUXPRQZR{@XrDY`vz=PtO%wG0&!rNr;r8ZaiyFrib61Of%qD)vgB4+XiY|j)>LJ5=5pwf*^siQrzidz zeXXbOd=DpUZFdbEO?9MmGDQ+4BY~g7KnGnccY=IXUYX{pMQN6FaA?K@;0ba%biW8-8Ij6^m(;hqGoMI%y_F`TYQ(wk!A>I~f+ zY9YE^uKodoBZ-rHyW8uVxi`+@S58-YuPf&m71;%5y^&qD3Ab9z79%Yq2dY49{!X4L z>`v)qHSKtt)>x59uOPIhVr?pyog>T4t9RvbbI=yt+>+nuRrXdl)pfFeLoea=)s-$c zEfXSO;qE7G1Tq>oC|gURcv-B+|Ni3L4_aWkQxdMm8R3 zRz^7O7HbXn$tJwcSZU5y%1IE1QiNYnX!F|DDL~Te8JH}zJ97milOPVg`~`YhDob>L zoOFnC(vX&;Ri?VNoiY%AKeq0D^0~;wRh+PvkSRWm9$3K&1hFDIb|uKb)O3&uLJg^I z(RKjeU3oP2GZ1&gXGaG<Mb@u4zui&4Ls6*PoAp9ztXMj)0`&Nh$7=!xJ!N8wKnO3())Yd>gGYqbvb2~L(+ z5r6u0MPCnlPe!(x+M=UP8Vw5*(jv~rAipV7_Tlg<2^!05U~-a;F|i#6pjsO&M~|gD z>Of%(NbQOIjn_tQkaB+RkT3TS{Bfx)Gaq!Juh0$&bTtGBI!GatV3I^EbtdK*gL$P` z_cF<0Oya^MHcT>rNlGwD4JIkZB(<2tfl2I`qzaQ%V*rjzDlkczL{f@L3MCRRCh5T> z-I$~SlXx&myPu>Flhk7pHzsMqBrTYv4U=?X5`d>0F-aW;n6ji5!;&RnPJyio2B@SL zlQ_Y07FBT(w5b49d_?lHq|k4H-!p#Ies`tYrD|!hv{YIny)6CIp8)mR?tc-ViO1uo ziCM&cB9*WaUl2c%bIAzuJo$UTY*2@v3D_Kv9Pn|#cL99hQ-MZMYd;Dcp;l1|GC$cC zS)r^;_T!jYW6Wc2jp4^m9Q)kZ#Ig3Ve;xbl*paah8MeKI#WX0m#+ZgT!)*W`1`F-pDiu+pyV zRlcgcNC(l6(M#xUbRvC)zD+-v^2n6vDX~)qm^h|{DPyOw92>)a%M}7RGC$ZH{L@s~ z)Fo5*PA#80F!htEccx9B_R_TEX&+Ae{;|{3L#BJD_f9`P{p0Ch%vd;M#f&{O4$VlK zQ9Q#oqi#m)jPo&D|-AOCdr-r1%(0^PZn)oA*QLnovt&;?A5S~VVA2H19cC56a-mvSj;e7monC_{RE@-^5%Ed9Ly!(ny!a&M zgeSSY1O*R|&#a@+cgLuRLiL_{0*G&EU9WuYX^;JwQz3(C5+ifp)n|gY;SFC=g_lc zds?fC74BU}_hx}Ij>ZtP85s9^kmBomDYW}1v|Gym$RkC4V`+a*V|G(iu_1e8>PX!r zU3PI?LpHFxvbu%l&0?Zbt-RWvncBFa0Q>QWHuvxlb zg#UgE?`*3oJF5JM{BG05Cs{#CEZwqoDfc3oUSb8!;?B%vFW{-#lEOIUdh%dxY)>+) z>g>%wO8-c7mzOuSa@Q_h+>RR^4of55+0@d}n$oGS*A&%4p;Y;l$}(fx#Y=`GH)M?Ffe z0*B`sjQSi9V(IN3dtHNz{Ta#e)0bWSABk;UHw+xO%*y}D|7M`jJk+VkDP!D?jm|pu z_E)$teG!GGleeG7jdhLLpp&^h9iFs?92X}%iu}=Z^a$>>yTrxFXiL!z*o)9pZ9v8`^nUeG| zQhsheRpQdsu`a#2B%2mCx~OmlP0&$j!VD^d;%^VHRaDt49ra3Ynp>?gWoMe$5$e7I z&()c7vXtt!jJ7t1%k5z0I~Wvyj7q2OFH`V0&^b{&nW62Wdq7H|LyF;LLP;TmLPl-~ zA&)aWOL#r50S;A?okn*|j4>mH750;I2Lnop6vd-k3e->ZwpO;baUI_B_5me|BnOJx zQ@w1fCap4o7H&SypnHN<=p&wwj((mKzKo-Ud&D0ieMrJrK)V&g%M`*gGCVyel@)eE ziJe48OHMc^EEDcQXYLVKPo28Tp{?X`YiCji+uc#!d0YvPS0hesfo9meFC@ls}EEL+7ENIzpG` zsxolNPQ21=DL2t-P-5b`EbS)lXbx^}tIPA!NJ9*GE4tb^cUyT&w-P0g{Y4&e$Xab> zA}y@<4KH*EeV)lc^_}kKE^mfM&21v$tg1Bb{ycJDW6n92$A~k{_2)R0MxM=e?_!1T z2y`w)A%qI&P$(%crG6f|`^Vg{&g{ zJjE6LN_1*uGnts3n$GPa(;HKJdKx=g*#8VXpD7u-GgLAZbPpKdIt8-c5v-&z9o8{k zCn{?v$)MkowC0>_P-88cB&A>>Hy(|8hehXzca9!=n?n||+tQZZzy|%JAzN!tqR~mx ztMh;rUIYY%tYpw#bWX7PX5hvUnqSWhDN-^rlU2=WUEBqts~Py=@G{by?nz}w*h+D2 zg>yp+G#^UMC*>#ztw-~Ls)MFdpP<__U|~@hT0b7eqTSHx+x)zIs??QZp@hwkGeN)H zMAb8>eg@_9^A(6kX1vK+@A4`;iqpI)wBC?sHE|>Jh4yrV&QzK@Ii=3rVqp0&!HZiR zE=vR5;c4&SirY-iOlN?+l0sE+K=3Foj*&y1a2c?w%N+C1}I$V=c zP!z9Rv50zm7b6spG$>SQT9v9by}hHQrM)A)HI45AZ*Xg`Rlv4eNvBSmA;Q;H?8 zJ#)LSzuwcvs@skl`sstz;seZ3GPA$vOfQRa$*VfYR(1_BXUEEg910g^DD<`s+xHc{ z3W-z5tF2BidzN@8z5qs&Ab;Lc#2iIqa1>7*5yot%gl)r5;odw`TLPVE)~c)=QjF|V z2n&cWkOwa#{@CyMMAS>5pzl6MkA7ykwB<5)>74V@8%i{F?canDR_G;$M%F3H8UBWU zIV108)`E}&V>z56h9;^gu@)(SK~~^w);-kyCJ_vRPVvtSq0n|P4KFC>Fg%5dpM|+W zp?jbJDE{I$s%MZ*F@rpiY>j1wMZ^|U!|NQ{NxoWgvilf|z(&DO_7)buPNOlfk(I>D zaXC8=aRMdG!J~H@64oh&a&ng~=6Ecd*xzRb)b4rW?t5?D;{fZ}RmjMrDcEo)=Kw>5 z4dvqz{0#%chYl|T_zbw94?dHds8R01Umi|U%w|SDCikfGBf;$5Y^r~QLlc3)&ma#~ zrM4xodj`(uUZLM0-nr0lwU2A+EAbpv%A*)yH@-0<9f{5e6}YLsK@=cOo{mP7%V_6> zL39rNgwEj(yC~s0vOFL_a&rL{ctddDC}$2O@1bA@hXbIqNpa%b4NpL9$pCW?xc7u9 zL9e0_{%3_CM=#*QxO67yYyP`3@~$uy*O5uCl!2p;&Th7zyo;vdWh38hq=u7(airKU zbYA2$=sCqGo6*>zrdDz7u^7&|*zQI}Gk1;{~uwmF@hBW%G9d3m}_TFbaA4LU$3-5ELt z9mxa{qClyHi$POrDB)&0GaTR#ob^qoehViAH!;xK@`;Ef`n#)7_GlZExy^*;tv4^? zZ(eLZ{kak~lArCq@?30Mb{fDK5yDD*+dlQal}e$GJXERbNMbdu-NrupSgYOB!M%S4 z??gKlUB>*rC|a$}Q0c3)fyaAaTJk)eXEj^RbXsXsJ%=3R8GBP-CyVw0pk}MF)jH^w z!&)6Dl#!eA4Ev(lv@Bet*k!=kG8ulEqLo0MBP_17J59}WM{83@lcC96#|i1^27Zh9 z>WlMtxa;H(&s=$i6@GX)KrPXAqTmp>nmlyiFbF%aNI@WH4Ubb4R+#~nZ)h#D0}D!^ z9GPwviv~wF;1&5Uy;Z5#lv`OLSxxC%Grb&02j7}6Mb|*W+z(g;L~$<`=y%G9MVPXP z8X$pGL=nxuGV#JO$FY8{_ekZyStb8EVA!vd;W>u=ETDw@b6i)r(RceQV|!!RsQzQ7 z3$#dCO#nBe5wsCh5`H|676W}RB#otpN)wC1M}U{r)?{_l-8D^ZwZL+C9bV}ubvc!2 zA!J-EO4{LN1r(n@vA?FOtAXo(8+W#pmbEJnQ+x0TLUkTTAClcZbUTR^J|tD6Zx2(Y zhn?wc|3*Byp(ekdzCrXg+Xif084+u1&g-M)85A1#jUvwskh)Us$!P1fw|QKm{IjB9 z!HR2Lc1)RN2)?+@UTJqJy;`>>!K~35SOIbiPzv`L%)s?D+6=X! z(rg2TY_;&FxX8mz(EU)J0F>?1MU;<`iKa#xh2AEFe~k$EdeCIvA&|fia0t(G)H{@=0_J_ZTfLiF8tKx)y-RCxvUcRc`@J zSlgV{>aBG(Ia#@|Xh>2r93|cCA2J*@MEdl1e#h{hos@hkBQIuI0$K%=F zRNUkmNbjL<6P>;8jxNsa#`DR<+Qg$LY<;~f{|opyK(*C1;Qeu`M$lZJ7Gf3cC4F@c zwzCzlbvSAq^oN9_p^I{vvX#PEGTUGR#CGdmT$i0=HPLGblc@%}mC}mq9VLD3O8H}q z$SXDt{tCjp2?Tl5`-)W*KlVQ^h8sk0ukFN{nDPYfuJZ2 z_t_f1Q}Xd-PeFfVf=->xnn`UF-WikBq^3g&jUMoHPJ5;CQEr$9(Sk*H`f%q zo0SiT3aBACN!ss9`Io?>bGayXUnJFkD83|%UPmORj5<3|B24wjuRbRSn)ULF&is(5}a`G5=>_o|lOG>fo;r)>eEYCnD zN`XF0ks5snI^-Wclat2>P`9S^g&B}JU8+<%-MV7$z!;! z+E!zy+YTp#Z2HXiQvM<%pGL`#QfU1kFCEOHULsTwnyKNka&QOP!;Jg}*|w2Q*?3BK zbLuJjJwnZB2$SCFGH@%e}B{{Fy*~@ zeFvi~iHU4JneN6rlareh>7_(HWg6XQj?sOl?ryf8pl=eVyzO2u*U*3qQ9GzPXh@Nv zw>;c3`fQ6OgMNj`*4tb;TzaF<l8kxof(pI!pRP(rTc@-Gd5A zq(oBO)!?jYq&tY#){-0tS8FIS>6A&X)czAyeZ8m6y@@@nSDoaDp_dcMsafeN?)eS) zF|sGOC)(#=lRv}A!S|?vJ^3+^DOv)qrzJlTE2zhl;+by2MeI0y@W??nrthTrJpC$h z@vQA+KUd$>0Gql!-L2AQ>(cVssNC$LD0(;XQd#$9PCnBoA=UwAjz)$Q0*5}qUnTqU zk3_^9RY~j`QdeQM=~?uc@ByA#({RW`ze9K$jyKnE=rQyGZmX-Pu2+IUG`7b_U|xIz8}#ZTa>v5tA97JC-dmhMaFCA7k4+GX ztN9$D9x1hziGB1DqQTYZtl?h!;A=g_oT)QtC*<_|>D2cc*& zmn)PeFWm8iPsbSmJ7JvYshf3I0j?=ywo>IzYwv98bT_bI9L+{@VK$!8(3H{%yQ8(e z(d0A(1`>i+BKYEVm&4fzyThYO$x6=1VFkzyis@|Jos-p-LaQ>gs%(eRZs1S|sBZF= zl>8M&UJE-2Y{Av!$=reDUbeftX5f?(tpU&96e32Im#pD3G{sq9lrAK97<0C>%N}RG zCN4R1c5v_}sWi*2VUye1^N!GH3Ro76j9^v#>qyAIkC0F^Xzz;0K|dmnwA*}^dubC` z?hDD+oDG-QuV+z!Ss5E%~$BsMuAHx_WD)nKO9 z{`BEbk{^Z;80hF5-l%BK6m8+9#IA(co!nwF(Umh$${ukx_Hgfz)fE-h>=B~A+G=!i zh!hAsv)N+j4?Zr+dx_i3$1Jnp|e&yjiRbNJRSwtQT&97 zrz*VXi@0nN2))^V*xGrJK4?veJIrN^VCnTehs)Hb02)0uJYHd^)P$3fqw*oN5THs} z$9Y3np`-KAC4~>A{QV(5`8ya|4QL^1m_-HqAW30NFzJIcMZ+s^2w8F{^!1S9I?BU$ zQ7;O4_@>pA{2&8}6nY2Lop}JWG?Qo>`p)6bIj*mq9PiMY^lDgW$0T7ka_GHUN4#mW zz98q2BLi&{zMGUOgoxOZ5CH&J#6|`r-VnbT+8L5uEM8~{VM^6GM+a}`Ej6vd@o3FowLs3qCIWxZbyL=+@dqkc)UrMRhvO) zXXoj&xjE0`>Di{VG^Ng_vm4lfeT!ejQ_>7twKBa{>sGUUl!h4FY+eN(QRZfvyGHFASr;4O`g)>dVGUcK4H#+>>7W4yD~Gt^$%#{4-&L#2+f4)>f%+3hQoD*PWJK#c#XZn0kIQ+ z)fsg8IwQMdJzi?bEzP9`Igy)NTx{WXT!T*OstmL`Ekm7KVX856m)GKj#>1el0hE|i zrmrxv+t%V1bD=3$scy~iy6USym3r+OUR+aKTuUQ4QCnMD3VVM&OjLb72%lEBx3 zv2)u#z$=^pDJ#L!2H0k%uu+&vfT|}!wIUR~=NKjI{vVLKow0!H1AQiHfyjw^Ko|UA z_yx&F{JTI^eAsTL6*+e^@=k`oHq0oRolaMqvP0`l)#{K6=}nfF&5 zKB@u3M#uyZ#%ZnhfiS%qr?#FG?xGA_tfYnyQwVp#Yp&I4j0s8+eyMj>1N?#pQ6_%0 zt)lFV@)~(8zar5Mm4pAi+N7`6(WzQ>s>W$(hJAy69Fm|}{4-J%<)F}2J%n@AH8A|Y z6w3>#&p~T1WzajHlew@-`Ug=kq{w|KD-mN$*0l;=Wa@lCZP3_chHnOzJF3gqX~)^7?d}0^yd$M!}wEZcOBY& z8SMr*Epu3^u+>yJ9LmlNw@R-o(3!!o80o_EEQJuIl;Y0psB=}-RUv@-6?9ve z%Ktc(;`>Ix2~kR+oiHEqXomtdAsyc4t}O3Uel~~NNJ7v+{)JT!|B$A;&JQv6@~C=@TGp(Wvi+&-E7RywX!AyKy`V= z@$}O~d|qi=24`~NwN_)5nNC+_rPD)Hu8pgdYPmGp1G{ zj9o%%DG>pN5hn7Ol%Fv?Ly>1aY_-BJ*Lv;MmDSbk&@Xs(b$Ly#vNNGgZ8qiS<*`Du z;IAmK7UkzDHLcoqM@r)da{nQ zfV1>8x_W!EU5VThG?tL_Kf#QS46ll2TxM56W239mHD-DuBW|p|;b7?<2gP^7wgN#h zW~fQ@+K>C+G|x0Z{Ti!U(}SL{d(6qL~wn_orLb712kmlaE*%+p1dwg828)TKpTp zA7Wb#UKY)o1+KRcq*Cl9P9YgyLCBw`0B(B>X0H%^p+JXz!QJ-Sh6bfKvn|DHJzQvE zg{4p9=nNnYcgU~zt zrYQDI*v`e^7BOdoTckDJ+vcnTw}|%)zT161@e=*!(cV`*9603g`d-J8qsr6fZUD6o z{O#@E@G5&1Y!q)=ize2PpwhF(H2i$VzW(j>rkJ>0Y7VUf@csqi^@18)-)n9ePMssxrx%Zcwpd!a7`^mv6|V)AQ;ZteoaG zTtr+$fL1O~6#Xw^xEcp>AHIp*MQErYe=Q?_hAO%D+u+v0e-4g+ZwO7jizW{ReS_{E zRd_YH(Pb+Et8pFCNePq7VQ**{{79@AmA5IBIY;;cNP{k>&m^A--?NGfBcFbE|0nDK z(QPZYL*!pLzd})4SqR>~pl|B*WtLp!JYjML6?9Qp0kNj7RpvBqDY+vRk0a8OY6iGB z$o_T+I+ZV>zz9OmpnHmp+}s=;1UYIuYHG?WYuTX-xRCfike!^-PD{lx(q@ouTZ#4 zDjOPEyQ8wal|Df@stR&zxmt5ozFsLfNJ~MU#lo7*d4)zWDRK&n!74M`58E6{^bNW? zx)y(|1Xn?UvApE3zYdN^PYnL$=k~$!UxLmd9zvSdF>nXNGyC!=c2S^(1nc$V>cw*Q@kl0U_{gLBZq1%8A^3_P6V4oBxPhXZCOo5PIc^PQ6CLR zf8gnBUtNmri#o*#IP%BMj?~UtWo?D6kqtW6NPJl5{gC@Jd2#o(Cs;YZ7kqghpjZ#T zS0N+-6j@#iU>S%n6wv{C1vMyQApED#Gb-Xx%Byb|LGWZVeu#05jK>8t8C~iI=dagO zf1E>`%E*kS*6delXFPS7JlJyRBla5cR>|NddJ`cZUJhtV;2reXAX+vked`#tzGTid z`l@h|NcQBkwt5=6Sak6!d97q{J&hWLdPRf1#tCsmpW~H64w2fF)#+_%>R@^H338tB z^gQ%5{=^7Nq(YQiXA`_fIhEw8<+#yi2mg@B-SUS}Za5|6?s=R!PoTLIAES1lTor}# zfk+3x9DILp(ICnn9RJH8vJJjI81yZFbtx4zl!eMxGW=fQiEJw9+ZU<7-9rUF2e0>` zgEt8D-ym>FOuB|i_MLg;~%zp#`t_?mwuWFG@+z~oQveS#)S&`I=|6lC8^(Ac9b zjPTSa5!7oVRD@_K@j(iHWyr`%a_GL_=$#z>_5&&hq4nGlS`Ev3c6h;PcvtAd@Gc={ zG@vW=VL+EC%~qpww3_g(d4d>0mPHAx5KZ(j_s;-^cJ)OP-v7byODp<^Ed&ahd784S3>B;tk)82lVeb_*Y^I8SsQD~RDD$e73? zHM@sEMZ#^xCPq&Pe&|X3lJn%TkCYe4zic?ak`-2rq!P*Xx}JV#JE$7#J7=COE$h5&>1y~x-4x)q5oRoiCp)=;`3`$LNM!VfvS>s@@ zz533sh@`X}Jp4d`YK?L_xw=w)(9Hk380XQlsuyLnj zM&tDa1^F-_F(z>|ATgCNnro^pTwE8fcNW+il}JH0R@&>F?2#V4x(4VU#`yyOv;>9l z%SC_~Ht0As4tE;$l}1{fk*P6O>Ve^)al)U3@xnOVXe=-oMU$e<=@j`c8jr>yUxE{Y z%jq^SBb)^;ux14@VI2As?s8SuIhAc0z=rh&MkDx}VOdep;GbdP0MhISvdoyci4k5T z5|T=LvpJ73*P95g^(=Kl??F!{7kA=V{zbYAH7R1vmEC&I*p6G8^6K2mwyHXZhjn$} z-St)F{q$8gwTW1BNV74CQ*Xy}GxCxXl`30;L(8`8$G5hhN`8-i-%ZJ%q-LV`7gJAC z=!$tYC6w6CFXioG(|rKf><(yb`2FV zM?f1v3E&}>froS=zYo9a@*cekg!O6kF^F?q0UIG|CAitQc%!cxShPd1D1^nthsc6^ zi0=Re+VwHoMaZoT+LCFepxs^QUmF0`b%!t$BSA*37%y1R@C`dw%kp7N5I?b7hRr>LhHVUAerY35<6 zJO=WQN85%P;1l%r5+-Ow2owuI#(83aQRmKoJ$@eaG49UF>5Qdg4FE!ntOM@-ZW)PM zg?I6criPROT09}a@#{e0x`$3~U}iBJ`JWe4vzX)j575s%Mvpd>WRBknE=OQn5iq&E zzR86%2P4$T^%!P96A<(@oa4Z!Q}S8N`r+kIK_P%9njap{xc%^O#y@5-!h&IX1EXjD zj*k5uPHlXO^n9$sV#}|tQM#PvZWcu)P_D%OR5s`~`mU?G@lfZW_7E@(| z-wmGl;k_TmXE3TkG;=WKZqSGsj{Qu7V?SB3T;e852giQ;;MmVPIQC;cz*!DZM;{*h z2@)_=!tbtNG*!$T;KwuHLtxfVWg_^t`IL|F5*Wbe!)_N-r#;{>2ig;Djp=WZuTYOM z@9_bla7pHIv6p{8%0M6E27~TQgFe2&FP+ak#&q-Q#mo{)c!s|oO2PFo|9%(~!CXcg zKouE!ZO}Fp#LuIIS;JTe74#4BybEMnKK#^T=0(QMKQo`2M!m-yLgA9k=lDwcn)o=F z3cB|O-#4F`Ms@Q)E{2Pn|873@4D<0`Y9_eZ_&cF+9ht@d2wm%7J`>xUcz2&@VnGjo zo6ZE?6Rr-Bv_Tz+hc z$rcw7e>g{%q>O9QpJ2O)8xVW&@Vo_5ie=@aM>cl-ilgaz2)7_CT_r8mT>;1}8c|K? zd?PyFEGa>g_&sQ{bT|rqpr|F$8sQ0u58ET`7M2Lpg*Cz&v_zPJcB6oQT=?_5><;4P z@THNV^pat$8B8ZehlwX}`|k*UtDg=sJ%frNT-C-JXha@WPtIwi;zknGNi! zf5LM$@lPQKudtNmS(KK;d7>@mH-ag;+Uj2Sa_CQ}4zF&gY;r5z1x?llRuEsjuGZ8g z)5#kBRtPZqlTe3Sa|*IDlo^#-)u5e=FSdHy^j)+VUr+(a(>WrY3Q<5%zR)tV7l*(g zxk6|rP&2HBNDk10=E+cS@|kE31qWmRO?4thsq@-`LsxUj2?N~(`z zzZPD?XA>y~wMOI8c5(oTebn>TX9?U=v<_mq^6G8OEwmADcUG0x(REctDkmqNlyR!6 zvy+smc{;O(T?)3@iiDm`ABlKcr_0mUW&q_`3}p=E!=*gU1J92Z^mtZ=B|Sr#Qu|QVDVr@VSskoUfbQdUxq6#{j!%e0oYWde=b8=|ngGPp+(9$%NWL9JBcMMl;wLNK{uF;#n7NJ+^b^;ineP&B zuf$)!q1bl?Z_QFUgNKRd}oT`8y7&xyWvXKNF8_R86CJguo6!a+VKPIYyH ziLsMBp4=J1E+^tu#RBRNHsMBaP^_m{;4dTX$vtM#>7)OqF@{db?=9{Ga zR=#vAD6s;)m4PrbP+uRTHWJ-$;FY!IH8sliv?fhXjwKy@$un_5`#8u&Vw2#H3x1C? zSBS*Tcz*8TT#HiGlGWDGSli-YUk4_VJquK8;w>=Bz(|pN&!3Qjo&fsmnik5zrzkx3 z=K3~ecY15G*;G^jnBD?m1D;~knN&(uy{Xg4^5TmEyQ9cXceS*3w`JCAAz0!AGzG5` zV>cewIDJSFVT6DLr}`AfuOUu2ydF5Da*z`yqaPLdr0{_-1=pH0bsA+-OInxRQC?|> ziqQtV(^>BTUzyI4;)JH*MWxwPZl;sd(~>mJIuFD)_#ERBv~>{826np@MJo0P!T3P~ z_(SQY#+qgu_d1$~BNv)I!jPp5&s=gdBfAT!HwpQ3)N{;!Y8|yrG$EqUObPlonkj{! zCRL41dCrf`5PnMeCWU1azk~SJ7^S_7p2}Phj z>2@(bIK3M!l|o>zU6EK>r8-6*t7`A5cW4(s8Pu?o4`bFwCX-@B3_g*!3^$Ef2pHs$GbCB6aJwtUrtg#x*a;WAix-h)#9>mCA6)xOgMvl(yHf9|} z7lUf^C8+QDgP+3gyMbma0K0J5mF?gt7Qew2VNHqPcjB*U@%Ni4Kw{ z)U5|ukd}MXwFkM8rKBnmPmawu0YKN3(OPXQE3aawkx4Dt9qi9UcTZz$3n#E}4D(YV zoLIRS$hm|cD7jvO6eTB02qB_`WZh34dN3xiWQ=T(8k7xIj2Q#pvBOalP6s_aH@+JF zw~;OIzlxlO|FPq3_}>ve#=ew{m5h@pBvU0XNi33gCBI5W{4l?neqnx3`K|Ix^0WCh zNFRff;yu#S(yygIN`LW}`j7R0+CSDm#Xr|S-@nY?<~uXq>wm=mlK)ja0DlzUg73i( z;c7e`ci^w#|0ZzaQQ{Ti5FC2xAkGk<65kSkBLw0BNs?p8N68iBMsgb&MJAJ4(m|eu z)8hBYUjxPkJQ^@9;HiL@0yYHf^qmh^2V?~p0?Yx218f0~fR=!sfPsLM0T%;44EQwQ ztAM`+{4>x$P#zc*I0;UQ&k0-<_gA=z_0^5wvhd`ATS7LMS_Q{i0h|k_WFjuPoZ)2W z6BGN^)9VxC_at(Qghw-z&2V^pa%q%3y*WAHtG5;THTg9TrK73_&N|;kkKy%pTU`s? zV$_3UPBs;kBN08Cco($~N~bfjg$yX` zG6Ih9si!fO z5cr}3;3AV=#tUkzifd?3liO2oap|i$VZvv4jV=cc?did92_YF1R^WQ8#Q+FsQ--Ie zsuU1VxuUed4Cl7fb4)4=mlKX3&MUU&D^o$RG}YC1)UwqrD19$pTnVTj-O}J_ui+Z5 z;AOVb>MCUih?XpUZfY)TO~>WruG+Zc32aJ#cfl$87SUZ=;%evK@55Ea5adtyxH>w( zkuM{Yok>TIIJ>*x;N2V;t|33ypjWCJ)b1)81Ew>1;{{F^ZKnnZQ zR##u$XlG@L3ahm=9}Y04q-Iy>;an}+zZySWWrOqS?gpX0jbiYh;$sm3bw)C8|pB&QAWpxm8dw*`%eNR>b-OCy6e5S)_ci1`WucCIwO1KwPHXn|P74TNfr6=Q-eapXJms;}K?3pu zIy&;2o1uZMCsV`ob)Z62DV+@soos10wKKSZ#~MGK)G5PjV<{}d*5w|qb;EEcCM>OK==W5cc9lH zZz|6>EhK>L7nl;_&On}kGHO#xUPq@OHx#t3D6z2xaByfv7o4?ADX3sb5o$$Y0UXsk z)&*ySDheu?QX4qbGnL{Tnd$4np1+*zE=UPk&QJkG=z7?Ytt!oLfJ`C-tu(3M038;0 zVHmr)xB7A``!}frxxB5gWfxI)(cvQAJA z7Sw>cuhb0WxN(%@QZI7Z<}GF0nT?Zaew0NXp}b`F?4c_1kO|~W6EtgwL_@`7*qlrO zo>CUGqY8A4U_0DTx}IEGmQzp(pcj=H1#4l#g*lZZCly9BL*ip15^_`EFav_Aoqb%6 zNY@K=Qc7Sqj|tm(g(d7j9r|YRx@-wEA~rfAVM}5uocjmXCD~e*4$~pX5FCjH)>fLo zr35x=Vyhw~>oQ@ZW(Zgy^cLBwv-C0u2eYL8^K?|Gx-Mj0N~BL7sKL@pi?WIf*!hK7 zTZ$RGs3lqXsfDZ(adOsLrYj{rB`Z==cG}W;icV;&3XS}nb-Vz+QX=Ii7$7lI75sD}x*$=1{U>C3%EFMXg zX(hqBmRwkRKNAy_5PUSKj>}IaBJY+1I02=uuBft+ee)n0p){7I3q#9e8``$kHMK^! zhgY*}Ljv;!%preDU}RQYC|ej6E95i$K_ePF#%c9Lx(3vQCxD1HMF$}VX6Fa|$lSeo zXA8!1zed?s zvT18M>}PE(uVx?vDKrEQ8h~UD=R`ONz%G=ww#Alsvyn6!5rl#w*sLr9BoLYI3m$2v zmBOG+QyEcQ!;wb{a4y>`(^igp*_VsbQWBp8_P4952Z(P6P~*^vwl~)5r^I zQFcyA39G0mH)ksok>(CaN!T0!10ETJ!0~D_A{7qM5$chQcCTHm7QcWzcTn%I0!2Fs z4cS>-O z(+TD5qidk+BT&NE2&^E0u0I|t;R3vL?mHzSSo|s=HyB_*ICLCj$T1o)0_X^!4_*ZH zFC1PMaLnT1fBt=EwZO(Kut@OU7vlvehSB1VDE>#m%u#-@?Z+sY)OF8mIZi(aq!;)C}H~` zr+nN&ct;leodLN}8$$2GBanI#t^-#G*loK2f9(bCy39=vd`kf{5zA>kApbQ3^4s@t zUjXQa0f4O-F1x}3X)z4m-vqf-0_3+Sz&p%``$+k|t&b6(e|G=6baHz$pb%C=KK`+< z+|>!-*fznNmqWfo0cEijFd1C{7mg2ZZt!;oB(;TrfA}lzKH#N=12$qfUK7H~a`FcX zvG+hd