]> git.hungrycats.org Git - xscreensaver/commitdiff
From http://www.jwz.org/xscreensaver/xscreensaver-5.41.tar.gz
authorZygo Blaxell <zblaxell@waya.furryterror.org>
Wed, 2 Jan 2019 15:41:14 +0000 (10:41 -0500)
committerZygo Blaxell <zblaxell@waya.furryterror.org>
Wed, 2 Jan 2019 17:11:22 +0000 (12:11 -0500)
-rw-rw-r-- 1 zblaxell zblaxell 26903096 Dec 28 16:59 xscreensaver-5.41.tar.gz
ab93daca46d3089f4bb3da57e0419541b4b5aef6  xscreensaver-5.41.tar.gz

543 files changed:
OSX/LaunchScreen.xib
OSX/Makefile
OSX/Media-iOS.xcassets/LaunchImage.launchimage/Contents.json
OSX/README
OSX/SaverListController.m
OSX/SaverRunner.h
OSX/SaverRunner.m
OSX/SaverRunner.plist
OSX/Sparkle.framework/Modules [new symlink]
OSX/Sparkle.framework/PrivateHeaders [new symlink]
OSX/Sparkle.framework/Versions/A/Headers/SPUDownloadData.h [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Headers/SPUDownloader.h [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderDelegate.h [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderDeprecated.h [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderProtocol.h [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderSession.h [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Headers/SPUURLRequest.h [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Headers/SUAppcast.h [changed mode: 0755->0644]
OSX/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h [changed mode: 0755->0644]
OSX/Sparkle.framework/Versions/A/Headers/SUCodeSigningVerifier.h [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Headers/SUErrors.h [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Headers/SUExport.h [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Headers/SUUpdater.h [changed mode: 0755->0644]
OSX/Sparkle.framework/Versions/A/Headers/SUUpdaterDelegate.h [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h [changed mode: 0755->0644]
OSX/Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h [changed mode: 0755->0644]
OSX/Sparkle.framework/Versions/A/Headers/Sparkle.h [changed mode: 0755->0644]
OSX/Sparkle.framework/Versions/A/Modules/module.modulemap [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/PrivateHeaders/SUUnarchiver.h [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate [new file with mode: 0755]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/fileop [new file with mode: 0755]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/PkgInfo [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ca.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fi.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/he.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/hr.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/hu.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/DarkAqua.css [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/Info.plist
OSX/Sparkle.framework/Versions/A/Resources/License.txt [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist [changed mode: 0755->0644]
OSX/Sparkle.framework/Versions/A/Resources/SUStatus.nib
OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUPasswordPrompt.nib [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/ca.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUPasswordPrompt.nib [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUPasswordPrompt.nib [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUAutomaticUpdateAlert.nib [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdateAlert.nib [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdatePermissionPrompt.nib [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Info.plist [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/MacOS/finish_installation [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/PkgInfo [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/SUStatus.nib [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/Sparkle.icns [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ar.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/cs.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/da.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/de.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/en.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/es.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/fr.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/is.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/it.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ja.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/nl.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pl.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pt_BR.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pt_PT.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ro.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ru.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/sl.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/sv.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/th.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/tr.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/uk.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/zh_CN.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/zh_TW.lproj/Sparkle.strings [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/he.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUAutomaticUpdateAlert.nib [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdateAlert.nib [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdatePermissionPrompt.nib [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUAutomaticUpdateAlert.nib [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdateAlert.nib [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdatePermissionPrompt.nib [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUPasswordPrompt.nib [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings [new file with mode: 0644]
OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUPasswordPrompt.nib [deleted file]
OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib
OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib
OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings
OSX/Sparkle.framework/Versions/A/Sparkle
OSX/Updater.plist
OSX/XScreenSaver.plist
OSX/XScreenSaverConfigSheet.h
OSX/XScreenSaverView.m
OSX/bindist.rtf
OSX/bindist2.webloc
OSX/fuzztest.sh
OSX/iSaverRunner.plist
OSX/ios-function-table.m
OSX/seticon.pl
OSX/sparkle-bin/BinaryDelta [new file with mode: 0755]
OSX/sparkle-bin/BinaryDelta.dSYM/Contents/Info.plist [new file with mode: 0644]
OSX/sparkle-bin/BinaryDelta.dSYM/Contents/Resources/DWARF/BinaryDelta [new file with mode: 0644]
OSX/sparkle-bin/generate_appcast [new file with mode: 0755]
OSX/sparkle-bin/generate_appcast.dSYM/Contents/Info.plist [new file with mode: 0644]
OSX/sparkle-bin/generate_appcast.dSYM/Contents/Resources/DWARF/generate_appcast [new file with mode: 0644]
OSX/sparkle-bin/generate_keys [new file with mode: 0755]
OSX/sparkle-bin/generate_keys.dSYM/Contents/Info.plist [new file with mode: 0644]
OSX/sparkle-bin/generate_keys.dSYM/Contents/Resources/DWARF/generate_keys [new file with mode: 0644]
OSX/sparkle-bin/old_dsa_scripts/generate_dsa_keys_macos_10.12_only [new file with mode: 0755]
OSX/sparkle-bin/old_dsa_scripts/sign_update [new file with mode: 0755]
OSX/sparkle-bin/sign_update [new file with mode: 0755]
OSX/sparkle-bin/sign_update.dSYM/Contents/Info.plist [new file with mode: 0644]
OSX/sparkle-bin/sign_update.dSYM/Contents/Resources/DWARF/sign_update [new file with mode: 0644]
OSX/updates.pl
OSX/updates.xml
OSX/xscreensaver.xcodeproj/project.pbxproj
README
README.hacking
aclocal.m4
android/Makefile
android/build.gradle
android/xscreensaver/.idea/caches/build_file_checksums.ser
android/xscreensaver/.idea/misc.xml
android/xscreensaver/.idea/workspace.xml
android/xscreensaver/build.gradle
android/xscreensaver/jni/Android.mk
android/xscreensaver/jni/Application.mk
android/xscreensaver/xscreensaver.iml
config.h.in
configure
configure.in
driver/Makefile.in
driver/XScreenSaver.ad.in
driver/XScreenSaver_ad.h
driver/demo-Gtk.c
driver/passwd.c
driver/test-yarandom.c [new file with mode: 0644]
driver/xscreensaver.c
hacks/Makefile.in
hacks/abstractile.c
hacks/analogtv-cli.c [new file with mode: 0644]
hacks/analogtv.c
hacks/analogtv.h
hacks/anemone.c
hacks/anemotaxis.c
hacks/apple2-main.c
hacks/attraction.c
hacks/barcode.c
hacks/binaryring.c
hacks/blaster.c
hacks/blitspin.c
hacks/boxfit.c
hacks/bsod.c
hacks/bubbles.c
hacks/bumps.c
hacks/ccurve.c
hacks/celtic.c
hacks/check-configs.pl
hacks/cloudlife.c
hacks/compass.c
hacks/compile_axp.com
hacks/compile_decc.com
hacks/config/README
hacks/config/bsod.xml
hacks/config/handsy.xml [new file with mode: 0644]
hacks/config/ripples.xml
hacks/config/unknownpleasures.xml
hacks/coral.c
hacks/critical.c
hacks/cwaves.c
hacks/cynosure.c
hacks/decayscreen.c
hacks/deco.c
hacks/deluxe.c
hacks/distort.c
hacks/epicycle.c
hacks/eruption.c
hacks/filmleader.c
hacks/fireworkx.c
hacks/flag.c
hacks/flame.c
hacks/fluidballs.c
hacks/fontglide.c
hacks/fuzzyflakes.c
hacks/glx/Makefile.in
hacks/glx/antinspect.c
hacks/glx/antmaze.c
hacks/glx/antspotlight.c
hacks/glx/atlantis.c
hacks/glx/atunnel.c
hacks/glx/b_draw.c
hacks/glx/b_lockglue.c
hacks/glx/b_sphere.c
hacks/glx/blinkbox.c
hacks/glx/blocktube.c
hacks/glx/boing.c
hacks/glx/bouncingcow.c
hacks/glx/boxed.c
hacks/glx/bubble3d.c
hacks/glx/cage.c
hacks/glx/carousel.c
hacks/glx/circuit.c
hacks/glx/cityflow.c
hacks/glx/companion.c
hacks/glx/crackberg.c
hacks/glx/crumbler.c
hacks/glx/cube21.c
hacks/glx/cubenetic.c
hacks/glx/cubestack.c
hacks/glx/cubestorm.c
hacks/glx/cubetwist.c
hacks/glx/cubicgrid.c
hacks/glx/dangerball.c
hacks/glx/discoball.c
hacks/glx/dnalogo.c
hacks/glx/dxf2gl.pl
hacks/glx/dymaxionmap.c
hacks/glx/endgame.c
hacks/glx/energystream.c
hacks/glx/engine.c
hacks/glx/esper.c
hacks/glx/extrusion.c
hacks/glx/flipflop.c
hacks/glx/flipscreen3d.c
hacks/glx/fliptext.c
hacks/glx/flurry-texture.c
hacks/glx/flurry.c
hacks/glx/flurry.h
hacks/glx/flyingtoasters.c
hacks/glx/fps-gl.c
hacks/glx/gears.c
hacks/glx/geodesic.c
hacks/glx/geodesicgears.c
hacks/glx/gflux.c
hacks/glx/glblur.c
hacks/glx/glcells.c
hacks/glx/gleidescope.c
hacks/glx/glforestfire.c
hacks/glx/glhanoi.c
hacks/glx/glknots.c
hacks/glx/glmatrix.c
hacks/glx/glplanet.c
hacks/glx/glschool.c
hacks/glx/glslideshow.c
hacks/glx/glsnake.c
hacks/glx/gltext.c
hacks/glx/gltrackball.c
hacks/glx/gltrackball.h
hacks/glx/handsy.c [new file with mode: 0644]
hacks/glx/handsy.dxf [new file with mode: 0644]
hacks/glx/handsy.man [new file with mode: 0644]
hacks/glx/handsy_anim.h [new file with mode: 0644]
hacks/glx/handsy_model.c [new file with mode: 0644]
hacks/glx/hexstrut.c
hacks/glx/hilbert.c
hacks/glx/hydrostat.c
hacks/glx/hypertorus.c
hacks/glx/hypnowheel.c
hacks/glx/jigglypuff.c
hacks/glx/jigsaw.c
hacks/glx/juggler3d.c
hacks/glx/kaleidocycle.c
hacks/glx/klein.c
hacks/glx/lament.c
hacks/glx/lavalite.c
hacks/glx/lockward.c
hacks/glx/maze3d.c
hacks/glx/maze3d.man [changed mode: 0755->0644]
hacks/glx/menger.c
hacks/glx/mirrorblob.c
hacks/glx/moebius.c
hacks/glx/moebiusgears.c
hacks/glx/molecule.c
hacks/glx/morph3d.c
hacks/glx/noof.c
hacks/glx/peepers.c
hacks/glx/photopile.c
hacks/glx/pinion.c
hacks/glx/pipes.c
hacks/glx/polyhedra-gl.c
hacks/glx/polyhedra.c
hacks/glx/polytopes.c
hacks/glx/projectiveplane.c
hacks/glx/providence.c
hacks/glx/pulsar.c
hacks/glx/quasicrystal.c
hacks/glx/queens.c
hacks/glx/quickhull.h
hacks/glx/raverhoop.c
hacks/glx/razzledazzle.c
hacks/glx/romanboy.c
hacks/glx/rubik.c
hacks/glx/rubikblocks.c
hacks/glx/sballs.c
hacks/glx/sierpinski3d.c
hacks/glx/skytentacles.c
hacks/glx/sonar-icmp.c
hacks/glx/sonar.c
hacks/glx/spheremonics.c
hacks/glx/splitflap.c
hacks/glx/splodesic.c
hacks/glx/sproingies.c
hacks/glx/sproingiewrap.c
hacks/glx/stairs.c
hacks/glx/starwars.c
hacks/glx/stonerview.c
hacks/glx/superquadrics.c
hacks/glx/surfaces.c
hacks/glx/tangram.c
hacks/glx/texfont.c
hacks/glx/timetunnel.c
hacks/glx/topblock.c
hacks/glx/tronbit.c
hacks/glx/unicrud.c
hacks/glx/unknownpleasures.c
hacks/glx/unknownpleasures.man
hacks/glx/vigilance.c
hacks/glx/voronoi.c
hacks/glx/winduprobot.c
hacks/glx/xlock-gl-utils.c
hacks/halftone.c
hacks/halo.c
hacks/helix.c
hacks/hexadrop.c
hacks/hyperball.c
hacks/hypercube.c
hacks/ifs.c
hacks/images/dvd.png [new file with mode: 0644]
hacks/images/sun.png [new file with mode: 0644]
hacks/imsmap.c
hacks/interaggregate.c
hacks/interference.c
hacks/intermomentary.c
hacks/juggle.c
hacks/kaleidescope.c
hacks/kumppa.c
hacks/lmorph.c
hacks/m6502.c
hacks/maze.c
hacks/memscroller.c
hacks/metaballs.c
hacks/moire.c
hacks/moire2.c
hacks/munch.c
hacks/nerverot.c
hacks/noseguy.c
hacks/pacman.c
hacks/pedal.c
hacks/penetrate.c
hacks/petri.c
hacks/phosphor.c
hacks/piecewise.c
hacks/pong.c
hacks/popsquares.c
hacks/pyro.c
hacks/qix.c
hacks/rd-bomb.c
hacks/recanim.c
hacks/ripples.c
hacks/rocks.c
hacks/rorschach.c
hacks/rotzoomer.c
hacks/screenhack.c
hacks/screenhack.h
hacks/screenhackI.h
hacks/shadebobs.c
hacks/slidescreen.c
hacks/speedmine.c
hacks/squiral.c
hacks/starfish.c
hacks/strange.c
hacks/substrate.c
hacks/t3d.c
hacks/tessellimage.c
hacks/truchet.c
hacks/twang.c
hacks/vermiculate.c
hacks/vfeedback.c
hacks/wander.c
hacks/whirlwindwarp.c
hacks/whirlygig.c
hacks/wormhole.c
hacks/xanalogtv.c
hacks/xflame.c
hacks/ximage-loader.c
hacks/xjack.c
hacks/xlockmore.c
hacks/xlockmore.h
hacks/xlockmoreI.h
hacks/xlyap.c
hacks/xmatrix.c
hacks/xrayswarm.c
hacks/xspirograph.c
jwxyz/jwxyz.h
po/POTFILES.in
utils/Makefile.in
utils/colors.c
utils/erase.c
utils/font-retry.c
utils/textclient-mobile.c
utils/version.h
utils/yarandom.h
xscreensaver.spec

index 731d86e2168fd73f70b0ac90d98477ca794cff2e..15cdbc56fcffa1ecaf3723d8b144a0d4c8f17f4b 100644 (file)
@@ -1,8 +1,12 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10116" systemVersion="15D21" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina4_7" orientation="portrait">
+        <adaptation id="fullscreen"/>
+    </device>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
@@ -10,7 +14,7 @@
         <view contentMode="scaleToFill" id="iN0-l3-epB">
             <rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-            <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
+            <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
             <nil key="simulatedStatusBarMetrics"/>
             <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
             <point key="canvasLocation" x="404" y="445"/>
index 373df6b2ca76922c1d3d0b56949e38d92a96760f..da34eb436456887d5cb99cde04119b013ac52240 100644 (file)
@@ -43,7 +43,14 @@ release:: distdepend
 release:: check_versions
 
 Sparkle.framework:
-       unzip ../archive/Sparkle.framework-2013-12-04.zip
+       rm -rf bin sparkle-bin
+       tar -vxjf ../archive/Sparkle-1.21.2.tar.bz2 \
+         --exclude CHANGELOG \
+         --exclude LICENSE \
+         --exclude SampleAppcast.xml \
+         --exclude Sparkle.framework.dSYM \
+         --exclude Sparkle\ Test\ App\*
+       mv bin sparkle-bin
 
 # Download and resize images from jwz.org.
 # This saves us having to include 4MB of images in the tar file
@@ -54,7 +61,7 @@ Sparkle.framework:
 
 BASE = xscreensaver/screenshots/
 URL = https://www.jwz.org/$(BASE)
-WGET = wget -q -U xscreensaver-build-osx
+WGET = wget -q -U xscreensaver-build-osx --content-on-error=0
 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' \
@@ -280,11 +287,12 @@ build/Release/installer.pkg: installer.rtf installer.xml installer.sh installer.
 
 
 # -format UDBZ saves 4% (~1.2 MB) over UDZO.
-dmg:: distdepend
-dmg:: check_versions check_coretext
+dmg:: distdepend check_versions check_coretext
 #dmg:: check_gc
 dmg:: build/Release/installer.pkg
-dmg::
+dmg:: _dmg notarize
+
+_dmg::
        @                                                                     \
   set -e ;                                                                   \
   SRC=../utils/version.h ;                                                   \
@@ -369,7 +377,59 @@ dmg::
     "$$TMPDMG" -o "$$DMG" ;                                                  \
   xattr -w com.apple.quarantine "0000;00000000;;" "$$DMG" ;                  \
   rm -f "$$TMPDMG" ;                                                         \
-  ls -ldhgF "$$DMG"
+  ls -ldhgF "$$DMG" ;                                                        \
+  $(MAKE) notarize ;                                                         \
+
+dmg2:: staple updates.xml
+
+
+# To set up notarization:
+#  - Log in on https://appleid.apple.com/
+#  - Generate App-Specific Password, "altool-notarizer"
+#  - Keychain Access / New
+#  - Name: "altool-notarizer", Account: "jwz@jwz.org",
+#    Pass: the one you just generated.
+#
+# "make notarize", which will upload the DMG (slow).
+# A response will be emailed back in about an hour.
+# When that arrives, "make staple".
+#
+# https://developer.apple.com/documentation/security/notarizing_your_app_before_distribution/customizing_the_notarization_workflow?language=objc
+#
+# Note that if Sparkle.framework/.../Autoupdate.app is not independently
+# signed, it won't pass. I had to add a build phase for that.
+#
+notarize::
+       @                                                                     \
+  set -e ;                                                                   \
+  SRC=../utils/version.h ;                                                   \
+  V=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' $$SRC` ;                \
+  BASE="xscreensaver-$$V" ;                                                  \
+  OUTDIR="../archive" ;                                                              \
+  DMG="$$OUTDIR/$$BASE.dmg" ;                                                \
+  set -x ;                                                                   \
+  xcrun altool --notarize-app --primary-bundle-id "org.jwz.xscreensaver"      \
+    --file "$$DMG" -u "jwz@jwz.org" -p "@keychain:altool-notarizer" ;        \
+  echo "" ;                                                                  \
+  echo "After notarization succeeds, make dmg2"
+
+
+staple::
+       @                                                                     \
+  set -e ;                                                                   \
+  SRC=../utils/version.h ;                                                   \
+  V=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' $$SRC` ;                \
+  BASE="xscreensaver-$$V" ;                                                  \
+  OUTDIR="../archive" ;                                                              \
+  DMG="$$OUTDIR/$$BASE.dmg" ;                                                \
+  set -x ;                                                                   \
+  xcrun stapler staple "$$DMG"
+
+notarization_history::
+       xcrun altool --notarization-history 0 \
+       -u "jwz@jwz.org" -p "@keychain:altool-notarizer"
+       @echo 'now do: xcrun altool --notarization-info <UUID> ...' ; \
+       echo 'and wget the LogFileURL'
 
 
 # When debugging, sometimes I have to reset the preferences for all
index 5dd89e09e1a451460e230a701c95046f0864893a..bc0812f14df24a93195a36bd809b31195ed515f6 100644 (file)
@@ -1,5 +1,23 @@
 {
   "images" : [
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "736h",
+      "filename" : "1242x2208.png",
+      "minimum-system-version" : "8.0",
+      "orientation" : "portrait",
+      "scale" : "3x"
+    },
+    {
+      "extent" : "full-screen",
+      "idiom" : "iphone",
+      "subtype" : "667h",
+      "filename" : "750x1334.png",
+      "minimum-system-version" : "8.0",
+      "orientation" : "portrait",
+      "scale" : "2x"
+    },
     {
       "orientation" : "portrait",
       "idiom" : "iphone",
       "extent" : "full-screen",
       "subtype" : "retina4",
       "scale" : "2x"
-    },
-    {
-      "extent" : "full-screen",
-      "idiom" : "iphone",
-      "subtype" : "667h",
-      "filename" : "750x1334.png",
-      "minimum-system-version" : "8.0",
-      "orientation" : "portrait",
-      "scale" : "2x"
-    },
-    {
-      "extent" : "full-screen",
-      "idiom" : "iphone",
-      "subtype" : "736h",
-      "filename" : "1242x2208.png",
-      "minimum-system-version" : "8.0",
-      "orientation" : "portrait",
-      "scale" : "3x"
-    },
+    }
   ],
   "info" : {
     "version" : 1,
index 0799995abc7dd03babf5759ddf9840326f9013e8..e57d5a737923117e8f20d4090f875b87f84c6d76 100644 (file)
@@ -20,7 +20,8 @@ ridiculously long list of steps!
   5: Delete the "DangerBall copy-Info.plist" from the Build Settings too.
   6: Manage Schemes, rename "DangerBall Copy".
   7: Move to the right place in the list.
-  8: Scheme / Run / Info: Executable: SaverTester.app.
+  8. Scheme / Profile / Info: Executable: SaverTester.app.
+     Scheme / Run / Info: Executable: SaverTester.app.
   9: Scheme / Run / Arguments: set SELECTED_SAVER environment variable.
  10: File / Add Files / the new .c and .xml.
  11: Re-order them in the file list. This will bring up an Options dialog.
@@ -38,5 +39,5 @@ ridiculously long list of steps!
  18: git add xscreensaver.xcodeproj/xcuserdata/*/xcschemes/*.xcscheme
  19: Don't forget to create a man page from the XML with xml2man.pl,
      and update Makefile.in.
- 20: Make a video: -record-animation 3600 -delay 1 -geom 1920x1080+128+64
+ 20: Make a video: -record-animation 3600 -geom 1920x1080+128+64
      ./upload-video.pl NAME
index 9377275b7a51b01724d1e9e5f48d7f942dd16d27..e68387c9f5d5da5964cec2db2fdec726b26cb47b 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 2012-2014 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2012-2018 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
   for (int i = 0; i < n; i++) {
     if ([list_by_letter[i] count] > 0) {
       active_section_count++;
+      [list_by_letter[i] sortUsingSelector:
+                           @selector(localizedCaseInsensitiveCompare:)];
       [letter_sections addObject: list_by_letter[i]];
       if (i <= 'Z'-'A')
         [section_titles addObject: [NSString stringWithFormat: @"%c", i+'A']];
index 073a87ed68d828a25d7c1074f34835c6a054cfea..399eec0eb468949eb1204b8b585d3917a361e3a5 100644 (file)
@@ -31,7 +31,7 @@
 # import <ScreenSaver/ScreenSaver.h>
 #endif
 
-#import <XScreenSaverView.h>
+#import "XScreenSaverView.h"
 
 #ifdef USE_IPHONE
 
index f358fb754500f5c27cb3bf78404163b23beed1db..8ab45c1fc0b963b6c0aac4c721987a6c90db8bdc 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 2006-2017 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2006-2018 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -1035,10 +1035,11 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str)
     if (name) [result addObject: name];
   }
 
-  if (! [result count])
-    result = 0;
-
-  return result;
+  if (result && [result count])
+    return [result sortedArrayUsingSelector:
+                     @selector(localizedCaseInsensitiveCompare:)];
+  else
+    return 0;
 }
 
 
index 3ad0ce71e82b42d34ffeed868b1eadac1fad0682..38ac3722c8060cee696845e9d2bb86e9c8ec896d 100644 (file)
@@ -7,7 +7,7 @@
        <key>CFBundleExecutable</key>
        <string>${EXECUTABLE_NAME}</string>
        <key>CFBundleGetInfoString</key>
-       <string>5.40</string>
+       <string>5.41</string>
        <key>CFBundleIconFile</key>
        <string>SaverRunner</string>
        <key>CFBundleIdentifier</key>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>CFBundleLongVersionString</key>
-       <string>5.40</string>
+       <string>5.41</string>
        <key>CFBundleName</key>
        <string>${PRODUCT_NAME}</string>
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
-       <string>5.40</string>
+       <string>5.41</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
-       <string>5.40</string>
+       <string>5.41</string>
        <key>LSMinimumSystemVersion</key>
        <string>${MACOSX_DEPLOYMENT_TARGET}</string>
        <key>NSHumanReadableCopyright</key>
-       <string>5.40</string>
+       <string>5.41</string>
        <key>NSMainNibFile</key>
        <string>SaverRunner</string>
        <key>NSPrincipalClass</key>
diff --git a/OSX/Sparkle.framework/Modules b/OSX/Sparkle.framework/Modules
new file mode 120000 (symlink)
index 0000000..5736f31
--- /dev/null
@@ -0,0 +1 @@
+Versions/Current/Modules
\ No newline at end of file
diff --git a/OSX/Sparkle.framework/PrivateHeaders b/OSX/Sparkle.framework/PrivateHeaders
new file mode 120000 (symlink)
index 0000000..d8e5645
--- /dev/null
@@ -0,0 +1 @@
+Versions/Current/PrivateHeaders
\ No newline at end of file
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloadData.h b/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloadData.h
new file mode 100644 (file)
index 0000000..41cd574
--- /dev/null
@@ -0,0 +1,43 @@
+//
+//  SPUDownloadData.h
+//  Sparkle
+//
+//  Created by Mayur Pawashe on 8/10/16.
+//  Copyright Â© 2016 Sparkle Project. All rights reserved.
+//
+
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+
+#import "SUExport.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*!
+ * A class for containing downloaded data along with some information about it.
+ */
+SU_EXPORT @interface SPUDownloadData : NSObject <NSSecureCoding>
+
+- (instancetype)initWithData:(NSData *)data textEncodingName:(NSString * _Nullable)textEncodingName MIMEType:(NSString * _Nullable)MIMEType;
+
+/*!
+ * The raw data that was downloaded.
+ */
+@property (nonatomic, readonly) NSData *data;
+
+/*!
+ * The IANA charset encoding name if available. Eg: "utf-8"
+ */
+@property (nonatomic, readonly, nullable, copy) NSString *textEncodingName;
+
+/*!
+ * The MIME type if available. Eg: "text/plain"
+ */
+@property (nonatomic, readonly, nullable, copy) NSString *MIMEType;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloader.h b/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloader.h
new file mode 100644 (file)
index 0000000..5eee9bd
--- /dev/null
@@ -0,0 +1,25 @@
+//
+//  SPUDownloader.h
+//  Downloader
+//
+//  Created by Mayur Pawashe on 4/1/16.
+//  Copyright Â© 2016 Sparkle Project. All rights reserved.
+//
+
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+#import "SPUDownloaderProtocol.h"
+
+@protocol SPUDownloaderDelegate;
+
+// This object implements the protocol which we have defined. It provides the actual behavior for the service. It is 'exported' by the service to make it available to the process hosting the service over an NSXPCConnection.
+@interface SPUDownloader : NSObject <SPUDownloaderProtocol>
+
+// Due to XPC remote object reasons, this delegate is strongly referenced
+// Invoke cleanup when done with this instance
+- (instancetype)initWithDelegate:(id <SPUDownloaderDelegate>)delegate;
+
+@end
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderDelegate.h b/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderDelegate.h
new file mode 100644 (file)
index 0000000..76e7e75
--- /dev/null
@@ -0,0 +1,38 @@
+//
+//  SPUDownloaderDelegate.h
+//  Sparkle
+//
+//  Created by Mayur Pawashe on 4/1/16.
+//  Copyright Â© 2016 Sparkle Project. All rights reserved.
+//
+
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class SPUDownloadData;
+
+@protocol SPUDownloaderDelegate <NSObject>
+
+// This is only invoked for persistent downloads
+- (void)downloaderDidSetDestinationName:(NSString *)destinationName temporaryDirectory:(NSString *)temporaryDirectory;
+
+// Under rare cases, this may be called more than once, in which case the current progress should be reset back to 0
+// This is only invoked for persistent downloads
+- (void)downloaderDidReceiveExpectedContentLength:(int64_t)expectedContentLength;
+
+// This is only invoked for persistent downloads
+- (void)downloaderDidReceiveDataOfLength:(uint64_t)length;
+
+// downloadData is nil if this is a persisent download, otherwise it's non-nil if it's a temporary download
+- (void)downloaderDidFinishWithTemporaryDownloadData:(SPUDownloadData * _Nullable)downloadData;
+
+- (void)downloaderDidFailWithError:(NSError *)error;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderDeprecated.h b/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderDeprecated.h
new file mode 100644 (file)
index 0000000..36302df
--- /dev/null
@@ -0,0 +1,13 @@
+//
+//  SPUDownloaderDeprecated.h
+//  Sparkle
+//
+//  Created by Deadpikle on 12/20/17.
+//  Copyright Â© 2017 Sparkle Project. All rights reserved.
+//
+
+#import "SPUDownloader.h"
+
+@interface SPUDownloaderDeprecated : SPUDownloader <SPUDownloaderProtocol>
+
+@end
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderProtocol.h b/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderProtocol.h
new file mode 100644 (file)
index 0000000..ebe477f
--- /dev/null
@@ -0,0 +1,34 @@
+//
+//  SPUDownloaderProtocol.h
+//  PersistentDownloader
+//
+//  Created by Mayur Pawashe on 4/1/16.
+//  Copyright Â© 2016 Sparkle Project. All rights reserved.
+//
+
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+
+NS_ASSUME_NONNULL_BEGIN
+
+@class SPUURLRequest;
+
+// The protocol that this service will vend as its API. This header file will also need to be visible to the process hosting the service.
+@protocol SPUDownloaderProtocol
+
+- (void)startPersistentDownloadWithRequest:(SPUURLRequest *)request bundleIdentifier:(NSString *)bundleIdentifier desiredFilename:(NSString *)desiredFilename;
+
+- (void)startTemporaryDownloadWithRequest:(SPUURLRequest *)request;
+
+- (void)downloadDidFinish;
+
+- (void)cleanup;
+
+- (void)cancel;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderSession.h b/OSX/Sparkle.framework/Versions/A/Headers/SPUDownloaderSession.h
new file mode 100644 (file)
index 0000000..4bde75a
--- /dev/null
@@ -0,0 +1,20 @@
+//
+//  SPUDownloaderSession.h
+//  Sparkle
+//
+//  Created by Deadpikle on 12/20/17.
+//  Copyright Â© 2017 Sparkle Project. All rights reserved.
+//
+
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+#import "SPUDownloader.h"
+#import "SPUDownloaderProtocol.h"
+
+NS_CLASS_AVAILABLE(NSURLSESSION_AVAILABLE, 7_0)
+@interface SPUDownloaderSession : SPUDownloader <SPUDownloaderProtocol>
+
+@end
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SPUURLRequest.h b/OSX/Sparkle.framework/Versions/A/Headers/SPUURLRequest.h
new file mode 100644 (file)
index 0000000..6949614
--- /dev/null
@@ -0,0 +1,35 @@
+//
+//  SPUURLRequest.h
+//  Sparkle
+//
+//  Created by Mayur Pawashe on 5/19/16.
+//  Copyright Â© 2016 Sparkle Project. All rights reserved.
+//
+
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+
+NS_ASSUME_NONNULL_BEGIN
+
+// A class that wraps NSURLRequest and implements NSSecureCoding
+// This class exists because NSURLRequest did not support NSSecureCoding in macOS 10.8
+// I have not verified if NSURLRequest in 10.9 implements NSSecureCoding or not
+@interface SPUURLRequest : NSObject <NSSecureCoding>
+
+// Creates a new URL request
+// Only these properties are currently tracked:
+// * URL
+// * Cache policy
+// * Timeout interval
+// * HTTP header fields
+// * networkServiceType
++ (instancetype)URLRequestWithRequest:(NSURLRequest *)request;
+
+@property (nonatomic, readonly) NSURLRequest *request;
+
+@end
+
+NS_ASSUME_NONNULL_END
old mode 100755 (executable)
new mode 100644 (file)
index 5a60d2f..34276b7
@@ -9,28 +9,27 @@
 #ifndef SUAPPCAST_H
 #define SUAPPCAST_H
 
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+#import "SUExport.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
 @class SUAppcastItem;
-@interface SUAppcast : NSObject
-{
-@private
-       NSArray *items;
-       NSString *userAgentString;
-       id delegate;
-       NSString *downloadFilename;
-       NSURLDownload *download;
-}
-
-- (void)fetchAppcastFromURL:(NSURL *)url;
-- (void)setDelegate:delegate;
-- (void)setUserAgentString:(NSString *)userAgentString;
-
-- (NSArray *)items;
+SU_EXPORT @interface SUAppcast : NSObject
 
-@end
+@property (copy, nullable) NSString *userAgentString;
+@property (copy, nullable) NSDictionary<NSString *, NSString *> *httpHeaders;
+
+- (void)fetchAppcastFromURL:(NSURL *)url inBackground:(BOOL)bg completionBlock:(void (^)(NSError *_Nullable))err;
+- (SUAppcast *)copyWithoutDeltaUpdates;
 
-@interface NSObject (SUAppcastDelegate)
-- (void)appcastDidFinishLoading:(SUAppcast *)appcast;
-- (void)appcast:(SUAppcast *)appcast failedToLoadWithError:(NSError *)error;
+@property (readonly, copy, nullable) NSArray *items;
 @end
 
+NS_ASSUME_NONNULL_END
+
 #endif
old mode 100755 (executable)
new mode 100644 (file)
index d6f9c64..c0380dd
@@ -9,51 +9,43 @@
 #ifndef SUAPPCASTITEM_H
 #define SUAPPCASTITEM_H
 
-@interface SUAppcastItem : NSObject
-{
-@private
-       NSString *title;
-       NSDate *date;
-       NSString *itemDescription;
-       
-       NSURL *releaseNotesURL;
-       
-       NSString *DSASignature; 
-       NSString *minimumSystemVersion;
-    NSString *maximumSystemVersion;
-       
-       NSURL *fileURL;
-       NSString *versionString;
-       NSString *displayVersionString;
-
-       NSDictionary *deltaUpdates;
-
-       NSDictionary *propertiesDictionary;
-       
-       NSURL *infoURL; // UK 2007-08-31
-}
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+#import "SUExport.h"
+@class SUSignatures;
+
+SU_EXPORT @interface SUAppcastItem : NSObject
+@property (copy, readonly) NSString *title;
+@property (copy, readonly) NSString *dateString;
+@property (copy, readonly) NSString *itemDescription;
+@property (strong, readonly) NSURL *releaseNotesURL;
+@property (strong, readonly) SUSignatures *signatures;
+@property (copy, readonly) NSString *minimumSystemVersion;
+@property (copy, readonly) NSString *maximumSystemVersion;
+@property (strong, readonly) NSURL *fileURL;
+@property (nonatomic, readonly) uint64_t contentLength;
+@property (copy, readonly) NSString *versionString;
+@property (copy, readonly) NSString *osString;
+@property (copy, readonly) NSString *displayVersionString;
+@property (copy, readonly) NSDictionary *deltaUpdates;
+@property (strong, readonly) NSURL *infoURL;
 
 // Initializes with data from a dictionary provided by the RSS class.
-- initWithDictionary:(NSDictionary *)dict;
-- initWithDictionary:(NSDictionary *)dict failureReason:(NSString**)error;
-
-- (NSString *)title;
-- (NSString *)versionString;
-- (NSString *)displayVersionString;
-- (NSDate *)date;
-- (NSString *)itemDescription;
-- (NSURL *)releaseNotesURL;
-- (NSURL *)fileURL;
-- (NSString *)DSASignature;
-- (NSString *)minimumSystemVersion;
-- (NSString *)maximumSystemVersion;
-- (NSDictionary *)deltaUpdates;
-- (BOOL)isDeltaUpdate;
+- (instancetype)initWithDictionary:(NSDictionary *)dict;
+- (instancetype)initWithDictionary:(NSDictionary *)dict failureReason:(NSString **)error;
+
+@property (getter=isDeltaUpdate, readonly) BOOL deltaUpdate;
+@property (getter=isCriticalUpdate, readonly) BOOL criticalUpdate;
+@property (getter=isMacOsUpdate, readonly) BOOL macOsUpdate;
+@property (getter=isInformationOnlyUpdate, readonly) BOOL informationOnlyUpdate;
 
 // Returns the dictionary provided in initWithDictionary; this might be useful later for extensions.
-- (NSDictionary *)propertiesDictionary;
+@property (readonly, copy) NSDictionary *propertiesDictionary;
 
-- (NSURL *)infoURL;                                            // UK 2007-08-31
+- (NSURL *)infoURL;
 
 @end
 
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SUCodeSigningVerifier.h b/OSX/Sparkle.framework/Versions/A/Headers/SUCodeSigningVerifier.h
new file mode 100644 (file)
index 0000000..f034cd2
--- /dev/null
@@ -0,0 +1,22 @@
+//
+//  SUCodeSigningVerifier.h
+//  Sparkle
+//
+//  Created by Andy Matuschak on 7/5/12.
+//
+//
+
+#ifndef SUCODESIGNINGVERIFIER_H
+#define SUCODESIGNINGVERIFIER_H
+
+#import <Foundation/Foundation.h>
+#import "SUExport.h"
+
+SU_EXPORT @interface SUCodeSigningVerifier : NSObject
++ (BOOL)codeSignatureAtBundleURL:(NSURL *)oldBundlePath matchesSignatureAtBundleURL:(NSURL *)newBundlePath error:(NSError  **)error;
++ (BOOL)codeSignatureIsValidAtBundleURL:(NSURL *)bundlePath error:(NSError **)error;
++ (BOOL)bundleAtURLIsCodeSigned:(NSURL *)bundlePath;
++ (NSDictionary *)codeSignatureInfoAtBundleURL:(NSURL *)bundlePath;
+@end
+
+#endif
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SUErrors.h b/OSX/Sparkle.framework/Versions/A/Headers/SUErrors.h
new file mode 100644 (file)
index 0000000..7d2e73a
--- /dev/null
@@ -0,0 +1,56 @@
+//
+//  SUErrors.h
+//  Sparkle
+//
+//  Created by C.W. Betts on 10/13/14.
+//  Copyright (c) 2014 Sparkle Project. All rights reserved.
+//
+
+#ifndef SUERRORS_H
+#define SUERRORS_H
+
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+#import "SUExport.h"
+
+/**
+ * Error domain used by Sparkle
+ */
+SU_EXPORT extern NSString *const SUSparkleErrorDomain;
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wc++98-compat"
+typedef NS_ENUM(OSStatus, SUError) {
+    // Appcast phase errors.
+    SUAppcastParseError = 1000,
+    SUNoUpdateError = 1001,
+    SUAppcastError = 1002,
+    SURunningFromDiskImageError = 1003,
+
+    // Download phase errors.
+    SUTemporaryDirectoryError = 2000,
+    SUDownloadError = 2001,
+
+    // Extraction phase errors.
+    SUUnarchivingError = 3000,
+    SUSignatureError = 3001,
+    
+    // Installation phase errors.
+    SUFileCopyFailure = 4000,
+    SUAuthenticationFailure = 4001,
+    SUMissingUpdateError = 4002,
+    SUMissingInstallerToolError = 4003,
+    SURelaunchError = 4004,
+    SUInstallationError = 4005,
+    SUDowngradeError = 4006,
+    SUInstallationCancelledError = 4007,
+    
+    // System phase errors
+    SUSystemPowerOffError = 5000
+};
+#pragma clang diagnostic pop
+
+#endif
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SUExport.h b/OSX/Sparkle.framework/Versions/A/Headers/SUExport.h
new file mode 100644 (file)
index 0000000..3e3f8a1
--- /dev/null
@@ -0,0 +1,18 @@
+//
+//  SUExport.h
+//  Sparkle
+//
+//  Created by Jake Petroules on 2014-08-23.
+//  Copyright (c) 2014 Sparkle Project. All rights reserved.
+//
+
+#ifndef SUEXPORT_H
+#define SUEXPORT_H
+
+#ifdef BUILDING_SPARKLE
+#define SU_EXPORT __attribute__((visibility("default")))
+#else
+#define SU_EXPORT
+#endif
+
+#endif
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h b/OSX/Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h
new file mode 100644 (file)
index 0000000..ed11921
--- /dev/null
@@ -0,0 +1,52 @@
+//
+//  SUStandardVersionComparator.h
+//  Sparkle
+//
+//  Created by Andy Matuschak on 12/21/07.
+//  Copyright 2007 Andy Matuschak. All rights reserved.
+//
+
+#ifndef SUSTANDARDVERSIONCOMPARATOR_H
+#define SUSTANDARDVERSIONCOMPARATOR_H
+
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+#import "SUExport.h"
+#import "SUVersionComparisonProtocol.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/*!
+    Sparkle's default version comparator.
+
+    This comparator is adapted from MacPAD, by Kevin Ballard.
+    It's "dumb" in that it does essentially string comparison,
+    in components split by character type.
+*/
+SU_EXPORT @interface SUStandardVersionComparator : NSObject <SUVersionComparison>
+
+/*!
+    Initializes a new instance of the standard version comparator.
+ */
+- (instancetype)init;
+
+/*!
+    Returns a singleton instance of the comparator.
+    It is usually preferred to alloc/init new a comparator instead.
+*/
++ (SUStandardVersionComparator *)defaultComparator;
+
+/*!
+    Compares version strings through textual analysis.
+
+    See the implementation for more details.
+*/
+- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB;
+@end
+
+NS_ASSUME_NONNULL_END
+#endif
old mode 100755 (executable)
new mode 100644 (file)
index cd79566..bc1d491
 #ifndef SUUPDATER_H
 #define SUUPDATER_H
 
+#if __has_feature(modules)
+@import Cocoa;
+#else
+#import <Cocoa/Cocoa.h>
+#endif
+#import "SUExport.h"
 #import "SUVersionComparisonProtocol.h"
 #import "SUVersionDisplayProtocol.h"
 
-@class SUUpdateDriver, SUAppcastItem, SUHost, SUAppcast;
+@class SUAppcastItem, SUAppcast;
+
+@protocol SUUpdaterDelegate;
+
+/*!
+    The main API in Sparkle for controlling the update mechanism.
 
-@interface SUUpdater : NSObject
-{
-@private
-       NSTimer *checkTimer;
-       SUUpdateDriver *driver;
+    This class is used to configure the update paramters as well as manually
+    and automatically schedule and control checks for updates.
+ */
+SU_EXPORT @interface SUUpdater : NSObject
 
-       NSString *customUserAgentString;
-       SUHost *host;
-       IBOutlet id delegate;
-}
+@property (unsafe_unretained) IBOutlet id<SUUpdaterDelegate> delegate;
 
+/*!
+ The shared updater for the main bundle.
+ This is equivalent to passing [NSBundle mainBundle] to SUUpdater::updaterForBundle:
+ */
 + (SUUpdater *)sharedUpdater;
-+ (SUUpdater *)updaterForBundle:(NSBundle *)bundle;
-- (id)initForBundle:(NSBundle *)bundle;
 
-- (NSBundle *)hostBundle;
+/*!
+ The shared updater for a specified bundle.
+
+ If an updater has already been initialized for the provided bundle, that shared instance will be returned.
+ */
++ (SUUpdater *)updaterForBundle:(NSBundle *)bundle;
 
-- (void)setDelegate:(id)delegate;
-- (id)delegate;
+/*!
+ Designated initializer for SUUpdater.
+ If an updater has already been initialized for the provided bundle, that shared instance will be returned.
+ */
+- (instancetype)initForBundle:(NSBundle *)bundle;
 
-- (void)setAutomaticallyChecksForUpdates:(BOOL)automaticallyChecks;
-- (BOOL)automaticallyChecksForUpdates;
+/*!
+ Explicitly checks for updates and displays a progress dialog while doing so.
 
-- (void)setUpdateCheckInterval:(NSTimeInterval)interval;
-- (NSTimeInterval)updateCheckInterval;
+ This method is meant for a main menu item.
+ Connect any menu item to this action in Interface Builder,
+ and Sparkle will check for updates and report back its findings verbosely
+ when it is invoked.
 
-- (void)setFeedURL:(NSURL *)feedURL;
-- (NSURL *)feedURL;    // *** MUST BE CALLED ON MAIN THREAD ***
+ This will find updates that the user has opted into skipping.
+ */
+- (IBAction)checkForUpdates:(id)sender;
 
-- (void)setUserAgentString:(NSString *)userAgent;
-- (NSString *)userAgentString;
+/*!
+ The menu item validation used for the -checkForUpdates: action
+ */
+- (BOOL)validateMenuItem:(NSMenuItem *)menuItem;
 
-- (void)setSendsSystemProfile:(BOOL)sendsSystemProfile;
-- (BOOL)sendsSystemProfile;
+/*!
+ Checks for updates, but does not display any UI unless an update is found.
 
-- (void)setAutomaticallyDownloadsUpdates:(BOOL)automaticallyDownloadsUpdates;
-- (BOOL)automaticallyDownloadsUpdates;
+ This is meant for programmatically initating a check for updates. That is,
+ it will display no UI unless it actually finds an update, in which case it
+ proceeds as usual.
 
-// This IBAction is meant for a main menu item. Hook up any menu item to this action,
-// and Sparkle will check for updates and report back its findings verbosely.
-- (IBAction)checkForUpdates:(id)sender;
+ If automatic downloading of updates it turned on and allowed, however,
+ this will invoke that behavior, and if an update is found, it will be downloaded
+ in the background silently and will be prepped for installation.
 
-// This kicks off an update meant to be programmatically initiated. That is, it will display no UI unless it actually finds an update,
-// in which case it proceeds as usual. If the fully automated updating is turned on, however, this will invoke that behavior, and if an
-// update is found, it will be downloaded and prepped for installation.
+ This will not find updates that the user has opted into skipping.
+ */
 - (void)checkForUpdatesInBackground;
 
-// Date of last update check. Returns nil if no check has been performed.
-- (NSDate*)lastUpdateCheckDate;
+/*!
+ A property indicating whether or not to check for updates automatically.
 
-// This begins a "probing" check for updates which will not actually offer to update to that version. The delegate methods, though,
-// (up to updater:didFindValidUpdate: and updaterDidNotFindUpdate:), are called, so you can use that information in your UI.
-- (void)checkForUpdateInformation;
+ Setting this property will persist in the host bundle's user defaults.
+ The update schedule cycle will be reset in a short delay after the property's new value is set.
+ This is to allow reverting this property without kicking off a schedule change immediately
+ */
+@property BOOL automaticallyChecksForUpdates;
 
-// Call this to appropriately schedule or cancel the update checking timer according to the preferences for time interval and automatic checks. This call does not change the date of the next check, but only the internal NSTimer.
-- (void)resetUpdateCycle;
+/*!
+ A property indicating whether or not updates can be automatically downloaded in the background.
 
-- (BOOL)updateInProgress;
+ Note that automatic downloading of updates can be disallowed by the developer
+ or by the user's system if silent updates cannot be done (eg: if they require authentication).
+ In this case, -automaticallyDownloadsUpdates will return NO regardless of how this property is set.
 
-@end
+ Setting this property will persist in the host bundle's user defaults.
+ */
+@property BOOL automaticallyDownloadsUpdates;
 
+/*!
+ A property indicating the current automatic update check interval.
 
-// -----------------------------------------------------------------------------
-//     SUUpdater Delegate:
-// -----------------------------------------------------------------------------
+ Setting this property will persist in the host bundle's user defaults.
+ The update schedule cycle will be reset in a short delay after the property's new value is set.
+ This is to allow reverting this property without kicking off a schedule change immediately
+ */
+@property NSTimeInterval updateCheckInterval;
 
-@interface NSObject (SUUpdaterDelegateInformalProtocol)
+/*!
+ Begins a "probing" check for updates which will not actually offer to
+ update to that version.
 
-// Use this to keep Sparkle from popping up e.g. while your setup assistant is showing:
-- (BOOL)updaterMayCheckForUpdates:(SUUpdater *)bundle;
+ However, the delegate methods
+ SUUpdaterDelegate::updater:didFindValidUpdate: and
+ SUUpdaterDelegate::updaterDidNotFindUpdate: will be called,
+ so you can use that information in your UI.
 
-// This method allows you to add extra parameters to the appcast URL, potentially based on whether or not Sparkle will also be sending along the system profile. This method should return an array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user.
-- (NSArray *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile;
+ Updates that have been skipped by the user will not be found.
+ */
+- (void)checkForUpdateInformation;
 
-// Override this to dynamically specify the entire URL.
-- (NSString*)feedURLStringForUpdater:(SUUpdater*)updater;
+/*!
+ The URL of the appcast used to download update information.
 
-// Use this to override the default behavior for Sparkle prompting the user about automatic update checks.
-- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)bundle;
+ Setting this property will persist in the host bundle's user defaults.
+ If you don't want persistence, you may want to consider instead implementing
+ SUUpdaterDelegate::feedURLStringForUpdater: or SUUpdaterDelegate::feedParametersForUpdater:sendingSystemProfile:
 
-// Implement this if you want to do some special handling with the appcast once it finishes loading.
-- (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast;
+ This property must be called on the main thread.
+ */
+@property (copy) NSURL *feedURL;
 
-// If you're using special logic or extensions in your appcast, implement this to use your own logic for finding
-// a valid update, if any, in the given appcast.
-- (SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)bundle;
+/*!
+ The host bundle that is being updated.
+ */
+@property (readonly, strong) NSBundle *hostBundle;
 
-// Sent when a valid update is found by the update driver.
-- (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)update;
+/*!
+ The bundle this class (SUUpdater) is loaded into.
+ */
+@property (strong, readonly) NSBundle *sparkleBundle;
 
-// Sent when a valid update is not found.
-- (void)updaterDidNotFindUpdate:(SUUpdater *)update;
+/*!
+ The user agent used when checking for updates.
 
-// Sent immediately before installing the specified update.
-- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)update;
+ The default implementation can be overrided.
+ */
+@property (nonatomic, copy) NSString *userAgentString;
 
-// Return YES to delay the relaunch until you do some processing; invoke the given NSInvocation to continue.
-//     This is not called if the user didn't relaunch on the previous update, in that case it will immediately
-//     restart.
-- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)update untilInvoking:(NSInvocation *)invocation;
+/*!
+ The HTTP headers used when checking for updates.
 
-// Some apps *can not* be relaunched in certain circumstances. They can use this method
-//     to prevent a relaunch "hard":
-- (BOOL)updaterShouldRelaunchApplication:(SUUpdater *)updater;
+ The keys of this dictionary are HTTP header fields (NSString) and values are corresponding values (NSString)
+ */
+@property (copy) NSDictionary<NSString *, NSString *> *httpHeaders;
 
-// Called immediately before relaunching.
-- (void)updaterWillRelaunchApplication:(SUUpdater *)updater;
+/*!
+ A property indicating whether or not the user's system profile information is sent when checking for updates.
 
-// This method allows you to provide a custom version comparator.
-// If you don't implement this method or return nil, the standard version comparator will be used.
-- (id <SUVersionComparison>)versionComparatorForUpdater:(SUUpdater *)updater;
+ Setting this property will persist in the host bundle's user defaults.
+ */
+@property BOOL sendsSystemProfile;
 
-// This method allows you to provide a custom version comparator.
-// If you don't implement this method or return nil, the standard version displayer will be used.
-- (id <SUVersionDisplay>)versionDisplayerForUpdater:(SUUpdater *)updater;
+/*!
+ A property indicating the decryption password used for extracting updates shipped as Apple Disk Images (dmg)
+ */
+@property (nonatomic, copy) NSString *decryptionPassword;
 
-// Returns the path which is used to relaunch the client after the update is installed. By default, the path of the host bundle.
-- (NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater;
+/*!
+    This function ignores normal update schedule, ignores user preferences,
+    and interrupts users with an unwanted immediate app update.
 
-// Called before and after, respectively, an updater shows a modal alert window, to give the host
-//     the opportunity to hide attached windows etc. that may get in the way:
--(void)        updaterWillShowModalAlert:(SUUpdater *)updater;
--(void)        updaterDidShowModalAlert:(SUUpdater *)updater;
+    WARNING: this function should not be used in regular apps. This function
+    is a user-unfriendly hack only for very special cases, like unstable
+    rapidly-changing beta builds that would not run correctly if they were
+    even one day out of date.
 
-@end
+    Instead of this function you should set `SUAutomaticallyUpdate` to `YES`,
+    which will gracefully install updates when the app quits.
 
+    For UI-less/daemon apps that aren't usually quit, instead of this function,
+    you can use the delegate method
+    SUUpdaterDelegate::updater:willInstallUpdateOnQuit:immediateInstallationInvocation:
+    to immediately start installation when an update was found.
 
-// -----------------------------------------------------------------------------
-//     Constants:
-// -----------------------------------------------------------------------------
+    A progress dialog is shown but the user will never be prompted to read the
+    release notes.
 
-// Define some minimum intervals to avoid DOS-like checking attacks. These are in seconds.
-#if defined(DEBUG) && DEBUG && 0
-#define SU_MIN_CHECK_INTERVAL 60
-#else
-#define SU_MIN_CHECK_INTERVAL 60*60
-#endif
+    This function will cause update to be downloaded twice if automatic updates are
+    enabled.
 
-#if defined(DEBUG) && DEBUG && 0
-#define SU_DEFAULT_CHECK_INTERVAL 60
-#else
-#define SU_DEFAULT_CHECK_INTERVAL 60*60*24
-#endif
+    You may want to respond to the userDidCancelDownload delegate method in case
+    the user clicks the "Cancel" button while the update is downloading.
+ */
+- (void)installUpdatesIfAvailable;
+
+/*!
+    Returns the date of last update check.
+
+    \returns \c nil if no check has been performed.
+ */
+@property (readonly, copy) NSDate *lastUpdateCheckDate;
+
+/*!
+    Appropriately schedules or cancels the update checking timer according to
+    the preferences for time interval and automatic checks.
+
+    This call does not change the date of the next check,
+    but only the internal NSTimer.
+ */
+- (void)resetUpdateCycle;
+
+/*!
+   A property indicating whether or not an update is in progress.
+
+   Note this property is not indicative of whether or not user initiated updates can be performed.
+   Use SUUpdater::validateMenuItem: for that instead.
+ */
+@property (readonly) BOOL updateInProgress;
+
+@end
 
 #endif
diff --git a/OSX/Sparkle.framework/Versions/A/Headers/SUUpdaterDelegate.h b/OSX/Sparkle.framework/Versions/A/Headers/SUUpdaterDelegate.h
new file mode 100644 (file)
index 0000000..86d1eb9
--- /dev/null
@@ -0,0 +1,301 @@
+//
+//  SUUpdaterDelegate.h
+//  Sparkle
+//
+//  Created by Mayur Pawashe on 12/25/16.
+//  Copyright Â© 2016 Sparkle Project. All rights reserved.
+//
+
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+
+#import "SUExport.h"
+
+@protocol SUVersionComparison, SUVersionDisplay;
+@class SUUpdater, SUAppcast, SUAppcastItem;
+
+NS_ASSUME_NONNULL_BEGIN
+
+// -----------------------------------------------------------------------------
+// SUUpdater Notifications for events that might be interesting to more than just the delegate
+// The updater will be the notification object
+// -----------------------------------------------------------------------------
+SU_EXPORT extern NSString *const SUUpdaterDidFinishLoadingAppCastNotification;
+SU_EXPORT extern NSString *const SUUpdaterDidFindValidUpdateNotification;
+SU_EXPORT extern NSString *const SUUpdaterDidNotFindUpdateNotification;
+SU_EXPORT extern NSString *const SUUpdaterWillRestartNotification;
+#define SUUpdaterWillRelaunchApplicationNotification SUUpdaterWillRestartNotification;
+#define SUUpdaterWillInstallUpdateNotification SUUpdaterWillRestartNotification;
+
+// Key for the SUAppcastItem object in the SUUpdaterDidFindValidUpdateNotification userInfo
+SU_EXPORT extern NSString *const SUUpdaterAppcastItemNotificationKey;
+// Key for the SUAppcast object in the SUUpdaterDidFinishLoadingAppCastNotification userInfo
+SU_EXPORT extern NSString *const SUUpdaterAppcastNotificationKey;
+
+// -----------------------------------------------------------------------------
+//     SUUpdater Delegate:
+// -----------------------------------------------------------------------------
+
+/*!
+ Provides methods to control the behavior of an SUUpdater object.
+ */
+@protocol SUUpdaterDelegate <NSObject>
+@optional
+
+/*!
+ Returns whether to allow Sparkle to pop up.
+ For example, this may be used to prevent Sparkle from interrupting a setup assistant.
+ \param updater The SUUpdater instance.
+ */
+- (BOOL)updaterMayCheckForUpdates:(SUUpdater *)updater;
+
+/*!
+ Returns additional parameters to append to the appcast URL's query string.
+ This is potentially based on whether or not Sparkle will also be sending along the system profile.
+ \param updater The SUUpdater instance.
+ \param sendingProfile Whether the system profile will also be sent.
+ \return An array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user.
+ */
+- (NSArray<NSDictionary<NSString *, NSString *> *> *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile;
+
+/*!
+ Returns a custom appcast URL.
+ Override this to dynamically specify the entire URL.
+ An alternative may be to use SUUpdaterDelegate::feedParametersForUpdater:sendingSystemProfile:
+ and let the server handle what kind of feed to provide.
+ \param updater The SUUpdater instance.
+ */
+- (nullable NSString *)feedURLStringForUpdater:(SUUpdater *)updater;
+
+/*!
+ Returns whether Sparkle should prompt the user about automatic update checks.
+ Use this to override the default behavior.
+ \param updater The SUUpdater instance.
+ */
+- (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)updater;
+
+/*!
+ Called after Sparkle has downloaded the appcast from the remote server.
+ Implement this if you want to do some special handling with the appcast once it finishes loading.
+ \param updater The SUUpdater instance.
+ \param appcast The appcast that was downloaded from the remote server.
+ */
+- (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast;
+
+/*!
+ Returns the item in the appcast corresponding to the update that should be installed.
+ If you're using special logic or extensions in your appcast,
+ implement this to use your own logic for finding a valid update, if any,
+ in the given appcast.
+ \param appcast The appcast that was downloaded from the remote server.
+ \param updater The SUUpdater instance.
+ */
+- (nullable SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)updater;
+
+/*!
+ Called when a valid update is found by the update driver.
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that is proposed to be installed.
+ */
+- (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)item;
+
+/*!
+ Called when a valid update is not found.
+ \param updater The SUUpdater instance.
+ */
+- (void)updaterDidNotFindUpdate:(SUUpdater *)updater;
+
+/*!
+ Called immediately before downloading the specified update.
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that is proposed to be downloaded.
+ \param request The mutable URL request that will be used to download the update.
+ */
+- (void)updater:(SUUpdater *)updater willDownloadUpdate:(SUAppcastItem *)item withRequest:(NSMutableURLRequest *)request;
+
+/*!
+ Called immediately after succesfull download of the specified update.
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that has been downloaded.
+ */
+- (void)updater:(SUUpdater *)updater didDownloadUpdate:(SUAppcastItem *)item;
+
+/*!
+ Called after the specified update failed to download.
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that failed to download.
+ \param error The error generated by the failed download.
+ */
+- (void)updater:(SUUpdater *)updater failedToDownloadUpdate:(SUAppcastItem *)item error:(NSError *)error;
+
+/*!
+ Called when the user clicks the cancel button while and update is being downloaded.
+ \param updater The SUUpdater instance.
+ */
+- (void)userDidCancelDownload:(SUUpdater *)updater;
+
+/*!
+ Called immediately before extracting the specified downloaded update.
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that is proposed to be extracted.
+ */
+- (void)updater:(SUUpdater *)updater willExtractUpdate:(SUAppcastItem *)item;
+
+/*!
+ Called immediately after extracting the specified downloaded update.
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that has been extracted.
+ */
+- (void)updater:(SUUpdater *)updater didExtractUpdate:(SUAppcastItem *)item;
+
+/*!
+ Called immediately before installing the specified update.
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that is proposed to be installed.
+ */
+- (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)item;
+
+/*!
+ Returns whether the relaunch should be delayed in order to perform other tasks.
+ This is not called if the user didn't relaunch on the previous update,
+ in that case it will immediately restart.
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that is proposed to be installed.
+ \param invocation The invocation that must be completed with `[invocation invoke]` before continuing with the relaunch.
+ \return \c YES to delay the relaunch until \p invocation is invoked.
+ */
+- (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item untilInvoking:(NSInvocation *)invocation;
+
+/*!
+ Returns whether the application should be relaunched at all.
+ Some apps \b cannot be relaunched under certain circumstances.
+ This method can be used to explicitly prevent a relaunch.
+ \param updater The SUUpdater instance.
+ */
+- (BOOL)updaterShouldRelaunchApplication:(SUUpdater *)updater;
+
+/*!
+ Called immediately before relaunching.
+ \param updater The SUUpdater instance.
+ */
+- (void)updaterWillRelaunchApplication:(SUUpdater *)updater;
+
+/*!
+ Called immediately after relaunching. SUUpdater delegate must be set before applicationDidFinishLaunching: to catch this event.
+ \param updater The SUUpdater instance.
+ */
+- (void)updaterDidRelaunchApplication:(SUUpdater *)updater;
+
+/*!
+ Returns an object that compares version numbers to determine their arithmetic relation to each other.
+ This method allows you to provide a custom version comparator.
+ If you don't implement this method or return \c nil,
+ the standard version comparator will be used.
+ \sa SUStandardVersionComparator
+ \param updater The SUUpdater instance.
+ */
+- (nullable id<SUVersionComparison>)versionComparatorForUpdater:(SUUpdater *)updater;
+
+/*!
+ Returns an object that formats version numbers for display to the user.
+ If you don't implement this method or return \c nil,
+ the standard version formatter will be used.
+ \sa SUUpdateAlert
+ \param updater The SUUpdater instance.
+ */
+- (nullable id<SUVersionDisplay>)versionDisplayerForUpdater:(SUUpdater *)updater;
+
+/*!
+ Returns the path which is used to relaunch the client after the update is installed.
+ The default is the path of the host bundle.
+ \param updater The SUUpdater instance.
+ */
+- (nullable NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater;
+
+/*!
+ Called before an updater shows a modal alert window,
+ to give the host the opportunity to hide attached windows that may get in the way.
+ \param updater The SUUpdater instance.
+ */
+- (void)updaterWillShowModalAlert:(SUUpdater *)updater;
+
+/*!
+ Called after an updater shows a modal alert window,
+ to give the host the opportunity to hide attached windows that may get in the way.
+ \param updater The SUUpdater instance.
+ */
+- (void)updaterDidShowModalAlert:(SUUpdater *)updater;
+
+/*!
+ Called when an update is scheduled to be silently installed on quit.
+ This is after an update has been automatically downloaded in the background.
+ (i.e. SUUpdater::automaticallyDownloadsUpdates is YES)
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that is proposed to be installed.
+ \param invocation Can be used to trigger an immediate silent install and relaunch.
+ */
+- (void)updater:(SUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationInvocation:(NSInvocation *)invocation;
+
+/*!
+ Calls after an update that was scheduled to be silently installed on quit has been canceled.
+ \param updater The SUUpdater instance.
+ \param item The appcast item corresponding to the update that was proposed to be installed.
+ */
+- (void)updater:(SUUpdater *)updater didCancelInstallUpdateOnQuit:(SUAppcastItem *)item;
+
+/*!
+ Called after an update is aborted due to an error.
+ \param updater The SUUpdater instance.
+ \param error The error that caused the abort
+ */
+- (void)updater:(SUUpdater *)updater didAbortWithError:(NSError *)error;
+
+@end
+
+NS_ASSUME_NONNULL_END
old mode 100755 (executable)
new mode 100644 (file)
index 6c65ea4..c654fc4
@@ -9,21 +9,29 @@
 #ifndef SUVERSIONCOMPARISONPROTOCOL_H
 #define SUVERSIONCOMPARISONPROTOCOL_H
 
-#import <Cocoa/Cocoa.h>
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+#import "SUExport.h"
+
+NS_ASSUME_NONNULL_BEGIN
 
 /*!
-    @protocol
-    @abstract    Implement this protocol to provide version comparison facilities for Sparkle.
+    Provides version comparison facilities for Sparkle.
 */
 @protocol SUVersionComparison
 
 /*!
-    @method     
-    @abstract   An abstract method to compare two version strings.
-    @discussion Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent.
+    An abstract method to compare two version strings.
+
+    Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a,
+    and NSOrderedSame if they are equivalent.
 */
-- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB;      // *** MAY BE CALLED ON NON-MAIN THREAD!
+- (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; // *** MAY BE CALLED ON NON-MAIN THREAD!
 
 @end
 
+NS_ASSUME_NONNULL_END
 #endif
old mode 100755 (executable)
new mode 100644 (file)
index 368b9c9..980efb3
@@ -6,22 +6,24 @@
 //  Copyright 2009 Elgato Systems GmbH. All rights reserved.
 //
 
-#import <Cocoa/Cocoa.h>
-
+#if __has_feature(modules)
+@import Foundation;
+#else
+#import <Foundation/Foundation.h>
+#endif
+#import "SUExport.h"
 
 /*!
-    @protocol
-    @abstract  Implement this protocol to apply special formatting to the two
-                               version numbers.
+    Applies special display formatting to version numbers.
 */
 @protocol SUVersionDisplay
 
 /*!
-    @method     
-    @abstract   An abstract method to format two version strings.
-    @discussion You get both so you can display important distinguishing
-                               information, but leave out unnecessary/confusing parts.
+    Formats two version strings.
+
+    Both versions are provided so that important distinguishing information
+    can be displayed while also leaving out unnecessary/confusing parts.
 */
--(void)        formatVersion: (NSString**)inOutVersionA andVersion: (NSString**)inOutVersionB; 
+- (void)formatVersion:(NSString *_Nonnull*_Nonnull)inOutVersionA andVersion:(NSString *_Nonnull*_Nonnull)inOutVersionB;
 
 @end
old mode 100755 (executable)
new mode 100644 (file)
index 08dd577..5ae2e6a
 // This list should include the shared headers. It doesn't matter if some of them aren't shared (unless
 // there are name-space collisions) so we can list all of them to start with:
 
-#import <Sparkle/SUUpdater.h>
+#import "SUAppcast.h"
+#import "SUAppcastItem.h"
+#import "SUStandardVersionComparator.h"
+#import "SUUpdater.h"
+#import "SUUpdaterDelegate.h"
+#import "SUVersionComparisonProtocol.h"
+#import "SUVersionDisplayProtocol.h"
+#import "SUErrors.h"
 
-#import <Sparkle/SUAppcast.h>
-#import <Sparkle/SUAppcastItem.h>
-#import <Sparkle/SUVersionComparisonProtocol.h>
+#import "SPUDownloader.h"
+#import "SPUDownloaderDelegate.h"
+#import "SPUDownloaderDeprecated.h"
+#import "SPUDownloadData.h"
+#import "SPUDownloaderProtocol.h"
+#import "SPUDownloaderSession.h"
+#import "SPUURLRequest.h"
+#import "SUCodeSigningVerifier.h"
 
 #endif
diff --git a/OSX/Sparkle.framework/Versions/A/Modules/module.modulemap b/OSX/Sparkle.framework/Versions/A/Modules/module.modulemap
new file mode 100644 (file)
index 0000000..af3fe6d
--- /dev/null
@@ -0,0 +1,6 @@
+framework module Sparkle {
+  umbrella header "Sparkle.h"
+
+  export *
+  module * { export * }
+}
diff --git a/OSX/Sparkle.framework/Versions/A/PrivateHeaders/SUUnarchiver.h b/OSX/Sparkle.framework/Versions/A/PrivateHeaders/SUUnarchiver.h
new file mode 100644 (file)
index 0000000..a52bf5a
--- /dev/null
@@ -0,0 +1,21 @@
+//
+//  SUUnarchiver.h
+//  Sparkle
+//
+//  Created by Andy Matuschak on 3/16/06.
+//  Copyright 2006 Andy Matuschak. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol SUUnarchiverProtocol;
+
+@interface SUUnarchiver : NSObject
+
++ (nullable id <SUUnarchiverProtocol>)unarchiverForPath:(NSString *)path updatingHostBundlePath:(nullable NSString *)hostPath decryptionPassword:(nullable NSString *)decryptionPassword;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist
new file mode 100644 (file)
index 0000000..2bda3e9
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>BuildMachineOSBuild</key>
+       <string>18C54</string>
+       <key>CFBundleDevelopmentRegion</key>
+       <string>English</string>
+       <key>CFBundleExecutable</key>
+       <string>Autoupdate</string>
+       <key>CFBundleIconFile</key>
+       <string>AppIcon.icns</string>
+       <key>CFBundleIdentifier</key>
+       <string>org.sparkle-project.Sparkle.Autoupdate</string>
+       <key>CFBundleInfoDictionaryVersion</key>
+       <string>6.0</string>
+       <key>CFBundlePackageType</key>
+       <string>APPL</string>
+       <key>CFBundleShortVersionString</key>
+       <string>1.21.2 12-ga5b23cdbe</string>
+       <key>CFBundleSignature</key>
+       <string>????</string>
+       <key>CFBundleSupportedPlatforms</key>
+       <array>
+               <string>MacOSX</string>
+       </array>
+       <key>CFBundleVersion</key>
+       <string>1.21.2</string>
+       <key>DTCompiler</key>
+       <string>com.apple.compilers.llvm.clang.1_0</string>
+       <key>DTPlatformBuild</key>
+       <string>10B61</string>
+       <key>DTPlatformVersion</key>
+       <string>GM</string>
+       <key>DTSDKBuild</key>
+       <string>18B71</string>
+       <key>DTSDKName</key>
+       <string>macosx10.14</string>
+       <key>DTXcode</key>
+       <string>1010</string>
+       <key>DTXcodeBuild</key>
+       <string>10B61</string>
+       <key>LSBackgroundOnly</key>
+       <string>1</string>
+       <key>LSMinimumSystemVersion</key>
+       <string>10.7</string>
+       <key>LSUIElement</key>
+       <string>1</string>
+       <key>NSMainNibFile</key>
+       <string>MainMenu</string>
+       <key>NSPrincipalClass</key>
+       <string>NSApplication</string>
+</dict>
+</plist>
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate
new file mode 100755 (executable)
index 0000000..ee27325
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/fileop b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/fileop
new file mode 100755 (executable)
index 0000000..561ff48
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/fileop differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/PkgInfo b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/PkgInfo
new file mode 100644 (file)
index 0000000..bd04210
--- /dev/null
@@ -0,0 +1 @@
+APPL????
\ No newline at end of file
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns
new file mode 100644 (file)
index 0000000..7f2a571
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib
new file mode 100644 (file)
index 0000000..da18126
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..4cd92c0
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ca.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ca.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..cc238f6
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ca.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..c93688a
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..10e3c5a
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..698dc67
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..deed9ef
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..8c38dc6
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..4f2015f
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fi.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fi.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..dab921c
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fi.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..c7a5571
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/he.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/he.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..fec4d0d
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/he.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/hr.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/hr.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..2a727d3
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/hr.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/hu.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/hu.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..9cd6bff
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/hu.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..74ae728
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..68b6d36
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..f5e9c6d
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..92c18ee
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..ec2561b
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..58be0e8
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..2b9c461
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..e55c6fd
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..00df86f
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..318baa9
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..c33086d
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..a7d2ebc
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..1be2a80
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..738c900
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..eca2570
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..4def140
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..f7eb257
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..214331c
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..533e208
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/DarkAqua.css b/OSX/Sparkle.framework/Versions/A/Resources/DarkAqua.css
new file mode 100644 (file)
index 0000000..a41e0f2
--- /dev/null
@@ -0,0 +1,9 @@
+html {
+    color: #FFFFFFD8;
+}
+:link {
+    color: #419CFF;
+}
+:link:active {
+    color: #FF1919;
+}
index 1e79abe65ba7ebc807ac9d1bde85c7f616b06b9d..0d62b6ca8b80972254016801ba1cd18d62a63710 100644 (file)
@@ -3,13 +3,13 @@
 <plist version="1.0">
 <dict>
        <key>BuildMachineOSBuild</key>
-       <string>13A603</string>
+       <string>18C54</string>
        <key>CFBundleDevelopmentRegion</key>
        <string>en</string>
        <key>CFBundleExecutable</key>
        <string>Sparkle</string>
        <key>CFBundleIdentifier</key>
-       <string>org.andymatuschak.Sparkle</string>
+       <string>org.sparkle-project.Sparkle</string>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>CFBundleName</key>
        <key>CFBundlePackageType</key>
        <string>FMWK</string>
        <key>CFBundleShortVersionString</key>
-       <string>1.5 Beta (git)</string>
+       <string>1.21.2 12-ga5b23cdbe</string>
        <key>CFBundleSignature</key>
        <string>????</string>
+       <key>CFBundleSupportedPlatforms</key>
+       <array>
+               <string>MacOSX</string>
+       </array>
        <key>CFBundleVersion</key>
-       <string>1.5</string>
+       <string>1.21.2</string>
        <key>DTCompiler</key>
        <string>com.apple.compilers.llvm.clang.1_0</string>
        <key>DTPlatformBuild</key>
-       <string>5A3005</string>
+       <string>10B61</string>
        <key>DTPlatformVersion</key>
        <string>GM</string>
        <key>DTSDKBuild</key>
-       <string>13A595</string>
+       <string>18B71</string>
        <key>DTSDKName</key>
-       <string>macosx10.9</string>
+       <string>macosx10.14</string>
        <key>DTXcode</key>
-       <string>0502</string>
+       <string>1010</string>
        <key>DTXcodeBuild</key>
-       <string>5A3005</string>
+       <string>10B61</string>
 </dict>
 </plist>
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/License.txt b/OSX/Sparkle.framework/Versions/A/Resources/License.txt
deleted file mode 100755 (executable)
index 08364c6..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-Copyright (c) 2006 Andy Matuschak
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-=================
-EXTERNAL LICENSES
-=================
-
-License for bspatch.c and bsdiff.c, from bsdiff 4.3 (<http://www.daemonology.net/bsdiff/>:
-/*-
- * Copyright 2003-2005 Colin Percival
- * All rights reserved
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted providing that the following conditions 
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
old mode 100755 (executable)
new mode 100644 (file)
index 63644f0..1f75b24
@@ -9,27 +9,91 @@
        <key>iMac4,1</key>
        <string>iMac (Core Duo)</string>
        <key>iMac4,2</key>
-       <string>iMac for Education (17-inch, Core Duo)</string>
+       <string>iMac for Education (17 inch, Core Duo)</string>
        <key>iMac5,1</key>
        <string>iMac (Core 2 Duo, 17 or 20 inch, SuperDrive)</string>
        <key>iMac5,2</key>
        <string>iMac (Core 2 Duo, 17 inch, Combo Drive)</string>
        <key>iMac6,1</key>
        <string>iMac (Core 2 Duo, 24 inch, SuperDrive)</string>
+       <key>iMac7,1</key>
+       <string>iMac Intel Core 2 Duo (aluminum enclosure)</string>
        <key>iMac8,1</key>
-       <string>iMac (April 2008)</string>
+       <string>iMac (Core 2 Duo, 20 or 24 inch, Early 2008 )</string>
+       <key>iMac9,1</key>
+       <string>iMac (Core 2 Duo, 20 or 24 inch, Early or Mid 2009 )</string>
+       <key>iMac10,1</key>
+       <string>iMac (Core 2 Duo, 21.5 or 27 inch, Late 2009 )</string>
+       <key>iMac11,1</key>
+       <string>iMac (Core i5 or i7, 27 inch Late 2009)</string>
+       <key>iMac11,2</key>
+       <string>21.5&quot; iMac (mid 2010)</string>
+       <key>iMac11,3</key>
+       <string>iMac (Core i5 or i7, 27 inch Mid 2010)</string>
+       <key>iMac12,1</key>
+       <string>iMac (Core i3 or i5 or i7, 21.5 inch Mid 2010 or Late 2011)</string>
+       <key>iMac12,2</key>
+       <string>iMac (Core i5 or i7, 27 inch Mid 2011)</string>
+       <key>iMac13,1</key>
+       <string>iMac (Core i3 or i5 or i7, 21.5 inch Late 2012 or Early 2013)</string>
+       <key>iMac13,2</key>
+       <string>iMac (Core i5 or i7, 27 inch Late 2012)</string>
+       <key>iMac14,1</key>
+       <string>iMac (Core i5, 21.5 inch Late 2013)</string>
+       <key>iMac14,2</key>
+       <string>iMac (Core i5 or i7, 27 inch Late 2013)</string>
+       <key>iMac14,3</key>
+       <string>iMac (Core i5 or i7, 21.5 inch Late 2013)</string>
+       <key>iMac14,4</key>
+       <string>iMac (Core i5, 21.5 inch Mid 2014)</string>
+       <key>iMac15,1</key>
+       <string>iMac (Retina 5K Core i5 or i7, 27 inch Late 2014 or Mid 2015)</string>
+       <key>iMac16,1</key>
+       <string>iMac (Core i5, 21,5 inch Late 2015)</string>
+       <key>iMac16,2</key>
+       <string>iMac (Retina 4K Core i5 or i7, 21.5 inch Late 2015)</string>
+       <key>iMac17,1</key>
+       <string>iMac (Retina 5K Core i5 or i7, 27 inch Late 2015)</string>
        <key>MacBook1,1</key>
        <string>MacBook (Core Duo)</string>
        <key>MacBook2,1</key>
        <string>MacBook (Core 2 Duo)</string>
        <key>MacBook4,1</key>
        <string>MacBook (Core 2 Duo Feb 2008)</string>
+       <key>MacBook5,1</key>
+       <string>MacBook (Core 2 Duo, Late 2008, Unibody)</string>
+       <key>MacBook5,2</key>
+       <string>MacBook (Core 2 Duo, Early 2009, White)</string>
+       <key>MacBook6,1</key>
+       <string>MacBook (Core 2 Duo, Late 2009, Unibody)</string>
+       <key>MacBook7,1</key>
+       <string>MacBook (Core 2 Duo, Mid 2010, White)</string>
+       <key>MacBook8,1</key>
+       <string>MacBook (Core M, 12 inch, Early 2015)</string>
        <key>MacBookAir1,1</key>
-       <string>MacBook Air (January 2008)</string>
+       <string>MacBook Air (Core 2 Duo, 13 inch, Early 2008)</string>
        <key>MacBookAir2,1</key>
-       <string>MacBook Air (June 2009)</string>
+       <string>MacBook Air (Core 2 Duo, 13 inch, Mid 2009)</string>
        <key>MacBookAir3,1</key>
-       <string>MacBook Air (October 2010)</string>
+       <string>MacBook Air (Core 2 Duo, 11 inch, Late 2010)</string>
+       <key>MacBookAir3,2</key>
+       <string>MacBook Air (Core 2 Duo, 13 inch, Late 2010)</string>
+       <key>MacBookAir4,1</key>
+       <string>MacBook Air (Core i5 or i7, 11 inch, Mid 2011)</string>
+       <key>MacBookAir4,2</key>
+       <string>MacBook Air (Core i5 or i7, 13 inch, Mid 2011)</string>
+       <key>MacBookAir5,1</key>
+       <string>MacBook Air (Core i5 or i7, 11 inch, Mid 2012)</string>
+       <key>MacBookAir5,2</key>
+       <string>MacBook Air (Core i5 or i7, 13 inch, Mid 2012)</string>
+       <key>MacBookAir6,1</key>
+       <string>MacBook Air (Core i5 or i7, 11 inch, Mid 2013 or Early 2014)</string>
+       <key>MacBookAir6,2</key>
+       <string>MacBook Air (Core i5 or i7, 13 inch, Mid 2013 or Early 2014)</string>
+       <key>MacBookAir7,1</key>
+       <string>MacBook Air (Core i5 or i7, 11 inch, Early 2015)</string>
+       <key>MacBookAir7,2</key>
+       <string>MacBook Air (Core i5 or i7, 13 inch, Early 2015)</string>
        <key>MacBookPro1,1</key>
        <string>MacBook Pro Core Duo (15-inch)</string>
        <key>MacBookPro1,2</key>
        <string>MacBook Pro Core 2 Duo (17-inch HD, Core 2 Duo)</string>
        <key>MacBookPro4,1</key>
        <string>MacBook Pro (Core 2 Duo Feb 2008)</string>
+       <key>MacBookPro5,1</key>
+       <string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>
+       <key>MacBookPro5,2</key>
+       <string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>
+       <key>MacBookPro5,3</key>
+       <string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>
+       <key>MacBookPro5,4</key>
+       <string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>
+       <key>MacBookPro5,5</key>
+       <string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>
+       <key>MacBookPro6,1</key>
+       <string>MacBook Pro Intel Core i5, Intel Core i7 (mid 2010)</string>
+       <key>MacBookPro6,2</key>
+       <string>MacBook Pro Intel Core i5, Intel Core i7 (mid 2010)</string>
+       <key>MacBookPro7,1</key>
+       <string>MacBook Pro Intel Core 2 Duo (mid 2010)</string>
+       <key>MacBookPro8,1</key>
+       <string>MacBook Pro Intel Core i5, Intel Core i7, 13&quot; (early 2011)</string>
+       <key>MacBookPro8,2</key>
+       <string>MacBook Pro Intel Core i7, 15&quot; (early 2011)</string>
+       <key>MacBookPro8,3</key>
+       <string>MacBook Pro Intel Core i7, 17&quot; (early 2011)</string>
+       <key>MacBookPro9,1</key>
+       <string>MacBook Pro (15-inch, Mid 2012)</string>
+       <key>MacBookPro9,2</key>
+       <string>MacBook Pro (13-inch, Mid 2012)</string>
+       <key>MacBookPro10,1</key>
+       <string>MacBook Pro (Retina, Mid 2012)</string>
+       <key>MacBookPro10,2</key>
+       <string>MacBook Pro (Retina, 13-inch, Late 2012)</string>
+       <key>MacBookPro11,1</key>
+       <string>MacBook Pro (Retina, 13-inch, Late 2013)</string>
+       <key>MacBookPro11,2</key>
+       <string>MacBook Pro (Retina, 15-inch, Late 2013)</string>
+       <key>MacBookPro11,3</key>
+       <string>MacBook Pro (Retina, 15-inch, Late 2013)</string>
+       <key>MacbookPro11,4</key>
+       <string>MacBook Pro (Retina, 15-inch, Mid 2015)</string>
+       <key>MacbookPro11,5</key>
+       <string>MacBook Pro (Retina, 15-inch, Mid 2015)</string>
+       <key>MacbookPro12,1 </key>
+       <string>MacBook Pro (Retina, 13-inch, Early 2015)</string>
        <key>Macmini1,1</key>
        <string>Mac Mini (Core Solo/Duo)</string>
+       <key>Macmini2,1</key>
+       <string>Mac mini Intel Core</string>
+       <key>Macmini3,1</key>
+       <string>Mac mini Intel Core</string>
+       <key>Macmini4,1</key>
+       <string>Mac mini Intel Core (Mid 2010)</string>
+       <key>Macmini5,1</key>
+       <string>Mac mini (Core i5, Mid 2011)</string>
+       <key>Macmini5,2</key>
+       <string>Mac mini (Core i5 or Core i7, Mid 2011)</string>
+       <key>Macmini5,3</key>
+       <string>Mac mini (Core i7, Server, Mid 2011)</string>
+       <key>Macmini6,1</key>
+       <string>Mac mini (Core i5, Late 2012)</string>
+       <key>Macmini6,2</key>
+       <string>Mac mini (Core i7, Normal or Server, Late 2012)</string>
+       <key>Macmini7,1</key>
+       <string>Mac mini (Core i5 or Core i7, Late 2014)</string>
+       <key>MacPro1,1,Quad</key>
+       <string>Mac Pro</string>
        <key>MacPro1,1</key>
        <string>Mac Pro (four-core)</string>
        <key>MacPro2,1</key>
        <key>MacPro4,1</key>
        <string>Mac Pro (March 2009)</string>
        <key>MacPro5,1</key>
-       <string>Mac Pro (August 2010)</string>
+       <string>Mac Pro (2010 or 2012)</string>
+       <key>MacPro6,1</key>
+       <string>Mac Pro (Late 2013)</string>
        <key>PowerBook1,1</key>
        <string>PowerBook G3</string>
        <key>PowerBook2,1</key>
        <string>Power Macintosh G3 (Blue &amp; White)</string>
        <key>PowerMac1,2</key>
        <string>Power Macintosh G4 (PCI Graphics)</string>
-       <key>PowerMac10,1</key>
-       <string>Mac Mini G4</string>
-       <key>PowerMac10,2</key>
-       <string>Mac Mini (Late 2005)</string>
-       <key>PowerMac11,2</key>
-       <string>Power Macintosh G5 (Late 2005)</string>
-       <key>PowerMac12,1</key>
-       <string>iMac G5 (iSight)</string>
        <key>PowerMac2,1</key>
        <string>iMac G3 (Slot-loading CD-ROM)</string>
        <key>PowerMac2,2</key>
        <string>iMac G4 (17-inch Flat Panel)</string>
        <key>PowerMac5,1</key>
        <string>Power Macintosh G4 Cube</string>
+       <key>PowerMac5,2</key>
+       <string>Power Mac G4 Cube</string>
        <key>PowerMac6,1</key>
        <string>iMac G4 (USB 2.0)</string>
        <key>PowerMac6,3</key>
        <string>iMac G5 (Ambient Light Sensor)</string>
        <key>PowerMac9,1</key>
        <string>Power Macintosh G5 (Late 2005)</string>
+       <key>PowerMac10,1</key>
+       <string>Mac Mini G4</string>
+       <key>PowerMac10,2</key>
+       <string>Mac Mini (Late 2005)</string>
+       <key>PowerMac11,2</key>
+       <string>Power Macintosh G5 (Late 2005)</string>
+       <key>PowerMac12,1</key>
+       <string>iMac G5 (iSight)</string>
        <key>RackMac1,1</key>
        <string>Xserve G4</string>
        <key>RackMac1,2</key>
        <string>Xserve (Intel Xeon)</string>
        <key>Xserve2,1</key>
        <string>Xserve (January 2008 quad-core)</string>
+       <key>Xserve3,1</key>
+       <string>Xserve (early 2009)</string>
 </dict>
 </plist>
index 356987eb973cec5c23bd2e40fecfe5732fe621ec..da18126a3efe8ea9d45d8b2d7277e5e24cbd3e7b 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/SUStatus.nib and b/OSX/Sparkle.framework/Versions/A/Resources/SUStatus.nib differ
index 2d1b77b9e97298e0c7710433490cbb309215b3e4..29127f1a49daeb1c95a42d8d4e15c404bc8dbbe4 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUPasswordPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUPasswordPrompt.nib
deleted file mode 100644 (file)
index 09c833c..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUPasswordPrompt.nib and /dev/null differ
index b8925e776deab3120aca32d87dbaafa2be8affd6..c619e69f3c09632a07bd2440592173f1df93ace5 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib differ
index 006d6aa4409b16173ea1af965a298d6741ad2930..57735179efd240efb263868c797048e21de2f882 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib differ
index 858a71fae820a04fe9b7cebaeef3d0524600561a..4cd92c0dd75e1852d65f35b59a35fabfa277a7eb 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ca.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/ca.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..cc238f6
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/ca.lproj/Sparkle.strings differ
index 335264f91d38f0b41679f03d43f26d89fbe6cbdc..b3d57f661d6c10d6d1d335134b1f5da83646d0dd 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib differ
index fe70bf25b79fb69c9053dcbe4e249318a55e04f7..30a49ec7c968a9aafea0a2e73139d3db6aea56b6 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib differ
index 9dcd9442d11ef0ac6b3913c4311bcbfea684d95d..f4c853251e91611d83b05206920191366aecbfe0 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib differ
index 9bbb99686b37f7b1ce5dfbfbc6301cdec3712e69..c93688a316697c9ea4000d543366f2ecfc293955 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings differ
index 211e71856a105693466710795d9a343301e8b284..ef46ccaaf86701f08334ab168c238fa451175970 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUPasswordPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUPasswordPrompt.nib
deleted file mode 100644 (file)
index 1873d43..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUPasswordPrompt.nib and /dev/null differ
index 42395b25df0c555d4e8c466eb50d2b4ff67b2ba9..778a46846f4c49f35dc9e1fbdfb170e0e642681b 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib differ
index 58af832732f8674ab93f150bf6b93a81cefc46a6..e4359045629139bebdc3290730baf675e4dae12c 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib differ
index bcf691da5d74c63cc4a3b0185618f5535fdf8fa5..10e3c5a5d845a0754eb15c98cb82bc40762386cb 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings differ
index 19970aa4451468ad6443b9d150153e046d622f9d..7540fa1a5ffbc24676dfe1ad2fce964e9267e622 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib differ
index 69fccfcbe1c002fd9c13f3117f80347245bbab5c..fed8b256569df9a48e3fb4c9303f4d5f79717b2a 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib differ
index c59bf3c4cd1922997e94135ecef05480b40ae339..6ecec454948b8186389b2781c70b20079c12abac 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib differ
index 664946d41478636bfb57080a57cca064a5b02c75..698dc6737fa1eaf1465934ae206444796f0ffa2f 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib
new file mode 100644 (file)
index 0000000..6e803a7
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib
new file mode 100644 (file)
index 0000000..8ca181c
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib
new file mode 100644 (file)
index 0000000..353156a
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..deed9ef
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings differ
index 512c1c5324a4ccba78b1b785c907a5fae8ba2b8f..15f157f4e157b7ad29bcf3242fd8c02fddeafa44 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUPasswordPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUPasswordPrompt.nib
deleted file mode 100644 (file)
index 6cd02b2..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUPasswordPrompt.nib and /dev/null differ
index e856f9da5f1061b130534d8ea5608dc76ab44b30..29d60da43f9fc8b8baa58282ce10943d763a5bf7 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib differ
index 4f0c0a3dd88bcad08e8164dd434d3e084b582ea7..72f172e6c2090f383989ebbd561388136b4a19ad 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib differ
index f9c15d880d716db5d6313d6d7e8cca10428f499b..8c38dc674279f6d76979a31d746f4475fc9d730a 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings differ
index 8d657a76971f63e7972e7a41637bfacb738f1a5b..9b3f7238a0e9556478838ad555d8a04b9609bc24 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib differ
index d28a4f8f61ac23102e26eeef233e9c8c9163e02c..265bacc9fcb8522b95e68c61d52157c999033f37 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib differ
index f927ba69efc97a1452aa381ee90dd5e8ec3cf8f1..009394dac0ff9a56e0b86fda0b9c839a00f72ea7 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib differ
index 8e4ab943b1d130a3d04a524b8a7c4dd38d154a0c..4f2015f0b163122f2654fbb506aa01deb839a9df 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUAutomaticUpdateAlert.nib
new file mode 100644 (file)
index 0000000..a882db0
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUAutomaticUpdateAlert.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdateAlert.nib
new file mode 100644 (file)
index 0000000..c7a3311
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdateAlert.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdatePermissionPrompt.nib
new file mode 100644 (file)
index 0000000..60cd954
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/SUUpdatePermissionPrompt.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..dab921c
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/fi.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Info.plist b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Info.plist
deleted file mode 100644 (file)
index 692e02e..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-       <key>BuildMachineOSBuild</key>
-       <string>13A603</string>
-       <key>CFBundleDevelopmentRegion</key>
-       <string>English</string>
-       <key>CFBundleExecutable</key>
-       <string>finish_installation</string>
-       <key>CFBundleIconFile</key>
-       <string>Sparkle</string>
-       <key>CFBundleIdentifier</key>
-       <string>org.andymatuschak.sparkle.finish-installation</string>
-       <key>CFBundleInfoDictionaryVersion</key>
-       <string>6.0</string>
-       <key>CFBundlePackageType</key>
-       <string>APPL</string>
-       <key>CFBundleShortVersionString</key>
-       <string>1.0</string>
-       <key>CFBundleSignature</key>
-       <string>????</string>
-       <key>CFBundleVersion</key>
-       <string>1</string>
-       <key>DTCompiler</key>
-       <string>com.apple.compilers.llvm.clang.1_0</string>
-       <key>DTPlatformBuild</key>
-       <string>5A3005</string>
-       <key>DTPlatformVersion</key>
-       <string>GM</string>
-       <key>DTSDKBuild</key>
-       <string>13A595</string>
-       <key>DTSDKName</key>
-       <string>macosx10.9</string>
-       <key>DTXcode</key>
-       <string>0502</string>
-       <key>DTXcodeBuild</key>
-       <string>5A3005</string>
-       <key>LSBackgroundOnly</key>
-       <string>1</string>
-       <key>LSMinimumSystemVersion</key>
-       <string>10.4</string>
-       <key>LSUIElement</key>
-       <string>1</string>
-       <key>NSMainNibFile</key>
-       <string>MainMenu</string>
-       <key>NSPrincipalClass</key>
-       <string>NSApplication</string>
-</dict>
-</plist>
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/MacOS/finish_installation b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/MacOS/finish_installation
deleted file mode 100755 (executable)
index 5e032fa..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/MacOS/finish_installation and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/PkgInfo b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/PkgInfo
deleted file mode 100644 (file)
index bd04210..0000000
+++ /dev/null
@@ -1 +0,0 @@
-APPL????
\ No newline at end of file
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/SUStatus.nib b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/SUStatus.nib
deleted file mode 100644 (file)
index 356987e..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/SUStatus.nib and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/Sparkle.icns b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/Sparkle.icns
deleted file mode 100755 (executable)
index 8e56d45..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/Sparkle.icns and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ar.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ar.lproj/Sparkle.strings
deleted file mode 100644 (file)
index 858a71f..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ar.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/cs.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/cs.lproj/Sparkle.strings
deleted file mode 100644 (file)
index 9bbb996..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/cs.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/da.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/da.lproj/Sparkle.strings
deleted file mode 100644 (file)
index bcf691d..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/da.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/de.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/de.lproj/Sparkle.strings
deleted file mode 100644 (file)
index 664946d..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/de.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/en.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/en.lproj/Sparkle.strings
deleted file mode 100644 (file)
index f9c15d8..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/en.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/es.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/es.lproj/Sparkle.strings
deleted file mode 100644 (file)
index 8e4ab94..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/es.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/fr.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/fr.lproj/Sparkle.strings
deleted file mode 100644 (file)
index 236f807..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/fr.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/is.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/is.lproj/Sparkle.strings
deleted file mode 100644 (file)
index 665e273..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/is.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/it.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/it.lproj/Sparkle.strings
deleted file mode 100644 (file)
index 4ccd7af..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/it.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ja.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ja.lproj/Sparkle.strings
deleted file mode 100644 (file)
index b21ea04..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ja.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/nl.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/nl.lproj/Sparkle.strings
deleted file mode 100644 (file)
index 023c473..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/nl.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pl.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pl.lproj/Sparkle.strings
deleted file mode 100644 (file)
index 9a0bc8b..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pl.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pt_BR.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pt_BR.lproj/Sparkle.strings
deleted file mode 100644 (file)
index 7a11a9e..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pt_BR.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pt_PT.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pt_PT.lproj/Sparkle.strings
deleted file mode 100644 (file)
index 497cd83..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/pt_PT.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ro.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ro.lproj/Sparkle.strings
deleted file mode 100644 (file)
index e90bdf5..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ro.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ru.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ru.lproj/Sparkle.strings
deleted file mode 100644 (file)
index 7afef95..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/ru.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/sl.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/sl.lproj/Sparkle.strings
deleted file mode 100644 (file)
index 7ec0bc2..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/sl.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/sv.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/sv.lproj/Sparkle.strings
deleted file mode 100644 (file)
index 16c3fb8..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/sv.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/th.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/th.lproj/Sparkle.strings
deleted file mode 100644 (file)
index 0468c97..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/th.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/tr.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/tr.lproj/Sparkle.strings
deleted file mode 100644 (file)
index cabc211..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/tr.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/uk.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/uk.lproj/Sparkle.strings
deleted file mode 100644 (file)
index 6f0e4db..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/uk.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/zh_CN.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/zh_CN.lproj/Sparkle.strings
deleted file mode 100644 (file)
index b741758..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/zh_CN.lproj/Sparkle.strings and /dev/null differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/zh_TW.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/zh_TW.lproj/Sparkle.strings
deleted file mode 100644 (file)
index c1f7e85..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/finish_installation.app/Contents/Resources/zh_TW.lproj/Sparkle.strings and /dev/null differ
index 59b199b762f3a862e4babc8645070116ed9b0b8b..5112924b2ba93c7569f621bed6d7b21785b4354d 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib differ
index a084b1938ba8032bcd02a187ec8c1bd8b034e678..e24e3fd6ce9f01423b3ed3d63b8641bb0effa8dd 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib differ
index 808db821a6aa32f08a724cf06bf3ccca304c98fb..88598ebfb02fbf3c8e5910e4402593a3551a7b17 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib differ
index 236f807a7d9827fb81ec716beb96440b7ed950f5..c7a55714761c157da45f57a96ea940b9820848e0 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/he.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/he.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..fec4d0d
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/he.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUAutomaticUpdateAlert.nib
new file mode 100644 (file)
index 0000000..75761ac
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUAutomaticUpdateAlert.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdateAlert.nib
new file mode 100644 (file)
index 0000000..867b7c0
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdateAlert.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdatePermissionPrompt.nib
new file mode 100644 (file)
index 0000000..f1090d7
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/SUUpdatePermissionPrompt.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..2a727d3
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/hr.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUAutomaticUpdateAlert.nib
new file mode 100644 (file)
index 0000000..4d7e8a9
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUAutomaticUpdateAlert.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdateAlert.nib
new file mode 100644 (file)
index 0000000..40571fd
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdateAlert.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdatePermissionPrompt.nib
new file mode 100644 (file)
index 0000000..ff2e24f
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/SUUpdatePermissionPrompt.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..9cd6bff
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/hu.lproj/Sparkle.strings differ
index 89825fbe89430ab556945422dfaa72b818f22690..e27ca6db36c2d311a481b01bc5815be119c70dcb 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib differ
index 2172c0da98068cf7f70d5d2674fa43304ee771fd..3e2d8efc048eb5bd56c06e452a845c2a789ad77a 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib differ
index 9a4cca0a0979eb30ae1ef02e06e4a62ae7e650e9..0dceed4fdf16a0a968c2790d4b5935d44e82beca 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib differ
index 665e273e4a16eaba2f9ebc56421d6e9ce75e36cc..74ae72802ab6eea84ff81f1c2b06038d91a854ec 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings differ
index c3d7a421fee1b17db3e1a888dacec7c19f7a762c..c0522dccac0014443d9d816f9469b4611099a1a0 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib differ
index 7cc884b0d5842f8922c40f424219597da21018ce..5013418a7aa6e9b756131a63aff92e6ad0c00c10 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib differ
index 285596b97849a66b90d8ecde36537468936b25a0..cc828213fbce0166869314709c3059673d474c98 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib differ
index 4ccd7affbab8026fec9f6f0f0ebdf2fcb48639f6..68b6d366bc036db9127319720409a7e058e5114c 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings differ
index 61d2a29c49d846d421f769714f0a1814747b4c1a..27f5abfa643aca2473d9e96ba44d4c889cb1d05b 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib differ
index ee41cad343b0a32417537de1ec561d08e3db8e12..86798fe295c9136424835652221b14019cd2f731 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib differ
index ebd5759b31563b6d218ff58e39074f1d63ac246a..57fcc83a75da5ea3d2f0533c3db6a23bd9da8f42 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib differ
index b21ea044d834951b1f87652cb20cee9a0ad9df42..f5e9c6d1175f3e4c89698df4c20347bb94f3344c 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings differ
index e7a8d4698f3cadafaaadfcd9fb6c126a28133d6b..977dc0a708772b3d7e23809a9f1c53c19e60e868 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib differ
index 89f887e40d646a6c52c4ea90503a51b2f816539e..d52bd5d9a48a4bbc747d09d53d905422d54c6a3e 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib differ
index 5da11e051e85226e22aaaa1fd5f3c71d39080c5a..7880aef60766d6406326f119918eddf24a554241 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..92c18ee
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib
new file mode 100644 (file)
index 0000000..fd5b851
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib b/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib
new file mode 100644 (file)
index 0000000..6b05c1f
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib
new file mode 100644 (file)
index 0000000..b1474d1
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..ec2561b
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings differ
index 35a8de21585f35b16ced5bada9cc86a7df8af9dd..19e19ff7c20699b3f3c56da965b9d311e204580f 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib differ
index eec88ff179a7942b421c2a5e1de8d82a66fb5fb9..13a6ea648cc78519d0ab4a48f930e63900a4ca0f 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib differ
index ab2c86fc6f5392ccec7034379916e09b6cc4b7da..690b23a029f2c16f6a261bb431b7c64c4cfe8721 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib differ
index 023c473b2a9ccbdde18f329b0d5583fb2406e166..58be0e82bbd2956c419baba20737f0d0c44e3b31 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings differ
index 0646f3f2e64aa0ec0214ec688e0da090f366360f..3de644f16a871ce887cbbb09025394739cb7581d 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib differ
index 1b4d495f8a74b82eef6b122b6ab9581ffbe6e1d5..b05aea7ad55b6f117597b142adf404cd8e5d0598 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib differ
index 8ea95e895b6e8e745bf9257b5eae452c29f34671..fc42fa21a77c9d64b69be3c73612e8ddd5640896 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib differ
index 9a0bc8b9f2303e63295daf83d3ffe7d032353e90..2b9c4615209d86b1f803422f9a1d9e940661f87c 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings differ
index e8a824aa575b735e80faba26740d1e607d75cae5..c43d9966174d4ac6dde8789d316fd04d0e1285b9 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUPasswordPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUPasswordPrompt.nib
deleted file mode 100644 (file)
index 22f50aa..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUPasswordPrompt.nib and /dev/null differ
index 03500fa909bf1778de61081d3a7a43e4ab5c1224..bf5e54da85d16bc000094449f17340c2c62c4043 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib differ
index dc92de651cff5fa7b4f194154bc040a0f08a61e2..0773eee71d9e74ccc1fc3bf394f1c0497844dd0f 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib differ
index 7a11a9ebd1b4a522d7935545745913b8e411c064..e55c6fd1b2f10ced19430f0bbc5bd021568b10b0 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings differ
index c3603d55060a8c9fb95b1eb71c0d7b8efe5d4b33..f787d8c8daf54928d7c47e1d6747b98bfc4f65dc 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib differ
index 2d371c4378ac96c47c142a8246be3b77a0c2059b..a0ea252e5558eaad0d90bf61d8a4885f7f8b2e93 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib differ
index 7b6d719d417490eccb443945e9b38d0ec3fab87c..8df1dbba4ed28c630b18fde10adc8742f2d4d6b6 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib differ
index 497cd8303f629217eb81634a95a8baa77b01016b..00df86ff131c262ceeb3bae50c69c76a134fef08 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings differ
index d669654e5d8423bb7d919dfdd69c3112d618e631..b4068e8246db20a9ddbe9b632c92a8e6861b1ba0 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib differ
index 6a75e5e8d7a9b73ef58807af2b6176b73be1c2ef..998781b59f27c6c2417b4e17718c8864682edcd8 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib differ
index 2e5802c1ed6d4feef1147085c0f2472578045817..011aaf5a1a0cd3cddd8f63379b6a8731f42fc9fb 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib differ
index e90bdf598bdce59c27cc6419c131fd8f747da750..318baa960df04b6c5e4820313d47586db2dc5feb 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings differ
index 8022f52bf2338c7bcb1d2521f1e60cd07d6b144c..09fb088829982f433a0d3919a11e621e6860ccca 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib differ
index 9466dc3ba5d2f4f0b761effa5e5f5445f9991de3..423b2ce30742ed4946680b75fa2eb7c395694cdd 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib differ
index 3b26a5b07b565d68c4e0a3b019ee3cadf44903c3..19e13ec5ce2105467815a40f846bc1dd0f8f5189 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib differ
index 7afef95f4502e63c71ef7faf25f267eba0f0d320..c33086d89f69ff727b693732a227711a7ffeda32 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings differ
index 3afea8d8eb9b0c5661a59fc7a0be7171f163302e..cf9cb702facf0d9fddcc8e7ad00fb81998db04f7 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib differ
index 15e760dc07f3e576088e1aee4cc0629f3fe66077..0413025e0ea095b246336363ddd10677cd9ad895 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib differ
index e7d67a2bb407f5332f8a2073e1c0a3e69768644b..ea04cc1d8eae75d031a76155711c52f5293a5046 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings b/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings
new file mode 100644 (file)
index 0000000..a7d2ebc
Binary files /dev/null and b/OSX/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings differ
index 60cfe74679a2cdd2147a5db0cd0fd193c8d27c2d..ac4ded9c49cc57ff1fbbe5bf3c747061518fc764 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib differ
index c3bd6983fccd3ccbc25c5daff4d8a5cacc818b55..fc1c75723d78eacfff5b04959ec6d9d3428d271e 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib differ
index 1ff5bc35c9f674dba6f59a93b518ee8f5e2551a8..913fb3b42f82b8b938d2b42057a9786b3de4402c 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib differ
index 7ec0bc27b08a739e4e882ba03ca30dbfe3f139af..1be2a8079877da8b3381713f266c99769fc32d24 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings differ
index 8df1ba067c63f04ccd30f946911a1271505009a6..5c5774cd0d67f15ac342ae9074736d4d08534004 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib differ
index 9ab3288239a3dff4e21465113c3df621c5e63859..bff9b7fd5fc9b61cdf56f61bbb9b0649ab5e6061 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib differ
index 0337c2a23f57e0f81fb2acdff4f4b667497fb8b1..00410e33c4a6cd711b4d11be01147d1c293d1968 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib differ
index 16c3fb8425b8534245c8a2beddb7cde3f328d57c..738c9008b48d95dada563d8a7814ba0ef1ef2a4b 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings differ
index e1377a4e96bae45273ddf9783afb06da9d18b419..9126de5876c536b4daded9b8f0272846f4f6e5ab 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib differ
diff --git a/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUPasswordPrompt.nib b/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUPasswordPrompt.nib
deleted file mode 100644 (file)
index 646d64e..0000000
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUPasswordPrompt.nib and /dev/null differ
index 239b8f7d13e0385c6330f761eaa77facf2893990..867b481a13ddd85c30d6b191b727ab8040650f56 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib differ
index 143ff9106d92f42eb1b0b455e9017f30b8689591..25e48c87960cf54508731a54be7084feef494ef8 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib differ
index 0468c97f125a26cc7f9a29abcd166cf6c4b97e3d..eca257024719f266a6c81693f225c04de1edb4ea 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings differ
index 263e74ab0b61d38ef25f1e6674cdc47ff15b6af6..6526d27c178770db27443554e5d33b6221acd4fb 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib differ
index ca40c5779c6680ea83c4d618b7538fea7c01d717..4e7b7485c9f7c73d3d3dd982b329aed48a8496dd 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib differ
index 22a8f4676c6da9a111235ff8dcf5ca03185df1b9..21bed5f8b7abde4f49126850f2327937bbe11173 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib differ
index cabc211605a1a86066cf9ca29f25bd5bd6cd3362..4def140e5a928b657fd13fd7aa009ba026f42493 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings differ
index 83dbcbf38cc604a87aec1b2002aab730d07b7f80..5d2dda5d63eec680964467415ad4272bde3ea848 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib differ
index 939e0cb5ccc2f5b0f92f8bcfe656a3de6268cbec..94c9dc7909d9b654768657964c3f03b9ae428d8a 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib differ
index 8e2bf730f5b5c3d92a2a1395781b04c8644c6a54..ac62cbf7d2cf4c1228b5407011dc74c0605247c3 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib differ
index 6f0e4db954c9d4570cfb6f8022b120c2c7ebf2c7..f7eb257b7ebb794a02ccb4e95e92be848d4944cc 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings differ
index 65cc3d22b346f18d812ab688b8f04a037e62aeb3..789fbdbc7819df260896fb4acba70a602f925864 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib differ
index a453dfc16fabcca41a86012c8cb9deebee184c86..9ea3f4d196b032e09c1aeed62f015d326180e798 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib differ
index 9f85d65ccfb52a28fe3b80fed8e96fffc596798d..aec87f298d468d5769125da6e81757914e461d00 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib differ
index b741758fd1d16cc1e0513918e8509c89a195afa9..214331cd13052930eb0a93eea359e8b2895dfd85 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings differ
index c4b9e9b9d045749304561684d7ccfb18f4acc334..c5f6ea82468a82ff929b8fc854cf9b11b797730c 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib differ
index 6e98d7e94c1b9a53ab22e94fb4834b1c590256b8..1b4b140c9ebb42b078fb1eaad7ed8133644d2f56 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib and b/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib differ
index 935b007ddd0d46bea7f2de34dfb385c93f2abbe9..1a642e884171223248ec0e245b572288e6a5d0e1 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib and b/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib differ
index c1f7e85ed14a929123f59307c826e1b6a3349ae2..533e2086249b9e22c0c24814c5d1892e01b7c25c 100644 (file)
Binary files a/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings and b/OSX/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings differ
index 64eefd02953848e3fae67c749445568d3220edff..dcba851843e22077475d4b340939307518d1680f 100755 (executable)
Binary files a/OSX/Sparkle.framework/Versions/A/Sparkle and b/OSX/Sparkle.framework/Versions/A/Sparkle differ
index fd3b17652cc367f1fb3a58dc162c3b7c89cd7466..a3de39cfd1f5903696e0cc0042be4de19ed53c9a 100644 (file)
@@ -9,7 +9,7 @@
        <key>CFBundleExecutable</key>
        <string>${EXECUTABLE_NAME}</string>
        <key>CFBundleGetInfoString</key>
-       <string>5.40</string>
+       <string>5.41</string>
        <key>CFBundleIconFile</key>
        <string>SaverRunner</string>
        <key>CFBundleIdentifier</key>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>CFBundleLongVersionString</key>
-       <string>5.40</string>
+       <string>5.41</string>
        <key>CFBundleName</key>
        <string>${PRODUCT_NAME}</string>
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
-       <string>5.40</string>
+       <string>5.41</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
-       <string>5.40</string>
+       <string>5.41</string>
        <key>LSMinimumSystemVersion</key>
        <string>${MACOSX_DEPLOYMENT_TARGET}</string>
        <key>LSUIElement</key>
        <true/>
        <key>NSHumanReadableCopyright</key>
-       <string>5.40</string>
+       <string>5.41</string>
        <key>NSMainNibFile</key>
        <string>Updater</string>
        <key>NSPrincipalClass</key>
index 34172952ca7289b1f7875d33939e52f4d4e44d01..aa7eefaa60e370b5f21004e3aa1d5e2d0ff104ff 100644 (file)
        <key>CFBundlePackageType</key>
        <string>BNDL</string>
        <key>CFBundleShortVersionString</key>
-       <string>5.40</string>
+       <string>5.41</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
-       <string>5.40</string>
+       <string>5.41</string>
        <key>LSMinimumSystemVersion</key>
        <string>10.8</string>
        <key>NSMainNibFile</key>
index b2fd489996b7df87f3c147715b5b5a2806e341dc..8e40dde6f09ff8105fc27eaca6a5c4464acb79cb 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 2006-2013 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2006-2018 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -48,7 +48,7 @@
 #  endif
                                  >
 # else
-          NSWindow <NSXMLParserDelegate>
+          NSPanel <NSXMLParserDelegate>
 # endif
 {
   NSString *saver_name;
index cb7d45b99ad70e7d8c1ce15cd157d3a26c021337..371cf17743c1fd63f40e571873344bfb8c83aefe 100644 (file)
@@ -2059,10 +2059,10 @@ gl_check_ver (const struct gl_version *caps,
   if (!initted_p || ![self isAnimating]) // no event handling unless running.
     return NO;
 
-  [self lockFocus];
+//  [self lockFocus];  // As of 10.14 this causes flicker on mouse motion
   [self prepareContext];
   BOOL result = xsft->event_cb (xdpy, xwindow, xdata, e);
-  [self unlockFocus];
+//  [self unlockFocus];cp -Rf ${CONFIGURATION_BUILD_DIR}/BuildOutputPrefPane.prefPane ~/Library/PreferencePanes
   return result;
 }
 
index 9d8243188358423925bc7bd1da0a61f7079acf1c..ab1c0707006d60b35325206c49bfccb1ceb4eacd 100644 (file)
@@ -16,8 +16,8 @@
 \b0 by Jamie Zawinski\
 and many others\
 \
-version 5.40\
-12-Aug-2018\
+version 5.41\
+26-Dec-2018\
 \
 {\field{\*\fldinst{HYPERLINK "https://www.jwz.org/xscreensaver/"}}{\fldrslt \cf2 \ul \ulc2 https://www.jwz.org/xscreensaver/}}\
 \pard\pardeftab720
index 0ebfa919039c3b6095ed5ec48a256ea4aa23124c..4b87f8ca8a757f26d78fe0f5a5e73127a14c49d8 100644 (file)
@@ -3,6 +3,6 @@
 <plist version="1.0">
 <dict>
        <key>URL</key>
-       <string>https://www.jwz.org/xscreensaver/download.html</string>
+       <string>https://play.google.com/store/apps/details?id=org.jwz.android.xscreensaver</string>
 </dict>
 </plist>
index 20d596a4063de320c1d9cd82cfe945b1a05a1334..870d12cb8c266670bec35919f99b7e99e6404f5a 100755 (executable)
@@ -33,6 +33,8 @@ function menu() {
      end tell
     end tell
    end tell"
+
+   open -a XEmacs # switch focus back to somewhere sane
 }
 
 menu 'Shake Gesture'
index 4604e9d331c21924a2ee9a3e5657ac71c404f867..68c574b9ac3dd867170c8f0c6ea37a0a79388907 100644 (file)
@@ -9,7 +9,7 @@
        <key>CFBundleExecutable</key>
        <string>${EXECUTABLE_NAME}</string>
        <key>CFBundleGetInfoString</key>
-       <string>5.40</string>
+       <string>5.41</string>
        <key>CFBundleIcons</key>
        <dict/>
        <key>CFBundleIcons~ipad</key>
        <key>CFBundleInfoDictionaryVersion</key>
        <string>6.0</string>
        <key>CFBundleLongVersionString</key>
-       <string>5.40</string>
+       <string>5.41</string>
        <key>CFBundleName</key>
        <string>${PRODUCT_NAME}</string>
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
-       <string>5.40</string>
+       <string>5.41</string>
        <key>CFBundleSignature</key>
        <string>????</string>
        <key>CFBundleVersion</key>
-       <string>5.40</string>
+       <string>5.41</string>
        <key>LSRequiresIPhoneOS</key>
        <true/>
        <key>NSHumanReadableCopyright</key>
-       <string>5.40</string>
+       <string>5.41</string>
        <key>NSMainNibFile</key>
        <string>iSaverRunner</string>
        <key>UIAppFonts</key>
index fcb2808488fe1916acd357a7899ba17b9c57171c..c2e5b88be556d7dbf6707dd8f4373a9b492f2241 100644 (file)
@@ -1,5 +1,5 @@
 /* Generated file, do not edit.
-   Created: Sat Aug  4 21:35:23 2018 by build-fntable.pl 1.6.
+   Created: Tue Oct 23 19:02:07 2018 by build-fntable.pl 1.6.
  */
 
 #import <Foundation/Foundation.h>
@@ -107,6 +107,7 @@ extern struct xscreensaver_function_table
  greynetic_xscreensaver_function_table,
  halftone_xscreensaver_function_table,
  halo_xscreensaver_function_table,
+ handsy_xscreensaver_function_table,
  helix_xscreensaver_function_table,
  hexadrop_xscreensaver_function_table,
  hexstrut_xscreensaver_function_table,
@@ -346,6 +347,7 @@ NSDictionary *make_function_table_dict(void)
        [NSValue valueWithPointer:&greynetic_xscreensaver_function_table], @"greynetic",
        [NSValue valueWithPointer:&halftone_xscreensaver_function_table], @"halftone",
        [NSValue valueWithPointer:&halo_xscreensaver_function_table], @"halo",
+       [NSValue valueWithPointer:&handsy_xscreensaver_function_table], @"handsy",
        [NSValue valueWithPointer:&helix_xscreensaver_function_table], @"helix",
        [NSValue valueWithPointer:&hexadrop_xscreensaver_function_table], @"hexadrop",
        [NSValue valueWithPointer:&hexstrut_xscreensaver_function_table], @"hexstrut",
index fb5dc71fe777db8e13496b130a1f7bd1d089cd68..a4f8c2c3f7e6aa75563b2c570f5aa3d62541cbc3 100755 (executable)
@@ -18,7 +18,7 @@ use strict;
 use File::Temp;
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my ($version) = ('$Revision: 1.6 $' =~ m/\s(\d[.\d]+)\s/s);
+my ($version) = ('$Revision: 1.7 $' =~ m/\s(\d[.\d]+)\s/s);
 
 my $verbose = 0;
 
@@ -52,6 +52,11 @@ sub set_icon ($$) {
   close $rez_fh;
 
   my @cmd = ('Rez',
+
+             '-isysroot', 
+             '/Applications/Xcode.app/Contents/Developer/Platforms' .
+             '/MacOSX.platform/Developer/SDKs/MacOSX.sdk',
+
              'CoreServices.r',
              $rez_filename,
              '-o', $target_res);
diff --git a/OSX/sparkle-bin/BinaryDelta b/OSX/sparkle-bin/BinaryDelta
new file mode 100755 (executable)
index 0000000..de7acd7
Binary files /dev/null and b/OSX/sparkle-bin/BinaryDelta differ
diff --git a/OSX/sparkle-bin/BinaryDelta.dSYM/Contents/Info.plist b/OSX/sparkle-bin/BinaryDelta.dSYM/Contents/Info.plist
new file mode 100644 (file)
index 0000000..325809b
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+       <dict>
+               <key>CFBundleDevelopmentRegion</key>
+               <string>English</string>
+               <key>CFBundleIdentifier</key>
+               <string>com.apple.xcode.dsym.BinaryDelta</string>
+               <key>CFBundleInfoDictionaryVersion</key>
+               <string>6.0</string>
+               <key>CFBundlePackageType</key>
+               <string>dSYM</string>
+               <key>CFBundleSignature</key>
+               <string>????</string>
+               <key>CFBundleShortVersionString</key>
+               <string>1.0</string>
+               <key>CFBundleVersion</key>
+               <string>1</string>
+       </dict>
+</plist>
diff --git a/OSX/sparkle-bin/BinaryDelta.dSYM/Contents/Resources/DWARF/BinaryDelta b/OSX/sparkle-bin/BinaryDelta.dSYM/Contents/Resources/DWARF/BinaryDelta
new file mode 100644 (file)
index 0000000..302129c
Binary files /dev/null and b/OSX/sparkle-bin/BinaryDelta.dSYM/Contents/Resources/DWARF/BinaryDelta differ
diff --git a/OSX/sparkle-bin/generate_appcast b/OSX/sparkle-bin/generate_appcast
new file mode 100755 (executable)
index 0000000..cffaded
Binary files /dev/null and b/OSX/sparkle-bin/generate_appcast differ
diff --git a/OSX/sparkle-bin/generate_appcast.dSYM/Contents/Info.plist b/OSX/sparkle-bin/generate_appcast.dSYM/Contents/Info.plist
new file mode 100644 (file)
index 0000000..85e4783
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+       <dict>
+               <key>CFBundleDevelopmentRegion</key>
+               <string>English</string>
+               <key>CFBundleIdentifier</key>
+               <string>com.apple.xcode.dsym.generate_appcast</string>
+               <key>CFBundleInfoDictionaryVersion</key>
+               <string>6.0</string>
+               <key>CFBundlePackageType</key>
+               <string>dSYM</string>
+               <key>CFBundleSignature</key>
+               <string>????</string>
+               <key>CFBundleShortVersionString</key>
+               <string>1.0</string>
+               <key>CFBundleVersion</key>
+               <string>1</string>
+       </dict>
+</plist>
diff --git a/OSX/sparkle-bin/generate_appcast.dSYM/Contents/Resources/DWARF/generate_appcast b/OSX/sparkle-bin/generate_appcast.dSYM/Contents/Resources/DWARF/generate_appcast
new file mode 100644 (file)
index 0000000..da66605
Binary files /dev/null and b/OSX/sparkle-bin/generate_appcast.dSYM/Contents/Resources/DWARF/generate_appcast differ
diff --git a/OSX/sparkle-bin/generate_keys b/OSX/sparkle-bin/generate_keys
new file mode 100755 (executable)
index 0000000..9b4bf11
Binary files /dev/null and b/OSX/sparkle-bin/generate_keys differ
diff --git a/OSX/sparkle-bin/generate_keys.dSYM/Contents/Info.plist b/OSX/sparkle-bin/generate_keys.dSYM/Contents/Info.plist
new file mode 100644 (file)
index 0000000..3caf890
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+       <dict>
+               <key>CFBundleDevelopmentRegion</key>
+               <string>English</string>
+               <key>CFBundleIdentifier</key>
+               <string>com.apple.xcode.dsym.generate_keys</string>
+               <key>CFBundleInfoDictionaryVersion</key>
+               <string>6.0</string>
+               <key>CFBundlePackageType</key>
+               <string>dSYM</string>
+               <key>CFBundleSignature</key>
+               <string>????</string>
+               <key>CFBundleShortVersionString</key>
+               <string>1.0</string>
+               <key>CFBundleVersion</key>
+               <string>1</string>
+       </dict>
+</plist>
diff --git a/OSX/sparkle-bin/generate_keys.dSYM/Contents/Resources/DWARF/generate_keys b/OSX/sparkle-bin/generate_keys.dSYM/Contents/Resources/DWARF/generate_keys
new file mode 100644 (file)
index 0000000..ff7be52
Binary files /dev/null and b/OSX/sparkle-bin/generate_keys.dSYM/Contents/Resources/DWARF/generate_keys differ
diff --git a/OSX/sparkle-bin/old_dsa_scripts/generate_dsa_keys_macos_10.12_only b/OSX/sparkle-bin/old_dsa_scripts/generate_dsa_keys_macos_10.12_only
new file mode 100755 (executable)
index 0000000..56f195f
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -e
+for file in "dsaparam.pem" "dsa_priv.pem" "dsa_pub.pem"; do
+  if [ -e "$file" ]; then
+    echo "There's already a $file here! Move it aside or be more careful!"
+    exit 1
+  fi
+done
+
+openssl="/usr/bin/openssl"
+$openssl gendsa <($openssl dsaparam 2047) -out dsa_priv.pem
+chmod 0400 dsa_priv.pem
+$openssl dsa -in dsa_priv.pem -pubout -out dsa_pub.pem
+
+echo "
+Generated two files:
+dsa_priv.pem: your private key. Keep it secret and don't share it!
+dsa_pub.pem: public counterpart to include in the app bundle.
+
+BACK UP YOUR PRIVATE KEY AND KEEP IT SAFE!
+If you lose it, your users will be unable to upgrade!
+"
+
+open -R dsa_priv.pem
diff --git a/OSX/sparkle-bin/old_dsa_scripts/sign_update b/OSX/sparkle-bin/old_dsa_scripts/sign_update
new file mode 100755 (executable)
index 0000000..fddaae8
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/bash
+set -e
+set -o pipefail
+if [ "$#" -ne 2 ]; then
+  echo "Usage: $0 update_archive_file dsa_priv.pem"
+  echo "This is an old DSA signing script for deprecated DSA keys."
+  echo "Do not use this for new applications."
+  exit 1
+fi
+openssl=/usr/bin/openssl
+version=`$openssl version`
+if [[ $version =~ "OpenSSL 0.9" ]]; then
+       # pre-10.13 system: Fall back to OpenSSL DSS1 digest because it does not like the -sha1 option
+       $openssl dgst -sha1 -binary < "$1" | $openssl dgst -dss1 -sign "$2" | $openssl enc -base64
+else
+       # 10.13 and later: Use LibreSSL SHA1 digest
+       $openssl dgst -sha1 -binary < "$1" | $openssl dgst -sha1 -sign "$2" | $openssl enc -base64
+fi
diff --git a/OSX/sparkle-bin/sign_update b/OSX/sparkle-bin/sign_update
new file mode 100755 (executable)
index 0000000..b97e4bd
Binary files /dev/null and b/OSX/sparkle-bin/sign_update differ
diff --git a/OSX/sparkle-bin/sign_update.dSYM/Contents/Info.plist b/OSX/sparkle-bin/sign_update.dSYM/Contents/Info.plist
new file mode 100644 (file)
index 0000000..0739389
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+       <dict>
+               <key>CFBundleDevelopmentRegion</key>
+               <string>English</string>
+               <key>CFBundleIdentifier</key>
+               <string>com.apple.xcode.dsym.sign_update</string>
+               <key>CFBundleInfoDictionaryVersion</key>
+               <string>6.0</string>
+               <key>CFBundlePackageType</key>
+               <string>dSYM</string>
+               <key>CFBundleSignature</key>
+               <string>????</string>
+               <key>CFBundleShortVersionString</key>
+               <string>1.0</string>
+               <key>CFBundleVersion</key>
+               <string>1</string>
+       </dict>
+</plist>
diff --git a/OSX/sparkle-bin/sign_update.dSYM/Contents/Resources/DWARF/sign_update b/OSX/sparkle-bin/sign_update.dSYM/Contents/Resources/DWARF/sign_update
new file mode 100644 (file)
index 0000000..67f19b4
Binary files /dev/null and b/OSX/sparkle-bin/sign_update.dSYM/Contents/Resources/DWARF/sign_update differ
index 5938a4aee55b95bb03e1d1304a0f2c6959d4b864..9249154930e61b0931bc29fcf682d7df0c0204df 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl -w
-# Copyright Â© 2013 Jamie Zawinski <jwz@jwz.org>
+# Copyright Â© 2013-2018 Jamie Zawinski <jwz@jwz.org>
 #
 # Permission to use, copy, modify, distribute, and sell this software and its
 # documentation for any purpose is hereby granted without fee, provided that
@@ -21,14 +21,15 @@ use open ":encoding(utf8)";
 use POSIX;
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my ($version) = ('$Revision: 1.2 $' =~ m/\s(\d[.\d]+)\s/s);
+my ($version) = ('$Revision: 1.5 $' =~ m/\s(\d[.\d]+)\s/s);
 
 my $verbose = 0;
 my $debug_p = 0;
 
 my $base_url = "https://www.jwz.org/";
-my $priv_key_file = "$ENV{HOME}/.ssh/sparkle_dsa_priv.pem";
-my $sign_update = "./sign_update.rb";
+my $dsa_priv_key_file = "$ENV{HOME}/.ssh/sparkle_dsa_priv.pem";
+my $dsa_sign_update = "sparkle-bin/old_dsa_scripts/sign_update";
+my $edddsa_sign_update = "sparkle-bin/sign_update";
 
 
 sub generate_xml($$$$) {
@@ -37,21 +38,26 @@ sub generate_xml($$$$) {
   my $outfile = "updates.xml";
 
   my $obody = '';
-  my %sigs;
+  my %sig1s;
+  my %sig2s;
   my %dates;
   if (open (my $in, '<', $outfile)) {
     print STDERR "$progname: reading $outfile\n" if $verbose;
     local $/ = undef;  # read entire file
     $obody = <$in>;
     close $in;
-    foreach my $item (split (/<item/i, $obody)) {
+    my @i = split (/<item/i, $obody);
+    shift @i;
+    foreach my $item (@i) {
       my ($v)    = ($item =~ m/version="(.*?)"/si);
-      my ($sig)  = ($item =~ m/dsaSignature="(.*?)"/si);
+      my ($sig1) = ($item =~ m/dsaSignature="(.*?)"/si);
+      my ($sig2) = ($item =~ m/edSignature="(.*?)"/si);
       my ($date) = ($item =~ m/<pubDate>(.*?)</si);
       next unless $v;
-      $sigs{$v}  = $sig  if $sig;
+      $sig1s{$v}  = $sig1 if $sig1;
+      $sig2s{$v}  = $sig2 if $sig2;
       $dates{$v} = $date if $date;
-      print STDERR "$progname: $v: " . ($date || '?') . "\n"
+      print STDERR "$progname: existing: $v: " . ($date || '?') . "\n"
         if ($verbose > 1);
     }
   }
@@ -82,7 +88,8 @@ sub generate_xml($$$$) {
     my $v2 = $v1; $v2 =~ s/\.//gs;
     my $zip = undef;
   DONE:
-    foreach my $ext ('zip', 'dmg', 'tar.gz', 'tar.Z') {
+    #foreach my $ext ('zip', 'dmg', 'tar.gz', 'tar.Z') {
+    foreach my $ext ('dmg') {
       foreach my $v ($v1, $v2) {
         foreach my $name ($app_name, "x" . lc($app_name)) {
           my $f = "$name-$v.$ext";
@@ -97,36 +104,51 @@ sub generate_xml($$$$) {
     my $publishedp = ($zip && -f "$www_dir/$zip");
     $publishedp = 1 if ($count == 0);
 
-    my $url = ("${base_url}$app_name/" . ($publishedp ? $zip : ""));
+    my $url = ("${base_url}$app_name/" . ($publishedp && $zip ? $zip : ""));
 
     $url =~ s@DaliClock/@xdaliclock/@gs if $url; # Kludge
 
     my @st = stat("$archive_dir/$zip") if $zip;
     my $size = $st[7];
     my $date = $st[9];
-    $date = ($zip ?
+    $date = ($date ?
              strftime ("%a, %d %b %Y %T %z", localtime($date))
              : "");
 
     my $odate = $dates{$v1};
-    my $sig   = $sigs{$v1};
+    my $sig1  = $sig1s{$v1};
+    my $sig2  = $sig2s{$v1};
     # Re-generate the sig if the file date changed.
-    $sig = undef if ($odate && $odate ne $date);
+    $sig1 = undef if ($odate && $odate ne $date);
+    $sig2 = undef if ($odate && $odate ne $date);
 
-    print STDERR "$progname: $v1: $date " . ($sig ? "Y" : "N") . "\n"
+    print STDERR "$progname: $v1: $date " .
+                  ($sig1 ? "Y" : "N") . ($sig2 ? "Y" : "N") . "\n"
       if ($verbose > 1);
 
-    if (!$sig && $zip) {
+    if (!$sig1 && $zip) {      # Old-style sigs
       local %ENV = %ENV;
       $ENV{PATH} = "/usr/bin:$ENV{PATH}";
-      $sig = `$sign_update "$archive_dir/$zip" "$priv_key_file"`;
-      $sig =~ s/\s+//gs;
+      $sig1 = `$dsa_sign_update "$archive_dir/$zip" "$dsa_priv_key_file"`;
+      $sig1 =~ s/\s+//gs;
     }
 
+    if (!$sig2 && $zip) {      # New-style sigs
+      local %ENV = %ENV;
+      $ENV{PATH} = "/usr/bin:$ENV{PATH}";
+      my $xml = `$edddsa_sign_update "$archive_dir/$zip"`;
+      ($sig2) = ($xml =~ m/sparkle:edSignature=\"([^\"<>\s]+)\"/si);
+      error ("unparsable: $edddsa_sign_update: $xml") unless $sig2;
+    }
+
+    $sig1 = 'ERROR' unless defined($sig1);
+    $sig2 = 'ERROR' unless defined($sig2);
+    $size = -1 unless defined($size);
     my $enc = ($publishedp
                ? ("<enclosure url=\"$url\"\n" .
                   " sparkle:version=\"$v1\"\n" .
-                  " sparkle:dsaSignature=\"$sig\"\n" .
+                  " sparkle:dsaSignature=\"$sig1\"\n" .
+                  " sparkle:edSignature=\"$sig2\"\n" .
                   " length=\"$size\"\n" .
                   " type=\"application/octet-stream\" />\n")
                : "<sparkle:version>$v1</sparkle:version>\n");
@@ -196,6 +218,8 @@ sub usage() {
 }
 
 sub main() {
+  binmode (STDOUT, ':utf8');
+  binmode (STDERR, ':utf8');
   my ($app_name, $changelog, $archive_dir, $www_dir);
   while ($#ARGV >= 0) {
     $_ = shift @ARGV;
index a4733a6f8f384781ed1939a74fe90abb2235b2d4..62d3b3d407984a54c9904230f92fe88df722a14b 100644 (file)
@@ -7,6 +7,17 @@
   <link>https://www.jwz.org/xscreensaver/updates.xml</link>
   <description>Updates to xscreensaver.</description>
   <language>en</language>
+  <item>
+   <title>Version 5.40</title>
+   <link>https://www.jwz.org/xscreensaver/xscreensaver-5.40.dmg</link>
+   <description><![CDATA[&bull; New hacks, 'filmleader', 'vfeedback'. <BR>&bull; New hack, 'glitchpeg' (X11 and macOS only). <BR>&bull; GLPlanet blends between day and night maps at the dusk terminator. <BR>&bull; DymaxionMap can display arbitrary map images, and animate sunlight across the flattened globe. <BR>&bull; Tessellimage can draw either Delaunay or Voronoi tilings. <BR>&bull; XAnalogTV includes test cards. <BR>&bull; Android: These hacks work now: 'blitspin', 'bumps', 'cityflow', 'endgame', 'esper', 'flipscreen3d', 'gleidescope', 'glslideshow', 'jigglypuff', 'queens', 'tessellimage', 'xanalogtv', 'xmatrix', 'zoom'.]]></description>
+   <pubDate>Sun, 12 Aug 2018 16:39:18 -0700</pubDate>
+   <enclosure url="https://www.jwz.org/xscreensaver/xscreensaver-5.40.dmg"
+    sparkle:version="5.40"
+    sparkle:dsaSignature="MCwCFBVb+Vyo39OOfiuqm9K3zmrahnGIAhRK6pirSDvI1gT0ddtv+okGTW4NLg=="
+    length="34297646"
+    type="application/octet-stream" />
+  </item>
   <item>
    <title>Version 5.39</title>
    <link>https://www.jwz.org/xscreensaver/xscreensaver-5.39.dmg</link>
     length="54125574"
     type="application/octet-stream" />
   </item>
-  <item>
-   <title>Version 5.37</title>
-   <link>https://www.jwz.org/xscreensaver/xscreensaver-5.37.dmg</link>
-   <description><![CDATA[&bull; New hack, `vigilance'. <BR>&bull; Added Mac Software Update and VMware to `bsod'. <BR>&bull; macOS: Grabbing the desktop works again. <BR>&bull; macOS: Pinch to zoom. <BR>&bull; Android: Both Daydreams and Live Wallpapers are implemented. <BR>&bull; Updated `webcollage' for recent changes. <BR>&bull; Various bug fixes.]]></description>
-   <pubDate>Wed, 05 Jul 2017 10:55:51 -0700</pubDate>
-   <enclosure url="https://www.jwz.org/xscreensaver/xscreensaver-5.37.dmg"
-    sparkle:version="5.37"
-    sparkle:dsaSignature="MCwCFFsEWCDZbAY8Owz7k4lcs+uGM+LUAhQlLSsjg0Eqkd2TX2UfxiFdPrciTA=="
-    length="52481386"
-    type="application/octet-stream" />
-  </item>
   <item>
    <title>Version 5.34</title>
    <link>https://www.jwz.org/xscreensaver/xscreensaver-5.34.dmg</link>
index f5e98b81dd906ecb3a6e89d45eb9476a03925fe4..5d31d7bf8ff1e41c9ec33d5ede61aa6b65e35abe 100644 (file)
                                AF777A1D09B660B300EA3033 /* PBXTargetDependency */,
                                AF777A1B09B660B300EA3033 /* PBXTargetDependency */,
                                AF777A1909B660B300EA3033 /* PBXTargetDependency */,
+                               AF62D6392180087500C57C42 /* PBXTargetDependency */,
                                AF1B0FC51D7AB5740011DBE4 /* PBXTargetDependency */,
                                AF4F10F0143450C300E34F3F /* PBXTargetDependency */,
                                AFC0E8C91CDC6125008CAFAC /* PBXTargetDependency */,
                AF1ADA141850132600932759 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
                AF1ADA161850157400932759 /* Updater.xib in Resources */ = {isa = PBXBuildFile; fileRef = AF1ADA151850157400932759 /* Updater.xib */; };
                AF1ADA181850180E00932759 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF1ADA171850180E00932759 /* Sparkle.framework */; };
-               AF1ADA1A1850186B00932759 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = AF1ADA171850180E00932759 /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
+               AF1ADA1A1850186B00932759 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = AF1ADA171850180E00932759 /* Sparkle.framework */; };
                AF1ADA1B18501B3D00932759 /* SaverRunner.icns in Resources */ = {isa = PBXBuildFile; fileRef = AF2D522513E954A0002AA818 /* SaverRunner.icns */; };
                AF1ADA1F18504A4F00932759 /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF976ED30989BF59001F8B92 /* ScreenSaver.framework */; };
                AF1B0FAE1D7AB4740011DBE4 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
                AF6048FB157C07C600CA21E4 /* jwzgles.c in Sources */ = {isa = PBXBuildFile; fileRef = AF6048F8157C07C600CA21E4 /* jwzgles.c */; };
                AF6048FC157C07C600CA21E4 /* jwzgles.h in Headers */ = {isa = PBXBuildFile; fileRef = AF6048F9157C07C600CA21E4 /* jwzgles.h */; };
                AF6048FD157C07C600CA21E4 /* jwzglesI.h in Headers */ = {isa = PBXBuildFile; fileRef = AF6048FA157C07C600CA21E4 /* jwzglesI.h */; };
+               AF62D61F2180070600C57C42 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
+               AF62D6212180070600C57C42 /* libjwxyz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AF4808C1098C3B6C00FB32B8 /* libjwxyz.a */; };
+               AF62D6222180070600C57C42 /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF976ED30989BF59001F8B92 /* ScreenSaver.framework */; };
+               AF62D6232180070600C57C42 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF2C31E515C0F7FE007A6896 /* QuartzCore.framework */; };
+               AF62D6242180070600C57C42 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
+               AF62D6252180070600C57C42 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF48112B0990A2C700FB32B8 /* Carbon.framework */; };
+               AF62D6262180070600C57C42 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CEE0BC611A6B0D6200C098BF /* OpenGL.framework */; };
+               AF62D6272180070600C57C42 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = AF78369617DB9F25003B9FC0 /* libz.dylib */; };
+               AF62D6312180082100C57C42 /* handsy_model.c in Sources */ = {isa = PBXBuildFile; fileRef = AF62D62F2180082100C57C42 /* handsy_model.c */; };
+               AF62D6322180082100C57C42 /* handsy_model.c in Sources */ = {isa = PBXBuildFile; fileRef = AF62D62F2180082100C57C42 /* handsy_model.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; };
+               AF62D6332180082100C57C42 /* handsy.c in Sources */ = {isa = PBXBuildFile; fileRef = AF62D6302180082100C57C42 /* handsy.c */; };
+               AF62D6342180082100C57C42 /* handsy.c in Sources */ = {isa = PBXBuildFile; fileRef = AF62D6302180082100C57C42 /* handsy.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; };
+               AF62D6362180083E00C57C42 /* handsy.xml in Resources */ = {isa = PBXBuildFile; fileRef = AF62D6352180083D00C57C42 /* handsy.xml */; };
+               AF62D6372180083E00C57C42 /* handsy.xml in Resources */ = {isa = PBXBuildFile; fileRef = AF62D6352180083D00C57C42 /* handsy.xml */; };
                AF633C081EE0BA6F00AB33BD /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; };
                AF633C0A1EE0BA6F00AB33BD /* libjwxyz.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AF4808C1098C3B6C00FB32B8 /* libjwxyz.a */; };
                AF633C0B1EE0BA6F00AB33BD /* ScreenSaver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF976ED30989BF59001F8B92 /* ScreenSaver.framework */; };
                        remoteGlobalIDString = AF5ECEA92116B1A400069433;
                        remoteInfo = VFeedback;
                };
+               AF62D61A2180070600C57C42 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = AF4808C0098C3B6C00FB32B8;
+                       remoteInfo = jwxyz;
+               };
+               AF62D6382180087500C57C42 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = AF62D6182180070600C57C42;
+                       remoteInfo = Handsy;
+               };
                AF633C031EE0BA6F00AB33BD /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
                AF6048F8157C07C600CA21E4 /* jwzgles.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jwzgles.c; path = ../jwxyz/jwzgles.c; sourceTree = "<group>"; };
                AF6048F9157C07C600CA21E4 /* jwzgles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jwzgles.h; path = ../jwxyz/jwzgles.h; sourceTree = "<group>"; };
                AF6048FA157C07C600CA21E4 /* jwzglesI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jwzglesI.h; path = ../jwxyz/jwzglesI.h; sourceTree = "<group>"; };
+               AF62D62D2180070600C57C42 /* Handsy.saver */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Handsy.saver; sourceTree = BUILT_PRODUCTS_DIR; };
+               AF62D62F2180082100C57C42 /* handsy_model.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = handsy_model.c; path = hacks/glx/handsy_model.c; sourceTree = "<group>"; };
+               AF62D6302180082100C57C42 /* handsy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = handsy.c; path = hacks/glx/handsy.c; sourceTree = "<group>"; };
+               AF62D6352180083D00C57C42 /* handsy.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = handsy.xml; sourceTree = "<group>"; };
                AF633C161EE0BA6F00AB33BD /* Vigilance.saver */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Vigilance.saver; sourceTree = BUILT_PRODUCTS_DIR; };
                AF633C181EE0BC4900AB33BD /* vigilance.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = vigilance.xml; sourceTree = "<group>"; };
                AF633C191EE0BC4A00AB33BD /* vigilance.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = vigilance.c; path = hacks/glx/vigilance.c; sourceTree = "<group>"; };
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
+               AF62D6202180070600C57C42 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               AF62D6212180070600C57C42 /* libjwxyz.a in Frameworks */,
+                               AF62D6222180070600C57C42 /* ScreenSaver.framework in Frameworks */,
+                               AF62D6232180070600C57C42 /* QuartzCore.framework in Frameworks */,
+                               AF62D6242180070600C57C42 /* Cocoa.framework in Frameworks */,
+                               AF62D6252180070600C57C42 /* Carbon.framework in Frameworks */,
+                               AF62D6262180070600C57C42 /* OpenGL.framework in Frameworks */,
+                               AF62D6272180070600C57C42 /* libz.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                AF633C091EE0BA6F00AB33BD /* Frameworks */ = {
                        isa = PBXFrameworksBuildPhase;
                        buildActionMask = 2147483647;
                                AFA6AB0520999950006D2685 /* GlitchPEG.saver */,
                                AFD77E7020C23F8600A3638D /* FilmLeader.saver */,
                                AF5ECEC02116B1A400069433 /* VFeedback.saver */,
+                               AF62D62D2180070600C57C42 /* Handsy.saver */,
                        );
                        name = Products;
                        path = ..;
                                AF7777E709B64CF700EA3033 /* glslideshow.c */,
                                AFA55C8C099349EE00F3E977 /* glsnake.c */,
                                AFD56E080996A07A00BA26F7 /* gltext.c */,
+                               AF62D62F2180082100C57C42 /* handsy_model.c */,
+                               AF62D6302180082100C57C42 /* handsy.c */,
                                AF1B0FBE1D7AB5210011DBE4 /* hexstrut.c */,
                                AF78D18A142DD96E002AAF77 /* hilbert.c */,
                                AFC0E8C21CDC60A9008CAFAC /* hydrostat.c */,
                                AFC258C10988A468000655EE /* greynetic.xml */,
                                AFC258C20988A468000655EE /* halftone.xml */,
                                AFC258C30988A468000655EE /* halo.xml */,
+                               AF62D6352180083D00C57C42 /* handsy.xml */,
                                AFC258C40988A468000655EE /* helix.xml */,
                                AFB591BC178B81E600EA4005 /* hexadrop.xml */,
                                AF1B0FBF1D7AB5210011DBE4 /* hexstrut.xml */,
                                AF1AD9DF18500F9F00932759 /* Frameworks */,
                                AF1AD9E018500F9F00932759 /* Resources */,
                                AF1ADA191850185F00932759 /* CopyFiles */,
+                               AF168EA821D240EB00ED6E08 /* Codesign Sparkle */,
                                AF1ADA1E18501DC200932759 /* Run Update Info Plist */,
                        );
                        buildRules = (
                        productReference = AF5ECEC02116B1A400069433 /* VFeedback.saver */;
                        productType = "com.apple.product-type.bundle";
                };
+               AF62D6182180070600C57C42 /* Handsy */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = AF62D62A2180070600C57C42 /* Build configuration list for PBXNativeTarget "Handsy" */;
+                       buildPhases = (
+                               AF62D61B2180070600C57C42 /* Resources */,
+                               AF62D61D2180070600C57C42 /* Sources */,
+                               AF62D6202180070600C57C42 /* Frameworks */,
+                               AF62D6282180070600C57C42 /* Rez */,
+                               AF62D6292180070600C57C42 /* Run Update Info Plist */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               AF62D6192180070600C57C42 /* PBXTargetDependency */,
+                       );
+                       name = Handsy;
+                       productName = DangerBall;
+                       productReference = AF62D62D2180070600C57C42 /* Handsy.saver */;
+                       productType = "com.apple.product-type.bundle";
+               };
                AF633C011EE0BA6F00AB33BD /* Vigilance */ = {
                        isa = PBXNativeTarget;
                        buildConfigurationList = AF633C131EE0BA6F00AB33BD /* Build configuration list for PBXNativeTarget "Vigilance" */;
                29B97313FDCFA39411CA2CEA /* Project object */ = {
                        isa = PBXProject;
                        attributes = {
-                               LastUpgradeCheck = 0940;
+                               LastUpgradeCheck = 1010;
                                TargetAttributes = {
                                        AF08398F09930B6B00277BE9 = {
                                                DevelopmentTeam = 4627ATJELP;
                                        AF5ECEA92116B1A400069433 = {
                                                DevelopmentTeam = 4627ATJELP;
                                        };
+                                       AF62D6182180070600C57C42 = {
+                                               DevelopmentTeam = 4627ATJELP;
+                                       };
                                        AF633C011EE0BA6F00AB33BD = {
                                                DevelopmentTeam = 4627ATJELP;
                                        };
                                AF7777D009B64C6B00EA3033 /* GLSlideshow */,
                                AFA55C77099349A600F3E977 /* GLSnake */,
                                AFD56DF10996A03800BA26F7 /* GLText */,
+                               AF62D6182180070600C57C42 /* Handsy */,
                                AF1B0FA71D7AB4740011DBE4 /* Hexstrut */,
                                AF78D175142DD8F3002AAF77 /* Hilbert */,
                                AFC0E8AB1CDC601A008CAFAC /* Hydrostat */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
+               AF62D61B2180070600C57C42 /* Resources */ = {
+                       isa = PBXResourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               AF62D6362180083E00C57C42 /* handsy.xml in Resources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                AF633C041EE0BA6F00AB33BD /* Resources */ = {
                        isa = PBXResourcesBuildPhase;
                        buildActionMask = 2147483647;
                                AF918B0F158FC53D002B5D1E /* grav.xml in Resources */,
                                AF918B11158FC53D002B5D1E /* halftone.xml in Resources */,
                                AF918B12158FC53D002B5D1E /* halo.xml in Resources */,
+                               AF62D6372180083E00C57C42 /* handsy.xml in Resources */,
                                AF918B13158FC53D002B5D1E /* helix.xml in Resources */,
                                AFB591BF178B81E600EA4005 /* hexadrop.xml in Resources */,
                                AF1B0FC01D7AB5330011DBE4 /* hexstrut.xml in Resources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
+               AF62D6282180070600C57C42 /* Rez */ = {
+                       isa = PBXRezBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                AF633C111EE0BA6F00AB33BD /* Rez */ = {
                        isa = PBXRezBuildPhase;
                        buildActionMask = 2147483647;
                        shellScript = "$SOURCE_ROOT/update-info-plist.pl -q $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX";
                        showEnvVarsInLog = 0;
                };
+               AF168EA821D240EB00ED6E08 /* Codesign Sparkle */ = {
+                       isa = PBXShellScriptBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       inputFileListPaths = (
+                       );
+                       inputPaths = (
+                       );
+                       name = "Codesign Sparkle";
+                       outputFileListPaths = (
+                       );
+                       outputPaths = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+                       shellPath = /bin/sh;
+                       shellScript = "codesign -v --force --deep -o runtime --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sparkle.framework/Versions/A/Resources/Autoupdate.app\ncodesign -v --force -o runtime --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sparkle.framework/Versions/A\n";
+                       showEnvVarsInLog = 0;
+               };
                AF1A176F0D6D6EE3008AF328 /* Run Update Info Plist */ = {
                        isa = PBXShellScriptBuildPhase;
                        buildActionMask = 2147483647;
                        shellScript = "$SOURCE_ROOT/update-info-plist.pl -q $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX";
                        showEnvVarsInLog = 0;
                };
+               AF62D6292180070600C57C42 /* Run Update Info Plist */ = {
+                       isa = PBXShellScriptBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       inputPaths = (
+                       );
+                       name = "Run Update Info Plist";
+                       outputPaths = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+                       shellPath = /bin/sh;
+                       shellScript = "$SOURCE_ROOT/update-info-plist.pl -q $BUILT_PRODUCTS_DIR/$PRODUCT_NAME$WRAPPER_SUFFIX";
+                       showEnvVarsInLog = 0;
+               };
                AF633C121EE0BA6F00AB33BD /* Run Update Info Plist */ = {
                        isa = PBXShellScriptBuildPhase;
                        buildActionMask = 2147483647;
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
+               AF62D61D2180070600C57C42 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               AF62D6312180082100C57C42 /* handsy_model.c in Sources */,
+                               AF62D61F2180070600C57C42 /* XScreenSaverSubclass.m in Sources */,
+                               AF62D6332180082100C57C42 /* handsy.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                AF633C061EE0BA6F00AB33BD /* Sources */ = {
                        isa = PBXSourcesBuildPhase;
                        buildActionMask = 2147483647;
                                AF918A67158FC3E5002B5D1E /* glslideshow.c in Sources */,
                                AF918A68158FC3E5002B5D1E /* glsnake.c in Sources */,
                                AF918A69158FC3E5002B5D1E /* gltext.c in Sources */,
+                               AF62D6322180082100C57C42 /* handsy_model.c in Sources */,
+                               AF62D6342180082100C57C42 /* handsy.c in Sources */,
                                AF1B0FC31D7AB5500011DBE4 /* hexstrut.c in Sources */,
                                AF918A6A158FC3E5002B5D1E /* hilbert.c in Sources */,
                                AFC0E8C41CDC60B0008CAFAC /* hydrostat.c in Sources */,
                        target = AF5ECEA92116B1A400069433 /* VFeedback */;
                        targetProxy = AF5ECEC82116B31F00069433 /* PBXContainerItemProxy */;
                };
+               AF62D6192180070600C57C42 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = AF4808C0098C3B6C00FB32B8 /* jwxyz */;
+                       targetProxy = AF62D61A2180070600C57C42 /* PBXContainerItemProxy */;
+               };
+               AF62D6392180087500C57C42 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = AF62D6182180070600C57C42 /* Handsy */;
+                       targetProxy = AF62D6382180087500C57C42 /* PBXContainerItemProxy */;
+               };
                AF633C021EE0BA6F00AB33BD /* PBXTargetDependency */ = {
                        isa = PBXTargetDependency;
                        target = AF4808C0098C3B6C00FB32B8 /* jwxyz */;
                        };
                        name = Release;
                };
+               AF62D62B2180070600C57C42 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
+                                       "USE_GL=1",
+                                       "$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
+                               );
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
+               };
+               AF62D62C2180070600C57C42 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = (
+                                       "USE_GL=1",
+                                       "$(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)",
+                               );
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
                AF633C141EE0BA6F00AB33BD /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
                        isa = XCBuildConfiguration;
                        baseConfigurationReference = AF94E7411A16E93600289B93 /* xscreensaver.xcconfig */;
                        buildSettings = {
+                               ALWAYS_SEARCH_USER_PATHS = NO;
                                ARCHS = "$(ARCHS_STANDARD)";
                                BUNDLE_IDENTIFIER = "org.jwz.${PROJECT_NAME:rfc1034identifier}.${PRODUCT_NAME:rfc1034identifier}";
                                CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
                                "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
                                "CODE_SIGN_IDENTITY[sdk=iphonesimulator*]" = "iPhone Developer";
                                "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Developer ID Application";
+                               CODE_SIGN_INJECT_BASE_ENTITLEMENTS = YES;
                                COMBINE_HIDPI_IMAGES = YES;
                                DEVELOPMENT_TEAM = 4627ATJELP;
+                               ENABLE_HARDENED_RUNTIME = YES;
                                ENABLE_STRICT_OBJC_MSGSEND = YES;
                                ENABLE_TESTABILITY = YES;
                                GCC_NO_COMMON_BLOCKS = YES;
                                ONLY_ACTIVE_ARCH = YES;
                                OTHER_CFLAGS = "";
                                "OTHER_CFLAGS[sdk=macosx*]" = "$(OBJC_GC_CFLAGS)";
+                               OTHER_CODE_SIGN_FLAGS = "--timestamp";
                                "OTHER_LDFLAGS[sdk=macosx*]" = "-headerpad_max_install_names";
                                PRODUCT_NAME = "$(TARGET_NAME)";
                                PROVISIONING_PROFILE = "";
                        isa = XCBuildConfiguration;
                        baseConfigurationReference = AF94E7411A16E93600289B93 /* xscreensaver.xcconfig */;
                        buildSettings = {
+                               ALWAYS_SEARCH_USER_PATHS = NO;
                                ARCHS = "$(ARCHS_STANDARD)";
                                BUNDLE_IDENTIFIER = "org.jwz.${PROJECT_NAME:rfc1034identifier}.${PRODUCT_NAME:rfc1034identifier}";
                                CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
                                "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution: Jamie Zawinski (4627ATJELP)";
                                "CODE_SIGN_IDENTITY[sdk=iphonesimulator*]" = "iPhone Distribution: Jamie Zawinski (4627ATJELP)";
                                "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Developer ID Application: Jamie Zawinski (4627ATJELP)";
+                               CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO;
                                COMBINE_HIDPI_IMAGES = YES;
                                DEVELOPMENT_TEAM = 4627ATJELP;
+                               ENABLE_HARDENED_RUNTIME = YES;
                                ENABLE_STRICT_OBJC_MSGSEND = YES;
                                GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
                                GCC_NO_COMMON_BLOCKS = YES;
                                "LLVM_LTO[sdk=macosx*]" = NO;
                                OTHER_CFLAGS = "";
                                "OTHER_CFLAGS[sdk=macosx*]" = "$(OBJC_GC_CFLAGS)";
+                               OTHER_CODE_SIGN_FLAGS = "--timestamp";
                                "OTHER_LDFLAGS[sdk=macosx*]" = "-headerpad_max_install_names";
                                PRODUCT_NAME = "$(TARGET_NAME)";
                                PROVISIONING_PROFILE = "";
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                };
+               AF62D62A2180070600C57C42 /* Build configuration list for PBXNativeTarget "Handsy" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               AF62D62B2180070600C57C42 /* Debug */,
+                               AF62D62C2180070600C57C42 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
                AF633C131EE0BA6F00AB33BD /* Build configuration list for PBXNativeTarget "Vigilance" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
diff --git a/README b/README
index af3f94903cc6a1e3bc3ac89cfeec16381cfbefce..288b19f2ae724f5bf755d4a55617e0395d6a2cd0 100644 (file)
--- a/README
+++ b/README
@@ -46,19 +46,29 @@ XScreenSaver has an extensive manual -- please read it!
 
 ===============================================================================
 
-5.40   * New hacks, 'filmleader', 'vfeedback'.
-       * New hack, 'glitchpeg' (X11 and macOS only).
+5.41   * X11: Those new font-loading fallback heuristics work again. Oops.
+       * iOS, Android: Plugged many memory leaks at exit.
+       * New hack, `handsy'.
+       * Fixed `noof' from displaying minimalistically.
+       * Rewrote `unknownpleasures' to be faster, and a true waterfall graph.
+       * BSOD Solaris improved. DVD added.
+       * Linux: If the xscreensaver daemon is setuid, then we can implore the
+          kernel's out-of-memory killer to pretty please not unlock the screen.
+       * macOS: Upgraded Sparkle (the "Check for Updates" library).
+
+5.40   * New hacks, `filmleader', `vfeedback'.
+       * New hack, `glitchpeg' (X11 and macOS only).
        * GLPlanet blends between day and night maps at the dusk terminator.
        * DymaxionMap can display arbitrary map images, and animate sunlight
           across the flattened globe.
        * Tessellimage can draw either Delaunay or Voronoi tilings.
        * XAnalogTV includes test cards.
-       * Android: These hacks work now: 'blitspin', 'bumps', 'cityflow',
-         'endgame', 'esper', 'flipscreen3d', 'gleidescope', 'glslideshow',
-         'jigglypuff', 'queens', 'tessellimage', 'xanalogtv', 'xmatrix',
-         'zoom'.
+       * Android: These hacks work now: `blitspin', `bumps', `cityflow',
+         `endgame', `esper', `flipscreen3d', `gleidescope', `glslideshow',
+         `jigglypuff', `queens', `tessellimage', `xanalogtv', `xmatrix',
+         `zoom'.
 
-5.39   * New hacks, 'razzledazzle', 'peepers', 'crumbler' and `maze3d'.
+5.39   * New hacks, `razzledazzle', `peepers', `crumbler' and `maze3d'.
        * More heuristics for using RSS feeds as image sources.
        * Android: Image loading works.
        * Built-in image assets are now PNG instead of XPM or XBM.
@@ -66,24 +76,24 @@ XScreenSaver has an extensive manual -- please read it!
          terrible selection of installed fonts.
        * macOS: Retina display-related bug fixes.
 
-5.38   * New hack, 'esper'.
+5.38   * New hack, `esper'.
        * macOS: Support for Retina displays.
        * X11: `webcollage' now works with ImageMagick instead of with
          pbmtools if `webcollage-helper' is not installed.
-       * 'bsod' now accepts Dunning-Krugerrands.
-       * Android: These hacks work now: 'anemone', 'anemotaxis', 'atlantis',
-         'bouboule', 'celtic', 'compass', 'crackberg', 'epicycle',
-         'fuzzyflakes', 'goop', 'kumppa' 'munch', 'pacman', 'polyominoes',
-         'slip'.
-       * Android: Thick lines work better for: 'anemone', 'anemotaxis',
-         'celtic', 'compass', 'deluxe', 'epicycle', 'fuzzyflakes', 'pacman'
-       * Android: Assorted performance improvements, especially for 'kumppa'
-         and 'slip'.
+       * `bsod' now accepts Dunning-Krugerrands.
+       * Android: These hacks work now: `anemone', `anemotaxis', `atlantis',
+         `bouboule', `celtic', `compass', `crackberg', `epicycle',
+         `fuzzyflakes', `goop', `kumppa' `munch', `pacman', `polyominoes',
+         `slip'.
+       * Android: Thick lines work better for: `anemone', `anemotaxis',
+         `celtic', `compass', `deluxe', `epicycle', `fuzzyflakes', `pacman'.
+       * Android: Assorted performance improvements, especially for `kumppa'
+         and `slip'.
         * Android TV: Daydreams work.
        * iOS: Tweaks for iPhone X.
        * Lots of xlockmore-derived hacks now have animated erase routines.
-       * 'crystal' works properly on non-X11 systems.
-       * 'm6502' now includes 'texture.asm'.
+       * `crystal' works properly on non-X11 systems.
+       * `m6502' now includes `texture.asm'.
        * X11: Try harder to find sensible fonts for the password dialog.
 
 5.37   * New hack, `vigilance'.
index 6fc2fe583c40370f0fc96f3dce9830d79ae170a7..451aec15d25d0e51328225cf8bd0abee88958b8b 100644 (file)
@@ -178,6 +178,12 @@ Programming Tips
   - On modern machines, OpenGL will always run faster than Xlib.  It's
     also more portable.  Consider writing in OpenGL whenever possible.
 
+  - Free any memory you allocate. While screen savers under X11 have
+    their memory freed automatically when their process is killed by
+    the XScreenSaver daemon, under iOS and Android screen savers exist
+    in long-lived processes where no such cleanup takes place.
+    Consider Valgrind or gcc -fsanitize=leak to find memory leaks.
+
 
 ==========================================================================
 macOS, iOS and Android
index 37e58725a43fcf9eaf4c4c06ba6cf60df50de087..d25f855eea2add9045f49e8c2a51cb6c8709a946 100644 (file)
@@ -39,7 +39,10 @@ m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun
 #
 # Modified to require ngettext
 # Matthias Clasen <mclasen@redhat.com> 08/06/2004
-#
+
+# Increment this whenever this file is changed.
+#serial 1
+
 # We need this here as well, since someone might use autoconf-2.5x
 # to configure GLib then an older version to configure a package
 # using AM_GLIB_GNU_GETTEXT
index f0d5da0185bbcdeafdac47eb01c97e113dd0eefd..ed65edf6c5c17a9baccae5ff1ec855fd1dc60926 100644 (file)
@@ -128,6 +128,7 @@ export ANDROID_HACKS=               \
        grav                    \
        greynetic               \
        halo                    \
+       handsy                  \
        helix                   \
        hexadrop                \
        hexstrut                \
index 648cc3210ab29a00aa2a70cd6a0fc2dec44d31ed..978b94c05229f5a928ba63a878aaee2dca0b4205 100644 (file)
@@ -1,8 +1,8 @@
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 buildscript {
     repositories {
-        jcenter()
         google()
+        jcenter()
     }
     dependencies {
         classpath 'com.android.tools.build:gradle:3.1.2'
@@ -12,9 +12,9 @@ buildscript {
 
 allprojects {
   repositories {
+    google()
     maven { url 'https://maven.google.com' }
     jcenter()
-    google()
   }
 }
 
index bc8f00c653bd31d53e3eff5e684e8fba834820d9..c2ab27f06715a6f458742a868ca05ded504a513c 100644 (file)
Binary files a/android/xscreensaver/.idea/caches/build_file_checksums.ser and b/android/xscreensaver/.idea/caches/build_file_checksums.ser differ
index c0f68eddd7c4423a9fa05d6a53e9d1eb7e9c8c14..99202cc2d646ceed792bbfa449bc73a840cd6f95 100644 (file)
@@ -25,7 +25,7 @@
       </value>
     </option>
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/build/classes" />
   </component>
   <component name="ProjectType">
index 1dedd643543eb1ca76b34fa57ecd27eecf31f114..9f2ef7343bccf8a6ae425e233148e6bb7d9c6dce 100644 (file)
@@ -1,5 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
+  <component name="CMakeSettings">
+    <configurations>
+      <configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" />
+    </configurations>
+  </component>
   <component name="ChangeListManager">
     <list default="true" id="41008724-035d-4e24-92b6-6dfb9231c83c" name="Default" comment="" />
     <ignored path="xscreensaver.iws" />
@@ -35,8 +40,7 @@
         <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
           <provider selected="true" editor-type-id="text-editor">
             <state relative-caret-position="90">
-              <caret line="6" column="0" lean-forward="false" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
-              <folding />
+              <caret line="6" selection-start-line="6" selection-end-line="6" />
             </state>
           </provider>
         </entry>
                             <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle-api/3.1.2/427e25639a55911cadcf70657c9b2ded2ad6af2b/gradle-api-3.1.2.jar" />
                             <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.databinding/compilerCommon/3.1.2/be65c11ded4242932046f23ecfa5c7ccb0e98f46/compilerCommon-3.1.2.jar" />
                             <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jre8/1.2.0/505f55b9619bbc5f5e26c77427dd24a6a441eef1/kotlin-stdlib-jre8-1.2.0.jar" />
-                            <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/transform-api/2.0.0-deprecated-use-gradle-api/85bee1acea9e27152b920746c68133b30b11431/transform-api-2.0.0-deprecated-use-gradle-api.jar" />
+                            <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/transform-api/2.0.0-deprecated-use-gradle-api/47f6c56527c42425742fa9b56ffd3fd80763fe03/transform-api-2.0.0-deprecated-use-gradle-api.jar" />
                             <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/5.1/5ef31c4fe953b1fd00b8a88fa1d6820e8785bb45/asm-5.1.jar" />
                             <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-analysis/5.1/6d1bf8989fc7901f868bee3863c44f21aa63d110/asm-analysis-5.1.jar" />
                             <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-commons/5.1/25d8a575034dd9cfcb375a39b5334f0ba9c8474e/asm-commons-5.1.jar" />
                             <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/gradle-api/3.1.2/427e25639a55911cadcf70657c9b2ded2ad6af2b/gradle-api-3.1.2.jar" />
                             <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.databinding/compilerCommon/3.1.2/be65c11ded4242932046f23ecfa5c7ccb0e98f46/compilerCommon-3.1.2.jar" />
                             <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jre8/1.2.0/505f55b9619bbc5f5e26c77427dd24a6a441eef1/kotlin-stdlib-jre8-1.2.0.jar" />
-                            <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/transform-api/2.0.0-deprecated-use-gradle-api/85bee1acea9e27152b920746c68133b30b11431/transform-api-2.0.0-deprecated-use-gradle-api.jar" />
+                            <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.android.tools.build/transform-api/2.0.0-deprecated-use-gradle-api/47f6c56527c42425742fa9b56ffd3fd80763fe03/transform-api-2.0.0-deprecated-use-gradle-api.jar" />
                             <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/5.1/5ef31c4fe953b1fd00b8a88fa1d6820e8785bb45/asm-5.1.jar" />
                             <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-analysis/5.1/6d1bf8989fc7901f868bee3863c44f21aa63d110/asm-analysis-5.1.jar" />
                             <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-commons/5.1/25d8a575034dd9cfcb375a39b5334f0ba9c8474e/asm-commons-5.1.jar" />
         </entry>
       </map>
     </option>
-    <option name="externalProjectsViewState">
-      <projects_view />
-    </option>
   </component>
   <component name="ProjectFrameBounds">
-    <option name="x" value="90" />
-    <option name="y" value="24" />
+    <option name="x" value="105" />
+    <option name="y" value="23" />
     <option name="width" value="1339" />
     <option name="height" value="859" />
   </component>
   <component name="ProjectView">
     <navigator currentView="Scope" currentSubView="Project Files" proportions="" version="1">
-      <flattenPackages />
-      <showMembers />
-      <showModules />
-      <showLibraryContents />
-      <hideEmptyPackages />
-      <abbreviatePackageNames />
-      <autoscrollToSource />
-      <autoscrollFromSource />
-      <sortByType />
-      <manualOrder />
       <foldersAlwaysOnTop value="true" />
     </navigator>
     <panes>
-      <pane id="AndroidView">
-        <subPane>
-          <expand>
-            <path>
-              <item name="xscreensaver" type="1abcf292:AndroidViewProjectNode" />
-              <item name="Gradle Scripts" type="ae0cef3a:AndroidBuildScriptsGroupNode" />
-            </path>
-          </expand>
-          <select />
-        </subPane>
-      </pane>
-      <pane id="PackagesPane" />
-      <pane id="Scratches" />
       <pane id="ProjectPane" />
       <pane id="Scope">
         <subPane subId="Project Files">
           <select />
         </subPane>
       </pane>
+      <pane id="AndroidView">
+        <subPane>
+          <expand>
+            <path>
+              <item name="xscreensaver" type="1abcf292:AndroidViewProjectNode" />
+              <item name="Gradle Scripts" type="ae0cef3a:AndroidBuildScriptsGroupNode" />
+            </path>
+          </expand>
+          <select />
+        </subPane>
+      </pane>
+      <pane id="PackagesPane" />
     </panes>
   </component>
   <component name="PropertiesComponent">
     <property name="SearchEverywhereHistoryKey" value="sdk manager&#9;ACTION&#9;WelcomeScreen.RunAndroidSdkManager" />
     <property name="last_opened_file_path" value="$PROJECT_DIR$" />
     <property name="show.do.not.ask.upgrade.gradle.plugin" value="2.1.0" />
-    <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1533959035566" />
+    <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1545885427557" />
     <property name="device.picker.selection" value="Nexus_5_8.1" />
+    <property name="sync.plugin.last.upgrade.timestamp" value="1538463643381" />
   </component>
   <component name="RunDashboard">
     <option name="ruleStates">
   </component>
   <component name="RunManager">
     <configuration default="true" type="AndroidJUnit" factoryName="Android JUnit">
-      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
-      <module name="" />
       <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
       <option name="ALTERNATIVE_JRE_PATH" />
       <option name="PACKAGE_NAME" />
       <option name="VM_PARAMETERS" />
       <option name="PARAMETERS" />
       <option name="WORKING_DIRECTORY" value="file://$MODULE_DIR$" />
-      <option name="ENV_VARIABLES" />
       <option name="PASS_PARENT_ENVS" value="true" />
       <option name="TEST_SEARCH_SCOPE">
         <value defaultName="singleModule" />
       </option>
-      <envs />
       <patterns />
       <method>
+        <option name="Make" enabled="false" />
         <option name="Android.Gradle.BeforeRunTask" enabled="true" />
       </method>
     </configuration>
     <configuration default="true" type="AndroidRunConfigurationType" factoryName="Android App">
-      <module name="" />
       <option name="DEPLOY" value="true" />
+      <option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
       <option name="ARTIFACT_NAME" value="" />
       <option name="PM_INSTALL_OPTIONS" value="" />
+      <option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" />
       <option name="ACTIVITY_EXTRA_FLAGS" value="" />
       <option name="MODE" value="default_activity" />
       <option name="CLEAR_LOGCAT" value="false" />
       </Native>
       <Profilers>
         <option name="ADVANCED_PROFILING_ENABLED" value="false" />
+        <option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
+        <option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Sampled (Java)" />
       </Profilers>
       <option name="DEEP_LINK" value="" />
       <option name="ACTIVITY_CLASS" value="" />
       <method>
         <option name="Android.Gradle.BeforeRunTask" enabled="true" />
-        <option name="com.android.instantApps.provision.BeforeRunTask" enabled="true" clearCache="false" clearProvisionedDevices="false" />
       </method>
     </configuration>
     <configuration name="xscreensaver" type="AndroidRunConfigurationType" factoryName="Android App">
       <module name="xscreensaver" />
       <option name="DEPLOY" value="true" />
+      <option name="DEPLOY_APK_FROM_BUNDLE" value="false" />
       <option name="ARTIFACT_NAME" value="" />
       <option name="PM_INSTALL_OPTIONS" value="" />
+      <option name="DYNAMIC_FEATURES_DISABLED_LIST" value="" />
       <option name="ACTIVITY_EXTRA_FLAGS" value="" />
       <option name="MODE" value="default_activity" />
       <option name="CLEAR_LOGCAT" value="false" />
       </Native>
       <Profilers>
         <option name="ADVANCED_PROFILING_ENABLED" value="false" />
+        <option name="STARTUP_CPU_PROFILING_ENABLED" value="false" />
+        <option name="STARTUP_CPU_PROFILING_CONFIGURATION_NAME" value="Sampled (Java)" />
       </Profilers>
       <option name="DEEP_LINK" value="" />
       <option name="ACTIVITY_CLASS" value="" />
-      <method>
-        <option name="com.android.instantApps.provision.BeforeRunTask" enabled="true" clearCache="false" clearProvisionedDevices="false" />
-      </method>
     </configuration>
     <configuration default="true" type="Application" factoryName="Application">
-      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
-      <option name="MAIN_CLASS_NAME" />
-      <option name="VM_PARAMETERS" />
-      <option name="PROGRAM_PARAMETERS" />
       <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
-      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
-      <option name="ALTERNATIVE_JRE_PATH" />
-      <option name="ENABLE_SWING_INSPECTOR" value="false" />
-      <option name="ENV_VARIABLES" />
-      <option name="PASS_PARENT_ENVS" value="true" />
-      <module name="" />
-      <envs />
-    </configuration>
-    <configuration default="true" type="Remote" factoryName="Remote">
-      <option name="USE_SOCKET_TRANSPORT" value="true" />
-      <option name="SERVER_MODE" value="false" />
-      <option name="SHMEM_ADDRESS" value="javadebug" />
-      <option name="HOST" value="localhost" />
-      <option name="PORT" value="5005" />
     </configuration>
     <configuration default="true" type="TestNG" factoryName="TestNG">
-      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
-      <module name="" />
       <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
       <option name="ALTERNATIVE_JRE_PATH" />
       <option name="SUITE_NAME" />
       <option name="PARAMETERS" />
       <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
       <option name="OUTPUT_DIRECTORY" />
-      <option name="ANNOTATION_TYPE" />
-      <option name="ENV_VARIABLES" />
       <option name="PASS_PARENT_ENVS" value="true" />
       <option name="TEST_SEARCH_SCOPE">
         <value defaultName="singleModule" />
       </option>
       <option name="USE_DEFAULT_REPORTERS" value="false" />
       <option name="PROPERTIES_FILE" />
-      <envs />
       <properties />
       <listeners />
     </configuration>
       <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
     </configuration>
   </component>
-  <component name="ShelveChangesManager" show_recycled="false">
-    <option name="remove_strategy" value="false" />
-  </component>
   <component name="SvnConfiguration">
     <configuration />
   </component>
     <servers />
   </component>
   <component name="ToolWindowManager">
-    <frame x="90" y="24" width="1339" height="859" extended-state="0" />
+    <frame x="105" y="23" width="1339" height="859" extended-state="0" />
     <layout>
-      <window_info id="Android Profiler" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
-      <window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Build Variants" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
-      <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32928476" sideWeight="0.5312259" order="7" side_tool="true" content_ui="tabs" />
-      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Logcat" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Captures" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
-      <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.2544333" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Build" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32928476" sideWeight="0.47185814" order="8" side_tool="false" content_ui="tabs" />
-      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32928476" sideWeight="0.49421743" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Gradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Device File Explorer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
-      <window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
-      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
-      <window_info id="Nl-Palette" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
-      <window_info id="Android Monitor" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Properties" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
-      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
-      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
-      <window_info id="Android Model" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
-      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32839838" sideWeight="0.49730146" order="7" side_tool="false" content_ui="tabs" />
-      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
-      <window_info id="Gradle Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
+      <window_info anchor="bottom" id="Android Profiler" order="7" show_stripe_button="false" />
+      <window_info anchor="bottom" id="TODO" order="6" />
+      <window_info anchor="right" id="Palette&#9;" order="3" />
+      <window_info id="Image Layers" order="3" />
+      <window_info id="Build Variants" order="3" side_tool="true" />
+      <window_info anchor="right" id="Capture Analysis" order="3" />
+      <window_info active="true" anchor="bottom" id="Event Log" order="7" sideWeight="0.5188897" side_tool="true" visible="true" weight="0.32882273" />
+      <window_info anchor="bottom" id="Run" order="2" />
+      <window_info anchor="bottom" id="Version Control" order="7" show_stripe_button="false" />
+      <window_info anchor="bottom" id="Terminal" order="7" />
+      <window_info anchor="bottom" id="Logcat" order="7" />
+      <window_info id="Captures" order="2" weight="0.25" />
+      <window_info id="Capture Tool" order="3" />
+      <window_info id="Designer" order="3" />
+      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.2544333" />
+      <window_info anchor="right" id="Assistant" visible="true" weight="0.3299923" />
+      <window_info anchor="bottom" id="Build" order="8" sideWeight="0.47185814" weight="0.32928476" />
+      <window_info anchor="bottom" id="Find" order="1" sideWeight="0.48111024" visible="true" weight="0.32882273" />
+      <window_info anchor="right" id="Gradle" order="3" />
+      <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
+      <window_info anchor="right" id="Device File Explorer" order="3" side_tool="true" />
+      <window_info anchor="right" id="Theme Preview" order="3" />
+      <window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
+      <window_info id="Favorites" order="3" side_tool="true" />
+      <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
+      <window_info anchor="bottom" id="Messages" order="7" sideWeight="0.49730146" visible="true" weight="0.32839838" />
+      <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
+      <window_info anchor="right" id="Android Model" order="3" side_tool="true" />
+      <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
+      <window_info id="Nl-Palette" order="3" />
+      <window_info anchor="right" id="Properties" order="3" />
+      <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
+      <window_info anchor="bottom" id="Message" order="0" />
+      <window_info anchor="bottom" id="Gradle Console" order="7" side_tool="true" />
+      <window_info anchor="bottom" id="Android Monitor" order="7" />
+      <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
     </layout>
   </component>
   <component name="Vcs.Log.UiProperties">
       <path value="$PROJECT_DIR$/../.." />
     </ignored-roots>
   </component>
-  <component name="XDebuggerManager">
-    <breakpoint-manager />
-    <watches-manager />
-  </component>
   <component name="editorHistoryManager">
     <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
+        <state relative-caret-position="90">
+          <caret line="6" selection-start-line="6" selection-end-line="6" />
         </state>
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
+        <state />
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
+        <state />
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
+        <state />
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="0">
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-          <folding />
-        </state>
+        <state />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
+      <provider selected="true" editor-type-id="text-editor">
+        <state />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
+      <provider selected="true" editor-type-id="text-editor">
+        <state />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
+      <provider selected="true" editor-type-id="text-editor">
+        <state />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
+      <provider selected="true" editor-type-id="text-editor">
+        <state />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
+      <provider selected="true" editor-type-id="text-editor">
+        <state />
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
+      <provider selected="true" editor-type-id="text-editor">
+        <state />
       </provider>
     </entry>
     <entry file="file://$PROJECT_DIR$/../gradle/wrapper/gradle-wrapper.properties">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="90">
-          <caret line="6" column="0" lean-forward="false" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
-          <folding />
+          <caret line="6" selection-start-line="6" selection-end-line="6" />
         </state>
       </provider>
     </entry>
index f0ff9a3e7b5a0624cc19985a797692089e961bc4..038e613786c85e5134af9e2b0b9a7ec45e107820 100644 (file)
@@ -1,8 +1,8 @@
 apply plugin: 'android'
 
 dependencies {
-    compile fileTree(include: '*.jar', dir: 'libs')
-    compile "com.android.support:support-v4:27.1.1"
+    implementation fileTree(include: '*.jar', dir: 'libs')
+    implementation "com.android.support:support-v4:27.1.1"
 }
 
 android {
@@ -96,6 +96,10 @@ android {
 
 
     defaultConfig {
+        // Previous applicationId was "org.jwz.xscreensaver" but I had
+        // to change it because I managed to lose the signing key...
+        // Note that the Java class tree is still "org.jwz.xscreensaver".
+        applicationId "org.jwz.android.xscreensaver"
         minSdkVersion 15
         targetSdkVersion 27
     }
index 1e20a83e369f4fa9de535301d68ab733bdbeaa0b..3396bd9feeb43f5602fc692aeb45275a24495de1 100644 (file)
@@ -73,6 +73,7 @@ LOCAL_SRC_FILES += \
     hacks/glx/gllist.c \
     hacks/glx/glschool_alg.c \
     hacks/glx/glschool_gl.c \
+    hacks/glx/handsy_model.c \
     hacks/glx/involute.c \
     hacks/glx/lament_model.c \
     hacks/glx/pipeobjs.c \
index d3f543677285b4dd7fa7b1236ae11f1578c717f5..311946dbd46c1250dc5c85a580630566c25070d6 100644 (file)
@@ -1,7 +1,7 @@
 # Get this value from android/Makefile
 APP_ABI := $(shell echo $$APP_ABI)
-APP_STL := stlport_static
-APP_PLATFORM := android-14
+APP_STL := c++_static
+APP_PLATFORM := android-16
 # ^^ APP_PLATFORM is minimum API version supported
 # https://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md#target-api-set-higher-than-device-api
 
index dd9566c331d3160cad57ee727b41ad4259134d59..18e9fb05e704da1a7d12429d88d4b59d7347d28e 100644 (file)
       <sourceFolder url="file://$MODULE_DIR$/tests/java" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/tests/rs" isTestSource="true" />
       <sourceFolder url="file://$MODULE_DIR$/tests/shaders" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-manifest" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaPrecompile" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/prebuild" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/splits-support" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
+      <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
       <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
+      <excludeFolder url="file://$MODULE_DIR$/build/reports" />
       <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
     </content>
     <orderEntry type="jdk" jdkName="Android API 27 Platform" jdkType="Android SDK" />
index 6294beeee1ef0820ea48df133694923c7278147f..8c031ecf658ddd9acafac61bd8734b638bdd9879 100644 (file)
    examined to determine when keyboard activity has occurred. */
 #undef HAVE_PROC_INTERRUPTS
 
+/* Define this if you have a Linux-like /proc/.../oom_score_adj file which can
+   be adjusted by root to exempt us from the out-of-memory . */
+#undef HAVE_PROC_OOM
+
 /* Define this if your system supports POSIX threads. */
 #undef HAVE_PTHREAD
 
index 2ac1b1b5660777ff9fc5e6e45864e99f76f0c2a0..f61dfbebcc6c1294a8385c6a3ae6c74aad21cc62 100755 (executable)
--- a/configure
+++ b/configure
@@ -835,6 +835,7 @@ with_xf86vmode_ext
 with_xf86gamma_ext
 with_randr_ext
 with_proc_interrupts
+with_proc_oom
 enable_locking
 enable_root_passwd
 with_pam
@@ -1522,6 +1523,7 @@ Installation options:
   --with-randr-ext        Include support for the X Resize+Rotate extension.
   --with-proc-interrupts  Include support for consulting the /proc/interrupts
                           file to notice keyboard activity.
+  --with-proc-oom  Include support for disabling the OOM-killer.
   --with-pam              Include support for PAM (Pluggable Auth Modules.)
   --with-pam-service-name NAME arg is the name of the PAM service that
                           xscreensaver will authenticate as.
@@ -2623,6 +2625,8 @@ echo "command line was: $0 $@"
 
 
 
+
+
 
 
 
@@ -10319,6 +10323,61 @@ elif test "$with_proc_interrupts" != no; then
 fi
 
 
+###############################################################################
+#
+#       Check for /proc/*/oom_score_adj.
+#
+###############################################################################
+
+have_proc_oom=no
+with_proc_oom_req=unspecified
+
+# Check whether --with-proc-oom was given.
+if test "${with_proc_oom+set}" = set; then :
+  withval=$with_proc_oom; with_proc_oom="$withval"; with_proc_oom_req="$withval"
+else
+  with_proc_oom=yes
+fi
+
+
+if test "$with_proc_oom_req" = yes; then
+
+  # Note that we may be building in an environment (e.g. Debian buildd chroot)
+  # without a proper /proc filesystem.
+  #
+  have_proc_oom=yes
+  $as_echo "#define HAVE_PROC_OOM 1" >>confdefs.h
+
+
+elif test "$with_proc_oom_req" = unspecified; then
+
+  have_proc_oom=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether /proc/$$/oom_score_adj exists" >&5
+$as_echo_n "checking whether /proc/$$/oom_score_adj exists... " >&6; }
+if ${ac_cv_have_proc_oom+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_have_proc_oom=no
+     if test -f /proc/$$/oom_score_adj; then
+       ac_cv_have_proc_oom=yes
+     fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_proc_oom" >&5
+$as_echo "$ac_cv_have_proc_oom" >&6; }
+  have_proc_oom=$ac_cv_have_proc_oom
+
+  if test "$have_proc_oom" = yes; then
+    $as_echo "#define HAVE_PROC_OOM 1" >>confdefs.h
+
+  fi
+
+elif test "$with_proc_oom" != no; then
+  echo "error: must be yes or no: --with-proc-oom=$with_proc_oom"
+  exit 1
+fi
+
+
 ###############################################################################
 #
 #       The --enable-locking option
@@ -13351,7 +13410,7 @@ if ${ac_cv_mesagl_version_string+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 13358 "configure"
+#line 13417 "configure"
 #include "confdefs.h"
 #include <GL/gl.h>
 #ifndef MESA_MAJOR_VERSION
index d439bb5cbd72af7b5f366933c42e6774e46d02d2..f8ed25ea14fe61cd947890ae1571625dd7c44427 100644 (file)
@@ -124,6 +124,11 @@ AH_TEMPLATE([HAVE_PROC_INTERRUPTS],
            can be examined to determine when keyboard activity has
            occurred.])
 
+AH_TEMPLATE([HAVE_PROC_OOM],
+           [Define this if you have a Linux-like /proc/.../oom_score_adj file
+           which can be adjusted by root to exempt us from the out-of-memory
+           .])
+
 AH_TEMPLATE([HAVE_MOTIF],[Define this if you have Motif.])
 
 AH_TEMPLATE([HAVE_XMCOMBOBOX],
@@ -1950,6 +1955,49 @@ elif test "$with_proc_interrupts" != no; then
 fi
 
 
+###############################################################################
+#
+#       Check for /proc/*/oom_score_adj.
+#
+###############################################################################
+
+have_proc_oom=no
+with_proc_oom_req=unspecified
+AC_ARG_WITH(proc-oom,
+[  --with-proc-oom  Include support for disabling the OOM-killer.],
+  [with_proc_oom="$withval"; with_proc_oom_req="$withval"],
+  [with_proc_oom=yes])
+
+if test "$with_proc_oom_req" = yes; then
+
+  # Note that we may be building in an environment (e.g. Debian buildd chroot)
+  # without a proper /proc filesystem.
+  #
+  have_proc_oom=yes
+  AC_DEFINE(HAVE_PROC_OOM)
+
+elif test "$with_proc_oom_req" = unspecified; then
+
+  have_proc_oom=no
+  AC_CACHE_CHECK([whether /proc/$$/oom_score_adj exists],
+    ac_cv_have_proc_oom,
+    [ac_cv_have_proc_oom=no
+     if test -f /proc/$$/oom_score_adj; then
+       ac_cv_have_proc_oom=yes
+     fi
+    ])
+  have_proc_oom=$ac_cv_have_proc_oom
+
+  if test "$have_proc_oom" = yes; then
+    AC_DEFINE(HAVE_PROC_OOM)
+  fi
+
+elif test "$with_proc_oom" != no; then
+  echo "error: must be yes or no: --with-proc-oom=$with_proc_oom"
+  exit 1
+fi
+
+
 ###############################################################################
 #
 #       The --enable-locking option
index 55effece66ae7f8194a7eaae91fde289214857fc..b13853e0ecc5141a79fa0bc0458cd768da790753 100644 (file)
@@ -115,10 +115,12 @@ NOLOCK_OBJS_1     = lock.o
 
 TEST_SRCS      = test-passwd.c test-uid.c  test-xdpms.c    test-grab.c \
                  test-apm.c    test-fade.c test-xinerama.c test-vp.c   \
-                 test-randr.c  xdpyinfo.c  test-mlstring.c test-screens.c
+                 test-randr.c  xdpyinfo.c  test-mlstring.c test-screens.c \
+                 test-yarandom.c
 TEST_EXES      = test-passwd   test-uid    test-xdpms      test-grab   \
                  test-apm      test-fade   test-xinerama   test-vp     \
-                 test-randr    xdpyinfo    test-mlstring   test-screens
+                 test-randr    xdpyinfo    test-mlstring   test-screens \
+                 test-yarandom
 
 MOTIF_LIBS     = @MOTIF_LIBS@ @PNG_LIBS@ $(XMU_LIBS)
 GTK_LIBS       = @GTK_LIBS@ $(XMU_LIBS)
@@ -865,6 +867,9 @@ test-screens.o: screens.c
 test-screens: test-screens.o
        $(CC) $(LDFLAGS) -o $@ $(TEST_SCREENS_OBJS) $(SAVER_LIBS)
 
+test-yarandom: test-yarandom.o
+       $(CC) -DTEST $(LDFLAGS) -o $@ test-yarandom.o $(UTILS_BIN)/yarandom.o
+
 
 xdpyinfo.o: xdpyinfo.c
        $(CC) -c $(INCLUDES) -DHAVE_GLX $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS) \
@@ -980,6 +985,8 @@ test-uid.o: ../config.h
 test-vp.o: ../config.h
 test-xdpms.o: ../config.h
 test-xinerama.o: ../config.h
+test-yarandom.o: ../config.h
+test-yarandom.o: $(UTILS_SRC)/yarandom.h
 timers.o: ../config.h
 timers.o: $(srcdir)/prefs.h
 timers.o: $(srcdir)/types.h
index f4e29d41843bd08853ef809cb528bead01385131..c607023896d099c4dd1b7cf6de212996f0cd0539 100644 (file)
@@ -4,8 +4,8 @@
 !            a screen saver and locker for the X window system
 !                            by Jamie Zawinski
 !
-!                              version 5.40
-!                              12-Aug-2018
+!                              version 5.41
+!                              26-Dec-2018
 !
 ! See "man xscreensaver" for more info.  The latest version is always
 ! available at https://www.jwz.org/xscreensaver/
@@ -386,6 +386,7 @@ GetViewPortIsFullOfLies: False
 @GL_KLUDGE@ GL:                                crumbler -root                              \n\
                                filmleader -root                            \n\
                                glitchpeg -root                             \n\
+@GL_KLUDGE@ GL:                                handsy -root                                \n\
 @GL_KLUDGE@ GL:                                maze3d -root                                \n\
 @GL_KLUDGE@ GL:                                peepers -root                               \n\
 @GL_KLUDGE@ GL:                                razzledazzle -root                          \n\
index cd4976edfb1683865dce10bafc25af5ce0100c27..2d7b1681993958d3d11fe6f3475822f8c2373f27 100644 (file)
   GL:                          crumbler -root                              \\n\
                                filmleader -root                            \\n\
                                glitchpeg -root                             \\n\
+  GL:                          handsy -root                                \\n\
   GL:                          maze3d -root                                \\n\
   GL:                          peepers -root                               \\n\
   GL:                          razzledazzle -root                          \\n\
index 0dfc387e88d468ed6246f909d8606f6e05a6f451..ef00d822e506b0e7939218cc593358b68843ec9d 100644 (file)
@@ -3970,6 +3970,11 @@ launch_preview_subproc (state *s)
     }
   else
     {
+      /* We do this instead of relying on $XSCREENSAVER_WINDOW specifically
+         so that third-party savers that don't implement -window-id will fail:
+         otherwise we might have full-screen windows popping up when we were
+         just trying to get a preview thumbnail.
+       */
       strcpy (new_cmd, cmd);
       sprintf (new_cmd + strlen (new_cmd), " -window-id 0x%X",
                (unsigned int) id);
index ac5a3f0f546aeda1335c372f687fc85cb61a704b..f4437268d8771b89b5385f44f445db885de14c6b 100644 (file)
@@ -1,5 +1,5 @@
 /* passwd.c --- verifying typed passwords with the OS.
- * xscreensaver, Copyright (c) 1993-2014 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1993-2018 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -24,6 +24,7 @@
 #endif
 #include <time.h>
 #include <sys/time.h>
+#include <sys/stat.h>
 
 #ifndef VMS
 # include <pwd.h>              /* for getpwuid() */
@@ -111,6 +112,44 @@ struct auth_methods methods[] = {
 };
 
 
+# ifdef HAVE_PROC_OOM
+/* On some recent Linux systems you can tell the kernel's OOM-killer to
+   consider the possibility of maybe sometimes not killing you in low-memory
+   situations. Because that would unlock the screen. And that would be bad.
+
+   Linux >= 2.6.11: echo -17   > /proc/$$/oom_adj        <-- ignoring this.
+   Linux >= 2.6.37: echo -1000 > /proc/$$/oom_score_adj          <-- trying this.
+ */
+static void
+oom_assassin_immunity (Bool verbose_p)
+{
+  char fn[1024];
+  struct stat st;
+  FILE *out;
+  sprintf (fn, "/proc/%d/oom_score_adj", getpid());
+  if (stat(fn, &st) != 0)
+    {
+      if (verbose_p)
+        fprintf (stderr, "%s: OOM: %s does not exist\n", blurb(), fn);
+      return;
+    }
+  out = fopen (fn, "w");
+  if (!out)
+    {
+      if (verbose_p)
+        {
+          char b[2048];
+          sprintf (b, "%s: OOM: unable to write %s\n", blurb(), fn);
+          perror(b);
+        }
+      return;
+    }
+  fputs ("-1000\n", out);
+  fclose (out);
+}
+# endif /* HAVE_PROC_OOM */
+
+
 Bool
 lock_priv_init (int argc, char **argv, Bool verbose_p)
 {
@@ -130,6 +169,11 @@ lock_priv_init (int argc, char **argv, Bool verbose_p)
         fprintf (stderr, "%s: initialization of %s passwords failed.\n",
                  blurb(), methods[i].name);
     }
+
+# ifdef HAVE_PROC_OOM
+  oom_assassin_immunity (verbose_p);
+# endif
+
   return any_ok;
 }
 
diff --git a/driver/test-yarandom.c b/driver/test-yarandom.c
new file mode 100644 (file)
index 0000000..6701ff8
--- /dev/null
@@ -0,0 +1,66 @@
+/* test-yarandom.c --- generate a file of random bytes for analysis.
+ * xscreensaver, Copyright (c) 2018 Jamie Zawinski <jwz@jwz.org>
+ *
+ * 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#include <ctype.h>
+#include <stdio.h>
+#include "yarandom.h"
+
+char *progname = 0;
+
+int
+main (int argc, char **argv)
+{
+  unsigned long i, n;
+  char *f;
+  FILE *fd;
+
+  progname = argv[0];
+  if (argc != 3)
+    {
+      fprintf(stderr, "usage: %s bytes outfile\n", argv[0]);
+      exit(1);
+    }
+
+  n = atol (argv[1]);
+  f = argv[2];
+
+# undef ya_rand_init
+  ya_rand_init(0);
+
+  fd = fopen (f, "w");
+  if (!fd) { perror (f); exit (1); }
+
+  n /= sizeof(uint32_t);
+  for (i = 0; i < n; i++)
+    {
+      union { uint32_t i; char s[sizeof(uint32_t)]; } rr;
+      rr.i = random();
+      if (! fwrite (rr.s, sizeof(rr.s), 1, fd))
+        {
+          perror ("write");
+          exit (1);
+        }
+    }
+  fclose (fd);
+  fprintf (stderr, "%s: %s: wrote %ld bytes\n",
+           progname, f, i * sizeof(uint32_t));
+  exit(0);
+}
index f5f65dcf1b545fd11de6f4e6266ab1ad726d2114..abcb07fb5ffe2662e51ce4c7fc7a69241ef71e78 100644 (file)
@@ -1328,6 +1328,10 @@ main_loop (saver_info *si)
       {
         Time lock_timeout = p->lock_timeout;
 
+        /* If we're fading, don't lock until the fade finishes. */
+        if (si->fading_possible_p && p->fade_p)
+          lock_timeout += p->fade_seconds / 1000;
+
         if (si->emergency_lock_p && p->lock_p && lock_timeout)
           {
             int secs = p->lock_timeout / 1000;
@@ -2071,15 +2075,15 @@ handle_clientmessage (saver_info *si, XEvent *event, Bool until_idle_p)
          sprintf (buf, "LOCK ClientMessage received; %s", response);
          clientmessage_response (si, window, False, buf, response);
 
+           /* Have to set the time or xscreensaver-command doesn't report
+              the LOCK state change. Must come before set_locked_p(). */
+           si->blank_time = time ((time_t *) 0);
+
           /* Note that this leaves things in a slightly inconsistent state:
              we are blanked but not locked.  And blanking might actually
              fail if we can't get the grab. */
          set_locked_p (si, True);
 
-           /* Have to set the time or xscreensaver-command doesn't
-              report the LOCK state change. */
-           si->blank_time = time ((time_t *) 0);
-
          si->selection_mode = 0;
          si->demoing_p = False;
 
index 45568728a094158206a02d96089f3ae0e428c055..63e69be24935ed607e9969a210bf4cfaf50b50f7 100644 (file)
@@ -115,15 +115,15 @@ SRCS              = attraction.c blitspin.c bouboule.c braid.c bubbles.c \
                  euler2d.c juggle.c polyominoes.c thornbird.c fluidballs.c \
                  anemone.c halftone.c metaballs.c eruption.c popsquares.c \
                  barcode.c piecewise.c cloudlife.c fontglide.c apple2.c \
-                 apple2-main.c analogtv.c xanalogtv.c pong.c filmleader.c \
-                 wormhole.c pacman.c pacman_ai.c pacman_level.c \
+                 apple2-main.c analogtv.c analogtv-cli.c xanalogtv.c pong.c \
+                 filmleader.c wormhole.c pacman.c pacman_ai.c pacman_level.c \
                  fuzzyflakes.c anemotaxis.c memscroller.c substrate.c \
                  intermomentary.c fireworkx.c fiberlamp.c \
                  boxfit.c interaggregate.c celtic.c cwaves.c m6502.c \
                  asm6502.c abstractile.c lcdscrub.c hexadrop.c \
                  tessellimage.c delaunay.c recanim.c binaryring.c \
-                 glitchpeg.c vfeedback.c \
-                 webcollage-cocoa.m webcollage-helper-cocoa.m testx11.c
+                 glitchpeg.c vfeedback.c webcollage-cocoa.m \
+                 webcollage-helper-cocoa.m testx11.c
 SCRIPTS                = vidwhacker webcollage ljlatest
 
 # Programs that are mentioned in XScreenSaver.ad, and that have XML files,
@@ -156,14 +156,15 @@ OBJS              = attraction.o blitspin.o bouboule.o braid.o bubbles.o \
                  euler2d.o juggle.o polyominoes.o thornbird.o fluidballs.o \
                  anemone.o halftone.o metaballs.o eruption.o popsquares.o \
                  barcode.o piecewise.o cloudlife.o fontglide.o apple2.o \
-                 apple2-main.o analogtv.o xanalogtv.o pong.o filmleader.o \
-                 wormhole.o pacman.o pacman_ai.o pacman_level.o \
-                 fuzzyflakes.o anemotaxis.o memscroller.o substrate.o \
-                 intermomentary.o fireworkx.o fiberlamp.o boxfit.o \
-                 interaggregate.o celtic.o cwaves.o webcollage-cocoa.o \
-                 webcollage-helper-cocoa.o m6502.o asm6502.o abstractile.o \
-                 lcdscrub.o hexadrop.o tessellimage.o delaunay.o recanim.o \
-                 binaryring.o glitchpeg.o vfeedback.o testx11.o
+                 apple2-main.o analogtv.o analogtv2.o analogtv-cli.o \
+                 xanalogtv.o pong.o filmleader.o wormhole.o pacman.o \
+                 pacman_ai.o pacman_level.o fuzzyflakes.o anemotaxis.o \
+                 memscroller.o substrate.o intermomentary.o fireworkx.o \
+                 fiberlamp.o boxfit.o interaggregate.o celtic.o cwaves.o \
+                 webcollage-cocoa.o webcollage-helper-cocoa.o m6502.o \
+                 asm6502.o abstractile.o lcdscrub.o hexadrop.o \
+                 tessellimage.o delaunay.o recanim.o binaryring.o \
+                 glitchpeg.o vfeedback.o testx11.o
 
 EXES           = attraction blitspin bouboule braid decayscreen deco \
                  drift flame galaxy grav greynetic halo \
@@ -414,7 +415,9 @@ distdepend:: m6502.h
              -e 's@\.\./utils@$$(UTILS_SRC)@g'                             \
              -e 's@ \([^$$]\)@ $$(srcdir)/\1@g'                            \
              -e 's@ $$(srcdir)/\(.*config.h\)@ \1@g'                       \
-             -e 's@ $$(srcdir)/\(m6502.h\)@ \1@g' ;                        \
+             -e 's@ $$(srcdir)/\(m6502.h\)@ \1@g'                          \
+             -e 's@ $$(srcdir)/\(images/gen/\)@ \1@g'                      \
+             -e 's@ $$(HACK_SRC)/\(images/gen/\)@ \1@g' ;                  \
          echo ''                                                           \
        ) > /tmp/distdepend.$$$$ &&                                         \
        mv /tmp/distdepend.$$$$ Makefile.in
@@ -533,8 +536,9 @@ $(UTIL_OBJS):
        $(MAKE) $(@F) CC="$(CC)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
 
 # How we build object files in this directory.
+HACK_CFLAGS_BASE=$(INCLUDES) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS)
 .c.o:
-       $(CC) -c $(INCLUDES) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS) $<
+       $(CC) -c $(HACK_CFLAGS_BASE) $<
 
 
 # Make sure these are regenerated when the version number ticks.
@@ -564,11 +568,13 @@ xscreensaver-sgigl: xscreensaver-sgigl.c
                $(XMU_LIBS) -lX11 -lXext $(X_EXTRA_LIBS) -lm
 
 test-utf8wc: $(UTILS_SRC)/utf8wc.c
-       $(CC) $(INCLUDES) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS) $(LDFLAGS)\
+       $(CC) $(HACK_CFLAGS_BASE) $(LDFLAGS)\
        -o $@ -DSELFTEST $<
 
 # Make sure the images have been packaged. This is the first one hit:
-$(HACK_BIN)/images/gen/nose-f1_png.h:
+images/gen/som_png.h:
+       cd $(srcdir)/images && $(MAKE)
+images/gen/6x10font_png.h:
        cd $(srcdir)/images && $(MAKE)
 
 # The rules for those hacks which follow the `screenhack.c' API.
@@ -691,6 +697,21 @@ apple2:            apple2.o apple2-main.o        $(HACK_OBJS) $(ATV) $(GRAB) $(TEXT) $(PN
 xanalogtv:     xanalogtv.o     $(HACK_OBJS) $(ATV) $(GRAB) $(PNG)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(ATV) $(GRAB) $(PNG) $(PNG_LIBS) $(HACK_LIBS) $(THRL)
 
+ATVCLI_CFLAGS=-DANALOGTV_SCALE=1 -DNO_CONSTRAIN_RATIO $(HACK_CFLAGS_BASE)
+analogtv2.o: Makefile
+analogtv2.o: images/gen/6x10font_png.h
+analogtv2.o: $(srcdir)/analogtv.h
+analogtv2.o: $(srcdir)/analogtv.c
+       $(CC) -o $@ -c $(ATVCLI_CFLAGS) $<
+analogtv-cli.o: $(srcdir)/analogtv-cli.c
+       $(CC) -o $@ -c $(ATVCLI_CFLAGS) $<
+
+ATVCLI=analogtv2.o $(UTILS_BIN)/yarandom.o $(THRO) $(PNG)
+analogtv-cli:  analogtv-cli.o  $(ATVCLI)
+       $(CC_HACK) -o $@ $@.o   $(ATVCLI) $(THRL) $(PNG_LIBS) -lpng
+clean::
+       -rm -f analogtv-cli
+
 distort:       distort.o       $(HACK_OBJS) $(GRAB) $(SHM)
        $(CC_HACK) -o $@ $@.o   $(HACK_OBJS) $(GRAB) $(SHM) $(HACK_LIBS) $(THRL)
 
@@ -1035,9 +1056,19 @@ abstractile.o: $(UTILS_SRC)/resources.h
 abstractile.o: $(UTILS_SRC)/usleep.h
 abstractile.o: $(UTILS_SRC)/visual.h
 abstractile.o: $(UTILS_SRC)/yarandom.h
+analogtv-cli.o: $(srcdir)/analogtv.h
+analogtv-cli.o: ../config.h
+analogtv-cli.o: $(UTILS_SRC)/aligned_malloc.h
+analogtv-cli.o: $(UTILS_SRC)/font-retry.h
+analogtv-cli.o: $(UTILS_SRC)/resources.h
+analogtv-cli.o: $(UTILS_SRC)/thread_util.h
+analogtv-cli.o: $(UTILS_SRC)/visual.h
+analogtv-cli.o: $(UTILS_SRC)/xshm.h
+analogtv-cli.o: $(UTILS_SRC)/yarandom.h
+analogtv-cli.o: $(srcdir)/ximage-loader.h
 analogtv.o: $(srcdir)/analogtv.h
 analogtv.o: ../config.h
-analogtv.o: $(srcdir)/images/gen/6x10font_png.h
+analogtv.o: images/gen/6x10font_png.h
 analogtv.o: $(UTILS_SRC)/aligned_malloc.h
 analogtv.o: $(UTILS_SRC)/font-retry.h
 analogtv.o: $(UTILS_SRC)/grabscreen.h
@@ -1131,7 +1162,7 @@ apple2.o: $(srcdir)/analogtv.h
 apple2.o: $(srcdir)/apple2.h
 apple2.o: ../config.h
 apple2.o: $(srcdir)/fps.h
-apple2.o: $(srcdir)/images/gen/apple2font_png.h
+apple2.o: images/gen/apple2font_png.h
 apple2.o: $(srcdir)/recanim.h
 apple2.o: $(srcdir)/screenhackI.h
 apple2.o: $(UTILS_SRC)/aligned_malloc.h
@@ -1204,7 +1235,7 @@ blaster.o: $(UTILS_SRC)/visual.h
 blaster.o: $(UTILS_SRC)/yarandom.h
 blitspin.o: ../config.h
 blitspin.o: $(srcdir)/fps.h
-blitspin.o: $(srcdir)/images/gen/som_png.h
+blitspin.o: images/gen/som_png.h
 blitspin.o: $(srcdir)/recanim.h
 blitspin.o: $(srcdir)/screenhackI.h
 blitspin.o: $(srcdir)/screenhack.h
@@ -1266,17 +1297,19 @@ bsod.o: $(srcdir)/analogtv.h
 bsod.o: $(srcdir)/apple2.h
 bsod.o: ../config.h
 bsod.o: $(srcdir)/fps.h
-bsod.o: $(srcdir)/images/gen/amiga_png.h
-bsod.o: $(srcdir)/images/gen/android_png.h
-bsod.o: $(srcdir)/images/gen/apple_png.h
-bsod.o: $(srcdir)/images/gen/atari_png.h
-bsod.o: $(srcdir)/images/gen/atm_png.h
-bsod.o: $(srcdir)/images/gen/hmac_png.h
-bsod.o: $(srcdir)/images/gen/macbomb_png.h
-bsod.o: $(srcdir)/images/gen/mac_png.h
-bsod.o: $(srcdir)/images/gen/osx_10_2_png.h
-bsod.o: $(srcdir)/images/gen/osx_10_3_png.h
-bsod.o: $(srcdir)/images/gen/ransomware_png.h
+bsod.o: images/gen/amiga_png.h
+bsod.o: images/gen/android_png.h
+bsod.o: images/gen/apple_png.h
+bsod.o: images/gen/atari_png.h
+bsod.o: images/gen/atm_png.h
+bsod.o: images/gen/dvd_png.h
+bsod.o: images/gen/hmac_png.h
+bsod.o: images/gen/macbomb_png.h
+bsod.o: images/gen/mac_png.h
+bsod.o: images/gen/osx_10_2_png.h
+bsod.o: images/gen/osx_10_3_png.h
+bsod.o: images/gen/ransomware_png.h
+bsod.o: images/gen/sun_png.h
 bsod.o: $(srcdir)/recanim.h
 bsod.o: $(srcdir)/screenhackI.h
 bsod.o: $(srcdir)/screenhack.h
@@ -1294,50 +1327,50 @@ bsod.o: $(UTILS_SRC)/yarandom.h
 bsod.o: $(srcdir)/ximage-loader.h
 bubbles-default.o: $(srcdir)/bubbles.h
 bubbles-default.o: ../config.h
-bubbles-default.o: $(srcdir)/images/gen/blood10_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood11_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood1_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood2_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood3_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood4_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood5_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood6_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood7_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood8_png.h
-bubbles-default.o: $(srcdir)/images/gen/blood9_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue10_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue11_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue1_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue2_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue3_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue4_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue5_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue6_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue7_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue8_png.h
-bubbles-default.o: $(srcdir)/images/gen/blue9_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass10_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass11_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass1_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass2_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass3_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass4_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass5_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass6_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass7_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass8_png.h
-bubbles-default.o: $(srcdir)/images/gen/glass9_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade10_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade11_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade1_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade2_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade3_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade4_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade5_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade6_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade7_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade8_png.h
-bubbles-default.o: $(srcdir)/images/gen/jade9_png.h
+bubbles-default.o: images/gen/blood10_png.h
+bubbles-default.o: images/gen/blood11_png.h
+bubbles-default.o: images/gen/blood1_png.h
+bubbles-default.o: images/gen/blood2_png.h
+bubbles-default.o: images/gen/blood3_png.h
+bubbles-default.o: images/gen/blood4_png.h
+bubbles-default.o: images/gen/blood5_png.h
+bubbles-default.o: images/gen/blood6_png.h
+bubbles-default.o: images/gen/blood7_png.h
+bubbles-default.o: images/gen/blood8_png.h
+bubbles-default.o: images/gen/blood9_png.h
+bubbles-default.o: images/gen/blue10_png.h
+bubbles-default.o: images/gen/blue11_png.h
+bubbles-default.o: images/gen/blue1_png.h
+bubbles-default.o: images/gen/blue2_png.h
+bubbles-default.o: images/gen/blue3_png.h
+bubbles-default.o: images/gen/blue4_png.h
+bubbles-default.o: images/gen/blue5_png.h
+bubbles-default.o: images/gen/blue6_png.h
+bubbles-default.o: images/gen/blue7_png.h
+bubbles-default.o: images/gen/blue8_png.h
+bubbles-default.o: images/gen/blue9_png.h
+bubbles-default.o: images/gen/glass10_png.h
+bubbles-default.o: images/gen/glass11_png.h
+bubbles-default.o: images/gen/glass1_png.h
+bubbles-default.o: images/gen/glass2_png.h
+bubbles-default.o: images/gen/glass3_png.h
+bubbles-default.o: images/gen/glass4_png.h
+bubbles-default.o: images/gen/glass5_png.h
+bubbles-default.o: images/gen/glass6_png.h
+bubbles-default.o: images/gen/glass7_png.h
+bubbles-default.o: images/gen/glass8_png.h
+bubbles-default.o: images/gen/glass9_png.h
+bubbles-default.o: images/gen/jade10_png.h
+bubbles-default.o: images/gen/jade11_png.h
+bubbles-default.o: images/gen/jade1_png.h
+bubbles-default.o: images/gen/jade2_png.h
+bubbles-default.o: images/gen/jade3_png.h
+bubbles-default.o: images/gen/jade4_png.h
+bubbles-default.o: images/gen/jade5_png.h
+bubbles-default.o: images/gen/jade6_png.h
+bubbles-default.o: images/gen/jade7_png.h
+bubbles-default.o: images/gen/jade8_png.h
+bubbles-default.o: images/gen/jade9_png.h
 bubbles-default.o: $(UTILS_SRC)/yarandom.h
 bubbles.o: $(srcdir)/bubbles.h
 bubbles.o: ../config.h
@@ -1701,7 +1734,7 @@ fireworkx.o: $(UTILS_SRC)/visual.h
 fireworkx.o: $(UTILS_SRC)/yarandom.h
 flag.o: ../config.h
 flag.o: $(srcdir)/fps.h
-flag.o: $(srcdir)/images/gen/bob_png.h
+flag.o: images/gen/bob_png.h
 flag.o: $(srcdir)/recanim.h
 flag.o: $(srcdir)/screenhackI.h
 flag.o: $(UTILS_SRC)/colors.h
@@ -2232,8 +2265,8 @@ m6502.o: $(UTILS_SRC)/xshm.h
 m6502.o: $(UTILS_SRC)/yarandom.h
 maze.o: ../config.h
 maze.o: $(srcdir)/fps.h
-maze.o: $(srcdir)/images/gen/logo-180_png.h
-maze.o: $(srcdir)/images/gen/logo-50_png.h
+maze.o: images/gen/logo-180_png.h
+maze.o: images/gen/logo-50_png.h
 maze.o: $(srcdir)/recanim.h
 maze.o: $(srcdir)/screenhackI.h
 maze.o: $(srcdir)/screenhack.h
@@ -2345,14 +2378,14 @@ nerverot.o: $(UTILS_SRC)/visual.h
 nerverot.o: $(UTILS_SRC)/yarandom.h
 noseguy.o: ../config.h
 noseguy.o: $(srcdir)/fps.h
-noseguy.o: $(srcdir)/images/gen/nose-f1_png.h
-noseguy.o: $(srcdir)/images/gen/nose-f2_png.h
-noseguy.o: $(srcdir)/images/gen/nose-f3_png.h
-noseguy.o: $(srcdir)/images/gen/nose-f4_png.h
-noseguy.o: $(srcdir)/images/gen/nose-l1_png.h
-noseguy.o: $(srcdir)/images/gen/nose-l2_png.h
-noseguy.o: $(srcdir)/images/gen/nose-r1_png.h
-noseguy.o: $(srcdir)/images/gen/nose-r2_png.h
+noseguy.o: images/gen/nose-f1_png.h
+noseguy.o: images/gen/nose-f2_png.h
+noseguy.o: images/gen/nose-f3_png.h
+noseguy.o: images/gen/nose-f4_png.h
+noseguy.o: images/gen/nose-l1_png.h
+noseguy.o: images/gen/nose-l2_png.h
+noseguy.o: images/gen/nose-r1_png.h
+noseguy.o: images/gen/nose-r2_png.h
 noseguy.o: $(srcdir)/recanim.h
 noseguy.o: $(srcdir)/screenhackI.h
 noseguy.o: $(srcdir)/screenhack.h
@@ -2404,7 +2437,7 @@ pacman_level.o: $(srcdir)/ximage-loader.h
 pacman_level.o: $(srcdir)/xlockmoreI.h
 pacman.o: ../config.h
 pacman.o: $(srcdir)/fps.h
-pacman.o: $(srcdir)/images/gen/pacman_png.h
+pacman.o: images/gen/pacman_png.h
 pacman.o: $(srcdir)/pacman_ai.h
 pacman.o: $(srcdir)/pacman.h
 pacman.o: $(srcdir)/pacman_level.h
@@ -2480,7 +2513,7 @@ petri.o: $(UTILS_SRC)/visual.h
 petri.o: $(UTILS_SRC)/yarandom.h
 phosphor.o: ../config.h
 phosphor.o: $(srcdir)/fps.h
-phosphor.o: $(srcdir)/images/gen/6x10font_png.h
+phosphor.o: images/gen/6x10font_png.h
 phosphor.o: $(srcdir)/recanim.h
 phosphor.o: $(srcdir)/screenhackI.h
 phosphor.o: $(srcdir)/screenhack.h
@@ -2912,7 +2945,7 @@ tessellimage.o: $(UTILS_SRC)/yarandom.h
 testx11.o: ../config.h
 testx11.o: $(srcdir)/fps.h
 testx11.o: $(srcdir)/glx/rotator.h
-testx11.o: $(srcdir)/images/gen/logo-180_png.h
+testx11.o: images/gen/logo-180_png.h
 testx11.o: $(srcdir)/recanim.h
 testx11.o: $(srcdir)/screenhackI.h
 testx11.o: $(srcdir)/screenhack.h
@@ -3116,10 +3149,10 @@ worm.o: $(srcdir)/xlockmore.h
 xanalogtv.o: $(srcdir)/analogtv.h
 xanalogtv.o: ../config.h
 xanalogtv.o: $(srcdir)/fps.h
-xanalogtv.o: $(srcdir)/images/gen/logo-180_png.h
-xanalogtv.o: $(srcdir)/images/gen/testcard_bbcf_png.h
-xanalogtv.o: $(srcdir)/images/gen/testcard_pm5544_png.h
-xanalogtv.o: $(srcdir)/images/gen/testcard_rca_png.h
+xanalogtv.o: images/gen/logo-180_png.h
+xanalogtv.o: images/gen/testcard_bbcf_png.h
+xanalogtv.o: images/gen/testcard_pm5544_png.h
+xanalogtv.o: images/gen/testcard_rca_png.h
 xanalogtv.o: $(srcdir)/recanim.h
 xanalogtv.o: $(srcdir)/screenhackI.h
 xanalogtv.o: $(srcdir)/screenhack.h
@@ -3137,7 +3170,7 @@ xanalogtv.o: $(UTILS_SRC)/yarandom.h
 xanalogtv.o: $(srcdir)/ximage-loader.h
 xflame.o: ../config.h
 xflame.o: $(srcdir)/fps.h
-xflame.o: $(srcdir)/images/gen/bob_png.h
+xflame.o: images/gen/bob_png.h
 xflame.o: $(srcdir)/recanim.h
 xflame.o: $(srcdir)/screenhackI.h
 xflame.o: $(srcdir)/screenhack.h
@@ -3196,10 +3229,10 @@ xlyap.o: $(UTILS_SRC)/visual.h
 xlyap.o: $(UTILS_SRC)/yarandom.h
 xmatrix.o: ../config.h
 xmatrix.o: $(srcdir)/fps.h
-xmatrix.o: $(srcdir)/images/gen/matrix1b_png.h
-xmatrix.o: $(srcdir)/images/gen/matrix1_png.h
-xmatrix.o: $(srcdir)/images/gen/matrix2b_png.h
-xmatrix.o: $(srcdir)/images/gen/matrix2_png.h
+xmatrix.o: images/gen/matrix1b_png.h
+xmatrix.o: images/gen/matrix1_png.h
+xmatrix.o: images/gen/matrix2b_png.h
+xmatrix.o: images/gen/matrix2_png.h
 xmatrix.o: $(srcdir)/recanim.h
 xmatrix.o: $(srcdir)/screenhackI.h
 xmatrix.o: $(srcdir)/screenhack.h
index b4394f14ec257f1c965a72466ad4bec1eccb4128..1b055c2057b29f138a06348a60671cb254e59a9d 100644 (file)
@@ -1485,6 +1485,7 @@ abstractile_init(Display *display, Window window)
       fprintf(stderr, "%s: unknown tile option %s\n", progname, tile);
     st->tile = TILE_RANDOM;
   }
+  if (tile) free (tile);
 
   st->speed = get_integer_resource(display, "speed", "Integer");
   if (st->speed < 0) st->speed = 0;
@@ -1579,6 +1580,14 @@ static void
 abstractile_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  if (st->dline) free(st->dline);
+  if (st->eline) free(st->eline);
+  if (st->grid)  free(st->grid);
+  if (st->zlist) free(st->zlist);
+  if (st->fdol)  free(st->fdol);
+  if (st->odi)   free(st->odi);
+  XFreeGC (dpy, st->fgc);
+  XFreeGC (dpy, st->bgc);
   free (st);
 }
 
diff --git a/hacks/analogtv-cli.c b/hacks/analogtv-cli.c
new file mode 100644 (file)
index 0000000..d70db1b
--- /dev/null
@@ -0,0 +1,967 @@
+/* xanalogtv-cli, Copyright (c) 2018 Jamie Zawinski <jwz@jwz.org>
+ *
+ * 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.
+ *
+ * Performs the "Analog TV" transform on an image file, converting it to
+ * an MP4.  The MP4 file will have the same dimensions as the input image.
+ * Requires 'ffmpeg' on $PATH.
+ *
+ *    --duration     Length in seconds of MP4.
+ *    --powerup      Do the power-on animation at the beginning.
+ *    --logo FILE    Small image overlayed onto the colorbars image.
+ *    --audio FILE   Add a soundtrack. Must be as long or longer.
+ *
+ *  Created: 10-Dec-2018 by jwz.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <signal.h>
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/Xos.h>
+
+#include "resources.h"
+#include "visual.h"
+#include "yarandom.h"
+#include "font-retry.h"
+#include "ximage-loader.h"
+#include "thread_util.h"
+#include "xshm.h"
+#include "analogtv.h"
+
+#ifdef HAVE_LIBPNG
+# include <png.h>
+#endif
+
+const char *progname;
+const char *progclass;
+int mono_p = 0;
+static Bool verbose_p = 0;
+
+#define RANDSIGN() ((random() & 1) ? 1 : -1)
+
+enum {
+  N_CHANNELS=12,
+  MAX_MULTICHAN=2,
+  MAX_STATIONS=11
+}; 
+
+typedef struct chansetting_s {
+  analogtv_reception recs[MAX_MULTICHAN];
+  double noise_level;
+} chansetting;
+
+struct state {
+  XImage *output_frame;
+  int frames_written;
+  char *framefile_fmt;
+
+  Display *dpy;
+  Window window;
+  analogtv *tv;
+  analogtv_font ugly_font;
+
+  int n_stations;
+  analogtv_input *stations[MAX_STATIONS];
+  Bool image_loading_p;
+  XImage *logo, *logo_mask;
+
+  int curinputi;
+  chansetting chansettings[N_CHANNELS];
+  chansetting *cs;
+};
+
+static struct state global_state;
+
+
+/* Since this program does not connect to an X server, or in fact link
+   with Xlib, we need stubs for the few X11 routines that analogtv.c calls.
+   Most are unused. It seems like I am forever implementing subsets of X11.
+ */
+
+Status
+XAllocColor (Display *dpy, Colormap cmap, XColor *c)
+{
+  abort();
+}
+
+int
+XClearArea (Display *dpy, Window win, int x, int y,
+            unsigned int w, unsigned int h, Bool exp)
+{
+  return 0;
+}
+
+int
+XClearWindow (Display *dpy, Window window)
+{
+  return 0;
+}
+
+GC
+XCreateGC(Display *dpy, Drawable d, unsigned long mask, XGCValues *gcv)
+{
+  return 0;
+}
+
+XImage *
+XCreateImage (Display *dpy, Visual *v, unsigned int depth,
+              int format, int offset, char *data,
+              unsigned int width, unsigned int height,
+              int bitmap_pad, int bytes_per_line)
+{
+  XImage *ximage = (XImage *) calloc (1, sizeof(*ximage));
+  unsigned long r, g, b;
+
+  if (depth == 0) depth = 32;
+
+  ximage->width = width;
+  ximage->height = height;
+  ximage->format = format;
+  ximage->data = data;
+  ximage->bitmap_unit = 8;
+  ximage->byte_order = LSBFirst;
+  ximage->bitmap_bit_order = ximage->byte_order;
+  ximage->bitmap_pad = bitmap_pad;
+  ximage->depth = depth;
+  visual_rgb_masks (0, v, &r, &g, &b);
+  ximage->red_mask   = (depth == 1 ? 0 : r);
+  ximage->green_mask = (depth == 1 ? 0 : g);
+  ximage->blue_mask  = (depth == 1 ? 0 : b);
+  ximage->bits_per_pixel = (depth == 1 ? 1 : visual_pixmap_depth (0, v));
+  ximage->bytes_per_line = bytes_per_line;
+
+  XInitImage (ximage);
+  if (! ximage->f.put_pixel) abort();
+  return ximage;
+}
+
+Pixmap
+XCreatePixmap (Display *dpy, Drawable d, unsigned int width,
+               unsigned int height, unsigned int depth)
+{
+  abort();
+}
+
+Pixmap
+XCreatePixmapFromBitmapData (Display *dpy, Drawable d, char *data,
+                             unsigned int w, unsigned int h,
+                             unsigned long fg, unsigned long bg,
+                             unsigned int depth)
+{
+  abort();
+}
+
+int
+XDrawString (Display *dpy, Drawable d, GC gc, int x, int y, const char *s,
+             int len)
+{
+  abort();
+}
+
+int
+XFillRectangle (Display *dpy, Drawable d, GC gc, int x, int y, 
+                unsigned int width, unsigned int height)
+{
+  abort();
+}
+
+int
+XFreeColors (Display *dpy, Colormap cmap, unsigned long *px, int n,
+             unsigned long planes)
+{
+  abort();
+}
+
+int
+XFreeGC (Display *dpy, GC gc)
+{
+  abort();
+}
+
+int
+XFreePixmap (Display *dpy, Pixmap p)
+{
+  abort();
+}
+
+XImage *
+XGetImage (Display *dpy, Drawable d, int x, int y,
+           unsigned int w, unsigned int h,
+           unsigned long pm, int fmt)
+{
+  abort();
+}
+
+Status
+XGetWindowAttributes (Display *dpy, Window w, XWindowAttributes *xgwa)
+{
+  struct state *st = &global_state;
+  memset (xgwa, 0, sizeof(*xgwa));
+  xgwa->width = st->output_frame->width;
+  xgwa->height = st->output_frame->height;
+  return True;
+}
+
+int
+XPutImage (Display *dpy, Drawable d, GC gc, XImage *image, 
+           int src_x, int src_y, int dest_x, int dest_y,
+           unsigned int w, unsigned int h)
+{
+  struct state *st = &global_state;
+  XImage *out = st->output_frame;
+  int x, y;
+  for (y = 0; y < h; y++) {
+    int iy = src_y + y;
+    int oy = dest_y + y;
+    if (iy >= 0 &&
+        oy >= 0 &&
+        iy < image->height &&
+        oy < out->height)
+      for (x = 0; x < w; x++) {
+        int ix = src_x + x;
+        int ox = dest_x + x;
+        if (ix >= 0 &&
+            ox >= 0 &&
+            ix < image->width &&
+            ox < out->width) {
+          XPutPixel (out, ox, oy, XGetPixel (image, ix, iy));
+        }
+      }
+  }
+  return 0;
+}
+
+int
+XQueryColor (Display *dpy, Colormap cmap, XColor *color)
+{
+  uint16_t r = (color->pixel & 0x00FF0000L) >> 16;
+  uint16_t g = (color->pixel & 0x0000FF00L) >> 8;
+  uint16_t b = (color->pixel & 0x000000FFL);
+  color->red   = r | (r<<8);
+  color->green = g | (g<<8);
+  color->blue  = b | (b<<8);
+  color->flags = DoRed|DoGreen|DoBlue;
+  return 0;
+}
+
+int
+XQueryColors (Display *dpy, Colormap cmap, XColor *c, int n)
+{
+  int i;
+  for (i = 0; i < n; i++)
+    XQueryColor (dpy, cmap, &c[i]);
+  return 0;
+}
+
+int
+XSetForeground (Display *dpy, GC gc, unsigned long fg)
+{
+  abort();
+}
+
+int
+XSetWindowBackground (Display *dpy, Window win, unsigned long bg)
+{
+  return 0;
+}
+
+XImage *
+create_xshm_image (Display *dpy, Visual *visual,
+                  unsigned int depth,
+                  int format, XShmSegmentInfo *shm_info,
+                  unsigned int width, unsigned int height)
+{
+# undef BitmapPad
+# define BitmapPad(dpy) 8
+  XImage *image = XCreateImage (dpy, visual, depth, format, 0, NULL,
+                                width, height, BitmapPad(dpy), 0);
+  int error = thread_malloc ((void **)&image->data, dpy,
+                             image->height * image->bytes_per_line);
+  if (error) {
+    XDestroyImage (image);
+    image = NULL;
+  } else {
+    memset (image->data, 0, image->height * image->bytes_per_line);
+  }
+
+  return image;
+}
+
+void
+destroy_xshm_image (Display *dpy, XImage *image, XShmSegmentInfo *shm_info)
+{
+  thread_free (image->data);
+  image->data = NULL;
+  XDestroyImage (image);
+}
+
+Bool
+get_boolean_resource (Display *dpy, char *name, char *class)
+{
+  if (!strcmp(name, "useThreads")) return True;
+  abort();
+}
+
+double
+get_float_resource (Display *dpy, char *name, char *class)
+{
+  if (!strcmp(name, "TVTint")) return 5;
+  if (!strcmp(name, "TVColor")) return 70;
+  if (!strcmp(name, "TVBrightness")) return -15;
+  if (!strcmp(name, "TVContrast")) return 150;
+  abort();
+}
+
+int
+get_integer_resource (Display *dpy, char *name, char *class)
+{
+  if (!strcmp(name, "use_cmap")) return 0;
+  abort();
+}
+
+unsigned int
+get_pixel_resource (Display *dpy, Colormap cmap, char *name, char *class)
+{
+  if (!strcmp(name, "background")) return 0;
+  abort();
+}
+
+XFontStruct *
+load_font_retry (Display *dpy, const char *xlfd)
+{
+  abort();
+}
+
+Bool
+put_xshm_image (Display *dpy, Drawable d, GC gc, XImage *image,
+                int src_x, int src_y, int dest_x, int dest_y,
+                unsigned int width, unsigned int height,
+                XShmSegmentInfo *shm_info)
+{
+  return XPutImage (dpy, d, gc, image, src_x, src_y, dest_x, dest_y,
+                    width, height);
+}
+
+int
+visual_class (Screen *s, Visual *v)
+{
+  return TrueColor;
+}
+
+int
+visual_pixmap_depth (Screen *s, Visual *v)
+{
+  return 32;
+}
+
+void
+visual_rgb_masks (Screen *screen, Visual *visual,
+                  unsigned long *red_mask,
+                  unsigned long *green_mask,
+                  unsigned long *blue_mask)
+{
+  *red_mask   = 0x00FF0000L;
+  *green_mask = 0x0000FF00L;
+  *blue_mask  = 0x000000FFL;
+}
+
+
+static void
+update_smpte_colorbars(analogtv_input *input)
+{
+  struct state *st = (struct state *) input->client_data;
+  int col;
+  int black_ntsc[4];
+
+  /* 
+     SMPTE is the society of motion picture and television engineers, and
+     these are the standard color bars in the US. Following the partial spec
+     at http://broadcastengineering.com/ar/broadcasting_inside_color_bars/
+     These are luma, chroma, and phase numbers for each of the 7 bars.
+  */
+  double top_cb_table[7][3]={
+    {75, 0, 0.0},    /* gray */
+    {69, 31, 167.0}, /* yellow */
+    {56, 44, 283.5}, /* cyan */
+    {48, 41, 240.5}, /* green */
+    {36, 41, 60.5},  /* magenta */
+    {28, 44, 103.5}, /* red */
+    {15, 31, 347.0}  /* blue */
+  };
+  double mid_cb_table[7][3]={
+    {15, 31, 347.0}, /* blue */
+    {7, 0, 0},       /* black */
+    {36, 41, 60.5},  /* magenta */
+    {7, 0, 0},       /* black */
+    {56, 44, 283.5}, /* cyan */
+    {7, 0, 0},       /* black */
+    {75, 0, 0.0}     /* gray */
+  };
+
+  analogtv_lcp_to_ntsc(0.0, 0.0, 0.0, black_ntsc);
+
+  analogtv_setup_sync(input, 1, 0);
+
+  for (col=0; col<7; col++) {
+    analogtv_draw_solid_rel_lcp(input, col*(1.0/7.0), (col+1)*(1.0/7.0), 0.00, 0.68, 
+                                top_cb_table[col][0], 
+                                top_cb_table[col][1], top_cb_table[col][2]);
+    
+    analogtv_draw_solid_rel_lcp(input, col*(1.0/7.0), (col+1)*(1.0/7.0), 0.68, 0.75, 
+                                mid_cb_table[col][0], 
+                                mid_cb_table[col][1], mid_cb_table[col][2]);
+  }
+
+  analogtv_draw_solid_rel_lcp(input, 0.0, 1.0/6.0,
+                              0.75, 1.00, 7, 40, 303);   /* -I */
+  analogtv_draw_solid_rel_lcp(input, 1.0/6.0, 2.0/6.0,
+                              0.75, 1.00, 100, 0, 0);    /* white */
+  analogtv_draw_solid_rel_lcp(input, 2.0/6.0, 3.0/6.0,
+                              0.75, 1.00, 7, 40, 33);    /* +Q */
+  analogtv_draw_solid_rel_lcp(input, 3.0/6.0, 4.0/6.0,
+                              0.75, 1.00, 7, 0, 0);      /* black */
+  analogtv_draw_solid_rel_lcp(input, 12.0/18.0, 13.0/18.0,
+                              0.75, 1.00, 3, 0, 0);      /* black -4 */
+  analogtv_draw_solid_rel_lcp(input, 13.0/18.0, 14.0/18.0,
+                              0.75, 1.00, 7, 0, 0);      /* black */
+  analogtv_draw_solid_rel_lcp(input, 14.0/18.0, 15.0/18.0,
+                              0.75, 1.00, 11, 0, 0);     /* black +4 */
+  analogtv_draw_solid_rel_lcp(input, 5.0/6.0, 6.0/6.0,
+                              0.75, 1.00, 7, 0, 0);      /* black */
+  if (st->logo)
+    {
+      double aspect = (double)
+        st->output_frame->width / st->output_frame->height;
+      int w2 = st->tv->xgwa.width  * 0.35;
+      int h2 = st->tv->xgwa.height * 0.35 * aspect;
+      analogtv_load_ximage (st->tv, input, st->logo, st->logo_mask,
+                            (st->tv->xgwa.width - w2) / 2,
+                            st->tv->xgwa.height * 0.20,
+                            w2, h2);
+    }
+
+  input->next_update_time += 1.0;
+}
+
+
+
+static void
+analogtv_save_frame (struct state *st, const char *outfile, 
+                     unsigned long frame)
+{
+  char *pngfile = malloc (strlen (st->framefile_fmt) + 40);
+  FILE *f;
+
+  sprintf (pngfile, st->framefile_fmt, (int) frame);
+  f = fopen (pngfile, "wb");
+  if (! f) {
+    fprintf (stderr, "%s: unable to write %s\n", progname, pngfile);
+    exit (1);
+  }
+
+# ifdef HAVE_LIBPNG
+  {
+    png_structp png_ptr;
+    png_infop info_ptr;
+    png_bytep row;
+    XImage *img = st->output_frame;
+    int x, y;
+
+    png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING, 0, 0, 0);
+    if (!png_ptr) abort();
+    info_ptr = png_create_info_struct (png_ptr);
+    if (!info_ptr) abort();
+    if (setjmp (png_jmpbuf (png_ptr))) abort();
+
+    png_init_io (png_ptr, f);
+
+    png_set_IHDR (png_ptr, info_ptr, img->width, img->height, 8,
+                  PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE,
+                  PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
+    png_write_info (png_ptr, info_ptr);
+
+    row = (png_bytep) malloc (3 * img->width * sizeof(png_byte));
+    if (!row) abort();
+    for (y = 0 ; y < img->height ; y++) {
+      for (x = 0 ; x < img->width ; x++) {
+        unsigned long p = XGetPixel (img, x, y);
+        row[x*3+0] = (p & 0x000000FFL);
+        row[x*3+1] = (p & 0x0000FF00L) >> 8;
+        row[x*3+2] = (p & 0x00FF0000L) >> 16;
+      }
+      png_write_row (png_ptr, row);
+    }
+
+    png_write_end (png_ptr, 0);
+
+    png_free_data (png_ptr, info_ptr, PNG_FREE_ALL, -1);
+    png_destroy_write_struct (&png_ptr, 0);
+    free (row);
+  }
+#else   /* ! HAVE_LIBPNG */
+# error libpng required
+# endif /* ! HAVE_LIBPNG */
+
+  fclose (f);
+  if (verbose_p > 1)
+    fprintf (stderr, "%s: wrote %s\n", progname, pngfile);
+  free (pngfile);
+}
+
+
+static void
+delete_tmp_files(void)
+{
+  struct state *st = &global_state;
+  char outfile[2048];
+  int i;
+  for (i = 0; i <= st->frames_written; i++)
+    {
+      sprintf (outfile, st->framefile_fmt, i);
+      if (verbose_p > 1)
+        fprintf (stderr, "%s: rm %s\n", progname, outfile);
+      unlink (outfile);
+    }
+}
+
+
+static RETSIGTYPE
+analogtv_signal (int sig)
+{
+  signal (sig, SIG_DFL);
+  delete_tmp_files();
+  kill (getpid (), sig);
+}
+
+
+static void
+analogtv_write_mp4 (struct state *st, const char *outfile,
+                    const char *audiofile,
+                    unsigned long frames)
+{
+  char cmd[1024];
+  struct stat ss;
+
+  sprintf (cmd,
+           "ffmpeg"
+           " -hide_banner"
+           " -v 16"
+           " -framerate 30"    /* rate of input: must be before -i */
+           " -i '%s'"
+           " -r 30",           /* rate of output: must be after -i */
+           st->framefile_fmt);
+  if (audiofile)
+    sprintf (cmd + strlen(cmd),
+             " -i '%s'"
+             " -map 0:v:0"
+             " -map 1:a:0"
+             " -acodec aac"
+             " -shortest",
+             audiofile);
+  sprintf (cmd + strlen(cmd),
+           " -c:v libx264"
+           " -profile:v high"
+           " -crf 24"          /* 18 is very high; 24 is good enough */
+           " -pix_fmt yuv420p"
+           " '%s'"
+           " </dev/null"
+           /*" 2>&-"*/,
+           outfile);
+
+  if (verbose_p > 1)
+    fprintf (stderr, "%s: exec: %s\n", progname, cmd);
+  unlink (outfile);
+  system (cmd);
+
+  delete_tmp_files();
+
+  if (stat (outfile, &ss))
+    {
+      fprintf (stderr, "%s: %s was not created\n", progname, outfile);
+      exit (1);
+    }
+
+  if (verbose_p)
+    fprintf (stderr, "%s: wrote %s (%dx%d, %lu sec, %.0f MB)\n",
+             progname, outfile, 
+             st->output_frame->width, st->output_frame->height,
+             frames/30,
+             (float) ss.st_size / (1024*1024));
+}
+
+
+static void
+flip_ximage (XImage *ximage)
+{
+  char *data2, *in, *out;
+  int y;
+
+  if (!ximage) return;
+  data2 = malloc (ximage->bytes_per_line * ximage->height);
+  if (!data2) abort();
+  in = ximage->data;
+  out = data2 + ximage->bytes_per_line * (ximage->height - 1);
+  for (y = 0; y < ximage->height; y++)
+    {
+      memcpy (out, in, ximage->bytes_per_line);
+      in  += ximage->bytes_per_line;
+      out -= ximage->bytes_per_line;
+    }
+  free (ximage->data);
+  ximage->data = data2;
+}
+
+
+static void
+analogtv_convert (const char *infile, const char *outfile,
+                  const char *audiofile, const char *logofile,
+                  int duration, Bool powerp)
+{
+  struct state *st = &global_state;
+  XImage *ximage = file_to_ximage (0, 0, infile);
+  Display *dpy = 0;
+  Window window = 0;
+  int i;
+  unsigned long curticks = 0;
+  time_t lastlog = time((time_t *)0);
+  int frames_left;
+  int fps = 30;
+
+  if (verbose_p)
+    fprintf (stderr, "%s: progname: loaded %s %dx%d\n", 
+             progname, infile, ximage->width, ximage->height);
+
+  flip_ximage (ximage);
+
+  memset (st, 0, sizeof(*st));
+  st->dpy = dpy;
+  st->window = window;
+
+  st->output_frame = XCreateImage (dpy, 0, ximage->depth, ximage->format, 0,
+                                   NULL,
+                                   ximage->width  & ~1, /* can't be odd */
+                                   ximage->height & ~1,
+                                   ximage->bitmap_pad, 0);
+  st->output_frame->data = (char *)
+    calloc (st->output_frame->height, st->output_frame->bytes_per_line);
+
+  {
+    char *s1, *s2;
+    st->framefile_fmt = malloc (strlen(outfile) + 100);
+    strcpy (st->framefile_fmt, outfile);
+    s1 = strrchr (st->framefile_fmt, '/');
+    s2 = strrchr (st->framefile_fmt, '.');
+    if (s2 && s2 > s1) *s2 = 0;
+    sprintf (st->framefile_fmt + strlen(st->framefile_fmt),
+             ".%08x.%%06d.png", (random() % 0xFFFFFFFF));
+  }
+
+  if (logofile) {
+    int x, y;
+    st->logo = file_to_ximage (0, 0, logofile);
+    if (verbose_p)
+      fprintf (stderr, "%s: progname: loaded %s %dx%d\n", 
+               progname, logofile, st->logo->width, st->logo->height);
+    flip_ximage (st->logo);
+    /* Pull the alpha out of the logo and make a separate mask ximage. */
+    st->logo_mask = XCreateImage (dpy, 0, st->logo->depth, st->logo->format, 0,
+                                  NULL, st->logo->width, st->logo->height,
+                                  st->logo->bitmap_pad, 0);
+    st->logo_mask->data = (char *)
+    calloc (st->logo_mask->height, st->logo_mask->bytes_per_line);
+
+    for (y = 0; y < st->logo->height; y++)
+      for (x = 0; x < st->logo->width; x++) {
+        unsigned long p = XGetPixel (st->logo, x, y);
+        uint8_t a =                     (p & 0xFF000000L) >> 24;
+        XPutPixel (st->logo,      x, y, (p & 0x00FFFFFFL));
+        XPutPixel (st->logo_mask, x, y, (a ? 0x00FFFFFFL : 0));
+      }
+  }
+
+
+  if (audiofile) {
+    struct stat ss;
+    if (stat (audiofile, &ss))
+      {
+        fprintf (stderr, "%s: %s does not exist\n", progname, audiofile);
+        exit (1);
+      }
+  }
+
+  /* Catch signals to delete tmp files before we start writing them. */
+
+  signal (SIGHUP,  analogtv_signal);
+  signal (SIGINT,  analogtv_signal);
+  signal (SIGQUIT, analogtv_signal);
+  signal (SIGILL,  analogtv_signal);
+  signal (SIGTRAP, analogtv_signal);
+# ifdef SIGIOT
+  signal (SIGIOT,  analogtv_signal);
+# endif
+  signal (SIGABRT, analogtv_signal);
+# ifdef SIGEMT
+  signal (SIGEMT,  analogtv_signal);
+# endif
+  signal (SIGFPE,  analogtv_signal);
+  signal (SIGBUS,  analogtv_signal);
+  signal (SIGSEGV, analogtv_signal);
+# ifdef SIGSYS
+  signal (SIGSYS,  analogtv_signal);
+# endif
+  signal (SIGTERM, analogtv_signal);
+# ifdef SIGXCPU
+  signal (SIGXCPU, analogtv_signal);
+# endif
+# ifdef SIGXFSZ
+  signal (SIGXFSZ, analogtv_signal);
+# endif
+# ifdef SIGDANGER
+  signal (SIGDANGER, analogtv_signal);
+# endif
+
+  st->tv=analogtv_allocate(dpy, window);
+
+  while (st->n_stations < MAX_STATIONS) {
+    analogtv_input *input=analogtv_input_allocate();
+    st->stations[st->n_stations++]=input;
+    input->client_data = st;
+  }
+
+  analogtv_set_defaults(st->tv, "");
+  st->tv->need_clear=1;
+
+  if (random()%4==0) {
+    st->tv->tint_control += pow(frand(2.0)-1.0, 7) * 180.0;
+  }
+  if (1) {
+    st->tv->color_control += frand(0.3) * RANDSIGN();
+  }
+  if (random()%4==0) {
+    st->tv->brightness_control += frand(0.15);
+  }
+  if (random()%4==0) {
+    st->tv->contrast_control += frand(0.2) * RANDSIGN();
+  }
+
+  for (i=0; i<N_CHANNELS; i++) {
+    memset(&st->chansettings[i], 0, sizeof(chansetting));
+
+    st->chansettings[i].noise_level = 0.06;
+    {
+      int last_station=42;
+      int stati;
+      for (stati=0; stati<MAX_MULTICHAN; stati++) {
+        analogtv_reception *rec=&st->chansettings[i].recs[stati];
+        int station;
+        while (1) {
+          station=random()%st->n_stations;
+          if (station!=last_station) break;
+          if ((random()%10)==0) break;
+        }
+        last_station=station;
+        rec->input = st->stations[station];
+        rec->level = pow(frand(1.0), 3.0) * 2.0 + 0.05;
+        rec->ofs=random()%ANALOGTV_SIGNAL_LEN;
+        if (random()%3) {
+          rec->multipath = frand(1.0);
+        } else {
+          rec->multipath=0.0;
+        }
+        if (stati) {
+          /* We only set a frequency error for ghosting stations,
+             because it doesn't matter otherwise */
+          rec->freqerr = (frand(2.0)-1.0) * 3.0;
+        }
+
+        if (rec->level > 0.3) break;
+        if (random()%4) break;
+      }
+    }
+  }
+
+  st->curinputi=0;
+  st->cs = &st->chansettings[st->curinputi];
+  frames_left = fps * (2 + frand(1.5));
+
+  st->tv->powerup=0.0;
+
+  /* load_station_images() */
+
+  for (i = 0; i < MAX_STATIONS; i++) {
+    analogtv_input *input = st->stations[i];
+
+    if (i == 1) {   /* station 0 is the unadulterated image.
+                       station 1 is colorbars. */
+      input->updater = update_smpte_colorbars;
+    } else {
+      int w = ximage->width  * 0.815;  /* underscan */
+      int h = ximage->height * 0.970;
+      int x = (ximage->width - w) / 2;
+      int y = (ximage->height - h) / 2;
+      analogtv_input *input = st->stations[i];
+      analogtv_setup_sync(input, 1, (random()%20)==0);
+      analogtv_load_ximage (st->tv, input, ximage, 0, x, y, w, h);
+    }
+  }
+
+
+  /* xanalogtv_draw() */
+
+  while (1) {
+    const analogtv_reception *recs[MAX_MULTICHAN];
+    unsigned rec_count = 0;
+    double curtime=curticks*0.001;
+
+    frames_left--;
+    if (frames_left <= 0) {
+      frames_left = fps * (0.5 + frand(2.5));
+
+      if (st->curinputi != 0 && !(random() % 3)) {
+        st->curinputi = 0;  /* unadulterated image */
+      } else {
+        st->curinputi = 1 + (random() % (N_CHANNELS - 1));
+      }
+
+      st->cs = &st->chansettings[st->curinputi];
+      /* Set channel change noise flag */
+      st->tv->channel_change_cycles=200000;
+    }
+
+    for (i=0; i<MAX_MULTICHAN; i++) {
+      analogtv_reception *rec = &st->cs->recs[i];
+      analogtv_input *inp=rec->input;
+      if (!inp) continue;
+
+      if (inp->updater) {
+        inp->next_update_time = curtime;
+        (inp->updater)(inp);
+      }
+      rec->ofs += rec->freqerr;
+    }
+
+    st->tv->powerup=(powerp ? curtime : 9999);
+
+    if (st->curinputi == 0) {
+      XPutImage (dpy, 0, 0, ximage, 0, 0, 0, 0,
+                 ximage->width, ximage->height);
+    } else {
+      for (i=0; i<MAX_MULTICHAN; i++) {
+        analogtv_reception *rec = &st->cs->recs[i];
+        if (rec->input) {
+          analogtv_reception_update(rec);
+          recs[rec_count] = rec;
+          ++rec_count;
+        }
+      }
+      analogtv_draw (st->tv, st->cs->noise_level, recs, rec_count);
+    }
+
+    analogtv_save_frame (st, outfile, st->frames_written);
+
+    if (curtime >= duration) break;
+
+    curticks += 1000/fps;
+    st->frames_written++;
+
+    if (verbose_p) {
+      unsigned long now = time((time_t *)0);
+      if (now > lastlog + 5) {
+        fprintf (stderr, "%s: %2d%%...\n", progname,
+                 (int) (curtime * 100 / duration));
+        lastlog = now;
+      }
+    }
+  }
+
+  analogtv_write_mp4 (st, outfile, audiofile, st->frames_written);
+}
+
+
+static void
+usage(const char *err)
+{
+  if (err) fprintf (stderr, "%s: %s unknown\n", progname, err);
+  fprintf (stderr, "usage: %s [--verbose] [--duration secs]"
+           " [--audio mp3-file] [--no-powerup] infile.png outfile.mp4\n",
+           progname);
+  exit (1);
+}
+
+int
+main (int argc, char **argv)
+{
+  int i;
+  const char *infile = 0;
+  const char *outfile = 0;
+  int duration = 30;
+  Bool powerp = False;
+  char *audio = 0;
+  char *logo = 0;
+
+  char *s = strrchr (argv[0], '/');
+  progname = s ? s+1 : argv[0];
+  progclass = progname;
+
+  for (i = 1; i < argc; i++)
+    {
+      if (argv[i][0] == '-' && argv[i][1] == '-')
+        argv[i]++;
+       if (!strcmp(argv[i], "-v") ||
+           !strcmp(argv[i], "-verbose"))
+        verbose_p++;
+       else if (!strcmp(argv[i], "-vv")) verbose_p += 2;
+       else if (!strcmp(argv[i], "-vvv")) verbose_p += 3;
+       else if (!strcmp(argv[i], "-vvvv")) verbose_p += 4;
+       else if (!strcmp(argv[i], "-vvvvv")) verbose_p += 5;
+       else if (!strcmp(argv[i], "-duration") && argv[i+1])
+         {
+           char dummy;
+           i++;
+           if (1 != sscanf (argv[i], " %d %c", &duration, &dummy))
+             usage(argv[i]);
+         }
+       else if (!strcmp(argv[i], "-audio") && argv[i+1])
+         audio = argv[++i];
+       else if (!strcmp(argv[i], "-logo") && argv[i+1])
+         logo = argv[++i];
+       else if (!strcmp(argv[i], "-powerup") ||
+                !strcmp(argv[i], "-power"))
+         powerp = True;
+       else if (!strcmp(argv[i], "-no-powerup") ||
+                !strcmp(argv[i], "-no-power"))
+         powerp = False;
+      else if (argv[i][0] == '-')
+        usage(argv[i]);
+      else if (!infile)
+        infile = argv[i];
+      else if (!outfile)
+        outfile = argv[i];
+      else
+        usage(argv[i]);
+    }
+  if (!infile) usage("input file");
+  if (!outfile) usage("output file");
+
+# undef ya_rand_init
+  ya_rand_init (0);
+  analogtv_convert (infile, outfile, audio, logo, duration, powerp);
+  exit (0);
+}
index fd7f504c68d705614c57552405044932694b7b6b..8ef3c7d10cc5d78ddf43ad06c0aed8048da28b76 100644 (file)
@@ -329,7 +329,7 @@ analogtv_configure(analogtv *it)
   wlim = it->xgwa.width;
   ratio = wlim / (float) hlim;
 
-#ifdef HAVE_MOBILE
+#if defined(HAVE_MOBILE) || defined(NO_CONSTRAIN_RATIO)
   /* Fill the whole iPhone screen, even though that distorts the image. */
   min_ratio = 0;
   max_ratio = 10;
@@ -1002,7 +1002,7 @@ analogtv_setup_sync(analogtv_input *input, int do_cb, int do_ssavi)
 
     if (do_cb) {
       /* 9 cycles of colorburst */
-      for (i=ANALOGTV_CB_START; i<ANALOGTV_CB_START+36; i+=4) {
+      for (i=ANALOGTV_CB_START; i<ANALOGTV_CB_START+36*ANALOGTV_SCALE; i+=4*ANALOGTV_SCALE) {
         sig[i+1] += ANALOGTV_CB_LEVEL;
         sig[i+3] -= ANALOGTV_CB_LEVEL;
       }
@@ -1022,11 +1022,11 @@ analogtv_sync(analogtv *it)
   float cbfc=1.0f/128.0f;
 
 /*  sp = it->rx_signal + lineno*ANALOGTV_H + cur_hsync;*/
-  for (i=-32; i<32; i++) {
+  for (i=-32*ANALOGTV_SCALE; i<32*ANALOGTV_SCALE; i++) {
     lineno = (cur_vsync + i + ANALOGTV_V) % ANALOGTV_V;
     sp = it->rx_signal + lineno*ANALOGTV_H;
     filt=0.0f;
-    for (j=0; j<ANALOGTV_H; j+=ANALOGTV_H/16) {
+    for (j=0; j<ANALOGTV_H; j+=ANALOGTV_H/(16*ANALOGTV_SCALE)) {
       filt += sp[j];
     }
     filt *= it->agclevel;
@@ -1039,11 +1039,11 @@ analogtv_sync(analogtv *it)
 
   for (lineno=0; lineno<ANALOGTV_V; lineno++) {
 
-    if (lineno>5 && lineno<ANALOGTV_V-3) { /* ignore vsync interval */
+    if (lineno>5*ANALOGTV_SCALE && lineno<ANALOGTV_V-3*ANALOGTV_SCALE) { /* ignore vsync interval */
       unsigned lineno2 = (lineno + cur_vsync + ANALOGTV_V)%ANALOGTV_V;
       if (!lineno2) lineno2 = ANALOGTV_V;
       sp = it->rx_signal + lineno2*ANALOGTV_H + cur_hsync;
-      for (i=-8; i<8; i++) {
+      for (i=-8*ANALOGTV_SCALE; i<8*ANALOGTV_SCALE; i++) {
         osc = (float)(ANALOGTV_H+i)/(float)ANALOGTV_H;
         filt=(sp[i-3]+sp[i-2]+sp[i-1]+sp[i]) * it->agclevel;
 
@@ -1061,9 +1061,9 @@ analogtv_sync(analogtv *it)
        cycles.
     */
 
-    if (lineno>15) {
+    if (lineno>15*ANALOGTV_SCALE) {
       sp = it->rx_signal + lineno*ANALOGTV_H + (cur_hsync&~3);
-      for (i=ANALOGTV_CB_START+8; i<ANALOGTV_CB_START+36-8; i++) {
+      for (i=ANALOGTV_CB_START+8*ANALOGTV_SCALE; i<ANALOGTV_CB_START+(36-8)*ANALOGTV_SCALE; i++) {
         it->cb_phase[i&3] = it->cb_phase[i&3]*(1.0f-cbfc) +
           sp[i]*it->agclevel*cbfc;
       }
@@ -2009,7 +2009,7 @@ analogtv_load_ximage(analogtv *it, analogtv_input *input,
   unsigned long black = 0; /* not BlackPixelOfScreen (it->xgwa.screen); */
 
   int x_length=ANALOGTV_PIC_LEN;
-  int y_overscan=5; /* overscan this much top and bottom */
+  int y_overscan=5*ANALOGTV_SCALE; /* overscan this much top and bottom */
   int y_scanlength=ANALOGTV_VISLINES+2*y_overscan;
 
   if (target_w > 0) x_length     = x_length     * target_w / it->xgwa.width;
@@ -2297,8 +2297,8 @@ analogtv_make_font(Display *dpy, Window window, analogtv_font *f,
                                       f->text_im->bytes_per_line);
 
   }
-  f->x_mult=4;
-  f->y_mult=2;
+  f->x_mult=4 * ANALOGTV_SCALE;
+  f->y_mult=2 * ANALOGTV_SCALE;
 }
 
 int
@@ -2415,7 +2415,7 @@ analogtv_draw_string(analogtv_input *input, analogtv_font *f,
 {
   while (*s) {
     analogtv_draw_char(input, f, *s, x, y, ntsc);
-    x += f->char_w * 4;
+    x += f->char_w * f->x_mult;
     s++;
   }
 }
@@ -2424,7 +2424,7 @@ void
 analogtv_draw_string_centered(analogtv_input *input, analogtv_font *f,
                               char *s, int x, int y, int ntsc[4])
 {
-  int width=strlen(s) * f->char_w * 4;
+  int width=strlen(s) * f->char_w * f->x_mult;
   x -= width/2;
 
   analogtv_draw_string(input, f, s, x, y, ntsc);
index e3170f1d2590d1eb029fc953b1987df3eb9bdc96..4b11b589973b7b0a40e8428520fd0108288c6ac8 100644 (file)
 # define HAVE_MOBILE
 #endif
 
+/* To simulate an NTSC CRT monitor with way more scanlines, and thus
+   apply an ahistorical tv-like effect to a larger image, increase
+   this resolution multiplier.
+ */
+#ifndef ANALOGTV_SCALE
+# define ANALOGTV_SCALE 1
+#endif
+
 /*
   You'll need these to generate standard NTSC TV signals
  */
 enum {
   /* We don't handle interlace here */
-  ANALOGTV_V=262,
-  ANALOGTV_TOP=30,
-  ANALOGTV_VISLINES=200,
+  ANALOGTV_V=262*ANALOGTV_SCALE,
+  ANALOGTV_TOP=30*ANALOGTV_SCALE,
+  ANALOGTV_VISLINES=200*ANALOGTV_SCALE,
   ANALOGTV_BOT=ANALOGTV_TOP + ANALOGTV_VISLINES,
 
   /* This really defines our sampling rate, 4x the colorburst
      frequency. Handily equal to the Apple II's dot clock.
      You could also make a case for using 3x the colorburst freq,
      but 4x isn't hard to deal with. */
-  ANALOGTV_H=912,
+  ANALOGTV_H=912*ANALOGTV_SCALE,
 
   /* Each line is 63500 nS long. The sync pulse is 4700 nS long, etc.
      Define sync, back porch, colorburst, picture, and front porch
@@ -54,7 +62,7 @@ enum {
   ANALOGTV_VIS_END=ANALOGTV_PIC_START + (ANALOGTV_PIC_LEN*7/8),
   ANALOGTV_VIS_LEN=ANALOGTV_VIS_END-ANALOGTV_VIS_START,
 
-  ANALOGTV_HASHNOISE_LEN=6,
+  ANALOGTV_HASHNOISE_LEN=6*ANALOGTV_SCALE,
 
   ANALOGTV_GHOSTFIR_LEN=4,
 
index deedb270b659da0c929e426e94c9a6a0ebadc429..f0ea5e8da0a0c3cf7731a4d81fc765ad66748b28 100644 (file)
@@ -409,6 +409,9 @@ anemone_free (Display *dpy, Window window, void *closure)
   struct state *st = (struct state *) closure;
   if (st->vPendage) free (st->vPendage);
   if (st->appD) free (st->appD);
+  XFreeGC (dpy, st->gcDraw);
+  XFreeGC (dpy, st->gcClear);
+  free (st->colors);
   free (st);
 }
 
index 9f240e8f9d13434d7361fca57c656e34a3b77818..04c12e3f5020c2d730b7ed4d5606b4ef9986bea8 100644 (file)
@@ -722,6 +722,9 @@ anemotaxis_free (Display *dpy, Window window, void *closure)
       if (st->searcher[i]) destroy_searcher (st->searcher[i]);
     free (st->searcher);
   }
+  XFreeGC (dpy, st->gcDraw);
+  XFreeGC (dpy, st->gcClear);
+  free (st->colors);
   free (st);
 }
 
index 3063b58d787f720324f9d700d7948586d0f420b0..c30be1f528fcff0c27d8e2ba7ecff82238037162 100644 (file)
@@ -813,7 +813,7 @@ struct terminal_controller_data {
 
 /* The structure of closure linkage throughout this code is so amazingly
    baroque that I can't get to the 'struct state' from where I need it. */
-static const char *global_program;
+static char *global_program;
 static Bool global_fast_p;
 
 
@@ -1825,8 +1825,10 @@ apple2_init (Display *dpy, Window window)
     }
   if (s) free (s);
 
-  global_program = get_string_resource (dpy, "program", "Program");
-  global_fast_p = get_boolean_resource (dpy, "fast", "Boolean");
+  if (!global_program) {
+    global_program = get_string_resource (dpy, "program", "Program");
+    global_fast_p = get_boolean_resource (dpy, "fast", "Boolean");
+  }
 
 
   /* Kludge for MacOS standalone mode: see OSX/SaverRunner.m. */
@@ -1836,7 +1838,8 @@ apple2_init (Display *dpy, Window window)
       {
         st->controller = terminal_controller;
         st->random_p   = False;
-        global_program = getenv ("SHELL");
+        if (global_program) free (global_program);
+        global_program = strdup (getenv ("SHELL"));
         global_fast_p  = True;
       }
   }
@@ -1906,6 +1909,8 @@ apple2_free (Display *dpy, Window window, void *closure)
     if (apple2_one_frame (st->sim))
       abort();  /* should have freed! */
   }
+  if (global_program) free (global_program);
+  global_program = 0;
   free (st);
 }
 
index 4fe22c237e00c6147b557af5dd0ad29d418eb790..25bc3b0bec17d8b32ac175e8250607eae72072b8 100644 (file)
@@ -227,6 +227,7 @@ attraction_init (Display *dpy, Window window)
             progname, mode_str);
     exit (1);
   }
+  if (mode_str) free (mode_str);
 
   graph_mode_str = get_string_resource (dpy, "graphmode", "Mode");
   if (! graph_mode_str) st->graph_mode = graph_none;
@@ -241,6 +242,7 @@ attraction_init (Display *dpy, Window window)
         progname, graph_mode_str);
     exit (1);
   }
+  if (graph_mode_str) free (graph_mode_str);
 
   /* only allocate memory if it is needed */
   if(st->graph_mode != graph_none)
@@ -1044,6 +1046,9 @@ attraction_free (Display *dpy, Window window, void *closure)
   if (st->colors)      free (st->colors);
   if (st->spl)         free_spline (st->spl);
 
+  XFreeGC (dpy, st->draw_gc);
+  XFreeGC (dpy, st->erase_gc);
+
   free (st);
 }
 
index 31574bd214049472ed49177241dc2c08a33eeddb..2ce609e64d961a2ff78db83c5dd5ce27cbfe99b6 100644 (file)
@@ -391,14 +391,12 @@ static void bitmapClear (Bitmap *b)
     memset (b->buf, 0, b->widthBytes * b->height);
 }
 
-#if 0
 /* free a bitmap */
 static void bitmapFree (Bitmap *b)
 {
     free (b->buf);
     free (b);
 }
-#endif
 
 
 /* get the byte value at the given byte-offset coordinates in the given
@@ -1913,6 +1911,16 @@ barcode_reshape (Display *dpy, Window window, void *closure,
 static void
 barcode_free (Display *dpy, Window window, void *closure)
 {
+  struct state *st = (struct state *) closure;
+  int i;
+  XFreeGC (dpy, st->theGC);
+  st->theImage->data = 0;
+  XDestroyImage (st->theImage);
+  bitmapFree (st->theBitmap);
+  for (i = 0; i < st->barcode_max; i++)
+    bitmapFree (st->barcodes[i].bitmap);
+  free (st->barcodes);
+  free (st);
 }
 
 
index 3cbaec27ffac7959ccbe0d27a9c6999a78122b90..755a1b4426307751aa56af052413162830c3c94e 100644 (file)
@@ -554,10 +554,12 @@ static void binaryring_free ( Display* display, Window win, void *closure ) {
     XWindowAttributes tmp;
     XGetWindowAttributes(display, win, &tmp);
 
-    free( st->buffer );
-    free( st->particles );
-
-    free ( st );
+    if (st->gc) XFreeGC (display, st->gc);
+    if (st->pix) XFreePixmap (display, st->pix);
+    if (st->buf) XDestroyImage (st->buf);
+    free (st->buffer);
+    free (st->particles);
+    free (st);
 }
 
 
index a60351af03d98497befb639203a913ff53dd08c4..5ab37418bba8bd6072ca2348c9ea1e77b5bb9938 100644 (file)
@@ -1083,6 +1083,8 @@ blaster_free (Display *dpy, Window window, void *closure)
   if (st->l_color1) XFreeGC (dpy, st->l_color1);
   if (st->s_color)  XFreeGC (dpy, st->s_color);
   if (st->black)    XFreeGC (dpy, st->black);
+  if (st->EXPLODE_COLOR_1) XFreeGC (dpy, st->EXPLODE_COLOR_1);
+  if (st->EXPLODE_COLOR_2) XFreeGC (dpy, st->EXPLODE_COLOR_2);
   if (st->stars) free (st->stars);
   if (st->mother) {
     free (st->mother->lasers);
index d27271d36a10b019dbbfac39a2390f3c0c29e211..00d9109b90ee02045bd408e89da6c7e9708706d9 100644 (file)
@@ -256,11 +256,13 @@ blitspin_init (Display *d_arg, Window w_arg)
 
   bitmap_name = get_string_resource (st->dpy, "bitmap", "Bitmap");
   if (! bitmap_name || !*bitmap_name)
-    bitmap_name = "(default)";
+    bitmap_name = strdup ("(default)");
 
   if (!strcasecmp (bitmap_name, "(default)") ||
-      !strcasecmp (bitmap_name, "default"))
-    bitmap_name = "(screen)";
+      !strcasecmp (bitmap_name, "default")) {
+    free (bitmap_name);
+    bitmap_name = strdup ("(screen)");
+  }
 
   if (!strcasecmp (bitmap_name, "(builtin)") ||
       !strcasecmp (bitmap_name, "builtin"))
@@ -309,6 +311,7 @@ blitspin_init (Display *d_arg, Window w_arg)
       blitspin_init_2 (st);
     }
 
+  if (bitmap_name) free (bitmap_name);
   return st;
 }
 
@@ -421,6 +424,18 @@ blitspin_event (Display *dpy, Window window, void *closure, XEvent *event)
 static void
 blitspin_free (Display *dpy, Window window, void *closure)
 {
+  struct state *st = (struct state *) closure;
+# ifdef USE_XCOPYAREA
+  if (st->gc_set) XFreeGC (dpy, st->gc_set);
+  if (st->gc_clear) XFreeGC (dpy, st->gc_clear);
+  if (st->gc_copy) XFreeGC (dpy, st->gc_copy);
+  if (st->gc_and) XFreeGC (dpy, st->gc_and);
+  if (st->gc_or) XFreeGC (dpy, st->gc_or);
+  if (st->gc_xor) XFreeGC (dpy, st->gc_xor);
+# endif
+  if (st->gc) XFreeGC (dpy, st->gc);
+  XFreePixmap (dpy, st->bitmap);
+  free (st);
 }
 
 \f
index 1b1d0d717491a52eb8494ba77f27f4b3dc6ec39b..09d2ef76f2cdeb8dbf3a37642edfc8ff81f854c3 100644 (file)
@@ -88,6 +88,7 @@ reset_boxes (state *st)
                    progname, s);
           exit (1);
         }
+      free (s);
     }
 
   if (st->mode == -1)
@@ -514,6 +515,11 @@ boxfit_event (Display *dpy, Window window, void *closure, XEvent *event)
 static void
 boxfit_free (Display *dpy, Window window, void *closure)
 {
+  state *st = (state *) closure;
+  if (st->boxes) free (st->boxes);
+  if (st->colors) free (st->colors);
+  XFreeGC (dpy, st->gc);
+  free (st);
 }
 
 
index ff6c359fdd092114cf4def7a7b6611838c977447..f3af9114b1faf988e56b579877b1dde802990cd5 100644 (file)
@@ -61,6 +61,8 @@
 #include "images/gen/macbomb_png.h"
 #include "images/gen/apple_png.h"
 #include "images/gen/atm_png.h"
+#include "images/gen/sun_png.h"
+#include "images/gen/dvd_png.h"
 
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -481,8 +483,14 @@ draw_char (struct bsod_state *bst, char c)
     {
       int dir, ascent, descent;
       XCharStruct ov;
+      Bool cursorp = (c == '\033');  /* apparently \e is non-standard now! */
+
+      if (cursorp) c = ' ';
       XTextExtents (bst->font, &c, 1, &dir, &ascent, &descent, &ov);
 
+      if (bst->x < bst->left_margin)
+        bst->x = bst->left_margin;
+
       if ((bst->wrap_p || bst->word_wrap_p) &&
           bst->x + ov.width > bst->xgwa.width - bst->right_margin - bst->xoff)
         {
@@ -518,8 +526,30 @@ draw_char (struct bsod_state *bst, char c)
             }
         }
 
+      /* We render the character ESC as an inverted space (block cursor). */
+
+      if (cursorp)
+        {
+          unsigned long swap = bst->fg;
+          bst->fg = bst->bg;
+          bst->bg = swap;
+          XSetForeground (bst->dpy, bst->gc, bst->fg);
+          XSetBackground (bst->dpy, bst->gc, bst->bg);
+        }
+
       XDrawImageString (bst->dpy, bst->window, bst->gc,
                         bst->x, bst->y, &c, 1);
+
+      if (cursorp)
+        {
+          unsigned long swap = bst->fg;
+          bst->fg = bst->bg;
+          bst->bg = swap;
+          XSetForeground (bst->dpy, bst->gc, bst->fg);
+          XSetBackground (bst->dpy, bst->gc, bst->bg);
+          c = ' ';
+        }
+
       bst->x += ov.width;
 
       if (bst->word_wrap_p)
@@ -670,6 +700,11 @@ bsod_pop (struct bsod_state *bst)
       int h    = (long) bst->queue[bst->pos].arg4;
       int tox  = (long) bst->queue[bst->pos].arg5;
       int toy  = (long) bst->queue[bst->pos].arg6;
+
+      /* If ~0, place pixmap at current text pos */
+      if (tox == ~0) tox = bst->x;
+      if (toy == ~0) toy = bst->y - bst->font->ascent;
+
       if (type == PIXMAP && bst->mask)
         {
           XSetClipMask (bst->dpy, bst->gc, bst->mask);
@@ -838,7 +873,7 @@ make_bsod_state (Display *dpy, Window window,
   char buf1[1024], buf2[1024];
   char buf5[1024], buf6[1024];
   char buf7[1024], buf8[1024];
-  const char *font1, *font3, *font4;
+  char *font1, *font3, *font4;
 
   bst = (struct bsod_state *) calloc (1, sizeof (*bst));
   bst->queue_size = 10;
@@ -939,6 +974,11 @@ make_bsod_state (Display *dpy, Window window,
   bst->y = bst->font->ascent + bst->left_margin + bst->yoff;
 
   XSetWindowBackground (dpy, window, gcv.background);
+
+  if (font1) free (font1);
+  if (font3) free (font3);
+  if (font4) free (font4);
+
   return bst;
 }
 
@@ -956,6 +996,8 @@ free_bsod_state (struct bsod_state *bst)
     XFreePixmap(bst->dpy, bst->mask);
 
   XFreeFont (bst->dpy, bst->font);
+  if (bst->fontB && bst->fontB != bst->font) XFreeFont (bst->dpy, bst->fontB);
+  if (bst->fontC && bst->fontC != bst->font) XFreeFont (bst->dpy, bst->fontC);
   XFreeGC (bst->dpy, bst->gc);
 
   for (i = 0; i < bst->queue_size; i++)
@@ -3217,6 +3259,36 @@ sparc_solaris (Display *dpy, Window window)
 {
   struct bsod_state *bst = make_bsod_state (dpy, window, "solaris", "Solaris");
   int i;
+  int pix_w = 0, pix_h = 0;
+  int char_width;
+  Pixmap mask = 0;
+  Pixmap pixmap = image_data_to_pixmap (dpy, window,
+                                        sun_png, sizeof(sun_png),
+                                        &pix_w, &pix_h, &mask);
+# if 0
+  if (pixmap && 
+      pix_w < bst->xgwa.width / 2 &&
+      pix_h < bst->xgwa.height / 2)
+    {
+      int i, n = 1;
+      if (bst->xgwa.width > 2560) n++;  /* Retina displays */
+      for (i = 0; i < n; i++)
+        {
+          pixmap = double_pixmap (dpy, bst->xgwa.visual,
+                                  bst->xgwa.depth, pixmap, pix_w, pix_h);
+          mask = double_pixmap (dpy, bst->xgwa.visual, 1, mask, pix_w, pix_h);
+          pix_w *= 2;
+          pix_h *= 2;
+        }
+    }
+# endif
+
+  char_width = (bst->font->per_char
+               ? bst->font->per_char['n'-bst->font->min_char_or_byte2].width
+               : bst->font->min_bounds.width);
+
+  bst->pixmap = pixmap;
+  bst->mask = mask;
 
   bst->scroll_p = True;
   bst->wrap_p = True;
@@ -3224,8 +3296,14 @@ sparc_solaris (Display *dpy, Window window)
   bst->top_margin = bst->bottom_margin = bst->xgwa.height * 0.07;
   bst->y = bst->top_margin + bst->yoff + bst->font->ascent;
 
+# if 0
+  /* This looks correct if we have a desktop image behind it, but doesn't
+     make sense if it's a photo.  So let's skip it. */
   BSOD_IMG (bst);
   BSOD_PAUSE (bst, 3000000);
+# endif
+
+  BSOD_LINE_DELAY (bst, 20000);
 
   BSOD_INVERT(bst);
   BSOD_RECT (bst, True,
@@ -3260,30 +3338,359 @@ sparc_solaris (Display *dpy, Window window)
     " 100131480 10012a6e0 0\n"
     "End traceback...\n"
     "panic[cpu0]/thread=30000953a20: trap\n"
-    "syncing file systems...");
+    "syncing file systems...\033");
 
   BSOD_PAUSE (bst, 3000000);
 
-  BSOD_TEXT (bst, LEFT, " 1 done\n");
-  BSOD_TEXT (bst, LEFT, "dumping to /dev/dsk/c0t0d0s3, offset 26935296\n");
+  BSOD_TEXT (bst, LEFT, "\b 1 done\n");
+  BSOD_TEXT (bst, LEFT, "dumping to /dev/dsk/c0t0d0s3, offset 26935296\n\033");
   BSOD_PAUSE (bst, 2000000);
-
+  BSOD_TEXT (bst, LEFT, "\b");
 
   for (i = 1; i <= 100; ++i)
     {
       char buf[100];
-      sprintf (buf, "\b\b\b\b\b\b\b\b\b\b\b%3d%% done", i);
+      sprintf (buf, "\r %3d%% done\033", i);
       BSOD_TEXT (bst, LEFT, buf);
       BSOD_PAUSE (bst, 100000);
     }
 
   BSOD_TEXT (bst, LEFT,
-    ": 2803 pages dumped, compression ratio 2.88, dump succeeded\n");
+    "\b: 2803 pages dumped, compression ratio 2.88, dump succeeded\n\033");
   BSOD_PAUSE (bst, 2000000);
 
   BSOD_TEXT (bst, LEFT,
-    "rebooting...\n"
-    "Resetting ...");
+    "\brebooting...\n"
+    "Resetting ...\n\033");
+
+  BSOD_PAUSE (bst, 3000000);
+
+  BSOD_INVERT(bst);
+  BSOD_RECT (bst, True,
+             bst->left_margin, bst->top_margin,
+             bst->xgwa.width - bst->left_margin - bst->right_margin,
+             bst->xgwa.height - bst->top_margin - bst->bottom_margin);
+  BSOD_INVERT(bst);
+  BSOD_MOVETO (bst, bst->left_margin, bst->top_margin + bst->font->ascent);
+  BSOD_PAUSE (bst, 1000000);
+
+  BSOD_TEXT (bst, LEFT,
+    "Starting real time clock...\n"
+    "Probing /sbus@1,f8000000 at 0,0  dma esp sd st le\n"
+    "Probing /sbus@1,f8000000 at 1,0  Invalid FCode start byte at ffe70000\n"
+    "Probing /sbus@1,f8000000 at 2,0  Invalid FCode start byte at ffe70000\n"
+    "Probing /sbus@1,f8000000 at 3,0  bwtwo\n"
+    "\n");
+
+  BSOD_PIXMAP (bst, 0, 0, pix_w, pix_h, ~0, ~0);
+  BSOD_MARGINS (bst,
+                bst->left_margin + char_width * 12,
+                bst->top_margin);
+  BSOD_TEXT (bst, LEFT,
+             "SPARCstation IPC, Keyboard Present\n"
+             "ROM Rev. 2.9, 16 MB memory installed, Serial #12648190.\n"
+             "Ethernet address 8:0:20:37:1:87, Host ID: 52c0fefe.\n");
+  BSOD_MARGINS (bst, bst->left_margin, bst->top_margin);
+
+  BSOD_TEXT (bst, LEFT, "\n\n\033");
+  BSOD_PAUSE (bst, 3000000);
+  BSOD_TEXT (bst, LEFT, "\r");
+
+  BSOD_TEXT (bst, LEFT, "Testing 16 megs of memory. Still to go \033 16");
+
+  for (i = 16; i > 0; i--)
+    {
+      char buf[100];
+      sprintf (buf, "\b\b%2d", i);
+      BSOD_TEXT (bst, LEFT, buf);
+      BSOD_PAUSE (bst, 100000);
+    }
+  BSOD_TEXT (bst, LEFT, "\b\b\b\b   0\n"
+             "Initializing  16 megs of memory at addr         0\033 16");
+  for (i = 16; i >= 0; i--)
+    {
+      char buf[100];
+      sprintf (buf, "\b\b%2d", i);
+      BSOD_TEXT (bst, LEFT, buf);
+      BSOD_PAUSE (bst, 30000);
+    }
+  BSOD_TEXT (bst, LEFT, "\r"
+             "                                                          \r"
+             "Boot device: /sbus/le@0,c00000   File and args:\n\033");
+
+  {
+    int n = (random() % 10);
+    for (i = 0; i < n; i++)
+      {
+        BSOD_PAUSE (bst, 3000000);
+        BSOD_TEXT (bst, LEFT, "\rTimeout waiting for ARP/RARP packet\n\033");
+      }
+  }
+  BSOD_TEXT (bst, LEFT, "\r");
+
+  BSOD_TEXT (bst, LEFT,
+    "Internal loopback test -- Wrong packet length;"
+      " expected 36, observed 1600\n"
+    "Can't open boot device\n"
+    "\n"
+    "Type b (boot), c (continue), or n (new command mode)\n"
+    ">");
+  BSOD_CURSOR (bst, CURSOR_BLOCK, 500000, 10);
+  BSOD_TEXT (bst, LEFT, "n\n");
+  BSOD_PAUSE (bst, 500000);
+  BSOD_TEXT (bst, LEFT, "Type  help  for more information\n"
+             "ok ");
+
+  BSOD_CURSOR (bst, CURSOR_BLOCK, 500000, 4);
+  BSOD_CHAR_DELAY (bst, 80000);
+  BSOD_TEXT (bst, LEFT, /* "test net" */
+             "t\033\be\033\bs\033\bt\033\b \033\bn\033\be\033\bt\033\b");
+  BSOD_CURSOR (bst, CURSOR_BLOCK, 500000, 2);
+  BSOD_TEXT (bst, LEFT, "\n\033");
+  BSOD_CHAR_DELAY (bst, 0);
+
+  BSOD_PAUSE (bst, 1000000);
+  BSOD_TEXT (bst, LEFT, "\r Lance register test -- succeeded.\n\033");
+  BSOD_PAUSE (bst, 1000000);
+  BSOD_TEXT (bst, LEFT, "\r Internal loopback test -- succeeded.\n\033");
+  BSOD_PAUSE (bst, 1000000);
+  BSOD_TEXT (bst, LEFT, "\r External loopback test -- succeeded.\n"
+             "ok ");
+  BSOD_CURSOR (bst, CURSOR_BLOCK, 500000, 8);
+
+  BSOD_TEXT (bst, LEFT, "\rok ");
+  BSOD_CURSOR (bst, CURSOR_BLOCK, 500000, 4);
+  BSOD_CHAR_DELAY (bst, 80000);
+  BSOD_TEXT (bst, LEFT, /* "boot cdrom" */
+     "b\033\bo\033\bo\033\bt\033\b \033\bc\033\bd\033\br\033\bo\033\bm\033\b");
+  BSOD_TEXT (bst, LEFT, "  \n");
+  BSOD_CHAR_DELAY (bst, 0);
+  BSOD_TEXT (bst, LEFT,
+    "\rBoot device: /sbus/esp@0,800000/sd@6,0:c    File and args:\n\033");
+  BSOD_PAUSE (bst, 1000000);
+  BSOD_TEXT (bst, LEFT,
+    "\rroot on   fstype 4.3\n"
+    "Boot: vmunix\n\033");
+
+  BSOD_TEXT (bst, LEFT, "\rSize: 696320+");
+  BSOD_CHAR_DELAY (bst, 5000);
+  BSOD_INVERT(bst);
+  BSOD_TEXT (bst, LEFT,  /* spinner */
+             "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+             "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+             "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+             "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+             "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+             "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+             "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+             "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+             "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+             "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+             "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+             "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+             "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+             "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+             "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/"
+             "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/" "\b-\b\\\b|\b/");
+  BSOD_INVERT(bst);
+  BSOD_TEXT (bst, LEFT, "\b+");
+  BSOD_CHAR_DELAY (bst, 0);
+  BSOD_TEXT (bst, LEFT,
+             "2218504+28056 bytes\n\033");
+  BSOD_PAUSE (bst, 1000000);
+
+  i = random() % 3;
+
+  if (i == 0)
+    {
+      BSOD_TEXT (bst, LEFT,
+        "\rSunOS Release 4.1.1 (MUNIX) #1: Thu Oct 11 11:22:48 PDT 1990\n"
+        "Copyright (c) 1983-1990, Sun Microsystems, Inc.\n"
+        "mem = 16384K (0x1000000)\n"
+        "avail mem = 12865536\n"
+        "Ethernet address = 8:0:20:37:1:87\n"
+        "No FPU in configuration\n"
+        "cpu = SUNW,Sun 4/40\n"
+        "zs0 at obio 0xf1000000 pri 12\n"
+        "zs1 at obio 0xf0000000 pri 12\n"
+        "sbus0 at SBus slot 0 0x0\n"
+        "dma0 at SBus slot 0 0x400000\n"
+        "esp0 at SBus slot 0 0x800000 pri 3\n"
+        "\033");
+    }
+  else if (i == 1)
+    {
+      BSOD_TEXT (bst, LEFT,
+        "\rSunOS Release 5.6 Version Generic [UNIX(R) System V Release 4.0]\n"
+        "Copyright (c) 1983-1997, Sun Microsystems, Inc.\n"
+        "No FPU in configuration\n"
+        "WARNING: kbd: Unknown keyboard type, Type 3 assumed.\n"
+        "WARNING: kbd: Unknown keyboard type, Type 3 assumed.\n"
+        "Configuring devices...\n"
+        "\033");
+      BSOD_PAUSE (bst, 1000000);
+      BSOD_TEXT (bst, LEFT,
+        "\rWARNING: /sbus@1,f8000000/esp@0,800000/sd@6,0 (sd6):\n"
+        "        incomplete read- retrying\n"
+        "\n"
+        "loadkeys: ioctl(KIOCLAYOUT): Invalid argument\n"
+        "\033");
+    }
+  else
+    {
+      BSOD_TEXT (bst, LEFT,
+        "\rSunOS Release 5.3 Version Generic [UNIX(R) System V Release 4.0]\n"
+        "Copyright (c) 1983-1993, Sun Microsystems, Inc.\n"
+        "No FPU in configuration\n"
+        "WARNING: /sbus@1,f8000000/esp@0,800000/sd@3,0 (sd3):\n"
+        "        corrupt label - wrong magic number\n"
+        "\n"
+        "\\       unexpected data phase\n\033");
+      for (i = 0; i < 3; i++)
+        {
+          BSOD_PAUSE (bst, 3000000);
+          if (i > 0)
+            BSOD_TEXT (bst, LEFT,
+                       "\r        polled command timeout\n");
+          BSOD_TEXT (bst, LEFT,
+           "\resp:         State=DATA Last State=UNKNOWN\n"
+           "esp:         Latched stat=0x11<XZERO,IO> intr=0x10<BUS,FCMO>"
+                   " fifo 0x0\n"
+           "esp:         lst msg out: IDENTIFY; lst msg in: COMMAND COMPLETE\n"
+           "esp:         DMA csr=0x10<INTEN>\n"
+           "esp:         addr=fff0100f dmacnt=8000 last=fff01008 last_cnt=7\n"
+           "esp:         Cmd dump for Target 6 Lun 0:\n"
+           "esp:         cdblen=6, cdb=[ 0x0 0x0 0x0 0x0 0x1 0x0 ]\n"
+           "esp:         pkt_state 0x3<SEL,ARB> pkt_flags 0x10000"
+                   " pkt_statistics 0x0\n"
+           "esp:         cmd_flags=0x10022 cmd_timeout=120\n"
+           "\033");
+        }
+      BSOD_PAUSE (bst, 3000000);
+      BSOD_TEXT (bst, LEFT,
+        "\rWARNING: /sbus@1,f8000000/esp@0,800000/sd@6,0 (sd6):\n"
+        "        incomplete read- retrying\n"
+        "\n"
+        "loadkeys: ioctl(KIOCLAYOUT): Invalid argument\n"
+        "\033");
+  }
+
+  BSOD_PAUSE (bst, 1000000);
+  BSOD_TEXT (bst, LEFT,
+    "\rsd1 at esp0 target 1 lun 0\n"
+    "sd1:    corrupt label - wrong magic number\n"
+    "sd1: Vendor ' SEAGAT', product ' ', 786432 512 byte blocks\n"
+    "sr0: Unrecongized vendor 'Sony    ',"
+      " product 'CDU-76S        'sr0 at esp0 target 6 lun 0\n"
+    "le0 at SBus slot 0 0xc00000 pri 5\n"
+    "fd0 at obio 0xf7200000 pri 11\n\033");
+  BSOD_PAUSE (bst, 1000000);
+  BSOD_TEXT (bst, LEFT,
+    "\rrd0: using preloaded munixfs\n"
+    "WARNING: TOD clock not initialized -- CHECK AND RESET THE DATE!\n"
+    "root on rd0a fstype 4.2\n"
+    "swap on ns0b fstype spec size 12480K\n"
+    "dump on ns0b fstype spec size 12468K\n"
+    "\033");
+  BSOD_PAUSE (bst, 4000000);
+
+  i = random() % 3;
+
+  if (i == 0)
+    {
+      BSOD_TEXT (bst, LEFT,
+        "\rStarting OpenWindows...\n"
+        "\n"
+        "\n"
+        "waiting for X server to begin accepting connections \033");
+      BSOD_PAUSE (bst, 2500000);
+      BSOD_TEXT (bst, LEFT, "\b.\033");
+      BSOD_PAUSE (bst, 2500000);
+      BSOD_TEXT (bst, LEFT, "\b \n.\033");
+      for (i = 0; i < 10; i++)
+        {
+          BSOD_PAUSE (bst, 2500000);
+          BSOD_TEXT (bst, LEFT, "\b.\033");
+          BSOD_PAUSE (bst, 2500000);
+          BSOD_TEXT (bst, LEFT, "\b \n.\033");
+        }
+    }
+  else if (i == 1)
+    {
+      BSOD_TEXT (bst, LEFT,
+        "\rCan't invoke /sbin/init, error 13\n"
+        "Can't invoke /etc/init, error 13\n"
+        "Can't invoke /bin/init, error 13\n"
+        "Can't invoke /usr/etc/init, error 13\n"
+        "Can't invoke /usr/bin/init, error 13\n"
+        "panic: icode\n"
+        "syncing file systems...\033");
+      BSOD_PAUSE (bst, 2000000);
+      BSOD_TEXT (bst, LEFT, "\b done\n");
+      BSOD_TEXT (bst, LEFT,
+        "00000 low-memory static kernel pages\n"
+        "00888 additional static and sysmap kernel pages\n"
+        "00000 dynamic kernel data pages\n"
+        "00008 additional user structure pages\n"
+        "00000 segmap kernel pages\n"
+        "00000 segvn kernel pages\n"
+        "00000 current user process pages\n"
+        "00000 user stack pages\n"
+        "00896 total pages (896 chunks)\n"
+        "\n"
+        "dumping to vp ff007dd4, offset 17768\n"
+        "0 total pages, dump failed: error 19\n"
+        "rebooting...\n");
+    }
+  else
+    {
+      BSOD_TEXT (bst, LEFT,
+        "\r  \n"
+        "What would you like to do?\n"
+        "  1 - install SunOS mini-root\n"
+        "  2 - exit to single user shell\n"
+        "Enter a 1 or 2: ");
+      BSOD_CURSOR (bst, CURSOR_BLOCK, 500000, 4);
+      BSOD_TEXT (bst, LEFT,
+                 "2\n"
+                 "you may restart this script by typing <cntl-D>\n# ");
+      BSOD_CURSOR (bst, CURSOR_BLOCK, 500000, 4);
+      BSOD_CHAR_DELAY (bst, 80000);
+      BSOD_TEXT (bst, LEFT, "l\033\bs\033\b");
+      BSOD_TEXT (bst, LEFT, "  \n");
+      BSOD_CHAR_DELAY (bst, 0);
+      BSOD_TEXT (bst, LEFT,
+        ".MUNIXFS        bin             extract         stand\n"
+        ".profile        dev             lib             tmp\n"
+        "README          etc             sbin            usr\n"
+        "# ");
+      BSOD_CURSOR (bst, CURSOR_BLOCK, 500000, 4);
+      BSOD_CHAR_DELAY (bst, 80000);
+      BSOD_TEXT (bst, LEFT, /* ". extract" */
+        ".\033\b \033\be\033\bx\033\bt\033\br\033\ba\033\bc\033\bt\033\b");
+      BSOD_TEXT (bst, LEFT, "  \n");
+      BSOD_CHAR_DELAY (bst, 0);
+      BSOD_TEXT (bst, LEFT,
+         "using cdrom partition number 2\n"
+         "esp0:    data transfer overrun\n"
+         "         State=DATA Last State=DATA_DNE\n"
+         "         Latched stat=0x11<XZERO,IO> intr=0x10<BUS> fifo 0x0\n"
+         "         lst msg out: EXTENDED; lst msg in: COMMAND COMPLETE\n"
+         "         DMA csr=0x10<INTEN>\n"
+         "         addr=fff026d0 last=fff024d0 last_count=200\n"
+         "         Cmd dump for Target 6 Lun 0:\n"
+         "         cdb=[ 0x8 0x0 0x0 0x0 0x1 0x0 ]\n"
+         "         pkt_state 0xf<XFER,CMD,SEL,ARB> pkt_flags 0x0"
+                 " pkt_statistics 0x0\n"
+         "         Mapped Dma Space:\n"
+         "                 Base = 0x24d0 Count = 0x200\n"
+         "         Transfer History:\n"
+         "                 Base = 0x24d0 Count = 0x200\n");
+    }
+
+  BSOD_CURSOR (bst, CURSOR_BLOCK, 500000, 8);
+
+  XClearWindow(dpy, window);
 
   return bst;
 }
@@ -5023,6 +5430,122 @@ apple2ransomware (Display *dpy, Window window)
 
 
 
+static void
+a2controller_encom (apple2_sim_t *sim, int *stepno,
+                    double *next_actiontime)
+{
+  apple2_state_t *st=sim->st;
+
+  struct mydata {
+    const char *str;
+    Bool bold_p;
+  } *mine;
+
+  if (!sim->controller_data)
+    sim->controller_data = calloc(sizeof(struct mydata),1);
+  mine=(struct mydata *) sim->controller_data;
+
+  switch(*stepno) {
+  case 0:
+
+    st->gr_mode |= A2_GR_FULL;
+    a2_cls(st);
+    a2_goto(st,0,35);
+    a2_prints(st, "ENCOM");
+    a2_goto(st,23,0);
+    *stepno = 10;
+    *next_actiontime += 6;
+    break;
+
+  case 10:
+    a2_cls(st);
+    a2_goto(st,0,0);
+    *stepno = 11;
+    *next_actiontime += 1;
+    break;
+
+  case 11:
+    a2_goto(st, 1, 0);
+    *stepno = 12;
+    mine->str = ("\n"
+                 "\r\n"
+                 "\r\n"
+                 "\r\n"
+                 "\r\n"
+                 "\r\n"
+                 "\r\n"
+                 "\r\n"
+                 "\r\n"
+                 "SEPT 22, 18:32:21 PM\n"
+                 "\n"
+                 "         YOUR ACCESS SUSPENDED\n"
+                 "         PLEASE REPORT TO DILLINGER\n"
+                 "         IMMEDIATELY\n"
+                 "         AUTHORIZATION: MASTER CONTROL\n"
+                 "         PROGRAM\n"
+                 "\n"
+                 "\r\r\r\r\r"
+                 "         END OF LINE\n"
+                 "\n"
+                 "\n"
+                 "\n"
+                 "\n");
+    break;
+
+  case 12:
+    {
+      char c = *mine->str;
+      mine->str++;
+
+      if (c == 0)
+        {
+          *next_actiontime += 30;
+          *stepno = 0;
+        }
+      else
+        {
+          if (c == '\r')
+            *next_actiontime += 0.2;
+          if (mine->bold_p)
+            c |= 0xC0;
+          a2_printc_noscroll(st, c);
+        }
+    }
+    break;
+
+  case A2CONTROLLER_FREE:
+    return;
+  }
+}
+
+
+static int
+a2_encom_draw (struct bsod_state *bst)
+{
+  apple2_sim_t *sim = (apple2_sim_t *) bst->closure;
+  if (! sim) {
+    sim = apple2_start (bst->dpy, bst->window, 9999999,
+                        a2controller_encom);
+    bst->closure = sim;
+  }
+
+  if (! apple2_one_frame (sim)) {
+    bst->closure = 0;
+  }
+
+  return 10000;
+}
+
+static struct bsod_state *
+encom (Display *dpy, Window window)
+{
+  struct bsod_state *bst = make_bsod_state (dpy, window, "encom", "Encom");
+  bst->draw_cb = a2_encom_draw;
+  bst->free_cb = a2_free;
+  return bst;
+}
+
+
 /* A crash spotted on a cash machine circa 2006, by jwz.  I didn't note
    what model it was; probably a Tranax Mini-Bank 1000 or similar vintage.
  */
@@ -5080,6 +5603,56 @@ atm (Display *dpy, Window window)
 }
 
 
+static struct bsod_state *
+dvd (Display *dpy, Window window)
+{
+  struct bsod_state *bst = make_bsod_state (dpy, window, "dvd", "DVD");
+  int pix_w, pix_h;
+  float scale = 0.15;
+  Pixmap mask = 0;
+  Pixmap pixmap = image_data_to_pixmap (dpy, window,
+                                        dvd_png, sizeof(dvd_png),
+                                        &pix_w, &pix_h, &mask);
+  int i = 0;
+  int x, y, dx, dy;
+  int steps = 10000;
+
+  XClearWindow (dpy, window);
+
+  while (pix_w <= bst->xgwa.width  * scale &&
+         pix_h <= bst->xgwa.height * scale)
+    {
+      pixmap = double_pixmap (dpy, bst->xgwa.visual, bst->xgwa.depth,
+                              pixmap, pix_w, pix_h);
+      mask = double_pixmap (dpy, bst->xgwa.visual, 1, mask, pix_w, pix_h);
+      pix_w *= 2;
+      pix_h *= 2;
+      i++;
+    }
+
+  bst->pixmap = pixmap;
+  bst->mask = mask;
+  x = random() % (bst->xgwa.width  - pix_w);
+  y = random() % (bst->xgwa.height - pix_h);
+  dx = random() & 1 ? 1 : -1;
+  dy = random() & 1 ? 1 : -1;
+
+  BSOD_INVERT(bst);
+  for (i = 0; i < steps; i++)
+    {
+      BSOD_RECT (bst, True, x, y, pix_w, pix_h);
+      if (x + dx < 0 || x + dx + pix_w > bst->xgwa.width)  dx = -dx;
+      if (y + dy < 0 || y + dy + pix_h > bst->xgwa.height) dy = -dy;
+      x += dx;
+      y += dy;
+      BSOD_PIXMAP (bst, 0, 0, pix_w, pix_h, x, y);
+      BSOD_PAUSE (bst, 1000000 / 30.0);
+    }
+
+  return bst;
+}
+
+
 /* An Android phone boot loader, by jwz.
  */
 static struct bsod_state *
@@ -5355,6 +5928,8 @@ static const struct {
   { "GLaDOS",          glados },
   { "Android",         android },
   { "VMware",          vmware },
+  { "Encom",           encom },
+  { "DVD",             dvd },
 };
 
 
@@ -5385,6 +5960,7 @@ hack_title (struct driver_state *dst)
     XStoreName (dst->bst->dpy, dst->bst->window, nname);
     free (nname);
   }
+  if (oname) free (oname);
 # endif /* !HAVE_JWXYZ */
 }
 
@@ -5673,6 +6249,8 @@ static const char *bsod_defaults [] = {
   "*doGLaDOS:             True",
   "*doAndroid:            True",
   "*doVMware:             True",
+  "*doEncom:              True",
+  "*doDVD:                True",
 
   ".foreground:                   White",
   ".background:                   Black",
@@ -6000,6 +6578,10 @@ static const XrmOptionDescRec bsod_options [] = {
   { "-no-android",     ".doAndroid",           XrmoptionNoArg,  "False" },
   { "-vmware",         ".doVMware",            XrmoptionNoArg,  "True"  },
   { "-no-vmware",      ".doVMware",            XrmoptionNoArg,  "False" },
+  { "-encom",          ".doEncom",             XrmoptionNoArg,  "True"  },
+  { "-no-encom",       ".doEncom",             XrmoptionNoArg,  "False" },
+  { "-dvd",            ".doDVD",               XrmoptionNoArg,  "True"  },
+  { "-no-dvd",         ".doDVD",               XrmoptionNoArg,  "False" },
   ANALOGTV_OPTIONS
   { 0, 0, 0, 0 }
 };
index 9cb2678d2bed0c1d6efe4194702b9f10947e29c1..eefe048320e7f9c0420dfad638ca79d00cb63a19 100644 (file)
@@ -129,7 +129,7 @@ struct state {
 
 #ifdef FANCY_BUBBLES
   int num_bubble_pixmaps;
-  Bubble_Step **step_pixmaps;
+  Bubble_Step **step_pixmaps, **def_list;
 #endif
 
   Bool simple;
@@ -1214,6 +1214,8 @@ default_to_pixmaps (struct state *st)
 
   init_default_bubbles();
 
+  st->def_list = (Bubble_Step **)xmalloc((num_default_bubbles + 1) * 
+                                        sizeof(Bubble_Step *));
   for (i = 0; i < num_default_bubbles; i++) {
     newpix = (Bubble_Step *)xmalloc(sizeof(Bubble_Step));
     make_pixmap_from_default(st,
@@ -1221,6 +1223,7 @@ default_to_pixmaps (struct state *st)
                              default_bubbles[i].size,
                              newpix);
     /* Now add to list */
+    st->def_list[i] = newpix;
     if (pixmap_list == (Bubble_Step *)NULL) {
       pixmap_list = newpix;
     } else {
@@ -1278,6 +1281,8 @@ get_resources(struct state *st)
   else
     fprintf (stderr, "%s: bogus mode: \"%s\"\n", progname, s);
 
+  if (s) free (s);
+
   st->trails = get_boolean_resource(st->dpy, "trails", "Boolean");
   st->drop_dir = (st->drop ? 1 : -1);
   if (st->drop || rise)
@@ -1427,10 +1432,39 @@ bubbles_event (Display *dpy, Window window, void *closure, XEvent *event)
   return False;
 }
 
+static void
+free_bubble (Display *dpy, Bubble_Step *b)
+{
+  if (b->ball) XFreePixmap (dpy, b->ball);
+  if (b->shape_mask) XFreePixmap (dpy, b->shape_mask);
+  if (b->draw_gc) XFreeGC (dpy, b->draw_gc);
+  if (b->erase_gc) XFreeGC (dpy, b->erase_gc);
+  free (b);
+}
+
 static void
 bubbles_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  int i;
+
+  /* #### The lifetime of objects in this program is fucking incomprehensible.
+     I give up. */
+
+  /* for (i = 0; i < num_default_bubbles; i++)
+    free_bubble (dpy, st->def_list[i]); */
+  for (i = 0; i < st->num_bubble_pixmaps; i++)
+    free_bubble (dpy, st->step_pixmaps[i]);
+  for (i = 0; i < st->mesh_cells; i++)
+    free (st->adjacent_list[i]);
+  /* for (i = 0; i < st->mesh_cells; i++)
+    free_bubble (dpy, st->mesh[i]); */
+  if (st->draw_gc) XFreeGC (dpy, st->draw_gc);
+  if (st->erase_gc) XFreeGC (dpy, st->erase_gc);
+  free (st->adjacent_list);
+  free (st->def_list);
+  free (st->step_pixmaps);
+  free (st->mesh);
   free (st);
 }
 
index fa728e6c0a247a6ae846f272fe06176d410ead58..d24ce00e9ead5504a26adf1e9e2c567dc9ff1774 100644 (file)
@@ -376,6 +376,8 @@ static void SetPalette(Display *dpy, SBumps *pBumps, XWindowAttributes *pXWinAtt
 #endif  /*  VERBOSE */
 
        XSetWindowBackground( pBumps->dpy, pBumps->Win, pBumps->aColors[ 0 ] );
+
+    if (sColor) free (sColor);
 }
 
 
@@ -418,6 +420,7 @@ static void InitBumpMap_2(Display *dpy, SBumps *pBumps)
        XClearWindow (pBumps->dpy, pBumps->Win);
        XSync (pBumps->dpy, 0);
 
+    if (pBumps->aBumpMap) free (pBumps->aBumpMap);
        pBumps->aBumpMap = malloc( pBumps->iWinWidth * pBumps->iWinHeight * sizeof(uint16_t) );
        
        nSoften = get_integer_resource(dpy,  "soften", "Integer" );
@@ -606,9 +609,12 @@ static void DestroySpotLight( SSpotLight *pSpotLight ) { free( pSpotLight->aLigh
 static void DestroyBumps( SBumps *pBumps )
 {
        DestroySpotLight( &pBumps->SpotLight );
+    free (pBumps->xColors);
        free( pBumps->aColors );
        free( pBumps->aBumpMap );
        destroy_xshm_image( pBumps->dpy, pBumps->pXImage, &pBumps->XShmInfo );
+    XFreeGC (pBumps->dpy, pBumps->GraphicsContext);
+    free(pBumps);
 }
 
 
index 23b53e84da9f2bfdb92344fa646cba5239c8ea19..a4423b2aff81382c84324e5e03145ea70aa63896 100644 (file)
@@ -733,6 +733,7 @@ ccurve_draw (Display *dpy, Window window, void *closure)
           {
        st->draw_segment_count
            = lengths [random () % (sizeof (lengths) / sizeof (int))];
+        if (st->draw_segments) free (st->draw_segments);
        st->draw_segments
            = (Segment*)(malloc ((st->draw_segment_count) * sizeof (Segment)));
        select_pattern (st->draw_segment_count, st->draw_segments);
@@ -839,6 +840,10 @@ ccurve_event (Display *dpy, Window window, void *closure, XEvent *event)
 static void
 ccurve_free (Display *dpy, Window window, void *closure)
 {
+  struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->context);
+  if (st->draw_segments) free (st->draw_segments);
+  free (st);
 }
 
 
index 890b3982a96d6a2b98c5c0d6bf3665e64b425802..232adb6db615f15973626877c3b24db2ea0d18dd 100644 (file)
@@ -911,6 +911,7 @@ celtic_init (Display *d_arg, Window w_arg)
 
 
   XGetWindowAttributes (st->dpy, st->window, &st->xgwa);
+  if (st->colors) free (st->colors);
   assert(st->colors = (XColor *) calloc (st->ncolors,sizeof(XColor)));
 
   if (get_boolean_resource(st->dpy, "mono", "Boolean"))
@@ -983,7 +984,8 @@ celtic_draw (Display *dpy, Window window, void *closure)
       pattern_del(st->pattern);
     }
     st->pattern = NULL;
-    graph_del(st->graph);
+    if (st->graph) graph_del(st->graph);
+    st->graph = NULL;
 
     /* recolor each time */
     st->ncolors = get_integer_resource (st->dpy, "ncolors", "Integer");
@@ -1124,6 +1126,13 @@ static void
 celtic_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->gc);
+  XFreeGC (dpy, st->shadow_gc);
+  XFreeGC (dpy, st->gc_graph);
+  if (st->pattern) pattern_del (st->pattern);
+  st->pattern = 0;
+  if (st->graph) graph_del (st->graph);
+  if (st->eraser) eraser_free (st->eraser);
   free (st);
 }
 
index 7a7d0bb5e35a3c4f2425fe16cedc7f7f757c0221..7cc60b4e1af209598e91b57445c02b06a482f487 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl -w
-# Copyright Â© 2008-2017 Jamie Zawinski <jwz@jwz.org>
+# Copyright Â© 2008-2018 Jamie Zawinski <jwz@jwz.org>
 #
 # Permission to use, copy, modify, distribute, and sell this software and its
 # documentation for any purpose is hereby granted without fee, provided that
@@ -21,7 +21,7 @@ use diagnostics;
 use strict;
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my ($version) = ('$Revision: 1.26 $' =~ m/\s(\d[.\d]+)\s/s);
+my ($version) = ('$Revision: 1.28 $' =~ m/\s(\d[.\d]+)\s/s);
 
 my $verbose = 0;
 my $debug_p = 0;
@@ -997,17 +997,17 @@ sub build_android(@) {
     $write_files{"$xml_dir/${saver_underscore}_wallpaper.xml"} = $wallpaper;
 
     $daydream_java .=
-      ("  public static class $saver_class extends org.jwz.xscreensaver.Daydream {\n" .
+      ("  public static class $saver_class extends $package.Daydream {\n" .
        "  }\n" .
        "\n");
 
     $wallpaper_java .=
-      ("  public static class $saver_class extends org.jwz.xscreensaver.Wallpaper {\n" .
+      ("  public static class $saver_class extends $package.Wallpaper {\n" .
        "  }\n" .
        "\n");
 
     $settings_java .=
-      ("  public static class $saver_class extends org.jwz.xscreensaver.Settings\n" .
+      ("  public static class $saver_class extends $package.Settings\n" .
        "    implements SharedPreferences.OnSharedPreferenceChangeListener {\n" .
        "  }\n" .
        "\n");
@@ -1035,7 +1035,7 @@ sub build_android(@) {
   $manifest .= "<activity android:name=\"$package.Settings\" />\n";
 
   $manifest .= ("<activity android:name=\"" .
-                "org.jwz.xscreensaver.Activity\"\n" .
+                "$package.Activity\"\n" .
                 "  android:theme=\"\@android:style/Theme.Holo\"\n" .
                 "  android:label=\"\@string/app_name\">\n" .
                 "  <intent-filter>\n" .
@@ -1056,7 +1056,7 @@ sub build_android(@) {
 
 
   $manifest .= ("<activity android:name=\"" .
-                "org.jwz.xscreensaver.TVActivity\"\n" .
+                "$package.TVActivity\"\n" .
                 "  android:theme=\"\@android:style/Theme.Holo\"\n" .
                 "  android:label=\"\@string/app_name\">\n" .
                 "  <intent-filter>\n" .
@@ -1091,7 +1091,7 @@ sub build_android(@) {
                "  android:versionCode=\"$versb\"\n" .
                "  android:versionName=\"$vers\">\n" .
 
-               "  <uses-sdk android:minSdkVersion=\"14\"" .
+               "  <uses-sdk android:minSdkVersion=\"16\"" .
                " android:targetSdkVersion=\"19\" />\n" .
 
                "  <uses-feature android:glEsVersion=\"0x00010001\"\n" .
@@ -1117,23 +1117,23 @@ sub build_android(@) {
                "  </application>\n" .
                "</manifest>\n");
 
-  $daydream_java = ("package org.jwz.xscreensaver.gen;\n" .
+  $daydream_java = ("package $package.gen;\n" .
                     "\n" .
-                    "import org.jwz.xscreensaver.jwxyz;\n" .
+                    "import $package.jwxyz;\n" .
                     "\n" .
                     "public class Daydream {\n" .
                     $daydream_java .
                     "}\n");
 
-  $wallpaper_java = ("package org.jwz.xscreensaver.gen;\n" .
+  $wallpaper_java = ("package $package.gen;\n" .
                      "\n" .
-                     "import org.jwz.xscreensaver.jwxyz;\n" .
+                     "import $package.jwxyz;\n" .
                      "\n" .
                      "public class Wallpaper {\n" .
                      $wallpaper_java .
                      "}\n");
 
-  $settings_java = ("package org.jwz.xscreensaver.gen;\n" .
+  $settings_java = ("package $package.gen;\n" .
                     "\n" .
                     "import android.content.SharedPreferences;\n" .
                     "\n" .
index 4b65f9e3fa3250543f60d47c95cdac3ab2fcb858..123dd13ce728b19861732b409ad97c97278e0f4c 100644 (file)
@@ -382,6 +382,11 @@ cloudlife_event (Display *dpy, Window window, void *closure, XEvent *event)
     {
       XClearWindow (dpy, window);
       st->cycles = 0;
+      if (st->field) {
+        free (st->field->cells);
+        free (st->field->new_cells);
+        free (st->field);
+      }
       st->field = init_field(st);
       return True;
     }
@@ -392,6 +397,12 @@ static void
 cloudlife_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  free (st->field->cells);
+  free (st->field->new_cells);
+  free (st->field);
+  free (st->colors);
+  XFreeGC (dpy, st->fgc);
+  XFreeGC (dpy, st->bgc);
   free (st);
 }
 
index 1dc1d3ea7a4ccbda961e9c9abf94dc6ca5f73bb2..1678ca90e1c773ef41a38c7dfcf097f8692fe413 100644 (file)
@@ -957,6 +957,18 @@ compass_event (Display *dpy, Window window, void *closure, XEvent *event)
 static void
 compass_free (Display *dpy, Window window, void *closure)
 {
+  struct state *st = (struct state *) closure;
+  int i;
+  XFreeGC (dpy, st->ptr_gc);
+  XFreeGC (dpy, st->erase_gc);
+  for (i = 0; i < 4; i++)
+    if (st->discs[i]) {
+      XFreeGC (dpy, st->discs[i]->gc);
+      free (st->discs[i]);
+    }
+  if (st->ba) XFreePixmap (dpy, st->ba);
+  if (st->bb) XFreePixmap (dpy, st->bb);
+  free (st);
 }
 
 \f
index c50e0f96d74698788c64f9352c5f3fd1d2f2277c..9fab007949d741fddc1f523ee17ef3d4bf3e00bf 100644 (file)
@@ -1,5 +1,6 @@
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ABSTRACTILE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANALOGTV.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANALOGTV-CLI.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANEMONE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANEMOTAXIS.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANT.C
index c50e0f96d74698788c64f9352c5f3fd1d2f2277c..9fab007949d741fddc1f523ee17ef3d4bf3e00bf 100644 (file)
@@ -1,5 +1,6 @@
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ABSTRACTILE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANALOGTV.C
+$ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANALOGTV-CLI.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANEMONE.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANEMOTAXIS.C
 $ CC/DECC/PREFIX=ALL/DEFINE=(VMS,HAVE_CONFIG_H,STANDALONE)/INCL=([],[-],[-.UTILS]) ANT.C
index 9771a89ca58c7e2ba2c92bce2db6317230b15832..93cc819dedd140e38dfb63e850bf4cb00766f9d4 100644 (file)
@@ -4,8 +4,8 @@
             a screen saver and locker for the X window system
                             by Jamie Zawinski
 
-                              version 5.40
-                               12-Aug-2018
+                              version 5.41
+                               26-Dec-2018
 
                      https://www.jwz.org/xscreensaver/
 
index ef18e2128b91cd3d5a209f1f1c76cd9aae2cf856..0d18218728209afa3ed2bf96de52ee476c6e2ff2 100644 (file)
    <boolean id="atari"      _label="Atari"          arg-set="-atari"/>
    <boolean id="macx"       _label="MacOS X"        arg-unset="-no-macx"/>
    <boolean id="os390"      _label="OS/390"         arg-unset="-no-os390"/>
+   <boolean id="encom"      _label="Encom"          arg-unset="-no-encom"/>
   </vgroup>
   <vgroup>
    <boolean id="vms"        _label="VMS"            arg-unset="-no-vms"/>
    <boolean id="hvx"        _label="HVX/GCOS6"      arg-unset="-no-hvx"/>
    <boolean id="blitdamage" _label="NCD X Terminal  " arg-unset="-no-blitdamage"/>
    <boolean id="atm"        _label="ATM"            arg-unset="-no-atm"/>
+   <boolean id="dvd"        _label="DVD"            arg-unset="-no-dvd"/>
   </vgroup>
   <vgroup>
    <boolean id="bsd"        _label="BSD"            arg-set="-bsd"/>
diff --git a/hacks/config/handsy.xml b/hacks/config/handsy.xml
new file mode 100644 (file)
index 0000000..2ff9608
--- /dev/null
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<screensaver name="handsy" _label="Handsy" gl="yes">
+
+  <command arg="-root"/>
+
+  <video href="https://www.youtube.com/watch?v=awI8EawYTdE"/>
+
+  <hgroup>
+   <vgroup>
+    <number id="delay" type="slider" arg="-delay %"
+            _label="Frame rate" _low-label="Low" _high-label="High"
+            low="0" high="100000" default="30000"
+            convert="invert"/>
+
+    <number id="speed" type="slider" arg="-speed %"
+            _label="Speed" _low-label="Slow" _high-label="Fast"
+            low="0.05" high="2.0" default="1.0"/>
+
+    <number id="count" type="slider" arg="-count %"
+            _label="Number of hands" _low-label="Two" _high-label="Many"
+            low="2" high="32" default="2"/>
+   </vgroup>
+
+   <vgroup>
+
+   <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
+   <select id="rotation">
+     <option id="no"  _label="Don't rotate"               arg-set="-spin 0"/>
+     <option id="x"   _label="Rotate around X axis"       arg-set="-spin X"/>
+     <option id="y"   _label="Rotate around Y axis"       arg-set="-spin Y"/>
+     <option id="z"   _label="Rotate around Z axis"       arg-set="-spin Z"/>
+     <option id="xy"  _label="Rotate around X and Y axes"/>
+     <option id="xz"  _label="Rotate around X and Z axes" arg-set="-spin XZ"/>
+     <option id="yz"  _label="Rotate around Y and Z axes" arg-set="-spin YZ"/>
+     <option id="xyz" _label="Rotate around all three axes"  arg-set="-spin XYZ"/>
+    </select>
+
+    <select id="facing">
+     <option id="front"   _label="Always face front"/>
+     <option id="nofront" _label="Spin all the way around" arg-set="-no-front"/>
+    </select>
+
+    <hgroup>
+     <boolean id="wire"    _label="Wireframe" arg-set="-wireframe"/>
+     <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+    </hgroup>
+
+    <xscreensaver-updater />
+   </vgroup>
+  </hgroup>
+
+  <_description>
+A set of robotic hands communicate non-verbally.
+
+Written by Jamie Zawinski; 2018.
+  </_description>
+</screensaver>
index 191e0419c9c5b662ceec9f0c26a798afc0ea3b74..8a2e1be95d5b65de68056c0d147bf9b19cea78cc 100644 (file)
@@ -24,8 +24,7 @@
 
     <number id="fluidity" type="slider" arg="-fluidity %"
             _label="Fluidity" _low-label="Small drops" _high-label="Big drops"
-            low="0" high="16" default="6"
-            convert="invert"/>
+            low="0" high="16" default="6"/>
    </vgroup>
    <vgroup>
 
index 7ef79ac6ecd2f6491101b69954affe69c6f8fbdf..073059978eaee05954b35b71050897ee7fbe0fb3 100644 (file)
@@ -4,7 +4,7 @@
 
   <command arg="-root"/>
 
-  <video href="https://www.youtube.com/watch?v=vuWhUxBq99E"/>
+  <video href="https://www.youtube.com/watch?v=DEWPiUbwnt0"/>
 
   <hgroup>
    <vgroup>
     <number id="count" type="slider" arg="-count %"
             _label="Scanlines" _low-label="Few" _high-label="Many"
             low="3" high="200" default="80"/>
-   </vgroup>
 
-   <vgroup>
     <number id="speed" type="slider" arg="-speed %"
             _label="Speed" _low-label="Slow" _high-label="Fast"
-            low="0.1" high="3.0" default="1.0"/>
+            low="0.1" high="20.0" default="1.0"/>
+   </vgroup>
 
+   <vgroup>
     <number id="resolution" type="slider" arg="-resolution %"
             _label="Resolution" _low-label="Low" _high-label="High"
             low="5" high="300" default="100"/>
+
+    <number id="amplitude" type="slider" arg="-amplitude %"
+            _label="Amplitude" _low-label="Low" _high-label="High"
+            low="0.01" high="0.25" default="0.13"/>
+
+    <number id="noise" type="slider" arg="-noise %"
+            _label="Noise" _low-label="Low" _high-label="High"
+            low="0.0" high="3.0" default="1.0"/>
    </vgroup>
   </hgroup>
 
   <hgroup>
    <boolean id="ortho" _label="Orthographic Projection" arg-unset="-no-ortho"/>
-   <boolean id="wire"    _label="Wireframe"              arg-set="-wireframe"/>
+   <boolean id="buzz"    _label="Buzz"                  arg-set="-buzz"/>
+   <boolean id="wire"    _label="Wireframe"             arg-set="-wireframe"/>
    <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
   </hgroup>
 
index 9cfcf50a4f032815fa2e6790281ce2c342dc7d19..f82f9ed3566642eebf390223e7c7108e376e73c8 100644 (file)
@@ -71,8 +71,10 @@ init_coral(struct state *st)
         st->ncolors = 0;
     }
     gcv.foreground = st->default_fg_pixel = get_pixel_resource(st->dpy, cmap, "foreground", "Foreground");
+    if (st->draw_gc) XFreeGC (st->dpy, st->draw_gc);
     st->draw_gc = XCreateGC(st->dpy, st->window, GCForeground, &gcv);
     gcv.foreground = get_pixel_resource (st->dpy, cmap, "background", "Background");
+    if (st->erase_gc) XFreeGC (st->dpy, st->erase_gc);
     st->erase_gc = XCreateGC (st->dpy, st->window, GCForeground, &gcv);
     st->ncolors = NCOLORSMAX;
     make_uniform_colormap(xgwa.screen, xgwa.visual, cmap,
@@ -283,6 +285,8 @@ coral_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
   free (st->pointbuf);
+  XFreeGC (dpy, st->draw_gc);
+  XFreeGC (dpy, st->erase_gc);
   if (st->walkers) free (st->walkers);
   if (st->board) free (st->board);
   free (st);
index 81fd0c1a1056547e789302e5082bb4f03541f596..d716fc6e1d0a9ec62554df8ef22e1c36d6e5b614 100644 (file)
@@ -198,7 +198,7 @@ static void
 setup_colormap (struct state *st, XColor **colors, int *n_colors)
 {
   Bool                 writable;
-  char const *         color_scheme;
+  char *               color_scheme;
 
   /* Make a colormap */
   *n_colors = get_integer_resource (st->dpy, "ncolors", "Integer");
@@ -237,6 +237,7 @@ setup_colormap (struct state *st, XColor **colors, int *n_colors)
                             *colors, n_colors, True,
                             &writable, True);
     }
+  if (color_scheme) free (color_scheme);
 }
 
 
@@ -421,6 +422,12 @@ static void
 critical_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->fgc);
+  XFreeGC (dpy, st->bgc);
+  free (st->model->cells);
+  free (st->model);
+  free (st->history);
+  free (st->d_colors);
   free (st);
 }
 
index 20dd80abc0959d83885b49d83079fba3ade93742..b032626e7ec76c9e91e09c0b9247962a5eb1a439 100644 (file)
@@ -182,6 +182,11 @@ cwaves_event (Display *dpy, Window window, void *closure, XEvent *event)
 static void
 cwaves_free (Display *dpy, Window window, void *closure)
 {
+  state *st = (state *) closure;
+  XFreeGC (dpy, st->gc);
+  free (st->colors);
+  free (st->waves);
+  free (st);
 }
 
 
index 8b8b85b94915d9de156885c8ea2967f5ce4da6eb..3eaa397c8b9cd941e7b18405a6611322dd02861b 100644 (file)
@@ -409,6 +409,11 @@ static void
 cynosure_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->fg_gc);
+  XFreeGC (dpy, st->bg_gc);
+  XFreeGC (dpy, st->shadow_gc);
+  if (st->colors)  free (st->colors);
+  if (st->colors2) free (st->colors2);
   free (st);
 }
 
index 8b45af9e675846d56e0f201ec2f017afc2fec065..6b2a4cbe5f4a26472db08f0f78f89f2026237b05 100644 (file)
@@ -122,6 +122,7 @@ decayscreen_init (Display *dpy, Window window)
     st->random_p = 1;
     st->mode = random() % (FUZZ+1);
   }
+  if (s) free (s);
 
   st->delay = get_integer_resource (st->dpy, "delay", "Integer");
   if (st->delay < 0) st->delay = 0;
@@ -361,6 +362,7 @@ static void
 decayscreen_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->gc);
   free (st);
 }
 
index 876badca6a18f11efc99bc61db9eeb96e5051a7d..cebed2c926a1d34606c42430506b6b53cccdc857 100644 (file)
@@ -297,6 +297,8 @@ static void
 deco_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->fgc);
+  XFreeGC (dpy, st->bgc);
   free (st);
 }
 
index 694a982a6007f6d08aaef1dd598b8040e2ec003d..5fd7eb79dcf6b5a81c4b008877c5c5b1155cc5b1 100644 (file)
@@ -423,6 +423,20 @@ deluxe_event (Display *dpy, Window window, void *closure, XEvent *event)
 static void
 deluxe_free (Display *dpy, Window window, void *closure)
 {
+  struct state *st = (struct state *) closure;
+  int i;
+  XFreeGC (dpy, st->erase_gc);
+  if (st->ba) XFreePixmap (dpy, st->ba);
+  if (st->bb) XFreePixmap (dpy, st->bb);
+  if (st->plane_masks) free (st->plane_masks);
+  for (i = 0; i < st->count; i++)
+    if (st->throbbers[i]) {
+      XFreeGC (dpy, st->throbbers[i]->gc);
+      free (st->throbbers[i]);
+    }
+  free (st->throbbers);
+  free (st->colors);
+  free (st);
 }
 
 
index ba812792aedd81774b35287db2183b22bfa7ada9..a3586cfa0ccd3dad57a45d39dff7f1ee7957a762 100644 (file)
@@ -74,6 +74,7 @@ struct state {
   int ***from;
   int ****from_array;
   int *fast_from;
+  int from_size;
 
   int bpp_size;
 
@@ -140,6 +141,7 @@ distort_reset (struct state *st)
       ;
     else if (s && *s)
       fprintf(stderr,"%s: bogus effect: %s\n", progname, s);
+    if (s) free (s);
 
        if (st->effect == NULL && st->radius == 0 && st->speed == 0 && st->number == 0
                && !st->blackhole && !st->vortex && !st->magnify && !st->reflect) {
@@ -307,9 +309,11 @@ distort_finish_loading (struct state *st)
     XClearWindow (st->dpy, st->window);
     XCopyArea (st->dpy, st->pm, st->window, st->gc, 
                0, 0, st->xgwa.width, st->xgwa.height, 0, 0);
+    if (st->orig_map) XDestroyImage (st->orig_map);
        st->orig_map = XGetImage(st->dpy, st->pm, 0, 0,
                              st->xgwa.width, st->xgwa.height,
                              ~0L, ZPixmap);
+    if (st->buffer_map_cache) free (st->buffer_map_cache);
        st->buffer_map_cache = malloc(sizeof(unsigned long)*(2*st->radius+st->speed+2)*(2*st->radius+st->speed+2));
 
        if (st->buffer_map_cache == NULL) {
@@ -317,6 +321,8 @@ distort_finish_loading (struct state *st)
                exit(EXIT_FAILURE);
        }
 
+    if (st->buffer_map)
+      destroy_xshm_image (st->dpy, st->buffer_map, &st->shm_info);
        st->buffer_map = create_xshm_image(st->dpy, st->xgwa.visual, st->orig_map->depth,
                                           ZPixmap, &st->shm_info,
                                           2*st->radius + st->speed + 2,
@@ -377,6 +383,7 @@ static void convert(struct state *st)
 {
        int *p;
        int i, j;
+    if (st->fast_from) free (st->fast_from);
        st->fast_from = calloc(1, sizeof(int)*((st->buffer_map->bytes_per_line/st->bpp_size)*(2*st->radius+st->speed+2) + 2*st->radius+st->speed+2));
        if (st->fast_from == NULL) {
                perror("distort");
@@ -478,6 +485,17 @@ static void allocate_lense(struct state *st)
         * then pointers could be used instead of arrays in some places (and
         * maybe give a speedup - maybe also consume less memory)
         */
+    if (st->from) {
+      for (i = 0; i < st->from_size; i++)
+               if (st->from[i]) {
+          for (j = 0; j < st->from_size; j++) {
+            if (st->from[i][j]) free (st->from[i][j]);
+          }
+          free (st->from[i]);
+        }
+      free (st->from);
+    }
+    st->from_size = s;
        st->from = (int ***)malloc(s*sizeof(int **));
        if (st->from == NULL) {
                perror("distort");
@@ -508,6 +526,7 @@ static void init_round_lense(struct state *st)
        int k;
 
        if (st->effect == &swamp_thing) {
+        if (st->from_array) free (st->from_array);
                st->from_array = (int ****)malloc((st->radius+1)*sizeof(int ***));
                for (k=0; k <= st->radius; k++) {
                        allocate_lense(st);
@@ -796,13 +815,27 @@ static void
 distort_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  int i, j;
   XFreeGC (st->dpy, st->gc);
   if (st->pm) XFreePixmap (dpy, st->pm);
   if (st->orig_map) XDestroyImage (st->orig_map);
-  if (st->buffer_map) destroy_xshm_image (st->dpy, st->buffer_map, &st->shm_info);
-  if (st->from) free (st->from);
+  if (st->buffer_map)
+    destroy_xshm_image (st->dpy, st->buffer_map, &st->shm_info);
   if (st->fast_from) free (st->fast_from);
   if (st->from_array) free (st->from_array);
+  if (st->buffer_map_cache) free (st->buffer_map_cache);
+
+  if (st->from) {
+    for (i = 0; i < st->from_size; i++)
+      if (st->from[i]) {
+        for (j = 0; j < st->from_size; j++) {
+          if (st->from[i][j]) free (st->from[i][j]);
+        }
+        free (st->from[i]);
+      }
+    free (st->from);
+  }
+
   free (st);
 }
 
index 89fab0b26f073c645adef703aeb55cad75e9b553..a8a257cc012e5628b96d89941de0f9e6a279154e 100644 (file)
@@ -788,6 +788,10 @@ static void
 epicycle_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  if (st->eraser) eraser_free (st->eraser);  
+  if (st->pb0) delete_body (st->pb0);
+  XFreeGC (dpy, st->color0);
+  free (st->colors);
   free (st);
 }
 
index 629cb8e1e5d2654e4b38a821212543f452bf7878..3f68cf7cb0f0b03ad19fedae3e03bf327f7600d4 100644 (file)
@@ -482,15 +482,16 @@ eruption_event (Display *dpy, Window window, void *closure, XEvent *event)
 static void
 eruption_free (Display *dpy, Window window, void *closure)
 {
-#if 0
   struct state *st = (struct state *) closure;
-       XDestroyImage( st->pImage );
-       free( st->aiColorVals );
-       for (i = 0; i < st->iWinHeight; ++i)
-         free( st->fire[i] );
-       free( st->fire );
-       free( st->particles );
-#endif
+  int i;
+  XDestroyImage (st->pImage);
+  free (st->aiColorVals);
+  for (i = 0; i < st->iWinHeight; ++i)
+    free (st->fire[i]);
+  free (st->fire);
+  free (st->particles);
+  XFreeGC (dpy, st->gc);
+  free (st);
 }
 
 
index ef021e1a7ecbec84f6063b19163e1a846eaee5e2..25b64c4e2513f04477130605efc3b7e90693e921 100644 (file)
@@ -53,6 +53,7 @@ filmleader_init (Display *dpy, Window window)
 {
   struct state *st = (struct state *) calloc (1, sizeof(*st));
   XGCValues gcv;
+  char *s;
 
   st->dpy = dpy;
   st->window = window;
@@ -105,15 +106,15 @@ filmleader_init (Display *dpy, Window window)
 
   st->xftdraw = XftDrawCreate (dpy, st->pix, st->xgwa.visual,
                                st->xgwa.colormap);
-  st->font = load_xft_font_retry (dpy, screen_number (st->xgwa.screen),
-                                  get_string_resource (dpy, "numberFont",
-                                                       "Font"));
-  st->font2 = load_xft_font_retry (dpy, screen_number (st->xgwa.screen),
-                                   get_string_resource (dpy, "numberFont2",
-                                                        "Font"));
-  st->font3 = load_xft_font_retry (dpy, screen_number (st->xgwa.screen),
-                                   get_string_resource (dpy, "numberFont3",
-                                                        "Font"));
+  s = get_string_resource (dpy, "numberFont", "Font");
+  st->font = load_xft_font_retry (dpy, screen_number (st->xgwa.screen), s);
+  if (s) free (s);
+  s = get_string_resource (dpy, "numberFont2", "Font");
+  st->font2 = load_xft_font_retry (dpy, screen_number (st->xgwa.screen), s);
+  if (s) free (s);
+  s = get_string_resource (dpy, "numberFont3", "Font");
+  st->font3 = load_xft_font_retry (dpy, screen_number (st->xgwa.screen), s);
+  if (s) free (s);
 
   st->bg = get_pixel_resource (dpy, st->xgwa.colormap,
                                "textBackground", "Background");
@@ -124,12 +125,15 @@ filmleader_init (Display *dpy, Window window)
   st->trace_color = get_pixel_resource (dpy, st->xgwa.colormap,
                                         "traceColor", "Foreground");
 
-  XftColorAllocName (dpy, st->xgwa.visual, st->xgwa.colormap,
-                     get_string_resource (dpy, "textColor", "Foreground"),
+  s = get_string_resource (dpy, "textColor", "Foreground");
+  XftColorAllocName (dpy, st->xgwa.visual, st->xgwa.colormap, s,
                      &st->xft_text_color_1);
-  XftColorAllocName (dpy, st->xgwa.visual, st->xgwa.colormap,
-                     get_string_resource (dpy, "textBackground", "Background"),
+  if (s) free (s);
+
+  s = get_string_resource (dpy, "textBackground", "Background");
+  XftColorAllocName (dpy, st->xgwa.visual, st->xgwa.colormap, s,
                      &st->xft_text_color_2);
+  if (s) free (s);
 
   return st;
 }
@@ -512,6 +516,7 @@ filmleader_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
   analogtv_release (st->tv);
+  free (st->inp);
   XftDrawDestroy (st->xftdraw);
   XftColorFree(dpy, st->xgwa.visual, st->xgwa.colormap, &st->xft_text_color_1);
   XftColorFree(dpy, st->xgwa.visual, st->xgwa.colormap, &st->xft_text_color_2);
index faf3745e23a160240ba3f391e85c20861ee86efe..57ba1280715539dd664bd9dde9d0f5a42a9c3f42 100644 (file)
@@ -571,11 +571,13 @@ static void resize(struct state *st)
        XSync(st->dpy, 0);
        if (st->xim)
        {
-               if (st->xim->data == (char *)st->palaka2) st->xim->data = NULL;
+               /* if (st->xim->data == (char *)st->palaka2) */
+                st->xim->data = NULL;
                XDestroyImage(st->xim);
                XSync(st->dpy, 0);
                free(st->mem2);
                free(st->mem1);
+                st->xim = 0;
        }
        st->xim = XCreateImage(st->dpy, xwa.visual, xwa.depth, ZPixmap, 0, 0,
                               st->width, st->height, 8, 0);
@@ -841,6 +843,14 @@ fireworkx_free (Display *dpy, Window window, void *closure)
        free(st->mem1);
        free(st->fireshell_array->fpix);
        free(st->fireshell_array);
+        if (st->xim) {
+          st->xim->data = NULL;
+          XDestroyImage (st->xim);
+        }
+       if (st->light_map) free(st->light_map);
+        if (st->colors) free (st->colors);
+        XFreeGC (dpy, st->gc);
+        free(st);
 }
 
 static const char *fireworkx_defaults [] =
index f12c0bc28d389af1cbf07212888e55045b357786..ca58ed8b378c134550c19f6bdeee08721cf4812e 100644 (file)
@@ -196,8 +196,9 @@ make_flag_bits(ModeInfo *mi)
   char *bitmap_name = get_string_resource (dpy, "bitmap", "Bitmap");
   char *text = get_string_resource (dpy, "text", "Text");
 
-#ifdef HAVE_JWXYZ
-  bitmap_name = 0;  /* #### always use default */
+#ifdef HAVE_JWXYZ  /* always use default */
+  if (bitmap_name) free (bitmap_name);
+  bitmap_name = 0;
 #endif
 
   /* If neither a bitmap nor text are specified, randomly select either
@@ -228,6 +229,7 @@ make_flag_bits(ModeInfo *mi)
                                &width, &height, 0);
          if (bitmap)
                {
+          if (fp->image) XDestroyImage (fp->image);
                  fp->image = XGetImage(dpy, bitmap, 0, 0, width, height, ~0L,
                                                                ZPixmap);
                  XFreePixmap(dpy, bitmap);
@@ -256,6 +258,7 @@ make_flag_bits(ModeInfo *mi)
                  struct utsname uts;
                  if (uname (&uts) < 0)
                        {
+              if (text) free (text);
                          text = strdup("uname() failed");
                        }
                  else
@@ -263,6 +266,7 @@ make_flag_bits(ModeInfo *mi)
                          char *s;
                          if ((s = strchr(uts.nodename, '.')))
                                *s = 0;
+              if (text) free (text);
                          text = (char *) malloc(strlen(uts.nodename) +
                                                                         strlen(uts.sysname) +
                                                                         strlen(uts.version) +
@@ -280,11 +284,14 @@ make_flag_bits(ModeInfo *mi)
                   char *s, buf[255];
 
                   while (fgets (buf, sizeof(buf)-1, f)) {
-#                   define GRAB(S,V)                                   \
-                    if (strstr(buf, S)) {                                      \
-                      fgets (buf, sizeof(buf)-1, f);                   \
-                      if ((s = strchr (buf, '>'))) V = strdup(s+1);    \
-                      if ((s = strchr (V, '<'))) *s = 0;                       \
+#                   define GRAB(S,V)                                    \
+                    if (strstr(buf, S)) {                               \
+                      fgets (buf, sizeof(buf)-1, f);                    \
+                      if ((s = strchr (buf, '>'))) {                    \
+                        if (V) free (V);                                \
+                        V = strdup(s+1);                                \
+                      }                                                 \
+                      if ((s = strchr (V, '<'))) *s = 0;                \
                     }
                     GRAB ("ProductName", pn)
                     GRAB ("ProductBuildVersion", pbv)
@@ -298,6 +305,9 @@ make_flag_bits(ModeInfo *mi)
                 else
                   sprintf(text, "%s\n%s %s",
                           uts.nodename, uts.sysname, uts.release);
+                if (pbv) free (pbv);
+                if (pn) free (pn);
+                if (puvv) free (puvv);
               }
 # else
                          sprintf(text, "%s\n%s %s",
@@ -305,6 +315,7 @@ make_flag_bits(ModeInfo *mi)
 # endif /* special system types */
                        }
 #else  /* !HAVE_UNAME */
+          if (text) free (text);
 # ifdef VMS
                  text = strdup(getenv("SYS$NODE"));
 # else
@@ -320,8 +331,9 @@ make_flag_bits(ModeInfo *mi)
 
          text2 = strdup(text);
 
-         if (!fn) fn = def_fn;
+         if (!fn) fn = strdup (def_fn);
       font = load_font_retry (dpy, fn);
+      free (fn);
 
          memset(&overall, 0, sizeof(overall));
          token = text;
@@ -371,10 +383,10 @@ make_flag_bits(ModeInfo *mi)
                  lines++;
                }
          free(text2);
-         XUnloadFont(dpy, font->fid);
-         XFree((XPointer) font);
+         XFreeFont(dpy, font);
          XFreeGC(dpy, gc);
 
+      if (fp->image) XDestroyImage (fp->image);
          fp->image = XGetImage(dpy, bitmap, 0, 0, width, height, 1L, XYPixmap);
          XFreePixmap(dpy, bitmap);
        }
@@ -420,6 +432,7 @@ make_flag_bits(ModeInfo *mi)
   int w = flag_width;
   int h = flag_height;
   int i = 0;
+  if (fp->image) XDestroyImage (fp->image);
   fp->image =
        XCreateImage(MI_DISPLAY(mi), MI_VISUAL(mi),
                                 1, XYBitmap, 0,                                        /* dpth, fmt, offset */
@@ -543,15 +556,10 @@ draw_flag(ModeInfo * mi)
 ENTRYPOINT void
 free_flag(ModeInfo * mi)
 {
-       int         screen = MI_SCREEN(mi);
-
-       if (flags == NULL)
-               return;
-
-       if (flags[screen].cache && flags[screen].dbufp)
-               XFreePixmap(MI_DISPLAY(mi), flags[screen].cache);
-       if (flags[screen].image)
-         XDestroyImage(flags[screen].image);
+       flagstruct *fp = &flags[MI_SCREEN(mi)];
+       if (fp->cache && fp->dbufp)
+               XFreePixmap(MI_DISPLAY(mi), fp->cache);
+       if (fp->image) XDestroyImage(fp->image);
 }
 
 #ifndef STANDALONE
index 7b590563f20c4eb249a2630ced15fd2a2f322612..f7e9833e1d12217fbf93b6a07d0ef66e2b79fc77 100644 (file)
@@ -459,6 +459,8 @@ static void
 flame_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->gc);
+  free (st->colors);
   free (st);
 }
 
index 92730825c79cd172d4475b178630cfd06835bf57..533ee2d6010cda80f1de01b6952d63b035d5507c 100644 (file)
@@ -800,6 +800,17 @@ static void
 fluidballs_free (Display *dpy, Window window, void *closure)
 {
   b_state *state = (b_state *) closure;
+  XFreeGC (dpy, state->draw_gc);
+  XFreeGC (dpy, state->draw_gc2);
+  XFreeGC (dpy, state->erase_gc);
+  free (state->m);
+  free (state->r);
+  free (state->vx);
+  free (state->vy);
+  free (state->px);
+  free (state->py);
+  free (state->opx);
+  free (state->opy);
   free (state);
 }
 
index 263393a282ea0fd6ab1c6ba681172a0e6d943808..df8f498696afaafbac143c523335dd934fb7c326 100644 (file)
@@ -172,9 +172,11 @@ append_font_name(Display *dpy, char *dest, const XFontStruct *font)
   int i;
   for (i = 0; i != font->n_properties; ++i) {
     if (font->properties[i].name == XA_FONT) {
-      const char *suffix = XGetAtomName (dpy, font->properties[i].card32);
+      char *suffix = XGetAtomName (dpy, font->properties[i].card32);
+      int L = strlen(suffix);
       strcpy(dest, suffix);
-      return dest + strlen(suffix);
+      free (suffix);
+      return dest + L;
     }
   }
 
@@ -768,6 +770,7 @@ free_word (state *s, word *w)
   if (w->text)   free (w->text);
   if (w->pixmap) XFreePixmap (s->dpy, w->pixmap);
   if (w->mask)   XFreePixmap (s->dpy, w->mask);
+  free (w);
 }
 
 
@@ -860,6 +863,7 @@ split_words (state *s, sentence *se)
           char *t2 = chars[k];
           word *w2 = new_word (s, se, t2, True);
           words2[j++] = w2;
+          free (t2);
 
           w2->x = x;
           w2->y = y;
@@ -1219,7 +1223,7 @@ populate_sentence (state *s, sentence *se)
               y + se->xftfont->ascent + se->xftfont->descent > s->xgwa.height)
             {
               unread_word (s, w);
-              free (w);
+              w = 0;
               /* done = True; */
               break;
             }
@@ -2203,8 +2207,10 @@ fontglide_init (Display *dpy, Window window)
   XGetWindowAttributes (s->dpy, s->window, &s->xgwa);
 
   s->font_override = get_string_resource (dpy, "font", "Font");
-  if (s->font_override && (!*s->font_override || *s->font_override == '('))
+  if (s->font_override && (!*s->font_override || *s->font_override == '(')) {
+    free (s->font_override);
     s->font_override = 0;
+  }
 
   s->charset = get_string_resource (dpy, "fontCharset", "FontCharset");
   s->border_width = get_integer_resource (dpy, "fontBorderWidth", "Integer");
@@ -2247,7 +2253,7 @@ fontglide_init (Display *dpy, Window window)
   if (s->trails_p) s->dbuf = False;  /* don't need it in this case */
 
   {
-    const char *ss = get_string_resource (dpy, "mode", "Mode");
+    char *ss = get_string_resource (dpy, "mode", "Mode");
     if (!ss || !*ss || !strcasecmp (ss, "random"))
       s->mode = ((random() % 2) ? SCROLL : PAGE);
     else if (!strcasecmp (ss, "scroll"))
@@ -2262,6 +2268,7 @@ fontglide_init (Display *dpy, Window window)
                 "%s: `mode' must be `scroll', `page', or `random', not `%s'\n",
                  progname, ss);
       }
+    if (ss) free (ss);
   }
 
   if (s->dbuf)
@@ -2410,8 +2417,20 @@ static void
 fontglide_free (Display *dpy, Window window, void *closure)
 {
   state *s = (state *) closure;
+  int i;
+
   textclient_close (s->tc);
 
+//  if (s->b && s->b != s->window) XFreePixmap (dpy, s->b);
+//  if (s->ba && s->ba != s->b) XFreePixmap (dpy, s->ba);
+  XFreeGC (dpy, s->bg_gc);
+  if (s->charset) free (s->charset);
+  if (s->font_override) free (s->font_override);
+  for (i = 0;i < s->nsentences; i++)
+    if (s->sentences[i])
+      free_sentence (s, s->sentences[i]);
+  free (s->sentences);
+
 #ifdef DEBUG
   if (s->metrics_xftfont)
     XftFontClose (s->dpy, s->metrics_xftfont);
@@ -2424,8 +2443,6 @@ fontglide_free (Display *dpy, Window window, void *closure)
   if (s->label_gc) XFreeGC (dpy, s->label_gc);
 #endif
 
-  /* #### there's more to free here */
-
   free (s);
 }
 
index 18470bcb56de94eab6b0814df94d28112ad7d2b4..7429fa834dc80041c1e3736be01a80506b639cae 100644 (file)
@@ -445,6 +445,10 @@ FuzzyFlakesFreeFlake(Flake *flake)
 
    if (flake->DB.bb) XFreePixmap(flake->dpy, flake->DB.bb);
    if (flake->DB.ba) XFreePixmap(flake->dpy, flake->DB.ba);
+   XFreeGC (flake->dpy, flake->GCVar);
+   if (flake->Colors.Back) free (flake->Colors.Back);
+   if (flake->Colors.Fore) free (flake->Colors.Fore);
+   if (flake->Colors.Bord) free (flake->Colors.Bord);
 }
 
 static void
@@ -607,6 +611,7 @@ fuzzyflakes_free (Display *dpy, Window window, void *closure)
 {
   Flake *flake = (Flake *) closure;
   FuzzyFlakesFreeFlake(flake);
+  free(flake->Flakes);
   free(flake);
 }
 
index e3fa617cf771a49bdd13156194eaecc828551544..91e4d516df6458a1b81bc41be8250bb1eb5be7f4 100644 (file)
@@ -132,7 +132,7 @@ SRCS                = xscreensaver-gl-helper.c normals.c erase-gl.c fps-gl.c \
                  raverhoop.c hydrostat.c discoball.c cubetwist.c cubestack.c \
                  splodesic.c hexstrut.c vigilance.c seccam.c esper.c \
                  razzledazzle.c ships.c peepers.c crumbler.c quickhull.c \
-                 maze3d.c
+                 maze3d.c handsy.c handsy_model.c
 
 OBJS           = xscreensaver-gl-helper.o normals.o erase-gl.o fps-gl.o \
                  atlantis.o b_draw.o b_lockglue.o b_sphere.o bubble3d.o \
@@ -179,7 +179,7 @@ OBJS                = xscreensaver-gl-helper.o normals.o erase-gl.o fps-gl.o \
                  raverhoop.o hydrostat.o discoball.o cubetwist.o cubestack.o \
                  splodesic.o hexstrut.o vigilance.o seccam.o esper.o \
                  razzledazzle.o ships.o peepers.o crumbler.o quickhull.o \
-                 maze3d.o
+                 maze3d.o handsy.o handsy_model.o
 
 GL_EXES                = cage gears moebius pipes sproingies stairs superquadrics \
                  morph3d rubik atlantis lament bubble3d glplanet pulsar \
@@ -200,7 +200,7 @@ GL_EXES             = cage gears moebius pipes sproingies stairs superquadrics \
                  splitflap dymaxionmap unicrud energystream raverhoop \
                  hydrostat discoball cubetwist cubestack splodesic \
                  hexstrut vigilance esper razzledazzle peepers crumbler \
-                 maze3d
+                 maze3d handsy
 GLE_EXES       = extrusion
 SUID_EXES      = sonar
 GL_UTIL_EXES   = xscreensaver-gl-helper
@@ -237,7 +237,7 @@ HDRS                = atlantis.h bubble3d.h buildlwo.h e_textures.h \
                  sproingies.h extrusion.h glschool.h glschool_gl.h \
                  glschool_alg.h topblock.h involute.h teapot.h sonar.h \
                  dropshadow.h starwars.h teapot2.h dnapizza.h curlicue.h \
-                 quickhull.h dymaxionmap-coords.h
+                 quickhull.h dymaxionmap-coords.h handsy_anim.h
 GL_MEN         = atlantis.man boxed.man bubble3d.man cage.man circuit.man \
                  cubenetic.man dangerball.man engine.man extrusion.man \
                  flipscreen3d.man gears.man gflux.man \
@@ -266,7 +266,7 @@ GL_MEN              = atlantis.man boxed.man bubble3d.man cage.man circuit.man \
                  unicrud.man energystream.man raverhoop.man hydrostat.man \
                  discoball.man cubetwist.man cubestack.man splodesic.man \
                  hexstrut.man vigilance.man esper.man razzledazzle.man \
-                 peepers.man crumbler.man maze3d.man
+                 peepers.man crumbler.man maze3d.man handsy.man
 MEN            = @GL_MEN@
 RETIRED_MEN    = glforestfire.man
 EXTRAS         = README Makefile.in dxf2gl.pl vrml2gl.pl wfront2gl.pl \
@@ -452,7 +452,9 @@ distdepend:: molecules.h
              -e 's@ \([^$$]\)@ $$(srcdir)/\1@g'                            \
              -e 's@ $$(srcdir)/\(.*config.h\)@ \1@g'                       \
              -e 's@ $$(HACK_SRC)/\(.*config.h\)@ ../\1@g'                  \
-             -e 's@ $$(srcdir)/\(.*molecules.h\)@ \1@g' ;                  \
+             -e 's@ $$(srcdir)/\(.*molecules.h\)@ \1@g'                    \
+             -e 's@ $$(srcdir)/\(images/gen/\)@ ../\1@g'                   \
+             -e 's@ $$(HACK_SRC)/\(images/gen/\)@ ../\1@g' ;               \
          echo ''                                                           \
        ) > /tmp/distdepend.$$$$ &&                                         \
        mv /tmp/distdepend.$$$$ Makefile.in
@@ -997,6 +999,14 @@ crumbler:  crumbler.o      quickhull.o $(HACK_TRACK_OBJS)
 maze3d:        maze3d.o                 $(PNG) $(HACK_TRACK_OBJS)
        $(CC_HACK) -o $@ $@.o    $(PNG) $(PNG_LIBS) $(HACK_TRACK_OBJS) $(HACK_LIBS)
 
+HANDSY_OBJS=gllist.o handsy_model.o normals.o $(HACK_TRACK_OBJS)
+handsy:        handsy.o                 $(HANDSY_OBJS)
+       $(CC_HACK) -o $@ $@.o    $(HANDSY_OBJS) $(HACK_LIBS)
+
+handsy_dxf::
+       ./dxf2gl.pl --smooth 28 --layers handsy.dxf handsy_model.c
+
+
 ##############################################################################
 #
 # DO NOT DELETE: updated by make distdepend
@@ -1062,7 +1072,7 @@ antspotlight.o: $(HACK_SRC)/xlockmore.h
 atlantis.o: $(srcdir)/atlantis.h
 atlantis.o: ../../config.h
 atlantis.o: $(HACK_SRC)/fps.h
-atlantis.o: $(HACK_SRC)/images/gen/sea-texture_png.h
+atlantis.o: ../images/gen/sea-texture_png.h
 atlantis.o: $(HACK_SRC)/recanim.h
 atlantis.o: $(HACK_SRC)/screenhackI.h
 atlantis.o: $(UTILS_SRC)/colors.h
@@ -1079,12 +1089,12 @@ atlantis.o: $(HACK_SRC)/xlockmoreI.h
 atlantis.o: $(HACK_SRC)/xlockmore.h
 atunnel.o: ../../config.h
 atunnel.o: $(HACK_SRC)/fps.h
-atunnel.o: $(HACK_SRC)/images/gen/tunnel0_png.h
-atunnel.o: $(HACK_SRC)/images/gen/tunnel1_png.h
-atunnel.o: $(HACK_SRC)/images/gen/tunnel2_png.h
-atunnel.o: $(HACK_SRC)/images/gen/tunnel3_png.h
-atunnel.o: $(HACK_SRC)/images/gen/tunnel4_png.h
-atunnel.o: $(HACK_SRC)/images/gen/tunnel5_png.h
+atunnel.o: ../images/gen/tunnel0_png.h
+atunnel.o: ../images/gen/tunnel1_png.h
+atunnel.o: ../images/gen/tunnel2_png.h
+atunnel.o: ../images/gen/tunnel3_png.h
+atunnel.o: ../images/gen/tunnel4_png.h
+atunnel.o: ../images/gen/tunnel5_png.h
 atunnel.o: $(HACK_SRC)/recanim.h
 atunnel.o: $(HACK_SRC)/screenhackI.h
 atunnel.o: $(srcdir)/tunnel_draw.h
@@ -1149,7 +1159,7 @@ b_lockglue.o: $(HACK_SRC)/xlockmoreI.h
 b_lockglue.o: $(HACK_SRC)/xlockmore.h
 blocktube.o: ../../config.h
 blocktube.o: $(HACK_SRC)/fps.h
-blocktube.o: $(HACK_SRC)/images/gen/blocktube_png.h
+blocktube.o: ../images/gen/blocktube_png.h
 blocktube.o: $(HACK_SRC)/recanim.h
 blocktube.o: $(HACK_SRC)/screenhackI.h
 blocktube.o: $(UTILS_SRC)/colors.h
@@ -1249,7 +1259,7 @@ buildlwo.o: $(srcdir)/buildlwo.h
 buildlwo.o: ../../config.h
 cage.o: ../../config.h
 cage.o: $(HACK_SRC)/fps.h
-cage.o: $(HACK_SRC)/images/gen/wood_png.h
+cage.o: ../images/gen/wood_png.h
 cage.o: $(HACK_SRC)/recanim.h
 cage.o: $(HACK_SRC)/screenhackI.h
 cage.o: $(UTILS_SRC)/colors.h
@@ -1582,10 +1592,10 @@ dymaxionmap.o: ../../config.h
 dymaxionmap.o: $(srcdir)/dymaxionmap-coords.h
 dymaxionmap.o: $(HACK_SRC)/fps.h
 dymaxionmap.o: $(srcdir)/gltrackball.h
-dymaxionmap.o: $(HACK_SRC)/images/gen/earth_flat_png.h
-dymaxionmap.o: $(HACK_SRC)/images/gen/earth_night_png.h
-dymaxionmap.o: $(HACK_SRC)/images/gen/earth_png.h
-dymaxionmap.o: $(HACK_SRC)/images/gen/ground_png.h
+dymaxionmap.o: ../images/gen/earth_flat_png.h
+dymaxionmap.o: ../images/gen/earth_night_png.h
+dymaxionmap.o: ../images/gen/earth_png.h
+dymaxionmap.o: ../images/gen/ground_png.h
 dymaxionmap.o: $(srcdir)/normals.h
 dymaxionmap.o: $(HACK_SRC)/recanim.h
 dymaxionmap.o: $(srcdir)/rotator.h
@@ -1804,8 +1814,8 @@ flyingtoasters.o: ../../config.h
 flyingtoasters.o: $(HACK_SRC)/fps.h
 flyingtoasters.o: $(srcdir)/gllist.h
 flyingtoasters.o: $(srcdir)/gltrackball.h
-flyingtoasters.o: $(HACK_SRC)/images/gen/chromesphere_png.h
-flyingtoasters.o: $(HACK_SRC)/images/gen/toast_png.h
+flyingtoasters.o: ../images/gen/chromesphere_png.h
+flyingtoasters.o: ../images/gen/toast_png.h
 flyingtoasters.o: $(HACK_SRC)/recanim.h
 flyingtoasters.o: $(HACK_SRC)/screenhackI.h
 flyingtoasters.o: $(UTILS_SRC)/colors.h
@@ -1965,8 +1975,8 @@ gleidescope.o: $(HACK_SRC)/xlockmore.h
 glforestfire.o: ../../config.h
 glforestfire.o: $(HACK_SRC)/fps.h
 glforestfire.o: $(srcdir)/gltrackball.h
-glforestfire.o: $(HACK_SRC)/images/gen/ground_png.h
-glforestfire.o: $(HACK_SRC)/images/gen/tree_png.h
+glforestfire.o: ../images/gen/ground_png.h
+glforestfire.o: ../images/gen/tree_png.h
 glforestfire.o: $(HACK_SRC)/recanim.h
 glforestfire.o: $(HACK_SRC)/screenhackI.h
 glforestfire.o: $(UTILS_SRC)/colors.h
@@ -2019,7 +2029,7 @@ gllist.o: ../../config.h
 gllist.o: $(srcdir)/gllist.h
 glmatrix.o: ../../config.h
 glmatrix.o: $(HACK_SRC)/fps.h
-glmatrix.o: $(HACK_SRC)/images/gen/matrix3_png.h
+glmatrix.o: ../images/gen/matrix3_png.h
 glmatrix.o: $(HACK_SRC)/recanim.h
 glmatrix.o: $(HACK_SRC)/screenhackI.h
 glmatrix.o: $(UTILS_SRC)/colors.h
@@ -2037,8 +2047,8 @@ glmatrix.o: $(HACK_SRC)/xlockmore.h
 glplanet.o: ../../config.h
 glplanet.o: $(HACK_SRC)/fps.h
 glplanet.o: $(srcdir)/gltrackball.h
-glplanet.o: $(HACK_SRC)/images/gen/earth_night_png.h
-glplanet.o: $(HACK_SRC)/images/gen/earth_png.h
+glplanet.o: ../images/gen/earth_night_png.h
+glplanet.o: ../images/gen/earth_png.h
 glplanet.o: $(HACK_SRC)/recanim.h
 glplanet.o: $(srcdir)/rotator.h
 glplanet.o: $(HACK_SRC)/screenhackI.h
@@ -2151,6 +2161,29 @@ grab-ximage.o: $(UTILS_SRC)/grabscreen.h
 grab-ximage.o: $(UTILS_SRC)/pow2.h
 grab-ximage.o: $(UTILS_SRC)/visual.h
 grab-ximage.o: $(UTILS_SRC)/xshm.h
+handsy_model.o: ../../config.h
+handsy_model.o: $(srcdir)/gllist.h
+handsy.o: ../../config.h
+handsy.o: $(HACK_SRC)/fps.h
+handsy.o: $(srcdir)/gllist.h
+handsy.o: $(srcdir)/gltrackball.h
+handsy.o: $(srcdir)/handsy_anim.h
+handsy.o: $(HACK_SRC)/recanim.h
+handsy.o: $(srcdir)/rotator.h
+handsy.o: $(HACK_SRC)/screenhackI.h
+handsy.o: $(srcdir)/sphere.h
+handsy.o: $(srcdir)/tube.h
+handsy.o: $(UTILS_SRC)/colors.h
+handsy.o: $(UTILS_SRC)/erase.h
+handsy.o: $(UTILS_SRC)/font-retry.h
+handsy.o: $(UTILS_SRC)/grabscreen.h
+handsy.o: $(UTILS_SRC)/hsv.h
+handsy.o: $(UTILS_SRC)/resources.h
+handsy.o: $(UTILS_SRC)/usleep.h
+handsy.o: $(UTILS_SRC)/visual.h
+handsy.o: $(UTILS_SRC)/yarandom.h
+handsy.o: $(HACK_SRC)/xlockmoreI.h
+handsy.o: $(HACK_SRC)/xlockmore.h
 hexstrut.o: ../../config.h
 hexstrut.o: $(HACK_SRC)/fps.h
 hexstrut.o: $(srcdir)/gltrackball.h
@@ -2255,7 +2288,7 @@ involute.o: $(UTILS_SRC)/yarandom.h
 jigglypuff.o: ../../config.h
 jigglypuff.o: $(HACK_SRC)/fps.h
 jigglypuff.o: $(srcdir)/gltrackball.h
-jigglypuff.o: $(HACK_SRC)/images/gen/jigglymap_png.h
+jigglypuff.o: ../images/gen/jigglymap_png.h
 jigglypuff.o: $(HACK_SRC)/recanim.h
 jigglypuff.o: $(HACK_SRC)/screenhackI.h
 jigglypuff.o: $(UTILS_SRC)/colors.h
@@ -2352,7 +2385,7 @@ lament.o: ../../config.h
 lament.o: $(HACK_SRC)/fps.h
 lament.o: $(srcdir)/gllist.h
 lament.o: $(srcdir)/gltrackball.h
-lament.o: $(HACK_SRC)/images/gen/lament512_png.h
+lament.o: ../images/gen/lament512_png.h
 lament.o: $(srcdir)/normals.h
 lament.o: $(HACK_SRC)/recanim.h
 lament.o: $(srcdir)/rotator.h
@@ -2408,12 +2441,12 @@ marching.o: $(srcdir)/marching.h
 marching.o: $(srcdir)/normals.h
 maze3d.o: ../../config.h
 maze3d.o: $(HACK_SRC)/fps.h
-maze3d.o: $(HACK_SRC)/images/gen/bob_png.h
-maze3d.o: $(HACK_SRC)/images/gen/brick1_png.h
-maze3d.o: $(HACK_SRC)/images/gen/brick2_png.h
-maze3d.o: $(HACK_SRC)/images/gen/logo-32_png.h
-maze3d.o: $(HACK_SRC)/images/gen/start_png.h
-maze3d.o: $(HACK_SRC)/images/gen/wood2_png.h
+maze3d.o: ../images/gen/bob_png.h
+maze3d.o: ../images/gen/brick1_png.h
+maze3d.o: ../images/gen/brick2_png.h
+maze3d.o: ../images/gen/logo-32_png.h
+maze3d.o: ../images/gen/start_png.h
+maze3d.o: ../images/gen/wood2_png.h
 maze3d.o: $(HACK_SRC)/recanim.h
 maze3d.o: $(HACK_SRC)/screenhackI.h
 maze3d.o: $(UTILS_SRC)/colors.h
@@ -2557,8 +2590,8 @@ normals.o: $(srcdir)/normals.h
 peepers.o: ../../config.h
 peepers.o: $(HACK_SRC)/fps.h
 peepers.o: $(srcdir)/gltrackball.h
-peepers.o: $(HACK_SRC)/images/gen/iris_png.h
-peepers.o: $(HACK_SRC)/images/gen/sclera_png.h
+peepers.o: ../images/gen/iris_png.h
+peepers.o: ../images/gen/sclera_png.h
 peepers.o: $(srcdir)/normals.h
 peepers.o: $(HACK_SRC)/recanim.h
 peepers.o: $(srcdir)/rotator.h
@@ -2875,8 +2908,8 @@ s1_b.o: $(srcdir)/gllist.h
 sballs.o: ../../config.h
 sballs.o: $(HACK_SRC)/fps.h
 sballs.o: $(srcdir)/gltrackball.h
-sballs.o: $(HACK_SRC)/images/gen/sball-bg_png.h
-sballs.o: $(HACK_SRC)/images/gen/sball_png.h
+sballs.o: ../images/gen/sball-bg_png.h
+sballs.o: ../images/gen/sball_png.h
 sballs.o: $(HACK_SRC)/recanim.h
 sballs.o: $(HACK_SRC)/screenhackI.h
 sballs.o: $(UTILS_SRC)/colors.h
@@ -2928,7 +2961,7 @@ sierpinski3d.o: $(HACK_SRC)/xlockmore.h
 skytentacles.o: ../../config.h
 skytentacles.o: $(HACK_SRC)/fps.h
 skytentacles.o: $(srcdir)/gltrackball.h
-skytentacles.o: $(HACK_SRC)/images/gen/scales_png.h
+skytentacles.o: ../images/gen/scales_png.h
 skytentacles.o: $(srcdir)/normals.h
 skytentacles.o: $(HACK_SRC)/recanim.h
 skytentacles.o: $(srcdir)/rotator.h
@@ -3094,7 +3127,7 @@ sproingiewrap.o: $(HACK_SRC)/xlockmore.h
 stairs.o: ../../config.h
 stairs.o: $(HACK_SRC)/fps.h
 stairs.o: $(srcdir)/gltrackball.h
-stairs.o: $(HACK_SRC)/images/gen/wood_png.h
+stairs.o: ../images/gen/wood_png.h
 stairs.o: $(HACK_SRC)/recanim.h
 stairs.o: $(HACK_SRC)/screenhackI.h
 stairs.o: $(srcdir)/sphere.h
@@ -3242,11 +3275,11 @@ texfont.o: $(UTILS_SRC)/xshm.h
 timetunnel.o: ../../config.h
 timetunnel.o: $(HACK_SRC)/fps.h
 timetunnel.o: $(srcdir)/gltrackball.h
-timetunnel.o: $(HACK_SRC)/images/gen/logo-180_png.h
-timetunnel.o: $(HACK_SRC)/images/gen/timetunnel0_png.h
-timetunnel.o: $(HACK_SRC)/images/gen/timetunnel1_png.h
-timetunnel.o: $(HACK_SRC)/images/gen/timetunnel2_png.h
-timetunnel.o: $(HACK_SRC)/images/gen/tunnelstar_png.h
+timetunnel.o: ../images/gen/logo-180_png.h
+timetunnel.o: ../images/gen/timetunnel0_png.h
+timetunnel.o: ../images/gen/timetunnel1_png.h
+timetunnel.o: ../images/gen/timetunnel2_png.h
+timetunnel.o: ../images/gen/tunnelstar_png.h
 timetunnel.o: $(HACK_SRC)/recanim.h
 timetunnel.o: $(srcdir)/rotator.h
 timetunnel.o: $(HACK_SRC)/screenhackI.h
@@ -3433,7 +3466,7 @@ winduprobot.o: ../../config.h
 winduprobot.o: $(HACK_SRC)/fps.h
 winduprobot.o: $(srcdir)/gllist.h
 winduprobot.o: $(srcdir)/gltrackball.h
-winduprobot.o: $(HACK_SRC)/images/gen/chromesphere_png.h
+winduprobot.o: ../images/gen/chromesphere_png.h
 winduprobot.o: $(srcdir)/involute.h
 winduprobot.o: $(HACK_SRC)/recanim.h
 winduprobot.o: $(HACK_SRC)/screenhackI.h
index ad3bef56ef15b7172e1ce6b5787bbd923b9e0045..8f2152bc5be412a6fb6da687c82aec50cb64a7ae 100644 (file)
@@ -19,7 +19,6 @@
 #define DEFAULTS           "*delay:   20000   \n" \
                            "*showFPS: False   \n"
 
-# define free_antinspect 0
 # define release_antinspect 0
 #include "xlockmore.h"
 #else
@@ -645,7 +644,7 @@ ENTRYPOINT void draw_antinspect(ModeInfo * mi)
   if(!mp->glx_context)
        return;
   
-  glXMakeCurrent(display, window, *(mp->glx_context));
+  glXMakeCurrent(display, window, *mp->glx_context);
   
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -695,10 +694,17 @@ ENTRYPOINT void change_antinspect(ModeInfo * mi)
   if (!mp->glx_context)
        return;
   
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
   pinit();
 }
 #endif /* !STANDALONE */
 
+ENTRYPOINT void free_antinspect(ModeInfo * mi) 
+{
+  antinspectstruct *mp = &antinspect[MI_SCREEN(mi)];
+  if (!mp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
+  gltrackball_free (mp->trackball);
+}
 
 XSCREENSAVER_MODULE ("AntInspect", antinspect)
index 79b7e0b997330579b9924846edfb47581902c226..6853b356998fec55a966ead1d553b9cd10d2a63e 100644 (file)
@@ -25,7 +25,6 @@ static const char sccsid[] = "@(#)antmaze.c   5.01 2001/03/01 xlockmore";
                        "*showFPS:      False   \n" \
                        "*fpsSolid:     True    \n"
 
-# define free_antmaze 0
 # define release_antmaze 0
 # include "xlockmore.h"                /* from the xscreensaver distribution */
 #else /* !STANDALONE */
@@ -1442,7 +1441,7 @@ ENTRYPOINT void draw_antmaze(ModeInfo * mi)
        return;
   
   mi->polygon_count = 0;
-  glXMakeCurrent(display, window, *(mp->glx_context));
+  glXMakeCurrent(display, window, *mp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -1603,11 +1602,22 @@ ENTRYPOINT void change_antmaze(ModeInfo * mi)
   if (!mp->glx_context)
        return;
   
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
   pinit();
 }
 #endif /* !STANDALONE */
 
+ENTRYPOINT void free_antmaze(ModeInfo * mi) 
+{
+  antmazestruct *mp = &antmaze[MI_SCREEN(mi)];
+  if (!mp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
+  gltrackball_free (mp->trackball);
+  free_rotator (mp->rot);
+  if (mp->checktexture) glDeleteTextures (1, &mp->checktexture);
+  if (mp->brushedtexture) glDeleteTextures (1, &mp->brushedtexture);
+}
+
 XSCREENSAVER_MODULE ("AntMaze", antmaze)
 
 #endif
index 55bb80cd51158d03db785e586be717a6fef5bcf5..f5e1e69dc8b58dbfd2f71963e2888f0923d4a3f0 100644 (file)
@@ -19,7 +19,6 @@
                            "*showFPS: False   \n" \
                             "*useSHM:  True    \n"
 
-# define free_antspotlight 0
 # define release_antspotlight 0
 #include "xlockmore.h"
 #else
@@ -750,7 +749,7 @@ ENTRYPOINT void draw_antspotlight(ModeInfo * mi)
   /* Just keep running before the texture has come in. */
   /* if (mp->waiting_for_image_p) return; */
 
-  glXMakeCurrent(display, window, *(mp->glx_context));
+  glXMakeCurrent(display, window, *mp->glx_context);
   
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   
@@ -791,9 +790,19 @@ ENTRYPOINT void change_antspotlight(ModeInfo * mi)
   if (!mp->glx_context)
        return;
   
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
   pinit();
 }
 #endif /* !STANDALONE */
 
+ENTRYPOINT void free_antspotlight(ModeInfo * mi)
+{
+  antspotlightstruct *mp = &antspotlight[MI_SCREEN(mi)];
+  if (!mp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
+  gltrackball_free (mp->trackball);
+  free_rotator (mp->rot);
+  if (mp->screentexture) glDeleteTextures (1, &mp->screentexture);
+}
+
 XSCREENSAVER_MODULE ("AntSpotlight", antspotlight)
index 04bde12e5a5434f62c8543019428cedc83da6fb3..05ea90338e48c5ec1ddc3db2838b664adba1cc81 100644 (file)
@@ -308,6 +308,9 @@ Init(ModeInfo *mi)
             glLoadIdentity();
             glScalef(scale, scale, 1);
             glMatrixMode(GL_MODELVIEW);
+
+            if (ap->texture) XDestroyImage (ap->texture);
+            ap->texture = 0;
           }
 
        InitFishs(ap);
@@ -466,7 +469,7 @@ init_atlantis(ModeInfo * mi)
                if ((ap->sharks = (fishRec *) calloc(ap->num_sharks,
                                                sizeof (fishRec))) == NULL) {
                        /* free everything up to now */
-                       (void) free((void *) atlantis);
+                       free(atlantis);
                        atlantis = NULL;
                        return;
                }
@@ -520,7 +523,7 @@ draw_atlantis(ModeInfo * mi)
        if (!ap->glx_context)
                return;
 
-       glXMakeCurrent(display, window, *(ap->glx_context));
+       glXMakeCurrent(display, window, *ap->glx_context);
 
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -545,12 +548,10 @@ draw_atlantis(ModeInfo * mi)
 ENTRYPOINT void
 free_atlantis(ModeInfo * mi)
 {
-#if 0
-       atlantisstruct *ap = &atlantis[screen];
-
-       if (ap->sharks)
-               (void) free((void *) ap->sharks);
-#endif
+       atlantisstruct *ap = &atlantis[MI_SCREEN(mi)];
+       if (!ap->glx_context) return;
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ap->glx_context);
+       if (ap->sharks) free(ap->sharks);
 }
 
 #ifndef STANDALONE
@@ -567,7 +568,7 @@ change_atlantis(ModeInfo * mi)
        if (!ap->glx_context)
                return;
 
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ap->glx_context));
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ap->glx_context);
        Init(mi);
 }
 #endif /* !STANDALONE */
index f21d04fd5d964e6915b4ab20f53c9f08ee8c2139..1b8fb0781988e30cef83f3a6d9fde5ab2818da6e 100644 (file)
@@ -267,7 +267,7 @@ ENTRYPOINT void draw_atunnel(ModeInfo * mi)
        if (!sa->glx_context)
                return;
 
-       glXMakeCurrent(display, window, *(sa->glx_context));
+       glXMakeCurrent(display, window, *sa->glx_context);
 
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -303,13 +303,13 @@ ENTRYPOINT void init_atunnel(ModeInfo * mi)
 
 }
 
-/* all sorts of nice cleanup code should go here! */
 ENTRYPOINT void free_atunnel(ModeInfo * mi)
 {
-#if 0
   atunnelstruct *sa = &Atunnel[MI_SCREEN(mi)];
-  FreeTunnel(sa->ts);
-#endif
+  if (!sa->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sa->glx_context);
+  atunnel_FreeTunnel(sa->ts);
+  glDeleteTextures (MAX_TEXTURE, sa->texture);
 }
 
 XSCREENSAVER_MODULE ("Atunnel", atunnel)
index 977efbe97ff9096a6b775208ae660eed8c11dccf..1b789b65af33eefeb9ce4969f4fcbe8208c89807 100644 (file)
@@ -127,8 +127,8 @@ glb_draw_end(void *cc)
 
        glb_sphere_end (c->d);
 
-       (void) free((void *) c->bubble_list);
-       (void) free((void *) c);
+       free(c->bubble_list);
+       free(c);
 }
 
 static int
index 1bb1e67979240ade1a3421ec6fbad7d82d0eaf8a..d134a66adb7d1f1572f4e6c89c98b613a15b2d94 100644 (file)
@@ -195,7 +195,7 @@ draw_bubble3d(ModeInfo * mi)
        if (!c->glx_context)
                return;
 
-       glXMakeCurrent(display, window, *(c->glx_context));
+       glXMakeCurrent(display, window, *c->glx_context);
 
         glb_config.polygon_count = 0;
         glPushMatrix();
@@ -231,8 +231,9 @@ ENTRYPOINT void
 free_bubble3d(ModeInfo * mi)
 {
   struct context *c = &contexts[MI_SCREEN(mi)];
-  if (c->draw_context)
-    glb_draw_end(c->draw_context);
+  if (!c->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *c->glx_context);
+  if (c->draw_context) glb_draw_end(c->draw_context);
 }
 
 XSCREENSAVER_MODULE ("Bubble3D", bubble3d)
index 78be3924180654f1862f65608a92caa835f7c6b5..38e3d79ed9f07064658a93ca59c75a45ce424e4a 100644 (file)
@@ -213,7 +213,7 @@ glb_sphere_get_triangles(glb_data *d, int *nr_triangles_ptr)
 void
 glb_sphere_end(glb_data *d)
 {
-       (void) free((void *) d->vertices);
-       (void) free((void *) d->triangles);
+       free(d->vertices);
+       free(d->triangles);
         free (d);
 }
index f777371162afafa958c84cb8d8ab4c39f8c98742..45071a96391c27434429ebb450706ba5eabce34a 100644 (file)
@@ -16,7 +16,6 @@
                        "*wireframe:    False            \n" \
                        "*suppressRotationAnimation: True\n" \
 
-# define free_ball 0
 # define release_ball 0
 # define ball_handle_event xlockmore_no_events
 #undef countof
@@ -383,11 +382,11 @@ init_ball (ModeInfo *mi)
 #define SPHERE_SLICES 12  /* how densely to render spheres */
 #define SPHERE_STACKS 16
 
-  bp->sp = malloc(sizeof(*bp->sp));
+/*  bp->sp = malloc(sizeof(*bp->sp));
   if(bp->sp == NULL){
     fprintf(stderr,"Could not allocate memory\n");
     exit(1);
-  }
+  }*/
   if( (bp->bscale.wh < 1) ||
       (bp->bscale.wh > 8) ) {
     fprintf(stderr,"Boxsize out of range. Using default\n");
@@ -449,7 +448,7 @@ draw_ball (ModeInfo *mi)
    if (! bp->glx_context)
      return;
    mi->polygon_count = 0;
-   glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+   glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
    glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -603,6 +602,16 @@ draw_ball (ModeInfo *mi)
 
 }
 
+ENTRYPOINT void
+free_ball (ModeInfo *mi)
+{
+   blinkboxstruct *bp = &blinkbox[MI_SCREEN(mi)];
+   if (!bp->glx_context) return;
+   glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+   if (glIsList(bp->ballList)) glDeleteLists(bp->ballList, 1);
+   if (glIsList(bp->boxList))  glDeleteLists(bp->boxList, 1);
+}
+
 XSCREENSAVER_MODULE_2 ("BlinkBox", blinkbox, ball)
 
 #endif /* USE_GL */
index d4a402e71987ff11a277215d4955ac2d3ee82cbe..811b1859761143f056539d371f16169bdb194ba4 100644 (file)
@@ -291,14 +291,13 @@ ENTRYPOINT void free_blocktube (ModeInfo *mi)
 {
   blocktube_configuration *lp = &lps[MI_SCREEN(mi)];
 # if defined ( I_HAVE_XPM )
-  if (lp->glx_context) {
-    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(lp->glx_context));
-
-    if (lp->envTexture)
-      glDeleteTextures(1, &lp->envTexture);
-    if (lp->texti)
-      XDestroyImage(lp->texti);
-  }
+  if (!lp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *lp->glx_context);
+  if (lp->envTexture) glDeleteTextures(1, &lp->envTexture);
+  if (lp->texti) XDestroyImage(lp->texti);
+  if (glIsList(lp->block_dlist)) glDeleteLists(lp->block_dlist, 1);
+  if (lp->envTexture) glDeleteTextures (1, &lp->envTexture);
+
 # endif
 }
 
@@ -308,7 +307,7 @@ ENTRYPOINT void reshape_blocktube (ModeInfo *mi, int width, int height)
     GLfloat h = (GLfloat) height / (GLfloat) width;
     int y = 0;
 
-    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(lp->glx_context));
+    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *lp->glx_context);
 
     if (width > height * 5) {   /* tiny window: show middle */
       height = width;
@@ -421,7 +420,7 @@ draw_blocktube (ModeInfo *mi)
 
     mi->polygon_count = 0;
 
-    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(lp->glx_context));
+    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *lp->glx_context);
 
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
index 55a05f3d4c67a98c94bdc50b832e9e62a5bdcb46..adaf96b5ca6457e7636bac39f540583d75486c91 100644 (file)
@@ -25,7 +25,6 @@
                        "*showFPS:      False            \n" \
                        "*wireframe:    False            \n" \
 
-# define free_boing 0
 # define release_boing 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -595,7 +594,7 @@ draw_boing (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   mi->polygon_count = 0;
 
@@ -653,6 +652,16 @@ draw_boing (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_boing (ModeInfo *mi)
+{
+  boing_configuration *bp = &bps[MI_SCREEN(mi)];
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+}
+
 XSCREENSAVER_MODULE ("Boing", boing)
 
 #endif /* USE_GL */
index 6f9b45d7032a1108f7f204bc7009c377c6f5979e..bcbea24f8f2ba5a0acfebc1f1a5b659bf1511143 100644 (file)
@@ -16,7 +16,6 @@
                        "*showFPS:      False       \n" \
                        "*wireframe:    False       \n" \
 
-# define free_cow 0
 # define release_cow 0
 #define DEF_SPEED       "1.0"
 #define DEF_TEXTURE     "(none)"
@@ -463,7 +462,7 @@ draw_cow (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -514,6 +513,25 @@ draw_cow (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_cow (ModeInfo *mi)
+{
+  cow_configuration *bp = &bps[MI_SCREEN(mi)];
+  int i;
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->floaters) {
+    for (i = 0; i < bp->nfloaters; i++)
+      free_rotator (bp->floaters[i].rot);
+    free (bp->floaters);
+  }
+  for (i = 0; i < countof(all_objs); i++)
+    if (glIsList(bp->dlists[i])) glDeleteLists(bp->dlists[i], 1);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->dlists) free (bp->dlists);
+}
+
 XSCREENSAVER_MODULE_2 ("BouncingCow", bouncingcow, cow)
 
 #endif /* USE_GL */
index 136d468ebceebbf88548e49cee0ac68156403a91..6ce82bb68b8d6fd6be253a9893a891379dd7e488 100644 (file)
@@ -1330,7 +1330,7 @@ draw_boxed(ModeInfo * mi)
    
    glDrawBuffer(GL_BACK);
    
-   glXMakeCurrent(display, window, *(gp->glx_context));
+   glXMakeCurrent(display, window, *gp->glx_context);
    draw(mi);
    
    if (mi->fps_p) do_fps (mi);
@@ -1343,23 +1343,17 @@ free_boxed(ModeInfo * mi)
 {
    boxedstruct *gp = &boxed[MI_SCREEN(mi)];
    int i;
-
-   if (gp->glx_context) {
-      /* Display lists MUST be freed while their glXContext is current. */
-      glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context));
-   
-      if (glIsList(gp->listobjects))
-        glDeleteLists(gp->listobjects, 3);
-
-      for (i=0;i<gp->bman.num_balls;i++) {
-         if (gp->bman.balls[i].bounced) freetris(&gp->tman[i]);
-      }
-      free (gp->bman.balls);
-      free (gp->tman);
-      free (gp->tex1);
-
-
-   }
+   if (!gp->glx_context) return;
+   glXMakeCurrent(MI_DISPLAY(mi), gp->window, *gp->glx_context);
+   if (glIsList(gp->listobjects)) glDeleteLists(gp->listobjects, 3);
+   for (i=0;i<gp->bman.num_balls;i++)
+     if (gp->bman.balls[i].bounced) freetris(&gp->tman[i]);
+   glDeleteLists (gp->gllists[0], 1);
+   glDeleteLists (gp->gllists[1], 1);
+   glDeleteLists (gp->gllists[2], 1);
+   free (gp->bman.balls);
+   free (gp->tman);
+   free (gp->tex1);
 }
 
 
index 9cd2afc4f43fab240b21b23317b666b5a7df4906..7b0b6865a48f279d2857245aefa4d41948f22e9f 100644 (file)
@@ -114,20 +114,20 @@ glb_bubble_new(glb_data *d, GLfloat x, GLfloat y, GLfloat z, GLfloat scale,
        b->contributions = (GLfloat *) malloc(sizeof (GLfloat) * nr_vertices *
                                              glb_config.nr_nudge_axes);
        if (b->contributions == 0) {
-               (void) free((void *) b);
+               free(b);
                return 0;
        }
        b->nudge_angle = (GLfloat *) malloc(sizeof (GLfloat) * glb_config.nr_nudge_axes);
        if (b->nudge_angle == 0) {
-               (void) free((void *) b->contributions);
-               (void) free((void *) b);
+               free(b->contributions);
+               free(b);
                return 0;
        }
        b->nudge_angle_incr = (GLfloat *) malloc(sizeof (GLfloat) * glb_config.nr_nudge_axes);
        if (b->nudge_angle_incr == 0) {
-               (void) free((void *) b->nudge_angle);
-               (void) free((void *) b->contributions);
-               (void) free((void *) b);
+               free(b->nudge_angle);
+               free(b->contributions);
+               free(b);
                return 0;
        }
        /* Initialize primitive elements. */
@@ -176,18 +176,18 @@ glb_bubble_delete(void *bb)
 
        if (b != NULL) {
                if (b->nudge_angle_incr) {
-                       (void) free((void *) b->nudge_angle_incr);
+                       free(b->nudge_angle_incr);
                        b->nudge_angle_incr = NULL;
                }
                if (b->nudge_angle) {
-                       (void) free((void *) b->nudge_angle);
+                       free(b->nudge_angle);
                        b->nudge_angle = NULL;
                }
                if (b->contributions) {
-                       (void) free((void *) b->contributions);
+                       free(b->contributions);
                        b->contributions = NULL;
                }
-               (void) free((void *) b);
+               free(b);
                b = NULL;
        }
 }
@@ -267,7 +267,7 @@ glb_bubble_draw(glb_data *d, void *bb)
        }
        glEnd();
        glPopMatrix();
-       (void) free((void *) new_vertices);
+       free(new_vertices);
     glb_config.polygon_count += nr_triangles;
 }
 
index 66f48aadc30ab57a8342ced10b64a4f7f54c7612..32384a7864acf7c8fd6b1a29685c9f66d0a343de 100644 (file)
@@ -82,7 +82,6 @@ static const char sccsid[] = "@(#)cage.c      5.01 2001/03/01 xlockmore";
                                                        "*wireframe:    False   \n"                     \
                                                        "*suppressRotationAnimation: True\n" \
 
-# define free_cage 0
 # define release_cage 0
 # define cage_handle_event xlockmore_no_events
 # include "xlockmore.h"                /* from the xscreensaver distribution */
@@ -418,7 +417,7 @@ draw_cage (ModeInfo * mi)
                return;
 
     mi->polygon_count = 0;
-       glXMakeCurrent(display, window, *(cp->glx_context));
+       glXMakeCurrent(display, window, *cp->glx_context);
 
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -470,11 +469,17 @@ change_cage (ModeInfo * mi)
        if (!cp->glx_context)
                return;
 
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cp->glx_context));
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cp->glx_context);
        pinit(mi);
 }
 #endif /* !STANDALONE */
 
+ENTRYPOINT void
+free_cage (ModeInfo * mi)
+{
+       /* nothing to do */
+}
+
 XSCREENSAVER_MODULE ("Cage", cage)
 
 #endif
index 863b1a5b16b9600bba0e0f91065a04007a35773f..c1132b1f964aa50a3711fa23eee7da2e713752f7 100644 (file)
@@ -34,7 +34,6 @@
                  "*grabDesktopImages:   False \n" \
                  "*chooseRandomImages:  True  \n"
 
-# define free_carousel 0
 # define release_carousel 0
 # include "xlockmore.h"
 
@@ -497,6 +496,7 @@ hack_resources (Display *dpy)
   value.addr = buf2;
   value.size = strlen(buf2);
   XrmPutResource (&db, buf1, "String", &value);
+  free (val);
 # endif /* !HAVE_JWXYZ */
 }
 
@@ -847,7 +847,7 @@ draw_carousel (ModeInfo *mi)
   if (!ss->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ss->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ss->glx_context);
 
   if (ss->awaiting_first_images_p)
     if (!load_initial_images (mi))
@@ -936,6 +936,29 @@ draw_carousel (ModeInfo *mi)
   glXSwapBuffers (MI_DISPLAY (mi), MI_WINDOW(mi));
 }
 
+
+ENTRYPOINT void
+free_carousel (ModeInfo *mi)
+{
+  carousel_state *ss = &sss[MI_SCREEN(mi)];
+  int i;
+  if (!ss->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ss->glx_context);
+  if (ss->rot) free_rotator (ss->rot);
+  if (ss->trackball) gltrackball_free (ss->trackball);
+  if (ss->texfont) free_texture_font (ss->texfont);
+  if (ss->titlefont) free_texture_font (ss->titlefont);
+  for (i = 0; i < ss->nframes; i++) {
+    if (ss->frames[i]->current.title) free (ss->frames[i]->current.title);
+    if (ss->frames[i]->loading.title) free (ss->frames[i]->loading.title);
+    if (ss->frames[i]->rot) free_rotator (ss->frames[i]->rot);
+    if (ss->frames[i]->current.texid)
+      glDeleteTextures (1, &ss->frames[i]->current.texid);
+    if (ss->frames[i]->loading.texid)
+      glDeleteTextures (1, &ss->frames[i]->loading.texid);
+  }
+}
+
 XSCREENSAVER_MODULE ("Carousel", carousel)
 
 #endif /* USE_GL */
index 744e4b68a341cf58e64078928078055608bd8e60..b8b845e04e544a0460ebd365a0020f68f36eed2d 100644 (file)
@@ -2072,7 +2072,7 @@ ENTRYPOINT void draw_circuit(ModeInfo *mi)
   if (!ci->glx_context)
       return;
 
- glXMakeCurrent(disp, w, *(ci->glx_context));
+ glXMakeCurrent(disp, w, *ci->glx_context);
 
   display(mi);
 
@@ -2084,8 +2084,12 @@ ENTRYPOINT void draw_circuit(ModeInfo *mi)
 ENTRYPOINT void free_circuit(ModeInfo *mi)
 {
   Circuit *ci = &circuit[MI_SCREEN(mi)];
-  if (ci->font)
-    free_texture_font (ci->font);
+  int i;
+  if (!ci->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *ci->glx_context);
+  if (ci->font) free_texture_font (ci->font);
+  for (i = 0 ; i < 12 ; i++)
+    if (glIsList(ci->band_list[i])) glDeleteLists(ci->band_list[i], 1);
   FreeAllGL(mi);
 }
 
index 2b3bd4fcea33af810fb1c502d169de385e5cc9c1..a6660af48b7887fecbee7d791189bd889e60e8d0 100644 (file)
@@ -14,7 +14,6 @@
                        "*showFPS:      False       \n" \
                        "*wireframe:    False       \n" \
 
-# define free_cube 0
 # define release_cube 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -381,7 +380,7 @@ draw_cube (ModeInfo *mi)
     return;
 
   mi->polygon_count = 0;
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cc->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cc->glx_context);
 
   interference (mi);
   animate_cubes (mi);
@@ -540,6 +539,24 @@ draw_cube (ModeInfo *mi)
 }
 
 
+ENTRYPOINT void
+free_cube (ModeInfo *mi)
+{
+  cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+  if (!cc->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cc->glx_context);
+
+  if (cc->waves) {
+    free (cc->waves->srcs);
+    free (cc->waves->heights);
+    free (cc->waves);
+  }
+  if (cc->trackball) gltrackball_free (cc->trackball);
+  if (cc->cubes) free (cc->cubes);
+  if (cc->colors) free (cc->colors);
+}
+
+
 XSCREENSAVER_MODULE_2 ("Cityflow", cityflow, cube)
 
 #endif /* USE_GL */
index 3c004a506152b8717cf30c5d9858ea2136051e5a..1f518b1be3217db1ae2829c8fa2e1668de79d927 100644 (file)
@@ -26,7 +26,6 @@
 /* #define DEBUG */
 
 
-# define free_cube 0
 # define release_cube 0
 #define DEF_SPEED  "1.0"
 #define DEF_SPIN   "False"
@@ -548,7 +547,7 @@ draw_cube (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -587,6 +586,23 @@ draw_cube (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_cube (ModeInfo *mi)
+{
+  cube_configuration *bp = &bps[MI_SCREEN(mi)];
+  int i;
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  for (i = 0; i < bp->nfloaters; i++)
+    if (bp->floaters[i].rot) free_rotator (bp->floaters[i].rot);
+  for (i = 0; i < countof(all_objs)+1; i++)
+    if (glIsList(bp->dlists[i])) glDeleteLists(bp->dlists[i], 1);
+  if (bp->floaters) free (bp->floaters);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->dlists) free (bp->dlists);
+}
+
 XSCREENSAVER_MODULE_2 ("CompanionCube", companioncube, cube)
 
 #endif /* USE_GL */
index 74c691570e2b46d87c2b23303cb353bf4dd25fa2..22d3adcd9e8f567ce3f7643f6da27fd6542f7760 100644 (file)
@@ -95,7 +95,7 @@ struct _Trile {
     const Morph *morph;
 
     struct _Trile *left, *right, *parent; /* for bst, NOT spatial */
-    struct _Trile *next_free; /* for memory allocation */
+    struct _Trile *next_free, *next0; /* for memory allocation */
 };
 
 enum { MOTION_AUTO = 0, MOTION_MANUAL = 1, MOTION_LROT= 2,    MOTION_RROT = 4,
@@ -124,6 +124,7 @@ struct _cberg_state {
 
     double *heights, *norms;
     Trile *free_head; /* for trile_[alloc|free] */
+    Trile *all_triles;
 
     double draw_elapsed;
 
@@ -539,13 +540,15 @@ static Trile *trile_alloc(cberg_state *cberg)
         cberg->free_head = cberg->free_head->next_free;
     } else {
         ++cberg->count;
-        if (!(new = malloc(sizeof(Trile)))
-         || !(new->l = (double *) malloc(sizeof(double) * cberg->epoints * 3))) {
+        if (!(new = calloc(1, sizeof(Trile)))
+         || !(new->l = (double *) calloc(sizeof(double), cberg->epoints * 3))) {
             perror(progname);
             exit(1);
         }
         new->r = new->l + cberg->epoints;
         new->v = new->r + cberg->epoints;
+        new->next0 = cberg->all_triles;
+        cberg->all_triles = new;
 #ifdef DEBUG
         printf("needed to alloc; [%d]\n", cberg->count);
 #endif
@@ -584,13 +587,15 @@ static void trile_draw(Trile *tr, void *ignore)
 
 static void grow_init(Trile *tr)
 {
-    tr->morph_data = (void *) malloc(sizeof(double));
+    if (!tr->morph_data)
+      tr->morph_data = (void *) malloc(sizeof(double));
     *((double *)tr->morph_data) = 0.02; /* not 0; avoid normals crapping */
 }
 
 static void grow_free(Trile *tr)
 {
-    free(tr->morph_data);
+    if (tr->morph_data) free(tr->morph_data);
+    tr->morph_data = 0;
 }
 
 static void grow_draw(Trile *tr)
@@ -619,13 +624,15 @@ static void grow_dying_iter(Trile *tr, cberg_state *cberg)
 
 static void fall_init(Trile *tr)
 {
-    tr->morph_data = (void *) malloc(sizeof(double));
+    if (!tr->morph_data)
+      tr->morph_data = (void *) malloc(sizeof(double));
     *((double *)tr->morph_data) = 0.0;
 }
 
 static void fall_free(Trile *tr)
 {
-    free(tr->morph_data);
+    if (tr->morph_data) free(tr->morph_data);
+    tr->morph_data = 0;
 }
 
 static void fall_draw(Trile *tr)
@@ -654,13 +661,15 @@ static void fall_dying_iter(Trile *tr, cberg_state *cberg)
 
 static void yeast_init(Trile *tr)
 {
-    tr->morph_data = (void *) malloc(sizeof(double));
+    if (!tr->morph_data)
+      tr->morph_data = (void *) malloc(sizeof(double));
     *((double *)tr->morph_data) = 0.02;
 }
 
 static void yeast_free(Trile *tr)
 {
-    free(tr->morph_data);
+    if (tr->morph_data) free(tr->morph_data);
+    tr->morph_data = 0;
 }
 
 static void yeast_draw(Trile *tr)
@@ -1362,7 +1371,7 @@ ENTRYPOINT void draw_crackberg (ModeInfo *mi)
     if (!cberg->glx_context) /*XXX does this get externally tweaked? it kinda*/
         return;               /*XXX can't.. check it in crackberg_init*/
 
-    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cberg->glx_context));
+    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cberg->glx_context);
 
     gettimeofday(&cur_frame_t, NULL);
     cur_frame = cur_frame_t.tv_sec + cur_frame_t.tv_usec / 1.0E6;
@@ -1458,9 +1467,17 @@ ENTRYPOINT void draw_crackberg (ModeInfo *mi)
 ENTRYPOINT void free_crackberg (ModeInfo *mi)
 {
   cberg_state *cberg = &cbergs[MI_SCREEN(mi)];
-  if (cberg->norms)
-    free(cberg->norms);
-  free(cberg->heights);
+  if (!cberg->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cberg->glx_context);
+  while (cberg->all_triles) {
+    Trile *n = cberg->all_triles;
+    cberg->all_triles = n->next0;
+    free (n->l);
+    if (n->morph_data) free (n->morph_data);
+    free (n);
+  }
+  if (cberg->norms) free(cberg->norms);
+  if (cberg->heights) free(cberg->heights);
 }
 
 XSCREENSAVER_MODULE ("Crackberg", crackberg)
index 8e783dbc0d7d242c7af652f1659c240afd3183be..b7b8acc31fae7c38916e14b8dc9a7742732cd6a7 100644 (file)
@@ -747,7 +747,7 @@ draw_crumbler (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   tick_crumbler (mi);
 
@@ -861,12 +861,14 @@ free_crumbler (ModeInfo *mi)
 {
   crumbler_configuration *bp = &bps[MI_SCREEN(mi)];
   int i;
-  free (bp->trackball);
-  free (bp->rot);
-  free (bp->colors);
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->colors) free (bp->colors);
   for (i = 0; i < bp->nchunks; i++)
     free_chunk (bp->chunks[i]);
-  free (bp->chunks);
+  if (bp->chunks) free (bp->chunks);
 }
 
 
index 451a5239ddb1cb232326e52479700f979ceea8bf..de72206cfe92630a768d918dc365ccfda8aae6e9 100644 (file)
@@ -45,7 +45,6 @@
                    "*showFPS:       False         \n" \
                    "*wireframe:     False         \n"
 
-# define free_cube21 0
 # define release_cube21 0
 #include "xlockmore.h"
 
@@ -915,7 +914,7 @@ ENTRYPOINT void draw_cube21(ModeInfo * mi)
   MI_IS_DRAWN(mi) = True;
   if (!cp->glx_context) return;
   mi->polygon_count = 0;
-  glXMakeCurrent(display, window, *(cp->glx_context));
+  glXMakeCurrent(display, window, *cp->glx_context);
   if (!draw_main(mi, cp)) {
     MI_ABORT(mi);
     return;
@@ -930,11 +929,18 @@ ENTRYPOINT void change_cube21(ModeInfo * mi)
 {
   cube21_conf *cp = &cube21[MI_SCREEN(mi)];
   if (!cp->glx_context) return;
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cp->glx_context);
   init_gl(mi);
 }
 #endif /* !STANDALONE */
 
+ENTRYPOINT void free_cube21(ModeInfo * mi) 
+{
+  cube21_conf *cp = &cube21[MI_SCREEN(mi)];
+  if (!cp->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *cp->glx_context);
+  gltrackball_free (cp->trackball);
+}
 
 XSCREENSAVER_MODULE ("Cube21", cube21)
 
index cc9b0d607250c43380f1848b518ae65836c60064..0ddbb299c2e9d29f9d0af79e822df4a2776c6a22 100644 (file)
@@ -15,7 +15,6 @@
                        "*wireframe:    False       \n" \
                        "*suppressRotationAnimation: True\n" \
 
-# define free_cube 0
 # define release_cube 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -530,7 +529,7 @@ draw_cube (ModeInfo *mi)
     return;
 
   mi->polygon_count = 0;
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cc->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cc->glx_context);
 
   glShadeModel(GL_FLAT);
 
@@ -593,6 +592,27 @@ draw_cube (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_cube (ModeInfo *mi)
+{
+  cube_configuration *cc = &ccs[MI_SCREEN(mi)];
+  if (!cc->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cc->glx_context);
+  if (cc->waves) {
+    free (cc->waves->srcs);
+    free (cc->waves->heights);
+    free (cc->waves);
+  }
+  if (glIsList(cc->cube_list)) glDeleteLists(cc->cube_list, 1);
+  if (cc->rot) free_rotator (cc->rot);
+  if (cc->trackball) gltrackball_free (cc->trackball);
+  if (cc->texture_colors) free (cc->texture_colors);
+  if (cc->cube_colors) free (cc->cube_colors);
+  if (cc->texture) free (cc->texture);
+  if (cc->texture_id) glDeleteTextures (1, &cc->texture_id);
+}
+
 XSCREENSAVER_MODULE_2 ("Cubenetic", cubenetic, cube)
 
 #endif /* USE_GL */
index 70883f6870720d636a073eb5b5381ff923aa6b62..928ad1c279ceb511d1715b990792118b68693426 100644 (file)
@@ -14,7 +14,6 @@
                        "*wireframe:    False       \n" \
                        "*suppressRotationAnimation: True\n" \
 
-# define free_cube 0
 # define release_cube 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -406,7 +405,7 @@ draw_cube (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glPushMatrix ();
@@ -457,6 +456,18 @@ draw_cube (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_cube (ModeInfo *mi)
+{
+  cube_configuration *bp = &bps[MI_SCREEN(mi)];
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->colors) free (bp->colors);
+}
+
 XSCREENSAVER_MODULE_2 ("CubeStack", cubestack, cube)
 
 #endif /* USE_GL */
index cf973c9ae6dd69e3b548351981bc81111a48c66f..afa17977ecac4c8b32894a7ca3010b9b8dcdf4e0 100644 (file)
@@ -17,7 +17,6 @@
                        "*suppressRotationAnimation: True\n" \
 
 
-# define free_cube 0
 # define release_cube 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -391,7 +390,7 @@ draw_cube (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
   glShadeModel(GL_SMOOTH);
@@ -464,6 +463,25 @@ draw_cube (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_cube (ModeInfo *mi)
+{
+  cube_configuration *bp = &bps[MI_SCREEN(mi)];
+  int i;
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->subcubes) {
+    for (i = 0; i < MI_COUNT(mi); i++)
+      free_rotator (bp->subcubes[i].rot);
+    free (bp->subcubes);
+  }
+  if (bp->hist) free (bp->hist);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->colors) free (bp->colors);
+
+}
+
 XSCREENSAVER_MODULE_2 ("CubeStorm", cubestorm, cube)
 
 #endif /* USE_GL */
index 61af2879219bc564d2379a29d0bd54d4ac83d3c2..776e396c5c84c7c4f3abcb68c9fd23f1ca82a047 100644 (file)
@@ -517,7 +517,7 @@ draw_cube (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glShadeModel(GL_SMOOTH);
   glEnable(GL_DEPTH_TEST);
@@ -574,6 +574,8 @@ ENTRYPOINT void
 free_cube (ModeInfo *mi)
 {
   cube_configuration *bp = &bps[MI_SCREEN(mi)];
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
   while (bp->cubes)
     {
       cube *c = bp->cubes->next;
@@ -587,6 +589,8 @@ free_cube (ModeInfo *mi)
       free (bp->oscillators);
       bp->oscillators = o;
     }
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->rot) free_rotator (bp->rot);
 }
 
 
index 34b6c34aed604b91d1d993ecca680343de4b2dbd..d7ef6f2e675f270f54192bbc0c492430172235a9 100644 (file)
@@ -24,7 +24,6 @@
                    "*wireframe:     False         \n" \
                   "*suppressRotationAnimation: True\n" \
 
-# define free_cubicgrid 0
 # define release_cubicgrid 0
 #include "xlockmore.h"
 
@@ -242,7 +241,7 @@ ENTRYPOINT void draw_cubicgrid(ModeInfo * mi)
   cp = &cubicgrid[MI_SCREEN(mi)];
   MI_IS_DRAWN(mi) = True;
   if (!cp->glx_context) return;
-  glXMakeCurrent(display, window, *(cp->glx_context));
+  glXMakeCurrent(display, window, *cp->glx_context);
   if (!draw_main(mi)) {
     MI_ABORT(mi);
     return;
@@ -258,11 +257,20 @@ ENTRYPOINT void change_cubicgrid(ModeInfo * mi)
 {
   cubicgrid_conf *cp = &cubicgrid[MI_SCREEN(mi)];
   if (!cp->glx_context) return;
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cp->glx_context);
   init_gl(mi);
 }
 #endif /* !STANDALONE */
 
+ENTRYPOINT void free_cubicgrid(ModeInfo * mi) 
+{
+  cubicgrid_conf *cp = &cubicgrid[MI_SCREEN(mi)];
+  if (!cp->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *cp->glx_context);
+  gltrackball_free (cp->trackball);
+  free_rotator (cp->rot);
+  if (glIsList(cp->list)) glDeleteLists(cp->list, 1);
+}
 
 XSCREENSAVER_MODULE ("CubicGrid", cubicgrid)
 
index e40ccc531df8731aa37176564ffd9461880dff86..7cb38e05658a9c6b8bab80c5c2afa85fef99e159 100644 (file)
@@ -15,7 +15,6 @@
                        "*wireframe:    False       \n" \
                        "*suppressRotationAnimation: True\n" \
 
-# define free_ball 0
 # define release_ball 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -294,7 +293,7 @@ draw_ball (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glShadeModel(GL_SMOOTH);
 
@@ -359,6 +358,21 @@ draw_ball (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_ball (ModeInfo *mi)
+{
+  ball_configuration *bp = &bps[MI_SCREEN(mi)];
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->colors) free (bp->colors);
+  if (bp->spikes) free (bp->spikes);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (glIsList(bp->ball_list)) glDeleteLists(bp->ball_list, 1);
+  if (glIsList(bp->spike_list)) glDeleteLists(bp->spike_list, 1);
+}
+
 XSCREENSAVER_MODULE_2 ("DangerBall", dangerball, ball)
 
 #endif /* USE_GL */
index 4085c56d124b3ec5fe977c9eb21fb7c2c227a35b..427d7e9956cecc4282202676aa6d598c48b396d2 100644 (file)
@@ -637,7 +637,7 @@ draw_ball (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glShadeModel(GL_SMOOTH);
 
@@ -693,13 +693,17 @@ ENTRYPOINT void
 free_ball (ModeInfo *mi)
 {
   ball_configuration *bp = &bps[MI_SCREEN(mi)];
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
   while (bp->tiles)
     {
       tile *t = bp->tiles->next;
       free (bp->tiles);
       bp->tiles = t;
     }
-  free (bp->rays);
+  if (bp->rays) free (bp->rays);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->rot) free_rotator (bp->rot);
 }
 
 XSCREENSAVER_MODULE_2 ("Discoball", discoball, ball)
index 2b24f8311c74b8060377bdab84e6ac8b49f76998..3afb73c5028c2a197a8d0295d2b2914c39e86fde 100644 (file)
@@ -67,7 +67,6 @@
 #  define CWFONT "-*-helvetica-medium-r-normal-*-*-240-*-*-*-*-*-*"
 # endif
 
-# define free_logo 0
 # define release_logo 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -2944,6 +2943,7 @@ init_logo (ModeInfo *mi)
     dc->color[2] = xcolor.blue  / 65535.0;
     dc->color[3] = 1.0;
 
+    free (color_name);
     color_name = get_string_resource (mi->dpy, "cwForeground", "Foreground");
     for (s2 = color_name + strlen(color_name) - 1; s2 > color_name; s2--)
       if (*s2 == ' ' || *s2 == '\t')
@@ -2956,6 +2956,7 @@ init_logo (ModeInfo *mi)
         fprintf (stderr, "%s: can't parse color %s\n", progname, color_name);
         exit (1);
       }
+    free (color_name);
 
 # ifdef CW
     dc->codeword_color[0] = xcolor.red   / 65535.0;
@@ -2975,6 +2976,7 @@ init_logo (ModeInfo *mi)
         fprintf (stderr, "%s: can't parse color %s\n", progname, color_name);
         exit (1);
       }
+    free (color_name);
 
     dc->codeword_bg[0] = xcolor.red   / 65535.0;
     dc->codeword_bg[1] = xcolor.green / 65535.0;
@@ -3289,7 +3291,7 @@ draw_logo (ModeInfo *mi)
     return;
 
   mi->polygon_count = 0;
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(dc->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *dc->glx_context);
 
   if (!wire &&
       dc->wire_overlay == 0 &&
@@ -3634,6 +3636,35 @@ draw_logo (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_logo (ModeInfo *mi)
+{
+  logo_configuration *dc = &dcs[MI_SCREEN(mi)];
+  if (!dc->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *dc->glx_context);
+  if (dc->trackball) gltrackball_free (dc->trackball);
+# ifdef CW
+  if (dc->codeword_text) free (dc->codeword_text);
+  if (dc->codeword_text_out) free (dc->codeword_text_out);
+  if (dc->scene_rot) free_rotator (dc->scene_rot);
+  if (dc->font) free_texture_font (dc->font);
+# endif
+# ifdef DEBUG
+  if (dc->label_font) free_texture_font (dc->label_font);
+# endif
+  glDeleteLists(dc->helix_list, 1);
+  glDeleteLists(dc->helix_list_wire, 1);
+  glDeleteLists(dc->helix_list_facetted, 1);
+  glDeleteLists(dc->pizza_list, 1);
+  glDeleteLists(dc->pizza_list_wire, 1);
+  glDeleteLists(dc->pizza_list_facetted, 1);
+  glDeleteLists(dc->gasket_list, 1);
+  glDeleteLists(dc->gasket_list_wire, 1);
+  glDeleteLists(dc->frame_list, 1);
+  glDeleteLists(dc->frame_list_wire, 1);
+}
+
 XSCREENSAVER_MODULE_2 ("DNALogo", dnalogo, logo)
 
 #endif /* USE_GL */
index 9ed470c01ac3f2c6a283b9cf3dd78b2396fdbc6a..65b5a806279e5db1410bd089c23603feb37c9bf8 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl -w
-# Copyright Â© 2003-2014 Jamie Zawinski <jwz@jwz.org>
+# Copyright Â© 2003-2018 Jamie Zawinski <jwz@jwz.org>
 #
 # Permission to use, copy, modify, distribute, and sell this software and its
 # documentation for any purpose is hereby granted without fee, provided that
@@ -17,8 +17,8 @@
 #    --normalize      Compute the bounding box of the object, and scale all
 #                     coordinates so that the object fits inside a unit cube.
 #
-#    --smooth         When computing normals for the vertexes, average the
-#                     normals at any edge which is less than 90 degrees.
+#    --smooth [DEG]   When computing normals for the vertexes, average the
+#                     normals at any edge which is less than N degrees.
 #                     If this option is not specified, planar normals will be
 #                     used, resulting in a "faceted" object.
 #
@@ -39,7 +39,7 @@ use Math::Trig qw(acos);
 use Text::Wrap;
 
 my $progname = $0; $progname =~ s@.*/@@g;
-my ($version) = ('$Revision: 1.11 $' =~ m/\s(\d[.\d]+)\s/s);
+my ($version) = ('$Revision: 1.13 $' =~ m/\s(\d[.\d]+)\s/s);
 
 my $verbose = 0;
 
@@ -121,8 +121,8 @@ sub vector_angle($$$$$$) {
 # returns a list of the normals for each vertex.  These are the smoothed
 # normals: the average of the normals of the participating faces.
 #
-sub compute_vertex_normals(@) {
-  my (@points) = @_;
+sub compute_vertex_normals($@) {
+  my ($smooth, @points) = @_;
   my $npoints = ($#points+1) / 3;
   my $nfaces = $npoints / 3;
 
@@ -185,7 +185,7 @@ sub compute_vertex_normals(@) {
         # ignore any adjascent faces that are more than N degrees off.
         my $angle = vector_angle ($norm[0],  $norm[1],  $norm[2],
                                   $fnorm[0], $fnorm[1], $fnorm[2]);
-        next if ($angle >= 30);
+        next if ($angle >= $smooth);
 
         $nx += $fnorm[0];
         $ny += $fnorm[1];
@@ -208,7 +208,7 @@ sub parse_dxf($$$$$) {
 
   # Convert whitespace within a line to _, e.g., "ObjectDBX Classes".
   # What the hell is up with this file format!
-  1 while ($dxf =~ s/([^ \t\n])[ \t]+([^ \t\n])/$1_$2/gs);
+  1 while ($dxf =~ s/([^ \t\n])[ \t\#]+([^ \t\n])/$1_$2/gs);
 
   $dxf =~ s/\r/\n/gs;
 
@@ -455,7 +455,7 @@ sub parse_dxf($$$$$) {
 
 
 sub generate_c_1($$$$$@) {
-  my ($name, $outfile, $smooth_p, $wireframe_p, $normalize_p, @points) = @_;
+  my ($name, $outfile, $smooth, $wireframe_p, $normalize_p, @points) = @_;
 
   my $ccw_p = 1;  # counter-clockwise winding rule for computing normals
 
@@ -463,8 +463,8 @@ sub generate_c_1($$$$$@) {
   my $nfaces = ($wireframe_p ? $npoints/2 : $npoints/3);
 
   my @normals;
-  if ($smooth_p && !$wireframe_p) {
-    @normals = compute_vertex_normals (@points);
+  if ($smooth && !$wireframe_p) {
+    @normals = compute_vertex_normals ($smooth, @points);
 
     if ($#normals != $#points) {
       error ("computed " . (($#normals+1)/3) . " normals for " .
@@ -514,7 +514,7 @@ sub generate_c_1($$$$$@) {
           $nbx, $nby, $nbz,
           $ncx, $ncy, $ncz);
 
-      if ($smooth_p) {
+      if ($smooth) {
         $nax = $normals[$i*9];
         $nay = $normals[$i*9+1];
         $naz = $normals[$i*9+2];
@@ -572,7 +572,7 @@ sub generate_c_1($$$$$@) {
 
 
 sub generate_c($$$$$$) {
-  my ($infile, $outfile, $smooth_p, $wireframe_p, $normalize_p, $layers) = @_;
+  my ($infile, $outfile, $smooth, $wireframe_p, $normalize_p, $layers) = @_;
 
   my $code = '';
 
@@ -594,8 +594,8 @@ sub generate_c($$$$$$) {
             strftime ("%d-%b-%Y", localtime ()) . ".\n" .
             "   " . ($wireframe_p
                      ? "Wireframe."
-                     : ($smooth_p ? 
-                        "Smoothed vertex normals." :
+                     : ($smooth ? 
+                        "Smoothed vertex normals at $smooth\x{00B0}." :
                         "Faceted face normals.")) .
             ($normalize_p ? " Normalized to unit bounding box." : "") .
             "\n" .
@@ -613,7 +613,7 @@ sub generate_c($$$$$$) {
     my $name = $layer ? "${token}_${layer}" : $token;
     my ($c, $np, $nf) =
       generate_c_1 ($name, $outfile,
-                    $smooth_p, $wireframe_p, $normalize_p,
+                    $smooth, $wireframe_p, $normalize_p,
                     @{$layers->{$layer}});
     $code .= $c;
     $npoints += $np;
@@ -648,7 +648,7 @@ sub cmp_files($$) {
 
 
 sub dxf_to_gl($$$$$$) {
-  my ($infile, $outfile, $smooth_p, $normalize_p, $wireframe_p, $layers_p) = @_;
+  my ($infile, $outfile, $smooth, $normalize_p, $wireframe_p, $layers_p) = @_;
 
   open (my $in, "<$infile") || error ("$infile: $!");
   my $filename = ($infile eq '-' ? "<stdin>" : $infile);
@@ -662,14 +662,14 @@ sub dxf_to_gl($$$$$$) {
   my $data = parse_dxf ($filename, $dxf, $normalize_p, $wireframe_p, $layers_p);
 
   $filename = ($outfile eq '-' ? "<stdout>" : $outfile);
-  my $code = generate_c ($infile, $filename, $smooth_p, $wireframe_p,
+  my $code = generate_c ($infile, $filename, $smooth, $wireframe_p,
                          $normalize_p, $data);
 
   if ($outfile eq '-') {
     print STDOUT $code;
   } else {
     my $tmp = "$outfile.tmp";
-    open (my $out, '>', $tmp) || error ("$tmp: $!");
+    open (my $out, '>:utf8', $tmp) || error ("$tmp: $!");
     print $out $code || error ("$filename: $!");
     close $out || error ("$filename: $!");
     if (cmp_files ($filename, $tmp)) {
@@ -702,7 +702,7 @@ sub usage() {
 sub main() {
   my ($infile, $outfile);
   my $normalize_p = 0;
-  my $smooth_p = 0;
+  my $smooth = 0;
   my $wireframe_p = 0;
   my $layers_p = 0;
   while ($_ = $ARGV[0]) {
@@ -710,7 +710,14 @@ sub main() {
     if ($_ eq "--verbose") { $verbose++; }
     elsif (m/^-v+$/) { $verbose += length($_)-1; }
     elsif ($_ eq "--normalize") { $normalize_p = 1; }
-    elsif ($_ eq "--smooth") { $smooth_p = 1; }
+    elsif ($_ eq "--smooth") {
+      if ($ARGV[0] && $ARGV[0] =~ m/^(\d[\d.]*)%?$/s) {
+        $smooth = 0 + $1;
+        shift @ARGV;
+      } else {
+        $smooth = 30;
+      }
+    }
     elsif ($_ eq "--wireframe") { $wireframe_p = 1; }
     elsif ($_ eq "--layers") { $layers_p = 1; }
     elsif (m/^-./) { usage; }
@@ -722,7 +729,7 @@ sub main() {
   $infile  = "-" unless defined ($infile);
   $outfile = "-" unless defined ($outfile);
 
-  dxf_to_gl ($infile, $outfile, $smooth_p, $normalize_p, $wireframe_p, $layers_p);
+  dxf_to_gl ($infile, $outfile, $smooth, $normalize_p, $wireframe_p, $layers_p);
 }
 
 main;
index 711db2e0d20c631a02dbbb6bfab64511fd306b6f..41de70390c0b21ff77a89d6cce293f65c56060bd 100644 (file)
@@ -277,6 +277,7 @@ create_daylight_mask (Display *dpy, Visual *v, int w, int h)
 {
   XImage *image = XCreateImage (dpy, v, 8, ZPixmap, 0, 0, w, h, 8, 0);
   int x, y;
+# undef sun /* Doh */
   XYZ sun;
   double axial_tilt = frand(23.4) / (180/M_PI) * RANDSIGN();
   double dusk = M_PI * 0.035;
@@ -1422,7 +1423,7 @@ draw_planet (ModeInfo * mi)
   glDrawBuffer(GL_BACK);
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
-  glXMakeCurrent (dpy, window, *(gp->glx_context));
+  glXMakeCurrent (dpy, window, *gp->glx_context);
 
   mi->polygon_count = 0;
 
@@ -1631,21 +1632,28 @@ free_planet (ModeInfo * mi)
   planetstruct *gp = &planets[MI_SCREEN(mi)];
   int i;
 
+  if (!gp->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
+
+  if (gp->font_data) free_texture_font (gp->font_data);
+  if (gp->trackball) gltrackball_free (gp->trackball);
+  if (gp->rot) free_rotator (gp->rot);
+  if (gp->rot2) free_rotator (gp->rot2);
+
   if (gp->day)   XDestroyImage (gp->day);
   if (gp->night) XDestroyImage (gp->night);
   if (gp->dusk)  XDestroyImage (gp->dusk);
   if (gp->cvt)   XDestroyImage (gp->cvt);
 
-  for (i = 0; i < gp->nimages; i++)
-    if (gp->images[i]) XDestroyImage (gp->images[i]);
-  free (gp->images);
-
-  if (gp->glx_context) {
-    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(gp->glx_context));
-
-    if (glIsList(gp->starlist))
-      glDeleteLists(gp->starlist, 1);
+  if (gp->images) {
+    for (i = 0; i < gp->nimages; i++)
+      if (gp->images[i]) XDestroyImage (gp->images[i]);
+    free (gp->images);
   }
+
+  if (glIsList(gp->starlist)) glDeleteLists(gp->starlist, 1);
+  if (gp->tex1) glDeleteTextures (1, &gp->tex1);
+  if (gp->tex2) glDeleteTextures (1, &gp->tex2);
 }
 
 
index ddba7f9c34a43119fcd41e4e81442dc1f8d99739..cc5f22c977480b449eb220eadf882efb668d02b9 100644 (file)
@@ -20,7 +20,6 @@
                        "*showFPS:   False \n" \
                       "*wireframe: False \n" \
 
-# define free_chess 0
 # define release_chess 0
 # include "xlockmore.h"
 
@@ -894,7 +893,7 @@ ENTRYPOINT void draw_chess(ModeInfo *mi)
   if(!cs->glx_context)
     return;
 
-  glXMakeCurrent(disp, w, *(cs->glx_context));
+  glXMakeCurrent(disp, w, *cs->glx_context);
 
   /** code for moving a piece */
   if(cs->moving && ++cs->steps == 100) {
@@ -966,6 +965,22 @@ ENTRYPOINT void draw_chess(ModeInfo *mi)
   glXSwapBuffers(disp, w);
 }
 
+
+ENTRYPOINT void free_chess(ModeInfo *mi) 
+{
+  Chesscreen *cs = &qs[MI_SCREEN(mi)];
+  int i;
+  if (!cs->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cs->glx_context);
+  gltrackball_free (cs->trackball);
+  if (cs->piecetexture) glDeleteTextures (1, &cs->piecetexture);
+  if (cs->boardtexture) glDeleteTextures (1, &cs->boardtexture);
+
+  /* this is horrible! List numbers are hardcoded! */
+  for (i = 1; i <= 20; i++)
+    if (glIsList(i)) glDeleteLists(i, 1);
+}
+
 XSCREENSAVER_MODULE_2 ("Endgame", endgame, chess)
 
 #endif
index 7221f0d7e5d48286d414f807d6a78bf248564200..cc8b5b2d516597f918a98cfcf12a443aaca3eef9 100644 (file)
@@ -367,16 +367,19 @@ free_stream (ModeInfo * mi)
   stream_configuration *es = &ess[MI_SCREEN(mi)];
   int i;
 
-  if (es->glx_context) {
-    glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *(es->glx_context));
+  if (!es->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *es->glx_context);
 
-    for (i = 0; i < es->num_streams; i++) {
-      free (es->streams[i].flares);
-      glDeleteTextures (1, &es->streams[i].flare_tex);
-    }
+  if (es->trackball) gltrackball_free (es->trackball);
+  if (es->rot) free_rotator (es->rot);
 
-    free (es->streams);
+  for (i = 0; i < es->num_streams; i++) {
+    free (es->streams[i].flares);
+    glDeleteTextures (1, &es->streams[i].flare_tex);
   }
+
+  if (es->streams) free (es->streams);
+
 }
 
 
@@ -438,7 +441,7 @@ draw_stream (ModeInfo *mi)
   cur_time = (float)(GETSECS(current_time) * 1000 + GETMSECS(current_time) - es->start_time) / 1000.0;
   cur_time *= global_speed;
 
-  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *(es->glx_context));
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *es->glx_context);
 
   glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
index 0f39b8da7af640d7308a7fb42ba032085832053d..ba30d817989fc9c671f7aa80ab802b9a2934bafa 100644 (file)
@@ -27,7 +27,6 @@
                        "*suppressRotationAnimation: True\n" \
        "*titleFont:  -*-helvetica-medium-r-normal-*-*-180-*-*-*-*-*-*\n" \
 
-# define free_engine 0
 # define release_engine 0
 # include "xlockmore.h"              /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
@@ -985,7 +984,7 @@ ENTRYPOINT void draw_engine(ModeInfo *mi)
   if (!e->glx_context)
     return;
 
-  glXMakeCurrent(disp, w, *(e->glx_context));
+  glXMakeCurrent(disp, w, *e->glx_context);
 
 
   mi->polygon_count = display(mi);
@@ -1001,6 +1000,20 @@ ENTRYPOINT void draw_engine(ModeInfo *mi)
   glXSwapBuffers(disp, w);
 }
 
+
+ENTRYPOINT void free_engine(ModeInfo *mi)
+{
+  Engine *e = &engine[MI_SCREEN(mi)];
+  if (!e->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *e->glx_context);
+  if (e->font_data) free_texture_font (e->font_data);
+  free (e->engine_name);
+  gltrackball_free (e->trackball);
+  free_rotator (e->rot);
+  if (glIsList(e->piston_list)) glDeleteLists(e->piston_list, 1);
+  if (glIsList(e->shaft_list)) glDeleteLists(e->shaft_list, 1);
+}
+
 XSCREENSAVER_MODULE ("Engine", engine)
 
 #endif
index 7a0bb0b2b61407c6f4c4696f306b45f55438fb38..e7d85a9f01abb7e57f6ba2c2ab3da90179b6611a 100644 (file)
                  "*reticleColor: #FFFF77\n" \
                  "*textColor:    #FFFFBB\n" \
 
-# define free_esper 0
 # define refresh_esper 0
 # define release_esper 0
 # include "xlockmore.h"
@@ -2327,6 +2326,7 @@ parse_color (ModeInfo *mi, char *key, GLfloat color[4])
                key, string);
       exit (1);
     }
+  free (string);
 
   color[0] = xcolor.red   / 65536.0;
   color[1] = xcolor.green / 65536.0;
@@ -2390,7 +2390,7 @@ draw_esper (ModeInfo *mi)
   if (!ss->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ss->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ss->glx_context);
 
   mi->polygon_count = 0;
 
@@ -2407,6 +2407,31 @@ draw_esper (ModeInfo *mi)
   glXSwapBuffers (MI_DISPLAY (mi), MI_WINDOW(mi));
 }
 
+
+ENTRYPOINT void
+free_esper (ModeInfo *mi)
+{
+  esper_state *ss = &sss[MI_SCREEN(mi)];
+  int i;
+  if (!ss->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ss->glx_context);
+
+  if (ss->font_data) free_texture_font (ss->font_data);
+  for (i = 0; i < ss->nimages; i++) {
+    if (ss->images[i]) {
+      if (ss->images[i]->title) free (ss->images[i]->title);
+      if (ss->images[i]->texid) glDeleteTextures (1, &ss->images[i]->texid);
+      free (ss->images[i]);
+    }
+  }
+  for (i = 0; i < countof(ss->sprites); i++) {
+    if (ss->sprites[i]) {
+      if (ss->sprites[i]->text) free (ss->sprites[i]->text);
+      if (ss->sprites[i]) free (ss->sprites[i]);
+    }
+  }
+}
+
 XSCREENSAVER_MODULE ("Esper", esper)
 
 #endif /* USE_GL */
index 3dee71ce0b386b92ce0d4c425b8c59400a9dd603..f8aaeb560f83e3f67ac6ef39dc1e6a5eb75c6291 100644 (file)
@@ -31,7 +31,6 @@
                                        "*showFPS:       False  \n" \
                                        "*wireframe: False   \n"
 
-# define free_extrusion 0
 # define release_extrusion 0
 # include "xlockmore.h"                                /* from the xscreensaver distribution */
 #else /* !STANDALONE */
@@ -314,7 +313,7 @@ draw_extrusion(ModeInfo * mi)
   if (!gp->glx_context)
        return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(gp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
 
   glPushMatrix();
 
@@ -551,6 +550,17 @@ init_extrusion (ModeInfo * mi)
 
 }
 
+
+ENTRYPOINT void
+free_extrusion (ModeInfo * mi)
+{
+  extrusionstruct *gp = &Extrusion[MI_SCREEN(mi)];
+  if (!gp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
+  if (gp->trackball) gltrackball_free (gp->trackball);
+  if (gp->rot) free_rotator (gp->rot);
+}
+
 XSCREENSAVER_MODULE ("Extrusion", extrusion)
 
 #endif  /* USE_GL */
index c26458c2dc1cb22283514114fe8cefafb38c62a5..fe1643bc4d895a2ad27fc33613a7eaaa5db08e76 100644 (file)
@@ -456,7 +456,7 @@ draw_flipflop(ModeInfo *mi)
     if(!c->glx_context || (textured && !c->got_texture))
         return;
 
-    glXMakeCurrent(disp, w, *(c->glx_context));
+    glXMakeCurrent(disp, w, *c->glx_context);
 
     mi->polygon_count = display(mi);
 
@@ -474,10 +474,14 @@ ENTRYPOINT void
 free_flipflop(ModeInfo *mi)
 {
   Flipflopcreen *c = &qs[MI_SCREEN(mi)];
+  if (!c->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *c->glx_context);
+  if(c->trackball) gltrackball_free(c->trackball);
   if (c->sheet) {
     randsheet_free(c->sheet);
     free (c->sheet);
   }
+  if (c->texid) glDeleteTextures (1, &c->texid);
 }
 
 /*** ADDED RANDSHEET FUNCTIONS ***/
index e4db5df1bf4870536f5b8adbda2ca637e776f9f4..ce3dc7615d48bcf2ae77eccee5ad76b26651125a 100644 (file)
@@ -21,7 +21,6 @@
                  "*useSHM:    True  \n" \
                 "*suppressRotationAnimation: True\n" \
 
-# define free_screenflip 0
 # define release_screenflip 0
 # include "xlockmore.h"                         /* from the xscreensaver distribution */
 # include "gltrackball.h"
@@ -499,7 +498,7 @@ ENTRYPOINT void draw_screenflip(ModeInfo *mi)
   if (c->waiting_for_image_p && c->first_image_p)
     return;
 
-  glXMakeCurrent(disp, w, *(c->glx_context));
+  glXMakeCurrent(disp, w, *c->glx_context);
 
   glBindTexture(GL_TEXTURE_2D, c->texid);
 
@@ -513,6 +512,16 @@ ENTRYPOINT void draw_screenflip(ModeInfo *mi)
   glXSwapBuffers(disp, w);
 }
 
+
+ENTRYPOINT void free_screenflip(ModeInfo *mi)
+{
+  Screenflip *c = &screenflip[MI_SCREEN(mi)];
+  if (!c->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *c->glx_context);
+  gltrackball_free (c->trackball);
+  if (c->texid) glDeleteTextures (1, &c->texid);
+}
+
 XSCREENSAVER_MODULE_2 ("FlipScreen3D", flipscreen3d, screenflip)
 
 #endif
index c233e8b5250af91ccdd630c1b4dc8b54c3f29730..951c18851f1f13b58096ca61d6b598b47cf45b1e 100644 (file)
@@ -798,6 +798,7 @@ ENTRYPOINT void
 init_fliptext (ModeInfo *mi)
 {
   int wire = MI_IS_WIREFRAME(mi);
+  char *s;
 
   fliptext_configuration *sc;
 
@@ -897,9 +898,9 @@ init_fliptext (ModeInfo *mi)
   if (min_lines > max_lines - 3) min_lines = max_lines - 4;
   if (min_lines < 1) min_lines = 1;
 
-  parse_color (mi, "foreground",
-               get_string_resource(mi->dpy, "foreground", "Foreground"),
-               sc->color);
+  s = get_string_resource(mi->dpy, "foreground", "Foreground");
+  parse_color (mi, "foreground", s, sc->color);
+  if (s) free (s);
 
   sc->top_margin = (sc->char_width * 100);
   sc->bottom_margin = -sc->top_margin;
@@ -919,7 +920,7 @@ draw_fliptext (ModeInfo *mi)
   if (!sc->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sc->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sc->glx_context);
 
 #if 0
   if (XtAppPending (app) & (XtIMTimer|XtIMAlternateInput))
@@ -989,11 +990,18 @@ ENTRYPOINT void
 free_fliptext (ModeInfo *mi)
 {
   fliptext_configuration *sc = &scs[MI_SCREEN(mi)];
+  int i;
+  if (!sc->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sc->glx_context);
   if (sc->tc)
     textclient_close (sc->tc);
-  free(sc->lines);
-
-  /* #### there's more to free here */
+  if (sc->texfont) free_texture_font (sc->texfont);
+  for (i = 0; i < sc->nlines; i++)
+    if (sc->lines[i]) {
+      if (sc->lines[i]->text) free (sc->lines[i]->text);
+      free (sc->lines[i]);
+    }
+  if(sc->lines) free(sc->lines);
 }
 
 XSCREENSAVER_MODULE ("FlipText", fliptext)
index c787f59a76e736ff3005538bcd6e1229bea109ac..f1b7e368f83692f16a267e95ec892cace28507fa 100644 (file)
@@ -53,7 +53,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 static GLubyte smallTextureArray[32][32];
 static GLubyte bigTextureArray[256][256][2];
-GLuint theTexture = 0;
 
 /* simple smoothing routine */
 static void SmoothTexture(void)
@@ -187,8 +186,9 @@ static void AverageLastAndFirstTextures(void)
     }
 }
 
-void MakeTexture()
+GLuint MakeTexture(void)
 {
+    GLuint theTexture = 0;
     int i,j;
     for (i=0;i<8;i++)
     {
@@ -221,4 +221,5 @@ void MakeTexture()
 
     gluBuild2DMipmaps(GL_TEXTURE_2D, 2, 256, 256, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, bigTextureArray);
     glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
+    return theTexture;
 }
index c9008a9471ed428f4500ee4c6da2c7e811e2569b..a236f524d668586128ee30c5c5b8df16b98b4321 100644 (file)
@@ -90,6 +90,7 @@ ModStruct   flurry_description = {
 
 global_info_t *flurry_info = NULL;
 
+
 static
 double currentTime(void) {
   struct timeval tv;
@@ -313,7 +314,7 @@ ENTRYPOINT void reshape_flurry(ModeInfo *mi, int width, int height)
 {
     global_info_t *global = flurry_info + MI_SCREEN(mi);
 
-    glXMakeCurrent(MI_DISPLAY(mi), global->window, *(global->glx_context));
+    glXMakeCurrent(MI_DISPLAY(mi), global->window, *global->glx_context);
 
     glViewport(0.0, 0.0, width, height);
     glMatrixMode(GL_PROJECTION);
@@ -506,11 +507,11 @@ draw_flurry(ModeInfo * mi)
        return;
 
     if (global->first) {
-       MakeTexture();
+       global->texid = MakeTexture();
        global->first = 0;
     }
     glDrawBuffer(GL_BACK);
-    glXMakeCurrent(display, window, *(global->glx_context));
+    glXMakeCurrent(display, window, *global->glx_context);
 
     glEnable(GL_BLEND);
     glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
@@ -535,13 +536,12 @@ free_flurry(ModeInfo * mi)
     global_info_t *global = &flurry_info[MI_SCREEN(mi)];
     flurry_info_t *flurry;
 
-    if (global->glx_context) {
-       glXMakeCurrent(MI_DISPLAY(mi), global->window, *(global->glx_context));
-    }
+       if (!global->glx_context) return;
+    glXMakeCurrent(MI_DISPLAY(mi), global->window, *global->glx_context);
 
-    for (flurry = global->flurry; flurry; flurry=flurry->next) {
-       delete_flurry_info(flurry);
-    }
+    for (flurry = global->flurry; flurry; flurry=flurry->next)
+               delete_flurry_info(flurry);
+       if (global->texid) glDeleteTextures (1, &global->texid);
 }
 
 XSCREENSAVER_MODULE ("Flurry", flurry)
index 9bbe4b2580fb5cbb545d198357eaa42e84492160..b4c7787b2d6cb3c17f9a18d381496d323367135f 100644 (file)
@@ -211,7 +211,7 @@ static vector float FastDistance2DV(vector float x, vector float y) {
 
 extern GLuint theTexture;
 
-void MakeTexture(void);
+GLuint MakeTexture(void);
 
 #define OPT_MODE_SCALAR_BASE           0x0
 
@@ -290,6 +290,7 @@ struct _global_info_t {
        double oldFrameTime;
 
        flurry_info_t *flurry;
+        GLuint texid;
 };
 
 #define kNumSpectrumEntries 512
index 19a58972b9f98424e4740c3bf9be1686f94aab9d..a527e8be2c210f7b519008fcf228a4184a4257e9 100644 (file)
@@ -32,7 +32,6 @@
 
 /* #define DEBUG */
 
-# define free_toasters 0
 # define release_toasters 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -796,7 +795,7 @@ draw_toasters (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -863,6 +862,27 @@ draw_toasters (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_toasters (ModeInfo *mi)
+{
+  toaster_configuration *bp = &bps[MI_SCREEN(mi)];
+  int i;
+
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+  if (bp->dlists) free (bp->dlists);
+  if (bp->floaters) free (bp->floaters);
+  if (bp->user_trackball) gltrackball_free (bp->user_trackball);
+  for (i = 0; i < countof(all_objs); i++)
+    if (glIsList(bp->dlists[i])) glDeleteLists(bp->dlists[i], 1);
+  if (bp->toast_texture) glDeleteTextures (1, &bp->toast_texture);
+# ifndef HAVE_JWZGLES
+  if (bp->chrome_texture) glDeleteTextures (1, &bp->chrome_texture);
+# endif
+}
+
 XSCREENSAVER_MODULE_2 ("FlyingToasters", flyingtoasters, toasters)
 
 #endif /* USE_GL */
index eb6b6de5fbe4fdfb92ea7c623c7474338cbc3dfd..b8cbb25c24b8719a652f56758731769cedeecf0a 100644 (file)
@@ -1,4 +1,4 @@
-/* fps, Copyright (c) 2001-2015 Jamie Zawinski <jwz@jwz.org>
+/* fps, Copyright (c) 2001-2018 Jamie Zawinski <jwz@jwz.org>
  * Draw a frames-per-second display (Xlib and OpenGL).
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
@@ -96,3 +96,16 @@ xlockmore_gl_draw_fps (ModeInfo *mi)
                            st->string);
     }
 }
+
+void
+xlockmore_gl_free_fps (fps_state *st)
+{
+  gl_fps_data *data = (gl_fps_data *) st->gl_fps_data;
+  if (data)
+    {
+      if (data->texfont) free_texture_font (data->texfont);
+      free (data);
+      st->gl_fps_data = 0;
+    }
+  fps_free (st);
+}
index 3976f2f13ef98211b63983217cae7dd799323075..feaae8c5f6289dc4974c92c1cfa6e8b4c2861170 100644 (file)
@@ -18,7 +18,6 @@
                        "*wireframe:    False       \n" \
                        "*suppressRotationAnimation: True\n" \
 
-# define free_gears 0
 # define release_gears 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -827,7 +826,7 @@ draw_gears (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glShadeModel(GL_SMOOTH);
 
@@ -933,6 +932,24 @@ gears_handle_event (ModeInfo *mi, XEvent *event)
   return False;
 }
 
+
+ENTRYPOINT void
+free_gears (ModeInfo *mi)
+{
+  gears_configuration *bp = &bps[MI_SCREEN(mi)];
+  int i;
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  for (i = 0; i < bp->ngears; i++)
+    if (bp->gears[i])
+      free_gear (bp->gears[i]);
+  if (glIsList(bp->armature_dlist))
+    glDeleteLists (bp->armature_dlist, 1);
+
+}
+
 XSCREENSAVER_MODULE ("Gears", gears)
 
 #endif /* USE_GL */
index 9ef269680899247142faa97f1cb326c339f84aa5..83fd4ac912bb2713af98fa08300f8d191ac8c70a 100644 (file)
@@ -14,7 +14,6 @@
                        "*showFPS:      False       \n" \
                        "*suppressRotationAnimation: True\n" \
 
-# define free_geodesic 0
 # define release_geodesic 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -625,7 +624,7 @@ draw_geodesic (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   if (! wire)
     glShadeModel(GL_SMOOTH);
@@ -811,6 +810,18 @@ draw_geodesic (ModeInfo *mi)
     }
 }
 
+
+ENTRYPOINT void
+free_geodesic (ModeInfo *mi)
+{
+  geodesic_configuration *bp = &bps[MI_SCREEN(mi)];
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->colors) free (bp->colors);
+}
+
 XSCREENSAVER_MODULE ("Geodesic", geodesic)
 
 #endif /* USE_GL */
index ecc7f26c05ec8e9e25154920c9952b262019c63a..3911b3833277486b085ae69be0801c390b7429eb 100644 (file)
@@ -1325,7 +1325,7 @@ reshape_geodesic (ModeInfo *mi, int width, int height)
     h = height / (GLfloat) width;
   }
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glViewport (0, y, (GLint) width, (GLint) height);
 
@@ -1527,7 +1527,7 @@ draw_geodesic (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
 
   if (bp->draw_time == 0)
@@ -1790,11 +1790,13 @@ free_geodesic (ModeInfo *mi)
   geodesic_configuration *bp = &bps[MI_SCREEN(mi)];
   if (!bp->glx_context)
     return;
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
-  free_texture_font (bp->font);
-  free (bp->colors);
-  free_sphere_gears (mi);
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->font) free_texture_font (bp->font);
+  if (bp->colors) free (bp->colors);
+  if (mi) free_sphere_gears (mi);
   if (bp->desc) free (bp->desc);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->rot) free_rotator (bp->rot);
 }
 
 
index dbbb11c097e462f8093a214976109811ee54f384..63c967613abfdddc048b09fa9257c99f57840362 100644 (file)
@@ -46,7 +46,6 @@
                                         "*useSHM:       True \n" \
                                                                                "*suppressRotationAnimation: True\n" \
 
-# define free_gflux 0
 # define release_gflux 0
 # include "xlockmore.h"                                /* from the xscreensaver distribution */
 #else /* !STANDALONE */
@@ -275,7 +274,7 @@ ENTRYPOINT void draw_gflux(ModeInfo * mi)
     /* Just keep running before the texture has come in. */
     /* if (gp->waiting_for_image_p) return; */
 
-    glXMakeCurrent(display, window, *(gp->glx_context));
+    glXMakeCurrent(display, window, *gp->glx_context);
 
     calcGrid(gp);
     mi->polygon_count = gp->drawFunc(gp);
@@ -382,6 +381,7 @@ ENTRYPOINT void init_gflux(ModeInfo * mi)
                    progname, s);
           exit (1);
         }
+      if (s) free (s);
     }
 
     gp->modeinfo = mi;
@@ -394,6 +394,14 @@ ENTRYPOINT void init_gflux(ModeInfo * mi)
     }
 }
 
+ENTRYPOINT void free_gflux(ModeInfo * mi)
+{
+  gfluxstruct *gp = &gfluxes[MI_SCREEN(mi)];
+  if (!gp->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
+  gltrackball_free (gp->trackball);
+  if (gp->texName) glDeleteTextures (1, &gp->texName);
+}
 
 static void createTexture(gfluxstruct *gp)
 {
index cee020ca2d5ff576cd71d6569e07b5d103a7a17a..d1514d1b189c2a1849eb947ffc8298df846a1066 100644 (file)
@@ -27,7 +27,6 @@
                        "*fpsSolid: True  \n" \
                        "*suppressRotationAnimation: True\n" \
 
-# define free_glblur 0
 # define release_glblur 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -483,7 +482,7 @@ draw_glblur (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   /* Decide what we're drawing
    */
@@ -605,6 +604,29 @@ draw_glblur (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_glblur (ModeInfo *mi)
+{
+  glblur_configuration *bp = &bps[MI_SCREEN(mi)];
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->tex_data) free (bp->tex_data);
+  if (bp->colors0) free (bp->colors0);
+  if (bp->colors1) free (bp->colors1);
+  if (bp->colors2) free (bp->colors2);
+  if (bp->colors3) free (bp->colors3);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (glIsList(bp->obj_dlist0)) glDeleteLists(bp->obj_dlist0, 1);
+  if (glIsList(bp->obj_dlist1)) glDeleteLists(bp->obj_dlist1, 1);
+  if (glIsList(bp->obj_dlist2)) glDeleteLists(bp->obj_dlist2, 1);
+  if (glIsList(bp->obj_dlist3)) glDeleteLists(bp->obj_dlist3, 1);
+  if (glIsList(bp->scene_dlist1)) glDeleteLists(bp->scene_dlist1, 1);
+  if (glIsList(bp->scene_dlist2)) glDeleteLists(bp->scene_dlist2, 1);
+  if (bp->texture) glDeleteTextures (1, &bp->texture);
+}
+
 XSCREENSAVER_MODULE ("GLBlur", glblur)
 
 #endif /* USE_GL */
index adf98666a7fa25cc0ac7bb2a5760cd45158d74ae..b8ee5b876e8f0937e0e4fb1139c649bdcbc4faa1 100644 (file)
@@ -905,6 +905,9 @@ static int create_list( State *st, double fac )
   glNormalPointer( GL_FLOAT, 0, vertex_array->normal );
   glDrawElements( GL_TRIANGLES, vertex_array->num_index, 
                   GL_UNSIGNED_INT, vertex_array->index );
+  free (vertex_array->vertex);
+  free (vertex_array->normal);
+  free (vertex_array->index);
   free( vertex_array );
 #else
   glBegin( GL_TRIANGLES );
@@ -1349,8 +1352,7 @@ draw_glcells( ModeInfo *mi )
   
   if (!st->glx_context) return;
 
-  glXMakeCurrent( MI_DISPLAY(mi), MI_WINDOW(mi), 
-                  *(st->glx_context) );
+  glXMakeCurrent( MI_DISPLAY(mi), MI_WINDOW(mi), *st->glx_context);
   
   mi->polygon_count = render( st );
 
@@ -1366,23 +1368,21 @@ free_glcells( ModeInfo *mi )
   int i;
   State *st  = &sstate[MI_SCREEN(mi)];
 
-  if (st->glx_context) {
-    glXMakeCurrent( MI_DISPLAY(mi), MI_WINDOW(mi),
-                    *(st->glx_context) );
-  
-    /* nuke everything before exit */
-    if (st->sphere) free_Object( st->sphere );
-    if (st->food)   free( st->food );
-    for (i=0; i<NUM_CELL_SHAPES; ++i) {
-      if (st->cell_list[i] != -1) {
-        glDeleteLists( st->cell_list[i], 1 );
-      }
+  if (!st->glx_context) return;
+  glXMakeCurrent( MI_DISPLAY(mi), MI_WINDOW(mi), *st->glx_context);
+
+  if (st->sphere) free_Object( st->sphere );
+  if (st->food)   free( st->food );
+  for (i=0; i<NUM_CELL_SHAPES; ++i) {
+    if (st->cell_list[i] != -1) {
+      glDeleteLists( st->cell_list[i], 1 );
     }
-    if (st->cell) free( st->cell );
-    free( st->disturbance );
-    glDeleteTextures( 1, &st->texture_name );
-    free( st->texture );
   }
+  if (st->cell) free( st->cell );
+  free( st->disturbance );
+  glDeleteTextures( 1, &st->texture_name );
+  free( st->texture );
+  if (glIsList(st->nucleus_list)) glDeleteLists(st->nucleus_list, 1);
 }
 
 XSCREENSAVER_MODULE( "GLCells", glcells )
index ec333880f236d4771fd426c8c7f7a528dd4d5873..60faf3e48e1611323c9dbb9d9f0f350f15d00c94 100644 (file)
@@ -1405,7 +1405,7 @@ ENTRYPOINT void reshape_gleidescope(ModeInfo *mi, int width, int height)
       h = height / (GLfloat) width;
     }
 
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(gp->glx_context));
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
 
        glViewport(0, y, (GLint) width, (GLint) height);
        glMatrixMode(GL_PROJECTION);
@@ -1574,7 +1574,7 @@ draw_gleidescope(ModeInfo * mi)
 
        glDrawBuffer(GL_BACK);
 
-       glXMakeCurrent(display, window, *(gp->glx_context));
+       glXMakeCurrent(display, window, *gp->glx_context);
        draw(mi);
 
        if (mi->fps_p) {
@@ -1608,15 +1608,12 @@ draw_gleidescope(ModeInfo * mi)
 ENTRYPOINT void
 free_gleidescope(ModeInfo * mi)
 {
-       gleidestruct *gp = &gleidescope[MI_SCREEN(mi)];
-
-       /* acd -  is this needed? */
-       if (gp->glx_context) {
-               /* Display lists MUST be freed while their glXContext is current. */
-               glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context));
-
-               /* acd - was code here for freeing things that are no longer in struct */
-       }
+  gleidestruct *gp = &gleidescope[MI_SCREEN(mi)];
+  if (!gp->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
+  if (glIsList(gp->list)) glDeleteLists(gp->list, 1);
+  if (gp->textures[0].id) glDeleteTextures (1, &gp->textures[0].id);
+  if (gp->textures[1].id) glDeleteTextures (1, &gp->textures[1].id);
 }
 
 XSCREENSAVER_MODULE ("Gleidescope", gleidescope)
index bcc9ed7fd47f76daae13d3b3a4cc169d8a61015a..8aa1c977b954af2282625aac1abe29ebd33b3fb4 100644 (file)
@@ -885,6 +885,9 @@ free_fire(ModeInfo * mi)
 {
        firestruct *fs = &fire[MI_SCREEN(mi)];
 
+    if (!fs->glx_context) return;
+    glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *fs->glx_context);
+
        if (mode_font != None && fs->fontbase != None) {
                glDeleteLists(fs->fontbase, mode_font->max_char_or_byte2 -
                        mode_font->min_char_or_byte2 + 1);
@@ -892,15 +895,15 @@ free_fire(ModeInfo * mi)
        }
 
        if (fs->p != NULL) {
-               (void) free((void *) fs->p);
+               free(fs->p);
                fs->p = (part *) NULL;
        }
        if (fs->r != NULL) {
-               (void) free((void *) fs->r);
+               free(fs->r);
                fs->r = (rain *) NULL;
        }
        if (fs->treepos != NULL) {
-               (void) free((void *) fs->treepos);
+               free(fs->treepos);
                fs->treepos = (treestruct *) NULL;
        }
        if (fs->ttexture != None) {
@@ -913,6 +916,8 @@ free_fire(ModeInfo * mi)
                XDestroyImage(fs->gtexture);
                fs->gtexture = None;
        }
+
+    if (fs->trackball) gltrackball_free (fs->trackball);
 }
 
 /*
@@ -989,7 +994,7 @@ ENTRYPOINT void draw_fire(ModeInfo * mi)
     if (!fs->glx_context)
        return;
 
-    glXMakeCurrent(display, window, *(fs->glx_context));
+    glXMakeCurrent(display, window, *fs->glx_context);
 
     glShadeModel(GL_FLAT);
     glEnable(GL_DEPTH_TEST);
@@ -1064,7 +1069,7 @@ ENTRYPOINT void change_fire(ModeInfo * mi)
     if (!fs->glx_context)
        return;
 
-    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(fs->glx_context));
+    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *fs->glx_context);
 
     /* if available, randomly change some values */
     if (do_fog)
index 865930f6736065653a841a6cd1ed57e0a5df37e1..eaf775f10c7032332f8e78e8e227590a89865569 100644 (file)
@@ -1012,6 +1012,8 @@ static int drawTube(GLdouble bottomRadius, GLdouble topRadius,
        glVertex3f(0.0, y, innerRadius);
        glVertex3f(0.0, y, radius);
        glEnd();
+    free (cosCache);
+    free (sinCache);
     return polys;
 }
 
@@ -1855,7 +1857,7 @@ ENTRYPOINT void reshape_glhanoi(ModeInfo * mi, int width, int height)
       h = height / (GLfloat) width;
     }
 
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(glhanoi->glx_context));
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *glhanoi->glx_context);
 
        glViewport(0, y, (GLint) width, (GLint) height);
 
@@ -1962,7 +1964,7 @@ ENTRYPOINT void draw_glhanoi(ModeInfo * mi)
        if(!glhanoi->glx_context)
                return;
 
-    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(glhanoi->glx_context));
+    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *glhanoi->glx_context);
 
        glPolygonMode(GL_FRONT, glhanoi->wire ? GL_LINE : GL_FILL);
 
@@ -2060,25 +2062,32 @@ ENTRYPOINT Bool glhanoi_handle_event(ModeInfo * mi, XEvent * event)
 
 ENTRYPOINT void free_glhanoi(ModeInfo * mi)
 {
+       glhcfg *glh = &glhanoi_cfg[MI_SCREEN(mi)];
        int i;
        int j;
-       glhcfg *glh = &glhanoi_cfg[MI_SCREEN(mi)];
-       if (glh->glx_context) {
-               glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(glh->glx_context));
-               glDeleteLists(glh->floorList, 1);
-               glDeleteLists(glh->baseList, 1);
-               glDeleteLists(glh->poleList, 1);
-                glDeleteLists(glh->textureNames[0], 2);
-               for(j = 0; j < glh->numberOfDisks; ++j) {
-                       glDeleteLists(glh->disk[j].displayList, 1);
-               }
-               free(glh->disk);
-               for(i = 0; i < glh->numberOfPoles; i++) {
-                       if(glh->pole[i].data != NULL) {
-                               free(glh->pole[i].data);
-                       }
-               }
-       }
+
+    if (!glh->glx_context) return;
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *glh->glx_context);
+
+    free_rotator (glh->the_rotator);
+    if (glh->pole) {
+      for (i = 0; i < glh->numberOfPoles; i++)
+        if (glh->pole[i].data) free (glh->pole[i].data);
+      free (glh->pole);
+    }
+    if (glh->diskPos) free (glh->diskPos);
+    if (glh->trailQ) free (glh->trailQ);
+    if (glh->solveStack) free (glh->solveStack);
+
+    glDeleteLists(glh->floorList, 1);
+    glDeleteLists(glh->baseList, 1);
+    glDeleteLists(glh->poleList, 1);
+            glDeleteLists(glh->textureNames[0], 2);
+    for(j = 0; j < glh->numberOfDisks; ++j) {
+        glDeleteLists(glh->disk[j].displayList, 1);
+    }
+    free(glh->disk);
+       glDeleteTextures (N_TEXTURES, glh->textureNames);
 }
 
 XSCREENSAVER_MODULE ("GLHanoi", glhanoi)
index 730cadb19ec9274708b49f8402879ca38b8504df..06be339574cedfc92dff39e6f5f3b25a02168e20 100644 (file)
@@ -18,7 +18,6 @@
                        "*wireframe:    False       \n" \
                        "*suppressRotationAnimation: True\n" \
 
-# define free_knot 0
 # define release_knot 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -348,7 +347,7 @@ draw_knot (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   if (bp->mode == 0)
     {
@@ -440,6 +439,19 @@ draw_knot (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_knot (ModeInfo *mi)
+{
+  knot_configuration *bp = &bps[MI_SCREEN(mi)];
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->colors) free (bp->colors);
+  if (glIsList(bp->knot_list)) glDeleteLists(bp->knot_list, 1);
+}
+
 XSCREENSAVER_MODULE_2 ("GLKnots", glknots, knot)
 
 #endif /* USE_GL */
index 6a9b1fe18529c1c1c42bd23571a6e5774198faad..1e1c4f6d004f6998658725ad7d97ffe5a35be3f3 100644 (file)
@@ -20,7 +20,6 @@
                        "*showFPS:      False         \n" \
                        "*wireframe:    False         \n" \
 
-# define free_matrix 0
 # define release_matrix 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -986,7 +985,7 @@ draw_matrix (ModeInfo *mi)
   if (!mp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -1063,6 +1062,17 @@ draw_matrix (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_matrix (ModeInfo *mi)
+{
+  matrix_configuration *mp = &mps[MI_SCREEN(mi)];
+  if (!mp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
+  if (mp->strips) free (mp->strips);
+  if (mp->texture) glDeleteTextures (1, &mp->texture);
+}
+
 XSCREENSAVER_MODULE_2 ("GLMatrix", glmatrix, matrix)
 
 #endif /* USE_GL */
index f26a4ad2a5cddba9822c29dfe675f7b76d69051a..a2f6889a10a50ad686342745af2be651df3038ae 100644 (file)
@@ -178,6 +178,7 @@ setup_xpm_texture (ModeInfo *mi, const unsigned char *data, unsigned long size)
                GL_RGBA, GL_UNSIGNED_BYTE, image->data);
   sprintf (buf, "builtin texture (%dx%d)", image->width, image->height);
   check_gl_error(buf);
+  XDestroyImage (image);
 }
 
 
@@ -399,7 +400,7 @@ reshape_planet (ModeInfo *mi, int width, int height)
   planetstruct *gp = &planets[MI_SCREEN(mi)];
   GLfloat h = (GLfloat) height / (GLfloat) width;
 
-  glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), gp->window, *gp->glx_context);
 
   glViewport(0, 0, (GLint) width, (GLint) height);
   glMatrixMode(GL_PROJECTION);
@@ -587,7 +588,7 @@ draw_planet (ModeInfo * mi)
   glDrawBuffer(GL_BACK);
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
-  glXMakeCurrent (dpy, window, *(gp->glx_context));
+  glXMakeCurrent (dpy, window, *gp->glx_context);
 
   mi->polygon_count = 0;
 
@@ -831,14 +832,18 @@ free_planet (ModeInfo * mi)
 {
   planetstruct *gp = &planets[MI_SCREEN(mi)];
 
-  if (gp->glx_context) {
-       glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context));
+  if (!gp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), gp->window, *gp->glx_context);
 
-       if (glIsList(gp->platelist))
-         glDeleteLists(gp->platelist, 1);
-       if (glIsList(gp->starlist))
-         glDeleteLists(gp->starlist, 1);
-  }
+  if (glIsList(gp->platelist))   glDeleteLists(gp->platelist, 1);
+  if (glIsList(gp->shadowlist))  glDeleteLists(gp->shadowlist, 1);
+  if (glIsList(gp->latlonglist)) glDeleteLists(gp->latlonglist, 1);
+  if (glIsList(gp->starlist))    glDeleteLists(gp->starlist, 1);
+  glDeleteTextures(1, &gp->tex1);
+  glDeleteTextures(1, &gp->tex2);
+
+  if (gp->trackball) gltrackball_free (gp->trackball);
+  if (gp->rot) free_rotator (gp->rot);
 }
 
 
index 49cfc1154a66025919fb6beaaac0804db1da5e4f..6ad80a9e2ac4bd531c7a329465bb2382b1302dd1 100644 (file)
@@ -16,7 +16,6 @@
                     "*showFPS:      False       \n" \
                     "*wireframe:    False       \n" \
 
-#define free_glschool                  (0)
 #define release_glschool               (0)
 #define glschool_handle_event  (xlockmore_no_events)
 
@@ -124,7 +123,7 @@ reshape_glschool(ModeInfo *mi, int width, int height)
        double                                  aspect = (double)width/(double)height;
        glschool_configuration  *sc = &scs[MI_SCREEN(mi)];
 
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sc->context));
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sc->context);
        if (sc->school != (School *)0) {
                glschool_setBBox(sc->school, -aspect*160, aspect*160, -130, 130, -450, -50.0);
                glDeleteLists(sc->bboxList, 1);
@@ -187,7 +186,7 @@ draw_glschool(ModeInfo *mi)
                return;
        }
 
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sc->context));
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sc->context);
 
         mi->polygon_count = 0;
 
@@ -213,4 +212,20 @@ draw_glschool(ModeInfo *mi)
        glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_glschool(ModeInfo *mi)
+{
+       glschool_configuration  *sc = &scs[MI_SCREEN(mi)];
+
+        if (!sc->context) return;
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sc->context);
+
+        if (sc->school) glschool_freeSchool (sc->school);
+        if (sc->colors) free (sc->colors);
+        if (glIsList(sc->bboxList)) glDeleteLists(sc->bboxList, 1);
+        if (glIsList(sc->goalList)) glDeleteLists(sc->goalList, 1);
+        if (glIsList(sc->fishList)) glDeleteLists(sc->fishList, 1);
+}
+
 XSCREENSAVER_MODULE("GLSchool", glschool)
index 64b1494cbfd15532d542e79f54b6c42671f319f2..77c741cb26b04a3e81eec9b15f2dce0047e9cc47 100644 (file)
@@ -78,7 +78,6 @@
                  "*grabDesktopImages:   False \n" \
                  "*chooseRandomImages:  True  \n"
 
-# define free_slideshow 0
 # define release_slideshow 0
 # include "xlockmore.h"
 
@@ -1068,6 +1067,7 @@ hack_resources (void)
   value.addr = buf2;
   value.size = strlen(buf2);
   XrmPutResource (&db, buf1, "String", &value);
+  free (val);
 #endif
 }
 
@@ -1137,7 +1137,7 @@ draw_slideshow (ModeInfo *mi)
   if (!ss->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ss->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ss->glx_context);
 
   if (ss->awaiting_first_image_p)
     {
@@ -1217,6 +1217,28 @@ draw_slideshow (ModeInfo *mi)
   check_fps (mi);
 }
 
+
+ENTRYPOINT void
+free_slideshow (ModeInfo *mi)
+{
+  slideshow_state *ss = &sss[MI_SCREEN(mi)];
+  int i;
+  if (!ss->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ss->glx_context);
+
+  if (ss->font_data) free_texture_font (ss->font_data);
+  for (i = 0; i < ss->nimages; i++) {
+    if (ss->images[i]) {
+      if (ss->images[i]->title) free (ss->images[i]->title);
+      if (ss->images[i]->texid) glDeleteTextures (1, &ss->images[i]->texid);
+      free (ss->images[i]);
+    }
+  }
+  for (i = 0; i < countof(ss->sprites); i++) {
+    if (ss->sprites[i]) free (ss->sprites[i]);
+  }
+}
+
 XSCREENSAVER_MODULE_2 ("GLSlideshow", glslideshow, slideshow)
 
 #endif /* USE_GL */
index 5f20421537ae6d69eca1e3f8691d48e940dcffc8..8efc681542e875160e46d3e9650dbddea88b18a3 100644 (file)
@@ -144,7 +144,6 @@ static GLfloat angvel;
 #define glsnake_init    init_glsnake
 #define glsnake_display draw_glsnake
 #define glsnake_reshape reshape_glsnake
-#define free_glsnake 0
 #define release_glsnake 0
 #define glsnake_handle_event xlockmore_no_events
 
@@ -2176,7 +2175,7 @@ ENTRYPOINT void glsnake_display(
     if (!bp->glx_context)
        return;
 
-    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 #endif
     
     gl_init(mi);
@@ -2334,6 +2333,20 @@ ENTRYPOINT void glsnake_display(
 #endif
 }
 
+
+#ifndef HAVE_GLUT
+ENTRYPOINT void free_glsnake(ModeInfo * mi) 
+{
+    struct glsnake_cfg * bp = &glc[MI_SCREEN(mi)];
+    if (!bp->glx_context) return;
+    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+    if (bp->font_data) free_texture_font (bp->font_data);
+    if (glIsList(bp->node_solid)) glDeleteLists(bp->node_solid, 1);
+    if (glIsList(bp->node_wire)) glDeleteLists(bp->node_wire, 1);
+}
+#endif
+
+
 #ifdef HAVE_GLUT
 /* anything that needs to be cleaned up goes here */
 static void unmain() 
index 276c44898293dbe175e3286106b3d944eb480ebf..ab5a5120149a74a196f4b8cebd4dcadf0772767f 100644 (file)
@@ -573,7 +573,7 @@ draw_text (ModeInfo *mi)
   if (!tp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(tp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tp->glx_context);
 
   if (tp->reload)
     {
@@ -650,8 +650,18 @@ ENTRYPOINT void
 free_text(ModeInfo * mi)
 {
   text_configuration *tp = &tps[MI_SCREEN(mi)];
+
+  if (!tp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tp->glx_context);
+
   if (tp->tc)
     textclient_close (tp->tc);
+  if (tp->text) free (tp->text);
+  if (tp->trackball) gltrackball_free (tp->trackball);
+  if (tp->rot) free_rotator (tp->rot);
+  if (tp->rot2) free_rotator (tp->rot2);
+  if (tp->colors) free (tp->colors);
+  if (glIsList(tp->text_list)) glDeleteLists(tp->text_list, 1);
 }
 
 
index 57b4b99131e2ece5b7449166642c8bf620479176..9e3314cdaeab36c7b040a6438bef2a02e155b306 100644 (file)
@@ -76,6 +76,13 @@ gltrackball_init (int ignore_device_rotation_p)
   return ts;
 }
 
+void
+gltrackball_free (trackball_state *ts)
+{
+  free (ts);
+}
+
+
 /* Device rotation interacts very strangely with mouse positions.
    I'm not entirely sure this is the right fix.
  */
index ba9e574691e76f46f1eea03d31db976e71d62d39..2ccfb9ac7de83707168ec47bac90185de71da9c5 100644 (file)
@@ -19,6 +19,7 @@ typedef struct trackball_state trackball_state;
    to make dragging the mouse on the window of a GL program do the right thing.
  */
 extern trackball_state *gltrackball_init (int ignore_device_rotation_p);
+extern void gltrackball_free (trackball_state *);
 
 /* Begin tracking the mouse: Call this when the mouse button goes down.
    x and y are the mouse position relative to the window.
diff --git a/hacks/glx/handsy.c b/hacks/glx/handsy.c
new file mode 100644 (file)
index 0000000..077df76
--- /dev/null
@@ -0,0 +1,1175 @@
+/* handsy, Copyright (c) 2018 Jamie Zawinski <jwz@jwz.org>
+ *
+ * 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.
+ */
+
+#define DEFAULTS       "*delay:        30000       \n" \
+                       "*count:        2           \n" \
+                       ".foreground:   #8888CC"   "\n" \
+                       "*groundColor:  #0000FF"   "\n" \
+                       "*showFPS:      False       \n" \
+                       "*wireframe:    False       \n"
+
+# define release_hands 0
+#undef countof
+#define countof(x) (sizeof((x))/sizeof((*x)))
+
+#include "xlockmore.h"
+#include "sphere.h"
+#include "tube.h"
+#include "rotator.h"
+#include "gltrackball.h"
+#include "gllist.h"
+#include <ctype.h>
+
+#ifdef USE_GL /* whole file */
+
+
+#define DEF_SPEED       "1.0"
+#define DEF_SPIN        "XY"
+#define DEF_WANDER      "True"
+#define DEF_FACE_FRONT  "True"
+#define DEF_DEBUG       "False"
+
+extern const struct gllist
+ *handsy_model_finger_distal, *handsy_model_finger_intermediate,
+  *handsy_model_finger_proximal, *handsy_model_finger_metacarpal,
+  *handsy_model_thumb_distal, *handsy_model_thumb_proximal,
+  *handsy_model_thumb_metacarpal, *handsy_model_palm;
+static struct gllist *ground = 0;
+
+static const struct gllist * const *all_objs[] = {
+  &handsy_model_finger_distal, &handsy_model_finger_intermediate,
+  &handsy_model_finger_proximal, &handsy_model_finger_metacarpal,
+  &handsy_model_thumb_distal, &handsy_model_thumb_proximal,
+  &handsy_model_thumb_metacarpal, &handsy_model_palm,
+  (const struct gllist * const *) &ground
+};
+
+#define FINGER_DISTAL       0
+#define FINGER_INTERMEDIATE 1
+#define FINGER_PROXIMAL     2
+#define FINGER_METACARPAL   3
+#define THUMB_DISTAL        4
+#define THUMB_PROXIMAL      5
+#define THUMB_METACARPAL    6
+#define PALM                7
+#define GROUND              8
+
+
+/* 'hand_geom' describes the position and extent of the various joints.
+   'hand' describes the current flexion of the joints in that model.
+   'hand_anim' is a list of positions and timings describing an animation.
+   'hands_configuration' is the usual global state structure.
+ */
+
+typedef struct {
+  double min, max;     /* +- pi */
+} joint;
+
+typedef struct {
+  joint bones[4];
+  joint base;
+} finger;
+
+typedef struct {
+  finger fingers[5];
+  joint palm;
+  joint wrist1;
+  joint wrist2;
+} hand_geom;
+
+static const hand_geom human_hand = {
+ {{{{  0.0, 1.6 },         /* thumb distal */
+    {  0.0, 1.6 },         /* thumb proximal */
+    {  0.0, 1.6 },         /* thumb metacarpal */
+    {  0.0, 0.0 }},        /* none */
+   { -1.70, 0.00 }},
+  {{{ -0.2, 1.6 },         /* index distal */
+    { -0.2, 1.6 },         /* index intermediate */
+    { -0.2, 1.6 },         /* index proximal */
+    {  0.0, 0.0 }},        /* index metacarpal */
+   { -0.25, 0.25 }},
+  {{{ -0.2, 1.6 },         /* middle distal */
+    { -0.2, 1.6 },         /* middle intermediate */
+    { -0.2, 1.6 },         /* middle proximal */
+    {  0.0, 0.0 }},        /* middle metacarpal */
+   { -0.25, 0.25 }},
+  {{{ -0.2, 1.6 },         /* ring distal */
+    { -0.2, 1.6 },         /* ring intermediate */
+    { -0.2, 1.6 },         /* ring proximal */
+    {  0.0, 0.0 }},        /* ring metacarpal */
+   { -0.25, 0.25 }},
+  {{{ -0.2, 1.6 },         /* pinky distal */
+    { -0.2, 1.6 },         /* pinky intermediate */
+    { -0.2, 1.6 },         /* pinky proximal */
+    {  0.0, 0.0 }},        /* pinky metacarpal */
+   { -0.25, 0.25 }}},
+ { -0.7, 1.5 },                    /* palm (wrist up/down) */
+ { -M_PI, M_PI },          /* wrist left/right */
+ { -M_PI, M_PI },          /* wrist rotate */
+};
+
+typedef struct {
+  double joint[countof(human_hand.fingers)]            /* +- pi */     
+              [countof(human_hand.fingers[0].bones)];
+  double base[countof(human_hand.fingers)];
+  double wrist[3];  /* up/down, left/right, rotate */
+  double pos[3];    /* XYZ */
+  Bool sinister;
+  double alpha;
+} hand;
+
+typedef struct {
+  const hand * const dest;
+  double duration, pause;
+  double pos[3], rot[3];    /* XYZ */
+} hand_anim;
+
+typedef struct {
+  const hand_anim * const pair[2];     /* L/R */
+  double delay;                                /* Delay added to R */
+} hand_anim_pair;
+
+typedef struct {
+  GLXContext *glx_context;
+  rotator *rot, *rot2;
+  trackball_state *trackball;
+  Bool spinx, spiny, spinz;
+  Bool button_down_p;
+
+  const hand_geom *geom;
+  GLuint *dlists;
+  int nhands;
+
+  struct {
+    const hand_anim *anim;
+    int anim_hands; /* frames in animation */
+    int anim_hand;  /* pos in anim, L/R */
+    double anim_start, anim_time;
+    double tick;
+    double delay;
+  } pair[2];
+
+  struct { hand from, to, current; } *hands;
+  GLfloat color[4];
+  Bool ringp;
+
+} hands_configuration;
+
+#include "handsy_anim.h"
+
+
+static hands_configuration *bps = NULL;
+
+static GLfloat speed;
+static char *do_spin;
+static Bool do_wander;
+static Bool face_front_p;
+static Bool debug_p;
+
+static XrmOptionDescRec opts[] = {
+  { "-speed",   ".speed",     XrmoptionSepArg, 0 },
+  { "-spin",    ".spin",      XrmoptionSepArg, 0 },
+  { "+spin",    ".spin",      XrmoptionNoArg, "" },
+  { "-wander",  ".wander",    XrmoptionNoArg, "True" },
+  { "+wander",  ".wander",    XrmoptionNoArg, "False" },
+  { "-front",   ".faceFront", XrmoptionNoArg, "True" },
+  { "+front",   ".faceFront", XrmoptionNoArg, "False" },
+  { "-debug",  ".debug",  XrmoptionNoArg, "True" },
+  { "+debug",  ".debug",  XrmoptionNoArg, "False" },
+};
+
+static argtype vars[] = {
+  {&do_spin,      "spin",      "Spin",      DEF_SPIN,       t_String},
+  {&do_wander,    "wander",    "Wander",    DEF_WANDER,     t_Bool},
+  {&face_front_p, "faceFront", "FaceFront", DEF_FACE_FRONT, t_Bool},
+  {&speed,        "speed",     "Speed",     DEF_SPEED,      t_Float},
+  {&debug_p,      "debug",     "Debug",     DEF_DEBUG,      t_Bool},
+};
+
+ENTRYPOINT ModeSpecOpt hands_opts = {countof(opts), opts, countof(vars), vars, NULL};
+
+
+/* Returns the current time in seconds as a double.
+ */
+static double
+double_time (void)
+{
+  struct timeval now;
+# ifdef GETTIMEOFDAY_TWO_ARGS
+  struct timezone tzp;
+  gettimeofday(&now, &tzp);
+# else
+  gettimeofday(&now);
+# endif
+
+  return (now.tv_sec + ((double) now.tv_usec * 0.000001));
+}
+
+
+static double
+constrain_joint (double v, double min, double max)
+{
+  if (v < min) v = min;
+  else if (v > max) v = max;
+  return v;
+}
+
+
+static void
+draw_hand (ModeInfo *mi, hand *h)
+{
+  hands_configuration *bp = &bps[MI_SCREEN(mi)];
+  int wire = MI_IS_WIREFRAME(mi);
+  int finger;
+  int off = h->sinister ? -1 : 1;
+  int nfingers = countof (bp->geom->fingers);
+  int nbones   = countof (bp->geom->fingers[0].bones);
+
+  glLineWidth (1);
+  glPushMatrix();
+
+  glTranslatef (off * h->pos[0], h->pos[1], h->pos[2]);
+  glRotatef (h->wrist[1] * 180 / M_PI * -off, 0, 1, 0);
+  glRotatef (h->wrist[2] * 180 / M_PI * -off, 0, 0, 1);
+  glRotatef (h->wrist[0] * 180 / M_PI,        1, 0, 0);
+
+  bp->color[3] = h->alpha;
+  glColor4fv (bp->color);
+  glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, bp->color);
+
+  if (!wire) glEnable (GL_BLEND);
+
+  glPushMatrix();
+  if (h->sinister)
+    {
+      glScalef (-1, 1, 1);
+      glFrontFace (GL_CW);
+    }
+  else
+    glFrontFace (GL_CCW);
+  glCallList (bp->dlists[PALM]);
+  glPopMatrix();
+
+  for (finger = 0; finger < nfingers; finger++)
+    {
+      int bone = nbones - 2;
+      glPushMatrix();
+      if (finger == 0)   /* thumb */
+        {
+          glTranslatef (off * 0.113, -0.033, 0.093);
+          glRotatef (off * 45, 0, 1, 0);
+
+          if (h->sinister)
+            glRotatef (180, 0, 0, 1);
+
+          glRotatef (off * h->base[finger] * -180 / M_PI, 1, 0, 0);
+          bone--;
+
+          glFrontFace (GL_CCW);
+          glCallList (bp->dlists[THUMB_METACARPAL]);
+          glPushMatrix();
+          glScalef (1, -1, 1);
+          glFrontFace (GL_CW);
+          glCallList (bp->dlists[THUMB_METACARPAL]);
+          glPopMatrix();
+
+          glTranslatef (0, 0, 0.1497);
+          glRotatef (h->joint[finger][bone] * -180 / M_PI, 0, 1, 0);
+          bone--;
+
+          glFrontFace (GL_CCW);
+          glCallList (bp->dlists[THUMB_PROXIMAL]);
+          glPushMatrix();
+          glScalef (1, -1, 1);
+          glFrontFace (GL_CW);
+          glCallList (bp->dlists[THUMB_PROXIMAL]);
+          glPopMatrix();
+
+          glTranslatef (0, 0, 0.1212);
+          glRotatef (h->joint[finger][bone] * -180 / M_PI, 0, 1, 0);
+          bone--;
+
+          glFrontFace (GL_CCW);
+          glCallList (bp->dlists[THUMB_DISTAL]);
+          glPushMatrix();
+          glScalef (1, -1, 1);
+          glFrontFace (GL_CW);
+          glCallList (bp->dlists[THUMB_DISTAL]);
+          glPopMatrix();
+        }
+      else
+        {
+          switch (finger) {
+          case 1: /* index */
+            glTranslatef (off * 0.135, 0.004, 0.26835);
+            glRotatef (off * 4, 0, 1, 0);
+            break;
+          case 2: /* middle */
+            glTranslatef (off * 0.046, 0.004, 0.27152);
+            glRotatef (off * 1, 0, 1, 0);
+            break;
+          case 3: /* ring */
+            glTranslatef (off * -0.046, 0.004, 0.25577);
+            glRotatef (off * -1, 0, 1, 0);
+            break;
+          case 4: /* pinky */
+            glTranslatef (off * -0.135, 0.004, 0.22204);
+            glRotatef (off * -4, 0, 1, 0);
+            break;
+          default: abort(); break;
+          }
+
+          glRotatef (90, 0, 0, 1);
+
+          glFrontFace (GL_CCW);
+          glCallList (bp->dlists[FINGER_METACARPAL]);
+          glPushMatrix();
+          glScalef (1, -1, 1);
+          glFrontFace (GL_CW);
+          glCallList (bp->dlists[FINGER_METACARPAL]);
+          glPopMatrix();
+
+          glTranslatef (0, 0, 0.1155);
+          glRotatef (off * h->base[finger] * -180 / M_PI, 1, 0, 0);
+          glRotatef (h->joint[finger][bone] * -180 / M_PI, 0, 1, 0);
+          bone--;
+
+          glFrontFace (GL_CCW);
+          glCallList (bp->dlists[FINGER_PROXIMAL]);
+          glPushMatrix();
+          glScalef (1, -1, 1);
+          glFrontFace (GL_CW);
+          glCallList (bp->dlists[FINGER_PROXIMAL]);
+          glPopMatrix();
+
+          glTranslatef (0, 0, 0.1815);
+          glRotatef (h->joint[finger][bone] * -180 / M_PI, 0, 1, 0);
+          bone--;
+
+          glFrontFace (GL_CCW);
+          glCallList (bp->dlists[FINGER_INTERMEDIATE]);
+          glPushMatrix();
+          glScalef (1, -1, 1);
+          glFrontFace (GL_CW);
+          glCallList (bp->dlists[FINGER_INTERMEDIATE]);
+          glPopMatrix();
+
+          glTranslatef (0, 0, 0.1003);
+          glRotatef (h->joint[finger][bone] * -180 / M_PI, 0, 1, 0);
+          bone--;
+
+          glFrontFace (GL_CCW);
+          glCallList (bp->dlists[FINGER_DISTAL]);
+          glPushMatrix();
+          glScalef (1, -1, 1);
+          glFrontFace (GL_CW);
+          glCallList (bp->dlists[FINGER_DISTAL]);
+          glPopMatrix();
+        }
+      glPopMatrix();
+    }
+  glPopMatrix();
+
+  if (h->sinister && bp->ringp)
+    {
+      GLfloat color[] = { 1.0, 0.4, 0.4, 1 };
+      GLfloat center = 0.4;
+      GLfloat th;
+      GLfloat r = center - h->pos[0] + 0.1;
+      GLfloat min = 0.22;
+      if (r < min) r = min;
+      glPushMatrix();
+      glTranslatef (-center, -0.28, 0.5);
+      glRotatef (h->wrist[2] * 180 / M_PI * -off, 0, 0, 1);
+      glRotatef (h->wrist[0] * 180 / M_PI,        1, 0, 0);
+
+      glColor4fv (color);
+      glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color);
+      glDisable (GL_LIGHTING);
+      glLineWidth (8);
+      glBegin (GL_LINE_LOOP);
+      for (th = 0; th < M_PI * 2; th += M_PI / 180)
+        glVertex3f (r * cos(th), r * sin(th), 0);
+      glEnd();
+      if (! wire) glEnable (GL_LIGHTING);
+      glPopMatrix();
+    }
+
+  glDisable (GL_BLEND);
+}
+
+
+static void
+parse_color (ModeInfo *mi, char *key, GLfloat color[4])
+{
+  XColor xcolor;
+  char *string = get_string_resource (mi->dpy, key, "Color");
+  if (!XParseColor (mi->dpy, mi->xgwa.colormap, string, &xcolor))
+    {
+      fprintf (stderr, "%s: unparsable color in %s: %s\n", progname,
+               key, string);
+      exit (1);
+    }
+  free (string);
+
+  color[0] = xcolor.red   / 65536.0;
+  color[1] = xcolor.green / 65536.0;
+  color[2] = xcolor.blue  / 65536.0;
+  color[3] = 1;
+}
+
+
+static int
+draw_ground (ModeInfo *mi)
+{
+  int wire = MI_IS_WIREFRAME(mi);
+  GLfloat i, j, k;
+
+  /* When using fog, iOS apparently doesn't like lines or quads that are
+     really long, and extend very far outside of the scene. Maybe?  If the
+     length of the line (cells * cell_size) is greater than 25 or so, lines
+     that are oriented steeply away from the viewer tend to disappear
+     (whether implemented as GL_LINES or as GL_QUADS).
+
+     So we do a bunch of smaller grids instead of one big one.
+  */
+  int cells = 30;
+  GLfloat cell_size = 0.8;
+  int points = 0;
+  int grids = 12;
+  GLfloat color[4];
+
+  if (wire) glLineWidth (1);
+
+  parse_color (mi, "groundColor", color);
+
+  glPushMatrix();
+
+  glScalef (0.2, 0.2, 0.2);
+
+  glRotatef (frand(90), 0, 0, 1);
+
+  if (!wire)
+    {
+      GLfloat fog_color[4] = { 0, 0, 0, 1 };
+
+      glLineWidth (4);
+      glEnable (GL_LINE_SMOOTH);
+      glHint (GL_LINE_SMOOTH_HINT, GL_NICEST);
+      glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
+      glEnable (GL_BLEND);
+
+      glFogi (GL_FOG_MODE, GL_EXP2);
+      glFogfv (GL_FOG_COLOR, fog_color);
+      glFogf (GL_FOG_DENSITY, 0.015);
+      glFogf (GL_FOG_START, -cells/2 * cell_size * grids);
+      glEnable (GL_FOG);
+    }
+
+  glColor4fv (color);
+  glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color);
+
+  glTranslatef (-cells * grids * cell_size / 2,
+                -cells * grids * cell_size / 2, 0);
+
+  for (j = 0; j < grids; j++)
+    {
+      glPushMatrix();
+      for (k = 0; k < grids; k++)
+        {
+          glBegin (GL_LINES);
+          for (i = -cells/2; i < cells/2; i++)
+            {
+              GLfloat a = i * cell_size;
+              GLfloat b = cells/2 * cell_size;
+              glVertex3f (a, -b, 0); glVertex3f (a, b, 0); points++;
+              glVertex3f (-b, a, 0); glVertex3f (b, a, 0); points++;
+            }
+          glEnd();
+          glTranslatef (cells * cell_size, 0, 0);
+        }
+      glPopMatrix();
+      glTranslatef (0, cells * cell_size, 0);
+    }
+
+  if (!wire)
+    {
+      glDisable (GL_LINE_SMOOTH);
+      glDisable (GL_BLEND);
+      glDisable (GL_FOG);
+    }
+
+  glPopMatrix();
+
+  return points;
+}
+
+
+ENTRYPOINT void
+reshape_hands (ModeInfo *mi, int width, int height)
+{
+  GLfloat h = (GLfloat) height / (GLfloat) width;
+  int y = 0;
+
+  glViewport (0, y, (GLint) width, (GLint) height);
+
+  glMatrixMode(GL_PROJECTION);
+  glLoadIdentity();
+  gluPerspective (30.0, 1/h, 1.0, 100.0);
+
+  glMatrixMode(GL_MODELVIEW);
+  glLoadIdentity();
+  gluLookAt( 0.0, 0.0, 30.0,
+             0.0, 0.0, 0.0,
+             0.0, 1.0, 0.0);
+
+  glClear(GL_COLOR_BUFFER_BIT);
+}
+
+
+ENTRYPOINT Bool
+hands_handle_event (ModeInfo *mi, XEvent *event)
+{
+  hands_configuration *bp = &bps[MI_SCREEN(mi)];
+  Bool ok = False;
+
+  if (gltrackball_event_handler (event, bp->trackball,
+                                 MI_WIDTH (mi), MI_HEIGHT (mi),
+                                 &bp->button_down_p))
+    ok = True;
+  else if (debug_p && event->type == KeyPress)
+    {
+      int nfingers = countof (bp->geom->fingers);
+      int nbones   = countof (bp->geom->fingers[0].bones);
+      KeySym keysym;
+      char c = 0;
+      Bool tiltp = False;
+      double delta = 0.02;
+      double sign = 1;
+      int i, j, k;
+
+      XLookupString (&event->xkey, &c, 1, &keysym, 0);
+
+      for (i = 0; i < bp->nhands; i++)
+        {
+          hand *h = &bp->hands[i].current;
+          Bool modp = !!event->xkey.state;
+
+          switch (keysym) {
+          case XK_Up:    ok = True; h->pos[(modp ? 1 : 2)] += delta; break;
+          case XK_Down:  ok = True; h->pos[(modp ? 1 : 2)] -= delta; break;
+          case XK_Right: ok = True; h->pos[0] += delta; break;
+          case XK_Left:  ok = True; h->pos[0] -= delta; break;
+          default: break;
+          }
+
+          switch (c) {
+          case '?': case '/':
+            ok = True;
+            fprintf (stderr, "\n"
+                     " Open fingers:   12345 (1 = pinky, 5 = thumb)\n"
+                     " Close fingers:  QWERT\n"
+                     " Tilt left:      ASDFG\n"
+                     " Tilt right:     ZXCVB\n"
+                     " Bend wrist:     UJ (up/down)\n"
+                     " Bend wrist:     IK (left/right)\n"
+                     " Rotate wrist:   OL\n"
+                     " Move origin:    arrow keys: XZ plane; shift: XY plane\n"
+                     " Tab:            print current state to stdout\n"
+                     " 0:              Reset\n"
+                     " ?:              This\n\n");
+            return ok;
+            break;
+
+
+          case '1': case '!': j = 4; sign = -1; goto FINGER;
+          case '2': case '@': j = 3; sign = -1; goto FINGER;
+          case '3': case '#': j = 2; sign = -1; goto FINGER;
+          case '4': case '$': j = 1; sign = -1; goto FINGER;
+          case '5': case '%': j = 0; sign = -1; goto FINGER;
+
+          case 'q': case 'Q': j = 4; sign = 1; goto FINGER;
+          case 'w': case 'W': j = 3; sign = 1; goto FINGER;
+          case 'e': case 'E': j = 2; sign = 1; goto FINGER;
+          case 'r': case 'R': j = 1; sign = 1; goto FINGER;
+          case 't': case 'T': j = 0; sign = 1; goto FINGER;
+            
+          case 'a': case 'A': tiltp = True; j = 4; sign = 1; goto FINGER;
+          case 's': case 'S': tiltp = True; j = 3; sign = 1; goto FINGER;
+          case 'd': case 'D': tiltp = True; j = 2; sign = 1; goto FINGER;
+          case 'f': case 'F': tiltp = True; j = 1; sign = 1; goto FINGER;
+          case 'g': case 'G': tiltp = True; j = 0; sign = 1; goto FINGER;
+
+          case 'z': case 'Z': tiltp = True; j = 4; sign = -1; goto FINGER;
+          case 'x': case 'X': tiltp = True; j = 3; sign = -1; goto FINGER;
+          case 'c': case 'C': tiltp = True; j = 2; sign = -1; goto FINGER;
+          case 'v': case 'V': tiltp = True; j = 1; sign = -1; goto FINGER;
+          case 'b': case 'B': tiltp = True; j = 0; sign = -1; goto FINGER;
+          FINGER:
+            ok = True;
+            if (tiltp)
+              h->base[j] = constrain_joint (h->base[j] + sign * delta,
+                                            bp->geom->fingers[j].base.min,
+                                            bp->geom->fingers[j].base.max);
+            else
+              for (k = 0; k < nbones; k++)
+                h->joint[j][k] =
+                  constrain_joint (h->joint[j][k] + sign * delta,
+                                   bp->geom->fingers[j].bones[k].min,
+                                   bp->geom->fingers[j].bones[k].max);
+            break;
+
+          case 'u': case 'U': ok = True; h->wrist[0] -= delta; break;
+          case 'j': case 'J': ok = True; h->wrist[0] += delta; break;
+          case 'i': case 'I': ok = True; h->wrist[1] += delta; break;
+          case 'k': case 'K': ok = True; h->wrist[1] -= delta; break;
+          case 'o': case 'O': ok = True; h->wrist[2] -= delta; break;
+          case 'l': case 'L': ok = True; h->wrist[2] += delta; break;
+
+          case '0': case ')':
+            ok = True;
+            for (j = 0; j < nfingers; j++)
+              {
+                h->base[j] = 0;
+                for (k = 0; k < nbones; k++)
+                  h->joint[j][k] = 0;
+              }
+            for (j = 0; j < 3; j++)
+              h->wrist[j] = 0;
+            for (j = 0; j < 3; j++)
+              h->pos[j] = 0;
+            break;
+
+          case '\t':
+            ok = True;
+            fprintf (stdout, "\nstatic const hand H = {\n  {");
+            for (i = 0; i < nfingers; i++)
+              {
+                if (i > 0) fprintf (stdout, "   ");
+                fprintf (stdout, "{");
+                for (j = 0; j < nbones; j++)
+                  {
+                    double v = h->joint[i][j];
+                    if (i == 0 && j == 3) v = 0;  /* no thumb intermediate */
+                    if (j == 0) fprintf (stdout, " ");
+                    fprintf (stdout, "%.2f", v);
+                    if (j < nbones-1) fprintf (stdout, ", ");
+                  }
+                fprintf (stdout, " }");
+                if (i < nfingers-1) fprintf (stdout, ",\n");
+              }
+            fprintf (stdout, "},\n  { ");
+            for (i = 0; i < nfingers; i++)
+              {
+                fprintf (stdout, "%.2f", h->base[i]);
+                if (i < nfingers-1) fprintf (stdout, ", ");
+              }
+            fprintf (stdout, " },\n");
+            fprintf (stdout, "  { %.2f, %.2f, %.2f },\n",
+                     h->wrist[0], h->wrist[1], h->wrist[2]);
+            fprintf (stdout, "  { %.2f, %.2f, %.2f },\n",
+                     h->pos[0], h->pos[1], h->pos[2]);
+            fprintf (stdout, "  True\n};\n\n");
+            fflush (stdout);
+            return ok;
+            break;
+
+          default: break;
+          }
+        }
+    }
+  return ok;
+}
+
+
+ENTRYPOINT void 
+init_hands (ModeInfo *mi)
+{
+  hands_configuration *bp;
+  int wire = MI_IS_WIREFRAME(mi);
+  hand def[2];
+  int i;
+
+  MI_INIT (mi, bps);
+  bp = &bps[MI_SCREEN(mi)];
+
+  bp->glx_context = init_GL(mi);
+
+  reshape_hands (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+
+  bp->pair[0].tick = bp->pair[1].tick = 1.0;
+  bp->geom = &human_hand;
+  bp->nhands = MI_COUNT(mi);
+  if (bp->nhands <= 0) bp->nhands = 1;
+
+  if (bp->nhands & 1) bp->nhands++;  /* Even number */
+
+  if (debug_p)
+    {
+      bp->nhands = 1;
+      do_spin = "";
+      do_wander = False;
+    }
+
+  bp->hands = calloc (bp->nhands, sizeof(*bp->hands));
+
+  {
+    double spin_speed   = 0.5 * speed;
+    double wander_speed = 0.005 * speed;
+    double tilt_speed   = 0.001 * speed;
+    double spin_accel   = 0.5;
+
+    char *s = do_spin;
+    while (*s)
+      {
+        if      (*s == 'x' || *s == 'X') bp->spinx = True;
+        else if (*s == 'y' || *s == 'Y') bp->spiny = True;
+        else if (*s == 'z' || *s == 'Z') bp->spinz = True;
+        else if (*s == '0') ;
+        else
+          {
+            fprintf (stderr,
+         "%s: spin must contain only the characters X, Y, or Z (not \"%s\")\n",
+                     progname, do_spin);
+            exit (1);
+          }
+        s++;
+      }
+
+    bp->rot = make_rotator (bp->spinx ? spin_speed : 0,
+                            bp->spiny ? spin_speed : 0,
+                            bp->spinz ? spin_speed : 0,
+                            spin_accel,
+                            do_wander ? wander_speed : 0,
+                            False);
+    bp->rot2 = (face_front_p
+                ? make_rotator (0, 0, 0, 0, tilt_speed, True)
+                : 0);
+    bp->trackball = gltrackball_init (False);
+  }
+
+  /* Set default hand to the last hand in the animation list. */
+  for (i = 0; i <= 1; i++)
+    {
+      int j;
+      for (j = 0; ; j++)
+        if (!all_hand_anims[j+1].pair[i])
+          {
+            if (! all_hand_anims[j].pair[i]) abort();
+            def[i] = *all_hand_anims[j].pair[i]->dest;
+            if (debug_p)
+              def[i].alpha = 1;
+            else
+              {
+                def[i].pos[1] = 5;  /* off screen */
+                def[i].pos[2] = 5;
+              }
+            break;
+          }
+    }
+
+  for (i = 0; i < bp->nhands; i++)
+    {
+      int sinister = (i & 1);
+      bp->hands[i].to = def[sinister];
+      bp->hands[i].to.sinister = sinister;
+      bp->hands[i].from    = bp->hands[i].to;
+      bp->hands[i].current = bp->hands[i].to;
+    }
+
+  glFrontFace(GL_CW);
+  bp->dlists = (GLuint *) calloc (countof(all_objs)+1, sizeof(GLuint));
+  for (i = 0; i < countof(all_objs); i++)
+    bp->dlists[i] = glGenLists (1);
+
+  for (i = 0; i < countof(all_objs); i++)
+    {
+      const struct gllist *gll = *all_objs[i];
+      GLfloat s = 0.1;
+      glNewList (bp->dlists[i], GL_COMPILE);
+      switch (i) {
+      case GROUND:
+        if (! ground)
+          ground = (struct gllist *) calloc (1, sizeof(*ground));
+        ground->points = draw_ground (mi);
+        break;
+      default:
+        glPushMatrix();
+        glScalef (s, s, s);
+        renderList (gll, wire);
+        glPopMatrix();
+        break;
+      }
+      glEndList ();
+    }
+
+  if (!wire)
+    {
+      GLfloat pos[4] = {0.4, 0.2, 0.4, 0.0};
+      GLfloat amb[4] = {0.2, 0.2, 0.2, 1.0};
+      GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0};
+      GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0};
+
+      glEnable(GL_LIGHTING);
+      glEnable(GL_LIGHT0);
+      glEnable(GL_DEPTH_TEST);
+      glEnable(GL_CULL_FACE);
+
+      glLightfv(GL_LIGHT0, GL_POSITION, pos);
+      glLightfv(GL_LIGHT0, GL_AMBIENT,  amb);
+      glLightfv(GL_LIGHT0, GL_DIFFUSE,  dif);
+      glLightfv(GL_LIGHT0, GL_SPECULAR, spc);
+    }
+
+  parse_color (mi, "foreground", bp->color);
+}
+
+
+static void
+tick_hands (ModeInfo *mi)
+{
+  hands_configuration *bp = &bps[MI_SCREEN(mi)];
+  int i, j, k, nfingers, nbones, sinister;
+  double now = double_time();
+
+  if (debug_p) return;
+
+  if (!bp->pair[0].anim &&     /* Both hands finished. */
+      !bp->pair[1].anim)       /* Pick a new animation. */
+    {
+      int nanims = 0;
+      while (all_hand_anims[nanims].pair[0] ||
+             all_hand_anims[nanims].pair[1])
+        nanims++;
+      i = random() % nanims;
+      for (sinister = 0; sinister <= 1; sinister++)
+        {
+          bp->pair[sinister].anim = all_hand_anims[i].pair[sinister];
+          bp->pair[sinister].anim_hand = 0;
+          bp->pair[sinister].anim_hands = 0;
+          while (bp->pair[sinister].anim[bp->pair[sinister].anim_hands].dest)
+            bp->pair[sinister].anim_hands++;
+          bp->pair[sinister].anim_start = now;
+          bp->pair[sinister].tick = 0;
+
+          if (sinister == 1)
+            bp->pair[sinister].delay = all_hand_anims[i].delay;
+        }
+
+      bp->ringp = (all_hand_anims[i].pair[0] == goatse_anim);
+
+      for (i = 0; i < bp->nhands; i++)
+        {
+          sinister = bp->hands[i].from.sinister;
+          bp->hands[i].from = bp->hands[i].current;
+          bp->hands[i].to = *bp->pair[sinister].anim->dest;
+          bp->hands[i].to.sinister = sinister;
+
+          j = bp->pair[sinister].anim_hand;
+
+          bp->hands[i].to.alpha =
+            (bp->pair[sinister].anim == hidden_anim ? 0 : 1);
+
+          /* Anim keyframes can adjust position and rotation */
+          for (k = 0; k < 3; k++)
+            {
+              bp->hands[i].to.wrist[k] +=
+                bp->pair[sinister].anim[j].rot[k];
+              bp->hands[i].to.pos[k] +=
+                bp->pair[sinister].anim[j].pos[k];
+            }
+        }
+    }
+
+  for (sinister = 0; sinister <= 1; sinister++)
+    {
+      const hand_anim *h;
+      double elapsed, duration, duration2;
+
+      if (! bp->pair[sinister].anim)  /* Done with this hand, not the other. */
+        continue;
+
+      h = &bp->pair[sinister].anim[bp->pair[sinister].anim_hand];
+
+      elapsed   = now - bp->pair[sinister].anim_start;
+      duration  = h->duration / speed;
+      duration2 = duration + (bp->pair[sinister].delay + h->pause) / speed;
+
+      if (elapsed > duration2 &&  /* Done animating and pausing this hand. */
+          bp->pair[sinister].tick >= 1)  /* ...and painted final frame. */
+        {
+          bp->pair[sinister].anim_hand++;
+          bp->pair[sinister].tick = 1;
+          if (bp->pair[sinister].anim_hand >= bp->pair[sinister].anim_hands)
+            {
+              /* Done with all steps of this hand's animation. */
+              bp->pair[sinister].anim = 0;
+              for (i = 0; i < bp->nhands; i++)
+                if (bp->hands[i].from.sinister == sinister)
+                  bp->hands[i].from = bp->hands[i].to = bp->hands[i].current;
+            }
+          else
+            {
+              /* Move to next step of animation. */
+              for (i = 0; i < bp->nhands; i++)
+                {
+                  if (sinister != bp->hands[i].current.sinister)
+                    continue;
+
+                  j = bp->pair[sinister].anim_hand;
+                  bp->hands[i].from = bp->hands[i].current;
+                  bp->hands[i].to = *bp->pair[sinister].anim[j].dest;
+                  bp->hands[i].to.alpha =
+                    (bp->pair[sinister].anim == hidden_anim ? 0 : 1);
+
+                  /* Anim keyframes can adjust position and rotation */
+                  for (k = 0; k < 3; k++)
+                    {
+                      bp->hands[i].to.wrist[k] +=
+                        bp->pair[sinister].anim[j].rot[k];
+                      bp->hands[i].to.pos[k] +=
+                        bp->pair[sinister].anim[j].pos[k];
+                    }
+                }
+              bp->pair[sinister].anim_start = now;
+              bp->pair[sinister].tick = 0;
+              bp->pair[sinister].delay = 0;
+            }
+        }
+      else if (elapsed > duration)     /* Done animating, still pausing. */
+        bp->pair[sinister].tick = 1;
+      else                             /* Still animating. */
+        bp->pair[sinister].tick = elapsed / duration;
+
+      if (bp->pair[sinister].tick > 1)
+        bp->pair[sinister].tick = 1;
+
+      /* Move the joints into position:
+         compute 'current' between 'from' and 'to' by ratio 'tick'. */
+
+      nfingers = countof (bp->geom->fingers);
+      nbones   = countof (bp->geom->fingers[0].bones);
+      for (i = 0; i < bp->nhands; i++)
+        {
+          if (bp->hands[i].current.sinister != sinister)
+            continue;
+          for (j = 0; j < nfingers; j++)
+            {
+              for (k = 0; k < nbones; k++)
+                bp->hands[i].current.joint[j][k] =
+                  constrain_joint (bp->hands[i].from.joint[j][k] +
+                                   bp->pair[sinister].tick
+                                   * (bp->hands[i].to.joint[j][k] -
+                                      bp->hands[i].from.joint[j][k]),
+                                   bp->geom->fingers[j].bones[k].min,
+                                   bp->geom->fingers[j].bones[k].max);
+              bp->hands[i].current.base[j] =
+                constrain_joint (bp->hands[i].from.base[j] +
+                                 bp->pair[sinister].tick
+                                 * (bp->hands[i].to.base[j] -
+                                    bp->hands[i].from.base[j]),
+                                 bp->geom->fingers[j].base.min,
+                                 bp->geom->fingers[j].base.max);
+            }
+          j = 0;
+          bp->hands[i].current.wrist[j] =
+            constrain_joint (bp->hands[i].from.wrist[j] +
+                             bp->pair[sinister].tick
+                             * (bp->hands[i].to.wrist[j] -
+                                bp->hands[i].from.wrist[j]),
+                             bp->geom->palm.min,
+                             bp->geom->palm.max);
+          j = 1;
+          bp->hands[i].current.wrist[j] =
+            constrain_joint (bp->hands[i].from.wrist[j] +
+                             bp->pair[sinister].tick
+                             * (bp->hands[i].to.wrist[j] -
+                                bp->hands[i].from.wrist[j]),
+                             bp->geom->wrist1.min,
+                             bp->geom->wrist1.max);
+          j = 2;
+          bp->hands[i].current.wrist[j] =
+            constrain_joint (bp->hands[i].from.wrist[j] +
+                             bp->pair[sinister].tick
+                             * (bp->hands[i].to.wrist[j] -
+                                bp->hands[i].from.wrist[j]),
+                             bp->geom->wrist2.min,
+                             bp->geom->wrist2.max);
+          for (j = 0; j < 3; j++)
+            bp->hands[i].current.pos[j] =
+              constrain_joint (bp->hands[i].from.pos[j] +
+                               bp->pair[sinister].tick
+                               * (bp->hands[i].to.pos[j] -
+                                  bp->hands[i].from.pos[j]),
+                               -999, 999);
+          bp->hands[i].current.alpha =
+            bp->hands[i].from.alpha +
+            bp->pair[sinister].tick *
+            (bp->hands[i].to.alpha - bp->hands[i].from.alpha);
+        }
+    }
+}
+
+
+ENTRYPOINT void
+draw_hands (ModeInfo *mi)
+{
+  hands_configuration *bp = &bps[MI_SCREEN(mi)];
+  Display *dpy = MI_DISPLAY(mi);
+  Window window = MI_WINDOW(mi);
+  GLfloat s;
+  int i;
+
+  static const GLfloat bspec[4]  = {1.0, 1.0, 1.0, 1.0};
+  static const GLfloat bshiny    = 128.0;
+  GLfloat bcolor[4] = { 0.7, 0.7, 1.0, 1.0 };
+
+  if (!bp->glx_context)
+    return;
+
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+  glShadeModel(GL_SMOOTH);
+
+  glEnable(GL_DEPTH_TEST);
+  glEnable(GL_NORMALIZE);
+  glEnable(GL_CULL_FACE);
+
+  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+  glPushMatrix ();
+
+  glRotatef(current_device_rotation(), 0, 0, 1);
+
+  s = 10;
+  glScalef (s, s, s);
+
+  {
+    double x, y, z;
+
+    gltrackball_rotate (bp->trackball);
+
+    if (face_front_p)
+      {
+        double maxx = 120 / 10.0;
+        double maxy = 55 / 10.0;
+        double maxz = 40 / 10.0;
+        get_position (bp->rot2, &x, &y, &z, !bp->button_down_p);
+        if (bp->spinx) glRotatef (maxx/2 - x*maxx, 0, 1, 0);
+        if (bp->spiny) glRotatef (maxy/2 - y*maxy, 1, 0, 0);
+        if (bp->spinz) glRotatef (maxz/2 - z*maxz, 0, 0, 1);
+      }
+    else
+      {
+        get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p);
+        glRotatef (x * 360, 1, 0, 0);
+        glRotatef (y * 360, 0, 1, 0);
+        glRotatef (z * 360, 0, 0, 1);
+      }
+
+    glRotatef (-70, 1, 0, 0);
+
+    glTranslatef (0, 0, -0.5);
+
+    glPushMatrix();
+    glRotatef ((bp->spiny ? y : bp->spinx ? x : z) * 90, 0, 0, 1);
+    glCallList (bp->dlists[GROUND]);
+    glPopMatrix();
+
+    get_position (bp->rot, &x, &y, &z, !bp->button_down_p);
+    z += 1;  /* Origin of hands is 1.0 above floor. */
+    glTranslatef((x - 0.5) * 0.8,
+                 (y - 0.5) * 1.1,
+                 (z - 0.5) * 0.2);
+  }
+
+  glMaterialfv (GL_FRONT, GL_SPECULAR,            bspec);
+  glMateriali  (GL_FRONT, GL_SHININESS,           bshiny);
+  glMaterialfv (GL_FRONT, GL_AMBIENT_AND_DIFFUSE, bcolor);
+
+  {
+    /* Lay the pairs out in a square-ish grid, keeping pairs together. */
+    int rows = sqrt (bp->nhands / 2);
+    int cols;
+    int x, y;
+
+    cols = ceil (bp->nhands / 2.0 / rows);
+
+    if (bp->nhands <= 2)
+      rows = cols = 1;
+
+    if (MI_WIDTH(mi) < MI_HEIGHT(mi))  /* Portrait */
+      {
+        s = 0.5;
+        glScalef (s, s, s);
+      }
+
+    if (bp->nhands == 1)
+        glScalef (2, 2, 2);
+
+    if (cols > 1)
+      {
+        s = 1.0 / rows;
+        glScalef (s, s, s);
+      }
+
+    if (bp->nhands > 1)
+      {
+        s = 0.8;
+        glTranslatef (-s * rows * 1.5, -s * cols, 0);
+        glTranslatef (s, s, 0);
+      }
+
+    i = 0;
+    for (y = 0; y < cols; y++)
+      for (x = 0; x < rows; x++)
+        {
+          glPushMatrix();
+          glTranslatef (x * s * 3, y * s * 2, y * s);
+          if (i < bp->nhands)
+            draw_hand (mi, &bp->hands[i++].current);
+          glTranslatef (s, 0, 0);
+          if (i < bp->nhands)
+            draw_hand (mi, &bp->hands[i++].current);
+          glPopMatrix();
+        }
+  }
+  glPopMatrix();
+
+  tick_hands (mi);
+
+  if (mi->fps_p) do_fps (mi);
+  glFinish();
+
+  glXSwapBuffers(dpy, window);
+}
+
+
+ENTRYPOINT void
+free_hands (ModeInfo *mi)
+{
+  hands_configuration *bp = &bps[MI_SCREEN(mi)];
+  int i;
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+
+  if (bp->dlists) {
+    for (i = 0; i < countof(all_objs); i++)
+      if (glIsList(bp->dlists[i])) glDeleteLists(bp->dlists[i], 1);
+    free (bp->dlists);
+  }
+}
+
+XSCREENSAVER_MODULE_2 ("Handsy", handsy, hands)
+
+#endif /* USE_GL */
diff --git a/hacks/glx/handsy.dxf b/hacks/glx/handsy.dxf
new file mode 100644 (file)
index 0000000..c455186
--- /dev/null
@@ -0,0 +1,67706 @@
+ 0
+SECTION
+ 2
+ENTITIES
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.18812188165369287
+20
+-1.1102230246251565e-15
+30
+2.0022820636598677
+11
+-0.1330222582069191
+21
+0.19156135043888822
+31
+2.0445614917581056
+12
+-0.18812188165372756
+22
+0.19156135043889155
+32
+2.00228206365989
+13
+-0.18812188165372756
+23
+0.19156135043889155
+33
+2.00228206365989
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.1330222582069191
+20
+0.19156135043888822
+30
+2.0445614917581056
+11
+-0.18812188165369287
+21
+-1.1102230246251565e-15
+31
+2.0022820636598677
+12
+-0.13302225820690117
+22
+-1.1102230246251565e-15
+32
+2.044561491758081
+13
+-0.13302225820690117
+23
+-1.1102230246251565e-15
+33
+2.044561491758081
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.23040130975195694
+20
+-1.1102230246251565e-15
+30
+1.9471824402131095
+11
+0.188121881653721
+21
+0.19156135043889155
+31
+2.002282063659892
+12
+0.18812188165372434
+22
+-2.220446049250313e-15
+32
+2.002282063659901
+13
+0.18812188165372434
+23
+-2.220446049250313e-15
+33
+2.002282063659901
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.188121881653721
+20
+0.19156135043889155
+30
+2.002282063659892
+11
+0.23040130975195694
+21
+-1.1102230246251565e-15
+31
+1.9471824402131095
+12
+0.2304013097519334
+22
+0.19156135043889155
+32
+1.9471824402130984
+13
+0.2304013097519334
+23
+0.19156135043889155
+33
+1.9471824402130984
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.23040130975190468
+20
+-1.1102230246251565e-15
+30
+1.6811379237992659
+11
+-0.18812188165372756
+21
+0.19156135043889044
+31
+1.6260383003524492
+12
+-0.1881218816537231
+22
+-2.220446049250313e-15
+32
+1.626038300352452
+13
+-0.1881218816537231
+23
+-2.220446049250313e-15
+33
+1.626038300352452
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.18812188165372756
+20
+0.19156135043889044
+30
+1.6260383003524492
+11
+-0.23040130975190468
+21
+-1.1102230246251565e-15
+31
+1.6811379237992659
+12
+-0.23040130975192985
+22
+0.19156135043889155
+32
+1.6811379237992548
+13
+-0.23040130975192985
+23
+0.19156135043889155
+33
+1.6811379237992548
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.23040130975192985
+20
+0.19156135043889155
+30
+1.9471824402130984
+11
+-0.2569792693466746
+21
+-1.1102230246251565e-15
+31
+1.8830175696991678
+12
+-0.23040130975189796
+22
+-2.220446049250313e-15
+32
+1.947182440213074
+13
+-0.23040130975189796
+23
+-2.220446049250313e-15
+33
+1.947182440213074
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.2569792693466746
+20
+-1.1102230246251565e-15
+30
+1.8830175696991678
+11
+-0.23040130975192985
+21
+0.19156135043889155
+31
+1.9471824402130984
+12
+-0.2569792693467132
+22
+0.19156135043888933
+32
+1.88301756969917
+13
+-0.2569792693467132
+23
+0.19156135043888933
+33
+1.88301756969917
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.13302225820690117
+20
+-1.1102230246251565e-15
+30
+2.044561491758081
+11
+-0.06885738769298949
+21
+0.19156135043889155
+31
+2.0711394513528925
+12
+-0.1330222582069191
+22
+0.19156135043888822
+32
+2.0445614917581056
+13
+-0.1330222582069191
+23
+0.19156135043888822
+33
+2.0445614917581056
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.06885738769298949
+20
+0.19156135043889155
+30
+2.0711394513528925
+11
+-0.13302225820690117
+21
+-1.1102230246251565e-15
+31
+2.044561491758081
+12
+-0.06885738769298727
+22
+0.0
+32
+2.0711394513528703
+13
+-0.06885738769298727
+23
+0.0
+33
+2.0711394513528703
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+1.7763568394002505e-15
+20
+-2.220446049250313e-15
+30
+2.0802046984199913
+11
+0.06885738769298744
+21
+0.19156135043889044
+31
+2.0711394513528925
+12
+-9.992007221626409e-16
+22
+0.19156135043889155
+32
+2.08020469842002
+13
+-9.992007221626409e-16
+23
+0.19156135043889155
+33
+2.08020469842002
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.06885738769298744
+20
+0.19156135043889044
+30
+2.0711394513528925
+11
+1.7763568394002505e-15
+21
+-2.220446049250313e-15
+31
+2.0802046984199913
+12
+0.06885738769298966
+22
+-1.1102230246251565e-15
+32
+2.071139451352888
+13
+0.06885738769298966
+23
+-1.1102230246251565e-15
+33
+2.071139451352888
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.2660445164138411
+20
+0.19156135043889155
+30
+1.8141601820061808
+11
+-0.25697926934668525
+21
+-1.1102230246251565e-15
+31
+1.745302794313192
+12
+-0.26604451641381477
+22
+-2.220446049250313e-15
+32
+1.8141601820061808
+13
+-0.26604451641381477
+23
+-2.220446049250313e-15
+33
+1.8141601820061808
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.25697926934668525
+20
+-1.1102230246251565e-15
+30
+1.745302794313192
+11
+-0.2660445164138411
+21
+0.19156135043889155
+31
+1.8141601820061808
+12
+-0.2569792693467132
+22
+0.19156135043889155
+32
+1.745302794313181
+13
+-0.2569792693467132
+23
+0.19156135043889155
+33
+1.745302794313181
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.2569792693466746
+20
+-1.1102230246251565e-15
+30
+1.8830175696991678
+11
+-0.2660445164138411
+21
+0.19156135043889155
+31
+1.8141601820061808
+12
+-0.26604451641381477
+22
+-2.220446049250313e-15
+32
+1.8141601820061808
+13
+-0.26604451641381477
+23
+-2.220446049250313e-15
+33
+1.8141601820061808
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.2660445164138411
+20
+0.19156135043889155
+30
+1.8141601820061808
+11
+-0.2569792693466746
+21
+-1.1102230246251565e-15
+31
+1.8830175696991678
+12
+-0.2569792693467132
+22
+0.19156135043888933
+32
+1.88301756969917
+13
+-0.2569792693467132
+23
+0.19156135043888933
+33
+1.88301756969917
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.2569792693467132
+20
+0.19156135043889155
+30
+1.745302794313181
+11
+-0.23040130975190468
+21
+-1.1102230246251565e-15
+31
+1.6811379237992659
+12
+-0.25697926934668525
+22
+-1.1102230246251565e-15
+32
+1.745302794313192
+13
+-0.25697926934668525
+23
+-1.1102230246251565e-15
+33
+1.745302794313192
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.23040130975190468
+20
+-1.1102230246251565e-15
+30
+1.6811379237992659
+11
+-0.2569792693467132
+21
+0.19156135043889155
+31
+1.745302794313181
+12
+-0.23040130975192985
+22
+0.19156135043889155
+32
+1.6811379237992548
+13
+-0.23040130975192985
+23
+0.19156135043889155
+33
+1.6811379237992548
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.06885738769298966
+20
+-1.1102230246251565e-15
+30
+2.071139451352888
+11
+0.13302225820692148
+21
+0.19156135043888933
+31
+2.0445614917581056
+12
+0.06885738769298744
+22
+0.19156135043889044
+32
+2.0711394513528925
+13
+0.06885738769298744
+23
+0.19156135043889044
+33
+2.0711394513528925
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.13302225820692148
+20
+0.19156135043888933
+30
+2.0445614917581056
+11
+0.06885738769298966
+21
+-1.1102230246251565e-15
+31
+2.071139451352888
+12
+0.1330222582069237
+22
+-1.1102230246251565e-15
+32
+2.044561491758108
+13
+0.1330222582069237
+23
+-1.1102230246251565e-15
+33
+2.044561491758108
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.1330222582069237
+20
+-1.1102230246251565e-15
+30
+2.044561491758108
+11
+0.188121881653721
+21
+0.19156135043889155
+31
+2.002282063659892
+12
+0.13302225820692148
+22
+0.19156135043888933
+32
+2.0445614917581056
+13
+0.13302225820692148
+23
+0.19156135043888933
+33
+2.0445614917581056
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.188121881653721
+20
+0.19156135043889155
+30
+2.002282063659892
+11
+0.1330222582069237
+21
+-1.1102230246251565e-15
+31
+2.044561491758108
+12
+0.18812188165372434
+22
+-2.220446049250313e-15
+32
+2.002282063659901
+13
+0.18812188165372434
+23
+-2.220446049250313e-15
+33
+2.002282063659901
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.06885738769298727
+20
+0.0
+30
+2.0711394513528703
+11
+-9.992007221626409e-16
+21
+0.19156135043889155
+31
+2.08020469842002
+12
+-0.06885738769298949
+22
+0.19156135043889155
+32
+2.0711394513528925
+13
+-0.06885738769298949
+23
+0.19156135043889155
+33
+2.0711394513528925
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-9.992007221626409e-16
+20
+0.19156135043889155
+30
+2.08020469842002
+11
+-0.06885738769298727
+21
+0.0
+31
+2.0711394513528703
+12
+1.7763568394002505e-15
+22
+-2.220446049250313e-15
+32
+2.0802046984199913
+13
+1.7763568394002505e-15
+23
+-2.220446049250313e-15
+33
+2.0802046984199913
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.26604451641384186
+20
+0.19156135043889044
+30
+1.8141601820061786
+11
+0.25697926934670945
+21
+-1.1102230246251565e-15
+31
+1.8830175696991722
+12
+0.2660445164138424
+22
+-2.220446049250313e-15
+32
+1.814160182006172
+13
+0.2660445164138424
+23
+-2.220446049250313e-15
+33
+1.814160182006172
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.25697926934670945
+20
+-1.1102230246251565e-15
+30
+1.8830175696991722
+11
+0.26604451641384186
+21
+0.19156135043889044
+31
+1.8141601820061786
+12
+0.2569792693467089
+22
+0.19156135043889155
+32
+1.88301756969917
+13
+0.2569792693467089
+23
+0.19156135043889155
+33
+1.88301756969917
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.2569792693467089
+20
+0.19156135043889155
+30
+1.88301756969917
+11
+0.23040130975195694
+21
+-1.1102230246251565e-15
+31
+1.9471824402131095
+12
+0.25697926934670945
+22
+-1.1102230246251565e-15
+32
+1.8830175696991722
+13
+0.25697926934670945
+23
+-1.1102230246251565e-15
+33
+1.8830175696991722
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.23040130975195694
+20
+-1.1102230246251565e-15
+30
+1.9471824402131095
+11
+0.2569792693467089
+21
+0.19156135043889155
+31
+1.88301756969917
+12
+0.2304013097519334
+22
+0.19156135043889155
+32
+1.9471824402130984
+13
+0.2304013097519334
+23
+0.19156135043889155
+33
+1.9471824402130984
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.18812188165369287
+20
+-1.1102230246251565e-15
+30
+2.0022820636598677
+11
+-0.23040130975192985
+21
+0.19156135043889155
+31
+1.9471824402130984
+12
+-0.23040130975189796
+22
+-2.220446049250313e-15
+32
+1.947182440213074
+13
+-0.23040130975189796
+23
+-2.220446049250313e-15
+33
+1.947182440213074
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.23040130975192985
+20
+0.19156135043889155
+30
+1.9471824402130984
+11
+-0.18812188165369287
+21
+-1.1102230246251565e-15
+31
+2.0022820636598677
+12
+-0.18812188165372756
+22
+0.19156135043889155
+32
+2.00228206365989
+13
+-0.18812188165372756
+23
+0.19156135043889155
+33
+2.00228206365989
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.23040130975192985
+20
+0.19156135043889155
+30
+1.6811379237992548
+11
+6.661338147750939e-16
+21
+0.19156135043889155
+31
+1.8141601820061741
+12
+-0.18812188165372756
+22
+0.19156135043889044
+32
+1.6260383003524492
+13
+-0.18812188165372756
+23
+0.19156135043889044
+33
+1.6260383003524492
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+6.661338147750939e-16
+20
+0.19156135043889155
+30
+1.8141601820061741
+11
+-0.23040130975192985
+21
+0.19156135043889155
+31
+1.6811379237992548
+12
+-0.2569792693467132
+22
+0.19156135043889155
+32
+1.745302794313181
+13
+-0.2569792693467132
+23
+0.19156135043889155
+33
+1.745302794313181
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+6.661338147750939e-16
+20
+0.19156135043889155
+30
+1.8141601820061741
+11
+-0.2569792693467132
+21
+0.19156135043889155
+31
+1.745302794313181
+12
+-0.2660445164138411
+22
+0.19156135043889155
+32
+1.8141601820061808
+13
+-0.2660445164138411
+23
+0.19156135043889155
+33
+1.8141601820061808
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+6.661338147750939e-16
+20
+0.19156135043889155
+30
+1.8141601820061741
+11
+-0.2660445164138411
+21
+0.19156135043889155
+31
+1.8141601820061808
+12
+0.26604451641384186
+22
+0.19156135043889044
+32
+1.8141601820061786
+13
+0.26604451641384186
+23
+0.19156135043889044
+33
+1.8141601820061786
+70
+15
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.26604451641384186
+20
+0.19156135043889044
+30
+1.8141601820061786
+11
+-0.2660445164138411
+21
+0.19156135043889155
+31
+1.8141601820061808
+12
+0.2569792693467089
+22
+0.19156135043889155
+32
+1.88301756969917
+13
+0.2569792693467089
+23
+0.19156135043889155
+33
+1.88301756969917
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.2569792693467089
+20
+0.19156135043889155
+30
+1.88301756969917
+11
+-0.2660445164138411
+21
+0.19156135043889155
+31
+1.8141601820061808
+12
+-0.2569792693467132
+22
+0.19156135043888933
+32
+1.88301756969917
+13
+-0.2569792693467132
+23
+0.19156135043888933
+33
+1.88301756969917
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.2569792693467089
+20
+0.19156135043889155
+30
+1.88301756969917
+11
+-0.2569792693467132
+21
+0.19156135043888933
+31
+1.88301756969917
+12
+-0.23040130975192985
+22
+0.19156135043889155
+32
+1.9471824402130984
+13
+-0.23040130975192985
+23
+0.19156135043889155
+33
+1.9471824402130984
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.2569792693467089
+20
+0.19156135043889155
+30
+1.88301756969917
+11
+-0.23040130975192985
+21
+0.19156135043889155
+31
+1.9471824402130984
+12
+0.2304013097519334
+22
+0.19156135043889155
+32
+1.9471824402130984
+13
+0.2304013097519334
+23
+0.19156135043889155
+33
+1.9471824402130984
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.2304013097519334
+20
+0.19156135043889155
+30
+1.9471824402130984
+11
+-0.23040130975192985
+21
+0.19156135043889155
+31
+1.9471824402130984
+12
+-0.18812188165372756
+22
+0.19156135043889155
+32
+2.00228206365989
+13
+-0.18812188165372756
+23
+0.19156135043889155
+33
+2.00228206365989
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.2304013097519334
+20
+0.19156135043889155
+30
+1.9471824402130984
+11
+-0.18812188165372756
+21
+0.19156135043889155
+31
+2.00228206365989
+12
+0.188121881653721
+22
+0.19156135043889155
+32
+2.002282063659892
+13
+0.188121881653721
+23
+0.19156135043889155
+33
+2.002282063659892
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.188121881653721
+20
+0.19156135043889155
+30
+2.002282063659892
+11
+-0.18812188165372756
+21
+0.19156135043889155
+31
+2.00228206365989
+12
+-0.1330222582069191
+22
+0.19156135043888822
+32
+2.0445614917581056
+13
+-0.1330222582069191
+23
+0.19156135043888822
+33
+2.0445614917581056
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.188121881653721
+20
+0.19156135043889155
+30
+2.002282063659892
+11
+-0.1330222582069191
+21
+0.19156135043888822
+31
+2.0445614917581056
+12
+0.13302225820692148
+22
+0.19156135043888933
+32
+2.0445614917581056
+13
+0.13302225820692148
+23
+0.19156135043888933
+33
+2.0445614917581056
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.13302225820692148
+20
+0.19156135043888933
+30
+2.0445614917581056
+11
+-0.1330222582069191
+21
+0.19156135043888822
+31
+2.0445614917581056
+12
+-0.06885738769298949
+22
+0.19156135043889155
+32
+2.0711394513528925
+13
+-0.06885738769298949
+23
+0.19156135043889155
+33
+2.0711394513528925
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.13302225820692148
+20
+0.19156135043888933
+30
+2.0445614917581056
+11
+-0.06885738769298949
+21
+0.19156135043889155
+31
+2.0711394513528925
+12
+0.06885738769298744
+22
+0.19156135043889044
+32
+2.0711394513528925
+13
+0.06885738769298744
+23
+0.19156135043889044
+33
+2.0711394513528925
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.06885738769298744
+20
+0.19156135043889044
+30
+2.0711394513528925
+11
+-0.06885738769298949
+21
+0.19156135043889155
+31
+2.0711394513528925
+12
+-9.992007221626409e-16
+22
+0.19156135043889155
+32
+2.08020469842002
+13
+-9.992007221626409e-16
+23
+0.19156135043889155
+33
+2.08020469842002
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.26604451641384186
+20
+0.19156135043889044
+30
+1.8141601820061786
+11
+0.261211438220872
+21
+0.19156135043889044
+31
+1.777449308444807
+12
+6.661338147750939e-16
+22
+0.19156135043889155
+32
+1.8141601820061741
+13
+6.661338147750939e-16
+23
+0.19156135043889155
+33
+1.8141601820061741
+70
+12
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.18812188165372756
+20
+0.19156135043889044
+30
+1.6260383003524492
+11
+-0.3424871358064196
+21
+-2.220446049250313e-15
+31
+1.4716730461997534
+12
+-0.1881218816537231
+22
+-2.220446049250313e-15
+32
+1.626038300352452
+13
+-0.1881218816537231
+23
+-2.220446049250313e-15
+33
+1.626038300352452
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.3424871358064196
+20
+-2.220446049250313e-15
+30
+1.4716730461997534
+11
+-0.18812188165372756
+21
+0.19156135043889044
+31
+1.6260383003524492
+12
+-0.33052374502961596
+22
+0.08856357055999653
+32
+1.4836364369765538
+13
+-0.33052374502961596
+23
+0.08856357055999653
+33
+1.4836364369765538
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.33052374502961596
+20
+0.08856357055999653
+30
+1.4836364369765538
+11
+-0.18812188165372756
+21
+0.19156135043889044
+31
+1.6260383003524492
+12
+-0.2955708619933719
+22
+0.1706479167364875
+32
+1.518589320012799
+13
+-0.2955708619933719
+23
+0.1706479167364875
+33
+1.518589320012799
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.2955708619933719
+20
+0.1706479167364875
+30
+1.518589320012799
+11
+-0.18812188165372756
+21
+0.19156135043889044
+31
+1.6260383003524492
+12
+-0.24034094956198906
+22
+0.2403409495619936
+32
+1.5738192324441853
+13
+-0.24034094956198906
+23
+0.2403409495619936
+33
+1.5738192324441853
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.24034094956198906
+20
+0.2403409495619936
+30
+1.5738192324441853
+11
+-0.18812188165372756
+21
+0.19156135043889044
+31
+1.6260383003524492
+12
+6.661338147750939e-16
+22
+0.19156135043889155
+32
+1.8141601820061741
+13
+6.661338147750939e-16
+23
+0.19156135043889155
+33
+1.8141601820061741
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.24034094956198906
+20
+0.2403409495619936
+30
+1.5738192324441853
+11
+6.661338147750939e-16
+21
+0.19156135043889155
+31
+1.8141601820061741
+12
+1.1102230246251565e-16
+22
+0.33379067100000304
+32
+1.8141601820061741
+13
+1.1102230246251565e-16
+23
+0.33379067100000304
+33
+1.8141601820061741
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.24034094956198906
+20
+0.2403409495619936
+30
+1.5738192324441853
+11
+1.1102230246251565e-16
+21
+0.33379067100000304
+31
+1.8141601820061741
+12
+-0.16904149407111246
+22
+0.2927884563185241
+32
+1.645118687935059
+13
+-0.16904149407111246
+23
+0.2927884563185241
+33
+1.645118687935059
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.16904149407111246
+20
+0.2927884563185241
+30
+1.645118687935059
+11
+1.1102230246251565e-16
+21
+0.33379067100000304
+31
+1.8141601820061741
+12
+-0.08696289916304184
+22
+0.32454995804996933
+32
+1.7271972828431308
+13
+-0.08696289916304184
+23
+0.32454995804996933
+33
+1.7271972828431308
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.33052374502961596
+20
+0.08856357055999653
+30
+1.4836364369765538
+11
+-0.36643493196576155
+21
+6.894044639604857e-07
+31
+0.36643493196577
+12
+-0.3424871358064196
+22
+-2.220446049250313e-15
+32
+1.4716730461997534
+13
+-0.3424871358064196
+23
+-2.220446049250313e-15
+33
+1.4716730461997534
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.36643493196576155
+20
+6.894044639604857e-07
+30
+0.36643493196577
+11
+-0.33052374502961596
+21
+0.08856357055999653
+31
+1.4836364369765538
+12
+-0.3541898489439894
+22
+0.09490488399184593
+32
+0.3541898489439996
+13
+-0.3541898489439894
+23
+0.09490488399184593
+33
+0.3541898489439996
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.2955708619933719
+20
+0.1706479167364875
+30
+1.518589320012799
+11
+-0.3541898489439894
+21
+0.09490488399184593
+31
+0.3541898489439996
+12
+-0.33052374502961596
+22
+0.08856357055999653
+32
+1.4836364369765538
+13
+-0.33052374502961596
+23
+0.08856357055999653
+33
+1.4836364369765538
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.3541898489439894
+20
+0.09490488399184593
+30
+0.3541898489439996
+11
+-0.2955708619933719
+21
+0.1706479167364875
+31
+1.518589320012799
+12
+-0.34654102806927234
+22
+0.11372420208085299
+32
+0.34654102806927917
+13
+-0.34654102806927234
+23
+0.11372420208085299
+33
+0.34654102806927917
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.31821039848923144
+20
+0.18371885922669984
+30
+0.31821039848924043
+11
+-0.34654102806927234
+21
+0.11372420208085299
+31
+0.34654102806927917
+12
+-0.2955708619933719
+22
+0.1706479167364875
+32
+1.518589320012799
+13
+-0.2955708619933719
+23
+0.1706479167364875
+33
+1.518589320012799
+70
+0
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.24034094956198906
+20
+0.2403409495619936
+30
+1.5738192324441853
+11
+-0.31821039848923144
+21
+0.18371885922669984
+31
+0.31821039848924043
+12
+-0.2955708619933719
+22
+0.1706479167364875
+32
+1.518589320012799
+13
+-0.2955708619933719
+23
+0.1706479167364875
+33
+1.518589320012799
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.31821039848923144
+20
+0.18371885922669984
+30
+0.31821039848924043
+11
+-0.24034094956198906
+21
+0.2403409495619936
+31
+1.5738192324441853
+12
+-0.30780841448952007
+22
+0.1975803495231122
+32
+0.30780841448952795
+13
+-0.30780841448952007
+23
+0.1975803495231122
+33
+0.30780841448952795
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.24034094956198906
+20
+0.2403409495619936
+30
+1.5738192324441853
+11
+-0.2885829061834132
+21
+0.22332138636309273
+31
+0.28858290618342114
+12
+-0.30780841448952007
+22
+0.1975803495231122
+32
+0.30780841448952795
+13
+-0.30780841448952007
+23
+0.1975803495231122
+33
+0.30780841448952795
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.2885829061834132
+20
+0.22332138636309273
+30
+0.28858290618342114
+11
+-0.24034094956198906
+21
+0.2403409495619936
+31
+1.5738192324441853
+12
+-0.2606802535046579
+22
+0.26068025350466195
+32
+0.2606802535046641
+13
+-0.2606802535046579
+23
+0.26068025350466195
+33
+0.2606802535046641
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.24034094956198906
+20
+0.2403409495619936
+30
+1.5738192324441853
+11
+-0.19372715732247747
+21
+0.3138879622371804
+31
+0.19372715732248486
+12
+-0.2606802535046579
+22
+0.26068025350466195
+32
+0.2606802535046641
+13
+-0.2606802535046579
+23
+0.26068025350466195
+33
+0.2606802535046641
+70
+0
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.19372715732247747
+20
+0.3138879622371804
+30
+0.19372715732248486
+11
+-0.16904149407111246
+21
+0.2927884563185241
+31
+1.645118687935059
+12
+-0.18514211013161566
+22
+0.3206755413684731
+32
+0.1851421101316219
+13
+-0.18514211013161566
+23
+0.3206755413684731
+33
+0.1851421101316219
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.16904149407111246
+20
+0.2927884563185241
+30
+1.645118687935059
+11
+-0.19372715732247747
+21
+0.3138879622371804
+31
+0.19372715732248486
+12
+-0.24034094956198906
+22
+0.2403409495619936
+32
+1.5738192324441853
+13
+-0.24034094956198906
+23
+0.2403409495619936
+33
+1.5738192324441853
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.16904149407111246
+20
+0.2927884563185241
+30
+1.645118687935059
+11
+-0.1013377420365758
+21
+0.3573720124041593
+31
+0.1013377420365838
+12
+-0.18514211013161566
+22
+0.3206755413684731
+32
+0.1851421101316219
+13
+-0.18514211013161566
+23
+0.3206755413684731
+33
+0.1851421101316219
+70
+0
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.1013377420365758
+20
+0.3573720124041593
+30
+0.1013377420365838
+11
+-0.08696289916304184
+21
+0.32454995804996933
+31
+1.7271972828431308
+12
+-0.09633958547085791
+22
+0.3595442277573727
+32
+0.09633958547086535
+13
+-0.09633958547085791
+23
+0.3595442277573727
+33
+0.09633958547086535
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.08696289916304184
+20
+0.32454995804996933
+30
+1.7271972828431308
+11
+-0.1013377420365758
+21
+0.3573720124041593
+31
+0.1013377420365838
+12
+-0.16904149407111246
+22
+0.2927884563185241
+32
+1.645118687935059
+13
+-0.16904149407111246
+23
+0.2927884563185241
+33
+1.645118687935059
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.08696289916304184
+20
+0.32454995804996933
+30
+1.7271972828431308
+11
+1.1102230246251565e-16
+21
+0.37319459270527366
+31
+0.05244907956522271
+12
+-0.002638372221004881
+22
+0.3728562895769836
+32
+0.05240153416118987
+13
+-0.002638372221004881
+23
+0.3728562895769836
+33
+0.05240153416118987
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+1.1102230246251565e-16
+20
+0.37319459270527366
+30
+0.05244907956522271
+11
+-0.08696289916304184
+21
+0.32454995804996933
+31
+1.7271972828431308
+12
+1.1102230246251565e-16
+22
+0.33379067100000304
+32
+1.8141601820061741
+13
+1.1102230246251565e-16
+23
+0.33379067100000304
+33
+1.8141601820061741
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.09660018260574987
+20
+0.36051678950509547
+30
+0.050667330521278475
+11
+0.16715806244605846
+21
+0.28952625705134216
+31
+1.7906676483827717
+12
+0.18667566717603135
+22
+0.3233317400856974
+32
+0.04544131263742729
+13
+0.18667566717603135
+23
+0.3233317400856974
+33
+0.04544131263742729
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.16715806244605846
+20
+0.28952625705134216
+30
+1.7906676483827717
+11
+0.09660018260574987
+21
+0.36051678950509547
+31
+0.050667330521278475
+12
+0.08646172679066877
+22
+0.3226795572929172
+32
+1.8020087787532109
+13
+0.08646172679066877
+23
+0.3226795572929172
+33
+1.8020087787532109
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.3731945927052738
+20
+1.1102230246251565e-15
+30
+0.05244907956522721
+11
+0.32339898045021165
+21
+0.08665449564468308
+31
+1.7687094193518036
+12
+0.334843235733576
+22
+0.0
+32
+1.7671010341617321
+13
+0.334843235733576
+23
+0.0
+33
+1.7671010341617321
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.32339898045021165
+20
+0.08665449564468308
+30
+1.7687094193518036
+11
+0.3731945927052738
+21
+1.1102230246251565e-15
+31
+0.05244907956522721
+12
+0.360516789505095
+22
+0.09660018260575365
+32
+0.050667330521278475
+13
+0.360516789505095
+23
+0.09660018260575365
+33
+0.050667330521278475
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.3233317400856941
+20
+0.18667566717602557
+30
+0.04544131263742618
+11
+0.23655144370181413
+21
+0.23655144370181402
+31
+1.7809150446582704
+12
+0.28986029081458276
+22
+0.16735091692918358
+32
+1.773422974788019
+13
+0.28986029081458276
+23
+0.16735091692918358
+33
+1.773422974788019
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.23655144370181413
+20
+0.23655144370181402
+30
+1.7809150446582704
+11
+0.3233317400856941
+21
+0.18667566717602557
+31
+0.04544131263742618
+12
+0.2800330587934533
+22
+0.24332527544562987
+32
+0.0393560798271011
+13
+0.2800330587934533
+23
+0.24332527544562987
+33
+0.0393560798271011
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.23655144370181413
+20
+0.23655144370181402
+30
+1.7809150446582704
+11
+0.2800330587934533
+21
+0.24332527544562987
+31
+0.0393560798271011
+12
+0.2641308495701662
+22
+0.26413084957016775
+32
+0.037121170069247644
+13
+0.2641308495701662
+23
+0.26413084957016775
+33
+0.037121170069247644
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.18667566717603135
+20
+0.3233317400856974
+30
+0.04544131263742729
+11
+0.23655144370181413
+21
+0.23655144370181402
+31
+1.7809150446582704
+12
+0.2641308495701662
+22
+0.26413084957016775
+32
+0.037121170069247644
+13
+0.2641308495701662
+23
+0.26413084957016775
+33
+0.037121170069247644
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.23655144370181413
+20
+0.23655144370181402
+30
+1.7809150446582704
+11
+0.18667566717603135
+21
+0.3233317400856974
+31
+0.04544131263742729
+12
+0.16715806244605846
+22
+0.28952625705134216
+32
+1.7906676483827717
+13
+0.16715806244605846
+23
+0.28952625705134216
+33
+1.7906676483827717
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.360516789505095
+20
+0.09660018260575365
+30
+0.050667330521278475
+11
+0.28986029081458276
+21
+0.16735091692918358
+31
+1.773422974788019
+12
+0.32339898045021165
+22
+0.08665449564468308
+32
+1.7687094193518036
+13
+0.32339898045021165
+23
+0.08665449564468308
+33
+1.7687094193518036
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.28986029081458276
+20
+0.16735091692918358
+30
+1.773422974788019
+11
+0.360516789505095
+21
+0.09660018260575365
+31
+0.050667330521278475
+12
+0.3233317400856941
+22
+0.18667566717602557
+32
+0.04544131263742618
+13
+0.3233317400856941
+23
+0.18667566717602557
+33
+0.04544131263742618
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.03798528133991513
+20
+0.3682094062559258
+30
+0.051748457300486994
+11
+0.08646172679066877
+21
+0.3226795572929172
+31
+1.8020087787532109
+12
+0.09660018260574987
+22
+0.36051678950509547
+32
+0.050667330521278475
+13
+0.09660018260574987
+23
+0.36051678950509547
+33
+0.050667330521278475
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.08646172679066877
+20
+0.3226795572929172
+30
+1.8020087787532109
+11
+0.03798528133991513
+21
+0.3682094062559258
+31
+0.051748457300486994
+12
+1.1102230246251565e-16
+22
+0.37319459270527366
+32
+0.05244907956522271
+13
+1.1102230246251565e-16
+23
+0.37319459270527366
+33
+0.05244907956522271
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.08646172679066877
+20
+0.3226795572929172
+30
+1.8020087787532109
+11
+1.1102230246251565e-16
+21
+0.37319459270527366
+31
+0.05244907956522271
+12
+1.1102230246251565e-16
+22
+0.33379067100000304
+32
+1.8141601820061741
+13
+1.1102230246251565e-16
+23
+0.33379067100000304
+33
+1.8141601820061741
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.26121143822087256
+20
+0.0
+30
+1.7774493084448049
+11
+0.26604451641384186
+21
+0.19156135043889044
+31
+1.8141601820061786
+12
+0.2660445164138424
+22
+-2.220446049250313e-15
+32
+1.814160182006172
+13
+0.2660445164138424
+23
+-2.220446049250313e-15
+33
+1.814160182006172
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.26604451641384186
+20
+0.19156135043889044
+30
+1.8141601820061786
+11
+0.26121143822087256
+21
+0.0
+31
+1.7774493084448049
+12
+0.261211438220872
+22
+0.19156135043889044
+32
+1.777449308444807
+13
+0.261211438220872
+23
+0.19156135043889044
+33
+1.777449308444807
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+6.661338147750939e-16
+20
+0.19156135043889155
+30
+1.8141601820061741
+11
+0.08646172679066877
+21
+0.3226795572929172
+31
+1.8020087787532109
+12
+1.1102230246251565e-16
+22
+0.33379067100000304
+32
+1.8141601820061741
+13
+1.1102230246251565e-16
+23
+0.33379067100000304
+33
+1.8141601820061741
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.08646172679066877
+20
+0.3226795572929172
+30
+1.8020087787532109
+11
+6.661338147750939e-16
+21
+0.19156135043889155
+31
+1.8141601820061741
+12
+0.261211438220872
+22
+0.19156135043889044
+32
+1.777449308444807
+13
+0.261211438220872
+23
+0.19156135043889044
+33
+1.777449308444807
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.08646172679066877
+20
+0.3226795572929172
+30
+1.8020087787532109
+11
+0.261211438220872
+21
+0.19156135043889044
+31
+1.777449308444807
+12
+0.16715806244605846
+22
+0.28952625705134216
+32
+1.7906676483827717
+13
+0.16715806244605846
+23
+0.28952625705134216
+33
+1.7906676483827717
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.16715806244605846
+20
+0.28952625705134216
+30
+1.7906676483827717
+11
+0.261211438220872
+21
+0.19156135043889044
+31
+1.777449308444807
+12
+0.23655144370181413
+22
+0.23655144370181402
+32
+1.7809150446582704
+13
+0.23655144370181413
+23
+0.23655144370181402
+33
+1.7809150446582704
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.23655144370181413
+20
+0.23655144370181402
+30
+1.7809150446582704
+11
+0.261211438220872
+21
+0.19156135043889044
+31
+1.777449308444807
+12
+0.28986029081458276
+22
+0.16735091692918358
+32
+1.773422974788019
+13
+0.28986029081458276
+23
+0.16735091692918358
+33
+1.773422974788019
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.28986029081458276
+20
+0.16735091692918358
+30
+1.773422974788019
+11
+0.261211438220872
+21
+0.19156135043889044
+31
+1.777449308444807
+12
+0.26121143822087256
+22
+0.0
+32
+1.7774493084448049
+13
+0.26121143822087256
+23
+0.0
+33
+1.7774493084448049
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.28986029081458276
+20
+0.16735091692918358
+30
+1.773422974788019
+11
+0.26121143822087256
+21
+0.0
+31
+1.7774493084448049
+12
+0.334843235733576
+22
+0.0
+32
+1.7671010341617321
+13
+0.334843235733576
+23
+0.0
+33
+1.7671010341617321
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.28986029081458276
+20
+0.16735091692918358
+30
+1.773422974788019
+11
+0.334843235733576
+21
+0.0
+31
+1.7671010341617321
+12
+0.32339898045021165
+22
+0.08665449564468308
+32
+1.7687094193518036
+13
+0.32339898045021165
+23
+0.08665449564468308
+33
+1.7687094193518036
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.09633958547085791
+20
+0.3595442277573727
+30
+0.09633958547086535
+11
+-0.002638372221004881
+21
+0.3728562895769836
+31
+0.05240153416118987
+12
+-0.051500277979212306
+22
+0.3664435186276659
+32
+0.05150027797922019
+13
+-0.051500277979212306
+23
+0.3664435186276659
+33
+0.05150027797922019
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.002638372221004881
+20
+0.3728562895769836
+30
+0.05240153416118987
+11
+-0.09633958547085791
+21
+0.3595442277573727
+31
+0.09633958547086535
+12
+-0.08696289916304184
+22
+0.32454995804996933
+32
+1.7271972828431308
+13
+-0.08696289916304184
+23
+0.32454995804996933
+33
+1.7271972828431308
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.36643493196576155
+20
+6.894044639604857e-07
+30
+0.36643493196577
+11
+-0.1844404161195001
+21
+0.049420660550877904
+31
+0.1844404161195074
+12
+-0.18812185528866687
+22
+3.539292661169924e-07
+32
+0.18812185528867426
+13
+-0.18812185528866687
+23
+3.539292661169924e-07
+33
+0.18812185528867426
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.1844404161195001
+20
+0.049420660550877904
+30
+0.1844404161195074
+11
+-0.36643493196576155
+21
+6.894044639604857e-07
+31
+0.36643493196577
+12
+-0.3541898489439894
+22
+0.09490488399184593
+32
+0.3541898489439996
+13
+-0.3541898489439894
+23
+0.09490488399184593
+33
+0.3541898489439996
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.1844404161195001
+20
+0.049420660550877904
+30
+0.1844404161195074
+11
+-0.3541898489439894
+21
+0.09490488399184593
+31
+0.3541898489439996
+12
+-0.17298028978074165
+22
+0.09987021686940978
+32
+0.17298028978074903
+13
+-0.17298028978074165
+23
+0.09987021686940978
+33
+0.17298028978074903
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.17298028978074165
+20
+0.09987021686940978
+30
+0.17298028978074903
+11
+-0.3541898489439894
+21
+0.09490488399184593
+31
+0.3541898489439996
+12
+-0.34654102806927234
+22
+0.11372420208085299
+32
+0.34654102806927917
+13
+-0.34654102806927234
+23
+0.11372420208085299
+33
+0.34654102806927917
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.17298028978074165
+20
+0.09987021686940978
+30
+0.17298028978074903
+11
+-0.34654102806927234
+21
+0.11372420208085299
+31
+0.34654102806927917
+12
+-0.15240279554847375
+22
+0.15240279554847047
+32
+0.15240279554848163
+13
+-0.15240279554847375
+23
+0.15240279554847047
+33
+0.15240279554848163
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.15240279554847375
+20
+0.15240279554847047
+30
+0.15240279554848163
+11
+-0.34654102806927234
+21
+0.11372420208085299
+31
+0.34654102806927917
+12
+-0.31821039848923144
+22
+0.18371885922669984
+32
+0.31821039848924043
+13
+-0.31821039848923144
+23
+0.18371885922669984
+33
+0.31821039848924043
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.15240279554847375
+20
+0.15240279554847047
+30
+0.15240279554848163
+11
+-0.31821039848923144
+21
+0.18371885922669984
+31
+0.31821039848924043
+12
+-0.1330222582069191
+22
+0.18585839010548322
+32
+0.13302225820692531
+13
+-0.1330222582069191
+23
+0.18585839010548322
+33
+0.13302225820692531
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.1330222582069191
+20
+0.18585839010548322
+30
+0.13302225820692531
+11
+-0.31821039848923144
+21
+0.18371885922669984
+31
+0.31821039848924043
+12
+-0.30780841448952007
+22
+0.1975803495231122
+32
+0.30780841448952795
+13
+-0.30780841448952007
+23
+0.1975803495231122
+33
+0.30780841448952795
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.1330222582069191
+20
+0.18585839010548322
+30
+0.13302225820692531
+11
+-0.30780841448952007
+21
+0.1975803495231122
+31
+0.30780841448952795
+12
+-0.11825835860108969
+22
+0.2048294855167876
+32
+0.11825835860109529
+13
+-0.11825835860108969
+23
+0.2048294855167876
+33
+0.11825835860109529
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.11825835860108969
+20
+0.2048294855167876
+30
+0.11825835860109529
+11
+-0.30780841448952007
+21
+0.1975803495231122
+31
+0.30780841448952795
+12
+-0.2885829061834132
+22
+0.22332138636309273
+32
+0.28858290618342114
+13
+-0.2885829061834132
+23
+0.22332138636309273
+33
+0.28858290618342114
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.11825835860108969
+20
+0.2048294855167876
+30
+0.11825835860109529
+11
+-0.2885829061834132
+21
+0.22332138636309273
+31
+0.28858290618342114
+12
+-0.06885738769298949
+22
+0.2472510609542653
+32
+0.06885738769299571
+13
+-0.06885738769298949
+23
+0.2472510609542653
+33
+0.06885738769299571
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.06885738769298949
+20
+0.2472510609542653
+30
+0.06885738769299571
+11
+-0.2885829061834132
+21
+0.22332138636309273
+31
+0.28858290618342114
+12
+-0.2606802535046579
+22
+0.26068025350466195
+32
+0.2606802535046641
+13
+-0.2606802535046579
+23
+0.26068025350466195
+33
+0.2606802535046641
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.06885738769298949
+20
+0.2472510609542653
+30
+0.06885738769299571
+11
+-0.2606802535046579
+21
+0.26068025350466195
+31
+0.2606802535046641
+12
+-0.06658844156786636
+22
+0.24851144712811246
+32
+0.06658844156787258
+13
+-0.06658844156786636
+23
+0.24851144712811246
+33
+0.06658844156787258
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.06658844156786636
+20
+0.24851144712811246
+30
+0.06658844156787258
+11
+-0.2606802535046579
+21
+0.26068025350466195
+31
+0.2606802535046641
+12
+-0.03605586729290833
+22
+0.25655082645025573
+32
+0.036055867292911215
+13
+-0.03605586729290833
+23
+0.25655082645025573
+33
+0.036055867292911215
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.03605586729290833
+20
+0.25655082645025573
+30
+0.036055867292911215
+11
+-0.2606802535046579
+21
+0.26068025350466195
+31
+0.2606802535046641
+12
+-0.051500277979212306
+22
+0.3664435186276659
+32
+0.05150027797922019
+13
+-0.051500277979212306
+23
+0.3664435186276659
+33
+0.05150027797922019
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.051500277979212306
+20
+0.3664435186276659
+30
+0.05150027797922019
+11
+-0.2606802535046579
+21
+0.26068025350466195
+31
+0.2606802535046641
+12
+-0.19372715732247747
+22
+0.3138879622371804
+32
+0.19372715732248486
+13
+-0.19372715732247747
+23
+0.3138879622371804
+33
+0.19372715732248486
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.051500277979212306
+20
+0.3664435186276659
+30
+0.05150027797922019
+11
+-0.19372715732247747
+21
+0.3138879622371804
+31
+0.19372715732248486
+12
+-0.18514211013161566
+22
+0.3206755413684731
+32
+0.1851421101316219
+13
+-0.18514211013161566
+23
+0.3206755413684731
+33
+0.1851421101316219
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.051500277979212306
+20
+0.3664435186276659
+30
+0.05150027797922019
+11
+-0.18514211013161566
+21
+0.3206755413684731
+31
+0.1851421101316219
+12
+-0.1013377420365758
+22
+0.3573720124041593
+32
+0.1013377420365838
+13
+-0.1013377420365758
+23
+0.3573720124041593
+33
+0.1013377420365838
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.051500277979212306
+20
+0.3664435186276659
+30
+0.05150027797922019
+11
+-0.1013377420365758
+21
+0.3573720124041593
+31
+0.1013377420365838
+12
+-0.09633958547085791
+22
+0.3595442277573727
+32
+0.09633958547086535
+13
+-0.09633958547085791
+23
+0.3595442277573727
+33
+0.09633958547086535
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.002638372221004881
+20
+0.3728562895769836
+30
+0.05240153416118987
+11
+-0.03605586729290833
+21
+0.25655082645025573
+31
+0.036055867292911215
+12
+-0.051500277979212306
+22
+0.3664435186276659
+32
+0.05150027797922019
+13
+-0.051500277979212306
+23
+0.3664435186276659
+33
+0.05150027797922019
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+-0.03605586729290833
+20
+0.25655082645025573
+30
+0.036055867292911215
+11
+-0.002638372221004881
+21
+0.3728562895769836
+31
+0.05240153416118987
+12
+1.2212453270876722e-15
+22
+0.2612114382208691
+32
+0.036710873561378254
+13
+1.2212453270876722e-15
+23
+0.2612114382208691
+33
+0.036710873561378254
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+1.2212453270876722e-15
+20
+0.2612114382208691
+30
+0.036710873561378254
+11
+-0.002638372221004881
+21
+0.3728562895769836
+31
+0.05240153416118987
+12
+1.1102230246251565e-16
+22
+0.37319459270527366
+32
+0.05244907956522271
+13
+1.1102230246251565e-16
+23
+0.37319459270527366
+33
+0.05244907956522271
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+1.2212453270876722e-15
+20
+0.2612114382208691
+30
+0.036710873561378254
+11
+1.1102230246251565e-16
+21
+0.37319459270527366
+31
+0.05244907956522271
+12
+0.03798528133991513
+22
+0.3682094062559258
+32
+0.051748457300486994
+13
+0.03798528133991513
+23
+0.3682094062559258
+33
+0.051748457300486994
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+1.2212453270876722e-15
+20
+0.2612114382208691
+30
+0.036710873561378254
+11
+0.03798528133991513
+21
+0.3682094062559258
+31
+0.051748457300486994
+12
+0.0676483697554201
+22
+0.2524671529764305
+32
+0.03548194441425151
+13
+0.0676483697554201
+23
+0.2524671529764305
+33
+0.03548194441425151
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.0676483697554201
+20
+0.2524671529764305
+30
+0.03548194441425151
+11
+0.03798528133991513
+21
+0.3682094062559258
+31
+0.051748457300486994
+12
+0.09660018260574987
+22
+0.36051678950509547
+32
+0.050667330521278475
+13
+0.09660018260574987
+23
+0.36051678950509547
+33
+0.050667330521278475
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.0676483697554201
+20
+0.2524671529764305
+30
+0.03548194441425151
+11
+0.09660018260574987
+21
+0.36051678950509547
+31
+0.050667330521278475
+12
+0.1309243680317843
+22
+0.2267676573798948
+32
+0.031870115851683534
+13
+0.1309243680317843
+23
+0.2267676573798948
+33
+0.031870115851683534
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.1309243680317843
+20
+0.2267676573798948
+30
+0.031870115851683534
+11
+0.09660018260574987
+21
+0.36051678950509547
+31
+0.050667330521278475
+12
+0.18667566717603135
+22
+0.3233317400856974
+32
+0.04544131263742729
+13
+0.18667566717603135
+23
+0.3233317400856974
+33
+0.04544131263742729
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.1309243680317843
+20
+0.2267676573798948
+30
+0.031870115851683534
+11
+0.18667566717603135
+21
+0.3233317400856974
+31
+0.04544131263742729
+12
+0.18569241579901274
+22
+0.18569241579901485
+32
+0.026097367114300607
+13
+0.18569241579901274
+23
+0.18569241579901485
+33
+0.026097367114300607
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.18569241579901274
+20
+0.18569241579901485
+30
+0.026097367114300607
+11
+0.18667566717603135
+21
+0.3233317400856974
+31
+0.04544131263742729
+12
+0.2641308495701662
+22
+0.26413084957016775
+32
+0.037121170069247644
+13
+0.2641308495701662
+23
+0.26413084957016775
+33
+0.037121170069247644
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.2641308495701662
+20
+0.26413084957016775
+30
+0.037121170069247644
+11
+0.22676765737989824
+21
+0.13092436803178253
+31
+0.03187011585168126
+12
+0.18569241579901274
+22
+0.18569241579901485
+32
+0.026097367114300607
+13
+0.18569241579901274
+23
+0.18569241579901485
+33
+0.026097367114300607
+70
+1
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.22676765737989824
+20
+0.13092436803178253
+30
+0.03187011585168126
+11
+0.2641308495701662
+21
+0.26413084957016775
+31
+0.037121170069247644
+12
+0.25246715297643174
+22
+0.06764836975541832
+32
+0.03548194441424812
+13
+0.25246715297643174
+23
+0.06764836975541832
+33
+0.03548194441424812
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.25246715297643174
+20
+0.06764836975541832
+30
+0.03548194441424812
+11
+0.2641308495701662
+21
+0.26413084957016775
+31
+0.037121170069247644
+12
+0.2612114382208709
+22
+2.220446049250313e-15
+32
+0.036710873561377144
+13
+0.2612114382208709
+23
+2.220446049250313e-15
+33
+0.036710873561377144
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.2612114382208709
+20
+2.220446049250313e-15
+30
+0.036710873561377144
+11
+0.2641308495701662
+21
+0.26413084957016775
+31
+0.037121170069247644
+12
+0.3731945927052738
+22
+1.1102230246251565e-15
+32
+0.05244907956522721
+13
+0.3731945927052738
+23
+1.1102230246251565e-15
+33
+0.05244907956522721
+70
+3
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.3731945927052738
+20
+1.1102230246251565e-15
+30
+0.05244907956522721
+11
+0.2641308495701662
+21
+0.26413084957016775
+31
+0.037121170069247644
+12
+0.2800330587934533
+22
+0.24332527544562987
+32
+0.0393560798271011
+13
+0.2800330587934533
+23
+0.24332527544562987
+33
+0.0393560798271011
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.3731945927052738
+20
+1.1102230246251565e-15
+30
+0.05244907956522721
+11
+0.2800330587934533
+21
+0.24332527544562987
+31
+0.0393560798271011
+12
+0.3233317400856941
+22
+0.18667566717602557
+32
+0.04544131263742618
+13
+0.3233317400856941
+23
+0.18667566717602557
+33
+0.04544131263742618
+70
+13
+  0
+3DFACE
+ 8
+finger proximal
+10
+0.3731945927052738
+20
+1.1102230246251565e-15
+30
+0.05244907956522721
+11
+0.3233317400856941
+21
+0.18667566717602557
+31
+0.04544131263742618
+12
+0.360516789505095
+22
+0.09660018260575365
+32
+0.050667330521278475
+13
+0.360516789505095
+23
+0.09660018260575365
+33
+0.050667330521278475
+70
+1
+  0
+LINE
+ 8
+finger proximal
+10
+2.886579864025407e-15
+20
+1.1102230246251565e-15
+30
+6.716849298982197e-15
+11
+3.4416913763379853e-15
+21
+1.1102230246251565e-15
+31
+0.036055867292914545
+  0
+LINE
+ 8
+finger proximal
+10
+2.886579864025407e-15
+20
+1.1102230246251565e-15
+30
+6.716849298982197e-15
+11
+2.886579864025407e-15
+21
+0.37319459270527366
+31
+5.6066262743570405e-15
+  0
+LINE
+ 8
+finger proximal
+10
+2.886579864025407e-15
+20
+1.1102230246251565e-15
+30
+6.716849298982197e-15
+11
+0.37319459270527433
+21
+0.0
+31
+4.496403249731884e-15
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06818492398575215
+20
+0.017821605409913677
+30
+1.4094380312409234
+11
+-0.11687444975825895
+21
+0.06651113118242014
+31
+1.3828600716461388
+12
+-0.13016342955565008
+22
+0.03442869592545578
+32
+1.3828600716461388
+13
+-0.13016342955565008
+23
+0.03442869592545578
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.11687444975825895
+20
+0.06651113118242014
+30
+1.3828600716461388
+11
+-0.06818492398575215
+21
+0.017821605409913677
+31
+1.4094380312409234
+12
+-0.06130604186265742
+22
+0.034428695925455444
+32
+1.4094380312409234
+13
+-0.06130604186265742
+23
+0.034428695925455444
+33
+1.4094380312409234
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+2.078959449036688e-09
+30
+1.4185032783080505
+11
+-0.05036332065479815
+21
+0.048689527851465464
+31
+1.4094380312409234
+12
+-0.06130604186265742
+22
+0.034428695925455444
+32
+1.4094380312409234
+13
+-0.06130604186265742
+23
+0.034428695925455444
+33
+1.4094380312409234
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.05795845209807354
+20
+0.034428695925455666
+30
+1.4094380312409234
+11
+0.09238714594456965
+21
+0.09406094290582162
+31
+1.3828600716461388
+12
+0.047015730890213825
+22
+0.04868952785146535
+32
+1.4094380312409234
+13
+0.047015730890213825
+23
+0.04868952785146535
+33
+1.4094380312409234
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.09238714594456965
+20
+0.09406094290582162
+30
+1.3828600716461388
+11
+0.05795845209807354
+21
+0.034428695925455666
+31
+1.4094380312409234
+12
+0.11352685999367468
+22
+0.06651113118242036
+32
+1.3828600716461388
+13
+0.11352685999367468
+23
+0.06651113118242036
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2586530642290084
+20
+0.06885738977195188
+30
+1.1524587618942086
+11
+-0.2299631369342784
+21
+0.13180291516579612
+31
+1.133935070472781
+12
+-0.25742830375937065
+22
+0.06852921619319091
+32
+1.1428276089410967
+13
+-0.25742830375937065
+23
+0.06852921619319091
+33
+1.1428276089410967
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2299631369342784
+20
+0.13180291516579612
+30
+1.133935070472781
+11
+-0.2586530642290084
+21
+0.06885738977195188
+31
+1.1524587618942086
+12
+-0.23207510463422537
+22
+0.13302226028588032
+32
+1.1524587618942086
+13
+-0.23207510463422537
+23
+0.13302226028588032
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18736621068130693
+20
+0.18569241787797425
+30
+1.1263613947799127
+11
+-0.1346960530892126
+21
+0.2304013118308924
+31
+1.1524587618942086
+12
+-0.13259816291407706
+22
+0.22676765945885902
+32
+1.1205886460425298
+13
+-0.13259816291407706
+23
+0.22676765945885902
+33
+1.1205886460425298
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1346960530892126
+20
+0.2304013118308924
+30
+1.1524587618942086
+11
+-0.18736621068130693
+21
+0.18569241787797425
+31
+1.1263613947799127
+12
+-0.18979567653601576
+22
+0.18812188373268263
+32
+1.1524587618942086
+13
+-0.18979567653601576
+23
+0.18812188373268263
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1645921234021466
+20
+0.16291833059881372
+30
+1.2854810201011309
+11
+-0.22422437038251308
+21
+0.12848963675231756
+31
+1.221316149587198
+12
+-0.2012071821926738
+22
+0.11520065695492604
+32
+1.2854810201011309
+13
+-0.2012071821926738
+23
+0.11520065695492604
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251308
+20
+0.12848963675231756
+30
+1.221316149587198
+11
+-0.1645921234021466
+21
+0.16291833059881372
+31
+1.2854810201011309
+12
+-0.18338557886171938
+22
+0.18171178605838728
+32
+1.221316149587198
+13
+-0.18338557886171938
+23
+0.18171178605838728
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.23207510463422537
+20
+0.13302226028588032
+30
+1.1524587618942086
+11
+-0.18736621068130693
+21
+0.18569241787797425
+31
+1.1263613947799127
+12
+-0.2299631369342784
+22
+0.13180291516579612
+32
+1.133935070472781
+13
+-0.2299631369342784
+23
+0.13180291516579612
+33
+1.133935070472781
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18736621068130693
+20
+0.18569241787797425
+30
+1.1263613947799127
+11
+-0.23207510463422537
+21
+0.13302226028588032
+31
+1.1524587618942086
+12
+-0.18979567653601576
+22
+0.18812188373268263
+32
+1.1524587618942086
+13
+-0.18979567653601576
+23
+0.18812188373268263
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.016147808448662315
+20
+0.06651113118241958
+30
+1.4094380312409234
+11
+-0.001673794882292523
+21
+0.06885738977195172
+31
+1.4094380312409234
+12
+-0.0016737948822921345
+22
+2.078959449036688e-09
+32
+1.4185032783080505
+13
+-0.0016737948822921345
+23
+2.078959449036688e-09
+33
+1.4185032783080505
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.13016342955565008
+20
+0.03442869592545578
+30
+1.3828600716461388
+11
+-0.1645921234021454
+21
+0.09406094290582062
+31
+1.3405806435479293
+12
+-0.18338557886171858
+22
+0.048689527851465464
+32
+1.3405806435479293
+13
+-0.18338557886171858
+23
+0.048689527851465464
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1645921234021454
+20
+0.09406094290582062
+30
+1.3405806435479293
+11
+-0.13016342955565008
+21
+0.03442869592545578
+31
+1.3828600716461388
+12
+-0.11687444975825895
+22
+0.06651113118242014
+32
+1.3828600716461388
+13
+-0.11687444975825895
+23
+0.06651113118242014
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1645921234021462
+20
+0.1629183305988131
+30
+1.0194365036872854
+11
+-0.17465408466303567
+21
+0.099870218948371
+31
+0.9794784721134615
+12
+-0.20120718219267303
+22
+0.11520065695492587
+32
+1.0194365036872854
+13
+-0.20120718219267303
+23
+0.11520065695492587
+33
+1.0194365036872854
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.17465408466303567
+20
+0.099870218948371
+30
+0.9794784721134615
+11
+-0.1645921234021462
+21
+0.1629183305988131
+31
+1.0194365036872854
+12
+-0.16443652005322085
+22
+0.12595478545169825
+32
+0.9896960367232768
+13
+-0.16443652005322085
+23
+0.12595478545169825
+33
+0.9896960367232768
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.16443652005322085
+20
+0.12595478545169825
+30
+0.9896960367232768
+11
+-0.1645921234021462
+21
+0.1629183305988131
+31
+1.0194365036872854
+12
+-0.1540765904307652
+22
+0.1524027976274323
+32
+1.0000559663457305
+13
+-0.1540765904307652
+23
+0.1524027976274323
+33
+1.0000559663457305
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18979567653601495
+20
+2.078959449036688e-09
+30
+1.3405806435479293
+11
+-0.22422437038251186
+21
+0.059632249059325015
+31
+1.2854810201011309
+12
+-0.23207510463422537
+22
+2.078959449036688e-09
+32
+1.2854810201011309
+13
+-0.23207510463422537
+23
+2.078959449036688e-09
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251186
+20
+0.059632249059325015
+30
+1.2854810201011309
+11
+-0.18979567653601495
+21
+2.078959449036688e-09
+31
+1.3405806435479293
+12
+-0.18338557886171858
+22
+0.048689527851465464
+32
+1.3405806435479293
+13
+-0.18338557886171858
+23
+0.048689527851465464
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251186
+20
+0.12848963675231756
+30
+1.083601374201211
+11
+-0.1645921234021462
+21
+0.1629183305988131
+31
+1.0194365036872854
+12
+-0.20120718219267303
+22
+0.11520065695492587
+32
+1.0194365036872854
+13
+-0.20120718219267303
+23
+0.11520065695492587
+33
+1.0194365036872854
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1645921234021462
+20
+0.1629183305988131
+30
+1.0194365036872854
+11
+-0.22422437038251186
+21
+0.12848963675231756
+31
+1.083601374201211
+12
+-0.18338557886171938
+22
+0.18171178605838667
+32
+1.083601374201211
+13
+-0.18338557886171938
+23
+0.18171178605838667
+33
+1.083601374201211
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+2.078959449036688e-09
+30
+1.4185032783080505
+11
+-0.036102488728788296
+21
+0.05963224905932479
+31
+1.4094380312409234
+12
+-0.05036332065479815
+22
+0.048689527851465464
+32
+1.4094380312409234
+13
+-0.05036332065479815
+23
+0.048689527851465464
+33
+1.4094380312409234
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06685541923193933
+20
+0.2557545109560382
+30
+1.1428276089410931
+11
+0.13134846332462868
+21
+0.23040131183089219
+31
+1.1524587618942086
+12
+0.13012911820454431
+22
+0.22828934413094437
+32
+1.133935070472775
+13
+0.13012911820454431
+23
+0.22828934413094437
+33
+1.133935070472775
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.13134846332462868
+20
+0.23040131183089219
+30
+1.1524587618942086
+11
+0.06685541923193933
+21
+0.2557545109560382
+31
+1.1428276089410931
+12
+0.06718359281070013
+22
+0.25697927142567467
+32
+1.1524587618942086
+13
+0.06718359281070013
+23
+0.25697927142567467
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001673794882292523
+20
+0.25697927142567634
+30
+1.221316149587198
+11
+0.06718359281070013
+21
+0.25697927142567467
+31
+1.1524587618942086
+12
+-0.001673794882292523
+22
+0.2660445184928011
+32
+1.1524587618942086
+13
+-0.001673794882292523
+23
+0.2660445184928011
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06718359281070013
+20
+0.25697927142567467
+30
+1.1524587618942086
+11
+-0.001673794882292523
+21
+0.25697927142567634
+31
+1.221316149587198
+12
+0.06483733422116866
+22
+0.2482229151618479
+32
+1.221316149587198
+13
+0.06483733422116866
+23
+0.2482229151618479
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.047015730890213825
+20
+0.1817117860583855
+30
+1.3405806435479293
+11
+-0.0016737948822921345
+21
+0.23040131183089285
+31
+1.2854810201011309
+12
+-0.0016737948822921345
+22
+0.18812188373268185
+32
+1.3405806435479293
+13
+-0.0016737948822921345
+23
+0.18812188373268185
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+0.23040131183089285
+30
+1.2854810201011309
+11
+0.047015730890213825
+21
+0.1817117860583855
+31
+1.3405806435479293
+12
+0.05795845209807354
+22
+0.22255057757917918
+32
+1.2854810201011309
+13
+0.05795845209807354
+23
+0.22255057757917918
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.03275489896420397
+20
+0.12848963675231745
+30
+1.3828600716461388
+11
+-0.0016737948822921345
+21
+0.18812188373268185
+31
+1.3405806435479293
+12
+-0.001673794882292523
+22
+0.1330222602858806
+32
+1.3828600716461388
+13
+-0.001673794882292523
+23
+0.1330222602858806
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+0.18812188373268185
+30
+1.3405806435479293
+11
+0.03275489896420397
+21
+0.12848963675231745
+31
+1.3828600716461388
+12
+0.047015730890213825
+22
+0.1817117860583855
+32
+1.3405806435479293
+13
+0.047015730890213825
+23
+0.1817117860583855
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.016147808448662315
+20
+0.06651113118241958
+30
+1.4094380312409234
+11
+-0.001673794882292523
+21
+0.1330222602858806
+31
+1.3828600716461388
+12
+-0.001673794882292523
+22
+0.06885738977195172
+32
+1.4094380312409234
+13
+-0.001673794882292523
+23
+0.06885738977195172
+33
+1.4094380312409234
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001673794882292523
+20
+0.1330222602858806
+30
+1.3828600716461388
+11
+0.016147808448662315
+21
+0.06651113118241958
+31
+1.4094380312409234
+12
+0.03275489896420397
+22
+0.12848963675231745
+32
+1.3828600716461388
+13
+0.03275489896420397
+23
+0.12848963675231745
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+0.23040131183089285
+30
+1.2854810201011309
+11
+0.06483733422116866
+21
+0.2482229151618479
+31
+1.221316149587198
+12
+-0.001673794882292523
+22
+0.25697927142567634
+32
+1.221316149587198
+13
+-0.001673794882292523
+23
+0.25697927142567634
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06483733422116866
+20
+0.2482229151618479
+30
+1.221316149587198
+11
+-0.0016737948822921345
+21
+0.23040131183089285
+31
+1.2854810201011309
+12
+0.05795845209807354
+22
+0.22255057757917918
+32
+1.2854810201011309
+13
+0.05795845209807354
+23
+0.22255057757917918
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.03275489896420397
+20
+0.05963224905932468
+30
+1.4094380312409234
+11
+0.016147808448662315
+21
+0.06651113118241958
+31
+1.4094380312409234
+12
+-0.0016737948822921345
+22
+2.078959449036688e-09
+32
+1.4185032783080505
+13
+-0.0016737948822921345
+23
+2.078959449036688e-09
+33
+1.4185032783080505
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1645921234021454
+20
+0.09406094290582062
+30
+1.3405806435479293
+11
+-0.1645921234021466
+21
+0.16291833059881372
+31
+1.2854810201011309
+12
+-0.2012071821926738
+22
+0.11520065695492604
+32
+1.2854810201011309
+13
+-0.2012071821926738
+23
+0.11520065695492604
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1645921234021466
+20
+0.16291833059881372
+30
+1.2854810201011309
+11
+-0.1645921234021454
+21
+0.09406094290582062
+31
+1.3405806435479293
+12
+-0.1346960530892126
+22
+0.1330222602858796
+32
+1.3405806435479293
+13
+-0.1346960530892126
+23
+0.1330222602858796
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1346960530892106
+20
+0.1858583921844445
+30
+1.0194365036872854
+11
+-0.1540765904307652
+21
+0.1524027976274323
+31
+1.0000559663457305
+12
+-0.1645921234021462
+22
+0.1629183305988131
+32
+1.0194365036872854
+13
+-0.1645921234021462
+23
+0.1629183305988131
+33
+1.0194365036872854
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06483733422116866
+20
+0.2482229151618479
+30
+1.221316149587198
+11
+0.13134846332462868
+21
+0.23040131183089219
+31
+1.1524587618942086
+12
+0.06718359281070013
+22
+0.25697927142567467
+32
+1.1524587618942086
+13
+0.06718359281070013
+23
+0.25697927142567467
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.13134846332462868
+20
+0.23040131183089219
+30
+1.1524587618942086
+11
+0.06483733422116866
+21
+0.2482229151618479
+31
+1.221316149587198
+12
+0.1268158397910666
+22
+0.22255057757917973
+32
+1.221316149587198
+13
+0.1268158397910666
+23
+0.22255057757917973
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.05795845209807354
+20
+0.22255057757917918
+30
+1.2854810201011309
+11
+0.1268158397910666
+21
+0.22255057757917973
+31
+1.221316149587198
+12
+0.06483733422116866
+22
+0.2482229151618479
+32
+1.221316149587198
+13
+0.06483733422116866
+23
+0.2482229151618479
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.1268158397910666
+20
+0.22255057757917973
+30
+1.221316149587198
+11
+0.05795845209807354
+21
+0.22255057757917918
+31
+1.2854810201011309
+12
+0.11352685999367468
+22
+0.19953338938934095
+32
+1.2854810201011309
+13
+0.11352685999367468
+23
+0.19953338938934095
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18338557886171938
+20
+0.18171178605838667
+30
+1.083601374201211
+11
+-0.1346960530892106
+21
+0.1858583921844445
+31
+1.0194365036872854
+12
+-0.1645921234021462
+22
+0.1629183305988131
+32
+1.0194365036872854
+13
+-0.1645921234021462
+23
+0.1629183305988131
+33
+1.0194365036872854
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1346960530892106
+20
+0.1858583921844445
+30
+1.0194365036872854
+11
+-0.18338557886171938
+21
+0.18171178605838667
+31
+1.083601374201211
+12
+-0.11993215348338515
+22
+0.20482948759574693
+32
+1.0342004032931107
+13
+-0.11993215348338515
+23
+0.20482948759574693
+33
+1.0342004032931107
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.11993215348338515
+20
+0.20482948759574693
+30
+1.0342004032931107
+11
+-0.18338557886171938
+21
+0.18171178605838667
+31
+1.083601374201211
+12
+-0.13016342955565008
+22
+0.2225505775791794
+32
+1.083601374201211
+13
+-0.13016342955565008
+23
+0.2225505775791794
+33
+1.083601374201211
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.07053118257528401
+20
+2.0789595045478393e-09
+30
+1.4094380312409234
+11
+-0.13016342955565008
+21
+0.03442869592545578
+31
+1.3828600716461388
+12
+-0.1346960530892126
+22
+2.078959449036688e-09
+32
+1.3828600716461388
+13
+-0.1346960530892126
+23
+2.078959449036688e-09
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.13016342955565008
+20
+0.03442869592545578
+30
+1.3828600716461388
+11
+-0.07053118257528401
+21
+2.0789595045478393e-09
+31
+1.4094380312409234
+12
+-0.06818492398575215
+22
+0.017821605409913677
+32
+1.4094380312409234
+13
+-0.06818492398575215
+23
+0.017821605409913677
+33
+1.4094380312409234
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.09238714594456926
+20
+0.16291833059881272
+30
+1.3405806435479293
+11
+0.05795845209807354
+21
+0.22255057757917918
+31
+1.2854810201011309
+12
+0.047015730890213825
+22
+0.1817117860583855
+32
+1.3405806435479293
+13
+0.047015730890213825
+23
+0.1817117860583855
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.05795845209807354
+20
+0.22255057757917918
+30
+1.2854810201011309
+11
+0.09238714594456926
+21
+0.16291833059881272
+31
+1.3405806435479293
+12
+0.11352685999367468
+22
+0.19953338938934095
+32
+1.2854810201011309
+13
+0.11352685999367468
+23
+0.19953338938934095
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06483733422116827
+20
+0.11520065695492626
+30
+1.3828600716461388
+11
+0.047015730890213825
+21
+0.1817117860583855
+31
+1.3405806435479293
+12
+0.03275489896420397
+22
+0.12848963675231745
+32
+1.3828600716461388
+13
+0.03275489896420397
+23
+0.12848963675231745
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.047015730890213825
+20
+0.1817117860583855
+30
+1.3405806435479293
+11
+0.06483733422116827
+21
+0.11520065695492626
+31
+1.3828600716461388
+12
+0.09238714594456926
+22
+0.16291833059881272
+32
+1.3405806435479293
+13
+0.09238714594456926
+23
+0.16291833059881272
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+2.078959449036688e-09
+30
+1.4185032783080505
+11
+-0.06130604186265742
+21
+0.034428695925455444
+31
+1.4094380312409234
+12
+-0.06818492398575215
+22
+0.017821605409913677
+32
+1.4094380312409234
+13
+-0.06818492398575215
+23
+0.017821605409913677
+33
+1.4094380312409234
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251308
+20
+0.12848963675231756
+30
+1.221316149587198
+11
+-0.2586530642290084
+21
+0.06885738977195188
+31
+1.1524587618942086
+12
+-0.249896707965181
+22
+0.06651113118242025
+32
+1.221316149587198
+13
+-0.249896707965181
+23
+0.06651113118242025
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2586530642290084
+20
+0.06885738977195188
+30
+1.1524587618942086
+11
+-0.22422437038251308
+21
+0.12848963675231756
+31
+1.221316149587198
+12
+-0.23207510463422537
+22
+0.13302226028588032
+32
+1.1524587618942086
+13
+-0.23207510463422537
+23
+0.13302226028588032
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.05036332065479854
+20
+0.1817117860583855
+30
+1.3405806435479293
+11
+-0.0016737948822921345
+21
+0.23040131183089285
+31
+1.2854810201011309
+12
+-0.06130604186265742
+22
+0.22255057757917918
+32
+1.2854810201011309
+13
+-0.06130604186265742
+23
+0.22255057757917918
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+0.23040131183089285
+30
+1.2854810201011309
+11
+-0.05036332065479854
+21
+0.1817117860583855
+31
+1.3405806435479293
+12
+-0.0016737948822921345
+22
+0.18812188373268185
+32
+1.3405806435479293
+13
+-0.0016737948822921345
+23
+0.18812188373268185
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.05036332065479815
+20
+0.048689527851465464
+30
+1.4094380312409234
+11
+-0.06818492398575215
+21
+0.11520065695492637
+31
+1.3828600716461388
+12
+-0.09573473570915433
+22
+0.09406094290582112
+32
+1.3828600716461388
+13
+-0.09573473570915433
+23
+0.09406094290582112
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06818492398575215
+20
+0.11520065695492637
+30
+1.3828600716461388
+11
+-0.05036332065479815
+21
+0.048689527851465464
+31
+1.4094380312409234
+12
+-0.036102488728788296
+22
+0.05963224905932479
+32
+1.4094380312409234
+13
+-0.036102488728788296
+23
+0.05963224905932479
+33
+1.4094380312409234
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.047015730890213825
+20
+0.04868952785146535
+30
+1.4094380312409234
+11
+0.03275489896420397
+21
+0.05963224905932468
+31
+1.4094380312409234
+12
+-0.0016737948822921345
+22
+2.078959449036688e-09
+32
+1.4185032783080505
+13
+-0.0016737948822921345
+23
+2.078959449036688e-09
+33
+1.4185032783080505
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1645921234021466
+20
+0.16291833059881372
+30
+1.2854810201011309
+11
+-0.13016342955565008
+21
+0.22255057757917995
+31
+1.221316149587198
+12
+-0.18338557886171938
+22
+0.18171178605838728
+32
+1.221316149587198
+13
+-0.18338557886171938
+23
+0.18171178605838728
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.13016342955565008
+20
+0.22255057757917995
+30
+1.221316149587198
+11
+-0.1645921234021466
+21
+0.16291833059881372
+31
+1.2854810201011309
+12
+-0.11687444975825895
+22
+0.19953338938934106
+32
+1.2854810201011309
+13
+-0.11687444975825895
+23
+0.19953338938934106
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06718359281069974
+20
+2.078959393525537e-09
+30
+1.4094380312409234
+11
+0.1268158397910666
+21
+0.03442869592545589
+31
+1.3828600716461388
+12
+0.06483733422116789
+22
+0.01782160540991351
+32
+1.4094380312409234
+13
+0.06483733422116789
+23
+0.01782160540991351
+33
+1.4094380312409234
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.1268158397910666
+20
+0.03442869592545589
+30
+1.3828600716461388
+11
+0.06718359281069974
+21
+2.078959393525537e-09
+31
+1.4094380312409234
+12
+0.1313484633246299
+22
+2.078959449036688e-09
+32
+1.3828600716461388
+13
+0.1313484633246299
+23
+2.078959449036688e-09
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18644808677143027
+20
+2.078959393525537e-09
+30
+1.3405806435479293
+11
+0.2208767806179276
+21
+0.059632249059325015
+31
+1.2854810201011309
+12
+0.18003798909713392
+22
+0.0486895278514653
+32
+1.3405806435479293
+13
+0.18003798909713392
+23
+0.0486895278514653
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2208767806179276
+20
+0.059632249059325015
+30
+1.2854810201011309
+11
+0.18644808677143027
+21
+2.078959393525537e-09
+31
+1.3405806435479293
+12
+0.22872751486964182
+22
+2.078959393525537e-09
+32
+1.2854810201011309
+13
+0.22872751486964182
+23
+2.078959393525537e-09
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.16124453363756153
+20
+0.09406094290582073
+30
+1.3405806435479293
+11
+0.16124453363756192
+21
+0.162918330598814
+31
+1.2854810201011309
+12
+0.13134846332462868
+22
+0.13302226028588
+32
+1.3405806435479293
+13
+0.13134846332462868
+23
+0.13302226028588
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.16124453363756192
+20
+0.162918330598814
+30
+1.2854810201011309
+11
+0.16124453363756153
+21
+0.09406094290582073
+31
+1.3405806435479293
+12
+0.19785959242808948
+22
+0.11520065695492626
+32
+1.2854810201011309
+13
+0.19785959242808948
+23
+0.11520065695492626
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2553054744644233
+20
+0.06885738977195177
+30
+1.1524587618942086
+11
+0.2553054744644241
+21
+2.078959393525537e-09
+31
+1.221316149587198
+12
+0.2643707215315495
+22
+2.078959393525537e-09
+32
+1.1524587618942086
+13
+0.2643707215315495
+23
+2.078959393525537e-09
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2553054744644241
+20
+2.078959393525537e-09
+30
+1.221316149587198
+11
+0.2553054744644233
+21
+0.06885738977195177
+31
+1.1524587618942086
+12
+0.24654911820059633
+22
+0.06651113118241986
+32
+1.221316149587198
+13
+0.24654911820059633
+23
+0.06651113118241986
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.11352685999367468
+20
+0.06651113118242036
+30
+1.3828600716461388
+11
+0.13134846332462868
+21
+0.13302226028588
+31
+1.3405806435479293
+12
+0.09238714594456965
+22
+0.09406094290582162
+32
+1.3828600716461388
+13
+0.09238714594456965
+23
+0.09406094290582162
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.13134846332462868
+20
+0.13302226028588
+30
+1.3405806435479293
+11
+0.11352685999367468
+21
+0.06651113118242036
+31
+1.3828600716461388
+12
+0.16124453363756153
+22
+0.09406094290582073
+32
+1.3405806435479293
+13
+0.16124453363756153
+23
+0.09406094290582073
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06483733422116789
+20
+0.01782160540991351
+30
+1.4094380312409234
+11
+0.05795845209807354
+21
+0.034428695925455666
+31
+1.4094380312409234
+12
+-0.0016737948822921345
+22
+2.078959449036688e-09
+32
+1.4185032783080505
+13
+-0.0016737948822921345
+23
+2.078959449036688e-09
+33
+1.4185032783080505
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.047015730890213825
+20
+0.04868952785146535
+30
+1.4094380312409234
+11
+0.06483733422116827
+21
+0.11520065695492626
+31
+1.3828600716461388
+12
+0.03275489896420397
+22
+0.05963224905932468
+32
+1.4094380312409234
+13
+0.03275489896420397
+23
+0.05963224905932468
+33
+1.4094380312409234
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06483733422116827
+20
+0.11520065695492626
+30
+1.3828600716461388
+11
+0.047015730890213825
+21
+0.04868952785146535
+31
+1.4094380312409234
+12
+0.09238714594456965
+22
+0.09406094290582162
+32
+1.3828600716461388
+13
+0.09238714594456965
+23
+0.09406094290582162
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.1313484633246299
+20
+2.078959449036688e-09
+30
+1.3828600716461388
+11
+0.18003798909713392
+21
+0.0486895278514653
+31
+1.3405806435479293
+12
+0.1268158397910666
+22
+0.03442869592545589
+32
+1.3828600716461388
+13
+0.1268158397910666
+23
+0.03442869592545589
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18003798909713392
+20
+0.0486895278514653
+30
+1.3405806435479293
+11
+0.1313484633246299
+21
+2.078959449036688e-09
+31
+1.3828600716461388
+12
+0.18644808677143027
+22
+2.078959393525537e-09
+32
+1.3405806435479293
+13
+0.18644808677143027
+23
+2.078959393525537e-09
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.05795845209807354
+20
+0.034428695925455666
+30
+1.4094380312409234
+11
+0.047015730890213825
+21
+0.04868952785146535
+31
+1.4094380312409234
+12
+-0.0016737948822921345
+22
+2.078959449036688e-09
+32
+1.4185032783080505
+13
+-0.0016737948822921345
+23
+2.078959449036688e-09
+33
+1.4185032783080505
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.11352685999367468
+20
+0.19953338938934095
+30
+1.2854810201011309
+11
+0.18003798909713586
+21
+0.18171178605838728
+31
+1.221316149587198
+12
+0.1268158397910666
+22
+0.22255057757917973
+32
+1.221316149587198
+13
+0.1268158397910666
+23
+0.22255057757917973
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18003798909713586
+20
+0.18171178605838728
+30
+1.221316149587198
+11
+0.11352685999367468
+21
+0.19953338938934095
+31
+1.2854810201011309
+12
+0.16124453363756192
+22
+0.162918330598814
+32
+1.2854810201011309
+13
+0.16124453363756192
+23
+0.162918330598814
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.24654911820059633
+20
+0.06651113118241986
+30
+1.221316149587198
+11
+0.19785959242808948
+21
+0.11520065695492626
+31
+1.2854810201011309
+12
+0.2208767806179276
+22
+0.059632249059325015
+32
+1.2854810201011309
+13
+0.2208767806179276
+23
+0.059632249059325015
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.19785959242808948
+20
+0.11520065695492626
+30
+1.2854810201011309
+11
+0.24654911820059633
+21
+0.06651113118241986
+31
+1.221316149587198
+12
+0.22087678061792837
+22
+0.12848963675231756
+32
+1.221316149587198
+13
+0.22087678061792837
+23
+0.12848963675231756
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.03275489896420397
+20
+0.05963224905932468
+30
+1.4094380312409234
+11
+0.03275489896420397
+21
+0.12848963675231745
+31
+1.3828600716461388
+12
+0.016147808448662315
+22
+0.06651113118241958
+32
+1.4094380312409234
+13
+0.016147808448662315
+23
+0.06651113118241958
+33
+1.4094380312409234
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.03275489896420397
+20
+0.12848963675231745
+30
+1.3828600716461388
+11
+0.03275489896420397
+21
+0.05963224905932468
+31
+1.4094380312409234
+12
+0.06483733422116827
+22
+0.11520065695492626
+32
+1.3828600716461388
+13
+0.06483733422116827
+23
+0.11520065695492626
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251108
+20
+0.05963224905932479
+30
+1.0194365036872854
+11
+-0.18979567653601576
+21
+2.0789595045478393e-09
+31
+0.9643368802404846
+12
+-0.23207510463422495
+22
+2.078959449036688e-09
+32
+1.0194365036872854
+13
+-0.23207510463422495
+23
+2.078959449036688e-09
+33
+1.0194365036872854
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18979567653601576
+20
+2.0789595045478393e-09
+30
+0.9643368802404846
+11
+-0.22422437038251108
+21
+0.05963224905932479
+31
+1.0194365036872854
+12
+-0.1861142110017942
+22
+0.049420662629840184
+32
+0.9680183457747035
+13
+-0.1861142110017942
+23
+0.049420662629840184
+33
+0.9680183457747035
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.258653064229008
+20
+2.0789595045478393e-09
+30
+1.083601374201211
+11
+-0.22422437038251108
+21
+0.05963224905932479
+31
+1.0194365036872854
+12
+-0.23207510463422495
+22
+2.078959449036688e-09
+32
+1.0194365036872854
+13
+-0.23207510463422495
+23
+2.078959449036688e-09
+33
+1.0194365036872854
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251108
+20
+0.05963224905932479
+30
+1.0194365036872854
+11
+-0.258653064229008
+21
+2.0789595045478393e-09
+31
+1.083601374201211
+12
+-0.2498967079651798
+22
+0.06651113118242008
+32
+1.083601374201211
+13
+-0.2498967079651798
+23
+0.06651113118242008
+33
+1.083601374201211
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251186
+20
+0.059632249059325015
+30
+1.2854810201011309
+11
+-0.2586530642290092
+21
+2.078959449036688e-09
+31
+1.221316149587198
+12
+-0.23207510463422537
+22
+2.078959449036688e-09
+32
+1.2854810201011309
+13
+-0.23207510463422537
+23
+2.078959449036688e-09
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2586530642290092
+20
+2.078959449036688e-09
+30
+1.221316149587198
+11
+-0.22422437038251186
+21
+0.059632249059325015
+31
+1.2854810201011309
+12
+-0.249896707965181
+22
+0.06651113118242025
+32
+1.221316149587198
+13
+-0.249896707965181
+23
+0.06651113118242025
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.13259816291407706
+20
+0.22676765945885902
+30
+1.1205886460425298
+11
+-0.0705311825752852
+21
+0.2569792714256749
+31
+1.1524587618942086
+12
+-0.06932216463771257
+22
+0.2524671550553943
+32
+1.1169768174799652
+13
+-0.06932216463771257
+23
+0.2524671550553943
+33
+1.1169768174799652
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0705311825752852
+20
+0.2569792714256749
+30
+1.1524587618942086
+11
+-0.13259816291407706
+21
+0.22676765945885902
+31
+1.1205886460425298
+12
+-0.1346960530892126
+22
+0.2304013118308924
+32
+1.1524587618942086
+13
+-0.1346960530892126
+23
+0.2304013118308924
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2012071821926738
+20
+0.11520065695492604
+30
+1.2854810201011309
+11
+-0.249896707965181
+21
+0.06651113118242025
+31
+1.221316149587198
+12
+-0.22422437038251186
+22
+0.059632249059325015
+32
+1.2854810201011309
+13
+-0.22422437038251186
+23
+0.059632249059325015
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.249896707965181
+20
+0.06651113118242025
+30
+1.221316149587198
+11
+-0.2012071821926738
+21
+0.11520065695492604
+31
+1.2854810201011309
+12
+-0.22422437038251308
+22
+0.12848963675231756
+32
+1.221316149587198
+13
+-0.22422437038251308
+23
+0.12848963675231756
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18338557886171858
+20
+0.048689527851465464
+30
+1.3405806435479293
+11
+-0.2012071821926738
+21
+0.11520065695492604
+31
+1.2854810201011309
+12
+-0.22422437038251186
+22
+0.059632249059325015
+32
+1.2854810201011309
+13
+-0.22422437038251186
+23
+0.059632249059325015
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2012071821926738
+20
+0.11520065695492604
+30
+1.2854810201011309
+11
+-0.18338557886171858
+21
+0.048689527851465464
+31
+1.3405806435479293
+12
+-0.1645921234021454
+22
+0.09406094290582062
+32
+1.3405806435479293
+13
+-0.1645921234021454
+23
+0.09406094290582062
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1346960530892126
+20
+0.1330222602858796
+30
+1.3405806435479293
+11
+-0.11687444975825895
+21
+0.19953338938934106
+31
+1.2854810201011309
+12
+-0.1645921234021466
+22
+0.16291833059881372
+32
+1.2854810201011309
+13
+-0.1645921234021466
+23
+0.16291833059881372
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.11687444975825895
+20
+0.19953338938934106
+30
+1.2854810201011309
+11
+-0.1346960530892126
+21
+0.1330222602858796
+31
+1.3405806435479293
+12
+-0.09573473570915275
+22
+0.162918330598813
+32
+1.3405806435479293
+13
+-0.09573473570915275
+23
+0.162918330598813
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18338557886171938
+20
+0.18171178605838728
+30
+1.221316149587198
+11
+-0.1346960530892126
+21
+0.2304013118308924
+31
+1.1524587618942086
+12
+-0.18979567653601576
+22
+0.18812188373268263
+32
+1.1524587618942086
+13
+-0.18979567653601576
+23
+0.18812188373268263
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1346960530892126
+20
+0.2304013118308924
+30
+1.1524587618942086
+11
+-0.18338557886171938
+21
+0.18171178605838728
+31
+1.221316149587198
+12
+-0.13016342955565008
+22
+0.22255057757917995
+32
+1.221316149587198
+13
+-0.13016342955565008
+23
+0.22255057757917995
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09573473570915433
+20
+0.09406094290582112
+30
+1.3828600716461388
+11
+-0.09573473570915275
+21
+0.162918330598813
+31
+1.3405806435479293
+12
+-0.1346960530892126
+22
+0.1330222602858796
+32
+1.3405806435479293
+13
+-0.1346960530892126
+23
+0.1330222602858796
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09573473570915275
+20
+0.162918330598813
+30
+1.3405806435479293
+11
+-0.09573473570915433
+21
+0.09406094290582112
+31
+1.3828600716461388
+12
+-0.06818492398575215
+22
+0.11520065695492637
+32
+1.3828600716461388
+13
+-0.06818492398575215
+23
+0.11520065695492637
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.20120718219267303
+20
+0.11520065695492587
+30
+1.0194365036872854
+11
+-0.1861142110017942
+21
+0.049420662629840184
+31
+0.9680183457747035
+12
+-0.22422437038251108
+22
+0.05963224905932479
+32
+1.0194365036872854
+13
+-0.22422437038251108
+23
+0.05963224905932479
+33
+1.0194365036872854
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1861142110017942
+20
+0.049420662629840184
+30
+0.9680183457747035
+11
+-0.20120718219267303
+21
+0.11520065695492587
+31
+1.0194365036872854
+12
+-0.17465408466303567
+22
+0.099870218948371
+32
+0.9794784721134615
+13
+-0.17465408466303567
+23
+0.099870218948371
+33
+0.9794784721134615
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06130604186265742
+20
+0.034428695925455444
+30
+1.4094380312409234
+11
+-0.09573473570915433
+21
+0.09406094290582112
+31
+1.3828600716461388
+12
+-0.11687444975825895
+22
+0.06651113118242014
+32
+1.3828600716461388
+13
+-0.11687444975825895
+23
+0.06651113118242014
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09573473570915433
+20
+0.09406094290582112
+30
+1.3828600716461388
+11
+-0.06130604186265742
+21
+0.034428695925455444
+31
+1.4094380312409234
+12
+-0.05036332065479815
+22
+0.048689527851465464
+32
+1.4094380312409234
+13
+-0.05036332065479815
+23
+0.048689527851465464
+33
+1.4094380312409234
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.11687444975825895
+20
+0.06651113118242014
+30
+1.3828600716461388
+11
+-0.1346960530892126
+21
+0.1330222602858796
+31
+1.3405806435479293
+12
+-0.1645921234021454
+22
+0.09406094290582062
+32
+1.3405806435479293
+13
+-0.1645921234021454
+23
+0.09406094290582062
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1346960530892126
+20
+0.1330222602858796
+30
+1.3405806435479293
+11
+-0.11687444975825895
+21
+0.06651113118242014
+31
+1.3828600716461388
+12
+-0.09573473570915433
+22
+0.09406094290582112
+32
+1.3828600716461388
+13
+-0.09573473570915433
+23
+0.09406094290582112
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2498967079651798
+20
+0.06651113118242008
+30
+1.083601374201211
+11
+-0.20120718219267303
+21
+0.11520065695492587
+31
+1.0194365036872854
+12
+-0.22422437038251108
+22
+0.05963224905932479
+32
+1.0194365036872854
+13
+-0.22422437038251108
+23
+0.05963224905932479
+33
+1.0194365036872854
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.20120718219267303
+20
+0.11520065695492587
+30
+1.0194365036872854
+11
+-0.2498967079651798
+21
+0.06651113118242008
+31
+1.083601374201211
+12
+-0.22422437038251186
+22
+0.12848963675231756
+32
+1.083601374201211
+13
+-0.22422437038251186
+23
+0.12848963675231756
+33
+1.083601374201211
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1346960530892126
+20
+2.078959449036688e-09
+30
+1.3828600716461388
+11
+-0.18338557886171858
+21
+0.048689527851465464
+31
+1.3405806435479293
+12
+-0.18979567653601495
+22
+2.078959449036688e-09
+32
+1.3405806435479293
+13
+-0.18979567653601495
+23
+2.078959449036688e-09
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18338557886171858
+20
+0.048689527851465464
+30
+1.3405806435479293
+11
+-0.1346960530892126
+21
+2.078959449036688e-09
+31
+1.3828600716461388
+12
+-0.13016342955565008
+22
+0.03442869592545578
+32
+1.3828600716461388
+13
+-0.13016342955565008
+23
+0.03442869592545578
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18338557886171938
+20
+0.18171178605838728
+30
+1.221316149587198
+11
+-0.23207510463422537
+21
+0.13302226028588032
+31
+1.1524587618942086
+12
+-0.22422437038251308
+22
+0.12848963675231756
+32
+1.221316149587198
+13
+-0.22422437038251308
+23
+0.12848963675231756
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.23207510463422537
+20
+0.13302226028588032
+30
+1.1524587618942086
+11
+-0.18338557886171938
+21
+0.18171178605838728
+31
+1.221316149587198
+12
+-0.18979567653601576
+22
+0.18812188373268263
+32
+1.1524587618942086
+13
+-0.18979567653601576
+23
+0.18812188373268263
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.036102488728788684
+20
+0.12848963675231756
+30
+1.3828600716461388
+11
+-0.0016737948822921345
+21
+0.18812188373268185
+31
+1.3405806435479293
+12
+-0.05036332065479854
+22
+0.1817117860583855
+32
+1.3405806435479293
+13
+-0.05036332065479854
+23
+0.1817117860583855
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+0.18812188373268185
+30
+1.3405806435479293
+11
+-0.036102488728788684
+21
+0.12848963675231756
+31
+1.3828600716461388
+12
+-0.001673794882292523
+22
+0.1330222602858806
+32
+1.3828600716461388
+13
+-0.001673794882292523
+23
+0.1330222602858806
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06130604186265742
+20
+0.22255057757917918
+30
+1.2854810201011309
+11
+-0.001673794882292523
+21
+0.25697927142567634
+31
+1.221316149587198
+12
+-0.06818492398575296
+22
+0.24822291516184813
+32
+1.221316149587198
+13
+-0.06818492398575296
+23
+0.24822291516184813
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001673794882292523
+20
+0.25697927142567634
+30
+1.221316149587198
+11
+-0.06130604186265742
+21
+0.22255057757917918
+31
+1.2854810201011309
+12
+-0.0016737948822921345
+22
+0.23040131183089285
+32
+1.2854810201011309
+13
+-0.0016737948822921345
+23
+0.23040131183089285
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06818492398575296
+20
+0.24822291516184813
+30
+1.221316149587198
+11
+-0.001673794882292523
+21
+0.2660445184928011
+31
+1.1524587618942086
+12
+-0.0705311825752852
+22
+0.2569792714256749
+32
+1.1524587618942086
+13
+-0.0705311825752852
+23
+0.2569792714256749
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001673794882292523
+20
+0.2660445184928011
+30
+1.1524587618942086
+11
+-0.06818492398575296
+21
+0.24822291516184813
+31
+1.221316149587198
+12
+-0.001673794882292523
+22
+0.25697927142567634
+32
+1.221316149587198
+13
+-0.001673794882292523
+23
+0.25697927142567634
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.036102488728788296
+20
+0.05963224905932479
+30
+1.4094380312409234
+11
+-0.036102488728788684
+21
+0.12848963675231756
+31
+1.3828600716461388
+12
+-0.06818492398575215
+22
+0.11520065695492637
+32
+1.3828600716461388
+13
+-0.06818492398575215
+23
+0.11520065695492637
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.036102488728788684
+20
+0.12848963675231756
+30
+1.3828600716461388
+11
+-0.036102488728788296
+21
+0.05963224905932479
+31
+1.4094380312409234
+12
+-0.019495398213246973
+22
+0.06651113118241969
+32
+1.4094380312409234
+13
+-0.019495398213246973
+23
+0.06651113118241969
+33
+1.4094380312409234
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06818492398575215
+20
+0.11520065695492637
+30
+1.3828600716461388
+11
+-0.05036332065479854
+21
+0.1817117860583855
+31
+1.3405806435479293
+12
+-0.09573473570915275
+22
+0.162918330598813
+32
+1.3405806435479293
+13
+-0.09573473570915275
+23
+0.162918330598813
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.05036332065479854
+20
+0.1817117860583855
+30
+1.3405806435479293
+11
+-0.06818492398575215
+21
+0.11520065695492637
+31
+1.3828600716461388
+12
+-0.036102488728788684
+22
+0.12848963675231756
+32
+1.3828600716461388
+13
+-0.036102488728788684
+23
+0.12848963675231756
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09573473570915275
+20
+0.162918330598813
+30
+1.3405806435479293
+11
+-0.06130604186265742
+21
+0.22255057757917918
+31
+1.2854810201011309
+12
+-0.11687444975825895
+22
+0.19953338938934106
+32
+1.2854810201011309
+13
+-0.11687444975825895
+23
+0.19953338938934106
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06130604186265742
+20
+0.22255057757917918
+30
+1.2854810201011309
+11
+-0.09573473570915275
+21
+0.162918330598813
+31
+1.3405806435479293
+12
+-0.05036332065479854
+22
+0.1817117860583855
+32
+1.3405806435479293
+13
+-0.05036332065479854
+23
+0.1817117860583855
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+2.078959449036688e-09
+30
+1.4185032783080505
+11
+-0.001673794882292523
+21
+0.06885738977195172
+31
+1.4094380312409234
+12
+-0.019495398213246973
+22
+0.06651113118241969
+32
+1.4094380312409234
+13
+-0.019495398213246973
+23
+0.06651113118241969
+33
+1.4094380312409234
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+2.078959449036688e-09
+30
+1.4185032783080505
+11
+-0.019495398213246973
+21
+0.06651113118241969
+31
+1.4094380312409234
+12
+-0.036102488728788296
+22
+0.05963224905932479
+32
+1.4094380312409234
+13
+-0.036102488728788296
+23
+0.05963224905932479
+33
+1.4094380312409234
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.07053118257528798
+20
+0.24725106303322575
+30
+1.083601374201211
+11
+-0.11993215348338515
+21
+0.20482948759574693
+31
+1.0342004032931107
+12
+-0.13016342955565008
+22
+0.2225505775791794
+32
+1.083601374201211
+13
+-0.13016342955565008
+23
+0.2225505775791794
+33
+1.083601374201211
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016737948822921345
+20
+2.078959449036688e-09
+30
+1.4185032783080505
+11
+-0.06818492398575215
+21
+0.017821605409913677
+31
+1.4094380312409234
+12
+-0.07053118257528401
+22
+2.0789595045478393e-09
+32
+1.4094380312409234
+13
+-0.07053118257528401
+23
+2.0789595045478393e-09
+33
+1.4094380312409234
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06932216463771257
+20
+0.2524671550553943
+30
+1.1169768174799652
+11
+-0.001673794882292523
+21
+0.2660445184928011
+31
+1.1524587618942086
+12
+-0.0377296621751953
+22
+0.2565508285292213
+32
+1.1164028946013032
+13
+-0.0377296621751953
+23
+0.2565508285292213
+33
+1.1164028946013032
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001673794882292523
+20
+0.2660445184928011
+30
+1.1524587618942086
+11
+-0.06932216463771257
+21
+0.2524671550553943
+31
+1.1169768174799652
+12
+-0.0705311825752852
+22
+0.2569792714256749
+32
+1.1524587618942086
+13
+-0.0705311825752852
+23
+0.2569792714256749
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.11687444975825895
+20
+0.19953338938934106
+30
+1.2854810201011309
+11
+-0.06818492398575296
+21
+0.24822291516184813
+31
+1.221316149587198
+12
+-0.13016342955565008
+22
+0.22255057757917995
+32
+1.221316149587198
+13
+-0.13016342955565008
+23
+0.22255057757917995
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06818492398575296
+20
+0.24822291516184813
+30
+1.221316149587198
+11
+-0.11687444975825895
+21
+0.19953338938934106
+31
+1.2854810201011309
+12
+-0.06130604186265742
+22
+0.22255057757917918
+32
+1.2854810201011309
+13
+-0.06130604186265742
+23
+0.22255057757917918
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.13016342955565008
+20
+0.22255057757917995
+30
+1.221316149587198
+11
+-0.0705311825752852
+21
+0.2569792714256749
+31
+1.1524587618942086
+12
+-0.1346960530892126
+22
+0.2304013118308924
+32
+1.1524587618942086
+13
+-0.1346960530892126
+23
+0.2304013118308924
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0705311825752852
+20
+0.2569792714256749
+30
+1.1524587618942086
+11
+-0.13016342955565008
+21
+0.22255057757917995
+31
+1.221316149587198
+12
+-0.06818492398575296
+22
+0.24822291516184813
+32
+1.221316149587198
+13
+-0.06818492398575296
+23
+0.24822291516184813
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.1268158397910666
+20
+0.22255057757917973
+30
+1.221316149587198
+11
+0.18644808677143104
+21
+0.18812188373268263
+31
+1.1524587618942086
+12
+0.13134846332462868
+22
+0.23040131183089219
+32
+1.1524587618942086
+13
+0.13134846332462868
+23
+0.23040131183089219
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18644808677143104
+20
+0.18812188373268263
+30
+1.1524587618942086
+11
+0.1268158397910666
+21
+0.22255057757917973
+31
+1.221316149587198
+12
+0.18003798909713586
+22
+0.18171178605838728
+32
+1.221316149587198
+13
+0.18003798909713586
+23
+0.18171178605838728
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2553054744644233
+20
+0.06885738977195177
+30
+1.1524587618942086
+11
+0.2643707215315495
+21
+2.078959393525537e-09
+31
+1.1524587618942086
+12
+0.2540807139947864
+22
+0.06852921619319102
+32
+1.1428276089410956
+13
+0.2540807139947864
+23
+0.06852921619319102
+33
+1.1428276089410956
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06718359281069974
+20
+2.078959393525537e-09
+30
+1.4094380312409234
+11
+0.06483733422116789
+21
+0.01782160540991351
+31
+1.4094380312409234
+12
+-0.0016737948822921345
+22
+2.078959449036688e-09
+32
+1.4185032783080505
+13
+-0.0016737948822921345
+23
+2.078959449036688e-09
+33
+1.4185032783080505
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18401862091672266
+20
+0.18569241787797314
+30
+1.1263613947799103
+11
+0.2287275148696407
+21
+0.1330222602858802
+31
+1.1524587618942086
+12
+0.22661554716969412
+22
+0.13180291516579662
+32
+1.133935070472775
+13
+0.22661554716969412
+23
+0.13180291516579662
+33
+1.133935070472775
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2287275148696407
+20
+0.1330222602858802
+30
+1.1524587618942086
+11
+0.18401862091672266
+21
+0.18569241787797314
+31
+1.1263613947799103
+12
+0.18644808677143104
+22
+0.18812188373268263
+32
+1.1524587618942086
+13
+0.18644808677143104
+23
+0.18812188373268263
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06718359281070013
+20
+0.25697927142567467
+30
+1.1524587618942086
+11
+0.06685541923193933
+21
+0.2557545109560382
+31
+1.1428276089410931
+12
+-0.001673794882292523
+22
+0.2660445184928011
+32
+1.1524587618942086
+13
+-0.001673794882292523
+23
+0.2660445184928011
+33
+1.1524587618942086
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.019495398213246973
+20
+0.06651113118241969
+30
+1.4094380312409234
+11
+-0.001673794882292523
+21
+0.1330222602858806
+31
+1.3828600716461388
+12
+-0.036102488728788684
+22
+0.12848963675231756
+32
+1.3828600716461388
+13
+-0.036102488728788684
+23
+0.12848963675231756
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001673794882292523
+20
+0.1330222602858806
+30
+1.3828600716461388
+11
+-0.019495398213246973
+21
+0.06651113118241969
+31
+1.4094380312409234
+12
+-0.001673794882292523
+22
+0.06885738977195172
+32
+1.4094380312409234
+13
+-0.001673794882292523
+23
+0.06885738977195172
+33
+1.4094380312409234
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.13012911820454431
+20
+0.22828934413094437
+30
+1.133935070472775
+11
+0.18644808677143104
+21
+0.18812188373268263
+31
+1.1524587618942086
+12
+0.18401862091672266
+22
+0.18569241787797314
+32
+1.1263613947799103
+13
+0.18401862091672266
+23
+0.18569241787797314
+33
+1.1263613947799103
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18644808677143104
+20
+0.18812188373268263
+30
+1.1524587618942086
+11
+0.13012911820454431
+21
+0.22828934413094437
+31
+1.133935070472775
+12
+0.13134846332462868
+22
+0.23040131183089219
+32
+1.1524587618942086
+13
+0.13134846332462868
+23
+0.23040131183089219
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2287275148696407
+20
+0.1330222602858802
+30
+1.1524587618942086
+11
+0.18003798909713586
+21
+0.18171178605838728
+31
+1.221316149587198
+12
+0.22087678061792837
+22
+0.12848963675231756
+32
+1.221316149587198
+13
+0.22087678061792837
+23
+0.12848963675231756
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18003798909713586
+20
+0.18171178605838728
+30
+1.221316149587198
+11
+0.2287275148696407
+21
+0.1330222602858802
+31
+1.1524587618942086
+12
+0.18644808677143104
+22
+0.18812188373268263
+32
+1.1524587618942086
+13
+0.18644808677143104
+23
+0.18812188373268263
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.09238714594456965
+20
+0.09406094290582162
+30
+1.3828600716461388
+11
+0.09238714594456926
+21
+0.16291833059881272
+31
+1.3405806435479293
+12
+0.06483733422116827
+22
+0.11520065695492626
+32
+1.3828600716461388
+13
+0.06483733422116827
+23
+0.11520065695492626
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.09238714594456926
+20
+0.16291833059881272
+30
+1.3405806435479293
+11
+0.09238714594456965
+21
+0.09406094290582162
+31
+1.3828600716461388
+12
+0.13134846332462868
+22
+0.13302226028588
+32
+1.3405806435479293
+13
+0.13134846332462868
+23
+0.13302226028588
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.22087678061792837
+20
+0.12848963675231756
+30
+1.221316149587198
+11
+0.16124453363756192
+21
+0.162918330598814
+31
+1.2854810201011309
+12
+0.19785959242808948
+22
+0.11520065695492626
+32
+1.2854810201011309
+13
+0.19785959242808948
+23
+0.11520065695492626
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.16124453363756192
+20
+0.162918330598814
+30
+1.2854810201011309
+11
+0.22087678061792837
+21
+0.12848963675231756
+31
+1.221316149587198
+12
+0.18003798909713586
+22
+0.18171178605838728
+32
+1.221316149587198
+13
+0.18003798909713586
+23
+0.18171178605838728
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2553054744644233
+20
+0.06885738977195177
+30
+1.1524587618942086
+11
+0.22087678061792837
+21
+0.12848963675231756
+31
+1.221316149587198
+12
+0.24654911820059633
+22
+0.06651113118241986
+32
+1.221316149587198
+13
+0.24654911820059633
+23
+0.06651113118241986
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.22087678061792837
+20
+0.12848963675231756
+30
+1.221316149587198
+11
+0.2553054744644233
+21
+0.06885738977195177
+31
+1.1524587618942086
+12
+0.2287275148696407
+22
+0.1330222602858802
+32
+1.1524587618942086
+13
+0.2287275148696407
+23
+0.1330222602858802
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.22661554716969412
+20
+0.13180291516579662
+30
+1.133935070472775
+11
+0.2553054744644233
+21
+0.06885738977195177
+31
+1.1524587618942086
+12
+0.2540807139947864
+22
+0.06852921619319102
+32
+1.1428276089410956
+13
+0.2540807139947864
+23
+0.06852921619319102
+33
+1.1428276089410956
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2553054744644233
+20
+0.06885738977195177
+30
+1.1524587618942086
+11
+0.22661554716969412
+21
+0.13180291516579662
+31
+1.133935070472775
+12
+0.2287275148696407
+22
+0.1330222602858802
+32
+1.1524587618942086
+13
+0.2287275148696407
+23
+0.1330222602858802
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18003798909713392
+20
+0.0486895278514653
+30
+1.3405806435479293
+11
+0.19785959242808948
+21
+0.11520065695492626
+31
+1.2854810201011309
+12
+0.16124453363756153
+22
+0.09406094290582073
+32
+1.3405806435479293
+13
+0.16124453363756153
+23
+0.09406094290582073
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.19785959242808948
+20
+0.11520065695492626
+30
+1.2854810201011309
+11
+0.18003798909713392
+21
+0.0486895278514653
+31
+1.3405806435479293
+12
+0.2208767806179276
+22
+0.059632249059325015
+32
+1.2854810201011309
+13
+0.2208767806179276
+23
+0.059632249059325015
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.13134846332462868
+20
+0.13302226028588
+30
+1.3405806435479293
+11
+0.11352685999367468
+21
+0.19953338938934095
+31
+1.2854810201011309
+12
+0.09238714594456926
+22
+0.16291833059881272
+32
+1.3405806435479293
+13
+0.09238714594456926
+23
+0.16291833059881272
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.11352685999367468
+20
+0.19953338938934095
+30
+1.2854810201011309
+11
+0.13134846332462868
+21
+0.13302226028588
+31
+1.3405806435479293
+12
+0.16124453363756192
+22
+0.162918330598814
+32
+1.2854810201011309
+13
+0.16124453363756192
+23
+0.162918330598814
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.1268158397910666
+20
+0.03442869592545589
+30
+1.3828600716461388
+11
+0.16124453363756153
+21
+0.09406094290582073
+31
+1.3405806435479293
+12
+0.11352685999367468
+22
+0.06651113118242036
+32
+1.3828600716461388
+13
+0.11352685999367468
+23
+0.06651113118242036
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.16124453363756153
+20
+0.09406094290582073
+30
+1.3405806435479293
+11
+0.1268158397910666
+21
+0.03442869592545589
+31
+1.3828600716461388
+12
+0.18003798909713392
+22
+0.0486895278514653
+32
+1.3405806435479293
+13
+0.18003798909713392
+23
+0.0486895278514653
+33
+1.3405806435479293
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06483733422116789
+20
+0.01782160540991351
+30
+1.4094380312409234
+11
+0.11352685999367468
+21
+0.06651113118242036
+31
+1.3828600716461388
+12
+0.05795845209807354
+22
+0.034428695925455666
+32
+1.4094380312409234
+13
+0.05795845209807354
+23
+0.034428695925455666
+33
+1.4094380312409234
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.11352685999367468
+20
+0.06651113118242036
+30
+1.3828600716461388
+11
+0.06483733422116789
+21
+0.01782160540991351
+31
+1.4094380312409234
+12
+0.1268158397910666
+22
+0.03442869592545589
+32
+1.3828600716461388
+13
+0.1268158397910666
+23
+0.03442869592545589
+33
+1.3828600716461388
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.24654911820059633
+20
+0.06651113118241986
+30
+1.221316149587198
+11
+0.22872751486964182
+21
+2.078959393525537e-09
+31
+1.2854810201011309
+12
+0.2553054744644241
+22
+2.078959393525537e-09
+32
+1.221316149587198
+13
+0.2553054744644241
+23
+2.078959393525537e-09
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.22872751486964182
+20
+2.078959393525537e-09
+30
+1.2854810201011309
+11
+0.24654911820059633
+21
+0.06651113118241986
+31
+1.221316149587198
+12
+0.2208767806179276
+22
+0.059632249059325015
+32
+1.2854810201011309
+13
+0.2208767806179276
+23
+0.059632249059325015
+33
+1.2854810201011309
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.30905309760007
+20
+0.08235659503094556
+30
+-0.029987258687029512
+11
+-0.001695615174016285
+21
+2.078961613971586e-09
+31
+-0.029987258687029512
+12
+-0.3198956001177664
+22
+3.9221799974509253e-07
+32
+-0.029987258687029512
+13
+-0.3198956001177664
+23
+3.9221799974509253e-07
+33
+-0.029987258687029512
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001695615174016285
+20
+2.078961613971586e-09
+30
+-0.029987258687029512
+11
+-0.30905309760007
+21
+0.08235659503094556
+31
+-0.029987258687029512
+12
+-0.27726469062630743
+22
+0.15910033213491825
+32
+-0.029987258687029512
+13
+-0.27726469062630743
+23
+0.15910033213491825
+33
+-0.029987258687029512
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001695615174016285
+20
+2.078961613971586e-09
+30
+-0.029987258687029512
+11
+-0.27726469062630743
+21
+0.15910033213491825
+31
+-0.029987258687029512
+12
+-0.226696706598913
+22
+0.2250016446713048
+32
+-0.029987258687029512
+13
+-0.226696706598913
+23
+0.2250016446713048
+33
+-0.029987258687029512
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001695615174016285
+20
+2.078961613971586e-09
+30
+-0.029987258687029512
+11
+-0.226696706598913
+21
+0.2250016446713048
+31
+-0.029987258687029512
+12
+-0.16079527006181052
+22
+0.2755694670978184
+32
+-0.029987258687029512
+13
+-0.16079527006181052
+23
+0.2755694670978184
+33
+-0.029987258687029512
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001695615174016285
+20
+2.078961613971586e-09
+30
+-0.029987258687029512
+11
+-0.16079527006181052
+21
+0.2755694670978184
+31
+-0.029987258687029512
+12
+-0.08405145500772823
+22
+0.30735768588336976
+32
+-0.029987258687029512
+13
+-0.08405145500772823
+23
+0.30735768588336976
+33
+-0.029987258687029512
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001695615174016285
+20
+2.078961613971586e-09
+30
+-0.029987258687029512
+11
+-0.08405145500772823
+21
+0.30735768588336976
+31
+-0.029987258687029512
+12
+-0.001695225607451445
+22
+0.31819998645023906
+32
+-0.029987258687029512
+13
+-0.001695225607451445
+23
+0.31819998645023906
+33
+-0.029987258687029512
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001695615174016285
+20
+2.078961613971586e-09
+30
+-0.029987258687029512
+11
+-0.001695225607451445
+21
+0.31819998645023906
+31
+-0.029987258687029512
+12
+-0.0015797266903812557
+22
+1.936872939811707e-09
+32
+-0.029987258687029512
+13
+-0.0015797266903812557
+23
+1.936872939811707e-09
+33
+-0.029987258687029512
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0015797266903812557
+20
+1.936872939811707e-09
+30
+-0.029987258687029512
+11
+-0.001695225607451445
+21
+0.31819998645023906
+31
+-0.029987258687029512
+12
+0.08066097720549281
+22
+0.30735748393254325
+32
+-0.029987258687029512
+13
+0.08066097720549281
+23
+0.30735748393254325
+33
+-0.029987258687029512
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0015797266903812557
+20
+1.936872939811707e-09
+30
+-0.029987258687029512
+11
+0.08066097720549281
+21
+0.30735748393254325
+31
+-0.029987258687029512
+12
+1.2212453270876722e-15
+22
+-3.885780586188048e-16
+32
+-0.029987258687029512
+13
+1.2212453270876722e-15
+23
+-3.885780586188048e-16
+33
+-0.029987258687029512
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+1.2212453270876722e-15
+20
+-3.885780586188048e-16
+30
+-0.029987258687029512
+11
+0.08066097720549281
+21
+0.30735748393254325
+31
+-0.029987258687029512
+12
+0.3165043686247876
+22
+-3.880600751848817e-07
+32
+-0.029987258687029512
+13
+0.3165043686247876
+23
+-3.880600751848817e-07
+33
+-0.029987258687029512
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.3165043686247876
+20
+-3.880600751848817e-07
+30
+-0.029987258687029512
+11
+0.08066097720549281
+21
+0.30735748393254325
+31
+-0.029987258687029512
+12
+0.1574047143094663
+22
+0.27556907695878063
+32
+-0.029987258687029512
+13
+0.1574047143094663
+23
+0.27556907695878063
+33
+-0.029987258687029512
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.3165043686247876
+20
+-3.880600751848817e-07
+30
+-0.029987258687029512
+11
+0.1574047143094663
+21
+0.27556907695878063
+31
+-0.029987258687029512
+12
+0.22330602684585132
+22
+0.2250010929313866
+32
+-0.029987258687029512
+13
+0.22330602684585132
+23
+0.2250010929313866
+33
+-0.029987258687029512
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.3165043686247876
+20
+-3.880600751848817e-07
+30
+-0.029987258687029512
+11
+0.22330602684585132
+21
+0.2250010929313866
+31
+-0.029987258687029512
+12
+0.2738738492723656
+22
+0.1590996563942833
+32
+-0.029987258687029512
+13
+0.2738738492723656
+23
+0.1590996563942833
+33
+-0.029987258687029512
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.3165043686247876
+20
+-3.880600751848817e-07
+30
+-0.029987258687029512
+11
+0.2738738492723656
+21
+0.1590996563942833
+31
+-0.029987258687029512
+12
+0.3056620680579174
+22
+0.08235584134020102
+32
+-0.029987258687029512
+13
+0.3056620680579174
+23
+0.08235584134020102
+33
+-0.029987258687029512
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.249896707965181
+20
+0.06651113118242025
+30
+1.221316149587198
+11
+-0.26771831129613466
+21
+2.078959449036688e-09
+31
+1.1524587618942086
+12
+-0.2586530642290092
+22
+2.078959449036688e-09
+32
+1.221316149587198
+13
+-0.2586530642290092
+23
+2.078959449036688e-09
+33
+1.221316149587198
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.26771831129613466
+20
+2.078959449036688e-09
+30
+1.1524587618942086
+11
+-0.249896707965181
+21
+0.06651113118242025
+31
+1.221316149587198
+12
+-0.2586530642290084
+22
+0.06885738977195188
+32
+1.1524587618942086
+13
+-0.2586530642290084
+23
+0.06885738977195188
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2586530642290084
+20
+0.06885738977195188
+30
+1.1524587618942086
+11
+-0.25742830375937065
+21
+0.06852921619319091
+31
+1.1428276089410967
+12
+-0.26771831129613466
+22
+2.078959449036688e-09
+32
+1.1524587618942086
+13
+-0.26771831129613466
+23
+2.078959449036688e-09
+33
+1.1524587618942086
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06685541923193933
+20
+0.2557545109560382
+30
+1.1428276089410931
+11
+0.12925057314949195
+21
+0.22676765945885802
+31
+1.1205886460425298
+12
+0.06597457487312747
+22
+0.25246715505539363
+32
+1.1169768174799652
+13
+0.06597457487312747
+23
+0.25246715505539363
+33
+1.1169768174799652
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.12925057314949195
+20
+0.22676765945885802
+30
+1.1205886460425298
+11
+0.06685541923193933
+21
+0.2557545109560382
+31
+1.1428276089410931
+12
+0.13012911820454431
+22
+0.22828934413094437
+32
+1.133935070472775
+13
+0.13012911820454431
+23
+0.22828934413094437
+33
+1.133935070472775
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.13012911820454431
+20
+0.22828934413094437
+30
+1.133935070472775
+11
+0.18401862091672266
+21
+0.18569241787797314
+31
+1.1263613947799103
+12
+0.12925057314949195
+22
+0.22676765945885802
+32
+1.1205886460425298
+13
+0.12925057314949195
+23
+0.22676765945885802
+33
+1.1205886460425298
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001673794882292523
+20
+0.2660445184928011
+30
+1.1524587618942086
+11
+-0.001673794882292523
+21
+0.2612114402998337
+31
+1.1157478883328396
+12
+-0.0377296621751953
+22
+0.2565508285292213
+32
+1.1164028946013032
+13
+-0.0377296621751953
+23
+0.2565508285292213
+33
+1.1164028946013032
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.001673794882292523
+20
+0.2660445184928011
+30
+1.1524587618942086
+11
+0.06597457487312747
+21
+0.25246715505539363
+31
+1.1169768174799652
+12
+-0.001673794882292523
+22
+0.2612114402998337
+32
+1.1157478883328396
+13
+-0.001673794882292523
+23
+0.2612114402998337
+33
+1.1157478883328396
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.06597457487312747
+20
+0.25246715505539363
+30
+1.1169768174799652
+11
+-0.001673794882292523
+21
+0.2660445184928011
+31
+1.1524587618942086
+12
+0.06685541923193933
+22
+0.2557545109560382
+32
+1.1428276089410931
+13
+0.06685541923193933
+23
+0.2557545109560382
+33
+1.1428276089410931
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18401862091672266
+20
+0.18569241787797314
+30
+1.1263613947799103
+11
+0.22661554716969412
+21
+0.13180291516579662
+31
+1.133935070472775
+12
+0.22509386249760543
+22
+0.13092437011074415
+32
+1.1205886460425298
+13
+0.22509386249760543
+23
+0.13092437011074415
+33
+1.1205886460425298
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.13227951399272905
+20
+0.2262157433373062
+30
+1.1157478883328396
+11
+-0.07053118257528798
+21
+0.24725106303322575
+31
+1.083601374201211
+12
+-0.13016342955565008
+22
+0.2225505775791794
+32
+1.083601374201211
+13
+-0.13016342955565008
+23
+0.2225505775791794
+33
+1.083601374201211
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.07053118257528798
+20
+0.24725106303322575
+30
+1.083601374201211
+11
+-0.13227951399272905
+21
+0.2262157433373062
+31
+1.1157478883328396
+12
+-0.06826223645016033
+22
+0.2485114492070778
+32
+1.085870320326334
+13
+-0.06826223645016033
+23
+0.2485114492070778
+33
+1.085870320326334
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06826223645016033
+20
+0.2485114492070778
+30
+1.085870320326334
+11
+-0.13227951399272905
+21
+0.2262157433373062
+31
+1.1157478883328396
+12
+-0.06928028989247559
+22
+0.2523108763786134
+32
+1.1157478883328396
+13
+-0.06928028989247559
+23
+0.2523108763786134
+33
+1.1157478883328396
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06928028989247559
+20
+0.2523108763786134
+30
+1.1157478883328396
+11
+-0.13227951399272905
+21
+0.2262157433373062
+31
+1.1157478883328396
+12
+-0.13259816291407706
+22
+0.22676765945885902
+32
+1.1205886460425298
+13
+-0.13259816291407706
+23
+0.22676765945885902
+33
+1.1205886460425298
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06928028989247559
+20
+0.2523108763786134
+30
+1.1157478883328396
+11
+-0.13259816291407706
+21
+0.22676765945885902
+31
+1.1205886460425298
+12
+-0.06932216463771257
+22
+0.2524671550553943
+32
+1.1169768174799652
+13
+-0.06932216463771257
+23
+0.2524671550553943
+33
+1.1169768174799652
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18637817417176358
+20
+0.1847043813684307
+30
+1.1157478883328396
+11
+-0.13016342955565008
+21
+0.2225505775791794
+31
+1.083601374201211
+12
+-0.18338557886171938
+22
+0.18171178605838667
+32
+1.083601374201211
+13
+-0.18338557886171938
+23
+0.18171178605838667
+33
+1.083601374201211
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.13016342955565008
+20
+0.2225505775791794
+30
+1.083601374201211
+11
+-0.18637817417176358
+21
+0.1847043813684307
+31
+1.1157478883328396
+12
+-0.13227951399272905
+22
+0.2262157433373062
+32
+1.1157478883328396
+13
+-0.13227951399272905
+23
+0.2262157433373062
+33
+1.1157478883328396
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.13227951399272905
+20
+0.2262157433373062
+30
+1.1157478883328396
+11
+-0.18637817417176358
+21
+0.1847043813684307
+31
+1.1157478883328396
+12
+-0.18736621068130693
+22
+0.18569241787797425
+32
+1.1263613947799127
+13
+-0.18736621068130693
+23
+0.18569241787797425
+33
+1.1263613947799127
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.13227951399272905
+20
+0.2262157433373062
+30
+1.1157478883328396
+11
+-0.18736621068130693
+21
+0.18569241787797425
+31
+1.1263613947799127
+12
+-0.13259816291407706
+22
+0.22676765945885902
+32
+1.1205886460425298
+13
+-0.13259816291407706
+23
+0.22676765945885902
+33
+1.1205886460425298
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2539846691819466
+20
+0.06760649708914246
+30
+1.1157478883328396
+11
+-0.22422437038251186
+21
+0.12848963675231756
+31
+1.083601374201211
+12
+-0.2498967079651798
+22
+0.06651113118242008
+32
+1.083601374201211
+13
+-0.2498967079651798
+23
+0.06651113118242008
+33
+1.083601374201211
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251186
+20
+0.12848963675231756
+30
+1.083601374201211
+11
+-0.2539846691819466
+21
+0.06760649708914246
+31
+1.1157478883328396
+12
+-0.25742830375937065
+22
+0.06852921619319091
+32
+1.1428276089410967
+13
+-0.25742830375937065
+23
+0.06852921619319091
+33
+1.1428276089410967
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251186
+20
+0.12848963675231756
+30
+1.083601374201211
+11
+-0.25742830375937065
+21
+0.06852921619319091
+31
+1.1428276089410967
+12
+-0.2299631369342784
+22
+0.13180291516579612
+32
+1.133935070472781
+13
+-0.2299631369342784
+23
+0.13180291516579612
+33
+1.133935070472781
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.22422437038251186
+20
+0.12848963675231756
+30
+1.083601374201211
+11
+-0.2299631369342784
+21
+0.13180291516579612
+31
+1.133935070472781
+12
+-0.2278895361406395
+22
+0.13060572118939684
+32
+1.1157478883328396
+13
+-0.2278895361406395
+23
+0.13060572118939684
+33
+1.1157478883328396
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.25742830375937065
+20
+0.06852921619319091
+30
+1.1428276089410967
+11
+-0.26288523310316675
+21
+2.078959449036688e-09
+31
+1.1157478883328396
+12
+-0.26771831129613466
+22
+2.078959449036688e-09
+32
+1.1524587618942086
+13
+-0.26771831129613466
+23
+2.078959449036688e-09
+33
+1.1524587618942086
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.26288523310316675
+20
+2.078959449036688e-09
+30
+1.1157478883328396
+11
+-0.25742830375937065
+21
+0.06852921619319091
+31
+1.1428276089410967
+12
+-0.258653064229008
+22
+2.0789595045478393e-09
+32
+1.083601374201211
+13
+-0.258653064229008
+23
+2.0789595045478393e-09
+33
+1.083601374201211
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.258653064229008
+20
+2.0789595045478393e-09
+30
+1.083601374201211
+11
+-0.25742830375937065
+21
+0.06852921619319091
+31
+1.1428276089410967
+12
+-0.2498967079651798
+22
+0.06651113118242008
+32
+1.083601374201211
+13
+-0.2498967079651798
+23
+0.06651113118242008
+33
+1.083601374201211
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2498967079651798
+20
+0.06651113118242008
+30
+1.083601374201211
+11
+-0.25742830375937065
+21
+0.06852921619319091
+31
+1.1428276089410967
+12
+-0.2539846691819466
+22
+0.06760649708914246
+32
+1.1157478883328396
+13
+-0.2539846691819466
+23
+0.06760649708914246
+33
+1.1157478883328396
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.22509386249760543
+20
+0.13092437011074415
+30
+1.1205886460425298
+11
+0.2626308843757006
+21
+0.26432585403041065
+31
+1.1153131616555407
+12
+0.18401862091672266
+22
+0.18569241787797314
+32
+1.1263613947799103
+13
+0.18401862091672266
+23
+0.18569241787797314
+33
+1.1263613947799103
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2626308843757006
+20
+0.26432585403041065
+30
+1.1153131616555407
+11
+0.22509386249760543
+21
+0.13092437011074415
+31
+1.1205886460425298
+12
+0.25079335809414127
+22
+0.06764837183437955
+32
+1.1169768174799628
+13
+0.25079335809414127
+23
+0.06764837183437955
+33
+1.1169768174799628
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2626308843757006
+20
+0.26432585403041065
+30
+1.1153131616555407
+11
+0.25079335809414127
+21
+0.06764837183437955
+31
+1.1169768174799628
+12
+0.2595376433385824
+22
+2.078959393525537e-09
+32
+1.1157478883328396
+13
+0.2595376433385824
+23
+2.078959393525537e-09
+33
+1.1157478883328396
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2626308843757006
+20
+0.26432585403041065
+30
+1.1153131616555407
+11
+0.2595376433385824
+21
+2.078959393525537e-09
+31
+1.1157478883328396
+12
+0.3718950373839425
+22
+2.0789609478377713e-09
+32
+1.0999570863887107
+13
+0.3718950373839425
+23
+2.0789609478377713e-09
+33
+1.0999570863887107
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2626308843757006
+20
+0.26432585403041065
+30
+1.1153131616555407
+11
+0.3718950373839425
+21
+2.0789609478377713e-09
+31
+1.0999570863887107
+12
+0.3219319512611786
+22
+0.1868459359501376
+32
+1.1069789402167114
+13
+0.3219319512611786
+23
+0.1868459359501376
+33
+1.1069789402167114
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.3219319512611786
+20
+0.1868459359501376
+30
+1.1069789402167114
+11
+0.3718950373839425
+21
+2.0789609478377713e-09
+31
+1.0999570863887107
+12
+0.3591904613034176
+22
+0.09669866074029804
+32
+1.1017425981156106
+13
+0.3591904613034176
+23
+0.09669866074029804
+33
+1.1017425981156106
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2278895361406395
+20
+0.13060572118939684
+30
+1.1157478883328396
+11
+-0.18338557886171938
+21
+0.18171178605838667
+31
+1.083601374201211
+12
+-0.22422437038251186
+22
+0.12848963675231756
+32
+1.083601374201211
+13
+-0.22422437038251186
+23
+0.12848963675231756
+33
+1.083601374201211
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18338557886171938
+20
+0.18171178605838667
+30
+1.083601374201211
+11
+-0.2278895361406395
+21
+0.13060572118939684
+31
+1.1157478883328396
+12
+-0.2299631369342784
+22
+0.13180291516579612
+32
+1.133935070472781
+13
+-0.2299631369342784
+23
+0.13180291516579612
+33
+1.133935070472781
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18338557886171938
+20
+0.18171178605838667
+30
+1.083601374201211
+11
+-0.2299631369342784
+21
+0.13180291516579612
+31
+1.133935070472781
+12
+-0.18736621068130693
+22
+0.18569241787797425
+32
+1.1263613947799127
+13
+-0.18736621068130693
+23
+0.18569241787797425
+33
+1.1263613947799127
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18338557886171938
+20
+0.18171178605838667
+30
+1.083601374201211
+11
+-0.18736621068130693
+21
+0.18569241787797425
+31
+1.1263613947799127
+12
+-0.18637817417176358
+22
+0.1847043813684307
+32
+1.1157478883328396
+13
+-0.18637817417176358
+23
+0.1847043813684307
+33
+1.1157478883328396
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.25079335809414127
+20
+0.06764837183437955
+30
+1.1169768174799628
+11
+0.2643707215315495
+21
+2.078959393525537e-09
+31
+1.1524587618942086
+12
+0.2595376433385824
+22
+2.078959393525537e-09
+32
+1.1157478883328396
+13
+0.2595376433385824
+23
+2.078959393525537e-09
+33
+1.1157478883328396
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2643707215315495
+20
+2.078959393525537e-09
+30
+1.1524587618942086
+11
+0.25079335809414127
+21
+0.06764837183437955
+31
+1.1169768174799628
+12
+0.2540807139947864
+22
+0.06852921619319102
+32
+1.1428276089410956
+13
+0.2540807139947864
+23
+0.06852921619319102
+33
+1.1428276089410956
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.18979567653601576
+20
+2.0789595045478393e-09
+30
+0.9643368802404846
+11
+-0.35829150997042125
+21
+0.09555005256687987
+31
+0.7958410468060751
+12
+-0.3706909491339097
+22
+4.544972251330215e-07
+32
+0.7834416076425874
+13
+-0.3706909491339097
+23
+4.544972251330215e-07
+33
+0.7834416076425874
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.35829150997042125
+20
+0.09555005256687987
+30
+0.7958410468060751
+11
+-0.18979567653601576
+21
+2.0789595045478393e-09
+31
+0.9643368802404846
+12
+-0.32186859092445047
+22
+0.18485247889635142
+32
+0.8322639658520461
+13
+-0.32186859092445047
+23
+0.18485247889635142
+33
+0.8322639658520461
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.32186859092445047
+20
+0.18485247889635142
+30
+0.8322639658520461
+11
+-0.18979567653601576
+21
+2.0789595045478393e-09
+31
+0.9643368802404846
+12
+-0.29191131237938345
+22
+0.22460181803280632
+32
+0.8622212443971131
+13
+-0.29191131237938345
+23
+0.22460181803280632
+33
+0.8622212443971131
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.29191131237938345
+20
+0.22460181803280632
+30
+0.8622212443971131
+11
+-0.18979567653601576
+21
+2.0789595045478393e-09
+31
+0.9643368802404846
+12
+-0.2637126619050216
+22
+0.26201769074666237
+32
+0.890419894871474
+13
+-0.2637126619050216
+23
+0.26201769074666237
+33
+0.890419894871474
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2637126619050216
+20
+0.26201769074666237
+30
+0.890419894871474
+11
+-0.18979567653601576
+21
+2.0789595045478393e-09
+31
+0.9643368802404846
+12
+-0.1875225673732847
+22
+0.3218626350699233
+32
+0.9666099894032089
+13
+-0.1875225673732847
+23
+0.3218626350699233
+33
+0.9666099894032089
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1875225673732847
+20
+0.3218626350699233
+30
+0.9666099894032089
+11
+-0.18979567653601576
+21
+2.0789595045478393e-09
+31
+0.9643368802404846
+12
+-0.1861142110017942
+22
+0.049420662629840184
+32
+0.9680183457747035
+13
+-0.1861142110017942
+23
+0.049420662629840184
+33
+0.9680183457747035
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1875225673732847
+20
+0.3218626350699233
+30
+0.9666099894032089
+11
+-0.1861142110017942
+21
+0.049420662629840184
+31
+0.9680183457747035
+12
+-0.17465408466303567
+22
+0.099870218948371
+32
+0.9794784721134615
+13
+-0.17465408466303567
+23
+0.099870218948371
+33
+0.9794784721134615
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1875225673732847
+20
+0.3218626350699233
+30
+0.9666099894032089
+11
+-0.17465408466303567
+21
+0.099870218948371
+31
+0.9794784721134615
+12
+-0.09822205169936674
+22
+0.36024333207843495
+32
+1.05591050507713
+13
+-0.09822205169936674
+23
+0.36024333207843495
+33
+1.05591050507713
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09822205169936674
+20
+0.36024333207843495
+30
+1.05591050507713
+11
+-0.17465408466303567
+21
+0.099870218948371
+31
+0.9794784721134615
+12
+-0.16443652005322085
+22
+0.12595478545169825
+32
+0.9896960367232768
+13
+-0.16443652005322085
+23
+0.12595478545169825
+33
+0.9896960367232768
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09822205169936674
+20
+0.36024333207843495
+30
+1.05591050507713
+11
+-0.16443652005322085
+21
+0.12595478545169825
+31
+0.9896960367232768
+12
+-0.1540765904307652
+22
+0.1524027976274323
+32
+1.0000559663457305
+13
+-0.1540765904307652
+23
+0.1524027976274323
+33
+1.0000559663457305
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09822205169936674
+20
+0.36024333207843495
+30
+1.05591050507713
+11
+-0.1540765904307652
+21
+0.1524027976274323
+31
+1.0000559663457305
+12
+-0.1346960530892106
+22
+0.1858583921844445
+32
+1.0194365036872854
+13
+-0.1346960530892106
+23
+0.1858583921844445
+33
+1.0194365036872854
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09822205169936674
+20
+0.36024333207843495
+30
+1.05591050507713
+11
+-0.1346960530892106
+21
+0.1858583921844445
+31
+1.0194365036872854
+12
+-0.11993215348338515
+22
+0.20482948759574693
+32
+1.0342004032931107
+13
+-0.11993215348338515
+23
+0.20482948759574693
+33
+1.0342004032931107
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09822205169936674
+20
+0.36024333207843495
+30
+1.05591050507713
+11
+-0.11993215348338515
+21
+0.20482948759574693
+31
+1.0342004032931107
+12
+-0.07053118257528798
+22
+0.24725106303322575
+32
+1.083601374201211
+13
+-0.07053118257528798
+23
+0.24725106303322575
+33
+1.083601374201211
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09822205169936674
+20
+0.36024333207843495
+30
+1.05591050507713
+11
+-0.07053118257528798
+21
+0.24725106303322575
+31
+1.083601374201211
+12
+-0.053235390890986944
+22
+0.3668191518579341
+32
+1.1009056923994525
+13
+-0.053235390890986944
+23
+0.3668191518579341
+33
+1.1009056923994525
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.053235390890986944
+20
+0.3668191518579341
+30
+1.1009056923994525
+11
+-0.07053118257528798
+21
+0.24725106303322575
+31
+1.083601374201211
+12
+-0.06826223645016033
+22
+0.2485114492070778
+32
+1.085870320326334
+13
+-0.06826223645016033
+23
+0.2485114492070778
+33
+1.085870320326334
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.053235390890986944
+20
+0.3668191518579341
+30
+1.1009056923994525
+11
+-0.06826223645016033
+21
+0.2485114492070778
+31
+1.085870320326334
+12
+-0.0377296621751953
+22
+0.2565508285292213
+32
+1.1164028946013032
+13
+-0.0377296621751953
+23
+0.2565508285292213
+33
+1.1164028946013032
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.22509386249760543
+20
+0.13092437011074415
+30
+1.1205886460425298
+11
+0.2540807139947864
+21
+0.06852921619319102
+31
+1.1428276089410956
+12
+0.25079335809414127
+22
+0.06764837183437955
+32
+1.1169768174799628
+13
+0.25079335809414127
+23
+0.06764837183437955
+33
+1.1169768174799628
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2540807139947864
+20
+0.06852921619319102
+30
+1.1428276089410956
+11
+0.22509386249760543
+21
+0.13092437011074415
+31
+1.1205886460425298
+12
+0.22661554716969412
+22
+0.13180291516579662
+32
+1.133935070472775
+13
+0.22661554716969412
+23
+0.13180291516579662
+33
+1.133935070472775
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.06928028989247559
+20
+0.2523108763786134
+30
+1.1157478883328396
+11
+-0.0377296621751953
+21
+0.2565508285292213
+31
+1.1164028946013032
+12
+-0.06826223645016033
+22
+0.2485114492070778
+32
+1.085870320326334
+13
+-0.06826223645016033
+23
+0.2485114492070778
+33
+1.085870320326334
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0377296621751953
+20
+0.2565508285292213
+30
+1.1164028946013032
+11
+-0.06928028989247559
+21
+0.2523108763786134
+31
+1.1157478883328396
+12
+-0.06932216463771257
+22
+0.2524671550553943
+32
+1.1169768174799652
+13
+-0.06932216463771257
+23
+0.2524671550553943
+33
+1.1169768174799652
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0377296621751953
+20
+0.2565508285292213
+30
+1.1164028946013032
+11
+-0.0016951576939718827
+21
+0.37359067095576093
+31
+1.0999540174532403
+12
+-0.053235390890986944
+22
+0.3668191518579341
+32
+1.1009056923994525
+13
+-0.053235390890986944
+23
+0.3668191518579341
+33
+1.1009056923994525
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016951576939718827
+20
+0.37359067095576093
+30
+1.0999540174532403
+11
+-0.0377296621751953
+21
+0.2565508285292213
+31
+1.1164028946013032
+12
+-0.001673794882292523
+22
+0.2612114402998337
+32
+1.1157478883328396
+13
+-0.001673794882292523
+23
+0.2612114402998337
+33
+1.1157478883328396
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016951576939718827
+20
+0.37359067095576093
+30
+1.0999540174532403
+11
+-0.001673794882292523
+21
+0.2612114402998337
+31
+1.1157478883328396
+12
+0.09500391648962592
+22
+0.3608857995504491
+32
+1.1017395706853292
+13
+0.09500391648962592
+23
+0.3608857995504491
+33
+1.1017395706853292
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.09500391648962592
+20
+0.3608857995504491
+30
+1.1017395706853292
+11
+-0.001673794882292523
+21
+0.2612114402998337
+31
+1.1157478883328396
+12
+0.06597457487312747
+22
+0.25246715505539363
+32
+1.1169768174799652
+13
+0.06597457487312747
+23
+0.25246715505539363
+33
+1.1169768174799652
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.09500391648962592
+20
+0.3608857995504491
+30
+1.1017395706853292
+11
+0.06597457487312747
+21
+0.25246715505539363
+31
+1.1169768174799652
+12
+0.12925057314949195
+22
+0.22676765945885802
+32
+1.1205886460425298
+13
+0.12925057314949195
+23
+0.22676765945885802
+33
+1.1205886460425298
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.09500391648962592
+20
+0.3608857995504491
+30
+1.1017395706853292
+11
+0.12925057314949195
+21
+0.22676765945885802
+31
+1.1205886460425298
+12
+0.18515108995501323
+22
+0.32362707322580364
+32
+1.1069759431829398
+13
+0.18515108995501323
+23
+0.32362707322580364
+33
+1.1069759431829398
+70
+3
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18515108995501323
+20
+0.32362707322580364
+30
+1.1069759431829398
+11
+0.12925057314949195
+21
+0.22676765945885802
+31
+1.1205886460425298
+12
+0.18401862091672266
+22
+0.18569241787797314
+32
+1.1263613947799103
+13
+0.18401862091672266
+23
+0.18569241787797314
+33
+1.1263613947799103
+70
+13
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18515108995501323
+20
+0.32362707322580364
+30
+1.1069759431829398
+11
+0.18401862091672266
+21
+0.18569241787797314
+31
+1.1263613947799103
+12
+0.2626308843757006
+22
+0.26432585403041065
+32
+1.1153131616555407
+13
+0.2626308843757006
+23
+0.26432585403041065
+33
+1.1153131616555407
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.30905309760007
+20
+0.08235659503094556
+30
+-0.029987258687029512
+11
+-0.3198956001177664
+21
+3.9221799974509253e-07
+31
+-0.029987258687029512
+12
+-0.3706909491339097
+22
+4.544972251330215e-07
+32
+0.7834416076425874
+13
+-0.3706909491339097
+23
+4.544972251330215e-07
+33
+0.7834416076425874
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.35829150997042125
+20
+0.09555005256687987
+30
+0.7958410468060751
+11
+-0.30905309760007
+21
+0.08235659503094556
+31
+-0.029987258687029512
+12
+-0.3706909491339097
+22
+4.544972251330215e-07
+32
+0.7834416076425874
+13
+-0.3706909491339097
+23
+4.544972251330215e-07
+33
+0.7834416076425874
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.2637126619050216
+20
+0.26201769074666237
+30
+0.890419894871474
+11
+-0.16079527006181052
+21
+0.2755694670978184
+31
+-0.029987258687029512
+12
+-0.226696706598913
+22
+0.2250016446713048
+32
+-0.029987258687029512
+13
+-0.226696706598913
+23
+0.2250016446713048
+33
+-0.029987258687029512
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1875225673732847
+20
+0.3218626350699233
+30
+0.9666099894032089
+11
+-0.16079527006181052
+21
+0.2755694670978184
+31
+-0.029987258687029512
+12
+-0.2637126619050216
+22
+0.26201769074666237
+32
+0.890419894871474
+13
+-0.2637126619050216
+23
+0.26201769074666237
+33
+0.890419894871474
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.1875225673732847
+20
+0.3218626350699233
+30
+0.9666099894032089
+11
+-0.08405145500772823
+21
+0.30735768588336976
+31
+-0.029987258687029512
+12
+-0.16079527006181052
+22
+0.2755694670978184
+32
+-0.029987258687029512
+13
+-0.16079527006181052
+23
+0.2755694670978184
+33
+-0.029987258687029512
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09822205169936674
+20
+0.36024333207843495
+30
+1.05591050507713
+11
+-0.08405145500772823
+21
+0.30735768588336976
+31
+-0.029987258687029512
+12
+-0.1875225673732847
+22
+0.3218626350699233
+32
+0.9666099894032089
+13
+-0.1875225673732847
+23
+0.3218626350699233
+33
+0.9666099894032089
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.27726469062630743
+20
+0.15910033213491825
+30
+-0.029987258687029512
+11
+-0.30905309760007
+21
+0.08235659503094556
+31
+-0.029987258687029512
+12
+-0.35829150997042125
+22
+0.09555005256687987
+32
+0.7958410468060751
+13
+-0.35829150997042125
+23
+0.09555005256687987
+33
+0.7958410468060751
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.32186859092445047
+20
+0.18485247889635142
+30
+0.8322639658520461
+11
+-0.27726469062630743
+21
+0.15910033213491825
+31
+-0.029987258687029512
+12
+-0.35829150997042125
+22
+0.09555005256687987
+32
+0.7958410468060751
+13
+-0.35829150997042125
+23
+0.09555005256687987
+33
+0.7958410468060751
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.22330602684585132
+20
+0.2250010929313866
+30
+-0.029987258687029512
+11
+0.3219319512611786
+21
+0.1868459359501376
+31
+1.1069789402167114
+12
+0.2738738492723656
+22
+0.1590996563942833
+32
+-0.029987258687029512
+13
+0.2738738492723656
+23
+0.1590996563942833
+33
+-0.029987258687029512
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2626308843757006
+20
+0.26432585403041065
+30
+1.1153131616555407
+11
+0.3219319512611786
+21
+0.1868459359501376
+31
+1.1069789402167114
+12
+0.22330602684585132
+22
+0.2250010929313866
+32
+-0.029987258687029512
+13
+0.22330602684585132
+23
+0.2250010929313866
+33
+-0.029987258687029512
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.226696706598913
+20
+0.2250016446713048
+30
+-0.029987258687029512
+11
+-0.27726469062630743
+21
+0.15910033213491825
+31
+-0.029987258687029512
+12
+-0.32186859092445047
+22
+0.18485247889635142
+32
+0.8322639658520461
+13
+-0.32186859092445047
+23
+0.18485247889635142
+33
+0.8322639658520461
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18515108995501323
+20
+0.32362707322580364
+30
+1.1069759431829398
+11
+0.22330602684585132
+21
+0.2250010929313866
+31
+-0.029987258687029512
+12
+0.1574047143094663
+22
+0.27556907695878063
+32
+-0.029987258687029512
+13
+0.1574047143094663
+23
+0.27556907695878063
+33
+-0.029987258687029512
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2626308843757006
+20
+0.26432585403041065
+30
+1.1153131616555407
+11
+0.22330602684585132
+21
+0.2250010929313866
+31
+-0.029987258687029512
+12
+0.18515108995501323
+22
+0.32362707322580364
+32
+1.1069759431829398
+13
+0.18515108995501323
+23
+0.32362707322580364
+33
+1.1069759431829398
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.09822205169936674
+20
+0.36024333207843495
+30
+1.05591050507713
+11
+-0.001695225607451445
+21
+0.31819998645023906
+31
+-0.029987258687029512
+12
+-0.08405145500772823
+22
+0.30735768588336976
+32
+-0.029987258687029512
+13
+-0.08405145500772823
+23
+0.30735768588336976
+33
+-0.029987258687029512
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016951576939718827
+20
+0.37359067095576093
+30
+1.0999540174532403
+11
+-0.001695225607451445
+21
+0.31819998645023906
+31
+-0.029987258687029512
+12
+-0.09822205169936674
+22
+0.36024333207843495
+32
+1.05591050507713
+13
+-0.09822205169936674
+23
+0.36024333207843495
+33
+1.05591050507713
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.053235390890986944
+20
+0.3668191518579341
+30
+1.1009056923994525
+11
+-0.0016951576939718827
+21
+0.37359067095576093
+31
+1.0999540174532403
+12
+-0.09822205169936674
+22
+0.36024333207843495
+32
+1.05591050507713
+13
+-0.09822205169936674
+23
+0.36024333207843495
+33
+1.05591050507713
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.29191131237938345
+20
+0.22460181803280632
+30
+0.8622212443971131
+11
+-0.226696706598913
+21
+0.2250016446713048
+31
+-0.029987258687029512
+12
+-0.32186859092445047
+22
+0.18485247889635142
+32
+0.8322639658520461
+13
+-0.32186859092445047
+23
+0.18485247889635142
+33
+0.8322639658520461
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.226696706598913
+20
+0.2250016446713048
+30
+-0.029987258687029512
+11
+-0.29191131237938345
+21
+0.22460181803280632
+31
+0.8622212443971131
+12
+-0.2637126619050216
+22
+0.26201769074666237
+32
+0.890419894871474
+13
+-0.2637126619050216
+23
+0.26201769074666237
+33
+0.890419894871474
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+-0.0016951576939718827
+20
+0.37359067095576093
+30
+1.0999540174532403
+11
+0.08066097720549281
+21
+0.30735748393254325
+31
+-0.029987258687029512
+12
+-0.001695225607451445
+22
+0.31819998645023906
+32
+-0.029987258687029512
+13
+-0.001695225607451445
+23
+0.31819998645023906
+33
+-0.029987258687029512
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.08066097720549281
+20
+0.30735748393254325
+30
+-0.029987258687029512
+11
+-0.0016951576939718827
+21
+0.37359067095576093
+31
+1.0999540174532403
+12
+0.09500391648962592
+22
+0.3608857995504491
+32
+1.1017395706853292
+13
+0.09500391648962592
+23
+0.3608857995504491
+33
+1.1017395706853292
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.2738738492723656
+20
+0.1590996563942833
+30
+-0.029987258687029512
+11
+0.3591904613034176
+21
+0.09669866074029804
+31
+1.1017425981156106
+12
+0.3056620680579174
+22
+0.08235584134020102
+32
+-0.029987258687029512
+13
+0.3056620680579174
+23
+0.08235584134020102
+33
+-0.029987258687029512
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.3219319512611786
+20
+0.1868459359501376
+30
+1.1069789402167114
+11
+0.3591904613034176
+21
+0.09669866074029804
+31
+1.1017425981156106
+12
+0.2738738492723656
+22
+0.1590996563942833
+32
+-0.029987258687029512
+13
+0.2738738492723656
+23
+0.1590996563942833
+33
+-0.029987258687029512
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.09500391648962592
+20
+0.3608857995504491
+30
+1.1017395706853292
+11
+0.1574047143094663
+21
+0.27556907695878063
+31
+-0.029987258687029512
+12
+0.08066097720549281
+22
+0.30735748393254325
+32
+-0.029987258687029512
+13
+0.08066097720549281
+23
+0.30735748393254325
+33
+-0.029987258687029512
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.18515108995501323
+20
+0.32362707322580364
+30
+1.1069759431829398
+11
+0.1574047143094663
+21
+0.27556907695878063
+31
+-0.029987258687029512
+12
+0.09500391648962592
+22
+0.3608857995504491
+32
+1.1017395706853292
+13
+0.09500391648962592
+23
+0.3608857995504491
+33
+1.1017395706853292
+70
+0
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.3056620680579174
+20
+0.08235584134020102
+30
+-0.029987258687029512
+11
+0.3718950373839425
+21
+2.0789609478377713e-09
+31
+1.0999570863887107
+12
+0.3165043686247876
+22
+-3.880600751848817e-07
+32
+-0.029987258687029512
+13
+0.3165043686247876
+23
+-3.880600751848817e-07
+33
+-0.029987258687029512
+70
+1
+  0
+3DFACE
+ 8
+finger metacarpal
+10
+0.3718950373839425
+20
+2.0789609478377713e-09
+30
+1.0999570863887107
+11
+0.3056620680579174
+21
+0.08235584134020102
+31
+-0.029987258687029512
+12
+0.3591904613034176
+22
+0.09669866074029804
+32
+1.1017425981156106
+13
+0.3591904613034176
+23
+0.09669866074029804
+33
+1.1017425981156106
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.296250080065389
+20
+0.05625570433824323
+30
+0.6644157568117056
+11
+0.2555856897176694
+21
+0.0770228110613641
+31
+0.7375987435993245
+12
+0.25907879909916354
+22
+0.0425646293072397
+32
+0.7311194193909711
+13
+0.25907879909916354
+23
+0.0425646293072397
+33
+0.7311194193909711
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.2555856897176694
+20
+0.0770228110613641
+30
+0.7375987435993245
+11
+0.296250080065389
+21
+0.05625570433824323
+31
+0.6644157568117056
+12
+0.2902821751225073
+22
+0.10111068285304725
+32
+0.67540282766255
+13
+0.2902821751225073
+23
+0.10111068285304725
+33
+0.67540282766255
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.296250080065389
+20
+0.05625570433824323
+30
+0.6644157568117056
+11
+0.26337177035066883
+21
+0.00021611756771083845
+31
+0.7232330781817133
+12
+0.30144711598939
+22
+1.3877787807814457e-15
+32
+0.6548478762140961
+13
+0.30144711598939
+23
+1.3877787807814457e-15
+33
+0.6548478762140961
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.26337177035066883
+20
+0.00021611756771083845
+30
+0.7232330781817133
+11
+0.296250080065389
+21
+0.05625570433824323
+31
+0.6644157568117056
+12
+0.25907879909916354
+22
+0.0425646293072397
+32
+0.7311194193909711
+13
+0.25907879909916354
+23
+0.0425646293072397
+33
+0.7311194193909711
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.08597126774640101
+20
+0.305931990758305
+30
+1.1950892539563733
+11
+0.14591265330279257
+21
+0.30907788121177326
+31
+1.1068841952682413
+12
+0.09248182231156576
+22
+0.34122279747238193
+32
+1.1068841952682413
+13
+0.09248182231156576
+23
+0.34122279747238193
+33
+1.1068841952682413
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.30907788121177326
+30
+1.1068841952682413
+11
+0.08597126774640101
+21
+0.305931990758305
+31
+1.1950892539563733
+12
+0.14591265330279257
+22
+0.2927773222601686
+32
+1.1435553817691761
+13
+0.14591265330279257
+23
+0.2927773222601686
+33
+1.1435553817691761
+70
+3
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.2927773222601686
+30
+1.1435553817691761
+11
+0.08597126774640101
+21
+0.305931990758305
+31
+1.1950892539563733
+12
+0.13856428289474443
+22
+0.2742911190654399
+32
+1.1950892539563733
+13
+0.13856428289474443
+23
+0.2742911190654399
+33
+1.1950892539563733
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.17315837194884964
+20
+0.31485375811798544
+30
+0.8910308472281347
+11
+0.16483919203682462
+21
+0.3090020498238778
+31
+0.9060890011061947
+12
+0.17165022633163995
+22
+0.2974743709819362
+32
+0.8934201589578008
+13
+0.17165022633163995
+23
+0.2974743709819362
+33
+0.8934201589578008
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.16483919203682462
+20
+0.3090020498238778
+30
+0.9060890011061947
+11
+0.1624333997344558
+21
+0.32322972405982175
+31
+0.9107758047501918
+12
+0.16148066621521584
+22
+0.30464032797763685
+32
+0.9121263906088999
+13
+0.16148066621521584
+23
+0.30464032797763685
+33
+0.9121263906088999
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.1624333997344558
+20
+0.32322972405982175
+30
+0.9107758047501918
+11
+0.16483919203682462
+21
+0.3090020498238778
+31
+0.9060890011061947
+12
+0.17315837194884964
+22
+0.31485375811798544
+32
+0.8910308472281347
+13
+0.17315837194884964
+23
+0.31485375811798544
+33
+0.8910308472281347
+70
+3
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.18260248174312899
+20
+0.22232457698922659
+30
+1.198099275585573
+11
+0.11855648811852992
+21
+0.22395776089577168
+31
+1.2708326549933064
+12
+0.15543163413708405
+22
+0.1828607460436268
+32
+1.2708326549933064
+13
+0.15543163413708405
+23
+0.1828607460436268
+33
+1.2708326549933064
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.11855648811852992
+20
+0.22395776089577168
+30
+1.2708326549933064
+11
+0.18260248174312899
+21
+0.22232457698922659
+31
+1.198099275585573
+12
+0.17760884479078798
+22
+0.2307763099490301
+32
+1.1950892539563756
+13
+0.17760884479078798
+23
+0.2307763099490301
+33
+1.1950892539563756
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.11855648811852992
+20
+0.22395776089577168
+30
+1.2708326549933064
+11
+0.17760884479078798
+21
+0.2307763099490301
+31
+1.1950892539563756
+12
+0.13856428289474443
+22
+0.2742911190654399
+32
+1.1950892539563733
+13
+0.13856428289474443
+23
+0.2742911190654399
+33
+1.1950892539563733
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.21079763456608602
+20
+0.15200255171741062
+30
+1.2116649767211727
+11
+0.15543163413708405
+21
+0.1828607460436268
+31
+1.2708326549933064
+12
+0.18372692886278563
+22
+0.12930207354027978
+32
+1.2708326549933064
+13
+0.18372692886278563
+23
+0.12930207354027978
+33
+1.2708326549933064
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.15543163413708405
+20
+0.1828607460436268
+30
+1.2708326549933064
+11
+0.21079763456608602
+21
+0.15200255171741062
+31
+1.2116649767211727
+12
+0.19513291276861866
+22
+0.20111681641123347
+32
+1.1960904299564608
+13
+0.19513291276861866
+23
+0.20111681641123347
+33
+1.1960904299564608
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.15543163413708405
+20
+0.1828607460436268
+30
+1.2708326549933064
+11
+0.19513291276861866
+21
+0.20111681641123347
+31
+1.1960904299564608
+12
+0.18260248174312899
+22
+0.22232457698922659
+32
+1.198099275585573
+13
+0.18260248174312899
+23
+0.22232457698922659
+33
+1.198099275585573
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.22483831324751347
+20
+0.1079802180841335
+30
+1.3469345417672878
+11
+0.22607406136431274
+21
+0.10410572475522972
+31
+1.2088129668204062
+12
+0.22607406136431385
+22
+0.1041057247552285
+32
+1.347444628490924
+13
+0.22607406136431385
+23
+0.1041057247552285
+33
+1.347444628490924
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.22607406136431274
+20
+0.10410572475522972
+30
+1.2088129668204062
+11
+0.22483831324751347
+21
+0.1079802180841335
+31
+1.3469345417672878
+12
+0.21079763456608602
+22
+0.15200255171741062
+32
+1.2116649767211727
+13
+0.21079763456608602
+23
+0.15200255171741062
+33
+1.2116649767211727
+70
+3
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.21079763456608602
+20
+0.15200255171741062
+30
+1.2116649767211727
+11
+0.22483831324751347
+21
+0.1079802180841335
+31
+1.3469345417672878
+12
+0.19513291276861866
+22
+0.20111681641123635
+32
+1.3083560995869057
+13
+0.19513291276861866
+23
+0.20111681641123635
+33
+1.3083560995869057
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.21079763456608602
+20
+0.15200255171741062
+30
+1.2116649767211727
+11
+0.19513291276861866
+21
+0.20111681641123635
+31
+1.3083560995869057
+12
+0.19513291276861866
+22
+0.20111681641123347
+32
+1.1960904299564608
+13
+0.19513291276861866
+23
+0.20111681641123347
+33
+1.1960904299564608
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.26337177035066883
+20
+0.00021611756771083845
+30
+0.7232330781817133
+11
+0.263393678712192
+21
+1.9984014443252818e-15
+31
+1.3611504071680836
+12
+0.263393678712192
+22
+6.106226635438361e-16
+32
+0.7231946266820767
+13
+0.263393678712192
+23
+6.106226635438361e-16
+33
+0.7231946266820767
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.263393678712192
+20
+1.9984014443252818e-15
+30
+1.3611504071680836
+11
+0.26337177035066883
+21
+0.00021611756771083845
+31
+0.7232330781817133
+12
+0.2524474623535692
+22
+0.10798021808412805
+32
+1.3469345417672878
+13
+0.2524474623535692
+23
+0.10798021808412805
+33
+1.3469345417672878
+70
+3
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.2524474623535692
+20
+0.10798021808412805
+30
+1.3469345417672878
+11
+0.26337177035066883
+21
+0.00021611756771083845
+31
+0.7232330781817133
+12
+0.25907879909916354
+22
+0.0425646293072397
+32
+0.7311194193909711
+13
+0.25907879909916354
+23
+0.0425646293072397
+33
+0.7311194193909711
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.2524474623535692
+20
+0.10798021808412805
+30
+1.3469345417672878
+11
+0.25907879909916354
+21
+0.0425646293072397
+31
+0.7311194193909711
+12
+0.2555856897176694
+22
+0.0770228110613641
+32
+0.7375987435993245
+13
+0.2555856897176694
+23
+0.0770228110613641
+33
+0.7375987435993245
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.2524474623535692
+20
+0.10798021808412805
+30
+1.3469345417672878
+11
+0.2555856897176694
+21
+0.0770228110613641
+31
+0.7375987435993245
+12
+0.25192819408071887
+22
+0.11310260005700445
+32
+0.7446065308916078
+13
+0.25192819408071887
+23
+0.11310260005700445
+33
+0.7446065308916078
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.2524474623535692
+20
+0.10798021808412805
+30
+1.3469345417672878
+11
+0.25192819408071887
+21
+0.11310260005700445
+31
+0.7446065308916078
+12
+0.25192819408071765
+22
+0.11310260005700845
+32
+1.3448127816824647
+13
+0.25192819408071765
+23
+0.11310260005700845
+33
+1.3448127816824647
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.274037280744151
+20
+0.15716672872113313
+30
+0.7053101078903244
+11
+0.23789809216172886
+21
+0.15709177191973378
+31
+0.7705295873705995
+12
+0.2480027252213851
+22
+0.12541028857502534
+32
+0.7518189517863902
+13
+0.2480027252213851
+23
+0.12541028857502534
+33
+0.7518189517863902
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.23789809216172886
+20
+0.15709177191973378
+30
+0.7705295873705995
+11
+0.274037280744151
+21
+0.15716672872113313
+31
+0.7053101078903244
+12
+0.2591667482690694
+22
+0.19321003684080962
+32
+0.7326871515023154
+13
+0.2591667482690694
+23
+0.19321003684080962
+33
+0.7326871515023154
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.2591667482690694
+20
+0.19321003684080962
+30
+0.7326871515023154
+11
+0.21954103663658775
+21
+0.21464742440548745
+31
+0.8047207977789652
+12
+0.23789809216172886
+22
+0.15709177191973378
+32
+0.7705295873705995
+13
+0.23789809216172886
+23
+0.15709177191973378
+33
+0.7705295873705995
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.21954103663658775
+20
+0.21464742440548745
+30
+0.8047207977789652
+11
+0.2591667482690694
+21
+0.19321003684080962
+31
+0.7326871515023154
+12
+0.23066726183653696
+22
+0.24695009092044307
+32
+0.7851554598356051
+13
+0.23066726183653696
+23
+0.24695009092044307
+33
+0.7851554598356051
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.214135315851808
+20
+0.2688995990817393
+30
+0.8155912096632217
+11
+0.17165022633163995
+21
+0.2974743709819362
+31
+0.8934201589578008
+12
+0.20642658047224793
+22
+0.2386153747599219
+32
+0.8289927497633759
+13
+0.20642658047224793
+23
+0.2386153747599219
+33
+0.8289927497633759
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.17165022633163995
+20
+0.2974743709819362
+30
+0.8934201589578008
+11
+0.214135315851808
+21
+0.2688995990817393
+31
+0.8155912096632217
+12
+0.17315837194884964
+22
+0.31485375811798544
+32
+0.8910308472281347
+13
+0.17315837194884964
+23
+0.31485375811798544
+33
+0.8910308472281347
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.22876729304572974
+20
+0.07753802914401464
+30
+1.217426749765848
+11
+0.18372692886278563
+21
+0.12930207354027978
+31
+1.2708326549933064
+12
+0.20151409472026383
+22
+0.06693167840694275
+32
+1.2708326549933064
+13
+0.20151409472026383
+23
+0.06693167840694275
+33
+1.2708326549933064
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.18372692886278563
+20
+0.12930207354027978
+30
+1.2708326549933064
+11
+0.22876729304572974
+21
+0.07753802914401464
+31
+1.217426749765848
+12
+0.22607406136431274
+22
+0.10410572475522972
+32
+1.2088129668204062
+13
+0.22607406136431274
+23
+0.10410572475522972
+33
+1.2088129668204062
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.18372692886278563
+20
+0.12930207354027978
+30
+1.2708326549933064
+11
+0.22607406136431274
+21
+0.10410572475522972
+31
+1.2088129668204062
+12
+0.21079763456608602
+22
+0.15200255171741062
+32
+1.2116649767211727
+13
+0.21079763456608602
+23
+0.15200255171741062
+33
+1.2116649767211727
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.22876729304572974
+20
+0.07753802914401464
+30
+1.217426749765848
+11
+0.20758096575101137
+21
+2.7755575615628914e-16
+31
+1.2708326549933064
+12
+0.23662751094573675
+22
+-2.7755575615628914e-16
+32
+1.2158519800606344
+13
+0.23662751094573675
+23
+-2.7755575615628914e-16
+33
+1.2158519800606344
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.20758096575101137
+20
+2.7755575615628914e-16
+30
+1.2708326549933064
+11
+0.22876729304572974
+21
+0.07753802914401464
+31
+1.217426749765848
+12
+0.20151409472026383
+22
+0.06693167840694275
+32
+1.2708326549933064
+13
+0.20151409472026383
+23
+0.06693167840694275
+33
+1.2708326549933064
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.23662751094573675
+20
+1.8318679906315083e-15
+30
+1.3611504071680836
+11
+0.22876729304572974
+21
+0.07753802914401464
+31
+1.217426749765848
+12
+0.23662751094573675
+22
+-2.7755575615628914e-16
+32
+1.2158519800606344
+13
+0.23662751094573675
+23
+-2.7755575615628914e-16
+33
+1.2158519800606344
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.22876729304572974
+20
+0.07753802914401464
+30
+1.217426749765848
+11
+0.23662751094573675
+21
+1.8318679906315083e-15
+31
+1.3611504071680836
+12
+0.22607406136431385
+22
+0.1041057247552285
+32
+1.347444628490924
+13
+0.22607406136431385
+23
+0.1041057247552285
+33
+1.347444628490924
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.22876729304572974
+20
+0.07753802914401464
+30
+1.217426749765848
+11
+0.22607406136431385
+21
+0.1041057247552285
+31
+1.347444628490924
+12
+0.22607406136431274
+22
+0.10410572475522972
+32
+1.2088129668204062
+13
+0.22607406136431274
+23
+0.10410572475522972
+33
+1.2088129668204062
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.26337177035066883
+20
+0.00021611756771083845
+30
+0.7232330781817133
+11
+0.263393678712192
+21
+6.106226635438361e-16
+31
+0.7231946266820767
+12
+0.30144711598939
+22
+1.3877787807814457e-15
+32
+0.6548478762140961
+13
+0.30144711598939
+23
+1.3877787807814457e-15
+33
+0.6548478762140961
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.296250080065389
+20
+0.05625570433824323
+30
+0.6644157568117056
+11
+0.30144711598939
+21
+1.3877787807814457e-15
+31
+0.6548478762140961
+12
+0.42920423721993983
+22
+2.7755575615628914e-15
+32
+0.0
+13
+0.42920423721993983
+23
+2.7755575615628914e-15
+33
+0.0
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.21831309401632604
+20
+0.21849744483100497
+30
+1.2976625093750926
+11
+0.1907104937441224
+21
+0.2086017627515685
+31
+1.3052557332991035
+12
+0.19513291276861866
+22
+0.20111681641123635
+32
+1.3083560995869057
+13
+0.19513291276861866
+23
+0.20111681641123635
+33
+1.3083560995869057
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.09327307500958115
+20
+0.34551182473544184
+30
+1.0731565574038182
+11
+0.14591265330279257
+21
+0.3224508871153656
+31
+1.0122285079127469
+12
+0.1060148804133424
+22
+0.3464540804912427
+32
+1.0122285079127469
+13
+0.1060148804133424
+23
+0.3464540804912427
+33
+1.0122285079127469
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.3224508871153656
+30
+1.0122285079127469
+11
+0.09327307500958115
+21
+0.34551182473544184
+31
+1.0731565574038182
+12
+0.14591265330279257
+22
+0.30907788121177326
+32
+1.1068841952682413
+13
+0.14591265330279257
+23
+0.30907788121177326
+33
+1.1068841952682413
+70
+3
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.30907788121177326
+30
+1.1068841952682413
+11
+0.09327307500958115
+21
+0.34551182473544184
+31
+1.0731565574038182
+12
+0.09248182231156576
+22
+0.34122279747238193
+32
+1.1068841952682413
+13
+0.09248182231156576
+23
+0.34122279747238193
+33
+1.1068841952682413
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.21831309401632715
+20
+0.21849744483100653
+30
+0.8070247740079369
+11
+0.17310779103353768
+21
+0.29500744201820384
+31
+1.2389543236831635
+12
+0.21831309401632604
+22
+0.21849744483100497
+32
+1.2976625093750926
+13
+0.21831309401632604
+23
+0.21849744483100497
+33
+1.2976625093750926
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.17310779103353768
+20
+0.29500744201820384
+30
+1.2389543236831635
+11
+0.21831309401632715
+21
+0.21849744483100653
+31
+0.8070247740079369
+12
+0.20642658047224793
+22
+0.2386153747599219
+32
+0.8289927497633759
+13
+0.20642658047224793
+23
+0.2386153747599219
+33
+0.8289927497633759
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.17310779103353768
+20
+0.29500744201820384
+30
+1.2389543236831635
+11
+0.20642658047224793
+21
+0.2386153747599219
+31
+0.8289927497633759
+12
+0.17165022633163995
+22
+0.2974743709819362
+32
+0.8934201589578008
+13
+0.17165022633163995
+23
+0.2974743709819362
+33
+0.8934201589578008
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.17310779103353768
+20
+0.29500744201820384
+30
+1.2389543236831635
+11
+0.17165022633163995
+21
+0.2974743709819362
+31
+0.8934201589578008
+12
+0.1648391920368235
+22
+0.309002049823879
+32
+1.2207161957078443
+13
+0.1648391920368235
+23
+0.309002049823879
+33
+1.2207161957078443
+70
+3
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.1648391920368235
+20
+0.309002049823879
+30
+1.2207161957078443
+11
+0.17165022633163995
+21
+0.2974743709819362
+31
+0.8934201589578008
+12
+0.16483919203682462
+22
+0.3090020498238778
+32
+0.9060890011061947
+13
+0.16483919203682462
+23
+0.3090020498238778
+33
+0.9060890011061947
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.28490260216305396
+30
+1.0876716112414513
+11
+0.14591265330279257
+21
+0.2927773222601686
+31
+1.1435553817691761
+12
+0.14591265330279146
+22
+0.28442212939005906
+32
+1.159696374922908
+13
+0.14591265330279146
+23
+0.28442212939005906
+33
+1.159696374922908
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.2927773222601686
+30
+1.1435553817691761
+11
+0.14628261733798686
+21
+0.28490260216305396
+31
+1.0876716112414513
+12
+0.14591265330279257
+22
+0.30907788121177326
+32
+1.1068841952682413
+13
+0.14591265330279257
+23
+0.30907788121177326
+33
+1.1068841952682413
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.2480027252213851
+20
+0.12541028857502534
+30
+0.7518189517863902
+11
+0.25192819408071765
+21
+0.11310260005700845
+31
+1.3448127816824647
+12
+0.25192819408071887
+22
+0.11310260005700445
+32
+0.7446065308916078
+13
+0.25192819408071887
+23
+0.11310260005700445
+33
+0.7446065308916078
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.25192819408071765
+20
+0.11310260005700845
+30
+1.3448127816824647
+11
+0.2480027252213851
+21
+0.12541028857502534
+31
+0.7518189517863902
+12
+0.21831309401632604
+22
+0.21849744483100497
+32
+1.2976625093750926
+13
+0.21831309401632604
+23
+0.21849744483100497
+33
+1.2976625093750926
+70
+3
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.21831309401632604
+20
+0.21849744483100497
+30
+1.2976625093750926
+11
+0.2480027252213851
+21
+0.12541028857502534
+31
+0.7518189517863902
+12
+0.23789809216172886
+22
+0.15709177191973378
+32
+0.7705295873705995
+13
+0.23789809216172886
+23
+0.15709177191973378
+33
+0.7705295873705995
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.21831309401632604
+20
+0.21849744483100497
+30
+1.2976625093750926
+11
+0.23789809216172886
+21
+0.15709177191973378
+31
+0.7705295873705995
+12
+0.21954103663658775
+22
+0.21464742440548745
+32
+0.8047207977789652
+13
+0.21954103663658775
+23
+0.21464742440548745
+33
+0.8047207977789652
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.21831309401632604
+20
+0.21849744483100497
+30
+1.2976625093750926
+11
+0.21954103663658775
+21
+0.21464742440548745
+31
+0.8047207977789652
+12
+0.21831309401632715
+22
+0.21849744483100653
+32
+0.8070247740079369
+13
+0.21831309401632715
+23
+0.21849744483100653
+33
+0.8070247740079369
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.23662751094573675
+20
+1.8318679906315083e-15
+30
+1.3611504071680836
+11
+0.2524474623535692
+21
+0.10798021808412805
+31
+1.3469345417672878
+12
+0.22607406136431385
+22
+0.1041057247552285
+32
+1.347444628490924
+13
+0.22607406136431385
+23
+0.1041057247552285
+33
+1.347444628490924
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.2524474623535692
+20
+0.10798021808412805
+30
+1.3469345417672878
+11
+0.23662751094573675
+21
+1.8318679906315083e-15
+31
+1.3611504071680836
+12
+0.263393678712192
+22
+1.9984014443252818e-15
+32
+1.3611504071680836
+13
+0.263393678712192
+23
+1.9984014443252818e-15
+33
+1.3611504071680836
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.2902821751225073
+20
+0.10111068285304725
+30
+0.67540282766255
+11
+0.25192819408071887
+21
+0.11310260005700445
+31
+0.7446065308916078
+12
+0.2555856897176694
+22
+0.0770228110613641
+32
+0.7375987435993245
+13
+0.2555856897176694
+23
+0.0770228110613641
+33
+0.7375987435993245
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.25192819408071887
+20
+0.11310260005700445
+30
+0.7446065308916078
+11
+0.2902821751225073
+21
+0.10111068285304725
+31
+0.67540282766255
+12
+0.274037280744151
+22
+0.15716672872113313
+32
+0.7053101078903244
+13
+0.274037280744151
+23
+0.15716672872113313
+33
+0.7053101078903244
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.25192819408071887
+20
+0.11310260005700445
+30
+0.7446065308916078
+11
+0.274037280744151
+21
+0.15716672872113313
+31
+0.7053101078903244
+12
+0.2480027252213851
+22
+0.12541028857502534
+32
+0.7518189517863902
+13
+0.2480027252213851
+23
+0.12541028857502534
+33
+0.7518189517863902
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.25192819408071765
+20
+0.11310260005700845
+30
+1.3448127816824647
+11
+0.19513291276861866
+21
+0.20111681641123635
+31
+1.3083560995869057
+12
+0.22483831324751347
+22
+0.1079802180841335
+32
+1.3469345417672878
+13
+0.22483831324751347
+23
+0.1079802180841335
+33
+1.3469345417672878
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.19513291276861866
+20
+0.20111681641123635
+30
+1.3083560995869057
+11
+0.18260248174312899
+21
+0.22232457698922659
+31
+1.198099275585573
+12
+0.19513291276861866
+22
+0.20111681641123347
+32
+1.1960904299564608
+13
+0.19513291276861866
+23
+0.20111681641123347
+33
+1.1960904299564608
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.18260248174312899
+20
+0.22232457698922659
+30
+1.198099275585573
+11
+0.19513291276861866
+21
+0.20111681641123635
+31
+1.3083560995869057
+12
+0.1907104937441224
+22
+0.2086017627515685
+32
+1.3052557332991035
+13
+0.1907104937441224
+23
+0.2086017627515685
+33
+1.3052557332991035
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.18260248174312899
+20
+0.22232457698922659
+30
+1.198099275585573
+11
+0.1907104937441224
+21
+0.2086017627515685
+31
+1.3052557332991035
+12
+0.17760884479078798
+22
+0.2307763099490301
+32
+1.1950892539563756
+13
+0.17760884479078798
+23
+0.2307763099490301
+33
+1.1950892539563756
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.1907104937441224
+20
+0.2086017627515685
+30
+1.3052557332991035
+11
+0.15406334402645439
+21
+0.2950074420182055
+31
+1.238954323683159
+12
+0.14628261733798686
+22
+0.28490260216305374
+32
+1.2467080400132249
+13
+0.14628261733798686
+23
+0.28490260216305374
+33
+1.2467080400132249
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.15406334402645439
+20
+0.2950074420182055
+30
+1.238954323683159
+11
+0.1907104937441224
+21
+0.2086017627515685
+31
+1.3052557332991035
+12
+0.17310779103353768
+22
+0.29500744201820384
+32
+1.2389543236831635
+13
+0.17310779103353768
+23
+0.29500744201820384
+33
+1.2389543236831635
+70
+3
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.17310779103353768
+20
+0.29500744201820384
+30
+1.2389543236831635
+11
+0.1907104937441224
+21
+0.2086017627515685
+31
+1.3052557332991035
+12
+0.21831309401632604
+22
+0.21849744483100497
+32
+1.2976625093750926
+13
+0.21831309401632604
+23
+0.21849744483100497
+33
+1.2976625093750926
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.2524474623535692
+20
+0.10798021808412805
+30
+1.3469345417672878
+11
+0.25192819408071765
+21
+0.11310260005700845
+31
+1.3448127816824647
+12
+0.22607406136431385
+22
+0.1041057247552285
+32
+1.347444628490924
+13
+0.22607406136431385
+23
+0.1041057247552285
+33
+1.347444628490924
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.23066726183653696
+20
+0.24695009092044307
+30
+0.7851554598356051
+11
+0.2591667482690694
+21
+0.19321003684080962
+31
+0.7326871515023154
+12
+0.37170177284439176
+22
+0.21460211860997003
+32
+0.0
+13
+0.37170177284439176
+23
+0.21460211860997003
+33
+0.0
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.25192819408071765
+20
+0.11310260005700845
+30
+1.3448127816824647
+11
+0.22483831324751347
+21
+0.1079802180841335
+31
+1.3469345417672878
+12
+0.22607406136431385
+22
+0.1041057247552285
+32
+1.347444628490924
+13
+0.22607406136431385
+23
+0.1041057247552285
+33
+1.347444628490924
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.274037280744151
+20
+0.15716672872113313
+30
+0.7053101078903244
+11
+0.2902821751225073
+21
+0.10111068285304725
+31
+0.67540282766255
+12
+0.41457945748344094
+22
+0.11108623083122104
+32
+0.0
+13
+0.41457945748344094
+23
+0.11108623083122104
+33
+0.0
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.0862196570520593
+20
+0.3424202262257874
+30
+1.1068841952682413
+11
+0.09327307500958115
+21
+0.34551182473544184
+31
+1.0731565574038182
+12
+1.7763568394002505e-15
+22
+0.3532598344360507
+32
+1.1068841952682391
+13
+1.7763568394002505e-15
+23
+0.3532598344360507
+33
+1.1068841952682391
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.3532598344360507
+30
+1.1068841952682391
+11
+0.09327307500958115
+21
+0.34551182473544184
+31
+1.0731565574038182
+12
+0.09465568735549401
+22
+0.353259834436051
+32
+1.0122285079127469
+13
+0.09465568735549401
+23
+0.353259834436051
+33
+1.0122285079127469
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.3532598344360507
+30
+1.1068841952682391
+11
+0.09465568735549401
+21
+0.353259834436051
+31
+1.0122285079127469
+12
+1.7763568394002505e-15
+22
+0.365721492087253
+32
+1.0122285079127469
+13
+1.7763568394002505e-15
+23
+0.365721492087253
+33
+1.0122285079127469
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.25192819408071765
+20
+0.11310260005700845
+30
+1.3448127816824647
+11
+0.21831309401632604
+21
+0.21849744483100497
+31
+1.2976625093750926
+12
+0.19513291276861866
+22
+0.20111681641123635
+32
+1.3083560995869057
+13
+0.19513291276861866
+23
+0.20111681641123635
+33
+1.3083560995869057
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.17310779103353768
+20
+0.29500744201820384
+30
+1.2389543236831635
+11
+0.1648391920368235
+21
+0.309002049823879
+31
+1.2207161957078443
+12
+0.15406334402645439
+22
+0.2950074420182055
+32
+1.238954323683159
+13
+0.15406334402645439
+23
+0.2950074420182055
+33
+1.238954323683159
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.17315837194884964
+20
+0.31485375811798544
+30
+0.8910308472281347
+11
+0.214135315851808
+21
+0.2688995990817393
+31
+0.8155912096632217
+12
+0.30349322665222
+22
+0.303493226652219
+32
+0.0
+13
+0.30349322665222
+23
+0.303493226652219
+33
+0.0
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.1060148804133424
+20
+0.3464540804912427
+30
+1.0122285079127469
+11
+0.21460211860997136
+21
+0.3717017728443903
+31
+0.0
+12
+0.1110862308312226
+22
+0.4145794574834395
+32
+0.0
+13
+0.1110862308312226
+23
+0.4145794574834395
+33
+0.0
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.051933324443145024
+20
+0.25432064826909484
+30
+1.270832654993302
+11
+1.7763568394002505e-15
+21
+0.25860414708055923
+31
+1.2708326549933042
+12
+0.03977877210196379
+22
+0.18090139708368969
+32
+1.3289526107702627
+13
+0.03977877210196379
+23
+0.18090139708368969
+33
+1.3289526107702627
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.06777344544969494
+20
+0.30941171298926207
+30
+1.1950892539563756
+11
+0.0862196570520593
+21
+0.3424202262257874
+31
+1.1068841952682413
+12
+1.7763568394002505e-15
+22
+0.31672410285751074
+32
+1.1950892539563733
+13
+1.7763568394002505e-15
+23
+0.31672410285751074
+33
+1.1950892539563733
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.03977877210196379
+20
+0.18090139708368969
+30
+1.3289526107702627
+11
+1.7763568394002505e-15
+21
+0.182860746043627
+31
+1.328952610770256
+12
+0.03213810108186088
+22
+0.09415736007026898
+32
+1.3654883423488011
+13
+0.03213810108186088
+23
+0.09415736007026898
+33
+1.3654883423488011
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.3305275449199734
+30
+0.9357778285299473
+11
+0.14628261733798686
+21
+0.2849026021630544
+31
+0.9336709982866838
+12
+0.14628261733798686
+22
+0.3305275449199734
+32
+0.9336709982866838
+13
+0.14628261733798686
+23
+0.3305275449199734
+33
+0.9336709982866838
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.25860414708055923
+30
+1.2708326549933042
+11
+0.06777344544969494
+21
+0.30941171298926207
+31
+1.1950892539563756
+12
+1.7763568394002505e-15
+22
+0.31672410285751074
+32
+1.1950892539563733
+13
+1.7763568394002505e-15
+23
+0.31672410285751074
+33
+1.1950892539563733
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.25860414708055923
+30
+1.2708326549933042
+11
+0.051933324443145024
+21
+0.25432064826909484
+31
+1.270832654993302
+12
+0.06777344544969494
+22
+0.30941171298926207
+32
+1.1950892539563756
+13
+0.06777344544969494
+23
+0.30941171298926207
+33
+1.1950892539563756
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.03977877210196379
+20
+0.18090139708368969
+30
+1.3289526107702627
+11
+1.7763568394002505e-15
+21
+0.25860414708055923
+31
+1.2708326549933042
+12
+1.7763568394002505e-15
+22
+0.182860746043627
+32
+1.328952610770256
+13
+1.7763568394002505e-15
+23
+0.182860746043627
+33
+1.328952610770256
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.03213810108186088
+20
+0.09415736007026898
+30
+1.3654883423488011
+11
+1.7763568394002505e-15
+21
+0.182860746043627
+31
+1.328952610770256
+12
+1.7763568394002505e-15
+22
+0.09465568735549279
+32
+1.3654883423487965
+13
+1.7763568394002505e-15
+23
+0.09465568735549279
+33
+1.3654883423487965
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.31672410285751074
+30
+1.1950892539563733
+11
+0.0862196570520593
+21
+0.3424202262257874
+31
+1.1068841952682413
+12
+1.7763568394002505e-15
+22
+0.3532598344360507
+32
+1.1068841952682391
+13
+1.7763568394002505e-15
+23
+0.3532598344360507
+33
+1.1068841952682391
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.20151409472026383
+20
+0.06693167840694275
+30
+1.2708326549933064
+11
+0.13856428289474554
+21
+0.09143037302181356
+31
+1.3289526107702583
+12
+0.15114170849065778
+22
+0.04732784367774656
+32
+1.3289526107702583
+13
+0.15114170849065778
+23
+0.04732784367774656
+33
+1.3289526107702583
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.13856428289474554
+20
+0.09143037302181356
+30
+1.3289526107702583
+11
+0.20151409472026383
+21
+0.06693167840694275
+31
+1.2708326549933064
+12
+0.18372692886278563
+22
+0.12930207354027978
+32
+1.2708326549933064
+13
+0.18372692886278563
+23
+0.12930207354027978
+33
+1.2708326549933064
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.029532010486047477
+20
+2.7755575615628914e-16
+30
+1.37795
+11
+-0.08197422986253194
+21
+0.047327843677746395
+31
+1.3654883423487965
+12
+-0.09143037302181262
+22
+0.024498694614871808
+32
+1.3654883423487965
+13
+-0.09143037302181262
+23
+0.024498694614871808
+33
+1.3654883423487965
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.08597126774640212
+20
+0.04732784367774656
+30
+1.3654883423487987
+11
+0.11855648811852992
+21
+0.12930207354027978
+31
+1.3289526107702583
+12
+0.07561447106922731
+22
+0.06693167840694275
+32
+1.3654883423487987
+13
+0.07561447106922731
+23
+0.06693167840694275
+33
+1.3654883423487987
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.11855648811852992
+20
+0.12930207354027978
+30
+1.3289526107702583
+11
+0.08597126774640212
+21
+0.04732784367774656
+31
+1.3654883423487987
+12
+0.13856428289474554
+22
+0.09143037302181356
+32
+1.3289526107702583
+13
+0.13856428289474554
+23
+0.09143037302181356
+33
+1.3289526107702583
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.13856428289474554
+20
+0.09143037302181356
+30
+1.3289526107702583
+11
+0.15543163413708405
+21
+0.1828607460436268
+31
+1.2708326549933064
+12
+0.11855648811852992
+22
+0.12930207354027978
+32
+1.3289526107702583
+13
+0.11855648811852992
+23
+0.12930207354027978
+33
+1.3289526107702583
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.15543163413708405
+20
+0.1828607460436268
+30
+1.2708326549933064
+11
+0.13856428289474554
+21
+0.09143037302181356
+31
+1.3289526107702583
+12
+0.18372692886278563
+22
+0.12930207354027978
+32
+1.2708326549933064
+13
+0.18372692886278563
+23
+0.12930207354027978
+33
+1.2708326549933064
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.08597126774640212
+20
+0.04732784367774656
+30
+1.3654883423487987
+11
+0.07561447106922731
+21
+0.06693167840694275
+31
+1.3654883423487987
+12
+0.029532010486047477
+22
+2.7755575615628914e-16
+32
+1.37795
+13
+0.029532010486047477
+23
+2.7755575615628914e-16
+33
+1.37795
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.07561447106922731
+20
+0.06693167840694275
+30
+1.3654883423487987
+11
+0.06211723085817539
+21
+0.08197422986253433
+31
+1.3654883423487987
+12
+0.029532010486047477
+22
+2.7755575615628914e-16
+32
+1.37795
+13
+0.029532010486047477
+23
+2.7755575615628914e-16
+33
+1.37795
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.07561447106922731
+20
+0.06693167840694275
+30
+1.3654883423487987
+11
+0.09248182231156576
+21
+0.1583620514287558
+31
+1.3289526107702583
+12
+0.06211723085817539
+22
+0.08197422986253433
+32
+1.3654883423487987
+13
+0.06211723085817539
+23
+0.08197422986253433
+33
+1.3654883423487987
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.09248182231156576
+20
+0.1583620514287558
+30
+1.3289526107702583
+11
+0.07561447106922731
+21
+0.06693167840694275
+31
+1.3654883423487987
+12
+0.11855648811852992
+22
+0.12930207354027978
+32
+1.3289526107702583
+13
+0.11855648811852992
+23
+0.12930207354027978
+33
+1.3289526107702583
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.09470245123030319
+20
+3.885780586188048e-16
+30
+1.3654883423487987
+11
+0.09248182231156576
+21
+0.024498694614871863
+31
+1.3654883423487987
+12
+0.029532010486047477
+22
+2.7755575615628914e-16
+32
+1.37795
+13
+0.029532010486047477
+23
+2.7755575615628914e-16
+33
+1.37795
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.11855648811852992
+20
+0.12930207354027978
+30
+1.3289526107702583
+11
+0.11855648811852992
+21
+0.22395776089577168
+31
+1.2708326549933064
+12
+0.09248182231156576
+22
+0.1583620514287558
+32
+1.3289526107702583
+13
+0.09248182231156576
+23
+0.1583620514287558
+33
+1.3289526107702583
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.11855648811852992
+20
+0.22395776089577168
+30
+1.2708326549933064
+11
+0.11855648811852992
+21
+0.12930207354027978
+31
+1.3289526107702583
+12
+0.15543163413708405
+22
+0.1828607460436268
+32
+1.2708326549933064
+13
+0.15543163413708405
+23
+0.1828607460436268
+33
+1.2708326549933064
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.2927773222601686
+30
+1.1435553817691761
+11
+0.13856428289474443
+21
+0.2742911190654399
+31
+1.1950892539563733
+12
+0.14591265330279146
+22
+0.28442212939005906
+32
+1.159696374922908
+13
+0.14591265330279146
+23
+0.28442212939005906
+33
+1.159696374922908
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.09143037302181262
+20
+0.024498694614871808
+30
+1.3654883423487965
+11
+-0.15836205142875398
+21
+0.09143037302181356
+31
+1.328952610770256
+12
+-0.1766299172180231
+22
+0.04732784367774656
+32
+1.328952610770256
+13
+-0.1766299172180231
+23
+0.04732784367774656
+33
+1.328952610770256
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.15836205142875398
+20
+0.09143037302181356
+30
+1.328952610770256
+11
+-0.09143037302181262
+21
+0.024498694614871808
+31
+1.3654883423487965
+12
+-0.08197422986253194
+22
+0.047327843677746395
+32
+1.3654883423487965
+13
+-0.08197422986253194
+23
+0.047327843677746395
+33
+1.3654883423487965
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.06211723085817539
+20
+0.08197422986253433
+30
+1.3654883423487987
+11
+0.04639936172838599
+21
+0.09143037302181423
+31
+1.3654883423487987
+12
+0.029532010486047477
+22
+2.7755575615628914e-16
+32
+1.37795
+13
+0.029532010486047477
+23
+2.7755575615628914e-16
+33
+1.37795
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.15836205142875398
+20
+0.09143037302181356
+30
+1.328952610770256
+11
+-0.18286074604362482
+21
+0.18286074604362668
+31
+1.2708326549933042
+12
+-0.22395776089577035
+22
+0.12930207354027978
+32
+1.2708326549933042
+13
+-0.22395776089577035
+23
+0.12930207354027978
+33
+1.2708326549933042
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.18286074604362482
+20
+0.18286074604362668
+30
+1.2708326549933042
+11
+-0.15836205142875398
+21
+0.09143037302181356
+31
+1.328952610770256
+12
+-0.12930207354027806
+22
+0.12930207354027967
+32
+1.328952610770256
+13
+-0.12930207354027806
+23
+0.12930207354027967
+33
+1.328952610770256
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.06211723085817539
+20
+0.08197422986253433
+30
+1.3654883423487987
+11
+0.06211723085817539
+21
+0.176629917218026
+31
+1.3289526107702583
+12
+0.04639936172838599
+22
+0.09143037302181423
+32
+1.3654883423487987
+13
+0.04639936172838599
+23
+0.09143037302181423
+33
+1.3654883423487987
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.06211723085817539
+20
+0.176629917218026
+30
+1.3289526107702583
+11
+0.06211723085817539
+21
+0.08197422986253433
+31
+1.3654883423487987
+12
+0.09248182231156576
+22
+0.1583620514287558
+32
+1.3289526107702583
+13
+0.09248182231156576
+23
+0.1583620514287558
+33
+1.3289526107702583
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.1766299172180231
+20
+0.04732784367774656
+30
+1.328952610770256
+11
+-0.22395776089577035
+21
+0.12930207354027978
+31
+1.2708326549933042
+12
+-0.24979242445056726
+22
+0.06693167840694259
+32
+1.2708326549933042
+13
+-0.24979242445056726
+23
+0.06693167840694259
+33
+1.2708326549933042
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.22395776089577035
+20
+0.12930207354027978
+30
+1.2708326549933042
+11
+-0.1766299172180231
+21
+0.04732784367774656
+31
+1.328952610770256
+12
+-0.15836205142875398
+22
+0.09143037302181356
+32
+1.328952610770256
+13
+-0.15836205142875398
+23
+0.09143037302181356
+33
+1.328952610770256
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.07561447106922731
+20
+0.24979242445056904
+30
+1.2708326549933064
+11
+0.13856428289474443
+21
+0.2742911190654399
+31
+1.1950892539563733
+12
+0.08597126774640101
+22
+0.305931990758305
+32
+1.1950892539563733
+13
+0.08597126774640101
+23
+0.305931990758305
+33
+1.1950892539563733
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.13856428289474443
+20
+0.2742911190654399
+30
+1.1950892539563733
+11
+0.07561447106922731
+21
+0.24979242445056904
+31
+1.2708326549933064
+12
+0.11855648811852992
+22
+0.22395776089577168
+32
+1.2708326549933064
+13
+0.11855648811852992
+23
+0.22395776089577168
+33
+1.2708326549933064
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.09248182231156576
+20
+0.1583620514287558
+30
+1.3289526107702583
+11
+0.07561447106922731
+21
+0.24979242445056904
+31
+1.2708326549933064
+12
+0.06211723085817539
+22
+0.176629917218026
+32
+1.3289526107702583
+13
+0.06211723085817539
+23
+0.176629917218026
+33
+1.3289526107702583
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.07561447106922731
+20
+0.24979242445056904
+30
+1.2708326549933064
+11
+0.09248182231156576
+21
+0.1583620514287558
+31
+1.3289526107702583
+12
+0.11855648811852992
+22
+0.22395776089577168
+32
+1.2708326549933064
+13
+0.11855648811852992
+23
+0.22395776089577168
+33
+1.2708326549933064
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.18286074604362482
+20
+0.18286074604362668
+30
+1.2708326549933042
+11
+-0.2742911190654381
+21
+0.15836205142875548
+31
+1.1950892539563733
+12
+-0.22395776089577035
+22
+0.12930207354027978
+32
+1.2708326549933042
+13
+-0.22395776089577035
+23
+0.12930207354027978
+33
+1.2708326549933042
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.2742911190654381
+20
+0.15836205142875548
+30
+1.1950892539563733
+11
+-0.18286074604362482
+21
+0.18286074604362668
+31
+1.2708326549933042
+12
+-0.22395776089576924
+22
+0.22395776089577124
+32
+1.1950892539563733
+13
+-0.22395776089576924
+23
+0.22395776089577124
+33
+1.1950892539563733
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.28490260216305374
+30
+1.2467080400132249
+11
+0.17760884479078798
+21
+0.2307763099490301
+31
+1.1950892539563756
+12
+0.1907104937441224
+22
+0.2086017627515685
+32
+1.3052557332991035
+13
+0.1907104937441224
+23
+0.2086017627515685
+33
+1.3052557332991035
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.09327307500958115
+20
+0.34551182473544184
+30
+1.0731565574038182
+11
+0.1060148804133424
+21
+0.3464540804912427
+31
+1.0122285079127469
+12
+0.09465568735549401
+22
+0.353259834436051
+32
+1.0122285079127469
+13
+0.09465568735549401
+23
+0.353259834436051
+33
+1.0122285079127469
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.22395776089576924
+20
+0.22395776089577124
+30
+1.1950892539563733
+11
+-0.3059319907583018
+21
+0.17662991721802546
+31
+1.1068841952682391
+12
+-0.2742911190654381
+22
+0.15836205142875548
+32
+1.1950892539563733
+13
+-0.2742911190654381
+23
+0.15836205142875548
+33
+1.1950892539563733
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.3059319907583018
+20
+0.17662991721802546
+30
+1.1068841952682391
+11
+-0.22395776089576924
+21
+0.22395776089577124
+31
+1.1950892539563733
+12
+-0.24979242445056726
+22
+0.24979242445056848
+32
+1.1068841952682391
+13
+-0.24979242445056726
+23
+0.24979242445056848
+33
+1.1068841952682391
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.08197422986253194
+20
+0.047327843677746395
+30
+1.3654883423487965
+11
+-0.12930207354027806
+21
+0.12930207354027967
+31
+1.328952610770256
+12
+-0.15836205142875398
+22
+0.09143037302181356
+32
+1.328952610770256
+13
+-0.15836205142875398
+23
+0.09143037302181356
+33
+1.328952610770256
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.12930207354027806
+20
+0.12930207354027967
+30
+1.328952610770256
+11
+-0.08197422986253194
+21
+0.047327843677746395
+31
+1.3654883423487965
+12
+-0.0669316784069407
+22
+0.06693167840694259
+32
+1.3654883423487965
+13
+-0.0669316784069407
+23
+0.06693167840694259
+33
+1.3654883423487965
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.03213810108186088
+20
+0.09415736007026898
+30
+1.3654883423488011
+11
+1.7763568394002505e-15
+21
+0.09465568735549279
+31
+1.3654883423487965
+12
+0.029532010486047477
+22
+2.7755575615628914e-16
+32
+1.37795
+13
+0.029532010486047477
+23
+2.7755575615628914e-16
+33
+1.37795
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.029532010486047477
+20
+2.7755575615628914e-16
+30
+1.37795
+11
+1.7763568394002505e-15
+21
+0.09465568735549279
+31
+1.3654883423487965
+12
+-0.024498694614870198
+22
+0.09143037302181412
+32
+1.3654883423487965
+13
+-0.024498694614870198
+23
+0.09143037302181412
+33
+1.3654883423487965
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.22395776089577035
+20
+0.12930207354027978
+30
+1.2708326549933042
+11
+-0.3059319907583018
+21
+0.081974229862534
+31
+1.1950892539563733
+12
+-0.24979242445056726
+22
+0.06693167840694259
+32
+1.2708326549933042
+13
+-0.24979242445056726
+23
+0.06693167840694259
+33
+1.2708326549933042
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.3059319907583018
+20
+0.081974229862534
+30
+1.1950892539563733
+11
+-0.22395776089577035
+21
+0.12930207354027978
+31
+1.2708326549933042
+12
+-0.2742911190654381
+22
+0.15836205142875548
+32
+1.1950892539563733
+13
+-0.2742911190654381
+23
+0.15836205142875548
+33
+1.1950892539563733
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.024498694614870198
+20
+0.09143037302181412
+30
+1.3654883423487965
+11
+1.7763568394002505e-15
+21
+0.182860746043627
+31
+1.328952610770256
+12
+-0.04732784367774434
+22
+0.1766299172180259
+32
+1.328952610770256
+13
+-0.04732784367774434
+23
+0.1766299172180259
+33
+1.328952610770256
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.182860746043627
+30
+1.328952610770256
+11
+-0.024498694614870198
+21
+0.09143037302181412
+31
+1.3654883423487965
+12
+1.7763568394002505e-15
+22
+0.09465568735549279
+32
+1.3654883423487965
+13
+1.7763568394002505e-15
+23
+0.09465568735549279
+33
+1.3654883423487965
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.04732784367774434
+20
+0.1766299172180259
+30
+1.328952610770256
+11
+1.7763568394002505e-15
+21
+0.25860414708055923
+31
+1.2708326549933042
+12
+-0.06693167840693953
+22
+0.24979242445056893
+32
+1.2708326549933042
+13
+-0.06693167840693953
+23
+0.24979242445056893
+33
+1.2708326549933042
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.25860414708055923
+30
+1.2708326549933042
+11
+-0.04732784367774434
+21
+0.1766299172180259
+31
+1.328952610770256
+12
+1.7763568394002505e-15
+22
+0.182860746043627
+32
+1.328952610770256
+13
+1.7763568394002505e-15
+23
+0.182860746043627
+33
+1.328952610770256
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.06693167840693953
+20
+0.24979242445056893
+30
+1.2708326549933042
+11
+1.7763568394002505e-15
+21
+0.31672410285751074
+31
+1.1950892539563733
+12
+-0.08197422986253078
+22
+0.3059319907583048
+32
+1.1950892539563733
+13
+-0.08197422986253078
+23
+0.3059319907583048
+33
+1.1950892539563733
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.31672410285751074
+30
+1.1950892539563733
+11
+-0.06693167840693953
+21
+0.24979242445056893
+31
+1.2708326549933042
+12
+1.7763568394002505e-15
+22
+0.25860414708055923
+32
+1.2708326549933042
+13
+1.7763568394002505e-15
+23
+0.25860414708055923
+33
+1.2708326549933042
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.08197422986253078
+20
+0.3059319907583048
+30
+1.1950892539563733
+11
+1.7763568394002505e-15
+21
+0.3532598344360507
+31
+1.1068841952682391
+12
+-0.0914303730218115
+22
+0.3412227974723816
+32
+1.1068841952682391
+13
+-0.0914303730218115
+23
+0.3412227974723816
+33
+1.1068841952682391
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.3532598344360507
+30
+1.1068841952682391
+11
+-0.08197422986253078
+21
+0.3059319907583048
+31
+1.1950892539563733
+12
+1.7763568394002505e-15
+22
+0.31672410285751074
+32
+1.1950892539563733
+13
+1.7763568394002505e-15
+23
+0.31672410285751074
+33
+1.1950892539563733
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.0914303730218115
+20
+0.3412227974723816
+30
+1.1068841952682391
+11
+1.7763568394002505e-15
+21
+0.365721492087253
+31
+1.0122285079127469
+12
+-0.09465568735549051
+22
+0.3532598344360508
+32
+1.0122285079127469
+13
+-0.09465568735549051
+23
+0.3532598344360508
+33
+1.0122285079127469
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.365721492087253
+30
+1.0122285079127469
+11
+-0.0914303730218115
+21
+0.3412227974723816
+31
+1.1068841952682391
+12
+1.7763568394002505e-15
+22
+0.3532598344360507
+32
+1.1068841952682391
+13
+1.7763568394002505e-15
+23
+0.3532598344360507
+33
+1.1068841952682391
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.2742911190654381
+20
+0.15836205142875548
+30
+1.1950892539563733
+11
+-0.34122279747237944
+21
+0.09143037302181367
+31
+1.1068841952682391
+12
+-0.3059319907583018
+22
+0.081974229862534
+32
+1.1950892539563733
+13
+-0.3059319907583018
+23
+0.081974229862534
+33
+1.1950892539563733
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.34122279747237944
+20
+0.09143037302181367
+30
+1.1068841952682391
+11
+-0.2742911190654381
+21
+0.15836205142875548
+31
+1.1950892539563733
+12
+-0.3059319907583018
+22
+0.17662991721802546
+32
+1.1068841952682391
+13
+-0.3059319907583018
+23
+0.17662991721802546
+33
+1.1068841952682391
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.09248182231156576
+20
+0.024498694614871863
+30
+1.3654883423487987
+11
+0.08597126774640212
+21
+0.04732784367774656
+31
+1.3654883423487987
+12
+0.029532010486047477
+22
+2.7755575615628914e-16
+32
+1.37795
+13
+0.029532010486047477
+23
+2.7755575615628914e-16
+33
+1.37795
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.24979242445056726
+20
+0.24979242445056848
+30
+1.1068841952682391
+11
+-0.3167241028575086
+21
+0.18286074604362668
+31
+1.0122285079127469
+12
+-0.3059319907583018
+22
+0.17662991721802546
+32
+1.1068841952682391
+13
+-0.3059319907583018
+23
+0.17662991721802546
+33
+1.1068841952682391
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.3167241028575086
+20
+0.18286074604362668
+30
+1.0122285079127469
+11
+-0.24979242445056726
+21
+0.24979242445056848
+31
+1.1068841952682391
+12
+-0.2586041470805568
+22
+0.2586041470805588
+32
+1.0122285079127469
+13
+-0.2586041470805568
+23
+0.2586041470805588
+33
+1.0122285079127469
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.15836205142875287
+20
+0.27429111906544
+30
+1.1950892539563733
+11
+-0.0914303730218115
+21
+0.3412227974723816
+31
+1.1068841952682391
+12
+-0.1766299172180231
+22
+0.305931990758305
+32
+1.1068841952682391
+13
+-0.1766299172180231
+23
+0.305931990758305
+33
+1.1068841952682391
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.0914303730218115
+20
+0.3412227974723816
+30
+1.1068841952682391
+11
+-0.15836205142875287
+21
+0.27429111906544
+31
+1.1950892539563733
+12
+-0.08197422986253078
+22
+0.3059319907583048
+32
+1.1950892539563733
+13
+-0.08197422986253078
+23
+0.3059319907583048
+33
+1.1950892539563733
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.1766299172180231
+20
+0.305931990758305
+30
+1.1068841952682391
+11
+-0.09465568735549051
+21
+0.3532598344360508
+31
+1.0122285079127469
+12
+-0.1828607460436237
+22
+0.31672410285751096
+32
+1.0122285079127469
+13
+-0.1828607460436237
+23
+0.31672410285751096
+33
+1.0122285079127469
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.09465568735549051
+20
+0.3532598344360508
+30
+1.0122285079127469
+11
+-0.1766299172180231
+21
+0.305931990758305
+31
+1.1068841952682391
+12
+-0.0914303730218115
+22
+0.3412227974723816
+32
+1.1068841952682391
+13
+-0.0914303730218115
+23
+0.3412227974723816
+33
+1.1068841952682391
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.029532010486047477
+20
+2.7755575615628914e-16
+30
+1.37795
+11
+-0.024498694614870198
+21
+0.09143037302181412
+31
+1.3654883423487965
+12
+-0.04732784367774434
+22
+0.08197422986253444
+32
+1.3654883423487965
+13
+-0.04732784367774434
+23
+0.08197422986253444
+33
+1.3654883423487965
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.04732784367774434
+20
+0.08197422986253444
+30
+1.3654883423487965
+11
+-0.04732784367774434
+21
+0.1766299172180259
+31
+1.328952610770256
+12
+-0.0914303730218115
+22
+0.15836205142875603
+32
+1.328952610770256
+13
+-0.0914303730218115
+23
+0.15836205142875603
+33
+1.328952610770256
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.04732784367774434
+20
+0.1766299172180259
+30
+1.328952610770256
+11
+-0.04732784367774434
+21
+0.08197422986253444
+31
+1.3654883423487965
+12
+-0.024498694614870198
+22
+0.09143037302181412
+32
+1.3654883423487965
+13
+-0.024498694614870198
+23
+0.09143037302181412
+33
+1.3654883423487965
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.0914303730218115
+20
+0.15836205142875603
+30
+1.328952610770256
+11
+-0.06693167840693953
+21
+0.24979242445056893
+31
+1.2708326549933042
+12
+-0.12930207354027695
+22
+0.2239577608957718
+32
+1.2708326549933042
+13
+-0.12930207354027695
+23
+0.2239577608957718
+33
+1.2708326549933042
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.06693167840693953
+20
+0.24979242445056893
+30
+1.2708326549933042
+11
+-0.0914303730218115
+21
+0.15836205142875603
+31
+1.328952610770256
+12
+-0.04732784367774434
+22
+0.1766299172180259
+32
+1.328952610770256
+13
+-0.04732784367774434
+23
+0.1766299172180259
+33
+1.328952610770256
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.029532010486047477
+20
+2.7755575615628914e-16
+30
+1.37795
+11
+-0.04732784367774434
+21
+0.08197422986253444
+31
+1.3654883423487965
+12
+-0.0669316784069407
+22
+0.06693167840694259
+32
+1.3654883423487965
+13
+-0.0669316784069407
+23
+0.06693167840694259
+33
+1.3654883423487965
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.12930207354027695
+20
+0.2239577608957718
+30
+1.2708326549933042
+11
+-0.08197422986253078
+21
+0.3059319907583048
+31
+1.1950892539563733
+12
+-0.15836205142875287
+22
+0.27429111906544
+32
+1.1950892539563733
+13
+-0.15836205142875287
+23
+0.27429111906544
+33
+1.1950892539563733
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.08197422986253078
+20
+0.3059319907583048
+30
+1.1950892539563733
+11
+-0.12930207354027695
+21
+0.2239577608957718
+31
+1.2708326549933042
+12
+-0.06693167840693953
+22
+0.24979242445056893
+32
+1.2708326549933042
+13
+-0.06693167840693953
+23
+0.24979242445056893
+33
+1.2708326549933042
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.24979242445056726
+20
+0.06693167840694259
+30
+1.2708326549933042
+11
+-0.3167241028575086
+21
+3.885780586188048e-16
+31
+1.1950892539563733
+12
+-0.2586041470805568
+22
+3.885780586188048e-16
+32
+1.2708326549933042
+13
+-0.2586041470805568
+23
+3.885780586188048e-16
+33
+1.2708326549933042
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.3167241028575086
+20
+3.885780586188048e-16
+30
+1.1950892539563733
+11
+-0.24979242445056726
+21
+0.06693167840694259
+31
+1.2708326549933042
+12
+-0.3059319907583018
+22
+0.081974229862534
+32
+1.1950892539563733
+13
+-0.3059319907583018
+23
+0.081974229862534
+33
+1.1950892539563733
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.0669316784069407
+20
+0.06693167840694259
+30
+1.3654883423487965
+11
+-0.0914303730218115
+21
+0.15836205142875603
+31
+1.328952610770256
+12
+-0.12930207354027806
+22
+0.12930207354027967
+32
+1.328952610770256
+13
+-0.12930207354027806
+23
+0.12930207354027967
+33
+1.328952610770256
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.0914303730218115
+20
+0.15836205142875603
+30
+1.328952610770256
+11
+-0.0669316784069407
+21
+0.06693167840694259
+31
+1.3654883423487965
+12
+-0.04732784367774434
+22
+0.08197422986253444
+32
+1.3654883423487965
+13
+-0.04732784367774434
+23
+0.08197422986253444
+33
+1.3654883423487965
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.09248182231156576
+20
+0.024498694614871863
+30
+1.3654883423487987
+11
+0.13856428289474554
+21
+0.09143037302181356
+31
+1.3289526107702583
+12
+0.08597126774640212
+22
+0.04732784367774656
+32
+1.3654883423487987
+13
+0.08597126774640212
+23
+0.04732784367774656
+33
+1.3654883423487987
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.13856428289474554
+20
+0.09143037302181356
+30
+1.3289526107702583
+11
+0.09248182231156576
+21
+0.024498694614871863
+31
+1.3654883423487987
+12
+0.15114170849065778
+22
+0.04732784367774656
+32
+1.3289526107702583
+13
+0.15114170849065778
+23
+0.04732784367774656
+33
+1.3289526107702583
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.12930207354027806
+20
+0.12930207354027967
+30
+1.328952610770256
+11
+-0.12930207354027695
+21
+0.2239577608957718
+31
+1.2708326549933042
+12
+-0.18286074604362482
+22
+0.18286074604362668
+32
+1.2708326549933042
+13
+-0.18286074604362482
+23
+0.18286074604362668
+33
+1.2708326549933042
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.12930207354027695
+20
+0.2239577608957718
+30
+1.2708326549933042
+11
+-0.12930207354027806
+21
+0.12930207354027967
+31
+1.328952610770256
+12
+-0.0914303730218115
+22
+0.15836205142875603
+32
+1.328952610770256
+13
+-0.0914303730218115
+23
+0.15836205142875603
+33
+1.328952610770256
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.18286074604362482
+20
+0.18286074604362668
+30
+1.2708326549933042
+11
+-0.15836205142875287
+21
+0.27429111906544
+31
+1.1950892539563733
+12
+-0.22395776089576924
+22
+0.22395776089577124
+32
+1.1950892539563733
+13
+-0.22395776089576924
+23
+0.22395776089577124
+33
+1.1950892539563733
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.15836205142875287
+20
+0.27429111906544
+30
+1.1950892539563733
+11
+-0.18286074604362482
+21
+0.18286074604362668
+31
+1.2708326549933042
+12
+-0.12930207354027695
+22
+0.2239577608957718
+32
+1.2708326549933042
+13
+-0.12930207354027695
+23
+0.2239577608957718
+33
+1.2708326549933042
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.22395776089576924
+20
+0.22395776089577124
+30
+1.1950892539563733
+11
+-0.1766299172180231
+21
+0.305931990758305
+31
+1.1068841952682391
+12
+-0.24979242445056726
+22
+0.24979242445056848
+32
+1.1068841952682391
+13
+-0.24979242445056726
+23
+0.24979242445056848
+33
+1.1068841952682391
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.1766299172180231
+20
+0.305931990758305
+30
+1.1068841952682391
+11
+-0.22395776089576924
+21
+0.22395776089577124
+31
+1.1950892539563733
+12
+-0.15836205142875287
+22
+0.27429111906544
+32
+1.1950892539563733
+13
+-0.15836205142875287
+23
+0.27429111906544
+33
+1.1950892539563733
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.029532010486047477
+20
+2.7755575615628914e-16
+30
+1.37795
+11
+-0.0669316784069407
+21
+0.06693167840694259
+31
+1.3654883423487965
+12
+-0.08197422986253194
+22
+0.047327843677746395
+32
+1.3654883423487965
+13
+-0.08197422986253194
+23
+0.047327843677746395
+33
+1.3654883423487965
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.24979242445056726
+20
+0.24979242445056848
+30
+1.1068841952682391
+11
+-0.1828607460436237
+21
+0.31672410285751096
+31
+1.0122285079127469
+12
+-0.2586041470805568
+22
+0.2586041470805588
+32
+1.0122285079127469
+13
+-0.2586041470805568
+23
+0.2586041470805588
+33
+1.0122285079127469
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.1828607460436237
+20
+0.31672410285751096
+30
+1.0122285079127469
+11
+-0.24979242445056726
+21
+0.24979242445056848
+31
+1.1068841952682391
+12
+-0.1766299172180231
+22
+0.305931990758305
+32
+1.1068841952682391
+13
+-0.1766299172180231
+23
+0.305931990758305
+33
+1.1068841952682391
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.20151409472026383
+20
+0.06693167840694275
+30
+1.2708326549933064
+11
+0.15543163413708405
+21
+3.885780586188048e-16
+31
+1.3289526107702583
+12
+0.20758096575101137
+22
+2.7755575615628914e-16
+32
+1.2708326549933064
+13
+0.20758096575101137
+23
+2.7755575615628914e-16
+33
+1.2708326549933064
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.15543163413708405
+20
+3.885780586188048e-16
+30
+1.3289526107702583
+11
+0.20151409472026383
+21
+0.06693167840694275
+31
+1.2708326549933064
+12
+0.15114170849065778
+22
+0.04732784367774656
+32
+1.3289526107702583
+13
+0.15114170849065778
+23
+0.04732784367774656
+33
+1.3289526107702583
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.3059319907583018
+20
+0.17662991721802546
+30
+1.1068841952682391
+11
+-0.3532598344360491
+21
+0.09465568735549246
+31
+1.0122285079127469
+12
+-0.34122279747237944
+22
+0.09143037302181367
+32
+1.1068841952682391
+13
+-0.34122279747237944
+23
+0.09143037302181367
+33
+1.1068841952682391
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.3532598344360491
+20
+0.09465568735549246
+30
+1.0122285079127469
+11
+-0.3059319907583018
+21
+0.17662991721802546
+31
+1.1068841952682391
+12
+-0.3167241028575086
+22
+0.18286074604362668
+32
+1.0122285079127469
+13
+-0.3167241028575086
+23
+0.18286074604362668
+33
+1.0122285079127469
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.029532010486047477
+20
+2.7755575615628914e-16
+30
+1.37795
+11
+-0.09143037302181262
+21
+0.024498694614871808
+31
+1.3654883423487965
+12
+-0.09465568735549051
+22
+3.3306690738754696e-16
+32
+1.3654883423487965
+13
+-0.09465568735549051
+23
+3.3306690738754696e-16
+33
+1.3654883423487965
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.09465568735549051
+20
+3.3306690738754696e-16
+30
+1.3654883423487965
+11
+-0.1766299172180231
+21
+0.04732784367774656
+31
+1.328952610770256
+12
+-0.18286074604362482
+22
+3.885780586188048e-16
+32
+1.328952610770256
+13
+-0.18286074604362482
+23
+3.885780586188048e-16
+33
+1.328952610770256
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.1766299172180231
+20
+0.04732784367774656
+30
+1.328952610770256
+11
+-0.09465568735549051
+21
+3.3306690738754696e-16
+31
+1.3654883423487965
+12
+-0.09143037302181262
+22
+0.024498694614871808
+32
+1.3654883423487965
+13
+-0.09143037302181262
+23
+0.024498694614871808
+33
+1.3654883423487965
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.18286074604362482
+20
+3.885780586188048e-16
+30
+1.328952610770256
+11
+-0.24979242445056726
+21
+0.06693167840694259
+31
+1.2708326549933042
+12
+-0.2586041470805568
+22
+3.885780586188048e-16
+32
+1.2708326549933042
+13
+-0.2586041470805568
+23
+3.885780586188048e-16
+33
+1.2708326549933042
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.24979242445056726
+20
+0.06693167840694259
+30
+1.2708326549933042
+11
+-0.18286074604362482
+21
+3.885780586188048e-16
+31
+1.328952610770256
+12
+-0.1766299172180231
+22
+0.04732784367774656
+32
+1.328952610770256
+13
+-0.1766299172180231
+23
+0.04732784367774656
+33
+1.328952610770256
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.3059319907583018
+20
+0.081974229862534
+30
+1.1950892539563733
+11
+-0.3532598344360491
+21
+3.885780586188048e-16
+31
+1.1068841952682391
+12
+-0.3167241028575086
+22
+3.885780586188048e-16
+32
+1.1950892539563733
+13
+-0.3167241028575086
+23
+3.885780586188048e-16
+33
+1.1950892539563733
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.3532598344360491
+20
+3.885780586188048e-16
+30
+1.1068841952682391
+11
+-0.3059319907583018
+21
+0.081974229862534
+31
+1.1950892539563733
+12
+-0.34122279747237944
+22
+0.09143037302181367
+32
+1.1068841952682391
+13
+-0.34122279747237944
+23
+0.09143037302181367
+33
+1.1068841952682391
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.34122279747237944
+20
+0.09143037302181367
+30
+1.1068841952682391
+11
+-0.3657214920872503
+21
+3.885780586188048e-16
+31
+1.0122285079127469
+12
+-0.3532598344360491
+22
+3.885780586188048e-16
+32
+1.1068841952682391
+13
+-0.3532598344360491
+23
+3.885780586188048e-16
+33
+1.1068841952682391
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.3657214920872503
+20
+3.885780586188048e-16
+30
+1.0122285079127469
+11
+-0.34122279747237944
+21
+0.09143037302181367
+31
+1.1068841952682391
+12
+-0.3532598344360491
+22
+0.09465568735549246
+32
+1.0122285079127469
+13
+-0.3532598344360491
+23
+0.09465568735549246
+33
+1.0122285079127469
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.09470245123030319
+20
+3.885780586188048e-16
+30
+1.3654883423487987
+11
+0.15114170849065778
+21
+0.04732784367774656
+31
+1.3289526107702583
+12
+0.09248182231156576
+22
+0.024498694614871863
+32
+1.3654883423487987
+13
+0.09248182231156576
+23
+0.024498694614871863
+33
+1.3654883423487987
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.15114170849065778
+20
+0.04732784367774656
+30
+1.3289526107702583
+11
+0.09470245123030319
+21
+3.885780586188048e-16
+31
+1.3654883423487987
+12
+0.15543163413708405
+22
+3.885780586188048e-16
+32
+1.3289526107702583
+13
+0.15543163413708405
+23
+3.885780586188048e-16
+33
+1.3289526107702583
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.06211723085817539
+20
+0.176629917218026
+30
+1.3289526107702583
+11
+0.051933324443145024
+21
+0.25432064826909484
+31
+1.270832654993302
+12
+0.03977877210196379
+22
+0.18090139708368969
+32
+1.3289526107702627
+13
+0.03977877210196379
+23
+0.18090139708368969
+33
+1.3289526107702627
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.051933324443145024
+20
+0.25432064826909484
+30
+1.270832654993302
+11
+0.06211723085817539
+21
+0.176629917218026
+31
+1.3289526107702583
+12
+0.07561447106922731
+22
+0.24979242445056904
+32
+1.2708326549933064
+13
+0.07561447106922731
+23
+0.24979242445056904
+33
+1.2708326549933064
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.06777344544969494
+20
+0.30941171298926207
+30
+1.1950892539563756
+11
+0.09248182231156576
+21
+0.34122279747238193
+31
+1.1068841952682413
+12
+0.0862196570520593
+22
+0.3424202262257874
+32
+1.1068841952682413
+13
+0.0862196570520593
+23
+0.3424202262257874
+33
+1.1068841952682413
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.09248182231156576
+20
+0.34122279747238193
+30
+1.1068841952682413
+11
+0.06777344544969494
+21
+0.30941171298926207
+31
+1.1950892539563756
+12
+0.08597126774640101
+22
+0.305931990758305
+32
+1.1950892539563733
+13
+0.08597126774640101
+23
+0.305931990758305
+33
+1.1950892539563733
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.1060148804133424
+20
+0.3464540804912427
+30
+1.0122285079127469
+11
+0.1110862308312226
+21
+0.4145794574834395
+31
+0.0
+12
+0.09465568735549401
+22
+0.353259834436051
+32
+1.0122285079127469
+13
+0.09465568735549401
+23
+0.353259834436051
+33
+1.0122285079127469
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.06777344544969494
+20
+0.30941171298926207
+30
+1.1950892539563756
+11
+0.07561447106922731
+21
+0.24979242445056904
+31
+1.2708326549933064
+12
+0.08597126774640101
+22
+0.305931990758305
+32
+1.1950892539563733
+13
+0.08597126774640101
+23
+0.305931990758305
+33
+1.1950892539563733
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.07561447106922731
+20
+0.24979242445056904
+30
+1.2708326549933064
+11
+0.06777344544969494
+21
+0.30941171298926207
+31
+1.1950892539563756
+12
+0.051933324443145024
+22
+0.25432064826909484
+32
+1.270832654993302
+13
+0.051933324443145024
+23
+0.25432064826909484
+33
+1.270832654993302
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.16148066621521584
+20
+0.30464032797763685
+30
+0.9121263906088999
+11
+0.14628261733798686
+21
+0.3305275449199734
+31
+0.9336709982866838
+12
+0.14628261733798686
+22
+0.2849026021630544
+32
+0.9336709982866838
+13
+0.14628261733798686
+23
+0.2849026021630544
+33
+0.9336709982866838
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.3305275449199734
+30
+0.9336709982866838
+11
+0.16148066621521584
+21
+0.30464032797763685
+31
+0.9121263906088999
+12
+0.1624333997344558
+22
+0.32322972405982175
+32
+0.9107758047501918
+13
+0.1624333997344558
+23
+0.32322972405982175
+33
+0.9107758047501918
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.04639936172838599
+20
+0.09143037302181423
+30
+1.3654883423487987
+11
+0.03977877210196379
+21
+0.18090139708368969
+31
+1.3289526107702627
+12
+0.03213810108186088
+22
+0.09415736007026898
+32
+1.3654883423488011
+13
+0.03213810108186088
+23
+0.09415736007026898
+33
+1.3654883423488011
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.03977877210196379
+20
+0.18090139708368969
+30
+1.3289526107702627
+11
+0.04639936172838599
+21
+0.09143037302181423
+31
+1.3654883423487987
+12
+0.06211723085817539
+22
+0.176629917218026
+32
+1.3289526107702583
+13
+0.06211723085817539
+23
+0.176629917218026
+33
+1.3289526107702583
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.04639936172838599
+20
+0.09143037302181423
+30
+1.3654883423487987
+11
+0.03213810108186088
+21
+0.09415736007026898
+31
+1.3654883423488011
+12
+0.029532010486047477
+22
+2.7755575615628914e-16
+32
+1.37795
+13
+0.029532010486047477
+23
+2.7755575615628914e-16
+33
+1.37795
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.09248182231156576
+20
+0.34122279747238193
+30
+1.1068841952682413
+11
+0.09327307500958115
+21
+0.34551182473544184
+31
+1.0731565574038182
+12
+0.0862196570520593
+22
+0.3424202262257874
+32
+1.1068841952682413
+13
+0.0862196570520593
+23
+0.3424202262257874
+33
+1.1068841952682413
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.23066726183653696
+20
+0.24695009092044307
+30
+0.7851554598356051
+11
+0.21831309401632715
+21
+0.21849744483100653
+31
+0.8070247740079369
+12
+0.21954103663658775
+22
+0.21464742440548745
+32
+0.8047207977789652
+13
+0.21954103663658775
+23
+0.21464742440548745
+33
+0.8047207977789652
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.21831309401632715
+20
+0.21849744483100653
+30
+0.8070247740079369
+11
+0.23066726183653696
+21
+0.24695009092044307
+31
+0.7851554598356051
+12
+0.20642658047224793
+22
+0.2386153747599219
+32
+0.8289927497633759
+13
+0.20642658047224793
+23
+0.2386153747599219
+33
+0.8289927497633759
+70
+3
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.20642658047224793
+20
+0.2386153747599219
+30
+0.8289927497633759
+11
+0.23066726183653696
+21
+0.24695009092044307
+31
+0.7851554598356051
+12
+0.214135315851808
+22
+0.2688995990817393
+32
+0.8155912096632217
+13
+0.214135315851808
+23
+0.2688995990817393
+33
+0.8155912096632217
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.28490260216305374
+30
+1.2467080400132249
+11
+0.14591265330279146
+21
+0.28442212939005906
+31
+1.159696374922908
+12
+0.13856428289474443
+22
+0.2742911190654399
+32
+1.1950892539563733
+13
+0.13856428289474443
+23
+0.2742911190654399
+33
+1.1950892539563733
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.41457945748344094
+20
+0.11108623083122104
+30
+0.0
+11
+0.2902821751225073
+21
+0.10111068285304725
+31
+0.67540282766255
+12
+0.296250080065389
+22
+0.05625570433824323
+32
+0.6644157568117056
+13
+0.296250080065389
+23
+0.05625570433824323
+33
+0.6644157568117056
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.1624333997344558
+20
+0.32322972405982175
+30
+0.9107758047501918
+11
+0.17315837194884964
+21
+0.31485375811798544
+31
+0.8910308472281347
+12
+0.30349322665222
+22
+0.303493226652219
+32
+0.0
+13
+0.30349322665222
+23
+0.303493226652219
+33
+0.0
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.28490260216305374
+30
+1.2467080400132249
+11
+0.14628261733798686
+21
+0.28490260216305396
+31
+1.0876716112414513
+12
+0.14591265330279146
+22
+0.28442212939005906
+32
+1.159696374922908
+13
+0.14591265330279146
+23
+0.28442212939005906
+33
+1.159696374922908
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.28490260216305396
+30
+1.0876716112414513
+11
+0.14628261733798686
+21
+0.28490260216305374
+31
+1.2467080400132249
+12
+0.15406334402645439
+22
+0.2950074420182055
+32
+1.238954323683159
+13
+0.15406334402645439
+23
+0.2950074420182055
+33
+1.238954323683159
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.28490260216305396
+30
+1.0876716112414513
+11
+0.15406334402645439
+21
+0.2950074420182055
+31
+1.238954323683159
+12
+0.14628261733798686
+22
+0.2849026021630544
+32
+0.9336709982866838
+13
+0.14628261733798686
+23
+0.2849026021630544
+33
+0.9336709982866838
+70
+3
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.2849026021630544
+30
+0.9336709982866838
+11
+0.15406334402645439
+21
+0.2950074420182055
+31
+1.238954323683159
+12
+0.16148066621521584
+22
+0.30464032797763685
+32
+0.9121263906088999
+13
+0.16148066621521584
+23
+0.30464032797763685
+33
+0.9121263906088999
+70
+3
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.16148066621521584
+20
+0.30464032797763685
+30
+0.9121263906088999
+11
+0.15406334402645439
+21
+0.2950074420182055
+31
+1.238954323683159
+12
+0.1648391920368235
+22
+0.309002049823879
+32
+1.2207161957078443
+13
+0.1648391920368235
+23
+0.309002049823879
+33
+1.2207161957078443
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.16148066621521584
+20
+0.30464032797763685
+30
+0.9121263906088999
+11
+0.1648391920368235
+21
+0.309002049823879
+31
+1.2207161957078443
+12
+0.16483919203682462
+22
+0.3090020498238778
+32
+0.9060890011061947
+13
+0.16483919203682462
+23
+0.3090020498238778
+33
+0.9060890011061947
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.37170177284439176
+20
+0.21460211860997003
+30
+0.0
+11
+0.2591667482690694
+21
+0.19321003684080962
+31
+0.7326871515023154
+12
+0.274037280744151
+22
+0.15716672872113313
+32
+0.7053101078903244
+13
+0.274037280744151
+23
+0.15716672872113313
+33
+0.7053101078903244
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.28490260216305374
+30
+1.2467080400132249
+11
+0.13856428289474443
+21
+0.2742911190654399
+31
+1.1950892539563733
+12
+0.17760884479078798
+22
+0.2307763099490301
+32
+1.1950892539563756
+13
+0.17760884479078798
+23
+0.2307763099490301
+33
+1.1950892539563756
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.37170177284439176
+20
+0.21460211860997003
+30
+0.0
+11
+0.274037280744151
+21
+0.15716672872113313
+31
+0.7053101078903244
+12
+0.41457945748344094
+22
+0.11108623083122104
+32
+0.0
+13
+0.41457945748344094
+23
+0.11108623083122104
+33
+0.0
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.30349322665222
+20
+0.303493226652219
+30
+0.0
+11
+0.214135315851808
+21
+0.2688995990817393
+31
+0.8155912096632217
+12
+0.23066726183653696
+22
+0.24695009092044307
+32
+0.7851554598356051
+13
+0.23066726183653696
+23
+0.24695009092044307
+33
+0.7851554598356051
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.1624333997344558
+20
+0.32322972405982175
+30
+0.9107758047501918
+11
+0.30349322665222
+21
+0.303493226652219
+31
+0.0
+12
+0.21460211860997136
+22
+0.3717017728443903
+32
+0.0
+13
+0.21460211860997136
+23
+0.3717017728443903
+33
+0.0
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.30349322665222
+20
+0.303493226652219
+30
+0.0
+11
+0.23066726183653696
+21
+0.24695009092044307
+31
+0.7851554598356051
+12
+0.37170177284439176
+22
+0.21460211860997003
+32
+0.0
+13
+0.37170177284439176
+23
+0.21460211860997003
+33
+0.0
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.41457945748344094
+20
+0.11108623083122104
+30
+0.0
+11
+0.296250080065389
+21
+0.05625570433824323
+31
+0.6644157568117056
+12
+0.42920423721993983
+22
+2.7755575615628914e-15
+32
+0.0
+13
+0.42920423721993983
+23
+2.7755575615628914e-15
+33
+0.0
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.3305275449199734
+30
+0.9357778285299473
+11
+0.14591265330279257
+21
+0.30907788121177326
+31
+1.1068841952682413
+12
+0.14628261733798686
+22
+0.2849026021630544
+32
+0.9336709982866838
+13
+0.14628261733798686
+23
+0.2849026021630544
+33
+0.9336709982866838
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.30907788121177326
+30
+1.1068841952682413
+11
+0.14591265330279257
+21
+0.3305275449199734
+31
+0.9357778285299473
+12
+0.14591265330279257
+22
+0.3224508871153656
+32
+1.0122285079127469
+13
+0.14591265330279257
+23
+0.3224508871153656
+33
+1.0122285079127469
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.30907788121177326
+30
+1.1068841952682413
+11
+0.14628261733798686
+21
+0.28490260216305396
+31
+1.0876716112414513
+12
+0.14628261733798686
+22
+0.2849026021630544
+32
+0.9336709982866838
+13
+0.14628261733798686
+23
+0.2849026021630544
+33
+0.9336709982866838
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14628261733798686
+20
+0.3305275449199734
+30
+0.9336709982866838
+11
+0.1624333997344558
+21
+0.32322972405982175
+31
+0.9107758047501918
+12
+0.21460211860997136
+22
+0.3717017728443903
+32
+0.0
+13
+0.21460211860997136
+23
+0.3717017728443903
+33
+0.0
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.1060148804133424
+20
+0.3464540804912427
+30
+1.0122285079127469
+11
+0.14628261733798686
+21
+0.3305275449199734
+31
+0.9336709982866838
+12
+0.21460211860997136
+22
+0.3717017728443903
+32
+0.0
+13
+0.21460211860997136
+23
+0.3717017728443903
+33
+0.0
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.1060148804133424
+20
+0.3464540804912427
+30
+1.0122285079127469
+11
+0.14591265330279257
+21
+0.3305275449199734
+31
+0.9357778285299473
+12
+0.14628261733798686
+22
+0.3305275449199734
+32
+0.9336709982866838
+13
+0.14628261733798686
+23
+0.3305275449199734
+33
+0.9336709982866838
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.14591265330279257
+20
+0.3305275449199734
+30
+0.9357778285299473
+11
+0.1060148804133424
+21
+0.3464540804912427
+31
+1.0122285079127469
+12
+0.14591265330279257
+22
+0.3224508871153656
+32
+1.0122285079127469
+13
+0.14591265330279257
+23
+0.3224508871153656
+33
+1.0122285079127469
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.2586041470805568
+20
+0.2586041470805588
+30
+1.0122285079127469
+11
+-0.35104895415806886
+21
+0.20267820818189808
+31
+0.3510489541580695
+12
+-0.3167241028575086
+22
+0.18286074604362668
+32
+1.0122285079127469
+13
+-0.3167241028575086
+23
+0.18286074604362668
+33
+1.0122285079127469
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.35104895415806886
+20
+0.20267820818189808
+30
+0.3510489541580695
+11
+-0.2586041470805568
+21
+0.2586041470805588
+31
+1.0122285079127469
+12
+-0.34136914729025525
+22
+0.2162382106052272
+32
+0.3413691472902548
+13
+-0.34136914729025525
+23
+0.2162382106052272
+33
+0.3413691472902548
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.2586041470805568
+20
+0.2586041470805588
+30
+1.0122285079127469
+11
+-0.31956463959574843
+21
+0.24729676227526276
+31
+0.319564639595748
+12
+-0.34136914729025525
+22
+0.2162382106052272
+32
+0.3413691472902548
+13
+-0.34136914729025525
+23
+0.2162382106052272
+33
+0.3413691472902548
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.31956463959574843
+20
+0.24729676227526276
+30
+0.319564639595748
+11
+-0.2586041470805568
+21
+0.2586041470805588
+31
+1.0122285079127469
+12
+-0.28975619668604413
+22
+0.28975619668604524
+32
+0.2897561966860459
+13
+-0.28975619668604413
+23
+0.28975619668604524
+33
+0.2897561966860459
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.3167241028575086
+20
+0.18286074604362668
+30
+1.0122285079127469
+11
+-0.38891611994706954
+21
+0.10420976026326378
+31
+0.3889161199470702
+12
+-0.3532598344360491
+22
+0.09465568735549246
+32
+1.0122285079127469
+13
+-0.3532598344360491
+23
+0.09465568735549246
+33
+1.0122285079127469
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.38891611994706954
+20
+0.10420976026326378
+30
+0.3889161199470702
+11
+-0.3167241028575086
+21
+0.18286074604362668
+31
+1.0122285079127469
+12
+-0.3824872047423873
+22
+0.12071693477296785
+32
+0.38248720474238906
+13
+-0.3824872047423873
+23
+0.12071693477296785
+33
+0.38248720474238906
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.35104895415806886
+20
+0.20267820818189808
+30
+0.3510489541580695
+11
+-0.3824872047423873
+21
+0.12071693477296785
+31
+0.38248720474238906
+12
+-0.3167241028575086
+22
+0.18286074604362668
+32
+1.0122285079127469
+13
+-0.3167241028575086
+23
+0.18286074604362668
+33
+1.0122285079127469
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.3532598344360491
+20
+0.09465568735549246
+30
+1.0122285079127469
+11
+-0.4017178381596732
+21
+3.885780586188048e-16
+31
+0.4017178381596739
+12
+-0.3657214920872503
+22
+3.885780586188048e-16
+32
+1.0122285079127469
+13
+-0.3657214920872503
+23
+3.885780586188048e-16
+33
+1.0122285079127469
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.4017178381596732
+20
+3.885780586188048e-16
+30
+0.4017178381596739
+11
+-0.3532598344360491
+21
+0.09465568735549246
+31
+1.0122285079127469
+12
+-0.39943530308125597
+22
+0.018359816733039713
+32
+0.39943530308125774
+13
+-0.39943530308125597
+23
+0.018359816733039713
+33
+0.39943530308125774
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.38891611994706954
+20
+0.10420976026326378
+30
+0.3889161199470702
+11
+-0.39943530308125597
+21
+0.018359816733039713
+31
+0.39943530308125774
+12
+-0.3532598344360491
+22
+0.09465568735549246
+32
+1.0122285079127469
+13
+-0.3532598344360491
+23
+0.09465568735549246
+33
+1.0122285079127469
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.1828607460436237
+20
+0.31672410285751096
+30
+1.0122285079127469
+11
+-0.20785502656237878
+21
+0.3600154666146186
+31
+0.2078550265623772
+12
+-0.2778969996485491
+22
+0.2997598063673419
+32
+0.27789699964855086
+13
+-0.2778969996485491
+23
+0.2997598063673419
+33
+0.27789699964855086
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.28975619668604413
+20
+0.28975619668604524
+30
+0.2897561966860459
+11
+-0.1828607460436237
+21
+0.31672410285751096
+31
+1.0122285079127469
+12
+-0.2778969996485491
+22
+0.2997598063673419
+32
+0.27789699964855086
+13
+-0.2778969996485491
+23
+0.2997598063673419
+33
+0.27789699964855086
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.1828607460436237
+20
+0.31672410285751096
+30
+1.0122285079127469
+11
+-0.28975619668604413
+21
+0.28975619668604524
+31
+0.2897561966860459
+12
+-0.2586041470805568
+22
+0.2586041470805588
+32
+1.0122285079127469
+13
+-0.2586041470805568
+23
+0.2586041470805588
+33
+1.0122285079127469
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.09465568735549051
+20
+0.3532598344360508
+30
+1.0122285079127469
+11
+-0.10931187503979845
+21
+0.4079574715191584
+31
+0.10931187503979797
+12
+-0.19486138979903292
+22
+0.36626416358485825
+32
+0.1948613897990347
+13
+-0.19486138979903292
+23
+0.36626416358485825
+33
+0.1948613897990347
+70
+0
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.20785502656237878
+20
+0.3600154666146186
+30
+0.2078550265623772
+11
+-0.09465568735549051
+21
+0.3532598344360508
+31
+1.0122285079127469
+12
+-0.19486138979903292
+22
+0.36626416358485825
+32
+0.1948613897990347
+13
+-0.19486138979903292
+23
+0.36626416358485825
+33
+0.1948613897990347
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.09465568735549051
+20
+0.3532598344360508
+30
+1.0122285079127469
+11
+-0.20785502656237878
+21
+0.3600154666146186
+31
+0.2078550265623772
+12
+-0.1828607460436237
+22
+0.31672410285751096
+32
+1.0122285079127469
+13
+-0.1828607460436237
+23
+0.31672410285751096
+33
+1.0122285079127469
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.365721492087253
+30
+1.0122285079127469
+11
+0.1110862308312226
+21
+0.4145794574834395
+31
+0.0
+12
+1.7763568394002505e-15
+22
+0.4292042372199397
+32
+0.0
+13
+1.7763568394002505e-15
+23
+0.4292042372199397
+33
+0.0
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.1110862308312226
+20
+0.4145794574834395
+30
+0.0
+11
+1.7763568394002505e-15
+21
+0.365721492087253
+31
+1.0122285079127469
+12
+0.09465568735549401
+22
+0.353259834436051
+32
+1.0122285079127469
+13
+0.09465568735549401
+23
+0.353259834436051
+33
+1.0122285079127469
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.10931187503979845
+20
+0.4079574715191584
+30
+0.10931187503979797
+11
+1.7763568394002505e-15
+21
+0.365721492087253
+31
+1.0122285079127469
+12
+1.7763568394002505e-15
+22
+0.4292042372199397
+32
+0.0
+13
+1.7763568394002505e-15
+23
+0.4292042372199397
+33
+0.0
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.365721492087253
+30
+1.0122285079127469
+11
+-0.10931187503979845
+21
+0.4079574715191584
+31
+0.10931187503979797
+12
+-0.09465568735549051
+22
+0.3532598344360508
+32
+1.0122285079127469
+13
+-0.09465568735549051
+23
+0.3532598344360508
+33
+1.0122285079127469
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.4292042372199397
+30
+0.0
+11
+0.3562827519999995
+21
+0.21460211860996914
+31
+-2.220446049250313e-15
+12
+-1.609823385706477e-15
+22
+0.2146021186099698
+32
+0.0
+13
+-1.609823385706477e-15
+23
+0.2146021186099698
+33
+0.0
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.3562827519999995
+20
+0.21460211860996914
+30
+-2.220446049250313e-15
+11
+1.7763568394002505e-15
+21
+0.4292042372199397
+31
+0.0
+12
+0.1110862308312226
+22
+0.4145794574834395
+32
+0.0
+13
+0.1110862308312226
+23
+0.4145794574834395
+33
+0.0
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.3562827519999995
+20
+0.21460211860996914
+30
+-2.220446049250313e-15
+11
+0.1110862308312226
+21
+0.4145794574834395
+31
+0.0
+12
+0.21460211860997136
+22
+0.3717017728443903
+32
+0.0
+13
+0.21460211860997136
+23
+0.3717017728443903
+33
+0.0
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.3562827519999995
+20
+0.21460211860996914
+30
+-2.220446049250313e-15
+11
+0.21460211860997136
+21
+0.3717017728443903
+31
+0.0
+12
+0.30349322665222
+22
+0.303493226652219
+32
+0.0
+13
+0.30349322665222
+23
+0.303493226652219
+33
+0.0
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.3562827519999995
+20
+0.21460211860996914
+30
+-2.220446049250313e-15
+11
+0.30349322665222
+21
+0.303493226652219
+31
+0.0
+12
+0.37170177284439176
+22
+0.21460211860997003
+32
+0.0
+13
+0.37170177284439176
+23
+0.21460211860997003
+33
+0.0
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.3562827519999995
+20
+0.21460211860996914
+30
+-2.220446049250313e-15
+11
+0.37170177284439176
+21
+0.21460211860997003
+31
+0.0
+12
+0.3562827519999995
+22
+2.1649348980190553e-15
+32
+-2.220446049250313e-15
+13
+0.3562827519999995
+23
+2.1649348980190553e-15
+33
+-2.220446049250313e-15
+70
+3
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.3562827519999995
+20
+2.1649348980190553e-15
+30
+-2.220446049250313e-15
+11
+0.37170177284439176
+21
+0.21460211860997003
+31
+0.0
+12
+0.42920423721993983
+22
+2.7755575615628914e-15
+32
+0.0
+13
+0.42920423721993983
+23
+2.7755575615628914e-15
+33
+0.0
+70
+3
+  0
+3DFACE
+ 8
+thumb distal
+10
+0.42920423721993983
+20
+2.7755575615628914e-15
+30
+0.0
+11
+0.37170177284439176
+21
+0.21460211860997003
+31
+0.0
+12
+0.41457945748344094
+22
+0.11108623083122104
+32
+0.0
+13
+0.41457945748344094
+23
+0.11108623083122104
+33
+0.0
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.39943530308125597
+20
+0.018359816733039713
+30
+0.39943530308125774
+11
+-0.2519299499590043
+21
+1.0547118733938987e-15
+31
+0.2519299499590027
+12
+-0.4017178381596732
+22
+3.885780586188048e-16
+32
+0.4017178381596739
+13
+-0.4017178381596732
+23
+3.885780586188048e-16
+33
+0.4017178381596739
+70
+1
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.2519299499590043
+20
+1.0547118733938987e-15
+30
+0.2519299499590027
+11
+-0.39943530308125597
+21
+0.018359816733039713
+31
+0.39943530308125774
+12
+-0.2519299499590054
+22
+0.21460211860996914
+32
+0.2519299499590072
+13
+-0.2519299499590054
+23
+0.21460211860996914
+33
+0.2519299499590072
+70
+3
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.2519299499590054
+20
+0.21460211860996914
+30
+0.2519299499590072
+11
+-0.39943530308125597
+21
+0.018359816733039713
+31
+0.39943530308125774
+12
+-0.38891611994706954
+22
+0.10420976026326378
+32
+0.3889161199470702
+13
+-0.38891611994706954
+23
+0.10420976026326378
+33
+0.3889161199470702
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.2519299499590054
+20
+0.21460211860996914
+30
+0.2519299499590072
+11
+-0.38891611994706954
+21
+0.10420976026326378
+31
+0.3889161199470702
+12
+-0.3824872047423873
+22
+0.12071693477296785
+32
+0.38248720474238906
+13
+-0.3824872047423873
+23
+0.12071693477296785
+33
+0.38248720474238906
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.2519299499590054
+20
+0.21460211860996914
+30
+0.2519299499590072
+11
+-0.3824872047423873
+21
+0.12071693477296785
+31
+0.38248720474238906
+12
+-0.35104895415806886
+22
+0.20267820818189808
+32
+0.3510489541580695
+13
+-0.35104895415806886
+23
+0.20267820818189808
+33
+0.3510489541580695
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.2519299499590054
+20
+0.21460211860996914
+30
+0.2519299499590072
+11
+-0.35104895415806886
+21
+0.20267820818189808
+31
+0.3510489541580695
+12
+-0.34136914729025525
+22
+0.2162382106052272
+32
+0.3413691472902548
+13
+-0.34136914729025525
+23
+0.2162382106052272
+33
+0.3413691472902548
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+-0.2519299499590054
+20
+0.21460211860996914
+30
+0.2519299499590072
+11
+-0.34136914729025525
+21
+0.2162382106052272
+31
+0.3413691472902548
+12
+-1.609823385706477e-15
+22
+0.2146021186099698
+32
+0.0
+13
+-1.609823385706477e-15
+23
+0.2146021186099698
+33
+0.0
+70
+3
+  0
+3DFACE
+ 8
+thumb distal
+10
+-1.609823385706477e-15
+20
+0.2146021186099698
+30
+0.0
+11
+-0.34136914729025525
+21
+0.2162382106052272
+31
+0.3413691472902548
+12
+1.7763568394002505e-15
+22
+0.4292042372199397
+32
+0.0
+13
+1.7763568394002505e-15
+23
+0.4292042372199397
+33
+0.0
+70
+3
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.4292042372199397
+30
+0.0
+11
+-0.34136914729025525
+21
+0.2162382106052272
+31
+0.3413691472902548
+12
+-0.31956463959574843
+22
+0.24729676227526276
+32
+0.319564639595748
+13
+-0.31956463959574843
+23
+0.24729676227526276
+33
+0.319564639595748
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.4292042372199397
+30
+0.0
+11
+-0.31956463959574843
+21
+0.24729676227526276
+31
+0.319564639595748
+12
+-0.28975619668604413
+22
+0.28975619668604524
+32
+0.2897561966860459
+13
+-0.28975619668604413
+23
+0.28975619668604524
+33
+0.2897561966860459
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.4292042372199397
+30
+0.0
+11
+-0.28975619668604413
+21
+0.28975619668604524
+31
+0.2897561966860459
+12
+-0.2778969996485491
+22
+0.2997598063673419
+32
+0.27789699964855086
+13
+-0.2778969996485491
+23
+0.2997598063673419
+33
+0.27789699964855086
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.4292042372199397
+30
+0.0
+11
+-0.2778969996485491
+21
+0.2997598063673419
+31
+0.27789699964855086
+12
+-0.20785502656237878
+22
+0.3600154666146186
+32
+0.2078550265623772
+13
+-0.20785502656237878
+23
+0.3600154666146186
+33
+0.2078550265623772
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.4292042372199397
+30
+0.0
+11
+-0.20785502656237878
+21
+0.3600154666146186
+31
+0.2078550265623772
+12
+-0.19486138979903292
+22
+0.36626416358485825
+32
+0.1948613897990347
+13
+-0.19486138979903292
+23
+0.36626416358485825
+33
+0.1948613897990347
+70
+13
+  0
+3DFACE
+ 8
+thumb distal
+10
+1.7763568394002505e-15
+20
+0.4292042372199397
+30
+0.0
+11
+-0.19486138979903292
+21
+0.36626416358485825
+31
+0.1948613897990347
+12
+-0.10931187503979845
+22
+0.4079574715191584
+32
+0.10931187503979797
+13
+-0.10931187503979845
+23
+0.4079574715191584
+33
+0.10931187503979797
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.19123308709410364
+20
+0.15899592086427866
+30
+0.8885515077908579
+11
+2.220446049250313e-15
+21
+0.15899592086427866
+31
+1.0007956832333833
+12
+-0.15693817501863377
+22
+0.15899592086427866
+32
+0.8438575082147479
+13
+-0.15693817501863377
+23
+0.15899592086427866
+33
+0.8438575082147479
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.15899592086427866
+30
+1.0007956832333833
+11
+-0.19123308709410364
+21
+0.15899592086427866
+31
+0.8885515077908579
+12
+-0.21329279355777295
+22
+0.15899592086427866
+32
+0.9418083503174176
+13
+-0.21329279355777295
+23
+0.15899592086427866
+33
+0.9418083503174176
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.15899592086427866
+30
+1.0007956832333833
+11
+-0.21329279355777295
+21
+0.15899592086427866
+31
+0.9418083503174176
+12
+-0.2208169486234871
+22
+0.15899592086427866
+32
+0.9989599821026028
+13
+-0.2208169486234871
+23
+0.15899592086427866
+33
+0.9989599821026028
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.15899592086427866
+30
+1.0007956832333833
+11
+-0.2208169486234871
+21
+0.15899592086427866
+31
+0.9989599821026028
+12
+-0.21329279355777295
+22
+0.15899592086427866
+32
+1.056111613887788
+13
+-0.21329279355777295
+23
+0.15899592086427866
+33
+1.056111613887788
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.15899592086427866
+30
+1.0007956832333833
+11
+-0.21329279355777295
+21
+0.15899592086427866
+31
+1.056111613887788
+12
+0.22057527398480187
+22
+0.15899592086427866
+32
+1.0007956832333833
+13
+0.22057527398480187
+23
+0.15899592086427866
+33
+1.0007956832333833
+70
+15
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.22057527398480187
+20
+0.15899592086427866
+30
+1.0007956832333833
+11
+-0.21329279355777295
+21
+0.15899592086427866
+31
+1.056111613887788
+12
+0.21329279355777625
+22
+0.15899592086427866
+32
+1.056111613887788
+13
+0.21329279355777625
+23
+0.15899592086427866
+33
+1.056111613887788
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.21329279355777625
+20
+0.15899592086427866
+30
+1.056111613887788
+11
+-0.21329279355777295
+21
+0.15899592086427866
+31
+1.056111613887788
+12
+-0.19123308709410364
+22
+0.15899592086427866
+32
+1.1093684564143456
+13
+-0.19123308709410364
+23
+0.15899592086427866
+33
+1.1093684564143456
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.21329279355777625
+20
+0.15899592086427866
+30
+1.056111613887788
+11
+-0.19123308709410364
+21
+0.15899592086427866
+31
+1.1093684564143456
+12
+0.19123308709410575
+22
+0.15899592086427866
+32
+1.1093684564143456
+13
+0.19123308709410575
+23
+0.15899592086427866
+33
+1.1093684564143456
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.19123308709410575
+20
+0.15899592086427866
+30
+1.1093684564143456
+11
+-0.19123308709410364
+21
+0.15899592086427866
+31
+1.1093684564143456
+12
+-0.15614116177258947
+22
+0.15899592086427866
+32
+1.1551011438751944
+13
+-0.15614116177258947
+23
+0.15899592086427866
+33
+1.1551011438751944
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.19123308709410575
+20
+0.15899592086427866
+30
+1.1093684564143456
+11
+-0.15614116177258947
+21
+0.15899592086427866
+31
+1.1551011438751944
+12
+0.15614116177259163
+22
+0.15899592086427866
+32
+1.1551011438751944
+13
+0.15614116177259163
+23
+0.15899592086427866
+33
+1.1551011438751944
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.15614116177259163
+20
+0.15899592086427866
+30
+1.1551011438751944
+11
+-0.15614116177258947
+21
+0.15899592086427866
+31
+1.1551011438751944
+12
+-0.15510247388785273
+22
+0.15899592086427866
+32
+1.1558981571212381
+13
+-0.15510247388785273
+23
+0.15899592086427866
+33
+1.1558981571212381
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.15614116177259163
+20
+0.15899592086427866
+30
+1.1551011438751944
+11
+-0.15510247388785273
+21
+0.15899592086427866
+31
+1.1558981571212381
+12
+0.110408474311746
+22
+0.15899592086427866
+32
+1.1901930691967098
+13
+0.110408474311746
+23
+0.15899592086427866
+33
+1.1901930691967098
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.110408474311746
+20
+0.15899592086427866
+30
+1.1901930691967098
+11
+-0.15510247388785273
+21
+0.15899592086427866
+31
+1.1558981571212381
+12
+-0.11040847431174272
+22
+0.15899592086427866
+32
+1.1901930691967098
+13
+-0.11040847431174272
+23
+0.15899592086427866
+33
+1.1901930691967098
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.110408474311746
+20
+0.15899592086427866
+30
+1.1901930691967098
+11
+-0.11040847431174272
+21
+0.15899592086427866
+31
+1.1901930691967098
+12
+-0.0571516317851824
+22
+0.15899592086427866
+32
+1.2122527756603774
+13
+-0.0571516317851824
+23
+0.15899592086427866
+33
+1.2122527756603774
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.110408474311746
+20
+0.15899592086427866
+30
+1.1901930691967098
+11
+-0.0571516317851824
+21
+0.15899592086427866
+31
+1.2122527756603774
+12
+0.057151631785184565
+22
+0.15899592086427866
+32
+1.2122527756603774
+13
+0.057151631785184565
+23
+0.15899592086427866
+33
+1.2122527756603774
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.057151631785184565
+20
+0.15899592086427866
+30
+1.2122527756603774
+11
+-0.0571516317851824
+21
+0.15899592086427866
+31
+1.2122527756603774
+12
+1.0547118733938987e-15
+22
+0.15899592086427866
+32
+1.2197769307260904
+13
+1.0547118733938987e-15
+23
+0.15899592086427866
+33
+1.2197769307260904
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.22057527398480187
+20
+0.15899592086427866
+30
+1.0007956832333833
+11
+0.2165682094492341
+21
+0.15899592086427866
+31
+0.9703590063073866
+12
+2.220446049250313e-15
+22
+0.15899592086427866
+32
+1.0007956832333833
+13
+2.220446049250313e-15
+23
+0.15899592086427866
+33
+1.0007956832333833
+70
+12
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.15693817501863658
+20
+-1.887379141862766e-15
+30
+0.8438575082147456
+11
+-0.2931142709759422
+21
+0.07853973219804244
+31
+0.7076814122574394
+12
+-0.30391732134661864
+22
+-2.3314683517128287e-15
+32
+0.696878361886763
+13
+-0.30391732134661864
+23
+-2.3314683517128287e-15
+33
+0.696878361886763
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.2931142709759422
+20
+0.07853973219804244
+30
+0.7076814122574394
+11
+-0.15693817501863658
+21
+-1.887379141862766e-15
+31
+0.8438575082147456
+12
+-0.2616302453704491
+22
+0.1510522925927807
+32
+0.7391654378629331
+13
+-0.2616302453704491
+23
+0.1510522925927807
+33
+0.7391654378629331
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.2616302453704491
+20
+0.1510522925927807
+30
+0.7391654378629331
+11
+-0.15693817501863658
+21
+-1.887379141862766e-15
+31
+0.8438575082147456
+12
+-0.21211943838078534
+22
+0.21211943838079228
+32
+0.788676244852598
+13
+-0.21211943838078534
+23
+0.21211943838079228
+33
+0.788676244852598
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.21211943838078534
+20
+0.21211943838079228
+30
+0.788676244852598
+11
+-0.15693817501863658
+21
+-1.887379141862766e-15
+31
+0.8438575082147456
+12
+-0.15693817501863377
+22
+0.15899592086427866
+32
+0.8438575082147479
+13
+-0.15693817501863377
+23
+0.15899592086427866
+33
+0.8438575082147479
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.21211943838078534
+20
+0.21211943838079228
+30
+0.788676244852598
+11
+-0.15693817501863377
+21
+0.15899592086427866
+31
+0.8438575082147479
+12
+-0.1486302864960926
+22
+0.25743520775475925
+32
+0.8521653967372884
+13
+-0.1486302864960926
+23
+0.25743520775475925
+33
+0.8521653967372884
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.1486302864960926
+20
+0.25743520775475925
+30
+0.8521653967372884
+11
+-0.15693817501863377
+21
+0.15899592086427866
+31
+0.8438575082147479
+12
+2.220446049250313e-15
+22
+0.15899592086427866
+32
+1.0007956832333833
+13
+2.220446049250313e-15
+23
+0.15899592086427866
+33
+1.0007956832333833
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.1486302864960926
+20
+0.25743520775475925
+30
+0.8521653967372884
+11
+2.220446049250313e-15
+21
+0.15899592086427866
+31
+1.0007956832333833
+12
+-0.07613234059483498
+22
+0.2841297631990751
+32
+0.9246633426385472
+13
+-0.07613234059483498
+23
+0.2841297631990751
+33
+0.9246633426385472
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.07613234059483498
+20
+0.2841297631990751
+30
+0.9246633426385472
+11
+2.220446049250313e-15
+21
+0.15899592086427866
+31
+1.0007956832333833
+12
+2.220446049250313e-15
+22
+0.2908891820000008
+32
+1.0007956832333833
+13
+2.220446049250313e-15
+23
+0.2908891820000008
+33
+1.0007956832333833
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.2931142709759422
+20
+0.07853973219804244
+30
+0.7076814122574394
+11
+-0.32007010417162757
+21
+-2.220446049250313e-15
+31
+0.3200701041716287
+12
+-0.30391732134661864
+22
+-2.3314683517128287e-15
+32
+0.696878361886763
+13
+-0.30391732134661864
+23
+-2.3314683517128287e-15
+33
+0.696878361886763
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.32007010417162757
+20
+-2.220446049250313e-15
+30
+0.3200701041716287
+11
+-0.2931142709759422
+21
+0.07853973219804244
+31
+0.7076814122574394
+12
+-0.3095976113128597
+22
+0.08295642992988683
+32
+0.30959761131286023
+13
+-0.3095976113128597
+23
+0.08295642992988683
+33
+0.30959761131286023
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.16339321594943848
+20
+0.2830053516365104
+30
+0.16339321594944067
+11
+-0.07613234059483498
+21
+0.2841297631990751
+31
+0.9246633426385472
+12
+-0.0854433972629631
+22
+0.3188790997566827
+32
+0.08544339726296475
+13
+-0.0854433972629631
+23
+0.3188790997566827
+33
+0.08544339726296475
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.07613234059483498
+20
+0.2841297631990751
+30
+0.9246633426385472
+11
+-0.16339321594943848
+21
+0.2830053516365104
+31
+0.16339321594944067
+12
+-0.1486302864960926
+22
+0.25743520775475925
+32
+0.8521653967372884
+13
+-0.1486302864960926
+23
+0.25743520775475925
+33
+0.8521653967372884
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.2616302453704491
+20
+0.1510522925927807
+30
+0.7391654378629331
+11
+-0.3095976113128597
+21
+0.08295642992988683
+31
+0.30959761131286023
+12
+-0.2931142709759422
+22
+0.07853973219804244
+32
+0.7076814122574394
+13
+-0.2931142709759422
+23
+0.07853973219804244
+33
+0.7076814122574394
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.3095976113128597
+20
+0.08295642992988683
+30
+0.30959761131286023
+11
+-0.2616302453704491
+21
+0.1510522925927807
+31
+0.7391654378629331
+12
+-0.27872379164223104
+22
+0.16092125613419955
+32
+0.27872379164223327
+13
+-0.27872379164223104
+23
+0.16092125613419955
+33
+0.27872379164223327
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.21211943838078534
+20
+0.21211943838079228
+30
+0.788676244852598
+11
+-0.27872379164223104
+21
+0.16092125613419955
+31
+0.27872379164223327
+12
+-0.2616302453704491
+22
+0.1510522925927807
+32
+0.7391654378629331
+13
+-0.2616302453704491
+23
+0.1510522925927807
+33
+0.7391654378629331
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.27872379164223104
+20
+0.16092125613419955
+30
+0.27872379164223327
+11
+-0.21211943838078534
+21
+0.21211943838079228
+31
+0.788676244852598
+12
+-0.22908176290007004
+22
+0.22908176290007598
+32
+0.22908176290007168
+13
+-0.22908176290007004
+23
+0.22908176290007598
+33
+0.22908176290007168
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.3095976113128597
+20
+0.08295642992988683
+30
+0.30959761131286023
+11
+-0.18812188165369356
+21
+-1.887379141862766e-15
+31
+0.1881218816536935
+12
+-0.32007010417162757
+22
+-2.220446049250313e-15
+32
+0.3200701041716287
+13
+-0.32007010417162757
+23
+-2.220446049250313e-15
+33
+0.3200701041716287
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.18812188165369356
+20
+-1.887379141862766e-15
+30
+0.1881218816536935
+11
+-0.3095976113128597
+21
+0.08295642992988683
+31
+0.30959761131286023
+12
+-0.18812188165372323
+22
+0.1915613504388899
+32
+0.18812188165372262
+13
+-0.18812188165372323
+23
+0.1915613504388899
+33
+0.18812188165372262
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.18812188165372323
+20
+0.1915613504388899
+30
+0.18812188165372262
+11
+-0.3095976113128597
+21
+0.08295642992988683
+31
+0.30959761131286023
+12
+-0.27872379164223104
+22
+0.16092125613419955
+32
+0.27872379164223327
+13
+-0.27872379164223104
+23
+0.16092125613419955
+33
+0.27872379164223327
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.18812188165372323
+20
+0.1915613504388899
+30
+0.18812188165372262
+11
+-0.27872379164223104
+21
+0.16092125613419955
+31
+0.27872379164223327
+12
+-0.22908176290007004
+22
+0.22908176290007598
+32
+0.22908176290007168
+13
+-0.22908176290007004
+23
+0.22908176290007598
+33
+0.22908176290007168
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.18812188165372323
+20
+0.1915613504388899
+30
+0.18812188165372262
+11
+-0.22908176290007004
+21
+0.22908176290007598
+31
+0.22908176290007168
+12
+1.6653345369377348e-15
+22
+0.19156135043889
+32
+0.0
+13
+1.6653345369377348e-15
+23
+0.19156135043889
+33
+0.0
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+1.6653345369377348e-15
+20
+0.19156135043889
+30
+0.0
+11
+-0.22908176290007004
+21
+0.22908176290007598
+31
+0.22908176290007168
+12
+2.220446049250313e-15
+22
+0.33379067100000115
+32
+-2.2379254005500117e-15
+13
+2.220446049250313e-15
+23
+0.33379067100000115
+33
+-2.2379254005500117e-15
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.33379067100000115
+30
+-2.2379254005500117e-15
+11
+-0.22908176290007004
+21
+0.22908176290007598
+31
+0.22908176290007168
+12
+-0.16339321594943848
+22
+0.2830053516365104
+32
+0.16339321594944067
+13
+-0.16339321594943848
+23
+0.2830053516365104
+33
+0.16339321594944067
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.33379067100000115
+30
+-2.2379254005500117e-15
+11
+-0.16339321594943848
+21
+0.2830053516365104
+31
+0.16339321594944067
+12
+-0.0854433972629631
+22
+0.3188790997566827
+32
+0.08544339726296475
+13
+-0.0854433972629631
+23
+0.3188790997566827
+33
+0.08544339726296475
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.22908176290007004
+20
+0.22908176290007598
+30
+0.22908176290007168
+11
+-0.1486302864960926
+21
+0.25743520775475925
+31
+0.8521653967372884
+12
+-0.16339321594943848
+22
+0.2830053516365104
+32
+0.16339321594944067
+13
+-0.16339321594943848
+23
+0.2830053516365104
+33
+0.16339321594944067
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.1486302864960926
+20
+0.25743520775475925
+30
+0.8521653967372884
+11
+-0.22908176290007004
+21
+0.22908176290007598
+31
+0.22908176290007168
+12
+-0.21211943838078534
+22
+0.21211943838079228
+32
+0.788676244852598
+13
+-0.21211943838078534
+23
+0.21211943838079228
+33
+0.788676244852598
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.19123308709410364
+20
+0.15899592086427866
+30
+0.8885515077908579
+11
+-0.15693817501863658
+21
+-1.887379141862766e-15
+31
+0.8438575082147456
+12
+-0.19123308709410083
+22
+-1.887379141862766e-15
+32
+0.8885515077908601
+13
+-0.19123308709410083
+23
+-1.887379141862766e-15
+33
+0.8885515077908601
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.15693817501863658
+20
+-1.887379141862766e-15
+30
+0.8438575082147456
+11
+-0.19123308709410364
+21
+0.15899592086427866
+31
+0.8885515077908579
+12
+-0.15693817501863377
+22
+0.15899592086427866
+32
+0.8438575082147479
+13
+-0.15693817501863377
+23
+0.15899592086427866
+33
+0.8438575082147479
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.11040847431174217
+20
+-1.887379141862766e-15
+30
+1.1901930691967075
+11
+-0.0571516317851824
+21
+0.15899592086427866
+31
+1.2122527756603774
+12
+-0.11040847431174272
+22
+0.15899592086427866
+32
+1.1901930691967098
+13
+-0.11040847431174272
+23
+0.15899592086427866
+33
+1.1901930691967098
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.0571516317851824
+20
+0.15899592086427866
+30
+1.2122527756603774
+11
+-0.11040847431174217
+21
+-1.887379141862766e-15
+31
+1.1901930691967075
+12
+-0.0571516317851824
+22
+-1.887379141862766e-15
+32
+1.212252775660373
+13
+-0.0571516317851824
+23
+-1.887379141862766e-15
+33
+1.212252775660373
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.2208169486234871
+20
+0.15899592086427866
+30
+0.9989599821026028
+11
+-0.2132927935577707
+21
+-1.887379141862766e-15
+31
+0.9418083503174198
+12
+-0.22081694862348375
+22
+-1.887379141862766e-15
+32
+0.9989599821026028
+13
+-0.22081694862348375
+23
+-1.887379141862766e-15
+33
+0.9989599821026028
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.2132927935577707
+20
+-1.887379141862766e-15
+30
+0.9418083503174198
+11
+-0.2208169486234871
+21
+0.15899592086427866
+31
+0.9989599821026028
+12
+-0.21329279355777295
+22
+0.15899592086427866
+32
+0.9418083503174176
+13
+-0.21329279355777295
+23
+0.15899592086427866
+33
+0.9418083503174176
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.21329279355777295
+20
+0.15899592086427866
+30
+0.9418083503174176
+11
+-0.19123308709410083
+21
+-1.887379141862766e-15
+31
+0.8885515077908601
+12
+-0.2132927935577707
+22
+-1.887379141862766e-15
+32
+0.9418083503174198
+13
+-0.2132927935577707
+23
+-1.887379141862766e-15
+33
+0.9418083503174198
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.19123308709410083
+20
+-1.887379141862766e-15
+30
+0.8885515077908601
+11
+-0.21329279355777295
+21
+0.15899592086427866
+31
+0.9418083503174176
+12
+-0.19123308709410364
+22
+0.15899592086427866
+32
+0.8885515077908579
+13
+-0.19123308709410364
+23
+0.15899592086427866
+33
+0.8885515077908579
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.21329279355777295
+20
+0.15899592086427866
+30
+1.056111613887788
+11
+-0.22057527398479468
+21
+-1.3877787807814457e-15
+31
+1.0007956832333833
+12
+-0.21329279355776792
+22
+-1.887379141862766e-15
+32
+1.0561116138877857
+13
+-0.21329279355776792
+23
+-1.887379141862766e-15
+33
+1.0561116138877857
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.22057527398479468
+20
+-1.3877787807814457e-15
+30
+1.0007956832333833
+11
+-0.2208169486234871
+21
+0.15899592086427866
+31
+0.9989599821026028
+12
+-0.22081694862348375
+22
+-1.887379141862766e-15
+32
+0.9989599821026028
+13
+-0.22081694862348375
+23
+-1.887379141862766e-15
+33
+0.9989599821026028
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.2208169486234871
+20
+0.15899592086427866
+30
+0.9989599821026028
+11
+-0.22057527398479468
+21
+-1.3877787807814457e-15
+31
+1.0007956832333833
+12
+-0.21329279355777295
+22
+0.15899592086427866
+32
+1.056111613887788
+13
+-0.21329279355777295
+23
+0.15899592086427866
+33
+1.056111613887788
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.15614116177258947
+20
+0.15899592086427866
+30
+1.1551011438751944
+11
+-0.19123308709409917
+21
+-1.887379141862766e-15
+31
+1.1093684564143433
+12
+-0.15614116177258947
+22
+-1.887379141862766e-15
+32
+1.1551011438751921
+13
+-0.15614116177258947
+23
+-1.887379141862766e-15
+33
+1.1551011438751921
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.19123308709409917
+20
+-1.887379141862766e-15
+30
+1.1093684564143433
+11
+-0.15614116177258947
+21
+0.15899592086427866
+31
+1.1551011438751944
+12
+-0.19123308709410364
+22
+0.15899592086427866
+32
+1.1093684564143456
+13
+-0.19123308709410364
+23
+0.15899592086427866
+33
+1.1093684564143456
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.11040847431174217
+20
+-1.887379141862766e-15
+30
+1.1901930691967075
+11
+-0.15614116177258947
+21
+0.15899592086427866
+31
+1.1551011438751944
+12
+-0.15614116177258947
+22
+-1.887379141862766e-15
+32
+1.1551011438751921
+13
+-0.15614116177258947
+23
+-1.887379141862766e-15
+33
+1.1551011438751921
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.15614116177258947
+20
+0.15899592086427866
+30
+1.1551011438751944
+11
+-0.11040847431174217
+21
+-1.887379141862766e-15
+31
+1.1901930691967075
+12
+-0.15510247388785273
+22
+0.15899592086427866
+32
+1.1558981571212381
+13
+-0.15510247388785273
+23
+0.15899592086427866
+33
+1.1558981571212381
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.15510247388785273
+20
+0.15899592086427866
+30
+1.1558981571212381
+11
+-0.11040847431174217
+21
+-1.887379141862766e-15
+31
+1.1901930691967075
+12
+-0.11040847431174272
+22
+0.15899592086427866
+32
+1.1901930691967098
+13
+-0.11040847431174272
+23
+0.15899592086427866
+33
+1.1901930691967098
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.19123308709410364
+20
+0.15899592086427866
+30
+1.1093684564143456
+11
+-0.21329279355776792
+21
+-1.887379141862766e-15
+31
+1.0561116138877857
+12
+-0.19123308709409917
+22
+-1.887379141862766e-15
+32
+1.1093684564143433
+13
+-0.19123308709409917
+23
+-1.887379141862766e-15
+33
+1.1093684564143433
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.21329279355776792
+20
+-1.887379141862766e-15
+30
+1.0561116138877857
+11
+-0.19123308709410364
+21
+0.15899592086427866
+31
+1.1093684564143456
+12
+-0.21329279355777295
+22
+0.15899592086427866
+32
+1.056111613887788
+13
+-0.21329279355777295
+23
+0.15899592086427866
+33
+1.056111613887788
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.21329279355777625
+20
+0.15899592086427866
+30
+1.056111613887788
+11
+0.1912330870941092
+21
+-1.887379141862766e-15
+31
+1.10936845641435
+12
+0.21329279355777625
+22
+-1.887379141862766e-15
+32
+1.0561116138877857
+13
+0.21329279355777625
+23
+-1.887379141862766e-15
+33
+1.0561116138877857
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.1912330870941092
+20
+-1.887379141862766e-15
+30
+1.10936845641435
+11
+0.21329279355777625
+21
+0.15899592086427866
+31
+1.056111613887788
+12
+0.19123308709410575
+22
+0.15899592086427866
+32
+1.1093684564143456
+13
+0.19123308709410575
+23
+0.15899592086427866
+33
+1.1093684564143456
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+1.6653345369377348e-15
+20
+-1.887379141862766e-15
+30
+1.2197769307260882
+11
+0.057151631785184565
+21
+0.15899592086427866
+31
+1.2122527756603774
+12
+1.0547118733938987e-15
+22
+0.15899592086427866
+32
+1.2197769307260904
+13
+1.0547118733938987e-15
+23
+0.15899592086427866
+33
+1.2197769307260904
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.057151631785184565
+20
+0.15899592086427866
+30
+1.2122527756603774
+11
+1.6653345369377348e-15
+21
+-1.887379141862766e-15
+31
+1.2197769307260882
+12
+0.057151631785183454
+22
+-1.887379141862766e-15
+32
+1.2122527756603774
+13
+0.057151631785183454
+23
+-1.887379141862766e-15
+33
+1.2122527756603774
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.11040847431174489
+20
+-1.887379141862766e-15
+30
+1.1901930691967098
+11
+0.057151631785184565
+21
+0.15899592086427866
+31
+1.2122527756603774
+12
+0.057151631785183454
+22
+-1.887379141862766e-15
+32
+1.2122527756603774
+13
+0.057151631785183454
+23
+-1.887379141862766e-15
+33
+1.2122527756603774
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.057151631785184565
+20
+0.15899592086427866
+30
+1.2122527756603774
+11
+0.11040847431174489
+21
+-1.887379141862766e-15
+31
+1.1901930691967098
+12
+0.110408474311746
+22
+0.15899592086427866
+32
+1.1901930691967098
+13
+0.110408474311746
+23
+0.15899592086427866
+33
+1.1901930691967098
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.22057527398480187
+20
+0.15899592086427866
+30
+1.0007956832333833
+11
+0.21329279355777625
+21
+-1.887379141862766e-15
+31
+1.0561116138877857
+12
+0.22057527398480187
+22
+-1.887379141862766e-15
+32
+1.0007956832333833
+13
+0.22057527398480187
+23
+-1.887379141862766e-15
+33
+1.0007956832333833
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.21329279355777625
+20
+-1.887379141862766e-15
+30
+1.0561116138877857
+11
+0.22057527398480187
+21
+0.15899592086427866
+31
+1.0007956832333833
+12
+0.21329279355777625
+22
+0.15899592086427866
+32
+1.056111613887788
+13
+0.21329279355777625
+23
+0.15899592086427866
+33
+1.056111613887788
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+1.6653345369377348e-15
+20
+-1.887379141862766e-15
+30
+1.2197769307260882
+11
+-0.0571516317851824
+21
+0.15899592086427866
+31
+1.2122527756603774
+12
+-0.0571516317851824
+22
+-1.887379141862766e-15
+32
+1.212252775660373
+13
+-0.0571516317851824
+23
+-1.887379141862766e-15
+33
+1.212252775660373
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.0571516317851824
+20
+0.15899592086427866
+30
+1.2122527756603774
+11
+1.6653345369377348e-15
+21
+-1.887379141862766e-15
+31
+1.2197769307260882
+12
+1.0547118733938987e-15
+22
+0.15899592086427866
+32
+1.2197769307260904
+13
+1.0547118733938987e-15
+23
+0.15899592086427866
+33
+1.2197769307260904
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.15614116177259496
+20
+-1.887379141862766e-15
+30
+1.1551011438751944
+11
+0.110408474311746
+21
+0.15899592086427866
+31
+1.1901930691967098
+12
+0.11040847431174489
+22
+-1.887379141862766e-15
+32
+1.1901930691967098
+13
+0.11040847431174489
+23
+-1.887379141862766e-15
+33
+1.1901930691967098
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.110408474311746
+20
+0.15899592086427866
+30
+1.1901930691967098
+11
+0.15614116177259496
+21
+-1.887379141862766e-15
+31
+1.1551011438751944
+12
+0.15614116177259163
+22
+0.15899592086427866
+32
+1.1551011438751944
+13
+0.15614116177259163
+23
+0.15899592086427866
+33
+1.1551011438751944
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.19123308709410575
+20
+0.15899592086427866
+30
+1.1093684564143456
+11
+0.15614116177259496
+21
+-1.887379141862766e-15
+31
+1.1551011438751944
+12
+0.1912330870941092
+22
+-1.887379141862766e-15
+32
+1.10936845641435
+13
+0.1912330870941092
+23
+-1.887379141862766e-15
+33
+1.10936845641435
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.15614116177259496
+20
+-1.887379141862766e-15
+30
+1.1551011438751944
+11
+0.19123308709410575
+21
+0.15899592086427866
+31
+1.1093684564143456
+12
+0.15614116177259163
+22
+0.15899592086427866
+32
+1.1551011438751944
+13
+0.15614116177259163
+23
+0.15899592086427866
+33
+1.1551011438751944
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.33379067100000115
+30
+-2.2379254005500117e-15
+11
+0.26121143822087073
+21
+0.19156135043888944
+31
+0.036710873561373786
+12
+1.6653345369377348e-15
+22
+0.19156135043889
+32
+0.0
+13
+1.6653345369377348e-15
+23
+0.19156135043889
+33
+0.0
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.26121143822087073
+20
+0.19156135043888944
+30
+0.036710873561373786
+11
+2.220446049250313e-15
+21
+0.33379067100000115
+31
+-2.2379254005500117e-15
+12
+0.08625688360556105
+22
+0.3219150721185059
+32
+0.012122614420753606
+13
+0.08625688360556105
+23
+0.3219150721185059
+33
+0.012122614420753606
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.26121143822087073
+20
+0.19156135043888944
+30
+0.036710873561373786
+11
+0.08625688360556105
+21
+0.3219150721185059
+31
+0.012122614420753606
+12
+0.1663941050906908
+22
+0.28820304409702857
+32
+0.023385166419002953
+13
+0.1663941050906908
+23
+0.28820304409702857
+33
+0.023385166419002953
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.26121143822087073
+20
+0.19156135043888944
+30
+0.036710873561373786
+11
+0.1663941050906908
+21
+0.28820304409702857
+31
+0.023385166419002953
+12
+0.23502443164595715
+22
+0.235024431645955
+32
+0.03303052979897671
+13
+0.23502443164595715
+23
+0.235024431645955
+33
+0.03303052979897671
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.26121143822087073
+20
+0.19156135043888944
+30
+0.036710873561373786
+11
+0.23502443164595715
+21
+0.235024431645955
+31
+0.03303052979897671
+12
+0.2491438361672455
+22
+0.21648512794230157
+32
+0.035014882695901035
+13
+0.2491438361672455
+23
+0.21648512794230157
+33
+0.035014882695901035
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.26121143822087073
+20
+0.19156135043888944
+30
+0.036710873561373786
+11
+0.2491438361672455
+21
+0.21648512794230157
+31
+0.035014882695901035
+12
+0.2875708080778629
+22
+0.16602908345483203
+32
+0.04041544140330445
+13
+0.2875708080778629
+23
+0.16602908345483203
+33
+0.04041544140330445
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.26121143822087073
+20
+0.19156135043888944
+30
+0.036710873561373786
+11
+0.2875708080778629
+21
+0.16602908345483203
+31
+0.04041544140330445
+12
+0.26121143822087073
+22
+1.1102230246251565e-16
+32
+0.036710873561373786
+13
+0.26121143822087073
+23
+1.1102230246251565e-16
+33
+0.036710873561373786
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.26121143822087073
+20
+1.1102230246251565e-16
+30
+0.036710873561373786
+11
+0.2875708080778629
+21
+0.16602908345483203
+31
+0.04041544140330445
+12
+0.3317917526381973
+22
+4.440892098500626e-16
+32
+0.046630289863139704
+13
+0.3317917526381973
+23
+4.440892098500626e-16
+33
+0.046630289863139704
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.3317917526381973
+20
+4.440892098500626e-16
+30
+0.046630289863139704
+11
+0.2875708080778629
+21
+0.16602908345483203
+31
+0.04041544140330445
+12
+0.32055163282900784
+22
+0.08589155114901104
+32
+0.045050594043002004
+13
+0.32055163282900784
+23
+0.08589155114901104
+33
+0.045050594043002004
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.07540523862764037
+20
+0.28141618171520544
+30
+0.9901981680557236
+11
+0.1663941050906908
+21
+0.28820304409702857
+31
+0.023385166419002953
+12
+0.08625688360556105
+22
+0.3219150721185059
+32
+0.012122614420753606
+13
+0.08625688360556105
+23
+0.3219150721185059
+33
+0.012122614420753606
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.1663941050906908
+20
+0.28820304409702857
+30
+0.023385166419002953
+11
+0.07540523862764037
+21
+0.28141618171520544
+31
+0.9901981680557236
+12
+0.14588403875819583
+22
+0.25267856714253933
+32
+0.9802930186565522
+13
+0.14588403875819583
+23
+0.25267856714253933
+33
+0.9802930186565522
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.2875708080778629
+20
+0.16602908345483203
+30
+0.04041544140330445
+11
+0.20656971000640417
+21
+0.20656971000640245
+31
+0.9717642037648546
+12
+0.25323868698207214
+22
+0.14620742409832682
+32
+0.9652053067859873
+13
+0.25323868698207214
+23
+0.14620742409832682
+33
+0.9652053067859873
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.20656971000640417
+20
+0.20656971000640245
+30
+0.9717642037648546
+11
+0.2875708080778629
+21
+0.16602908345483203
+31
+0.04041544140330445
+12
+0.2491438361672455
+22
+0.21648512794230157
+32
+0.035014882695901035
+13
+0.2491438361672455
+23
+0.21648512794230157
+33
+0.035014882695901035
+70
+13
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.20656971000640417
+20
+0.20656971000640245
+30
+0.9717642037648546
+11
+0.2491438361672455
+21
+0.21648512794230157
+31
+0.035014882695901035
+12
+0.23502443164595715
+22
+0.235024431645955
+32
+0.03303052979897671
+13
+0.23502443164595715
+23
+0.235024431645955
+33
+0.03303052979897671
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.3317917526381973
+20
+4.440892098500626e-16
+30
+0.046630289863139704
+11
+0.2826220454264932
+21
+0.07572834883526192
+31
+0.9610757450638483
+12
+0.2926523001357429
+22
+3.885780586188048e-16
+32
+0.9596660846947334
+13
+0.2926523001357429
+23
+3.885780586188048e-16
+33
+0.9596660846947334
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.2826220454264932
+20
+0.07572834883526192
+30
+0.9610757450638483
+11
+0.3317917526381973
+21
+4.440892098500626e-16
+31
+0.046630289863139704
+12
+0.32055163282900784
+22
+0.08589155114901104
+32
+0.045050594043002004
+13
+0.32055163282900784
+23
+0.08589155114901104
+33
+0.045050594043002004
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.14588403875819583
+20
+0.25267856714253933
+30
+0.9802930186565522
+11
+0.23502443164595715
+21
+0.235024431645955
+31
+0.03303052979897671
+12
+0.1663941050906908
+22
+0.28820304409702857
+32
+0.023385166419002953
+13
+0.1663941050906908
+23
+0.28820304409702857
+33
+0.023385166419002953
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.23502443164595715
+20
+0.235024431645955
+30
+0.03303052979897671
+11
+0.14588403875819583
+21
+0.25267856714253933
+31
+0.9802930186565522
+12
+0.20656971000640417
+22
+0.20656971000640245
+32
+0.9717642037648546
+13
+0.20656971000640417
+23
+0.20656971000640245
+33
+0.9717642037648546
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.32055163282900784
+20
+0.08589155114901104
+30
+0.045050594043002004
+11
+0.25323868698207214
+21
+0.14620742409832682
+31
+0.9652053067859873
+12
+0.2826220454264932
+22
+0.07572834883526192
+32
+0.9610757450638483
+13
+0.2826220454264932
+23
+0.07572834883526192
+33
+0.9610757450638483
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.25323868698207214
+20
+0.14620742409832682
+30
+0.9652053067859873
+11
+0.32055163282900784
+21
+0.08589155114901104
+31
+0.045050594043002004
+12
+0.2875708080778629
+22
+0.16602908345483203
+32
+0.04041544140330445
+13
+0.2875708080778629
+23
+0.16602908345483203
+33
+0.04041544140330445
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.2165682094492341
+20
+-8.326672684688674e-16
+30
+0.9703590063073866
+11
+0.22057527398480187
+21
+0.15899592086427866
+31
+1.0007956832333833
+12
+0.22057527398480187
+22
+-1.887379141862766e-15
+32
+1.0007956832333833
+13
+0.22057527398480187
+23
+-1.887379141862766e-15
+33
+1.0007956832333833
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.22057527398480187
+20
+0.15899592086427866
+30
+1.0007956832333833
+11
+0.2165682094492341
+21
+-8.326672684688674e-16
+31
+0.9703590063073866
+12
+0.2165682094492341
+22
+0.15899592086427866
+32
+0.9703590063073866
+13
+0.2165682094492341
+23
+0.15899592086427866
+33
+0.9703590063073866
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.2926523001357429
+20
+3.885780586188048e-16
+30
+0.9596660846947334
+11
+0.2165682094492341
+21
+0.15899592086427866
+31
+0.9703590063073866
+12
+0.2165682094492341
+22
+-8.326672684688674e-16
+32
+0.9703590063073866
+13
+0.2165682094492341
+23
+-8.326672684688674e-16
+33
+0.9703590063073866
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.2165682094492341
+20
+0.15899592086427866
+30
+0.9703590063073866
+11
+0.2926523001357429
+21
+3.885780586188048e-16
+31
+0.9596660846947334
+12
+0.25323868698207214
+22
+0.14620742409832682
+32
+0.9652053067859873
+13
+0.25323868698207214
+23
+0.14620742409832682
+33
+0.9652053067859873
+70
+15
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.25323868698207214
+20
+0.14620742409832682
+30
+0.9652053067859873
+11
+0.2926523001357429
+21
+3.885780586188048e-16
+31
+0.9596660846947334
+12
+0.2826220454264932
+22
+0.07572834883526192
+32
+0.9610757450638483
+13
+0.2826220454264932
+23
+0.07572834883526192
+33
+0.9610757450638483
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.2165682094492341
+20
+0.15899592086427866
+30
+0.9703590063073866
+11
+2.220446049250313e-15
+21
+0.2908891820000008
+31
+1.0007956832333833
+12
+2.220446049250313e-15
+22
+0.15899592086427866
+32
+1.0007956832333833
+13
+2.220446049250313e-15
+23
+0.15899592086427866
+33
+1.0007956832333833
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.2908891820000008
+30
+1.0007956832333833
+11
+0.2165682094492341
+21
+0.15899592086427866
+31
+0.9703590063073866
+12
+0.07540523862764037
+22
+0.28141618171520544
+32
+0.9901981680557236
+13
+0.07540523862764037
+23
+0.28141618171520544
+33
+0.9901981680557236
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.07540523862764037
+20
+0.28141618171520544
+30
+0.9901981680557236
+11
+0.2165682094492341
+21
+0.15899592086427866
+31
+0.9703590063073866
+12
+0.14588403875819583
+22
+0.25267856714253933
+32
+0.9802930186565522
+13
+0.14588403875819583
+23
+0.25267856714253933
+33
+0.9802930186565522
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.14588403875819583
+20
+0.25267856714253933
+30
+0.9802930186565522
+11
+0.2165682094492341
+21
+0.15899592086427866
+31
+0.9703590063073866
+12
+0.20656971000640417
+22
+0.20656971000640245
+32
+0.9717642037648546
+13
+0.20656971000640417
+23
+0.20656971000640245
+33
+0.9717642037648546
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.20656971000640417
+20
+0.20656971000640245
+30
+0.9717642037648546
+11
+0.2165682094492341
+21
+0.15899592086427866
+31
+0.9703590063073866
+12
+0.25323868698207214
+22
+0.14620742409832682
+32
+0.9652053067859873
+13
+0.25323868698207214
+23
+0.14620742409832682
+33
+0.9652053067859873
+70
+3
+  0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.2908891820000008
+30
+1.0007956832333833
+11
+0.08625688360556105
+21
+0.3219150721185059
+31
+0.012122614420753606
+12
+2.220446049250313e-15
+22
+0.33379067100000115
+32
+-2.2379254005500117e-15
+13
+2.220446049250313e-15
+23
+0.33379067100000115
+33
+-2.2379254005500117e-15
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+0.08625688360556105
+20
+0.3219150721185059
+30
+0.012122614420753606
+11
+2.220446049250313e-15
+21
+0.2908891820000008
+31
+1.0007956832333833
+12
+0.07540523862764037
+22
+0.28141618171520544
+32
+0.9901981680557236
+13
+0.07540523862764037
+23
+0.28141618171520544
+33
+0.9901981680557236
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+-0.0854433972629631
+20
+0.3188790997566827
+30
+0.08544339726296475
+11
+2.220446049250313e-15
+21
+0.2908891820000008
+31
+1.0007956832333833
+12
+2.220446049250313e-15
+22
+0.33379067100000115
+32
+-2.2379254005500117e-15
+13
+2.220446049250313e-15
+23
+0.33379067100000115
+33
+-2.2379254005500117e-15
+70
+1
+  0
+3DFACE
+ 8
+finger intermediate
+10
+2.220446049250313e-15
+20
+0.2908891820000008
+30
+1.0007956832333833
+11
+-0.0854433972629631
+21
+0.3188790997566827
+31
+0.08544339726296475
+12
+-0.07613234059483498
+22
+0.2841297631990751
+32
+0.9246633426385472
+13
+-0.07613234059483498
+23
+0.2841297631990751
+33
+0.9246633426385472
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.09508647761767314
+20
+0.18027301793291245
+30
+1.0018635478066782
+11
+0.09931785063555398
+21
+0.1845043909507944
+31
+1.1319291153552398
+12
+0.09931785063555171
+22
+0.1845043909507933
+32
+1.001863547806677
+13
+0.09931785063555171
+23
+0.1845043909507933
+33
+1.001863547806677
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.09931785063555398
+20
+0.1845043909507944
+30
+1.1319291153552398
+11
+0.09508647761767314
+21
+0.18027301793291245
+31
+1.0018635478066782
+12
+0.0903926304890455
+22
+0.1755791708042826
+32
+1.0588240032604657
+13
+0.0903926304890455
+23
+0.1755791708042826
+33
+1.0588240032604657
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.09931785063555398
+20
+0.1845043909507944
+30
+1.1319291153552398
+11
+0.0903926304890455
+21
+0.1755791708042826
+31
+1.0588240032604657
+12
+0.08492812760476576
+22
+0.17011466792000507
+32
+1.0799005744368184
+13
+0.08492812760476576
+23
+0.17011466792000507
+33
+1.0799005744368184
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.09931785063555398
+20
+0.1845043909507944
+30
+1.1319291153552398
+11
+0.08492812760476576
+21
+0.17011466792000507
+31
+1.0799005744368184
+12
+0.08492812760476576
+22
+0.17011466792000618
+32
+1.0912264321828118
+13
+0.08492812760476576
+23
+0.17011466792000618
+33
+1.0912264321828118
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.09931785063555398
+20
+0.1845043909507944
+30
+1.1319291153552398
+11
+0.08492812760476576
+21
+0.17011466792000618
+31
+1.0912264321828118
+12
+0.08492812760476576
+22
+0.17011466792000507
+32
+1.1359944433702325
+13
+0.08492812760476576
+23
+0.17011466792000507
+33
+1.1359944433702325
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.09931785063555398
+20
+0.1845043909507944
+30
+1.1319291153552398
+11
+0.08492812760476576
+21
+0.17011466792000507
+31
+1.1359944433702325
+12
+0.09096170351208649
+22
+0.1761482438273269
+32
+1.1428190583057358
+13
+0.09096170351208649
+23
+0.1761482438273269
+33
+1.1428190583057358
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+0.09096170351208649
+20
+0.1761482438273269
+30
+1.1428190583057358
+11
+0.08492812760476576
+21
+0.17011466792000507
+31
+1.1359944433702325
+12
+0.08492812760476465
+22
+0.17011466792000618
+32
+1.1474487839334422
+13
+0.08492812760476465
+23
+0.17011466792000618
+33
+1.1474487839334422
+70
+1
+  0
+LINE
+ 8
+finger distal
+10
+-0.20568971316600607
+20
+0.20717595716186143
+30
+0.20568971316600676
+11
+-0.20652621200157167
+21
+0.206526212001578
+31
+0.2045995666591466
+  0
+3DFACE
+ 8
+finger distal
+10
+0.18396767361172195
+20
+0.11560560777326617
+30
+0.7307557071160136
+11
+0.14004304520099842
+21
+0.16005831690802014
+31
+0.8489738683201561
+12
+0.1752009048041535
+22
+0.11429416310676693
+32
+0.7946280917100798
+13
+0.1752009048041535
+23
+0.11429416310676693
+33
+0.7946280917100798
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.14004304520099842
+20
+0.16005831690802014
+30
+0.8489738683201561
+11
+0.18396767361172195
+21
+0.11560560777326617
+31
+0.7307557071160136
+12
+0.15567497232576927
+22
+0.1634910183993356
+32
+0.7307557071160147
+13
+0.15567497232576927
+23
+0.1634910183993356
+33
+0.7307557071160147
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.09524177069161455
+20
+0.193567791051381
+30
+0.9182260948156299
+11
+0.15567497232576927
+21
+0.1634910183993356
+31
+0.7307557071160147
+12
+0.11880320614369011
+22
+0.20023478630317332
+32
+0.7307557071160136
+13
+0.11880320614369011
+23
+0.20023478630317332
+33
+0.7307557071160136
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.15567497232576927
+20
+0.1634910183993356
+30
+0.7307557071160147
+11
+0.09524177069161455
+21
+0.193567791051381
+31
+0.9182260948156299
+12
+0.14004304520099842
+22
+0.16005831690802014
+32
+0.8489738683201561
+13
+0.14004304520099842
+23
+0.16005831690802014
+33
+0.8489738683201561
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.20175320916481837
+20
+0.059841866024748225
+30
+0.7307557071160136
+11
+0.1752009048041535
+21
+0.11429416310676693
+31
+0.7946280917100798
+12
+0.19765914773897608
+22
+0.05953197480025596
+32
+0.7599129336382517
+13
+0.19765914773897608
+23
+0.05953197480025596
+33
+0.7599129336382517
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.1752009048041535
+20
+0.11429416310676693
+30
+0.7946280917100798
+11
+0.20175320916481837
+21
+0.059841866024748225
+31
+0.7307557071160136
+12
+0.18396767361172195
+22
+0.11560560777326617
+32
+0.7307557071160136
+13
+0.18396767361172195
+23
+0.11560560777326617
+33
+0.7307557071160136
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.2534617548141387
+20
+0.1463362123712234
+30
+0.30841453414256254
+11
+-0.20653412136710422
+21
+0.2065341213671094
+31
+0.20653412136710492
+12
+-0.2531852032990528
+22
+0.1461765452795445
+32
+0.2531852032990535
+13
+-0.2531852032990528
+23
+0.1461765452795445
+33
+0.2531852032990535
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.20653412136710422
+20
+0.2065341213671094
+30
+0.20653412136710492
+11
+-0.2534617548141387
+21
+0.1463362123712234
+31
+0.30841453414256254
+12
+-0.20695065620168485
+22
+0.2069506562016934
+32
+0.30841453414256254
+13
+-0.20695065620168485
+23
+0.2069506562016934
+33
+0.30841453414256254
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.20175320916481837
+20
+0.059841866024748225
+30
+0.7307557071160136
+11
+0.20538343774009993
+21
+1.1657341758564144e-15
+31
+0.7479729991936949
+12
+0.20781952412910853
+22
+1.1657341758564144e-15
+32
+0.7307557071160136
+13
+0.20781952412910853
+23
+1.1657341758564144e-15
+33
+0.7307557071160136
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.20538343774009993
+20
+1.1657341758564144e-15
+30
+0.7479729991936949
+11
+0.20175320916481837
+21
+0.059841866024748225
+31
+0.7307557071160136
+12
+0.19765914773897608
+22
+0.05953197480025596
+32
+0.7599129336382517
+13
+0.19765914773897608
+23
+0.05953197480025596
+33
+0.7599129336382517
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.14586628805175494
+20
+0.25264782201712543
+30
+0.14586628805175564
+11
+-0.07574919749967438
+21
+0.2826998537013695
+31
+0.30841453414256254
+12
+-0.07540049589488734
+22
+0.2813984815956233
+32
+0.07540049589488913
+13
+-0.07540049589488734
+23
+0.2813984815956233
+33
+0.07540049589488913
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.07574919749967438
+20
+0.2826998537013695
+30
+0.30841453414256254
+11
+-0.14586628805175494
+21
+0.25264782201712543
+31
+0.14586628805175564
+12
+-0.1463362123712171
+22
+0.253461754814145
+32
+0.30841453414256254
+13
+-0.1463362123712171
+23
+0.253461754814145
+33
+0.30841453414256254
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.044467883797984775
+20
+0.21278370795076884
+30
+0.9967105744140091
+11
+0.11880320614369011
+21
+0.20023478630317332
+31
+0.7307557071160136
+12
+0.07586512499733417
+22
+0.2233328844240816
+32
+0.7307557071160136
+13
+0.07586512499733417
+23
+0.2233328844240816
+33
+0.7307557071160136
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.11880320614369011
+20
+0.20023478630317332
+30
+0.7307557071160136
+11
+0.044467883797984775
+21
+0.21278370795076884
+31
+0.9967105744140091
+12
+0.09524177069161455
+22
+0.193567791051381
+32
+0.9182260948156299
+13
+0.09524177069161455
+23
+0.193567791051381
+33
+0.9182260948156299
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.2826998537013644
+20
+0.07574919749967957
+30
+0.30841453414256254
+11
+-0.2531852032990528
+21
+0.1461765452795445
+31
+0.2531852032990535
+12
+-0.2825554318689639
+22
+0.07571049978631911
+32
+0.28255543186896687
+13
+-0.2825554318689639
+23
+0.07571049978631911
+33
+0.28255543186896687
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.2531852032990528
+20
+0.1461765452795445
+30
+0.2531852032990535
+11
+-0.2826998537013644
+21
+0.07574919749967957
+31
+0.30841453414256254
+12
+-0.2534617548141387
+22
+0.1463362123712234
+32
+0.30841453414256254
+13
+-0.2534617548141387
+23
+0.1463362123712234
+33
+0.30841453414256254
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.29267242474243715
+20
+-1.1102230246251565e-15
+30
+0.30841453414256254
+11
+-0.2825554318689639
+21
+0.07571049978631911
+31
+0.28255543186896687
+12
+-0.29258087504374125
+22
+-2.220446049250313e-15
+32
+0.2925808750437419
+13
+-0.29258087504374125
+23
+-2.220446049250313e-15
+33
+0.2925808750437419
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.2825554318689639
+20
+0.07571049978631911
+30
+0.28255543186896687
+11
+-0.29267242474243715
+21
+-1.1102230246251565e-15
+31
+0.30841453414256254
+12
+-0.2826998537013644
+22
+0.07574919749967957
+32
+0.30841453414256254
+13
+-0.2826998537013644
+23
+0.07574919749967957
+33
+0.30841453414256254
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.1668511448333203
+20
+0.06753329419776749
+30
+1.2060268924650375
+11
+0.14584425706155324
+21
+0.06447473207281956
+31
+1.2072937903785521
+12
+0.14680251974877673
+22
+0.06216128129700765
+32
+1.2075983619512358
+13
+0.14680251974877673
+23
+0.06216128129700765
+33
+1.2075983619512358
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.1407842662509724
+20
+0.13046430599999836
+30
+1.1778735767177981
+11
+0.11937978943923483
+21
+0.12455561770440277
+31
+1.1824074727105631
+12
+0.12280916074947745
+22
+0.12008637400000183
+32
+1.1842586940664752
+13
+0.12280916074947745
+23
+0.12008637400000183
+33
+1.1842586940664752
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.1407842662509724
+20
+0.13046430599999947
+30
+0.8478281150218822
+11
+0.1668511448333203
+21
+0.06753329419776749
+31
+1.2060268924650375
+12
+0.16685114483332258
+22
+0.06753329419776638
+32
+0.8075348555246178
+13
+0.16685114483332258
+23
+0.06753329419776638
+33
+0.8075348555246178
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.1668511448333203
+20
+0.06753329419776749
+30
+1.2060268924650375
+11
+0.1407842662509724
+21
+0.13046430599999947
+31
+0.8478281150218822
+12
+0.1407842662509724
+22
+0.13046430599999836
+32
+1.1778735767177981
+13
+0.1407842662509724
+23
+0.13046430599999836
+33
+1.1778735767177981
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.1668511448333203
+20
+0.06753329419776749
+30
+1.2060268924650375
+11
+0.12280916074947745
+21
+0.12008637400000183
+31
+1.1842586940664752
+12
+0.14584425706155324
+22
+0.06447473207281956
+32
+1.2072937903785521
+13
+0.14584425706155324
+23
+0.06447473207281956
+33
+1.2072937903785521
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.154986207684761
+20
+0.0
+30
+1.2157820498872123
+11
+0.14680251974877673
+21
+0.06216128129700765
+31
+1.0912264321828118
+12
+0.154986207684761
+22
+-2.220446049250313e-15
+32
+1.0912264321828118
+13
+0.154986207684761
+23
+-2.220446049250313e-15
+33
+1.0912264321828118
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.14680251974877673
+20
+0.06216128129700765
+30
+1.0912264321828118
+11
+0.154986207684761
+21
+0.0
+31
+1.2157820498872123
+12
+0.14680251974877673
+22
+0.06216128129700765
+32
+1.2075983619512358
+13
+0.14680251974877673
+23
+0.06216128129700765
+33
+1.2075983619512358
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.1407842662509724
+20
+0.13046430599999836
+30
+1.1778735767177981
+11
+0.08492812760476576
+21
+0.16945389754362716
+31
+1.147955810876094
+12
+0.11937978943923483
+22
+0.12455561770440277
+32
+1.1824074727105631
+13
+0.11937978943923483
+23
+0.12455561770440277
+33
+1.1824074727105631
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.10572974783891176
+20
+0.1761482438273269
+30
+1.142819058305737
+11
+0.08492812760476465
+21
+0.17011466792000618
+31
+1.1474487839334422
+12
+0.08492812760476576
+22
+0.16945389754362716
+32
+1.147955810876094
+13
+0.08492812760476576
+23
+0.16945389754362716
+33
+1.147955810876094
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476465
+20
+0.17011466792000618
+30
+1.1474487839334422
+11
+0.08492812760476576
+21
+0.16945389754362827
+31
+1.1363043595428541
+12
+0.08492812760476576
+22
+0.16945389754362716
+32
+1.147955810876094
+13
+0.08492812760476576
+23
+0.16945389754362716
+33
+1.147955810876094
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476576
+20
+0.16945389754362827
+30
+1.1363043595428541
+11
+0.08492812760476465
+21
+0.17011466792000618
+31
+1.1474487839334422
+12
+0.08492812760476576
+22
+0.17011466792000507
+32
+1.1359944433702325
+13
+0.08492812760476576
+23
+0.17011466792000507
+33
+1.1359944433702325
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.154986207684761
+20
+0.0
+30
+1.2157820498872123
+11
+0.16725381217609608
+21
+0.06447473207281734
+31
+1.2072937903785526
+12
+0.14680251974877673
+22
+0.06216128129700765
+32
+1.2075983619512358
+13
+0.14680251974877673
+23
+0.06216128129700765
+33
+1.2075983619512358
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.16725381217609608
+20
+0.06447473207281734
+30
+1.2072937903785526
+11
+0.154986207684761
+21
+0.0
+31
+1.2157820498872123
+12
+0.17574207168476186
+22
+0.0
+32
+1.2157820498872116
+13
+0.17574207168476186
+23
+0.0
+33
+1.2157820498872116
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476576
+20
+0.17011466792000507
+30
+1.1359944433702325
+11
+0.08492812760476465
+21
+0.16945389754362827
+31
+1.0912264321828118
+12
+0.08492812760476576
+22
+0.16945389754362827
+32
+1.1363043595428541
+13
+0.08492812760476576
+23
+0.16945389754362827
+33
+1.1363043595428541
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476465
+20
+0.16945389754362827
+30
+1.0912264321828118
+11
+0.08492812760476576
+21
+0.17011466792000507
+31
+1.1359944433702325
+12
+0.08492812760476576
+22
+0.17011466792000618
+32
+1.0912264321828118
+13
+0.08492812760476576
+23
+0.17011466792000618
+33
+1.0912264321828118
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.1668511448333203
+20
+0.06753329419776749
+30
+1.2060268924650375
+11
+0.1407842662509724
+21
+0.13046430599999836
+31
+1.1778735767177981
+12
+0.12280916074947745
+22
+0.12008637400000183
+32
+1.1842586940664752
+13
+0.12280916074947745
+23
+0.12008637400000183
+33
+1.1842586940664752
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.10572974783891176
+20
+0.1761482438273269
+30
+1.142819058305737
+11
+0.09931785063555398
+21
+0.1845043909507944
+31
+1.1319291153552398
+12
+0.09096170351208649
+22
+0.1761482438273269
+32
+1.1428190583057358
+13
+0.09096170351208649
+23
+0.1761482438273269
+33
+1.1428190583057358
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.1407842662509724
+20
+0.13046430599999947
+30
+0.8478281150218822
+11
+0.10572974783891176
+21
+0.1761482438273269
+31
+1.142819058305737
+12
+0.1407842662509724
+22
+0.13046430599999836
+32
+1.1778735767177981
+13
+0.1407842662509724
+23
+0.13046430599999836
+33
+1.1778735767177981
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.10572974783891176
+20
+0.1761482438273269
+30
+1.142819058305737
+11
+0.1407842662509724
+21
+0.13046430599999947
+31
+0.8478281150218822
+12
+0.09931785063555287
+22
+0.1845043909507933
+32
+0.9119254345200819
+13
+0.09931785063555287
+23
+0.1845043909507933
+33
+0.9119254345200819
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.10572974783891176
+20
+0.1761482438273269
+30
+1.142819058305737
+11
+0.09931785063555287
+21
+0.1845043909507933
+31
+0.9119254345200819
+12
+0.09931785063555171
+22
+0.1845043909507933
+32
+1.001863547806677
+13
+0.09931785063555171
+23
+0.1845043909507933
+33
+1.001863547806677
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.10572974783891176
+20
+0.1761482438273269
+30
+1.142819058305737
+11
+0.09931785063555171
+21
+0.1845043909507933
+31
+1.001863547806677
+12
+0.09931785063555398
+22
+0.1845043909507944
+32
+1.1319291153552398
+13
+0.09931785063555398
+23
+0.1845043909507944
+33
+1.1319291153552398
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.1378369198074263
+20
+0.08380615427022808
+30
+1.0912264321828118
+11
+0.14680251974877895
+21
+0.062161281297008764
+31
+1.0852016835471139
+12
+0.14680251974877673
+22
+0.06216128129700765
+32
+1.0912264321828118
+13
+0.14680251974877673
+23
+0.06216128129700765
+33
+1.0912264321828118
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.16725381217609608
+20
+0.06447473207281734
+30
+1.2072937903785526
+11
+0.1668511448333203
+21
+0.06753329419776749
+31
+1.2060268924650375
+12
+0.14680251974877673
+22
+0.06216128129700765
+32
+1.2075983619512358
+13
+0.14680251974877673
+23
+0.06216128129700765
+33
+1.2075983619512358
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476465
+20
+0.16945389754362827
+30
+1.0912264321828118
+11
+0.08492812760476576
+21
+0.17011466792000507
+31
+1.0799005744368184
+12
+0.08492812760476687
+22
+0.16945389754362716
+32
+1.0811770847804012
+13
+0.08492812760476687
+23
+0.16945389754362716
+33
+1.0811770847804012
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476576
+20
+0.17011466792000507
+30
+1.0799005744368184
+11
+0.08492812760476465
+21
+0.16945389754362827
+31
+1.0912264321828118
+12
+0.08492812760476576
+22
+0.17011466792000618
+32
+1.0912264321828118
+13
+0.08492812760476576
+23
+0.17011466792000618
+33
+1.0912264321828118
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.1407842662509724
+20
+0.13046430599999836
+30
+1.1778735767177981
+11
+0.10572974783891176
+21
+0.1761482438273269
+31
+1.142819058305737
+12
+0.08492812760476576
+22
+0.16945389754362716
+32
+1.147955810876094
+13
+0.08492812760476576
+23
+0.16945389754362716
+33
+1.147955810876094
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.12777973751198096
+20
+0.10808634016714758
+30
+1.0912264321828118
+11
+0.1378369198074263
+21
+0.08380615427022808
+31
+1.0912264321828118
+12
+0.13165973447285034
+22
+0.09871919888224923
+32
+1.0953774080416923
+13
+0.13165973447285034
+23
+0.09871919888224923
+33
+1.0953774080416923
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.10572974783891176
+20
+0.1761482438273269
+30
+1.142819058305737
+11
+0.09096170351208649
+21
+0.1761482438273269
+31
+1.1428190583057358
+12
+0.08492812760476465
+22
+0.17011466792000618
+32
+1.1474487839334422
+13
+0.08492812760476465
+23
+0.17011466792000618
+33
+1.1474487839334422
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.12280916074947745
+20
+0.12008637400000183
+30
+1.1842586940664752
+11
+0.11359374946129114
+21
+0.1320961318119328
+31
+1.0912264321828118
+12
+0.12280916074947745
+22
+0.1200863739999985
+32
+1.0912264321828118
+13
+0.12280916074947745
+23
+0.1200863739999985
+33
+1.0912264321828118
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.11359374946129114
+20
+0.1320961318119328
+30
+1.0912264321828118
+11
+0.12280916074947745
+21
+0.12008637400000183
+31
+1.1842586940664752
+12
+0.11937978943923483
+22
+0.12455561770440277
+32
+1.1824074727105631
+13
+0.11937978943923483
+23
+0.12455561770440277
+33
+1.1824074727105631
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.11359374946129114
+20
+0.1320961318119328
+30
+1.0912264321828118
+11
+0.11937978943923483
+21
+0.12455561770440277
+31
+1.1824074727105631
+12
+0.08492812760476576
+22
+0.16945389754362716
+32
+1.147955810876094
+13
+0.08492812760476576
+23
+0.16945389754362716
+33
+1.147955810876094
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.11359374946129114
+20
+0.1320961318119328
+30
+1.0912264321828118
+11
+0.08492812760476576
+21
+0.16945389754362716
+31
+1.147955810876094
+12
+0.10766421335770565
+22
+0.13982365371130173
+32
+1.0946480508162637
+13
+0.10766421335770565
+23
+0.13982365371130173
+33
+1.0946480508162637
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+0.10766421335770565
+20
+0.13982365371130173
+30
+1.0946480508162637
+11
+0.08492812760476576
+21
+0.16945389754362716
+31
+1.147955810876094
+12
+0.10188925895154644
+22
+0.1473497208204092
+32
+1.091226432182813
+13
+0.10188925895154644
+23
+0.1473497208204092
+33
+1.091226432182813
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+0.10188925895154644
+20
+0.1473497208204092
+30
+1.091226432182813
+11
+0.08492812760476576
+21
+0.16945389754362716
+31
+1.147955810876094
+12
+0.08492812760476465
+22
+0.16945389754362827
+32
+1.0912264321828118
+13
+0.08492812760476465
+23
+0.16945389754362827
+33
+1.0912264321828118
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476465
+20
+0.16945389754362827
+30
+1.0912264321828118
+11
+0.08492812760476576
+21
+0.16945389754362716
+31
+1.147955810876094
+12
+0.08492812760476576
+22
+0.16945389754362827
+32
+1.1363043595428541
+13
+0.08492812760476576
+23
+0.16945389754362827
+33
+1.1363043595428541
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.16685114483332258
+20
+0.06753329419776638
+30
+0.8075348555246178
+11
+0.17574207168476186
+21
+0.0
+31
+1.2157820498872116
+12
+0.17574207168476297
+22
+0.0
+32
+0.7937915750752708
+13
+0.17574207168476297
+23
+0.0
+33
+0.7937915750752708
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.17574207168476186
+20
+0.0
+30
+1.2157820498872116
+11
+0.16685114483332258
+21
+0.06753329419776638
+31
+0.8075348555246178
+12
+0.16725381217609608
+22
+0.06447473207281734
+32
+1.2072937903785526
+13
+0.16725381217609608
+23
+0.06447473207281734
+33
+1.2072937903785526
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+0.16725381217609608
+20
+0.06447473207281734
+30
+1.2072937903785526
+11
+0.16685114483332258
+21
+0.06753329419776638
+31
+0.8075348555246178
+12
+0.1668511448333203
+22
+0.06753329419776749
+32
+1.2060268924650375
+13
+0.1668511448333203
+23
+0.06753329419776749
+33
+1.2060268924650375
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.14819683336031747
+20
+0.051570417947724545
+30
+1.090997067383562
+11
+0.12709521825000325
+21
+0.09529669931084889
+31
+1.1119026978066777
+12
+0.1417562962576535
+22
+0.049329201434111514
+32
+1.1119026978066788
+13
+0.1417562962576535
+23
+0.049329201434111514
+33
+1.1119026978066788
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.12709521825000325
+20
+0.09529669931084889
+30
+1.1119026978066777
+11
+0.14819683336031747
+21
+0.051570417947724545
+31
+1.090997067383562
+12
+0.14680251974877895
+22
+0.062161281297008764
+32
+1.0852016835471139
+13
+0.14680251974877895
+23
+0.062161281297008764
+33
+1.0852016835471139
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.12709521825000325
+20
+0.09529669931084889
+30
+1.1119026978066777
+11
+0.14680251974877895
+21
+0.062161281297008764
+31
+1.0852016835471139
+12
+0.1378369198074263
+22
+0.08380615427022808
+32
+1.0912264321828118
+13
+0.1378369198074263
+23
+0.08380615427022808
+33
+1.0912264321828118
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.12709521825000325
+20
+0.09529669931084889
+30
+1.1119026978066777
+11
+0.1378369198074263
+21
+0.08380615427022808
+31
+1.0912264321828118
+12
+0.13165973447285034
+22
+0.09871919888224923
+32
+1.0953774080416923
+13
+0.13165973447285034
+23
+0.09871919888224923
+33
+1.0953774080416923
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08473014550000091
+20
+0.19059339862169328
+30
+0.9344745934705629
+11
+0.09931785063555171
+21
+0.1845043909507933
+31
+1.001863547806677
+12
+0.09931785063555287
+22
+0.1845043909507933
+32
+0.9119254345200819
+13
+0.09931785063555287
+23
+0.1845043909507933
+33
+0.9119254345200819
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.09931785063555171
+20
+0.1845043909507933
+30
+1.001863547806677
+11
+0.08473014550000091
+21
+0.19059339862169328
+31
+0.9344745934705629
+12
+0.08473014550000202
+22
+0.19059339862169217
+32
+1.001863547806677
+13
+0.08473014550000202
+23
+0.19059339862169217
+33
+1.001863547806677
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.09931785063555171
+20
+0.1845043909507933
+30
+1.001863547806677
+11
+0.08473014550000202
+21
+0.19059339862169217
+31
+1.001863547806677
+12
+0.09508647761767314
+22
+0.18027301793291245
+32
+1.0018635478066782
+13
+0.09508647761767314
+23
+0.18027301793291245
+33
+1.0018635478066782
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476465
+20
+0.16945389754362827
+30
+1.0912264321828118
+11
+0.08492812760476687
+21
+0.16945389754362716
+31
+1.0811770847804012
+12
+0.10188925895154644
+22
+0.1473497208204092
+32
+1.091226432182813
+13
+0.10188925895154644
+23
+0.1473497208204092
+33
+1.091226432182813
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.14584425706155324
+20
+0.06447473207281956
+30
+1.2072937903785521
+11
+0.14680251974877673
+21
+0.06216128129700765
+31
+1.0912264321828118
+12
+0.14680251974877673
+22
+0.06216128129700765
+32
+1.2075983619512358
+13
+0.14680251974877673
+23
+0.06216128129700765
+33
+1.2075983619512358
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.14680251974877673
+20
+0.06216128129700765
+30
+1.0912264321828118
+11
+0.14584425706155324
+21
+0.06447473207281956
+31
+1.2072937903785521
+12
+0.1378369198074263
+22
+0.08380615427022808
+32
+1.0912264321828118
+13
+0.1378369198074263
+23
+0.08380615427022808
+33
+1.0912264321828118
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+0.1378369198074263
+20
+0.08380615427022808
+30
+1.0912264321828118
+11
+0.14584425706155324
+21
+0.06447473207281956
+31
+1.2072937903785521
+12
+0.12280916074947745
+22
+0.12008637400000183
+32
+1.1842586940664752
+13
+0.12280916074947745
+23
+0.12008637400000183
+33
+1.1842586940664752
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.1378369198074263
+20
+0.08380615427022808
+30
+1.0912264321828118
+11
+0.12280916074947745
+21
+0.12008637400000183
+31
+1.1842586940664752
+12
+0.13165973447285034
+22
+0.09871919888224923
+32
+1.0953774080416923
+13
+0.13165973447285034
+23
+0.09871919888224923
+33
+1.0953774080416923
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+0.13165973447285034
+20
+0.09871919888224923
+30
+1.0953774080416923
+11
+0.12280916074947745
+21
+0.12008637400000183
+31
+1.1842586940664752
+12
+0.12777973751198096
+22
+0.10808634016714758
+32
+1.0912264321828118
+13
+0.12777973751198096
+23
+0.10808634016714758
+33
+1.0912264321828118
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+0.12777973751198096
+20
+0.10808634016714758
+30
+1.0912264321828118
+11
+0.12280916074947745
+21
+0.12008637400000183
+31
+1.1842586940664752
+12
+0.12280916074947745
+22
+0.1200863739999985
+32
+1.0912264321828118
+13
+0.12280916074947745
+23
+0.1200863739999985
+33
+1.0912264321828118
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.11359374946129114
+20
+0.1320961318119328
+30
+1.0912264321828118
+11
+0.12280916074947745
+21
+0.1200863739999985
+31
+1.0859087104541831
+12
+0.12280916074947745
+22
+0.1200863739999985
+32
+1.0912264321828118
+13
+0.12280916074947745
+23
+0.1200863739999985
+33
+1.0912264321828118
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.0818430358036853
+20
+0.18409908604890202
+30
+1.0588240032604657
+11
+0.09508647761767314
+21
+0.18027301793291245
+31
+1.0018635478066782
+12
+0.08473014550000202
+22
+0.19059339862169217
+32
+1.001863547806677
+13
+0.08473014550000202
+23
+0.19059339862169217
+33
+1.001863547806677
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.09508647761767314
+20
+0.18027301793291245
+30
+1.0018635478066782
+11
+0.0818430358036853
+21
+0.18409908604890202
+31
+1.0588240032604657
+12
+0.0903926304890455
+22
+0.1755791708042826
+32
+1.0588240032604657
+13
+0.0903926304890455
+23
+0.1755791708042826
+33
+1.0588240032604657
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.10188925895154644
+20
+0.1473497208204092
+30
+1.091226432182813
+11
+0.11359374946129114
+21
+0.1320961318119328
+31
+1.0912264321828118
+12
+0.10766421335770565
+22
+0.13982365371130173
+32
+1.0946480508162637
+13
+0.10766421335770565
+23
+0.13982365371130173
+33
+1.0946480508162637
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.154986207684761
+20
+-2.220446049250313e-15
+30
+1.0912264321828118
+11
+0.14819683336031747
+21
+0.051570417947724545
+31
+1.090997067383562
+12
+0.154986207684761
+22
+-1.1102230246251565e-15
+32
+1.0861010545237688
+13
+0.154986207684761
+23
+-1.1102230246251565e-15
+33
+1.0861010545237688
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.14819683336031747
+20
+0.051570417947724545
+30
+1.090997067383562
+11
+0.154986207684761
+21
+-2.220446049250313e-15
+31
+1.0912264321828118
+12
+0.14680251974877673
+22
+0.06216128129700765
+32
+1.0912264321828118
+13
+0.14680251974877673
+23
+0.06216128129700765
+33
+1.0912264321828118
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.14819683336031747
+20
+0.051570417947724545
+30
+1.090997067383562
+11
+0.14680251974877673
+21
+0.06216128129700765
+31
+1.0912264321828118
+12
+0.14680251974877895
+22
+0.062161281297008764
+32
+1.0852016835471139
+13
+0.14680251974877895
+23
+0.062161281297008764
+33
+1.0852016835471139
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.12280916074947745
+20
+0.1200863739999985
+30
+1.0859087104541831
+11
+0.12777973751198096
+21
+0.10808634016714758
+31
+1.0912264321828118
+12
+0.12280916074947745
+22
+0.1200863739999985
+32
+1.0912264321828118
+13
+0.12280916074947745
+23
+0.1200863739999985
+33
+1.0912264321828118
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.031013385719354247
+20
+0.040277124310847456
+30
+1.2144428615824712
+11
+0.021929775349712632
+21
+0.049329201434111514
+31
+1.2144428615824712
+12
+2.942091015256665e-15
+22
+1.1657341758564144e-15
+32
+1.221941847806679
+13
+2.942091015256665e-15
+23
+1.1657341758564144e-15
+33
+1.221941847806679
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.03798348510426813
+20
+0.028480227726893792
+30
+1.2144428615824718
+11
+0.031013385719354247
+21
+0.040277124310847456
+31
+1.2144428615824712
+12
+2.942091015256665e-15
+22
+1.1657341758564144e-15
+32
+1.221941847806679
+13
+2.942091015256665e-15
+23
+1.1657341758564144e-15
+33
+1.221941847806679
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.031013385719354247
+20
+0.040277124310847456
+30
+1.2144428615824712
+11
+0.04236507275000306
+21
+0.09529669931084667
+31
+1.192456946428371
+12
+0.021929775349712632
+22
+0.049329201434111514
+32
+1.2144428615824712
+13
+0.021929775349712632
+23
+0.049329201434111514
+33
+1.2144428615824712
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.04236507275000306
+20
+0.09529669931084667
+30
+1.192456946428371
+11
+0.031013385719354247
+21
+0.040277124310847456
+31
+1.2144428615824712
+12
+0.05991326045397671
+22
+0.07780942916100303
+32
+1.192456946428371
+13
+0.05991326045397671
+23
+0.07780942916100303
+33
+1.192456946428371
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.05991326045397671
+20
+0.1347698846147916
+30
+1.157482406128686
+11
+0.10377281115339276
+21
+0.1347698846147916
+31
+1.1119026978066777
+12
+0.07337845846935548
+22
+0.16505872500000207
+32
+1.1119026978066777
+13
+0.07337845846935548
+23
+0.16505872500000207
+33
+1.1119026978066777
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.10377281115339276
+20
+0.1347698846147916
+30
+1.1119026978066777
+11
+0.05991326045397671
+21
+0.1347698846147916
+31
+1.157482406128686
+12
+0.08473014550000313
+22
+0.11003915000000175
+32
+1.157482406128686
+13
+0.08473014550000313
+23
+0.11003915000000175
+33
+1.157482406128686
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.07337845846935548
+20
+0.16505872500000207
+30
+1.1119026978066777
+11
+0.0903926304890455
+21
+0.1755791708042826
+31
+1.0588240032604657
+12
+0.0818430358036853
+22
+0.18409908604890202
+32
+1.0588240032604657
+13
+0.0818430358036853
+23
+0.18409908604890202
+33
+1.0588240032604657
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.0903926304890455
+20
+0.1755791708042826
+30
+1.0588240032604657
+11
+0.07337845846935548
+21
+0.16505872500000207
+31
+1.1119026978066777
+12
+0.08492812760476576
+22
+0.17011466792000507
+32
+1.0799005744368184
+13
+0.08492812760476576
+23
+0.17011466792000507
+33
+1.0799005744368184
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476576
+20
+0.17011466792000507
+30
+1.0799005744368184
+11
+0.07337845846935548
+21
+0.16505872500000207
+31
+1.1119026978066777
+12
+0.08492812760476687
+22
+0.16945389754362716
+32
+1.0811770847804012
+13
+0.08492812760476687
+23
+0.16945389754362716
+33
+1.0811770847804012
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08492812760476687
+20
+0.16945389754362716
+30
+1.0811770847804012
+11
+0.07337845846935548
+21
+0.16505872500000207
+31
+1.1119026978066777
+12
+0.10188925895154644
+22
+0.1473497208204092
+32
+1.091226432182813
+13
+0.10188925895154644
+23
+0.1473497208204092
+33
+1.091226432182813
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+0.10188925895154644
+20
+0.1473497208204092
+30
+1.091226432182813
+11
+0.07337845846935548
+21
+0.16505872500000207
+31
+1.1119026978066777
+12
+0.10766421335770565
+22
+0.13982365371130173
+32
+1.0946480508162637
+13
+0.10766421335770565
+23
+0.13982365371130173
+33
+1.0946480508162637
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+0.10766421335770565
+20
+0.13982365371130173
+30
+1.0946480508162637
+11
+0.07337845846935548
+21
+0.16505872500000207
+31
+1.1119026978066777
+12
+0.10377281115339276
+22
+0.1347698846147916
+32
+1.1119026978066777
+13
+0.10377281115339276
+23
+0.1347698846147916
+33
+1.1119026978066777
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.13165973447285034
+20
+0.09871919888224923
+30
+1.0953774080416923
+11
+0.10377281115339276
+21
+0.1347698846147916
+31
+1.1119026978066777
+12
+0.12709521825000325
+22
+0.09529669931084889
+32
+1.1119026978066777
+13
+0.12709521825000325
+23
+0.09529669931084889
+33
+1.1119026978066777
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.10377281115339276
+20
+0.1347698846147916
+30
+1.1119026978066777
+11
+0.13165973447285034
+21
+0.09871919888224923
+31
+1.0953774080416923
+12
+0.12777973751198096
+22
+0.10808634016714758
+32
+1.0912264321828118
+13
+0.12777973751198096
+23
+0.10808634016714758
+33
+1.0912264321828118
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.10377281115339276
+20
+0.1347698846147916
+30
+1.1119026978066777
+11
+0.12777973751198096
+21
+0.10808634016714758
+31
+1.0912264321828118
+12
+0.12280916074947745
+22
+0.1200863739999985
+32
+1.0859087104541831
+13
+0.12280916074947745
+23
+0.1200863739999985
+33
+1.0859087104541831
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.10377281115339276
+20
+0.1347698846147916
+30
+1.1119026978066777
+11
+0.12280916074947745
+21
+0.1200863739999985
+31
+1.0859087104541831
+12
+0.11359374946129114
+22
+0.1320961318119328
+32
+1.0912264321828118
+13
+0.11359374946129114
+23
+0.1320961318119328
+33
+1.0912264321828118
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.10377281115339276
+20
+0.1347698846147916
+30
+1.1119026978066777
+11
+0.11359374946129114
+21
+0.1320961318119328
+31
+1.0912264321828118
+12
+0.10766421335770565
+22
+0.13982365371130173
+32
+1.0946480508162637
+13
+0.10766421335770565
+23
+0.13982365371130173
+33
+1.0946480508162637
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.29267242474244115
+30
+0.30841453414256254
+11
+0.07279039008472937
+21
+0.28136529499842167
+31
+0.010230022180818192
+12
+2.942091015256665e-15
+22
+0.29088918200000213
+32
+-1.1189627002750058e-15
+13
+2.942091015256665e-15
+23
+0.29088918200000213
+33
+-1.1189627002750058e-15
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.05991326045397671
+20
+0.07780942916100303
+30
+1.192456946428371
+11
+0.05991326045397671
+21
+0.1347698846147916
+31
+1.157482406128686
+12
+0.04236507275000306
+22
+0.09529669931084667
+32
+1.192456946428371
+13
+0.04236507275000306
+23
+0.09529669931084667
+33
+1.192456946428371
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.05991326045397671
+20
+0.1347698846147916
+30
+1.157482406128686
+11
+0.05991326045397671
+21
+0.07780942916100303
+31
+1.192456946428371
+12
+0.08473014550000313
+22
+0.11003915000000175
+32
+1.157482406128686
+13
+0.08473014550000313
+23
+0.11003915000000175
+33
+1.157482406128686
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.07337845846935437
+20
+0.05501957500000143
+30
+1.1924569464283716
+11
+0.08473014550000313
+21
+0.11003915000000175
+31
+1.157482406128686
+12
+0.05991326045397671
+22
+0.07780942916100303
+32
+1.192456946428371
+13
+0.05991326045397671
+23
+0.07780942916100303
+33
+1.192456946428371
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08473014550000313
+20
+0.11003915000000175
+30
+1.157482406128686
+11
+0.07337845846935437
+21
+0.05501957500000143
+31
+1.1924569464283716
+12
+0.10377281115339276
+22
+0.07780942916100636
+32
+1.1574824061286866
+13
+0.10377281115339276
+23
+0.07780942916100636
+33
+1.1574824061286866
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.12709521825000325
+20
+0.09529669931084889
+30
+1.1119026978066777
+11
+0.08473014550000313
+21
+0.11003915000000175
+31
+1.157482406128686
+12
+0.10377281115339276
+22
+0.07780942916100636
+32
+1.1574824061286866
+13
+0.10377281115339276
+23
+0.07780942916100636
+33
+1.1574824061286866
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08473014550000313
+20
+0.11003915000000175
+30
+1.157482406128686
+11
+0.12709521825000325
+21
+0.09529669931084889
+31
+1.1119026978066777
+12
+0.10377281115339276
+22
+0.1347698846147916
+32
+1.1119026978066777
+13
+0.10377281115339276
+23
+0.1347698846147916
+33
+1.1119026978066777
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.03798348510426813
+20
+0.028480227726893792
+30
+1.2144428615824718
+11
+0.05991326045397671
+21
+0.07780942916100303
+31
+1.192456946428371
+12
+0.031013385719354247
+22
+0.040277124310847456
+32
+1.2144428615824712
+13
+0.031013385719354247
+23
+0.040277124310847456
+33
+1.2144428615824712
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.05991326045397671
+20
+0.07780942916100303
+30
+1.192456946428371
+11
+0.03798348510426813
+21
+0.028480227726893792
+31
+1.2144428615824718
+12
+0.07337845846935437
+22
+0.05501957500000143
+32
+1.1924569464283716
+13
+0.07337845846935437
+23
+0.05501957500000143
+33
+1.1924569464283716
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.042365072750004173
+20
+0.01474245068915514
+30
+1.2144428615824718
+11
+0.03798348510426813
+21
+0.028480227726893792
+31
+1.2144428615824718
+12
+2.942091015256665e-15
+22
+1.1657341758564144e-15
+32
+1.221941847806679
+13
+2.942091015256665e-15
+23
+1.1657341758564144e-15
+33
+1.221941847806679
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.042365072750004173
+20
+0.01474245068915514
+30
+1.2144428615824718
+11
+0.07337845846935437
+21
+0.05501957500000143
+31
+1.1924569464283716
+12
+0.03798348510426813
+22
+0.028480227726893792
+32
+1.2144428615824718
+13
+0.03798348510426813
+23
+0.028480227726893792
+33
+1.2144428615824718
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.07337845846935437
+20
+0.05501957500000143
+30
+1.1924569464283716
+11
+0.042365072750004173
+21
+0.01474245068915514
+31
+1.2144428615824718
+12
+0.08184303580368191
+22
+0.028480227726896012
+32
+1.1924569464283705
+13
+0.08184303580368191
+23
+0.028480227726896012
+33
+1.1924569464283705
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08184303580368191
+20
+0.028480227726896012
+30
+1.1924569464283705
+11
+0.10377281115339276
+21
+0.07780942916100636
+31
+1.1574824061286866
+12
+0.07337845846935437
+22
+0.05501957500000143
+32
+1.1924569464283716
+13
+0.07337845846935437
+23
+0.05501957500000143
+33
+1.1924569464283716
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.10377281115339276
+20
+0.07780942916100636
+30
+1.1574824061286866
+11
+0.08184303580368191
+21
+0.028480227726896012
+31
+1.1924569464283705
+12
+0.11574353121935221
+22
+0.04027712431084857
+32
+1.1574824061286866
+13
+0.11574353121935221
+23
+0.04027712431084857
+33
+1.1574824061286866
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.1417562962576535
+20
+0.049329201434111514
+30
+1.1119026978066788
+11
+0.10377281115339276
+21
+0.07780942916100636
+31
+1.1574824061286866
+12
+0.11574353121935221
+22
+0.04027712431084857
+32
+1.1574824061286866
+13
+0.11574353121935221
+23
+0.04027712431084857
+33
+1.1574824061286866
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.10377281115339276
+20
+0.07780942916100636
+30
+1.1574824061286866
+11
+0.1417562962576535
+21
+0.049329201434111514
+31
+1.1119026978066788
+12
+0.12709521825000325
+22
+0.09529669931084889
+32
+1.1119026978066777
+13
+0.12709521825000325
+23
+0.09529669931084889
+33
+1.1119026978066777
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.043859550699416716
+20
+1.1657341758564144e-15
+30
+1.2144428615824712
+11
+0.042365072750004173
+21
+0.01474245068915514
+31
+1.2144428615824718
+12
+2.942091015256665e-15
+22
+1.1657341758564144e-15
+32
+1.221941847806679
+13
+2.942091015256665e-15
+23
+1.1657341758564144e-15
+33
+1.221941847806679
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.043859550699416716
+20
+1.1657341758564144e-15
+30
+1.2144428615824712
+11
+0.08184303580368191
+21
+0.028480227726896012
+31
+1.1924569464283705
+12
+0.042365072750004173
+22
+0.01474245068915514
+32
+1.2144428615824718
+13
+0.042365072750004173
+23
+0.01474245068915514
+33
+1.2144428615824718
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08184303580368191
+20
+0.028480227726896012
+30
+1.1924569464283705
+11
+0.043859550699416716
+21
+1.1657341758564144e-15
+31
+1.2144428615824712
+12
+0.08473014550000202
+22
+2.275957200481571e-15
+32
+1.192456946428371
+13
+0.08473014550000202
+23
+2.275957200481571e-15
+33
+1.192456946428371
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08473014550000202
+20
+2.275957200481571e-15
+30
+1.192456946428371
+11
+0.11574353121935221
+21
+0.04027712431084857
+31
+1.1574824061286866
+12
+0.08184303580368191
+22
+0.028480227726896012
+32
+1.1924569464283705
+13
+0.08184303580368191
+23
+0.028480227726896012
+33
+1.1924569464283705
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.11574353121935221
+20
+0.04027712431084857
+30
+1.1574824061286866
+11
+0.08473014550000202
+21
+2.275957200481571e-15
+31
+1.192456946428371
+12
+0.11982652090794826
+22
+2.275957200481571e-15
+32
+1.157482406128686
+13
+0.11982652090794826
+23
+2.275957200481571e-15
+33
+1.157482406128686
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.1417562962576535
+20
+0.049329201434111514
+30
+1.1119026978066788
+11
+0.11982652090794826
+21
+2.275957200481571e-15
+31
+1.157482406128686
+12
+0.14675691693870468
+22
+1.1657341758564144e-15
+32
+1.1119026978066777
+13
+0.14675691693870468
+23
+1.1657341758564144e-15
+33
+1.1119026978066777
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.11982652090794826
+20
+2.275957200481571e-15
+30
+1.157482406128686
+11
+0.1417562962576535
+21
+0.049329201434111514
+31
+1.1119026978066788
+12
+0.11574353121935221
+22
+0.04027712431084857
+32
+1.1574824061286866
+13
+0.11574353121935221
+23
+0.04027712431084857
+33
+1.1574824061286866
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.14819683336031747
+20
+0.051570417947724545
+30
+1.090997067383562
+11
+0.14675691693870468
+21
+1.1657341758564144e-15
+31
+1.1119026978066777
+12
+0.154986207684761
+22
+-1.1102230246251565e-15
+32
+1.0861010545237688
+13
+0.154986207684761
+23
+-1.1102230246251565e-15
+33
+1.0861010545237688
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.14675691693870468
+20
+1.1657341758564144e-15
+30
+1.1119026978066777
+11
+0.14819683336031747
+21
+0.051570417947724545
+31
+1.090997067383562
+12
+0.1417562962576535
+22
+0.049329201434111514
+32
+1.1119026978066788
+13
+0.1417562962576535
+23
+0.049329201434111514
+33
+1.1119026978066788
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.04113427580894241
+20
+0.21304527383546001
+30
+1.0018635478066782
+11
+0.043859550699415606
+21
+0.21257931377579353
+31
+1.001863547806677
+12
+0.043859550699414496
+22
+0.21257931377579464
+32
+0.9976509142143398
+13
+0.043859550699414496
+23
+0.21257931377579464
+33
+0.9976509142143398
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.042365072750004173
+20
+0.20533584931084842
+30
+1.0588240032604646
+11
+0.08473014550000202
+21
+0.19059339862169217
+31
+1.001863547806677
+12
+0.043859550699415606
+22
+0.21257931377579353
+32
+1.001863547806677
+13
+0.043859550699415606
+23
+0.21257931377579353
+33
+1.001863547806677
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08473014550000202
+20
+0.19059339862169217
+30
+1.001863547806677
+11
+0.042365072750004173
+21
+0.20533584931084842
+31
+1.0588240032604646
+12
+0.0818430358036853
+22
+0.18409908604890202
+32
+1.0588240032604657
+13
+0.0818430358036853
+23
+0.18409908604890202
+33
+1.0588240032604657
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.03798348510426813
+20
+0.18409908604890313
+30
+1.1119026978066788
+11
+0.0818430358036853
+21
+0.18409908604890202
+31
+1.0588240032604657
+12
+0.042365072750004173
+22
+0.20533584931084842
+32
+1.0588240032604646
+13
+0.042365072750004173
+23
+0.20533584931084842
+33
+1.0588240032604646
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.0818430358036853
+20
+0.18409908604890202
+30
+1.0588240032604657
+11
+0.03798348510426813
+21
+0.18409908604890313
+31
+1.1119026978066788
+12
+0.07337845846935548
+22
+0.16505872500000207
+32
+1.1119026978066777
+13
+0.07337845846935548
+23
+0.16505872500000207
+33
+1.1119026978066777
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.03798348510426813
+20
+0.18409908604890313
+30
+1.1119026978066788
+11
+0.05991326045397671
+21
+0.1347698846147916
+31
+1.157482406128686
+12
+0.07337845846935548
+22
+0.16505872500000207
+32
+1.1119026978066777
+13
+0.07337845846935548
+23
+0.16505872500000207
+33
+1.1119026978066777
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.05991326045397671
+20
+0.1347698846147916
+30
+1.157482406128686
+11
+0.03798348510426813
+21
+0.18409908604890313
+31
+1.1119026978066788
+12
+0.031013385719353137
+22
+0.1503162743108481
+32
+1.157482406128686
+13
+0.031013385719353137
+23
+0.1503162743108481
+33
+1.157482406128686
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.04236507275000306
+20
+0.09529669931084667
+30
+1.192456946428371
+11
+0.031013385719353137
+21
+0.1503162743108481
+31
+1.157482406128686
+12
+0.021929775349711467
+22
+0.10628965688789677
+32
+1.192456946428371
+13
+0.021929775349711467
+23
+0.10628965688789677
+33
+1.192456946428371
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.031013385719353137
+20
+0.1503162743108481
+30
+1.157482406128686
+11
+0.04236507275000306
+21
+0.09529669931084667
+31
+1.192456946428371
+12
+0.05991326045397671
+22
+0.1347698846147916
+32
+1.157482406128686
+13
+0.05991326045397671
+23
+0.1347698846147916
+33
+1.157482406128686
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.021929775349712632
+20
+0.049329201434111514
+30
+1.2144428615824712
+11
+0.021929775349711467
+21
+0.10628965688789677
+31
+1.192456946428371
+12
+0.011351687030651703
+22
+0.05501957500000032
+32
+1.2144428615824712
+13
+0.011351687030651703
+23
+0.05501957500000032
+33
+1.2144428615824712
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.021929775349711467
+20
+0.10628965688789677
+30
+1.192456946428371
+11
+0.021929775349712632
+21
+0.049329201434111514
+31
+1.2144428615824712
+12
+0.04236507275000306
+22
+0.09529669931084667
+32
+1.192456946428371
+13
+0.04236507275000306
+23
+0.09529669931084667
+33
+1.192456946428371
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.021929775349712632
+20
+0.049329201434111514
+30
+1.2144428615824712
+11
+0.011351687030651703
+21
+0.05501957500000032
+31
+1.2144428615824712
+12
+2.942091015256665e-15
+22
+1.1657341758564144e-15
+32
+1.221941847806679
+13
+2.942091015256665e-15
+23
+1.1657341758564144e-15
+33
+1.221941847806679
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.21257931377579575
+30
+1.0588240032604646
+11
+0.04113427580894241
+21
+0.21304527383546001
+31
+1.0018635478066782
+12
+1.7763568394002505e-15
+22
+0.22007830000000128
+32
+1.001863547806677
+13
+1.7763568394002505e-15
+23
+0.22007830000000128
+33
+1.001863547806677
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.04113427580894241
+20
+0.21304527383546001
+30
+1.0018635478066782
+11
+0.042365072750004173
+21
+0.20533584931084842
+31
+1.0588240032604646
+12
+0.043859550699415606
+22
+0.21257931377579353
+32
+1.001863547806677
+13
+0.043859550699415606
+23
+0.21257931377579353
+33
+1.001863547806677
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.042365072750004173
+20
+0.20533584931084842
+30
+1.0588240032604646
+11
+0.04113427580894241
+21
+0.21304527383546001
+31
+1.0018635478066782
+12
+2.942091015256665e-15
+22
+0.21257931377579575
+32
+1.0588240032604646
+13
+2.942091015256665e-15
+23
+0.21257931377579575
+33
+1.0588240032604646
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.19059339862169555
+30
+1.1119026978066777
+11
+0.042365072750004173
+21
+0.20533584931084842
+31
+1.0588240032604646
+12
+2.942091015256665e-15
+22
+0.21257931377579575
+32
+1.0588240032604646
+13
+2.942091015256665e-15
+23
+0.21257931377579575
+33
+1.0588240032604646
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.042365072750004173
+20
+0.20533584931084842
+30
+1.0588240032604646
+11
+2.942091015256665e-15
+21
+0.19059339862169555
+31
+1.1119026978066777
+12
+0.03798348510426813
+22
+0.18409908604890313
+32
+1.1119026978066788
+13
+0.03798348510426813
+23
+0.18409908604890313
+33
+1.1119026978066788
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+1.7763568394002505e-15
+20
+0.15561885832200822
+30
+1.157482406128686
+11
+0.03798348510426813
+21
+0.18409908604890313
+31
+1.1119026978066788
+12
+2.942091015256665e-15
+22
+0.19059339862169555
+32
+1.1119026978066777
+13
+2.942091015256665e-15
+23
+0.19059339862169555
+33
+1.1119026978066777
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.03798348510426813
+20
+0.18409908604890313
+30
+1.1119026978066788
+11
+1.7763568394002505e-15
+21
+0.15561885832200822
+31
+1.157482406128686
+12
+0.031013385719353137
+22
+0.1503162743108481
+32
+1.157482406128686
+13
+0.031013385719353137
+23
+0.1503162743108481
+33
+1.157482406128686
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.11003915000000064
+30
+1.1924569464283716
+11
+0.031013385719353137
+21
+0.1503162743108481
+31
+1.157482406128686
+12
+1.7763568394002505e-15
+22
+0.15561885832200822
+32
+1.157482406128686
+13
+1.7763568394002505e-15
+23
+0.15561885832200822
+33
+1.157482406128686
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.031013385719353137
+20
+0.1503162743108481
+30
+1.157482406128686
+11
+2.942091015256665e-15
+21
+0.11003915000000064
+31
+1.1924569464283716
+12
+0.021929775349711467
+22
+0.10628965688789677
+32
+1.192456946428371
+13
+0.021929775349711467
+23
+0.10628965688789677
+33
+1.192456946428371
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.011351687030651703
+20
+0.05501957500000032
+30
+1.2144428615824712
+11
+2.942091015256665e-15
+21
+0.11003915000000064
+31
+1.1924569464283716
+12
+1.7763568394002505e-15
+22
+0.05696045545378753
+32
+1.2144428615824712
+13
+1.7763568394002505e-15
+23
+0.05696045545378753
+33
+1.2144428615824712
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.11003915000000064
+30
+1.1924569464283716
+11
+0.011351687030651703
+21
+0.05501957500000032
+31
+1.2144428615824712
+12
+0.021929775349711467
+22
+0.10628965688789677
+32
+1.192456946428371
+13
+0.021929775349711467
+23
+0.10628965688789677
+33
+1.192456946428371
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.011351687030651703
+20
+0.05501957500000032
+30
+1.2144428615824712
+11
+1.7763568394002505e-15
+21
+0.05696045545378753
+31
+1.2144428615824712
+12
+2.942091015256665e-15
+22
+1.1657341758564144e-15
+32
+1.221941847806679
+13
+2.942091015256665e-15
+23
+1.1657341758564144e-15
+33
+1.221941847806679
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+1.1657341758564144e-15
+30
+1.221941847806679
+11
+1.7763568394002505e-15
+21
+0.05696045545378753
+31
+1.2144428615824712
+12
+-0.014742450689149977
+22
+0.05501957500000032
+32
+1.2144428615824718
+13
+-0.014742450689149977
+23
+0.05501957500000032
+33
+1.2144428615824718
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.11003914999999548
+20
+0.19059339862169328
+30
+1.0018635478066782
+11
+-0.055019574999997406
+21
+0.20533584931084842
+31
+1.0588240032604657
+12
+-0.056960455453783476
+22
+0.21257931377579353
+32
+1.001863547806677
+13
+-0.056960455453783476
+23
+0.21257931377579353
+33
+1.001863547806677
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.055019574999997406
+20
+0.20533584931084842
+30
+1.0588240032604657
+11
+-0.11003914999999548
+21
+0.19059339862169328
+31
+1.0018635478066782
+12
+-0.10628965688789382
+22
+0.18409908604890313
+32
+1.0588240032604646
+13
+-0.10628965688789382
+23
+0.18409908604890313
+33
+1.0588240032604646
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.09529669931084372
+20
+0.16505872500000096
+30
+1.1119026978066777
+11
+-0.055019574999997406
+21
+0.20533584931084842
+31
+1.0588240032604657
+12
+-0.10628965688789382
+22
+0.18409908604890313
+32
+1.0588240032604646
+13
+-0.10628965688789382
+23
+0.18409908604890313
+33
+1.0588240032604646
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.055019574999997406
+20
+0.20533584931084842
+30
+1.0588240032604657
+11
+-0.09529669931084372
+21
+0.16505872500000096
+31
+1.1119026978066777
+12
+-0.049329201434107434
+22
+0.18409908604890313
+32
+1.1119026978066777
+13
+-0.049329201434107434
+23
+0.18409908604890313
+33
+1.1119026978066777
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.0778094291610012
+20
+0.13476988461479278
+30
+1.157482406128686
+11
+-0.049329201434107434
+21
+0.18409908604890313
+31
+1.1119026978066777
+12
+-0.09529669931084372
+22
+0.16505872500000096
+32
+1.1119026978066777
+13
+-0.09529669931084372
+23
+0.16505872500000096
+33
+1.1119026978066777
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.049329201434107434
+20
+0.18409908604890313
+30
+1.1119026978066777
+11
+-0.0778094291610012
+21
+0.13476988461479278
+31
+1.157482406128686
+12
+-0.040277124310843404
+22
+0.1503162743108481
+32
+1.157482406128686
+13
+-0.040277124310843404
+23
+0.1503162743108481
+33
+1.157482406128686
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.055019574999996296
+20
+0.09529669931084778
+30
+1.192456946428371
+11
+-0.040277124310843404
+21
+0.1503162743108481
+31
+1.157482406128686
+12
+-0.0778094291610012
+22
+0.13476988461479278
+32
+1.157482406128686
+13
+-0.0778094291610012
+23
+0.13476988461479278
+33
+1.157482406128686
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.040277124310843404
+20
+0.1503162743108481
+30
+1.157482406128686
+11
+-0.055019574999996296
+21
+0.09529669931084778
+31
+1.192456946428371
+12
+-0.028480227726888574
+22
+0.10628965688789788
+32
+1.192456946428371
+13
+-0.028480227726888574
+23
+0.10628965688789788
+33
+1.192456946428371
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.02848022772688974
+20
+0.049329201434111514
+30
+1.2144428615824712
+11
+-0.028480227726888574
+21
+0.10628965688789788
+31
+1.192456946428371
+12
+-0.055019574999996296
+22
+0.09529669931084778
+32
+1.192456946428371
+13
+-0.055019574999996296
+23
+0.09529669931084778
+33
+1.192456946428371
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.028480227726888574
+20
+0.10628965688789788
+30
+1.192456946428371
+11
+-0.02848022772688974
+21
+0.049329201434111514
+31
+1.2144428615824712
+12
+-0.014742450689149977
+22
+0.05501957500000032
+32
+1.2144428615824718
+13
+-0.014742450689149977
+23
+0.05501957500000032
+33
+1.2144428615824718
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+1.1657341758564144e-15
+30
+1.221941847806679
+11
+-0.014742450689149977
+21
+0.05501957500000032
+31
+1.2144428615824718
+12
+-0.02848022772688974
+22
+0.049329201434111514
+32
+1.2144428615824712
+13
+-0.02848022772688974
+23
+0.049329201434111514
+33
+1.2144428615824712
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.20538343774009993
+20
+1.1657341758564144e-15
+30
+0.7479729991936949
+11
+0.16685114483332258
+21
+0.06753329419776638
+31
+0.8075348555246178
+12
+0.17574207168476297
+22
+0.0
+32
+0.7937915750752708
+13
+0.17574207168476297
+23
+0.0
+33
+0.7937915750752708
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.16685114483332258
+20
+0.06753329419776638
+30
+0.8075348555246178
+11
+0.20538343774009993
+21
+1.1657341758564144e-15
+31
+0.7479729991936949
+12
+0.19765914773897608
+22
+0.05953197480025596
+32
+0.7599129336382517
+13
+0.19765914773897608
+23
+0.05953197480025596
+33
+0.7599129336382517
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.16685114483332258
+20
+0.06753329419776638
+30
+0.8075348555246178
+11
+0.19765914773897608
+21
+0.05953197480025596
+31
+0.7599129336382517
+12
+0.1752009048041535
+22
+0.11429416310676693
+32
+0.7946280917100798
+13
+0.1752009048041535
+23
+0.11429416310676693
+33
+0.7946280917100798
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.16685114483332258
+20
+0.06753329419776638
+30
+0.8075348555246178
+11
+0.1752009048041535
+21
+0.11429416310676693
+31
+0.7946280917100798
+12
+0.1407842662509724
+22
+0.13046430599999947
+32
+0.8478281150218822
+13
+0.1407842662509724
+23
+0.13046430599999947
+33
+0.8478281150218822
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+0.1407842662509724
+20
+0.13046430599999947
+30
+0.8478281150218822
+11
+0.1752009048041535
+21
+0.11429416310676693
+31
+0.7946280917100798
+12
+0.14004304520099842
+22
+0.16005831690802014
+32
+0.8489738683201561
+13
+0.14004304520099842
+23
+0.16005831690802014
+33
+0.8489738683201561
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.1407842662509724
+20
+0.13046430599999947
+30
+0.8478281150218822
+11
+0.14004304520099842
+21
+0.16005831690802014
+31
+0.8489738683201561
+12
+0.09931785063555287
+22
+0.1845043909507933
+32
+0.9119254345200819
+13
+0.09931785063555287
+23
+0.1845043909507933
+33
+0.9119254345200819
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+0.09931785063555287
+20
+0.1845043909507933
+30
+0.9119254345200819
+11
+0.14004304520099842
+21
+0.16005831690802014
+31
+0.8489738683201561
+12
+0.09524177069161455
+22
+0.193567791051381
+32
+0.9182260948156299
+13
+0.09524177069161455
+23
+0.193567791051381
+33
+0.9182260948156299
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.09931785063555287
+20
+0.1845043909507933
+30
+0.9119254345200819
+11
+0.09524177069161455
+21
+0.193567791051381
+31
+0.9182260948156299
+12
+0.08473014550000091
+22
+0.19059339862169328
+32
+0.9344745934705629
+13
+0.08473014550000091
+23
+0.19059339862169328
+33
+0.9344745934705629
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08473014550000091
+20
+0.19059339862169328
+30
+0.9344745934705629
+11
+0.09524177069161455
+21
+0.193567791051381
+31
+0.9182260948156299
+12
+0.043859550699414496
+22
+0.21257931377579464
+32
+0.9976509142143398
+13
+0.043859550699414496
+23
+0.21257931377579464
+33
+0.9976509142143398
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+0.043859550699414496
+20
+0.21257931377579464
+30
+0.9976509142143398
+11
+0.09524177069161455
+21
+0.193567791051381
+31
+0.9182260948156299
+12
+0.044467883797984775
+22
+0.21278370795076884
+32
+0.9967105744140091
+13
+0.044467883797984775
+23
+0.21278370795076884
+33
+0.9967105744140091
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.043859550699414496
+20
+0.21257931377579464
+30
+0.9976509142143398
+11
+0.044467883797984775
+21
+0.21278370795076884
+31
+0.9967105744140091
+12
+0.04113427580894241
+22
+0.21304527383546001
+32
+1.0018635478066782
+13
+0.04113427580894241
+23
+0.21304527383546001
+33
+1.0018635478066782
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.1503162743108418
+20
+0.1503162743108492
+30
+1.0588240032604646
+11
+-0.11003914999999548
+21
+0.19059339862169328
+31
+1.0018635478066782
+12
+-0.15561885832200195
+22
+0.1556188583220094
+32
+1.001863547806677
+13
+-0.15561885832200195
+23
+0.1556188583220094
+33
+1.001863547806677
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.11003914999999548
+20
+0.19059339862169328
+30
+1.0018635478066782
+11
+-0.1503162743108418
+21
+0.1503162743108492
+31
+1.0588240032604646
+12
+-0.10628965688789382
+22
+0.18409908604890313
+32
+1.0588240032604646
+13
+-0.10628965688789382
+23
+0.18409908604890313
+33
+1.0588240032604646
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.13476988461478534
+20
+0.13476988461479278
+30
+1.1119026978066777
+11
+-0.10628965688789382
+21
+0.18409908604890313
+31
+1.0588240032604646
+12
+-0.1503162743108418
+22
+0.1503162743108492
+32
+1.0588240032604646
+13
+-0.1503162743108418
+23
+0.1503162743108492
+33
+1.0588240032604646
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.10628965688789382
+20
+0.18409908604890313
+30
+1.0588240032604646
+11
+-0.13476988461478534
+21
+0.13476988461479278
+31
+1.1119026978066777
+12
+-0.09529669931084372
+22
+0.16505872500000096
+32
+1.1119026978066777
+13
+-0.09529669931084372
+23
+0.16505872500000096
+33
+1.1119026978066777
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.11003914999999548
+20
+0.11003915000000175
+30
+1.157482406128686
+11
+-0.09529669931084372
+21
+0.16505872500000096
+31
+1.1119026978066777
+12
+-0.13476988461478534
+22
+0.13476988461479278
+32
+1.1119026978066777
+13
+-0.13476988461478534
+23
+0.13476988461479278
+33
+1.1119026978066777
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.09529669931084372
+20
+0.16505872500000096
+30
+1.1119026978066777
+11
+-0.11003914999999548
+21
+0.11003915000000175
+31
+1.157482406128686
+12
+-0.0778094291610012
+22
+0.13476988461479278
+32
+1.157482406128686
+13
+-0.0778094291610012
+23
+0.13476988461479278
+33
+1.157482406128686
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.07780942916099784
+20
+0.07780942916100525
+30
+1.192456946428371
+11
+-0.0778094291610012
+21
+0.13476988461479278
+31
+1.157482406128686
+12
+-0.11003914999999548
+22
+0.11003915000000175
+32
+1.157482406128686
+13
+-0.11003914999999548
+23
+0.11003915000000175
+33
+1.157482406128686
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.0778094291610012
+20
+0.13476988461479278
+30
+1.157482406128686
+11
+-0.07780942916099784
+21
+0.07780942916100525
+31
+1.192456946428371
+12
+-0.055019574999996296
+22
+0.09529669931084778
+32
+1.192456946428371
+13
+-0.055019574999996296
+23
+0.09529669931084778
+33
+1.192456946428371
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.040277124310841184
+20
+0.04027712431084857
+30
+1.2144428615824712
+11
+-0.055019574999996296
+21
+0.09529669931084778
+31
+1.192456946428371
+12
+-0.07780942916099784
+22
+0.07780942916100525
+32
+1.192456946428371
+13
+-0.07780942916099784
+23
+0.07780942916100525
+33
+1.192456946428371
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.055019574999996296
+20
+0.09529669931084778
+30
+1.192456946428371
+11
+-0.040277124310841184
+21
+0.04027712431084857
+31
+1.2144428615824712
+12
+-0.02848022772688974
+22
+0.049329201434111514
+32
+1.2144428615824712
+13
+-0.02848022772688974
+23
+0.049329201434111514
+33
+1.2144428615824712
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+1.1657341758564144e-15
+30
+1.221941847806679
+11
+-0.02848022772688974
+21
+0.049329201434111514
+31
+1.2144428615824712
+12
+-0.040277124310841184
+22
+0.04027712431084857
+32
+1.2144428615824712
+13
+-0.040277124310841184
+23
+0.04027712431084857
+33
+1.2144428615824712
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.1503162743108418
+20
+0.1503162743108492
+30
+1.0588240032604646
+11
+-0.190593398621687
+21
+0.11003915000000292
+31
+1.001863547806677
+12
+-0.1840990860488957
+22
+0.10628965688789899
+32
+1.0588240032604646
+13
+-0.1840990860488957
+23
+0.10628965688789899
+33
+1.0588240032604646
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.190593398621687
+20
+0.11003915000000292
+30
+1.001863547806677
+11
+-0.1503162743108418
+21
+0.1503162743108492
+31
+1.0588240032604646
+12
+-0.15561885832200195
+22
+0.1556188583220094
+32
+1.001863547806677
+13
+-0.15561885832200195
+23
+0.1556188583220094
+33
+1.001863547806677
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.13476988461478534
+20
+0.13476988461479278
+30
+1.1119026978066777
+11
+-0.1840990860488957
+21
+0.10628965688789899
+31
+1.0588240032604646
+12
+-0.1650587249999958
+22
+0.09529669931084889
+32
+1.1119026978066788
+13
+-0.1650587249999958
+23
+0.09529669931084889
+33
+1.1119026978066788
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.1840990860488957
+20
+0.10628965688789899
+30
+1.0588240032604646
+11
+-0.13476988461478534
+21
+0.13476988461479278
+31
+1.1119026978066777
+12
+-0.1503162743108418
+22
+0.1503162743108492
+32
+1.0588240032604646
+13
+-0.1503162743108418
+23
+0.1503162743108492
+33
+1.0588240032604646
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.11003914999999548
+20
+0.11003915000000175
+30
+1.157482406128686
+11
+-0.1650587249999958
+21
+0.09529669931084889
+31
+1.1119026978066788
+12
+-0.13476988461478534
+22
+0.07780942916100525
+32
+1.157482406128686
+13
+-0.13476988461478534
+23
+0.07780942916100525
+33
+1.157482406128686
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.1650587249999958
+20
+0.09529669931084889
+30
+1.1119026978066788
+11
+-0.11003914999999548
+21
+0.11003915000000175
+31
+1.157482406128686
+12
+-0.13476988461478534
+22
+0.13476988461479278
+32
+1.1119026978066777
+13
+-0.13476988461478534
+23
+0.13476988461479278
+33
+1.1119026978066777
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.09529669931084037
+20
+0.05501957500000143
+30
+1.1924569464283716
+11
+-0.11003914999999548
+21
+0.11003915000000175
+31
+1.157482406128686
+12
+-0.13476988461478534
+22
+0.07780942916100525
+32
+1.157482406128686
+13
+-0.13476988461478534
+23
+0.07780942916100525
+33
+1.157482406128686
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.11003914999999548
+20
+0.11003915000000175
+30
+1.157482406128686
+11
+-0.09529669931084037
+21
+0.05501957500000143
+31
+1.1924569464283716
+12
+-0.07780942916099784
+22
+0.07780942916100525
+32
+1.192456946428371
+13
+-0.07780942916099784
+23
+0.07780942916100525
+33
+1.192456946428371
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.04932920143410521
+20
+0.028480227726896012
+30
+1.2144428615824718
+11
+-0.07780942916099784
+21
+0.07780942916100525
+31
+1.192456946428371
+12
+-0.09529669931084037
+22
+0.05501957500000143
+32
+1.1924569464283716
+13
+-0.09529669931084037
+23
+0.05501957500000143
+33
+1.1924569464283716
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.07780942916099784
+20
+0.07780942916100525
+30
+1.192456946428371
+11
+-0.04932920143410521
+21
+0.028480227726896012
+31
+1.2144428615824718
+12
+-0.040277124310841184
+22
+0.04027712431084857
+32
+1.2144428615824712
+13
+-0.040277124310841184
+23
+0.04027712431084857
+33
+1.2144428615824712
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+1.1657341758564144e-15
+30
+1.221941847806679
+11
+-0.040277124310841184
+21
+0.04027712431084857
+31
+1.2144428615824712
+12
+-0.04932920143410521
+22
+0.028480227726896012
+32
+1.2144428615824718
+13
+-0.04932920143410521
+23
+0.028480227726896012
+33
+1.2144428615824718
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.1840990860488957
+20
+0.10628965688789899
+30
+1.0588240032604646
+11
+-0.21257931377578831
+21
+0.05696045545378753
+31
+1.0018635478066782
+12
+-0.20533584931084325
+22
+0.05501957500000143
+32
+1.0588240032604646
+13
+-0.20533584931084325
+23
+0.05501957500000143
+33
+1.0588240032604646
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.21257931377578831
+20
+0.05696045545378753
+30
+1.0018635478066782
+11
+-0.1840990860488957
+21
+0.10628965688789899
+31
+1.0588240032604646
+12
+-0.190593398621687
+22
+0.11003915000000292
+32
+1.001863547806677
+13
+-0.190593398621687
+23
+0.11003915000000292
+33
+1.001863547806677
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.1650587249999958
+20
+0.09529669931084889
+30
+1.1119026978066788
+11
+-0.20533584931084325
+21
+0.05501957500000143
+31
+1.0588240032604646
+12
+-0.18409908604889683
+22
+0.049329201434111514
+32
+1.1119026978066777
+13
+-0.18409908604889683
+23
+0.049329201434111514
+33
+1.1119026978066777
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.20533584931084325
+20
+0.05501957500000143
+30
+1.0588240032604646
+11
+-0.1650587249999958
+21
+0.09529669931084889
+31
+1.1119026978066788
+12
+-0.1840990860488957
+22
+0.10628965688789899
+32
+1.0588240032604646
+13
+-0.1840990860488957
+23
+0.10628965688789899
+33
+1.0588240032604646
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.13476988461478534
+20
+0.07780942916100525
+30
+1.157482406128686
+11
+-0.18409908604889683
+21
+0.049329201434111514
+31
+1.1119026978066777
+12
+-0.15031627431084293
+22
+0.040277124310846346
+32
+1.157482406128686
+13
+-0.15031627431084293
+23
+0.040277124310846346
+33
+1.157482406128686
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.18409908604889683
+20
+0.049329201434111514
+30
+1.1119026978066777
+11
+-0.13476988461478534
+21
+0.07780942916100525
+31
+1.157482406128686
+12
+-0.1650587249999958
+22
+0.09529669931084889
+32
+1.1119026978066788
+13
+-0.1650587249999958
+23
+0.09529669931084889
+33
+1.1119026978066788
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.10628965688789271
+20
+0.028480227726893792
+30
+1.192456946428371
+11
+-0.13476988461478534
+21
+0.07780942916100525
+31
+1.157482406128686
+12
+-0.15031627431084293
+22
+0.040277124310846346
+32
+1.157482406128686
+13
+-0.15031627431084293
+23
+0.040277124310846346
+33
+1.157482406128686
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.13476988461478534
+20
+0.07780942916100525
+30
+1.157482406128686
+11
+-0.10628965688789271
+21
+0.028480227726893792
+31
+1.192456946428371
+12
+-0.09529669931084037
+22
+0.05501957500000143
+32
+1.1924569464283716
+13
+-0.09529669931084037
+23
+0.05501957500000143
+33
+1.1924569464283716
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.055019574999996296
+20
+0.01474245068915292
+30
+1.2144428615824712
+11
+-0.09529669931084037
+21
+0.05501957500000143
+31
+1.1924569464283716
+12
+-0.10628965688789271
+22
+0.028480227726893792
+32
+1.192456946428371
+13
+-0.10628965688789271
+23
+0.028480227726893792
+33
+1.192456946428371
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.09529669931084037
+20
+0.05501957500000143
+30
+1.1924569464283716
+11
+-0.055019574999996296
+21
+0.01474245068915292
+31
+1.2144428615824712
+12
+-0.04932920143410521
+22
+0.028480227726896012
+32
+1.2144428615824718
+13
+-0.04932920143410521
+23
+0.028480227726896012
+33
+1.2144428615824718
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+1.1657341758564144e-15
+30
+1.221941847806679
+11
+-0.04932920143410521
+21
+0.028480227726896012
+31
+1.2144428615824718
+12
+-0.055019574999996296
+22
+0.01474245068915292
+32
+1.2144428615824712
+13
+-0.055019574999996296
+23
+0.01474245068915292
+33
+1.2144428615824712
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.20533584931084325
+20
+0.05501957500000143
+30
+1.0588240032604646
+11
+-0.22007829999999612
+21
+-2.220446049250313e-15
+31
+1.0018635478066782
+12
+-0.21257931377578945
+22
+-2.220446049250313e-15
+32
+1.0588240032604646
+13
+-0.21257931377578945
+23
+-2.220446049250313e-15
+33
+1.0588240032604646
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.22007829999999612
+20
+-2.220446049250313e-15
+30
+1.0018635478066782
+11
+-0.20533584931084325
+21
+0.05501957500000143
+31
+1.0588240032604646
+12
+-0.21257931377578831
+22
+0.05696045545378753
+32
+1.0018635478066782
+13
+-0.21257931377578831
+23
+0.05696045545378753
+33
+1.0018635478066782
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.18409908604889683
+20
+0.049329201434111514
+30
+1.1119026978066777
+11
+-0.21257931377578945
+21
+-2.220446049250313e-15
+31
+1.0588240032604646
+12
+-0.19059339862168925
+22
+-3.3306690738754696e-15
+32
+1.1119026978066788
+13
+-0.19059339862168925
+23
+-3.3306690738754696e-15
+33
+1.1119026978066788
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.21257931377578945
+20
+-2.220446049250313e-15
+30
+1.0588240032604646
+11
+-0.18409908604889683
+21
+0.049329201434111514
+31
+1.1119026978066777
+12
+-0.20533584931084325
+22
+0.05501957500000143
+32
+1.0588240032604646
+13
+-0.20533584931084325
+23
+0.05501957500000143
+33
+1.0588240032604646
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.1556188583220042
+20
+-2.220446049250313e-15
+30
+1.1574824061286855
+11
+-0.18409908604889683
+21
+0.049329201434111514
+31
+1.1119026978066777
+12
+-0.19059339862168925
+22
+-3.3306690738754696e-15
+32
+1.1119026978066788
+13
+-0.19059339862168925
+23
+-3.3306690738754696e-15
+33
+1.1119026978066788
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.18409908604889683
+20
+0.049329201434111514
+30
+1.1119026978066777
+11
+-0.1556188583220042
+21
+-2.220446049250313e-15
+31
+1.1574824061286855
+12
+-0.15031627431084293
+22
+0.040277124310846346
+32
+1.157482406128686
+13
+-0.15031627431084293
+23
+0.040277124310846346
+33
+1.157482406128686
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.11003914999999659
+20
+-2.220446049250313e-15
+30
+1.1924569464283716
+11
+-0.15031627431084293
+21
+0.040277124310846346
+31
+1.157482406128686
+12
+-0.1556188583220042
+22
+-2.220446049250313e-15
+32
+1.1574824061286855
+13
+-0.1556188583220042
+23
+-2.220446049250313e-15
+33
+1.1574824061286855
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.15031627431084293
+20
+0.040277124310846346
+30
+1.157482406128686
+11
+-0.11003914999999659
+21
+-2.220446049250313e-15
+31
+1.1924569464283716
+12
+-0.10628965688789271
+22
+0.028480227726893792
+32
+1.192456946428371
+13
+-0.10628965688789271
+23
+0.028480227726893792
+33
+1.192456946428371
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.05696045545378234
+20
+-3.3306690738754696e-15
+30
+1.2144428615824718
+11
+-0.10628965688789271
+21
+0.028480227726893792
+31
+1.192456946428371
+12
+-0.11003914999999659
+22
+-2.220446049250313e-15
+32
+1.1924569464283716
+13
+-0.11003914999999659
+23
+-2.220446049250313e-15
+33
+1.1924569464283716
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.10628965688789271
+20
+0.028480227726893792
+30
+1.192456946428371
+11
+-0.05696045545378234
+21
+-3.3306690738754696e-15
+31
+1.2144428615824718
+12
+-0.055019574999996296
+22
+0.01474245068915292
+32
+1.2144428615824712
+13
+-0.055019574999996296
+23
+0.01474245068915292
+33
+1.2144428615824712
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+1.1657341758564144e-15
+30
+1.221941847806679
+11
+-0.055019574999996296
+21
+0.01474245068915292
+31
+1.2144428615824712
+12
+-0.05696045545378234
+22
+-3.3306690738754696e-15
+32
+1.2144428615824718
+13
+-0.05696045545378234
+23
+-3.3306690738754696e-15
+33
+1.2144428615824718
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.043859550699414496
+20
+0.21257931377579464
+30
+0.9976509142143398
+11
+0.08473014550000202
+21
+0.19059339862169217
+31
+1.001863547806677
+12
+0.08473014550000091
+22
+0.19059339862169328
+32
+0.9344745934705629
+13
+0.08473014550000091
+23
+0.19059339862169328
+33
+0.9344745934705629
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.08473014550000202
+20
+0.19059339862169217
+30
+1.001863547806677
+11
+0.043859550699414496
+21
+0.21257931377579464
+31
+0.9976509142143398
+12
+0.043859550699415606
+22
+0.21257931377579353
+32
+1.001863547806677
+13
+0.043859550699415606
+23
+0.21257931377579353
+33
+1.001863547806677
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+1.7763568394002505e-15
+20
+0.22007830000000128
+30
+1.001863547806677
+11
+0.044467883797984775
+21
+0.21278370795076884
+31
+0.9967105744140091
+12
+0.07586512499733417
+22
+0.2233328844240816
+32
+0.7307557071160136
+13
+0.07586512499733417
+23
+0.2233328844240816
+33
+0.7307557071160136
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.044467883797984775
+20
+0.21278370795076884
+30
+0.9967105744140091
+11
+1.7763568394002505e-15
+21
+0.22007830000000128
+31
+1.001863547806677
+12
+0.04113427580894241
+22
+0.21304527383546001
+32
+1.0018635478066782
+13
+0.04113427580894241
+23
+0.21304527383546001
+33
+1.0018635478066782
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.29267242474244115
+30
+0.30841453414256254
+11
+0.0752960226550266
+21
+0.28014261634080284
+31
+0.010582165873702443
+12
+0.07279039008472937
+22
+0.28136529499842167
+32
+0.010230022180818192
+13
+0.07279039008472937
+23
+0.28136529499842167
+33
+0.010230022180818192
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.0752960226550266
+20
+0.28014261634080284
+30
+0.010582165873702443
+11
+2.942091015256665e-15
+21
+0.29267242474244115
+31
+0.30841453414256254
+12
+0.07586512499733417
+22
+0.2233328844240816
+32
+0.7307557071160136
+13
+0.07586512499733417
+23
+0.2233328844240816
+33
+0.7307557071160136
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+1.7763568394002505e-15
+20
+0.22007830000000128
+30
+1.001863547806677
+11
+0.07586512499733417
+21
+0.2233328844240816
+31
+0.7307557071160136
+12
+2.942091015256665e-15
+22
+0.29267242474244115
+32
+0.30841453414256254
+13
+2.942091015256665e-15
+23
+0.29267242474244115
+33
+0.30841453414256254
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.11003914999999548
+20
+0.19059339862169328
+30
+1.0018635478066782
+11
+-0.07574919749967438
+21
+0.2826998537013695
+31
+0.30841453414256254
+12
+-0.1463362123712171
+22
+0.253461754814145
+32
+0.30841453414256254
+13
+-0.1463362123712171
+23
+0.253461754814145
+33
+0.30841453414256254
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.07574919749967438
+20
+0.2826998537013695
+30
+0.30841453414256254
+11
+-0.11003914999999548
+21
+0.19059339862169328
+31
+1.0018635478066782
+12
+-0.056960455453783476
+22
+0.21257931377579353
+32
+1.001863547806677
+13
+-0.056960455453783476
+23
+0.21257931377579353
+33
+1.001863547806677
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.20568971316600607
+20
+0.20717595716186143
+30
+0.20568971316600676
+11
+-0.1463362123712171
+21
+0.253461754814145
+31
+0.30841453414256254
+12
+-0.14586628805175494
+22
+0.25264782201712543
+32
+0.14586628805175564
+13
+-0.14586628805175494
+23
+0.25264782201712543
+33
+0.14586628805175564
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.1463362123712171
+20
+0.253461754814145
+30
+0.30841453414256254
+11
+-0.20568971316600607
+21
+0.20717595716186143
+31
+0.20568971316600676
+12
+-0.20653412136710422
+22
+0.2065341213671094
+32
+0.20653412136710492
+13
+-0.20653412136710422
+23
+0.2065341213671094
+33
+0.20653412136710492
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.1463362123712171
+20
+0.253461754814145
+30
+0.30841453414256254
+11
+-0.20653412136710422
+21
+0.2065341213671094
+31
+0.20653412136710492
+12
+-0.20695065620168485
+22
+0.2069506562016934
+32
+0.30841453414256254
+13
+-0.20695065620168485
+23
+0.2069506562016934
+33
+0.30841453414256254
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.15561885832200195
+20
+0.1556188583220094
+30
+1.001863547806677
+11
+-0.1463362123712171
+21
+0.253461754814145
+31
+0.30841453414256254
+12
+-0.20695065620168485
+22
+0.2069506562016934
+32
+0.30841453414256254
+13
+-0.20695065620168485
+23
+0.2069506562016934
+33
+0.30841453414256254
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.1463362123712171
+20
+0.253461754814145
+30
+0.30841453414256254
+11
+-0.15561885832200195
+21
+0.1556188583220094
+31
+1.001863547806677
+12
+-0.11003914999999548
+22
+0.19059339862169328
+32
+1.0018635478066782
+13
+-0.11003914999999548
+23
+0.19059339862169328
+33
+1.0018635478066782
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.15561885832200195
+20
+0.1556188583220094
+30
+1.001863547806677
+11
+-0.2534617548141387
+21
+0.1463362123712234
+31
+0.30841453414256254
+12
+-0.190593398621687
+22
+0.11003915000000292
+32
+1.001863547806677
+13
+-0.190593398621687
+23
+0.11003915000000292
+33
+1.001863547806677
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.2534617548141387
+20
+0.1463362123712234
+30
+0.30841453414256254
+11
+-0.15561885832200195
+21
+0.1556188583220094
+31
+1.001863547806677
+12
+-0.20695065620168485
+22
+0.2069506562016934
+32
+0.30841453414256254
+13
+-0.20695065620168485
+23
+0.2069506562016934
+33
+0.30841453414256254
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.190593398621687
+20
+0.11003915000000292
+30
+1.001863547806677
+11
+-0.2826998537013644
+21
+0.07574919749967957
+31
+0.30841453414256254
+12
+-0.21257931377578831
+22
+0.05696045545378753
+32
+1.0018635478066782
+13
+-0.21257931377578831
+23
+0.05696045545378753
+33
+1.0018635478066782
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.2826998537013644
+20
+0.07574919749967957
+30
+0.30841453414256254
+11
+-0.190593398621687
+21
+0.11003915000000292
+31
+1.001863547806677
+12
+-0.2534617548141387
+22
+0.1463362123712234
+32
+0.30841453414256254
+13
+-0.2534617548141387
+23
+0.1463362123712234
+33
+0.30841453414256254
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.21257931377578831
+20
+0.05696045545378753
+30
+1.0018635478066782
+11
+-0.29267242474243715
+21
+-1.1102230246251565e-15
+31
+0.30841453414256254
+12
+-0.22007829999999612
+22
+-2.220446049250313e-15
+32
+1.0018635478066782
+13
+-0.22007829999999612
+23
+-2.220446049250313e-15
+33
+1.0018635478066782
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.29267242474243715
+20
+-1.1102230246251565e-15
+30
+0.30841453414256254
+11
+-0.21257931377578831
+21
+0.05696045545378753
+31
+1.0018635478066782
+12
+-0.2826998537013644
+22
+0.07574919749967957
+32
+0.30841453414256254
+13
+-0.2826998537013644
+23
+0.07574919749967957
+33
+0.30841453414256254
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.07586512499733417
+20
+0.2233328844240816
+30
+0.7307557071160136
+11
+0.14352399544263056
+21
+0.2511284049735225
+31
+0.02017098211932512
+12
+0.0752960226550266
+22
+0.28014261634080284
+32
+0.010582165873702443
+13
+0.0752960226550266
+23
+0.28014261634080284
+33
+0.010582165873702443
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.07540049589488734
+20
+0.2813984815956233
+30
+0.07540049589488913
+11
+2.942091015256665e-15
+21
+0.29267242474244115
+31
+0.30841453414256254
+12
+2.942091015256665e-15
+22
+0.29088918200000213
+32
+-1.1189627002750058e-15
+13
+2.942091015256665e-15
+23
+0.29088918200000213
+33
+-1.1189627002750058e-15
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.29267242474244115
+30
+0.30841453414256254
+11
+-0.07540049589488734
+21
+0.2813984815956233
+31
+0.07540049589488913
+12
+-0.07574919749967438
+22
+0.2826998537013695
+32
+0.30841453414256254
+13
+-0.07574919749967438
+23
+0.2826998537013695
+33
+0.30841453414256254
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.028480227726888574
+20
+0.10628965688789788
+30
+1.192456946428371
+11
+1.7763568394002505e-15
+21
+0.15561885832200822
+31
+1.157482406128686
+12
+-0.040277124310843404
+22
+0.1503162743108481
+32
+1.157482406128686
+13
+-0.040277124310843404
+23
+0.1503162743108481
+33
+1.157482406128686
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+1.7763568394002505e-15
+20
+0.15561885832200822
+30
+1.157482406128686
+11
+-0.028480227726888574
+21
+0.10628965688789788
+31
+1.192456946428371
+12
+2.942091015256665e-15
+22
+0.11003915000000064
+32
+1.1924569464283716
+13
+2.942091015256665e-15
+23
+0.11003915000000064
+33
+1.1924569464283716
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.2859865540554998
+20
+0.003291402957666445
+30
+0.04019278902061723
+11
+0.20781952412910853
+21
+1.1657341758564144e-15
+31
+0.7307557071160136
+12
+0.2863149648021954
+22
+1.1657341758564144e-15
+32
+0.04023894414108302
+13
+0.2863149648021954
+23
+1.1657341758564144e-15
+33
+0.04023894414108302
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.20781952412910853
+20
+1.1657341758564144e-15
+30
+0.7307557071160136
+11
+0.2859865540554998
+21
+0.003291402957666445
+31
+0.04019278902061723
+12
+0.20175320916481837
+22
+0.059841866024748225
+32
+0.7307557071160136
+13
+0.20175320916481837
+23
+0.059841866024748225
+33
+0.7307557071160136
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.056960455453783476
+20
+0.21257931377579353
+30
+1.001863547806677
+11
+2.942091015256665e-15
+21
+0.29267242474244115
+31
+0.30841453414256254
+12
+-0.07574919749967438
+22
+0.2826998537013695
+32
+0.30841453414256254
+13
+-0.07574919749967438
+23
+0.2826998537013695
+33
+0.30841453414256254
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.29267242474244115
+30
+0.30841453414256254
+11
+-0.056960455453783476
+21
+0.21257931377579353
+31
+1.001863547806677
+12
+1.7763568394002505e-15
+22
+0.22007830000000128
+32
+1.001863547806677
+13
+1.7763568394002505e-15
+23
+0.22007830000000128
+33
+1.001863547806677
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.07586512499733417
+20
+0.2233328844240816
+30
+0.7307557071160136
+11
+0.14470316953883317
+21
+0.2504791096276532
+31
+0.020336704231065143
+12
+0.14352399544263056
+22
+0.2511284049735225
+32
+0.02017098211932512
+13
+0.14352399544263056
+23
+0.2511284049735225
+33
+0.02017098211932512
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.14470316953883317
+20
+0.2504791096276532
+30
+0.020336704231065143
+11
+0.07586512499733417
+21
+0.2233328844240816
+31
+0.7307557071160136
+12
+0.11880320614369011
+22
+0.20023478630317332
+32
+0.7307557071160136
+13
+0.11880320614369011
+23
+0.20023478630317332
+33
+0.7307557071160136
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.24866776335898266
+20
+0.144017558640957
+30
+0.03494797502604473
+11
+0.15567497232576927
+21
+0.1634910183993356
+31
+0.7307557071160147
+12
+0.18396767361172195
+22
+0.11560560777326617
+32
+0.7307557071160136
+13
+0.18396767361172195
+23
+0.11560560777326617
+33
+0.7307557071160136
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.15567497232576927
+20
+0.1634910183993356
+30
+0.7307557071160147
+11
+0.24866776335898266
+21
+0.144017558640957
+31
+0.03494797502604473
+12
+0.24733927091273722
+22
+0.14630304025430108
+32
+0.03476126758875187
+13
+0.24733927091273722
+23
+0.14630304025430108
+33
+0.03476126758875187
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.27676048551116517
+20
+0.07446552246557753
+30
+0.03889614964637553
+11
+0.18396767361172195
+21
+0.11560560777326617
+31
+0.7307557071160136
+12
+0.20175320916481837
+22
+0.059841866024748225
+32
+0.7307557071160136
+13
+0.20175320916481837
+23
+0.059841866024748225
+33
+0.7307557071160136
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.18396767361172195
+20
+0.11560560777326617
+30
+0.7307557071160136
+11
+0.27676048551116517
+21
+0.07446552246557753
+31
+0.03889614964637553
+12
+0.27583114835190015
+22
+0.0774264694728452
+32
+0.03876553982628998
+13
+0.27583114835190015
+23
+0.0774264694728452
+33
+0.03876553982628998
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.24866776335898266
+20
+0.144017558640957
+30
+0.03494797502604473
+11
+0.18396767361172195
+21
+0.11560560777326617
+31
+0.7307557071160136
+12
+0.27583114835190015
+22
+0.0774264694728452
+32
+0.03876553982628998
+13
+0.27583114835190015
+23
+0.0774264694728452
+33
+0.03876553982628998
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.11880320614369011
+20
+0.20023478630317332
+30
+0.7307557071160136
+11
+0.20373004107196863
+21
+0.2040362885325907
+31
+0.028632390026202197
+12
+0.20230908016629684
+22
+0.2054774695577018
+32
+0.02843268699444177
+13
+0.20230908016629684
+23
+0.2054774695577018
+33
+0.02843268699444177
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.20373004107196863
+20
+0.2040362885325907
+30
+0.028632390026202197
+11
+0.11880320614369011
+21
+0.20023478630317332
+31
+0.7307557071160136
+12
+0.15567497232576927
+22
+0.1634910183993356
+32
+0.7307557071160147
+13
+0.15567497232576927
+23
+0.1634910183993356
+33
+0.7307557071160147
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.040277124310843404
+20
+0.1503162743108481
+30
+1.157482406128686
+11
+2.942091015256665e-15
+21
+0.19059339862169555
+31
+1.1119026978066777
+12
+-0.049329201434107434
+22
+0.18409908604890313
+32
+1.1119026978066777
+13
+-0.049329201434107434
+23
+0.18409908604890313
+33
+1.1119026978066777
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.19059339862169555
+30
+1.1119026978066777
+11
+-0.040277124310843404
+21
+0.1503162743108481
+31
+1.157482406128686
+12
+1.7763568394002505e-15
+22
+0.15561885832200822
+32
+1.157482406128686
+13
+1.7763568394002505e-15
+23
+0.15561885832200822
+33
+1.157482406128686
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.11880320614369011
+20
+0.20023478630317332
+30
+0.7307557071160136
+11
+0.20230908016629684
+21
+0.2054774695577018
+31
+0.02843268699444177
+12
+0.14470316953883317
+22
+0.2504791096276532
+32
+0.020336704231065143
+13
+0.14470316953883317
+23
+0.2504791096276532
+33
+0.020336704231065143
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+0.21604855191382222
+20
+0.18772809764161968
+30
+0.030363643822208155
+11
+0.15567497232576927
+21
+0.1634910183993356
+31
+0.7307557071160147
+12
+0.24733927091273722
+22
+0.14630304025430108
+32
+0.03476126758875187
+13
+0.24733927091273722
+23
+0.14630304025430108
+33
+0.03476126758875187
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.15567497232576927
+20
+0.1634910183993356
+30
+0.7307557071160147
+11
+0.21604855191382222
+21
+0.18772809764161968
+31
+0.030363643822208155
+12
+0.20373004107196863
+22
+0.2040362885325907
+32
+0.028632390026202197
+13
+0.20373004107196863
+23
+0.2040362885325907
+33
+0.028632390026202197
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.055019574999997406
+20
+0.20533584931084842
+30
+1.0588240032604657
+11
+2.942091015256665e-15
+21
+0.19059339862169555
+31
+1.1119026978066777
+12
+2.942091015256665e-15
+22
+0.21257931377579575
+32
+1.0588240032604646
+13
+2.942091015256665e-15
+23
+0.21257931377579575
+33
+1.0588240032604646
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.19059339862169555
+30
+1.1119026978066777
+11
+-0.055019574999997406
+21
+0.20533584931084842
+31
+1.0588240032604657
+12
+-0.049329201434107434
+22
+0.18409908604890313
+32
+1.1119026978066777
+13
+-0.049329201434107434
+23
+0.18409908604890313
+33
+1.1119026978066777
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.27676048551116517
+20
+0.07446552246557753
+30
+0.03889614964637553
+11
+0.20175320916481837
+21
+0.059841866024748225
+31
+0.7307557071160136
+12
+0.2859865540554998
+22
+0.003291402957666445
+32
+0.04019278902061723
+13
+0.2859865540554998
+23
+0.003291402957666445
+33
+0.04019278902061723
+70
+0
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.014742450689149977
+20
+0.05501957500000032
+30
+1.2144428615824718
+11
+2.942091015256665e-15
+21
+0.11003915000000064
+31
+1.1924569464283716
+12
+-0.028480227726888574
+22
+0.10628965688789788
+32
+1.192456946428371
+13
+-0.028480227726888574
+23
+0.10628965688789788
+33
+1.192456946428371
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.11003915000000064
+30
+1.1924569464283716
+11
+-0.014742450689149977
+21
+0.05501957500000032
+31
+1.2144428615824718
+12
+1.7763568394002505e-15
+22
+0.05696045545378753
+32
+1.2144428615824712
+13
+1.7763568394002505e-15
+23
+0.05696045545378753
+33
+1.2144428615824712
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.055019574999997406
+20
+0.20533584931084842
+30
+1.0588240032604657
+11
+1.7763568394002505e-15
+21
+0.22007830000000128
+31
+1.001863547806677
+12
+-0.056960455453783476
+22
+0.21257931377579353
+32
+1.001863547806677
+13
+-0.056960455453783476
+23
+0.21257931377579353
+33
+1.001863547806677
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+1.7763568394002505e-15
+20
+0.22007830000000128
+30
+1.001863547806677
+11
+-0.055019574999997406
+21
+0.20533584931084842
+31
+1.0588240032604657
+12
+2.942091015256665e-15
+22
+0.21257931377579575
+32
+1.0588240032604646
+13
+2.942091015256665e-15
+23
+0.21257931377579575
+33
+1.0588240032604646
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.2825554318689639
+20
+0.07571049978631911
+30
+0.28255543186896687
+11
+-0.15510247388785312
+21
+-1.1102230246251565e-15
+31
+0.1551024738878516
+12
+-0.29258087504374125
+22
+-2.220446049250313e-15
+32
+0.2925808750437419
+13
+-0.29258087504374125
+23
+-2.220446049250313e-15
+33
+0.2925808750437419
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.15510247388785312
+20
+-1.1102230246251565e-15
+30
+0.1551024738878516
+11
+-0.2825554318689639
+21
+0.07571049978631911
+31
+0.28255543186896687
+12
+-0.15510247388785312
+22
+0.15899592086427927
+32
+0.1551024738878538
+13
+-0.15510247388785312
+23
+0.15899592086427927
+33
+0.1551024738878538
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.15510247388785312
+20
+0.15899592086427927
+30
+0.1551024738878538
+11
+-0.2825554318689639
+21
+0.07571049978631911
+31
+0.28255543186896687
+12
+-0.2531852032990528
+22
+0.1461765452795445
+32
+0.2531852032990535
+13
+-0.2531852032990528
+23
+0.1461765452795445
+33
+0.2531852032990535
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.15510247388785312
+20
+0.15899592086427927
+30
+0.1551024738878538
+11
+-0.2531852032990528
+21
+0.1461765452795445
+31
+0.2531852032990535
+12
+-0.20653412136710422
+22
+0.2065341213671094
+32
+0.20653412136710492
+13
+-0.20653412136710422
+23
+0.2065341213671094
+33
+0.20653412136710492
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+-0.15510247388785312
+20
+0.15899592086427927
+30
+0.1551024738878538
+11
+-0.20653412136710422
+21
+0.2065341213671094
+31
+0.20653412136710492
+12
+2.942091015256665e-15
+22
+0.15899592086427927
+32
+-1.1189627002750058e-15
+13
+2.942091015256665e-15
+23
+0.15899592086427927
+33
+-1.1189627002750058e-15
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.15899592086427927
+30
+-1.1189627002750058e-15
+11
+-0.20653412136710422
+21
+0.2065341213671094
+31
+0.20653412136710492
+12
+2.942091015256665e-15
+22
+0.29088918200000213
+32
+-1.1189627002750058e-15
+13
+2.942091015256665e-15
+23
+0.29088918200000213
+33
+-1.1189627002750058e-15
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.29088918200000213
+30
+-1.1189627002750058e-15
+11
+-0.20653412136710422
+21
+0.2065341213671094
+31
+0.20653412136710492
+12
+-0.20568971316600607
+22
+0.20717595716186143
+32
+0.20568971316600676
+13
+-0.20568971316600607
+23
+0.20717595716186143
+33
+0.20568971316600676
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.29088918200000213
+30
+-1.1189627002750058e-15
+11
+-0.20568971316600607
+21
+0.20717595716186143
+31
+0.20568971316600676
+12
+-0.14586628805175494
+22
+0.25264782201712543
+32
+0.14586628805175564
+13
+-0.14586628805175494
+23
+0.25264782201712543
+33
+0.14586628805175564
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.29088918200000213
+30
+-1.1189627002750058e-15
+11
+-0.14586628805175494
+21
+0.25264782201712543
+31
+0.14586628805175564
+12
+-0.07540049589488734
+22
+0.2813984815956233
+32
+0.07540049589488913
+13
+-0.07540049589488734
+23
+0.2813984815956233
+33
+0.07540049589488913
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.07279039008472937
+20
+0.28136529499842167
+30
+0.010230022180818192
+11
+2.942091015256665e-15
+21
+0.15899592086427927
+31
+-1.1189627002750058e-15
+12
+2.942091015256665e-15
+22
+0.29088918200000213
+32
+-1.1189627002750058e-15
+13
+2.942091015256665e-15
+23
+0.29088918200000213
+33
+-1.1189627002750058e-15
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+2.942091015256665e-15
+20
+0.15899592086427927
+30
+-1.1189627002750058e-15
+11
+0.07279039008472937
+21
+0.28136529499842167
+31
+0.010230022180818192
+12
+0.2165682094492326
+22
+0.15899592086427927
+32
+0.030436676925993323
+13
+0.2165682094492326
+23
+0.15899592086427927
+33
+0.030436676925993323
+70
+3
+  0
+3DFACE
+ 8
+finger distal
+10
+0.2165682094492326
+20
+0.15899592086427927
+30
+0.030436676925993323
+11
+0.07279039008472937
+21
+0.28136529499842167
+31
+0.010230022180818192
+12
+0.0752960226550266
+22
+0.28014261634080284
+32
+0.010582165873702443
+13
+0.0752960226550266
+23
+0.28014261634080284
+33
+0.010582165873702443
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.2165682094492326
+20
+0.15899592086427927
+30
+0.030436676925993323
+11
+0.0752960226550266
+21
+0.28014261634080284
+31
+0.010582165873702443
+12
+0.14352399544263056
+22
+0.2511284049735225
+32
+0.02017098211932512
+13
+0.14352399544263056
+23
+0.2511284049735225
+33
+0.02017098211932512
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.2165682094492326
+20
+0.15899592086427927
+30
+0.030436676925993323
+11
+0.14352399544263056
+21
+0.2511284049735225
+31
+0.02017098211932512
+12
+0.14470316953883317
+22
+0.2504791096276532
+32
+0.020336704231065143
+13
+0.14470316953883317
+23
+0.2504791096276532
+33
+0.020336704231065143
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.2165682094492326
+20
+0.15899592086427927
+30
+0.030436676925993323
+11
+0.14470316953883317
+21
+0.2504791096276532
+31
+0.020336704231065143
+12
+0.20230908016629684
+22
+0.2054774695577018
+32
+0.02843268699444177
+13
+0.20230908016629684
+23
+0.2054774695577018
+33
+0.02843268699444177
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.2165682094492326
+20
+0.15899592086427927
+30
+0.030436676925993323
+11
+0.20230908016629684
+21
+0.2054774695577018
+31
+0.02843268699444177
+12
+0.20373004107196863
+22
+0.2040362885325907
+32
+0.028632390026202197
+13
+0.20373004107196863
+23
+0.2040362885325907
+33
+0.028632390026202197
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.2165682094492326
+20
+0.15899592086427927
+30
+0.030436676925993323
+11
+0.20373004107196863
+21
+0.2040362885325907
+31
+0.028632390026202197
+12
+0.21604855191382222
+22
+0.18772809764161968
+32
+0.030363643822208155
+13
+0.21604855191382222
+23
+0.18772809764161968
+33
+0.030363643822208155
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.2165682094492326
+20
+0.15899592086427927
+30
+0.030436676925993323
+11
+0.21604855191382222
+21
+0.18772809764161968
+31
+0.030363643822208155
+12
+0.24733927091273722
+22
+0.14630304025430108
+32
+0.03476126758875187
+13
+0.24733927091273722
+23
+0.14630304025430108
+33
+0.03476126758875187
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.2165682094492326
+20
+0.15899592086427927
+30
+0.030436676925993323
+11
+0.2863149648021954
+21
+1.1657341758564144e-15
+31
+0.04023894414108302
+12
+0.21656820944923139
+22
+-1.5654144647214707e-14
+32
+0.0304366769259978
+13
+0.21656820944923139
+23
+-1.5654144647214707e-14
+33
+0.0304366769259978
+70
+1
+  0
+3DFACE
+ 8
+finger distal
+10
+0.2863149648021954
+20
+1.1657341758564144e-15
+30
+0.04023894414108302
+11
+0.2165682094492326
+21
+0.15899592086427927
+31
+0.030436676925993323
+12
+0.24733927091273722
+22
+0.14630304025430108
+32
+0.03476126758875187
+13
+0.24733927091273722
+23
+0.14630304025430108
+33
+0.03476126758875187
+70
+15
+  0
+3DFACE
+ 8
+finger distal
+10
+0.2863149648021954
+20
+1.1657341758564144e-15
+30
+0.04023894414108302
+11
+0.24733927091273722
+21
+0.14630304025430108
+31
+0.03476126758875187
+12
+0.24866776335898266
+22
+0.144017558640957
+32
+0.03494797502604473
+13
+0.24866776335898266
+23
+0.144017558640957
+33
+0.03494797502604473
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.2863149648021954
+20
+1.1657341758564144e-15
+30
+0.04023894414108302
+11
+0.24866776335898266
+21
+0.144017558640957
+31
+0.03494797502604473
+12
+0.27583114835190015
+22
+0.0774264694728452
+32
+0.03876553982628998
+13
+0.27583114835190015
+23
+0.0774264694728452
+33
+0.03876553982628998
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.2863149648021954
+20
+1.1657341758564144e-15
+30
+0.04023894414108302
+11
+0.27583114835190015
+21
+0.0774264694728452
+31
+0.03876553982628998
+12
+0.27676048551116517
+22
+0.07446552246557753
+32
+0.03889614964637553
+13
+0.27676048551116517
+23
+0.07446552246557753
+33
+0.03889614964637553
+70
+13
+  0
+3DFACE
+ 8
+finger distal
+10
+0.2863149648021954
+20
+1.1657341758564144e-15
+30
+0.04023894414108302
+11
+0.27676048551116517
+21
+0.07446552246557753
+31
+0.03889614964637553
+12
+0.2859865540554998
+22
+0.003291402957666445
+32
+0.04019278902061723
+13
+0.2859865540554998
+23
+0.003291402957666445
+33
+0.04019278902061723
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.34414271161815124
+20
+1.3322676295501878e-14
+30
+1.4038444237044558
+11
+-0.3085499141622408
+21
+0.2146021186099738
+31
+1.3179158093635974
+12
+-0.308549914162242
+22
+6.6058269965196814e-15
+32
+1.3179158093635963
+13
+-0.308549914162242
+23
+6.6058269965196814e-15
+33
+1.3179158093635963
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3085499141622408
+20
+0.2146021186099738
+30
+1.3179158093635974
+11
+-0.34414271161815124
+21
+1.3322676295501878e-14
+31
+1.4038444237044558
+12
+-0.3441427116181524
+22
+0.21460211860998057
+32
+1.4038444237044547
+13
+-0.3441427116181524
+23
+0.21460211860998057
+33
+1.4038444237044547
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.09221276165913117
+20
+6.6058269965196814e-15
+30
+1.8401998969817372
+11
+-8.1601392309949e-15
+21
+0.21460211860997835
+31
+1.852339937363593
+12
+-9.270362255620057e-15
+22
+4.3298697960381105e-15
+32
+1.8523399373635918
+13
+-9.270362255620057e-15
+23
+4.3298697960381105e-15
+33
+1.8523399373635918
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-8.1601392309949e-15
+20
+0.21460211860997835
+30
+1.852339937363593
+11
+0.09221276165913117
+21
+6.6058269965196814e-15
+31
+1.8401998969817372
+12
+0.09221276165912784
+22
+0.21460211860997835
+32
+1.8401998969817395
+13
+0.09221276165912784
+23
+0.21460211860997835
+33
+1.8401998969817395
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2519299499590142
+20
+6.6058269965196814e-15
+30
+1.7479871353226024
+11
+-0.178141376000007
+21
+0.2146021186099828
+31
+1.8046070995258234
+12
+-0.25192994995901646
+22
+0.21460211860997158
+32
+1.7479871353226013
+13
+-0.25192994995901646
+23
+0.21460211860997158
+33
+1.7479871353226013
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.178141376000007
+20
+0.2146021186099828
+30
+1.8046070995258234
+11
+-0.2519299499590142
+21
+6.6058269965196814e-15
+31
+1.7479871353226024
+12
+-0.178141376000007
+22
+1.3322676295501878e-14
+32
+1.8046070995258212
+13
+-0.178141376000007
+23
+1.3322676295501878e-14
+33
+1.8046070995258212
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2519299499589991
+20
+4.3298697960381105e-15
+30
+1.7479871353225969
+11
+0.17814137599999302
+21
+0.21460211860997835
+31
+1.8046070995258234
+12
+0.1781413759999908
+22
+2.1094237467877974e-15
+32
+1.8046070995258223
+13
+0.1781413759999908
+23
+2.1094237467877974e-15
+33
+1.8046070995258223
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17814137599999302
+20
+0.21460211860997835
+30
+1.8046070995258234
+11
+0.2519299499589991
+21
+4.3298697960381105e-15
+31
+1.7479871353225969
+12
+0.2519299499590002
+22
+0.2146021186099738
+32
+1.7479871353226013
+13
+0.2519299499590002
+23
+0.2146021186099738
+33
+1.7479871353226013
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.308549914162242
+20
+1.3322676295501878e-14
+30
+1.6741985613635963
+11
+-0.3441427116181479
+21
+0.21460211860997602
+31
+1.5882699470227322
+12
+-0.34414271161815574
+22
+2.1094237467877974e-15
+32
+1.5882699470227366
+13
+-0.34414271161815574
+23
+2.1094237467877974e-15
+33
+1.5882699470227366
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3441427116181479
+20
+0.21460211860997602
+30
+1.5882699470227322
+11
+-0.308549914162242
+21
+1.3322676295501878e-14
+31
+1.6741985613635963
+12
+-0.3085499141622374
+22
+0.2146021186099828
+32
+1.6741985613635952
+13
+-0.3085499141622374
+23
+0.2146021186099828
+33
+1.6741985613635952
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.09221276165914405
+20
+6.6058269965196814e-15
+30
+1.8401998969817417
+11
+-0.178141376000007
+21
+0.2146021186099828
+31
+1.8046070995258234
+12
+-0.178141376000007
+22
+1.3322676295501878e-14
+32
+1.8046070995258212
+13
+-0.178141376000007
+23
+1.3322676295501878e-14
+33
+1.8046070995258212
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.178141376000007
+20
+0.2146021186099828
+30
+1.8046070995258234
+11
+-0.09221276165914405
+21
+6.6058269965196814e-15
+31
+1.8401998969817417
+12
+-0.09221276165914855
+22
+0.21460211860997835
+32
+1.8401998969817361
+13
+-0.09221276165914855
+23
+0.21460211860997835
+33
+1.8401998969817361
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.30854991416222566
+20
+0.21460211860997158
+30
+1.6741985613635975
+11
+0.2519299499589991
+21
+4.3298697960381105e-15
+31
+1.7479871353225969
+12
+0.3085499141622211
+22
+4.3298697960381105e-15
+32
+1.6741985613635941
+13
+0.3085499141622211
+23
+4.3298697960381105e-15
+33
+1.6741985613635941
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2519299499589991
+20
+4.3298697960381105e-15
+30
+1.7479871353225969
+11
+0.30854991416222566
+21
+0.21460211860997158
+31
+1.6741985613635975
+12
+0.2519299499590002
+22
+0.2146021186099738
+32
+1.7479871353226013
+13
+0.2519299499590002
+23
+0.2146021186099738
+33
+1.7479871353226013
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3562827519999896
+20
+0.2146021186099738
+30
+1.496057185363593
+11
+0.3441427116181349
+21
+6.6058269965196814e-15
+31
+1.58826994702273
+12
+0.3562827519999907
+22
+2.1094237467877974e-15
+32
+1.496057185363593
+13
+0.3562827519999907
+23
+2.1094237467877974e-15
+33
+1.496057185363593
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3441427116181349
+20
+6.6058269965196814e-15
+30
+1.58826994702273
+11
+0.3562827519999896
+21
+0.2146021186099738
+31
+1.496057185363593
+12
+0.3441427116181349
+22
+0.2146021186099738
+32
+1.5882699470227333
+13
+0.3441427116181349
+23
+0.2146021186099738
+33
+1.5882699470227333
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3562827520000115
+20
+0.21460211860998057
+30
+1.496057185363594
+11
+-0.34414271161815124
+21
+1.3322676295501878e-14
+31
+1.4038444237044558
+12
+-0.35628275200000925
+22
+8.826273045769994e-15
+32
+1.496057185363594
+13
+-0.35628275200000925
+23
+8.826273045769994e-15
+33
+1.496057185363594
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.34414271161815124
+20
+1.3322676295501878e-14
+30
+1.4038444237044558
+11
+-0.3562827520000115
+21
+0.21460211860998057
+31
+1.496057185363594
+12
+-0.3441427116181524
+22
+0.21460211860998057
+32
+1.4038444237044547
+13
+-0.3441427116181524
+23
+0.21460211860998057
+33
+1.4038444237044547
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3085499141622408
+20
+0.2146021186099738
+30
+1.3179158093635974
+11
+-0.25192994995901313
+21
+1.1046719095020308e-14
+31
+1.2441272354045858
+12
+-0.308549914162242
+22
+6.6058269965196814e-15
+32
+1.3179158093635963
+13
+-0.308549914162242
+23
+6.6058269965196814e-15
+33
+1.3179158093635963
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.25192994995901313
+20
+1.1046719095020308e-14
+30
+1.2441272354045858
+11
+-0.3085499141622408
+21
+0.2146021186099738
+31
+1.3179158093635974
+12
+-0.2519299499590154
+22
+0.2146021186099828
+32
+1.244127235404588
+13
+-0.2519299499590154
+23
+0.2146021186099828
+33
+1.244127235404588
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3441427116181349
+20
+6.6058269965196814e-15
+30
+1.58826994702273
+11
+0.30854991416222566
+21
+0.21460211860997158
+31
+1.6741985613635975
+12
+0.3085499141622211
+22
+4.3298697960381105e-15
+32
+1.6741985613635941
+13
+0.3085499141622211
+23
+4.3298697960381105e-15
+33
+1.6741985613635941
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.30854991416222566
+20
+0.21460211860997158
+30
+1.6741985613635975
+11
+0.3441427116181349
+21
+6.6058269965196814e-15
+31
+1.58826994702273
+12
+0.3441427116181349
+22
+0.2146021186099738
+32
+1.5882699470227333
+13
+0.3441427116181349
+23
+0.2146021186099738
+33
+1.5882699470227333
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.09221276165913117
+20
+6.6058269965196814e-15
+30
+1.8401998969817372
+11
+0.17814137599999302
+21
+0.21460211860997835
+31
+1.8046070995258234
+12
+0.09221276165912784
+22
+0.21460211860997835
+32
+1.8401998969817395
+13
+0.09221276165912784
+23
+0.21460211860997835
+33
+1.8401998969817395
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17814137599999302
+20
+0.21460211860997835
+30
+1.8046070995258234
+11
+0.09221276165913117
+21
+6.6058269965196814e-15
+31
+1.8401998969817372
+12
+0.1781413759999908
+22
+2.1094237467877974e-15
+32
+1.8046070995258223
+13
+0.1781413759999908
+23
+2.1094237467877974e-15
+33
+1.8046070995258223
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.25192994995901646
+20
+0.21460211860997158
+30
+1.7479871353226013
+11
+-0.308549914162242
+21
+1.3322676295501878e-14
+31
+1.6741985613635963
+12
+-0.2519299499590142
+22
+6.6058269965196814e-15
+32
+1.7479871353226024
+13
+-0.2519299499590142
+23
+6.6058269965196814e-15
+33
+1.7479871353226024
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.308549914162242
+20
+1.3322676295501878e-14
+30
+1.6741985613635963
+11
+-0.25192994995901646
+21
+0.21460211860997158
+31
+1.7479871353226013
+12
+-0.3085499141622374
+22
+0.2146021186099828
+32
+1.6741985613635952
+13
+-0.3085499141622374
+23
+0.2146021186099828
+33
+1.6741985613635952
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.09221276165914405
+20
+6.6058269965196814e-15
+30
+1.8401998969817417
+11
+-8.1601392309949e-15
+21
+0.21460211860997835
+31
+1.852339937363593
+12
+-0.09221276165914855
+22
+0.21460211860997835
+32
+1.8401998969817361
+13
+-0.09221276165914855
+23
+0.21460211860997835
+33
+1.8401998969817361
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-8.1601392309949e-15
+20
+0.21460211860997835
+30
+1.852339937363593
+11
+-0.09221276165914405
+21
+6.6058269965196814e-15
+31
+1.8401998969817417
+12
+-9.270362255620057e-15
+22
+4.3298697960381105e-15
+32
+1.8523399373635918
+13
+-9.270362255620057e-15
+23
+4.3298697960381105e-15
+33
+1.8523399373635918
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3441427116181479
+20
+0.21460211860997602
+30
+1.5882699470227322
+11
+-0.35628275200000925
+21
+8.826273045769994e-15
+31
+1.496057185363594
+12
+-0.34414271161815574
+22
+2.1094237467877974e-15
+32
+1.5882699470227366
+13
+-0.34414271161815574
+23
+2.1094237467877974e-15
+33
+1.5882699470227366
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.35628275200000925
+20
+8.826273045769994e-15
+30
+1.496057185363594
+11
+-0.3441427116181479
+21
+0.21460211860997602
+31
+1.5882699470227322
+12
+-0.3562827520000115
+22
+0.21460211860998057
+32
+1.496057185363594
+13
+-0.3562827520000115
+23
+0.21460211860998057
+33
+1.496057185363594
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3085499141622408
+20
+0.2146021186099738
+30
+1.3179158093635974
+11
+-6.994405055138486e-15
+21
+0.21460211860998057
+31
+1.496057185363593
+12
+-0.2519299499590154
+22
+0.2146021186099828
+32
+1.244127235404588
+13
+-0.2519299499590154
+23
+0.2146021186099828
+33
+1.244127235404588
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-6.994405055138486e-15
+20
+0.21460211860998057
+30
+1.496057185363593
+11
+-0.3085499141622408
+21
+0.2146021186099738
+31
+1.3179158093635974
+12
+-0.3441427116181524
+22
+0.21460211860998057
+32
+1.4038444237044547
+13
+-0.3441427116181524
+23
+0.21460211860998057
+33
+1.4038444237044547
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-6.994405055138486e-15
+20
+0.21460211860998057
+30
+1.496057185363593
+11
+-0.3441427116181524
+21
+0.21460211860998057
+31
+1.4038444237044547
+12
+-0.3562827520000115
+22
+0.21460211860998057
+32
+1.496057185363594
+13
+-0.3562827520000115
+23
+0.21460211860998057
+33
+1.496057185363594
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-6.994405055138486e-15
+20
+0.21460211860998057
+30
+1.496057185363593
+11
+-0.3562827520000115
+21
+0.21460211860998057
+31
+1.496057185363594
+12
+0.3562827519999896
+22
+0.2146021186099738
+32
+1.496057185363593
+13
+0.3562827519999896
+23
+0.2146021186099738
+33
+1.496057185363593
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3562827519999896
+20
+0.2146021186099738
+30
+1.496057185363593
+11
+-0.3562827520000115
+21
+0.21460211860998057
+31
+1.496057185363594
+12
+0.3441427116181349
+22
+0.2146021186099738
+32
+1.5882699470227333
+13
+0.3441427116181349
+23
+0.2146021186099738
+33
+1.5882699470227333
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3441427116181349
+20
+0.2146021186099738
+30
+1.5882699470227333
+11
+-0.3562827520000115
+21
+0.21460211860998057
+31
+1.496057185363594
+12
+-0.3441427116181479
+22
+0.21460211860997602
+32
+1.5882699470227322
+13
+-0.3441427116181479
+23
+0.21460211860997602
+33
+1.5882699470227322
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3441427116181349
+20
+0.2146021186099738
+30
+1.5882699470227333
+11
+-0.3441427116181479
+21
+0.21460211860997602
+31
+1.5882699470227322
+12
+-0.3085499141622374
+22
+0.2146021186099828
+32
+1.6741985613635952
+13
+-0.3085499141622374
+23
+0.2146021186099828
+33
+1.6741985613635952
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3441427116181349
+20
+0.2146021186099738
+30
+1.5882699470227333
+11
+-0.3085499141622374
+21
+0.2146021186099828
+31
+1.6741985613635952
+12
+0.30854991416222566
+22
+0.21460211860997158
+32
+1.6741985613635975
+13
+0.30854991416222566
+23
+0.21460211860997158
+33
+1.6741985613635975
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.30854991416222566
+20
+0.21460211860997158
+30
+1.6741985613635975
+11
+-0.3085499141622374
+21
+0.2146021186099828
+31
+1.6741985613635952
+12
+-0.25192994995901646
+22
+0.21460211860997158
+32
+1.7479871353226013
+13
+-0.25192994995901646
+23
+0.21460211860997158
+33
+1.7479871353226013
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.30854991416222566
+20
+0.21460211860997158
+30
+1.6741985613635975
+11
+-0.25192994995901646
+21
+0.21460211860997158
+31
+1.7479871353226013
+12
+0.2519299499590002
+22
+0.2146021186099738
+32
+1.7479871353226013
+13
+0.2519299499590002
+23
+0.2146021186099738
+33
+1.7479871353226013
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2519299499590002
+20
+0.2146021186099738
+30
+1.7479871353226013
+11
+-0.25192994995901646
+21
+0.21460211860997158
+31
+1.7479871353226013
+12
+-0.178141376000007
+22
+0.2146021186099828
+32
+1.8046070995258234
+13
+-0.178141376000007
+23
+0.2146021186099828
+33
+1.8046070995258234
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2519299499590002
+20
+0.2146021186099738
+30
+1.7479871353226013
+11
+-0.178141376000007
+21
+0.2146021186099828
+31
+1.8046070995258234
+12
+0.17814137599999302
+22
+0.21460211860997835
+32
+1.8046070995258234
+13
+0.17814137599999302
+23
+0.21460211860997835
+33
+1.8046070995258234
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17814137599999302
+20
+0.21460211860997835
+30
+1.8046070995258234
+11
+-0.178141376000007
+21
+0.2146021186099828
+31
+1.8046070995258234
+12
+-0.09221276165914855
+22
+0.21460211860997835
+32
+1.8401998969817361
+13
+-0.09221276165914855
+23
+0.21460211860997835
+33
+1.8401998969817361
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17814137599999302
+20
+0.21460211860997835
+30
+1.8046070995258234
+11
+-0.09221276165914855
+21
+0.21460211860997835
+31
+1.8401998969817361
+12
+0.09221276165912784
+22
+0.21460211860997835
+32
+1.8401998969817395
+13
+0.09221276165912784
+23
+0.21460211860997835
+33
+1.8401998969817395
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.09221276165912784
+20
+0.21460211860997835
+30
+1.8401998969817395
+11
+-0.09221276165914855
+21
+0.21460211860997835
+31
+1.8401998969817361
+12
+-8.1601392309949e-15
+22
+0.21460211860997835
+32
+1.852339937363593
+13
+-8.1601392309949e-15
+23
+0.21460211860997835
+33
+1.852339937363593
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.25192994995901313
+20
+1.1046719095020308e-14
+30
+1.2441272354045858
+11
+-0.3915991037039563
+21
+0.10492866359423814
+31
+1.1044580816596459
+12
+-0.4043499632637243
+22
+4.3298697960381105e-15
+32
+1.091707222099877
+13
+-0.4043499632637243
+23
+4.3298697960381105e-15
+33
+1.091707222099877
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3915991037039563
+20
+0.10492866359423814
+30
+1.1044580816596459
+11
+-0.25192994995901313
+21
+1.1046719095020308e-14
+31
+1.2441272354045858
+12
+-0.35382596178106146
+22
+0.20428151428057906
+32
+1.1422312235825385
+13
+-0.35382596178106146
+23
+0.20428151428057906
+33
+1.1422312235825385
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.35382596178106146
+20
+0.20428151428057906
+30
+1.1422312235825385
+11
+-0.25192994995901313
+21
+1.1046719095020308e-14
+31
+1.2441272354045858
+12
+-0.2925129368815464
+22
+0.292512936881548
+32
+1.2035442484820547
+13
+-0.2925129368815464
+23
+0.292512936881548
+33
+1.2035442484820547
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2925129368815464
+20
+0.292512936881548
+30
+1.2035442484820547
+11
+-0.25192994995901313
+21
+1.1046719095020308e-14
+31
+1.2441272354045858
+12
+-0.2519299499590154
+22
+0.2146021186099828
+32
+1.244127235404588
+13
+-0.2519299499590154
+23
+0.2146021186099828
+33
+1.244127235404588
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2519299499590154
+20
+0.2146021186099828
+30
+1.244127235404588
+11
+-0.21026701806260537
+21
+0.36419315844043
+31
+1.285790167300998
+12
+-0.2925129368815464
+22
+0.292512936881548
+32
+1.2035442484820547
+13
+-0.2925129368815464
+23
+0.292512936881548
+33
+1.2035442484820547
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.21026701806260537
+20
+0.36419315844043
+30
+1.285790167300998
+11
+-0.2519299499590154
+21
+0.2146021186099828
+31
+1.244127235404588
+12
+-6.994405055138486e-15
+22
+0.21460211860998057
+32
+1.496057185363593
+13
+-6.994405055138486e-15
+23
+0.21460211860998057
+33
+1.496057185363593
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.21026701806260537
+20
+0.36419315844043
+30
+1.285790167300998
+11
+-6.994405055138486e-15
+21
+0.21460211860998057
+31
+1.496057185363593
+12
+-0.11098494793676095
+22
+0.4142014645753518
+32
+1.3850722374268436
+13
+-0.11098494793676095
+23
+0.4142014645753518
+33
+1.3850722374268436
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.11098494793676095
+20
+0.4142014645753518
+30
+1.3850722374268436
+11
+-6.994405055138486e-15
+21
+0.21460211860998057
+31
+1.496057185363593
+12
+-4.773959005888173e-15
+22
+0.43806765680044213
+32
+1.4960571853635918
+13
+-4.773959005888173e-15
+23
+0.43806765680044213
+33
+1.4960571853635918
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3562827519999896
+20
+0.2146021186099738
+30
+1.496057185363593
+11
+-4.773959005888173e-15
+21
+0.43806765680044213
+31
+1.4960571853635918
+12
+-6.994405055138486e-15
+22
+0.21460211860998057
+32
+1.496057185363593
+13
+-6.994405055138486e-15
+23
+0.21460211860998057
+33
+1.496057185363593
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-4.773959005888173e-15
+20
+0.43806765680044213
+30
+1.4960571853635918
+11
+0.3562827519999896
+21
+0.2146021186099738
+31
+1.496057185363593
+12
+0.11338025262337792
+22
+0.4231408633654873
+32
+1.4960571853635918
+13
+0.11338025262337792
+23
+0.4231408633654873
+33
+1.4960571853635918
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.11338025262337792
+20
+0.4231408633654873
+30
+1.4960571853635918
+11
+0.3562827519999896
+21
+0.2146021186099738
+31
+1.496057185363593
+12
+0.2190338284002119
+22
+0.3793777193655077
+32
+1.4960571853635918
+13
+0.2190338284002119
+23
+0.3793777193655077
+33
+1.4960571853635918
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2190338284002119
+20
+0.3793777193655077
+30
+1.4960571853635918
+11
+0.3562827519999896
+21
+0.2146021186099738
+31
+1.496057185363593
+12
+0.30976061074207994
+22
+0.30976061074210015
+32
+1.496057185363593
+13
+0.30976061074207994
+23
+0.30976061074210015
+33
+1.496057185363593
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.30976061074207994
+20
+0.30976061074210015
+30
+1.496057185363593
+11
+0.3562827519999896
+21
+0.2146021186099738
+31
+1.496057185363593
+12
+0.379377719365492
+22
+0.21903382840022767
+32
+1.4960571853635962
+13
+0.379377719365492
+23
+0.21903382840022767
+33
+1.4960571853635962
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.379377719365492
+20
+0.21903382840022767
+30
+1.4960571853635962
+11
+0.3562827519999896
+21
+0.2146021186099738
+31
+1.496057185363593
+12
+0.3562827519999907
+22
+2.1094237467877974e-15
+32
+1.496057185363593
+13
+0.3562827519999907
+23
+2.1094237467877974e-15
+33
+1.496057185363593
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.379377719365492
+20
+0.21903382840022767
+30
+1.4960571853635962
+11
+0.3562827519999907
+21
+2.1094237467877974e-15
+31
+1.496057185363593
+12
+0.438067656800432
+22
+8.826273045769994e-15
+32
+1.496057185363593
+13
+0.438067656800432
+23
+8.826273045769994e-15
+33
+1.496057185363593
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.379377719365492
+20
+0.21903382840022767
+30
+1.4960571853635962
+11
+0.438067656800432
+21
+8.826273045769994e-15
+31
+1.496057185363593
+12
+0.42314086336547163
+22
+0.11338025262340279
+32
+1.496057185363593
+13
+0.42314086336547163
+23
+0.11338025262340279
+33
+1.496057185363593
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-4.773959005888173e-15
+20
+0.43806765680044213
+30
+1.4960571853635918
+11
+0.09941181811875976
+21
+0.3710099560920558
+31
+0.7938622211774832
+12
+-9.325873406851315e-15
+22
+0.3840977702370938
+32
+0.7938622211774821
+13
+-9.325873406851315e-15
+23
+0.3840977702370938
+33
+0.7938622211774821
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.09941181811875976
+20
+0.3710099560920558
+30
+0.7938622211774832
+11
+-4.773959005888173e-15
+21
+0.43806765680044213
+31
+1.4960571853635918
+12
+0.11338025262337792
+22
+0.4231408633654873
+32
+1.4960571853635918
+13
+0.11338025262337792
+23
+0.4231408633654873
+33
+1.4960571853635918
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.09941181811875976
+20
+0.3710099560920558
+30
+0.7938622211774832
+11
+0.2190338284002119
+21
+0.3793777193655077
+31
+1.4960571853635918
+12
+0.1920488851185299
+22
+0.3326384265622784
+32
+0.7938622211774822
+13
+0.1920488851185299
+23
+0.3326384265622784
+33
+0.7938622211774822
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2190338284002119
+20
+0.3793777193655077
+30
+1.4960571853635918
+11
+0.09941181811875976
+21
+0.3710099560920558
+31
+0.7938622211774832
+12
+0.11338025262337792
+22
+0.4231408633654873
+32
+1.4960571853635918
+13
+0.11338025262337792
+23
+0.4231408633654873
+33
+1.4960571853635918
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2190338284002119
+20
+0.3793777193655077
+30
+1.4960571853635918
+11
+0.2715981379732598
+21
+0.2715981379732778
+31
+0.7938622211774844
+12
+0.1920488851185299
+22
+0.3326384265622784
+32
+0.7938622211774822
+13
+0.1920488851185299
+23
+0.3326384265622784
+33
+0.7938622211774822
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2715981379732598
+20
+0.2715981379732778
+30
+0.7938622211774844
+11
+0.2190338284002119
+21
+0.3793777193655077
+31
+1.4960571853635918
+12
+0.30976061074207994
+22
+0.30976061074210015
+32
+1.496057185363593
+13
+0.30976061074207994
+23
+0.30976061074210015
+33
+1.496057185363593
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2715981379732598
+20
+0.2715981379732778
+30
+0.7938622211774844
+11
+0.379377719365492
+21
+0.21903382840022767
+31
+1.4960571853635962
+12
+0.33263842656225817
+22
+0.19204888511854235
+32
+0.7938622211774866
+13
+0.33263842656225817
+23
+0.19204888511854235
+33
+0.7938622211774866
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.379377719365492
+20
+0.21903382840022767
+30
+1.4960571853635962
+11
+0.2715981379732598
+21
+0.2715981379732778
+31
+0.7938622211774844
+12
+0.30976061074207994
+22
+0.30976061074210015
+32
+1.496057185363593
+13
+0.30976061074207994
+23
+0.30976061074210015
+33
+1.496057185363593
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3710099560920289
+20
+0.09941181811878463
+30
+0.7938622211774811
+11
+0.438067656800432
+21
+8.826273045769994e-15
+31
+1.496057185363593
+12
+0.38409777023706804
+22
+8.826273045769994e-15
+32
+0.7938622211774833
+13
+0.38409777023706804
+23
+8.826273045769994e-15
+33
+0.7938622211774833
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.438067656800432
+20
+8.826273045769994e-15
+30
+1.496057185363593
+11
+0.3710099560920289
+21
+0.09941181811878463
+31
+0.7938622211774811
+12
+0.42314086336547163
+22
+0.11338025262340279
+32
+1.496057185363593
+13
+0.42314086336547163
+23
+0.11338025262340279
+33
+1.496057185363593
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.33263842656225817
+20
+0.19204888511854235
+30
+0.7938622211774866
+11
+0.42314086336547163
+21
+0.11338025262340279
+31
+1.496057185363593
+12
+0.3710099560920289
+22
+0.09941181811878463
+32
+0.7938622211774811
+13
+0.3710099560920289
+23
+0.09941181811878463
+33
+0.7938622211774811
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.42314086336547163
+20
+0.11338025262340279
+30
+1.496057185363593
+11
+0.33263842656225817
+21
+0.19204888511854235
+31
+0.7938622211774866
+12
+0.379377719365492
+22
+0.21903382840022767
+32
+1.4960571853635962
+13
+0.379377719365492
+23
+0.21903382840022767
+33
+1.4960571853635962
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3326384265622745
+20
+0.19204888511855134
+30
+0.7938622211774865
+11
+-0.37100995609204745
+21
+0.09941181811877786
+31
+0.7938622211774832
+12
+-0.3915991037039563
+22
+0.10492866359423814
+32
+1.1044580816596459
+13
+-0.3915991037039563
+23
+0.10492866359423814
+33
+1.1044580816596459
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.35382596178106146
+20
+0.20428151428057906
+30
+1.1422312235825385
+11
+-0.3326384265622745
+21
+0.19204888511855134
+31
+0.7938622211774865
+12
+-0.3915991037039563
+22
+0.10492866359423814
+32
+1.1044580816596459
+13
+-0.3915991037039563
+23
+0.10492866359423814
+33
+1.1044580816596459
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2925129368815464
+20
+0.292512936881548
+30
+1.2035442484820547
+11
+-0.19204888511855078
+21
+0.3326384265622738
+31
+0.7938622211774832
+12
+-0.2715981379732795
+22
+0.27159813797327326
+32
+0.793862221177481
+13
+-0.2715981379732795
+23
+0.27159813797327326
+33
+0.793862221177481
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.21026701806260537
+20
+0.36419315844043
+30
+1.285790167300998
+11
+-0.19204888511855078
+21
+0.3326384265622738
+31
+0.7938622211774832
+12
+-0.2925129368815464
+22
+0.292512936881548
+32
+1.2035442484820547
+13
+-0.2925129368815464
+23
+0.292512936881548
+33
+1.2035442484820547
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.11098494793676095
+20
+0.4142014645753518
+30
+1.3850722374268436
+11
+-9.325873406851315e-15
+21
+0.3840977702370938
+31
+0.7938622211774821
+12
+-0.09941181811877842
+22
+0.371009956092049
+32
+0.7938622211774821
+13
+-0.09941181811877842
+23
+0.371009956092049
+33
+0.7938622211774821
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-4.773959005888173e-15
+20
+0.43806765680044213
+30
+1.4960571853635918
+11
+-9.325873406851315e-15
+21
+0.3840977702370938
+31
+0.7938622211774821
+12
+-0.11098494793676095
+22
+0.4142014645753518
+32
+1.3850722374268436
+13
+-0.11098494793676095
+23
+0.4142014645753518
+33
+1.3850722374268436
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2715981379732795
+20
+0.27159813797327326
+30
+0.793862221177481
+11
+-0.3326384265622745
+21
+0.19204888511855134
+31
+0.7938622211774865
+12
+-0.35382596178106146
+22
+0.20428151428057906
+32
+1.1422312235825385
+13
+-0.35382596178106146
+23
+0.20428151428057906
+33
+1.1422312235825385
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2925129368815464
+20
+0.292512936881548
+30
+1.2035442484820547
+11
+-0.2715981379732795
+21
+0.27159813797327326
+31
+0.793862221177481
+12
+-0.35382596178106146
+22
+0.20428151428057906
+32
+1.1422312235825385
+13
+-0.35382596178106146
+23
+0.20428151428057906
+33
+1.1422312235825385
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3915991037039563
+20
+0.10492866359423814
+30
+1.1044580816596459
+11
+-0.3840977702370878
+21
+1.1046719095020308e-14
+31
+0.7938622211774798
+12
+-0.4043499632637243
+22
+4.3298697960381105e-15
+32
+1.091707222099877
+13
+-0.4043499632637243
+23
+4.3298697960381105e-15
+33
+1.091707222099877
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3915991037039563
+20
+0.10492866359423814
+30
+1.1044580816596459
+11
+-0.37100995609204745
+21
+0.09941181811877786
+31
+0.7938622211774832
+12
+-0.3840977702370878
+22
+1.1046719095020308e-14
+32
+0.7938622211774798
+13
+-0.3840977702370878
+23
+1.1046719095020308e-14
+33
+0.7938622211774798
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.21026701806260537
+20
+0.36419315844043
+30
+1.285790167300998
+11
+-0.09941181811877842
+21
+0.371009956092049
+31
+0.7938622211774821
+12
+-0.19204888511855078
+22
+0.3326384265622738
+32
+0.7938622211774832
+13
+-0.19204888511855078
+23
+0.3326384265622738
+33
+0.7938622211774832
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.11098494793676095
+20
+0.4142014645753518
+30
+1.3850722374268436
+11
+-0.09941181811877842
+21
+0.371009956092049
+31
+0.7938622211774821
+12
+-0.21026701806260537
+22
+0.36419315844043
+32
+1.285790167300998
+13
+-0.21026701806260537
+23
+0.36419315844043
+33
+1.285790167300998
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2715981379732795
+20
+0.27159813797327326
+30
+0.793862221177481
+11
+-0.38998682518333744
+21
+0.22515899850000798
+31
+-1.1116135775444189e-15
+12
+-0.3326384265622745
+22
+0.19204888511855134
+32
+0.7938622211774865
+13
+-0.3326384265622745
+23
+0.19204888511855134
+33
+0.7938622211774865
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.38998682518333744
+20
+0.22515899850000798
+30
+-1.1116135775444189e-15
+11
+-0.2715981379732795
+21
+0.27159813797327326
+31
+0.793862221177481
+12
+-0.3184229093690556
+22
+0.31842290936904827
+32
+1.132572953045013e-15
+13
+-0.3184229093690556
+23
+0.31842290936904827
+33
+1.132572953045013e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-9.325873406851315e-15
+20
+0.3840977702370938
+30
+0.7938622211774821
+11
+0.11655087397601116
+21
+0.4349737833450753
+31
+1.1690664734545857e-15
+12
+-7.049916206369744e-15
+22
+0.45031799700000497
+32
+1.159449649898216e-15
+13
+-7.049916206369744e-15
+23
+0.45031799700000497
+33
+1.159449649898216e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.11655087397601116
+20
+0.4349737833450753
+30
+1.1690664734545857e-15
+11
+-9.325873406851315e-15
+21
+0.3840977702370938
+31
+0.7938622211774821
+12
+0.09941181811875976
+22
+0.3710099560920558
+32
+0.7938622211774832
+13
+0.09941181811875976
+23
+0.3710099560920558
+33
+0.7938622211774832
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.1920488851185299
+20
+0.3326384265622784
+30
+0.7938622211774822
+11
+0.31842290936903583
+21
+0.3184229093690527
+31
+-3.290439660368124e-15
+12
+0.22515899849998888
+22
+0.3899868251833378
+32
+-3.297929346592473e-15
+13
+0.22515899849998888
+23
+0.3899868251833378
+33
+-3.297929346592473e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.31842290936903583
+20
+0.3184229093690527
+30
+-3.290439660368124e-15
+11
+0.1920488851185299
+21
+0.3326384265622784
+31
+0.7938622211774822
+12
+0.2715981379732598
+22
+0.2715981379732778
+32
+0.7938622211774844
+13
+0.2715981379732598
+23
+0.2715981379732778
+33
+0.7938622211774844
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3326384265622745
+20
+0.19204888511855134
+30
+0.7938622211774865
+11
+-0.4349737833450727
+21
+0.11655087397603592
+31
+-1.1157228913145438e-15
+12
+-0.37100995609204745
+22
+0.09941181811877786
+32
+0.7938622211774832
+13
+-0.37100995609204745
+23
+0.09941181811877786
+33
+0.7938622211774832
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.4349737833450727
+20
+0.11655087397603592
+30
+-1.1157228913145438e-15
+11
+-0.3326384265622745
+21
+0.19204888511855134
+31
+0.7938622211774865
+12
+-0.38998682518333744
+22
+0.22515899850000798
+32
+-1.1116135775444189e-15
+13
+-0.38998682518333744
+23
+0.22515899850000798
+33
+-1.1116135775444189e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.450317996999995
+20
+1.1046719095020308e-14
+30
+-3.2806012647849043e-15
+11
+0.3710099560920289
+21
+0.09941181811878463
+31
+0.7938622211774811
+12
+0.38409777023706804
+22
+8.826273045769994e-15
+32
+0.7938622211774833
+13
+0.38409777023706804
+23
+8.826273045769994e-15
+33
+0.7938622211774833
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3710099560920289
+20
+0.09941181811878463
+30
+0.7938622211774811
+11
+0.450317996999995
+21
+1.1046719095020308e-14
+31
+-3.2806012647849043e-15
+12
+0.434973783345053
+22
+0.11655087397603137
+32
+-4.400432685469344e-15
+13
+0.434973783345053
+23
+0.11655087397603137
+33
+-4.400432685469344e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.09941181811877842
+20
+0.371009956092049
+30
+0.7938622211774821
+11
+-7.049916206369744e-15
+21
+0.45031799700000497
+31
+1.159449649898216e-15
+12
+-0.11655087397602859
+22
+0.4349737833450731
+32
+-2.2071617463537632e-15
+13
+-0.11655087397602859
+23
+0.4349737833450731
+33
+-2.2071617463537632e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+0.45031799700000497
+30
+1.159449649898216e-15
+11
+-0.09941181811877842
+21
+0.371009956092049
+31
+0.7938622211774821
+12
+-9.325873406851315e-15
+22
+0.3840977702370938
+32
+0.7938622211774821
+13
+-9.325873406851315e-15
+23
+0.3840977702370938
+33
+0.7938622211774821
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2251589985000131
+20
+0.38998682518332894
+30
+-1.0973661868614674e-15
+11
+-0.09941181811877842
+21
+0.371009956092049
+31
+0.7938622211774821
+12
+-0.11655087397602859
+22
+0.4349737833450731
+32
+-2.2071617463537632e-15
+13
+-0.11655087397602859
+23
+0.4349737833450731
+33
+-2.2071617463537632e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.09941181811877842
+20
+0.371009956092049
+30
+0.7938622211774821
+11
+-0.2251589985000131
+21
+0.38998682518332894
+31
+-1.0973661868614674e-15
+12
+-0.19204888511855078
+22
+0.3326384265622738
+32
+0.7938622211774832
+13
+-0.19204888511855078
+23
+0.3326384265622738
+33
+0.7938622211774832
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.11655087397601116
+20
+0.4349737833450753
+30
+1.1690664734545857e-15
+11
+0.1920488851185299
+21
+0.3326384265622784
+31
+0.7938622211774822
+12
+0.22515899849998888
+22
+0.3899868251833378
+32
+-3.297929346592473e-15
+13
+0.22515899849998888
+23
+0.3899868251833378
+33
+-3.297929346592473e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.1920488851185299
+20
+0.3326384265622784
+30
+0.7938622211774822
+11
+0.11655087397601116
+21
+0.4349737833450753
+31
+1.1690664734545857e-15
+12
+0.09941181811875976
+22
+0.3710099560920558
+32
+0.7938622211774832
+13
+0.09941181811875976
+23
+0.3710099560920558
+33
+0.7938622211774832
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.434973783345053
+20
+0.11655087397603137
+30
+-4.400432685469344e-15
+11
+0.33263842656225817
+21
+0.19204888511854235
+31
+0.7938622211774866
+12
+0.3710099560920289
+22
+0.09941181811878463
+32
+0.7938622211774811
+13
+0.3710099560920289
+23
+0.09941181811878463
+33
+0.7938622211774811
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.33263842656225817
+20
+0.19204888511854235
+30
+0.7938622211774866
+11
+0.434973783345053
+21
+0.11655087397603137
+31
+-4.400432685469344e-15
+12
+0.38998682518331773
+22
+0.22515899850001475
+32
+7.206242211372932e-17
+13
+0.38998682518331773
+23
+0.22515899850001475
+33
+7.206242211372932e-17
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3184229093690556
+20
+0.31842290936904827
+30
+1.132572953045013e-15
+11
+-0.19204888511855078
+21
+0.3326384265622738
+31
+0.7938622211774832
+12
+-0.2251589985000131
+22
+0.38998682518332894
+32
+-1.0973661868614674e-15
+13
+-0.2251589985000131
+23
+0.38998682518332894
+33
+-1.0973661868614674e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.19204888511855078
+20
+0.3326384265622738
+30
+0.7938622211774832
+11
+-0.3184229093690556
+21
+0.31842290936904827
+31
+1.132572953045013e-15
+12
+-0.2715981379732795
+22
+0.27159813797327326
+32
+0.793862221177481
+13
+-0.2715981379732795
+23
+0.27159813797327326
+33
+0.793862221177481
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3840977702370878
+20
+1.1046719095020308e-14
+30
+0.7938622211774798
+11
+-0.4349737833450727
+21
+0.11655087397603592
+31
+-1.1157228913145438e-15
+12
+-0.4503179970000113
+22
+8.826273045769994e-15
+32
+-4.474288446697922e-15
+13
+-0.4503179970000113
+23
+8.826273045769994e-15
+33
+-4.474288446697922e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.4349737833450727
+20
+0.11655087397603592
+30
+-1.1157228913145438e-15
+11
+-0.3840977702370878
+21
+1.1046719095020308e-14
+31
+0.7938622211774798
+12
+-0.37100995609204745
+22
+0.09941181811877786
+32
+0.7938622211774832
+13
+-0.37100995609204745
+23
+0.09941181811877786
+33
+0.7938622211774832
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.38998682518331773
+20
+0.22515899850001475
+30
+7.206242211372932e-17
+11
+0.2715981379732598
+21
+0.2715981379732778
+31
+0.7938622211774844
+12
+0.33263842656225817
+22
+0.19204888511854235
+32
+0.7938622211774866
+13
+0.33263842656225817
+23
+0.19204888511854235
+33
+0.7938622211774866
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2715981379732598
+20
+0.2715981379732778
+30
+0.7938622211774844
+11
+0.38998682518331773
+21
+0.22515899850001475
+31
+7.206242211372932e-17
+12
+0.31842290936903583
+22
+0.3184229093690527
+32
+-3.290439660368124e-15
+13
+0.31842290936903583
+23
+0.3184229093690527
+33
+-3.290439660368124e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.0922127616591244
+20
+8.826273045769994e-15
+30
+-0.3441427116181453
+11
+-8.215650382226158e-15
+21
+1.1046719095020308e-14
+31
+-0.3562827520000011
+12
+0.08907068799998896
+22
+0.02386641891889696
+32
+-0.3441427116181431
+13
+0.08907068799998896
+23
+0.02386641891889696
+33
+-0.3441427116181431
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17207135580906174
+20
+0.04610638082957619
+30
+-0.308549914162236
+11
+0.0922127616591244
+21
+8.826273045769994e-15
+31
+-0.3441427116181453
+12
+0.08907068799998896
+22
+0.02386641891889696
+32
+-0.3441427116181431
+13
+0.08907068799998896
+23
+0.02386641891889696
+33
+-0.3441427116181431
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.0922127616591244
+20
+8.826273045769994e-15
+30
+-0.3441427116181453
+11
+0.17207135580906174
+21
+0.04610638082957619
+31
+-0.308549914162236
+12
+0.1781413759999918
+22
+1.3322676295501878e-14
+32
+-0.308549914162236
+13
+0.1781413759999918
+23
+1.3322676295501878e-14
+33
+-0.308549914162236
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.24334564508110312
+20
+0.06520426908112564
+30
+-0.2519299499590094
+11
+0.1781413759999918
+21
+1.3322676295501878e-14
+31
+-0.308549914162236
+12
+0.17207135580906174
+22
+0.04610638082957619
+32
+-0.308549914162236
+13
+0.17207135580906174
+23
+0.04610638082957619
+33
+-0.308549914162236
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.1781413759999918
+20
+1.3322676295501878e-14
+30
+-0.308549914162236
+11
+0.24334564508110312
+21
+0.06520426908112564
+31
+-0.2519299499590094
+12
+0.25192994995899787
+22
+8.826273045769994e-15
+32
+-0.2519299499590072
+13
+0.25192994995899787
+23
+8.826273045769994e-15
+33
+-0.2519299499590072
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.25192994995899787
+20
+8.826273045769994e-15
+30
+-0.2519299499590072
+11
+0.2980363307885686
+21
+0.07985859414994045
+31
+-0.17814137600000218
+12
+0.3085499141622233
+22
+6.6058269965196814e-15
+32
+-0.17814137600000665
+13
+0.3085499141622233
+23
+6.6058269965196814e-15
+33
+-0.17814137600000665
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2980363307885686
+20
+0.07985859414994045
+30
+-0.17814137600000218
+11
+0.25192994995899787
+21
+8.826273045769994e-15
+31
+-0.2519299499590072
+12
+0.24334564508110312
+22
+0.06520426908112564
+32
+-0.2519299499590094
+13
+0.24334564508110312
+23
+0.06520426908112564
+33
+-0.2519299499590094
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2980363307885686
+20
+0.07985859414994045
+30
+-0.17814137600000218
+11
+0.34414271161813936
+21
+1.3322676295501878e-14
+31
+-0.0922127616591381
+12
+0.3085499141622233
+22
+6.6058269965196814e-15
+32
+-0.17814137600000665
+13
+0.3085499141622233
+23
+6.6058269965196814e-15
+33
+-0.17814137600000665
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.34414271161813936
+20
+1.3322676295501878e-14
+30
+-0.0922127616591381
+11
+0.2980363307885686
+21
+0.07985859414994045
+31
+-0.17814137600000218
+12
+0.3324163330811115
+22
+0.08907068800001161
+32
+-0.0922127616591392
+13
+0.3324163330811115
+23
+0.08907068800001161
+33
+-0.0922127616591392
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.34414271161813936
+20
+1.3322676295501878e-14
+30
+-0.0922127616591381
+11
+0.34414271161813714
+21
+0.0922127616591436
+31
+-1.0511651486801586e-15
+12
+0.3562827519999918
+22
+4.3298697960381105e-15
+32
+-1.0504778341596352e-15
+13
+0.3562827519999918
+23
+4.3298697960381105e-15
+33
+-1.0504778341596352e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.34414271161813714
+20
+0.0922127616591436
+30
+-1.0511651486801586e-15
+11
+0.34414271161813936
+21
+1.3322676295501878e-14
+31
+-0.0922127616591381
+12
+0.3324163330811115
+22
+0.08907068800001161
+32
+-0.0922127616591392
+13
+0.3324163330811115
+23
+0.08907068800001161
+33
+-0.0922127616591392
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.08907068799998896
+20
+0.02386641891889696
+30
+-0.3441427116181431
+11
+-8.215650382226158e-15
+21
+1.1046719095020308e-14
+31
+-0.3562827520000011
+12
+0.07985859414992125
+22
+0.04610638082956947
+32
+-0.3441427116181476
+13
+0.07985859414992125
+23
+0.04610638082956947
+33
+-0.3441427116181476
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.15427495708110595
+20
+0.08907068800000262
+30
+-0.3085499141622349
+11
+0.08907068799998896
+21
+0.02386641891889696
+31
+-0.3441427116181431
+12
+0.07985859414992125
+22
+0.04610638082956947
+32
+-0.3441427116181476
+13
+0.07985859414992125
+23
+0.04610638082956947
+33
+-0.3441427116181476
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.08907068799998896
+20
+0.02386641891889696
+30
+-0.3441427116181431
+11
+0.15427495708110595
+21
+0.08907068800000262
+31
+-0.3085499141622349
+12
+0.17207135580906174
+22
+0.04610638082957619
+32
+-0.308549914162236
+13
+0.17207135580906174
+23
+0.04610638082957619
+33
+-0.308549914162236
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2181777366386336
+20
+0.1259649749795123
+30
+-0.251929949959006
+11
+0.17207135580906174
+21
+0.04610638082957619
+31
+-0.308549914162236
+12
+0.15427495708110595
+22
+0.08907068800000262
+32
+-0.3085499141622349
+13
+0.15427495708110595
+23
+0.08907068800000262
+33
+-0.3085499141622349
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17207135580906174
+20
+0.04610638082957619
+30
+-0.308549914162236
+11
+0.2181777366386336
+21
+0.1259649749795123
+31
+-0.251929949959006
+12
+0.24334564508110312
+22
+0.06520426908112564
+32
+-0.2519299499590094
+13
+0.24334564508110312
+23
+0.06520426908112564
+33
+-0.2519299499590094
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2181777366386336
+20
+0.1259649749795123
+30
+-0.251929949959006
+11
+0.2980363307885686
+21
+0.07985859414994045
+31
+-0.17814137600000218
+12
+0.24334564508110312
+22
+0.06520426908112564
+32
+-0.2519299499590094
+13
+0.24334564508110312
+23
+0.06520426908112564
+33
+-0.2519299499590094
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2980363307885686
+20
+0.07985859414994045
+30
+-0.17814137600000218
+11
+0.2181777366386336
+21
+0.1259649749795123
+31
+-0.251929949959006
+12
+0.26721206399999353
+22
+0.15427495708112848
+32
+-0.1781413760000044
+13
+0.26721206399999353
+23
+0.15427495708112848
+33
+-0.1781413760000044
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.26721206399999353
+20
+0.15427495708112848
+30
+-0.1781413760000044
+11
+0.3324163330811115
+21
+0.08907068800001161
+31
+-0.0922127616591392
+12
+0.2980363307885686
+22
+0.07985859414994045
+32
+-0.17814137600000218
+13
+0.2980363307885686
+23
+0.07985859414994045
+33
+-0.17814137600000218
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3324163330811115
+20
+0.08907068800001161
+30
+-0.0922127616591392
+11
+0.26721206399999353
+21
+0.15427495708112848
+31
+-0.1781413760000044
+12
+0.2980363307885675
+22
+0.17207135580907973
+32
+-0.0922127616591381
+13
+0.2980363307885675
+23
+0.17207135580907973
+33
+-0.0922127616591381
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2980363307885675
+20
+0.17207135580907973
+30
+-0.0922127616591381
+11
+0.34414271161813714
+21
+0.0922127616591436
+31
+-1.0511651486801586e-15
+12
+0.3324163330811115
+22
+0.08907068800001161
+32
+-0.0922127616591392
+13
+0.3324163330811115
+23
+0.08907068800001161
+33
+-0.0922127616591392
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.34414271161813714
+20
+0.0922127616591436
+30
+-1.0511651486801586e-15
+11
+0.2980363307885675
+21
+0.17207135580907973
+31
+-0.0922127616591381
+12
+0.30854991416222677
+22
+0.17814137600001212
+32
+-3.291745508012748e-15
+13
+0.30854991416222677
+23
+0.17814137600001212
+33
+-3.291745508012748e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.07985859414992125
+20
+0.04610638082956947
+30
+-0.3441427116181476
+11
+-8.215650382226158e-15
+21
+1.1046719095020308e-14
+31
+-0.3562827520000011
+12
+0.06520426908110866
+22
+0.06520426908112797
+32
+-0.3441427116181431
+13
+0.06520426908110866
+23
+0.06520426908112797
+33
+-0.3441427116181431
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.12596497497949322
+20
+0.1259649749795123
+30
+-0.30854991416223376
+11
+0.07985859414992125
+21
+0.04610638082956947
+31
+-0.3441427116181476
+12
+0.06520426908110866
+22
+0.06520426908112797
+32
+-0.3441427116181431
+13
+0.06520426908110866
+23
+0.06520426908112797
+33
+-0.3441427116181431
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.07985859414992125
+20
+0.04610638082956947
+30
+-0.3441427116181476
+11
+0.12596497497949322
+21
+0.1259649749795123
+31
+-0.30854991416223376
+12
+0.15427495708110595
+22
+0.08907068800000262
+32
+-0.3085499141622349
+13
+0.15427495708110595
+23
+0.08907068800000262
+33
+-0.3085499141622349
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17814137599999402
+20
+0.17814137600000535
+30
+-0.2519299499590083
+11
+0.15427495708110595
+21
+0.08907068800000262
+31
+-0.3085499141622349
+12
+0.12596497497949322
+22
+0.1259649749795123
+32
+-0.30854991416223376
+13
+0.12596497497949322
+23
+0.1259649749795123
+33
+-0.30854991416223376
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.15427495708110595
+20
+0.08907068800000262
+30
+-0.3085499141622349
+11
+0.17814137599999402
+21
+0.17814137600000535
+31
+-0.2519299499590083
+12
+0.2181777366386336
+22
+0.1259649749795123
+32
+-0.251929949959006
+13
+0.2181777366386336
+23
+0.1259649749795123
+33
+-0.251929949959006
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17814137599999402
+20
+0.17814137600000535
+30
+-0.2519299499590083
+11
+0.26721206399999353
+21
+0.15427495708112848
+31
+-0.1781413760000044
+12
+0.2181777366386336
+22
+0.1259649749795123
+32
+-0.251929949959006
+13
+0.2181777366386336
+23
+0.1259649749795123
+33
+-0.251929949959006
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.26721206399999353
+20
+0.15427495708112848
+30
+-0.1781413760000044
+11
+0.17814137599999402
+21
+0.17814137600000535
+31
+-0.2519299499590083
+12
+0.2181777366386336
+22
+0.2181777366386538
+32
+-0.17814137600000107
+13
+0.2181777366386336
+23
+0.2181777366386538
+33
+-0.17814137600000107
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2181777366386336
+20
+0.2181777366386538
+30
+-0.17814137600000107
+11
+0.2980363307885675
+21
+0.17207135580907973
+31
+-0.0922127616591381
+12
+0.26721206399999353
+22
+0.15427495708112848
+32
+-0.1781413760000044
+13
+0.26721206399999353
+23
+0.15427495708112848
+33
+-0.1781413760000044
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2980363307885675
+20
+0.17207135580907973
+30
+-0.0922127616591381
+11
+0.2181777366386336
+21
+0.2181777366386538
+31
+-0.17814137600000107
+12
+0.24334564508110534
+22
+0.24334564508112222
+32
+-0.09221276165913922
+13
+0.24334564508110534
+23
+0.24334564508112222
+33
+-0.09221276165913922
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.24334564508110534
+20
+0.24334564508112222
+30
+-0.09221276165913922
+11
+0.30854991416222677
+21
+0.17814137600001212
+31
+-3.291745508012748e-15
+12
+0.2980363307885675
+22
+0.17207135580907973
+32
+-0.0922127616591381
+13
+0.2980363307885675
+23
+0.17207135580907973
+33
+-0.0922127616591381
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.30854991416222677
+20
+0.17814137600001212
+30
+-3.291745508012748e-15
+11
+0.24334564508110534
+21
+0.24334564508112222
+31
+-0.09221276165913922
+12
+0.25192994995899565
+22
+0.2519299499590114
+32
+1.1796636210961499e-15
+13
+0.25192994995899565
+23
+0.2519299499590114
+33
+1.1796636210961499e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.06520426908110866
+20
+0.06520426908112797
+30
+-0.3441427116181431
+11
+-8.215650382226158e-15
+21
+1.1046719095020308e-14
+31
+-0.3562827520000011
+12
+0.04610638082956259
+22
+0.07985859414994045
+32
+-0.34414271161814086
+13
+0.04610638082956259
+23
+0.07985859414994045
+33
+-0.34414271161814086
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.08907068799999018
+20
+0.1542749570811307
+30
+-0.30854991416223265
+11
+0.06520426908110866
+21
+0.06520426908112797
+31
+-0.3441427116181431
+12
+0.04610638082956259
+22
+0.07985859414994045
+32
+-0.34414271161814086
+13
+0.04610638082956259
+23
+0.07985859414994045
+33
+-0.34414271161814086
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.06520426908110866
+20
+0.06520426908112797
+30
+-0.3441427116181431
+11
+0.08907068799999018
+21
+0.1542749570811307
+31
+-0.30854991416223265
+12
+0.12596497497949322
+22
+0.1259649749795123
+32
+-0.30854991416223376
+13
+0.12596497497949322
+23
+0.1259649749795123
+33
+-0.30854991416223376
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.12596497497949433
+20
+0.2181777366386516
+30
+-0.251929949959006
+11
+0.12596497497949322
+21
+0.1259649749795123
+31
+-0.30854991416223376
+12
+0.08907068799999018
+22
+0.1542749570811307
+32
+-0.30854991416223265
+13
+0.08907068799999018
+23
+0.1542749570811307
+33
+-0.30854991416223265
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.12596497497949322
+20
+0.1259649749795123
+30
+-0.30854991416223376
+11
+0.12596497497949433
+21
+0.2181777366386516
+31
+-0.251929949959006
+12
+0.17814137599999402
+22
+0.17814137600000535
+32
+-0.2519299499590083
+13
+0.17814137599999402
+23
+0.17814137600000535
+33
+-0.2519299499590083
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.12596497497949433
+20
+0.2181777366386516
+30
+-0.251929949959006
+11
+0.2181777366386336
+21
+0.2181777366386538
+31
+-0.17814137600000107
+12
+0.17814137599999402
+22
+0.17814137600000535
+32
+-0.2519299499590083
+13
+0.17814137599999402
+23
+0.17814137600000535
+33
+-0.2519299499590083
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2181777366386336
+20
+0.2181777366386538
+30
+-0.17814137600000107
+11
+0.12596497497949433
+21
+0.2181777366386516
+31
+-0.251929949959006
+12
+0.15427495708110595
+22
+0.26721206400000586
+32
+-0.1781413760000033
+13
+0.15427495708110595
+23
+0.26721206400000586
+33
+-0.1781413760000033
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17207135580906951
+20
+0.2980363307885766
+30
+-0.09221276165913922
+11
+0.2181777366386336
+21
+0.2181777366386538
+31
+-0.17814137600000107
+12
+0.15427495708110595
+22
+0.26721206400000586
+32
+-0.1781413760000033
+13
+0.15427495708110595
+23
+0.26721206400000586
+33
+-0.1781413760000033
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.2181777366386336
+20
+0.2181777366386538
+30
+-0.17814137600000107
+11
+0.17207135580906951
+21
+0.2980363307885766
+31
+-0.09221276165913922
+12
+0.24334564508110534
+22
+0.24334564508112222
+32
+-0.09221276165913922
+13
+0.24334564508110534
+23
+0.24334564508112222
+33
+-0.09221276165913922
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.1781413759999918
+20
+0.30854991416223687
+30
+-1.064187472047551e-15
+11
+0.24334564508110534
+21
+0.24334564508112222
+31
+-0.09221276165913922
+12
+0.17207135580906951
+22
+0.2980363307885766
+32
+-0.09221276165913922
+13
+0.17207135580906951
+23
+0.2980363307885766
+33
+-0.09221276165913922
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.24334564508110534
+20
+0.24334564508112222
+30
+-0.09221276165913922
+11
+0.1781413759999918
+21
+0.30854991416223687
+31
+-1.064187472047551e-15
+12
+0.25192994995899565
+22
+0.2519299499590114
+32
+1.1796636210961499e-15
+13
+0.25192994995899565
+23
+0.2519299499590114
+33
+1.1796636210961499e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.04610638082956259
+20
+0.07985859414994045
+30
+-0.34414271161814086
+11
+-8.215650382226158e-15
+21
+1.1046719095020308e-14
+31
+-0.3562827520000011
+12
+0.023866418918875476
+22
+0.0890706880000004
+32
+-0.3441427116181442
+13
+0.023866418918875476
+23
+0.0890706880000004
+33
+-0.3441427116181442
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.04610638082956142
+20
+0.1720713558090775
+30
+-0.30854991416223154
+11
+0.04610638082956259
+21
+0.07985859414994045
+31
+-0.34414271161814086
+12
+0.023866418918875476
+22
+0.0890706880000004
+32
+-0.3441427116181442
+13
+0.023866418918875476
+23
+0.0890706880000004
+33
+-0.3441427116181442
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.04610638082956259
+20
+0.07985859414994045
+30
+-0.34414271161814086
+11
+0.04610638082956142
+21
+0.1720713558090775
+31
+-0.30854991416223154
+12
+0.08907068799999018
+22
+0.1542749570811307
+32
+-0.30854991416223265
+13
+0.08907068799999018
+23
+0.1542749570811307
+33
+-0.30854991416223265
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.06520426908110644
+20
+0.24334564508112
+30
+-0.2519299499590083
+11
+0.08907068799999018
+21
+0.1542749570811307
+31
+-0.30854991416223265
+12
+0.04610638082956142
+22
+0.1720713558090775
+32
+-0.30854991416223154
+13
+0.04610638082956142
+23
+0.1720713558090775
+33
+-0.30854991416223154
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.08907068799999018
+20
+0.1542749570811307
+30
+-0.30854991416223265
+11
+0.06520426908110644
+21
+0.24334564508112
+31
+-0.2519299499590083
+12
+0.12596497497949433
+22
+0.2181777366386516
+32
+-0.251929949959006
+13
+0.12596497497949433
+23
+0.2181777366386516
+33
+-0.251929949959006
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.07985859414992247
+20
+0.29803633078857883
+30
+-0.1781413760000033
+11
+0.12596497497949433
+21
+0.2181777366386516
+31
+-0.251929949959006
+12
+0.06520426908110644
+22
+0.24334564508112
+32
+-0.2519299499590083
+13
+0.06520426908110644
+23
+0.24334564508112
+33
+-0.2519299499590083
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.12596497497949433
+20
+0.2181777366386516
+30
+-0.251929949959006
+11
+0.07985859414992247
+21
+0.29803633078857883
+31
+-0.1781413760000033
+12
+0.15427495708110595
+22
+0.26721206400000586
+32
+-0.1781413760000033
+13
+0.15427495708110595
+23
+0.26721206400000586
+33
+-0.1781413760000033
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.08907068799998785
+20
+0.3324163330811273
+30
+-0.09221276165914372
+11
+0.15427495708110595
+21
+0.26721206400000586
+31
+-0.1781413760000033
+12
+0.07985859414992247
+22
+0.29803633078857883
+32
+-0.1781413760000033
+13
+0.07985859414992247
+23
+0.29803633078857883
+33
+-0.1781413760000033
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.15427495708110595
+20
+0.26721206400000586
+30
+-0.1781413760000033
+11
+0.08907068799998785
+21
+0.3324163330811273
+31
+-0.09221276165914372
+12
+0.17207135580906951
+22
+0.2980363307885766
+32
+-0.09221276165913922
+13
+0.17207135580906951
+23
+0.2980363307885766
+33
+-0.09221276165913922
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.09221276165912884
+20
+0.34414271161815735
+30
+4.776934118879337e-17
+11
+0.17207135580906951
+21
+0.2980363307885766
+31
+-0.09221276165913922
+12
+0.08907068799998785
+22
+0.3324163330811273
+32
+-0.09221276165914372
+13
+0.08907068799998785
+23
+0.3324163330811273
+33
+-0.09221276165914372
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.17207135580906951
+20
+0.2980363307885766
+30
+-0.09221276165913922
+11
+0.09221276165912884
+21
+0.34414271161815735
+31
+4.776934118879337e-17
+12
+0.1781413759999918
+22
+0.30854991416223687
+32
+-1.064187472047551e-15
+13
+0.1781413759999918
+23
+0.30854991416223687
+33
+-1.064187472047551e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.023866418918875476
+20
+0.0890706880000004
+30
+-0.3441427116181442
+11
+-8.215650382226158e-15
+21
+1.1046719095020308e-14
+31
+-0.3562827520000011
+12
+-1.1546319456101628e-14
+22
+0.09221276165914805
+32
+-0.3441427116181453
+13
+-1.1546319456101628e-14
+23
+0.09221276165914805
+33
+-0.3441427116181453
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+0.17814137600000535
+30
+-0.30854991416222927
+11
+0.023866418918875476
+21
+0.0890706880000004
+31
+-0.3441427116181442
+12
+-1.1546319456101628e-14
+22
+0.09221276165914805
+32
+-0.3441427116181453
+13
+-1.1546319456101628e-14
+23
+0.09221276165914805
+33
+-0.3441427116181453
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.023866418918875476
+20
+0.0890706880000004
+30
+-0.3441427116181442
+11
+-7.049916206369744e-15
+21
+0.17814137600000535
+31
+-0.30854991416222927
+12
+0.04610638082956142
+22
+0.1720713558090775
+32
+-0.30854991416223154
+13
+0.04610638082956142
+23
+0.1720713558090775
+33
+-0.30854991416223154
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.06520426908110644
+20
+0.24334564508112
+30
+-0.2519299499590083
+11
+-7.049916206369744e-15
+21
+0.17814137600000535
+31
+-0.30854991416222927
+12
+-1.0436096431476471e-14
+22
+0.2519299499590092
+32
+-0.2519299499590072
+13
+-1.0436096431476471e-14
+23
+0.2519299499590092
+33
+-0.2519299499590072
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+0.17814137600000535
+30
+-0.30854991416222927
+11
+0.06520426908110644
+21
+0.24334564508112
+31
+-0.2519299499590083
+12
+0.04610638082956142
+22
+0.1720713558090775
+32
+-0.30854991416223154
+13
+0.04610638082956142
+23
+0.1720713558090775
+33
+-0.30854991416223154
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-1.0436096431476471e-14
+20
+0.2519299499590092
+30
+-0.2519299499590072
+11
+0.07985859414992247
+21
+0.29803633078857883
+31
+-0.1781413760000033
+12
+0.06520426908110644
+22
+0.24334564508112
+32
+-0.2519299499590083
+13
+0.06520426908110644
+23
+0.24334564508112
+33
+-0.2519299499590083
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.07985859414992247
+20
+0.29803633078857883
+30
+-0.1781413760000033
+11
+-1.0436096431476471e-14
+21
+0.2519299499590092
+31
+-0.2519299499590072
+12
+-7.049916206369744e-15
+22
+0.30854991416224353
+32
+-0.17814137600000332
+13
+-7.049916206369744e-15
+23
+0.30854991416224353
+33
+-0.17814137600000332
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-1.1546319456101628e-14
+20
+0.3441427116181529
+30
+-0.09221276165914259
+11
+0.07985859414992247
+21
+0.29803633078857883
+31
+-0.1781413760000033
+12
+-7.049916206369744e-15
+22
+0.30854991416224353
+32
+-0.17814137600000332
+13
+-7.049916206369744e-15
+23
+0.30854991416224353
+33
+-0.17814137600000332
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.07985859414992247
+20
+0.29803633078857883
+30
+-0.1781413760000033
+11
+-1.1546319456101628e-14
+21
+0.3441427116181529
+31
+-0.09221276165914259
+12
+0.08907068799998785
+22
+0.3324163330811273
+32
+-0.09221276165914372
+13
+0.08907068799998785
+23
+0.3324163330811273
+33
+-0.09221276165914372
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-1.1546319456101628e-14
+20
+0.3441427116181529
+30
+-0.09221276165914259
+11
+0.09221276165912884
+21
+0.34414271161815735
+31
+4.776934118879337e-17
+12
+0.08907068799998785
+22
+0.3324163330811273
+32
+-0.09221276165914372
+13
+0.08907068799998785
+23
+0.3324163330811273
+33
+-0.09221276165914372
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.09221276165912884
+20
+0.34414271161815735
+30
+4.776934118879337e-17
+11
+-1.1546319456101628e-14
+21
+0.3441427116181529
+31
+-0.09221276165914259
+12
+-7.049916206369744e-15
+22
+0.35628275200001536
+32
+-1.0788020009459382e-15
+13
+-7.049916206369744e-15
+23
+0.35628275200001536
+33
+-1.0788020009459382e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-8.215650382226158e-15
+20
+1.1046719095020308e-14
+30
+-0.3562827520000011
+11
+-0.02386641891888963
+21
+0.08907068800000262
+31
+-0.3441427116181476
+12
+-1.1546319456101628e-14
+22
+0.09221276165914805
+32
+-0.3441427116181453
+13
+-1.1546319456101628e-14
+23
+0.09221276165914805
+33
+-0.3441427116181453
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+0.17814137600000535
+30
+-0.30854991416222927
+11
+-0.02386641891888963
+21
+0.08907068800000262
+31
+-0.3441427116181476
+12
+-0.04610638082957336
+22
+0.17207135580908417
+32
+-0.3085499141622349
+13
+-0.04610638082957336
+23
+0.17207135580908417
+33
+-0.3085499141622349
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.02386641891888963
+20
+0.08907068800000262
+30
+-0.3441427116181476
+11
+-7.049916206369744e-15
+21
+0.17814137600000535
+31
+-0.30854991416222927
+12
+-1.1546319456101628e-14
+22
+0.09221276165914805
+32
+-0.3441427116181453
+13
+-1.1546319456101628e-14
+23
+0.09221276165914805
+33
+-0.3441427116181453
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-1.0436096431476471e-14
+20
+0.2519299499590092
+30
+-0.2519299499590072
+11
+-0.04610638082957336
+21
+0.17207135580908417
+31
+-0.3085499141622349
+12
+-0.06520426908112398
+22
+0.243345645081129
+32
+-0.251929949959006
+13
+-0.06520426908112398
+23
+0.243345645081129
+33
+-0.251929949959006
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.04610638082957336
+20
+0.17207135580908417
+30
+-0.3085499141622349
+11
+-1.0436096431476471e-14
+21
+0.2519299499590092
+31
+-0.2519299499590072
+12
+-7.049916206369744e-15
+22
+0.17814137600000535
+32
+-0.30854991416222927
+13
+-7.049916206369744e-15
+23
+0.17814137600000535
+33
+-0.30854991416222927
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.06520426908112398
+20
+0.243345645081129
+30
+-0.251929949959006
+11
+-7.049916206369744e-15
+21
+0.30854991416224353
+31
+-0.17814137600000332
+12
+-1.0436096431476471e-14
+22
+0.2519299499590092
+32
+-0.2519299499590072
+13
+-1.0436096431476471e-14
+23
+0.2519299499590092
+33
+-0.2519299499590072
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+0.30854991416224353
+30
+-0.17814137600000332
+11
+-0.06520426908112398
+21
+0.243345645081129
+31
+-0.251929949959006
+12
+-0.07985859414994106
+22
+0.2980363307885855
+32
+-0.17814137600000443
+13
+-0.07985859414994106
+23
+0.2980363307885855
+33
+-0.17814137600000443
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.08907068800001211
+20
+0.3324163330811183
+30
+-0.09221276165914037
+11
+-7.049916206369744e-15
+21
+0.30854991416224353
+31
+-0.17814137600000332
+12
+-0.07985859414994106
+22
+0.2980363307885855
+32
+-0.17814137600000443
+13
+-0.07985859414994106
+23
+0.2980363307885855
+33
+-0.17814137600000443
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+0.30854991416224353
+30
+-0.17814137600000332
+11
+-0.08907068800001211
+21
+0.3324163330811183
+31
+-0.09221276165914037
+12
+-1.1546319456101628e-14
+22
+0.3441427116181529
+32
+-0.09221276165914259
+13
+-1.1546319456101628e-14
+23
+0.3441427116181529
+33
+-0.09221276165914259
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.08907068800001211
+20
+0.3324163330811183
+30
+-0.09221276165914037
+11
+-7.049916206369744e-15
+21
+0.35628275200001536
+31
+-1.0788020009459382e-15
+12
+-1.1546319456101628e-14
+22
+0.3441427116181529
+32
+-0.09221276165914259
+13
+-1.1546319456101628e-14
+23
+0.3441427116181529
+33
+-0.09221276165914259
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+0.35628275200001536
+30
+-1.0788020009459382e-15
+11
+-0.08907068800001211
+21
+0.3324163330811183
+31
+-0.09221276165914037
+12
+-0.0922127616591486
+22
+0.34414271161815735
+32
+-2.205457581532869e-15
+13
+-0.0922127616591486
+23
+0.34414271161815735
+33
+-2.205457581532869e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-8.215650382226158e-15
+20
+1.1046719095020308e-14
+30
+-0.3562827520000011
+11
+-0.04610638082957785
+21
+0.079858594149945
+31
+-0.34414271161814647
+12
+-0.02386641891888963
+22
+0.08907068800000262
+32
+-0.3441427116181476
+13
+-0.02386641891888963
+23
+0.08907068800000262
+33
+-0.3441427116181476
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.04610638082957336
+20
+0.17207135580908417
+30
+-0.3085499141622349
+11
+-0.04610638082957785
+21
+0.079858594149945
+31
+-0.34414271161814647
+12
+-0.08907068800000761
+22
+0.15427495708112615
+32
+-0.30854991416222927
+13
+-0.08907068800000761
+23
+0.15427495708112615
+33
+-0.30854991416222927
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.04610638082957785
+20
+0.079858594149945
+30
+-0.34414271161814647
+11
+-0.04610638082957336
+21
+0.17207135580908417
+31
+-0.3085499141622349
+12
+-0.02386641891888963
+22
+0.08907068800000262
+32
+-0.3441427116181476
+13
+-0.02386641891888963
+23
+0.08907068800000262
+33
+-0.3441427116181476
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.06520426908112398
+20
+0.243345645081129
+30
+-0.251929949959006
+11
+-0.08907068800000761
+21
+0.15427495708112615
+31
+-0.30854991416222927
+12
+-0.12596497497951514
+22
+0.21817773663864937
+32
+-0.2519299499590072
+13
+-0.12596497497951514
+23
+0.21817773663864937
+33
+-0.2519299499590072
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.08907068800000761
+20
+0.15427495708112615
+30
+-0.30854991416222927
+11
+-0.06520426908112398
+21
+0.243345645081129
+31
+-0.251929949959006
+12
+-0.04610638082957336
+22
+0.17207135580908417
+32
+-0.3085499141622349
+13
+-0.04610638082957336
+23
+0.17207135580908417
+33
+-0.3085499141622349
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.15427495708112787
+20
+0.2672120640000014
+30
+-0.17814137599999996
+11
+-0.06520426908112398
+21
+0.243345645081129
+31
+-0.251929949959006
+12
+-0.12596497497951514
+22
+0.21817773663864937
+32
+-0.2519299499590072
+13
+-0.12596497497951514
+23
+0.21817773663864937
+33
+-0.2519299499590072
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.06520426908112398
+20
+0.243345645081129
+30
+-0.251929949959006
+11
+-0.15427495708112787
+21
+0.2672120640000014
+31
+-0.17814137599999996
+12
+-0.07985859414994106
+22
+0.2980363307885855
+32
+-0.17814137600000443
+13
+-0.07985859414994106
+23
+0.2980363307885855
+33
+-0.17814137600000443
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.15427495708112787
+20
+0.2672120640000014
+30
+-0.17814137599999996
+11
+-0.08907068800001211
+21
+0.3324163330811183
+31
+-0.09221276165914037
+12
+-0.07985859414994106
+22
+0.2980363307885855
+32
+-0.17814137600000443
+13
+-0.07985859414994106
+23
+0.2980363307885855
+33
+-0.17814137600000443
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.08907068800001211
+20
+0.3324163330811183
+30
+-0.09221276165914037
+11
+-0.15427495708112787
+21
+0.2672120640000014
+31
+-0.17814137599999996
+12
+-0.17207135580907917
+22
+0.2980363307885855
+32
+-0.0922127616591415
+13
+-0.17207135580907917
+23
+0.2980363307885855
+33
+-0.0922127616591415
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.17814137600000818
+20
+0.30854991416224353
+30
+-6.688561244316844e-15
+11
+-0.08907068800001211
+21
+0.3324163330811183
+31
+-0.09221276165914037
+12
+-0.17207135580907917
+22
+0.2980363307885855
+32
+-0.0922127616591415
+13
+-0.17207135580907917
+23
+0.2980363307885855
+33
+-0.0922127616591415
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.08907068800001211
+20
+0.3324163330811183
+30
+-0.09221276165914037
+11
+-0.17814137600000818
+21
+0.30854991416224353
+31
+-6.688561244316844e-15
+12
+-0.0922127616591486
+22
+0.34414271161815735
+32
+-2.205457581532869e-15
+13
+-0.0922127616591486
+23
+0.34414271161815735
+33
+-2.205457581532869e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-8.215650382226158e-15
+20
+1.1046719095020308e-14
+30
+-0.3562827520000011
+11
+-0.06520426908112176
+21
+0.06520426908111898
+31
+-0.3441427116181431
+12
+-0.04610638082957785
+22
+0.079858594149945
+32
+-0.34414271161814647
+13
+-0.04610638082957785
+23
+0.079858594149945
+33
+-0.34414271161814647
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.08907068800000761
+20
+0.15427495708112615
+30
+-0.30854991416222927
+11
+-0.06520426908112176
+21
+0.06520426908111898
+31
+-0.3441427116181431
+12
+-0.1259649749795107
+22
+0.12596497497950565
+32
+-0.30854991416223826
+13
+-0.1259649749795107
+23
+0.12596497497950565
+33
+-0.30854991416223826
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.06520426908112176
+20
+0.06520426908111898
+30
+-0.3441427116181431
+11
+-0.08907068800000761
+21
+0.15427495708112615
+31
+-0.30854991416222927
+12
+-0.04610638082957785
+22
+0.079858594149945
+32
+-0.34414271161814647
+13
+-0.04610638082957785
+23
+0.079858594149945
+33
+-0.34414271161814647
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.12596497497951514
+20
+0.21817773663864937
+30
+-0.2519299499590072
+11
+-0.1259649749795107
+21
+0.12596497497950565
+31
+-0.30854991416223826
+12
+-0.17814137600001045
+22
+0.1781413760000099
+32
+-0.25192994995900836
+13
+-0.17814137600001045
+23
+0.1781413760000099
+33
+-0.25192994995900836
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.1259649749795107
+20
+0.12596497497950565
+30
+-0.30854991416223826
+11
+-0.12596497497951514
+21
+0.21817773663864937
+31
+-0.2519299499590072
+12
+-0.08907068800000761
+22
+0.15427495708112615
+32
+-0.30854991416222927
+13
+-0.08907068800000761
+23
+0.15427495708112615
+33
+-0.30854991416222927
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.21817773663864884
+20
+0.2181777366386538
+30
+-0.17814137600000332
+11
+-0.12596497497951514
+21
+0.21817773663864937
+31
+-0.2519299499590072
+12
+-0.17814137600001045
+22
+0.1781413760000099
+32
+-0.25192994995900836
+13
+-0.17814137600001045
+23
+0.1781413760000099
+33
+-0.25192994995900836
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.12596497497951514
+20
+0.21817773663864937
+30
+-0.2519299499590072
+11
+-0.21817773663864884
+21
+0.2181777366386538
+31
+-0.17814137600000332
+12
+-0.15427495708112787
+22
+0.2672120640000014
+32
+-0.17814137599999996
+13
+-0.15427495708112787
+23
+0.2672120640000014
+33
+-0.17814137599999996
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.24334564508112175
+20
+0.24334564508111778
+30
+-0.09221276165914039
+11
+-0.15427495708112787
+21
+0.2672120640000014
+31
+-0.17814137599999996
+12
+-0.21817773663864884
+22
+0.2181777366386538
+32
+-0.17814137600000332
+13
+-0.21817773663864884
+23
+0.2181777366386538
+33
+-0.17814137600000332
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.15427495708112787
+20
+0.2672120640000014
+30
+-0.17814137599999996
+11
+-0.24334564508112175
+21
+0.24334564508111778
+31
+-0.09221276165914039
+12
+-0.17207135580907917
+22
+0.2980363307885855
+32
+-0.0922127616591415
+13
+-0.17207135580907917
+23
+0.2980363307885855
+33
+-0.0922127616591415
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.24334564508112175
+20
+0.24334564508111778
+30
+-0.09221276165914039
+11
+-0.17814137600000818
+21
+0.30854991416224353
+31
+-6.688561244316844e-15
+12
+-0.17207135580907917
+22
+0.2980363307885855
+32
+-0.0922127616591415
+13
+-0.17207135580907917
+23
+0.2980363307885855
+33
+-0.0922127616591415
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.17814137600000818
+20
+0.30854991416224353
+30
+-6.688561244316844e-15
+11
+-0.24334564508112175
+21
+0.24334564508111778
+31
+-0.09221276165914039
+12
+-0.2519299499590143
+22
+0.2519299499590092
+32
+-3.337991716009964e-15
+13
+-0.2519299499590143
+23
+0.2519299499590092
+33
+-3.337991716009964e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-8.215650382226158e-15
+20
+1.1046719095020308e-14
+30
+-0.3562827520000011
+11
+-0.0798585941499399
+21
+0.04610638082957841
+31
+-0.3441427116181442
+12
+-0.06520426908112176
+22
+0.06520426908111898
+32
+-0.3441427116181431
+13
+-0.06520426908112176
+23
+0.06520426908111898
+33
+-0.3441427116181431
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.1259649749795107
+20
+0.12596497497950565
+30
+-0.30854991416223826
+11
+-0.0798585941499399
+21
+0.04610638082957841
+31
+-0.3441427116181442
+12
+-0.15427495708112454
+22
+0.08907068800001161
+32
+-0.3085499141622316
+13
+-0.15427495708112454
+23
+0.08907068800001161
+33
+-0.3085499141622316
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.0798585941499399
+20
+0.04610638082957841
+30
+-0.3441427116181442
+11
+-0.1259649749795107
+21
+0.12596497497950565
+31
+-0.30854991416223826
+12
+-0.06520426908112176
+22
+0.06520426908111898
+32
+-0.3441427116181431
+13
+-0.06520426908112176
+23
+0.06520426908111898
+33
+-0.3441427116181431
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.17814137600001045
+20
+0.1781413760000099
+30
+-0.25192994995900836
+11
+-0.15427495708112454
+21
+0.08907068800001161
+31
+-0.3085499141622316
+12
+-0.2181777366386477
+22
+0.12596497497951464
+32
+-0.2519299499590061
+13
+-0.2181777366386477
+23
+0.12596497497951464
+33
+-0.2519299499590061
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.15427495708112454
+20
+0.08907068800001161
+30
+-0.3085499141622316
+11
+-0.17814137600001045
+21
+0.1781413760000099
+31
+-0.25192994995900836
+12
+-0.1259649749795107
+22
+0.12596497497950565
+32
+-0.30854991416223826
+13
+-0.1259649749795107
+23
+0.12596497497950565
+33
+-0.30854991416223826
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.26721206400000763
+20
+0.15427495708112615
+30
+-0.17814137599999885
+11
+-0.17814137600001045
+21
+0.1781413760000099
+31
+-0.25192994995900836
+12
+-0.2181777366386477
+22
+0.12596497497951464
+32
+-0.2519299499590061
+13
+-0.2181777366386477
+23
+0.12596497497951464
+33
+-0.2519299499590061
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.17814137600001045
+20
+0.1781413760000099
+30
+-0.25192994995900836
+11
+-0.26721206400000763
+21
+0.15427495708112615
+31
+-0.17814137599999885
+12
+-0.21817773663864884
+22
+0.2181777366386538
+32
+-0.17814137600000332
+13
+-0.21817773663864884
+23
+0.2181777366386538
+33
+-0.17814137600000332
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.29803633078858505
+20
+0.17207135580907973
+30
+-0.09221276165914039
+11
+-0.21817773663864884
+21
+0.2181777366386538
+31
+-0.17814137600000332
+12
+-0.26721206400000763
+22
+0.15427495708112615
+32
+-0.17814137599999885
+13
+-0.26721206400000763
+23
+0.15427495708112615
+33
+-0.17814137599999885
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.21817773663864884
+20
+0.2181777366386538
+30
+-0.17814137600000332
+11
+-0.29803633078858505
+21
+0.17207135580907973
+31
+-0.09221276165914039
+12
+-0.24334564508112175
+22
+0.24334564508111778
+32
+-0.09221276165914039
+13
+-0.24334564508112175
+23
+0.24334564508111778
+33
+-0.09221276165914039
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.30854991416224087
+20
+0.17814137600001434
+30
+-1.1050199985371004e-15
+11
+-0.24334564508112175
+21
+0.24334564508111778
+31
+-0.09221276165914039
+12
+-0.29803633078858505
+22
+0.17207135580907973
+32
+-0.09221276165914039
+13
+-0.29803633078858505
+23
+0.17207135580907973
+33
+-0.09221276165914039
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.24334564508112175
+20
+0.24334564508111778
+30
+-0.09221276165914039
+11
+-0.30854991416224087
+21
+0.17814137600001434
+31
+-1.1050199985371004e-15
+12
+-0.2519299499590143
+22
+0.2519299499590092
+32
+-3.337991716009964e-15
+13
+-0.2519299499590143
+23
+0.2519299499590092
+33
+-3.337991716009964e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-8.215650382226158e-15
+20
+1.1046719095020308e-14
+30
+-0.3562827520000011
+11
+-0.08907068800000317
+21
+0.023866418918890242
+31
+-0.3441427116181431
+12
+-0.0798585941499399
+22
+0.04610638082957841
+32
+-0.3441427116181442
+13
+-0.0798585941499399
+23
+0.04610638082957841
+33
+-0.3441427116181442
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.15427495708112454
+20
+0.08907068800001161
+30
+-0.3085499141622316
+11
+-0.08907068800000317
+21
+0.023866418918890242
+31
+-0.3441427116181431
+12
+-0.17207135580908034
+22
+0.04610638082957169
+32
+-0.30854991416223604
+13
+-0.17207135580908034
+23
+0.04610638082957169
+33
+-0.30854991416223604
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.08907068800000317
+20
+0.023866418918890242
+30
+-0.3441427116181431
+11
+-0.15427495708112454
+21
+0.08907068800001161
+31
+-0.3085499141622316
+12
+-0.0798585941499399
+22
+0.04610638082957841
+32
+-0.3441427116181442
+13
+-0.0798585941499399
+23
+0.04610638082957841
+33
+-0.3441427116181442
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2181777366386477
+20
+0.12596497497951464
+30
+-0.2519299499590061
+11
+-0.17207135580908034
+21
+0.04610638082957169
+31
+-0.30854991416223604
+12
+-0.24334564508112397
+22
+0.06520426908111898
+32
+-0.251929949959005
+13
+-0.24334564508112397
+23
+0.06520426908111898
+33
+-0.251929949959005
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.17207135580908034
+20
+0.04610638082957169
+30
+-0.30854991416223604
+11
+-0.2181777366386477
+21
+0.12596497497951464
+31
+-0.2519299499590061
+12
+-0.15427495708112454
+22
+0.08907068800001161
+32
+-0.3085499141622316
+13
+-0.15427495708112454
+23
+0.08907068800001161
+33
+-0.3085499141622316
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.29803633078858727
+20
+0.079858594149945
+30
+-0.1781413760000011
+11
+-0.2181777366386477
+21
+0.12596497497951464
+31
+-0.2519299499590061
+12
+-0.24334564508112397
+22
+0.06520426908111898
+32
+-0.251929949959005
+13
+-0.24334564508112397
+23
+0.06520426908111898
+33
+-0.251929949959005
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2181777366386477
+20
+0.12596497497951464
+30
+-0.2519299499590061
+11
+-0.29803633078858727
+21
+0.079858594149945
+31
+-0.1781413760000011
+12
+-0.26721206400000763
+22
+0.15427495708112615
+32
+-0.17814137599999885
+13
+-0.26721206400000763
+23
+0.15427495708112615
+33
+-0.17814137599999885
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3324163330811223
+20
+0.08907068800000706
+30
+-0.09221276165914039
+11
+-0.26721206400000763
+21
+0.15427495708112615
+31
+-0.17814137599999885
+12
+-0.29803633078858727
+22
+0.079858594149945
+32
+-0.1781413760000011
+13
+-0.29803633078858727
+23
+0.079858594149945
+33
+-0.1781413760000011
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.26721206400000763
+20
+0.15427495708112615
+30
+-0.17814137599999885
+11
+-0.3324163330811223
+21
+0.08907068800000706
+31
+-0.09221276165914039
+12
+-0.29803633078858505
+22
+0.17207135580907973
+32
+-0.09221276165914039
+13
+-0.29803633078858505
+23
+0.17207135580907973
+33
+-0.09221276165914039
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3441427116181502
+20
+0.09221276165915027
+30
+-1.1082712068578987e-15
+11
+-0.29803633078858505
+21
+0.17207135580907973
+31
+-0.09221276165914039
+12
+-0.3324163330811223
+22
+0.08907068800000706
+32
+-0.09221276165914039
+13
+-0.3324163330811223
+23
+0.08907068800000706
+33
+-0.09221276165914039
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.29803633078858505
+20
+0.17207135580907973
+30
+-0.09221276165914039
+11
+-0.3441427116181502
+21
+0.09221276165915027
+31
+-1.1082712068578987e-15
+12
+-0.30854991416224087
+22
+0.17814137600001434
+32
+-1.1050199985371004e-15
+13
+-0.30854991416224087
+23
+0.17814137600001434
+33
+-1.1050199985371004e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-8.215650382226158e-15
+20
+1.1046719095020308e-14
+30
+-0.3562827520000011
+11
+-0.09221276165914521
+21
+8.826273045769994e-15
+31
+-0.34414271161814647
+12
+-0.08907068800000317
+22
+0.023866418918890242
+32
+-0.3441427116181431
+13
+-0.08907068800000317
+23
+0.023866418918890242
+33
+-0.3441427116181431
+70
+0
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.17207135580908034
+20
+0.04610638082957169
+30
+-0.30854991416223604
+11
+-0.09221276165914521
+21
+8.826273045769994e-15
+31
+-0.34414271161814647
+12
+-0.17814137600000707
+22
+1.3322676295501878e-14
+32
+-0.30854991416223604
+13
+-0.17814137600000707
+23
+1.3322676295501878e-14
+33
+-0.30854991416223604
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.09221276165914521
+20
+8.826273045769994e-15
+30
+-0.34414271161814647
+11
+-0.17207135580908034
+21
+0.04610638082957169
+31
+-0.30854991416223604
+12
+-0.08907068800000317
+22
+0.023866418918890242
+32
+-0.3441427116181431
+13
+-0.08907068800000317
+23
+0.023866418918890242
+33
+-0.3441427116181431
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.24334564508112397
+20
+0.06520426908111898
+30
+-0.251929949959005
+11
+-0.17814137600000707
+21
+1.3322676295501878e-14
+31
+-0.30854991416223604
+12
+-0.2519299499590165
+22
+1.3322676295501878e-14
+32
+-0.251929949959005
+13
+-0.2519299499590165
+23
+1.3322676295501878e-14
+33
+-0.251929949959005
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.17814137600000707
+20
+1.3322676295501878e-14
+30
+-0.30854991416223604
+11
+-0.24334564508112397
+21
+0.06520426908111898
+31
+-0.251929949959005
+12
+-0.17207135580908034
+22
+0.04610638082957169
+32
+-0.30854991416223604
+13
+-0.17207135580908034
+23
+0.04610638082957169
+33
+-0.30854991416223604
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.29803633078858727
+20
+0.079858594149945
+30
+-0.1781413760000011
+11
+-0.2519299499590165
+21
+1.3322676295501878e-14
+31
+-0.251929949959005
+12
+-0.30854991416223865
+22
+6.6058269965196814e-15
+32
+-0.178141376
+13
+-0.30854991416223865
+23
+6.6058269965196814e-15
+33
+-0.178141376
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2519299499590165
+20
+1.3322676295501878e-14
+30
+-0.251929949959005
+11
+-0.29803633078858727
+21
+0.079858594149945
+31
+-0.1781413760000011
+12
+-0.24334564508112397
+22
+0.06520426908111898
+32
+-0.251929949959005
+13
+-0.24334564508112397
+23
+0.06520426908111898
+33
+-0.251929949959005
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3441427116181536
+20
+1.3322676295501878e-14
+30
+-0.09221276165913815
+11
+-0.29803633078858727
+21
+0.079858594149945
+31
+-0.1781413760000011
+12
+-0.30854991416223865
+22
+6.6058269965196814e-15
+32
+-0.178141376
+13
+-0.30854991416223865
+23
+6.6058269965196814e-15
+33
+-0.178141376
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.29803633078858727
+20
+0.079858594149945
+30
+-0.1781413760000011
+11
+-0.3441427116181536
+21
+1.3322676295501878e-14
+31
+-0.09221276165913815
+12
+-0.3324163330811223
+22
+0.08907068800000706
+32
+-0.09221276165914039
+13
+-0.3324163330811223
+23
+0.08907068800000706
+33
+-0.09221276165914039
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3441427116181502
+20
+0.09221276165915027
+30
+-1.1082712068578987e-15
+11
+-0.3441427116181536
+21
+1.3322676295501878e-14
+31
+-0.09221276165913815
+12
+-0.35628275200001047
+22
+1.3322676295501878e-14
+32
+1.1283270246018505e-15
+13
+-0.35628275200001047
+23
+1.3322676295501878e-14
+33
+1.1283270246018505e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3441427116181536
+20
+1.3322676295501878e-14
+30
+-0.09221276165913815
+11
+-0.3441427116181502
+21
+0.09221276165915027
+31
+-1.1082712068578987e-15
+12
+-0.3324163330811223
+22
+0.08907068800000706
+32
+-0.09221276165914039
+13
+-0.3324163330811223
+23
+0.08907068800000706
+33
+-0.09221276165914039
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.4349737833450727
+20
+0.11655087397603592
+30
+-1.1157228913145438e-15
+11
+-0.35628275200001047
+21
+1.3322676295501878e-14
+31
+1.1283270246018505e-15
+12
+-0.4503179970000113
+22
+8.826273045769994e-15
+32
+-4.474288446697922e-15
+13
+-0.4503179970000113
+23
+8.826273045769994e-15
+33
+-4.474288446697922e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.35628275200001047
+20
+1.3322676295501878e-14
+30
+1.1283270246018505e-15
+11
+-0.4349737833450727
+21
+0.11655087397603592
+31
+-1.1157228913145438e-15
+12
+-0.38998682518333744
+22
+0.22515899850000798
+32
+-1.1116135775444189e-15
+13
+-0.38998682518333744
+23
+0.22515899850000798
+33
+-1.1116135775444189e-15
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.35628275200001047
+20
+1.3322676295501878e-14
+30
+1.1283270246018505e-15
+11
+-0.38998682518333744
+21
+0.22515899850000798
+31
+-1.1116135775444189e-15
+12
+-0.3184229093690556
+22
+0.31842290936904827
+32
+1.132572953045013e-15
+13
+-0.3184229093690556
+23
+0.31842290936904827
+33
+1.132572953045013e-15
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.35628275200001047
+20
+1.3322676295501878e-14
+30
+1.1283270246018505e-15
+11
+-0.3184229093690556
+21
+0.31842290936904827
+31
+1.132572953045013e-15
+12
+-0.3441427116181502
+22
+0.09221276165915027
+32
+-1.1082712068578987e-15
+13
+-0.3441427116181502
+23
+0.09221276165915027
+33
+-1.1082712068578987e-15
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.3441427116181502
+20
+0.09221276165915027
+30
+-1.1082712068578987e-15
+11
+-0.3184229093690556
+21
+0.31842290936904827
+31
+1.132572953045013e-15
+12
+-0.30854991416224087
+22
+0.17814137600001434
+32
+-1.1050199985371004e-15
+13
+-0.30854991416224087
+23
+0.17814137600001434
+33
+-1.1050199985371004e-15
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.30854991416224087
+20
+0.17814137600001434
+30
+-1.1050199985371004e-15
+11
+-0.3184229093690556
+21
+0.31842290936904827
+31
+1.132572953045013e-15
+12
+-0.2251589985000131
+22
+0.38998682518332894
+32
+-1.0973661868614674e-15
+13
+-0.2251589985000131
+23
+0.38998682518332894
+33
+-1.0973661868614674e-15
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.30854991416224087
+20
+0.17814137600001434
+30
+-1.1050199985371004e-15
+11
+-0.2251589985000131
+21
+0.38998682518332894
+31
+-1.0973661868614674e-15
+12
+-0.2519299499590143
+22
+0.2519299499590092
+32
+-3.337991716009964e-15
+13
+-0.2519299499590143
+23
+0.2519299499590092
+33
+-3.337991716009964e-15
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.2519299499590143
+20
+0.2519299499590092
+30
+-3.337991716009964e-15
+11
+-0.2251589985000131
+21
+0.38998682518332894
+31
+-1.0973661868614674e-15
+12
+-0.17814137600000818
+22
+0.30854991416224353
+32
+-6.688561244316844e-15
+13
+-0.17814137600000818
+23
+0.30854991416224353
+33
+-6.688561244316844e-15
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.17814137600000818
+20
+0.30854991416224353
+30
+-6.688561244316844e-15
+11
+-0.2251589985000131
+21
+0.38998682518332894
+31
+-1.0973661868614674e-15
+12
+-0.11655087397602859
+22
+0.4349737833450731
+32
+-2.2071617463537632e-15
+13
+-0.11655087397602859
+23
+0.4349737833450731
+33
+-2.2071617463537632e-15
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.17814137600000818
+20
+0.30854991416224353
+30
+-6.688561244316844e-15
+11
+-0.11655087397602859
+21
+0.4349737833450731
+31
+-2.2071617463537632e-15
+12
+-0.0922127616591486
+22
+0.34414271161815735
+32
+-2.205457581532869e-15
+13
+-0.0922127616591486
+23
+0.34414271161815735
+33
+-2.205457581532869e-15
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.0922127616591486
+20
+0.34414271161815735
+30
+-2.205457581532869e-15
+11
+-0.11655087397602859
+21
+0.4349737833450731
+31
+-2.2071617463537632e-15
+12
+-7.049916206369744e-15
+22
+0.45031799700000497
+32
+1.159449649898216e-15
+13
+-7.049916206369744e-15
+23
+0.45031799700000497
+33
+1.159449649898216e-15
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-0.0922127616591486
+20
+0.34414271161815735
+30
+-2.205457581532869e-15
+11
+-7.049916206369744e-15
+21
+0.45031799700000497
+31
+1.159449649898216e-15
+12
+-7.049916206369744e-15
+22
+0.35628275200001536
+32
+-1.0788020009459382e-15
+13
+-7.049916206369744e-15
+23
+0.35628275200001536
+33
+-1.0788020009459382e-15
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+0.35628275200001536
+30
+-1.0788020009459382e-15
+11
+-7.049916206369744e-15
+21
+0.45031799700000497
+31
+1.159449649898216e-15
+12
+0.11655087397601116
+22
+0.4349737833450753
+32
+1.1690664734545857e-15
+13
+0.11655087397601116
+23
+0.4349737833450753
+33
+1.1690664734545857e-15
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+0.35628275200001536
+30
+-1.0788020009459382e-15
+11
+0.11655087397601116
+21
+0.4349737833450753
+31
+1.1690664734545857e-15
+12
+0.09221276165912884
+22
+0.34414271161815735
+32
+4.776934118879337e-17
+13
+0.09221276165912884
+23
+0.34414271161815735
+33
+4.776934118879337e-17
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.09221276165912884
+20
+0.34414271161815735
+30
+4.776934118879337e-17
+11
+0.11655087397601116
+21
+0.4349737833450753
+31
+1.1690664734545857e-15
+12
+0.1781413759999918
+22
+0.30854991416223687
+32
+-1.064187472047551e-15
+13
+0.1781413759999918
+23
+0.30854991416223687
+33
+-1.064187472047551e-15
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.1781413759999918
+20
+0.30854991416223687
+30
+-1.064187472047551e-15
+11
+0.11655087397601116
+21
+0.4349737833450753
+31
+1.1690664734545857e-15
+12
+0.22515899849998888
+22
+0.3899868251833378
+32
+-3.297929346592473e-15
+13
+0.22515899849998888
+23
+0.3899868251833378
+33
+-3.297929346592473e-15
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.1781413759999918
+20
+0.30854991416223687
+30
+-1.064187472047551e-15
+11
+0.22515899849998888
+21
+0.3899868251833378
+31
+-3.297929346592473e-15
+12
+0.25192994995899565
+22
+0.2519299499590114
+32
+1.1796636210961499e-15
+13
+0.25192994995899565
+23
+0.2519299499590114
+33
+1.1796636210961499e-15
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.25192994995899565
+20
+0.2519299499590114
+30
+1.1796636210961499e-15
+11
+0.22515899849998888
+21
+0.3899868251833378
+31
+-3.297929346592473e-15
+12
+0.31842290936903583
+22
+0.3184229093690527
+32
+-3.290439660368124e-15
+13
+0.31842290936903583
+23
+0.3184229093690527
+33
+-3.290439660368124e-15
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.25192994995899565
+20
+0.2519299499590114
+30
+1.1796636210961499e-15
+11
+0.31842290936903583
+21
+0.3184229093690527
+31
+-3.290439660368124e-15
+12
+0.30854991416222677
+22
+0.17814137600001212
+32
+-3.291745508012748e-15
+13
+0.30854991416222677
+23
+0.17814137600001212
+33
+-3.291745508012748e-15
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.30854991416222677
+20
+0.17814137600001212
+30
+-3.291745508012748e-15
+11
+0.31842290936903583
+21
+0.3184229093690527
+31
+-3.290439660368124e-15
+12
+0.34414271161813714
+22
+0.0922127616591436
+32
+-1.0511651486801586e-15
+13
+0.34414271161813714
+23
+0.0922127616591436
+33
+-1.0511651486801586e-15
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.34414271161813714
+20
+0.0922127616591436
+30
+-1.0511651486801586e-15
+11
+0.31842290936903583
+21
+0.3184229093690527
+31
+-3.290439660368124e-15
+12
+0.38998682518331773
+22
+0.22515899850001475
+32
+7.206242211372932e-17
+13
+0.38998682518331773
+23
+0.22515899850001475
+33
+7.206242211372932e-17
+70
+13
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.34414271161813714
+20
+0.0922127616591436
+30
+-1.0511651486801586e-15
+11
+0.38998682518331773
+21
+0.22515899850001475
+31
+7.206242211372932e-17
+12
+0.3562827519999918
+22
+4.3298697960381105e-15
+32
+-1.0504778341596352e-15
+13
+0.3562827519999918
+23
+4.3298697960381105e-15
+33
+-1.0504778341596352e-15
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.3562827519999918
+20
+4.3298697960381105e-15
+30
+-1.0504778341596352e-15
+11
+0.38998682518331773
+21
+0.22515899850001475
+31
+7.206242211372932e-17
+12
+0.450317996999995
+22
+1.1046719095020308e-14
+32
+-3.2806012647849043e-15
+13
+0.450317996999995
+23
+1.1046719095020308e-14
+33
+-3.2806012647849043e-15
+70
+3
+  0
+3DFACE
+ 8
+thumb metacarpal
+10
+0.450317996999995
+20
+1.1046719095020308e-14
+30
+-3.2806012647849043e-15
+11
+0.38998682518331773
+21
+0.22515899850001475
+31
+7.206242211372932e-17
+12
+0.434973783345053
+22
+0.11655087397603137
+32
+-4.400432685469344e-15
+13
+0.434973783345053
+23
+0.11655087397603137
+33
+-4.400432685469344e-15
+70
+1
+  0
+LINE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+1.3322676295501878e-14
+30
+-1.0800381050538982e-15
+11
+-0.03937000000001045
+21
+1.1046719095020308e-14
+31
+-2.2022672779789954e-15
+  0
+LINE
+ 8
+thumb metacarpal
+10
+-1.0436096431476471e-14
+20
+8.826273045769994e-15
+30
+-0.039400000000002454
+11
+-7.049916206369744e-15
+21
+1.3322676295501878e-14
+31
+-1.0800381050538982e-15
+  0
+LINE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+1.3322676295501878e-14
+30
+-1.0800381050538982e-15
+11
+-7.049916206369744e-15
+21
+1.3322676295501878e-14
+31
+0.03939999999999806
+  0
+LINE
+ 8
+thumb metacarpal
+10
+-7.049916206369744e-15
+20
+1.3322676295501878e-14
+30
+-1.0800381050538982e-15
+11
+-1.0436096431476471e-14
+21
+0.03936999999999541
+31
+-2.198864213202406e-15
+  0
+LINE
+ 8
+thumb metacarpal
+10
+0.03936999999998847
+20
+2.1094237467877974e-15
+30
+4.21910678711987e-17
+11
+-7.049916206369744e-15
+21
+1.3322676295501878e-14
+31
+-1.0800381050538982e-15
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.35328475047387764
+20
+0.09466236358770014
+30
+0.3532847504738821
+11
+-0.3554382812124002
+21
+0.07106866747815194
+31
+0.3554382812124069
+12
+-0.3358093605615792
+22
+0.08997984697328248
+32
+0.4416633977968423
+13
+-0.3358093605615792
+23
+0.08997984697328248
+33
+0.4416633977968423
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.17382771607408792
+20
+0.3010784360039525
+30
+0.44166339779684116
+11
+0.3097606107421021
+21
+0.309760610742088
+31
+-1.1769864756914841e-14
+12
+0.2190338284002274
+22
+0.37937771936549897
+32
+-1.1771797019837378e-14
+13
+0.2190338284002274
+23
+0.37937771936549897
+33
+-1.1771797019837378e-14
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.17382771607406877
+20
+0.3010784360039503
+30
+0.4416633977968423
+11
+-0.13135838013328194
+21
+0.3868373733924963
+31
+0.13135838013328868
+12
+-0.1986964122260401
+22
+0.3441522812571604
+32
+0.19869641222604567
+13
+-0.1986964122260401
+23
+0.3441522812571604
+33
+0.19869641222604567
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3793777193655142
+20
+0.21903382840021673
+30
+-1.3445790633259696e-14
+11
+0.3010784360039633
+21
+0.17382771607407282
+31
+0.44166339779684116
+12
+0.4231408633654961
+22
+0.11338025262338508
+32
+-1.1764414107035652e-14
+13
+0.4231408633654961
+23
+0.11338025262338508
+33
+-1.1764414107035652e-14
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.08997984697327954
+20
+0.3358093605615809
+30
+0.44166339779684116
+11
+1.071365218763276e-14
+21
+0.4380676568004345
+31
+-1.2892388693108735e-14
+12
+-0.1076753495876358
+22
+0.40184987538383093
+32
+0.10767534958764315
+13
+-0.1076753495876358
+23
+0.40184987538383093
+33
+0.10767534958764315
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.08997984697329425
+20
+0.335809360561582
+30
+0.4416633977968423
+11
+0.2190338284002274
+21
+0.37937771936549897
+31
+-1.1771797019837378e-14
+12
+0.11338025262340018
+22
+0.42314086336547535
+32
+-1.1213530340952345e-14
+13
+0.11338025262340018
+23
+0.42314086336547535
+33
+-1.1213530340952345e-14
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.27059219435790804
+20
+0.2705921943579131
+30
+0.2705921943579153
+11
+-0.2912967185332681
+21
+0.23670677844559634
+31
+0.29129671853327366
+12
+-0.24582951358828664
+22
+0.24582951358829058
+32
+0.44166339779684116
+13
+-0.24582951358828664
+23
+0.24582951358829058
+33
+0.44166339779684116
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.24582951358828664
+20
+0.24582951358829058
+30
+0.44166339779684116
+11
+-0.2331808958459863
+21
+0.30886952145483487
+31
+0.2331808958459941
+12
+-0.27059219435790804
+22
+0.2705921943579131
+32
+0.2705921943579153
+13
+-0.27059219435790804
+23
+0.2705921943579131
+33
+0.2705921943579153
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3222486125544444
+20
+0.18605032320429132
+30
+0.3222486125544489
+11
+-0.331519017082783
+21
+0.15875300428965727
+31
+0.33151901708278747
+12
+-0.30107843600394635
+22
+0.17382771607406827
+32
+0.44166339779684116
+13
+-0.30107843600394635
+23
+0.17382771607406827
+33
+0.44166339779684116
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.4231408633654961
+20
+0.11338025262338508
+30
+-1.1764414107035652e-14
+11
+0.3358093605615961
+21
+0.08997984697328582
+31
+0.44166339779684116
+12
+0.43806765680045084
+22
+-2.220446049250313e-15
+32
+-5.71640170110588e-16
+13
+0.43806765680045084
+23
+-2.220446049250313e-15
+33
+-5.71640170110588e-16
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3097606107421021
+20
+0.309760610742088
+30
+-1.1769864756914841e-14
+11
+0.24582951358830357
+21
+0.2458295135882939
+31
+0.44166339779684116
+12
+0.3793777193655142
+22
+0.21903382840021673
+32
+-1.3445790633259696e-14
+13
+0.3793777193655142
+23
+0.21903382840021673
+33
+-1.3445790633259696e-14
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+8.493206138382448e-15
+20
+0.3476554321481467
+30
+0.44166339779684116
+11
+0.11338025262340018
+21
+0.42314086336547535
+31
+-1.1213530340952345e-14
+12
+1.071365218763276e-14
+22
+0.4380676568004345
+32
+-1.2892388693108735e-14
+13
+1.071365218763276e-14
+23
+0.4380676568004345
+33
+-1.2892388693108735e-14
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.17382771607406877
+20
+0.3010784360039503
+30
+0.4416633977968423
+11
+-0.0899798469732796
+21
+0.3358093605615798
+31
+0.768373308495885
+12
+-0.08997984697327954
+22
+0.3358093605615809
+32
+0.44166339779684116
+13
+-0.08997984697327954
+23
+0.3358093605615809
+33
+0.44166339779684116
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.0899798469732796
+20
+0.3358093605615798
+30
+0.768373308495885
+11
+-0.17382771607406877
+21
+0.3010784360039503
+31
+0.4416633977968423
+12
+-0.17382771607407105
+22
+0.3010784360039514
+32
+0.7683733084958873
+13
+-0.17382771607407105
+23
+0.3010784360039514
+33
+0.7683733084958873
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.08997984697329425
+20
+0.335809360561582
+30
+0.4416633977968423
+11
+0.1738277160740857
+21
+0.3010784360039536
+31
+0.7683733084958873
+12
+0.17382771607408792
+22
+0.3010784360039525
+32
+0.44166339779684116
+13
+0.17382771607408792
+23
+0.3010784360039525
+33
+0.44166339779684116
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.1738277160740857
+20
+0.3010784360039536
+30
+0.7683733084958873
+11
+0.08997984697329425
+21
+0.335809360561582
+31
+0.4416633977968423
+12
+0.08997984697329425
+22
+0.3358093605615809
+32
+0.7683733084958861
+13
+0.08997984697329425
+23
+0.3358093605615809
+33
+0.7683733084958861
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.11108623083123143
+20
+0.4145794574834358
+30
+1.2100367062927357
+11
+0.1738277160740857
+21
+0.3010784360039536
+31
+0.7683733084958873
+12
+0.08997984697329425
+22
+0.3358093605615809
+32
+0.7683733084958861
+13
+0.08997984697329425
+23
+0.3358093605615809
+33
+0.7683733084958861
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.1738277160740857
+20
+0.3010784360039536
+30
+0.7683733084958873
+11
+0.11108623083123143
+21
+0.4145794574834358
+31
+1.2100367062927357
+12
+0.21460211860998019
+22
+0.3717017728443855
+32
+1.210036706292738
+13
+0.21460211860998019
+23
+0.3717017728443855
+33
+1.210036706292738
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.30107843600394635
+20
+0.17382771607406938
+30
+0.7683733084958861
+11
+-0.24582951358828664
+21
+0.24582951358829058
+31
+0.44166339779684116
+12
+-0.30107843600394635
+22
+0.17382771607406827
+32
+0.44166339779684116
+13
+-0.30107843600394635
+23
+0.17382771607406827
+33
+0.44166339779684116
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.24582951358828664
+20
+0.24582951358829058
+30
+0.44166339779684116
+11
+-0.30107843600394635
+21
+0.17382771607406938
+31
+0.7683733084958861
+12
+-0.24582951358828667
+22
+0.24582951358829058
+32
+0.7683733084958861
+13
+-0.24582951358828667
+23
+0.24582951358829058
+33
+0.7683733084958861
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.0899798469732796
+20
+0.3358093605615798
+30
+0.768373308495885
+11
+8.493206138382448e-15
+21
+0.3476554321481467
+31
+0.44166339779684116
+12
+-0.08997984697327954
+22
+0.3358093605615809
+32
+0.44166339779684116
+13
+-0.08997984697327954
+23
+0.3358093605615809
+33
+0.44166339779684116
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+8.493206138382448e-15
+20
+0.3476554321481467
+30
+0.44166339779684116
+11
+-0.0899798469732796
+21
+0.3358093605615798
+31
+0.768373308495885
+12
+8.43769498715119e-15
+22
+0.3476554321481467
+32
+0.7683733084958861
+13
+8.43769498715119e-15
+23
+0.3476554321481467
+33
+0.7683733084958861
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.24582951358830357
+20
+0.2458295135882939
+30
+0.44166339779684116
+11
+0.3010784360039655
+21
+0.17382771607407282
+31
+0.7683733084958861
+12
+0.3010784360039633
+22
+0.17382771607407282
+32
+0.44166339779684116
+13
+0.3010784360039633
+23
+0.17382771607407282
+33
+0.44166339779684116
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3010784360039655
+20
+0.17382771607407282
+30
+0.7683733084958861
+11
+0.24582951358830357
+21
+0.2458295135882939
+31
+0.44166339779684116
+12
+0.2458295135883058
+22
+0.2458295135882928
+32
+0.7683733084958873
+13
+0.2458295135883058
+23
+0.2458295135882928
+33
+0.7683733084958873
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.2458295135883058
+20
+0.2458295135882928
+30
+0.7683733084958873
+11
+0.3717017728444028
+21
+0.2146021186099673
+31
+1.2100367062927369
+12
+0.3010784360039655
+22
+0.17382771607407282
+32
+0.7683733084958861
+13
+0.3010784360039655
+23
+0.17382771607407282
+33
+0.7683733084958861
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3717017728444028
+20
+0.2146021186099673
+30
+1.2100367062927369
+11
+0.2458295135883058
+21
+0.2458295135882928
+31
+0.7683733084958873
+12
+0.30349322665223116
+22
+0.30349322665221606
+32
+1.2100367062927357
+13
+0.30349322665223116
+23
+0.30349322665221606
+33
+1.2100367062927357
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.24582951358828667
+20
+0.24582951358829058
+30
+0.7683733084958861
+11
+-0.17382771607406877
+21
+0.3010784360039503
+31
+0.4416633977968423
+12
+-0.24582951358828664
+22
+0.24582951358829058
+32
+0.44166339779684116
+13
+-0.24582951358828664
+23
+0.24582951358829058
+33
+0.44166339779684116
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.17382771607406877
+20
+0.3010784360039503
+30
+0.4416633977968423
+11
+-0.24582951358828667
+21
+0.24582951358829058
+31
+0.7683733084958861
+12
+-0.17382771607407105
+22
+0.3010784360039514
+32
+0.7683733084958873
+13
+-0.17382771607407105
+23
+0.3010784360039514
+33
+0.7683733084958873
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+8.43769498715119e-15
+20
+0.3476554321481467
+30
+0.7683733084958861
+11
+0.08997984697329425
+21
+0.335809360561582
+31
+0.4416633977968423
+12
+8.493206138382448e-15
+22
+0.3476554321481467
+32
+0.44166339779684116
+13
+8.493206138382448e-15
+23
+0.3476554321481467
+33
+0.44166339779684116
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.08997984697329425
+20
+0.335809360561582
+30
+0.4416633977968423
+11
+8.43769498715119e-15
+21
+0.3476554321481467
+31
+0.7683733084958861
+12
+0.08997984697329425
+22
+0.3358093605615809
+32
+0.7683733084958861
+13
+0.08997984697329425
+23
+0.3358093605615809
+33
+0.7683733084958861
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+1.0658141036401503e-14
+20
+0.4292042372199358
+30
+1.2100367062927369
+11
+0.08997984697329425
+21
+0.3358093605615809
+31
+0.7683733084958861
+12
+8.43769498715119e-15
+22
+0.3476554321481467
+32
+0.7683733084958861
+13
+8.43769498715119e-15
+23
+0.3476554321481467
+33
+0.7683733084958861
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.08997984697329425
+20
+0.3358093605615809
+30
+0.7683733084958861
+11
+1.0658141036401503e-14
+21
+0.4292042372199358
+31
+1.2100367062927369
+12
+0.11108623083123143
+22
+0.4145794574834358
+32
+1.2100367062927357
+13
+0.11108623083123143
+23
+0.4145794574834358
+33
+1.2100367062927357
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.30107843600394635
+20
+0.17382771607406938
+30
+0.7683733084958861
+11
+-0.3358093605615792
+21
+0.08997984697328248
+31
+0.4416633977968423
+12
+-0.3358093605615814
+22
+0.08997984697328248
+32
+0.7683733084958861
+13
+-0.3358093605615814
+23
+0.08997984697328248
+33
+0.7683733084958861
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3358093605615792
+20
+0.08997984697328248
+30
+0.4416633977968423
+11
+-0.30107843600394635
+21
+0.17382771607406938
+31
+0.7683733084958861
+12
+-0.30107843600394635
+22
+0.17382771607406827
+32
+0.44166339779684116
+13
+-0.30107843600394635
+23
+0.17382771607406827
+33
+0.44166339779684116
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.1738277160740857
+20
+0.3010784360039536
+30
+0.7683733084958873
+11
+0.24582951358830357
+21
+0.2458295135882939
+31
+0.44166339779684116
+12
+0.17382771607408792
+22
+0.3010784360039525
+32
+0.44166339779684116
+13
+0.17382771607408792
+23
+0.3010784360039525
+33
+0.44166339779684116
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.24582951358830357
+20
+0.2458295135882939
+30
+0.44166339779684116
+11
+0.1738277160740857
+21
+0.3010784360039536
+31
+0.7683733084958873
+12
+0.2458295135883058
+22
+0.2458295135882928
+32
+0.7683733084958873
+13
+0.2458295135883058
+23
+0.2458295135882928
+33
+0.7683733084958873
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.21460211860998019
+20
+0.3717017728443855
+30
+1.210036706292738
+11
+0.2458295135883058
+21
+0.2458295135882928
+31
+0.7683733084958873
+12
+0.1738277160740857
+22
+0.3010784360039536
+32
+0.7683733084958873
+13
+0.1738277160740857
+23
+0.3010784360039536
+33
+0.7683733084958873
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.2458295135883058
+20
+0.2458295135882928
+30
+0.7683733084958873
+11
+0.21460211860998019
+21
+0.3717017728443855
+31
+1.210036706292738
+12
+0.30349322665223116
+22
+0.30349322665221606
+32
+1.2100367062927357
+13
+0.30349322665223116
+23
+0.30349322665221606
+33
+1.2100367062927357
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3358093605615814
+20
+0.08997984697328248
+30
+0.7683733084958861
+11
+-0.3476554321481416
+21
+-5.6066262743570405e-15
+31
+0.4670991950407831
+12
+-0.3476554321481416
+22
+-7.827072323607354e-15
+32
+0.7683733084958861
+13
+-0.3476554321481416
+23
+-7.827072323607354e-15
+33
+0.7683733084958861
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3476554321481416
+20
+-5.6066262743570405e-15
+30
+0.4670991950407831
+11
+-0.3358093605615814
+21
+0.08997984697328248
+31
+0.7683733084958861
+12
+-0.3476554321481416
+22
+-5.6066262743570405e-15
+32
+0.4416633977968423
+13
+-0.3476554321481416
+23
+-5.6066262743570405e-15
+33
+0.4416633977968423
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3476554321481416
+20
+-5.6066262743570405e-15
+30
+0.4416633977968423
+11
+-0.3358093605615814
+21
+0.08997984697328248
+31
+0.7683733084958861
+12
+-0.3358093605615792
+22
+0.08997984697328248
+32
+0.4416633977968423
+13
+-0.3358093605615792
+23
+0.08997984697328248
+33
+0.4416633977968423
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3010784360039633
+20
+0.17382771607407282
+30
+0.44166339779684116
+11
+0.3358093605615983
+21
+0.08997984697328582
+31
+0.7683733084958873
+12
+0.3358093605615961
+22
+0.08997984697328582
+32
+0.44166339779684116
+13
+0.3358093605615961
+23
+0.08997984697328582
+33
+0.44166339779684116
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3358093605615983
+20
+0.08997984697328582
+30
+0.7683733084958873
+11
+0.3010784360039633
+21
+0.17382771607407282
+31
+0.44166339779684116
+12
+0.3010784360039655
+22
+0.17382771607407282
+32
+0.7683733084958861
+13
+0.3010784360039655
+23
+0.17382771607407282
+33
+0.7683733084958861
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3010784360039655
+20
+0.17382771607407282
+30
+0.7683733084958861
+11
+0.41457945748344976
+21
+0.11108623083121855
+31
+1.2100367062927369
+12
+0.3358093605615983
+22
+0.08997984697328582
+32
+0.7683733084958873
+13
+0.3358093605615983
+23
+0.08997984697328582
+33
+0.7683733084958873
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.41457945748344976
+20
+0.11108623083121855
+30
+1.2100367062927369
+11
+0.3010784360039655
+21
+0.17382771607407282
+31
+0.7683733084958861
+12
+0.3717017728444028
+22
+0.2146021186099673
+32
+1.2100367062927369
+13
+0.3717017728444028
+23
+0.2146021186099673
+33
+1.2100367062927369
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.34765543214816524
+20
+-2.220446049250313e-15
+30
+0.4416633977968546
+11
+0.3358093605615983
+21
+0.08997984697328582
+31
+0.7683733084958873
+12
+0.34765543214816524
+22
+-3.3306690738754696e-15
+32
+0.7683733084958906
+13
+0.34765543214816524
+23
+-3.3306690738754696e-15
+33
+0.7683733084958906
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3358093605615983
+20
+0.08997984697328582
+30
+0.7683733084958873
+11
+0.34765543214816524
+21
+-2.220446049250313e-15
+31
+0.4416633977968546
+12
+0.3358093605615961
+22
+0.08997984697328582
+32
+0.44166339779684116
+13
+0.3358093605615961
+23
+0.08997984697328582
+33
+0.44166339779684116
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3358093605615983
+20
+0.08997984697328582
+30
+0.7683733084958873
+11
+0.429204237219952
+21
+-1.1102230246251565e-15
+31
+1.210036706292738
+12
+0.34765543214816524
+22
+-3.3306690738754696e-15
+32
+0.7683733084958906
+13
+0.34765543214816524
+23
+-3.3306690738754696e-15
+33
+0.7683733084958906
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.429204237219952
+20
+-1.1102230246251565e-15
+30
+1.210036706292738
+11
+0.3358093605615983
+21
+0.08997984697328582
+31
+0.7683733084958873
+12
+0.41457945748344976
+22
+0.11108623083121855
+32
+1.2100367062927369
+13
+0.41457945748344976
+23
+0.11108623083121855
+33
+1.2100367062927369
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3010784360039633
+20
+0.17382771607407282
+30
+0.44166339779684116
+11
+0.3358093605615961
+21
+0.08997984697328582
+31
+0.44166339779684116
+12
+0.4231408633654961
+22
+0.11338025262338508
+32
+-1.1764414107035652e-14
+13
+0.4231408633654961
+23
+0.11338025262338508
+33
+-1.1764414107035652e-14
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.08997984697329425
+20
+0.335809360561582
+30
+0.4416633977968423
+11
+0.11338025262340018
+21
+0.42314086336547535
+31
+-1.1213530340952345e-14
+12
+8.493206138382448e-15
+22
+0.3476554321481467
+32
+0.44166339779684116
+13
+8.493206138382448e-15
+23
+0.3476554321481467
+33
+0.44166339779684116
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3358093605615792
+20
+0.08997984697328248
+30
+0.4416633977968423
+11
+-0.3632432353943587
+21
+-4.496403249731884e-15
+31
+0.3632432353943699
+12
+-0.3476554321481416
+22
+-5.6066262743570405e-15
+32
+0.4416633977968423
+13
+-0.3476554321481416
+23
+-5.6066262743570405e-15
+33
+0.4416633977968423
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3632432353943587
+20
+-4.496403249731884e-15
+30
+0.3632432353943699
+11
+-0.3358093605615792
+21
+0.08997984697328248
+31
+0.4416633977968423
+12
+-0.3554382812124002
+22
+0.07106866747815194
+32
+0.3554382812124069
+13
+-0.3554382812124002
+23
+0.07106866747815194
+33
+0.3554382812124069
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.24582951358828664
+20
+0.24582951358829058
+30
+0.44166339779684116
+11
+-0.3222486125544444
+21
+0.18605032320429132
+31
+0.3222486125544489
+12
+-0.30107843600394635
+22
+0.17382771607406827
+32
+0.44166339779684116
+13
+-0.30107843600394635
+23
+0.17382771607406827
+33
+0.44166339779684116
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3222486125544444
+20
+0.18605032320429132
+30
+0.3222486125544489
+11
+-0.24582951358828664
+21
+0.24582951358829058
+31
+0.44166339779684116
+12
+-0.2959784921776627
+22
+0.2290444991387141
+32
+0.2959784921776672
+13
+-0.2959784921776627
+23
+0.2290444991387141
+33
+0.2959784921776672
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.2959784921776627
+20
+0.2290444991387141
+30
+0.2959784921776672
+11
+-0.24582951358828664
+21
+0.24582951358829058
+31
+0.44166339779684116
+12
+-0.2912967185332681
+22
+0.23670677844559634
+32
+0.29129671853327366
+13
+-0.2912967185332681
+23
+0.23670677844559634
+33
+0.29129671853327366
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.2331808958459863
+20
+0.30886952145483487
+30
+0.2331808958459941
+11
+-0.17382771607406877
+21
+0.3010784360039503
+31
+0.4416633977968423
+12
+-0.1986964122260401
+22
+0.3441522812571604
+32
+0.19869641222604567
+13
+-0.1986964122260401
+23
+0.3441522812571604
+33
+0.19869641222604567
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.17382771607406877
+20
+0.3010784360039503
+30
+0.4416633977968423
+11
+-0.2331808958459863
+21
+0.30886952145483487
+31
+0.2331808958459941
+12
+-0.24582951358828664
+22
+0.24582951358829058
+32
+0.44166339779684116
+13
+-0.24582951358828664
+23
+0.24582951358829058
+33
+0.44166339779684116
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.30107843600394635
+20
+0.17382771607406827
+30
+0.44166339779684116
+11
+-0.35328475047387764
+21
+0.09466236358770014
+31
+0.3532847504738821
+12
+-0.3358093605615792
+22
+0.08997984697328248
+32
+0.4416633977968423
+13
+-0.3358093605615792
+23
+0.08997984697328248
+33
+0.4416633977968423
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.35328475047387764
+20
+0.09466236358770014
+30
+0.3532847504738821
+11
+-0.30107843600394635
+21
+0.17382771607406827
+31
+0.44166339779684116
+12
+-0.331519017082783
+22
+0.15875300428965727
+32
+0.33151901708278747
+13
+-0.331519017082783
+23
+0.15875300428965727
+33
+0.33151901708278747
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+8.493206138382448e-15
+20
+0.3476554321481467
+30
+0.44166339779684116
+11
+1.071365218763276e-14
+21
+0.4380676568004345
+31
+-1.2892388693108735e-14
+12
+-0.08997984697327954
+22
+0.3358093605615809
+32
+0.44166339779684116
+13
+-0.08997984697327954
+23
+0.3358093605615809
+33
+0.44166339779684116
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.08997984697329425
+20
+0.335809360561582
+30
+0.4416633977968423
+11
+0.17382771607408792
+21
+0.3010784360039525
+31
+0.44166339779684116
+12
+0.2190338284002274
+22
+0.37937771936549897
+32
+-1.1771797019837378e-14
+13
+0.2190338284002274
+23
+0.37937771936549897
+33
+-1.1771797019837378e-14
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.24582951358830357
+20
+0.2458295135882939
+30
+0.44166339779684116
+11
+0.3010784360039633
+21
+0.17382771607407282
+31
+0.44166339779684116
+12
+0.3793777193655142
+22
+0.21903382840021673
+32
+-1.3445790633259696e-14
+13
+0.3793777193655142
+23
+0.21903382840021673
+33
+-1.3445790633259696e-14
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.24582951358830357
+20
+0.2458295135882939
+30
+0.44166339779684116
+11
+0.3097606107421021
+21
+0.309760610742088
+31
+-1.1769864756914841e-14
+12
+0.17382771607408792
+22
+0.3010784360039525
+32
+0.44166339779684116
+13
+0.17382771607408792
+23
+0.3010784360039525
+33
+0.44166339779684116
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.13135838013328194
+20
+0.3868373733924963
+30
+0.13135838013328868
+11
+-0.08997984697327954
+21
+0.3358093605615809
+31
+0.44166339779684116
+12
+-0.1076753495876358
+22
+0.40184987538383093
+32
+0.10767534958764315
+13
+-0.1076753495876358
+23
+0.40184987538383093
+33
+0.10767534958764315
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.08997984697327954
+20
+0.3358093605615809
+30
+0.44166339779684116
+11
+-0.13135838013328194
+21
+0.3868373733924963
+31
+0.13135838013328868
+12
+-0.17382771607406877
+22
+0.3010784360039503
+32
+0.4416633977968423
+13
+-0.17382771607406877
+23
+0.3010784360039503
+33
+0.4416633977968423
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3358093605615961
+20
+0.08997984697328582
+30
+0.44166339779684116
+11
+0.34765543214816524
+21
+-2.220446049250313e-15
+31
+0.4416633977968546
+12
+0.43806765680045084
+22
+-2.220446049250313e-15
+32
+-5.71640170110588e-16
+13
+0.43806765680045084
+23
+-2.220446049250313e-15
+33
+-5.71640170110588e-16
+70
+0
+  0
+3DFACE
+ 8
+thumb proximal
+10
+1.071365218763276e-14
+20
+0.4380676568004345
+30
+-1.2892388693108735e-14
+11
+0.3562827520000152
+21
+0.21460211860996398
+31
+9.493067727034111e-15
+12
+1.7763568394002505e-15
+22
+0.21460211860996398
+32
+-1.1370779255784436e-15
+13
+1.7763568394002505e-15
+23
+0.21460211860996398
+33
+-1.1370779255784436e-15
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3562827520000152
+20
+0.21460211860996398
+30
+9.493067727034111e-15
+11
+1.071365218763276e-14
+21
+0.4380676568004345
+31
+-1.2892388693108735e-14
+12
+0.11338025262340018
+22
+0.42314086336547535
+32
+-1.1213530340952345e-14
+13
+0.11338025262340018
+23
+0.42314086336547535
+33
+-1.1213530340952345e-14
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3562827520000152
+20
+0.21460211860996398
+30
+9.493067727034111e-15
+11
+0.11338025262340018
+21
+0.42314086336547535
+31
+-1.1213530340952345e-14
+12
+0.2190338284002274
+22
+0.37937771936549897
+32
+-1.1771797019837378e-14
+13
+0.2190338284002274
+23
+0.37937771936549897
+33
+-1.1771797019837378e-14
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3562827520000152
+20
+0.21460211860996398
+30
+9.493067727034111e-15
+11
+0.2190338284002274
+21
+0.37937771936549897
+31
+-1.1771797019837378e-14
+12
+0.3097606107421021
+22
+0.309760610742088
+32
+-1.1769864756914841e-14
+13
+0.3097606107421021
+23
+0.309760610742088
+33
+-1.1769864756914841e-14
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3562827520000152
+20
+0.21460211860996398
+30
+9.493067727034111e-15
+11
+0.3097606107421021
+21
+0.309760610742088
+31
+-1.1769864756914841e-14
+12
+0.3793777193655142
+22
+0.21903382840021673
+32
+-1.3445790633259696e-14
+13
+0.3793777193655142
+23
+0.21903382840021673
+33
+-1.3445790633259696e-14
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3562827520000152
+20
+0.21460211860996398
+30
+9.493067727034111e-15
+11
+0.3793777193655142
+21
+0.21903382840021673
+31
+-1.3445790633259696e-14
+12
+0.3562827520000152
+22
+-4.496403249731884e-15
+32
+1.0058505482501966e-14
+13
+0.3562827520000152
+23
+-4.496403249731884e-15
+33
+1.0058505482501966e-14
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3562827520000152
+20
+-4.496403249731884e-15
+30
+1.0058505482501966e-14
+11
+0.3793777193655142
+21
+0.21903382840021673
+31
+-1.3445790633259696e-14
+12
+0.43806765680045084
+22
+-2.220446049250313e-15
+32
+-5.71640170110588e-16
+13
+0.43806765680045084
+23
+-2.220446049250313e-15
+33
+-5.71640170110588e-16
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.43806765680045084
+20
+-2.220446049250313e-15
+30
+-5.71640170110588e-16
+11
+0.3793777193655142
+21
+0.21903382840021673
+31
+-1.3445790633259696e-14
+12
+0.4231408633654961
+22
+0.11338025262338508
+32
+-1.1764414107035652e-14
+13
+0.4231408633654961
+23
+0.11338025262338508
+33
+-1.1764414107035652e-14
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3554382812124002
+20
+0.07106866747815194
+30
+0.3554382812124069
+11
+-0.2519299499589987
+21
+-3.3306690738754696e-15
+31
+0.25192994995900597
+12
+-0.3632432353943587
+22
+-4.496403249731884e-15
+32
+0.3632432353943699
+13
+-0.3632432353943587
+23
+-4.496403249731884e-15
+33
+0.3632432353943699
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.2519299499589987
+20
+-3.3306690738754696e-15
+30
+0.25192994995900597
+11
+-0.3554382812124002
+21
+0.07106866747815194
+31
+0.3554382812124069
+12
+-0.25192994995899876
+22
+0.21460211860996398
+32
+0.2519299499590065
+13
+-0.25192994995899876
+23
+0.21460211860996398
+33
+0.2519299499590065
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.25192994995899876
+20
+0.21460211860996398
+30
+0.2519299499590065
+11
+-0.3554382812124002
+21
+0.07106866747815194
+31
+0.3554382812124069
+12
+-0.35328475047387764
+22
+0.09466236358770014
+32
+0.3532847504738821
+13
+-0.35328475047387764
+23
+0.09466236358770014
+33
+0.3532847504738821
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.25192994995899876
+20
+0.21460211860996398
+30
+0.2519299499590065
+11
+-0.35328475047387764
+21
+0.09466236358770014
+31
+0.3532847504738821
+12
+-0.331519017082783
+22
+0.15875300428965727
+32
+0.33151901708278747
+13
+-0.331519017082783
+23
+0.15875300428965727
+33
+0.33151901708278747
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.25192994995899876
+20
+0.21460211860996398
+30
+0.2519299499590065
+11
+-0.331519017082783
+21
+0.15875300428965727
+31
+0.33151901708278747
+12
+-0.3222486125544444
+22
+0.18605032320429132
+32
+0.3222486125544489
+13
+-0.3222486125544444
+23
+0.18605032320429132
+33
+0.3222486125544489
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.25192994995899876
+20
+0.21460211860996398
+30
+0.2519299499590065
+11
+-0.3222486125544444
+21
+0.18605032320429132
+31
+0.3222486125544489
+12
+-0.2959784921776627
+22
+0.2290444991387141
+32
+0.2959784921776672
+13
+-0.2959784921776627
+23
+0.2290444991387141
+33
+0.2959784921776672
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.25192994995899876
+20
+0.21460211860996398
+30
+0.2519299499590065
+11
+-0.2959784921776627
+21
+0.2290444991387141
+31
+0.2959784921776672
+12
+1.7763568394002505e-15
+22
+0.21460211860996398
+32
+-1.1370779255784436e-15
+13
+1.7763568394002505e-15
+23
+0.21460211860996398
+33
+-1.1370779255784436e-15
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+1.7763568394002505e-15
+20
+0.21460211860996398
+30
+-1.1370779255784436e-15
+11
+-0.2959784921776627
+21
+0.2290444991387141
+31
+0.2959784921776672
+12
+1.071365218763276e-14
+22
+0.4380676568004345
+32
+-1.2892388693108735e-14
+13
+1.071365218763276e-14
+23
+0.4380676568004345
+33
+-1.2892388693108735e-14
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+1.071365218763276e-14
+20
+0.4380676568004345
+30
+-1.2892388693108735e-14
+11
+-0.2959784921776627
+21
+0.2290444991387141
+31
+0.2959784921776672
+12
+-0.2912967185332681
+22
+0.23670677844559634
+32
+0.29129671853327366
+13
+-0.2912967185332681
+23
+0.23670677844559634
+33
+0.29129671853327366
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+1.071365218763276e-14
+20
+0.4380676568004345
+30
+-1.2892388693108735e-14
+11
+-0.2912967185332681
+21
+0.23670677844559634
+31
+0.29129671853327366
+12
+-0.27059219435790804
+22
+0.2705921943579131
+32
+0.2705921943579153
+13
+-0.27059219435790804
+23
+0.2705921943579131
+33
+0.2705921943579153
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+1.071365218763276e-14
+20
+0.4380676568004345
+30
+-1.2892388693108735e-14
+11
+-0.27059219435790804
+21
+0.2705921943579131
+31
+0.2705921943579153
+12
+-0.2331808958459863
+22
+0.30886952145483487
+32
+0.2331808958459941
+13
+-0.2331808958459863
+23
+0.30886952145483487
+33
+0.2331808958459941
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+1.071365218763276e-14
+20
+0.4380676568004345
+30
+-1.2892388693108735e-14
+11
+-0.2331808958459863
+21
+0.30886952145483487
+31
+0.2331808958459941
+12
+-0.1986964122260401
+22
+0.3441522812571604
+32
+0.19869641222604567
+13
+-0.1986964122260401
+23
+0.3441522812571604
+33
+0.19869641222604567
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+1.071365218763276e-14
+20
+0.4380676568004345
+30
+-1.2892388693108735e-14
+11
+-0.1986964122260401
+21
+0.3441522812571604
+31
+0.19869641222604567
+12
+-0.13135838013328194
+22
+0.3868373733924963
+32
+0.13135838013328868
+13
+-0.13135838013328194
+23
+0.3868373733924963
+33
+0.13135838013328868
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+1.071365218763276e-14
+20
+0.4380676568004345
+30
+-1.2892388693108735e-14
+11
+-0.13135838013328194
+21
+0.3868373733924963
+31
+0.13135838013328868
+12
+-0.1076753495876358
+22
+0.40184987538383093
+32
+0.10767534958764315
+13
+-0.1076753495876358
+23
+0.40184987538383093
+33
+0.10767534958764315
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.30854991416221755
+20
+0.2146021186099651
+30
+1.031895330292737
+11
+1.5154544286133387e-14
+21
+0.2146021186099651
+31
+1.210036706292738
+12
+-0.25192994995899204
+22
+0.2146021186099651
+32
+0.9581067563337309
+13
+-0.25192994995899204
+23
+0.2146021186099651
+33
+0.9581067563337309
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+1.5154544286133387e-14
+20
+0.2146021186099651
+30
+1.210036706292738
+11
+-0.30854991416221755
+21
+0.2146021186099651
+31
+1.031895330292737
+12
+-0.3441427116181268
+22
+0.21460211860996398
+32
+1.1178239446335976
+13
+-0.3441427116181268
+23
+0.21460211860996398
+33
+1.1178239446335976
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+1.5154544286133387e-14
+20
+0.2146021186099651
+30
+1.210036706292738
+11
+-0.3441427116181268
+21
+0.21460211860996398
+31
+1.1178239446335976
+12
+-0.3562827519999848
+22
+0.2146021186099651
+32
+1.210036706292738
+13
+-0.3562827519999848
+23
+0.2146021186099651
+33
+1.210036706292738
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+1.5154544286133387e-14
+20
+0.2146021186099651
+30
+1.210036706292738
+11
+-0.3562827519999848
+21
+0.2146021186099651
+31
+1.210036706292738
+12
+-0.34414271161812904
+22
+0.21460211860996398
+32
+1.3022494679518728
+13
+-0.34414271161812904
+23
+0.21460211860996398
+33
+1.3022494679518728
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+1.5154544286133387e-14
+20
+0.2146021186099651
+30
+1.210036706292738
+11
+0.34414271161815474
+21
+0.2146021186099651
+31
+1.3022494679518728
+12
+0.35628275200001275
+22
+0.21460211860996398
+32
+1.2100367062927357
+13
+0.35628275200001275
+23
+0.21460211860996398
+33
+1.2100367062927357
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.34414271161815474
+20
+0.2146021186099651
+30
+1.3022494679518728
+11
+1.5154544286133387e-14
+21
+0.2146021186099651
+31
+1.210036706292738
+12
+-0.34414271161812904
+22
+0.21460211860996398
+32
+1.3022494679518728
+13
+-0.34414271161812904
+23
+0.21460211860996398
+33
+1.3022494679518728
+70
+15
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.34414271161815474
+20
+0.2146021186099651
+30
+1.3022494679518728
+11
+-0.34414271161812904
+21
+0.21460211860996398
+31
+1.3022494679518728
+12
+-0.31759179099011564
+22
+0.2146021186099651
+32
+1.3663490606255126
+13
+-0.31759179099011564
+23
+0.2146021186099651
+33
+1.3663490606255126
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.34414271161815474
+20
+0.2146021186099651
+30
+1.3022494679518728
+11
+-0.31759179099011564
+21
+0.2146021186099651
+31
+1.3663490606255126
+12
+0.3085499141622455
+22
+0.2146021186099651
+32
+1.3881780822927345
+13
+0.3085499141622455
+23
+0.2146021186099651
+33
+1.3881780822927345
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3085499141622455
+20
+0.2146021186099651
+30
+1.3881780822927345
+11
+-0.31759179099011564
+21
+0.2146021186099651
+31
+1.3663490606255126
+12
+-0.30854991416221755
+22
+0.21460211860996398
+32
+1.3881780822927345
+13
+-0.30854991416221755
+23
+0.21460211860996398
+33
+1.3881780822927345
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3085499141622455
+20
+0.2146021186099651
+30
+1.3881780822927345
+11
+-0.30854991416221755
+21
+0.21460211860996398
+31
+1.3881780822927345
+12
+-0.2519299499589899
+22
+0.21460211860996398
+32
+1.4619666562517406
+13
+-0.2519299499589899
+23
+0.21460211860996398
+33
+1.4619666562517406
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3085499141622455
+20
+0.2146021186099651
+30
+1.3881780822927345
+11
+-0.2519299499589899
+21
+0.21460211860996398
+31
+1.4619666562517406
+12
+0.2519299499590178
+22
+0.2146021186099651
+32
+1.4619666562517417
+13
+0.2519299499590178
+23
+0.2146021186099651
+33
+1.4619666562517417
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.2519299499590178
+20
+0.2146021186099651
+30
+1.4619666562517417
+11
+-0.2519299499589899
+21
+0.21460211860996398
+31
+1.4619666562517406
+12
+-0.17814137599998603
+22
+0.2146021186099651
+32
+1.5185866204549672
+13
+-0.17814137599998603
+23
+0.2146021186099651
+33
+1.5185866204549672
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.2519299499590178
+20
+0.2146021186099651
+30
+1.4619666562517417
+11
+-0.17814137599998603
+21
+0.2146021186099651
+31
+1.5185866204549672
+12
+0.17814137600001173
+22
+0.21460211860996287
+32
+1.5185866204549672
+13
+0.17814137600001173
+23
+0.21460211860996287
+33
+1.5185866204549672
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.17814137600001173
+20
+0.21460211860996287
+30
+1.5185866204549672
+11
+-0.17814137599998603
+21
+0.2146021186099651
+31
+1.5185866204549672
+12
+-0.09221276165912418
+22
+0.2146021186099651
+32
+1.5541794179108777
+13
+-0.09221276165912418
+23
+0.2146021186099651
+33
+1.5541794179108777
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.17814137600001173
+20
+0.21460211860996287
+30
+1.5185866204549672
+11
+-0.09221276165912418
+21
+0.2146021186099651
+31
+1.5541794179108777
+12
+0.0922127616591521
+22
+0.21460211860996398
+32
+1.5541794179108777
+13
+0.0922127616591521
+23
+0.21460211860996398
+33
+1.5541794179108777
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.0922127616591521
+20
+0.21460211860996398
+30
+1.5541794179108777
+11
+-0.09221276165912418
+21
+0.2146021186099651
+31
+1.5541794179108777
+12
+1.2823075934420558e-14
+22
+0.2146021186099651
+32
+1.5663194582927344
+13
+1.2823075934420558e-14
+23
+0.2146021186099651
+33
+1.5663194582927344
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3562827520000105
+20
+-4.496403249731884e-15
+30
+1.2100367062927357
+11
+0.34414271161815474
+21
+0.2146021186099651
+31
+1.3022494679518728
+12
+0.34414271161815474
+22
+-5.6066262743570405e-15
+32
+1.3022494679518728
+13
+0.34414271161815474
+23
+-5.6066262743570405e-15
+33
+1.3022494679518728
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.34414271161815474
+20
+0.2146021186099651
+30
+1.3022494679518728
+11
+0.3562827520000105
+21
+-4.496403249731884e-15
+31
+1.2100367062927357
+12
+0.35628275200001275
+22
+0.21460211860996398
+32
+1.2100367062927357
+13
+0.35628275200001275
+23
+0.21460211860996398
+33
+1.2100367062927357
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.34414271161815474
+20
+0.2146021186099651
+30
+1.3022494679518728
+11
+0.30854991416224326
+21
+-4.496403249731884e-15
+31
+1.3881780822927368
+12
+0.34414271161815474
+22
+-5.6066262743570405e-15
+32
+1.3022494679518728
+13
+0.34414271161815474
+23
+-5.6066262743570405e-15
+33
+1.3022494679518728
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.30854991416224326
+20
+-4.496403249731884e-15
+30
+1.3881780822927368
+11
+0.34414271161815474
+21
+0.2146021186099651
+31
+1.3022494679518728
+12
+0.3085499141622455
+22
+0.2146021186099651
+32
+1.3881780822927345
+13
+0.3085499141622455
+23
+0.2146021186099651
+33
+1.3881780822927345
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3085499141622455
+20
+0.2146021186099651
+30
+1.3881780822927345
+11
+0.2519299499590178
+21
+-4.496403249731884e-15
+31
+1.4619666562517417
+12
+0.30854991416224326
+22
+-4.496403249731884e-15
+32
+1.3881780822927368
+13
+0.30854991416224326
+23
+-4.496403249731884e-15
+33
+1.3881780822927368
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.2519299499590178
+20
+-4.496403249731884e-15
+30
+1.4619666562517417
+11
+0.3085499141622455
+21
+0.2146021186099651
+31
+1.3881780822927345
+12
+0.2519299499590178
+22
+0.2146021186099651
+32
+1.4619666562517417
+13
+0.2519299499590178
+23
+0.2146021186099651
+33
+1.4619666562517417
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.2519299499590178
+20
+-4.496403249731884e-15
+30
+1.4619666562517417
+11
+0.17814137600001173
+21
+0.21460211860996287
+31
+1.5185866204549672
+12
+0.17814137600001173
+22
+-4.496403249731884e-15
+32
+1.518586620454966
+13
+0.17814137600001173
+23
+-4.496403249731884e-15
+33
+1.518586620454966
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.17814137600001173
+20
+0.21460211860996287
+30
+1.5185866204549672
+11
+0.2519299499590178
+21
+-4.496403249731884e-15
+31
+1.4619666562517417
+12
+0.2519299499590178
+22
+0.2146021186099651
+32
+1.4619666562517417
+13
+0.2519299499590178
+23
+0.2146021186099651
+33
+1.4619666562517417
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.17814137600001173
+20
+-4.496403249731884e-15
+30
+1.518586620454966
+11
+0.0922127616591521
+21
+0.21460211860996398
+31
+1.5541794179108777
+12
+0.0922127616591521
+22
+-4.496403249731884e-15
+32
+1.5541794179108777
+13
+0.0922127616591521
+23
+-4.496403249731884e-15
+33
+1.5541794179108777
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.0922127616591521
+20
+0.21460211860996398
+30
+1.5541794179108777
+11
+0.17814137600001173
+21
+-4.496403249731884e-15
+31
+1.518586620454966
+12
+0.17814137600001173
+22
+0.21460211860996287
+32
+1.5185866204549672
+13
+0.17814137600001173
+23
+0.21460211860996287
+33
+1.5185866204549672
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.0922127616591521
+20
+-4.496403249731884e-15
+30
+1.5541794179108777
+11
+1.2823075934420558e-14
+21
+0.2146021186099651
+31
+1.5663194582927344
+12
+1.2823075934420558e-14
+22
+-5.6066262743570405e-15
+32
+1.5663194582927333
+13
+1.2823075934420558e-14
+23
+-5.6066262743570405e-15
+33
+1.5663194582927333
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+1.2823075934420558e-14
+20
+0.2146021186099651
+30
+1.5663194582927344
+11
+0.0922127616591521
+21
+-4.496403249731884e-15
+31
+1.5541794179108777
+12
+0.0922127616591521
+22
+0.21460211860996398
+32
+1.5541794179108777
+13
+0.0922127616591521
+23
+0.21460211860996398
+33
+1.5541794179108777
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+1.2823075934420558e-14
+20
+-5.6066262743570405e-15
+30
+1.5663194582927333
+11
+-0.09221276165912418
+21
+0.2146021186099651
+31
+1.5541794179108777
+12
+-0.09221276165912418
+22
+-4.496403249731884e-15
+32
+1.5541794179108777
+13
+-0.09221276165912418
+23
+-4.496403249731884e-15
+33
+1.5541794179108777
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.09221276165912418
+20
+0.2146021186099651
+30
+1.5541794179108777
+11
+1.2823075934420558e-14
+21
+-5.6066262743570405e-15
+31
+1.5663194582927333
+12
+1.2823075934420558e-14
+22
+0.2146021186099651
+32
+1.5663194582927344
+13
+1.2823075934420558e-14
+23
+0.2146021186099651
+33
+1.5663194582927344
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.09221276165912418
+20
+-4.496403249731884e-15
+30
+1.5541794179108777
+11
+-0.17814137599998603
+21
+0.2146021186099651
+31
+1.5185866204549672
+12
+-0.17814137599998603
+22
+-3.3306690738754696e-15
+32
+1.5185866204549672
+13
+-0.17814137599998603
+23
+-3.3306690738754696e-15
+33
+1.5185866204549672
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.17814137599998603
+20
+0.2146021186099651
+30
+1.5185866204549672
+11
+-0.09221276165912418
+21
+-4.496403249731884e-15
+31
+1.5541794179108777
+12
+-0.09221276165912418
+22
+0.2146021186099651
+32
+1.5541794179108777
+13
+-0.09221276165912418
+23
+0.2146021186099651
+33
+1.5541794179108777
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.17814137599998603
+20
+-3.3306690738754696e-15
+30
+1.5185866204549672
+11
+-0.2519299499589899
+21
+0.19495730511311
+31
+1.4619666562517406
+12
+-0.2519299499589898
+22
+-5.6066262743570405e-15
+32
+1.4619666562517406
+13
+-0.2519299499589898
+23
+-5.6066262743570405e-15
+33
+1.4619666562517406
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.2519299499589899
+20
+0.19495730511311
+30
+1.4619666562517406
+11
+-0.17814137599998603
+21
+-3.3306690738754696e-15
+31
+1.5185866204549672
+12
+-0.2519299499589899
+22
+0.21460211860996398
+32
+1.4619666562517406
+13
+-0.2519299499589899
+23
+0.21460211860996398
+33
+1.4619666562517406
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.2519299499589899
+20
+0.21460211860996398
+30
+1.4619666562517406
+11
+-0.17814137599998603
+21
+-3.3306690738754696e-15
+31
+1.5185866204549672
+12
+-0.17814137599998603
+22
+0.2146021186099651
+32
+1.5185866204549672
+13
+-0.17814137599998603
+23
+0.2146021186099651
+33
+1.5185866204549672
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.2519299499589899
+20
+0.19495730511311
+30
+1.4619666562517406
+11
+-0.30854991416221755
+21
+-4.496403249731884e-15
+31
+1.3881780822927345
+12
+-0.2519299499589898
+22
+-5.6066262743570405e-15
+32
+1.4619666562517406
+13
+-0.2519299499589898
+23
+-5.6066262743570405e-15
+33
+1.4619666562517406
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.30854991416221755
+20
+-4.496403249731884e-15
+30
+1.3881780822927345
+11
+-0.2519299499589899
+21
+0.19495730511311
+31
+1.4619666562517406
+12
+-0.30854991416221755
+22
+0.21460211860996398
+32
+1.3881780822927345
+13
+-0.30854991416221755
+23
+0.21460211860996398
+33
+1.3881780822927345
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.30854991416221755
+20
+0.21460211860996398
+30
+1.3881780822927345
+11
+-0.2519299499589899
+21
+0.19495730511311
+31
+1.4619666562517406
+12
+-0.2519299499589899
+22
+0.21460211860996398
+32
+1.4619666562517406
+13
+-0.2519299499589899
+23
+0.21460211860996398
+33
+1.4619666562517406
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.30854991416221755
+20
+0.21460211860996398
+30
+1.3881780822927345
+11
+-0.31759179099011786
+21
+-4.496403249731884e-15
+31
+1.3663490606255115
+12
+-0.30854991416221755
+22
+-4.496403249731884e-15
+32
+1.3881780822927345
+13
+-0.30854991416221755
+23
+-4.496403249731884e-15
+33
+1.3881780822927345
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.31759179099011786
+20
+-4.496403249731884e-15
+30
+1.3663490606255115
+11
+-0.34414271161812904
+21
+0.21460211860996398
+31
+1.3022494679518728
+12
+-0.3441427116181268
+22
+-5.6066262743570405e-15
+32
+1.3022494679518728
+13
+-0.3441427116181268
+23
+-5.6066262743570405e-15
+33
+1.3022494679518728
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.34414271161812904
+20
+0.21460211860996398
+30
+1.3022494679518728
+11
+-0.31759179099011786
+21
+-4.496403249731884e-15
+31
+1.3663490606255115
+12
+-0.30854991416221755
+22
+0.21460211860996398
+32
+1.3881780822927345
+13
+-0.30854991416221755
+23
+0.21460211860996398
+33
+1.3881780822927345
+70
+15
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.34414271161812904
+20
+0.21460211860996398
+30
+1.3022494679518728
+11
+-0.30854991416221755
+21
+0.21460211860996398
+31
+1.3881780822927345
+12
+-0.31759179099011564
+22
+0.2146021186099651
+32
+1.3663490606255126
+13
+-0.31759179099011564
+23
+0.2146021186099651
+33
+1.3663490606255126
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.32045933822158423
+20
+0.1850172851865613
+30
+0.8895773680711375
+11
+-0.24582951358828667
+21
+0.24582951358829058
+31
+0.7683733084958861
+12
+-0.30107843600394635
+22
+0.17382771607406938
+32
+0.7683733084958861
+13
+-0.30107843600394635
+23
+0.17382771607406938
+33
+0.7683733084958861
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.24582951358828667
+20
+0.24582951358829058
+30
+0.7683733084958861
+11
+-0.32045933822158423
+21
+0.1850172851865613
+31
+0.8895773680711375
+12
+-0.29397599311384076
+22
+0.22749485479893866
+32
+0.9160607131788822
+13
+-0.29397599311384076
+23
+0.22749485479893866
+33
+0.9160607131788822
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.24582951358828667
+20
+0.24582951358829058
+30
+0.7683733084958861
+11
+-0.29397599311384076
+21
+0.22749485479893866
+31
+0.9160607131788822
+12
+-0.26844496678834595
+22
+0.26844496678835666
+32
+0.9415917395043769
+13
+-0.26844496678834595
+23
+0.26844496678835666
+33
+0.9415917395043769
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.26844496678834595
+20
+0.26844496678835666
+30
+0.9415917395043769
+11
+-0.17382771607407105
+21
+0.3010784360039514
+31
+0.7683733084958873
+12
+-0.24582951358828667
+22
+0.24582951358829058
+32
+0.7683733084958861
+13
+-0.24582951358828667
+23
+0.24582951358829058
+33
+0.7683733084958861
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.17382771607407105
+20
+0.3010784360039514
+30
+0.7683733084958873
+11
+-0.26844496678834595
+21
+0.26844496678835666
+31
+0.9415917395043769
+12
+-0.19646449928738383
+22
+0.3402864946493293
+32
+1.013572207005339
+13
+-0.19646449928738383
+23
+0.3402864946493293
+33
+1.013572207005339
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.17382771607407105
+20
+0.3010784360039514
+30
+0.7683733084958873
+11
+-0.10601971888034317
+21
+0.39567097746564023
+31
+1.1040169874123784
+12
+-0.0899798469732796
+22
+0.3358093605615798
+32
+0.768373308495885
+13
+-0.0899798469732796
+23
+0.3358093605615798
+33
+0.768373308495885
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.10601971888034317
+20
+0.39567097746564023
+30
+1.1040169874123784
+11
+-0.17382771607407105
+21
+0.3010784360039514
+31
+0.7683733084958873
+12
+-0.19646449928738383
+22
+0.3402864946493293
+32
+1.013572207005339
+13
+-0.19646449928738383
+23
+0.3402864946493293
+33
+1.013572207005339
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3518308750436484
+20
+0.09427279884027734
+30
+0.8582058312490733
+11
+-0.30107843600394635
+21
+0.17382771607406938
+31
+0.7683733084958861
+12
+-0.3358093605615814
+22
+0.08997984697328248
+32
+0.7683733084958861
+13
+-0.3358093605615814
+23
+0.08997984697328248
+33
+0.7683733084958861
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.30107843600394635
+20
+0.17382771607406938
+30
+0.7683733084958861
+11
+-0.3518308750436484
+21
+0.09427279884027734
+31
+0.8582058312490733
+12
+-0.32045933822158423
+22
+0.1850172851865613
+32
+0.8895773680711375
+13
+-0.32045933822158423
+23
+0.1850172851865613
+33
+0.8895773680711375
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3623076845685704
+20
+-4.496403249731884e-15
+30
+0.8477290217241491
+11
+-0.3358093605615814
+21
+0.08997984697328248
+31
+0.7683733084958861
+12
+-0.3476554321481416
+22
+-7.827072323607354e-15
+32
+0.7683733084958861
+13
+-0.3476554321481416
+23
+-7.827072323607354e-15
+33
+0.7683733084958861
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3358093605615814
+20
+0.08997984697328248
+30
+0.7683733084958861
+11
+-0.3623076845685704
+21
+-4.496403249731884e-15
+31
+0.8477290217241491
+12
+-0.3518308750436484
+22
+0.09427279884027734
+32
+0.8582058312490733
+13
+-0.3518308750436484
+23
+0.09427279884027734
+33
+0.8582058312490733
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.10601971888034317
+20
+0.39567097746564023
+30
+1.1040169874123784
+11
+8.43769498715119e-15
+21
+0.3476554321481467
+31
+0.7683733084958861
+12
+-0.0899798469732796
+22
+0.3358093605615798
+32
+0.768373308495885
+13
+-0.0899798469732796
+23
+0.3358093605615798
+33
+0.768373308495885
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+8.43769498715119e-15
+20
+0.3476554321481467
+30
+0.7683733084958861
+11
+-0.10601971888034317
+21
+0.39567097746564023
+31
+1.1040169874123784
+12
+1.0658141036401503e-14
+22
+0.4292042372199358
+32
+1.2100367062927369
+13
+1.0658141036401503e-14
+23
+0.4292042372199358
+33
+1.2100367062927369
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3441427116181268
+20
+0.21460211860996398
+30
+1.1178239446335976
+11
+-0.3085499141622175
+21
+-4.496403249731884e-15
+31
+1.0318953302927392
+12
+-0.34414271161812904
+22
+-5.6066262743570405e-15
+32
+1.1178239446335965
+13
+-0.34414271161812904
+23
+-5.6066262743570405e-15
+33
+1.1178239446335965
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3085499141622175
+20
+-4.496403249731884e-15
+30
+1.0318953302927392
+11
+-0.3441427116181268
+21
+0.21460211860996398
+31
+1.1178239446335976
+12
+-0.30854991416221755
+22
+0.2146021186099651
+32
+1.031895330292737
+13
+-0.30854991416221755
+23
+0.2146021186099651
+33
+1.031895330292737
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.34414271161812904
+20
+0.21460211860996398
+30
+1.3022494679518728
+11
+-0.3562827519999848
+21
+-4.496403249731884e-15
+31
+1.2100367062927357
+12
+-0.3441427116181268
+22
+-5.6066262743570405e-15
+32
+1.3022494679518728
+13
+-0.3441427116181268
+23
+-5.6066262743570405e-15
+33
+1.3022494679518728
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3562827519999848
+20
+-4.496403249731884e-15
+30
+1.2100367062927357
+11
+-0.34414271161812904
+21
+0.21460211860996398
+31
+1.3022494679518728
+12
+-0.3562827519999848
+22
+0.2146021186099651
+32
+1.210036706292738
+13
+-0.3562827519999848
+23
+0.2146021186099651
+33
+1.210036706292738
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3562827519999848
+20
+-4.496403249731884e-15
+30
+1.2100367062927357
+11
+-0.3441427116181268
+21
+0.21460211860996398
+31
+1.1178239446335976
+12
+-0.34414271161812904
+22
+-5.6066262743570405e-15
+32
+1.1178239446335965
+13
+-0.34414271161812904
+23
+-5.6066262743570405e-15
+33
+1.1178239446335965
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3441427116181268
+20
+0.21460211860996398
+30
+1.1178239446335976
+11
+-0.3562827519999848
+21
+-4.496403249731884e-15
+31
+1.2100367062927357
+12
+-0.3562827519999848
+22
+0.2146021186099651
+32
+1.210036706292738
+13
+-0.3562827519999848
+23
+0.2146021186099651
+33
+1.210036706292738
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3085499141622175
+20
+-4.496403249731884e-15
+30
+1.0318953302927392
+11
+-0.25192994995899204
+21
+0.19495730511311
+31
+0.9581067563337331
+12
+-0.25192994995898976
+22
+-5.6066262743570405e-15
+32
+0.958106756333732
+13
+-0.25192994995898976
+23
+-5.6066262743570405e-15
+33
+0.958106756333732
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.25192994995899204
+20
+0.19495730511311
+30
+0.9581067563337331
+11
+-0.3085499141622175
+21
+-4.496403249731884e-15
+31
+1.0318953302927392
+12
+-0.30854991416221755
+22
+0.2146021186099651
+32
+1.031895330292737
+13
+-0.30854991416221755
+23
+0.2146021186099651
+33
+1.031895330292737
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.25192994995899204
+20
+0.19495730511311
+30
+0.9581067563337331
+11
+-0.30854991416221755
+21
+0.2146021186099651
+31
+1.031895330292737
+12
+-0.25192994995899204
+22
+0.2146021186099651
+32
+0.9581067563337309
+13
+-0.25192994995899204
+23
+0.2146021186099651
+33
+0.9581067563337309
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+1.0658141036401503e-14
+20
+0.4292042372199358
+30
+1.2100367062927369
+11
+-0.25192994995899204
+21
+0.2146021186099651
+31
+0.9581067563337309
+12
+1.5154544286133387e-14
+22
+0.2146021186099651
+32
+1.210036706292738
+13
+1.5154544286133387e-14
+23
+0.2146021186099651
+33
+1.210036706292738
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.25192994995899204
+20
+0.2146021186099651
+30
+0.9581067563337309
+11
+1.0658141036401503e-14
+21
+0.4292042372199358
+31
+1.2100367062927369
+12
+-0.29397599311384076
+22
+0.22749485479893866
+32
+0.9160607131788822
+13
+-0.29397599311384076
+23
+0.22749485479893866
+33
+0.9160607131788822
+70
+15
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.29397599311384076
+20
+0.22749485479893866
+30
+0.9160607131788822
+11
+1.0658141036401503e-14
+21
+0.4292042372199358
+31
+1.2100367062927369
+12
+-0.26844496678834595
+22
+0.26844496678835666
+32
+0.9415917395043769
+13
+-0.26844496678834595
+23
+0.26844496678835666
+33
+0.9415917395043769
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.26844496678834595
+20
+0.26844496678835666
+30
+0.9415917395043769
+11
+1.0658141036401503e-14
+21
+0.4292042372199358
+31
+1.2100367062927369
+12
+-0.19646449928738383
+22
+0.3402864946493293
+32
+1.013572207005339
+13
+-0.19646449928738383
+23
+0.3402864946493293
+33
+1.013572207005339
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.19646449928738383
+20
+0.3402864946493293
+30
+1.013572207005339
+11
+1.0658141036401503e-14
+21
+0.4292042372199358
+31
+1.2100367062927369
+12
+-0.10601971888034317
+22
+0.39567097746564023
+32
+1.1040169874123784
+13
+-0.10601971888034317
+23
+0.39567097746564023
+33
+1.1040169874123784
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.25192994995899204
+20
+0.19495730511311
+30
+0.9581067563337331
+11
+-0.3623076845685704
+21
+-4.496403249731884e-15
+31
+0.8477290217241491
+12
+-0.25192994995898976
+22
+-5.6066262743570405e-15
+32
+0.958106756333732
+13
+-0.25192994995898976
+23
+-5.6066262743570405e-15
+33
+0.958106756333732
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3623076845685704
+20
+-4.496403249731884e-15
+30
+0.8477290217241491
+11
+-0.25192994995899204
+21
+0.19495730511311
+31
+0.9581067563337331
+12
+-0.3518308750436484
+22
+0.09427279884027734
+32
+0.8582058312490733
+13
+-0.3518308750436484
+23
+0.09427279884027734
+33
+0.8582058312490733
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.3518308750436484
+20
+0.09427279884027734
+30
+0.8582058312490733
+11
+-0.25192994995899204
+21
+0.19495730511311
+31
+0.9581067563337331
+12
+-0.32045933822158423
+22
+0.1850172851865613
+32
+0.8895773680711375
+13
+-0.32045933822158423
+23
+0.1850172851865613
+33
+0.8895773680711375
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.32045933822158423
+20
+0.1850172851865613
+30
+0.8895773680711375
+11
+-0.25192994995899204
+21
+0.19495730511311
+31
+0.9581067563337331
+12
+-0.29397599311384076
+22
+0.22749485479893866
+32
+0.9160607131788822
+13
+-0.29397599311384076
+23
+0.22749485479893866
+33
+0.9160607131788822
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+-0.29397599311384076
+20
+0.22749485479893866
+30
+0.9160607131788822
+11
+-0.25192994995899204
+21
+0.19495730511311
+31
+0.9581067563337331
+12
+-0.25192994995899204
+22
+0.2146021186099651
+32
+0.9581067563337309
+13
+-0.25192994995899204
+23
+0.2146021186099651
+33
+0.9581067563337309
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.429204237219952
+20
+-1.1102230246251565e-15
+30
+1.210036706292738
+11
+0.35628275200001275
+21
+0.21460211860996398
+31
+1.2100367062927357
+12
+0.3562827520000105
+22
+-4.496403249731884e-15
+32
+1.2100367062927357
+13
+0.3562827520000105
+23
+-4.496403249731884e-15
+33
+1.2100367062927357
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.35628275200001275
+20
+0.21460211860996398
+30
+1.2100367062927357
+11
+0.429204237219952
+21
+-1.1102230246251565e-15
+31
+1.210036706292738
+12
+0.3717017728444028
+22
+0.2146021186099673
+32
+1.2100367062927369
+13
+0.3717017728444028
+23
+0.2146021186099673
+33
+1.2100367062927369
+70
+15
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.3717017728444028
+20
+0.2146021186099673
+30
+1.2100367062927369
+11
+0.429204237219952
+21
+-1.1102230246251565e-15
+31
+1.210036706292738
+12
+0.41457945748344976
+22
+0.11108623083121855
+32
+1.2100367062927369
+13
+0.41457945748344976
+23
+0.11108623083121855
+33
+1.2100367062927369
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+1.5154544286133387e-14
+20
+0.2146021186099651
+30
+1.210036706292738
+11
+0.11108623083123143
+21
+0.4145794574834358
+31
+1.2100367062927357
+12
+1.0658141036401503e-14
+22
+0.4292042372199358
+32
+1.2100367062927369
+13
+1.0658141036401503e-14
+23
+0.4292042372199358
+33
+1.2100367062927369
+70
+1
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.11108623083123143
+20
+0.4145794574834358
+30
+1.2100367062927357
+11
+1.5154544286133387e-14
+21
+0.2146021186099651
+31
+1.210036706292738
+12
+0.35628275200001275
+22
+0.21460211860996398
+32
+1.2100367062927357
+13
+0.35628275200001275
+23
+0.21460211860996398
+33
+1.2100367062927357
+70
+13
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.11108623083123143
+20
+0.4145794574834358
+30
+1.2100367062927357
+11
+0.35628275200001275
+21
+0.21460211860996398
+31
+1.2100367062927357
+12
+0.21460211860998019
+22
+0.3717017728443855
+32
+1.210036706292738
+13
+0.21460211860998019
+23
+0.3717017728443855
+33
+1.210036706292738
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.21460211860998019
+20
+0.3717017728443855
+30
+1.210036706292738
+11
+0.35628275200001275
+21
+0.21460211860996398
+31
+1.2100367062927357
+12
+0.30349322665223116
+22
+0.30349322665221606
+32
+1.2100367062927357
+13
+0.30349322665223116
+23
+0.30349322665221606
+33
+1.2100367062927357
+70
+3
+  0
+3DFACE
+ 8
+thumb proximal
+10
+0.30349322665223116
+20
+0.30349322665221606
+30
+1.2100367062927357
+11
+0.35628275200001275
+21
+0.21460211860996398
+31
+1.2100367062927357
+12
+0.3717017728444028
+22
+0.2146021186099673
+32
+1.2100367062927369
+13
+0.3717017728444028
+23
+0.2146021186099673
+33
+1.2100367062927369
+70
+3
+  0
+LINE
+ 8
+palm
+10
+-1.2556460136349066
+20
+0.1897458358697347
+30
+-0.029987258687020634
+11
+-1.2556460136349066
+21
+-0.07243340606868914
+31
+-0.02998725868702173
+  0
+LINE
+ 8
+palm
+10
+-1.222231336631785
+20
+0.3432508349117811
+30
+-0.029987258687021765
+11
+-1.2235069381440584
+21
+0.3503683787193038
+31
+-0.029987259376548173
+  0
+LINE
+ 8
+palm
+10
+-1.195492940329603
+20
+0.41164114523825557
+30
+-0.029987258687021765
+11
+-1.1969713685029186
+21
+0.41362328422976613
+31
+-0.029987259178884056
+  0
+3DFACE
+ 8
+palm
+10
+-1.7521367490001787
+20
+-0.37669237145944223
+30
+1.970411275796931
+11
+-1.65545853255605
+21
+-0.333700440955652
+31
+1.421192459110173
+12
+-1.625486635239021
+22
+-0.37669239221898876
+32
+1.4294077340431905
+13
+-1.625486635239021
+23
+-0.37669239221898876
+33
+1.4294077340431905
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.65545853255605
+20
+-0.333700440955652
+30
+1.421192459110173
+11
+-1.7521367490001787
+21
+-0.37669237145944223
+31
+1.970411275796931
+12
+-1.7828563212734383
+22
+-0.33370042007355216
+32
+1.9653897982274613
+13
+-1.7828563212734383
+23
+-0.33370042007355216
+33
+1.9653897982274613
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.8720848207106824
+20
+0.03421035611087325
+30
+2.573160274089795
+11
+1.895235130253219
+21
+-0.07232523842382649
+31
+2.815815258934461
+12
+1.8676957602144741
+22
+-0.07591452217505529
+32
+2.573406522256996
+13
+1.8676957602144741
+23
+-0.07591452217505529
+33
+2.573406522256996
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.895235130253219
+20
+-0.07232523842382649
+30
+2.815815258934461
+11
+1.8720848207106824
+21
+0.03421035611087325
+31
+2.573160274089795
+12
+1.8996241907494322
+22
+0.03905660376695963
+32
+2.81556901076726
+13
+1.8996241907494322
+23
+0.03905660376695963
+33
+2.81556901076726
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.6406857800208818
+20
+-0.1001033428773545
+30
+1.0873129661577854
+11
+0.7645649784997064
+21
+-0.31369755519895914
+31
+1.2062883608730788
+12
+0.7770026636877001
+22
+-0.30666149106830126
+32
+1.2221262601239269
+13
+0.7770026636877001
+23
+-0.30666149106830126
+33
+1.2221262601239269
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.6406857800208818
+20
+-0.1001033428773545
+30
+1.0873129661577854
+11
+0.7514924403831034
+21
+-0.31812034010292306
+31
+1.1900482958506116
+12
+0.7645649784997064
+22
+-0.31369755519895914
+32
+1.2062883608730788
+13
+0.7645649784997064
+23
+-0.31369755519895914
+33
+1.2062883608730788
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.6406857800208818
+20
+-0.1001033428773545
+30
+1.0873129661577854
+11
+0.7770026636877001
+21
+-0.30666149106830126
+31
+1.2221262601239269
+12
+0.7820181234396306
+22
+-0.3025385423088175
+32
+1.2286885607611746
+13
+0.7820181234396306
+23
+-0.3025385423088175
+33
+1.2286885607611746
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.9177662874185963
+20
+0.038991896669782256
+30
+2.7096710661911403
+11
+-1.8422019120038722
+21
+0.1503741409608912
+31
+1.9556890484864835
+12
+-1.8465420087821003
+22
+0.03899188499522588
+32
+1.9549796114620632
+13
+-1.8465420087821003
+23
+0.03899188499522588
+33
+1.9549796114620632
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.8422019120038722
+20
+0.1503741409608912
+30
+1.9556890484864835
+11
+-1.9177662874185963
+21
+0.038991896669782256
+31
+2.7096710661911403
+12
+-1.9133981428935987
+22
+0.15037415263084852
+32
+2.7100833096854653
+13
+-1.9133981428935987
+23
+0.15037415263084852
+33
+2.7100833096854653
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7696706587222877
+20
+-0.35198670100650886
+30
+2.7811361899186524
+11
+1.767439146332895
+21
+0.42996788604843883
+31
+2.78121228382332
+12
+1.7674390181608894
+22
+-0.3519867006406931
+32
+2.7812122838233124
+13
+1.7674390181608894
+23
+-0.3519867006406931
+33
+2.7812122838233124
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.767439146332895
+20
+0.42996788604843883
+30
+2.78121228382332
+11
+1.7696706587222877
+21
+-0.35198670100650886
+31
+2.7811361899186524
+12
+1.7696707868944743
+22
+0.4299678831142456
+32
+2.7811361899186586
+13
+1.7696707868944743
+23
+0.4299678831142456
+33
+2.7811361899186586
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.4498747685188131
+20
+0.11569951797502342
+30
+1.4551784474179665
+11
+0.8335540250022027
+21
+-0.39135639924089705
+31
+1.9429380045111706
+12
+1.3505091197150552
+22
+0.11569951797502342
+32
+1.3688012067183613
+13
+1.3505091197150552
+23
+0.11569951797502342
+33
+1.3688012067183613
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.8335540250022027
+20
+-0.39135639924089705
+30
+1.9429380045111706
+11
+1.4498747685188131
+21
+0.11569951797502342
+31
+1.4551784474179665
+12
+0.9532716741633414
+22
+-0.39135639924089705
+32
+2.0470069692094945
+13
+0.9532716741633414
+23
+-0.39135639924089705
+33
+2.0470069692094945
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.9133981428935987
+20
+0.15037415263084852
+30
+2.7100833096854653
+11
+-1.8294774286062707
+21
+0.2541658788276129
+31
+1.9577690125989091
+12
+-1.8422019120038722
+22
+0.1503741409608912
+32
+1.9556890484864835
+13
+-1.8422019120038722
+23
+0.1503741409608912
+33
+1.9556890484864835
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.8294774286062707
+20
+0.2541658788276129
+30
+1.9577690125989091
+11
+-1.9133981428935987
+21
+0.15037415263084852
+31
+2.7100833096854653
+12
+-1.900591427663335
+22
+0.25416589048409133
+32
+2.71129194645555
+13
+-1.900591427663335
+23
+0.25416589048409133
+33
+2.71129194645555
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.5675027400274082
+20
+0.4189168127655707
+30
+3.5817379898496142
+11
+0.500176829057992
+21
+0.4693394935974071
+31
+3.6177054584397785
+12
+0.5001768207931099
+22
+0.41891698771371944
+32
+3.617705458439768
+13
+0.5001768207931099
+23
+0.41891698771371944
+33
+3.617705458439768
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.500176829057992
+20
+0.4693394935974071
+30
+3.6177054584397785
+11
+1.5675027400274082
+21
+0.4189168127655707
+31
+3.5817379898496142
+12
+1.567502748292268
+22
+0.4693393186492294
+32
+3.5817379898496267
+13
+1.567502748292268
+23
+0.4693393186492294
+33
+3.5817379898496267
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.5511466302233783
+20
+-0.35198650127506403
+30
+2.822685108166137
+11
+1.7679994781424735
+21
+-0.3519867007325644
+31
+2.786145599142259
+12
+1.7674390181608894
+22
+-0.3519867006406931
+32
+2.7812122838233124
+13
+1.7674390181608894
+23
+-0.3519867006406931
+33
+2.7812122838233124
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7679994781424735
+20
+-0.3519867007325644
+30
+2.786145599142259
+11
+0.5511466302233783
+21
+-0.35198650127506403
+31
+2.822685108166137
+12
+1.5675026165657096
+22
+-0.3519866678686142
+32
+3.387140392775377
+13
+1.5675026165657096
+23
+-0.3519866678686142
+33
+3.387140392775377
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.5675026165657096
+20
+-0.3519866678686142
+30
+3.387140392775377
+11
+0.5511466302233783
+21
+-0.35198650127506403
+31
+2.822685108166137
+12
+0.5001766973314854
+22
+-0.351986492920461
+32
+3.4231078613655503
+13
+0.5001766973314854
+23
+-0.351986492920461
+33
+3.4231078613655503
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.4736623158196023
+20
+0.41891731125080267
+30
+3.1019128637859286
+11
+-1.3438353594874726
+21
+0.42997289595543453
+31
+2.3082689981735225
+12
+-0.4070164569928685
+22
+0.42997157245158046
+32
+2.665229116319892
+13
+-0.4070164569928685
+23
+0.42997157245158046
+33
+2.665229116319892
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.900591427663335
+20
+0.25416589048409133
+30
+2.71129194645555
+11
+-1.8092357111046038
+21
+0.34329386318366695
+31
+1.9610777576823957
+12
+-1.8294774286062707
+22
+0.2541658788276129
+32
+1.9577690125989091
+13
+-1.8294774286062707
+23
+0.2541658788276129
+33
+1.9577690125989091
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.8092357111046038
+20
+0.34329386318366695
+30
+1.9610777576823957
+11
+-1.900591427663335
+21
+0.25416589048409133
+31
+2.71129194645555
+12
+-1.8802188982066015
+22
+0.3432938748187082
+32
+2.713214609902885
+13
+-1.8802188982066015
+23
+0.3432938748187082
+33
+2.713214609902885
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.8802188982066015
+20
+0.3432938748187082
+30
+2.713214609902885
+11
+-1.7828561990955638
+21
+0.4116841691862121
+31
+1.9653897982274586
+12
+-1.8092357111046038
+22
+0.34329386318366695
+32
+1.9610777576823957
+13
+-1.8092357111046038
+23
+0.34329386318366695
+33
+1.9610777576823957
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7828561990955638
+20
+0.4116841691862121
+30
+1.9653897982274586
+11
+-1.8802188982066015
+21
+0.3432938748187082
+31
+2.713214609902885
+12
+-1.853668908738655
+22
+0.4116841807933129
+32
+2.7157202736909
+13
+-1.853668908738655
+23
+0.4116841807933129
+33
+2.7157202736909
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7681256490688513
+20
+0.42988342156321946
+30
+2.787255060548812
+11
+0.5511467583958203
+21
+0.4299694852427818
+31
+2.8226851081661346
+12
+1.767439146332895
+22
+0.42996788604843883
+32
+2.78121228382332
+13
+1.767439146332895
+23
+0.42996788604843883
+33
+2.78121228382332
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.5511467583958203
+20
+0.4299694852427818
+30
+2.8226851081661346
+11
+1.7681256490688513
+21
+0.42988342156321946
+31
+2.787255060548812
+12
+1.5675027400274082
+22
+0.4189168127655707
+32
+3.5817379898496142
+13
+1.5675027400274082
+23
+0.4189168127655707
+33
+3.5817379898496142
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.9133981794075132
+20
+-0.07239036072325872
+30
+2.710083309685462
+11
+-1.8465420087821003
+21
+0.03899188499522588
+31
+1.9549796114620632
+12
+-1.842201948517798
+22
+-0.07239037239321611
+32
+1.95568904848648
+13
+-1.842201948517798
+23
+-0.07239037239321611
+33
+1.95568904848648
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.8465420087821003
+20
+0.03899188499522588
+30
+1.9549796114620632
+11
+-1.9133981794075132
+21
+-0.07239036072325872
+31
+2.710083309685462
+12
+-1.9177662874185963
+22
+0.038991896669782256
+32
+2.7096710661911403
+13
+-1.9177662874185963
+23
+0.038991896669782256
+33
+2.7096710661911403
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.853668908738655
+20
+0.4116841807933129
+30
+2.7157202736909
+11
+-1.752136612728405
+21
+0.4546761105014804
+31
+1.970411275796935
+12
+-1.7828561990955638
+22
+0.4116841691862121
+32
+1.9653897982274586
+13
+-1.7828561990955638
+23
+0.4116841691862121
+33
+1.9653897982274586
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.752136612728405
+20
+0.4546761105014804
+30
+1.970411275796935
+11
+-1.853668908738655
+21
+0.4116841807933129
+31
+2.7157202736909
+12
+-1.8227507971658294
+22
+0.45467612207602603
+32
+2.7186381809732287
+13
+-1.8227507971658294
+23
+0.45467612207602603
+33
+2.7186381809732287
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.867776432678417
+20
+0.1443314410364377
+30
+2.5734019981594765
+11
+1.8996241907494322
+21
+0.03905660376695963
+31
+2.81556901076726
+12
+1.8720848207106824
+22
+0.03421035611087325
+32
+2.573160274089795
+13
+1.8720848207106824
+23
+0.03421035611087325
+33
+2.573160274089795
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.8996241907494322
+20
+0.03905660376695963
+30
+2.81556901076726
+11
+1.867776432678417
+21
+0.1443314410364377
+31
+2.5734019981594765
+12
+1.895315802717162
+22
+0.15043460930003982
+32
+2.8158107348369414
+13
+1.895315802717162
+23
+0.15043460930003982
+33
+2.8158107348369414
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7191705821264176
+20
+-0.3913561291414933
+30
+1.975799984992849
+11
+-1.8227509334375986
+21
+-0.3766923598848876
+31
+2.718638180973225
+12
+-1.7521367490001787
+22
+-0.37669237145944223
+32
+1.970411275796931
+13
+-1.7521367490001787
+23
+-0.37669237145944223
+33
+1.970411275796931
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.8227509334375986
+20
+-0.3766923598848876
+30
+2.718638180973225
+11
+-1.7191705821264176
+21
+-0.3913561291414933
+31
+1.975799984992849
+12
+-1.7895717227761132
+22
+-0.3913561176018615
+32
+2.721769481190653
+13
+-1.7895717227761132
+23
+-0.3913561176018615
+33
+2.721769481190653
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7828563212734383
+20
+-0.33370042007355216
+30
+1.9653897982274613
+11
+-1.6811959791046571
+21
+-0.2653101264104666
+31
+1.4141378425934237
+12
+-1.65545853255605
+22
+-0.333700440955652
+32
+1.421192459110173
+13
+-1.65545853255605
+23
+-0.333700440955652
+33
+1.421192459110173
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.6811959791046571
+20
+-0.2653101264104666
+30
+1.4141378425934237
+11
+-1.7828563212734383
+21
+-0.33370042007355216
+31
+1.9653897982274613
+12
+-1.8092358108624627
+22
+-0.2653101054231194
+32
+1.9610777576823943
+13
+-1.8092358108624627
+23
+-0.2653101054231194
+33
+1.9610777576823943
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.8092358108624627
+20
+-0.2653101054231194
+30
+1.9610777576823943
+11
+-1.7009450104355979
+21
+-0.17618213549941947
+31
+1.4087246449502893
+12
+-1.6811959791046571
+22
+-0.2653101264104666
+32
+1.4141378425934237
+13
+-1.6811959791046571
+23
+-0.2653101264104666
+33
+1.4141378425934237
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7009450104355979
+20
+-0.17618213549941947
+30
+1.4087246449502893
+11
+-1.8092358108624627
+21
+-0.2653101054231194
+31
+1.9610777576823943
+12
+-1.8294774991457239
+22
+-0.17618211443133014
+32
+1.957769012598909
+13
+-1.8294774991457239
+23
+-0.17618211443133014
+33
+1.957769012598909
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.842201948517798
+20
+-0.07239037239321611
+30
+1.95568904848648
+11
+-1.7175941910489623
+21
+0.038991863859061116
+31
+1.404161108238109
+12
+-1.7133597627005268
+22
+-0.07239039351207949
+32
+1.405321766654406
+13
+-1.7133597627005268
+23
+-0.07239039351207949
+33
+1.405321766654406
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7175941910489623
+20
+0.038991863859061116
+30
+1.404161108238109
+11
+-1.842201948517798
+21
+-0.07239037239321611
+31
+1.95568904848648
+12
+-1.8465420087821003
+22
+0.03899188499522588
+32
+1.9549796114620632
+13
+-1.8465420087821003
+23
+0.03899188499522588
+33
+1.9549796114620632
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.2542185240067691
+20
+0.11569951797501443
+30
+1.2790087735671853
+11
+0.6053747201073587
+21
+-0.3913563992408814
+31
+1.7225878111309507
+12
+1.1611202966523455
+22
+0.11569951797501443
+32
+1.1859105462127746
+13
+1.1611202966523455
+23
+0.11569951797501443
+33
+1.1859105462127746
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.6053747201073587
+20
+-0.3913563992408814
+30
+1.7225878111309507
+11
+1.2542185240067691
+21
+0.11569951797501443
+31
+1.2790087735671853
+12
+0.7175412590885892
+22
+-0.3913563992408904
+32
+1.8347543501121704
+13
+0.7175412590885892
+23
+-0.3913563992408904
+33
+1.8347543501121704
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.8465420087821003
+20
+0.03899188499522588
+30
+1.9549796114620632
+11
+-1.7133597261865965
+21
+0.15037411984202997
+31
+1.4053217666544113
+12
+-1.7175941910489623
+22
+0.038991863859061116
+32
+1.404161108238109
+13
+-1.7175941910489623
+23
+0.038991863859061116
+33
+1.404161108238109
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7133597261865965
+20
+0.15037411984202997
+30
+1.4053217666544113
+11
+-1.8465420087821003
+21
+0.03899188499522588
+31
+1.9549796114620632
+12
+-1.8422019120038722
+22
+0.1503741409608912
+32
+1.9556890484864835
+13
+-1.8422019120038722
+23
+0.1503741409608912
+33
+1.9556890484864835
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.8422019120038722
+20
+0.1503741409608912
+30
+1.9556890484864835
+11
+-1.70094493989614
+21
+0.2541658577595415
+31
+1.4087246449502895
+12
+-1.7133597261865965
+22
+0.15037411984202997
+32
+1.4053217666544113
+13
+-1.7133597261865965
+23
+0.15037411984202997
+33
+1.4053217666544113
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.70094493989614
+20
+0.2541658577595415
+30
+1.4087246449502895
+11
+-1.8422019120038722
+21
+0.1503741409608912
+31
+1.9556890484864835
+12
+-1.8294774286062707
+22
+0.2541658788276129
+32
+1.9577690125989091
+13
+-1.8294774286062707
+23
+0.2541658788276129
+33
+1.9577690125989091
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.8294774286062707
+20
+0.2541658788276129
+30
+1.9577690125989091
+11
+-1.6811958793467983
+21
+0.34329384219633086
+31
+1.4141378425934268
+12
+-1.70094493989614
+22
+0.2541658577595415
+32
+1.4087246449502895
+13
+-1.70094493989614
+23
+0.2541658577595415
+33
+1.4087246449502895
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.6811958793467983
+20
+0.34329384219633086
+30
+1.4141378425934268
+11
+-1.8294774286062707
+21
+0.2541658788276129
+31
+1.9577690125989091
+12
+-1.8092357111046038
+22
+0.34329386318366695
+32
+1.9610777576823957
+13
+-1.8092357111046038
+23
+0.34329386318366695
+33
+1.9610777576823957
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.5001768207931099
+20
+0.41891698771371944
+30
+3.617705458439768
+11
+0.5511467583958203
+21
+0.4299694852427818
+31
+2.8226851081661346
+12
+1.5675027400274082
+22
+0.4189168127655707
+32
+3.5817379898496142
+13
+1.5675027400274082
+23
+0.4189168127655707
+33
+3.5817379898496142
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.8092357111046038
+20
+0.34329386318366695
+30
+1.9610777576823957
+11
+-1.6554584103781642
+21
+0.4116841483041124
+31
+1.4211924591101657
+12
+-1.6811958793467983
+22
+0.34329384219633086
+32
+1.4141378425934268
+13
+-1.6811958793467983
+23
+0.34329384219633086
+33
+1.4141378425934268
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.6554584103781642
+20
+0.4116841483041124
+30
+1.4211924591101657
+11
+-1.8092357111046038
+21
+0.34329386318366695
+31
+1.9610777576823957
+12
+-1.7828561990955638
+22
+0.4116841691862121
+32
+1.9653897982274586
+13
+-1.7828561990955638
+23
+0.4116841691862121
+33
+1.9653897982274586
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.8227507971658294
+20
+0.45467612207602603
+30
+2.7186381809732287
+11
+-1.7191704410475133
+21
+0.4693398573763592
+31
+1.9757999849928503
+12
+-1.752136612728405
+22
+0.4546761105014804
+32
+1.970411275796935
+13
+-1.752136612728405
+23
+0.4546761105014804
+33
+1.970411275796935
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7191704410475133
+20
+0.4693398573763592
+30
+1.9757999849928503
+11
+-1.8227507971658294
+21
+0.45467612207602603
+31
+2.7186381809732287
+12
+-1.7895715816972064
+22
+0.4693398689159888
+32
+2.721769481190647
+13
+-1.7895715816972064
+23
+0.4693398689159888
+33
+2.721769481190647
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7828561990955638
+20
+0.4116841691862121
+30
+1.9653897982274586
+11
+-1.6254864989672675
+21
+0.4546760897419495
+31
+1.4294077340431952
+12
+-1.6554584103781642
+22
+0.4116841483041124
+32
+1.4211924591101657
+13
+-1.6554584103781642
+23
+0.4116841483041124
+33
+1.4211924591101657
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.6254864989672675
+20
+0.4546760897419495
+30
+1.4294077340431952
+11
+-1.7828561990955638
+21
+0.4116841691862121
+31
+1.9653897982274586
+12
+-1.752136612728405
+22
+0.4546761105014804
+32
+1.970411275796935
+13
+-1.752136612728405
+23
+0.4546761105014804
+33
+1.970411275796935
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.752136612728405
+20
+0.4546761105014804
+30
+1.970411275796935
+11
+-1.5933226813458456
+21
+0.4693398367483087
+31
+1.438223809982218
+12
+-1.6254864989672675
+22
+0.4546760897419495
+32
+1.4294077340431952
+13
+-1.6254864989672675
+23
+0.4546760897419495
+33
+1.4294077340431952
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.5933226813458456
+20
+0.4693398367483087
+30
+1.438223809982218
+11
+-1.752136612728405
+21
+0.4546761105014804
+31
+1.970411275796935
+12
+-1.7191704410475133
+22
+0.4693398573763592
+32
+1.9757999849928503
+13
+-1.7191704410475133
+23
+0.4693398573763592
+33
+1.9757999849928503
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.5933228224247524
+20
+-0.39135614976952593
+30
+1.4382238099822164
+11
+-1.7521367490001787
+21
+-0.37669237145944223
+31
+1.970411275796931
+12
+-1.625486635239021
+22
+-0.37669239221898876
+32
+1.4294077340431905
+13
+-1.625486635239021
+23
+-0.37669239221898876
+33
+1.4294077340431905
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7521367490001787
+20
+-0.37669237145944223
+30
+1.970411275796931
+11
+-1.5933228224247524
+21
+-0.39135614976952593
+31
+1.4382238099822164
+12
+-1.7191705821264176
+22
+-0.3913561291414933
+32
+1.975799984992849
+13
+-1.7191705821264176
+23
+-0.3913561291414933
+33
+1.975799984992849
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.4203314900532422
+20
+-0.08234123267425719
+30
+0.7240449027265381
+11
+0.5387999844805174
+21
+-0.27694418478557103
+31
+0.8016767522160716
+12
+0.45563534442351883
+22
+-0.09635017693496095
+32
+0.8188769122878267
+13
+0.45563534442351883
+23
+-0.09635017693496095
+33
+0.8188769122878267
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.45563534442351883
+20
+-0.09635017693496095
+30
+0.8188769122878267
+11
+0.5387999844805174
+21
+-0.27694418478557103
+31
+0.8016767522160716
+12
+0.5928956312949423
+22
+-0.2929528290576049
+32
+0.9561792041941095
+13
+0.5928956312949423
+23
+-0.2929528290576049
+33
+0.9561792041941095
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.3966753060057868
+20
+-0.07337409647306103
+30
+0.659508580082581
+11
+0.5387999844805174
+21
+-0.27694418478557103
+31
+0.8016767522160716
+12
+0.4203314900532422
+22
+-0.08234123267425719
+32
+0.7240449027265381
+13
+0.4203314900532422
+23
+-0.08234123267425719
+33
+0.7240449027265381
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.9017668660717575
+20
+-0.028687052013650738
+30
+1.2298393668802003
+11
+1.0500873483302444
+21
+0.11569952969883424
+31
+1.0651855328987245
+12
+1.0713278635011771
+22
+0.11569951797501443
+32
+1.0896199505044737
+13
+1.0713278635011771
+23
+0.11569951797501443
+33
+1.0896199505044737
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.4971910657083536
+20
+-0.39135639924089705
+30
+1.606575045217334
+11
+0.9017668660717575
+21
+-0.028687052013650738
+31
+1.2298393668802003
+12
+1.0713278635011771
+22
+0.11569951797501443
+32
+1.0896199505044737
+13
+1.0713278635011771
+23
+0.11569951797501443
+33
+1.0896199505044737
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5001768207931099
+20
+0.41891698771371944
+30
+3.617705458439768
+11
+-0.4070164569928685
+21
+0.42997157245158046
+31
+2.665229116319892
+12
+0.5511467583958203
+22
+0.4299694852427818
+32
+2.8226851081661346
+13
+0.5511467583958203
+23
+0.4299694852427818
+33
+2.8226851081661346
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.4971910657083536
+20
+-0.39135639924089705
+30
+1.606575045217334
+11
+0.8687347277652708
+21
+-0.044300385349433036
+31
+1.2280956329668686
+12
+0.9017668660717575
+22
+-0.028687052013650738
+32
+1.2298393668802003
+13
+0.9017668660717575
+23
+-0.028687052013650738
+33
+1.2298393668802003
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.4971910657083536
+20
+-0.39135639924089705
+30
+1.606575045217334
+11
+0.39312210101004275
+21
+-0.3913563992408881
+31
+1.4868573960561888
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.1068452790069585
+20
+-0.3913563992408881
+30
+1.1069552218670458
+11
+0.02045058279261691
+21
+-0.39135639924089705
+31
+0.9739190561071899
+12
+0.4203314900532422
+22
+-0.08234123267425719
+32
+0.7240449027265381
+13
+0.4203314900532422
+23
+-0.08234123267425719
+33
+0.7240449027265381
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.39312210101004275
+20
+-0.3913563992408881
+30
+1.4868573960561888
+11
+0.29329461801529333
+21
+-0.39135639924089705
+31
+1.3635807211619237
+12
+0.6437434044296662
+22
+-0.09951752352774346
+32
+1.0897797118446357
+13
+0.6437434044296662
+23
+-0.09951752352774346
+33
+1.0897797118446357
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.8488303158904233
+20
+-0.21621663583415707
+30
+1.2727812042605189
+11
+0.6406857800208818
+21
+-0.1001033428773545
+31
+1.0873129661577854
+12
+0.84796506596995
+22
+-0.21887684142438632
+32
+1.272402865095184
+13
+0.84796506596995
+23
+-0.21887684142438632
+33
+1.272402865095184
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.29329461801529333
+20
+-0.39135639924089705
+30
+1.3635807211619237
+11
+0.1978302411349111
+21
+-0.39135639924089705
+31
+1.2368952141735952
+12
+0.5513988760171851
+22
+-0.10471927211351728
+32
+0.9800110958759284
+13
+0.5513988760171851
+23
+-0.10471927211351728
+33
+0.9800110958759284
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-0.06124858887884144
+20
+-0.39135639924089705
+30
+0.8379488009693535
+11
+0.3650671801086316
+21
+-0.01768427529481076
+31
+0.4316438776974501
+12
+0.3817497804163781
+22
+-0.05607568881768277
+32
+0.5821837592203328
+13
+0.3817497804163781
+23
+-0.05607568881768277
+33
+0.5821837592203328
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-0.06124858887884144
+20
+-0.39135639924089705
+30
+0.8379488009693535
+11
+-0.13815269815152909
+21
+-0.39135639924089705
+31
+0.6992101152648077
+12
+0.3650671801086316
+22
+-0.01768427529481076
+32
+0.4316438776974501
+13
+0.3650671801086316
+23
+-0.01768427529481076
+33
+0.4316438776974501
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5001768207931099
+20
+0.41891698771371944
+30
+3.617705458439768
+11
+-0.4974273518417929
+21
+0.41891715123359774
+31
+3.4602494443357763
+12
+-0.4070164569928685
+22
+0.42997157245158046
+32
+2.665229116319892
+13
+-0.4070164569928685
+23
+0.42997157245158046
+33
+2.665229116319892
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+0.5001766973314854
+21
+-0.351986492920461
+31
+3.4231078613655503
+12
+0.5001766908782079
+22
+-0.39135649292046104
+32
+3.4231078613655503
+13
+0.5001766908782079
+23
+-0.39135649292046104
+33
+3.4231078613655503
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.5001766973314854
+20
+-0.351986492920461
+30
+3.4231078613655503
+11
+1.5675026101124707
+21
+-0.39135666786861645
+31
+3.387140392775373
+12
+1.5675026165657096
+22
+-0.3519866678686142
+32
+3.387140392775377
+13
+1.5675026165657096
+23
+-0.3519866678686142
+33
+3.387140392775377
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-0.13815269815152909
+20
+-0.39135639924089705
+30
+0.6992101152648077
+11
+0.37878877702084046
+21
+0.038393783699848194
+31
+0.2706184438630661
+12
+0.3650671801086316
+22
+-0.01768427529481076
+32
+0.4316438776974501
+13
+0.3650671801086316
+23
+-0.01768427529481076
+33
+0.4316438776974501
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-0.13815269815152909
+20
+-0.39135639924089705
+30
+0.6992101152648077
+11
+-0.21016804921447574
+21
+-0.39135639924089705
+31
+0.5578720307110291
+12
+0.37878877702084046
+22
+0.038393783699848194
+32
+0.2706184438630661
+13
+0.37878877702084046
+23
+0.038393783699848194
+33
+0.2706184438630661
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5495724628831538
+20
+-0.10484745230472176
+30
+0.977734224044443
+11
+0.1978302411349111
+21
+-0.39135639924089705
+31
+1.2368952141735952
+12
+0.47725266850529624
+22
+-0.09848891117181602
+32
+0.8571105745168952
+13
+0.47725266850529624
+23
+-0.09848891117181602
+33
+0.8571105745168952
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.1978302411349111
+20
+-0.39135639924089705
+30
+1.2368952141735952
+11
+0.5495724628831538
+21
+-0.10484745230472176
+31
+0.977734224044443
+12
+0.5513988760171851
+22
+-0.10471927211351728
+32
+0.9800110958759284
+13
+0.5513988760171851
+23
+-0.10471927211351728
+33
+0.9800110958759284
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.1978302411349111
+20
+-0.39135639924089705
+30
+1.2368952141735952
+11
+0.1068452790069585
+21
+-0.3913563992408881
+31
+1.1069552218670458
+12
+0.47725266850529624
+22
+-0.09848891117181602
+32
+0.8571105745168952
+13
+0.47725266850529624
+23
+-0.09848891117181602
+33
+0.8571105745168952
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.40683149306505695
+20
+0.08212027273578515
+30
+0.1742805040831692
+11
+0.4285775499251552
+21
+0.11569951797502342
+31
+0.0998712621479301
+12
+0.4353642452976316
+22
+0.11569951797503464
+32
+0.11442537734154945
+13
+0.4353642452976316
+23
+0.11569951797503464
+33
+0.11442537734154945
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-0.21016804921447574
+20
+-0.39135639924089705
+30
+0.5578720307110291
+11
+-0.27720690245551616
+21
+-0.3913563992408904
+31
+0.4141067459925812
+12
+0.4285775499251552
+22
+0.11569951797502342
+32
+0.0998712621479301
+13
+0.4285775499251552
+23
+0.11569951797502342
+33
+0.0998712621479301
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.02045058279261691
+20
+-0.39135639924089705
+30
+0.9739190561071899
+11
+-0.06124858887884144
+21
+-0.39135639924089705
+31
+0.8379488009693535
+12
+0.3817497804163781
+22
+-0.05607568881768277
+32
+0.5821837592203328
+13
+0.3817497804163781
+23
+-0.05607568881768277
+33
+0.5821837592203328
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.552194408681052
+20
+0.11569951797501443
+30
+1.538035258303604
+11
+0.9532716741633414
+21
+-0.39135639924089705
+31
+2.0470069692094945
+12
+1.4498747685188131
+22
+0.11569951797502342
+32
+1.4551784474179665
+13
+1.4498747685188131
+23
+0.11569951797502342
+33
+1.4551784474179665
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.9532716741633414
+20
+-0.39135639924089705
+30
+2.0470069692094945
+11
+1.552194408681052
+21
+0.11569951797501443
+31
+1.538035258303604
+12
+1.076548349057601
+22
+-0.39135639924089705
+32
+2.146834452204238
+13
+1.076548349057601
+23
+-0.39135639924089705
+33
+2.146834452204238
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.84796506596995
+20
+-0.21887684142438632
+30
+1.272402865095184
+11
+0.6406857800208818
+21
+-0.1001033428773545
+31
+1.0873129661577854
+12
+0.8396041535634804
+22
+-0.23777977037520193
+32
+1.2678971062030804
+13
+0.8396041535634804
+23
+-0.23777977037520193
+33
+1.2678971062030804
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.8396041535634804
+20
+-0.23777977037520193
+30
+1.2678971062030804
+11
+0.6406857800208818
+21
+-0.1001033428773545
+31
+1.0873129661577854
+12
+0.82950587120676
+22
+-0.25533499270842597
+32
+1.2617959663934535
+13
+0.82950587120676
+23
+-0.25533499270842597
+33
+1.2617959663934535
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.82950587120676
+20
+-0.25533499270842597
+30
+1.2617959663934535
+11
+0.6406857800208818
+21
+-0.1001033428773545
+31
+1.0873129661577854
+12
+0.8178385648700359
+22
+-0.27124984964993776
+32
+1.2542011562606892
+13
+0.8178385648700359
+23
+-0.27124984964993776
+33
+1.2542011562606892
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.8178385648700359
+20
+-0.27124984964993776
+30
+1.2542011562606892
+11
+0.6406857800208818
+21
+-0.1001033428773545
+31
+1.0873129661577854
+12
+0.8047967373346043
+22
+-0.2852590285516704
+32
+1.245239287008058
+13
+0.8047967373346043
+23
+-0.2852590285516704
+33
+1.245239287008058
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.8047967373346043
+20
+-0.2852590285516704
+30
+1.245239287008058
+11
+0.6406857800208818
+21
+-0.1001033428773545
+31
+1.0873129661577854
+12
+0.7905978056850744
+22
+-0.2971289858534024
+32
+1.2350597597436686
+13
+0.7905978056850744
+23
+-0.2971289858534024
+33
+1.2350597597436686
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.7905978056850744
+20
+-0.2971289858534024
+30
+1.2350597597436686
+11
+0.6406857800208818
+21
+-0.1001033428773545
+31
+1.0873129661577854
+12
+0.7820181234396306
+22
+-0.3025385423088175
+32
+1.2286885607611746
+13
+0.7820181234396306
+23
+-0.3025385423088175
+33
+1.2286885607611746
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.45563534442351883
+20
+-0.09635017693496095
+30
+0.8188769122878267
+11
+0.5928956312949423
+21
+-0.2929528290576049
+31
+0.9561792041941095
+12
+0.47725266850529624
+22
+-0.09848891117181602
+32
+0.8571105745168952
+13
+0.47725266850529624
+23
+-0.09848891117181602
+33
+0.8571105745168952
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.538904362268551
+20
+-0.10552659486033339
+30
+0.9648346235437796
+11
+0.5928956312949423
+21
+-0.2929528290576049
+31
+0.9561792041941095
+12
+0.6829285253868831
+22
+-0.3118173806673699
+32
+1.1089028616100112
+13
+0.6829285253868831
+23
+-0.3118173806673699
+33
+1.1089028616100112
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5940743769374797
+20
+0.11569951797502342
+30
+1.5695940780014193
+11
+1.076548349057601
+21
+-0.39135639924089705
+31
+2.146834452204238
+12
+1.552194408681052
+22
+0.11569951797501443
+32
+1.538035258303604
+13
+1.552194408681052
+23
+0.11569951797501443
+33
+1.538035258303604
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.076548349057601
+20
+-0.39135639924089705
+30
+2.146834452204238
+11
+1.5940743769374797
+21
+0.11569951797502342
+31
+1.5695940780014193
+12
+1.6208444899815906
+22
+0.07494508113197806
+32
+1.667507102739093
+13
+1.6208444899815906
+23
+0.07494508113197806
+33
+1.667507102739093
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.076548349057601
+20
+-0.39135639924089705
+30
+2.146834452204238
+11
+1.6208444899815906
+21
+0.07494508113197806
+31
+1.667507102739093
+12
+1.2032338560459321
+22
+-0.39135639924089705
+32
+2.2422988290846195
+13
+1.2032338560459321
+23
+-0.39135639924089705
+33
+2.2422988290846195
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.36578346365589165
+20
+-0.037793429241581966
+30
+0.49733142365469324
+11
+0.5243281138766716
+21
+-0.2648824105028663
+31
+0.6559245924507474
+12
+0.3817497804163781
+22
+-0.05607568881768277
+32
+0.5821837592203328
+13
+0.3817497804163781
+23
+-0.05607568881768277
+33
+0.5821837592203328
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-0.4974273518417929
+20
+0.41891715123359774
+30
+3.4602494443357763
+11
+-1.4736623158196023
+21
+0.41891731125080267
+31
+3.1019128637859286
+12
+-0.4070164569928685
+22
+0.42997157245158046
+32
+2.665229116319892
+13
+-0.4070164569928685
+23
+0.42997157245158046
+33
+2.665229116319892
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.1611202966523455
+20
+0.11569951797501443
+30
+1.1859105462127746
+11
+0.4971910657083536
+21
+-0.39135639924089705
+31
+1.606575045217334
+12
+1.0713278635011771
+22
+0.11569951797501443
+32
+1.0896199505044737
+13
+1.0713278635011771
+23
+0.11569951797501443
+33
+1.0896199505044737
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.4971910657083536
+20
+-0.39135639924089705
+30
+1.606575045217334
+11
+1.1611202966523455
+21
+0.11569951797501443
+31
+1.1859105462127746
+12
+0.6053747201073587
+22
+-0.3913563992408814
+32
+1.7225878111309507
+13
+0.6053747201073587
+23
+-0.3913563992408814
+33
+1.7225878111309507
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.3817497804163781
+20
+-0.05607568881768277
+30
+0.5821837592203328
+11
+0.5243281138766716
+21
+-0.2648824105028663
+31
+0.6559245924507474
+12
+0.3966753060057868
+22
+-0.07337409647306103
+32
+0.659508580082581
+13
+0.3966753060057868
+23
+-0.07337409647306103
+33
+0.659508580082581
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.6903109494372404
+20
+-0.09112388712480801
+30
+1.1269513721715114
+11
+0.7556951133309526
+21
+-0.07922417161832584
+31
+1.1782818075904975
+12
+0.7589811239628956
+22
+-0.07796090531019828
+32
+1.1798646699340118
+13
+0.7589811239628956
+23
+-0.07796090531019828
+33
+1.1798646699340118
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.7556951133309526
+20
+-0.07922417161832584
+30
+1.1782818075904975
+11
+0.6903109494372404
+21
+-0.09112388712480801
+31
+1.1269513721715114
+12
+0.7535113909177122
+22
+-0.07968804570622262
+32
+1.177433109344653
+13
+0.7535113909177122
+23
+-0.07968804570622262
+33
+1.177433109344653
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.3966753060057868
+20
+-0.07337409647306103
+30
+0.659508580082581
+11
+0.5243281138766716
+21
+-0.2648824105028663
+31
+0.6559245924507474
+12
+0.5387999844805174
+22
+-0.27694418478557103
+32
+0.8016767522160716
+13
+0.5387999844805174
+23
+-0.27694418478557103
+33
+0.8016767522160716
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.8294774991457239
+20
+-0.17618211443133014
+30
+1.957769012598909
+11
+-1.7133597627005268
+21
+-0.07239039351207949
+31
+1.405321766654406
+12
+-1.7009450104355979
+22
+-0.17618213549941947
+32
+1.4087246449502893
+13
+-1.7009450104355979
+23
+-0.17618213549941947
+33
+1.4087246449502893
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7133597627005268
+20
+-0.07239039351207949
+30
+1.405321766654406
+11
+-1.8294774991457239
+21
+-0.17618211443133014
+31
+1.957769012598909
+12
+-1.842201948517798
+22
+-0.07239037239321611
+32
+1.95568904848648
+13
+-1.842201948517798
+23
+-0.07239037239321611
+33
+1.95568904848648
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.36578346365589165
+20
+-0.037793429241581966
+30
+0.49733142365469324
+11
+0.550466253549162
+21
+-0.25758949619382754
+31
+0.5288554937193
+12
+0.5243281138766716
+22
+-0.2648824105028663
+32
+0.6559245924507474
+13
+0.5243281138766716
+23
+-0.2648824105028663
+33
+0.6559245924507474
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.6406857800208818
+20
+-0.1001033428773545
+30
+1.0873129661577854
+11
+0.6829285253868831
+21
+-0.3118173806673699
+31
+1.1089028616100112
+12
+0.7243214720116329
+22
+-0.31887594209924797
+32
+1.1574467960018582
+13
+0.7243214720116329
+23
+-0.31887594209924797
+33
+1.1574467960018582
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.9133981794075132
+20
+-0.07239036072325872
+30
+2.710083309685462
+11
+-1.9133981428935987
+21
+0.15037415263084852
+31
+2.7100833096854653
+12
+-1.9177662874185963
+22
+0.038991896669782256
+32
+2.7096710661911403
+13
+-1.9177662874185963
+23
+0.038991896669782256
+33
+2.7096710661911403
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.9133981428935987
+20
+0.15037415263084852
+30
+2.7100833096854653
+11
+-1.9133981794075132
+21
+-0.07239036072325872
+31
+2.710083309685462
+12
+-1.900591498202793
+22
+-0.17618210277485175
+32
+2.7112919464555496
+13
+-1.900591498202793
+23
+-0.17618210277485175
+33
+2.7112919464555496
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.9133981428935987
+20
+0.15037415263084852
+30
+2.7100833096854653
+11
+-1.900591498202793
+21
+-0.17618210277485175
+31
+2.7112919464555496
+12
+-1.900591427663335
+22
+0.25416589048409133
+32
+2.71129194645555
+13
+-1.900591427663335
+23
+0.25416589048409133
+33
+2.71129194645555
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-1.900591427663335
+20
+0.25416589048409133
+30
+2.71129194645555
+11
+-1.900591498202793
+21
+-0.17618210277485175
+31
+2.7112919464555496
+12
+-1.8802189979644603
+22
+-0.265310093788087
+32
+2.713214609902889
+13
+-1.8802189979644603
+23
+-0.265310093788087
+33
+2.713214609902889
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.900591427663335
+20
+0.25416589048409133
+30
+2.71129194645555
+11
+-1.8802189979644603
+21
+-0.265310093788087
+31
+2.713214609902889
+12
+-1.8802188982066015
+22
+0.3432938748187082
+32
+2.713214609902885
+13
+-1.8802188982066015
+23
+0.3432938748187082
+33
+2.713214609902885
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-1.8802188982066015
+20
+0.3432938748187082
+30
+2.713214609902885
+11
+-1.8802189979644603
+21
+-0.265310093788087
+31
+2.713214609902889
+12
+-1.8536690309165451
+22
+-0.3337004084664514
+32
+2.7157202736909
+13
+-1.8536690309165451
+23
+-0.3337004084664514
+33
+2.7157202736909
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.8802188982066015
+20
+0.3432938748187082
+30
+2.713214609902885
+11
+-1.8536690309165451
+21
+-0.3337004084664514
+31
+2.7157202736909
+12
+-1.853668908738655
+22
+0.4116841807933129
+32
+2.7157202736909
+13
+-1.853668908738655
+23
+0.4116841807933129
+33
+2.7157202736909
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-1.853668908738655
+20
+0.4116841807933129
+30
+2.7157202736909
+11
+-1.8536690309165451
+21
+-0.3337004084664514
+31
+2.7157202736909
+12
+-1.8227509334375986
+22
+-0.3766923598848876
+32
+2.718638180973225
+13
+-1.8227509334375986
+23
+-0.3766923598848876
+33
+2.718638180973225
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.853668908738655
+20
+0.4116841807933129
+30
+2.7157202736909
+11
+-1.8227509334375986
+21
+-0.3766923598848876
+31
+2.718638180973225
+12
+-1.8227507971658294
+22
+0.45467612207602603
+32
+2.7186381809732287
+13
+-1.8227507971658294
+23
+0.45467612207602603
+33
+2.7186381809732287
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-1.8227507971658294
+20
+0.45467612207602603
+30
+2.7186381809732287
+11
+-1.8227509334375986
+21
+-0.3766923598848876
+31
+2.718638180973225
+12
+-1.7895717227761132
+22
+-0.3913561176018615
+32
+2.721769481190653
+13
+-1.7895717227761132
+23
+-0.3913561176018615
+33
+2.721769481190653
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.8227507971658294
+20
+0.45467612207602603
+30
+2.7186381809732287
+11
+-1.7895717227761132
+21
+-0.3913561176018615
+31
+2.721769481190653
+12
+-1.7895717163228786
+22
+-0.3519861176018548
+32
+2.721769481190651
+13
+-1.7895717163228786
+23
+-0.3519861176018548
+33
+2.721769481190651
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.8227507971658294
+20
+0.45467612207602603
+30
+2.7186381809732287
+11
+-1.7895717163228786
+21
+-0.3519861176018548
+31
+2.721769481190651
+12
+-1.7895715899620932
+22
+0.41891736303231675
+32
+2.7217694811906528
+13
+-1.7895715899620932
+23
+0.41891736303231675
+33
+2.7217694811906528
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.8227507971658294
+20
+0.45467612207602603
+30
+2.7186381809732287
+11
+-1.7895715899620932
+21
+0.41891736303231675
+31
+2.7217694811906528
+12
+-1.7895715816972064
+22
+0.4693398689159888
+32
+2.721769481190647
+13
+-1.7895715816972064
+23
+0.4693398689159888
+33
+2.721769481190647
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.6406857800208818
+20
+-0.1001033428773545
+30
+1.0873129661577854
+11
+0.7243214720116329
+21
+-0.31887594209924797
+31
+1.1574467960018582
+12
+0.7380029783911015
+22
+-0.3198561146257471
+32
+1.1736767991681007
+13
+0.7380029783911015
+23
+-0.3198561146257471
+33
+1.1736767991681007
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.8536690309165451
+20
+-0.3337004084664514
+30
+2.7157202736909
+11
+-1.8092358108624627
+21
+-0.2653101054231194
+31
+1.9610777576823943
+12
+-1.7828563212734383
+22
+-0.33370042007355216
+32
+1.9653897982274613
+13
+-1.7828563212734383
+23
+-0.33370042007355216
+33
+1.9653897982274613
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.8092358108624627
+20
+-0.2653101054231194
+30
+1.9610777576823943
+11
+-1.8536690309165451
+21
+-0.3337004084664514
+31
+2.7157202736909
+12
+-1.8802189979644603
+22
+-0.265310093788087
+32
+2.713214609902889
+13
+-1.8802189979644603
+23
+-0.265310093788087
+33
+2.713214609902889
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.6406857800208818
+20
+-0.1001033428773545
+30
+1.0873129661577854
+11
+0.7380029783911015
+21
+-0.3198561146257471
+31
+1.1736767991681007
+12
+0.7514924403831034
+22
+-0.31812034010292306
+32
+1.1900482958506116
+13
+0.7514924403831034
+23
+-0.31812034010292306
+33
+1.1900482958506116
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.8802189979644603
+20
+-0.265310093788087
+30
+2.713214609902889
+11
+-1.8294774991457239
+21
+-0.17618211443133014
+31
+1.957769012598909
+12
+-1.8092358108624627
+22
+-0.2653101054231194
+32
+1.9610777576823943
+13
+-1.8092358108624627
+23
+-0.2653101054231194
+33
+1.9610777576823943
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.8294774991457239
+20
+-0.17618211443133014
+30
+1.957769012598909
+11
+-1.8802189979644603
+21
+-0.265310093788087
+31
+2.713214609902889
+12
+-1.900591498202793
+22
+-0.17618210277485175
+32
+2.7112919464555496
+13
+-1.900591498202793
+23
+-0.17618210277485175
+33
+2.7112919464555496
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.900591498202793
+20
+-0.17618210277485175
+30
+2.7112919464555496
+11
+-1.842201948517798
+21
+-0.07239037239321611
+31
+1.95568904848648
+12
+-1.8294774991457239
+22
+-0.17618211443133014
+32
+1.957769012598909
+13
+-1.8294774991457239
+23
+-0.17618211443133014
+33
+1.957769012598909
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.842201948517798
+20
+-0.07239037239321611
+30
+1.95568904848648
+11
+-1.900591498202793
+21
+-0.17618210277485175
+31
+2.7112919464555496
+12
+-1.9133981794075132
+22
+-0.07239036072325872
+32
+2.710083309685462
+13
+-1.9133981794075132
+23
+-0.07239036072325872
+33
+2.710083309685462
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.8227509334375986
+20
+-0.3766923598848876
+30
+2.718638180973225
+11
+-1.7828563212734383
+21
+-0.33370042007355216
+31
+1.9653897982274613
+12
+-1.7521367490001787
+22
+-0.37669237145944223
+32
+1.970411275796931
+13
+-1.7521367490001787
+23
+-0.37669237145944223
+33
+1.970411275796931
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7828563212734383
+20
+-0.33370042007355216
+30
+1.9653897982274613
+11
+-1.8227509334375986
+21
+-0.3766923598848876
+31
+2.718638180973225
+12
+-1.8536690309165451
+22
+-0.3337004084664514
+32
+2.7157202736909
+13
+-1.8536690309165451
+23
+-0.3337004084664514
+33
+2.7157202736909
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.886816064498108
+20
+-0.07019890877981821
+30
+1.24618250303494
+11
+0.8687347277652708
+21
+-0.044300385349433036
+31
+1.2280956329668686
+12
+0.7626223302383062
+22
+-0.07769244209007636
+32
+1.1819181088261714
+13
+0.7626223302383062
+23
+-0.07769244209007636
+33
+1.1819181088261714
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.8651868766935726
+20
+-0.17830415189829452
+30
+1.2693730886615773
+11
+0.7535113909177122
+21
+-0.07968804570622262
+31
+1.177433109344653
+12
+0.8574638271061679
+22
+-0.19894064093252234
+32
+1.2718639004818764
+13
+0.8574638271061679
+23
+-0.19894064093252234
+33
+1.2718639004818764
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.8574638271061679
+20
+-0.19894064093252234
+30
+1.2718639004818764
+11
+0.7535113909177122
+21
+-0.07968804570622262
+31
+1.177433109344653
+12
+0.8488303158904233
+22
+-0.21621663583415707
+32
+1.2727812042605189
+13
+0.8488303158904233
+23
+-0.21621663583415707
+33
+1.2727812042605189
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.550466253549162
+20
+-0.25758949619382754
+30
+0.5288554937193
+11
+0.3919244872289036
+21
+0.06457671434803919
+31
+0.2055519607021757
+12
+0.6154331324746154
+22
+-0.25556244191651595
+32
+0.4291290051087077
+13
+0.6154331324746154
+23
+-0.25556244191651595
+33
+0.4291290051087077
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.550466253549162
+20
+-0.25758949619382754
+30
+0.5288554937193
+11
+0.37878877702084046
+21
+0.038393783699848194
+31
+0.2706184438630661
+12
+0.3919244872289036
+22
+0.06457671434803919
+32
+0.2055519607021757
+13
+0.3919244872289036
+23
+0.06457671434803919
+33
+0.2055519607021757
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.550466253549162
+20
+-0.25758949619382754
+30
+0.5288554937193
+11
+0.3644662888731871
+21
+0.008824680721530365
+31
+0.34279860846433485
+12
+0.37878877702084046
+22
+0.038393783699848194
+32
+0.2706184438630661
+13
+0.37878877702084046
+23
+0.038393783699848194
+33
+0.2706184438630661
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7118929082438779
+20
+-0.24734376719524606
+30
+2.311349794128884
+11
+1.4662100141123353
+21
+-0.39135639924083887
+31
+2.419678487426912
+12
+1.6812373623290522
+22
+-0.12503999284416611
+32
+2.075562797387576
+13
+1.6812373623290522
+23
+-0.12503999284416611
+33
+2.075562797387576
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.4662100141123353
+20
+-0.39135639924083887
+30
+2.419678487426912
+11
+1.7118929082438779
+21
+-0.24734376719524606
+31
+2.311349794128884
+12
+1.6021802692501754
+22
+-0.3913563992408456
+32
+2.5013776590983654
+13
+1.6021802692501754
+23
+-0.3913563992408456
+33
+2.5013776590983654
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7290602943681443
+20
+-0.3176883359983307
+30
+2.443392671427686
+11
+1.6021802692501754
+21
+-0.3913563992408456
+31
+2.5013776590983654
+12
+1.7118929082438779
+22
+-0.24734376719524606
+32
+2.311349794128884
+13
+1.7118929082438779
+23
+-0.24734376719524606
+33
+2.311349794128884
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.6021802692501754
+20
+-0.3913563992408456
+30
+2.5013776590983654
+11
+1.7290602943681443
+21
+-0.3176883359983307
+31
+2.443392671427686
+12
+1.7437745197997272
+22
+-0.3873643428597891
+32
+2.572911231993639
+13
+1.7437745197997272
+23
+-0.3873643428597891
+33
+2.572911231993639
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.6021802692501754
+20
+-0.3913563992408456
+30
+2.5013776590983654
+11
+1.7437745197997272
+21
+-0.3873643428597891
+31
+2.572911231993639
+12
+1.7409189549547188
+22
+-0.39135639924089705
+32
+2.578281768371061
+13
+1.7409189549547188
+23
+-0.39135639924089705
+33
+2.578281768371061
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.6812373623290522
+20
+-0.12503999284416611
+30
+2.075562797387576
+11
+1.3331738483524822
+21
+-0.39135639924089705
+31
+2.3332837912125775
+12
+1.6530814000858174
+22
+-0.015885077497869327
+32
+1.8590013414803237
+13
+1.6530814000858174
+23
+-0.015885077497869327
+33
+1.8590013414803237
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.3331738483524822
+20
+-0.39135639924089705
+30
+2.3332837912125775
+11
+1.6812373623290522
+21
+-0.12503999284416611
+31
+2.075562797387576
+12
+1.4662100141123353
+22
+-0.39135639924083887
+32
+2.419678487426912
+13
+1.4662100141123353
+23
+-0.39135639924083887
+33
+2.419678487426912
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.634839673189293
+20
+0.05269022449133848
+30
+1.7186951844850438
+11
+1.2032338560459321
+21
+-0.39135639924089705
+31
+2.2422988290846195
+12
+1.6208444899815906
+22
+0.07494508113197806
+32
+1.667507102739093
+13
+1.6208444899815906
+23
+0.07494508113197806
+33
+1.667507102739093
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.2032338560459321
+20
+-0.39135639924089705
+30
+2.2422988290846195
+11
+1.634839673189293
+21
+0.05269022449133848
+31
+1.7186951844850438
+12
+1.6530814000858174
+22
+-0.015885077497869327
+32
+1.8590013414803237
+13
+1.6530814000858174
+23
+-0.015885077497869327
+33
+1.8590013414803237
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.2032338560459321
+20
+-0.39135639924089705
+30
+2.2422988290846195
+11
+1.6530814000858174
+21
+-0.015885077497869327
+31
+1.8590013414803237
+12
+1.3331738483524822
+22
+-0.39135639924089705
+32
+2.3332837912125775
+13
+1.3331738483524822
+23
+-0.39135639924089705
+33
+2.3332837912125775
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.772154666688709
+20
+-0.3913567014136412
+30
+2.822720712115689
+11
+1.7926934652283346
+21
+-0.3519867047802352
+31
+3.166557627574764
+12
+1.7926934587751069
+22
+-0.3913567047802016
+32
+3.1665576275747647
+13
+1.7926934587751069
+23
+-0.3913567047802016
+33
+3.1665576275747647
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7926934652283346
+20
+-0.3519867047802352
+30
+3.166557627574764
+11
+1.772154666688709
+21
+-0.3913567014136412
+31
+2.822720712115689
+12
+1.7721546731419455
+22
+-0.3519867014136748
+32
+2.8227207121156908
+13
+1.7721546731419455
+23
+-0.3519867014136748
+33
+2.8227207121156908
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7674390181608894
+20
+-0.3519867006406931
+30
+2.7812122838233124
+11
+0.5511467583958203
+21
+0.4299694852427818
+31
+2.8226851081661346
+12
+0.5511466302233783
+22
+-0.35198650127506403
+32
+2.822685108166137
+13
+0.5511466302233783
+23
+-0.35198650127506403
+33
+2.822685108166137
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.5511467583958203
+20
+0.4299694852427818
+30
+2.8226851081661346
+11
+1.7674390181608894
+21
+-0.3519867006406931
+31
+2.7812122838233124
+12
+1.767439146332895
+22
+0.42996788604843883
+32
+2.78121228382332
+13
+1.767439146332895
+23
+0.42996788604843883
+33
+2.78121228382332
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7679994781424735
+20
+-0.3519867007325644
+30
+2.786145599142259
+11
+1.7721548011833212
+21
+0.429174626495198
+31
+2.82272071211574
+12
+1.7721546731419455
+22
+-0.3519867014136748
+32
+2.8227207121156908
+13
+1.7721546731419455
+23
+-0.3519867014136748
+33
+2.8227207121156908
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7721548011833212
+20
+0.429174626495198
+30
+2.82272071211574
+11
+1.7679994781424735
+21
+-0.3519867007325644
+31
+2.786145599142259
+12
+1.7674390181608894
+22
+-0.3519867006406931
+32
+2.7812122838233124
+13
+1.7674390181608894
+23
+-0.3519867006406931
+33
+2.7812122838233124
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.7721548011833212
+20
+0.429174626495198
+30
+2.82272071211574
+11
+1.7674390181608894
+21
+-0.3519867006406931
+31
+2.7812122838233124
+12
+1.767439146332895
+22
+0.42996788604843883
+32
+2.78121228382332
+13
+1.767439146332895
+23
+0.42996788604843883
+33
+2.78121228382332
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.7721548011833212
+20
+0.429174626495198
+30
+2.82272071211574
+11
+1.767439146332895
+21
+0.42996788604843883
+31
+2.78121228382332
+12
+1.7681256490688513
+22
+0.42988342156321946
+32
+2.787255060548812
+13
+1.7681256490688513
+23
+0.42988342156321946
+33
+2.787255060548812
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7604022996639854
+20
+0.4693398641347575
+30
+2.906434883050858
+11
+-1.7895715899620932
+21
+0.41891736303231675
+31
+2.7217694811906528
+12
+-1.7604023079288675
+22
+0.418917358251119
+32
+2.9064348830508573
+13
+-1.7604023079288675
+23
+0.418917358251119
+33
+2.9064348830508573
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7895715899620932
+20
+0.41891736303231675
+30
+2.7217694811906528
+11
+-1.7604022996639854
+21
+0.4693398641347575
+31
+2.906434883050858
+12
+-1.7895715816972064
+22
+0.4693398689159888
+32
+2.721769481190647
+13
+-1.7895715816972064
+23
+0.4693398689159888
+33
+2.721769481190647
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.8042763848132697
+20
+0.4693392798390309
+30
+3.3604633371264394
+11
+1.7721548077676246
+21
+0.4693392851041711
+31
+2.8227207121156974
+12
+1.2851012666870065
+22
+0.5693393649383878
+32
+2.603406296512527
+13
+1.2851012666870065
+23
+0.5693393649383878
+33
+2.603406296512527
+70
+0
+  0
+LINE
+ 8
+palm
+10
+1.7681256490688513
+20
+0.42988342156321946
+30
+2.787255060548812
+11
+1.7696707868944743
+21
+0.4299678831142456
+31
+2.7811361899186586
+  0
+3DFACE
+ 8
+palm
+10
+-1.2344292513491493
+20
+0.5693397779211644
+30
+2.1309506849853554
+11
+-1.5933226813458456
+21
+0.4693398367483087
+31
+1.438223809982218
+12
+-1.7191704438325688
+22
+0.4523487095976748
+32
+1.9757999849928511
+13
+-1.7191704438325688
+23
+0.4523487095976748
+33
+1.9757999849928511
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.2851012666870065
+20
+0.5693393649383878
+30
+2.603406296512527
+11
+1.7446154379169838
+21
+0.46077168557314707
+31
+2.580311975438233
+12
+1.7290604211742295
+22
+0.45593246326086423
+32
+2.4433926714277017
+13
+1.7290604211742295
+23
+0.45593246326086423
+33
+2.4433926714277017
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7446154379169838
+20
+0.46077168557314707
+30
+2.580311975438233
+11
+1.2851012666870065
+21
+0.5693393649383878
+31
+2.603406296512527
+12
+1.7721548077676246
+22
+0.4693392851041711
+32
+2.8227207121156974
+13
+1.7721548077676246
+23
+0.4693392851041711
+33
+2.8227207121156974
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.8543131342530239
+20
+0.11569941919431881
+30
+0.11448043149811093
+11
+0.9877718590248896
+21
+-0.28063215797614327
+31
+0.3500300359004508
+12
+0.7110686274472025
+22
+0.11569944251109132
+32
+0.07324212630582012
+13
+0.7110686274472025
+23
+0.11569944251109132
+33
+0.07324212630582012
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.9877718590248896
+20
+-0.28063215797614327
+30
+0.3500300359004508
+11
+0.8543131342530239
+21
+0.11569941919431881
+31
+0.11448043149811093
+12
+1.1427716320422368
+22
+-0.29746965530859
+32
+0.4030272047057251
+13
+1.1427716320422368
+23
+-0.29746965530859
+33
+0.4030272047057251
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.1213215446161924
+20
+0.11569939211025415
+30
+0.2942344834828935
+11
+1.4027036824022836
+21
+-0.2851219813292338
+31
+0.5760050453303628
+12
+1.401838376859889
+22
+-0.28609456039556413
+32
+0.5748371607993987
+13
+1.401838376859889
+23
+-0.28609456039556413
+33
+0.5748371607993987
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.4027036824022836
+20
+-0.2851219813292338
+30
+0.5760050453303628
+11
+1.1213215446161924
+21
+0.11569939211025415
+31
+0.2942344834828935
+12
+1.4120521182246126
+22
+-0.27111364899581186
+32
+0.5891009093839078
+13
+1.4120521182246126
+23
+-0.27111364899581186
+33
+0.5891009093839078
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.4120521182246126
+20
+-0.27111364899581186
+30
+0.5891009093839078
+11
+1.1213215446161924
+21
+0.11569939211025415
+31
+0.2942344834828935
+12
+1.4200331617217834
+22
+-0.2551996369886165
+32
+0.6008217350052182
+13
+1.4200331617217834
+23
+-0.2551996369886165
+33
+0.6008217350052182
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.4200331617217834
+20
+-0.2551996369886165
+30
+0.6008217350052182
+11
+1.1213215446161924
+21
+0.11569939211025415
+31
+0.2942344834828935
+12
+1.4265137628895357
+22
+-0.23764524386994787
+32
+0.6109721272062122
+13
+1.4265137628895357
+23
+-0.23764524386994787
+33
+0.6109721272062122
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.4265137628895357
+20
+-0.23764524386994787
+30
+0.6109721272062122
+11
+1.1213215446161924
+21
+0.11569939211025415
+31
+0.2942344834828935
+12
+1.4313858852268917
+22
+-0.2187431145903824
+32
+0.6193828713063506
+13
+1.4313858852268917
+23
+-0.2187431145903824
+33
+0.6193828713063506
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.4313858852268917
+20
+-0.2187431145903824
+30
+0.6193828713063506
+11
+1.1213215446161924
+21
+0.11569939211025415
+31
+0.2942344834828935
+12
+1.4345683067862047
+22
+-0.19880836187696824
+32
+0.6259137538687718
+13
+1.4345683067862047
+23
+-0.19880836187696824
+33
+0.6259137538687718
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.4345683067862047
+20
+-0.19880836187696824
+30
+0.6259137538687718
+11
+1.1213215446161924
+21
+0.11569939211025415
+31
+0.2942344834828935
+12
+1.4356492647298522
+22
+-0.1833147696377279
+32
+0.6293241728716591
+13
+1.4356492647298522
+23
+-0.1833147696377279
+33
+0.6293241728716591
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.4356492647298522
+20
+-0.1833147696377279
+30
+0.6293241728716591
+11
+1.1213215446161924
+21
+0.11569939211025415
+31
+0.2942344834828935
+12
+1.226889266259492
+22
+0.11569939018870201
+32
+0.4205002886903231
+13
+1.226889266259492
+23
+0.11569939018870201
+33
+0.4205002886903231
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7721548077676246
+20
+0.4693392851041711
+30
+2.8227207121156974
+11
+1.7776419675782986
+21
+0.44515366198423323
+31
+2.578459014679979
+12
+1.7446154379169838
+22
+0.46077168557314707
+32
+2.580311975438233
+13
+1.7446154379169838
+23
+0.46077168557314707
+33
+2.580311975438233
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.1213215446161924
+20
+0.11569939211025415
+30
+0.2942344834828935
+11
+1.296235511599156
+21
+-0.31685524573416857
+31
+0.491941973587031
+12
+0.9942427643243386
+22
+0.11569940200353146
+32
+0.18985680907938893
+13
+0.9942427643243386
+23
+0.11569940200353146
+33
+0.18985680907938893
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.296235511599156
+20
+-0.31685524573416857
+30
+0.491941973587031
+11
+1.1213215446161924
+21
+0.11569939211025415
+31
+0.2942344834828935
+12
+1.401838376859889
+22
+-0.28609456039556413
+32
+0.5748371607993987
+13
+1.401838376859889
+23
+-0.28609456039556413
+33
+0.5748371607993987
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.296235511599156
+20
+-0.31685524573416857
+30
+0.491941973587031
+11
+1.401838376859889
+21
+-0.28609456039556413
+31
+0.5748371607993987
+12
+1.3091840178343996
+22
+-0.3187418848047469
+32
+0.5028130849064316
+13
+1.3091840178343996
+23
+-0.3187418848047469
+33
+0.5028130849064316
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.3091840178343996
+20
+-0.3187418848047469
+30
+0.5028130849064316
+11
+1.401838376859889
+21
+-0.28609456039556413
+31
+0.5748371607993987
+12
+1.3253750619465394
+22
+-0.31972148211599355
+32
+0.5162341750882068
+13
+1.3253750619465394
+23
+-0.31972148211599355
+33
+0.5162341750882068
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.3253750619465394
+20
+-0.31972148211599355
+30
+0.5162341750882068
+11
+1.401838376859889
+21
+-0.28609456039556413
+31
+0.5748371607993987
+12
+1.3417030991986116
+22
+-0.31798505695875007
+32
+0.5294284687339447
+13
+1.3417030991986116
+23
+-0.31798505695875007
+33
+0.5294284687339447
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.3417030991986116
+20
+-0.31798505695875007
+30
+0.5294284687339447
+11
+1.401838376859889
+21
+-0.28609456039556413
+31
+0.5748371607993987
+12
+1.3578959289156283
+22
+-0.3135615568476812
+32
+0.5421760070341798
+13
+1.3578959289156283
+23
+-0.3135615568476812
+33
+0.5421760070341798
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.3578959289156283
+20
+-0.3135615568476812
+30
+0.5421760070341798
+11
+1.401838376859889
+21
+-0.28609456039556413
+31
+0.5748371607993987
+12
+1.3736836044342169
+22
+-0.30652472486030197
+32
+0.5542642789274219
+13
+1.3736836044342169
+23
+-0.30652472486030197
+33
+0.5542642789274219
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.3736836044342169
+20
+-0.30652472486030197
+30
+0.5542642789274219
+11
+1.401838376859889
+21
+-0.28609456039556413
+31
+0.5748371607993987
+12
+1.3888029333164453
+22
+-0.2969918702840594
+32
+0.5654917638195733
+13
+1.3888029333164453
+23
+-0.2969918702840594
+33
+0.5654917638195733
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7721548077676246
+20
+0.4693392851041711
+30
+2.8227207121156974
+11
+1.805181337617048
+21
+0.4546904111007235
+31
+2.820867751357442
+12
+1.7776419675782986
+22
+0.44515366198423323
+32
+2.578459014679979
+13
+1.7776419675782986
+23
+0.44515366198423323
+33
+2.578459014679979
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.7191704410475133
+20
+0.4693398573763592
+30
+1.9757999849928503
+11
+-1.7191704438325688
+21
+0.4523487095976748
+31
+1.9757999849928511
+12
+-1.5933226813458456
+22
+0.4693398367483087
+32
+1.438223809982218
+13
+-1.5933226813458456
+23
+0.4693398367483087
+33
+1.438223809982218
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.7895715816972064
+20
+0.4693398689159888
+30
+2.721769481190647
+11
+-1.7191704438325688
+21
+0.4523487095976748
+31
+1.9757999849928511
+12
+-1.7191704410475133
+22
+0.4693398573763592
+32
+1.9757999849928503
+13
+-1.7191704410475133
+23
+0.4693398573763592
+33
+1.9757999849928503
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.593322815971511
+20
+-0.3519861497695237
+30
+1.4382238099822156
+11
+-1.7191705821264176
+21
+-0.3913561291414933
+31
+1.975799984992849
+12
+-1.5933228224247524
+22
+-0.39135614976952593
+32
+1.4382238099822164
+13
+-1.5933228224247524
+23
+-0.39135614976952593
+33
+1.4382238099822164
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7191705821264176
+20
+-0.3913561291414933
+30
+1.975799984992849
+11
+-1.593322815971511
+21
+-0.3519861497695237
+31
+1.4382238099822156
+12
+-1.7191705756731808
+22
+-0.3519861291414911
+32
+1.975799984992848
+13
+-1.7191705756731808
+23
+-0.3519861291414911
+33
+1.975799984992848
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-1.7191705756731808
+20
+-0.3519861291414911
+30
+1.975799984992848
+11
+-1.593322815971511
+21
+-0.3519861497695237
+31
+1.4382238099822156
+12
+-1.5933226896107346
+22
+0.4189173308646478
+32
+1.4382238099822138
+13
+-1.5933226896107346
+23
+0.4189173308646478
+33
+1.4382238099822138
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.7191705756731808
+20
+-0.3519861291414911
+30
+1.975799984992848
+11
+-1.5933226896107346
+21
+0.4189173308646478
+31
+1.4382238099822138
+12
+-1.7191704493123976
+22
+0.41891735149268716
+32
+1.9757999849928494
+13
+-1.7191704493123976
+23
+0.41891735149268716
+33
+1.9757999849928494
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-1.7191704493123976
+20
+0.41891735149268716
+30
+1.9757999849928494
+11
+-1.5933226896107346
+21
+0.4189173308646478
+31
+1.4382238099822138
+12
+-1.5933226813458456
+22
+0.4693398367483087
+32
+1.438223809982218
+13
+-1.5933226813458456
+23
+0.4693398367483087
+33
+1.438223809982218
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.7191704493123976
+20
+0.41891735149268716
+30
+1.9757999849928494
+11
+-1.5933226813458456
+21
+0.4693398367483087
+31
+1.438223809982218
+12
+-1.7191704438325688
+22
+0.4523487095976748
+32
+1.9757999849928511
+13
+-1.7191704438325688
+23
+0.4523487095976748
+33
+1.9757999849928511
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.3037516634831137
+20
+0.11569939636982962
+30
+0.5600494187408283
+11
+1.3606638328112888
+21
+0.09565654957220543
+31
+0.7173692551580161
+12
+1.4074552186633607
+22
+-0.03283878934796741
+32
+0.6637847097679882
+13
+1.4074552186633607
+23
+-0.03283878934796741
+33
+0.6637847097679882
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.3606638328112888
+20
+0.09565654957220543
+30
+0.7173692551580161
+11
+1.3037516634831137
+21
+0.11569939636982962
+31
+0.5600494187408283
+12
+1.3466706909373627
+22
+0.11569941023242802
+32
+0.703371831037376
+13
+1.3466706909373627
+23
+0.11569941023242802
+33
+0.703371831037376
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.4736624457345466
+20
+-0.3913561693833688
+30
+2.907315266711703
+11
+-1.7895717163228786
+21
+-0.3519861176018548
+31
+2.721769481190651
+12
+-1.7895717227761132
+22
+-0.3913561176018615
+32
+2.721769481190653
+13
+-1.7895717227761132
+23
+-0.3913561176018615
+33
+2.721769481190653
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7895717163228786
+20
+-0.3519861176018548
+30
+2.721769481190651
+11
+-1.4736624457345466
+21
+-0.3913561693833688
+31
+2.907315266711703
+12
+-1.4736624392813298
+22
+-0.3519861693833375
+32
+2.907315266711701
+13
+-1.4736624392813298
+23
+-0.3519861693833375
+33
+2.907315266711701
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.4265137628895357
+20
+-0.23764524386994787
+30
+0.6109721272062122
+11
+0.84796506596995
+21
+-0.21887684142438632
+31
+1.272402865095184
+12
+0.8396041535634804
+22
+-0.23777977037520193
+32
+1.2678971062030804
+13
+0.8396041535634804
+23
+-0.23777977037520193
+33
+1.2678971062030804
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.84796506596995
+20
+-0.21887684142438632
+30
+1.272402865095184
+11
+1.4265137628895357
+21
+-0.23764524386994787
+31
+0.6109721272062122
+12
+1.4313858852268917
+22
+-0.2187431145903824
+32
+0.6193828713063506
+13
+1.4313858852268917
+23
+-0.2187431145903824
+33
+0.6193828713063506
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.4313858852268917
+20
+-0.2187431145903824
+30
+0.6193828713063506
+11
+0.8488303158904233
+21
+-0.21621663583415707
+31
+1.2727812042605189
+12
+0.84796506596995
+22
+-0.21887684142438632
+32
+1.272402865095184
+13
+0.84796506596995
+23
+-0.21887684142438632
+33
+1.272402865095184
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.8488303158904233
+20
+-0.21621663583415707
+30
+1.2727812042605189
+11
+1.4313858852268917
+21
+-0.2187431145903824
+31
+0.6193828713063506
+12
+1.4345683067862047
+22
+-0.19880836187696824
+32
+0.6259137538687718
+13
+1.4345683067862047
+23
+-0.19880836187696824
+33
+0.6259137538687718
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.8488303158904233
+20
+-0.21621663583415707
+30
+1.2727812042605189
+11
+1.4345683067862047
+21
+-0.19880836187696824
+31
+0.6259137538687718
+12
+0.8574638271061679
+22
+-0.19894064093252234
+32
+1.2718639004818764
+13
+0.8574638271061679
+23
+-0.19894064093252234
+33
+1.2718639004818764
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7191705756731808
+20
+-0.3519861291414911
+30
+1.975799984992848
+11
+-1.7895717227761132
+21
+-0.3913561176018615
+31
+2.721769481190653
+12
+-1.7191705821264176
+22
+-0.3913561291414933
+32
+1.975799984992849
+13
+-1.7191705821264176
+23
+-0.3913561291414933
+33
+1.975799984992849
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7895717227761132
+20
+-0.3913561176018615
+30
+2.721769481190653
+11
+-1.7191705756731808
+21
+-0.3519861291414911
+31
+1.975799984992848
+12
+-1.7895717163228786
+22
+-0.3519861176018548
+32
+2.721769481190651
+13
+-1.7895717163228786
+23
+-0.3519861176018548
+33
+2.721769481190651
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-1.7895717163228786
+20
+-0.3519861176018548
+30
+2.721769481190651
+11
+-1.7191705756731808
+21
+-0.3519861291414911
+31
+1.975799984992848
+12
+-1.7191704493123976
+22
+0.41891735149268716
+32
+1.9757999849928494
+13
+-1.7191704493123976
+23
+0.41891735149268716
+33
+1.9757999849928494
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.7895717163228786
+20
+-0.3519861176018548
+30
+2.721769481190651
+11
+-1.7191704493123976
+21
+0.41891735149268716
+31
+1.9757999849928494
+12
+-1.7895715899620932
+22
+0.41891736303231675
+32
+2.7217694811906528
+13
+-1.7895715899620932
+23
+0.41891736303231675
+33
+2.7217694811906528
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-1.7895715899620932
+20
+0.41891736303231675
+30
+2.7217694811906528
+11
+-1.7191704493123976
+21
+0.41891735149268716
+31
+1.9757999849928494
+12
+-1.7191704438325688
+22
+0.4523487095976748
+32
+1.9757999849928511
+13
+-1.7191704438325688
+23
+0.4523487095976748
+33
+1.9757999849928511
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.7895715899620932
+20
+0.41891736303231675
+30
+2.7217694811906528
+11
+-1.7191704438325688
+21
+0.4523487095976748
+31
+1.9757999849928511
+12
+-1.7895715816972064
+22
+0.4693398689159888
+32
+2.721769481190647
+13
+-1.7895715816972064
+23
+0.4693398689159888
+33
+2.721769481190647
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.3417030991986116
+20
+-0.31798505695875007
+30
+0.5294284687339447
+11
+0.7380029783911015
+21
+-0.3198561146257471
+31
+1.1736767991681007
+12
+1.3253750619465394
+22
+-0.31972148211599355
+32
+0.5162341750882068
+13
+1.3253750619465394
+23
+-0.31972148211599355
+33
+0.5162341750882068
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.7380029783911015
+20
+-0.3198561146257471
+30
+1.1736767991681007
+11
+1.3417030991986116
+21
+-0.31798505695875007
+31
+0.5294284687339447
+12
+0.7514924403831034
+22
+-0.31812034010292306
+32
+1.1900482958506116
+13
+0.7514924403831034
+23
+-0.31812034010292306
+33
+1.1900482958506116
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.401838376859889
+20
+-0.28609456039556413
+30
+0.5748371607993987
+11
+0.7905978056850744
+21
+-0.2971289858534024
+31
+1.2350597597436686
+12
+1.3888029333164453
+22
+-0.2969918702840594
+32
+0.5654917638195733
+13
+1.3888029333164453
+23
+-0.2969918702840594
+33
+0.5654917638195733
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.7905978056850744
+20
+-0.2971289858534024
+30
+1.2350597597436686
+11
+1.401838376859889
+21
+-0.28609456039556413
+31
+0.5748371607993987
+12
+1.4027036824022836
+22
+-0.2851219813292338
+32
+0.5760050453303628
+13
+1.4027036824022836
+23
+-0.2851219813292338
+33
+0.5760050453303628
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.7905978056850744
+20
+-0.2971289858534024
+30
+1.2350597597436686
+11
+1.4027036824022836
+21
+-0.2851219813292338
+31
+0.5760050453303628
+12
+0.8047967373346043
+22
+-0.2852590285516704
+32
+1.245239287008058
+13
+0.8047967373346043
+23
+-0.2852590285516704
+33
+1.245239287008058
+70
+1
+  0
+LINE
+ 8
+palm
+10
+1.7290604211742295
+20
+0.45593246326086423
+30
+2.4433926714277017
+11
+1.7290602943681443
+21
+-0.3176883359983307
+31
+2.443392671427686
+  0
+3DFACE
+ 8
+palm
+10
+1.3253750619465394
+20
+-0.31972148211599355
+30
+0.5162341750882068
+11
+0.7243214720116329
+21
+-0.31887594209924797
+31
+1.1574467960018582
+12
+1.3091840178343996
+22
+-0.3187418848047469
+32
+0.5028130849064316
+13
+1.3091840178343996
+23
+-0.3187418848047469
+33
+0.5028130849064316
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.7243214720116329
+20
+-0.31887594209924797
+30
+1.1574467960018582
+11
+1.3253750619465394
+21
+-0.31972148211599355
+31
+0.5162341750882068
+12
+0.7380029783911015
+22
+-0.3198561146257471
+32
+1.1736767991681007
+13
+0.7380029783911015
+23
+-0.3198561146257471
+33
+1.1736767991681007
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.3736836044342169
+20
+-0.30652472486030197
+30
+0.5542642789274219
+11
+0.7645649784997064
+21
+-0.31369755519895914
+31
+1.2062883608730788
+12
+1.3578959289156283
+22
+-0.3135615568476812
+32
+0.5421760070341798
+13
+1.3578959289156283
+23
+-0.3135615568476812
+33
+0.5421760070341798
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.7645649784997064
+20
+-0.31369755519895914
+30
+1.2062883608730788
+11
+1.3736836044342169
+21
+-0.30652472486030197
+31
+0.5542642789274219
+12
+0.7770026636877001
+22
+-0.30666149106830126
+32
+1.2221262601239269
+13
+0.7770026636877001
+23
+-0.30666149106830126
+33
+1.2221262601239269
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.5742711203227493
+20
+0.11569947036484796
+30
+0.06895221585191834
+11
+0.7148013652171186
+21
+-0.2589393880700495
+31
+0.36354132201196915
+12
+0.45324313692173157
+22
+0.11569950085740732
+32
+0.10190305044442108
+13
+0.45324313692173157
+23
+0.11569950085740732
+33
+0.10190305044442108
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.7148013652171186
+20
+-0.2589393880700495
+30
+0.36354132201196915
+11
+0.5742711203227493
+21
+0.11569947036484796
+31
+0.06895221585191834
+12
+0.8417991709290595
+22
+-0.2674902013547584
+32
+0.33656213664331786
+13
+0.8417991709290595
+23
+-0.2674902013547584
+33
+0.33656213664331786
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.3479240404844608
+20
+0.11569941449928345
+30
+0.7318177742169286
+11
+1.3606638328112888
+21
+0.09565654957220543
+31
+0.7173692551580161
+12
+1.3466706909373627
+22
+0.11569941023242802
+32
+0.703371831037376
+13
+1.3466706909373627
+23
+0.11569941023242802
+33
+0.703371831037376
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.226889266259492
+20
+0.11569939018870201
+30
+0.4205002886903231
+11
+1.435174589712788
+21
+-0.17817350408840257
+31
+0.6313887032404708
+12
+1.4356492647298522
+22
+-0.1833147696377279
+32
+0.6293241728716591
+13
+1.4356492647298522
+23
+-0.1833147696377279
+33
+0.6293241728716591
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.435174589712788
+20
+-0.17817350408840257
+30
+0.6313887032404708
+11
+1.226889266259492
+21
+0.11569939018870201
+31
+0.4205002886903231
+12
+1.4074552186633607
+22
+-0.03283878934796741
+32
+0.6637847097679882
+13
+1.4074552186633607
+23
+-0.03283878934796741
+33
+0.6637847097679882
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.4074552186633607
+20
+-0.03283878934796741
+30
+0.6637847097679882
+11
+1.226889266259492
+21
+0.11569939018870201
+31
+0.4205002886903231
+12
+1.3037516634831137
+22
+0.11569939636982962
+32
+0.5600494187408283
+13
+1.3037516634831137
+23
+0.11569939636982962
+33
+0.5600494187408283
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.3578959289156283
+20
+-0.3135615568476812
+30
+0.5421760070341798
+11
+0.7514924403831034
+21
+-0.31812034010292306
+31
+1.1900482958506116
+12
+1.3417030991986116
+22
+-0.31798505695875007
+32
+0.5294284687339447
+13
+1.3417030991986116
+23
+-0.31798505695875007
+33
+0.5294284687339447
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.7514924403831034
+20
+-0.31812034010292306
+30
+1.1900482958506116
+11
+1.3578959289156283
+21
+-0.3135615568476812
+31
+0.5421760070341798
+12
+0.7645649784997064
+22
+-0.31369755519895914
+32
+1.2062883608730788
+13
+0.7645649784997064
+23
+-0.31369755519895914
+33
+1.2062883608730788
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.9942427643243386
+20
+0.11569940200353146
+30
+0.18985680907938893
+11
+1.1427716320422368
+21
+-0.29746965530859
+31
+0.4030272047057251
+12
+0.8543131342530239
+22
+0.11569941919431881
+32
+0.11448043149811093
+13
+0.8543131342530239
+23
+0.11569941919431881
+33
+0.11448043149811093
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.1427716320422368
+20
+-0.29746965530859
+30
+0.4030272047057251
+11
+0.9942427643243386
+21
+0.11569940200353146
+31
+0.18985680907938893
+12
+1.296235511599156
+22
+-0.31685524573416857
+32
+0.491941973587031
+13
+1.296235511599156
+23
+-0.31685524573416857
+33
+0.491941973587031
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.4200331617217834
+20
+-0.2551996369886165
+30
+0.6008217350052182
+11
+0.8178385648700359
+21
+-0.27124984964993776
+31
+1.2542011562606892
+12
+1.4120521182246126
+22
+-0.27111364899581186
+32
+0.5891009093839078
+13
+1.4120521182246126
+23
+-0.27111364899581186
+33
+0.5891009093839078
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.8178385648700359
+20
+-0.27124984964993776
+30
+1.2542011562606892
+11
+1.4200331617217834
+21
+-0.2551996369886165
+31
+0.6008217350052182
+12
+0.82950587120676
+22
+-0.25533499270842597
+32
+1.2617959663934535
+13
+0.82950587120676
+23
+-0.25533499270842597
+33
+1.2617959663934535
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.886816064498108
+20
+-0.07019890877981821
+30
+1.24618250303494
+11
+0.7584040700658974
+21
+-0.07895235839940429
+31
+1.1802472966562991
+12
+0.8651868766935726
+22
+-0.17830415189829452
+32
+1.2693730886615773
+13
+0.8651868766935726
+23
+-0.17830415189829452
+33
+1.2693730886615773
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.435174589712788
+20
+-0.17817350408840257
+30
+0.6313887032404708
+11
+0.886816064498108
+21
+-0.07019890877981821
+31
+1.24618250303494
+12
+0.8651868766935726
+22
+-0.17830415189829452
+32
+1.2693730886615773
+13
+0.8651868766935726
+23
+-0.17830415189829452
+33
+1.2693730886615773
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.886816064498108
+20
+-0.07019890877981821
+30
+1.24618250303494
+11
+1.435174589712788
+21
+-0.17817350408840257
+31
+0.6313887032404708
+12
+1.4074552186633607
+22
+-0.03283878934796741
+32
+0.6637847097679882
+13
+1.4074552186633607
+23
+-0.03283878934796741
+33
+0.6637847097679882
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.886816064498108
+20
+-0.07019890877981821
+30
+1.24618250303494
+11
+1.4074552186633607
+21
+-0.03283878934796741
+31
+0.6637847097679882
+12
+0.9017668660717575
+22
+-0.028687052013650738
+32
+1.2298393668802003
+13
+0.9017668660717575
+23
+-0.028687052013650738
+33
+1.2298393668802003
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.9017668660717575
+20
+-0.028687052013650738
+30
+1.2298393668802003
+11
+1.4074552186633607
+21
+-0.03283878934796741
+31
+0.6637847097679882
+12
+1.3606638328112888
+22
+0.09565654957220543
+32
+0.7173692551580161
+13
+1.3606638328112888
+23
+0.09565654957220543
+33
+0.7173692551580161
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.9017668660717575
+20
+-0.028687052013650738
+30
+1.2298393668802003
+11
+1.3606638328112888
+21
+0.09565654957220543
+31
+0.7173692551580161
+12
+1.0500873483302444
+22
+0.11569952969883424
+32
+1.0651855328987245
+13
+1.0500873483302444
+23
+0.11569952969883424
+33
+1.0651855328987245
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.0500873483302444
+20
+0.11569952969883424
+30
+1.0651855328987245
+11
+1.3606638328112888
+21
+0.09565654957220543
+31
+0.7173692551580161
+12
+1.3479240404844608
+22
+0.11569941449928345
+32
+0.7318177742169286
+13
+1.3479240404844608
+23
+0.11569941449928345
+33
+0.7318177742169286
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7895717163228786
+20
+-0.3519861176018548
+30
+2.721769481190651
+11
+-1.3438354876604606
+21
+-0.3519861906636493
+31
+2.3082689981735207
+12
+-1.7532288757978818
+22
+-0.35198612355890113
+32
+2.1850363490651508
+13
+-1.7532288757978818
+23
+-0.35198612355890113
+33
+2.1850363490651508
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.3438354876604606
+20
+-0.3519861906636493
+30
+2.3082689981735207
+11
+-1.7895717163228786
+21
+-0.3519861176018548
+31
+2.721769481190651
+12
+-1.4736624392813298
+22
+-0.3519861693833375
+32
+2.907315266711701
+13
+-1.4736624392813298
+23
+-0.3519861693833375
+33
+2.907315266711701
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.29329461801529333
+20
+-0.39135639924089705
+30
+1.3635807211619237
+11
+0.5551727011859529
+21
+-0.10458326330281831
+31
+0.9844541997546986
+12
+0.6406857800208818
+22
+-0.1001033428773545
+32
+1.0873129661577854
+13
+0.6406857800208818
+23
+-0.1001033428773545
+33
+1.0873129661577854
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.9877718590248896
+20
+-0.28063215797614327
+30
+0.3500300359004508
+11
+0.7148013652171186
+21
+-0.2589393880700495
+31
+0.36354132201196915
+12
+0.8417991709290595
+22
+-0.2674902013547584
+32
+0.33656213664331786
+13
+0.8417991709290595
+23
+-0.2674902013547584
+33
+0.33656213664331786
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.7148013652171186
+20
+-0.2589393880700495
+30
+0.36354132201196915
+11
+0.9877718590248896
+21
+-0.28063215797614327
+31
+0.3500300359004508
+12
+1.1427716320422368
+22
+-0.29746965530859
+32
+0.4030272047057251
+13
+1.1427716320422368
+23
+-0.29746965530859
+33
+0.4030272047057251
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.7148013652171186
+20
+-0.2589393880700495
+30
+0.36354132201196915
+11
+1.1427716320422368
+21
+-0.29746965530859
+31
+0.4030272047057251
+12
+0.6154331324746154
+22
+-0.25556244191651595
+32
+0.4291290051087077
+13
+0.6154331324746154
+23
+-0.25556244191651595
+33
+0.4291290051087077
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.6154331324746154
+20
+-0.25556244191651595
+30
+0.4291290051087077
+11
+1.1427716320422368
+21
+-0.29746965530859
+31
+0.4030272047057251
+12
+1.296235511599156
+22
+-0.31685524573416857
+32
+0.491941973587031
+13
+1.296235511599156
+23
+-0.31685524573416857
+33
+0.491941973587031
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.6154331324746154
+20
+-0.25556244191651595
+30
+0.4291290051087077
+11
+1.296235511599156
+21
+-0.31685524573416857
+31
+0.491941973587031
+12
+0.550466253549162
+22
+-0.25758949619382754
+32
+0.5288554937193
+13
+0.550466253549162
+23
+-0.25758949619382754
+33
+0.5288554937193
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.550466253549162
+20
+-0.25758949619382754
+30
+0.5288554937193
+11
+1.296235511599156
+21
+-0.31685524573416857
+31
+0.491941973587031
+12
+1.3091840178343996
+22
+-0.3187418848047469
+32
+0.5028130849064316
+13
+1.3091840178343996
+23
+-0.3187418848047469
+33
+0.5028130849064316
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.550466253549162
+20
+-0.25758949619382754
+30
+0.5288554937193
+11
+1.3091840178343996
+21
+-0.3187418848047469
+31
+0.5028130849064316
+12
+0.7243214720116329
+22
+-0.31887594209924797
+32
+1.1574467960018582
+13
+0.7243214720116329
+23
+-0.31887594209924797
+33
+1.1574467960018582
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.550466253549162
+20
+-0.25758949619382754
+30
+0.5288554937193
+11
+0.7243214720116329
+21
+-0.31887594209924797
+31
+1.1574467960018582
+12
+0.5243281138766716
+22
+-0.2648824105028663
+32
+0.6559245924507474
+13
+0.5243281138766716
+23
+-0.2648824105028663
+33
+0.6559245924507474
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.5243281138766716
+20
+-0.2648824105028663
+30
+0.6559245924507474
+11
+0.7243214720116329
+21
+-0.31887594209924797
+31
+1.1574467960018582
+12
+0.5387999844805174
+22
+-0.27694418478557103
+32
+0.8016767522160716
+13
+0.5387999844805174
+23
+-0.27694418478557103
+33
+0.8016767522160716
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.5387999844805174
+20
+-0.27694418478557103
+30
+0.8016767522160716
+11
+0.7243214720116329
+21
+-0.31887594209924797
+31
+1.1574467960018582
+12
+0.5928956312949423
+22
+-0.2929528290576049
+32
+0.9561792041941095
+13
+0.5928956312949423
+23
+-0.2929528290576049
+33
+0.9561792041941095
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.5928956312949423
+20
+-0.2929528290576049
+30
+0.9561792041941095
+11
+0.7243214720116329
+21
+-0.31887594209924797
+31
+1.1574467960018582
+12
+0.6829285253868831
+22
+-0.3118173806673699
+32
+1.1089028616100112
+13
+0.6829285253868831
+23
+-0.3118173806673699
+33
+1.1089028616100112
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.8676957602144741
+20
+-0.07591452217505529
+30
+2.573406522256996
+11
+1.882447728448143
+21
+-0.1761204287941148
+31
+2.8165326979329053
+12
+1.8549083584093868
+22
+-0.17853836535603948
+32
+2.5741239612554403
+13
+1.8549083584093868
+23
+-0.17853836535603948
+33
+2.5741239612554403
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.882447728448143
+20
+-0.1761204287941148
+30
+2.8165326979329053
+11
+1.8676957602144741
+21
+-0.07591452217505529
+31
+2.573406522256996
+12
+1.895235130253219
+22
+-0.07232523842382649
+32
+2.815815258934461
+13
+1.895235130253219
+23
+-0.07232523842382649
+33
+2.815815258934461
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.9017668660717575
+20
+-0.028687052013650738
+30
+1.2298393668802003
+11
+0.8687347277652708
+21
+-0.044300385349433036
+31
+1.2280956329668686
+12
+0.886816064498108
+22
+-0.07019890877981821
+32
+1.24618250303494
+13
+0.886816064498108
+23
+-0.07019890877981821
+33
+1.24618250303494
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.4120521182246126
+20
+-0.27111364899581186
+30
+0.5891009093839078
+11
+0.8047967373346043
+21
+-0.2852590285516704
+31
+1.245239287008058
+12
+1.4027036824022836
+22
+-0.2851219813292338
+32
+0.5760050453303628
+13
+1.4027036824022836
+23
+-0.2851219813292338
+33
+0.5760050453303628
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.8047967373346043
+20
+-0.2852590285516704
+30
+1.245239287008058
+11
+1.4120521182246126
+21
+-0.27111364899581186
+31
+0.5891009093839078
+12
+0.8178385648700359
+22
+-0.27124984964993776
+32
+1.2542011562606892
+13
+0.8178385648700359
+23
+-0.27124984964993776
+33
+1.2542011562606892
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.6675651975985641
+20
+0.05980434249020211
+30
+1.716859107888579
+11
+1.6208444899815906
+21
+0.07494508113197806
+31
+1.667507102739093
+12
+1.5940743769374797
+22
+0.11569951797502342
+32
+1.5695940780014193
+13
+1.5940743769374797
+23
+0.11569951797502342
+33
+1.5695940780014193
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.4345683067862047
+20
+-0.19880836187696824
+30
+0.6259137538687718
+11
+0.8651868766935726
+21
+-0.17830415189829452
+31
+1.2693730886615773
+12
+0.8574638271061679
+22
+-0.19894064093252234
+32
+1.2718639004818764
+13
+0.8574638271061679
+23
+-0.19894064093252234
+33
+1.2718639004818764
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.8651868766935726
+20
+-0.17830415189829452
+30
+1.2693730886615773
+11
+1.4345683067862047
+21
+-0.19880836187696824
+31
+0.6259137538687718
+12
+1.4356492647298522
+22
+-0.1833147696377279
+32
+0.6293241728716591
+13
+1.4356492647298522
+23
+-0.1833147696377279
+33
+0.6293241728716591
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.8651868766935726
+20
+-0.17830415189829452
+30
+1.2693730886615773
+11
+1.4356492647298522
+21
+-0.1833147696377279
+31
+0.6293241728716591
+12
+1.435174589712788
+22
+-0.17817350408840257
+32
+0.6313887032404708
+13
+1.435174589712788
+23
+-0.17817350408840257
+33
+0.6313887032404708
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.4736623158196023
+20
+0.41891731125080267
+30
+3.1019128637859286
+11
+-1.7604022996639854
+21
+0.4693398641347575
+31
+2.906434883050858
+12
+-1.7604023079288675
+22
+0.418917358251119
+32
+2.9064348830508573
+13
+-1.7604023079288675
+23
+0.418917358251119
+33
+2.9064348830508573
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7604022996639854
+20
+0.4693398641347575
+30
+2.906434883050858
+11
+-1.4736623158196023
+21
+0.41891731125080267
+31
+3.1019128637859286
+12
+-1.4736623075547448
+22
+0.4693398171344658
+32
+3.1019128637859295
+13
+-1.4736623075547448
+23
+0.4693398171344658
+33
+3.1019128637859295
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.7110686274472025
+20
+0.11569944251109132
+30
+0.07324212630582012
+11
+0.8417991709290595
+21
+-0.2674902013547584
+31
+0.33656213664331786
+12
+0.5742711203227493
+22
+0.11569947036484796
+32
+0.06895221585191834
+13
+0.5742711203227493
+23
+0.11569947036484796
+33
+0.06895221585191834
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.8417991709290595
+20
+-0.2674902013547584
+30
+0.33656213664331786
+11
+0.7110686274472025
+21
+0.11569944251109132
+31
+0.07324212630582012
+12
+0.9877718590248896
+22
+-0.28063215797614327
+32
+0.3500300359004508
+13
+0.9877718590248896
+23
+-0.28063215797614327
+33
+0.3500300359004508
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.4200331617217834
+20
+-0.2551996369886165
+30
+0.6008217350052182
+11
+0.8396041535634804
+21
+-0.23777977037520193
+31
+1.2678971062030804
+12
+0.82950587120676
+22
+-0.25533499270842597
+32
+1.2617959663934535
+13
+0.82950587120676
+23
+-0.25533499270842597
+33
+1.2617959663934535
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.8396041535634804
+20
+-0.23777977037520193
+30
+1.2678971062030804
+11
+1.4200331617217834
+21
+-0.2551996369886165
+31
+0.6008217350052182
+12
+1.4265137628895357
+22
+-0.23764524386994787
+32
+0.6109721272062122
+13
+1.4265137628895357
+23
+-0.23764524386994787
+33
+0.6109721272062122
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.3438354876604606
+20
+-0.3519861906636493
+30
+2.3082689981735207
+11
+-1.7532287476248738
+21
+0.42997336695883304
+31
+2.1850363490651525
+12
+-1.7532288757978818
+22
+-0.35198612355890113
+32
+2.1850363490651508
+13
+-1.7532288757978818
+23
+-0.35198612355890113
+33
+2.1850363490651508
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7532287476248738
+20
+0.42997336695883304
+30
+2.1850363490651525
+11
+-1.3438354876604606
+21
+-0.3519861906636493
+31
+2.3082689981735207
+12
+-1.3438353594874726
+22
+0.42997289595543453
+32
+2.3082689981735225
+13
+-1.3438353594874726
+23
+0.42997289595543453
+33
+2.3082689981735225
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.3888029333164453
+20
+-0.2969918702840594
+30
+0.5654917638195733
+11
+0.7770026636877001
+21
+-0.30666149106830126
+31
+1.2221262601239269
+12
+1.3736836044342169
+22
+-0.30652472486030197
+32
+0.5542642789274219
+13
+1.3736836044342169
+23
+-0.30652472486030197
+33
+0.5542642789274219
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.7770026636877001
+20
+-0.30666149106830126
+30
+1.2221262601239269
+11
+1.3888029333164453
+21
+-0.2969918702840594
+31
+0.5654917638195733
+12
+0.7905978056850744
+22
+-0.2971289858534024
+32
+1.2350597597436686
+13
+0.7905978056850744
+23
+-0.2971289858534024
+33
+1.2350597597436686
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.7770026636877001
+20
+-0.30666149106830126
+30
+1.2221262601239269
+11
+0.7905978056850744
+21
+-0.2971289858534024
+31
+1.2350597597436686
+12
+0.7820181234396306
+22
+-0.3025385423088175
+32
+1.2286885607611746
+13
+0.7820181234396306
+23
+-0.3025385423088175
+33
+1.2286885607611746
+70
+1
+  0
+LINE
+ 8
+palm
+10
+1.6348397414833575
+20
+0.4693393076118373
+30
+1.7186951844850427
+11
+1.634839673189293
+21
+0.05269022449133848
+31
+1.7186951844850438
+  0
+3DFACE
+ 8
+palm
+10
+0.6656080837778451
+20
+-0.09556715674214389
+30
+1.1072238076213345
+11
+0.39312210101004275
+21
+-0.3913563992408881
+31
+1.4868573960561888
+12
+0.6454971629912596
+22
+-0.09918946164044506
+32
+1.0911506801973632
+13
+0.6454971629912596
+23
+-0.09918946164044506
+33
+1.0911506801973632
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.39312210101004275
+20
+-0.3913563992408881
+30
+1.4868573960561888
+11
+0.6656080837778451
+21
+-0.09556715674214389
+31
+1.1072238076213345
+12
+0.6738975482255489
+22
+-0.09407408897106695
+32
+1.113848945264622
+13
+0.6738975482255489
+23
+-0.09407408897106695
+33
+1.113848945264622
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.804880263882849
+20
+-0.37666065849100255
+30
+2.8208846355192323
+11
+1.7446152966499613
+21
+-0.3913456583466878
+31
+2.580311975438275
+12
+1.7773408938440884
+22
+-0.37681546288299567
+32
+2.578475898841768
+13
+1.7773408938440884
+23
+-0.37681546288299567
+33
+2.578475898841768
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7446152966499613
+20
+-0.3913456583466878
+30
+2.580311975438275
+11
+1.804880263882849
+21
+-0.37666065849100255
+31
+2.8208846355192323
+12
+1.772154666688709
+22
+-0.3913567014136412
+32
+2.822720712115689
+13
+1.772154666688709
+23
+-0.3913567014136412
+33
+2.822720712115689
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.2851012666870065
+20
+0.5693393649383878
+30
+2.603406296512527
+11
+1.6348397414833575
+21
+0.4693393076118373
+31
+1.7186951844850427
+12
+1.5940745180163998
+22
+0.4698512386274375
+32
+1.569594078001374
+13
+1.5940745180163998
+23
+0.4698512386274375
+33
+1.569594078001374
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.7589811239628956
+20
+-0.07796090531019828
+30
+1.1798646699340118
+11
+0.7556951133309526
+21
+-0.07922417161832584
+31
+1.1782818075904975
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.546029358796021
+20
+-0.10514823446237304
+30
+0.9734561491256183
+11
+0.538904362268551
+21
+-0.10552659486033339
+31
+0.9648346235437796
+12
+0.6829285253868831
+22
+-0.3118173806673699
+32
+1.1089028616100112
+13
+0.6829285253868831
+23
+-0.3118173806673699
+33
+1.1089028616100112
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.02045058279261691
+20
+-0.39135639924089705
+30
+0.9739190561071899
+11
+0.3966753060057868
+21
+-0.07337409647306103
+31
+0.659508580082581
+12
+0.4203314900532422
+22
+-0.08234123267425719
+32
+0.7240449027265381
+13
+0.4203314900532422
+23
+-0.08234123267425719
+33
+0.7240449027265381
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-0.21016804921447574
+20
+-0.39135639924089705
+30
+0.5578720307110291
+11
+0.4285775499251552
+21
+0.11569951797502342
+31
+0.0998712621479301
+12
+0.40683149306505695
+22
+0.08212027273578515
+32
+0.1742805040831692
+13
+0.40683149306505695
+23
+0.08212027273578515
+33
+0.1742805040831692
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-0.21016804921447574
+20
+-0.39135639924089705
+30
+0.5578720307110291
+11
+0.40683149306505695
+21
+0.08212027273578515
+31
+0.1742805040831692
+12
+0.37878877702084046
+22
+0.038393783699848194
+32
+0.2706184438630661
+13
+0.37878877702084046
+23
+0.038393783699848194
+33
+0.2706184438630661
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.7626223302383062
+20
+-0.07769244209007636
+30
+1.1819181088261714
+11
+0.7584040700658974
+21
+-0.07895235839940429
+31
+1.1802472966562991
+12
+0.7589811239628956
+22
+-0.07796090531019828
+32
+1.1798646699340118
+13
+0.7589811239628956
+23
+-0.07796090531019828
+33
+1.1798646699340118
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.29329461801529333
+20
+-0.39135639924089705
+30
+1.3635807211619237
+11
+0.6406857800208818
+21
+-0.1001033428773545
+31
+1.0873129661577854
+12
+0.6437434044296662
+22
+-0.09951752352774346
+32
+1.0897797118446357
+13
+0.6437434044296662
+23
+-0.09951752352774346
+33
+1.0897797118446357
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.1068452790069585
+20
+-0.3913563992408881
+30
+1.1069552218670458
+11
+0.4203314900532422
+21
+-0.08234123267425719
+31
+0.7240449027265381
+12
+0.45563534442351883
+22
+-0.09635017693496095
+32
+0.8188769122878267
+13
+0.45563534442351883
+23
+-0.09635017693496095
+33
+0.8188769122878267
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.634839673189293
+20
+0.05269022449133848
+30
+1.7186951844850438
+11
+1.6208444899815906
+21
+0.07494508113197806
+31
+1.667507102739093
+12
+1.6675651975985641
+22
+0.05980434249020211
+32
+1.716859107888579
+13
+1.6675651975985641
+23
+0.05980434249020211
+33
+1.716859107888579
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.6903109494372404
+20
+-0.09112388712480801
+30
+1.1269513721715114
+11
+0.7556951133309526
+21
+-0.07922417161832584
+31
+1.1782818075904975
+12
+0.7535113909177122
+22
+-0.07968804570622262
+32
+1.177433109344653
+13
+0.7535113909177122
+23
+-0.07968804570622262
+33
+1.177433109344653
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.7556951133309526
+20
+-0.07922417161832584
+30
+1.1782818075904975
+11
+0.6903109494372404
+21
+-0.09112388712480801
+31
+1.1269513721715114
+12
+0.7589811239628956
+22
+-0.07796090531019828
+32
+1.1798646699340118
+13
+0.7589811239628956
+23
+-0.07796090531019828
+33
+1.1798646699340118
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.7556951133309526
+20
+-0.07922417161832584
+30
+1.1782818075904975
+11
+0.7589811239628956
+21
+-0.07796090531019828
+31
+1.1798646699340118
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.8081372379406215
+20
+-0.33429615364499293
+30
+2.5767480636693016
+11
+1.804880263882849
+21
+-0.37666065849100255
+31
+2.8208846355192323
+12
+1.7773408938440884
+22
+-0.37681546288299567
+32
+2.578475898841768
+13
+1.7773408938440884
+23
+-0.37681546288299567
+33
+2.578475898841768
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8676957602144741
+20
+-0.07591452217505529
+30
+2.573406522256996
+11
+1.8549083584093868
+21
+-0.17853836535603948
+31
+2.5741239612554403
+12
+1.8393533418547328
+22
+-0.12422716055224386
+32
+2.4372046572449104
+13
+1.8393533418547328
+23
+-0.12422716055224386
+33
+2.4372046572449104
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8720848207106824
+20
+0.03421035611087325
+30
+2.573160274089795
+11
+1.8676957602144741
+21
+-0.07591452217505529
+31
+2.573406522256996
+12
+1.8521407436598245
+22
+-0.030932757660463273
+32
+2.436487218246467
+13
+1.8521407436598245
+23
+-0.030932757660463273
+33
+2.436487218246467
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8565298041560327
+20
+0.06918076805400641
+30
+2.4362409700792664
+11
+1.8720848207106824
+21
+0.03421035611087325
+31
+2.573160274089795
+12
+1.8521407436598245
+22
+-0.030932757660463273
+32
+2.436487218246467
+13
+1.8521407436598245
+23
+-0.030932757660463273
+33
+2.436487218246467
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7451326621638448
+20
+0.15688264207656666
+30
+1.71250717030225
+11
+1.8190390390415143
+21
+-0.20434458124056845
+31
+2.4383443947924617
+12
+1.7248183593506174
+22
+0.11373378942971202
+32
+1.7136469078498038
+13
+1.7248183593506174
+23
+0.11373378942971202
+33
+1.7136469078498038
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8621334256349
+20
+-0.2652554966498969
+30
+2.8176724354804583
+11
+1.8356766079793665
+21
+-0.3336560344194598
+31
+2.8191568003467666
+12
+1.834594055596155
+22
+-0.2666675281131681
+32
+2.575263698802992
+13
+1.834594055596155
+23
+-0.2666675281131681
+33
+2.575263698802992
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.834594055596155
+20
+-0.2666675281131681
+30
+2.575263698802992
+11
+1.8356766079793665
+21
+-0.3336560344194598
+31
+2.8191568003467666
+12
+1.8081372379406215
+22
+-0.33429615364499293
+32
+2.5767480636693016
+13
+1.8081372379406215
+23
+-0.33429615364499293
+33
+2.5767480636693016
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8623538269052708
+20
+0.34333572521797184
+30
+2.817660075416184
+11
+1.8826035756809005
+21
+0.2542185511592471
+31
+2.8165239580476373
+12
+1.8348144568665077
+22
+0.3350556335425835
+32
+2.575251338738716
+13
+1.8348144568665077
+23
+0.3350556335425835
+33
+2.575251338738716
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8359465433048274
+20
+0.4117129433371637
+30
+2.8191416624214285
+11
+1.8623538269052708
+21
+0.34333572521797184
+31
+2.817660075416184
+12
+1.8084071732660914
+22
+0.4026612025904063
+32
+2.576732925743964
+13
+1.8084071732660914
+23
+0.4026612025904063
+33
+2.576732925743964
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.805181337617048
+20
+0.4546904111007235
+30
+2.820867751357442
+11
+1.8359465433048274
+21
+0.4117129433371637
+31
+2.8191416624214285
+12
+1.7776419675782986
+22
+0.44515366198423323
+32
+2.578459014679979
+13
+1.7776419675782986
+23
+0.44515366198423323
+33
+2.578459014679979
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.882447728448143
+20
+-0.1761204287941148
+30
+2.8165326979329053
+11
+1.8621334256349
+21
+-0.2652554966498969
+31
+2.8176724354804583
+12
+1.8549083584093868
+22
+-0.17853836535603948
+32
+2.5741239612554403
+13
+1.8549083584093868
+23
+-0.17853836535603948
+33
+2.5741239612554403
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8522214161237673
+20
+0.16929084525907834
+30
+2.4364826941489497
+11
+1.867776432678417
+21
+0.1443314410364377
+31
+2.5734019981594765
+12
+1.8565298041560327
+22
+0.06918076805400641
+32
+2.4362409700792664
+13
+1.8565298041560327
+23
+0.06918076805400641
+33
+2.4362409700792664
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7248183593506174
+20
+0.11373378942971202
+30
+1.7136469078498038
+11
+1.8190390390415143
+21
+-0.20434458124056845
+31
+2.4383443947924617
+12
+1.792582221385972
+22
+-0.26582514990585526
+32
+2.4398287596587718
+13
+1.792582221385972
+23
+-0.26582514990585526
+33
+2.4398287596587718
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.867776432678417
+20
+0.1443314410364377
+30
+2.5734019981594765
+11
+1.8720848207106824
+21
+0.03421035611087325
+31
+2.573160274089795
+12
+1.8565298041560327
+22
+0.06918076805400641
+32
+2.4362409700792664
+13
+1.8565298041560327
+23
+0.06918076805400641
+33
+2.4362409700792664
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7776419675782986
+20
+0.44515366198423323
+30
+2.578459014679979
+11
+1.8359465433048274
+21
+0.4117129433371637
+31
+2.8191416624214285
+12
+1.8084071732660914
+22
+0.4026612025904063
+32
+2.576732925743964
+13
+1.8084071732660914
+23
+0.4026612025904063
+33
+2.576732925743964
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8084071732660914
+20
+0.4026612025904063
+30
+2.576732925743964
+11
+1.8623538269052708
+21
+0.34333572521797184
+31
+2.817660075416184
+12
+1.8348144568665077
+22
+0.3350556335425835
+32
+2.575251338738716
+13
+1.8348144568665077
+23
+0.3350556335425835
+33
+2.575251338738716
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8549083584093868
+20
+-0.17853836535603948
+30
+2.5741239612554403
+11
+1.8621334256349
+21
+-0.2652554966498969
+31
+2.8176724354804583
+12
+1.834594055596155
+22
+-0.2666675281131681
+32
+2.575263698802992
+13
+1.834594055596155
+23
+-0.2666675281131681
+33
+2.575263698802992
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8348144568665077
+20
+0.3350556335425835
+30
+2.575251338738716
+11
+1.8826035756809005
+21
+0.2542185511592471
+31
+2.8165239580476373
+12
+1.8550642056421511
+22
+0.24694416264779395
+32
+2.57411522137017
+13
+1.8550642056421511
+23
+0.24694416264779395
+33
+2.57411522137017
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8356766079793665
+20
+-0.3336560344194598
+30
+2.8191568003467666
+11
+1.804880263882849
+21
+-0.37666065849100255
+31
+2.8208846355192323
+12
+1.8081372379406215
+22
+-0.33429615364499293
+32
+2.5767480636693016
+13
+1.8081372379406215
+23
+-0.33429615364499293
+33
+2.5767480636693016
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.02045058279261691
+20
+-0.39135639924089705
+30
+0.9739190561071899
+11
+0.3817497804163781
+21
+-0.05607568881768277
+31
+0.5821837592203328
+12
+0.3966753060057868
+22
+-0.07337409647306103
+32
+0.659508580082581
+13
+0.3966753060057868
+23
+-0.07337409647306103
+33
+0.659508580082581
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.1068452790069585
+20
+-0.3913563992408881
+30
+1.1069552218670458
+11
+0.45563534442351883
+21
+-0.09635017693496095
+31
+0.8188769122878267
+12
+0.47725266850529624
+22
+-0.09848891117181602
+32
+0.8571105745168952
+13
+0.47725266850529624
+23
+-0.09848891117181602
+33
+0.8571105745168952
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.39312210101004275
+20
+-0.3913563992408881
+30
+1.4868573960561888
+11
+0.6437434044296662
+21
+-0.09951752352774346
+31
+1.0897797118446357
+12
+0.6454971629912596
+22
+-0.09918946164044506
+32
+1.0911506801973632
+13
+0.6454971629912596
+23
+-0.09918946164044506
+33
+1.0911506801973632
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.29329461801529333
+20
+-0.39135639924089705
+30
+1.3635807211619237
+11
+0.5513988760171851
+21
+-0.10471927211351728
+31
+0.9800110958759284
+12
+0.5551727011859529
+22
+-0.10458326330281831
+32
+0.9844541997546986
+13
+0.5551727011859529
+23
+-0.10458326330281831
+33
+0.9844541997546986
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.39312210101004275
+20
+-0.3913563992408881
+30
+1.4868573960561888
+11
+0.6738975482255489
+21
+-0.09407408897106695
+31
+1.113848945264622
+12
+0.6903109494372404
+22
+-0.09112388712480801
+32
+1.1269513721715114
+13
+0.6903109494372404
+23
+-0.09112388712480801
+33
+1.1269513721715114
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7776419675782986
+20
+0.44515366198423323
+30
+2.578459014679979
+11
+1.8084071732660914
+21
+0.4026612025904063
+31
+2.576732925743964
+12
+1.7928521567114306
+22
+0.40413608303543147
+32
+2.439813621733438
+13
+1.7928521567114306
+23
+0.40413608303543147
+33
+2.439813621733438
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.762086951023649
+20
+0.4427655915752502
+30
+2.4415397106694483
+11
+1.6678662713327677
+21
+0.4622480233280828
+31
+1.7168422237267897
+12
+1.6348397414833575
+22
+0.4693393076118373
+32
+1.7186951844850427
+13
+1.6348397414833575
+23
+0.4693393076118373
+33
+1.7186951844850427
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7045232859296717
+20
+0.38133522453188085
+30
+1.563397323933316
+11
+1.7172355129659331
+21
+0.3386311081408655
+31
+1.5626841007226204
+12
+1.2712475811496826
+22
+0.3809548188019898
+32
+-0.021329497427587985
+13
+1.2712475811496826
+23
+0.3809548188019898
+33
+-0.021329497427587985
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7215439009982167
+20
+0.29280225228437573
+30
+1.5624423766529374
+11
+1.7171548405019925
+21
+0.24697181775326893
+31
+1.562688624820141
+12
+1.2841162643931592
+22
+0.24722978915362082
+32
+-0.021329497427588023
+13
+1.2841162643931592
+23
+0.24722978915362082
+33
+-0.021329497427588023
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7617858772894388
+20
+-0.30447906739496566
+30
+2.441556594831235
+11
+1.8081372379406215
+21
+-0.33429615364499293
+31
+2.5767480636693016
+12
+1.7773408938440884
+22
+-0.37681546288299567
+32
+2.578475898841768
+13
+1.7773408938440884
+23
+-0.37681546288299567
+33
+2.578475898841768
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8192594403118558
+20
+0.3426764748101059
+30
+2.438332034728192
+11
+1.8348144568665077
+21
+0.3350556335425835
+31
+2.575251338738716
+12
+1.8395091890875015
+22
+0.262575137633017
+32
+2.437195917359645
+13
+1.8395091890875015
+23
+0.262575137633017
+33
+2.437195917359645
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.72503876062097
+20
+0.4083430109881152
+30
+1.7136345477855313
+11
+1.8395091890875015
+21
+0.262575137633017
+31
+2.437195917359645
+12
+1.745288509396618
+22
+0.3652028204405948
+32
+1.7124984304169848
+13
+1.745288509396618
+23
+0.3652028204405948
+33
+1.7124984304169848
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6348397414833575
+20
+0.4693393076118373
+30
+1.7186951844850427
+11
+1.6678662713327677
+21
+0.4622480233280828
+31
+1.7168422237267897
+12
+1.5940745180163998
+22
+0.4698512386274375
+32
+1.569594078001374
+13
+1.5940745180163998
+23
+0.4698512386274375
+33
+1.569594078001374
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7290602943681443
+20
+-0.3176883359983307
+30
+2.443392671427686
+11
+1.634839673189293
+21
+0.05269022449133848
+31
+1.7186951844850438
+12
+1.6675651975985641
+22
+0.05980434249020211
+32
+1.716859107888579
+13
+1.6675651975985641
+23
+0.05980434249020211
+33
+1.716859107888579
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7579200639689365
+20
+0.20712822423046562
+30
+1.7117897313038086
+11
+1.8393533418547328
+21
+-0.12422716055224386
+31
+2.4372046572449104
+12
+1.7451326621638448
+22
+0.15688264207656666
+32
+1.71250717030225
+13
+1.7451326621638448
+23
+0.15688264207656666
+33
+1.71250717030225
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7776419675782986
+20
+0.44515366198423323
+30
+2.578459014679979
+11
+1.7928521567114306
+21
+0.40413608303543147
+31
+2.439813621733438
+12
+1.762086951023649
+22
+0.4427655915752502
+32
+2.4415397106694483
+13
+1.762086951023649
+23
+0.4427655915752502
+33
+2.4415397106694483
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.3505091197150552
+20
+0.11569951797502342
+30
+1.3688012067183613
+11
+0.7175412590885892
+21
+-0.3913563992408904
+31
+1.8347543501121704
+12
+1.2542185240067691
+22
+0.11569951797501443
+32
+1.2790087735671853
+13
+1.2542185240067691
+23
+0.11569951797501443
+33
+1.2790087735671853
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.7175412590885892
+20
+-0.3913563992408904
+30
+1.8347543501121704
+11
+1.3505091197150552
+21
+0.11569951797502342
+31
+1.3688012067183613
+12
+0.8335540250022027
+22
+-0.39135639924089705
+32
+1.9429380045111706
+13
+0.8335540250022027
+23
+-0.39135639924089705
+33
+1.9429380045111706
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7623091244651496
+20
+0.26104638250238477
+30
+1.7115434831366068
+11
+1.8521407436598245
+21
+-0.030932757660463273
+31
+2.436487218246467
+12
+1.7579200639689365
+22
+0.20712822423046562
+32
+1.7117897313038086
+13
+1.7579200639689365
+23
+0.20712822423046562
+33
+1.7117897313038086
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.72503876062097
+20
+0.4083430109881152
+30
+1.7136345477855313
+11
+1.8192594403118558
+21
+0.3426764748101059
+31
+2.438332034728192
+12
+1.8395091890875015
+22
+0.262575137633017
+32
+2.437195917359645
+13
+1.8395091890875015
+23
+0.262575137633017
+33
+2.437195917359645
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6271010478658303
+20
+0.4638236469862328
+30
+1.567741117243121
+11
+1.6578662535535986
+21
+0.4461396512477167
+31
+1.566015028307111
+12
+1.2238034110911722
+22
+0.4454575748968931
+32
+-0.021329497427587968
+13
+1.2238034110911722
+23
+0.4454575748968931
+33
+-0.021329497427587968
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7171548405019925
+20
+0.24697181775326893
+30
+1.562688624820141
+11
+1.7579200639689365
+21
+0.20712822423046562
+31
+1.7117897313038086
+12
+1.7043674386969119
+22
+0.20426307292245227
+32
+1.5634060638185832
+13
+1.7043674386969119
+23
+0.20426307292245227
+33
+1.5634060638185832
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7043674386969119
+20
+0.20426307292245227
+30
+1.5634060638185832
+11
+1.6840531358836734
+21
+0.16758654817261043
+31
+1.564545801366135
+12
+1.2504634291176997
+22
+0.16751202849710456
+32
+-0.02132949742758803
+13
+1.2504634291176997
+23
+0.16751202849710456
+33
+-0.02132949742758803
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7290604211742295
+20
+0.45593246326086423
+30
+2.4433926714277017
+11
+1.762086951023649
+21
+0.4427655915752502
+31
+2.4415397106694483
+12
+1.6348397414833575
+22
+0.4693393076118373
+32
+1.7186951844850427
+13
+1.6348397414833575
+23
+0.4693393076118373
+33
+1.7186951844850427
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6575963182281532
+20
+0.13944168805466128
+30
+1.566030166232445
+11
+1.7248183593506174
+21
+0.11373378942971202
+31
+1.7136469078498038
+12
+1.6983615416950928
+22
+0.08062218929093451
+32
+1.715131272716112
+13
+1.6983615416950928
+23
+0.08062218929093451
+33
+1.715131272716112
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7045232859296717
+20
+0.38133522453188085
+30
+1.563397323933316
+11
+1.745288509396618
+21
+0.3652028204405948
+31
+1.7124984304169848
+12
+1.7580007364328771
+22
+0.3149626835100081
+32
+1.7117852072062885
+13
+1.7580007364328771
+23
+0.3149626835100081
+33
+1.7117852072062885
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6267999741316135
+20
+0.12174651827402361
+30
+1.5677580014049102
+11
+1.2236774151144043
+21
+0.13952109683086134
+31
+-0.021329497427588037
+12
+1.6575963182281532
+22
+0.13944168805466128
+32
+1.566030166232445
+13
+1.6575963182281532
+23
+0.13944168805466128
+33
+1.566030166232445
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7045232859296717
+20
+0.38133522453188085
+30
+1.563397323933316
+11
+1.7580007364328771
+21
+0.3149626835100081
+31
+1.7117852072062885
+12
+1.7172355129659331
+22
+0.3386311081408655
+32
+1.5626841007226204
+13
+1.7172355129659331
+23
+0.3386311081408655
+33
+1.5626841007226204
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6842735371540238
+20
+0.4180043864972566
+30
+1.5645334413018623
+11
+1.7045232859296717
+21
+0.38133522453188085
+31
+1.563397323933316
+12
+1.2507989254112186
+22
+0.4173719437487061
+32
+-0.021329497427587975
+13
+1.2507989254112186
+23
+0.4173719437487061
+33
+-0.021329497427587975
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7043674386969119
+20
+0.20426307292245227
+30
+1.5634060638185832
+11
+1.7451326621638448
+21
+0.15688264207656666
+31
+1.71250717030225
+12
+1.6840531358836734
+22
+0.16758654817261043
+32
+1.564545801366135
+13
+1.6840531358836734
+23
+0.16758654817261043
+33
+1.564545801366135
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7172355129659331
+20
+0.3386311081408655
+30
+1.5626841007226204
+11
+1.7215439009982167
+21
+0.29280225228437573
+31
+1.5624423766529374
+12
+1.2841736058160016
+22
+0.3381150408717304
+32
+-0.021329497427588
+13
+1.2841736058160016
+23
+0.3381150408717304
+33
+-0.021329497427588
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7579200639689365
+20
+0.20712822423046562
+30
+1.7117897313038086
+11
+1.7451326621638448
+21
+0.15688264207656666
+31
+1.71250717030225
+12
+1.7043674386969119
+22
+0.20426307292245227
+32
+1.5634060638185832
+13
+1.7043674386969119
+23
+0.20426307292245227
+33
+1.5634060638185832
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8395091890875015
+20
+0.262575137633017
+30
+2.437195917359645
+11
+1.8550642056421511
+21
+0.24694416264779395
+31
+2.57411522137017
+12
+1.8522214161237673
+22
+0.16929084525907834
+32
+2.4364826941489497
+13
+1.8522214161237673
+23
+0.16929084525907834
+33
+2.4364826941489497
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8348144568665077
+20
+0.3350556335425835
+30
+2.575251338738716
+11
+1.8550642056421511
+21
+0.24694416264779395
+31
+2.57411522137017
+12
+1.8395091890875015
+22
+0.262575137633017
+32
+2.437195917359645
+13
+1.8395091890875015
+23
+0.262575137633017
+33
+2.437195917359645
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7172355129659331
+20
+0.3386311081408655
+30
+1.5626841007226204
+11
+1.7580007364328771
+21
+0.3149626835100081
+31
+1.7117852072062885
+12
+1.7215439009982167
+22
+0.29280225228437573
+32
+1.5624423766529374
+13
+1.7215439009982167
+23
+0.29280225228437573
+33
+1.5624423766529374
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6578662535535986
+20
+0.4461396512477167
+30
+1.566015028307111
+11
+1.698631477020556
+21
+0.4414433224592369
+31
+1.715116134790779
+12
+1.72503876062097
+22
+0.4083430109881152
+32
+1.7136345477855313
+13
+1.72503876062097
+23
+0.4083430109881152
+33
+1.7136345477855313
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8084071732660914
+20
+0.4026612025904063
+30
+2.576732925743964
+11
+1.8348144568665077
+21
+0.3350556335425835
+31
+2.575251338738716
+12
+1.8192594403118558
+22
+0.3426764748101059
+32
+2.438332034728192
+13
+1.8192594403118558
+23
+0.3426764748101059
+33
+2.438332034728192
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7215439009982167
+20
+0.29280225228437573
+30
+1.5624423766529374
+11
+1.7623091244651496
+21
+0.26104638250238477
+31
+1.7115434831366068
+12
+1.7579200639689365
+22
+0.20712822423046562
+32
+1.7117897313038086
+13
+1.7579200639689365
+23
+0.20712822423046562
+33
+1.7117897313038086
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7579200639689365
+20
+0.20712822423046562
+30
+1.7117897313038086
+11
+1.8521407436598245
+21
+-0.030932757660463273
+31
+2.436487218246467
+12
+1.8393533418547328
+22
+-0.12422716055224386
+32
+2.4372046572449104
+13
+1.8393533418547328
+23
+-0.12422716055224386
+33
+2.4372046572449104
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6840531358836734
+20
+0.16758654817261043
+30
+1.564545801366135
+11
+1.7451326621638448
+21
+0.15688264207656666
+31
+1.71250717030225
+12
+1.7248183593506174
+22
+0.11373378942971202
+32
+1.7136469078498038
+13
+1.7248183593506174
+23
+0.11373378942971202
+33
+1.7136469078498038
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7446152966499613
+20
+-0.3913456583466878
+30
+2.580311975438275
+11
+1.7437745197997272
+21
+-0.3873643428597891
+31
+2.572911231993639
+12
+1.7409189549547188
+22
+-0.39135639924089705
+32
+2.578281768371061
+13
+1.7409189549547188
+23
+-0.39135639924089705
+33
+2.578281768371061
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7215439009982167
+20
+0.29280225228437573
+30
+1.5624423766529374
+11
+1.7579200639689365
+21
+0.20712822423046562
+31
+1.7117897313038086
+12
+1.7171548405019925
+22
+0.24697181775326893
+32
+1.562688624820141
+13
+1.7171548405019925
+23
+0.24697181775326893
+33
+1.562688624820141
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.762086951023649
+20
+0.4427655915752502
+30
+2.4415397106694483
+11
+1.698631477020556
+21
+0.4414433224592369
+31
+1.715116134790779
+12
+1.6678662713327677
+22
+0.4622480233280828
+32
+1.7168422237267897
+13
+1.6678662713327677
+23
+0.4622480233280828
+33
+1.7168422237267897
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8549083584093868
+20
+-0.17853836535603948
+30
+2.5741239612554403
+11
+1.834594055596155
+21
+-0.2666675281131681
+31
+2.575263698802992
+12
+1.8190390390415143
+22
+-0.20434458124056845
+32
+2.4383443947924617
+13
+1.8190390390415143
+23
+-0.20434458124056845
+33
+2.4383443947924617
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7446152966499613
+20
+-0.3913456583466878
+30
+2.580311975438275
+11
+1.7617858772894388
+21
+-0.30447906739496566
+31
+2.441556594831235
+12
+1.7773408938440884
+22
+-0.37681546288299567
+32
+2.578475898841768
+13
+1.7773408938440884
+23
+-0.37681546288299567
+33
+2.578475898841768
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7580007364328771
+20
+0.3149626835100081
+30
+1.7117852072062885
+11
+1.8565298041560327
+21
+0.06918076805400641
+31
+2.4362409700792664
+12
+1.7623091244651496
+22
+0.26104638250238477
+32
+1.7115434831366068
+13
+1.7623091244651496
+23
+0.26104638250238477
+33
+1.7115434831366068
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6678662713327677
+20
+0.4622480233280828
+30
+1.7168422237267897
+11
+1.6578662535535986
+21
+0.4461396512477167
+31
+1.566015028307111
+12
+1.6271010478658303
+22
+0.4638236469862328
+32
+1.567741117243121
+13
+1.6271010478658303
+23
+0.4638236469862328
+33
+1.567741117243121
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7580007364328771
+20
+0.3149626835100081
+30
+1.7117852072062885
+11
+1.7623091244651496
+21
+0.26104638250238477
+31
+1.7115434831366068
+12
+1.7215439009982167
+22
+0.29280225228437573
+32
+1.5624423766529374
+13
+1.7215439009982167
+23
+0.29280225228437573
+33
+1.5624423766529374
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6840531358836734
+20
+0.16758654817261043
+30
+1.564545801366135
+11
+1.7248183593506174
+21
+0.11373378942971202
+31
+1.7136469078498038
+12
+1.6575963182281532
+22
+0.13944168805466128
+32
+1.566030166232445
+13
+1.6575963182281532
+23
+0.13944168805466128
+33
+1.566030166232445
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7776419675782986
+20
+0.44515366198423323
+30
+2.578459014679979
+11
+1.762086951023649
+21
+0.4427655915752502
+31
+2.4415397106694483
+12
+1.7290604211742295
+22
+0.45593246326086423
+32
+2.4433926714277017
+13
+1.7290604211742295
+23
+0.45593246326086423
+33
+2.4433926714277017
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.7895715899620932
+20
+0.41891736303231675
+30
+2.7217694811906528
+11
+-1.7532287476248738
+21
+0.42997336695883304
+31
+2.1850363490651525
+12
+-1.3438353594874726
+22
+0.42997289595543453
+32
+2.3082689981735225
+13
+-1.3438353594874726
+23
+0.42997289595543453
+33
+2.3082689981735225
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6578662535535986
+20
+0.4461396512477167
+30
+1.566015028307111
+11
+1.6842735371540238
+21
+0.4180043864972566
+31
+1.5645334413018623
+12
+1.2238034110911722
+22
+0.4454575748968931
+32
+-0.021329497427587968
+13
+1.2238034110911722
+23
+0.4454575748968931
+33
+-0.021329497427587968
+70
+0
+  0
+LINE
+ 8
+palm
+10
+1.7696706587222877
+20
+-0.35198670100650886
+30
+2.7811361899186524
+11
+1.7679994781424735
+21
+-0.3519867007325644
+31
+2.786145599142259
+  0
+3DFACE
+ 8
+palm
+10
+1.745288509396618
+20
+0.3652028204405948
+30
+1.7124984304169848
+11
+1.8522214161237673
+21
+0.16929084525907834
+31
+2.4364826941489497
+12
+1.7580007364328771
+22
+0.3149626835100081
+32
+1.7117852072062885
+13
+1.7580007364328771
+23
+0.3149626835100081
+33
+1.7117852072062885
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7721548011833212
+20
+0.429174626495198
+30
+2.82272071211574
+11
+1.8042763848132697
+21
+0.4693392798390309
+31
+3.3604633371264394
+12
+1.8042763765484142
+22
+0.4189167739554035
+32
+3.3604633371264274
+13
+1.8042763765484142
+23
+0.4189167739554035
+33
+3.3604633371264274
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.8042763848132697
+20
+0.4693392798390309
+30
+3.3604633371264394
+11
+1.7721548011833212
+21
+0.429174626495198
+31
+2.82272071211574
+12
+1.7721548077676246
+22
+0.4693392851041711
+32
+2.8227207121156974
+13
+1.7721548077676246
+23
+0.4693392851041711
+33
+2.8227207121156974
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7446154379169838
+20
+0.46077168557314707
+30
+2.580311975438233
+11
+1.7776419675782986
+21
+0.44515366198423323
+31
+2.578459014679979
+12
+1.7290604211742295
+22
+0.45593246326086423
+32
+2.4433926714277017
+13
+1.7290604211742295
+23
+0.45593246326086423
+33
+2.4433926714277017
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5940743769374797
+20
+0.11569951797502342
+30
+1.5695940780014193
+11
+1.1922941387017831
+21
+0.12173074383943339
+31
+-0.021329497427588044
+12
+1.6267999741316135
+22
+0.12174651827402361
+32
+1.5677580014049102
+13
+1.6267999741316135
+23
+0.12174651827402361
+33
+1.5677580014049102
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5675026165657096
+20
+-0.3519866678686142
+30
+3.387140392775377
+11
+1.7721546731419455
+21
+-0.3519867014136748
+31
+2.8227207121156908
+12
+1.7679994781424735
+22
+-0.3519867007325644
+32
+2.786145599142259
+13
+1.7679994781424735
+23
+-0.3519867007325644
+33
+2.786145599142259
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7721546731419455
+20
+-0.3519867014136748
+30
+2.8227207121156908
+11
+1.5675026165657096
+21
+-0.3519866678686142
+31
+3.387140392775377
+12
+1.7926934652283346
+22
+-0.3519867047802352
+32
+3.166557627574764
+13
+1.7926934652283346
+23
+-0.3519867047802352
+33
+3.166557627574764
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.8190390390415143
+20
+-0.20434458124056845
+30
+2.4383443947924617
+11
+1.834594055596155
+21
+-0.2666675281131681
+31
+2.575263698802992
+12
+1.792582221385972
+22
+-0.26582514990585526
+32
+2.4398287596587718
+13
+1.792582221385972
+23
+-0.26582514990585526
+33
+2.4398287596587718
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.698631477020556
+20
+0.4414433224592369
+30
+1.715116134790779
+11
+1.7928521567114306
+21
+0.40413608303543147
+31
+2.439813621733438
+12
+1.8192594403118558
+22
+0.3426764748101059
+32
+2.438332034728192
+13
+1.8192594403118558
+23
+0.3426764748101059
+33
+2.438332034728192
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.792582221385972
+20
+-0.26582514990585526
+30
+2.4398287596587718
+11
+1.834594055596155
+21
+-0.2666675281131681
+31
+2.575263698802992
+12
+1.8081372379406215
+22
+-0.33429615364499293
+32
+2.5767480636693016
+13
+1.8081372379406215
+23
+-0.33429615364499293
+33
+2.5767480636693016
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-0.49742734357691054
+20
+0.46933965711727876
+30
+3.460249444335772
+11
+-0.433275824211661
+21
+0.6693396466020395
+31
+2.4623092723969795
+12
+-1.4736623075547448
+22
+0.4693398171344658
+32
+3.1019128637859295
+13
+-1.4736623075547448
+23
+0.4693398171344658
+33
+3.1019128637859295
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5001768207931099
+20
+0.41891698771371944
+30
+3.617705458439768
+11
+-0.49742734357691054
+21
+0.46933965711727876
+31
+3.460249444335772
+12
+-0.4974273518417929
+22
+0.41891715123359774
+32
+3.4602494443357763
+13
+-0.4974273518417929
+23
+0.41891715123359774
+33
+3.4602494443357763
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-0.49742734357691054
+20
+0.46933965711727876
+30
+3.460249444335772
+11
+0.5001768207931099
+21
+0.41891698771371944
+31
+3.617705458439768
+12
+0.0013747427405363943
+22
+0.46933957535736426
+32
+3.53897745138778
+13
+0.0013747427405363943
+23
+0.46933957535736426
+33
+3.53897745138778
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.0013747427405363943
+20
+0.46933957535736426
+30
+3.53897745138778
+11
+0.5001768207931099
+21
+0.41891698771371944
+31
+3.617705458439768
+12
+0.500176829057992
+22
+0.4693394935974071
+32
+3.6177054584397785
+13
+0.500176829057992
+23
+0.4693394935974071
+33
+3.6177054584397785
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.0013747427405363943
+20
+0.46933957535736426
+30
+3.53897745138778
+11
+0.005897113385843644
+21
+0.6693395746160492
+31
+2.540767132815593
+12
+-0.49742734357691054
+22
+0.46933965711727876
+32
+3.460249444335772
+13
+-0.49742734357691054
+23
+0.46933965711727876
+33
+3.460249444335772
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8042763765484142
+20
+0.4189167739554035
+30
+3.3604633371264274
+11
+1.567502748292268
+21
+0.4693393186492294
+31
+3.5817379898496267
+12
+1.5675027400274082
+22
+0.4189168127655707
+32
+3.5817379898496142
+13
+1.5675027400274082
+23
+0.4189168127655707
+33
+3.5817379898496142
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.567502748292268
+20
+0.4693393186492294
+30
+3.5817379898496267
+11
+1.8042763765484142
+21
+0.4189167739554035
+31
+3.3604633371264274
+12
+1.8042763848132697
+22
+0.4693392798390309
+32
+3.3604633371264394
+13
+1.8042763848132697
+23
+0.4693392798390309
+33
+3.3604633371264394
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7604022996639854
+20
+0.4693398641347575
+30
+2.906434883050858
+11
+-1.2344292513491493
+21
+0.5693397779211644
+31
+2.1309506849853554
+12
+-1.7895715816972064
+22
+0.4693398689159888
+32
+2.721769481190647
+13
+-1.7895715816972064
+23
+0.4693398689159888
+33
+2.721769481190647
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.500176829057992
+20
+0.4693394935974071
+30
+3.6177054584397785
+11
+1.567502748292268
+21
+0.4693393186492294
+31
+3.5817379898496267
+12
+0.4450700509834469
+22
+0.6693395026301509
+32
+2.619224993234204
+13
+0.4450700509834469
+23
+0.6693395026301509
+33
+2.619224993234204
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-0.4974274817566946
+20
+-0.39135632940056486
+30
+3.2656518472615215
+11
+-1.4736624392813298
+21
+-0.3519861693833375
+31
+2.907315266711701
+12
+-1.4736624457345466
+22
+-0.3913561693833688
+32
+2.907315266711703
+13
+-1.4736624457345466
+23
+-0.3913561693833688
+33
+2.907315266711703
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.4736624392813298
+20
+-0.3519861693833375
+30
+2.907315266711701
+11
+-0.4974274817566946
+21
+-0.39135632940056486
+31
+3.2656518472615215
+12
+-0.497427475303424
+22
+-0.3519863294005559
+32
+3.2656518472615206
+13
+-0.497427475303424
+23
+-0.3519863294005559
+33
+3.2656518472615206
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.5511466302233783
+20
+-0.35198650127506403
+30
+2.822685108166137
+11
+-0.4070164569928685
+21
+0.42997157245158046
+31
+2.665229116319892
+12
+-0.4070165851656482
+22
+-0.35198634422005987
+32
+2.665229116319886
+13
+-0.4070165851656482
+23
+-0.35198634422005987
+33
+2.665229116319886
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-0.4070164569928685
+20
+0.42997157245158046
+30
+2.665229116319892
+11
+0.5511466302233783
+21
+-0.35198650127506403
+31
+2.822685108166137
+12
+0.5511467583958203
+22
+0.4299694852427818
+32
+2.8226851081661346
+13
+0.5511467583958203
+23
+0.4299694852427818
+33
+2.8226851081661346
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.792582221385972
+20
+-0.26582514990585526
+30
+2.4398287596587718
+11
+1.8081372379406215
+21
+-0.33429615364499293
+31
+2.5767480636693016
+12
+1.7617858772894388
+22
+-0.30447906739496566
+32
+2.441556594831235
+13
+1.7617858772894388
+23
+-0.30447906739496566
+33
+2.441556594831235
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.7604023079288675
+20
+0.418917358251119
+30
+2.9064348830508573
+11
+-1.7895715899620932
+21
+0.41891736303231675
+31
+2.7217694811906528
+12
+-1.3438353594874726
+22
+0.42997289595543453
+32
+2.3082689981735225
+13
+-1.3438353594874726
+23
+0.42997289595543453
+33
+2.3082689981735225
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.7895715816972064
+20
+0.4693398689159888
+30
+2.721769481190647
+11
+-1.2344292513491493
+21
+0.5693397779211644
+31
+2.1309506849853554
+12
+-1.7191704438325688
+22
+0.4523487095976748
+32
+1.9757999849928511
+13
+-1.7191704438325688
+23
+0.4523487095976748
+33
+1.9757999849928511
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.2851012666870065
+20
+0.5693393649383878
+30
+2.603406296512527
+11
+1.7290604211742295
+21
+0.45593246326086423
+31
+2.4433926714277017
+12
+1.6348397414833575
+22
+0.4693393076118373
+32
+1.7186951844850427
+13
+1.6348397414833575
+23
+0.4693393076118373
+33
+1.7186951844850427
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.4736623075547448
+20
+0.4693398171344658
+30
+3.1019128637859295
+11
+-0.433275824211661
+21
+0.6693396466020395
+31
+2.4623092723969795
+12
+-1.2344292513491493
+22
+0.5693397779211644
+32
+2.1309506849853554
+13
+-1.2344292513491493
+23
+0.5693397779211644
+33
+2.1309506849853554
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.500176829057992
+20
+0.4693394935974071
+30
+3.6177054584397785
+11
+0.005897113385843644
+21
+0.6693395746160492
+31
+2.540767132815593
+12
+0.0013747427405363943
+22
+0.46933957535736426
+32
+3.53897745138778
+13
+0.0013747427405363943
+23
+0.46933957535736426
+33
+3.53897745138778
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.4736623158196023
+20
+0.41891731125080267
+30
+3.1019128637859286
+11
+-1.7604023079288675
+21
+0.418917358251119
+31
+2.9064348830508573
+12
+-1.3438353594874726
+22
+0.42997289595543453
+32
+2.3082689981735225
+13
+-1.3438353594874726
+23
+0.42997289595543453
+33
+2.3082689981735225
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.4736624392813298
+20
+-0.3519861693833375
+30
+2.907315266711701
+11
+-0.4070165851656482
+21
+-0.35198634422005987
+31
+2.665229116319886
+12
+-1.3438354876604606
+22
+-0.3519861906636493
+32
+2.3082689981735207
+13
+-1.3438354876604606
+23
+-0.3519861906636493
+33
+2.3082689981735207
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-0.4070165851656482
+20
+-0.35198634422005987
+30
+2.665229116319886
+11
+-1.4736624392813298
+21
+-0.3519861693833375
+31
+2.907315266711701
+12
+-0.497427475303424
+22
+-0.3519863294005559
+32
+3.2656518472615206
+13
+-0.497427475303424
+23
+-0.3519863294005559
+33
+3.2656518472615206
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-0.49742734357691054
+20
+0.46933965711727876
+30
+3.460249444335772
+11
+0.005897113385843644
+21
+0.6693395746160492
+31
+2.540767132815593
+12
+-0.433275824211661
+22
+0.6693396466020395
+32
+2.4623092723969795
+13
+-0.433275824211661
+23
+0.6693396466020395
+33
+2.4623092723969795
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.47725266850529624
+20
+-0.09848891117181602
+30
+0.8571105745168952
+11
+0.5928956312949423
+21
+-0.2929528290576049
+31
+0.9561792041941095
+12
+0.538904362268551
+22
+-0.10552659486033339
+32
+0.9648346235437796
+13
+0.538904362268551
+23
+-0.10552659486033339
+33
+0.9648346235437796
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-0.497427475303424
+20
+-0.3519863294005559
+30
+3.2656518472615206
+11
+0.5511466302233783
+21
+-0.35198650127506403
+31
+2.822685108166137
+12
+-0.4070165851656482
+22
+-0.35198634422005987
+32
+2.665229116319886
+13
+-0.4070165851656482
+23
+-0.35198634422005987
+33
+2.665229116319886
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.5511466302233783
+20
+-0.35198650127506403
+30
+2.822685108166137
+11
+-0.497427475303424
+21
+-0.3519863294005559
+31
+3.2656518472615206
+12
+0.5001766973314854
+22
+-0.351986492920461
+32
+3.4231078613655503
+13
+0.5001766973314854
+23
+-0.351986492920461
+33
+3.4231078613655503
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.772154666688709
+20
+-0.3913567014136412
+30
+2.822720712115689
+11
+1.7696706522690528
+21
+-0.39135670100649095
+31
+2.781136189918648
+12
+1.7446152966499613
+22
+-0.3913456583466878
+32
+2.580311975438275
+13
+1.7446152966499613
+23
+-0.3913456583466878
+33
+2.580311975438275
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7623091244651496
+20
+0.26104638250238477
+30
+1.7115434831366068
+11
+1.8565298041560327
+21
+0.06918076805400641
+31
+2.4362409700792664
+12
+1.8521407436598245
+22
+-0.030932757660463273
+32
+2.436487218246467
+13
+1.8521407436598245
+23
+-0.030932757660463273
+33
+2.436487218246467
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.567502748292268
+20
+0.4693393186492294
+30
+3.5817379898496267
+11
+1.2851012666870065
+21
+0.5693393649383878
+31
+2.603406296512527
+12
+0.4450700509834469
+22
+0.6693395026301509
+32
+2.619224993234204
+13
+0.4450700509834469
+23
+0.6693395026301509
+33
+2.619224993234204
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7926934587751069
+20
+-0.3913567047802016
+30
+3.1665576275747647
+11
+1.5675026165657096
+21
+-0.3519866678686142
+31
+3.387140392775377
+12
+1.5675026101124707
+22
+-0.39135666786861645
+32
+3.387140392775373
+13
+1.5675026101124707
+23
+-0.39135666786861645
+33
+3.387140392775373
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.5675026165657096
+20
+-0.3519866678686142
+30
+3.387140392775377
+11
+1.7926934587751069
+21
+-0.3913567047802016
+31
+3.1665576275747647
+12
+1.7926934652283346
+22
+-0.3519867047802352
+32
+3.166557627574764
+13
+1.7926934652283346
+23
+-0.3519867047802352
+33
+3.166557627574764
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.500176829057992
+20
+0.4693394935974071
+30
+3.6177054584397785
+11
+0.4450700509834469
+21
+0.6693395026301509
+31
+2.619224993234204
+12
+0.005897113385843644
+22
+0.6693395746160492
+32
+2.540767132815593
+13
+0.005897113385843644
+23
+0.6693395746160492
+33
+2.540767132815593
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.7532287476248738
+20
+0.42997336695883304
+30
+2.1850363490651525
+11
+-1.7895717163228786
+21
+-0.3519861176018548
+31
+2.721769481190651
+12
+-1.7532288757978818
+22
+-0.35198612355890113
+32
+2.1850363490651508
+13
+-1.7532288757978818
+23
+-0.35198612355890113
+33
+2.1850363490651508
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7895717163228786
+20
+-0.3519861176018548
+30
+2.721769481190651
+11
+-1.7532287476248738
+21
+0.42997336695883304
+31
+2.1850363490651525
+12
+-1.7895715899620932
+22
+0.41891736303231675
+32
+2.7217694811906528
+13
+-1.7895715899620932
+23
+0.41891736303231675
+33
+2.7217694811906528
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.4736623075547448
+20
+0.4693398171344658
+30
+3.1019128637859295
+11
+-1.2344292513491493
+21
+0.5693397779211644
+31
+2.1309506849853554
+12
+-1.7604022996639854
+22
+0.4693398641347575
+32
+2.906434883050858
+13
+-1.7604022996639854
+23
+0.4693398641347575
+33
+2.906434883050858
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7617858772894388
+20
+-0.30447906739496566
+30
+2.441556594831235
+11
+1.7437745197997272
+21
+-0.3873643428597891
+31
+2.572911231993639
+12
+1.7290602943681443
+22
+-0.3176883359983307
+32
+2.443392671427686
+13
+1.7290602943681443
+23
+-0.3176883359983307
+33
+2.443392671427686
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7437745197997272
+20
+-0.3873643428597891
+30
+2.572911231993639
+11
+1.7617858772894388
+21
+-0.30447906739496566
+31
+2.441556594831235
+12
+1.7446152966499613
+22
+-0.3913456583466878
+32
+2.580311975438275
+13
+1.7446152966499613
+23
+-0.3913456583466878
+33
+2.580311975438275
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.6840531358836734
+20
+0.16758654817261043
+30
+1.564545801366135
+11
+1.6575963182281532
+21
+0.13944168805466128
+31
+1.566030166232445
+12
+1.2236774151144043
+22
+0.13952109683086134
+32
+-0.021329497427588037
+13
+1.2236774151144043
+23
+0.13952109683086134
+33
+-0.021329497427588037
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7721548011833212
+20
+0.429174626495198
+30
+2.82272071211574
+11
+1.5675027400274082
+21
+0.4189168127655707
+31
+3.5817379898496142
+12
+1.7681256490688513
+22
+0.42988342156321946
+32
+2.787255060548812
+13
+1.7681256490688513
+23
+0.42988342156321946
+33
+2.787255060548812
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.5675027400274082
+20
+0.4189168127655707
+30
+3.5817379898496142
+11
+1.7721548011833212
+21
+0.429174626495198
+31
+2.82272071211574
+12
+1.8042763765484142
+22
+0.4189167739554035
+32
+3.3604633371264274
+13
+1.8042763765484142
+23
+0.4189167739554035
+33
+3.3604633371264274
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.567502748292268
+20
+0.4693393186492294
+30
+3.5817379898496267
+11
+1.8042763848132697
+21
+0.4693392798390309
+31
+3.3604633371264394
+12
+1.2851012666870065
+22
+0.5693393649383878
+32
+2.603406296512527
+13
+1.2851012666870065
+23
+0.5693393649383878
+33
+2.603406296512527
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6983615416950928
+20
+0.08062218929093451
+30
+1.715131272716112
+11
+1.6267999741316135
+21
+0.12174651827402361
+31
+1.5677580014049102
+12
+1.6575963182281532
+22
+0.13944168805466128
+32
+1.566030166232445
+13
+1.6575963182281532
+23
+0.13944168805466128
+33
+1.566030166232445
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-0.4974273518417929
+20
+0.41891715123359774
+30
+3.4602494443357763
+11
+-1.4736623075547448
+21
+0.4693398171344658
+31
+3.1019128637859295
+12
+-1.4736623158196023
+22
+0.41891731125080267
+32
+3.1019128637859286
+13
+-1.4736623158196023
+23
+0.41891731125080267
+33
+3.1019128637859286
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.4736623075547448
+20
+0.4693398171344658
+30
+3.1019128637859295
+11
+-0.4974273518417929
+21
+0.41891715123359774
+31
+3.4602494443357763
+12
+-0.49742734357691054
+22
+0.46933965711727876
+32
+3.460249444335772
+13
+-0.49742734357691054
+23
+0.46933965711727876
+33
+3.460249444335772
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.745288509396618
+20
+0.3652028204405948
+30
+1.7124984304169848
+11
+1.8395091890875015
+21
+0.262575137633017
+31
+2.437195917359645
+12
+1.8522214161237673
+22
+0.16929084525907834
+32
+2.4364826941489497
+13
+1.8522214161237673
+23
+0.16929084525907834
+33
+2.4364826941489497
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6842735371540238
+20
+0.4180043864972566
+30
+1.5645334413018623
+11
+1.72503876062097
+21
+0.4083430109881152
+31
+1.7136345477855313
+12
+1.7045232859296717
+22
+0.38133522453188085
+32
+1.563397323933316
+13
+1.7045232859296717
+23
+0.38133522453188085
+33
+1.563397323933316
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-0.4070165851656482
+20
+-0.35198634422005987
+30
+2.665229116319886
+11
+-1.3438353594874726
+21
+0.42997289595543453
+31
+2.3082689981735225
+12
+-1.3438354876604606
+22
+-0.3519861906636493
+32
+2.3082689981735207
+13
+-1.3438354876604606
+23
+-0.3519861906636493
+33
+2.3082689981735207
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.3438353594874726
+20
+0.42997289595543453
+30
+2.3082689981735225
+11
+-0.4070165851656482
+21
+-0.35198634422005987
+31
+2.665229116319886
+12
+-0.4070164569928685
+22
+0.42997157245158046
+32
+2.665229116319892
+13
+-0.4070164569928685
+23
+0.42997157245158046
+33
+2.665229116319892
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7928521567114306
+20
+0.40413608303543147
+30
+2.439813621733438
+11
+1.8084071732660914
+21
+0.4026612025904063
+31
+2.576732925743964
+12
+1.8192594403118558
+22
+0.3426764748101059
+32
+2.438332034728192
+13
+1.8192594403118558
+23
+0.3426764748101059
+33
+2.438332034728192
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6678662713327677
+20
+0.4622480233280828
+30
+1.7168422237267897
+11
+1.698631477020556
+21
+0.4414433224592369
+31
+1.715116134790779
+12
+1.6578662535535986
+22
+0.4461396512477167
+32
+1.566015028307111
+13
+1.6578662535535986
+23
+0.4461396512477167
+33
+1.566015028307111
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+-0.497427475303424
+21
+-0.3519863294005559
+31
+3.2656518472615206
+12
+-0.4974274817566946
+22
+-0.39135632940056486
+32
+3.2656518472615215
+13
+-0.4974274817566946
+23
+-0.39135632940056486
+33
+3.2656518472615215
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-0.497427475303424
+20
+-0.3519863294005559
+30
+3.2656518472615206
+11
+0.5001766908782079
+21
+-0.39135649292046104
+31
+3.4231078613655503
+12
+0.5001766973314854
+22
+-0.351986492920461
+32
+3.4231078613655503
+13
+0.5001766973314854
+23
+-0.351986492920461
+33
+3.4231078613655503
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.698631477020556
+20
+0.4414433224592369
+30
+1.715116134790779
+11
+1.8192594403118558
+21
+0.3426764748101059
+31
+2.438332034728192
+12
+1.72503876062097
+22
+0.4083430109881152
+32
+1.7136345477855313
+13
+1.72503876062097
+23
+0.4083430109881152
+33
+1.7136345477855313
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6267999741316135
+20
+0.12174651827402361
+30
+1.5677580014049102
+11
+1.1922941387017831
+21
+0.12173074383943339
+31
+-0.021329497427588044
+12
+1.2236774151144043
+22
+0.13952109683086134
+32
+-0.021329497427588037
+13
+1.2236774151144043
+23
+0.13952109683086134
+33
+-0.021329497427588037
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8550642056421511
+20
+0.24694416264779395
+30
+2.57411522137017
+11
+1.895315802717162
+21
+0.15043460930003982
+31
+2.8158107348369414
+12
+1.867776432678417
+22
+0.1443314410364377
+32
+2.5734019981594765
+13
+1.867776432678417
+23
+0.1443314410364377
+33
+2.5734019981594765
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.895315802717162
+20
+0.15043460930003982
+30
+2.8158107348369414
+11
+1.8550642056421511
+21
+0.24694416264779395
+31
+2.57411522137017
+12
+1.8826035756809005
+22
+0.2542185511592471
+32
+2.8165239580476373
+13
+1.8826035756809005
+23
+0.2542185511592471
+33
+2.8165239580476373
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.6678662713327677
+20
+0.4622480233280828
+30
+1.7168422237267897
+11
+1.6271010478658303
+21
+0.4638236469862328
+31
+1.567741117243121
+12
+1.5940745180163998
+22
+0.4698512386274375
+32
+1.569594078001374
+13
+1.5940745180163998
+23
+0.4698512386274375
+33
+1.569594078001374
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6675651975985641
+20
+0.05980434249020211
+30
+1.716859107888579
+11
+1.5940743769374797
+21
+0.11569951797502342
+31
+1.5695940780014193
+12
+1.6267999741316135
+22
+0.12174651827402361
+32
+1.5677580014049102
+13
+1.6267999741316135
+23
+0.12174651827402361
+33
+1.5677580014049102
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8393533418547328
+20
+-0.12422716055224386
+30
+2.4372046572449104
+11
+1.8549083584093868
+21
+-0.17853836535603948
+31
+2.5741239612554403
+12
+1.8190390390415143
+22
+-0.20434458124056845
+32
+2.4383443947924617
+13
+1.8190390390415143
+23
+-0.20434458124056845
+33
+2.4383443947924617
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7290602943681443
+20
+-0.3176883359983307
+30
+2.443392671427686
+11
+1.6675651975985641
+21
+0.05980434249020211
+31
+1.716859107888579
+12
+1.7617858772894388
+22
+-0.30447906739496566
+32
+2.441556594831235
+13
+1.7617858772894388
+23
+-0.30447906739496566
+33
+2.441556594831235
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.804880263882849
+20
+-0.37666065849100255
+30
+2.8208846355192323
+11
+1.7721546731419455
+21
+-0.3519867014136748
+31
+2.8227207121156908
+12
+1.772154666688709
+22
+-0.3913567014136412
+32
+2.822720712115689
+13
+1.772154666688709
+23
+-0.3913567014136412
+33
+2.822720712115689
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7721546731419455
+20
+-0.3519867014136748
+30
+2.8227207121156908
+11
+1.804880263882849
+21
+-0.37666065849100255
+31
+2.8208846355192323
+12
+1.7721548011833212
+22
+0.429174626495198
+32
+2.82272071211574
+13
+1.7721548011833212
+23
+0.429174626495198
+33
+2.82272071211574
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.7721548011833212
+20
+0.429174626495198
+30
+2.82272071211574
+11
+1.804880263882849
+21
+-0.37666065849100255
+31
+2.8208846355192323
+12
+1.7721548077676246
+22
+0.4693392851041711
+32
+2.8227207121156974
+13
+1.7721548077676246
+23
+0.4693392851041711
+33
+2.8227207121156974
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.7721548077676246
+20
+0.4693392851041711
+30
+2.8227207121156974
+11
+1.804880263882849
+21
+-0.37666065849100255
+31
+2.8208846355192323
+12
+1.805181337617048
+22
+0.4546904111007235
+32
+2.820867751357442
+13
+1.805181337617048
+23
+0.4546904111007235
+33
+2.820867751357442
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.805181337617048
+20
+0.4546904111007235
+30
+2.820867751357442
+11
+1.804880263882849
+21
+-0.37666065849100255
+31
+2.8208846355192323
+12
+1.8356766079793665
+22
+-0.3336560344194598
+32
+2.8191568003467666
+13
+1.8356766079793665
+23
+-0.3336560344194598
+33
+2.8191568003467666
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.805181337617048
+20
+0.4546904111007235
+30
+2.820867751357442
+11
+1.8356766079793665
+21
+-0.3336560344194598
+31
+2.8191568003467666
+12
+1.8359465433048274
+22
+0.4117129433371637
+32
+2.8191416624214285
+13
+1.8359465433048274
+23
+0.4117129433371637
+33
+2.8191416624214285
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.8359465433048274
+20
+0.4117129433371637
+30
+2.8191416624214285
+11
+1.8356766079793665
+21
+-0.3336560344194598
+31
+2.8191568003467666
+12
+1.8621334256349
+22
+-0.2652554966498969
+32
+2.8176724354804583
+13
+1.8621334256349
+23
+-0.2652554966498969
+33
+2.8176724354804583
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.8359465433048274
+20
+0.4117129433371637
+30
+2.8191416624214285
+11
+1.8621334256349
+21
+-0.2652554966498969
+31
+2.8176724354804583
+12
+1.8623538269052708
+22
+0.34333572521797184
+32
+2.817660075416184
+13
+1.8623538269052708
+23
+0.34333572521797184
+33
+2.817660075416184
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.8623538269052708
+20
+0.34333572521797184
+30
+2.817660075416184
+11
+1.8621334256349
+21
+-0.2652554966498969
+31
+2.8176724354804583
+12
+1.882447728448143
+22
+-0.1761204287941148
+32
+2.8165326979329053
+13
+1.882447728448143
+23
+-0.1761204287941148
+33
+2.8165326979329053
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.8623538269052708
+20
+0.34333572521797184
+30
+2.817660075416184
+11
+1.882447728448143
+21
+-0.1761204287941148
+31
+2.8165326979329053
+12
+1.8826035756809005
+22
+0.2542185511592471
+32
+2.8165239580476373
+13
+1.8826035756809005
+23
+0.2542185511592471
+33
+2.8165239580476373
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.8826035756809005
+20
+0.2542185511592471
+30
+2.8165239580476373
+11
+1.882447728448143
+21
+-0.1761204287941148
+31
+2.8165326979329053
+12
+1.895235130253219
+22
+-0.07232523842382649
+32
+2.815815258934461
+13
+1.895235130253219
+23
+-0.07232523842382649
+33
+2.815815258934461
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.8826035756809005
+20
+0.2542185511592471
+30
+2.8165239580476373
+11
+1.895235130253219
+21
+-0.07232523842382649
+31
+2.815815258934461
+12
+1.895315802717162
+22
+0.15043460930003982
+32
+2.8158107348369414
+13
+1.895315802717162
+23
+0.15043460930003982
+33
+2.8158107348369414
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.895315802717162
+20
+0.15043460930003982
+30
+2.8158107348369414
+11
+1.895235130253219
+21
+-0.07232523842382649
+31
+2.815815258934461
+12
+1.8996241907494322
+22
+0.03905660376695963
+32
+2.81556901076726
+13
+1.8996241907494322
+23
+0.03905660376695963
+33
+2.81556901076726
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.8521407436598245
+20
+-0.030932757660463273
+30
+2.436487218246467
+11
+1.8676957602144741
+21
+-0.07591452217505529
+31
+2.573406522256996
+12
+1.8393533418547328
+22
+-0.12422716055224386
+32
+2.4372046572449104
+13
+1.8393533418547328
+23
+-0.12422716055224386
+33
+2.4372046572449104
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7451326621638448
+20
+0.15688264207656666
+30
+1.71250717030225
+11
+1.8393533418547328
+21
+-0.12422716055224386
+31
+2.4372046572449104
+12
+1.8190390390415143
+22
+-0.20434458124056845
+32
+2.4383443947924617
+13
+1.8190390390415143
+23
+-0.20434458124056845
+33
+2.4383443947924617
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.72503876062097
+20
+0.4083430109881152
+30
+1.7136345477855313
+11
+1.745288509396618
+21
+0.3652028204405948
+31
+1.7124984304169848
+12
+1.7045232859296717
+22
+0.38133522453188085
+32
+1.563397323933316
+13
+1.7045232859296717
+23
+0.38133522453188085
+33
+1.563397323933316
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7248183593506174
+20
+0.11373378942971202
+30
+1.7136469078498038
+11
+1.792582221385972
+21
+-0.26582514990585526
+31
+2.4398287596587718
+12
+1.6983615416950928
+22
+0.08062218929093451
+32
+1.715131272716112
+13
+1.6983615416950928
+23
+0.08062218929093451
+33
+1.715131272716112
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6675651975985641
+20
+0.05980434249020211
+30
+1.716859107888579
+11
+1.6267999741316135
+21
+0.12174651827402361
+31
+1.5677580014049102
+12
+1.6983615416950928
+22
+0.08062218929093451
+32
+1.715131272716112
+13
+1.6983615416950928
+23
+0.08062218929093451
+33
+1.715131272716112
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.792582221385972
+20
+-0.26582514990585526
+30
+2.4398287596587718
+11
+1.6675651975985641
+21
+0.05980434249020211
+31
+1.716859107888579
+12
+1.6983615416950928
+22
+0.08062218929093451
+32
+1.715131272716112
+13
+1.6983615416950928
+23
+0.08062218929093451
+33
+1.715131272716112
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7580007364328771
+20
+0.3149626835100081
+30
+1.7117852072062885
+11
+1.8522214161237673
+21
+0.16929084525907834
+31
+2.4364826941489497
+12
+1.8565298041560327
+22
+0.06918076805400641
+32
+2.4362409700792664
+13
+1.8565298041560327
+23
+0.06918076805400641
+33
+2.4362409700792664
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7171548405019925
+20
+0.24697181775326893
+30
+1.562688624820141
+11
+1.7043674386969119
+21
+0.20426307292245227
+31
+1.5634060638185832
+12
+1.271159922480886
+22
+0.20436827456875706
+32
+-0.02132949742758802
+13
+1.271159922480886
+23
+0.20436827456875706
+33
+-0.02132949742758802
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5940745180163998
+20
+0.4698512386274375
+30
+1.569594078001374
+11
+1.6271010478658303
+21
+0.4638236469862328
+31
+1.567741117243121
+12
+1.1923382645753737
+22
+0.4633074583588208
+32
+-0.021329497427587964
+13
+1.1923382645753737
+23
+0.4633074583588208
+33
+-0.021329497427587964
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.762086951023649
+20
+0.4427655915752502
+30
+2.4415397106694483
+11
+1.7928521567114306
+21
+0.40413608303543147
+31
+2.439813621733438
+12
+1.698631477020556
+22
+0.4414433224592369
+32
+1.715116134790779
+13
+1.698631477020556
+23
+0.4414433224592369
+33
+1.715116134790779
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6675651975985641
+20
+0.05980434249020211
+30
+1.716859107888579
+11
+1.792582221385972
+21
+-0.26582514990585526
+31
+2.4398287596587718
+12
+1.7617858772894388
+22
+-0.30447906739496566
+32
+2.441556594831235
+13
+1.7617858772894388
+23
+-0.30447906739496566
+33
+2.441556594831235
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.2841736058160016
+20
+0.3381150408717304
+30
+-0.021329497427588
+11
+1.7215439009982167
+21
+0.29280225228437573
+31
+1.5624423766529374
+12
+1.288529285669313
+22
+0.2925487173065494
+32
+-0.02132949742758801
+13
+1.288529285669313
+23
+0.2925487173065494
+33
+-0.02132949742758801
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.8550642056421511
+20
+0.24694416264779395
+30
+2.57411522137017
+11
+1.867776432678417
+21
+0.1443314410364377
+31
+2.5734019981594765
+12
+1.8522214161237673
+22
+0.16929084525907834
+32
+2.4364826941489497
+13
+1.8522214161237673
+23
+0.16929084525907834
+33
+2.4364826941489497
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6578662535535986
+20
+0.4461396512477167
+30
+1.566015028307111
+11
+1.72503876062097
+21
+0.4083430109881152
+31
+1.7136345477855313
+12
+1.6842735371540238
+22
+0.4180043864972566
+32
+1.5645334413018623
+13
+1.6842735371540238
+23
+0.4180043864972566
+33
+1.5645334413018623
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7721548011833212
+20
+0.429174626495198
+30
+2.82272071211574
+11
+1.7696706587222877
+21
+-0.35198670100650886
+31
+2.7811361899186524
+12
+1.7721546731419455
+22
+-0.3519867014136748
+32
+2.8227207121156908
+13
+1.7721546731419455
+23
+-0.3519867014136748
+33
+2.8227207121156908
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.7696706587222877
+20
+-0.35198670100650886
+30
+2.7811361899186524
+11
+1.7721548011833212
+21
+0.429174626495198
+31
+2.82272071211574
+12
+1.7696707868944743
+22
+0.4299678831142456
+32
+2.7811361899186586
+13
+1.7696707868944743
+23
+0.4299678831142456
+33
+2.7811361899186586
+70
+1
+  0
+LINE
+ 8
+palm
+10
+-1.2436067112524003
+20
+0.2718065911365386
+30
+-0.029987259526271456
+11
+-1.2556460136349066
+21
+-0.07243340606868914
+31
+-0.02998725868702173
+  0
+LINE
+ 8
+palm
+10
+-1.2436067112524003
+20
+0.2718065911365386
+30
+-0.029987259526271456
+11
+-1.2427484297297295
+21
+0.25543757582213467
+31
+-0.029987258687021207
+  0
+LINE
+ 8
+palm
+10
+-1.2235069381440584
+20
+0.3503683787193038
+30
+-0.029987259376548173
+11
+-1.2427484297297295
+21
+-0.13681041743678712
+31
+-0.029987258687023982
+  0
+LINE
+ 8
+palm
+10
+-1.222231336631785
+20
+0.35348859913790154
+30
+-0.02998725936704609
+11
+-1.222231336631785
+21
+0.3432508349117811
+31
+-0.029987258687021765
+  0
+LINE
+ 8
+palm
+10
+-1.1969713685029186
+20
+0.41362328422976613
+30
+-0.029987259178884056
+11
+-1.222231336631785
+21
+-0.2653531336950365
+31
+-0.029987258687020638
+  0
+LINE
+ 8
+palm
+10
+-1.195492940329603
+20
+0.415575439582175
+30
+-0.02998725916787122
+11
+-1.195492940329603
+21
+0.41164114523825557
+31
+-0.029987258687021765
+  0
+LINE
+ 8
+palm
+10
+-1.165880854722602
+20
+0.454676014406754
+30
+-0.029987259207558653
+11
+-1.195492940329603
+21
+-0.3337434440215132
+31
+-0.02998725868702064
+  0
+LINE
+ 8
+palm
+10
+-1.1643554183438858
+20
+0.45594782017314683
+30
+-0.029987258687021203
+11
+-1.1643554183438858
+21
+-0.3767353903721002
+31
+-0.029987258687024003
+  0
+LINE
+ 8
+palm
+10
+-1.1628506272117831
+20
+0.455947742071513
+30
+-0.029987258924717694
+11
+-1.1309407413407597
+21
+-0.3913562255597655
+31
+-0.029987258687019288
+  0
+LINE
+ 8
+palm
+10
+-1.1309407413407642
+20
+0.4692968438672974
+30
+-0.02998725868702286
+11
+-1.1309407413407597
+21
+-0.3913562255597655
+31
+-0.029987258687019288
+  0
+LINE
+ 8
+palm
+10
+-0.4032641176830618
+20
+0.4693396416827257
+30
+-0.029987253266541992
+11
+-1.1309407413407597
+21
+-0.3913562255597655
+31
+-0.029987258687019288
+  0
+LINE
+ 8
+palm
+10
+-0.37798921673072106
+20
+0.4693396375398492
+30
+-0.029987253078268685
+11
+-0.578414963340186
+21
+-0.3913991426505551
+31
+-0.029987258687020648
+  0
+LINE
+ 8
+palm
+10
+-0.3181654135425569
+20
+0.469339627733974
+30
+-0.029987252632639818
+11
+0.19808200538601128
+21
+0.02515989535827129
+31
+-0.029987258687020648
+  0
+LINE
+ 8
+palm
+10
+0.0293145314722294
+20
+0.4693395707776401
+30
+-0.029987250044254076
+11
+0.19808200538601128
+21
+0.02515989535827129
+31
+-0.029987258687020648
+  0
+LINE
+ 8
+palm
+10
+0.3767943786960426
+20
+0.4693395138213242
+30
+-0.02998724745586906
+11
+0.19808200538601128
+21
+0.02515989535827129
+31
+-0.029987258687020648
+  0
+LINE
+ 8
+palm
+10
+0.3915316238299338
+20
+0.46933951140570074
+30
+-0.029987247346090977
+11
+0.3743671955219494
+21
+0.18194276692314504
+31
+-0.02998724746310961
+  0
+LINE
+ 8
+palm
+10
+0.4066861946168403
+20
+0.4693395089216774
+30
+-0.029987247233204176
+11
+0.506526774807132
+21
+0.1156567745653565
+31
+-0.029987258687019527
+  0
+LINE
+ 8
+palm
+10
+1.084906037085234
+20
+0.4693394175246698
+30
+-0.030006963059664236
+11
+0.506526774807132
+21
+0.1156567745653565
+31
+-0.029987258687019527
+  0
+LINE
+ 8
+palm
+10
+1.084906037085234
+20
+0.4693394175246698
+30
+-0.030006963059664236
+11
+0.5115493143264411
+21
+0.1156567745653565
+31
+-0.030341524099559827
+  0
+LINE
+ 8
+palm
+10
+1.1567373502034217
+20
+0.4692968438672974
+30
+-0.02998725868702286
+11
+1.1567374333163143
+21
+0.11569931667688083
+31
+-0.02998722460508882
+  0
+LINE
+ 8
+palm
+10
+1.1864341863376306
+20
+0.46400963388634264
+30
+-0.029987241424839453
+11
+1.1567374333163143
+21
+0.11569931667688083
+31
+-0.02998722460508882
+  0
+LINE
+ 8
+palm
+10
+1.1901520272065478
+20
+0.46327184729102877
+30
+-0.029987258687019527
+11
+1.1899268475563274
+21
+0.12173065789656323
+31
+-0.029987224110628933
+  0
+LINE
+ 8
+palm
+10
+1.2177122174997808
+20
+0.44780696387981456
+30
+-0.029987241191849277
+11
+1.1899268475563274
+21
+0.12173065789656323
+31
+-0.029987224110628933
+  0
+LINE
+ 8
+palm
+10
+1.2212895491922697
+20
+0.44560745112211575
+30
+-0.02998725868702176
+11
+1.2212895491922697
+21
+0.14066089589484243
+31
+-0.0299872586870184
+  0
+LINE
+ 8
+palm
+10
+1.244617565209668
+20
+0.4214437739510256
+30
+-0.029987240991429867
+11
+1.2212895491922697
+21
+0.14066089589484243
+31
+-0.0299872586870184
+  0
+LINE
+ 8
+palm
+10
+1.2480279454944514
+20
+0.41882218335197685
+30
+-0.029987258687019527
+11
+1.2480279454944514
+21
+0.1687608922492878
+31
+-0.02998725868702061
+  0
+LINE
+ 8
+palm
+10
+1.2653645159926572
+20
+0.38721437027285777
+30
+-0.029987240836885698
+11
+1.2480279454944514
+21
+0.1687608922492878
+31
+-0.02998725868702061
+  0
+LINE
+ 8
+palm
+10
+1.2685450385923984
+20
+0.3822015551261153
+30
+-0.029987258687019524
+11
+1.2685450385923984
+21
+0.20538152047514935
+31
+-0.029987258687019524
+  0
+LINE
+ 8
+palm
+10
+1.2786478123579077
+20
+0.3485813374478923
+30
+-0.029987240737938237
+11
+1.2685450385923984
+21
+0.20538152047514935
+31
+-0.029987258687019524
+  0
+LINE
+ 8
+palm
+10
+1.2818066242190442
+20
+0.3381122202086604
+30
+-0.02998722274179697
+11
+1.281442622497562
+21
+0.24802714527727066
+31
+-0.029987258687018955
+  0
+LINE
+ 8
+palm
+10
+-1.2427484297297295
+20
+0.25543757582213467
+30
+-0.029987258687021207
+11
+-1.2427484297297295
+21
+-0.13681041743678712
+31
+-0.029987258687023982
+  0
+LINE
+ 8
+palm
+10
+-1.222231336631785
+20
+0.3432508349117811
+30
+-0.029987258687021765
+11
+-1.222231336631785
+21
+-0.2653531336950365
+31
+-0.029987258687020638
+  0
+LINE
+ 8
+palm
+10
+-1.195492940329603
+20
+0.41164114523825557
+30
+-0.029987258687021765
+11
+-1.195492940329603
+21
+-0.3337434440215132
+31
+-0.02998725868702064
+  0
+LINE
+ 8
+palm
+10
+0.506526774807132
+20
+0.1156567745653565
+30
+-0.029987258687019527
+11
+0.7277978491178414
+21
+0.46933945628743545
+31
+-0.029987230995450295
+  0
+3DFACE
+ 8
+palm
+10
+-1.4736624457345466
+20
+-0.3913561693833688
+30
+2.907315266711703
+11
+-1.7895717227761132
+21
+-0.3913561176018615
+31
+2.721769481190653
+12
+-1.7191705821264176
+22
+-0.3913561291414933
+32
+1.975799984992849
+13
+-1.7191705821264176
+23
+-0.3913561291414933
+33
+1.975799984992849
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.4736624457345466
+20
+-0.3913561693833688
+30
+2.907315266711703
+11
+-1.7191705821264176
+21
+-0.3913561291414933
+31
+1.975799984992849
+12
+-1.5933228224247524
+22
+-0.39135614976952593
+32
+1.4382238099822164
+13
+-1.5933228224247524
+23
+-0.39135614976952593
+33
+1.4382238099822164
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-0.4974274817566946
+20
+-0.39135632940056486
+30
+3.2656518472615215
+11
+-0.583012265025729
+21
+-0.39135631537214516
+31
+-0.02132949742758821
+12
+-0.5782022063428369
+22
+-0.39139903017862127
+32
+-0.02132949742758821
+13
+-0.5782022063428369
+23
+-0.39139903017862127
+33
+-0.02132949742758821
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+-0.44530211084188664
+21
+-0.39135639947577183
+31
+-0.02132949742758821
+12
+-0.39603457201367
+22
+-0.3913563992408881
+32
+0.11999794324711321
+13
+-0.39603457201367
+23
+-0.3913563992408881
+33
+0.11999794324711321
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+-0.33918758135853855
+21
+-0.3913563992408814
+31
+0.26808941696355065
+12
+-0.27720690245551616
+22
+-0.3913563992408904
+32
+0.4141067459925812
+13
+-0.27720690245551616
+23
+-0.3913563992408904
+33
+0.4141067459925812
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+-0.27720690245551616
+21
+-0.3913563992408904
+31
+0.4141067459925812
+12
+-0.21016804921447574
+22
+-0.39135639924089705
+32
+0.5578720307110291
+13
+-0.21016804921447574
+23
+-0.39135639924089705
+33
+0.5578720307110291
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+-0.21016804921447574
+21
+-0.39135639924089705
+31
+0.5578720307110291
+12
+-0.13815269815152909
+22
+-0.39135639924089705
+32
+0.6992101152648077
+13
+-0.13815269815152909
+23
+-0.39135639924089705
+33
+0.6992101152648077
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+-0.13815269815152909
+21
+-0.39135639924089705
+31
+0.6992101152648077
+12
+-0.06124858887884144
+22
+-0.39135639924089705
+32
+0.8379488009693535
+13
+-0.06124858887884144
+23
+-0.39135639924089705
+33
+0.8379488009693535
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+-0.06124858887884144
+21
+-0.39135639924089705
+31
+0.8379488009693535
+12
+0.02045058279261691
+22
+-0.39135639924089705
+32
+0.9739190561071899
+13
+0.02045058279261691
+23
+-0.39135639924089705
+33
+0.9739190561071899
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+0.02045058279261691
+21
+-0.39135639924089705
+31
+0.9739190561071899
+12
+0.1068452790069585
+22
+-0.3913563992408881
+32
+1.1069552218670458
+13
+0.1068452790069585
+23
+-0.3913563992408881
+33
+1.1069552218670458
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+0.1068452790069585
+21
+-0.3913563992408881
+31
+1.1069552218670458
+12
+0.1978302411349111
+22
+-0.39135639924089705
+32
+1.2368952141735952
+13
+0.1978302411349111
+23
+-0.39135639924089705
+33
+1.2368952141735952
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+0.1978302411349111
+21
+-0.39135639924089705
+31
+1.2368952141735952
+12
+0.29329461801529333
+22
+-0.39135639924089705
+32
+1.3635807211619237
+13
+0.29329461801529333
+23
+-0.39135639924089705
+33
+1.3635807211619237
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+0.29329461801529333
+21
+-0.39135639924089705
+31
+1.3635807211619237
+12
+0.39312210101004275
+22
+-0.3913563992408881
+32
+1.4868573960561888
+13
+0.39312210101004275
+23
+-0.3913563992408881
+33
+1.4868573960561888
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+0.39312210101004275
+21
+-0.3913563992408881
+31
+1.4868573960561888
+12
+0.4971910657083536
+22
+-0.39135639924089705
+32
+1.606575045217334
+13
+0.4971910657083536
+23
+-0.39135639924089705
+33
+1.606575045217334
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+0.4971910657083536
+21
+-0.39135639924089705
+31
+1.606575045217334
+12
+0.6053747201073587
+22
+-0.3913563992408814
+32
+1.7225878111309507
+13
+0.6053747201073587
+23
+-0.3913563992408814
+33
+1.7225878111309507
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+0.6053747201073587
+21
+-0.3913563992408814
+31
+1.7225878111309507
+12
+1.5675026101124707
+22
+-0.39135666786861645
+32
+3.387140392775373
+13
+1.5675026101124707
+23
+-0.39135666786861645
+33
+3.387140392775373
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+0.6053747201073587
+21
+-0.3913563992408814
+31
+1.7225878111309507
+12
+0.7175412590885892
+22
+-0.3913563992408904
+32
+1.8347543501121704
+13
+0.7175412590885892
+23
+-0.3913563992408904
+33
+1.8347543501121704
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+0.7175412590885892
+21
+-0.3913563992408904
+31
+1.8347543501121704
+12
+0.8335540250022027
+22
+-0.39135639924089705
+32
+1.9429380045111706
+13
+0.8335540250022027
+23
+-0.39135639924089705
+33
+1.9429380045111706
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+0.8335540250022027
+21
+-0.39135639924089705
+31
+1.9429380045111706
+12
+0.9532716741633414
+22
+-0.39135639924089705
+32
+2.0470069692094945
+13
+0.9532716741633414
+23
+-0.39135639924089705
+33
+2.0470069692094945
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+0.9532716741633414
+21
+-0.39135639924089705
+31
+2.0470069692094945
+12
+1.076548349057601
+22
+-0.39135639924089705
+32
+2.146834452204238
+13
+1.076548349057601
+23
+-0.39135639924089705
+33
+2.146834452204238
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+1.076548349057601
+21
+-0.39135639924089705
+31
+2.146834452204238
+12
+1.2032338560459321
+22
+-0.39135639924089705
+32
+2.2422988290846195
+13
+1.2032338560459321
+23
+-0.39135639924089705
+33
+2.2422988290846195
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+1.2032338560459321
+21
+-0.39135639924089705
+31
+2.2422988290846195
+12
+1.3331738483524822
+22
+-0.39135639924089705
+32
+2.3332837912125775
+13
+1.3331738483524822
+23
+-0.39135639924089705
+33
+2.3332837912125775
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+1.3331738483524822
+21
+-0.39135639924089705
+31
+2.3332837912125775
+12
+1.4662100141123353
+22
+-0.39135639924083887
+32
+2.419678487426912
+13
+1.4662100141123353
+23
+-0.39135639924083887
+33
+2.419678487426912
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+1.4662100141123353
+21
+-0.39135639924083887
+31
+2.419678487426912
+12
+1.6021802692501754
+22
+-0.3913563992408456
+32
+2.5013776590983654
+13
+1.6021802692501754
+23
+-0.3913563992408456
+33
+2.5013776590983654
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5675026101124707
+20
+-0.39135666786861645
+30
+3.387140392775373
+11
+1.6021802692501754
+21
+-0.3913563992408456
+31
+2.5013776590983654
+12
+1.7926934587751069
+22
+-0.3913567047802016
+32
+3.1665576275747647
+13
+1.7926934587751069
+23
+-0.3913567047802016
+33
+3.1665576275747647
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7926934587751069
+20
+-0.3913567047802016
+30
+3.1665576275747647
+11
+1.6021802692501754
+21
+-0.3913563992408456
+31
+2.5013776590983654
+12
+1.7409189549547188
+22
+-0.39135639924089705
+32
+2.578281768371061
+13
+1.7409189549547188
+23
+-0.39135639924089705
+33
+2.578281768371061
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7926934587751069
+20
+-0.3913567047802016
+30
+3.1665576275747647
+11
+1.7409189549547188
+21
+-0.39135639924089705
+31
+2.578281768371061
+12
+1.7446152966499613
+22
+-0.3913456583466878
+32
+2.580311975438275
+13
+1.7446152966499613
+23
+-0.3913456583466878
+33
+2.580311975438275
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7926934587751069
+20
+-0.3913567047802016
+30
+3.1665576275747647
+11
+1.7446152966499613
+21
+-0.3913456583466878
+31
+2.580311975438275
+12
+1.772154666688709
+22
+-0.3913567014136412
+32
+2.822720712115689
+13
+1.772154666688709
+23
+-0.3913567014136412
+33
+2.822720712115689
+70
+0
+  0
+LINE
+ 8
+palm
+10
+-1.1309407413407597
+20
+-0.3913562255597655
+30
+-0.029987258687019288
+11
+-1.1319509208062501
+21
+-0.3913562253941859
+31
+-0.02132949742758821
+  0
+LINE
+ 8
+palm
+10
+-1.1309407413407597
+20
+-0.3913562255597655
+30
+-0.029987258687019288
+11
+-1.1292764794541248
+21
+-0.3913562258325619
+31
+-0.02132949742758821
+  0
+LINE
+ 8
+palm
+10
+-0.5832376912892054
+20
+-0.39135631533519477
+30
+-0.029987250527314598
+11
+-0.583012265025729
+21
+-0.39135631537214516
+31
+-0.02132949742758821
+  0
+LINE
+ 8
+palm
+10
+-0.578414963340186
+20
+-0.3913991426505551
+30
+-0.029987258687020648
+11
+-0.5782022063428369
+21
+-0.39139903017862127
+31
+-0.02132949742758821
+  0
+3DFACE
+ 8
+palm
+10
+1.2238034110911722
+20
+0.4454575748968931
+30
+-0.021329497427587968
+11
+1.6842735371540238
+21
+0.4180043864972566
+31
+1.5645334413018623
+12
+1.2507989254112186
+22
+0.4173719437487061
+32
+-0.021329497427587975
+13
+1.2507989254112186
+23
+0.4173719437487061
+33
+-0.021329497427587975
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.4450700509834469
+20
+0.6693395026301509
+30
+2.619224993234204
+11
+0.37701750679978363
+21
+0.4699931231781628
+31
+-0.02132949742758796
+12
+0.30393240840636637
+22
+0.46999313439481716
+32
+-0.02132949742758796
+13
+0.30393240840636637
+23
+0.46999313439481716
+33
+-0.02132949742758796
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.4450700509834469
+20
+0.6693395026301509
+30
+2.619224993234204
+11
+0.3917065899222034
+21
+0.46999312076217903
+31
+-0.02132949742758796
+12
+0.37701750679978363
+22
+0.4699931231781628
+32
+-0.02132949742758796
+13
+0.37701750679978363
+23
+0.4699931231781628
+33
+-0.02132949742758796
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.4450700509834469
+20
+0.6693395026301509
+30
+2.619224993234204
+11
+0.3943443042278616
+21
+0.4699505935168484
+31
+-0.02132949742758796
+12
+0.3917065899222034
+22
+0.46999312076217903
+32
+-0.02132949742758796
+13
+0.3917065899222034
+23
+0.46999312076217903
+33
+-0.02132949742758796
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.4450700509834469
+20
+0.6693395026301509
+30
+2.619224993234204
+11
+0.40681163485900584
+21
+0.46999311827777523
+31
+-0.02132949742758796
+12
+0.3943443042278616
+22
+0.4699505935168484
+32
+-0.02132949742758796
+13
+0.3943443042278616
+23
+0.4699505935168484
+33
+-0.02132949742758796
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6840531358836734
+20
+0.16758654817261043
+30
+1.564545801366135
+11
+1.2236774151144043
+21
+0.13952109683086134
+31
+-0.021329497427588037
+12
+1.2504634291176997
+22
+0.16751202849710456
+32
+-0.02132949742758803
+13
+1.2504634291176997
+23
+0.16751202849710456
+33
+-0.02132949742758803
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6271010478658303
+20
+0.4638236469862328
+30
+1.567741117243121
+11
+1.219930606861509
+21
+0.4478937548149552
+31
+-0.021329497427587968
+12
+1.1923382645753737
+22
+0.4633074583588208
+32
+-0.021329497427587964
+13
+1.1923382645753737
+23
+0.4633074583588208
+33
+-0.021329497427587964
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.6271010478658303
+20
+0.4638236469862328
+30
+1.567741117243121
+11
+1.2238034110911722
+21
+0.4454575748968931
+31
+-0.021329497427587968
+12
+1.219930606861509
+22
+0.4478937548149552
+32
+-0.021329497427587968
+13
+1.219930606861509
+23
+0.4478937548149552
+33
+-0.021329497427587968
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.005897113385843644
+20
+0.6693395746160492
+30
+2.540767132815593
+11
+0.02923566660125987
+21
+0.4700131281459
+31
+-0.02132949742758796
+12
+0.012874725889247651
+22
+0.46997054580095277
+32
+-0.02132949742758796
+13
+0.012874725889247651
+23
+0.46997054580095277
+33
+-0.02132949742758796
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.2851012666870065
+20
+0.5693393649383878
+30
+2.603406296512527
+11
+1.0865919747182853
+21
+0.469670439906691
+31
+-0.02132949742758796
+12
+1.0855657084141692
+22
+0.4696689313614164
+32
+-0.02132949742758796
+13
+1.0855657084141692
+23
+0.4696689313614164
+33
+-0.02132949742758796
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.2851012666870065
+20
+0.5693393649383878
+30
+2.603406296512527
+11
+1.157159369973707
+21
+0.46962575188848055
+31
+-0.02132949742758796
+12
+1.0865919747182853
+22
+0.469670439906691
+32
+-0.02132949742758796
+13
+1.0865919747182853
+23
+0.469670439906691
+33
+-0.02132949742758796
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5940745180163998
+20
+0.4698512386274375
+30
+1.569594078001374
+11
+1.1886405422082358
+21
+0.4640412516089145
+31
+-0.021329497427587964
+12
+1.1591044450812846
+22
+0.4692998445383917
+32
+-0.02132949742758796
+13
+1.1591044450812846
+23
+0.4692998445383917
+33
+-0.02132949742758796
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5940745180163998
+20
+0.4698512386274375
+30
+1.569594078001374
+11
+1.1923382645753737
+21
+0.4633074583588208
+31
+-0.021329497427587964
+12
+1.1886405422082358
+22
+0.4640412516089145
+32
+-0.021329497427587964
+13
+1.1886405422082358
+23
+0.4640412516089145
+33
+-0.021329497427587964
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.2712475811496826
+20
+0.3809548188019898
+30
+-0.021329497427587985
+11
+1.7172355129659331
+21
+0.3386311081408655
+31
+1.5626841007226204
+12
+1.2841736058160016
+22
+0.3381150408717304
+32
+-0.021329497427588
+13
+1.2841736058160016
+23
+0.3381150408717304
+33
+-0.021329497427588
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.5933226813458456
+20
+0.4693398367483087
+30
+1.438223809982218
+11
+-1.168401397979206
+21
+0.45476248418163134
+31
+-0.021329497427587947
+12
+-1.6254864989672675
+22
+0.4546760897419495
+32
+1.4294077340431952
+13
+-1.6254864989672675
+23
+0.4546760897419495
+33
+1.4294077340431952
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.5933226813458456
+20
+0.4693398367483087
+30
+1.438223809982218
+11
+-1.1668849566578618
+21
+0.45602679034629234
+31
+-0.021329497427587964
+12
+-1.168401397979206
+22
+0.45476248418163134
+32
+-0.021329497427587947
+13
+-1.168401397979206
+23
+0.45476248418163134
+33
+-0.021329497427587947
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.5933226813458456
+20
+0.4693398367483087
+30
+1.438223809982218
+11
+-1.1336673196459368
+21
+0.4692970973881342
+31
+-0.02132949742758796
+12
+-1.1668849566578618
+22
+0.45602679034629234
+32
+-0.021329497427587964
+13
+-1.1668849566578618
+23
+0.45602679034629234
+33
+-0.021329497427587964
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.2841162643931592
+20
+0.24722978915362082
+30
+-0.021329497427588023
+11
+1.7171548405019925
+21
+0.24697181775326893
+31
+1.562688624820141
+12
+1.271159922480886
+22
+0.20436827456875706
+32
+-0.02132949742758802
+13
+1.271159922480886
+23
+0.20436827456875706
+33
+-0.02132949742758802
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.271159922480886
+20
+0.20436827456875706
+30
+-0.02132949742758802
+11
+1.7043674386969119
+21
+0.20426307292245227
+31
+1.5634060638185832
+12
+1.2504634291176997
+22
+0.16751202849710456
+32
+-0.02132949742758803
+13
+1.2504634291176997
+23
+0.16751202849710456
+33
+-0.02132949742758803
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.7215439009982167
+20
+0.29280225228437573
+30
+1.5624423766529374
+11
+1.2841162643931592
+21
+0.24722978915362082
+31
+-0.021329497427588023
+12
+1.288529285669313
+22
+0.2925487173065494
+32
+-0.02132949742758801
+13
+1.288529285669313
+23
+0.2925487173065494
+33
+-0.02132949742758801
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.2507989254112186
+20
+0.4173719437487061
+30
+-0.021329497427587975
+11
+1.7045232859296717
+21
+0.38133522453188085
+31
+1.563397323933316
+12
+1.2712475811496826
+22
+0.3809548188019898
+32
+-0.021329497427587985
+13
+1.2712475811496826
+23
+0.3809548188019898
+33
+-0.021329497427587985
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.36549624538853664
+20
+-0.027628056394505163
+30
+0.4636345688323606
+11
+0.3644662888731871
+21
+0.008824680721530365
+31
+0.34279860846433485
+12
+0.550466253549162
+22
+-0.25758949619382754
+32
+0.5288554937193
+13
+0.550466253549162
+23
+-0.25758949619382754
+33
+0.5288554937193
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.3644662888731871
+20
+0.008824680721530365
+30
+0.34279860846433485
+11
+0.36549624538853664
+21
+-0.027628056394505163
+31
+0.4636345688323606
+12
+0.36482121142358914
+22
+-0.0037369160378684096
+32
+0.3844386258749987
+13
+0.36482121142358914
+23
+-0.0037369160378684096
+33
+0.3844386258749987
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.36482121142358914
+20
+-0.0037369160378684096
+30
+0.3844386258749987
+11
+0.36549624538853664
+21
+-0.027628056394505163
+31
+0.4636345688323606
+12
+0.3650671801086316
+22
+-0.01768427529481076
+32
+0.4316438776974501
+13
+0.3650671801086316
+23
+-0.01768427529481076
+33
+0.4316438776974501
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.36549624538853664
+20
+-0.027628056394505163
+30
+0.4636345688323606
+11
+0.550466253549162
+21
+-0.25758949619382754
+31
+0.5288554937193
+12
+0.36578346365589165
+22
+-0.037793429241581966
+32
+0.49733142365469324
+13
+0.36578346365589165
+23
+-0.037793429241581966
+33
+0.49733142365469324
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.6406857800208818
+20
+-0.1001033428773545
+30
+1.0873129661577854
+11
+0.546029358796021
+21
+-0.10514823446237304
+31
+0.9734561491256183
+12
+0.6829285253868831
+22
+-0.3118173806673699
+32
+1.1089028616100112
+13
+0.6829285253868831
+23
+-0.3118173806673699
+33
+1.1089028616100112
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.546029358796021
+20
+-0.10514823446237304
+30
+0.9734561491256183
+11
+0.6406857800208818
+21
+-0.1001033428773545
+31
+1.0873129661577854
+12
+0.5551727011859529
+22
+-0.10458326330281831
+32
+0.9844541997546986
+13
+0.5551727011859529
+23
+-0.10458326330281831
+33
+0.9844541997546986
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.546029358796021
+20
+-0.10514823446237304
+30
+0.9734561491256183
+11
+0.5551727011859529
+21
+-0.10458326330281831
+31
+0.9844541997546986
+12
+0.5495724628831538
+22
+-0.10484745230472176
+32
+0.977734224044443
+13
+0.5495724628831538
+23
+-0.10484745230472176
+33
+0.977734224044443
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.5495724628831538
+20
+-0.10484745230472176
+30
+0.977734224044443
+11
+0.5551727011859529
+21
+-0.10458326330281831
+31
+0.9844541997546986
+12
+0.5513988760171851
+22
+-0.10471927211351728
+32
+0.9800110958759284
+13
+0.5513988760171851
+23
+-0.10471927211351728
+33
+0.9800110958759284
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.886816064498108
+20
+-0.07019890877981821
+30
+1.24618250303494
+11
+0.7589811239628956
+21
+-0.07796090531019828
+31
+1.1798646699340118
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.7589811239628956
+20
+-0.07796090531019828
+30
+1.1798646699340118
+11
+0.886816064498108
+21
+-0.07019890877981821
+31
+1.24618250303494
+12
+0.7626223302383062
+22
+-0.07769244209007636
+32
+1.1819181088261714
+13
+0.7626223302383062
+23
+-0.07769244209007636
+33
+1.1819181088261714
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.8651868766935726
+20
+-0.17830415189829452
+30
+1.2693730886615773
+11
+0.7556951133309526
+21
+-0.07922417161832584
+31
+1.1782818075904975
+12
+0.7535113909177122
+22
+-0.07968804570622262
+32
+1.177433109344653
+13
+0.7535113909177122
+23
+-0.07968804570622262
+33
+1.177433109344653
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.7556951133309526
+20
+-0.07922417161832584
+30
+1.1782818075904975
+11
+0.8651868766935726
+21
+-0.17830415189829452
+31
+1.2693730886615773
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.7556951133309526
+20
+-0.07922417161832584
+30
+1.1782818075904975
+11
+0.39312210101004275
+21
+-0.3913563992408881
+31
+1.4868573960561888
+12
+0.7535113909177122
+22
+-0.07968804570622262
+32
+1.177433109344653
+13
+0.7535113909177122
+23
+-0.07968804570622262
+33
+1.177433109344653
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.39312210101004275
+20
+-0.3913563992408881
+30
+1.4868573960561888
+11
+0.7556951133309526
+21
+-0.07922417161832584
+31
+1.1782818075904975
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.39312210101004275
+20
+-0.3913563992408881
+30
+1.4868573960561888
+11
+0.6903109494372404
+21
+-0.09112388712480801
+31
+1.1269513721715114
+12
+0.7535113909177122
+22
+-0.07968804570622262
+32
+1.177433109344653
+13
+0.7535113909177122
+23
+-0.07968804570622262
+33
+1.177433109344653
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.7626223302383062
+20
+-0.07769244209007636
+30
+1.1819181088261714
+11
+0.4971910657083536
+21
+-0.39135639924089705
+31
+1.606575045217334
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.4971910657083536
+20
+-0.39135639924089705
+30
+1.606575045217334
+11
+0.7626223302383062
+21
+-0.07769244209007636
+31
+1.1819181088261714
+12
+0.8687347277652708
+22
+-0.044300385349433036
+32
+1.2280956329668686
+13
+0.8687347277652708
+23
+-0.044300385349433036
+33
+1.2280956329668686
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.5933228224247524
+20
+-0.39135614976952593
+30
+1.4382238099822164
+11
+-1.625486635239021
+21
+-0.37669239221898876
+31
+1.4294077340431905
+12
+-1.1684015342793297
+22
+-0.37677893650277927
+32
+-0.02132949742758821
+13
+-1.1684015342793297
+23
+-0.37677893650277927
+33
+-0.02132949742758821
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.5933228224247524
+20
+-0.39135614976952593
+30
+1.4382238099822164
+11
+-1.1684015342793297
+21
+-0.37677893650277927
+31
+-0.02132949742758821
+12
+-1.1668849574897702
+22
+-0.37682160620781435
+32
+-0.02132949742758821
+13
+-1.1668849574897702
+23
+-0.37682160620781435
+33
+-0.02132949742758821
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.5933228224247524
+20
+-0.39135614976952593
+30
+1.4382238099822164
+11
+-1.1668849574897702
+21
+-0.37682160620781435
+31
+-0.02132949742758821
+12
+-1.1336673204778431
+22
+-0.39135622511284507
+32
+-0.02132949742758821
+13
+-1.1336673204778431
+23
+-0.39135622511284507
+33
+-0.02132949742758821
+70
+0
+  0
+LINE
+ 8
+palm
+10
+-1.1643554183438858
+20
+-0.3767353903721002
+30
+-0.029987258687024003
+11
+-1.1668849574897702
+21
+-0.37682160620781435
+31
+-0.02132949742758821
+  0
+3DFACE
+ 8
+palm
+10
+0.4353642452976316
+20
+0.11569951797503464
+30
+0.11442537734154945
+11
+0.4285775499251552
+21
+0.11569951797502342
+31
+0.0998712621479301
+12
+0.50132984375442
+22
+0.11565962429931465
+32
+-0.021329497427588065
+13
+0.50132984375442
+23
+0.11565962429931465
+33
+-0.021329497427588065
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5742711203227493
+20
+0.11569947036484796
+30
+0.06895221585191834
+11
+0.5124547865828502
+21
+0.11566051068828076
+31
+-0.021329497427588065
+12
+0.5172420255570696
+22
+0.11566064969066137
+32
+-0.021329497427588065
+13
+0.5172420255570696
+23
+0.11566064969066137
+33
+-0.021329497427588065
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5742711203227493
+20
+0.11569947036484796
+30
+0.06895221585191834
+11
+0.5259410929604285
+21
+0.11566090227696957
+31
+-0.021329497427588065
+12
+0.5300600388642229
+22
+0.11566051068827854
+32
+-0.021329497427588065
+13
+0.5300600388642229
+23
+0.11566051068827854
+33
+-0.021329497427588065
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.3037516634831137
+20
+0.11569939636982962
+30
+0.5600494187408283
+11
+1.226889266259492
+21
+0.11569939018870201
+31
+0.4205002886903231
+12
+1.158085651441559
+22
+0.11569931808967426
+32
+-0.021329497427588065
+13
+1.158085651441559
+23
+0.11569931808967426
+33
+-0.021329497427588065
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.3466706909373627
+20
+0.11569941023242802
+30
+0.703371831037376
+11
+1.3037516634831137
+21
+0.11569939636982962
+31
+0.5600494187408283
+12
+1.158085651441559
+22
+0.11569931808967426
+32
+-0.021329497427588065
+13
+1.158085651441559
+23
+0.11569931808967426
+33
+-0.021329497427588065
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5940743769374797
+20
+0.11569951797502342
+30
+1.5695940780014193
+11
+1.3479240404844608
+21
+0.11569941449928345
+31
+0.7318177742169286
+12
+1.3466706909373627
+22
+0.11569941023242802
+32
+0.703371831037376
+13
+1.3466706909373627
+23
+0.11569941023242802
+33
+0.703371831037376
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5940743769374797
+20
+0.11569951797502342
+30
+1.5695940780014193
+11
+1.3505091197150552
+21
+0.11569951797502342
+31
+1.3688012067183613
+12
+1.3479240404844608
+22
+0.11569941449928345
+32
+0.7318177742169286
+13
+1.3479240404844608
+23
+0.11569941449928345
+33
+0.7318177742169286
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5940743769374797
+20
+0.11569951797502342
+30
+1.5695940780014193
+11
+1.4498747685188131
+21
+0.11569951797502342
+31
+1.4551784474179665
+12
+1.3505091197150552
+22
+0.11569951797502342
+32
+1.3688012067183613
+13
+1.3505091197150552
+23
+0.11569951797502342
+33
+1.3688012067183613
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5940743769374797
+20
+0.11569951797502342
+30
+1.5695940780014193
+11
+1.552194408681052
+21
+0.11569951797501443
+31
+1.538035258303604
+12
+1.4498747685188131
+22
+0.11569951797502342
+32
+1.4551784474179665
+13
+1.4498747685188131
+23
+0.11569951797502342
+33
+1.4551784474179665
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.0713278635011771
+20
+0.11569951797501443
+30
+1.0896199505044737
+11
+1.0500873483302444
+21
+0.11569952969883424
+31
+1.0651855328987245
+12
+1.3479240404844608
+22
+0.11569941449928345
+32
+0.7318177742169286
+13
+1.3479240404844608
+23
+0.11569941449928345
+33
+0.7318177742169286
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.1611202966523455
+20
+0.11569951797501443
+30
+1.1859105462127746
+11
+1.0713278635011771
+21
+0.11569951797501443
+31
+1.0896199505044737
+12
+1.3479240404844608
+22
+0.11569941449928345
+32
+0.7318177742169286
+13
+1.3479240404844608
+23
+0.11569941449928345
+33
+0.7318177742169286
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.2542185240067691
+20
+0.11569951797501443
+30
+1.2790087735671853
+11
+1.1611202966523455
+21
+0.11569951797501443
+31
+1.1859105462127746
+12
+1.3479240404844608
+22
+0.11569941449928345
+32
+0.7318177742169286
+13
+1.3479240404844608
+23
+0.11569941449928345
+33
+0.7318177742169286
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.3505091197150552
+20
+0.11569951797502342
+30
+1.3688012067183613
+11
+1.2542185240067691
+21
+0.11569951797501443
+31
+1.2790087735671853
+12
+1.3479240404844608
+22
+0.11569941449928345
+32
+0.7318177742169286
+13
+1.3479240404844608
+23
+0.11569941449928345
+33
+0.7318177742169286
+70
+0
+  0
+LINE
+ 8
+palm
+10
+0.506526774807132
+20
+0.1156567745653565
+30
+-0.029987258687019527
+11
+0.5124547865828502
+21
+0.11566051068828076
+31
+-0.021329497427588065
+  0
+LINE
+ 8
+palm
+10
+0.5115493143264411
+20
+0.1156567745653565
+30
+-0.030341524099559827
+11
+0.5172420255570696
+21
+0.11566064969066137
+31
+-0.021329497427588065
+  0
+LINE
+ 8
+palm
+10
+0.5207686193887258
+20
+0.1156567745653565
+30
+-0.03099180886072411
+11
+0.5259410929604285
+21
+0.11566090227696957
+31
+-0.021329497427588065
+  0
+LINE
+ 8
+palm
+10
+0.5258203210477908
+20
+0.1156567745653565
+30
+-0.02998725868702064
+11
+0.5300600388642229
+21
+0.11566051068827854
+31
+-0.021329497427588065
+  0
+LINE
+ 8
+palm
+10
+1.1567374333163143
+20
+0.11569931667688083
+30
+-0.02998722460508882
+11
+1.1193597020926875
+21
+0.1156993272304514
+31
+-0.021329497427588065
+  0
+LINE
+ 8
+palm
+10
+1.1567374333163143
+20
+0.11569931667688083
+30
+-0.02998722460508882
+11
+1.1386136044693458
+21
+0.11569932282059703
+31
+-0.021329497427588065
+  0
+LINE
+ 8
+palm
+10
+1.1567374333163143
+20
+0.11569931667688083
+30
+-0.02998722460508882
+11
+1.1503381943269562
+21
+0.11569932003715266
+31
+-0.021329497427588065
+  0
+LINE
+ 8
+palm
+10
+1.1567374333163143
+20
+0.11569931667688083
+30
+-0.02998722460508882
+11
+1.155791719027395
+21
+0.11569931869118599
+31
+-0.021329497427588065
+  0
+3DFACE
+ 8
+palm
+10
+0.8488303158904233
+20
+-0.21621663583415707
+30
+1.2727812042605189
+11
+0.6437434044296662
+21
+-0.09951752352774346
+31
+1.0897797118446357
+12
+0.6406857800208818
+22
+-0.1001033428773545
+32
+1.0873129661577854
+13
+0.6406857800208818
+23
+-0.1001033428773545
+33
+1.0873129661577854
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.6437434044296662
+20
+-0.09951752352774346
+30
+1.0897797118446357
+11
+0.8488303158904233
+21
+-0.21621663583415707
+31
+1.2727812042605189
+12
+0.6454971629912596
+22
+-0.09918946164044506
+32
+1.0911506801973632
+13
+0.6454971629912596
+23
+-0.09918946164044506
+33
+1.0911506801973632
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.6454971629912596
+20
+-0.09918946164044506
+30
+1.0911506801973632
+11
+0.8488303158904233
+21
+-0.21621663583415707
+31
+1.2727812042605189
+12
+0.6656080837778451
+22
+-0.09556715674214389
+32
+1.1072238076213345
+13
+0.6656080837778451
+23
+-0.09556715674214389
+33
+1.1072238076213345
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.6656080837778451
+20
+-0.09556715674214389
+30
+1.1072238076213345
+11
+0.8488303158904233
+21
+-0.21621663583415707
+31
+1.2727812042605189
+12
+0.6738975482255489
+22
+-0.09407408897106695
+32
+1.113848945264622
+13
+0.6738975482255489
+23
+-0.09407408897106695
+33
+1.113848945264622
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.6738975482255489
+20
+-0.09407408897106695
+30
+1.113848945264622
+11
+0.8488303158904233
+21
+-0.21621663583415707
+31
+1.2727812042605189
+12
+0.6903109494372404
+22
+-0.09112388712480801
+32
+1.1269513721715114
+13
+0.6903109494372404
+23
+-0.09112388712480801
+33
+1.1269513721715114
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.8488303158904233
+20
+-0.21621663583415707
+30
+1.2727812042605189
+11
+0.7535113909177122
+21
+-0.07968804570622262
+31
+1.177433109344653
+12
+0.6903109494372404
+22
+-0.09112388712480801
+32
+1.1269513721715114
+13
+0.6903109494372404
+23
+-0.09112388712480801
+33
+1.1269513721715114
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.70094493989614
+20
+0.2541658577595415
+30
+1.4087246449502895
+11
+-1.250660927301903
+21
+0.2535397136991191
+31
+-0.021329497427588023
+12
+-1.7133597261865965
+22
+0.15037411984202997
+32
+1.4053217666544113
+13
+-1.7133597261865965
+23
+0.15037411984202997
+33
+1.4053217666544113
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.250660927301903
+20
+0.2535397136991191
+30
+-0.021329497427588023
+11
+-1.258406935484123
+21
+0.18950834630357194
+31
+-0.021329497427588044
+12
+-1.7133597261865965
+22
+0.15037411984202997
+32
+1.4053217666544113
+13
+-1.7133597261865965
+23
+0.15037411984202997
+33
+1.4053217666544113
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.258406935484123
+20
+0.18950834630357194
+30
+-0.021329497427588044
+11
+-1.2640660281999483
+21
+0.150374046197144
+31
+-0.021329497427588058
+12
+-1.7133597261865965
+22
+0.15037411984202997
+32
+1.4053217666544113
+13
+-1.7133597261865965
+23
+0.15037411984202997
+33
+1.4053217666544113
+70
+0
+  0
+LINE
+ 8
+palm
+10
+-1.2556460136349066
+20
+0.1897458358697347
+30
+-0.029987258687020634
+11
+-1.258406935484123
+21
+0.18950834630357194
+31
+-0.021329497427588044
+  0
+LINE
+ 8
+palm
+10
+0.9999663543403632
+20
+0.4155734604408693
+30
+-0.03009570209834563
+11
+1.1567374333163143
+21
+0.11569931667688083
+31
+-0.02998722460508882
+  0
+LINE
+ 8
+palm
+10
+1.2177122174997808
+20
+0.44780696387981456
+30
+-0.029987241191849277
+11
+1.2212895491922697
+21
+0.14066089589484243
+31
+-0.0299872586870184
+  0
+LINE
+ 8
+palm
+10
+1.1864341863376306
+20
+0.46400963388634264
+30
+-0.029987241424839453
+11
+1.1899268475563274
+21
+0.12173065789656323
+31
+-0.029987224110628933
+  0
+LINE
+ 8
+palm
+10
+0.016046336604195188
+20
+-0.10354326518386514
+30
+-0.029987241599155137
+11
+0.19808200538601128
+21
+0.02515989535827129
+31
+-0.029987258687020648
+  0
+LINE
+ 8
+palm
+10
+0.19808200538601128
+20
+0.02515989535827129
+30
+-0.029987258687020648
+11
+0.37380774416773943
+21
+0.11569951797501443
+31
+-0.029987236269210224
+  0
+LINE
+ 8
+palm
+10
+0.3767943786960426
+20
+0.4693395138213242
+30
+-0.02998724745586906
+11
+0.3743671955219494
+21
+0.18194276692314504
+31
+-0.02998724746310961
+  0
+LINE
+ 8
+palm
+10
+0.39417798635535983
+20
+0.4692968438672974
+30
+-0.02998725868702286
+11
+0.37380774416773943
+21
+0.11569951797501443
+31
+-0.029987236269210224
+  0
+LINE
+ 8
+palm
+10
+0.37380774416773943
+20
+0.11569951797501443
+30
+-0.029987236269210224
+11
+0.4066861946168403
+21
+0.4693395089216774
+31
+-0.029987247233204176
+  0
+LINE
+ 8
+palm
+10
+-0.37798921673072106
+20
+0.4693396375398492
+30
+-0.029987253078268685
+11
+-0.4476786151194132
+21
+-0.3913563992408948
+31
+-0.029987248507749635
+  0
+LINE
+ 8
+palm
+10
+-0.37798921673072106
+20
+0.4693396375398492
+30
+-0.029987253078268685
+11
+0.016046336604195188
+21
+-0.10354326518386514
+31
+-0.029987241599155137
+  0
+LINE
+ 8
+palm
+10
+-0.37798921673072106
+20
+0.4693396375398492
+30
+-0.029987253078268685
+11
+0.19808200538601128
+21
+0.02515989535827129
+31
+-0.029987258687020648
+  0
+LINE
+ 8
+palm
+10
+-0.3683813774927045
+20
+0.4692968438672974
+30
+-0.02998725868702286
+11
+0.19808200538601128
+21
+0.02515989535827129
+31
+-0.029987258687020648
+  0
+LINE
+ 8
+palm
+10
+0.3743671955219494
+20
+0.18194276692314504
+30
+-0.02998724746310961
+11
+0.3704083435673351
+21
+0.11565677456535195
+31
+-0.02998725868702064
+  0
+LINE
+ 8
+palm
+10
+1.219930606861509
+20
+0.4478937548149552
+30
+-0.021329497427587968
+11
+1.2177122174997808
+21
+0.44780696387981456
+31
+-0.029987241191849277
+  0
+LINE
+ 8
+palm
+10
+1.1886405422082358
+20
+0.4640412516089145
+30
+-0.021329497427587964
+11
+1.1864341863376306
+21
+0.46400963388634264
+31
+-0.029987241424839453
+  0
+LINE
+ 8
+palm
+10
+-1.1668849566578618
+20
+0.45602679034629234
+30
+-0.021329497427587964
+11
+-1.1643554183438858
+21
+0.45594782017314683
+31
+-0.029987258687021203
+  0
+LINE
+ 8
+palm
+10
+1.2212895491922697
+20
+0.14066089589484243
+30
+-0.0299872586870184
+11
+1.2211640983670373
+21
+0.1393678798698048
+31
+-0.029987223645254617
+  0
+LINE
+ 8
+palm
+10
+0.3743671955219494
+20
+0.18194276692314504
+30
+-0.02998724746310961
+11
+0.37380774416773943
+21
+0.11569951797501443
+31
+-0.029987236269210224
+  0
+3DFACE
+ 8
+palm
+10
+0.5742711203227493
+20
+0.11569947036484796
+30
+0.06895221585191834
+11
+0.5300600388642229
+21
+0.11566051068827854
+31
+-0.021329497427588065
+12
+1.1057685335055842
+22
+0.1156993301253959
+32
+-0.021329497427588065
+13
+1.1057685335055842
+23
+0.1156993301253959
+33
+-0.021329497427588065
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.005897113385843644
+20
+0.6693395746160492
+30
+2.540767132815593
+11
+0.30246749279966134
+21
+0.4700130823729538
+31
+-0.02132949742758796
+12
+0.02923566660125987
+22
+0.4700131281459
+32
+-0.02132949742758796
+13
+0.02923566660125987
+23
+0.4700131281459
+33
+-0.02132949742758796
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.4450700509834469
+20
+0.6693395026301509
+30
+2.619224993234204
+11
+0.7268738831455794
+21
+0.4699930645936956
+31
+-0.02132949742758796
+12
+0.40681163485900584
+22
+0.46999311827777523
+32
+-0.02132949742758796
+13
+0.40681163485900584
+23
+0.46999311827777523
+33
+-0.02132949742758796
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.2851012666870065
+20
+0.5693393649383878
+30
+2.603406296512527
+11
+1.0855657084141692
+21
+0.4696689313614164
+31
+-0.02132949742758796
+12
+0.7296300798328395
+22
+0.4696682231644226
+32
+-0.02132949742758796
+13
+0.7296300798328395
+23
+0.4696682231644226
+33
+-0.02132949742758796
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-0.4974274817566946
+20
+-0.39135632940056486
+30
+3.2656518472615215
+11
+-1.1292764794541248
+21
+-0.3913562258325619
+31
+-0.02132949742758821
+12
+-0.583012265025729
+22
+-0.39135631537214516
+32
+-0.02132949742758821
+13
+-0.583012265025729
+23
+-0.39135631537214516
+33
+-0.02132949742758821
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-0.433275824211661
+20
+0.6693396466020395
+30
+2.4623092723969795
+11
+-0.40336837254389635
+21
+0.47003440299726207
+31
+-0.02132949742758796
+12
+-0.7010674590880783
+22
+0.4700344517163295
+32
+-0.02132949742758796
+13
+-0.7010674590880783
+23
+0.4700344517163295
+33
+-0.02132949742758796
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-0.39603457201367
+20
+-0.3913563992408881
+30
+0.11999794324711321
+11
+-0.44530211084188664
+21
+-0.39135639947577183
+31
+-0.02132949742758821
+12
+-0.007740620010602495
+22
+-0.12015698930892682
+32
+-0.021329497427588134
+13
+-0.007740620010602495
+23
+-0.12015698930892682
+33
+-0.021329497427588134
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.005897113385843644
+20
+0.6693395746160492
+30
+2.540767132815593
+11
+0.012874725889247651
+21
+0.46997054580095277
+31
+-0.02132949742758796
+12
+-0.27212184387072247
+22
+0.47001317722134817
+32
+-0.02132949742758796
+13
+-0.27212184387072247
+23
+0.47001317722134817
+33
+-0.02132949742758796
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-0.433275824211661
+20
+0.6693396466020395
+30
+2.4623092723969795
+11
+-0.2736178696594298
+21
+0.4700343811409351
+31
+-0.02132949742758796
+12
+-0.40336837254389635
+22
+0.47003440299726207
+32
+-0.02132949742758796
+13
+-0.40336837254389635
+23
+0.47003440299726207
+33
+-0.02132949742758796
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-0.4974274817566946
+20
+-0.39135632940056486
+30
+3.2656518472615215
+11
+-0.5782022063428369
+21
+-0.39139903017862127
+31
+-0.02132949742758821
+12
+-0.4478093070099276
+22
+-0.39135639905742076
+32
+-0.02132949742758821
+13
+-0.4478093070099276
+23
+-0.39135639905742076
+33
+-0.02132949742758821
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.2344292513491493
+20
+0.5693397779211644
+30
+2.1309506849853554
+11
+-0.7041341214652392
+21
+0.4697403390103124
+31
+-0.02132949742758796
+12
+-1.1313553663027527
+22
+0.46969766418759396
+32
+-0.02132949742758796
+13
+-1.1313553663027527
+23
+0.46969766418759396
+33
+-0.02132949742758796
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.5742711203227493
+20
+0.11569947036484796
+30
+0.06895221585191834
+11
+0.5172420255570696
+21
+0.11566064969066137
+31
+-0.021329497427588065
+12
+0.5259410929604285
+22
+0.11566090227696957
+32
+-0.021329497427588065
+13
+0.5259410929604285
+23
+0.11566090227696957
+33
+-0.021329497427588065
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5940743769374797
+20
+0.11569951797502342
+30
+1.5695940780014193
+11
+1.159104517712921
+21
+0.11569931776640818
+31
+-0.021329497427588065
+12
+1.1922941387017831
+22
+0.12173074383943339
+32
+-0.021329497427588044
+13
+1.1922941387017831
+23
+0.12173074383943339
+33
+-0.021329497427588044
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.7589811239628956
+20
+-0.07796090531019828
+30
+1.1798646699340118
+11
+0.7556951133309526
+21
+-0.07922417161832584
+31
+1.1782818075904975
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.7584040700658974
+20
+-0.07895235839940429
+30
+1.1802472966562991
+11
+0.7589811239628956
+21
+-0.07796090531019828
+31
+1.1798646699340118
+12
+0.7556951133309526
+22
+-0.07922417161832584
+32
+1.1782818075904975
+13
+0.7556951133309526
+23
+-0.07922417161832584
+33
+1.1782818075904975
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.7626223302383062
+20
+-0.07769244209007636
+30
+1.1819181088261714
+11
+0.7589811239628956
+21
+-0.07796090531019828
+31
+1.1798646699340118
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.7626223302383062
+20
+-0.07769244209007636
+30
+1.1819181088261714
+11
+0.7589811239628956
+21
+-0.07796090531019828
+31
+1.1798646699340118
+12
+0.7584040700658974
+22
+-0.07895235839940429
+32
+1.1802472966562991
+13
+0.7584040700658974
+23
+-0.07895235839940429
+33
+1.1802472966562991
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+-1.2640660281999483
+20
+0.150374046197144
+30
+-0.021329497427588058
+11
+-1.2640660647138675
+21
+-0.07239046715696767
+31
+-0.021329497427588117
+12
+-1.2686660179281843
+22
+0.03899179027408667
+32
+-0.021329497427588086
+13
+-1.2686660179281843
+23
+0.03899179027408667
+33
+-0.021329497427588086
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.2640660647138675
+20
+-0.07239046715696767
+30
+-0.021329497427588117
+11
+-1.2640660281999483
+21
+0.150374046197144
+31
+-0.021329497427588058
+12
+-1.2505796477668625
+22
+-0.1761822093199848
+32
+-0.021329497427588127
+13
+-1.2505796477668625
+23
+-0.1761822093199848
+33
+-0.021329497427588127
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-1.2505796477668625
+20
+-0.1761822093199848
+30
+-0.021329497427588127
+11
+-1.2640660281999483
+21
+0.150374046197144
+31
+-0.021329497427588058
+12
+-1.258406935484123
+22
+0.18950834630357194
+32
+-0.021329497427588044
+13
+-1.258406935484123
+23
+0.18950834630357194
+33
+-0.021329497427588044
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.2505796477668625
+20
+-0.1761822093199848
+30
+-0.021329497427588127
+11
+-1.258406935484123
+21
+0.18950834630357194
+31
+-0.021329497427588044
+12
+-1.250660927301903
+22
+0.2535397136991191
+32
+-0.021329497427588023
+13
+-1.250660927301903
+23
+0.2535397136991191
+33
+-0.021329497427588023
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.2505796477668625
+20
+-0.1761822093199848
+30
+-0.021329497427588127
+11
+-1.250660927301903
+21
+0.2535397136991191
+31
+-0.021329497427588023
+12
+-1.2291257442446226
+22
+0.34329376805461653
+32
+-0.021329497427588
+13
+-1.2291257442446226
+23
+0.34329376805461653
+33
+-0.021329497427588
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.2505796477668625
+20
+-0.1761822093199848
+30
+-0.021329497427588127
+11
+-1.2291257442446226
+21
+0.34329376805461653
+31
+-0.021329497427588
+12
+-1.2291258441147315
+22
+-0.26531020051043686
+32
+-0.021329497427588155
+13
+-1.2291258441147315
+23
+-0.26531020051043686
+33
+-0.021329497427588155
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-1.2291258441147315
+20
+-0.26531020051043686
+30
+-0.021329497427588155
+11
+-1.2291257442446226
+21
+0.34329376805461653
+31
+-0.021329497427588
+12
+-1.2011666950222017
+22
+-0.3337005154197999
+32
+-0.021329497427588197
+13
+-1.2011666950222017
+23
+-0.3337005154197999
+33
+-0.021329497427588197
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-1.2011666950222017
+20
+-0.3337005154197999
+30
+-0.021329497427588197
+11
+-1.2291257442446226
+21
+0.34329376805461653
+31
+-0.021329497427588
+12
+-1.2011665727838676
+22
+0.41168407379832106
+32
+-0.021329497427587975
+13
+-1.2011665727838676
+23
+0.41168407379832106
+33
+-0.021329497427587975
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.2011666950222017
+20
+-0.3337005154197999
+30
+-0.021329497427588197
+11
+-1.2011665727838676
+21
+0.41168407379832106
+31
+-0.021329497427587975
+12
+-1.1684015342793297
+22
+-0.37677893650277927
+32
+-0.02132949742758821
+13
+-1.1684015342793297
+23
+-0.37677893650277927
+33
+-0.02132949742758821
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-1.1684015342793297
+20
+-0.37677893650277927
+30
+-0.02132949742758821
+11
+-1.2011665727838676
+21
+0.41168407379832106
+31
+-0.021329497427587975
+12
+-1.168401397979206
+22
+0.45476248418163134
+32
+-0.021329497427587947
+13
+-1.168401397979206
+23
+0.45476248418163134
+33
+-0.021329497427587947
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.1684015342793297
+20
+-0.37677893650277927
+30
+-0.02132949742758821
+11
+-1.168401397979206
+21
+0.45476248418163134
+31
+-0.021329497427587947
+12
+-1.1668849574897702
+22
+-0.37682160620781435
+32
+-0.02132949742758821
+13
+-1.1668849574897702
+23
+-0.37682160620781435
+33
+-0.02132949742758821
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-1.1668849574897702
+20
+-0.37682160620781435
+30
+-0.02132949742758821
+11
+-1.168401397979206
+21
+0.45476248418163134
+31
+-0.021329497427587947
+12
+-1.1668849566578618
+22
+0.45602679034629234
+32
+-0.021329497427587964
+13
+-1.1668849566578618
+23
+0.45602679034629234
+33
+-0.021329497427587964
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.1668849574897702
+20
+-0.37682160620781435
+30
+-0.02132949742758821
+11
+-1.1668849566578618
+21
+0.45602679034629234
+31
+-0.021329497427587964
+12
+-1.1336673204778431
+22
+-0.39135622511284507
+32
+-0.02132949742758821
+13
+-1.1336673204778431
+23
+-0.39135622511284507
+33
+-0.02132949742758821
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-1.1336673204778431
+20
+-0.39135622511284507
+30
+-0.02132949742758821
+11
+-1.1668849566578618
+21
+0.45602679034629234
+31
+-0.021329497427587964
+12
+-1.1336673196459368
+22
+0.4692970973881342
+32
+-0.02132949742758796
+13
+-1.1336673196459368
+23
+0.4692970973881342
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.1336673204778431
+20
+-0.39135622511284507
+30
+-0.02132949742758821
+11
+-1.1336673196459368
+21
+0.4692970973881342
+31
+-0.02132949742758796
+12
+-1.1319509208062501
+22
+-0.3913562253941859
+32
+-0.02132949742758821
+13
+-1.1319509208062501
+23
+-0.3913562253941859
+33
+-0.02132949742758821
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-1.1319509208062501
+20
+-0.3913562253941859
+30
+-0.02132949742758821
+11
+-1.1336673196459368
+21
+0.4692970973881342
+31
+-0.02132949742758796
+12
+-1.1313553663027527
+22
+0.46969766418759396
+32
+-0.02132949742758796
+13
+-1.1313553663027527
+23
+0.46969766418759396
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.1319509208062501
+20
+-0.3913562253941859
+30
+-0.02132949742758821
+11
+-1.1313553663027527
+21
+0.46969766418759396
+31
+-0.02132949742758796
+12
+-1.1292764794541248
+22
+-0.3913562258325619
+32
+-0.02132949742758821
+13
+-1.1292764794541248
+23
+-0.3913562258325619
+33
+-0.02132949742758821
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-1.1292764794541248
+20
+-0.3913562258325619
+30
+-0.02132949742758821
+11
+-1.1313553663027527
+21
+0.46969766418759396
+31
+-0.02132949742758796
+12
+-0.7041341214652392
+22
+0.4697403390103124
+32
+-0.02132949742758796
+13
+-0.7041341214652392
+23
+0.4697403390103124
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-1.1292764794541248
+20
+-0.3913562258325619
+30
+-0.02132949742758821
+11
+-0.7041341214652392
+21
+0.4697403390103124
+31
+-0.02132949742758796
+12
+-0.583012265025729
+22
+-0.39135631537214516
+32
+-0.02132949742758821
+13
+-0.583012265025729
+23
+-0.39135631537214516
+33
+-0.02132949742758821
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-0.583012265025729
+20
+-0.39135631537214516
+30
+-0.02132949742758821
+11
+-0.7041341214652392
+21
+0.4697403390103124
+31
+-0.02132949742758796
+12
+-0.7010674590880783
+22
+0.4700344517163295
+32
+-0.02132949742758796
+13
+-0.7010674590880783
+23
+0.4700344517163295
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-0.583012265025729
+20
+-0.39135631537214516
+30
+-0.02132949742758821
+11
+-0.7010674590880783
+21
+0.4700344517163295
+31
+-0.02132949742758796
+12
+-0.40336837254389635
+22
+0.47003440299726207
+32
+-0.02132949742758796
+13
+-0.40336837254389635
+23
+0.47003440299726207
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-0.583012265025729
+20
+-0.39135631537214516
+30
+-0.02132949742758821
+11
+-0.40336837254389635
+21
+0.47003440299726207
+31
+-0.02132949742758796
+12
+-0.5782022063428369
+22
+-0.39139903017862127
+32
+-0.02132949742758821
+13
+-0.5782022063428369
+23
+-0.39139903017862127
+33
+-0.02132949742758821
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-0.5782022063428369
+20
+-0.39139903017862127
+30
+-0.02132949742758821
+11
+-0.40336837254389635
+21
+0.47003440299726207
+31
+-0.02132949742758796
+12
+-0.4478093070099276
+22
+-0.39135639905742076
+32
+-0.02132949742758821
+13
+-0.4478093070099276
+23
+-0.39135639905742076
+33
+-0.02132949742758821
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-0.4478093070099276
+20
+-0.39135639905742076
+30
+-0.02132949742758821
+11
+-0.40336837254389635
+21
+0.47003440299726207
+31
+-0.02132949742758796
+12
+-0.44530211084188664
+22
+-0.39135639947577183
+32
+-0.02132949742758821
+13
+-0.44530211084188664
+23
+-0.39135639947577183
+33
+-0.02132949742758821
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-0.44530211084188664
+20
+-0.39135639947577183
+30
+-0.02132949742758821
+11
+-0.40336837254389635
+21
+0.47003440299726207
+31
+-0.02132949742758796
+12
+-0.007740620010602495
+22
+-0.12015698930892682
+32
+-0.021329497427588134
+13
+-0.007740620010602495
+23
+-0.12015698930892682
+33
+-0.021329497427588134
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+-0.007740620010602495
+20
+-0.12015698930892682
+30
+-0.021329497427588134
+11
+-0.40336837254389635
+21
+0.47003440299726207
+31
+-0.02132949742758796
+12
+-0.2736178696594298
+22
+0.4700343811409351
+32
+-0.02132949742758796
+13
+-0.2736178696594298
+23
+0.4700343811409351
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-0.007740620010602495
+20
+-0.12015698930892682
+30
+-0.021329497427588134
+11
+-0.2736178696594298
+21
+0.4700343811409351
+31
+-0.02132949742758796
+12
+-0.27212184387072247
+22
+0.47001317722134817
+32
+-0.02132949742758796
+13
+-0.27212184387072247
+23
+0.47001317722134817
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-0.007740620010602495
+20
+-0.12015698930892682
+30
+-0.021329497427588134
+11
+-0.27212184387072247
+21
+0.47001317722134817
+31
+-0.02132949742758796
+12
+0.012874725889247651
+22
+0.46997054580095277
+32
+-0.02132949742758796
+13
+0.012874725889247651
+23
+0.46997054580095277
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+-0.007740620010602495
+20
+-0.12015698930892682
+30
+-0.021329497427588134
+11
+0.012874725889247651
+21
+0.46997054580095277
+31
+-0.02132949742758796
+12
+0.37713358643564576
+22
+0.11569951797501443
+32
+-0.021323120946165536
+13
+0.37713358643564576
+23
+0.11569951797501443
+33
+-0.021323120946165536
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.37713358643564576
+20
+0.11569951797501443
+30
+-0.021323120946165536
+11
+0.012874725889247651
+21
+0.46997054580095277
+31
+-0.02132949742758796
+12
+0.02923566660125987
+22
+0.4700131281459
+32
+-0.02132949742758796
+13
+0.02923566660125987
+23
+0.4700131281459
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.37713358643564576
+20
+0.11569951797501443
+30
+-0.021323120946165536
+11
+0.02923566660125987
+21
+0.4700131281459
+31
+-0.02132949742758796
+12
+0.30246749279966134
+22
+0.4700130823729538
+32
+-0.02132949742758796
+13
+0.30246749279966134
+23
+0.4700130823729538
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.37713358643564576
+20
+0.11569951797501443
+30
+-0.021323120946165536
+11
+0.30246749279966134
+21
+0.4700130823729538
+31
+-0.02132949742758796
+12
+0.30393240840636637
+22
+0.46999313439481716
+32
+-0.02132949742758796
+13
+0.30393240840636637
+23
+0.46999313439481716
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.37713358643564576
+20
+0.11569951797501443
+30
+-0.021323120946165536
+11
+0.30393240840636637
+21
+0.46999313439481716
+31
+-0.02132949742758796
+12
+0.37701750679978363
+22
+0.4699931231781628
+32
+-0.02132949742758796
+13
+0.37701750679978363
+23
+0.4699931231781628
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.37713358643564576
+20
+0.11569951797501443
+30
+-0.021323120946165536
+11
+0.37701750679978363
+21
+0.4699931231781628
+31
+-0.02132949742758796
+12
+0.3917065899222034
+22
+0.46999312076217903
+32
+-0.02132949742758796
+13
+0.3917065899222034
+23
+0.46999312076217903
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.37713358643564576
+20
+0.11569951797501443
+30
+-0.021323120946165536
+11
+0.3917065899222034
+21
+0.46999312076217903
+31
+-0.02132949742758796
+12
+0.50132984375442
+22
+0.11565962429931465
+32
+-0.021329497427588065
+13
+0.50132984375442
+23
+0.11565962429931465
+33
+-0.021329497427588065
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.50132984375442
+20
+0.11565962429931465
+30
+-0.021329497427588065
+11
+0.3917065899222034
+21
+0.46999312076217903
+31
+-0.02132949742758796
+12
+0.3943443042278616
+22
+0.4699505935168484
+32
+-0.02132949742758796
+13
+0.3943443042278616
+23
+0.4699505935168484
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.50132984375442
+20
+0.11565962429931465
+30
+-0.021329497427588065
+11
+0.3943443042278616
+21
+0.4699505935168484
+31
+-0.02132949742758796
+12
+0.40681163485900584
+22
+0.46999311827777523
+32
+-0.02132949742758796
+13
+0.40681163485900584
+23
+0.46999311827777523
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.50132984375442
+20
+0.11565962429931465
+30
+-0.021329497427588065
+11
+0.40681163485900584
+21
+0.46999311827777523
+31
+-0.02132949742758796
+12
+0.7268738831455794
+22
+0.4699930645936956
+32
+-0.02132949742758796
+13
+0.7268738831455794
+23
+0.4699930645936956
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+0.50132984375442
+20
+0.11565962429931465
+30
+-0.021329497427588065
+11
+0.7268738831455794
+21
+0.4699930645936956
+31
+-0.02132949742758796
+12
+0.5030290423438137
+22
+0.11565957927510673
+32
+-0.021329497427588065
+13
+0.5030290423438137
+23
+0.11565957927510673
+33
+-0.021329497427588065
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.5030290423438137
+20
+0.11565957927510673
+30
+-0.021329497427588065
+11
+0.7268738831455794
+21
+0.4699930645936956
+31
+-0.02132949742758796
+12
+0.5124547865828502
+22
+0.11566051068828076
+32
+-0.021329497427588065
+13
+0.5124547865828502
+23
+0.11566051068828076
+33
+-0.021329497427588065
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.5124547865828502
+20
+0.11566051068828076
+30
+-0.021329497427588065
+11
+0.7268738831455794
+21
+0.4699930645936956
+31
+-0.02132949742758796
+12
+0.5172420255570696
+22
+0.11566064969066137
+32
+-0.021329497427588065
+13
+0.5172420255570696
+23
+0.11566064969066137
+33
+-0.021329497427588065
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.5172420255570696
+20
+0.11566064969066137
+30
+-0.021329497427588065
+11
+0.7268738831455794
+21
+0.4699930645936956
+31
+-0.02132949742758796
+12
+0.5259410929604285
+22
+0.11566090227696957
+32
+-0.021329497427588065
+13
+0.5259410929604285
+23
+0.11566090227696957
+33
+-0.021329497427588065
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.5259410929604285
+20
+0.11566090227696957
+30
+-0.021329497427588065
+11
+0.7268738831455794
+21
+0.4699930645936956
+31
+-0.02132949742758796
+12
+0.5300600388642229
+22
+0.11566051068827854
+32
+-0.021329497427588065
+13
+0.5300600388642229
+23
+0.11566051068827854
+33
+-0.021329497427588065
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.5300600388642229
+20
+0.11566051068827854
+30
+-0.021329497427588065
+11
+0.7268738831455794
+21
+0.4699930645936956
+31
+-0.02132949742758796
+12
+1.1057685335055842
+22
+0.1156993301253959
+32
+-0.021329497427588065
+13
+1.1057685335055842
+23
+0.1156993301253959
+33
+-0.021329497427588065
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.1057685335055842
+20
+0.1156993301253959
+30
+-0.021329497427588065
+11
+0.7268738831455794
+21
+0.4699930645936956
+31
+-0.02132949742758796
+12
+0.7296300798328395
+22
+0.4696682231644226
+32
+-0.02132949742758796
+13
+0.7296300798328395
+23
+0.4696682231644226
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.1057685335055842
+20
+0.1156993301253959
+30
+-0.021329497427588065
+11
+0.7296300798328395
+21
+0.4696682231644226
+31
+-0.02132949742758796
+12
+1.0855657084141692
+22
+0.4696689313614164
+32
+-0.02132949742758796
+13
+1.0855657084141692
+23
+0.4696689313614164
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.1057685335055842
+20
+0.1156993301253959
+30
+-0.021329497427588065
+11
+1.0855657084141692
+21
+0.4696689313614164
+31
+-0.02132949742758796
+12
+1.0865919747182853
+22
+0.469670439906691
+32
+-0.02132949742758796
+13
+1.0865919747182853
+23
+0.469670439906691
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.1057685335055842
+20
+0.1156993301253959
+30
+-0.021329497427588065
+11
+1.0865919747182853
+21
+0.469670439906691
+31
+-0.02132949742758796
+12
+1.157159369973707
+22
+0.46962575188848055
+32
+-0.02132949742758796
+13
+1.157159369973707
+23
+0.46962575188848055
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.1057685335055842
+20
+0.1156993301253959
+30
+-0.021329497427588065
+11
+1.157159369973707
+21
+0.46962575188848055
+31
+-0.02132949742758796
+12
+1.1193597020926875
+22
+0.1156993272304514
+32
+-0.021329497427588065
+13
+1.1193597020926875
+23
+0.1156993272304514
+33
+-0.021329497427588065
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.1193597020926875
+20
+0.1156993272304514
+30
+-0.021329497427588065
+11
+1.157159369973707
+21
+0.46962575188848055
+31
+-0.02132949742758796
+12
+1.1386136044693458
+22
+0.11569932282059703
+32
+-0.021329497427588065
+13
+1.1386136044693458
+23
+0.11569932282059703
+33
+-0.021329497427588065
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.1386136044693458
+20
+0.11569932282059703
+30
+-0.021329497427588065
+11
+1.157159369973707
+21
+0.46962575188848055
+31
+-0.02132949742758796
+12
+1.1503381943269562
+22
+0.11569932003715266
+32
+-0.021329497427588065
+13
+1.1503381943269562
+23
+0.11569932003715266
+33
+-0.021329497427588065
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.1503381943269562
+20
+0.11569932003715266
+30
+-0.021329497427588065
+11
+1.157159369973707
+21
+0.46962575188848055
+31
+-0.02132949742758796
+12
+1.155791719027395
+22
+0.11569931869118599
+32
+-0.021329497427588065
+13
+1.155791719027395
+23
+0.11569931869118599
+33
+-0.021329497427588065
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.155791719027395
+20
+0.11569931869118599
+30
+-0.021329497427588065
+11
+1.157159369973707
+21
+0.46962575188848055
+31
+-0.02132949742758796
+12
+1.158085651441559
+22
+0.11569931808967426
+32
+-0.021329497427588065
+13
+1.158085651441559
+23
+0.11569931808967426
+33
+-0.021329497427588065
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.158085651441559
+20
+0.11569931808967426
+30
+-0.021329497427588065
+11
+1.157159369973707
+21
+0.46962575188848055
+31
+-0.02132949742758796
+12
+1.1591044450812846
+22
+0.4692998445383917
+32
+-0.02132949742758796
+13
+1.1591044450812846
+23
+0.4692998445383917
+33
+-0.02132949742758796
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.158085651441559
+20
+0.11569931808967426
+30
+-0.021329497427588065
+11
+1.1591044450812846
+21
+0.4692998445383917
+31
+-0.02132949742758796
+12
+1.159104517712921
+22
+0.11569931776640818
+32
+-0.021329497427588065
+13
+1.159104517712921
+23
+0.11569931776640818
+33
+-0.021329497427588065
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.159104517712921
+20
+0.11569931776640818
+30
+-0.021329497427588065
+11
+1.1591044450812846
+21
+0.4692998445383917
+31
+-0.02132949742758796
+12
+1.1886405422082358
+22
+0.4640412516089145
+32
+-0.021329497427587964
+13
+1.1886405422082358
+23
+0.4640412516089145
+33
+-0.021329497427587964
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.159104517712921
+20
+0.11569931776640818
+30
+-0.021329497427588065
+11
+1.1886405422082358
+21
+0.4640412516089145
+31
+-0.021329497427587964
+12
+1.1922941387017831
+22
+0.12173074383943339
+32
+-0.021329497427588044
+13
+1.1922941387017831
+23
+0.12173074383943339
+33
+-0.021329497427588044
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.1922941387017831
+20
+0.12173074383943339
+30
+-0.021329497427588044
+11
+1.1886405422082358
+21
+0.4640412516089145
+31
+-0.021329497427587964
+12
+1.1923382645753737
+22
+0.4633074583588208
+32
+-0.021329497427587964
+13
+1.1923382645753737
+23
+0.4633074583588208
+33
+-0.021329497427587964
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.1922941387017831
+20
+0.12173074383943339
+30
+-0.021329497427588044
+11
+1.1923382645753737
+21
+0.4633074583588208
+31
+-0.021329497427587964
+12
+1.2236774151144043
+22
+0.13952109683086134
+32
+-0.021329497427588037
+13
+1.2236774151144043
+23
+0.13952109683086134
+33
+-0.021329497427588037
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.2236774151144043
+20
+0.13952109683086134
+30
+-0.021329497427588037
+11
+1.1923382645753737
+21
+0.4633074583588208
+31
+-0.021329497427587964
+12
+1.219930606861509
+22
+0.4478937548149552
+32
+-0.021329497427587968
+13
+1.219930606861509
+23
+0.4478937548149552
+33
+-0.021329497427587968
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.2236774151144043
+20
+0.13952109683086134
+30
+-0.021329497427588037
+11
+1.219930606861509
+21
+0.4478937548149552
+31
+-0.021329497427587968
+12
+1.2238034110911722
+22
+0.4454575748968931
+32
+-0.021329497427587968
+13
+1.2238034110911722
+23
+0.4454575748968931
+33
+-0.021329497427587968
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.2236774151144043
+20
+0.13952109683086134
+30
+-0.021329497427588037
+11
+1.2238034110911722
+21
+0.4454575748968931
+31
+-0.021329497427587968
+12
+1.2504634291176997
+22
+0.16751202849710456
+32
+-0.02132949742758803
+13
+1.2504634291176997
+23
+0.16751202849710456
+33
+-0.02132949742758803
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.2504634291176997
+20
+0.16751202849710456
+30
+-0.02132949742758803
+11
+1.2238034110911722
+21
+0.4454575748968931
+31
+-0.021329497427587968
+12
+1.2507989254112186
+22
+0.4173719437487061
+32
+-0.021329497427587975
+13
+1.2507989254112186
+23
+0.4173719437487061
+33
+-0.021329497427587975
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.2504634291176997
+20
+0.16751202849710456
+30
+-0.02132949742758803
+11
+1.2507989254112186
+21
+0.4173719437487061
+31
+-0.021329497427587975
+12
+1.271159922480886
+22
+0.20436827456875706
+32
+-0.02132949742758802
+13
+1.271159922480886
+23
+0.20436827456875706
+33
+-0.02132949742758802
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.271159922480886
+20
+0.20436827456875706
+30
+-0.02132949742758802
+11
+1.2507989254112186
+21
+0.4173719437487061
+31
+-0.021329497427587975
+12
+1.2712475811496826
+22
+0.3809548188019898
+32
+-0.021329497427587985
+13
+1.2712475811496826
+23
+0.3809548188019898
+33
+-0.021329497427587985
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.271159922480886
+20
+0.20436827456875706
+30
+-0.02132949742758802
+11
+1.2712475811496826
+21
+0.3809548188019898
+31
+-0.021329497427587985
+12
+1.2841162643931592
+22
+0.24722978915362082
+32
+-0.021329497427588023
+13
+1.2841162643931592
+23
+0.24722978915362082
+33
+-0.021329497427588023
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+1.2841162643931592
+20
+0.24722978915362082
+30
+-0.021329497427588023
+11
+1.2712475811496826
+21
+0.3809548188019898
+31
+-0.021329497427587985
+12
+1.2841736058160016
+22
+0.3381150408717304
+32
+-0.021329497427588
+13
+1.2841736058160016
+23
+0.3381150408717304
+33
+-0.021329497427588
+70
+13
+  0
+3DFACE
+ 8
+palm
+10
+1.2841162643931592
+20
+0.24722978915362082
+30
+-0.021329497427588023
+11
+1.2841736058160016
+21
+0.3381150408717304
+31
+-0.021329497427588
+12
+1.288529285669313
+22
+0.2925487173065494
+32
+-0.02132949742758801
+13
+1.288529285669313
+23
+0.2925487173065494
+33
+-0.02132949742758801
+70
+1
+  0
+LINE
+ 8
+palm
+10
+-0.40336837254389635
+20
+0.47003440299726207
+30
+-0.02132949742758796
+11
+-0.4032641176830618
+21
+0.4693396416827257
+31
+-0.029987253266541992
+  0
+LINE
+ 8
+palm
+10
+0.012874725889247651
+20
+0.46997054580095277
+30
+-0.02132949742758796
+11
+0.012898304431331109
+21
+0.4692968438672974
+31
+-0.02998725868702286
+  0
+LINE
+ 8
+palm
+10
+0.02923566660125987
+20
+0.4700131281459
+30
+-0.02132949742758796
+11
+0.0293145314722294
+21
+0.4693395707776401
+31
+-0.029987250044254076
+  0
+LINE
+ 8
+palm
+10
+0.37701750679978363
+20
+0.4699931231781628
+30
+-0.02132949742758796
+11
+0.3767943786960426
+21
+0.4693395138213242
+31
+-0.02998724745586906
+  0
+LINE
+ 8
+palm
+10
+0.3917065899222034
+20
+0.46999312076217903
+30
+-0.02132949742758796
+11
+0.3915316238299338
+21
+0.46933951140570074
+31
+-0.029987247346090977
+  0
+LINE
+ 8
+palm
+10
+0.3943443042278616
+20
+0.4699505935168484
+30
+-0.02132949742758796
+11
+0.39417798635535983
+21
+0.4692968438672974
+31
+-0.02998725868702286
+  0
+LINE
+ 8
+palm
+10
+0.40681163485900584
+20
+0.46999311827777523
+30
+-0.02132949742758796
+11
+0.4066861946168403
+21
+0.4693395089216774
+31
+-0.029987247233204176
+  0
+LINE
+ 8
+palm
+10
+1.0855657084141692
+20
+0.4696689313614164
+30
+-0.02132949742758796
+11
+1.084906037085234
+21
+0.4693394175246698
+31
+-0.030006963059664236
+  0
+LINE
+ 8
+palm
+10
+1.0865919747182853
+20
+0.469670439906691
+30
+-0.02132949742758796
+11
+1.0859329585250228
+21
+0.46933955647594505
+31
+-0.030043162032831975
+  0
+3DFACE
+ 8
+palm
+10
+0.4285775499251552
+20
+0.11569951797502342
+30
+0.0998712621479301
+11
+0.37713358643564576
+21
+0.11569951797501443
+31
+-0.021323120946165536
+12
+0.50132984375442
+22
+0.11565962429931465
+32
+-0.021329497427588065
+13
+0.50132984375442
+23
+0.11565962429931465
+33
+-0.021329497427588065
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+0.45324313692173157
+20
+0.11569950085740732
+30
+0.10190305044442108
+11
+0.50132984375442
+21
+0.11565962429931465
+31
+-0.021329497427588065
+12
+0.5030290423438137
+22
+0.11565957927510673
+32
+-0.021329497427588065
+13
+0.5030290423438137
+23
+0.11565957927510673
+33
+-0.021329497427588065
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.50132984375442
+20
+0.11565962429931465
+30
+-0.021329497427588065
+11
+0.45324313692173157
+21
+0.11569950085740732
+31
+0.10190305044442108
+12
+0.4353642452976316
+22
+0.11569951797503464
+32
+0.11442537734154945
+13
+0.4353642452976316
+23
+0.11569951797503464
+33
+0.11442537734154945
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.7110686274472025
+20
+0.11569944251109132
+30
+0.07324212630582012
+11
+1.1057685335055842
+21
+0.1156993301253959
+31
+-0.021329497427588065
+12
+1.1193597020926875
+22
+0.1156993272304514
+32
+-0.021329497427588065
+13
+1.1193597020926875
+23
+0.1156993272304514
+33
+-0.021329497427588065
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.1057685335055842
+20
+0.1156993301253959
+30
+-0.021329497427588065
+11
+0.7110686274472025
+21
+0.11569944251109132
+31
+0.07324212630582012
+12
+0.5742711203227493
+22
+0.11569947036484796
+32
+0.06895221585191834
+13
+0.5742711203227493
+23
+0.11569947036484796
+33
+0.06895221585191834
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.8543131342530239
+20
+0.11569941919431881
+30
+0.11448043149811093
+11
+1.1193597020926875
+21
+0.1156993272304514
+31
+-0.021329497427588065
+12
+1.1386136044693458
+22
+0.11569932282059703
+32
+-0.021329497427588065
+13
+1.1386136044693458
+23
+0.11569932282059703
+33
+-0.021329497427588065
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.1193597020926875
+20
+0.1156993272304514
+30
+-0.021329497427588065
+11
+0.8543131342530239
+21
+0.11569941919431881
+31
+0.11448043149811093
+12
+0.7110686274472025
+22
+0.11569944251109132
+32
+0.07324212630582012
+13
+0.7110686274472025
+23
+0.11569944251109132
+33
+0.07324212630582012
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.9942427643243386
+20
+0.11569940200353146
+30
+0.18985680907938893
+11
+1.1386136044693458
+21
+0.11569932282059703
+31
+-0.021329497427588065
+12
+1.1503381943269562
+22
+0.11569932003715266
+32
+-0.021329497427588065
+13
+1.1503381943269562
+23
+0.11569932003715266
+33
+-0.021329497427588065
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.1386136044693458
+20
+0.11569932282059703
+30
+-0.021329497427588065
+11
+0.9942427643243386
+21
+0.11569940200353146
+31
+0.18985680907938893
+12
+0.8543131342530239
+22
+0.11569941919431881
+32
+0.11448043149811093
+13
+0.8543131342530239
+23
+0.11569941919431881
+33
+0.11448043149811093
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.5940743769374797
+20
+0.11569951797502342
+30
+1.5695940780014193
+11
+1.158085651441559
+21
+0.11569931808967426
+31
+-0.021329497427588065
+12
+1.159104517712921
+22
+0.11569931776640818
+32
+-0.021329497427588065
+13
+1.159104517712921
+23
+0.11569931776640818
+33
+-0.021329497427588065
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.158085651441559
+20
+0.11569931808967426
+30
+-0.021329497427588065
+11
+1.5940743769374797
+21
+0.11569951797502342
+31
+1.5695940780014193
+12
+1.3466706909373627
+22
+0.11569941023242802
+32
+0.703371831037376
+13
+1.3466706909373627
+23
+0.11569941023242802
+33
+0.703371831037376
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.37713358643564576
+20
+0.11569951797501443
+30
+-0.021323120946165536
+11
+-0.39603457201367
+21
+-0.3913563992408881
+31
+0.11999794324711321
+12
+-0.007740620010602495
+22
+-0.12015698930892682
+32
+-0.021329497427588134
+13
+-0.007740620010602495
+23
+-0.12015698930892682
+33
+-0.021329497427588134
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-0.39603457201367
+20
+-0.3913563992408881
+30
+0.11999794324711321
+11
+0.37713358643564576
+21
+0.11569951797501443
+31
+-0.021323120946165536
+12
+-0.33918758135853855
+22
+-0.3913563992408814
+32
+0.26808941696355065
+13
+-0.33918758135853855
+23
+-0.3913563992408814
+33
+0.26808941696355065
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.226889266259492
+20
+0.11569939018870201
+30
+0.4205002886903231
+11
+1.155791719027395
+21
+0.11569931869118599
+31
+-0.021329497427588065
+12
+1.158085651441559
+22
+0.11569931808967426
+32
+-0.021329497427588065
+13
+1.158085651441559
+23
+0.11569931808967426
+33
+-0.021329497427588065
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.155791719027395
+20
+0.11569931869118599
+30
+-0.021329497427588065
+11
+1.226889266259492
+21
+0.11569939018870201
+31
+0.4205002886903231
+12
+1.1213215446161924
+22
+0.11569939211025415
+32
+0.2942344834828935
+13
+1.1213215446161924
+23
+0.11569939211025415
+33
+0.2942344834828935
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+-0.4478093070099276
+21
+-0.39135639905742076
+31
+-0.02132949742758821
+12
+-0.44530211084188664
+22
+-0.39135639947577183
+32
+-0.02132949742758821
+13
+-0.44530211084188664
+23
+-0.39135639947577183
+33
+-0.02132949742758821
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-0.4478093070099276
+20
+-0.39135639905742076
+30
+-0.02132949742758821
+11
+0.5001766908782079
+21
+-0.39135649292046104
+31
+3.4231078613655503
+12
+-0.4974274817566946
+22
+-0.39135632940056486
+32
+3.2656518472615215
+13
+-0.4974274817566946
+23
+-0.39135632940056486
+33
+3.2656518472615215
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.1213215446161924
+20
+0.11569939211025415
+30
+0.2942344834828935
+11
+1.1503381943269562
+21
+0.11569932003715266
+31
+-0.021329497427588065
+12
+1.155791719027395
+22
+0.11569931869118599
+32
+-0.021329497427588065
+13
+1.155791719027395
+23
+0.11569931869118599
+33
+-0.021329497427588065
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.1503381943269562
+20
+0.11569932003715266
+30
+-0.021329497427588065
+11
+1.1213215446161924
+21
+0.11569939211025415
+31
+0.2942344834828935
+12
+0.9942427643243386
+22
+0.11569940200353146
+32
+0.18985680907938893
+13
+0.9942427643243386
+23
+0.11569940200353146
+33
+0.18985680907938893
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.4736624457345466
+20
+-0.3913561693833688
+30
+2.907315266711703
+11
+-1.1336673204778431
+21
+-0.39135622511284507
+31
+-0.02132949742758821
+12
+-1.1319509208062501
+22
+-0.3913562253941859
+32
+-0.02132949742758821
+13
+-1.1319509208062501
+23
+-0.3913562253941859
+33
+-0.02132949742758821
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.1336673204778431
+20
+-0.39135622511284507
+30
+-0.02132949742758821
+11
+-1.4736624457345466
+21
+-0.3913561693833688
+31
+2.907315266711703
+12
+-1.5933228224247524
+22
+-0.39135614976952593
+32
+1.4382238099822164
+13
+-1.5933228224247524
+23
+-0.39135614976952593
+33
+1.4382238099822164
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-0.4974274817566946
+20
+-0.39135632940056486
+30
+3.2656518472615215
+11
+-1.1319509208062501
+21
+-0.3913562253941859
+31
+-0.02132949742758821
+12
+-1.1292764794541248
+22
+-0.3913562258325619
+32
+-0.02132949742758821
+13
+-1.1292764794541248
+23
+-0.3913562258325619
+33
+-0.02132949742758821
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.1319509208062501
+20
+-0.3913562253941859
+30
+-0.02132949742758821
+11
+-0.4974274817566946
+21
+-0.39135632940056486
+31
+3.2656518472615215
+12
+-1.4736624457345466
+22
+-0.3913561693833688
+32
+2.907315266711703
+13
+-1.4736624457345466
+23
+-0.3913561693833688
+33
+2.907315266711703
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.5742711203227493
+20
+0.11569947036484796
+30
+0.06895221585191834
+11
+0.5030290423438137
+21
+0.11565957927510673
+31
+-0.021329497427588065
+12
+0.5124547865828502
+22
+0.11566051068828076
+32
+-0.021329497427588065
+13
+0.5124547865828502
+23
+0.11566051068828076
+33
+-0.021329497427588065
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.5030290423438137
+20
+0.11565957927510673
+30
+-0.021329497427588065
+11
+0.5742711203227493
+21
+0.11569947036484796
+31
+0.06895221585191834
+12
+0.45324313692173157
+22
+0.11569950085740732
+32
+0.10190305044442108
+13
+0.45324313692173157
+23
+0.11569950085740732
+33
+0.10190305044442108
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.70094493989614
+20
+0.2541658577595415
+30
+1.4087246449502895
+11
+-1.2291257442446226
+21
+0.34329376805461653
+31
+-0.021329497427588
+12
+-1.250660927301903
+22
+0.2535397136991191
+32
+-0.021329497427588023
+13
+-1.250660927301903
+23
+0.2535397136991191
+33
+-0.021329497427588023
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.2291257442446226
+20
+0.34329376805461653
+30
+-0.021329497427588
+11
+-1.70094493989614
+21
+0.2541658577595415
+31
+1.4087246449502895
+12
+-1.6811958793467983
+22
+0.34329384219633086
+32
+1.4141378425934268
+13
+-1.6811958793467983
+23
+0.34329384219633086
+33
+1.4141378425934268
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.4285775499251552
+20
+0.11569951797502342
+30
+0.0998712621479301
+11
+-0.33918758135853855
+21
+-0.3913563992408814
+31
+0.26808941696355065
+12
+0.37713358643564576
+22
+0.11569951797501443
+32
+-0.021323120946165536
+13
+0.37713358643564576
+23
+0.11569951797501443
+33
+-0.021323120946165536
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-0.33918758135853855
+20
+-0.3913563992408814
+30
+0.26808941696355065
+11
+0.4285775499251552
+21
+0.11569951797502342
+31
+0.0998712621479301
+12
+-0.27720690245551616
+22
+-0.3913563992408904
+32
+0.4141067459925812
+13
+-0.27720690245551616
+23
+-0.3913563992408904
+33
+0.4141067459925812
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.625486635239021
+20
+-0.37669239221898876
+30
+1.4294077340431905
+11
+-1.2011666950222017
+21
+-0.3337005154197999
+31
+-0.021329497427588197
+12
+-1.1684015342793297
+22
+-0.37677893650277927
+32
+-0.02132949742758821
+13
+-1.1684015342793297
+23
+-0.37677893650277927
+33
+-0.02132949742758821
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.2011666950222017
+20
+-0.3337005154197999
+30
+-0.021329497427588197
+11
+-1.625486635239021
+21
+-0.37669239221898876
+31
+1.4294077340431905
+12
+-1.65545853255605
+22
+-0.333700440955652
+32
+1.421192459110173
+13
+-1.65545853255605
+23
+-0.333700440955652
+33
+1.421192459110173
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.65545853255605
+20
+-0.333700440955652
+30
+1.421192459110173
+11
+-1.2291258441147315
+21
+-0.26531020051043686
+31
+-0.021329497427588155
+12
+-1.2011666950222017
+22
+-0.3337005154197999
+32
+-0.021329497427588197
+13
+-1.2011666950222017
+23
+-0.3337005154197999
+33
+-0.021329497427588197
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.2291258441147315
+20
+-0.26531020051043686
+30
+-0.021329497427588155
+11
+-1.65545853255605
+21
+-0.333700440955652
+31
+1.421192459110173
+12
+-1.6811959791046571
+22
+-0.2653101264104666
+32
+1.4141378425934237
+13
+-1.6811959791046571
+23
+-0.2653101264104666
+33
+1.4141378425934237
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.6811959791046571
+20
+-0.2653101264104666
+30
+1.4141378425934237
+11
+-1.2505796477668625
+21
+-0.1761822093199848
+31
+-0.021329497427588127
+12
+-1.2291258441147315
+22
+-0.26531020051043686
+32
+-0.021329497427588155
+13
+-1.2291258441147315
+23
+-0.26531020051043686
+33
+-0.021329497427588155
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.2505796477668625
+20
+-0.1761822093199848
+30
+-0.021329497427588127
+11
+-1.6811959791046571
+21
+-0.2653101264104666
+31
+1.4141378425934237
+12
+-1.7009450104355979
+22
+-0.17618213549941947
+32
+1.4087246449502893
+13
+-1.7009450104355979
+23
+-0.17618213549941947
+33
+1.4087246449502893
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7009450104355979
+20
+-0.17618213549941947
+30
+1.4087246449502893
+11
+-1.2640660647138675
+21
+-0.07239046715696767
+31
+-0.021329497427588117
+12
+-1.2505796477668625
+22
+-0.1761822093199848
+32
+-0.021329497427588127
+13
+-1.2505796477668625
+23
+-0.1761822093199848
+33
+-0.021329497427588127
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.2640660647138675
+20
+-0.07239046715696767
+30
+-0.021329497427588117
+11
+-1.7009450104355979
+21
+-0.17618213549941947
+31
+1.4087246449502893
+12
+-1.7133597627005268
+22
+-0.07239039351207949
+32
+1.405321766654406
+13
+-1.7133597627005268
+23
+-0.07239039351207949
+33
+1.405321766654406
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.7148013652171186
+20
+-0.2589393880700495
+30
+0.36354132201196915
+11
+0.4353642452976316
+21
+0.11569951797503464
+31
+0.11442537734154945
+12
+0.45324313692173157
+22
+0.11569950085740732
+32
+0.10190305044442108
+13
+0.45324313692173157
+23
+0.11569950085740732
+33
+0.10190305044442108
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.4353642452976316
+20
+0.11569951797503464
+30
+0.11442537734154945
+11
+0.7148013652171186
+21
+-0.2589393880700495
+31
+0.36354132201196915
+12
+0.40683149306505695
+22
+0.08212027273578515
+32
+0.1742805040831692
+13
+0.40683149306505695
+23
+0.08212027273578515
+33
+0.1742805040831692
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.40683149306505695
+20
+0.08212027273578515
+30
+0.1742805040831692
+11
+0.7148013652171186
+21
+-0.2589393880700495
+31
+0.36354132201196915
+12
+0.3919244872289036
+22
+0.06457671434803919
+32
+0.2055519607021757
+13
+0.3919244872289036
+23
+0.06457671434803919
+33
+0.2055519607021757
+70
+3
+  0
+3DFACE
+ 8
+palm
+10
+0.3919244872289036
+20
+0.06457671434803919
+30
+0.2055519607021757
+11
+0.7148013652171186
+21
+-0.2589393880700495
+31
+0.36354132201196915
+12
+0.6154331324746154
+22
+-0.25556244191651595
+32
+0.4291290051087077
+13
+0.6154331324746154
+23
+-0.25556244191651595
+33
+0.4291290051087077
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.2851012666870065
+20
+0.5693393649383878
+30
+2.603406296512527
+11
+1.1591044450812846
+21
+0.4692998445383917
+31
+-0.02132949742758796
+12
+1.157159369973707
+22
+0.46962575188848055
+32
+-0.02132949742758796
+13
+1.157159369973707
+23
+0.46962575188848055
+33
+-0.02132949742758796
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+1.1591044450812846
+20
+0.4692998445383917
+30
+-0.02132949742758796
+11
+1.2851012666870065
+21
+0.5693393649383878
+31
+2.603406296512527
+12
+1.5940745180163998
+22
+0.4698512386274375
+32
+1.569594078001374
+13
+1.5940745180163998
+23
+0.4698512386274375
+33
+1.569594078001374
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.4450700509834469
+20
+0.6693395026301509
+30
+2.619224993234204
+11
+0.7296300798328395
+21
+0.4696682231644226
+31
+-0.02132949742758796
+12
+0.7268738831455794
+22
+0.4699930645936956
+32
+-0.02132949742758796
+13
+0.7268738831455794
+23
+0.4699930645936956
+33
+-0.02132949742758796
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.7296300798328395
+20
+0.4696682231644226
+30
+-0.02132949742758796
+11
+0.4450700509834469
+21
+0.6693395026301509
+31
+2.619224993234204
+12
+1.2851012666870065
+22
+0.5693393649383878
+32
+2.603406296512527
+13
+1.2851012666870065
+23
+0.5693393649383878
+33
+2.603406296512527
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.005897113385843644
+20
+0.6693395746160492
+30
+2.540767132815593
+11
+0.30393240840636637
+21
+0.46999313439481716
+31
+-0.02132949742758796
+12
+0.30246749279966134
+22
+0.4700130823729538
+32
+-0.02132949742758796
+13
+0.30246749279966134
+23
+0.4700130823729538
+33
+-0.02132949742758796
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+0.30393240840636637
+20
+0.46999313439481716
+30
+-0.02132949742758796
+11
+0.005897113385843644
+21
+0.6693395746160492
+31
+2.540767132815593
+12
+0.4450700509834469
+22
+0.6693395026301509
+32
+2.619224993234204
+13
+0.4450700509834469
+23
+0.6693395026301509
+33
+2.619224993234204
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7175941910489623
+20
+0.038991863859061116
+30
+1.404161108238109
+11
+-1.2640660281999483
+21
+0.150374046197144
+31
+-0.021329497427588058
+12
+-1.2686660179281843
+22
+0.03899179027408667
+32
+-0.021329497427588086
+13
+-1.2686660179281843
+23
+0.03899179027408667
+33
+-0.021329497427588086
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.2640660281999483
+20
+0.150374046197144
+30
+-0.021329497427588058
+11
+-1.7175941910489623
+21
+0.038991863859061116
+31
+1.404161108238109
+12
+-1.7133597261865965
+22
+0.15037411984202997
+32
+1.4053217666544113
+13
+-1.7133597261865965
+23
+0.15037411984202997
+33
+1.4053217666544113
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.7133597627005268
+20
+-0.07239039351207949
+30
+1.405321766654406
+11
+-1.2686660179281843
+21
+0.03899179027408667
+31
+-0.021329497427588086
+12
+-1.2640660647138675
+22
+-0.07239046715696767
+32
+-0.021329497427588117
+13
+-1.2640660647138675
+23
+-0.07239046715696767
+33
+-0.021329497427588117
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.2686660179281843
+20
+0.03899179027408667
+30
+-0.021329497427588086
+11
+-1.7133597627005268
+21
+-0.07239039351207949
+31
+1.405321766654406
+12
+-1.7175941910489623
+22
+0.038991863859061116
+32
+1.404161108238109
+13
+-1.7175941910489623
+23
+0.038991863859061116
+33
+1.404161108238109
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-0.433275824211661
+20
+0.6693396466020395
+30
+2.4623092723969795
+11
+-0.27212184387072247
+21
+0.47001317722134817
+31
+-0.02132949742758796
+12
+-0.2736178696594298
+22
+0.4700343811409351
+32
+-0.02132949742758796
+13
+-0.2736178696594298
+23
+0.4700343811409351
+33
+-0.02132949742758796
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-0.27212184387072247
+20
+0.47001317722134817
+30
+-0.02132949742758796
+11
+-0.433275824211661
+21
+0.6693396466020395
+31
+2.4623092723969795
+12
+0.005897113385843644
+22
+0.6693395746160492
+32
+2.540767132815593
+13
+0.005897113385843644
+23
+0.6693395746160492
+33
+2.540767132815593
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.2344292513491493
+20
+0.5693397779211644
+30
+2.1309506849853554
+11
+-0.7010674590880783
+21
+0.4700344517163295
+31
+-0.02132949742758796
+12
+-0.7041341214652392
+22
+0.4697403390103124
+32
+-0.02132949742758796
+13
+-0.7041341214652392
+23
+0.4697403390103124
+33
+-0.02132949742758796
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-0.7010674590880783
+20
+0.4700344517163295
+30
+-0.02132949742758796
+11
+-1.2344292513491493
+21
+0.5693397779211644
+31
+2.1309506849853554
+12
+-0.433275824211661
+22
+0.6693396466020395
+32
+2.4623092723969795
+13
+-0.433275824211661
+23
+0.6693396466020395
+33
+2.4623092723969795
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.5933226813458456
+20
+0.4693398367483087
+30
+1.438223809982218
+11
+-1.1313553663027527
+21
+0.46969766418759396
+31
+-0.02132949742758796
+12
+-1.1336673196459368
+22
+0.4692970973881342
+32
+-0.02132949742758796
+13
+-1.1336673196459368
+23
+0.4692970973881342
+33
+-0.02132949742758796
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.1313553663027527
+20
+0.46969766418759396
+30
+-0.02132949742758796
+11
+-1.5933226813458456
+21
+0.4693398367483087
+31
+1.438223809982218
+12
+-1.2344292513491493
+22
+0.5693397779211644
+32
+2.1309506849853554
+13
+-1.2344292513491493
+23
+0.5693397779211644
+33
+2.1309506849853554
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.6811958793467983
+20
+0.34329384219633086
+30
+1.4141378425934268
+11
+-1.2011665727838676
+21
+0.41168407379832106
+31
+-0.021329497427587975
+12
+-1.2291257442446226
+22
+0.34329376805461653
+32
+-0.021329497427588
+13
+-1.2291257442446226
+23
+0.34329376805461653
+33
+-0.021329497427588
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.2011665727838676
+20
+0.41168407379832106
+30
+-0.021329497427587975
+11
+-1.6811958793467983
+21
+0.34329384219633086
+31
+1.4141378425934268
+12
+-1.6554584103781642
+22
+0.4116841483041124
+32
+1.4211924591101657
+13
+-1.6554584103781642
+23
+0.4116841483041124
+33
+1.4211924591101657
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.6554584103781642
+20
+0.4116841483041124
+30
+1.4211924591101657
+11
+-1.168401397979206
+21
+0.45476248418163134
+31
+-0.021329497427587947
+12
+-1.2011665727838676
+22
+0.41168407379832106
+32
+-0.021329497427587975
+13
+-1.2011665727838676
+23
+0.41168407379832106
+33
+-0.021329497427587975
+70
+1
+  0
+3DFACE
+ 8
+palm
+10
+-1.168401397979206
+20
+0.45476248418163134
+30
+-0.021329497427587947
+11
+-1.6554584103781642
+21
+0.4116841483041124
+31
+1.4211924591101657
+12
+-1.6254864989672675
+22
+0.4546760897419495
+32
+1.4294077340431952
+13
+-1.6254864989672675
+23
+0.4546760897419495
+33
+1.4294077340431952
+70
+1
+  0
+LINE
+ 8
+palm
+10
+1.1567374333163143
+20
+0.11569931667688083
+30
+-0.02998722460508882
+11
+1.1057685335055842
+21
+0.1156993301253959
+31
+-0.021329497427588065
+  0
+LINE
+ 8
+palm
+10
+-0.4476786151194132
+20
+-0.3913563992408948
+30
+-0.029987248507749635
+11
+-0.4478093070099276
+21
+-0.39135639905742076
+31
+-0.02132949742758821
+  0
+3DFACE
+ 8
+palm
+10
+0.5001766908782079
+20
+-0.39135649292046104
+30
+3.4231078613655503
+11
+-0.39603457201367
+21
+-0.3913563992408881
+31
+0.11999794324711321
+12
+-0.33918758135853855
+22
+-0.3913563992408814
+32
+0.26808941696355065
+13
+-0.33918758135853855
+23
+-0.3913563992408814
+33
+0.26808941696355065
+70
+0
+  0
+3DFACE
+ 8
+palm
+10
+1.5940743769374797
+20
+0.11569951797502342
+30
+1.5695940780014193
+11
+1.1922941387017831
+21
+0.12173074383943339
+31
+-0.021329497427588044
+12
+1.6267999741316135
+22
+0.12174651827402361
+32
+1.5677580014049102
+13
+1.6267999741316135
+23
+0.12174651827402361
+33
+1.5677580014049102
+70
+0
+ 0
+ENDSEC
+ 0
+EOF
diff --git a/hacks/glx/handsy.man b/hacks/glx/handsy.man
new file mode 100644 (file)
index 0000000..c8143db
--- /dev/null
@@ -0,0 +1,76 @@
+.TH XScreenSaver 1 "" "X Version 11"
+.SH NAME
+handsy - some hands.
+.SH SYNOPSIS
+.B handsy
+[\-display \fIhost:display.screen\fP]
+[\-visual \fIvisual\fP]
+[\-window]
+[\-root]
+[\-delay \fInumber\fP]
+[\-speed \fInumber\fP]
+[\-count \fInumber\fP]
+[\-no-wander]
+[\-no-spin]
+[\-no-front]
+[\-wireframe]
+[\-fps]
+.SH DESCRIPTION
+A set of robotic hands communicate non-verbally.
+.SH OPTIONS
+.TP 8
+.B \-visual \fIvisual\fP
+Specify which visual to use.  Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-window
+Draw on a newly-created window.  This is the default.
+.TP 8
+.B \-root
+Draw on the root window.
+.TP 8
+.B \-delay \fInumber\fP
+Per-frame delay, in microseconds.  Default: 30000 (0.03 seconds).
+.TP 8
+.B \-speed \fInumber\fP
+Animation speed.  2.0 means twice as fast, 0.5 means half as fast.
+.TP 8
+.B \-count \fInumber\fP
+Number of hands.  1 - 50.  Default: 2.
+.TP 8
+.B \-wander | \-no-wander
+Whether the hands should wander around the screen.
+.TP 8
+.B \-spin | \-no-spin
+Whether the object should spin.
+.TP 8
+.B \-front | \-no-front
+Whether to spin all the way around. Default: no.
+.TP 8
+.B \-wireframe | \-no-wireframe
+Render in wireframe instead of solid.
+.TP 8
+.B \-fps | \-no-fps
+Whether to show a frames-per-second display at the bottom of the screen.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
+.SH COPYRIGHT
+Copyright \(co 2018 by 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.
+.SH AUTHOR
+Jamie Zawinski.
diff --git a/hacks/glx/handsy_anim.h b/hacks/glx/handsy_anim.h
new file mode 100644 (file)
index 0000000..f56ae36
--- /dev/null
@@ -0,0 +1,805 @@
+/* handsy, Copyright (c) 2018 Jamie Zawinski <jwz@jwz.org>
+ *
+ * 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.
+ *
+ * Handsy's various animation key-frames.  I made these by "hand" with -debug.
+ *
+ * I considered using the Leap Motion Controller API to snapshot real hands,
+ * but that device is crap at detecting poses with any precision.
+ */
+
+#ifndef __HANDSY_ANIM__
+#define __HANDSY_ANIM__
+
+/* For reference:
+
+   hand { joint { thumb  { distal, proximal, metacarpal, 0 }
+                  index  { distal, intermediate, proximal, metacarpal }
+                  middle { distal, intermediate, proximal, metacarpal }
+                  ring   { distal, intermediate, proximal, metacarpal }
+                  pinky  { distal, intermediate, proximal, metacarpal }}
+           base  { thumb, index, middle, ring, pinky }
+           wrist { Z, X, rot }
+           pos   { X, Y, Z }}
+   duration, pause
+   pos[3], rot[3]
+ */
+
+/**************************************************************************/
+
+#define NNN 1.8
+
+static const hand open_palm = {
+  {{ 0.20, 0.20, 0.20, 0 },
+   { 0, 0, 0, 0 },
+   { 0, 0, 0, 0 },
+   { 0, 0, 0, 0 },
+   { 0, 0, 0, 0 }},
+  { 0, 0, 0, 0, 0 },
+  { 0, 0, 0 },
+  { 0, 0, 0 },
+  True
+};
+
+static const hand closed_hand = {
+  {{ 0.86, 1.60, 0, 0 },
+   { 1.60, 1.60, 1.60, 0 },
+   { 1.60, 1.60, 1.60, 0 },
+   { 1.60, 1.60, 1.60, 0 },
+   { 1.60, 1.60, 1.60, 0 }},
+  { -1.70, 0, 0, 0, 0 },
+  { 0.78, 0, 0 },
+  { 0, 0, 0 },
+  True
+};
+
+static const hand closed_flat = {
+  {{ 0, 0, 0, 0 },
+   { 0, 0, 0, 0 },
+   { 0, 0, 0, 0 },
+   { 0, 0, 0, 0 },
+   { 0, 0, 0, 0 }},
+  { 0, 0, 0, 0, 0 },
+  { 1.68, 0, 0 },
+  { 0, 0, -0.08 },
+  True
+};
+
+static const hand open_wide = {
+  {{ 0, 0, 0, 0 },
+   { 0, 0, 0, 0 },
+   { 0, 0, 0, 0 },
+   { 0, 0, 0, 0 },
+   { 0, 0, 0, 0 }},
+  { 0, -0.25, -0.08, 0.08, 0.25 },
+  { 0, 0, 0 },
+  { 0, 0, 0 },
+  True
+};
+
+static const hand_anim closed_flat_anim[] = {
+  { &closed_flat, NNN, 0, { 0, 0, 0 }, { 0, 0, 0 }},
+  { 0, }};
+
+static const hand_anim hidden_anim[] = {
+  { &closed_flat, NNN, 0, { 0, 0, -0.5 }, { 0, 0, 0 }},
+  { 0, }};
+
+static const hand_anim wave_anim[] = {
+  { &open_palm, NNN, 0.5, { -0.1, 0, 0 }, { 0, 0, 0 }},
+  { &open_palm, 0.05, 0, { -0.1, 0, 0 }, { 0, -0.35, 0 }},
+  { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0,  0.90, 0 }},
+  { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0, -0.35, 0 }},
+  { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0,  0.90, 0 }},
+  { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0, -0.35, 0 }},
+  { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0,  0.90, 0 }},
+  { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0, -0.35, 0 }},
+  { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0,  0.90, 0 }},
+  { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0, -0.35, 0 }},
+  { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0,  0.90, 0 }},
+  { &open_palm, 0.10, 0, { -0.1, 0, 0 }, { 0, -0.35, 0 }},
+  { &open_palm, 0.05, 1, { -0.1, 0, 0 }, { 0, 0, 0 }},
+  { 0, }};
+
+static const hand_anim wave2_anim[] = {
+  { &open_palm, NNN, 0, { 0, 0, 0 }, { 0, 0, 0 }},
+  { &open_palm, 0.2, 0, { 0, 0, 0 }, { 0,   0, 0 }},
+  { &open_palm, 0.2, 0, { 0, 0, 0 }, { 1.3, 0, 0 }},
+  { &open_palm, 0.2, 0, { 0, 0, 0 }, { 0,   0, 0 }},
+  { &open_palm, 0.2, 0, { 0, 0, 0 }, { 1.3, 0, 0 }},
+  { &open_palm, 0.2, 0, { 0, 0, 0 }, { 0,   0, 0 }},
+  { &open_palm, 0.2, 0, { 0, 0, 0 }, { 1.3, 0, 0 }},
+  { &open_palm, 0.2, 1, { 0, 0, 0 }, { 0,   0.0, 0 }},
+  { 0, }};
+
+static const hand_anim jazzhands_anim[] = {
+  { &open_palm, NNN, 0.5, { -0.1, 0, 0 }, { 0, 0, 0 }},
+  { &open_palm, 0.04, 0, { -0.1, 0, 0 }, { 0, 0.35, -M_PI/4 }},
+  { &open_palm, 0.04, 0, { -0.1, 0, 0.1 }, { 0, 0.90, 0 }},
+  { &open_palm, 0.04, 0, { -0.1, 0, 0.2 }, { 0, 0.35, -M_PI/4 }},
+  { &open_palm, 0.04, 0, { -0.1, 0, 0.3 }, { 0, 0.90, 0 }},
+  { &open_palm, 0.04, 0, { -0.1, 0, 0.4 }, { 0, 0.35, -M_PI/4 }},
+  { &open_palm, 0.04, 0, { -0.1, 0, 0.4 }, { 0, 0.90, 0 }},
+  { &open_palm, 0.04, 0, { -0.1, 0, 0.4 }, { 0, 0.35, -M_PI/4 }},
+  { &open_palm, 0.04, 0, { -0.1, 0, 0.4 }, { 0, 0.90, 0 }},
+  { &open_palm, 0.04, 0, { -0.1, 0, 0.3 }, { 0, 0.35, -M_PI/4 }},
+  { &open_palm, 0.04, 0, { -0.1, 0, 0.2 }, { 0, 0.90, 0 }},
+  { &open_palm, 0.04, 0, { -0.1, 0, 0.1 }, { 0, 0.35, -M_PI/4 }},
+  { &open_palm, 0.04, 1, { -0.1, 0, 0   }, { 0, 0.35, -M_PI/4 }},
+  { 0, }};
+
+/**************************************************************************/
+
+static const hand hand_clap1 = {
+  {{ 0.20, 0.20, 0.20, 0 },
+   { 0, -0.10, -0.10, 0 },
+   { 0, -0.10, -0.10, 0 },
+   { 0, -0.10, -0.10, 0 },
+   { 0, -0.10, -0.10, 0 }},
+  { 0, 0, 0, 0, 0 },
+  { 0, 0.9, 0 },
+  { 0, 0, 0 },
+  True
+};
+
+static const hand_anim clap_anim[] = {
+  { &open_palm,  NNN, 0,    { -0.3, 0, 0 }, { 0,    0, -M_PI/2 }},
+  { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+  { &open_palm,  0.1, 0,    { -0.3, 0, 0 }, { 0,    0, -M_PI/2 }},
+  { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+  { &open_palm,  0.1, 0,    { -0.3, 0, 0 }, { 0,    0, -M_PI/2 }},
+  { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+  { &open_palm,  0.1, 0,    { -0.3, 0, 0 }, { 0,    0, -M_PI/2 }},
+  { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+  { &open_palm,  0.1, 0,    { -0.3, 0, 0 }, { 0,    0, -M_PI/2 }},
+  { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+  { &open_palm,  0.1, 0,    { -0.3, 0, 0 }, { 0,    0, -M_PI/2 }},
+  { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+  { &open_palm,  0.1, 0,    { -0.3, 0, 0 }, { 0,    0, -M_PI/2 }},
+  { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+  { &open_palm,  0.1, 0,    { -0.3, 0, 0 }, { 0,    0, -M_PI/2 }},
+  { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+  { &open_palm,  0.1, 0,    { -0.3, 0, 0 }, { 0,    0, -M_PI/2 }},
+  { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+  { &open_palm,  0.1, 0,    { -0.3, 0, 0 }, { 0,    0, -M_PI/2 }},
+  { &hand_clap1, 0.1, 0.05, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+  { &open_palm,  0.1, 0,    { -0.3, 0, 0 }, { 0,    0, -M_PI/2 }},
+  { 0, }};
+
+static const hand_anim slow_clap_anim[] = {
+  { &open_palm,  NNN, 1, { -0.3, 0, 0 }, { 0,    0, -M_PI/2 }},
+  { &hand_clap1, 0.1, 1, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+  { &open_palm,  0.4, 0, { -0.3, 0, 0 }, { 0,    0, -M_PI/2 }},
+  { &hand_clap1, 0.1, 1, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+  { &open_palm,  0.4, 0, { -0.3, 0, 0 }, { 0,    0, -M_PI/2 }},
+  { &hand_clap1, 0.1, 1, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+  { &open_palm,  0.4, 0, { -0.3, 0, 0 }, { 0,    0, -M_PI/2 }},
+  { &hand_clap1, 0.1, 1, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+  { &open_palm,  0.4, 0, { -0.3, 0, 0 }, { 0,    0, -M_PI/2 }},
+  { &hand_clap1, 0.1, 1, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+  { &open_palm,  0.4, 0, { -0.3, 0, 0 }, { 0,    0, -M_PI/2 }},
+  { 0, }};
+
+static const hand_anim pray_anim[] = {
+  { &hand_clap1, NNN, 0,   { 0, 0, 0 }, { -0.5, -1.6, -1.7 }},
+  { &hand_clap1, 0.2, 2.5, { 0.28, 0, 0 }, { -0.5, -1.6, -1.7 }},
+  { 0, }};
+
+
+/**************************************************************************/
+
+static const hand middle_finger = {
+  {{ 0.70, 0.70, 0, 0 },
+   { 1.60, 1.60, 1.60, 0 },
+   { 0, 0, 0, 0 },
+   { 1.40, 1.40, 1.40, 0 },
+   { 1.60, 1.60, 1.60, 0 }},
+  { 0, 0, 0, 0, 0 },
+  { -0.04, 0.06, -2.90 },
+  { 0, 0, 0 },
+  True
+};
+
+static const hand_anim middle_anim[] = {
+  { &middle_finger, NNN, 1, { 0, 0, 0.0 }, { 0,  0,   0 }},
+  { &middle_finger, 0.2, 0, { 0, 0, 0.3 }, { 0,  0.2, 0 }},
+  { &middle_finger, 0.2, 0, { 0, 0, 0.0 }, { 0,  0,   0 }},
+  { &middle_finger, 0.2, 0, { 0, 0, 0.3 }, { 0, -0.2, 0 }},
+  { &middle_finger, 0.2, 0, { 0, 0, 0.0 }, { 0,  0,   0 }},
+  { &middle_finger, 0.2, 0, { 0, 0, 0.3 }, { 0,  0.2, 0 }},
+  { &middle_finger, 0.2, 0, { 0, 0, 0.0 }, { 0,  0,   0 }},
+  { &middle_finger, 0.2, 0, { 0, 0, 0   }, { 0,  0,   0 }},
+  { 0, }};
+
+/**************************************************************************/
+
+static const hand hand_ok = {
+  {{ 0.87, 0.32, 0.02, 0 },
+   { 0.88, 0.91, 0.93, 0 },
+   { 0, 0.32, 0.32, 0 },
+   { 0, 0.02, 0.02, 0 },
+   { -0.20, -0.20, -0.20, 0 }},
+  { -0.92, -0.03, -0.06, 0.10, 0.25 },
+  { -0.04, 0.06, -2.90 },
+  { 0, 0, 0 },
+  True
+};
+
+static const hand hand_pointing = {
+  {{ 0.87, 0.32, 0.02, 0 },
+   { 0, 0, 0, 0 },
+   { 0.8, 1.60, 1.60, 0 },
+   { 0.8, 1.60, 1.60, 0 },
+   { 0.8, 1.60, 1.60, 0 }},
+  { 0, 0, 0, 0, 0 },
+  { 0, 0, 0 },
+  { 0, 0, 0 },
+  True
+};
+
+static const hand_anim ok_anim[] = {
+  { &hand_ok, NNN, 1, { 0, 0, 0 }, { 0, 0, M_PI/2 }},
+  { 0, }};
+
+static const hand_anim inout1_anim[] = {
+  { &hand_ok, NNN, 1, { 0.3, 0.34, 0.4 }, { M_PI/2, 0, M_PI }},
+  { 0, }};
+
+static const hand_anim inout2_anim[] = {
+  { &hand_pointing, NNN, 1, { -0.8, 0, 0.15 }, { 0, -M_PI/2, -M_PI }},
+  { &hand_pointing, 0.2, 0, { -0.1, 0, 0.15 }, { 0, -M_PI/2, -M_PI }},
+  { &hand_pointing, 0.2, 0, { -0.8, 0, 0.15 }, { 0, -M_PI/2, -M_PI }},
+  { &hand_pointing, 0.2, 0, { -0.1, 0, 0.15 }, { 0, -M_PI/2, -M_PI }},
+  { &hand_pointing, 0.2, 0, { -0.8, 0, 0.15 }, { 0, -M_PI/2, -M_PI }},
+  { &hand_pointing, 0.2, 0, { -0.1, 0, 0.15 }, { 0, -M_PI/2, -M_PI }},
+  { &hand_pointing, 0.2, 0, { -0.8, 0, 0.15 }, { 0, -M_PI/2, -M_PI }},
+  { &hand_pointing, 0.2, 0, { -0.1, 0, 0.15 }, { 0, -M_PI/2, -M_PI }},
+  { &hand_pointing, 0.2, 1, { -0.8, 0, 0.15 }, { 0, -M_PI/2, -M_PI }},
+  { 0, }};
+
+
+/**************************************************************************/
+
+static const hand tap0 = {
+  {{ 0, 0, 0, 0 },
+   { 0.06, 0.06, 0.06, 0 },
+   { 0.04, 0.04, 0.04, 0 },
+   { 0.04, 0.04, 0.04, 0 },
+   { 0.02, 0.02, 0.02, 0 }},
+  { 0, -0.25, -0.06, 0.10, 0.25 },
+  { 1.06, 0.10, 0 },
+  { 0, -0.10, 0.04 },
+  True
+};
+static const hand tap1 = {
+  {{ 0, 0, 0, 0 },
+   { 0.06, 0.06, 0.06, 0 },
+   { 0.04, 0.04, 0.04, 0 },
+   { 0.24, 0.24, 0.24, 0 },
+   { 0.60, 0.60, 0.60, 0 }},
+  { 0, -0.25, -0.06, 0.10, 0.25 },
+  { 1.06, 0.10, 0 },
+  { 0, -0.10, 0.04 },
+  True
+};
+static const hand tap2 = {
+  {{ 0, 0, 0, 0 },
+   { 0.06, 0.06, 0.06, 0 },
+   { 0.30, 0.30, 0.30, 0 },
+   { 0.66, 0.66, 0.66, 0 },
+   { 0.60, 0.60, 0.60, 0 }},
+  { 0, -0.25, -0.06, 0.10, 0.25 },
+  { 1.06, 0.10, 0 },
+  { 0, -0.10, 0.04 },
+  True
+};
+static const hand tap3 = {
+  {{ 0, 0, 0, 0 },
+   { 0.26, 0.26, 0.26, 0 },
+   { 0.71, 0.71, 0.71, 0 },
+   { 0.66, 0.66, 0.66, 0 },
+   { 0.60, 0.60, 0.60, 0 }},
+  { -0.10, -0.25, -0.06, 0.10, 0.25 },
+  { 1.06, 0.10, 0 },
+  { 0, -0.10, 0.04 },
+  True
+};
+static const hand tap4 = {
+  {{ 0, 0, 0, 0 },
+   { 0.72, 0.72, 0.72, 0 },
+   { 0.71, 0.71, 0.71, 0 },
+   { 0.66, 0.66, 0.66, 0 },
+   { 0.60, 0.60, 0.60, 0 }},
+  { -0.20, -0.25, -0.06, 0.10, 0.25 },
+  { 1.06, 0.10, 0 },
+  { 0, -0.10, 0.04 },
+  True
+};
+static const hand tap5 = {
+  {{ 0, 0, 0, 0 },
+   { 0.72, 0.72, 0.72, 0 },
+   { 0.71, 0.71, 0.71, 0 },
+   { 0.66, 0.66, 0.66, 0 },
+   { 0.60, 0.60, 0.60, 0 }},
+  { -0.50, -0.25, -0.06, 0.10, 0.25 },
+  { 1.06, 0.10, 0 },
+  { 0, -0.10, 0.04 },
+  True
+};
+
+static const hand_anim tap_anim[] = {
+  { &tap5, NNN,  0.5,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+
+  { &tap0, 0.13, 0.8, { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap1, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap2, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap3, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap4, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap5, 0.13, 0.8, { 0, 1, -0.19 }, { 0, 0, 0 }},
+
+  { &tap0, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap1, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap2, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap3, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap4, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap5, 0.13, 0.8, { 0, 1, -0.19 }, { 0, 0, 0 }},
+
+  { &tap0, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap1, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap2, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap3, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap4, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap5, 0.13, 0.8, { 0, 1, -0.19 }, { 0, 0, 0 }},
+
+  { &tap0, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap1, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap2, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap3, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap4, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap5, 0.13, 0.8, { 0, 1, -0.19 }, { 0, 0, 0 }},
+
+  { &tap0, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap1, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap2, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap3, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap4, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap5, 0.13, 0.8, { 0, 1, -0.19 }, { 0, 0, 0 }},
+
+  { &tap0, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap1, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap2, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap3, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap4, 0.13, 0,   { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { &tap5, 0.13, 0.8, { 0, 1, -0.19 }, { 0, 0, 0 }},
+  { 0, }};
+
+
+/**************************************************************************/
+
+static const hand hand_spock = {
+  {{ 0, 0, 0, 0 },
+   { 0, 0, 0, 0 },
+   { 0, 0, 0, 0 },
+   { 0, 0, 0, 0 },
+   { 0, 0, 0, 0 }},
+  { 0.00, -0.13, -0.25, 0.25, 0.11 },
+  { 0, 0.10, 0 },
+  { 0, 0, 0 },
+  True
+};
+
+static const hand_anim spock_anim[] = {
+  { &hand_spock, NNN, 1.5, { 0, 0, 0.1 }, { 0, 0, 0 } },
+  { 0, }};
+
+/**************************************************************************/
+
+static const hand hand_horns = {
+  {{ 0, 1.30, 1.30, 0 },
+   { 0, 0, 0, 0 },
+   { 0.70, 1.60, 1.60, 0 },
+   { 0.70, 1.60, 1.60, 0 },
+   { 0, 0, 0, 0 }},
+  { -1.50, -0.25, 0, 0, 0.25 },
+  { 0, 0.10, 0 },
+  { 0, 0, 0 },
+  True
+};
+
+static const hand_anim horns_anim[] = {
+  { &hand_horns, NNN, 1.5, { 0, 0, 0.1 }, { 0, 0, 0 } },
+  { &hand_horns, 0.3, 0,   { 0, 0, 0.1 }, { 0.7, 0, 0 } },
+  { &hand_horns, 0.3, 0,   { 0, 0, 0.1 }, { 0,   0, 0 } },
+  { &hand_horns, 0.3, 0,   { 0, 0, 0.1 }, { 0.7, 0, 0 } },
+  { &hand_horns, 0.3, 0.3, { 0, 0, 0.1 }, { 0,   0, 0 } },
+  { 0, }};
+
+/**************************************************************************/
+
+static const hand_anim bs1_anim[] = {
+  { &hand_horns,  NNN, 1, { 0.2, 0, 0 }, { 0, M_PI/4, M_PI/2 }},
+  { 0, }};
+
+static const hand_anim bs2_anim[] = {
+  { &closed_hand, NNN, 1, { 0.2, 0, 0 }, { M_PI/4, 0, M_PI/2 }},
+  { &open_wide,   0.3, 0, { 0.2, 0, 0 }, { M_PI,   0, M_PI/2 }},
+  { &closed_hand, 0.3, 0, { 0.2, 0, 0 }, { M_PI/4, 0, M_PI/2 }},
+  { &open_wide,   0.3, 0, { 0.2, 0, 0 }, { M_PI,   0, M_PI/2 }},
+  { &closed_hand, 0.3, 0, { 0.2, 0, 0 }, { M_PI/4, 0, M_PI/2 }},
+  { &open_wide,   0.3, 0, { 0.2, 0, 0 }, { M_PI,   0, M_PI/2 }},
+  { &closed_hand, 0.3, 1, { 0.2, 0, 0 }, { M_PI/4, 0, M_PI/2 }},
+  { 0, }};
+
+/**************************************************************************/
+
+static const hand hand_v = {
+  {{ 0, 1.60, 1.60, 0 },
+   { 0, 0, 0, 0 },
+   { 0, 0, 0, 0 },
+   { 1.60, 1.60, 1.60, 0 },
+   { 1.60, 1.60, 1.60, 0 }},
+  { -0.80, -0.22, 0.25, 0, 0 },
+  { 0, 0, -M_PI },
+  { 0, 0, 0 },
+  True
+};
+
+static const hand_anim upyours_anim[] = {
+  { &hand_v,    NNN, 1, { 0, 0, 0.0 }, { 0,  0,   0 }},
+  { &hand_v,    0.2, 0, { 0, 0, 0.3 }, { 0,  0.2, 0 }},
+  { &hand_v,    0.2, 0, { 0, 0, 0.0 }, { 0,  0,   0 }},
+  { &hand_v,    0.2, 0, { 0, 0, 0.3 }, { 0,  0.2, 0 }},
+  { &hand_v,    0.2, 1, { 0, 0, 0.0 }, { 0,  0,   0 }},
+  { 0, }};
+
+static const hand_anim peace_anim[] = {
+  { &hand_v,    NNN, 0.0, { 0, 0, 0 }, { 0, 0, M_PI }},
+  { &hand_v,    0.3, 0.2, { 0, 0, 0 }, { 0, -0.2, M_PI }},
+  { &hand_v,    0.8, 2.2, { 0, 0, 0 }, { 0,  0.7, M_PI }},
+  { 0, }};
+
+static const hand_anim scissor1_anim[] = {
+  { &hand_v,    NNN, 1, { -0.2, 0, 0 }, { M_PI, 0, M_PI }},
+  { &hand_v,    0.5, 1, { -0.5, 0, 0 }, { M_PI/2, 0, M_PI/2 }},
+  { &hand_v,    0.2, 0, { 0,    0, 0 }, { M_PI/2, 0, M_PI/2 }},
+  { &hand_v,    0.2, 0, { -0.2, 0, 0 }, { M_PI/2, 0, M_PI/2 }},
+  { &hand_v,    0.2, 0, { 0,    0, 0 }, { M_PI/2, 0, M_PI/2 }},
+  { &hand_v,    0.2, 0, { -0.2, 0, 0 }, { M_PI/2, 0, M_PI/2 }},
+  { &hand_v,    0.2, 0, { 0,    0, 0 }, { M_PI/2, 0, M_PI/2 }},
+  { 0, }};
+
+static const hand_anim scissor2_anim[] = {
+  { &hand_v,    NNN, 1, { -0.2, 0, 0 }, { M_PI, 0, M_PI }},
+  { &hand_v,    0.5, 1, { -0.5, 0.1, -0.05 }, { 0, -M_PI/2, -M_PI/2 }},
+  { &hand_v,    0.2, 0, { 0,    0.1, -0.05 }, { 0, -M_PI/2, -M_PI/2 }},
+  { &hand_v,    0.2, 0, { -0.2, 0.1, -0.05 }, { 0, -M_PI/2, -M_PI/2 }},
+  { &hand_v,    0.2, 0, { 0,    0.1, -0.05 }, { 0, -M_PI/2, -M_PI/2 }},
+  { &hand_v,    0.2, 0, { -0.2, 0.1, -0.05 }, { 0, -M_PI/2, -M_PI/2 }},
+  { &hand_v,    0.2, 0, { 0,    0.1, -0.05 }, { 0, -M_PI/2, -M_PI/2 }},
+  { 0, }};
+
+/**************************************************************************/
+
+static const hand hand_v2 = {
+  {{ 0, 1.60, 1.60, 0 },
+   { 0, 0, 0, 0 },
+   { 0, 0, 0, 0 },
+   { 1.60, 1.60, 1.60, 0 },
+   { 1.60, 1.60, 1.60, 0 }},
+  { -0.80, -0.06, 0.09, 0, 0 },
+  { 0, 0, -M_PI },
+  { 0, 0, 0 },
+  True
+};
+
+static const hand_anim eyeonu_anim[] = {
+  { &hand_v2,   NNN, 1,   { 0.3, -1.4, 1.0 }, { M_PI - 1.8, 0, M_PI }},
+  { &hand_v2,   0.3, 0.3, { 0.3,  1.4, 0.5 }, { M_PI, 0, -M_PI }},
+  { &hand_v2,   0.3, 1,   { 0.3, -1.4, 1.0 }, { M_PI - 1.8, 0, M_PI }},
+  { &hand_v2,   0.3, 0.3, { 0.3,  1.4, 0.5 }, { M_PI, 0, -M_PI }},
+  { &hand_v2,   0.3, 1,   { 0.3, -1.4, 1.0 }, { M_PI - 1.8, 0, M_PI }},
+  { &hand_v2,   0.3, 0.3, { 0.3,  1.4, 0.5 }, { M_PI, 0, -M_PI }},
+  { &hand_v2,   0.3, 1,   { 0.3, -1.4, 1.0 }, { M_PI - 1.8, 0, M_PI }},
+  { 0, }};
+
+/**************************************************************************/
+
+static const hand hand_trick1 = {
+  {{ 0.50, 1.60, 1.60, 0.00 },
+   { 0, 1.60, 1.60, 0.00 },
+   { 0.36, 0.36, 0.36, 0.00 },
+   { 0,    0.16, 0.16, 0.00 },
+   { 0.00, 0.00, 0.00, 0.00 }},
+  { 0.00, 0.00, 0.00, 0.00, 0.00 },
+  { 0.00, 0.00, 0.00 },
+  { 0.00, 0.00, 0.00 },
+  True
+};
+
+
+static const hand hand_trick2 = {
+  {{ 1, 1.60, 1.60, 0.00 },
+   { 0, 1.60, 1.60, 0.00 },
+   { 0, 1.60, 1.60, 0.00 },
+   { 0, 1.60, 1.60, 0.00 },
+   { 0, 1.60, 1.60, 0.00 }},
+  { 0.00, 0.00, 0.00, 0.00, 0.00 },
+  { 0.00, 0.00, 0.00 },
+  { 0.00, 0.00, 0.00 },
+  True
+};
+
+static const hand_anim trick1_anim[] = {
+  { &hand_trick2, NNN, 1, { 0.24, 0, 0 }, { 0, M_PI/4, 0 }},
+  { &hand_trick1, 0.5, 1, { 0.24, 0, 0 }, { 0, M_PI/4, 0 }},
+  { &hand_trick1, 0.3, 0, { 0.24 - 0.4, 0, 0 }, { 0, M_PI/4, 0 }},
+  { &hand_trick1, 0.3, 0, { 0.24, 0, 0 }, { 0, M_PI/4, 0 }},
+  { &hand_trick1, 0.3, 0, { 0.24 - 0.4, 0, 0 }, { 0, M_PI/4, 0 }},
+  { &hand_trick1, 0.3, 0, { 0.24, 0, 0 }, { 0, M_PI/4, 0 }},
+  { &hand_trick1, 0.3, 0, { 0.24 - 0.4, 0, 0 }, { 0, M_PI/4, 0 }},
+  { &hand_trick1, 0.3, 0, { 0.24, 0, 0 }, { 0, M_PI/4, 0 }},
+  { &hand_trick1, 0.3, 1, { 0.24 - 0.4, 0, 0 }, { 0, M_PI/4, 0 }},
+  { 0, }};
+
+static const hand_anim trick2_anim[] = {
+  { &hand_trick2, NNN, 1, { 0.24, -0.07, 0.51 }, { 0, M_PI + M_PI/4, M_PI }},
+  { &hand_trick2, 0.5, 1, { 0.24, -0.07, 0.51 }, { 0, M_PI + M_PI/4, M_PI }},
+  { &hand_trick2, 0.3, 0, { 0.24 - 0.4, 0, 0.51 }, { 0, M_PI + M_PI/4, M_PI }},
+  { &hand_trick2, 0.3, 0, { 0.24, -0.07, 0.51 }, { 0, M_PI + M_PI/4, M_PI }},
+  { &hand_trick2, 0.3, 0, { 0.24 - 0.4, 0, 0.51 }, { 0, M_PI + M_PI/4, M_PI }},
+  { &hand_trick2, 0.3, 0, { 0.24, -0.07, 0.51 }, { 0, M_PI + M_PI/4, M_PI }},
+  { &hand_trick2, 0.3, 0, { 0.24 - 0.4, 0, 0.51 }, { 0, M_PI + M_PI/4, M_PI }},
+  { &hand_trick2, 0.3, 0, { 0.24, -0.07, 0.51 }, { 0, M_PI + M_PI/4, M_PI }},
+  { &hand_trick2, 0.3, 1, { 0.24 - 0.4, 0, 0.51 }, { 0, M_PI + M_PI/4, M_PI }},
+  { 0, }};
+
+/**************************************************************************/
+
+static const hand thumbs_up = {
+  {{ 0.00, 0.00, 0.00, 0.00 },
+   { 0.56, 1.60, 1.60, 0.00 },
+   { 0.50, 1.60, 1.60, 0.00 },
+   { 0.56, 1.60, 1.60, 0.00 },
+   { 0.52, 1.60, 1.60, 0.00 }},
+  { 0.00, 0.00, 0.00, 0.00, 0.00 },
+  { M_PI, 1.52, 0.00 },
+  { 0.00, 0.00, 0.00 },
+  True
+};
+
+static const hand_anim thumbsup_anim[] = {
+  { &thumbs_up, NNN,  1, { 0, 0, 0 },    { 0, 0, 0 }},
+  { &thumbs_up, 0.25, 0, { 0, 0, 0.25 }, { 0, 0, 0 }},
+  { &thumbs_up, 0.25, 0, { 0, 0, 0    }, { 0, 0, 0 }},
+  { &thumbs_up, 0.25, 0, { 0, 0, 0.25 }, { 0, 0, 0 }},
+  { &thumbs_up, 0.25, 0, { 0, 0, 0    }, { 0, 0, 0 }},
+  { &thumbs_up, 0.25, 0, { 0, 0, 0.25 }, { 0, 0, 0 }},
+  { &thumbs_up, 0.25, 1, { 0, 0, 0    }, { 0, 0, 0 }},
+  { 0, }};
+
+static const hand_anim thumbsdn_anim[] = {
+  { &thumbs_up, NNN,  1,   { 0,    0, 0 },    { 0, 0,     0 }},
+  { &thumbs_up, 0.25, 0.3, { -0.1, 0, 0.75 }, { 0, -M_PI, 0 }},
+  { &thumbs_up, 0.25, 0,   { -0.1, 0, 0.50 }, { 0, -M_PI, 0 }},
+  { &thumbs_up, 0.25, 0,   { -0.1, 0, 0.75 }, { 0, -M_PI, 0 }},
+  { &thumbs_up, 0.25, 0,   { -0.1, 0, 0.50 }, { 0, -M_PI, 0 }},
+  { &thumbs_up, 0.25, 0,   { -0.1, 0, 0.75 }, { 0, -M_PI, 0 }},
+  { &thumbs_up, 0.25, 1,   { -0.1, 0, 0.50 }, { 0, -M_PI, 0 }},
+  { 0, }};
+
+/**************************************************************************/
+
+static const hand_anim outtahere_anim[] = {
+  { &hand_pointing, NNN, 1, { 0, 0,    0 }, { M_PI, 0, 0 }},
+  { &thumbs_up,     0.1, 0, { 0, -0.2, 0 }, { M_PI, 0, -M_PI/2 }},
+  { &thumbs_up,     0.1, 0, { 0, 0,    0 }, { M_PI, 0, -M_PI/2 }},
+  { &thumbs_up,     0.1, 0, { 0, -0.2, 0 }, { M_PI, 0, -M_PI/2 }},
+  { &thumbs_up,     0.1, 0, { 0, 0,    0 }, { M_PI, 0, -M_PI/2 }},
+  { &thumbs_up,     0.1, 0, { 0, -0.2, 0 }, { M_PI, 0, -M_PI/2 }},
+  { &thumbs_up,     0.1, 0, { 0, 0,    0 }, { M_PI, 0, -M_PI/2 }},
+  { &thumbs_up,     0.1, 1, { 0, -0.2, 0 }, { M_PI, 0, -M_PI/2 }},
+  { 0, }};
+
+static const hand_anim stahhhp_anim[] = {
+  { &hand_pointing, NNN, 1,   { 0,    0,    0 }, { M_PI, 0,  0 }},
+  { &open_palm,     0.2, 0.5, { -0.1, -0.2, 0 }, { 0,  0,    0 }},
+  { &open_palm,     0.2, 0,   { -0.1, -0.2, 0 }, { 0,  -0.2, 0 }},
+  { &open_palm,     0.2, 0,   { -0.1, -0.2, 0 }, { 0,   0.2, 0 }},
+  { &open_palm,     0.2, 0,   { -0.1, -0.2, 0 }, { 0,  -0.2, 0 }},
+  { &open_palm,     0.2, 0,   { -0.1, -0.2, 0 }, { 0,   0.2, 0 }},
+  { &open_palm,     0.2, 0,   { -0.1, -0.2, 0 }, { 0,  -0.2, 0 }},
+  { &open_palm,     0.2, 1,   { -0.1, -0.2, 0 }, { 0,   0.2, 0 }},
+  { &open_palm,     0.2, 0,   { -0.1, -0.6, 0 }, { 0.2, 0.2, 0 }},
+  { &open_palm,     0.2, 0,   { -0.1, -0.2, 0 }, { 0.2, 0.2, 0 }},
+  { &open_palm,     0.2, 0,   { -0.1, -0.6, 0 }, { 0.2, 0.2, 0 }},
+  { &open_palm,     0.2, 0,   { -0.1, -0.2, 0 }, { 0.2, 0.2, 0 }},
+  { &open_palm,     0.2, 0,   { -0.1, -0.6, 0 }, { 0.2, 0.2, 0 }},
+  { &open_palm,     0.2, 1,   { -0.1, -0.2, 0 }, { 0.2, 0.2, 0 }},
+  { 0, }};
+
+static const hand_anim thisguy_anim[] = {
+  { &thumbs_up,     NNN, 0.3, { 0, -0.2, 0 }, { M_PI, 0, 0 }},
+  { &thumbs_up,     0.5, 0,   { 0, 0,    0 }, { M_PI, 0, -M_PI/2 }},
+  { &thumbs_up,     0.1, 0,   { 0, -0.2, 0 }, { M_PI, 0, -M_PI/2 }},
+  { &thumbs_up,     0.1, 0,   { 0, 0,    0 }, { M_PI, 0, -M_PI/2 }},
+  { &thumbs_up,     0.1, 0,   { 0, -0.2, 0 }, { M_PI, 0, -M_PI/2 }},
+  { &thumbs_up,     0.1, 0,   { 0, 0,    0 }, { M_PI, 0, -M_PI/2 }},
+  { &thumbs_up,     0.1, 1,   { 0, -0.2, 0 }, { M_PI, 0, -M_PI/2 }},
+  { 0, }};
+
+
+/**************************************************************************/
+
+static const hand gun1 = {
+  {{ 0.00, 0.00, 0.00, 0.00 },
+   { 0.00, 0.00, 0.00, 0.00 },
+   { 0.80, 1.60, 1.60, 0.00 },
+   { 0.80, 1.60, 1.60, 0.00 },
+   { 0.80, 1.60, 1.60, 0.00 }},
+  { 0.00, 0.00, 0.00, 0.00, 0.00 },
+  { 1.50, 1.58, 0.00 },
+  { 0.00, 0.00, 0.00 },
+  True
+};
+
+static const hand gun2 = {
+  {{ 0.00, 0.84, 0.84, 0.00 },
+   { 0.00, 0.00, 0.00, 0.00 },
+   { 0.80, 1.60, 1.60, 0.00 },
+   { 0.80, 1.60, 1.60, 0.00 },
+   { 0.80, 1.60, 1.60, 0.00 }},
+  { 0.00, 0.00, 0.00, 0.00, 0.00 },
+  { 1.50, 1.58, 0.00 },
+  { 0.00, 0.00, 0.00 },
+  True
+};
+
+static const hand_anim gun_anim[] = {
+  { &gun1, NNN, 1, { 0, 0, 0 }, { 0, 0, 0 }},
+  { &gun2, 0.1, 0, { 0, 0, 0 }, { 0, 0, -M_PI/5 }},
+  { &gun1, 0.3, 0, { 0, 0, 0 }, { 0, 0, 0 }},
+  { &gun2, 0.1, 0, { 0, 0, 0 }, { 0, 0, -M_PI/5 }},
+  { &gun1, 0.3, 0, { 0, 0, 0 }, { 0, 0, 0 }},
+  { &gun2, 0.1, 0, { 0, 0, 0 }, { 0, 0, -M_PI/5 }},
+  { &gun1, 0.3, 1, { 0, 0, 0 }, { 0, 0, 0 }},
+  { 0, }};
+
+
+/**************************************************************************/
+
+#define RPS_SHAKE \
+  { &closed_hand, 0.2, 0, { -0.4, 0.3, 0.3 }, { 0,    0, -M_PI/2 }}, \
+  { &closed_hand, 0.2, 0, { -0.4, 0,   0   }, { M_PI, 0, -M_PI/2 }}, \
+  { &closed_hand, 0.2, 0, { -0.4, 0.3, 0.3 }, { 0,    0, -M_PI/2 }}, \
+  { &closed_hand, 0.2, 0, { -0.4, 0,   0   }, { M_PI, 0, -M_PI/2 }}, \
+  { &closed_hand, 0.2, 0, { -0.4, 0.3, 0.3 }, { 0,    0, -M_PI/2 }}, \
+  { &closed_hand, 0.2, 0, { -0.4, 0,   0   }, { M_PI, 0, -M_PI/2 }}
+#define RPS_0 \
+  { &open_palm,   0.2, 1, { -0.4, 0, 0 }, { 0, 0, 0 }}
+#define RPS_R RPS_SHAKE, \
+  { &closed_hand, 0.2, 1, { -0.4, 0, 0 }, { M_PI,   0, -M_PI/2 }}
+#define RPS_P RPS_SHAKE, \
+  { &open_palm,   0.2, 1, { -0.4, 0, 0 }, { M_PI/2, 0, -M_PI/2 }}
+#define RPS_S RPS_SHAKE, \
+  { &hand_v,      0.2, 1, { -0.4, 0, 0 }, { 0,      -M_PI/2, 0 }}
+
+static const hand_anim rps1_anim[] = {
+  { &closed_hand, NNN, 1, { -0.4, 0, 0 }, { M_PI, 0, -M_PI/2 }},
+  RPS_S, RPS_P, RPS_R, RPS_0, 
+  RPS_S, RPS_P, RPS_R, RPS_0, 
+  RPS_P, RPS_R, RPS_S, RPS_0, 
+  RPS_R, RPS_S, RPS_P, RPS_0, 
+  { 0, }};
+
+static const hand_anim rps2_anim[] = {
+  { &closed_hand, NNN, 1, { -0.4, 0, 0 }, { M_PI, 0, -M_PI/2 }},
+  RPS_R, RPS_P, RPS_P, RPS_0, 
+  RPS_P, RPS_R, RPS_R, RPS_0, 
+  RPS_S, RPS_P, RPS_R, RPS_0, 
+  RPS_S, RPS_P, RPS_S, RPS_0, 
+  { 0, }};
+
+
+/**************************************************************************/
+
+static const hand walk1 = {
+  {{ 0.00, 0.00, 0.00, 0.00 },
+   { -0.20, -0.20, -0.20, 0.00 },
+   { 0.30, 0.24, 0.24, 0.00 },
+   { 0.00, 1.60, 1.60, 0.00 },
+   { 0.00, 1.50, 1.50, 0.00 }},
+  { -1.16, -0.12, 0.10, 0.00, 0.00 },
+  { 0.00, -0.04, 0.02 },
+  { 0.00, 0.00, 0.60 },
+  True
+};
+
+static const hand walk2 = {
+  {{ 0.00, 0.00, 0.00, 0.00 },
+   { 0.30, 0.24, 0.24, 0.00 },
+   { -0.20, -0.20, -0.20, 0.00 },
+   { 0.00, 1.60, 1.60, 0.00 },
+   { 0.00, 1.50, 1.50, 0.00 }},
+  { -1.16, -0.12, 0.10, 0.00, 0.00 },
+  { 0.00, 0.00, 0.00 },
+  { 0.00, 0.00, 0.60 },
+  True
+};
+
+static const hand_anim walk_anim[] = {
+  { &walk1, NNN, 0, { 0,  0.0, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk2, 0.3, 0, { 0, -0.1, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk1, 0.3, 0, { 0, -0.2, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk2, 0.3, 0, { 0, -0.3, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk1, 0.3, 0, { 0, -0.4, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk2, 0.3, 0, { 0, -0.5, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk1, 0.3, 0, { 0, -0.6, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk2, 0.3, 0, { 0, -0.7, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk1, 0.3, 0, { 0, -0.8, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk2, 0.3, 0, { 0, -0.9, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk1, 0.3, 0, { 0, -1.0, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk2, 0.3, 0, { 0, -1.1, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk1, 0.3, 0, { 0, -1.2, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk2, 0.3, 0, { 0, -1.3, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk1, 0.3, 0, { 0, -1.4, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk2, 0.3, 0, { 0, -1.5, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk1, 0.3, 0, { 0, -1.6, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk2, 0.3, 0, { 0, -1.7, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk1, 0.3, 0, { 0, -1.8, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk2, 0.3, 0, { 0, -1.9, -0.03 }, { 0, M_PI, M_PI }},
+  { &walk1, 0.3, 0, { 0, -2.0, -0.03 }, { 0, M_PI, M_PI }},
+  { 0, }};
+
+/**************************************************************************/
+
+static const hand_anim goatse_anim[] = {
+  { &open_palm, NNN, 1, { 0.31, 2,   0.5 }, { M_PI/2, -M_PI/2, 0 }},
+  { &open_palm, 2,   0, { 0.31, 0,   0.5 }, { M_PI/2, -M_PI/2, 0 }},
+  { &thumbs_up, 2,   1, { 0.31, 0,   0.5 }, { 0,      -M_PI,   0 }},
+  { &thumbs_up, 2,   1, { -0.4, 0,   0.5 }, { 0,      -M_PI,   0 }},
+  { &open_palm, 2,   1, { -0.4, 0.3, 0.5 }, { M_PI/2, -M_PI/2, 0 }},
+  { 0, }};
+
+
+/**************************************************************************/
+
+static const hand_anim_pair all_hand_anims[] = {
+  {{ middle_anim,    middle_anim },    0.2 },
+  {{ tap_anim,       tap_anim },       0.7 },
+  {{ tap_anim,       tap_anim },       0.7 },
+  {{ tap_anim,       tap_anim },       0.7 },
+  {{ spock_anim,     hidden_anim},     0 },
+  {{ spock_anim,     hidden_anim},     0 },
+  {{ horns_anim,     horns_anim},      0 },
+  {{ horns_anim,     horns_anim},      0 },
+  {{ bs1_anim,       bs2_anim },       0 },
+  {{ upyours_anim,   hidden_anim },    0 },
+  {{ peace_anim,     hidden_anim },    0 },
+  {{ scissor1_anim,  scissor2_anim },  0 },
+  {{ wave_anim,      hidden_anim },    0 },
+  {{ wave2_anim,     hidden_anim },    0 },
+  {{ jazzhands_anim, jazzhands_anim }, 0 },
+  {{ ok_anim,        ok_anim },        0 },
+  {{ inout1_anim,    inout2_anim },    0 },
+  {{ clap_anim,      clap_anim },      0 },
+  {{ slow_clap_anim, slow_clap_anim }, 0 },
+  {{ pray_anim,      pray_anim },      0 },
+  {{ eyeonu_anim,    hidden_anim },    0 },
+  {{ trick1_anim,    trick2_anim },    0 },
+  {{ thumbsup_anim,  thumbsup_anim },  0 },
+  {{ thumbsdn_anim,  thumbsdn_anim },  0 },
+  {{ thisguy_anim,   thisguy_anim },   0 },
+  {{ outtahere_anim, hidden_anim },    0 },
+  {{ stahhhp_anim,   stahhhp_anim },   0 },
+  {{ gun_anim,       gun_anim },       0.25 },
+  {{ walk_anim,      walk_anim },      0.3 },
+  {{ goatse_anim,    goatse_anim },    0 },
+  {{ 0, }}};
+
+#endif /* __HANDSY_ANIM__ */
diff --git a/hacks/glx/handsy_model.c b/hacks/glx/handsy_model.c
new file mode 100644 (file)
index 0000000..e413ceb
--- /dev/null
@@ -0,0 +1,6684 @@
+/* Generated from "handsy.dxf" on 25-Oct-2018.
+   Smoothed vertex normals at 28°.
+   Components: finger_distal, finger_intermediate, finger_metacarpal,
+     finger_proximal, palm, thumb_distal, thumb_metacarpal, thumb_proximal.
+ */
+
+#include "gllist.h"
+
+static const float handsy_model_finger_distal_data[] = {
+       -0.707107,0.707107,0,0.095086,0.180273,1.001864,
+       -0.707107,0.707107,0,0.099318,0.184504,1.131929,
+       -0.707107,0.707107,0,0.099318,0.184504,1.001864,
+       -0.707107,0.707107,0,0.099318,0.184504,1.131929,
+       -0.707107,0.707107,0,0.095086,0.180273,1.001864,
+       -0.707107,0.707107,0,0.090393,0.175579,1.058824,
+       -0.707107,0.707107,0,0.099318,0.184504,1.131929,
+       -0.707107,0.707107,0,0.090393,0.175579,1.058824,
+       -0.707107,0.707107,0,0.084928,0.170115,1.079901,
+       -0.707107,0.707107,0,0.099318,0.184504,1.131929,
+       -0.707107,0.707107,0,0.084928,0.170115,1.079901,
+       -0.707107,0.707107,0,0.084928,0.170115,1.091226,
+       -0.707107,0.707107,0,0.099318,0.184504,1.131929,
+       -0.707107,0.707107,0,0.084928,0.170115,1.091226,
+       -0.707107,0.707107,0,0.084928,0.170115,1.135994,
+       -0.707107,0.707107,0,0.099318,0.184504,1.131929,
+       -0.707107,0.707107,0,0.084928,0.170115,1.135994,
+       -0.707107,0.707107,0,0.090962,0.176148,1.142819,
+       -0.707107,0.707107,0,0.090962,0.176148,1.142819,
+       -0.707107,0.707107,0,0.084928,0.170115,1.135994,
+       -0.707107,0.707107,0,0.084928,0.170115,1.147449,
+       0.908054,0.402355,0.116396,0.183968,0.115606,0.730756,
+       0.808758,0.575,0.123638,0.140043,0.160058,0.848974,
+       0.91898,0.370926,0.13375,0.175201,0.114294,0.794628,
+       0.808758,0.575,0.123638,0.140043,0.160058,0.848974,
+       0.908054,0.402355,0.116396,0.183968,0.115606,0.730756,
+       0.786413,0.608998,0.103325,0.155675,0.163491,0.730756,
+       0.630687,0.768681,0.106602,0.095242,0.193568,0.918226,
+       0.786413,0.608998,0.103325,0.155675,0.163491,0.730756,
+       0.595396,0.798295,0.090708,0.118803,0.200235,0.730756,
+       0.786413,0.608998,0.103325,0.155675,0.163491,0.730756,
+       0.630687,0.768681,0.106602,0.095242,0.193568,0.918226,
+       0.808758,0.575,0.123638,0.140043,0.160058,0.848974,
+       0.973303,0.191501,0.126525,0.201753,0.059842,0.730756,
+       0.91898,0.370926,0.13375,0.175201,0.114294,0.794628,
+       0.969671,0.201527,0.138296,0.197659,0.059532,0.759913,
+       0.91898,0.370926,0.13375,0.175201,0.114294,0.794628,
+       0.973303,0.191501,0.126525,0.201753,0.059842,0.730756,
+       0.908054,0.402355,0.116396,0.183968,0.115606,0.730756,
+       -0.842251,0.536837,0.049197,-0.253462,0.146336,0.308415,
+       -0.707095,0.707095,-0.005782,-0.206534,0.206534,0.206534,
+       -0.887099,0.461543,-0.005776,-0.253185,0.146177,0.253185,
+       -0.707095,0.707095,-0.005782,-0.206534,0.206534,0.206534,
+       -0.842251,0.536837,0.049197,-0.253462,0.146336,0.308415,
+       -0.706249,0.706249,0.049244,-0.206951,0.206951,0.308415,
+       0.973303,0.191501,0.126525,0.201753,0.059842,0.730756,
+       0.935393,0.051194,0.349884,0.205383,0,0.747973,
+       0.987543,0.10011,0.121395,0.20782,0,0.730756,
+       0.935393,0.051194,0.349884,0.205383,0,0.747973,
+       0.973303,0.191501,0.126525,0.201753,0.059842,0.730756,
+       0.9306,0.103399,0.35113,0.197659,0.059532,0.759913,
+       -0.461543,0.887099,-0.005776,-0.145866,0.252648,0.145866,
+       -0.300554,0.952495,0.049197,-0.075749,0.2827,0.308415,
+       -0.216218,0.976328,-0.005776,-0.0754,0.281398,0.0754,
+       -0.300554,0.952495,0.049197,-0.075749,0.2827,0.308415,
+       -0.461543,0.887099,-0.005776,-0.145866,0.252648,0.145866,
+       -0.547548,0.835754,0.041316,-0.146336,0.253462,0.308415,
+       0.324287,0.942926,0.075685,0.044468,0.212784,0.996711,
+       0.595396,0.798295,0.090708,0.118803,0.200235,0.730756,
+       0.389382,0.917677,0.079062,0.075865,0.223333,0.730756,
+       0.595396,0.798295,0.090708,0.118803,0.200235,0.730756,
+       0.324287,0.942926,0.075685,0.044468,0.212784,0.996711,
+       0.630687,0.768681,0.106602,0.095242,0.193568,0.918226,
+       -0.952495,0.300554,0.049197,-0.2827,0.075749,0.308415,
+       -0.887099,0.461543,-0.005776,-0.253185,0.146177,0.253185,
+       -0.976328,0.216218,-0.005776,-0.282555,0.07571,0.282555,
+       -0.887099,0.461543,-0.005776,-0.253185,0.146177,0.253185,
+       -0.952495,0.300554,0.049197,-0.2827,0.075749,0.308415,
+       -0.842251,0.536837,0.049197,-0.253462,0.146336,0.308415,
+       -0.990262,0.130371,0.048824,-0.292672,0,0.308415,
+       -0.976328,0.216218,-0.005776,-0.282555,0.07571,0.282555,
+       -0.991429,0.130524,-0.005732,-0.292581,0,0.292581,
+       -0.976328,0.216218,-0.005776,-0.282555,0.07571,0.282555,
+       -0.990262,0.130371,0.048824,-0.292672,0,0.308415,
+       -0.952495,0.300554,0.049197,-0.2827,0.075749,0.308415,
+       0.020045,0.337373,0.941158,0.166851,0.067533,1.206027,
+       0.019327,0.266418,0.963664,0.145844,0.064475,1.207294,
+       0.003099,0.22022,0.975445,0.146803,0.062161,1.207598,
+       0.035916,0.522579,0.851834,0.140784,0.130464,1.177874,
+       0.036445,0.521909,0.852222,0.11938,0.124556,1.182407,
+       0.04764,0.414629,0.908743,0.122809,0.120086,1.184259,
+       0.866025,0.5,0,0.140784,0.130464,0.847828,
+       0.95365,0.300918,0,0.166851,0.067533,1.206027,
+       0.98084,0.194814,0,0.166851,0.067533,0.807535,
+       0.95365,0.300918,0,0.166851,0.067533,1.206027,
+       0.866025,0.5,0,0.140784,0.130464,0.847828,
+       0.866025,0.5,0,0.140784,0.130464,1.177874,
+       0.020045,0.337373,0.941158,0.166851,0.067533,1.206027,
+       0.04764,0.414629,0.908743,0.122809,0.120086,1.184259,
+       0.019327,0.266418,0.963664,0.145844,0.064475,1.207294,
+       -0.991445,-0.130526,0,0.154986,0,1.215782,
+       -0.970622,-0.24061,0,0.146803,0.062161,1.091226,
+       -0.991445,-0.130526,0,0.154986,0,1.091226,
+       -0.970622,-0.24061,0,0.146803,0.062161,1.091226,
+       -0.991445,-0.130526,0,0.154986,0,1.215782,
+       -0.965926,-0.258819,0,0.146803,0.062161,1.207598,
+       0.035916,0.522579,0.851834,0.140784,0.130464,1.177874,
+       0,0.608761,0.793353,0.084928,0.169454,1.147956,
+       0.036445,0.521909,0.852222,0.11938,0.124556,1.182407,
+       0,0.659134,0.752025,0.10573,0.176148,1.142819,
+       0,0.608761,0.793353,0.084928,0.170115,1.147449,
+       0,0.608761,0.793353,0.084928,0.169454,1.147956,
+       -1,0,0,0.084928,0.170115,1.147449,
+       -0.998017,0.062939,0,0.084928,0.169454,1.136304,
+       -0.992013,0.126132,0,0.084928,0.169454,1.147956,
+       -0.998017,0.062939,0,0.084928,0.169454,1.136304,
+       -1,0,0,0.084928,0.170115,1.147449,
+       -1,0,0,0.084928,0.170115,1.135994,
+       0,0.130526,0.991445,0.154986,0,1.215782,
+       -0.009782,0.215043,0.976556,0.167254,0.064475,1.207294,
+       0.003099,0.22022,0.975445,0.146803,0.062161,1.207598,
+       -0.009782,0.215043,0.976556,0.167254,0.064475,1.207294,
+       0,0.130526,0.991445,0.154986,0,1.215782,
+       0,0.130526,0.991445,0.175742,0,1.215782,
+       -1,0,0,0.084928,0.170115,1.135994,
+       -0.998734,0.050307,0,0.084928,0.169454,1.091226,
+       -0.998017,0.062939,0,0.084928,0.169454,1.136304,
+       -0.998734,0.050307,0,0.084928,0.169454,1.091226,
+       -1,0,0,0.084928,0.170115,1.135994,
+       -1,0,0,0.084928,0.170115,1.091226,
+       0.020045,0.337373,0.941158,0.166851,0.067533,1.206027,
+       0.035916,0.522579,0.851834,0.140784,0.130464,1.177874,
+       0.04764,0.414629,0.908743,0.122809,0.120086,1.184259,
+       0,0.659134,0.752025,0.10573,0.176148,1.142819,
+       0,0.793353,0.608761,0.099318,0.184504,1.131929,
+       0,0.707107,0.707107,0.090962,0.176148,1.142819,
+       0.866025,0.5,0,0.140784,0.130464,0.847828,
+       0.793353,0.608761,0,0.10573,0.176148,1.142819,
+       0.866025,0.5,0,0.140784,0.130464,1.177874,
+       0.793353,0.608761,0,0.10573,0.176148,1.142819,
+       0.866025,0.5,0,0.140784,0.130464,0.847828,
+       0.793353,0.608761,0,0.099318,0.184504,0.911925,
+       0.793353,0.608761,0,0.10573,0.176148,1.142819,
+       0.793353,0.608761,0,0.099318,0.184504,0.911925,
+       0.793353,0.608761,0,0.099318,0.184504,1.001864,
+       0.793353,0.608761,0,0.10573,0.176148,1.142819,
+       0.793353,0.608761,0,0.099318,0.184504,1.001864,
+       0.793353,0.608761,0,0.099318,0.184504,1.131929,
+       -0.92388,-0.382683,0,0.137837,0.083806,1.091226,
+       -0.965926,-0.258819,0,0.146803,0.062161,1.085202,
+       -0.970622,-0.24061,0,0.146803,0.062161,1.091226,
+       -0.009782,0.215043,0.976556,0.167254,0.064475,1.207294,
+       0.020045,0.337373,0.941158,0.166851,0.067533,1.206027,
+       0.003099,0.22022,0.975445,0.146803,0.062161,1.207598,
+       -0.998734,0.050307,0,0.084928,0.169454,1.091226,
+       -1,0,0,0.084928,0.170115,1.079901,
+       -1,0,0,0.084928,0.169454,1.081177,
+       -1,0,0,0.084928,0.170115,1.079901,
+       -0.998734,0.050307,0,0.084928,0.169454,1.091226,
+       -1,0,0,0.084928,0.170115,1.091226,
+       0.035916,0.522579,0.851834,0.140784,0.130464,1.177874,
+       0,0.659134,0.752025,0.10573,0.176148,1.142819,
+       0,0.608761,0.793353,0.084928,0.169454,1.147956,
+       -0.92388,-0.382683,0,0.12778,0.108086,1.091226,
+       -0.92388,-0.382683,0,0.137837,0.083806,1.091226,
+       -0.92388,-0.382683,0,0.13166,0.098719,1.095377,
+       0,0.659134,0.752025,0.10573,0.176148,1.142819,
+       0,0.707107,0.707107,0.090962,0.176148,1.142819,
+       0,0.608761,0.793353,0.084928,0.170115,1.147449,
+       -0.887114,-0.461551,0,0.122809,0.120086,1.184259,
+       -0.793353,-0.608761,0,0.113594,0.132096,1.091226,
+       -0.866025,-0.5,0,0.122809,0.120086,1.091226,
+       -0.793353,-0.608761,0,0.113594,0.132096,1.091226,
+       -0.887114,-0.461551,0,0.122809,0.120086,1.184259,
+       -0.793353,-0.608761,0,0.11938,0.124556,1.182407,
+       -0.793353,-0.608761,0,0.113594,0.132096,1.091226,
+       -0.793353,-0.608761,0,0.11938,0.124556,1.182407,
+       -0.793353,-0.608761,0,0.084928,0.169454,1.147956,
+       -0.793353,-0.608761,0,0.113594,0.132096,1.091226,
+       -0.793353,-0.608761,0,0.084928,0.169454,1.147956,
+       -0.793353,-0.608761,0,0.107664,0.139824,1.094648,
+       -0.793353,-0.608761,0,0.107664,0.139824,1.094648,
+       -0.793353,-0.608761,0,0.084928,0.169454,1.147956,
+       -0.793353,-0.608761,0,0.101889,0.14735,1.091226,
+       -0.793353,-0.608761,0,0.101889,0.14735,1.091226,
+       -0.793353,-0.608761,0,0.084928,0.169454,1.147956,
+       -0.793353,-0.608761,0,0.084928,0.169454,1.091226,
+       -0.998734,0.050307,0,0.084928,0.169454,1.091226,
+       -0.992013,0.126132,0,0.084928,0.169454,1.147956,
+       -0.998017,0.062939,0,0.084928,0.169454,1.136304,
+       0.98084,0.194814,0,0.166851,0.067533,0.807535,
+       0.991445,0.130526,0,0.175742,0,1.215782,
+       0.991445,0.130526,0,0.175742,0,0.793792,
+       0.991445,0.130526,0,0.175742,0,1.215782,
+       0.98084,0.194814,0,0.166851,0.067533,0.807535,
+       0.991445,0.130526,0,0.167254,0.064475,1.207294,
+       0.991445,0.130526,0,0.167254,0.064475,1.207294,
+       0.98084,0.194814,0,0.166851,0.067533,0.807535,
+       0.95365,0.300918,0,0.166851,0.067533,1.206027,
+       0.931595,0.193458,0.307742,0.148197,0.05157,1.090997,
+       0.848153,0.348489,0.398988,0.127095,0.095297,1.111903,
+       0.875474,0.181663,0.447821,0.141756,0.049329,1.111903,
+       0.848153,0.348489,0.398988,0.127095,0.095297,1.111903,
+       0.931595,0.193458,0.307742,0.148197,0.05157,1.090997,
+       0.905776,0.288892,0.310019,0.146803,0.062161,1.085202,
+       0.848153,0.348489,0.398988,0.127095,0.095297,1.111903,
+       0.905776,0.288892,0.310019,0.146803,0.062161,1.085202,
+       0.905776,0.288892,0.310019,0.137837,0.083806,1.091226,
+       0.848153,0.348489,0.398988,0.127095,0.095297,1.111903,
+       0.905776,0.288892,0.310019,0.137837,0.083806,1.091226,
+       0.849124,0.419187,0.321357,0.13166,0.098719,1.095377,
+       0.415157,0.90975,0,0.08473,0.190593,0.934475,
+       0.385197,0.922834,0,0.099318,0.184504,1.001864,
+       0.385197,0.922834,0,0.099318,0.184504,0.911925,
+       0.385197,0.922834,0,0.099318,0.184504,1.001864,
+       0.415157,0.90975,0,0.08473,0.190593,0.934475,
+       0.500207,0.863755,0.061001,0.08473,0.190593,1.001864,
+       0,0,1,0.099318,0.184504,1.001864,
+       0,0,1,0.08473,0.190593,1.001864,
+       0,0,1,0.095086,0.180273,1.001864,
+       -0.793353,-0.608761,0,0.084928,0.169454,1.091226,
+       -0.793353,-0.608761,0,0.084928,0.169454,1.081177,
+       -0.793353,-0.608761,0,0.101889,0.14735,1.091226,
+       -0.92388,-0.382683,0,0.145844,0.064475,1.207294,
+       -0.970622,-0.24061,0,0.146803,0.062161,1.091226,
+       -0.965926,-0.258819,0,0.146803,0.062161,1.207598,
+       -0.970622,-0.24061,0,0.146803,0.062161,1.091226,
+       -0.92388,-0.382683,0,0.145844,0.064475,1.207294,
+       -0.92388,-0.382683,0,0.137837,0.083806,1.091226,
+       -0.92388,-0.382683,0,0.137837,0.083806,1.091226,
+       -0.92388,-0.382683,0,0.145844,0.064475,1.207294,
+       -0.887114,-0.461551,0,0.122809,0.120086,1.184259,
+       -0.92388,-0.382683,0,0.137837,0.083806,1.091226,
+       -0.887114,-0.461551,0,0.122809,0.120086,1.184259,
+       -0.92388,-0.382683,0,0.13166,0.098719,1.095377,
+       -0.92388,-0.382683,0,0.13166,0.098719,1.095377,
+       -0.887114,-0.461551,0,0.122809,0.120086,1.184259,
+       -0.92388,-0.382683,0,0.12778,0.108086,1.091226,
+       -0.92388,-0.382683,0,0.12778,0.108086,1.091226,
+       -0.887114,-0.461551,0,0.122809,0.120086,1.184259,
+       -0.866025,-0.5,0,0.122809,0.120086,1.091226,
+       -0.793353,-0.608761,0,0.113594,0.132096,1.091226,
+       -0.866025,-0.5,0,0.122809,0.120086,1.085909,
+       -0.866025,-0.5,0,0.122809,0.120086,1.091226,
+       0.579702,0.777975,0.242282,0.081843,0.184099,1.058824,
+       0.701131,0.703574,0.115755,0.095086,0.180273,1.001864,
+       0.500207,0.863755,0.061001,0.08473,0.190593,1.001864,
+       0.701131,0.703574,0.115755,0.095086,0.180273,1.001864,
+       0.579702,0.777975,0.242282,0.081843,0.184099,1.058824,
+       0.679711,0.682079,0.269744,0.090393,0.175579,1.058824,
+       -0.793353,-0.608761,0,0.101889,0.14735,1.091226,
+       -0.793353,-0.608761,0,0.113594,0.132096,1.091226,
+       -0.793353,-0.608761,0,0.107664,0.139824,1.094648,
+       -0.991445,-0.130526,0,0.154986,0,1.091226,
+       -0.991445,-0.130526,0,0.148197,0.05157,1.090997,
+       -0.991445,-0.130526,0,0.154986,0,1.086101,
+       -0.991445,-0.130526,0,0.148197,0.05157,1.090997,
+       -0.991445,-0.130526,0,0.154986,0,1.091226,
+       -0.970622,-0.24061,0,0.146803,0.062161,1.091226,
+       -0.991445,-0.130526,0,0.148197,0.05157,1.090997,
+       -0.970622,-0.24061,0,0.146803,0.062161,1.091226,
+       -0.965926,-0.258819,0,0.146803,0.062161,1.085202,
+       -0.866025,-0.5,0,0.122809,0.120086,1.085909,
+       -0.92388,-0.382683,0,0.12778,0.108086,1.091226,
+       -0.866025,-0.5,0,0.122809,0.120086,1.091226,
+       0.247221,0.204672,0.947096,0.031013,0.040277,1.214443,
+       0.171497,0.24914,0.953162,0.02193,0.049329,1.214443,
+       0.012418,0.084509,0.996345,0,0,1.221942,
+       0.304882,0.147067,0.940967,0.037983,0.02848,1.214443,
+       0.247221,0.204672,0.947096,0.031013,0.040277,1.214443,
+       0.012418,0.084509,0.996345,0,0,1.221942,
+       0.247221,0.204672,0.947096,0.031013,0.040277,1.214443,
+       0.311652,0.426328,0.849187,0.042365,0.095297,1.192457,
+       0.171497,0.24914,0.953162,0.02193,0.049329,1.214443,
+       0.311652,0.426328,0.849187,0.042365,0.095297,1.192457,
+       0.247221,0.204672,0.947096,0.031013,0.040277,1.214443,
+       0.434893,0.342116,0.832961,0.059913,0.077809,1.192457,
+       0.457499,0.59115,0.664256,0.059913,0.13477,1.157482,
+       0.746149,0.525881,0.408303,0.103773,0.13477,1.111903,
+       0.605362,0.686777,0.402336,0.073378,0.165059,1.111903,
+       0.746149,0.525881,0.408303,0.103773,0.13477,1.111903,
+       0.457499,0.59115,0.664256,0.059913,0.13477,1.157482,
+       0.619313,0.438782,0.651092,0.08473,0.110039,1.157482,
+       0.605362,0.686777,0.402336,0.073378,0.165059,1.111903,
+       0.679711,0.682079,0.269744,0.090393,0.175579,1.058824,
+       0.579702,0.777975,0.242282,0.081843,0.184099,1.058824,
+       0.679711,0.682079,0.269744,0.090393,0.175579,1.058824,
+       0.605362,0.686777,0.402336,0.073378,0.165059,1.111903,
+       0.662732,0.66504,0.34425,0.084928,0.170115,1.079901,
+       0.662732,0.66504,0.34425,0.084928,0.170115,1.079901,
+       0.605362,0.686777,0.402336,0.073378,0.165059,1.111903,
+       0.662732,0.66504,0.34425,0.084928,0.169454,1.081177,
+       0.662732,0.66504,0.34425,0.084928,0.169454,1.081177,
+       0.605362,0.686777,0.402336,0.073378,0.165059,1.111903,
+       0.662732,0.66504,0.34425,0.101889,0.14735,1.091226,
+       0.662732,0.66504,0.34425,0.101889,0.14735,1.091226,
+       0.605362,0.686777,0.402336,0.073378,0.165059,1.111903,
+       0.717843,0.607615,0.33986,0.107664,0.139824,1.094648,
+       0.717843,0.607615,0.33986,0.107664,0.139824,1.094648,
+       0.605362,0.686777,0.402336,0.073378,0.165059,1.111903,
+       0.746149,0.525881,0.408303,0.103773,0.13477,1.111903,
+       0.849124,0.419187,0.321357,0.13166,0.098719,1.095377,
+       0.746149,0.525881,0.408303,0.103773,0.13477,1.111903,
+       0.848153,0.348489,0.398988,0.127095,0.095297,1.111903,
+       0.746149,0.525881,0.408303,0.103773,0.13477,1.111903,
+       0.849124,0.419187,0.321357,0.13166,0.098719,1.095377,
+       0.814338,0.481145,0.32458,0.12778,0.108086,1.091226,
+       0.746149,0.525881,0.408303,0.103773,0.13477,1.111903,
+       0.814338,0.481145,0.32458,0.12778,0.108086,1.091226,
+       0.814338,0.481145,0.32458,0.122809,0.120086,1.085909,
+       0.746149,0.525881,0.408303,0.103773,0.13477,1.111903,
+       0.814338,0.481145,0.32458,0.122809,0.120086,1.085909,
+       0.814338,0.481145,0.32458,0.113594,0.132096,1.091226,
+       0.746149,0.525881,0.408303,0.103773,0.13477,1.111903,
+       0.814338,0.481145,0.32458,0.113594,0.132096,1.091226,
+       0.717843,0.607615,0.33986,0.107664,0.139824,1.094648,
+       0.100924,0.993347,0.05547,0,0.292672,0.308415,
+       0.283658,0.958361,0.032903,0.07279,0.281365,0.01023,
+       0,0.999983,-0.005782,0,0.290889,0,
+       0.434893,0.342116,0.832961,0.059913,0.077809,1.192457,
+       0.457499,0.59115,0.664256,0.059913,0.13477,1.157482,
+       0.311652,0.426328,0.849187,0.042365,0.095297,1.192457,
+       0.457499,0.59115,0.664256,0.059913,0.13477,1.157482,
+       0.434893,0.342116,0.832961,0.059913,0.077809,1.192457,
+       0.619313,0.438782,0.651092,0.08473,0.110039,1.157482,
+       0.524068,0.23846,0.817612,0.073378,0.05502,1.192457,
+       0.619313,0.438782,0.651092,0.08473,0.110039,1.157482,
+       0.434893,0.342116,0.832961,0.059913,0.077809,1.192457,
+       0.619313,0.438782,0.651092,0.08473,0.110039,1.157482,
+       0.524068,0.23846,0.817612,0.073378,0.05502,1.192457,
+       0.720425,0.289908,0.630032,0.103773,0.077809,1.157482,
+       0.848153,0.348489,0.398988,0.127095,0.095297,1.111903,
+       0.619313,0.438782,0.651092,0.08473,0.110039,1.157482,
+       0.720425,0.289908,0.630032,0.103773,0.077809,1.157482,
+       0.619313,0.438782,0.651092,0.08473,0.110039,1.157482,
+       0.848153,0.348489,0.398988,0.127095,0.095297,1.111903,
+       0.746149,0.525881,0.408303,0.103773,0.13477,1.111903,
+       0.304882,0.147067,0.940967,0.037983,0.02848,1.214443,
+       0.434893,0.342116,0.832961,0.059913,0.077809,1.192457,
+       0.247221,0.204672,0.947096,0.031013,0.040277,1.214443,
+       0.434893,0.342116,0.832961,0.059913,0.077809,1.192457,
+       0.304882,0.147067,0.940967,0.037983,0.02848,1.214443,
+       0.524068,0.23846,0.817612,0.073378,0.05502,1.192457,
+       0.341624,0.080671,0.936368,0.042365,0.014742,1.214443,
+       0.304882,0.147067,0.940967,0.037983,0.02848,1.214443,
+       0.012418,0.084509,0.996345,0,0,1.221942,
+       0.341624,0.080671,0.936368,0.042365,0.014742,1.214443,
+       0.524068,0.23846,0.817612,0.073378,0.05502,1.192457,
+       0.304882,0.147067,0.940967,0.037983,0.02848,1.214443,
+       0.524068,0.23846,0.817612,0.073378,0.05502,1.192457,
+       0.341624,0.080671,0.936368,0.042365,0.014742,1.214443,
+       0.577629,0.123653,0.806879,0.081843,0.02848,1.192457,
+       0.577629,0.123653,0.806879,0.081843,0.02848,1.192457,
+       0.720425,0.289908,0.630032,0.103773,0.077809,1.157482,
+       0.524068,0.23846,0.817612,0.073378,0.05502,1.192457,
+       0.720425,0.289908,0.630032,0.103773,0.077809,1.157482,
+       0.577629,0.123653,0.806879,0.081843,0.02848,1.192457,
+       0.757352,0.141892,0.637404,0.115744,0.040277,1.157482,
+       0.875474,0.181663,0.447821,0.141756,0.049329,1.111903,
+       0.720425,0.289908,0.630032,0.103773,0.077809,1.157482,
+       0.757352,0.141892,0.637404,0.115744,0.040277,1.157482,
+       0.720425,0.289908,0.630032,0.103773,0.077809,1.157482,
+       0.875474,0.181663,0.447821,0.141756,0.049329,1.111903,
+       0.848153,0.348489,0.398988,0.127095,0.095297,1.111903,
+       0.376048,0.038121,0.925816,0.04386,0,1.214443,
+       0.341624,0.080671,0.936368,0.042365,0.014742,1.214443,
+       0.012418,0.084509,0.996345,0,0,1.221942,
+       0.376048,0.038121,0.925816,0.04386,0,1.214443,
+       0.577629,0.123653,0.806879,0.081843,0.02848,1.192457,
+       0.341624,0.080671,0.936368,0.042365,0.014742,1.214443,
+       0.577629,0.123653,0.806879,0.081843,0.02848,1.192457,
+       0.376048,0.038121,0.925816,0.04386,0,1.214443,
+       0.63304,0.064173,0.771454,0.08473,0,1.192457,
+       0.63304,0.064173,0.771454,0.08473,0,1.192457,
+       0.757352,0.141892,0.637404,0.115744,0.040277,1.157482,
+       0.577629,0.123653,0.806879,0.081843,0.02848,1.192457,
+       0.757352,0.141892,0.637404,0.115744,0.040277,1.157482,
+       0.63304,0.064173,0.771454,0.08473,0,1.192457,
+       0.81226,0.082341,0.577454,0.119827,0,1.157482,
+       0.875474,0.181663,0.447821,0.141756,0.049329,1.111903,
+       0.81226,0.082341,0.577454,0.119827,0,1.157482,
+       0.923246,0.093592,0.372635,0.146757,0,1.111903,
+       0.81226,0.082341,0.577454,0.119827,0,1.157482,
+       0.875474,0.181663,0.447821,0.141756,0.049329,1.111903,
+       0.757352,0.141892,0.637404,0.115744,0.040277,1.157482,
+       0.931595,0.193458,0.307742,0.148197,0.05157,1.090997,
+       0.923246,0.093592,0.372635,0.146757,0,1.111903,
+       0.948303,0.096132,0.302456,0.154986,0,1.086101,
+       0.923246,0.093592,0.372635,0.146757,0,1.111903,
+       0.931595,0.193458,0.307742,0.148197,0.05157,1.090997,
+       0.875474,0.181663,0.447821,0.141756,0.049329,1.111903,
+       0.167861,0.981775,0.089114,0.041134,0.213045,1.001864,
+       0.324762,0.943628,0.064002,0.04386,0.212579,1.001864,
+       0.376389,0.926462,0,0.04386,0.212579,0.997651,
+       0.295615,0.925472,0.236882,0.042365,0.205336,1.058824,
+       0.500207,0.863755,0.061001,0.08473,0.190593,1.001864,
+       0.324762,0.943628,0.064002,0.04386,0.212579,1.001864,
+       0.500207,0.863755,0.061001,0.08473,0.190593,1.001864,
+       0.295615,0.925472,0.236882,0.042365,0.205336,1.058824,
+       0.579702,0.777975,0.242282,0.081843,0.184099,1.058824,
+       0.301659,0.807294,0.507226,0.037983,0.184099,1.111903,
+       0.579702,0.777975,0.242282,0.081843,0.184099,1.058824,
+       0.295615,0.925472,0.236882,0.042365,0.205336,1.058824,
+       0.579702,0.777975,0.242282,0.081843,0.184099,1.058824,
+       0.301659,0.807294,0.507226,0.037983,0.184099,1.111903,
+       0.605362,0.686777,0.402336,0.073378,0.165059,1.111903,
+       0.301659,0.807294,0.507226,0.037983,0.184099,1.111903,
+       0.457499,0.59115,0.664256,0.059913,0.13477,1.157482,
+       0.605362,0.686777,0.402336,0.073378,0.165059,1.111903,
+       0.457499,0.59115,0.664256,0.059913,0.13477,1.157482,
+       0.301659,0.807294,0.507226,0.037983,0.184099,1.111903,
+       0.223446,0.645606,0.73025,0.031013,0.150316,1.157482,
+       0.311652,0.426328,0.849187,0.042365,0.095297,1.192457,
+       0.223446,0.645606,0.73025,0.031013,0.150316,1.157482,
+       0.171508,0.455084,0.873775,0.02193,0.10629,1.192457,
+       0.223446,0.645606,0.73025,0.031013,0.150316,1.157482,
+       0.311652,0.426328,0.849187,0.042365,0.095297,1.192457,
+       0.457499,0.59115,0.664256,0.059913,0.13477,1.157482,
+       0.171497,0.24914,0.953162,0.02193,0.049329,1.214443,
+       0.171508,0.455084,0.873775,0.02193,0.10629,1.192457,
+       0.082478,0.276507,0.957466,0.011352,0.05502,1.214443,
+       0.171508,0.455084,0.873775,0.02193,0.10629,1.192457,
+       0.171497,0.24914,0.953162,0.02193,0.049329,1.214443,
+       0.311652,0.426328,0.849187,0.042365,0.095297,1.192457,
+       0.171497,0.24914,0.953162,0.02193,0.049329,1.214443,
+       0.082478,0.276507,0.957466,0.011352,0.05502,1.214443,
+       0.012418,0.084509,0.996345,0,0,1.221942,
+       0.048912,0.971204,0.233174,0,0.212579,1.058824,
+       0.167861,0.981775,0.089114,0.041134,0.213045,1.001864,
+       0.062068,0.99278,0.102645,0,0.220078,1.001864,
+       0.167861,0.981775,0.089114,0.041134,0.213045,1.001864,
+       0.295615,0.925472,0.236882,0.042365,0.205336,1.058824,
+       0.324762,0.943628,0.064002,0.04386,0.212579,1.001864,
+       0.295615,0.925472,0.236882,0.042365,0.205336,1.058824,
+       0.167861,0.981775,0.089114,0.041134,0.213045,1.001864,
+       0.048912,0.971204,0.233174,0,0.212579,1.058824,
+       -0.000403,0.875175,0.483806,0,0.190593,1.111903,
+       0.295615,0.925472,0.236882,0.042365,0.205336,1.058824,
+       0.048912,0.971204,0.233174,0,0.212579,1.058824,
+       0.295615,0.925472,0.236882,0.042365,0.205336,1.058824,
+       -0.000403,0.875175,0.483806,0,0.190593,1.111903,
+       0.301659,0.807294,0.507226,0.037983,0.184099,1.111903,
+       0.018377,0.706803,0.707171,0,0.155619,1.157482,
+       0.301659,0.807294,0.507226,0.037983,0.184099,1.111903,
+       -0.000403,0.875175,0.483806,0,0.190593,1.111903,
+       0.301659,0.807294,0.507226,0.037983,0.184099,1.111903,
+       0.018377,0.706803,0.707171,0,0.155619,1.157482,
+       0.223446,0.645606,0.73025,0.031013,0.150316,1.157482,
+       0.022695,0.483335,0.875141,0,0.110039,1.192457,
+       0.223446,0.645606,0.73025,0.031013,0.150316,1.157482,
+       0.018377,0.706803,0.707171,0,0.155619,1.157482,
+       0.223446,0.645606,0.73025,0.031013,0.150316,1.157482,
+       0.022695,0.483335,0.875141,0,0.110039,1.192457,
+       0.171508,0.455084,0.873775,0.02193,0.10629,1.192457,
+       0.082478,0.276507,0.957466,0.011352,0.05502,1.214443,
+       0.022695,0.483335,0.875141,0,0.110039,1.192457,
+       0.005074,0.25872,0.965939,0,0.05696,1.214443,
+       0.022695,0.483335,0.875141,0,0.110039,1.192457,
+       0.082478,0.276507,0.957466,0.011352,0.05502,1.214443,
+       0.171508,0.455084,0.873775,0.02193,0.10629,1.192457,
+       0.082478,0.276507,0.957466,0.011352,0.05502,1.214443,
+       0.005074,0.25872,0.965939,0,0.05696,1.214443,
+       0.012418,0.084509,0.996345,0,0,1.221942,
+       0.012418,0.084509,0.996345,0,0,1.221942,
+       0.005074,0.25872,0.965939,0,0.05696,1.214443,
+       -0.063714,0.27702,0.958749,-0.014742,0.05502,1.214443,
+       -0.48015,0.86905,0.119198,-0.110039,0.190593,1.001864,
+       -0.249995,0.932995,0.258889,-0.05502,0.205336,1.058824,
+       -0.231735,0.965999,0.114651,-0.05696,0.212579,1.001864,
+       -0.249995,0.932995,0.258889,-0.05502,0.205336,1.058824,
+       -0.48015,0.86905,0.119198,-0.110039,0.190593,1.001864,
+       -0.50048,0.817794,0.284135,-0.10629,0.184099,1.058824,
+       -0.430509,0.751368,0.500107,-0.095297,0.165059,1.111903,
+       -0.249995,0.932995,0.258889,-0.05502,0.205336,1.058824,
+       -0.50048,0.817794,0.284135,-0.10629,0.184099,1.058824,
+       -0.249995,0.932995,0.258889,-0.05502,0.205336,1.058824,
+       -0.430509,0.751368,0.500107,-0.095297,0.165059,1.111903,
+       -0.24095,0.817816,0.522609,-0.049329,0.184099,1.111903,
+       -0.349991,0.614303,0.707204,-0.077809,0.13477,1.157482,
+       -0.24095,0.817816,0.522609,-0.049329,0.184099,1.111903,
+       -0.430509,0.751368,0.500107,-0.095297,0.165059,1.111903,
+       -0.24095,0.817816,0.522609,-0.049329,0.184099,1.111903,
+       -0.349991,0.614303,0.707204,-0.077809,0.13477,1.157482,
+       -0.179072,0.683956,0.707204,-0.040277,0.150316,1.157482,
+       -0.245627,0.435403,0.866078,-0.05502,0.095297,1.192457,
+       -0.179072,0.683956,0.707204,-0.040277,0.150316,1.157482,
+       -0.349991,0.614303,0.707204,-0.077809,0.13477,1.157482,
+       -0.179072,0.683956,0.707204,-0.040277,0.150316,1.157482,
+       -0.245627,0.435403,0.866078,-0.05502,0.095297,1.192457,
+       -0.124567,0.48414,0.866078,-0.02848,0.10629,1.192457,
+       -0.133242,0.25109,0.958749,-0.02848,0.049329,1.214443,
+       -0.124567,0.48414,0.866078,-0.02848,0.10629,1.192457,
+       -0.245627,0.435403,0.866078,-0.05502,0.095297,1.192457,
+       -0.124567,0.48414,0.866078,-0.02848,0.10629,1.192457,
+       -0.133242,0.25109,0.958749,-0.02848,0.049329,1.214443,
+       -0.063714,0.27702,0.958749,-0.014742,0.05502,1.214443,
+       0.012418,0.084509,0.996345,0,0,1.221942,
+       -0.063714,0.27702,0.958749,-0.014742,0.05502,1.214443,
+       -0.133242,0.25109,0.958749,-0.02848,0.049329,1.214443,
+       0.935393,0.051194,0.349884,0.205383,0,0.747973,
+       0.83962,0,0.543174,0.166851,0.067533,0.807535,
+       0.83962,0,0.543174,0.175742,0,0.793792,
+       0.83962,0,0.543174,0.166851,0.067533,0.807535,
+       0.935393,0.051194,0.349884,0.205383,0,0.747973,
+       0.90795,0.034033,0.417694,0.197659,0.059532,0.759913,
+       0.83962,0,0.543174,0.166851,0.067533,0.807535,
+       0.90795,0.034033,0.417694,0.197659,0.059532,0.759913,
+       0.83962,0,0.543174,0.175201,0.114294,0.794628,
+       0.83962,0,0.543174,0.166851,0.067533,0.807535,
+       0.83962,0,0.543174,0.175201,0.114294,0.794628,
+       0.83962,0,0.543174,0.140784,0.130464,0.847828,
+       0.83962,0,0.543174,0.140784,0.130464,0.847828,
+       0.83962,0,0.543174,0.175201,0.114294,0.794628,
+       0.83962,0,0.543174,0.140043,0.160058,0.848974,
+       0.83962,0,0.543174,0.140784,0.130464,0.847828,
+       0.83962,0,0.543174,0.140043,0.160058,0.848974,
+       0.83962,0,0.543174,0.099318,0.184504,0.911925,
+       0.83962,0,0.543174,0.099318,0.184504,0.911925,
+       0.83962,0,0.543174,0.140043,0.160058,0.848974,
+       0.83962,0,0.543174,0.095242,0.193568,0.918226,
+       0.83962,0,0.543174,0.099318,0.184504,0.911925,
+       0.83962,0,0.543174,0.095242,0.193568,0.918226,
+       0.83962,0,0.543174,0.08473,0.190593,0.934475,
+       0.83962,0,0.543174,0.08473,0.190593,0.934475,
+       0.83962,0,0.543174,0.095242,0.193568,0.918226,
+       0.83962,0,0.543174,0.04386,0.212579,0.997651,
+       0.83962,0,0.543174,0.04386,0.212579,0.997651,
+       0.83962,0,0.543174,0.095242,0.193568,0.918226,
+       0.83962,0,0.543174,0.044468,0.212784,0.996711,
+       0.83962,0,0.543174,0.04386,0.212579,0.997651,
+       0.83962,0,0.543174,0.044468,0.212784,0.996711,
+       0.83962,0,0.543174,0.041134,0.213045,1.001864,
+       -0.69037,0.69037,0.216285,-0.150316,0.150316,1.058824,
+       -0.48015,0.86905,0.119198,-0.110039,0.190593,1.001864,
+       -0.702583,0.702583,0.112929,-0.155619,0.155619,1.001864,
+       -0.48015,0.86905,0.119198,-0.110039,0.190593,1.001864,
+       -0.69037,0.69037,0.216285,-0.150316,0.150316,1.058824,
+       -0.50048,0.817794,0.284135,-0.10629,0.184099,1.058824,
+       -0.627248,0.627248,0.46165,-0.13477,0.13477,1.111903,
+       -0.50048,0.817794,0.284135,-0.10629,0.184099,1.058824,
+       -0.69037,0.69037,0.216285,-0.150316,0.150316,1.058824,
+       -0.50048,0.817794,0.284135,-0.10629,0.184099,1.058824,
+       -0.627248,0.627248,0.46165,-0.13477,0.13477,1.111903,
+       -0.430509,0.751368,0.500107,-0.095297,0.165059,1.111903,
+       -0.517383,0.501035,0.693742,-0.110039,0.110039,1.157482,
+       -0.430509,0.751368,0.500107,-0.095297,0.165059,1.111903,
+       -0.627248,0.627248,0.46165,-0.13477,0.13477,1.111903,
+       -0.430509,0.751368,0.500107,-0.095297,0.165059,1.111903,
+       -0.517383,0.501035,0.693742,-0.110039,0.110039,1.157482,
+       -0.349991,0.614303,0.707204,-0.077809,0.13477,1.157482,
+       -0.349948,0.356994,0.866078,-0.077809,0.077809,1.192457,
+       -0.349991,0.614303,0.707204,-0.077809,0.13477,1.157482,
+       -0.517383,0.501035,0.693742,-0.110039,0.110039,1.157482,
+       -0.349991,0.614303,0.707204,-0.077809,0.13477,1.157482,
+       -0.349948,0.356994,0.866078,-0.077809,0.077809,1.192457,
+       -0.245627,0.435403,0.866078,-0.05502,0.095297,1.192457,
+       -0.193688,0.208049,0.958749,-0.040277,0.040277,1.214443,
+       -0.245627,0.435403,0.866078,-0.05502,0.095297,1.192457,
+       -0.349948,0.356994,0.866078,-0.077809,0.077809,1.192457,
+       -0.245627,0.435403,0.866078,-0.05502,0.095297,1.192457,
+       -0.193688,0.208049,0.958749,-0.040277,0.040277,1.214443,
+       -0.133242,0.25109,0.958749,-0.02848,0.049329,1.214443,
+       0.012418,0.084509,0.996345,0,0,1.221942,
+       -0.133242,0.25109,0.958749,-0.02848,0.049329,1.214443,
+       -0.193688,0.208049,0.958749,-0.040277,0.040277,1.214443,
+       -0.69037,0.69037,0.216285,-0.150316,0.150316,1.058824,
+       -0.860077,0.496488,0.117332,-0.190593,0.110039,1.001864,
+       -0.837235,0.481678,0.258889,-0.184099,0.10629,1.058824,
+       -0.860077,0.496488,0.117332,-0.190593,0.110039,1.001864,
+       -0.69037,0.69037,0.216285,-0.150316,0.150316,1.058824,
+       -0.702583,0.702583,0.112929,-0.155619,0.155619,1.001864,
+       -0.627248,0.627248,0.46165,-0.13477,0.13477,1.111903,
+       -0.837235,0.481678,0.258889,-0.184099,0.10629,1.058824,
+       -0.751368,0.430509,0.500107,-0.165059,0.095297,1.111903,
+       -0.837235,0.481678,0.258889,-0.184099,0.10629,1.058824,
+       -0.627248,0.627248,0.46165,-0.13477,0.13477,1.111903,
+       -0.69037,0.69037,0.216285,-0.150316,0.150316,1.058824,
+       -0.517383,0.501035,0.693742,-0.110039,0.110039,1.157482,
+       -0.751368,0.430509,0.500107,-0.165059,0.095297,1.111903,
+       -0.627494,0.326475,0.70687,-0.13477,0.077809,1.157482,
+       -0.751368,0.430509,0.500107,-0.165059,0.095297,1.111903,
+       -0.517383,0.501035,0.693742,-0.110039,0.110039,1.157482,
+       -0.627248,0.627248,0.46165,-0.13477,0.13477,1.111903,
+       -0.430421,0.254256,0.866078,-0.095297,0.05502,1.192457,
+       -0.517383,0.501035,0.693742,-0.110039,0.110039,1.157482,
+       -0.627494,0.326475,0.70687,-0.13477,0.077809,1.157482,
+       -0.517383,0.501035,0.693742,-0.110039,0.110039,1.157482,
+       -0.430421,0.254256,0.866078,-0.095297,0.05502,1.192457,
+       -0.349948,0.356994,0.866078,-0.077809,0.077809,1.192457,
+       -0.240936,0.15083,0.958749,-0.049329,0.02848,1.214443,
+       -0.349948,0.356994,0.866078,-0.077809,0.077809,1.192457,
+       -0.430421,0.254256,0.866078,-0.095297,0.05502,1.192457,
+       -0.349948,0.356994,0.866078,-0.077809,0.077809,1.192457,
+       -0.240936,0.15083,0.958749,-0.049329,0.02848,1.214443,
+       -0.193688,0.208049,0.958749,-0.040277,0.040277,1.214443,
+       0.012418,0.084509,0.996345,0,0,1.221942,
+       -0.193688,0.208049,0.958749,-0.040277,0.040277,1.214443,
+       -0.240936,0.15083,0.958749,-0.049329,0.02848,1.214443,
+       -0.837235,0.481678,0.258889,-0.184099,0.10629,1.058824,
+       -0.959271,0.256966,0.117332,-0.212579,0.05696,1.001864,
+       -0.933374,0.248573,0.258889,-0.205336,0.05502,1.058824,
+       -0.959271,0.256966,0.117332,-0.212579,0.05696,1.001864,
+       -0.837235,0.481678,0.258889,-0.184099,0.10629,1.058824,
+       -0.860077,0.496488,0.117332,-0.190593,0.110039,1.001864,
+       -0.751368,0.430509,0.500107,-0.165059,0.095297,1.111903,
+       -0.933374,0.248573,0.258889,-0.205336,0.05502,1.058824,
+       -0.831628,0.204716,0.516223,-0.184099,0.049329,1.111903,
+       -0.933374,0.248573,0.258889,-0.205336,0.05502,1.058824,
+       -0.751368,0.430509,0.500107,-0.165059,0.095297,1.111903,
+       -0.837235,0.481678,0.258889,-0.184099,0.10629,1.058824,
+       -0.627494,0.326475,0.70687,-0.13477,0.077809,1.157482,
+       -0.831628,0.204716,0.516223,-0.184099,0.049329,1.111903,
+       -0.668799,0.16246,0.725476,-0.150316,0.040277,1.157482,
+       -0.831628,0.204716,0.516223,-0.184099,0.049329,1.111903,
+       -0.627494,0.326475,0.70687,-0.13477,0.077809,1.157482,
+       -0.751368,0.430509,0.500107,-0.165059,0.095297,1.111903,
+       -0.481561,0.134192,0.866078,-0.10629,0.02848,1.192457,
+       -0.627494,0.326475,0.70687,-0.13477,0.077809,1.157482,
+       -0.668799,0.16246,0.725476,-0.150316,0.040277,1.157482,
+       -0.627494,0.326475,0.70687,-0.13477,0.077809,1.157482,
+       -0.481561,0.134192,0.866078,-0.10629,0.02848,1.192457,
+       -0.430421,0.254256,0.866078,-0.095297,0.05502,1.192457,
+       -0.271764,0.083332,0.958749,-0.05502,0.014742,1.214443,
+       -0.430421,0.254256,0.866078,-0.095297,0.05502,1.192457,
+       -0.481561,0.134192,0.866078,-0.10629,0.02848,1.192457,
+       -0.430421,0.254256,0.866078,-0.095297,0.05502,1.192457,
+       -0.271764,0.083332,0.958749,-0.05502,0.014742,1.214443,
+       -0.240936,0.15083,0.958749,-0.049329,0.02848,1.214443,
+       0.012418,0.084509,0.996345,0,0,1.221942,
+       -0.240936,0.15083,0.958749,-0.049329,0.02848,1.214443,
+       -0.271764,0.083332,0.958749,-0.05502,0.014742,1.214443,
+       -0.933374,0.248573,0.258889,-0.205336,0.05502,1.058824,
+       -0.984196,0.129572,0.120707,-0.220078,0,1.001864,
+       -0.946203,0.12457,0.298635,-0.212579,0,1.058824,
+       -0.984196,0.129572,0.120707,-0.220078,0,1.001864,
+       -0.933374,0.248573,0.258889,-0.205336,0.05502,1.058824,
+       -0.959271,0.256966,0.117332,-0.212579,0.05696,1.001864,
+       -0.831628,0.204716,0.516223,-0.184099,0.049329,1.111903,
+       -0.946203,0.12457,0.298635,-0.212579,0,1.058824,
+       -0.860389,0.113272,0.496891,-0.190593,0,1.111903,
+       -0.946203,0.12457,0.298635,-0.212579,0,1.058824,
+       -0.831628,0.204716,0.516223,-0.184099,0.049329,1.111903,
+       -0.933374,0.248573,0.258889,-0.205336,0.05502,1.058824,
+       -0.73389,0.096619,0.672361,-0.155619,0,1.157482,
+       -0.831628,0.204716,0.516223,-0.184099,0.049329,1.111903,
+       -0.860389,0.113272,0.496891,-0.190593,0,1.111903,
+       -0.831628,0.204716,0.516223,-0.184099,0.049329,1.111903,
+       -0.73389,0.096619,0.672361,-0.155619,0,1.157482,
+       -0.668799,0.16246,0.725476,-0.150316,0.040277,1.157482,
+       -0.536052,0.070573,0.84123,-0.110039,0,1.192457,
+       -0.668799,0.16246,0.725476,-0.150316,0.040277,1.157482,
+       -0.73389,0.096619,0.672361,-0.155619,0,1.157482,
+       -0.668799,0.16246,0.725476,-0.150316,0.040277,1.157482,
+       -0.536052,0.070573,0.84123,-0.110039,0,1.192457,
+       -0.481561,0.134192,0.866078,-0.10629,0.02848,1.192457,
+       -0.30062,0.039577,0.952922,-0.05696,0,1.214443,
+       -0.481561,0.134192,0.866078,-0.10629,0.02848,1.192457,
+       -0.536052,0.070573,0.84123,-0.110039,0,1.192457,
+       -0.481561,0.134192,0.866078,-0.10629,0.02848,1.192457,
+       -0.30062,0.039577,0.952922,-0.05696,0,1.214443,
+       -0.271764,0.083332,0.958749,-0.05502,0.014742,1.214443,
+       0.012418,0.084509,0.996345,0,0,1.221942,
+       -0.271764,0.083332,0.958749,-0.05502,0.014742,1.214443,
+       -0.30062,0.039577,0.952922,-0.05696,0,1.214443,
+       0.376389,0.926462,0,0.04386,0.212579,0.997651,
+       0.500207,0.863755,0.061001,0.08473,0.190593,1.001864,
+       0.415157,0.90975,0,0.08473,0.190593,0.934475,
+       0.500207,0.863755,0.061001,0.08473,0.190593,1.001864,
+       0.376389,0.926462,0,0.04386,0.212579,0.997651,
+       0.324762,0.943628,0.064002,0.04386,0.212579,1.001864,
+       0.062068,0.99278,0.102645,0,0.220078,1.001864,
+       0.324287,0.942926,0.075685,0.044468,0.212784,0.996711,
+       0.389382,0.917677,0.079062,0.075865,0.223333,0.730756,
+       0.324287,0.942926,0.075685,0.044468,0.212784,0.996711,
+       0.062068,0.99278,0.102645,0,0.220078,1.001864,
+       0.167861,0.981775,0.089114,0.041134,0.213045,1.001864,
+       0.3285,0.942649,0.059162,0,0.292672,0.308415,
+       0.413623,0.907654,0.071272,0.075296,0.280143,0.010582,
+       0.283658,0.958361,0.032903,0.07279,0.281365,0.01023,
+       0.413623,0.907654,0.071272,0.075296,0.280143,0.010582,
+       0.3285,0.942649,0.059162,0,0.292672,0.308415,
+       0.389382,0.917677,0.079062,0.075865,0.223333,0.730756,
+       0.062068,0.99278,0.102645,0,0.220078,1.001864,
+       0.389382,0.917677,0.079062,0.075865,0.223333,0.730756,
+       0.100924,0.993347,0.05547,0,0.292672,0.308415,
+       -0.48015,0.86905,0.119198,-0.110039,0.190593,1.001864,
+       -0.300554,0.952495,0.049197,-0.075749,0.2827,0.308415,
+       -0.547548,0.835754,0.041316,-0.146336,0.253462,0.308415,
+       -0.300554,0.952495,0.049197,-0.075749,0.2827,0.308415,
+       -0.48015,0.86905,0.119198,-0.110039,0.190593,1.001864,
+       -0.231735,0.965999,0.114651,-0.05696,0.212579,1.001864,
+       -0.608751,0.79334,-0.005732,-0.20569,0.207176,0.20569,
+       -0.547548,0.835754,0.041316,-0.146336,0.253462,0.308415,
+       -0.461543,0.887099,-0.005776,-0.145866,0.252648,0.145866,
+       -0.547548,0.835754,0.041316,-0.146336,0.253462,0.308415,
+       -0.608751,0.79334,-0.005732,-0.20569,0.207176,0.20569,
+       -0.707095,0.707095,-0.005782,-0.206534,0.206534,0.206534,
+       -0.547548,0.835754,0.041316,-0.146336,0.253462,0.308415,
+       -0.707095,0.707095,-0.005782,-0.206534,0.206534,0.206534,
+       -0.706249,0.706249,0.049244,-0.206951,0.206951,0.308415,
+       -0.702583,0.702583,0.112929,-0.155619,0.155619,1.001864,
+       -0.547548,0.835754,0.041316,-0.146336,0.253462,0.308415,
+       -0.706249,0.706249,0.049244,-0.206951,0.206951,0.308415,
+       -0.547548,0.835754,0.041316,-0.146336,0.253462,0.308415,
+       -0.702583,0.702583,0.112929,-0.155619,0.155619,1.001864,
+       -0.48015,0.86905,0.119198,-0.110039,0.190593,1.001864,
+       -0.702583,0.702583,0.112929,-0.155619,0.155619,1.001864,
+       -0.842251,0.536837,0.049197,-0.253462,0.146336,0.308415,
+       -0.860077,0.496488,0.117332,-0.190593,0.110039,1.001864,
+       -0.842251,0.536837,0.049197,-0.253462,0.146336,0.308415,
+       -0.702583,0.702583,0.112929,-0.155619,0.155619,1.001864,
+       -0.706249,0.706249,0.049244,-0.206951,0.206951,0.308415,
+       -0.860077,0.496488,0.117332,-0.190593,0.110039,1.001864,
+       -0.952495,0.300554,0.049197,-0.2827,0.075749,0.308415,
+       -0.959271,0.256966,0.117332,-0.212579,0.05696,1.001864,
+       -0.952495,0.300554,0.049197,-0.2827,0.075749,0.308415,
+       -0.860077,0.496488,0.117332,-0.190593,0.110039,1.001864,
+       -0.842251,0.536837,0.049197,-0.253462,0.146336,0.308415,
+       -0.959271,0.256966,0.117332,-0.212579,0.05696,1.001864,
+       -0.990262,0.130371,0.048824,-0.292672,0,0.308415,
+       -0.984196,0.129572,0.120707,-0.220078,0,1.001864,
+       -0.990262,0.130371,0.048824,-0.292672,0,0.308415,
+       -0.959271,0.256966,0.117332,-0.212579,0.05696,1.001864,
+       -0.952495,0.300554,0.049197,-0.2827,0.075749,0.308415,
+       0.389382,0.917677,0.079062,0.075865,0.223333,0.730756,
+       0.427508,0.900816,0.075942,0.143524,0.251128,0.020171,
+       0.413623,0.907654,0.071272,0.075296,0.280143,0.010582,
+       -0.216218,0.976328,-0.005776,-0.0754,0.281398,0.0754,
+       -0.013108,0.99872,0.048851,0,0.292672,0.308415,
+       0,0.999983,-0.005782,0,0.290889,0,
+       -0.013108,0.99872,0.048851,0,0.292672,0.308415,
+       -0.216218,0.976328,-0.005776,-0.0754,0.281398,0.0754,
+       -0.300554,0.952495,0.049197,-0.075749,0.2827,0.308415,
+       -0.124567,0.48414,0.866078,-0.02848,0.10629,1.192457,
+       0.018377,0.706803,0.707171,0,0.155619,1.157482,
+       -0.179072,0.683956,0.707204,-0.040277,0.150316,1.157482,
+       0.018377,0.706803,0.707171,0,0.155619,1.157482,
+       -0.124567,0.48414,0.866078,-0.02848,0.10629,1.192457,
+       0.022695,0.483335,0.875141,0,0.110039,1.192457,
+       0.987655,0.110069,0.111458,0.285987,0.003291,0.040193,
+       0.987543,0.10011,0.121395,0.20782,0,0.730756,
+       0.988599,0.100217,0.11238,0.286315,0,0.040239,
+       0.987543,0.10011,0.121395,0.20782,0,0.730756,
+       0.987655,0.110069,0.111458,0.285987,0.003291,0.040193,
+       0.973303,0.191501,0.126525,0.201753,0.059842,0.730756,
+       -0.231735,0.965999,0.114651,-0.05696,0.212579,1.001864,
+       -0.013108,0.99872,0.048851,0,0.292672,0.308415,
+       -0.300554,0.952495,0.049197,-0.075749,0.2827,0.308415,
+       -0.013108,0.99872,0.048851,0,0.292672,0.308415,
+       -0.231735,0.965999,0.114651,-0.05696,0.212579,1.001864,
+       0.062068,0.99278,0.102645,0,0.220078,1.001864,
+       0.389382,0.917677,0.079062,0.075865,0.223333,0.730756,
+       0.518618,0.851337,0.079118,0.144703,0.250479,0.020337,
+       0.427508,0.900816,0.075942,0.143524,0.251128,0.020171,
+       0.518618,0.851337,0.079118,0.144703,0.250479,0.020337,
+       0.389382,0.917677,0.079062,0.075865,0.223333,0.730756,
+       0.595396,0.798295,0.090708,0.118803,0.200235,0.730756,
+       0.879378,0.465339,0.100771,0.248668,0.144018,0.034948,
+       0.786413,0.608998,0.103325,0.155675,0.163491,0.730756,
+       0.908054,0.402355,0.116396,0.183968,0.115606,0.730756,
+       0.786413,0.608998,0.103325,0.155675,0.163491,0.730756,
+       0.879378,0.465339,0.100771,0.248668,0.144018,0.034948,
+       0.824908,0.557247,0.094881,0.247339,0.146303,0.034761,
+       0.963188,0.245466,0.109611,0.27676,0.074466,0.038896,
+       0.908054,0.402355,0.116396,0.183968,0.115606,0.730756,
+       0.973303,0.191501,0.126525,0.201753,0.059842,0.730756,
+       0.908054,0.402355,0.116396,0.183968,0.115606,0.730756,
+       0.963188,0.245466,0.109611,0.27676,0.074466,0.038896,
+       0.933915,0.341689,0.105128,0.275831,0.077426,0.038766,
+       0.879378,0.465339,0.100771,0.248668,0.144018,0.034948,
+       0.908054,0.402355,0.116396,0.183968,0.115606,0.730756,
+       0.933915,0.341689,0.105128,0.275831,0.077426,0.038766,
+       0.595396,0.798295,0.090708,0.118803,0.200235,0.730756,
+       0.733544,0.673775,0.089114,0.20373,0.204036,0.028632,
+       0.656362,0.749796,0.083638,0.202309,0.205477,0.028433,
+       0.733544,0.673775,0.089114,0.20373,0.204036,0.028632,
+       0.595396,0.798295,0.090708,0.118803,0.200235,0.730756,
+       0.786413,0.608998,0.103325,0.155675,0.163491,0.730756,
+       -0.179072,0.683956,0.707204,-0.040277,0.150316,1.157482,
+       -0.000403,0.875175,0.483806,0,0.190593,1.111903,
+       -0.24095,0.817816,0.522609,-0.049329,0.184099,1.111903,
+       -0.000403,0.875175,0.483806,0,0.190593,1.111903,
+       -0.179072,0.683956,0.707204,-0.040277,0.150316,1.157482,
+       0.018377,0.706803,0.707171,0,0.155619,1.157482,
+       0.595396,0.798295,0.090708,0.118803,0.200235,0.730756,
+       0.656362,0.749796,0.083638,0.202309,0.205477,0.028433,
+       0.518618,0.851337,0.079118,0.144703,0.250479,0.020337,
+       0.790198,0.60634,0.089097,0.216049,0.187728,0.030364,
+       0.786413,0.608998,0.103325,0.155675,0.163491,0.730756,
+       0.824908,0.557247,0.094881,0.247339,0.146303,0.034761,
+       0.786413,0.608998,0.103325,0.155675,0.163491,0.730756,
+       0.790198,0.60634,0.089097,0.216049,0.187728,0.030364,
+       0.733544,0.673775,0.089114,0.20373,0.204036,0.028632,
+       -0.249995,0.932995,0.258889,-0.05502,0.205336,1.058824,
+       -0.000403,0.875175,0.483806,0,0.190593,1.111903,
+       0.048912,0.971204,0.233174,0,0.212579,1.058824,
+       -0.000403,0.875175,0.483806,0,0.190593,1.111903,
+       -0.249995,0.932995,0.258889,-0.05502,0.205336,1.058824,
+       -0.24095,0.817816,0.522609,-0.049329,0.184099,1.111903,
+       0.963188,0.245466,0.109611,0.27676,0.074466,0.038896,
+       0.973303,0.191501,0.126525,0.201753,0.059842,0.730756,
+       0.987655,0.110069,0.111458,0.285987,0.003291,0.040193,
+       -0.063714,0.27702,0.958749,-0.014742,0.05502,1.214443,
+       0.022695,0.483335,0.875141,0,0.110039,1.192457,
+       -0.124567,0.48414,0.866078,-0.02848,0.10629,1.192457,
+       0.022695,0.483335,0.875141,0,0.110039,1.192457,
+       -0.063714,0.27702,0.958749,-0.014742,0.05502,1.214443,
+       0.005074,0.25872,0.965939,0,0.05696,1.214443,
+       -0.249995,0.932995,0.258889,-0.05502,0.205336,1.058824,
+       0.062068,0.99278,0.102645,0,0.220078,1.001864,
+       -0.231735,0.965999,0.114651,-0.05696,0.212579,1.001864,
+       0.062068,0.99278,0.102645,0,0.220078,1.001864,
+       -0.249995,0.932995,0.258889,-0.05502,0.205336,1.058824,
+       0.048912,0.971204,0.233174,0,0.212579,1.058824,
+       -0.707107,0,-0.707107,-0.282555,0.07571,0.282555,
+       -0.707107,0,-0.707107,-0.155102,0,0.155102,
+       -0.707107,0,-0.707107,-0.292581,0,0.292581,
+       -0.707107,0,-0.707107,-0.155102,0,0.155102,
+       -0.707107,0,-0.707107,-0.282555,0.07571,0.282555,
+       -0.707107,0,-0.707107,-0.155102,0.158996,0.155102,
+       -0.707107,0,-0.707107,-0.155102,0.158996,0.155102,
+       -0.707107,0,-0.707107,-0.282555,0.07571,0.282555,
+       -0.707107,0,-0.707107,-0.253185,0.146177,0.253185,
+       -0.707107,0,-0.707107,-0.155102,0.158996,0.155102,
+       -0.707107,0,-0.707107,-0.253185,0.146177,0.253185,
+       -0.707107,0,-0.707107,-0.206534,0.206534,0.206534,
+       -0.707107,0,-0.707107,-0.155102,0.158996,0.155102,
+       -0.707107,0,-0.707107,-0.206534,0.206534,0.206534,
+       -0.707107,0,-0.707107,0,0.158996,0,
+       -0.707107,0,-0.707107,0,0.158996,0,
+       -0.707107,0,-0.707107,-0.206534,0.206534,0.206534,
+       -0.707107,0,-0.707107,0,0.290889,0,
+       -0.707107,0,-0.707107,0,0.290889,0,
+       -0.707107,0,-0.707107,-0.206534,0.206534,0.206534,
+       -0.707107,0,-0.707107,-0.20569,0.207176,0.20569,
+       -0.707107,0,-0.707107,0,0.290889,0,
+       -0.707107,0,-0.707107,-0.20569,0.207176,0.20569,
+       -0.707107,0,-0.707107,-0.145866,0.252648,0.145866,
+       -0.707107,0,-0.707107,0,0.290889,0,
+       -0.707107,0,-0.707107,-0.145866,0.252648,0.145866,
+       -0.707107,0,-0.707107,-0.0754,0.281398,0.0754,
+       0.139173,0,-0.990268,0.07279,0.281365,0.01023,
+       0.139173,0,-0.990268,0,0.158996,0,
+       0.139173,0,-0.990268,0,0.290889,0,
+       0.139173,0,-0.990268,0,0.158996,0,
+       0.139173,0,-0.990268,0.07279,0.281365,0.01023,
+       0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+       0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+       0.139173,0,-0.990268,0.07279,0.281365,0.01023,
+       0.139173,0,-0.990268,0.075296,0.280143,0.010582,
+       0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+       0.139173,0,-0.990268,0.075296,0.280143,0.010582,
+       0.139173,0,-0.990268,0.143524,0.251128,0.020171,
+       0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+       0.139173,0,-0.990268,0.143524,0.251128,0.020171,
+       0.139173,0,-0.990268,0.144703,0.250479,0.020337,
+       0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+       0.139173,0,-0.990268,0.144703,0.250479,0.020337,
+       0.139173,0,-0.990268,0.202309,0.205477,0.028433,
+       0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+       0.139173,0,-0.990268,0.202309,0.205477,0.028433,
+       0.139173,0,-0.990268,0.20373,0.204036,0.028632,
+       0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+       0.139173,0,-0.990268,0.20373,0.204036,0.028632,
+       0.139173,0,-0.990268,0.216049,0.187728,0.030364,
+       0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+       0.139173,0,-0.990268,0.216049,0.187728,0.030364,
+       0.139173,0,-0.990268,0.247339,0.146303,0.034761,
+       0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+       0.139173,0,-0.990268,0.286315,0,0.040239,
+       0.139173,0,-0.990268,0.216568,0,0.030437,
+       0.139173,0,-0.990268,0.286315,0,0.040239,
+       0.139173,0,-0.990268,0.216568,0.158996,0.030437,
+       0.139173,0,-0.990268,0.247339,0.146303,0.034761,
+       0.139173,0,-0.990268,0.286315,0,0.040239,
+       0.139173,0,-0.990268,0.247339,0.146303,0.034761,
+       0.139173,0,-0.990268,0.248668,0.144018,0.034948,
+       0.139173,0,-0.990268,0.286315,0,0.040239,
+       0.139173,0,-0.990268,0.248668,0.144018,0.034948,
+       0.139173,0,-0.990268,0.275831,0.077426,0.038766,
+       0.139173,0,-0.990268,0.286315,0,0.040239,
+       0.139173,0,-0.990268,0.275831,0.077426,0.038766,
+       0.139173,0,-0.990268,0.27676,0.074466,0.038896,
+       0.139173,0,-0.990268,0.286315,0,0.040239,
+       0.139173,0,-0.990268,0.27676,0.074466,0.038896,
+       0.139173,0,-0.990268,0.285987,0.003291,0.040193
+};
+static const struct gllist handsy_model_finger_distal_frame = {
+ GL_N3F_V3F, GL_TRIANGLES, 876, handsy_model_finger_distal_data, 0
+};
+const struct gllist *handsy_model_finger_distal = &handsy_model_finger_distal_frame;
+
+static const float handsy_model_finger_intermediate_data[] = {
+       0,1,0,-0.191233,0.158996,0.888552,
+       0,1,0,0,0.158996,1.000796,
+       0,1,0,-0.156938,0.158996,0.843858,
+       0,1,0,0,0.158996,1.000796,
+       0,1,0,-0.191233,0.158996,0.888552,
+       0,1,0,-0.213293,0.158996,0.941808,
+       0,1,0,0,0.158996,1.000796,
+       0,1,0,-0.213293,0.158996,0.941808,
+       0,1,0,-0.220817,0.158996,0.99896,
+       0,1,0,0,0.158996,1.000796,
+       0,1,0,-0.220817,0.158996,0.99896,
+       0,1,0,-0.213293,0.158996,1.056112,
+       0,1,0,0,0.158996,1.000796,
+       0,1,0,-0.213293,0.158996,1.056112,
+       0,1,0,0.220575,0.158996,1.000796,
+       0,1,0,0.220575,0.158996,1.000796,
+       0,1,0,-0.213293,0.158996,1.056112,
+       0,1,0,0.213293,0.158996,1.056112,
+       0,1,0,0.213293,0.158996,1.056112,
+       0,1,0,-0.213293,0.158996,1.056112,
+       0,1,0,-0.191233,0.158996,1.109368,
+       0,1,0,0.213293,0.158996,1.056112,
+       0,1,0,-0.191233,0.158996,1.109368,
+       0,1,0,0.191233,0.158996,1.109368,
+       0,1,0,0.191233,0.158996,1.109368,
+       0,1,0,-0.191233,0.158996,1.109368,
+       0,1,0,-0.156141,0.158996,1.155101,
+       0,1,0,0.191233,0.158996,1.109368,
+       0,1,0,-0.156141,0.158996,1.155101,
+       0,1,0,0.156141,0.158996,1.155101,
+       0,1,0,0.156141,0.158996,1.155101,
+       0,1,0,-0.156141,0.158996,1.155101,
+       0,1,0,-0.155102,0.158996,1.155898,
+       0,1,0,0.156141,0.158996,1.155101,
+       0,1,0,-0.155102,0.158996,1.155898,
+       0,1,0,0.110408,0.158996,1.190193,
+       0,1,0,0.110408,0.158996,1.190193,
+       0,1,0,-0.155102,0.158996,1.155898,
+       0,1,0,-0.110408,0.158996,1.190193,
+       0,1,0,0.110408,0.158996,1.190193,
+       0,1,0,-0.110408,0.158996,1.190193,
+       0,1,0,-0.057152,0.158996,1.212253,
+       0,1,0,0.110408,0.158996,1.190193,
+       0,1,0,-0.057152,0.158996,1.212253,
+       0,1,0,0.057152,0.158996,1.212253,
+       0,1,0,0.057152,0.158996,1.212253,
+       0,1,0,-0.057152,0.158996,1.212253,
+       0,1,0,0,0.158996,1.219777,
+       0,1,0,0.220575,0.158996,1.000796,
+       0,1,0,0.216568,0.158996,0.970359,
+       0,1,0,0,0.158996,1.000796,
+       -0.707107,0,0.707107,-0.156938,0,0.843858,
+       -0.707107,0,0.707107,-0.293114,0.07854,0.707681,
+       -0.707107,0,0.707107,-0.303917,0,0.696878,
+       -0.707107,0,0.707107,-0.293114,0.07854,0.707681,
+       -0.707107,0,0.707107,-0.156938,0,0.843858,
+       -0.707107,0,0.707107,-0.26163,0.151052,0.739165,
+       -0.707107,0,0.707107,-0.26163,0.151052,0.739165,
+       -0.707107,0,0.707107,-0.156938,0,0.843858,
+       -0.707107,0,0.707107,-0.212119,0.212119,0.788676,
+       -0.707107,0,0.707107,-0.212119,0.212119,0.788676,
+       -0.707107,0,0.707107,-0.156938,0,0.843858,
+       -0.707107,0,0.707107,-0.156938,0.158996,0.843858,
+       -0.707107,0,0.707107,-0.212119,0.212119,0.788676,
+       -0.707107,0,0.707107,-0.156938,0.158996,0.843858,
+       -0.707107,0,0.707107,-0.14863,0.257435,0.852165,
+       -0.707107,0,0.707107,-0.14863,0.257435,0.852165,
+       -0.707107,0,0.707107,-0.156938,0.158996,0.843858,
+       -0.707107,0,0.707107,0,0.158996,1.000796,
+       -0.707107,0,0.707107,-0.14863,0.257435,0.852165,
+       -0.707107,0,0.707107,0,0.158996,1.000796,
+       -0.707107,0,0.707107,-0.076132,0.28413,0.924663,
+       -0.707107,0,0.707107,-0.076132,0.28413,0.924663,
+       -0.707107,0,0.707107,0,0.158996,1.000796,
+       -0.707107,0,0.707107,0,0.290889,1.000796,
+       -0.97545,0.216024,0.042787,-0.293114,0.07854,0.707681,
+       -0.990551,0.130408,0.042462,-0.32007,0,0.32007,
+       -0.990551,0.130408,0.042462,-0.303917,0,0.696878,
+       -0.990551,0.130408,0.042462,-0.32007,0,0.32007,
+       -0.97545,0.216024,0.042787,-0.293114,0.07854,0.707681,
+       -0.952777,0.300643,0.042787,-0.309598,0.082956,0.309598,
+       -0.461128,0.886301,0.042787,-0.163393,0.283005,0.163393,
+       -0.300643,0.952777,0.042787,-0.076132,0.28413,0.924663,
+       -0.216024,0.97545,0.042787,-0.085443,0.318879,0.085443,
+       -0.300643,0.952777,0.042787,-0.076132,0.28413,0.924663,
+       -0.461128,0.886301,0.042787,-0.163393,0.283005,0.163393,
+       -0.536995,0.842499,0.042787,-0.14863,0.257435,0.852165,
+       -0.886301,0.461128,0.042787,-0.26163,0.151052,0.739165,
+       -0.952777,0.300643,0.042787,-0.309598,0.082956,0.309598,
+       -0.97545,0.216024,0.042787,-0.293114,0.07854,0.707681,
+       -0.952777,0.300643,0.042787,-0.309598,0.082956,0.309598,
+       -0.886301,0.461128,0.042787,-0.26163,0.151052,0.739165,
+       -0.842499,0.536995,0.042787,-0.278724,0.160921,0.278724,
+       -0.736753,0.674807,0.042787,-0.212119,0.212119,0.788676,
+       -0.842499,0.536995,0.042787,-0.278724,0.160921,0.278724,
+       -0.886301,0.461128,0.042787,-0.26163,0.151052,0.739165,
+       -0.842499,0.536995,0.042787,-0.278724,0.160921,0.278724,
+       -0.736753,0.674807,0.042787,-0.212119,0.212119,0.788676,
+       -0.674807,0.736753,0.042787,-0.229082,0.229082,0.229082,
+       -0.707107,0,-0.707107,-0.309598,0.082956,0.309598,
+       -0.707107,0,-0.707107,-0.188122,0,0.188122,
+       -0.707107,0,-0.707107,-0.32007,0,0.32007,
+       -0.707107,0,-0.707107,-0.188122,0,0.188122,
+       -0.707107,0,-0.707107,-0.309598,0.082956,0.309598,
+       -0.707107,0,-0.707107,-0.188122,0.191561,0.188122,
+       -0.707107,0,-0.707107,-0.188122,0.191561,0.188122,
+       -0.707107,0,-0.707107,-0.309598,0.082956,0.309598,
+       -0.707107,0,-0.707107,-0.278724,0.160921,0.278724,
+       -0.707107,0,-0.707107,-0.188122,0.191561,0.188122,
+       -0.707107,0,-0.707107,-0.278724,0.160921,0.278724,
+       -0.707107,0,-0.707107,-0.229082,0.229082,0.229082,
+       -0.707107,0,-0.707107,-0.188122,0.191561,0.188122,
+       -0.707107,0,-0.707107,-0.229082,0.229082,0.229082,
+       -0.707107,0,-0.707107,0,0.191561,0,
+       -0.707107,0,-0.707107,0,0.191561,0,
+       -0.707107,0,-0.707107,-0.229082,0.229082,0.229082,
+       -0.707107,0,-0.707107,0,0.333791,0,
+       -0.707107,0,-0.707107,0,0.333791,0,
+       -0.707107,0,-0.707107,-0.229082,0.229082,0.229082,
+       -0.707107,0,-0.707107,-0.163393,0.283005,0.163393,
+       -0.707107,0,-0.707107,0,0.333791,0,
+       -0.707107,0,-0.707107,-0.163393,0.283005,0.163393,
+       -0.707107,0,-0.707107,-0.085443,0.318879,0.085443,
+       -0.674807,0.736753,0.042787,-0.229082,0.229082,0.229082,
+       -0.536995,0.842499,0.042787,-0.14863,0.257435,0.852165,
+       -0.461128,0.886301,0.042787,-0.163393,0.283005,0.163393,
+       -0.536995,0.842499,0.042787,-0.14863,0.257435,0.852165,
+       -0.674807,0.736753,0.042787,-0.229082,0.229082,0.229082,
+       -0.736753,0.674807,0.042787,-0.212119,0.212119,0.788676,
+       -0.843272,0,-0.537487,-0.191233,0.158996,0.888552,
+       -0.793353,0,-0.608761,-0.156938,0,0.843858,
+       -0.887114,0,-0.461551,-0.191233,0,0.888552,
+       -0.793353,0,-0.608761,-0.156938,0,0.843858,
+       -0.843272,0,-0.537487,-0.191233,0.158996,0.888552,
+       -0.793353,0,-0.608761,-0.156938,0.158996,0.843858,
+       -0.522622,0,0.852565,-0.110408,0,1.190193,
+       -0.258819,0,0.965926,-0.057152,0.158996,1.212253,
+       -0.5,0,0.866025,-0.110408,0.158996,1.190193,
+       -0.258819,0,0.965926,-0.057152,0.158996,1.212253,
+       -0.522622,0,0.852565,-0.110408,0,1.190193,
+       -0.258819,0,0.965926,-0.057152,0,1.212253,
+       -1,0,0,-0.220817,0.158996,0.99896,
+       -0.976344,0,-0.216222,-0.213293,0,0.941808,
+       -1,0,0,-0.220817,0,0.99896,
+       -0.976344,0,-0.216222,-0.213293,0,0.941808,
+       -1,0,0,-0.220817,0.158996,0.99896,
+       -0.95365,0,-0.300918,-0.213293,0.158996,0.941808,
+       -0.95365,0,-0.300918,-0.213293,0.158996,0.941808,
+       -0.887114,0,-0.461551,-0.191233,0,0.888552,
+       -0.976344,0,-0.216222,-0.213293,0,0.941808,
+       -0.887114,0,-0.461551,-0.191233,0,0.888552,
+       -0.95365,0,-0.300918,-0.213293,0.158996,0.941808,
+       -0.843272,0,-0.537487,-0.191233,0.158996,0.888552,
+       -0.976344,0,0.216222,-0.213293,0.158996,1.056112,
+       -0.991445,0,0.130526,-0.220575,0,1.000796,
+       -0.95365,0,0.300918,-0.213293,0,1.056112,
+       -0.991445,0,0.130526,-0.220575,0,1.000796,
+       -1,0,0,-0.220817,0.158996,0.99896,
+       -1,0,0,-0.220817,0,0.99896,
+       -1,0,0,-0.220817,0.158996,0.99896,
+       -0.991445,0,0.130526,-0.220575,0,1.000796,
+       -0.976344,0,0.216222,-0.213293,0.158996,1.056112,
+       -0.707107,0,0.707107,-0.156141,0.158996,1.155101,
+       -0.843272,0,0.537487,-0.191233,0,1.109368,
+       -0.707107,0,0.707107,-0.156141,0,1.155101,
+       -0.843272,0,0.537487,-0.191233,0,1.109368,
+       -0.707107,0,0.707107,-0.156141,0.158996,1.155101,
+       -0.887114,0,0.461551,-0.191233,0.158996,1.109368,
+       -0.522622,0,0.852565,-0.110408,0,1.190193,
+       -0.707107,0,0.707107,-0.156141,0.158996,1.155101,
+       -0.707107,0,0.707107,-0.156141,0,1.155101,
+       -0.707107,0,0.707107,-0.156141,0.158996,1.155101,
+       -0.522622,0,0.852565,-0.110408,0,1.190193,
+       -0.608761,0,0.793353,-0.155102,0.158996,1.155898,
+       -0.608761,0,0.793353,-0.155102,0.158996,1.155898,
+       -0.522622,0,0.852565,-0.110408,0,1.190193,
+       -0.5,0,0.866025,-0.110408,0.158996,1.190193,
+       -0.887114,0,0.461551,-0.191233,0.158996,1.109368,
+       -0.95365,0,0.300918,-0.213293,0,1.056112,
+       -0.843272,0,0.537487,-0.191233,0,1.109368,
+       -0.95365,0,0.300918,-0.213293,0,1.056112,
+       -0.887114,0,0.461551,-0.191233,0.158996,1.109368,
+       -0.976344,0,0.216222,-0.213293,0.158996,1.056112,
+       0.95365,0,0.300918,0.213293,0.158996,1.056112,
+       0.887114,0,0.461551,0.191233,0,1.109368,
+       0.976344,0,0.216222,0.213293,0,1.056112,
+       0.887114,0,0.461551,0.191233,0,1.109368,
+       0.95365,0,0.300918,0.213293,0.158996,1.056112,
+       0.843272,0,0.537487,0.191233,0.158996,1.109368,
+       0,0,1,0,0,1.219777,
+       0.258819,0,0.965926,0.057152,0.158996,1.212253,
+       0,0,1,0,0.158996,1.219777,
+       0.258819,0,0.965926,0.057152,0.158996,1.212253,
+       0,0,1,0,0,1.219777,
+       0.258819,0,0.965926,0.057152,0,1.212253,
+       0.461551,0,0.887114,0.110408,0,1.190193,
+       0.258819,0,0.965926,0.057152,0.158996,1.212253,
+       0.258819,0,0.965926,0.057152,0,1.212253,
+       0.258819,0,0.965926,0.057152,0.158996,1.212253,
+       0.461551,0,0.887114,0.110408,0,1.190193,
+       0.537487,0,0.843272,0.110408,0.158996,1.190193,
+       1,0,0,0.220575,0.158996,1.000796,
+       0.976344,0,0.216222,0.213293,0,1.056112,
+       1,0,0,0.220575,0,1.000796,
+       0.976344,0,0.216222,0.213293,0,1.056112,
+       1,0,0,0.220575,0.158996,1.000796,
+       0.95365,0,0.300918,0.213293,0.158996,1.056112,
+       0,0,1,0,0,1.219777,
+       -0.258819,0,0.965926,-0.057152,0.158996,1.212253,
+       -0.258819,0,0.965926,-0.057152,0,1.212253,
+       -0.258819,0,0.965926,-0.057152,0.158996,1.212253,
+       0,0,1,0,0,1.219777,
+       0,0,1,0,0.158996,1.219777,
+       0.707107,0,0.707107,0.156141,0,1.155101,
+       0.537487,0,0.843272,0.110408,0.158996,1.190193,
+       0.461551,0,0.887114,0.110408,0,1.190193,
+       0.537487,0,0.843272,0.110408,0.158996,1.190193,
+       0.707107,0,0.707107,0.156141,0,1.155101,
+       0.707107,0,0.707107,0.156141,0.158996,1.155101,
+       0.843272,0,0.537487,0.191233,0.158996,1.109368,
+       0.707107,0,0.707107,0.156141,0,1.155101,
+       0.887114,0,0.461551,0.191233,0,1.109368,
+       0.707107,0,0.707107,0.156141,0,1.155101,
+       0.843272,0,0.537487,0.191233,0.158996,1.109368,
+       0.707107,0,0.707107,0.156141,0.158996,1.155101,
+       0.139173,0,-0.990268,0,0.333791,0,
+       0.139173,0,-0.990268,0.261211,0.191561,0.036711,
+       0.139173,0,-0.990268,0,0.191561,0,
+       0.139173,0,-0.990268,0.261211,0.191561,0.036711,
+       0.139173,0,-0.990268,0,0.333791,0,
+       0.139173,0,-0.990268,0.086257,0.321915,0.012123,
+       0.139173,0,-0.990268,0.261211,0.191561,0.036711,
+       0.139173,0,-0.990268,0.086257,0.321915,0.012123,
+       0.139173,0,-0.990268,0.166394,0.288203,0.023385,
+       0.139173,0,-0.990268,0.261211,0.191561,0.036711,
+       0.139173,0,-0.990268,0.166394,0.288203,0.023385,
+       0.139173,0,-0.990268,0.235024,0.235024,0.033031,
+       0.139173,0,-0.990268,0.261211,0.191561,0.036711,
+       0.139173,0,-0.990268,0.235024,0.235024,0.033031,
+       0.139173,0,-0.990268,0.249144,0.216485,0.035015,
+       0.139173,0,-0.990268,0.261211,0.191561,0.036711,
+       0.139173,0,-0.990268,0.249144,0.216485,0.035015,
+       0.139173,0,-0.990268,0.287571,0.166029,0.040415,
+       0.139173,0,-0.990268,0.261211,0.191561,0.036711,
+       0.139173,0,-0.990268,0.287571,0.166029,0.040415,
+       0.139173,0,-0.990268,0.261211,0,0.036711,
+       0.139173,0,-0.990268,0.261211,0,0.036711,
+       0.139173,0,-0.990268,0.287571,0.166029,0.040415,
+       0.139173,0,-0.990268,0.331792,0,0.04663,
+       0.139173,0,-0.990268,0.331792,0,0.04663,
+       0.139173,0,-0.990268,0.287571,0.166029,0.040415,
+       0.139173,0,-0.990268,0.320552,0.085892,0.045051,
+       0.300643,0.952777,0.042787,0.075405,0.281416,0.990198,
+       0.461128,0.886301,0.042787,0.166394,0.288203,0.023385,
+       0.216024,0.97545,0.042787,0.086257,0.321915,0.012123,
+       0.461128,0.886301,0.042787,0.166394,0.288203,0.023385,
+       0.300643,0.952777,0.042787,0.075405,0.281416,0.990198,
+       0.536995,0.842499,0.042787,0.145884,0.252679,0.980293,
+       0.842499,0.536995,0.042787,0.287571,0.166029,0.040415,
+       0.751338,0.658532,0.042736,0.20657,0.20657,0.971764,
+       0.886301,0.461128,0.042787,0.253239,0.146207,0.965205,
+       0.751338,0.658532,0.042736,0.20657,0.20657,0.971764,
+       0.842499,0.536995,0.042787,0.287571,0.166029,0.040415,
+       0.792638,0.608212,0.042462,0.249144,0.216485,0.035015,
+       0.751338,0.658532,0.042736,0.20657,0.20657,0.971764,
+       0.792638,0.608212,0.042462,0.249144,0.216485,0.035015,
+       0.674807,0.736753,0.042787,0.235024,0.235024,0.033031,
+       0.990551,0.130408,0.042462,0.331792,0,0.04663,
+       0.97545,0.216024,0.042787,0.282622,0.075728,0.961076,
+       0.990551,0.130408,0.042462,0.292652,0,0.959666,
+       0.97545,0.216024,0.042787,0.282622,0.075728,0.961076,
+       0.990551,0.130408,0.042462,0.331792,0,0.04663,
+       0.952777,0.300643,0.042787,0.320552,0.085892,0.045051,
+       0.536995,0.842499,0.042787,0.145884,0.252679,0.980293,
+       0.674807,0.736753,0.042787,0.235024,0.235024,0.033031,
+       0.461128,0.886301,0.042787,0.166394,0.288203,0.023385,
+       0.674807,0.736753,0.042787,0.235024,0.235024,0.033031,
+       0.536995,0.842499,0.042787,0.145884,0.252679,0.980293,
+       0.751338,0.658532,0.042736,0.20657,0.20657,0.971764,
+       0.952777,0.300643,0.042787,0.320552,0.085892,0.045051,
+       0.886301,0.461128,0.042787,0.253239,0.146207,0.965205,
+       0.97545,0.216024,0.042787,0.282622,0.075728,0.961076,
+       0.886301,0.461128,0.042787,0.253239,0.146207,0.965205,
+       0.952777,0.300643,0.042787,0.320552,0.085892,0.045051,
+       0.842499,0.536995,0.042787,0.287571,0.166029,0.040415,
+       0.991445,0,-0.130526,0.216568,0,0.970359,
+       1,0,0,0.220575,0.158996,1.000796,
+       1,0,0,0.220575,0,1.000796,
+       1,0,0,0.220575,0.158996,1.000796,
+       0.991445,0,-0.130526,0.216568,0,0.970359,
+       0.991445,0,-0.130526,0.216568,0.158996,0.970359,
+       0.139173,0,0.990268,0.292652,0,0.959666,
+       0.139173,0,0.990268,0.216568,0.158996,0.970359,
+       0.139173,0,0.990268,0.216568,0,0.970359,
+       0.139173,0,0.990268,0.216568,0.158996,0.970359,
+       0.139173,0,0.990268,0.292652,0,0.959666,
+       0.139173,0,0.990268,0.253239,0.146207,0.965205,
+       0.139173,0,0.990268,0.253239,0.146207,0.965205,
+       0.139173,0,0.990268,0.292652,0,0.959666,
+       0.139173,0,0.990268,0.282622,0.075728,0.961076,
+       0.139173,0,0.990268,0.216568,0.158996,0.970359,
+       0.139173,0,0.990268,0,0.290889,1.000796,
+       0.139173,0,0.990268,0,0.158996,1.000796,
+       0.139173,0,0.990268,0,0.290889,1.000796,
+       0.139173,0,0.990268,0.216568,0.158996,0.970359,
+       0.139173,0,0.990268,0.075405,0.281416,0.990198,
+       0.139173,0,0.990268,0.075405,0.281416,0.990198,
+       0.139173,0,0.990268,0.216568,0.158996,0.970359,
+       0.139173,0,0.990268,0.145884,0.252679,0.980293,
+       0.139173,0,0.990268,0.145884,0.252679,0.980293,
+       0.139173,0,0.990268,0.216568,0.158996,0.970359,
+       0.139173,0,0.990268,0.20657,0.20657,0.971764,
+       0.139173,0,0.990268,0.20657,0.20657,0.971764,
+       0.139173,0,0.990268,0.216568,0.158996,0.970359,
+       0.139173,0,0.990268,0.253239,0.146207,0.965205,
+       0,0.999082,0.042828,0,0.290889,1.000796,
+       0.216024,0.97545,0.042787,0.086257,0.321915,0.012123,
+       0,0.999082,0.042828,0,0.333791,0,
+       0.216024,0.97545,0.042787,0.086257,0.321915,0.012123,
+       0,0.999082,0.042828,0,0.290889,1.000796,
+       0.300643,0.952777,0.042787,0.075405,0.281416,0.990198,
+       -0.216024,0.97545,0.042787,-0.085443,0.318879,0.085443,
+       0,0.999082,0.042828,0,0.290889,1.000796,
+       0,0.999082,0.042828,0,0.333791,0,
+       0,0.999082,0.042828,0,0.290889,1.000796,
+       -0.216024,0.97545,0.042787,-0.085443,0.318879,0.085443,
+       -0.300643,0.952777,0.042787,-0.076132,0.28413,0.924663
+};
+static const struct gllist handsy_model_finger_intermediate_frame = {
+ GL_N3F_V3F, GL_TRIANGLES, 327, handsy_model_finger_intermediate_data, 0
+};
+const struct gllist *handsy_model_finger_intermediate = &handsy_model_finger_intermediate_frame;
+
+static const float handsy_model_finger_metacarpal_data[] = {
+       -0.271764,0.083332,0.958749,-0.068185,0.017822,1.409438,
+       -0.430421,0.254256,0.866078,-0.116874,0.066511,1.38286,
+       -0.481561,0.134192,0.866078,-0.130163,0.034429,1.38286,
+       -0.430421,0.254256,0.866078,-0.116874,0.066511,1.38286,
+       -0.271764,0.083332,0.958749,-0.068185,0.017822,1.409438,
+       -0.240936,0.15083,0.958749,-0.061306,0.034429,1.409438,
+       0,0.084475,0.996426,-0.001674,0,1.418503,
+       -0.193688,0.208049,0.958749,-0.050363,0.04869,1.409438,
+       -0.240936,0.15083,0.958749,-0.061306,0.034429,1.409438,
+       0.240936,0.15083,0.958749,0.057958,0.034429,1.409438,
+       0.349948,0.356994,0.866078,0.092387,0.094061,1.38286,
+       0.193688,0.208049,0.958749,0.047016,0.04869,1.409438,
+       0.349948,0.356994,0.866078,0.092387,0.094061,1.38286,
+       0.240936,0.15083,0.958749,0.057958,0.034429,1.409438,
+       0.430421,0.254256,0.866078,0.113527,0.066511,1.38286,
+       -0.95365,0.300918,0,-0.258653,0.068857,1.152459,
+       -0.858616,0.495722,-0.130526,-0.229963,0.131803,1.133935,
+       -0.962321,0.238552,-0.130504,-0.257428,0.068529,1.142828,
+       -0.858616,0.495722,-0.130526,-0.229963,0.131803,1.133935,
+       -0.95365,0.300918,0,-0.258653,0.068857,1.152459,
+       -0.843272,0.537487,0,-0.232075,0.133022,1.152459,
+       -0.687753,0.714118,-0.130504,-0.187366,0.185692,1.126361,
+       -0.537487,0.843272,0,-0.134696,0.230401,1.152459,
+       -0.45761,0.879539,-0.130403,-0.132598,0.226768,1.120589,
+       -0.537487,0.843272,0,-0.134696,0.230401,1.152459,
+       -0.687753,0.714118,-0.130504,-0.187366,0.185692,1.126361,
+       -0.707107,0.707107,0,-0.189796,0.188122,1.152459,
+       -0.62945,0.60815,0.48368,-0.164592,0.162918,1.285481,
+       -0.837235,0.481678,0.258889,-0.224224,0.12849,1.221316,
+       -0.768392,0.399782,0.499749,-0.201207,0.115201,1.285481,
+       -0.837235,0.481678,0.258889,-0.224224,0.12849,1.221316,
+       -0.62945,0.60815,0.48368,-0.164592,0.162918,1.285481,
+       -0.69037,0.69037,0.216285,-0.183386,0.181712,1.221316,
+       -0.843272,0.537487,0,-0.232075,0.133022,1.152459,
+       -0.687753,0.714118,-0.130504,-0.187366,0.185692,1.126361,
+       -0.858616,0.495722,-0.130526,-0.229963,0.131803,1.133935,
+       -0.687753,0.714118,-0.130504,-0.187366,0.185692,1.126361,
+       -0.843272,0.537487,0,-0.232075,0.133022,1.152459,
+       -0.707107,0.707107,0,-0.189796,0.188122,1.152459,
+       0.063714,0.27702,0.958749,0.016148,0.066511,1.409438,
+       0,0.258748,0.965945,-0.001674,0.068857,1.409438,
+       0,0.084475,0.996426,-0.001674,0,1.418503,
+       -0.481561,0.134192,0.866078,-0.130163,0.034429,1.38286,
+       -0.610252,0.357007,0.707204,-0.164592,0.094061,1.340581,
+       -0.681859,0.186897,0.707204,-0.183386,0.04869,1.340581,
+       -0.610252,0.357007,0.707204,-0.164592,0.094061,1.340581,
+       -0.481561,0.134192,0.866078,-0.130163,0.034429,1.38286,
+       -0.430421,0.254256,0.866078,-0.116874,0.066511,1.38286,
+       -0.638521,0.571249,-0.515718,-0.164592,0.162918,1.019437,
+       -0.669251,0.426569,-0.608393,-0.174654,0.09987,0.979478,
+       -0.768392,0.399782,-0.499749,-0.201207,0.115201,1.019437,
+       -0.669251,0.426569,-0.608393,-0.174654,0.09987,0.979478,
+       -0.638521,0.571249,-0.515718,-0.164592,0.162918,1.019437,
+       -0.631406,0.484495,-0.605468,-0.164437,0.125955,0.989696,
+       -0.631406,0.484495,-0.605468,-0.164437,0.125955,0.989696,
+       -0.638521,0.571249,-0.515718,-0.164592,0.162918,1.019437,
+       -0.560986,0.560986,-0.608761,-0.154077,0.152403,1.000056,
+       -0.73389,0.096619,0.672361,-0.189796,0,1.340581,
+       -0.845681,0.187285,0.499749,-0.224224,0.059632,1.285481,
+       -0.860389,0.113272,0.496891,-0.232075,0,1.285481,
+       -0.845681,0.187285,0.499749,-0.224224,0.059632,1.285481,
+       -0.73389,0.096619,0.672361,-0.189796,0,1.340581,
+       -0.681859,0.186897,0.707204,-0.183386,0.04869,1.340581,
+       -0.850426,0.467839,-0.240631,-0.224224,0.12849,1.083601,
+       -0.638521,0.571249,-0.515718,-0.164592,0.162918,1.019437,
+       -0.768392,0.399782,-0.499749,-0.201207,0.115201,1.019437,
+       -0.638521,0.571249,-0.515718,-0.164592,0.162918,1.019437,
+       -0.850426,0.467839,-0.240631,-0.224224,0.12849,1.083601,
+       -0.684559,0.681437,-0.258889,-0.183386,0.181712,1.083601,
+       0,0.084475,0.996426,-0.001674,0,1.418503,
+       -0.133242,0.25109,0.958749,-0.036102,0.059632,1.409438,
+       -0.193688,0.208049,0.958749,-0.050363,0.04869,1.409438,
+       0.298349,0.945507,-0.130403,0.066855,0.255755,1.142828,
+       0.461551,0.887114,0,0.131348,0.230401,1.152459,
+       0.518154,0.845276,-0.130482,0.130129,0.228289,1.133935,
+       0.461551,0.887114,0,0.131348,0.230401,1.152459,
+       0.298349,0.945507,-0.130403,0.066855,0.255755,1.142828,
+       0.233224,0.972067,0.026312,0.067184,0.256979,1.152459,
+       0.001472,0.965906,0.258889,-0.001674,0.256979,1.221316,
+       0.233224,0.972067,0.026312,0.067184,0.256979,1.152459,
+       -0.014612,0.998932,-0.043837,-0.001674,0.266045,1.152459,
+       0.233224,0.972067,0.026312,0.067184,0.256979,1.152459,
+       0.001472,0.965906,0.258889,-0.001674,0.256979,1.221316,
+       0.251417,0.932613,0.258889,0.064837,0.248223,1.221316,
+       0.179072,0.683956,0.707204,0.047016,0.181712,1.340581,
+       0.017501,0.856275,0.516223,-0.001674,0.230401,1.285481,
+       0,0.67533,0.737516,-0.001674,0.188122,1.340581,
+       0.017501,0.856275,0.516223,-0.001674,0.230401,1.285481,
+       0.179072,0.683956,0.707204,0.047016,0.181712,1.340581,
+       0.260647,0.826023,0.499749,0.057958,0.222551,1.285481,
+       0.124567,0.48414,0.866078,0.032755,0.12849,1.38286,
+       0,0.67533,0.737516,-0.001674,0.188122,1.340581,
+       0,0.461451,0.887166,-0.001674,0.133022,1.38286,
+       0,0.67533,0.737516,-0.001674,0.188122,1.340581,
+       0.124567,0.48414,0.866078,0.032755,0.12849,1.38286,
+       0.179072,0.683956,0.707204,0.047016,0.181712,1.340581,
+       0.063714,0.27702,0.958749,0.016148,0.066511,1.409438,
+       0,0.461451,0.887166,-0.001674,0.133022,1.38286,
+       0,0.258748,0.965945,-0.001674,0.068857,1.409438,
+       0,0.461451,0.887166,-0.001674,0.133022,1.38286,
+       0.063714,0.27702,0.958749,0.016148,0.066511,1.409438,
+       0.124567,0.48414,0.866078,0.032755,0.12849,1.38286,
+       0.017501,0.856275,0.516223,-0.001674,0.230401,1.285481,
+       0.251417,0.932613,0.258889,0.064837,0.248223,1.221316,
+       0.001472,0.965906,0.258889,-0.001674,0.256979,1.221316,
+       0.251417,0.932613,0.258889,0.064837,0.248223,1.221316,
+       0.017501,0.856275,0.516223,-0.001674,0.230401,1.285481,
+       0.260647,0.826023,0.499749,0.057958,0.222551,1.285481,
+       0.133242,0.25109,0.958749,0.032755,0.059632,1.409438,
+       0.063714,0.27702,0.958749,0.016148,0.066511,1.409438,
+       0,0.084475,0.996426,-0.001674,0,1.418503,
+       -0.610252,0.357007,0.707204,-0.164592,0.094061,1.340581,
+       -0.62945,0.60815,0.48368,-0.164592,0.162918,1.285481,
+       -0.768392,0.399782,0.499749,-0.201207,0.115201,1.285481,
+       -0.62945,0.60815,0.48368,-0.164592,0.162918,1.285481,
+       -0.610252,0.357007,0.707204,-0.164592,0.094061,1.340581,
+       -0.497058,0.502787,0.707204,-0.134696,0.133022,1.340581,
+       -0.540992,0.705035,-0.458534,-0.134696,0.185858,1.019437,
+       -0.560986,0.560986,-0.608761,-0.154077,0.152403,1.000056,
+       -0.638521,0.571249,-0.515718,-0.164592,0.162918,1.019437,
+       0.251417,0.932613,0.258889,0.064837,0.248223,1.221316,
+       0.461551,0.887114,0,0.131348,0.230401,1.152459,
+       0.233224,0.972067,0.026312,0.067184,0.256979,1.152459,
+       0.461551,0.887114,0,0.131348,0.230401,1.152459,
+       0.251417,0.932613,0.258889,0.064837,0.248223,1.221316,
+       0.484228,0.835763,0.258889,0.126816,0.222551,1.221316,
+       0.260647,0.826023,0.499749,0.057958,0.222551,1.285481,
+       0.484228,0.835763,0.258889,0.126816,0.222551,1.221316,
+       0.251417,0.932613,0.258889,0.064837,0.248223,1.221316,
+       0.484228,0.835763,0.258889,0.126816,0.222551,1.221316,
+       0.260647,0.826023,0.499749,0.057958,0.222551,1.285481,
+       0.465556,0.730417,0.499749,0.113527,0.199533,1.285481,
+       -0.684559,0.681437,-0.258889,-0.183386,0.181712,1.083601,
+       -0.540992,0.705035,-0.458534,-0.134696,0.185858,1.019437,
+       -0.638521,0.571249,-0.515718,-0.164592,0.162918,1.019437,
+       -0.540992,0.705035,-0.458534,-0.134696,0.185858,1.019437,
+       -0.684559,0.681437,-0.258889,-0.183386,0.181712,1.083601,
+       -0.496644,0.779191,-0.382369,-0.119932,0.204829,1.0342,
+       -0.496644,0.779191,-0.382369,-0.119932,0.204829,1.0342,
+       -0.684559,0.681437,-0.258889,-0.183386,0.181712,1.083601,
+       -0.508803,0.828671,-0.233292,-0.130163,0.222551,1.083601,
+       -0.30062,0.039577,0.952922,-0.070531,0,1.409438,
+       -0.481561,0.134192,0.866078,-0.130163,0.034429,1.38286,
+       -0.536052,0.070573,0.84123,-0.134696,0,1.38286,
+       -0.481561,0.134192,0.866078,-0.130163,0.034429,1.38286,
+       -0.30062,0.039577,0.952922,-0.070531,0,1.409438,
+       -0.271764,0.083332,0.958749,-0.068185,0.017822,1.409438,
+       0.349991,0.614303,0.707204,0.092387,0.162918,1.340581,
+       0.260647,0.826023,0.499749,0.057958,0.222551,1.285481,
+       0.179072,0.683956,0.707204,0.047016,0.181712,1.340581,
+       0.260647,0.826023,0.499749,0.057958,0.222551,1.285481,
+       0.349991,0.614303,0.707204,0.092387,0.162918,1.340581,
+       0.465556,0.730417,0.499749,0.113527,0.199533,1.285481,
+       0.245627,0.435403,0.866078,0.064837,0.115201,1.38286,
+       0.179072,0.683956,0.707204,0.047016,0.181712,1.340581,
+       0.124567,0.48414,0.866078,0.032755,0.12849,1.38286,
+       0.179072,0.683956,0.707204,0.047016,0.181712,1.340581,
+       0.245627,0.435403,0.866078,0.064837,0.115201,1.38286,
+       0.349991,0.614303,0.707204,0.092387,0.162918,1.340581,
+       0,0.084475,0.996426,-0.001674,0,1.418503,
+       -0.240936,0.15083,0.958749,-0.061306,0.034429,1.409438,
+       -0.271764,0.083332,0.958749,-0.068185,0.017822,1.409438,
+       -0.837235,0.481678,0.258889,-0.224224,0.12849,1.221316,
+       -0.95365,0.300918,0,-0.258653,0.068857,1.152459,
+       -0.933374,0.248573,0.258889,-0.249897,0.066511,1.221316,
+       -0.95365,0.300918,0,-0.258653,0.068857,1.152459,
+       -0.837235,0.481678,0.258889,-0.224224,0.12849,1.221316,
+       -0.843272,0.537487,0,-0.232075,0.133022,1.152459,
+       -0.179072,0.683956,0.707204,-0.050363,0.181712,1.340581,
+       0.017501,0.856275,0.516223,-0.001674,0.230401,1.285481,
+       -0.221372,0.83719,0.500107,-0.061306,0.222551,1.285481,
+       0.017501,0.856275,0.516223,-0.001674,0.230401,1.285481,
+       -0.179072,0.683956,0.707204,-0.050363,0.181712,1.340581,
+       0,0.67533,0.737516,-0.001674,0.188122,1.340581,
+       -0.193688,0.208049,0.958749,-0.050363,0.04869,1.409438,
+       -0.245627,0.435403,0.866078,-0.068185,0.115201,1.38286,
+       -0.349948,0.356994,0.866078,-0.095735,0.094061,1.38286,
+       -0.245627,0.435403,0.866078,-0.068185,0.115201,1.38286,
+       -0.193688,0.208049,0.958749,-0.050363,0.04869,1.409438,
+       -0.133242,0.25109,0.958749,-0.036102,0.059632,1.409438,
+       0.193688,0.208049,0.958749,0.047016,0.04869,1.409438,
+       0.133242,0.25109,0.958749,0.032755,0.059632,1.409438,
+       0,0.084475,0.996426,-0.001674,0,1.418503,
+       -0.62945,0.60815,0.48368,-0.164592,0.162918,1.285481,
+       -0.481678,0.837235,0.258889,-0.130163,0.222551,1.221316,
+       -0.69037,0.69037,0.216285,-0.183386,0.181712,1.221316,
+       -0.481678,0.837235,0.258889,-0.130163,0.222551,1.221316,
+       -0.62945,0.60815,0.48368,-0.164592,0.162918,1.285481,
+       -0.430509,0.751368,0.500107,-0.116874,0.199533,1.285481,
+       0.30062,0.039577,0.952922,0.067184,0,1.409438,
+       0.481561,0.134192,0.866078,0.126816,0.034429,1.38286,
+       0.271764,0.083332,0.958749,0.064837,0.017822,1.409438,
+       0.481561,0.134192,0.866078,0.126816,0.034429,1.38286,
+       0.30062,0.039577,0.952922,0.067184,0,1.409438,
+       0.536052,0.070573,0.84123,0.131348,0,1.38286,
+       0.73389,0.096619,0.672361,0.186448,0,1.340581,
+       0.828725,0.200239,0.522609,0.220877,0.059632,1.285481,
+       0.681859,0.186897,0.707204,0.180038,0.04869,1.340581,
+       0.828725,0.200239,0.522609,0.220877,0.059632,1.285481,
+       0.73389,0.096619,0.672361,0.186448,0,1.340581,
+       0.881074,0.115996,0.458534,0.228728,0,1.285481,
+       0.610252,0.357007,0.707204,0.161245,0.094061,1.340581,
+       0.638738,0.585034,0.499749,0.161245,0.162918,1.285481,
+       0.497058,0.502787,0.707204,0.131348,0.133022,1.340581,
+       0.638738,0.585034,0.499749,0.161245,0.162918,1.285481,
+       0.610252,0.357007,0.707204,0.161245,0.094061,1.340581,
+       0.768392,0.399782,0.499749,0.19786,0.115201,1.285481,
+       0.960718,0.276888,0.018801,0.255305,0.068857,1.152459,
+       0.968364,0.127487,0.21452,0.255305,0,1.221316,
+       0.98934,0.130249,-0.065125,0.264371,0,1.152459,
+       0.968364,0.127487,0.21452,0.255305,0,1.221316,
+       0.960718,0.276888,0.018801,0.255305,0.068857,1.152459,
+       0.921136,0.246818,0.30098,0.246549,0.066511,1.221316,
+       0.430421,0.254256,0.866078,0.113527,0.066511,1.38286,
+       0.497058,0.502787,0.707204,0.131348,0.133022,1.340581,
+       0.349948,0.356994,0.866078,0.092387,0.094061,1.38286,
+       0.497058,0.502787,0.707204,0.131348,0.133022,1.340581,
+       0.430421,0.254256,0.866078,0.113527,0.066511,1.38286,
+       0.610252,0.357007,0.707204,0.161245,0.094061,1.340581,
+       0.271764,0.083332,0.958749,0.064837,0.017822,1.409438,
+       0.240936,0.15083,0.958749,0.057958,0.034429,1.409438,
+       0,0.084475,0.996426,-0.001674,0,1.418503,
+       0.193688,0.208049,0.958749,0.047016,0.04869,1.409438,
+       0.245627,0.435403,0.866078,0.064837,0.115201,1.38286,
+       0.133242,0.25109,0.958749,0.032755,0.059632,1.409438,
+       0.245627,0.435403,0.866078,0.064837,0.115201,1.38286,
+       0.193688,0.208049,0.958749,0.047016,0.04869,1.409438,
+       0.349948,0.356994,0.866078,0.092387,0.094061,1.38286,
+       0.536052,0.070573,0.84123,0.131348,0,1.38286,
+       0.681859,0.186897,0.707204,0.180038,0.04869,1.340581,
+       0.481561,0.134192,0.866078,0.126816,0.034429,1.38286,
+       0.681859,0.186897,0.707204,0.180038,0.04869,1.340581,
+       0.536052,0.070573,0.84123,0.131348,0,1.38286,
+       0.73389,0.096619,0.672361,0.186448,0,1.340581,
+       0.240936,0.15083,0.958749,0.057958,0.034429,1.409438,
+       0.193688,0.208049,0.958749,0.047016,0.04869,1.409438,
+       0,0.084475,0.996426,-0.001674,0,1.418503,
+       0.465556,0.730417,0.499749,0.113527,0.199533,1.285481,
+       0.684039,0.681958,0.258889,0.180038,0.181712,1.221316,
+       0.484228,0.835763,0.258889,0.126816,0.222551,1.221316,
+       0.684039,0.681958,0.258889,0.180038,0.181712,1.221316,
+       0.465556,0.730417,0.499749,0.113527,0.199533,1.285481,
+       0.638738,0.585034,0.499749,0.161245,0.162918,1.285481,
+       0.921136,0.246818,0.30098,0.246549,0.066511,1.221316,
+       0.768392,0.399782,0.499749,0.19786,0.115201,1.285481,
+       0.828725,0.200239,0.522609,0.220877,0.059632,1.285481,
+       0.768392,0.399782,0.499749,0.19786,0.115201,1.285481,
+       0.921136,0.246818,0.30098,0.246549,0.066511,1.221316,
+       0.837235,0.481678,0.258889,0.220877,0.12849,1.221316,
+       0.133242,0.25109,0.958749,0.032755,0.059632,1.409438,
+       0.124567,0.48414,0.866078,0.032755,0.12849,1.38286,
+       0.063714,0.27702,0.958749,0.016148,0.066511,1.409438,
+       0.124567,0.48414,0.866078,0.032755,0.12849,1.38286,
+       0.133242,0.25109,0.958749,0.032755,0.059632,1.409438,
+       0.245627,0.435403,0.866078,0.064837,0.115201,1.38286,
+       -0.845681,0.187285,-0.499749,-0.224224,0.059632,1.019437,
+       -0.789061,0.103882,-0.605468,-0.189796,0,0.964337,
+       -0.860389,0.113272,-0.496891,-0.232075,0,1.019437,
+       -0.789061,0.103882,-0.605468,-0.189796,0,0.964337,
+       -0.845681,0.187285,-0.499749,-0.224224,0.059632,1.019437,
+       -0.756851,0.23882,-0.608393,-0.186114,0.049421,0.968018,
+       -0.958191,0.126148,-0.256821,-0.258653,0,1.083601,
+       -0.845681,0.187285,-0.499749,-0.224224,0.059632,1.019437,
+       -0.860389,0.113272,-0.496891,-0.232075,0,1.019437,
+       -0.845681,0.187285,-0.499749,-0.224224,0.059632,1.019437,
+       -0.958191,0.126148,-0.256821,-0.258653,0,1.083601,
+       -0.919462,0.271766,-0.284135,-0.249897,0.066511,1.083601,
+       -0.845681,0.187285,0.499749,-0.224224,0.059632,1.285481,
+       -0.946203,0.12457,0.298635,-0.258653,0,1.221316,
+       -0.860389,0.113272,0.496891,-0.232075,0,1.285481,
+       -0.946203,0.12457,0.298635,-0.258653,0,1.221316,
+       -0.845681,0.187285,0.499749,-0.224224,0.059632,1.285481,
+       -0.933374,0.248573,0.258889,-0.249897,0.066511,1.221316,
+       -0.45761,0.879539,-0.130403,-0.132598,0.226768,1.120589,
+       -0.300918,0.95365,0,-0.070531,0.256979,1.152459,
+       -0.23131,0.96409,-0.130482,-0.069322,0.252467,1.116977,
+       -0.300918,0.95365,0,-0.070531,0.256979,1.152459,
+       -0.45761,0.879539,-0.130403,-0.132598,0.226768,1.120589,
+       -0.537487,0.843272,0,-0.134696,0.230401,1.152459,
+       -0.768392,0.399782,0.499749,-0.201207,0.115201,1.285481,
+       -0.933374,0.248573,0.258889,-0.249897,0.066511,1.221316,
+       -0.845681,0.187285,0.499749,-0.224224,0.059632,1.285481,
+       -0.933374,0.248573,0.258889,-0.249897,0.066511,1.221316,
+       -0.768392,0.399782,0.499749,-0.201207,0.115201,1.285481,
+       -0.837235,0.481678,0.258889,-0.224224,0.12849,1.221316,
+       -0.681859,0.186897,0.707204,-0.183386,0.04869,1.340581,
+       -0.768392,0.399782,0.499749,-0.201207,0.115201,1.285481,
+       -0.845681,0.187285,0.499749,-0.224224,0.059632,1.285481,
+       -0.768392,0.399782,0.499749,-0.201207,0.115201,1.285481,
+       -0.681859,0.186897,0.707204,-0.183386,0.04869,1.340581,
+       -0.610252,0.357007,0.707204,-0.164592,0.094061,1.340581,
+       -0.497058,0.502787,0.707204,-0.134696,0.133022,1.340581,
+       -0.430509,0.751368,0.500107,-0.116874,0.199533,1.285481,
+       -0.62945,0.60815,0.48368,-0.164592,0.162918,1.285481,
+       -0.430509,0.751368,0.500107,-0.116874,0.199533,1.285481,
+       -0.497058,0.502787,0.707204,-0.134696,0.133022,1.340581,
+       -0.349991,0.614303,0.707204,-0.095735,0.162918,1.340581,
+       -0.69037,0.69037,0.216285,-0.183386,0.181712,1.221316,
+       -0.537487,0.843272,0,-0.134696,0.230401,1.152459,
+       -0.707107,0.707107,0,-0.189796,0.188122,1.152459,
+       -0.537487,0.843272,0,-0.134696,0.230401,1.152459,
+       -0.69037,0.69037,0.216285,-0.183386,0.181712,1.221316,
+       -0.481678,0.837235,0.258889,-0.130163,0.222551,1.221316,
+       -0.349948,0.356994,0.866078,-0.095735,0.094061,1.38286,
+       -0.349991,0.614303,0.707204,-0.095735,0.162918,1.340581,
+       -0.497058,0.502787,0.707204,-0.134696,0.133022,1.340581,
+       -0.349991,0.614303,0.707204,-0.095735,0.162918,1.340581,
+       -0.349948,0.356994,0.866078,-0.095735,0.094061,1.38286,
+       -0.245627,0.435403,0.866078,-0.068185,0.115201,1.38286,
+       -0.768392,0.399782,-0.499749,-0.201207,0.115201,1.019437,
+       -0.756851,0.23882,-0.608393,-0.186114,0.049421,0.968018,
+       -0.845681,0.187285,-0.499749,-0.224224,0.059632,1.019437,
+       -0.756851,0.23882,-0.608393,-0.186114,0.049421,0.968018,
+       -0.768392,0.399782,-0.499749,-0.201207,0.115201,1.019437,
+       -0.669251,0.426569,-0.608393,-0.174654,0.09987,0.979478,
+       -0.240936,0.15083,0.958749,-0.061306,0.034429,1.409438,
+       -0.349948,0.356994,0.866078,-0.095735,0.094061,1.38286,
+       -0.430421,0.254256,0.866078,-0.116874,0.066511,1.38286,
+       -0.349948,0.356994,0.866078,-0.095735,0.094061,1.38286,
+       -0.240936,0.15083,0.958749,-0.061306,0.034429,1.409438,
+       -0.193688,0.208049,0.958749,-0.050363,0.04869,1.409438,
+       -0.430421,0.254256,0.866078,-0.116874,0.066511,1.38286,
+       -0.497058,0.502787,0.707204,-0.134696,0.133022,1.340581,
+       -0.610252,0.357007,0.707204,-0.164592,0.094061,1.340581,
+       -0.497058,0.502787,0.707204,-0.134696,0.133022,1.340581,
+       -0.430421,0.254256,0.866078,-0.116874,0.066511,1.38286,
+       -0.349948,0.356994,0.866078,-0.095735,0.094061,1.38286,
+       -0.919462,0.271766,-0.284135,-0.249897,0.066511,1.083601,
+       -0.768392,0.399782,-0.499749,-0.201207,0.115201,1.019437,
+       -0.845681,0.187285,-0.499749,-0.224224,0.059632,1.019437,
+       -0.768392,0.399782,-0.499749,-0.201207,0.115201,1.019437,
+       -0.919462,0.271766,-0.284135,-0.249897,0.066511,1.083601,
+       -0.850426,0.467839,-0.240631,-0.224224,0.12849,1.083601,
+       -0.536052,0.070573,0.84123,-0.134696,0,1.38286,
+       -0.681859,0.186897,0.707204,-0.183386,0.04869,1.340581,
+       -0.73389,0.096619,0.672361,-0.189796,0,1.340581,
+       -0.681859,0.186897,0.707204,-0.183386,0.04869,1.340581,
+       -0.536052,0.070573,0.84123,-0.134696,0,1.38286,
+       -0.481561,0.134192,0.866078,-0.130163,0.034429,1.38286,
+       -0.69037,0.69037,0.216285,-0.183386,0.181712,1.221316,
+       -0.843272,0.537487,0,-0.232075,0.133022,1.152459,
+       -0.837235,0.481678,0.258889,-0.224224,0.12849,1.221316,
+       -0.843272,0.537487,0,-0.232075,0.133022,1.152459,
+       -0.69037,0.69037,0.216285,-0.183386,0.181712,1.221316,
+       -0.707107,0.707107,0,-0.189796,0.188122,1.152459,
+       -0.124567,0.48414,0.866078,-0.036102,0.12849,1.38286,
+       0,0.67533,0.737516,-0.001674,0.188122,1.340581,
+       -0.179072,0.683956,0.707204,-0.050363,0.181712,1.340581,
+       0,0.67533,0.737516,-0.001674,0.188122,1.340581,
+       -0.124567,0.48414,0.866078,-0.036102,0.12849,1.38286,
+       0,0.461451,0.887166,-0.001674,0.133022,1.38286,
+       -0.221372,0.83719,0.500107,-0.061306,0.222551,1.285481,
+       0.001472,0.965906,0.258889,-0.001674,0.256979,1.221316,
+       -0.248573,0.933374,0.258889,-0.068185,0.248223,1.221316,
+       0.001472,0.965906,0.258889,-0.001674,0.256979,1.221316,
+       -0.221372,0.83719,0.500107,-0.061306,0.222551,1.285481,
+       0.017501,0.856275,0.516223,-0.001674,0.230401,1.285481,
+       -0.248573,0.933374,0.258889,-0.068185,0.248223,1.221316,
+       -0.014612,0.998932,-0.043837,-0.001674,0.266045,1.152459,
+       -0.300918,0.95365,0,-0.070531,0.256979,1.152459,
+       -0.014612,0.998932,-0.043837,-0.001674,0.266045,1.152459,
+       -0.248573,0.933374,0.258889,-0.068185,0.248223,1.221316,
+       0.001472,0.965906,0.258889,-0.001674,0.256979,1.221316,
+       -0.133242,0.25109,0.958749,-0.036102,0.059632,1.409438,
+       -0.124567,0.48414,0.866078,-0.036102,0.12849,1.38286,
+       -0.245627,0.435403,0.866078,-0.068185,0.115201,1.38286,
+       -0.124567,0.48414,0.866078,-0.036102,0.12849,1.38286,
+       -0.133242,0.25109,0.958749,-0.036102,0.059632,1.409438,
+       -0.063714,0.27702,0.958749,-0.019495,0.066511,1.409438,
+       -0.245627,0.435403,0.866078,-0.068185,0.115201,1.38286,
+       -0.179072,0.683956,0.707204,-0.050363,0.181712,1.340581,
+       -0.349991,0.614303,0.707204,-0.095735,0.162918,1.340581,
+       -0.179072,0.683956,0.707204,-0.050363,0.181712,1.340581,
+       -0.245627,0.435403,0.866078,-0.068185,0.115201,1.38286,
+       -0.124567,0.48414,0.866078,-0.036102,0.12849,1.38286,
+       -0.349991,0.614303,0.707204,-0.095735,0.162918,1.340581,
+       -0.221372,0.83719,0.500107,-0.061306,0.222551,1.285481,
+       -0.430509,0.751368,0.500107,-0.116874,0.199533,1.285481,
+       -0.221372,0.83719,0.500107,-0.061306,0.222551,1.285481,
+       -0.349991,0.614303,0.707204,-0.095735,0.162918,1.340581,
+       -0.179072,0.683956,0.707204,-0.050363,0.181712,1.340581,
+       0,0.084475,0.996426,-0.001674,0,1.418503,
+       0,0.258748,0.965945,-0.001674,0.068857,1.409438,
+       -0.063714,0.27702,0.958749,-0.019495,0.066511,1.409438,
+       0,0.084475,0.996426,-0.001674,0,1.418503,
+       -0.063714,0.27702,0.958749,-0.019495,0.066511,1.409438,
+       -0.133242,0.25109,0.958749,-0.036102,0.059632,1.409438,
+       -0.373774,0.902371,-0.21452,-0.070531,0.247251,1.083601,
+       -0.496644,0.779191,-0.382369,-0.119932,0.204829,1.0342,
+       -0.508803,0.828671,-0.233292,-0.130163,0.222551,1.083601,
+       0,0.084475,0.996426,-0.001674,0,1.418503,
+       -0.271764,0.083332,0.958749,-0.068185,0.017822,1.409438,
+       -0.30062,0.039577,0.952922,-0.070531,0,1.409438,
+       -0.23131,0.96409,-0.130482,-0.069322,0.252467,1.116977,
+       -0.014612,0.998932,-0.043837,-0.001674,0.266045,1.152459,
+       -0.129428,0.983106,-0.129428,-0.03773,0.256551,1.116403,
+       -0.014612,0.998932,-0.043837,-0.001674,0.266045,1.152459,
+       -0.23131,0.96409,-0.130482,-0.069322,0.252467,1.116977,
+       -0.300918,0.95365,0,-0.070531,0.256979,1.152459,
+       -0.430509,0.751368,0.500107,-0.116874,0.199533,1.285481,
+       -0.248573,0.933374,0.258889,-0.068185,0.248223,1.221316,
+       -0.481678,0.837235,0.258889,-0.130163,0.222551,1.221316,
+       -0.248573,0.933374,0.258889,-0.068185,0.248223,1.221316,
+       -0.430509,0.751368,0.500107,-0.116874,0.199533,1.285481,
+       -0.221372,0.83719,0.500107,-0.061306,0.222551,1.285481,
+       -0.481678,0.837235,0.258889,-0.130163,0.222551,1.221316,
+       -0.300918,0.95365,0,-0.070531,0.256979,1.152459,
+       -0.537487,0.843272,0,-0.134696,0.230401,1.152459,
+       -0.300918,0.95365,0,-0.070531,0.256979,1.152459,
+       -0.481678,0.837235,0.258889,-0.130163,0.222551,1.221316,
+       -0.248573,0.933374,0.258889,-0.068185,0.248223,1.221316,
+       0.484228,0.835763,0.258889,0.126816,0.222551,1.221316,
+       0.675426,0.737428,0,0.186448,0.188122,1.152459,
+       0.461551,0.887114,0,0.131348,0.230401,1.152459,
+       0.675426,0.737428,0,0.186448,0.188122,1.152459,
+       0.484228,0.835763,0.258889,0.126816,0.222551,1.221316,
+       0.684039,0.681958,0.258889,0.180038,0.181712,1.221316,
+       0.960718,0.276888,0.018801,0.255305,0.068857,1.152459,
+       0.98934,0.130249,-0.065125,0.264371,0,1.152459,
+       0.950582,0.281725,-0.130482,0.254081,0.068529,1.142828,
+       0.30062,0.039577,0.952922,0.067184,0,1.409438,
+       0.271764,0.083332,0.958749,0.064837,0.017822,1.409438,
+       0,0.084475,0.996426,-0.001674,0,1.418503,
+       0.719272,0.682366,-0.130482,0.184019,0.185692,1.126361,
+       0.843272,0.537487,0,0.228728,0.133022,1.152459,
+       0.871372,0.472954,-0.130482,0.226616,0.131803,1.133935,
+       0.843272,0.537487,0,0.228728,0.133022,1.152459,
+       0.719272,0.682366,-0.130482,0.184019,0.185692,1.126361,
+       0.675426,0.737428,0,0.186448,0.188122,1.152459,
+       0.233224,0.972067,0.026312,0.067184,0.256979,1.152459,
+       0.298349,0.945507,-0.130403,0.066855,0.255755,1.142828,
+       -0.014612,0.998932,-0.043837,-0.001674,0.266045,1.152459,
+       -0.063714,0.27702,0.958749,-0.019495,0.066511,1.409438,
+       0,0.461451,0.887166,-0.001674,0.133022,1.38286,
+       -0.124567,0.48414,0.866078,-0.036102,0.12849,1.38286,
+       0,0.461451,0.887166,-0.001674,0.133022,1.38286,
+       -0.063714,0.27702,0.958749,-0.019495,0.066511,1.409438,
+       0,0.258748,0.965945,-0.001674,0.068857,1.409438,
+       0.518154,0.845276,-0.130482,0.130129,0.228289,1.133935,
+       0.675426,0.737428,0,0.186448,0.188122,1.152459,
+       0.719272,0.682366,-0.130482,0.184019,0.185692,1.126361,
+       0.675426,0.737428,0,0.186448,0.188122,1.152459,
+       0.518154,0.845276,-0.130482,0.130129,0.228289,1.133935,
+       0.461551,0.887114,0,0.131348,0.230401,1.152459,
+       0.843272,0.537487,0,0.228728,0.133022,1.152459,
+       0.684039,0.681958,0.258889,0.180038,0.181712,1.221316,
+       0.837235,0.481678,0.258889,0.220877,0.12849,1.221316,
+       0.684039,0.681958,0.258889,0.180038,0.181712,1.221316,
+       0.843272,0.537487,0,0.228728,0.133022,1.152459,
+       0.675426,0.737428,0,0.186448,0.188122,1.152459,
+       0.349948,0.356994,0.866078,0.092387,0.094061,1.38286,
+       0.349991,0.614303,0.707204,0.092387,0.162918,1.340581,
+       0.245627,0.435403,0.866078,0.064837,0.115201,1.38286,
+       0.349991,0.614303,0.707204,0.092387,0.162918,1.340581,
+       0.349948,0.356994,0.866078,0.092387,0.094061,1.38286,
+       0.497058,0.502787,0.707204,0.131348,0.133022,1.340581,
+       0.837235,0.481678,0.258889,0.220877,0.12849,1.221316,
+       0.638738,0.585034,0.499749,0.161245,0.162918,1.285481,
+       0.768392,0.399782,0.499749,0.19786,0.115201,1.285481,
+       0.638738,0.585034,0.499749,0.161245,0.162918,1.285481,
+       0.837235,0.481678,0.258889,0.220877,0.12849,1.221316,
+       0.684039,0.681958,0.258889,0.180038,0.181712,1.221316,
+       0.960718,0.276888,0.018801,0.255305,0.068857,1.152459,
+       0.837235,0.481678,0.258889,0.220877,0.12849,1.221316,
+       0.921136,0.246818,0.30098,0.246549,0.066511,1.221316,
+       0.837235,0.481678,0.258889,0.220877,0.12849,1.221316,
+       0.960718,0.276888,0.018801,0.255305,0.068857,1.152459,
+       0.843272,0.537487,0,0.228728,0.133022,1.152459,
+       0.871372,0.472954,-0.130482,0.226616,0.131803,1.133935,
+       0.960718,0.276888,0.018801,0.255305,0.068857,1.152459,
+       0.950582,0.281725,-0.130482,0.254081,0.068529,1.142828,
+       0.960718,0.276888,0.018801,0.255305,0.068857,1.152459,
+       0.871372,0.472954,-0.130482,0.226616,0.131803,1.133935,
+       0.843272,0.537487,0,0.228728,0.133022,1.152459,
+       0.681859,0.186897,0.707204,0.180038,0.04869,1.340581,
+       0.768392,0.399782,0.499749,0.19786,0.115201,1.285481,
+       0.610252,0.357007,0.707204,0.161245,0.094061,1.340581,
+       0.768392,0.399782,0.499749,0.19786,0.115201,1.285481,
+       0.681859,0.186897,0.707204,0.180038,0.04869,1.340581,
+       0.828725,0.200239,0.522609,0.220877,0.059632,1.285481,
+       0.497058,0.502787,0.707204,0.131348,0.133022,1.340581,
+       0.465556,0.730417,0.499749,0.113527,0.199533,1.285481,
+       0.349991,0.614303,0.707204,0.092387,0.162918,1.340581,
+       0.465556,0.730417,0.499749,0.113527,0.199533,1.285481,
+       0.497058,0.502787,0.707204,0.131348,0.133022,1.340581,
+       0.638738,0.585034,0.499749,0.161245,0.162918,1.285481,
+       0.481561,0.134192,0.866078,0.126816,0.034429,1.38286,
+       0.610252,0.357007,0.707204,0.161245,0.094061,1.340581,
+       0.430421,0.254256,0.866078,0.113527,0.066511,1.38286,
+       0.610252,0.357007,0.707204,0.161245,0.094061,1.340581,
+       0.481561,0.134192,0.866078,0.126816,0.034429,1.38286,
+       0.681859,0.186897,0.707204,0.180038,0.04869,1.340581,
+       0.271764,0.083332,0.958749,0.064837,0.017822,1.409438,
+       0.430421,0.254256,0.866078,0.113527,0.066511,1.38286,
+       0.240936,0.15083,0.958749,0.057958,0.034429,1.409438,
+       0.430421,0.254256,0.866078,0.113527,0.066511,1.38286,
+       0.271764,0.083332,0.958749,0.064837,0.017822,1.409438,
+       0.481561,0.134192,0.866078,0.126816,0.034429,1.38286,
+       0.921136,0.246818,0.30098,0.246549,0.066511,1.221316,
+       0.881074,0.115996,0.458534,0.228728,0,1.285481,
+       0.968364,0.127487,0.21452,0.255305,0,1.221316,
+       0.881074,0.115996,0.458534,0.228728,0,1.285481,
+       0.921136,0.246818,0.30098,0.246549,0.066511,1.221316,
+       0.828725,0.200239,0.522609,0.220877,0.059632,1.285481,
+       0,0,-1,-0.309053,0.082357,-0.029987,
+       0,0,-1,-0.001696,0,-0.029987,
+       0,0,-1,-0.319896,0,-0.029987,
+       0,0,-1,-0.001696,0,-0.029987,
+       0,0,-1,-0.309053,0.082357,-0.029987,
+       0,0,-1,-0.277265,0.1591,-0.029987,
+       0,0,-1,-0.001696,0,-0.029987,
+       0,0,-1,-0.277265,0.1591,-0.029987,
+       0,0,-1,-0.226697,0.225002,-0.029987,
+       0,0,-1,-0.001696,0,-0.029987,
+       0,0,-1,-0.226697,0.225002,-0.029987,
+       0,0,-1,-0.160795,0.275569,-0.029987,
+       0,0,-1,-0.001696,0,-0.029987,
+       0,0,-1,-0.160795,0.275569,-0.029987,
+       0,0,-1,-0.084051,0.307358,-0.029987,
+       0,0,-1,-0.001696,0,-0.029987,
+       0,0,-1,-0.084051,0.307358,-0.029987,
+       0,0,-1,-0.001695,0.3182,-0.029987,
+       0,0,-1,-0.001696,0,-0.029987,
+       0,0,-1,-0.001695,0.3182,-0.029987,
+       0,0,-1,-0.00158,0,-0.029987,
+       0,0,-1,-0.00158,0,-0.029987,
+       0,0,-1,-0.001695,0.3182,-0.029987,
+       0,0,-1,0.080661,0.307357,-0.029987,
+       0,0,-1,-0.00158,0,-0.029987,
+       0,0,-1,0.080661,0.307357,-0.029987,
+       0,0,-1,0,0,-0.029987,
+       0,0,-1,0,0,-0.029987,
+       0,0,-1,0.080661,0.307357,-0.029987,
+       0,0,-1,0.316504,0,-0.029987,
+       0,0,-1,0.316504,0,-0.029987,
+       0,0,-1,0.080661,0.307357,-0.029987,
+       0,0,-1,0.157405,0.275569,-0.029987,
+       0,0,-1,0.316504,0,-0.029987,
+       0,0,-1,0.157405,0.275569,-0.029987,
+       0,0,-1,0.223306,0.225001,-0.029987,
+       0,0,-1,0.316504,0,-0.029987,
+       0,0,-1,0.223306,0.225001,-0.029987,
+       0,0,-1,0.273874,0.1591,-0.029987,
+       0,0,-1,0.316504,0,-0.029987,
+       0,0,-1,0.273874,0.1591,-0.029987,
+       0,0,-1,0.305662,0.082356,-0.029987,
+       -0.933374,0.248573,0.258889,-0.249897,0.066511,1.221316,
+       -0.991445,0.130526,0,-0.267718,0,1.152459,
+       -0.946203,0.12457,0.298635,-0.258653,0,1.221316,
+       -0.991445,0.130526,0,-0.267718,0,1.152459,
+       -0.933374,0.248573,0.258889,-0.249897,0.066511,1.221316,
+       -0.95365,0.300918,0,-0.258653,0.068857,1.152459,
+       -0.95365,0.300918,0,-0.258653,0.068857,1.152459,
+       -0.962321,0.238552,-0.130504,-0.257428,0.068529,1.142828,
+       -0.991445,0.130526,0,-0.267718,0,1.152459,
+       0.298349,0.945507,-0.130403,0.066855,0.255755,1.142828,
+       0.45761,0.879539,-0.130403,0.129251,0.226768,1.120589,
+       0.214376,0.968007,-0.130403,0.065975,0.252467,1.116977,
+       0.45761,0.879539,-0.130403,0.129251,0.226768,1.120589,
+       0.298349,0.945507,-0.130403,0.066855,0.255755,1.142828,
+       0.518154,0.845276,-0.130482,0.130129,0.228289,1.133935,
+       0.518154,0.845276,-0.130482,0.130129,0.228289,1.133935,
+       0.719272,0.682366,-0.130482,0.184019,0.185692,1.126361,
+       0.45761,0.879539,-0.130403,0.129251,0.226768,1.120589,
+       -0.014612,0.998932,-0.043837,-0.001674,0.266045,1.152459,
+       0,0.991445,-0.130526,-0.001674,0.261211,1.115748,
+       -0.129428,0.983106,-0.129428,-0.03773,0.256551,1.116403,
+       -0.014612,0.998932,-0.043837,-0.001674,0.266045,1.152459,
+       0.214376,0.968007,-0.130403,0.065975,0.252467,1.116977,
+       0,0.991445,-0.130526,-0.001674,0.261211,1.115748,
+       0.214376,0.968007,-0.130403,0.065975,0.252467,1.116977,
+       -0.014612,0.998932,-0.043837,-0.001674,0.266045,1.152459,
+       0.298349,0.945507,-0.130403,0.066855,0.255755,1.142828,
+       0.719272,0.682366,-0.130482,0.184019,0.185692,1.126361,
+       0.871372,0.472954,-0.130482,0.226616,0.131803,1.133935,
+       0.879539,0.45761,-0.130403,0.225094,0.130924,1.120589,
+       -0.479491,0.867789,-0.130504,-0.13228,0.226216,1.115748,
+       -0.373774,0.902371,-0.21452,-0.070531,0.247251,1.083601,
+       -0.508803,0.828671,-0.233292,-0.130163,0.222551,1.083601,
+       -0.373774,0.902371,-0.21452,-0.070531,0.247251,1.083601,
+       -0.479491,0.867789,-0.130504,-0.13228,0.226216,1.115748,
+       -0.298349,0.945507,-0.130403,-0.068262,0.248511,1.08587,
+       -0.298349,0.945507,-0.130403,-0.068262,0.248511,1.08587,
+       -0.479491,0.867789,-0.130504,-0.13228,0.226216,1.115748,
+       -0.281725,0.950582,-0.130482,-0.06928,0.252311,1.115748,
+       -0.281725,0.950582,-0.130482,-0.06928,0.252311,1.115748,
+       -0.479491,0.867789,-0.130504,-0.13228,0.226216,1.115748,
+       -0.45761,0.879539,-0.130403,-0.132598,0.226768,1.120589,
+       -0.281725,0.950582,-0.130482,-0.06928,0.252311,1.115748,
+       -0.45761,0.879539,-0.130403,-0.132598,0.226768,1.120589,
+       -0.23131,0.96409,-0.130482,-0.069322,0.252467,1.116977,
+       -0.603641,0.78668,-0.129428,-0.186378,0.184704,1.115748,
+       -0.508803,0.828671,-0.233292,-0.130163,0.222551,1.083601,
+       -0.684559,0.681437,-0.258889,-0.183386,0.181712,1.083601,
+       -0.508803,0.828671,-0.233292,-0.130163,0.222551,1.083601,
+       -0.603641,0.78668,-0.129428,-0.186378,0.184704,1.115748,
+       -0.479491,0.867789,-0.130504,-0.13228,0.226216,1.115748,
+       -0.479491,0.867789,-0.130504,-0.13228,0.226216,1.115748,
+       -0.603641,0.78668,-0.129428,-0.186378,0.184704,1.115748,
+       -0.687753,0.714118,-0.130504,-0.187366,0.185692,1.126361,
+       -0.479491,0.867789,-0.130504,-0.13228,0.226216,1.115748,
+       -0.687753,0.714118,-0.130504,-0.187366,0.185692,1.126361,
+       -0.45761,0.879539,-0.130403,-0.132598,0.226768,1.120589,
+       -0.916109,0.379465,-0.129428,-0.253985,0.067606,1.115748,
+       -0.850426,0.467839,-0.240631,-0.224224,0.12849,1.083601,
+       -0.919462,0.271766,-0.284135,-0.249897,0.066511,1.083601,
+       -0.850426,0.467839,-0.240631,-0.224224,0.12849,1.083601,
+       -0.916109,0.379465,-0.129428,-0.253985,0.067606,1.115748,
+       -0.962321,0.238552,-0.130504,-0.257428,0.068529,1.142828,
+       -0.850426,0.467839,-0.240631,-0.224224,0.12849,1.083601,
+       -0.962321,0.238552,-0.130504,-0.257428,0.068529,1.142828,
+       -0.858616,0.495722,-0.130526,-0.229963,0.131803,1.133935,
+       -0.431564,-0.902025,0.010166,-0.224224,0.12849,1.083601,
+       -0.431564,-0.902025,0.010166,-0.229963,0.131803,1.133935,
+       -0.431564,-0.902025,0.010166,-0.22789,0.130606,1.115748,
+       -0.962321,0.238552,-0.130504,-0.257428,0.068529,1.142828,
+       -0.983106,0.129428,-0.129428,-0.262885,0,1.115748,
+       -0.991445,0.130526,0,-0.267718,0,1.152459,
+       -0.983106,0.129428,-0.129428,-0.262885,0,1.115748,
+       -0.962321,0.238552,-0.130504,-0.257428,0.068529,1.142828,
+       -0.958191,0.126148,-0.256821,-0.258653,0,1.083601,
+       -0.958191,0.126148,-0.256821,-0.258653,0,1.083601,
+       -0.962321,0.238552,-0.130504,-0.257428,0.068529,1.142828,
+       -0.919462,0.271766,-0.284135,-0.249897,0.066511,1.083601,
+       -0.302618,-0.953093,-0.006007,-0.249897,0.066511,1.083601,
+       -0.302618,-0.953093,-0.006007,-0.257428,0.068529,1.142828,
+       -0.302618,-0.953093,-0.006007,-0.253985,0.067606,1.115748,
+       0.139173,0,0.990268,0.225094,0.130924,1.120589,
+       0.116285,0.023258,0.992944,0.262631,0.264326,1.115313,
+       0.046579,0.093184,0.994559,0.184019,0.185692,1.126361,
+       0.116285,0.023258,0.992944,0.262631,0.264326,1.115313,
+       0.139173,0,0.990268,0.225094,0.130924,1.120589,
+       0.139173,0,0.990268,0.250793,0.067648,1.116977,
+       0.116285,0.023258,0.992944,0.262631,0.264326,1.115313,
+       0.139173,0,0.990268,0.250793,0.067648,1.116977,
+       0.139173,0,0.990268,0.259538,0,1.115748,
+       0.116285,0.023258,0.992944,0.262631,0.264326,1.115313,
+       0.139173,0,0.990268,0.259538,0,1.115748,
+       0.139173,0,0.990268,0.371895,0,1.099957,
+       0.116285,0.023258,0.992944,0.262631,0.264326,1.115313,
+       0.139173,0,0.990268,0.371895,0,1.099957,
+       0.139173,0,0.990268,0.321932,0.186846,1.106979,
+       0.139173,0,0.990268,0.321932,0.186846,1.106979,
+       0.139173,0,0.990268,0.371895,0,1.099957,
+       0.139173,0,0.990268,0.35919,0.096699,1.101743,
+       -0.78668,0.603641,-0.129428,-0.22789,0.130606,1.115748,
+       -0.684559,0.681437,-0.258889,-0.183386,0.181712,1.083601,
+       -0.850426,0.467839,-0.240631,-0.224224,0.12849,1.083601,
+       -0.684559,0.681437,-0.258889,-0.183386,0.181712,1.083601,
+       -0.78668,0.603641,-0.129428,-0.22789,0.130606,1.115748,
+       -0.858616,0.495722,-0.130526,-0.229963,0.131803,1.133935,
+       -0.684559,0.681437,-0.258889,-0.183386,0.181712,1.083601,
+       -0.858616,0.495722,-0.130526,-0.229963,0.131803,1.133935,
+       -0.687753,0.714118,-0.130504,-0.187366,0.185692,1.126361,
+       -0.593496,-0.804597,0.019678,-0.183386,0.181712,1.083601,
+       -0.593496,-0.804597,0.019678,-0.187366,0.185692,1.126361,
+       -0.593496,-0.804597,0.019678,-0.186378,0.184704,1.115748,
+       0.968007,0.214376,-0.130403,0.250793,0.067648,1.116977,
+       0.98934,0.130249,-0.065125,0.264371,0,1.152459,
+       0.983106,0.129428,-0.129428,0.259538,0,1.115748,
+       0.98934,0.130249,-0.065125,0.264371,0,1.152459,
+       0.968007,0.214376,-0.130403,0.250793,0.067648,1.116977,
+       0.950582,0.281725,-0.130482,0.254081,0.068529,1.142828,
+       -0.707107,0,0.707107,-0.189796,0,0.964337,
+       -0.707107,0,0.707107,-0.358292,0.09555,0.795841,
+       -0.707107,0,0.707107,-0.370691,0,0.783442,
+       -0.707107,0,0.707107,-0.358292,0.09555,0.795841,
+       -0.707107,0,0.707107,-0.189796,0,0.964337,
+       -0.707107,0,0.707107,-0.321869,0.184852,0.832264,
+       -0.707107,0,0.707107,-0.321869,0.184852,0.832264,
+       -0.707107,0,0.707107,-0.189796,0,0.964337,
+       -0.707107,0,0.707107,-0.291911,0.224602,0.862221,
+       -0.707107,0,0.707107,-0.291911,0.224602,0.862221,
+       -0.707107,0,0.707107,-0.189796,0,0.964337,
+       -0.707107,0,0.707107,-0.263713,0.262018,0.89042,
+       -0.707107,0,0.707107,-0.263713,0.262018,0.89042,
+       -0.707107,0,0.707107,-0.189796,0,0.964337,
+       -0.707107,0,0.707107,-0.187523,0.321863,0.96661,
+       -0.707107,0,0.707107,-0.187523,0.321863,0.96661,
+       -0.707107,0,0.707107,-0.189796,0,0.964337,
+       -0.707107,0,0.707107,-0.186114,0.049421,0.968018,
+       -0.707107,0,0.707107,-0.187523,0.321863,0.96661,
+       -0.707107,0,0.707107,-0.186114,0.049421,0.968018,
+       -0.707107,0,0.707107,-0.174654,0.09987,0.979478,
+       -0.707107,0,0.707107,-0.187523,0.321863,0.96661,
+       -0.707107,0,0.707107,-0.174654,0.09987,0.979478,
+       -0.707116,-0.000005,0.707098,-0.098222,0.360243,1.055911,
+       -0.707116,-0.000005,0.707098,-0.098222,0.360243,1.055911,
+       -0.707107,0,0.707107,-0.174654,0.09987,0.979478,
+       -0.707107,0,0.707107,-0.164437,0.125955,0.989696,
+       -0.707116,-0.000005,0.707098,-0.098222,0.360243,1.055911,
+       -0.707107,0,0.707107,-0.164437,0.125955,0.989696,
+       -0.707107,0,0.707107,-0.154077,0.152403,1.000056,
+       -0.707116,-0.000005,0.707098,-0.098222,0.360243,1.055911,
+       -0.707107,0,0.707107,-0.154077,0.152403,1.000056,
+       -0.707107,0,0.707107,-0.134696,0.185858,1.019437,
+       -0.707116,-0.000005,0.707098,-0.098222,0.360243,1.055911,
+       -0.707107,0,0.707107,-0.134696,0.185858,1.019437,
+       -0.707107,0,0.707107,-0.119932,0.204829,1.0342,
+       -0.707116,-0.000005,0.707098,-0.098222,0.360243,1.055911,
+       -0.707107,0,0.707107,-0.119932,0.204829,1.0342,
+       -0.707123,-0.000029,0.70709,-0.070531,0.247251,1.083601,
+       -0.707116,-0.000005,0.707098,-0.098222,0.360243,1.055911,
+       -0.707123,-0.000029,0.70709,-0.070531,0.247251,1.083601,
+       -0.707121,-0.000046,0.707093,-0.053235,0.366819,1.100906,
+       -0.707121,-0.000046,0.707093,-0.053235,0.366819,1.100906,
+       -0.707123,-0.000029,0.70709,-0.070531,0.247251,1.083601,
+       -0.707096,-0.000054,0.707118,-0.068262,0.248511,1.08587,
+       -0.707121,-0.000046,0.707093,-0.053235,0.366819,1.100906,
+       -0.707096,-0.000054,0.707118,-0.068262,0.248511,1.08587,
+       -0.7071,-0.000053,0.707114,-0.03773,0.256551,1.116403,
+       0.879539,0.45761,-0.130403,0.225094,0.130924,1.120589,
+       0.950582,0.281725,-0.130482,0.254081,0.068529,1.142828,
+       0.968007,0.214376,-0.130403,0.250793,0.067648,1.116977,
+       0.950582,0.281725,-0.130482,0.254081,0.068529,1.142828,
+       0.879539,0.45761,-0.130403,0.225094,0.130924,1.120589,
+       0.871372,0.472954,-0.130482,0.226616,0.131803,1.133935,
+       -0.281725,0.950582,-0.130482,-0.06928,0.252311,1.115748,
+       -0.129428,0.983106,-0.129428,-0.03773,0.256551,1.116403,
+       -0.298349,0.945507,-0.130403,-0.068262,0.248511,1.08587,
+       -0.129428,0.983106,-0.129428,-0.03773,0.256551,1.116403,
+       -0.281725,0.950582,-0.130482,-0.06928,0.252311,1.115748,
+       -0.23131,0.96409,-0.130482,-0.069322,0.252467,1.116977,
+       0,0.139173,0.990268,-0.03773,0.256551,1.116403,
+       0,0.139173,0.990268,-0.001695,0.373591,1.099954,
+       0,0.139173,0.990268,-0.053235,0.366819,1.100906,
+       0,0.139173,0.990268,-0.001695,0.373591,1.099954,
+       0,0.139173,0.990268,-0.03773,0.256551,1.116403,
+       0,0.139173,0.990268,-0.001674,0.261211,1.115748,
+       0,0.139173,0.990268,-0.001695,0.373591,1.099954,
+       0,0.139173,0.990268,-0.001674,0.261211,1.115748,
+       0,0.139173,0.990268,0.095004,0.360886,1.10174,
+       0,0.139173,0.990268,0.095004,0.360886,1.10174,
+       0,0.139173,0.990268,-0.001674,0.261211,1.115748,
+       0,0.139173,0.990268,0.065975,0.252467,1.116977,
+       0,0.139173,0.990268,0.095004,0.360886,1.10174,
+       0,0.139173,0.990268,0.065975,0.252467,1.116977,
+       0,0.139173,0.990268,0.129251,0.226768,1.120589,
+       0,0.139173,0.990268,0.095004,0.360886,1.10174,
+       0,0.139173,0.990268,0.129251,0.226768,1.120589,
+       -0.000013,0.139173,0.990268,0.185151,0.323627,1.106976,
+       -0.000013,0.139173,0.990268,0.185151,0.323627,1.106976,
+       0,0.139173,0.990268,0.129251,0.226768,1.120589,
+       0.046579,0.093184,0.994559,0.184019,0.185692,1.126361,
+       -0.000013,0.139173,0.990268,0.185151,0.323627,1.106976,
+       0.046579,0.093184,0.994559,0.184019,0.185692,1.126361,
+       0.116285,0.023258,0.992944,0.262631,0.264326,1.115313,
+       -0.97404,0.217777,-0.061794,-0.309053,0.082357,-0.029987,
+       -0.98955,0.130278,-0.061793,-0.319896,0,-0.029987,
+       -0.989173,0.133263,-0.061463,-0.370691,0,0.783442,
+       -0.949542,0.307659,-0.060957,-0.358292,0.09555,0.795841,
+       -0.97404,0.217777,-0.061794,-0.309053,0.082357,-0.029987,
+       -0.989173,0.133263,-0.061463,-0.370691,0,0.783442,
+       -0.660522,0.748734,-0.055749,-0.263713,0.262018,0.89042,
+       -0.528009,0.847482,-0.054603,-0.160795,0.275569,-0.029987,
+       -0.742333,0.667567,-0.057413,-0.226697,0.225002,-0.029987,
+       -0.442076,0.895438,-0.052531,-0.187523,0.321863,0.96661,
+       -0.528009,0.847482,-0.054603,-0.160795,0.275569,-0.029987,
+       -0.660522,0.748734,-0.055749,-0.263713,0.262018,0.89042,
+       -0.442076,0.895438,-0.052531,-0.187523,0.321863,0.96661,
+       -0.290009,0.955643,-0.051395,-0.084051,0.307358,-0.029987,
+       -0.528009,0.847482,-0.054603,-0.160795,0.275569,-0.029987,
+       -0.182842,0.982288,-0.040983,-0.098222,0.360243,1.055911,
+       -0.290009,0.955643,-0.051395,-0.084051,0.307358,-0.029987,
+       -0.442076,0.895438,-0.052531,-0.187523,0.321863,0.96661,
+       -0.882868,0.465741,-0.060243,-0.277265,0.1591,-0.029987,
+       -0.97404,0.217777,-0.061794,-0.309053,0.082357,-0.029987,
+       -0.949542,0.307659,-0.060957,-0.358292,0.09555,0.795841,
+       -0.834162,0.548386,-0.058709,-0.321869,0.184852,0.832264,
+       -0.882868,0.465741,-0.060243,-0.277265,0.1591,-0.029987,
+       -0.949542,0.307659,-0.060957,-0.358292,0.09555,0.795841,
+       0.706271,0.706269,-0.048625,0.223306,0.225001,-0.029987,
+       0.841431,0.538172,-0.048629,0.321932,0.186846,1.106979,
+       0.885777,0.461542,-0.048757,0.273874,0.1591,-0.029987,
+       0.706276,0.706273,-0.048501,0.262631,0.264326,1.115313,
+       0.841431,0.538172,-0.048629,0.321932,0.186846,1.106979,
+       0.706271,0.706269,-0.048625,0.223306,0.225001,-0.029987,
+       -0.742333,0.667567,-0.057413,-0.226697,0.225002,-0.029987,
+       -0.882868,0.465741,-0.060243,-0.277265,0.1591,-0.029987,
+       -0.834162,0.548386,-0.058709,-0.321869,0.184852,0.832264,
+       0.538174,0.84143,-0.048629,0.185151,0.323627,1.106976,
+       0.706271,0.706269,-0.048625,0.223306,0.225001,-0.029987,
+       0.461545,0.885776,-0.048757,0.157405,0.275569,-0.029987,
+       0.706276,0.706273,-0.048501,0.262631,0.264326,1.115313,
+       0.706271,0.706269,-0.048625,0.223306,0.225001,-0.029987,
+       0.538174,0.84143,-0.048629,0.185151,0.323627,1.106976,
+       -0.182842,0.982288,-0.040983,-0.098222,0.360243,1.055911,
+       -0.038606,0.998033,-0.04939,-0.001695,0.3182,-0.029987,
+       -0.290009,0.955643,-0.051395,-0.084051,0.307358,-0.029987,
+       0.003996,0.999178,-0.040348,-0.001695,0.373591,1.099954,
+       -0.038606,0.998033,-0.04939,-0.001695,0.3182,-0.029987,
+       -0.182842,0.982288,-0.040983,-0.098222,0.360243,1.055911,
+       -0.130511,0.991342,-0.014393,-0.053235,0.366819,1.100906,
+       0.003996,0.999178,-0.040348,-0.001695,0.373591,1.099954,
+       -0.182842,0.982288,-0.040983,-0.098222,0.360243,1.055911,
+       -0.776405,0.627699,-0.056469,-0.291911,0.224602,0.862221,
+       -0.742333,0.667567,-0.057413,-0.226697,0.225002,-0.029987,
+       -0.834162,0.548386,-0.058709,-0.321869,0.184852,0.832264,
+       -0.742333,0.667567,-0.057413,-0.226697,0.225002,-0.029987,
+       -0.776405,0.627699,-0.056469,-0.291911,0.224602,0.862221,
+       -0.660522,0.748734,-0.055749,-0.263713,0.262018,0.89042,
+       0.003996,0.999178,-0.040348,-0.001695,0.373591,1.099954,
+       0.216169,0.975132,-0.048879,0.080661,0.307357,-0.029987,
+       -0.038606,0.998033,-0.04939,-0.001695,0.3182,-0.029987,
+       0.216169,0.975132,-0.048879,0.080661,0.307357,-0.029987,
+       0.003996,0.999178,-0.040348,-0.001695,0.373591,1.099954,
+       0.30134,0.952267,-0.048814,0.095004,0.360886,1.10174,
+       0.885777,0.461542,-0.048757,0.273874,0.1591,-0.029987,
+       0.952267,0.301337,-0.048814,0.35919,0.096699,1.101743,
+       0.975132,0.216167,-0.048879,0.305662,0.082356,-0.029987,
+       0.841431,0.538172,-0.048629,0.321932,0.186846,1.106979,
+       0.952267,0.301337,-0.048814,0.35919,0.096699,1.101743,
+       0.885777,0.461542,-0.048757,0.273874,0.1591,-0.029987,
+       0.30134,0.952267,-0.048814,0.095004,0.360886,1.10174,
+       0.461545,0.885776,-0.048757,0.157405,0.275569,-0.029987,
+       0.216169,0.975132,-0.048879,0.080661,0.307357,-0.029987,
+       0.538174,0.84143,-0.048629,0.185151,0.323627,1.106976,
+       0.461545,0.885776,-0.048757,0.157405,0.275569,-0.029987,
+       0.30134,0.952267,-0.048814,0.095004,0.360886,1.10174,
+       0.975132,0.216167,-0.048879,0.305662,0.082356,-0.029987,
+       0.990237,0.130681,-0.048519,0.371895,0,1.099957,
+       0.990276,0.130371,-0.048544,0.316504,0,-0.029987,
+       0.990237,0.130681,-0.048519,0.371895,0,1.099957,
+       0.975132,0.216167,-0.048879,0.305662,0.082356,-0.029987,
+       0.952267,0.301337,-0.048814,0.35919,0.096699,1.101743
+};
+static const struct gllist handsy_model_finger_metacarpal_frame = {
+ GL_N3F_V3F, GL_TRIANGLES, 825, handsy_model_finger_metacarpal_data, 0
+};
+const struct gllist *handsy_model_finger_metacarpal = &handsy_model_finger_metacarpal_frame;
+
+static const float handsy_model_finger_proximal_data[] = {
+       -0.707107,0,0.707107,-0.188122,0,2.002282,
+       -0.537487,0,0.843272,-0.133022,0.191561,2.044561,
+       -0.707107,0,0.707107,-0.188122,0.191561,2.002282,
+       -0.537487,0,0.843272,-0.133022,0.191561,2.044561,
+       -0.707107,0,0.707107,-0.188122,0,2.002282,
+       -0.461551,0,0.887114,-0.133022,0,2.044561,
+       0.866025,0,0.5,0.230401,0,1.947182,
+       0.707107,0,0.707107,0.188122,0.191561,2.002282,
+       0.707107,0,0.707107,0.188122,0,2.002282,
+       0.707107,0,0.707107,0.188122,0.191561,2.002282,
+       0.866025,0,0.5,0.230401,0,1.947182,
+       0.866025,0,0.5,0.230401,0.191561,1.947182,
+       -0.866025,0,-0.5,-0.230401,0,1.681138,
+       -0.793353,0,-0.608761,-0.188122,0.191561,1.626038,
+       -0.793353,0,-0.608761,-0.188122,0,1.626038,
+       -0.793353,0,-0.608761,-0.188122,0.191561,1.626038,
+       -0.866025,0,-0.5,-0.230401,0,1.681138,
+       -0.866025,0,-0.5,-0.230401,0.191561,1.681138,
+       -0.866025,0,0.5,-0.230401,0.191561,1.947182,
+       -0.965926,0,0.258819,-0.256979,0,1.883018,
+       -0.866025,0,0.5,-0.230401,0,1.947182,
+       -0.965926,0,0.258819,-0.256979,0,1.883018,
+       -0.866025,0,0.5,-0.230401,0.191561,1.947182,
+       -0.965926,0,0.258819,-0.256979,0.191561,1.883018,
+       -0.461551,0,0.887114,-0.133022,0,2.044561,
+       -0.300918,0,0.95365,-0.068857,0.191561,2.071139,
+       -0.537487,0,0.843272,-0.133022,0.191561,2.044561,
+       -0.300918,0,0.95365,-0.068857,0.191561,2.071139,
+       -0.461551,0,0.887114,-0.133022,0,2.044561,
+       -0.216222,0,0.976344,-0.068857,0,2.071139,
+       0.043842,0,0.999038,0,0,2.080205,
+       0.216222,0,0.976344,0.068857,0.191561,2.071139,
+       -0.043842,0,0.999038,0,0.191561,2.080205,
+       0.216222,0,0.976344,0.068857,0.191561,2.071139,
+       0.043842,0,0.999038,0,0,2.080205,
+       0.300918,0,0.95365,0.068857,0,2.071139,
+       -1,0,0,-0.266045,0.191561,1.81416,
+       -0.976344,0,-0.216222,-0.256979,0,1.745303,
+       -1,0,0,-0.266045,0,1.81416,
+       -0.976344,0,-0.216222,-0.256979,0,1.745303,
+       -1,0,0,-0.266045,0.191561,1.81416,
+       -0.95365,0,-0.300918,-0.256979,0.191561,1.745303,
+       -0.965926,0,0.258819,-0.256979,0,1.883018,
+       -1,0,0,-0.266045,0.191561,1.81416,
+       -1,0,0,-0.266045,0,1.81416,
+       -1,0,0,-0.266045,0.191561,1.81416,
+       -0.965926,0,0.258819,-0.256979,0,1.883018,
+       -0.965926,0,0.258819,-0.256979,0.191561,1.883018,
+       -0.95365,0,-0.300918,-0.256979,0.191561,1.745303,
+       -0.866025,0,-0.5,-0.230401,0,1.681138,
+       -0.976344,0,-0.216222,-0.256979,0,1.745303,
+       -0.866025,0,-0.5,-0.230401,0,1.681138,
+       -0.95365,0,-0.300918,-0.256979,0.191561,1.745303,
+       -0.866025,0,-0.5,-0.230401,0.191561,1.681138,
+       0.300918,0,0.95365,0.068857,0,2.071139,
+       0.461551,0,0.887114,0.133022,0.191561,2.044561,
+       0.216222,0,0.976344,0.068857,0.191561,2.071139,
+       0.461551,0,0.887114,0.133022,0.191561,2.044561,
+       0.300918,0,0.95365,0.068857,0,2.071139,
+       0.537487,0,0.843272,0.133022,0,2.044561,
+       0.537487,0,0.843272,0.133022,0,2.044561,
+       0.707107,0,0.707107,0.188122,0.191561,2.002282,
+       0.461551,0,0.887114,0.133022,0.191561,2.044561,
+       0.707107,0,0.707107,0.188122,0.191561,2.002282,
+       0.537487,0,0.843272,0.133022,0,2.044561,
+       0.707107,0,0.707107,0.188122,0,2.002282,
+       -0.216222,0,0.976344,-0.068857,0,2.071139,
+       -0.043842,0,0.999038,0,0.191561,2.080205,
+       -0.300918,0,0.95365,-0.068857,0.191561,2.071139,
+       -0.043842,0,0.999038,0,0.191561,2.080205,
+       -0.216222,0,0.976344,-0.068857,0,2.071139,
+       0.043842,0,0.999038,0,0,2.080205,
+       1,0,0,0.266045,0.191561,1.81416,
+       0.976344,0,0.216222,0.256979,0,1.883018,
+       1,0,0,0.266045,0,1.81416,
+       0.976344,0,0.216222,0.256979,0,1.883018,
+       1,0,0,0.266045,0.191561,1.81416,
+       0.95365,0,0.300918,0.256979,0.191561,1.883018,
+       0.95365,0,0.300918,0.256979,0.191561,1.883018,
+       0.866025,0,0.5,0.230401,0,1.947182,
+       0.976344,0,0.216222,0.256979,0,1.883018,
+       0.866025,0,0.5,0.230401,0,1.947182,
+       0.95365,0,0.300918,0.256979,0.191561,1.883018,
+       0.866025,0,0.5,0.230401,0.191561,1.947182,
+       -0.707107,0,0.707107,-0.188122,0,2.002282,
+       -0.866025,0,0.5,-0.230401,0.191561,1.947182,
+       -0.866025,0,0.5,-0.230401,0,1.947182,
+       -0.866025,0,0.5,-0.230401,0.191561,1.947182,
+       -0.707107,0,0.707107,-0.188122,0,2.002282,
+       -0.707107,0,0.707107,-0.188122,0.191561,2.002282,
+       0,1,0,-0.230401,0.191561,1.681138,
+       0,0.999802,0.019917,0,0.191561,1.81416,
+       0,1,0,-0.188122,0.191561,1.626038,
+       0,0.999802,0.019917,0,0.191561,1.81416,
+       0,1,0,-0.230401,0.191561,1.681138,
+       0,1,0,-0.256979,0.191561,1.745303,
+       0,0.999802,0.019917,0,0.191561,1.81416,
+       0,1,0,-0.256979,0.191561,1.745303,
+       0,0.99969,0.024899,-0.266045,0.191561,1.81416,
+       0,0.999802,0.019917,0,0.191561,1.81416,
+       0,0.99969,0.024899,-0.266045,0.191561,1.81416,
+       0,0.999449,0.033205,0.266045,0.191561,1.81416,
+       0,0.999449,0.033205,0.266045,0.191561,1.81416,
+       0,0.99969,0.024899,-0.266045,0.191561,1.81416,
+       0,1,0,0.256979,0.191561,1.883018,
+       0,1,0,0.256979,0.191561,1.883018,
+       0,0.99969,0.024899,-0.266045,0.191561,1.81416,
+       0,1,0,-0.256979,0.191561,1.883018,
+       0,1,0,0.256979,0.191561,1.883018,
+       0,1,0,-0.256979,0.191561,1.883018,
+       0,1,0,-0.230401,0.191561,1.947182,
+       0,1,0,0.256979,0.191561,1.883018,
+       0,1,0,-0.230401,0.191561,1.947182,
+       0,1,0,0.230401,0.191561,1.947182,
+       0,1,0,0.230401,0.191561,1.947182,
+       0,1,0,-0.230401,0.191561,1.947182,
+       0,1,0,-0.188122,0.191561,2.002282,
+       0,1,0,0.230401,0.191561,1.947182,
+       0,1,0,-0.188122,0.191561,2.002282,
+       0,1,0,0.188122,0.191561,2.002282,
+       0,1,0,0.188122,0.191561,2.002282,
+       0,1,0,-0.188122,0.191561,2.002282,
+       0,1,0,-0.133022,0.191561,2.044561,
+       0,1,0,0.188122,0.191561,2.002282,
+       0,1,0,-0.133022,0.191561,2.044561,
+       0,1,0,0.133022,0.191561,2.044561,
+       0,1,0,0.133022,0.191561,2.044561,
+       0,1,0,-0.133022,0.191561,2.044561,
+       0,1,0,-0.068857,0.191561,2.071139,
+       0,1,0,0.133022,0.191561,2.044561,
+       0,1,0,-0.068857,0.191561,2.071139,
+       0,1,0,0.068857,0.191561,2.071139,
+       0,1,0,0.068857,0.191561,2.071139,
+       0,1,0,-0.068857,0.191561,2.071139,
+       0,1,0,0,0.191561,2.080205,
+       0,0.999449,0.033205,0.266045,0.191561,1.81416,
+       0,1,0,0.261211,0.191561,1.777449,
+       0,0.999802,0.019917,0,0.191561,1.81416,
+       -0.707107,0,0.707107,-0.188122,0.191561,1.626038,
+       -0.707107,0,0.707107,-0.342487,0,1.471673,
+       -0.707107,0,0.707107,-0.188122,0,1.626038,
+       -0.707107,0,0.707107,-0.342487,0,1.471673,
+       -0.707107,0,0.707107,-0.188122,0.191561,1.626038,
+       -0.707107,0,0.707107,-0.330524,0.088564,1.483636,
+       -0.707107,0,0.707107,-0.330524,0.088564,1.483636,
+       -0.707107,0,0.707107,-0.188122,0.191561,1.626038,
+       -0.707107,0,0.707107,-0.295571,0.170648,1.518589,
+       -0.707107,0,0.707107,-0.295571,0.170648,1.518589,
+       -0.707107,0,0.707107,-0.188122,0.191561,1.626038,
+       -0.707107,0,0.707107,-0.240341,0.240341,1.573819,
+       -0.707107,0,0.707107,-0.240341,0.240341,1.573819,
+       -0.707107,0,0.707107,-0.188122,0.191561,1.626038,
+       -0.707107,0,0.707107,0,0.191561,1.81416,
+       -0.707107,0,0.707107,-0.240341,0.240341,1.573819,
+       -0.707107,0,0.707107,0,0.191561,1.81416,
+       -0.707107,0,0.707107,0,0.333791,1.81416,
+       -0.707107,0,0.707107,-0.240341,0.240341,1.573819,
+       -0.707107,0,0.707107,0,0.333791,1.81416,
+       -0.707107,0,0.707107,-0.169041,0.292788,1.645119,
+       -0.707107,0,0.707107,-0.169041,0.292788,1.645119,
+       -0.707107,0,0.707107,0,0.333791,1.81416,
+       -0.707107,0,0.707107,-0.086963,0.32455,1.727197,
+       -0.975964,0.216853,0.021658,-0.330524,0.088564,1.483636,
+       -0.991173,0.130825,0.021489,-0.366435,0.000001,0.366435,
+       -0.991152,0.130986,0.021476,-0.342487,0,1.471673,
+       -0.991173,0.130825,0.021489,-0.366435,0.000001,0.366435,
+       -0.975964,0.216853,0.021658,-0.330524,0.088564,1.483636,
+       -0.953119,0.301819,0.021666,-0.35419,0.094905,0.35419,
+       -0.896223,0.443073,0.021681,-0.295571,0.170648,1.518589,
+       -0.953119,0.301819,0.021666,-0.35419,0.094905,0.35419,
+       -0.975964,0.216853,0.021658,-0.330524,0.088564,1.483636,
+       -0.953119,0.301819,0.021666,-0.35419,0.094905,0.35419,
+       -0.896223,0.443073,0.021681,-0.295571,0.170648,1.518589,
+       -0.92339,0.383259,0.021542,-0.346541,0.113724,0.346541,
+       -0.842269,0.538618,0.02175,-0.31821,0.183719,0.31821,
+       -0.92339,0.383259,0.021542,-0.346541,0.113724,0.346541,
+       -0.896223,0.443073,0.021681,-0.295571,0.170648,1.518589,
+       -0.73645,0.676138,0.021861,-0.240341,0.240341,1.573819,
+       -0.842269,0.538618,0.02175,-0.31821,0.183719,0.31821,
+       -0.896223,0.443073,0.021681,-0.295571,0.170648,1.518589,
+       -0.842269,0.538618,0.02175,-0.31821,0.183719,0.31821,
+       -0.73645,0.676138,0.021861,-0.240341,0.240341,1.573819,
+       -0.792488,0.609503,0.021646,-0.307808,0.19758,0.307808,
+       -0.73645,0.676138,0.021861,-0.240341,0.240341,1.573819,
+       -0.793166,0.608618,0.021712,-0.288583,0.223321,0.288583,
+       -0.792488,0.609503,0.021646,-0.307808,0.19758,0.307808,
+       -0.793166,0.608618,0.021712,-0.288583,0.223321,0.288583,
+       -0.73645,0.676138,0.021861,-0.240341,0.240341,1.573819,
+       -0.706937,0.706937,0.0219,-0.26068,0.26068,0.26068,
+       -0.73645,0.676138,0.021861,-0.240341,0.240341,1.573819,
+       -0.60721,0.794242,0.021817,-0.193727,0.313888,0.193727,
+       -0.706937,0.706937,0.0219,-0.26068,0.26068,0.26068,
+       -0.60721,0.794242,0.021817,-0.193727,0.313888,0.193727,
+       -0.498092,0.866843,0.022094,-0.169041,0.292788,1.645119,
+       -0.498727,0.866479,0.022051,-0.185142,0.320676,0.185142,
+       -0.498092,0.866843,0.022094,-0.169041,0.292788,1.645119,
+       -0.60721,0.794242,0.021817,-0.193727,0.313888,0.193727,
+       -0.73645,0.676138,0.021861,-0.240341,0.240341,1.573819,
+       -0.498092,0.866843,0.022094,-0.169041,0.292788,1.645119,
+       -0.380786,0.924402,0.021972,-0.101338,0.357372,0.101338,
+       -0.498727,0.866479,0.022051,-0.185142,0.320676,0.185142,
+       -0.380786,0.924402,0.021972,-0.101338,0.357372,0.101338,
+       -0.230952,0.97271,0.022268,-0.086963,0.32455,1.727197,
+       -0.215222,0.976313,0.022187,-0.09634,0.359544,0.09634,
+       -0.230952,0.97271,0.022268,-0.086963,0.32455,1.727197,
+       -0.380786,0.924402,0.021972,-0.101338,0.357372,0.101338,
+       -0.498092,0.866843,0.022094,-0.169041,0.292788,1.645119,
+       -0.230952,0.97271,0.022268,-0.086963,0.32455,1.727197,
+       0.001487,0.999749,0.022361,0,0.373195,0.052449,
+       -0.129511,0.991332,0.022072,-0.002638,0.372856,0.052402,
+       0.001487,0.999749,0.022361,0,0.373195,0.052449,
+       -0.230952,0.97271,0.022268,-0.086963,0.32455,1.727197,
+       0.001487,0.999749,0.022361,0,0.333791,1.81416,
+       0.300843,0.953412,0.02234,0.0966,0.360517,0.050667,
+       0.461436,0.886892,0.02234,0.167158,0.289526,1.790668,
+       0.537353,0.843061,0.02234,0.186676,0.323332,0.045441,
+       0.461436,0.886892,0.02234,0.167158,0.289526,1.790668,
+       0.300843,0.953412,0.02234,0.0966,0.360517,0.050667,
+       0.194766,0.980596,0.022313,0.086462,0.32268,1.802009,
+       0.991201,0.130494,0.02217,0.373195,0,0.052449,
+       0.976101,0.216168,0.02234,0.323399,0.086654,1.768709,
+       0.991201,0.130494,0.02217,0.334843,0,1.767101,
+       0.976101,0.216168,0.02234,0.323399,0.086654,1.768709,
+       0.991201,0.130494,0.02217,0.373195,0,0.052449,
+       0.953412,0.300843,0.02234,0.360517,0.0966,0.050667,
+       0.843061,0.537353,0.02234,0.323332,0.186676,0.045441,
+       0.725293,0.688078,0.022354,0.236551,0.236551,1.780915,
+       0.886892,0.461436,0.02234,0.28986,0.167351,1.773423,
+       0.725293,0.688078,0.022354,0.236551,0.236551,1.780915,
+       0.843061,0.537353,0.02234,0.323332,0.186676,0.045441,
+       0.793158,0.608612,0.02217,0.280033,0.243325,0.039356,
+       0.725293,0.688078,0.022354,0.236551,0.236551,1.780915,
+       0.793158,0.608612,0.02217,0.280033,0.243325,0.039356,
+       0.70693,0.70693,0.022361,0.264131,0.264131,0.037121,
+       0.537353,0.843061,0.02234,0.186676,0.323332,0.045441,
+       0.725293,0.688078,0.022354,0.236551,0.236551,1.780915,
+       0.70693,0.70693,0.022361,0.264131,0.264131,0.037121,
+       0.725293,0.688078,0.022354,0.236551,0.236551,1.780915,
+       0.537353,0.843061,0.02234,0.186676,0.323332,0.045441,
+       0.461436,0.886892,0.02234,0.167158,0.289526,1.790668,
+       0.953412,0.300843,0.02234,0.360517,0.0966,0.050667,
+       0.886892,0.461436,0.02234,0.28986,0.167351,1.773423,
+       0.976101,0.216168,0.02234,0.323399,0.086654,1.768709,
+       0.886892,0.461436,0.02234,0.28986,0.167351,1.773423,
+       0.953412,0.300843,0.02234,0.360517,0.0966,0.050667,
+       0.843061,0.537353,0.02234,0.323332,0.186676,0.045441,
+       0.130494,0.991201,0.02217,0.037985,0.368209,0.051748,
+       0.194766,0.980596,0.022313,0.086462,0.32268,1.802009,
+       0.300843,0.953412,0.02234,0.0966,0.360517,0.050667,
+       0.194766,0.980596,0.022313,0.086462,0.32268,1.802009,
+       0.130494,0.991201,0.02217,0.037985,0.368209,0.051748,
+       0.001487,0.999749,0.022361,0,0.373195,0.052449,
+       0.194766,0.980596,0.022313,0.086462,0.32268,1.802009,
+       0.001487,0.999749,0.022361,0,0.373195,0.052449,
+       0.001487,0.999749,0.022361,0,0.333791,1.81416,
+       0.991445,0,-0.130526,0.261211,0,1.777449,
+       1,0,0,0.266045,0.191561,1.81416,
+       1,0,0,0.266045,0,1.81416,
+       1,0,0,0.266045,0.191561,1.81416,
+       0.991445,0,-0.130526,0.261211,0,1.777449,
+       0.991445,0,-0.130526,0.261211,0.191561,1.777449,
+       0.139173,0,0.990268,0,0.191561,1.81416,
+       0.139173,0,0.990268,0.086462,0.32268,1.802009,
+       0.139173,0,0.990268,0,0.333791,1.81416,
+       0.139173,0,0.990268,0.086462,0.32268,1.802009,
+       0.139173,0,0.990268,0,0.191561,1.81416,
+       0.139173,0,0.990268,0.261211,0.191561,1.777449,
+       0.139173,0,0.990268,0.086462,0.32268,1.802009,
+       0.139173,0,0.990268,0.261211,0.191561,1.777449,
+       0.139173,0,0.990268,0.167158,0.289526,1.790668,
+       0.139173,0,0.990268,0.167158,0.289526,1.790668,
+       0.139173,0,0.990268,0.261211,0.191561,1.777449,
+       0.139173,0,0.990268,0.236551,0.236551,1.780915,
+       0.139173,0,0.990268,0.236551,0.236551,1.780915,
+       0.139173,0,0.990268,0.261211,0.191561,1.777449,
+       0.139173,0,0.990268,0.28986,0.167351,1.773423,
+       0.139173,0,0.990268,0.28986,0.167351,1.773423,
+       0.139173,0,0.990268,0.261211,0.191561,1.777449,
+       0.139173,0,0.990268,0.261211,0,1.777449,
+       0.139173,0,0.990268,0.28986,0.167351,1.773423,
+       0.139173,0,0.990268,0.261211,0,1.777449,
+       0.139173,0,0.990268,0.334843,0,1.767101,
+       0.139173,0,0.990268,0.28986,0.167351,1.773423,
+       0.139173,0,0.990268,0.334843,0,1.767101,
+       0.139173,0,0.990268,0.323399,0.086654,1.768709,
+       -0.215222,0.976313,0.022187,-0.09634,0.359544,0.09634,
+       -0.129511,0.991332,0.022072,-0.002638,0.372856,0.052402,
+       -0.130495,0.991204,0.022019,-0.0515,0.366444,0.0515,
+       -0.129511,0.991332,0.022072,-0.002638,0.372856,0.052402,
+       -0.215222,0.976313,0.022187,-0.09634,0.359544,0.09634,
+       -0.230952,0.97271,0.022268,-0.086963,0.32455,1.727197,
+       -0.707107,0,-0.707107,-0.366435,0.000001,0.366435,
+       -0.707107,0,-0.707107,-0.18444,0.049421,0.18444,
+       -0.707107,0,-0.707107,-0.188122,0,0.188122,
+       -0.707107,0,-0.707107,-0.18444,0.049421,0.18444,
+       -0.707107,0,-0.707107,-0.366435,0.000001,0.366435,
+       -0.707107,0,-0.707107,-0.35419,0.094905,0.35419,
+       -0.707107,0,-0.707107,-0.18444,0.049421,0.18444,
+       -0.707107,0,-0.707107,-0.35419,0.094905,0.35419,
+       -0.707107,0,-0.707107,-0.17298,0.09987,0.17298,
+       -0.707107,0,-0.707107,-0.17298,0.09987,0.17298,
+       -0.707107,0,-0.707107,-0.35419,0.094905,0.35419,
+       -0.707107,0,-0.707107,-0.346541,0.113724,0.346541,
+       -0.707107,0,-0.707107,-0.17298,0.09987,0.17298,
+       -0.707107,0,-0.707107,-0.346541,0.113724,0.346541,
+       -0.707107,0,-0.707107,-0.152403,0.152403,0.152403,
+       -0.707107,0,-0.707107,-0.152403,0.152403,0.152403,
+       -0.707107,0,-0.707107,-0.346541,0.113724,0.346541,
+       -0.707107,0,-0.707107,-0.31821,0.183719,0.31821,
+       -0.707107,0,-0.707107,-0.152403,0.152403,0.152403,
+       -0.707107,0,-0.707107,-0.31821,0.183719,0.31821,
+       -0.707107,0,-0.707107,-0.133022,0.185858,0.133022,
+       -0.707107,0,-0.707107,-0.133022,0.185858,0.133022,
+       -0.707107,0,-0.707107,-0.31821,0.183719,0.31821,
+       -0.707107,0,-0.707107,-0.307808,0.19758,0.307808,
+       -0.707107,0,-0.707107,-0.133022,0.185858,0.133022,
+       -0.707107,0,-0.707107,-0.307808,0.19758,0.307808,
+       -0.707107,0,-0.707107,-0.118258,0.204829,0.118258,
+       -0.707107,0,-0.707107,-0.118258,0.204829,0.118258,
+       -0.707107,0,-0.707107,-0.307808,0.19758,0.307808,
+       -0.707107,0,-0.707107,-0.288583,0.223321,0.288583,
+       -0.707107,0,-0.707107,-0.118258,0.204829,0.118258,
+       -0.707107,0,-0.707107,-0.288583,0.223321,0.288583,
+       -0.707107,0,-0.707107,-0.068857,0.247251,0.068857,
+       -0.707107,0,-0.707107,-0.068857,0.247251,0.068857,
+       -0.707107,0,-0.707107,-0.288583,0.223321,0.288583,
+       -0.707107,0,-0.707107,-0.26068,0.26068,0.26068,
+       -0.707107,0,-0.707107,-0.068857,0.247251,0.068857,
+       -0.707107,0,-0.707107,-0.26068,0.26068,0.26068,
+       -0.707107,0,-0.707107,-0.066588,0.248511,0.066588,
+       -0.707107,0,-0.707107,-0.066588,0.248511,0.066588,
+       -0.707107,0,-0.707107,-0.26068,0.26068,0.26068,
+       -0.707107,0,-0.707107,-0.036056,0.256551,0.036056,
+       -0.707107,0,-0.707107,-0.036056,0.256551,0.036056,
+       -0.707107,0,-0.707107,-0.26068,0.26068,0.26068,
+       -0.707107,0,-0.707107,-0.0515,0.366444,0.0515,
+       -0.707107,0,-0.707107,-0.0515,0.366444,0.0515,
+       -0.707107,0,-0.707107,-0.26068,0.26068,0.26068,
+       -0.707107,0,-0.707107,-0.193727,0.313888,0.193727,
+       -0.707107,0,-0.707107,-0.0515,0.366444,0.0515,
+       -0.707107,0,-0.707107,-0.193727,0.313888,0.193727,
+       -0.707107,0,-0.707107,-0.185142,0.320676,0.185142,
+       -0.707107,0,-0.707107,-0.0515,0.366444,0.0515,
+       -0.707107,0,-0.707107,-0.185142,0.320676,0.185142,
+       -0.707107,0,-0.707107,-0.101338,0.357372,0.101338,
+       -0.707107,0,-0.707107,-0.0515,0.366444,0.0515,
+       -0.707107,0,-0.707107,-0.101338,0.357372,0.101338,
+       -0.707107,0,-0.707107,-0.09634,0.359544,0.09634,
+       0,0.139173,-0.990268,-0.002638,0.372856,0.052402,
+       0,0.139173,-0.990268,-0.036056,0.256551,0.036056,
+       0,0.139173,-0.990268,-0.0515,0.366444,0.0515,
+       0,0.139173,-0.990268,-0.036056,0.256551,0.036056,
+       0,0.139173,-0.990268,-0.002638,0.372856,0.052402,
+       0,0.139173,-0.990268,0,0.261211,0.036711,
+       0,0.139173,-0.990268,0,0.261211,0.036711,
+       0,0.139173,-0.990268,-0.002638,0.372856,0.052402,
+       0,0.139173,-0.990268,0,0.373195,0.052449,
+       0,0.139173,-0.990268,0,0.261211,0.036711,
+       0,0.139173,-0.990268,0,0.373195,0.052449,
+       0,0.139173,-0.990268,0.037985,0.368209,0.051748,
+       0,0.139173,-0.990268,0,0.261211,0.036711,
+       0,0.139173,-0.990268,0.037985,0.368209,0.051748,
+       0,0.139173,-0.990268,0.067648,0.252467,0.035482,
+       0,0.139173,-0.990268,0.067648,0.252467,0.035482,
+       0,0.139173,-0.990268,0.037985,0.368209,0.051748,
+       0,0.139173,-0.990268,0.0966,0.360517,0.050667,
+       0,0.139173,-0.990268,0.067648,0.252467,0.035482,
+       0,0.139173,-0.990268,0.0966,0.360517,0.050667,
+       0,0.139173,-0.990268,0.130924,0.226768,0.03187,
+       0,0.139173,-0.990268,0.130924,0.226768,0.03187,
+       0,0.139173,-0.990268,0.0966,0.360517,0.050667,
+       0,0.139173,-0.990268,0.186676,0.323332,0.045441,
+       0,0.139173,-0.990268,0.130924,0.226768,0.03187,
+       0,0.139173,-0.990268,0.186676,0.323332,0.045441,
+       0.046592,0.093184,-0.994558,0.185692,0.185692,0.026097,
+       0.046592,0.093184,-0.994558,0.185692,0.185692,0.026097,
+       0,0.139173,-0.990268,0.186676,0.323332,0.045441,
+       0.116291,0.023258,-0.992943,0.264131,0.264131,0.037121,
+       0.116291,0.023258,-0.992943,0.264131,0.264131,0.037121,
+       0.139173,0,-0.990268,0.226768,0.130924,0.03187,
+       0.046592,0.093184,-0.994558,0.185692,0.185692,0.026097,
+       0.139173,0,-0.990268,0.226768,0.130924,0.03187,
+       0.116291,0.023258,-0.992943,0.264131,0.264131,0.037121,
+       0.139173,0,-0.990268,0.252467,0.067648,0.035482,
+       0.139173,0,-0.990268,0.252467,0.067648,0.035482,
+       0.116291,0.023258,-0.992943,0.264131,0.264131,0.037121,
+       0.139173,0,-0.990268,0.261211,0,0.036711,
+       0.139173,0,-0.990268,0.261211,0,0.036711,
+       0.116291,0.023258,-0.992943,0.264131,0.264131,0.037121,
+       0.139173,0,-0.990268,0.373195,0,0.052449,
+       0.139173,0,-0.990268,0.373195,0,0.052449,
+       0.116291,0.023258,-0.992943,0.264131,0.264131,0.037121,
+       0.139173,0,-0.990268,0.280033,0.243325,0.039356,
+       0.139173,0,-0.990268,0.373195,0,0.052449,
+       0.139173,0,-0.990268,0.280033,0.243325,0.039356,
+       0.139173,0,-0.990268,0.323332,0.186676,0.045441,
+       0.139173,0,-0.990268,0.373195,0,0.052449,
+       0.139173,0,-0.990268,0.323332,0.186676,0.045441,
+       0.139173,0,-0.990268,0.360517,0.0966,0.050667
+};
+static const struct gllist handsy_model_finger_proximal_frame = {
+ GL_N3F_V3F, GL_TRIANGLES, 399, handsy_model_finger_proximal_data, 0
+};
+const struct gllist *handsy_model_finger_proximal = &handsy_model_finger_proximal_frame;
+
+static const float handsy_model_palm_data[] = {
+       -0.796278,-0.586351,-0.148771,-1.752137,-0.376692,1.970411,
+       -0.846632,-0.478533,-0.232853,-1.655459,-0.3337,1.421192,
+       -0.778493,-0.586351,-0.223921,-1.625487,-0.376692,1.429408,
+       -0.846632,-0.478533,-0.232853,-1.655459,-0.3337,1.421192,
+       -0.796278,-0.586351,-0.148771,-1.752137,-0.376692,1.970411,
+       -0.866026,-0.479125,-0.142963,-1.782856,-0.3337,1.96539,
+       0.993252,-0.014102,-0.11512,1.872085,0.03421,2.57316,
+       0.99148,-0.06721,-0.111576,1.895235,-0.072325,2.815815,
+       0.986813,-0.09744,-0.129251,1.867696,-0.075915,2.573407,
+       0.99148,-0.06721,-0.111576,1.895235,-0.072325,2.815815,
+       0.993252,-0.014102,-0.11512,1.872085,0.03421,2.57316,
+       0.993491,0.012797,-0.11319,1.899624,0.039057,2.815569,
+       -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+       -0.764255,-0.087329,0.638974,0.764565,-0.313698,1.206288,
+       -0.764255,-0.087329,0.638974,0.777003,-0.306661,1.222126,
+       -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+       -0.764255,-0.087329,0.638974,0.751492,-0.31812,1.190048,
+       -0.764255,-0.087329,0.638974,0.764565,-0.313698,1.206288,
+       -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+       -0.764255,-0.087329,0.638974,0.777003,-0.306661,1.222126,
+       -0.704036,0.00442,0.71015,0.782018,-0.302539,1.228689,
+       -0.99549,0.01313,-0.09395,-1.917766,0.038992,2.709671,
+       -0.983637,0.081437,-0.160709,-1.842202,0.150374,1.955689,
+       -0.986902,0,-0.161321,-1.846542,0.038992,1.95498,
+       -0.983637,0.081437,-0.160709,-1.842202,0.150374,1.955689,
+       -0.99549,0.01313,-0.09395,-1.917766,0.038992,2.709671,
+       -0.991055,0.095192,-0.093531,-1.913398,0.150374,2.710083,
+       0.034078,0,0.999419,1.769671,-0.351987,2.781136,
+       0.034078,0,0.999419,1.767439,0.429968,2.781212,
+       0.034078,0,0.999419,1.767439,-0.351987,2.781212,
+       0.034078,0,0.999419,1.767439,0.429968,2.781212,
+       0.034078,0,0.999419,1.769671,-0.351987,2.781136,
+       0.034078,0,0.999419,1.769671,0.429968,2.781136,
+       0.355139,-0.836018,-0.418271,1.449875,0.1157,1.455178,
+       0.364775,-0.836018,-0.409895,0.833554,-0.391356,1.942938,
+       0.36952,-0.836018,-0.405622,1.350509,0.1157,1.368801,
+       0.364775,-0.836018,-0.409895,0.833554,-0.391356,1.942938,
+       0.355139,-0.836018,-0.418271,1.449875,0.1157,1.455178,
+       0.350247,-0.836018,-0.422375,0.953272,-0.391356,2.047007,
+       -0.991055,0.095192,-0.093531,-1.913398,0.150374,2.710083,
+       -0.97188,0.173999,-0.158661,-1.829477,0.254166,1.957769,
+       -0.983637,0.081437,-0.160709,-1.842202,0.150374,1.955689,
+       -0.97188,0.173999,-0.158661,-1.829477,0.254166,1.957769,
+       -0.991055,0.095192,-0.093531,-1.913398,0.150374,2.710083,
+       -0.977364,0.1904,-0.092239,-1.900591,0.254166,2.711292,
+       0.03368,0,0.999433,1.567503,0.418917,3.581738,
+       -0.029634,0,0.999561,0.500177,0.469339,3.617705,
+       -0.108877,0,0.994055,0.500177,0.418917,3.617705,
+       -0.029634,0,0.999561,0.500177,0.469339,3.617705,
+       0.03368,0,0.999433,1.567503,0.418917,3.581738,
+       0.03368,0,0.999433,1.567503,0.469339,3.581738,
+       0,1,0,0.551147,-0.351987,2.822685,
+       0,1,0,1.767999,-0.351987,2.786146,
+       0,1,0,1.767439,-0.351987,2.781212,
+       0,1,0,1.767999,-0.351987,2.786146,
+       0,1,0,0.551147,-0.351987,2.822685,
+       0,1,0,1.567503,-0.351987,3.38714,
+       0,1,0,1.567503,-0.351987,3.38714,
+       0,1,0,0.551147,-0.351987,2.822685,
+       0,1,0,0.500177,-0.351986,3.423108,
+       0.006145,-0.999897,-0.012996,-1.473662,0.418917,3.101913,
+       0.01031,-0.999871,-0.012311,-1.343835,0.429973,2.308269,
+       0.003577,-0.999903,-0.013468,-0.407016,0.429972,2.665229,
+       -0.977364,0.1904,-0.092239,-1.900591,0.254166,2.711292,
+       -0.943079,0.294939,-0.153663,-1.809236,0.343294,1.961078,
+       -0.97188,0.173999,-0.158661,-1.829477,0.254166,1.957769,
+       -0.943079,0.294939,-0.153663,-1.809236,0.343294,1.961078,
+       -0.977364,0.1904,-0.092239,-1.900591,0.254166,2.711292,
+       -0.94405,0.317539,-0.089095,-1.880219,0.343294,2.713215,
+       -0.94405,0.317539,-0.089095,-1.880219,0.343294,2.713215,
+       -0.866472,0.479125,-0.140234,-1.782856,0.411684,1.96539,
+       -0.943079,0.294939,-0.153663,-1.809236,0.343294,1.961078,
+       -0.866472,0.479125,-0.140234,-1.782856,0.411684,1.96539,
+       -0.94405,0.317539,-0.089095,-1.880219,0.343294,2.713215,
+       -0.853307,0.515153,-0.080531,-1.853669,0.411684,2.71572,
+       -0.005944,-0.999865,-0.015303,1.768126,0.429883,2.787255,
+       0.000209,-0.999904,-0.013883,0.551147,0.429969,2.822685,
+       -0.000476,-0.999903,-0.013922,1.767439,0.429968,2.781212,
+       0.000209,-0.999904,-0.013883,0.551147,0.429969,2.822685,
+       -0.005944,-0.999865,-0.015303,1.768126,0.429883,2.787255,
+       -0.008676,-0.999834,-0.015995,1.567503,0.418917,3.581738,
+       -0.99332,-0.067292,-0.093745,-1.913398,-0.07239,2.710083,
+       -0.986902,0,-0.161321,-1.846542,0.038992,1.95498,
+       -0.983612,-0.081436,-0.160861,-1.842202,-0.07239,1.955689,
+       -0.986902,0,-0.161321,-1.846542,0.038992,1.95498,
+       -0.99332,-0.067292,-0.093745,-1.913398,-0.07239,2.710083,
+       -0.99549,0.01313,-0.09395,-1.917766,0.038992,2.709671,
+       -0.853307,0.515153,-0.080531,-1.853669,0.411684,2.71572,
+       -0.802204,0.586352,-0.112519,-1.752137,0.454676,1.970411,
+       -0.866472,0.479125,-0.140234,-1.782856,0.411684,1.96539,
+       -0.802204,0.586352,-0.112519,-1.752137,0.454676,1.970411,
+       -0.853307,0.515153,-0.080531,-1.853669,0.411684,2.71572,
+       -0.807042,0.585562,-0.076165,-1.822751,0.454676,2.718638,
+       0.991975,0.067695,-0.106788,1.867776,0.144331,2.573402,
+       0.993491,0.012797,-0.11319,1.899624,0.039057,2.815569,
+       0.993252,-0.014102,-0.11512,1.872085,0.03421,2.57316,
+       0.993491,0.012797,-0.11319,1.899624,0.039057,2.815569,
+       0.991975,0.067695,-0.106788,1.867776,0.144331,2.573402,
+       0.988875,0.094445,-0.114917,1.895316,0.150435,2.815811,
+       -0.243848,-0.96921,-0.034203,-1.719171,-0.391356,1.9758,
+       -0.400958,-0.915315,-0.037841,-1.822751,-0.376692,2.718638,
+       -0.395209,-0.915619,-0.073838,-1.752137,-0.376692,1.970411,
+       -0.400958,-0.915315,-0.037841,-1.822751,-0.376692,2.718638,
+       -0.243848,-0.96921,-0.034203,-1.719171,-0.391356,1.9758,
+       -0.204863,-0.9786,-0.019334,-1.789572,-0.391356,2.721769,
+       -0.866026,-0.479125,-0.142963,-1.782856,-0.3337,1.96539,
+       -0.921583,-0.294507,-0.252885,-1.681196,-0.26531,1.414138,
+       -0.846632,-0.478533,-0.232853,-1.655459,-0.3337,1.421192,
+       -0.921583,-0.294507,-0.252885,-1.681196,-0.26531,1.414138,
+       -0.866026,-0.479125,-0.142963,-1.782856,-0.3337,1.96539,
+       -0.942922,-0.294938,-0.154627,-1.809236,-0.26531,1.961078,
+       -0.942922,-0.294938,-0.154627,-1.809236,-0.26531,1.961078,
+       -0.949732,-0.173729,-0.260436,-1.700945,-0.176182,1.408725,
+       -0.921583,-0.294507,-0.252885,-1.681196,-0.26531,1.414138,
+       -0.949732,-0.173729,-0.260436,-1.700945,-0.176182,1.408725,
+       -0.942922,-0.294938,-0.154627,-1.809236,-0.26531,1.961078,
+       -0.971815,-0.173999,-0.159059,-1.829477,-0.176182,1.957769,
+       -0.983612,-0.081436,-0.160861,-1.842202,-0.07239,1.955689,
+       -0.964427,0,-0.264349,-1.717594,0.038992,1.404161,
+       -0.961223,-0.081307,-0.263515,-1.71336,-0.07239,1.405322,
+       -0.964427,0,-0.264349,-1.717594,0.038992,1.404161,
+       -0.983612,-0.081436,-0.160861,-1.842202,-0.07239,1.955689,
+       -0.986902,0,-0.161321,-1.846542,0.038992,1.95498,
+       0.383451,-0.836018,-0.392479,1.254219,0.1157,1.279009,
+       0.392479,-0.836018,-0.383451,0.605375,-0.391356,1.722588,
+       0.396914,-0.836018,-0.378858,1.16112,0.1157,1.185911,
+       0.392479,-0.836018,-0.383451,0.605375,-0.391356,1.722588,
+       0.383451,-0.836018,-0.392479,1.254219,0.1157,1.279009,
+       0.378858,-0.836018,-0.396914,0.717541,-0.391356,1.834754,
+       -0.986902,0,-0.161321,-1.846542,0.038992,1.95498,
+       -0.959247,0.088043,-0.268503,-1.71336,0.150374,1.405322,
+       -0.964427,0,-0.264349,-1.717594,0.038992,1.404161,
+       -0.959247,0.088043,-0.268503,-1.71336,0.150374,1.405322,
+       -0.986902,0,-0.161321,-1.846542,0.038992,1.95498,
+       -0.983637,0.081437,-0.160709,-1.842202,0.150374,1.955689,
+       -0.983637,0.081437,-0.160709,-1.842202,0.150374,1.955689,
+       -0.949809,0.173614,-0.260235,-1.700945,0.254166,1.408725,
+       -0.959247,0.088043,-0.268503,-1.71336,0.150374,1.405322,
+       -0.949809,0.173614,-0.260235,-1.700945,0.254166,1.408725,
+       -0.983637,0.081437,-0.160709,-1.842202,0.150374,1.955689,
+       -0.97188,0.173999,-0.158661,-1.829477,0.254166,1.957769,
+       -0.97188,0.173999,-0.158661,-1.829477,0.254166,1.957769,
+       -0.921725,0.294507,-0.252364,-1.681196,0.343294,1.414138,
+       -0.949809,0.173614,-0.260235,-1.700945,0.254166,1.408725,
+       -0.921725,0.294507,-0.252364,-1.681196,0.343294,1.414138,
+       -0.97188,0.173999,-0.158661,-1.829477,0.254166,1.957769,
+       -0.943079,0.294939,-0.153663,-1.809236,0.343294,1.961078,
+       0.001315,-0.999904,-0.013782,0.500177,0.418917,3.617705,
+       0.000209,-0.999904,-0.013883,0.551147,0.429969,2.822685,
+       -0.008676,-0.999834,-0.015995,1.567503,0.418917,3.581738,
+       -0.943079,0.294939,-0.153663,-1.809236,0.343294,1.961078,
+       -0.846877,0.478832,-0.23134,-1.655458,0.411684,1.421192,
+       -0.921725,0.294507,-0.252364,-1.681196,0.343294,1.414138,
+       -0.846877,0.478832,-0.23134,-1.655458,0.411684,1.421192,
+       -0.943079,0.294939,-0.153663,-1.809236,0.343294,1.961078,
+       -0.866472,0.479125,-0.140234,-1.782856,0.411684,1.96539,
+       -0.400957,0.915315,-0.037841,-1.822751,0.454676,2.718638,
+       -0.39815,0.915619,-0.055846,-1.71917,0.46934,1.9758,
+       -0.395209,0.915619,-0.073838,-1.752137,0.454676,1.970411,
+       -0.39815,0.915619,-0.055846,-1.71917,0.46934,1.9758,
+       -0.400957,0.915315,-0.037841,-1.822751,0.454676,2.718638,
+       -0.259904,0.965446,-0.019075,-1.789572,0.46934,2.721769,
+       -0.866472,0.479125,-0.140234,-1.782856,0.411684,1.96539,
+       -0.78424,0.585803,-0.204457,-1.625486,0.454676,1.429408,
+       -0.846877,0.478832,-0.23134,-1.655458,0.411684,1.421192,
+       -0.78424,0.585803,-0.204457,-1.625486,0.454676,1.429408,
+       -0.866472,0.479125,-0.140234,-1.782856,0.411684,1.96539,
+       -0.802204,0.586352,-0.112519,-1.752137,0.454676,1.970411,
+       -0.395209,0.915619,-0.073838,-1.752137,0.454676,1.970411,
+       -0.346553,0.933315,-0.093941,-1.593323,0.46934,1.438224,
+       -0.388183,0.91542,-0.106401,-1.625486,0.454676,1.429408,
+       -0.346553,0.933315,-0.093941,-1.593323,0.46934,1.438224,
+       -0.395209,0.915619,-0.073838,-1.752137,0.454676,1.970411,
+       -0.39815,0.915619,-0.055846,-1.71917,0.46934,1.9758,
+       -0.232489,-0.970402,-0.065331,-1.593323,-0.391356,1.438224,
+       -0.395209,-0.915619,-0.073838,-1.752137,-0.376692,1.970411,
+       -0.388183,-0.915419,-0.106401,-1.625487,-0.376692,1.429408,
+       -0.395209,-0.915619,-0.073838,-1.752137,-0.376692,1.970411,
+       -0.232489,-0.970402,-0.065331,-1.593323,-0.391356,1.438224,
+       -0.243848,-0.96921,-0.034203,-1.719171,-0.391356,1.9758,
+       -0.867417,-0.424499,0.259594,0.420331,-0.082341,0.724045,
+       -0.863914,-0.459936,0.205211,0.5388,-0.276944,0.801677,
+       -0.866464,-0.37452,0.330114,0.455635,-0.09635,0.818877,
+       -0.866464,-0.37452,0.330114,0.455635,-0.09635,0.818877,
+       -0.863914,-0.459936,0.205211,0.5388,-0.276944,0.801677,
+       -0.855881,-0.307094,0.416127,0.592896,-0.292953,0.956179,
+       -0.849718,-0.515316,0.111482,0.396675,-0.073374,0.659509,
+       -0.863914,-0.459936,0.205211,0.5388,-0.276944,0.801677,
+       -0.867417,-0.424499,0.259594,0.420331,-0.082341,0.724045,
+       0.41415,-0.835984,-0.360015,0.901767,-0.028687,1.229839,
+       0.41415,-0.835984,-0.360015,1.050087,0.1157,1.065186,
+       0.409895,-0.836018,-0.364775,1.071328,0.1157,1.08962,
+       0.40862,-0.836512,-0.365072,0.497191,-0.391356,1.606575,
+       0.41415,-0.835984,-0.360015,0.901767,-0.028687,1.229839,
+       0.409895,-0.836018,-0.364775,1.071328,0.1157,1.08962,
+       0.001315,-0.999904,-0.013782,0.500177,0.418917,3.617705,
+       0.003577,-0.999903,-0.013468,-0.407016,0.429972,2.665229,
+       0.000209,-0.999904,-0.013883,0.551147,0.429969,2.822685,
+       0.40862,-0.836512,-0.365072,0.497191,-0.391356,1.606575,
+       0.416058,-0.835881,-0.358048,0.868735,-0.0443,1.228096,
+       0.41415,-0.835984,-0.360015,0.901767,-0.028687,1.229839,
+       0.40862,-0.836512,-0.365072,0.497191,-0.391356,1.606575,
+       0.410782,-0.836134,-0.363507,0.393122,-0.391356,1.486857,
+       0.441471,-0.737274,-0.511401,0.758404,-0.078952,1.180247,
+       0.456862,-0.836223,-0.303327,0.106845,-0.391356,1.106955,
+       0.467544,-0.836198,-0.286662,0.020451,-0.391356,0.973919,
+       0.463075,-0.836184,-0.293866,0.420331,-0.082341,0.724045,
+       0.410782,-0.836134,-0.363507,0.393122,-0.391356,1.486857,
+       0.432927,-0.836473,-0.335988,0.293295,-0.391356,1.363581,
+       0.428434,-0.836046,-0.342742,0.643743,-0.099518,1.08978,
+       -0.611735,0.119506,0.781984,0.84883,-0.216217,1.272781,
+       -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+       -0.631771,0.096094,0.769175,0.847965,-0.218877,1.272403,
+       0.432927,-0.836473,-0.335988,0.293295,-0.391356,1.363581,
+       0.446744,-0.83622,-0.318052,0.19783,-0.391356,1.236895,
+       0.438762,-0.836856,-0.327354,0.551399,-0.104719,0.980011,
+       0.476257,-0.836327,-0.271544,-0.061249,-0.391356,0.837949,
+       0.482357,-0.836304,-0.260629,0.365067,-0.017684,0.431644,
+       0.474256,-0.836102,-0.275709,0.38175,-0.056076,0.582184,
+       0.476257,-0.836327,-0.271544,-0.061249,-0.391356,0.837949,
+       0.485531,-0.836253,-0.254835,-0.138153,-0.391356,0.69921,
+       0.482357,-0.836304,-0.260629,0.365067,-0.017684,0.431644,
+       0.001315,-0.999904,-0.013782,0.500177,0.418917,3.617705,
+       0.003527,-0.999903,-0.013502,-0.497427,0.418917,3.460249,
+       0.003577,-0.999903,-0.013468,-0.407016,0.429972,2.665229,
+       0.03368,0,0.999433,1.567503,-0.391357,3.38714,
+       -0.029634,0,0.999561,0.500177,-0.351986,3.423108,
+       -0.093083,0,0.995658,0.500177,-0.391356,3.423108,
+       -0.029634,0,0.999561,0.500177,-0.351986,3.423108,
+       0.03368,0,0.999433,1.567503,-0.391357,3.38714,
+       0.03368,0,0.999433,1.567503,-0.351987,3.38714,
+       0.485531,-0.836253,-0.254835,-0.138153,-0.391356,0.69921,
+       0.49078,-0.836227,-0.244662,0.378789,0.038394,0.270618,
+       0.482357,-0.836304,-0.260629,0.365067,-0.017684,0.431644,
+       0.485531,-0.836253,-0.254835,-0.138153,-0.391356,0.69921,
+       0.494701,-0.836109,-0.23705,-0.210168,-0.391356,0.557872,
+       0.49078,-0.836227,-0.244662,0.378789,0.038394,0.270618,
+       0.449874,-0.836148,-0.313798,0.549572,-0.104847,0.977734,
+       0.446744,-0.83622,-0.318052,0.19783,-0.391356,1.236895,
+       0.451622,-0.836275,-0.310937,0.477253,-0.098489,0.857111,
+       0.446744,-0.83622,-0.318052,0.19783,-0.391356,1.236895,
+       0.449874,-0.836148,-0.313798,0.549572,-0.104847,0.977734,
+       0.438762,-0.836856,-0.327354,0.551399,-0.104719,0.980011,
+       0.446744,-0.83622,-0.318052,0.19783,-0.391356,1.236895,
+       0.456862,-0.836223,-0.303327,0.106845,-0.391356,1.106955,
+       0.451622,-0.836275,-0.310937,0.477253,-0.098489,0.857111,
+       0.496685,-0.836056,-0.233057,0.406831,0.08212,0.174281,
+       0.500479,-0.836021,-0.224924,0.428578,0.1157,0.099871,
+       0.49734,-0.835984,-0.231914,0.435364,0.1157,0.114425,
+       0.494701,-0.836109,-0.23705,-0.210168,-0.391356,0.557872,
+       0.501259,-0.836022,-0.223175,-0.277207,-0.391356,0.414107,
+       0.500479,-0.836021,-0.224924,0.428578,0.1157,0.099871,
+       0.467544,-0.836198,-0.286662,0.020451,-0.391356,0.973919,
+       0.476257,-0.836327,-0.271544,-0.061249,-0.391356,0.837949,
+       0.474256,-0.836102,-0.275709,0.38175,-0.056076,0.582184,
+       0.340325,-0.836018,-0.430411,1.552194,0.1157,1.538035,
+       0.350247,-0.836018,-0.422375,0.953272,-0.391356,2.047007,
+       0.355139,-0.836018,-0.418271,1.449875,0.1157,1.455178,
+       0.350247,-0.836018,-0.422375,0.953272,-0.391356,2.047007,
+       0.340325,-0.836018,-0.430411,1.552194,0.1157,1.538035,
+       0.334033,-0.836012,-0.435321,1.076548,-0.391356,2.146834,
+       -0.631771,0.096094,0.769175,0.847965,-0.218877,1.272403,
+       -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+       -0.631771,0.096094,0.769175,0.839604,-0.23778,1.267897,
+       -0.631771,0.096094,0.769175,0.839604,-0.23778,1.267897,
+       -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+       -0.631771,0.096094,0.769175,0.829506,-0.255335,1.261796,
+       -0.631771,0.096094,0.769175,0.829506,-0.255335,1.261796,
+       -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+       -0.631771,0.096094,0.769175,0.817839,-0.27125,1.254201,
+       -0.631771,0.096094,0.769175,0.817839,-0.27125,1.254201,
+       -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+       -0.631771,0.096094,0.769175,0.804797,-0.285259,1.245239,
+       -0.631771,0.096094,0.769175,0.804797,-0.285259,1.245239,
+       -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+       -0.631771,0.096094,0.769175,0.790598,-0.297129,1.23506,
+       -0.631771,0.096094,0.769175,0.790598,-0.297129,1.23506,
+       -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+       -0.704036,0.00442,0.71015,0.782018,-0.302539,1.228689,
+       -0.866464,-0.37452,0.330114,0.455635,-0.09635,0.818877,
+       -0.855881,-0.307094,0.416127,0.592896,-0.292953,0.956179,
+       -0.844783,-0.265761,0.464449,0.477253,-0.098489,0.857111,
+       -0.824319,-0.208014,0.526525,0.538904,-0.105527,0.964835,
+       -0.855881,-0.307094,0.416127,0.592896,-0.292953,0.956179,
+       -0.78972,-0.133178,0.598838,0.682929,-0.311817,1.108903,
+       0.217148,-0.937956,-0.270342,1.594074,0.1157,1.569594,
+       0.334033,-0.836012,-0.435321,1.076548,-0.391356,2.146834,
+       0.340325,-0.836018,-0.430411,1.552194,0.1157,1.538035,
+       0.334033,-0.836012,-0.435321,1.076548,-0.391356,2.146834,
+       0.217148,-0.937956,-0.270342,1.594074,0.1157,1.569594,
+       0.25896,-0.861903,-0.435962,1.620844,0.074945,1.667507,
+       0.334033,-0.836012,-0.435321,1.076548,-0.391356,2.146834,
+       0.25896,-0.861903,-0.435962,1.620844,0.074945,1.667507,
+       0.318637,-0.836012,-0.446714,1.203234,-0.391356,2.242299,
+       -0.775202,-0.621236,-0.11458,0.365783,-0.037793,0.497331,
+       -0.813222,-0.581613,-0.01991,0.524328,-0.264882,0.655925,
+       -0.831264,-0.554669,0.036637,0.38175,-0.056076,0.582184,
+       0.003527,-0.999903,-0.013502,-0.497427,0.418917,3.460249,
+       0.006145,-0.999897,-0.012996,-1.473662,0.418917,3.101913,
+       0.003577,-0.999903,-0.013468,-0.407016,0.429972,2.665229,
+       0.396914,-0.836018,-0.378858,1.16112,0.1157,1.185911,
+       0.40862,-0.836512,-0.365072,0.497191,-0.391356,1.606575,
+       0.409895,-0.836018,-0.364775,1.071328,0.1157,1.08962,
+       0.40862,-0.836512,-0.365072,0.497191,-0.391356,1.606575,
+       0.396914,-0.836018,-0.378858,1.16112,0.1157,1.185911,
+       0.392479,-0.836018,-0.383451,0.605375,-0.391356,1.722588,
+       -0.831264,-0.554669,0.036637,0.38175,-0.056076,0.582184,
+       -0.813222,-0.581613,-0.01991,0.524328,-0.264882,0.655925,
+       -0.849718,-0.515316,0.111482,0.396675,-0.073374,0.659509,
+       -0.506327,0.717294,0.478667,0.690311,-0.091124,1.126951,
+       -0.52259,0.598335,0.607367,0.755695,-0.079224,1.178282,
+       -0.486507,0.572163,0.660258,0.758981,-0.077961,1.179865,
+       -0.234792,0.969195,0.074391,0.755695,-0.079224,1.178282,
+       -0.234792,0.969195,0.074391,0.690311,-0.091124,1.126951,
+       -0.234792,0.969195,0.074391,0.753511,-0.079688,1.177433,
+       -0.849718,-0.515316,0.111482,0.396675,-0.073374,0.659509,
+       -0.813222,-0.581613,-0.01991,0.524328,-0.264882,0.655925,
+       -0.863914,-0.459936,0.205211,0.5388,-0.276944,0.801677,
+       -0.971815,-0.173999,-0.159059,-1.829477,-0.176182,1.957769,
+       -0.961223,-0.081307,-0.263515,-1.71336,-0.07239,1.405322,
+       -0.949732,-0.173729,-0.260436,-1.700945,-0.176182,1.408725,
+       -0.961223,-0.081307,-0.263515,-1.71336,-0.07239,1.405322,
+       -0.971815,-0.173999,-0.159059,-1.829477,-0.176182,1.957769,
+       -0.983612,-0.081436,-0.160861,-1.842202,-0.07239,1.955689,
+       -0.775202,-0.621236,-0.11458,0.365783,-0.037793,0.497331,
+       -0.672528,-0.677458,-0.297921,0.550466,-0.257589,0.528855,
+       -0.813222,-0.581613,-0.01991,0.524328,-0.264882,0.655925,
+       -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+       -0.78972,-0.133178,0.598838,0.682929,-0.311817,1.108903,
+       -0.764255,-0.087329,0.638974,0.724321,-0.318876,1.157447,
+       -0.093958,0,0.995576,-1.913398,-0.07239,2.710083,
+       -0.093958,0,0.995576,-1.913398,0.150374,2.710083,
+       -0.093958,0,0.995576,-1.917766,0.038992,2.709671,
+       -0.093958,0,0.995576,-1.913398,0.150374,2.710083,
+       -0.093958,0,0.995576,-1.913398,-0.07239,2.710083,
+       -0.093958,0,0.995576,-1.900591,-0.176182,2.711292,
+       -0.093958,0,0.995576,-1.913398,0.150374,2.710083,
+       -0.093958,0,0.995576,-1.900591,-0.176182,2.711292,
+       -0.093958,0,0.995576,-1.900591,0.254166,2.711292,
+       -0.093958,0,0.995576,-1.900591,0.254166,2.711292,
+       -0.093958,0,0.995576,-1.900591,-0.176182,2.711292,
+       -0.093958,0,0.995576,-1.880219,-0.26531,2.713215,
+       -0.093958,0,0.995576,-1.900591,0.254166,2.711292,
+       -0.093958,0,0.995576,-1.880219,-0.26531,2.713215,
+       -0.093958,0,0.995576,-1.880219,0.343294,2.713215,
+       -0.093958,0,0.995576,-1.880219,0.343294,2.713215,
+       -0.093958,0,0.995576,-1.880219,-0.26531,2.713215,
+       -0.093958,0,0.995576,-1.853669,-0.3337,2.71572,
+       -0.093958,0,0.995576,-1.880219,0.343294,2.713215,
+       -0.093958,0,0.995576,-1.853669,-0.3337,2.71572,
+       -0.093958,0,0.995576,-1.853669,0.411684,2.71572,
+       -0.093958,0,0.995576,-1.853669,0.411684,2.71572,
+       -0.093958,0,0.995576,-1.853669,-0.3337,2.71572,
+       -0.093958,0,0.995576,-1.822751,-0.376692,2.718638,
+       -0.093958,0,0.995576,-1.853669,0.411684,2.71572,
+       -0.093958,0,0.995576,-1.822751,-0.376692,2.718638,
+       -0.093958,0,0.995576,-1.822751,0.454676,2.718638,
+       -0.093958,0,0.995576,-1.822751,0.454676,2.718638,
+       -0.093958,0,0.995576,-1.822751,-0.376692,2.718638,
+       -0.236443,0,0.971645,-1.789572,-0.391356,2.721769,
+       -0.093958,0,0.995576,-1.822751,0.454676,2.718638,
+       -0.236443,0,0.971645,-1.789572,-0.391356,2.721769,
+       -0.307512,0,0.951544,-1.789572,-0.351986,2.721769,
+       -0.093958,0,0.995576,-1.822751,0.454676,2.718638,
+       -0.307512,0,0.951544,-1.789572,-0.351986,2.721769,
+       -0.093958,0,0.995576,-1.789572,0.418917,2.721769,
+       -0.093958,0,0.995576,-1.822751,0.454676,2.718638,
+       -0.093958,0,0.995576,-1.789572,0.418917,2.721769,
+       -0.093958,0,0.995576,-1.789572,0.46934,2.721769,
+       -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+       -0.764255,-0.087329,0.638974,0.724321,-0.318876,1.157447,
+       -0.764255,-0.087329,0.638974,0.738003,-0.319856,1.173677,
+       -0.893766,-0.44053,-0.08435,-1.853669,-0.3337,2.71572,
+       -0.942922,-0.294938,-0.154627,-1.809236,-0.26531,1.961078,
+       -0.866026,-0.479125,-0.142963,-1.782856,-0.3337,1.96539,
+       -0.942922,-0.294938,-0.154627,-1.809236,-0.26531,1.961078,
+       -0.893766,-0.44053,-0.08435,-1.853669,-0.3337,2.71572,
+       -0.958343,-0.27092,-0.090444,-1.880219,-0.26531,2.713215,
+       -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+       -0.764255,-0.087329,0.638974,0.738003,-0.319856,1.173677,
+       -0.764255,-0.087329,0.638974,0.751492,-0.31812,1.190048,
+       -0.958343,-0.27092,-0.090444,-1.880219,-0.26531,2.713215,
+       -0.971815,-0.173999,-0.159059,-1.829477,-0.176182,1.957769,
+       -0.942922,-0.294938,-0.154627,-1.809236,-0.26531,1.961078,
+       -0.971815,-0.173999,-0.159059,-1.829477,-0.176182,1.957769,
+       -0.958343,-0.27092,-0.090444,-1.880219,-0.26531,2.713215,
+       -0.983266,-0.156769,-0.092796,-1.900591,-0.176182,2.711292,
+       -0.983266,-0.156769,-0.092796,-1.900591,-0.176182,2.711292,
+       -0.983612,-0.081436,-0.160861,-1.842202,-0.07239,1.955689,
+       -0.971815,-0.173999,-0.159059,-1.829477,-0.176182,1.957769,
+       -0.983612,-0.081436,-0.160861,-1.842202,-0.07239,1.955689,
+       -0.983266,-0.156769,-0.092796,-1.900591,-0.176182,2.711292,
+       -0.99332,-0.067292,-0.093745,-1.913398,-0.07239,2.710083,
+       -0.807042,-0.585562,-0.076165,-1.822751,-0.376692,2.718638,
+       -0.866026,-0.479125,-0.142963,-1.782856,-0.3337,1.96539,
+       -0.796278,-0.586351,-0.148771,-1.752137,-0.376692,1.970411,
+       -0.866026,-0.479125,-0.142963,-1.782856,-0.3337,1.96539,
+       -0.807042,-0.585562,-0.076165,-1.822751,-0.376692,2.718638,
+       -0.893766,-0.44053,-0.08435,-1.853669,-0.3337,2.71572,
+       -0.397992,0.380616,0.834706,0.886816,-0.070199,1.246183,
+       -0.355285,0.355664,0.864451,0.868735,-0.0443,1.228096,
+       -0.452228,0.452832,0.768397,0.762622,-0.077692,1.181918,
+       -0.47928,0.243811,0.843117,0.865187,-0.178304,1.269373,
+       -0.490795,0.246987,0.835534,0.753511,-0.079688,1.177433,
+       -0.456234,0.272969,0.846958,0.857464,-0.198941,1.271864,
+       -0.456234,0.272969,0.846958,0.857464,-0.198941,1.271864,
+       -0.490795,0.246987,0.835534,0.753511,-0.079688,1.177433,
+       -0.611735,0.119506,0.781984,0.84883,-0.216217,1.272781,
+       -0.672528,-0.677458,-0.297921,0.550466,-0.257589,0.528855,
+       -0.507972,-0.702526,-0.498419,0.391924,0.064577,0.205552,
+       -0.507497,-0.702632,-0.498754,0.615433,-0.255562,0.429129,
+       -0.672528,-0.677458,-0.297921,0.550466,-0.257589,0.528855,
+       -0.595393,-0.695809,-0.401693,0.378789,0.038394,0.270618,
+       -0.507972,-0.702526,-0.498419,0.391924,0.064577,0.205552,
+       -0.672528,-0.677458,-0.297921,0.550466,-0.257589,0.528855,
+       -0.671967,-0.6777,-0.298635,0.364466,0.008825,0.342799,
+       -0.595393,-0.695809,-0.401693,0.378789,0.038394,0.270618,
+       0.277111,-0.836018,-0.473586,1.711893,-0.247344,2.31135,
+       0.288056,-0.836018,-0.46701,1.46621,-0.391356,2.419678,
+       0.29347,-0.836018,-0.463626,1.681237,-0.12504,2.075563,
+       0.288056,-0.836018,-0.46701,1.46621,-0.391356,2.419678,
+       0.277111,-0.836018,-0.473586,1.711893,-0.247344,2.31135,
+       0.270198,-0.836012,-0.477573,1.60218,-0.391356,2.501378,
+       0.262608,-0.840906,-0.473195,1.72906,-0.317688,2.443393,
+       0.270198,-0.836012,-0.477573,1.60218,-0.391356,2.501378,
+       0.277111,-0.836018,-0.473586,1.711893,-0.247344,2.31135,
+       0.270198,-0.836012,-0.477573,1.60218,-0.391356,2.501378,
+       0.262608,-0.840906,-0.473195,1.72906,-0.317688,2.443393,
+       0.285897,-0.82997,-0.478972,1.743775,-0.387364,2.572911,
+       0.270198,-0.836012,-0.477573,1.60218,-0.391356,2.501378,
+       0.285897,-0.82997,-0.478972,1.743775,-0.387364,2.572911,
+       0.266041,-0.835984,-0.479951,1.740919,-0.391356,2.578282,
+       0.29347,-0.836018,-0.463626,1.681237,-0.12504,2.075563,
+       0.304179,-0.836018,-0.456672,1.333174,-0.391356,2.333284,
+       0.309472,-0.836018,-0.453102,1.653081,-0.015885,1.859001,
+       0.304179,-0.836018,-0.456672,1.333174,-0.391356,2.333284,
+       0.29347,-0.836018,-0.463626,1.681237,-0.12504,2.075563,
+       0.288056,-0.836018,-0.46701,1.46621,-0.391356,2.419678,
+       0.240977,-0.859676,-0.450429,1.63484,0.05269,1.718695,
+       0.318637,-0.836012,-0.446714,1.203234,-0.391356,2.242299,
+       0.25896,-0.861903,-0.435962,1.620844,0.074945,1.667507,
+       0.318637,-0.836012,-0.446714,1.203234,-0.391356,2.242299,
+       0.240977,-0.859676,-0.450429,1.63484,0.05269,1.718695,
+       0.309472,-0.836018,-0.453102,1.653081,-0.015885,1.859001,
+       0.318637,-0.836012,-0.446714,1.203234,-0.391356,2.242299,
+       0.309472,-0.836018,-0.453102,1.653081,-0.015885,1.859001,
+       0.304179,-0.836018,-0.456672,1.333174,-0.391356,2.333284,
+       0.998221,0,-0.059628,1.772155,-0.391357,2.822721,
+       0.998221,0,-0.059628,1.792693,-0.351987,3.166558,
+       0.998221,0,-0.059628,1.792693,-0.391357,3.166558,
+       0.998221,0,-0.059628,1.792693,-0.351987,3.166558,
+       0.998221,0,-0.059628,1.772155,-0.391357,2.822721,
+       0.99627,0,-0.086285,1.772155,-0.351987,2.822721,
+       0.034078,0,0.999419,1.767439,-0.351987,2.781212,
+       -0.031469,0,0.999505,0.551147,0.429969,2.822685,
+       -0.097163,0,0.995268,0.551147,-0.351987,2.822685,
+       -0.031469,0,0.999505,0.551147,0.429969,2.822685,
+       0.034078,0,0.999419,1.767439,-0.351987,2.781212,
+       0.034078,0,0.999419,1.767439,0.429968,2.781212,
+       0.993609,0,-0.112881,1.767999,-0.351987,2.786146,
+       0.995462,0,-0.09516,1.772155,0.429175,2.822721,
+       0.99627,0,-0.086285,1.772155,-0.351987,2.822721,
+       0.995462,0,-0.09516,1.772155,0.429175,2.822721,
+       0.993609,0,-0.112881,1.767999,-0.351987,2.786146,
+       0.993609,0,-0.112881,1.767439,-0.351987,2.781212,
+       0.995462,0,-0.09516,1.772155,0.429175,2.822721,
+       0.993609,0,-0.112881,1.767439,-0.351987,2.781212,
+       0.993609,0,-0.112881,1.767439,0.429968,2.781212,
+       0.995462,0,-0.09516,1.772155,0.429175,2.822721,
+       0.993609,0,-0.112881,1.767439,0.429968,2.781212,
+       0.993609,0,-0.112881,1.768126,0.429883,2.787255,
+       -0.987753,0,0.156023,-1.760402,0.46934,2.906435,
+       -0.987753,0,0.156023,-1.789572,0.418917,2.721769,
+       -0.987753,0,0.156023,-1.760402,0.418917,2.906435,
+       -0.987753,0,0.156023,-1.789572,0.418917,2.721769,
+       -0.987753,0,0.156023,-1.760402,0.46934,2.906435,
+       -0.987753,0,0.156023,-1.789572,0.46934,2.721769,
+       0.141065,0.989418,0.033953,1.804276,0.469339,3.360463,
+       0.315789,0.947008,-0.058772,1.772155,0.469339,2.822721,
+       0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+       -0.13077,0.99131,-0.01428,-1.234429,0.56934,2.130951,
+       -0.302581,0.949833,-0.079128,-1.593323,0.46934,1.438224,
+       -0.224548,0.97391,-0.032814,-1.71917,0.452349,1.9758,
+       0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+       0.326344,0.942627,-0.070391,1.744615,0.460772,2.580312,
+       0.326686,0.943881,-0.048628,1.72906,0.455932,2.443393,
+       0.326344,0.942627,-0.070391,1.744615,0.460772,2.580312,
+       0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+       0.315789,0.947008,-0.058772,1.772155,0.469339,2.822721,
+       0.32092,-0.381383,-0.866924,0.854313,0.115699,0.11448,
+       0.176399,-0.477835,-0.860556,0.987772,-0.280632,0.35003,
+       0.101282,-0.521126,-0.847449,0.711069,0.115699,0.073242,
+       0.176399,-0.477835,-0.860556,0.987772,-0.280632,0.35003,
+       0.32092,-0.381383,-0.866924,0.854313,0.115699,0.11448,
+       0.390324,-0.328222,-0.860184,1.142772,-0.29747,0.403027,
+       0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+       0.764255,0.087329,-0.638974,1.402704,-0.285122,0.576005,
+       0.650762,-0.073441,-0.755722,1.401838,-0.286095,0.574837,
+       0.764255,0.087329,-0.638974,1.402704,-0.285122,0.576005,
+       0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+       0.764255,0.087329,-0.638974,1.412052,-0.271114,0.589101,
+       0.764255,0.087329,-0.638974,1.412052,-0.271114,0.589101,
+       0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+       0.764255,0.087329,-0.638974,1.420033,-0.2552,0.600822,
+       0.764255,0.087329,-0.638974,1.420033,-0.2552,0.600822,
+       0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+       0.764255,0.087329,-0.638974,1.426514,-0.237645,0.610972,
+       0.764255,0.087329,-0.638974,1.426514,-0.237645,0.610972,
+       0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+       0.764255,0.087329,-0.638974,1.431386,-0.218743,0.619383,
+       0.764255,0.087329,-0.638974,1.431386,-0.218743,0.619383,
+       0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+       0.764255,0.087329,-0.638974,1.434568,-0.198808,0.625914,
+       0.764255,0.087329,-0.638974,1.434568,-0.198808,0.625914,
+       0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+       0.797114,0.147609,-0.58551,1.435649,-0.183315,0.629324,
+       0.797114,0.147609,-0.58551,1.435649,-0.183315,0.629324,
+       0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+       0.829874,0.221855,-0.511946,1.226889,0.115699,0.4205,
+       0.315789,0.947008,-0.058772,1.772155,0.469339,2.822721,
+       0.486592,0.869856,-0.08111,1.777642,0.445154,2.578459,
+       0.326344,0.942627,-0.070391,1.744615,0.460772,2.580312,
+       0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+       0.591679,-0.141218,-0.793708,1.296236,-0.316855,0.491942,
+       0.518689,-0.21565,-0.827319,0.994243,0.115699,0.189857,
+       0.591679,-0.141218,-0.793708,1.296236,-0.316855,0.491942,
+       0.741813,0.050923,-0.66867,1.121322,0.115699,0.294234,
+       0.650762,-0.073441,-0.755722,1.401838,-0.286095,0.574837,
+       0.591679,-0.141218,-0.793708,1.296236,-0.316855,0.491942,
+       0.650762,-0.073441,-0.755722,1.401838,-0.286095,0.574837,
+       0.631771,-0.096094,-0.769175,1.309184,-0.318742,0.502813,
+       0.631771,-0.096094,-0.769175,1.309184,-0.318742,0.502813,
+       0.650762,-0.073441,-0.755722,1.401838,-0.286095,0.574837,
+       0.631771,-0.096094,-0.769175,1.325375,-0.319721,0.516234,
+       0.631771,-0.096094,-0.769175,1.325375,-0.319721,0.516234,
+       0.650762,-0.073441,-0.755722,1.401838,-0.286095,0.574837,
+       0.631771,-0.096094,-0.769175,1.341703,-0.317985,0.529428,
+       0.631771,-0.096094,-0.769175,1.341703,-0.317985,0.529428,
+       0.650762,-0.073441,-0.755722,1.401838,-0.286095,0.574837,
+       0.631771,-0.096094,-0.769175,1.357896,-0.313562,0.542176,
+       0.631771,-0.096094,-0.769175,1.357896,-0.313562,0.542176,
+       0.650762,-0.073441,-0.755722,1.401838,-0.286095,0.574837,
+       0.631771,-0.096094,-0.769175,1.373684,-0.306525,0.554264,
+       0.631771,-0.096094,-0.769175,1.373684,-0.306525,0.554264,
+       0.650762,-0.073441,-0.755722,1.401838,-0.286095,0.574837,
+       0.631771,-0.096094,-0.769175,1.388803,-0.296992,0.565492,
+       0.315789,0.947008,-0.058772,1.772155,0.469339,2.822721,
+       0.400291,0.912767,-0.081386,1.805181,0.45469,2.820868,
+       0.486592,0.869856,-0.08111,1.777642,0.445154,2.578459,
+       0.986902,0,0.161321,-1.71917,0.46934,1.9758,
+       0.989006,0,0.147878,-1.71917,0.452349,1.9758,
+       0.973675,0,0.22794,-1.593323,0.46934,1.438224,
+       0.995576,0,0.093958,-1.789572,0.46934,2.721769,
+       0.989006,0,0.147878,-1.71917,0.452349,1.9758,
+       0.986902,0,0.161321,-1.71917,0.46934,1.9758,
+       0.973675,0,0.22794,-1.593323,-0.351986,1.438224,
+       0.982991,0,0.183655,-1.719171,-0.391356,1.9758,
+       0.973675,0,0.22794,-1.593323,-0.391356,1.438224,
+       0.982991,0,0.183655,-1.719171,-0.391356,1.9758,
+       0.973675,0,0.22794,-1.593323,-0.351986,1.438224,
+       0.986902,0,0.161321,-1.719171,-0.351986,1.9758,
+       0.986902,0,0.161321,-1.719171,-0.351986,1.9758,
+       0.973675,0,0.22794,-1.593323,-0.351986,1.438224,
+       0.973675,0,0.22794,-1.593323,0.418917,1.438224,
+       0.986902,0,0.161321,-1.719171,-0.351986,1.9758,
+       0.973675,0,0.22794,-1.593323,0.418917,1.438224,
+       0.986902,0,0.161321,-1.71917,0.418917,1.9758,
+       0.986902,0,0.161321,-1.71917,0.418917,1.9758,
+       0.973675,0,0.22794,-1.593323,0.418917,1.438224,
+       0.973675,0,0.22794,-1.593323,0.46934,1.438224,
+       0.986902,0,0.161321,-1.71917,0.418917,1.9758,
+       0.973675,0,0.22794,-1.593323,0.46934,1.438224,
+       0.989006,0,0.147878,-1.71917,0.452349,1.9758,
+       0.866467,0.373928,-0.330776,1.303752,0.115699,0.560049,
+       0.861953,0.471316,-0.186813,1.360664,0.095657,0.717369,
+       0.858796,0.320379,-0.399784,1.407455,-0.032839,0.663785,
+       0.861953,0.471316,-0.186813,1.360664,0.095657,0.717369,
+       0.866467,0.373928,-0.330776,1.303752,0.115699,0.560049,
+       0.856683,0.49371,-0.14948,1.346671,0.115699,0.703372,
+       -0.454111,0,0.890945,-1.473662,-0.391356,2.907315,
+       -0.307512,0,0.951544,-1.789572,-0.351986,2.721769,
+       -0.236443,0,0.971645,-1.789572,-0.391356,2.721769,
+       -0.307512,0,0.951544,-1.789572,-0.351986,2.721769,
+       -0.454111,0,0.890945,-1.473662,-0.391356,2.907315,
+       -0.399962,0,0.916532,-1.473662,-0.351986,2.907315,
+       0.655352,-0.477297,0.585407,1.426514,-0.237645,0.610972,
+       0.68352,-0.399978,0.610588,0.847965,-0.218877,1.272403,
+       0.639403,-0.514734,0.57115,0.839604,-0.23778,1.267897,
+       0.68352,-0.399978,0.610588,0.847965,-0.218877,1.272403,
+       0.655352,-0.477297,0.585407,1.426514,-0.237645,0.610972,
+       0.695739,-0.360096,0.621513,1.431386,-0.218743,0.619383,
+       0.695739,-0.360096,0.621513,1.431386,-0.218743,0.619383,
+       0.706645,-0.319621,0.631265,0.84883,-0.216217,1.272781,
+       0.68352,-0.399978,0.610588,0.847965,-0.218877,1.272403,
+       0.706645,-0.319621,0.631265,0.84883,-0.216217,1.272781,
+       0.695739,-0.360096,0.621513,1.431386,-0.218743,0.619383,
+       0.720552,-0.257783,0.643702,1.434568,-0.198808,0.625914,
+       0.706645,-0.319621,0.631265,0.84883,-0.216217,1.272781,
+       0.720552,-0.257783,0.643702,1.434568,-0.198808,0.625914,
+       0.720552,-0.257783,0.643702,0.857464,-0.198941,1.271864,
+       0.986902,0,0.161321,-1.719171,-0.351986,1.9758,
+       0.995576,0,0.093958,-1.789572,-0.391356,2.721769,
+       0.982991,0,0.183655,-1.719171,-0.391356,1.9758,
+       0.995576,0,0.093958,-1.789572,-0.391356,2.721769,
+       0.986902,0,0.161321,-1.719171,-0.351986,1.9758,
+       0.996516,0,0.083404,-1.789572,-0.351986,2.721769,
+       0.996516,0,0.083404,-1.789572,-0.351986,2.721769,
+       0.986902,0,0.161321,-1.719171,-0.351986,1.9758,
+       0.986902,0,0.161321,-1.71917,0.418917,1.9758,
+       0.996516,0,0.083404,-1.789572,-0.351986,2.721769,
+       0.986902,0,0.161321,-1.71917,0.418917,1.9758,
+       0.996177,0,0.087363,-1.789572,0.418917,2.721769,
+       0.996177,0,0.087363,-1.789572,0.418917,2.721769,
+       0.986902,0,0.161321,-1.71917,0.418917,1.9758,
+       0.989006,0,0.147878,-1.71917,0.452349,1.9758,
+       0.996177,0,0.087363,-1.789572,0.418917,2.721769,
+       0.989006,0,0.147878,-1.71917,0.452349,1.9758,
+       0.995576,0,0.093958,-1.789572,0.46934,2.721769,
+       0.093565,-0.992115,0.08339,1.341703,-0.317985,0.529428,
+       0.029609,-0.999217,0.026249,0.738003,-0.319856,1.173677,
+       -0.00254,-0.999994,-0.002474,1.325375,-0.319721,0.516234,
+       0.029609,-0.999217,0.026249,0.738003,-0.319856,1.173677,
+       0.093565,-0.992115,0.08339,1.341703,-0.317985,0.529428,
+       0.125371,-0.98579,0.111807,0.751492,-0.31812,1.190048,
+       0.420811,-0.825651,0.375791,1.401838,-0.286095,0.574837,
+       0.388456,-0.853684,0.346879,0.790598,-0.297129,1.23506,
+       0.366268,-0.87114,0.327053,1.388803,-0.296992,0.565492,
+       0.388456,-0.853684,0.346879,0.790598,-0.297129,1.23506,
+       0.420811,-0.825651,0.375791,1.401838,-0.286095,0.574837,
+       0.446912,-0.80061,0.399116,1.402704,-0.285122,0.576005,
+       0.388456,-0.853684,0.346879,0.790598,-0.297129,1.23506,
+       0.446912,-0.80061,0.399116,1.402704,-0.285122,0.576005,
+       0.472231,-0.774036,0.421742,0.804797,-0.285259,1.245239,
+       -0.00254,-0.999994,-0.002474,1.325375,-0.319721,0.516234,
+       -0.068953,-0.995703,-0.061808,0.724321,-0.318876,1.157447,
+       -0.066668,-0.995984,-0.059767,1.309184,-0.318742,0.502813,
+       -0.068953,-0.995703,-0.061808,0.724321,-0.318876,1.157447,
+       -0.00254,-0.999994,-0.002474,1.325375,-0.319721,0.516234,
+       0.029609,-0.999217,0.026249,0.738003,-0.319856,1.173677,
+       0.279519,-0.927146,0.249538,1.373684,-0.306525,0.554264,
+       0.219043,-0.955929,0.195501,0.764565,-0.313698,1.206288,
+       0.18811,-0.967697,0.167863,1.357896,-0.313562,0.542176,
+       0.219043,-0.955929,0.195501,0.764565,-0.313698,1.206288,
+       0.279519,-0.927146,0.249538,1.373684,-0.306525,0.554264,
+       0.316357,-0.905615,0.282454,0.777003,-0.306661,1.222126,
+       -0.125259,-0.625354,-0.770222,0.574271,0.115699,0.068952,
+       -0.343264,-0.686966,-0.640506,0.714801,-0.258939,0.363541,
+       -0.307986,-0.679834,-0.66556,0.453243,0.1157,0.101903,
+       -0.343264,-0.686966,-0.640506,0.714801,-0.258939,0.363541,
+       -0.125259,-0.625354,-0.770222,0.574271,0.115699,0.068952,
+       -0.049547,-0.594885,-0.802282,0.841799,-0.26749,0.336562,
+       0.831215,0.554744,-0.036624,1.347924,0.115699,0.731818,
+       0.861953,0.471316,-0.186813,1.360664,0.095657,0.717369,
+       0.856683,0.49371,-0.14948,1.346671,0.115699,0.703372,
+       0.829874,0.221855,-0.511946,1.226889,0.115699,0.4205,
+       0.844655,0.264802,-0.465229,1.435175,-0.178174,0.631389,
+       0.797114,0.147609,-0.58551,1.435649,-0.183315,0.629324,
+       0.844655,0.264802,-0.465229,1.435175,-0.178174,0.631389,
+       0.829874,0.221855,-0.511946,1.226889,0.115699,0.4205,
+       0.858796,0.320379,-0.399784,1.407455,-0.032839,0.663785,
+       0.858796,0.320379,-0.399784,1.407455,-0.032839,0.663785,
+       0.829874,0.221855,-0.511946,1.226889,0.115699,0.4205,
+       0.866467,0.373928,-0.330776,1.303752,0.115699,0.560049,
+       0.18811,-0.967697,0.167863,1.357896,-0.313562,0.542176,
+       0.125371,-0.98579,0.111807,0.751492,-0.31812,1.190048,
+       0.093565,-0.992115,0.08339,1.341703,-0.317985,0.529428,
+       0.125371,-0.98579,0.111807,0.751492,-0.31812,1.190048,
+       0.18811,-0.967697,0.167863,1.357896,-0.313562,0.542176,
+       0.219043,-0.955929,0.195501,0.764565,-0.313698,1.206288,
+       0.518689,-0.21565,-0.827319,0.994243,0.115699,0.189857,
+       0.390324,-0.328222,-0.860184,1.142772,-0.29747,0.403027,
+       0.32092,-0.381383,-0.866924,0.854313,0.115699,0.11448,
+       0.390324,-0.328222,-0.860184,1.142772,-0.29747,0.403027,
+       0.518689,-0.21565,-0.827319,0.994243,0.115699,0.189857,
+       0.591679,-0.141218,-0.793708,1.296236,-0.316855,0.491942,
+       0.594472,-0.603866,0.530989,1.420033,-0.2552,0.600822,
+       0.542659,-0.686007,0.484682,0.817839,-0.27125,1.254201,
+       0.520105,-0.716734,0.464525,1.412052,-0.271114,0.589101,
+       0.542659,-0.686007,0.484682,0.817839,-0.27125,1.254201,
+       0.594472,-0.603866,0.530989,1.420033,-0.2552,0.600822,
+       0.594472,-0.603866,0.530989,0.829506,-0.255335,1.261796,
+       -0.397992,0.380616,0.834706,0.886816,-0.070199,1.246183,
+       -0.499279,0.460824,0.733731,0.758404,-0.078952,1.180247,
+       -0.47928,0.243811,0.843117,0.865187,-0.178304,1.269373,
+       0.743937,-0.06942,0.664634,1.435175,-0.178174,0.631389,
+       0.745715,-0.006279,0.666235,0.886816,-0.070199,1.246183,
+       0.737507,-0.148222,0.658873,0.865187,-0.178304,1.269373,
+       0.745715,-0.006279,0.666235,0.886816,-0.070199,1.246183,
+       0.743937,-0.06942,0.664634,1.435175,-0.178174,0.631389,
+       0.745715,-0.006279,0.666235,1.407455,-0.032839,0.663785,
+       0.745715,-0.006279,0.666235,0.886816,-0.070199,1.246183,
+       0.745715,-0.006279,0.666235,1.407455,-0.032839,0.663785,
+       0.745715,-0.006279,0.666235,0.901767,-0.028687,1.229839,
+       0.745715,-0.006279,0.666235,0.901767,-0.028687,1.229839,
+       0.745715,-0.006279,0.666235,1.407455,-0.032839,0.663785,
+       0.745715,-0.006279,0.666235,1.360664,0.095657,0.717369,
+       0.745715,-0.006279,0.666235,0.901767,-0.028687,1.229839,
+       0.745715,-0.006279,0.666235,1.360664,0.095657,0.717369,
+       0.745715,-0.006279,0.666235,1.050087,0.1157,1.065186,
+       0.745715,-0.006279,0.666235,1.050087,0.1157,1.065186,
+       0.745715,-0.006279,0.666235,1.360664,0.095657,0.717369,
+       0.745715,-0.006279,0.666235,1.347924,0.115699,0.731818,
+       0,1,0,-1.789572,-0.351986,2.721769,
+       0,1,0,-1.343835,-0.351986,2.308269,
+       0,1,0,-1.753229,-0.351986,2.185036,
+       0,1,0,-1.343835,-0.351986,2.308269,
+       0,1,0,-1.789572,-0.351986,2.721769,
+       0,1,0,-1.473662,-0.351986,2.907315,
+       0.432927,-0.836473,-0.335988,0.293295,-0.391356,1.363581,
+       0.433809,-0.83702,-0.333476,0.555173,-0.104583,0.984454,
+       0.435934,-0.836023,-0.333207,0.640686,-0.100103,1.087313,
+       -0.082643,-0.993825,-0.074039,0.987772,-0.280632,0.35003,
+       -0.082643,-0.993825,-0.074039,0.714801,-0.258939,0.363541,
+       -0.082643,-0.993825,-0.074039,0.841799,-0.26749,0.336562,
+       -0.082643,-0.993825,-0.074039,0.714801,-0.258939,0.363541,
+       -0.082643,-0.993825,-0.074039,0.987772,-0.280632,0.35003,
+       -0.082643,-0.993825,-0.074039,1.142772,-0.29747,0.403027,
+       -0.082643,-0.993825,-0.074039,0.714801,-0.258939,0.363541,
+       -0.082643,-0.993825,-0.074039,1.142772,-0.29747,0.403027,
+       -0.082643,-0.993825,-0.074039,0.615433,-0.255562,0.429129,
+       -0.082643,-0.993825,-0.074039,0.615433,-0.255562,0.429129,
+       -0.082643,-0.993825,-0.074039,1.142772,-0.29747,0.403027,
+       -0.082643,-0.993825,-0.074039,1.296236,-0.316855,0.491942,
+       -0.082643,-0.993825,-0.074039,0.615433,-0.255562,0.429129,
+       -0.082643,-0.993825,-0.074039,1.296236,-0.316855,0.491942,
+       -0.082643,-0.993825,-0.074039,0.550466,-0.257589,0.528855,
+       -0.082643,-0.993825,-0.074039,0.550466,-0.257589,0.528855,
+       -0.082643,-0.993825,-0.074039,1.296236,-0.316855,0.491942,
+       -0.066668,-0.995984,-0.059767,1.309184,-0.318742,0.502813,
+       -0.082643,-0.993825,-0.074039,0.550466,-0.257589,0.528855,
+       -0.066668,-0.995984,-0.059767,1.309184,-0.318742,0.502813,
+       -0.068953,-0.995703,-0.061808,0.724321,-0.318876,1.157447,
+       -0.082643,-0.993825,-0.074039,0.550466,-0.257589,0.528855,
+       -0.068953,-0.995703,-0.061808,0.724321,-0.318876,1.157447,
+       -0.082643,-0.993825,-0.074039,0.524328,-0.264882,0.655925,
+       -0.082643,-0.993825,-0.074039,0.524328,-0.264882,0.655925,
+       -0.068953,-0.995703,-0.061808,0.724321,-0.318876,1.157447,
+       -0.082643,-0.993825,-0.074039,0.5388,-0.276944,0.801677,
+       -0.082643,-0.993825,-0.074039,0.5388,-0.276944,0.801677,
+       -0.068953,-0.995703,-0.061808,0.724321,-0.318876,1.157447,
+       -0.082643,-0.993825,-0.074039,0.592896,-0.292953,0.956179,
+       -0.082643,-0.993825,-0.074039,0.592896,-0.292953,0.956179,
+       -0.068953,-0.995703,-0.061808,0.724321,-0.318876,1.157447,
+       -0.082643,-0.993825,-0.074039,0.682929,-0.311817,1.108903,
+       0.986813,-0.09744,-0.129251,1.867696,-0.075915,2.573407,
+       0.981604,-0.156227,-0.109762,1.882448,-0.17612,2.816533,
+       0.969456,-0.193643,-0.150523,1.854908,-0.178538,2.574124,
+       0.981604,-0.156227,-0.109762,1.882448,-0.17612,2.816533,
+       0.986813,-0.09744,-0.129251,1.867696,-0.075915,2.573407,
+       0.99148,-0.06721,-0.111576,1.895235,-0.072325,2.815815,
+       -0.249605,0.431242,0.867022,0.901767,-0.028687,1.229839,
+       -0.355285,0.355664,0.864451,0.868735,-0.0443,1.228096,
+       -0.397992,0.380616,0.834706,0.886816,-0.070199,1.246183,
+       0.520105,-0.716734,0.464525,1.412052,-0.271114,0.589101,
+       0.472231,-0.774036,0.421742,0.804797,-0.285259,1.245239,
+       0.446912,-0.80061,0.399116,1.402704,-0.285122,0.576005,
+       0.472231,-0.774036,0.421742,0.804797,-0.285259,1.245239,
+       0.520105,-0.716734,0.464525,1.412052,-0.271114,0.589101,
+       0.542659,-0.686007,0.484682,0.817839,-0.27125,1.254201,
+       0.275598,-0.853624,-0.442009,1.667565,0.059804,1.716859,
+       0.25896,-0.861903,-0.435962,1.620844,0.074945,1.667507,
+       0.117527,-0.982232,-0.146317,1.594074,0.1157,1.569594,
+       0.720552,-0.257783,0.643702,1.434568,-0.198808,0.625914,
+       0.737507,-0.148222,0.658873,0.865187,-0.178304,1.269373,
+       0.720552,-0.257783,0.643702,0.857464,-0.198941,1.271864,
+       0.737507,-0.148222,0.658873,0.865187,-0.178304,1.269373,
+       0.720552,-0.257783,0.643702,1.434568,-0.198808,0.625914,
+       0.731453,-0.194869,0.653454,1.435649,-0.183315,0.629324,
+       0.737507,-0.148222,0.658873,0.865187,-0.178304,1.269373,
+       0.731453,-0.194869,0.653454,1.435649,-0.183315,0.629324,
+       0.743937,-0.06942,0.664634,1.435175,-0.178174,0.631389,
+       -0.493712,0,0.869625,-1.473662,0.418917,3.101913,
+       -0.563285,0,0.826263,-1.760402,0.46934,2.906435,
+       -0.563285,0,0.826263,-1.760402,0.418917,2.906435,
+       -0.563285,0,0.826263,-1.760402,0.46934,2.906435,
+       -0.493712,0,0.869625,-1.473662,0.418917,3.101913,
+       -0.420316,0,0.907378,-1.473662,0.46934,3.101913,
+       0.101282,-0.521126,-0.847449,0.711069,0.115699,0.073242,
+       -0.049547,-0.594885,-0.802282,0.841799,-0.26749,0.336562,
+       -0.125259,-0.625354,-0.770222,0.574271,0.115699,0.068952,
+       -0.049547,-0.594885,-0.802282,0.841799,-0.26749,0.336562,
+       0.101282,-0.521126,-0.847449,0.711069,0.115699,0.073242,
+       0.176399,-0.477835,-0.860556,0.987772,-0.280632,0.35003,
+       0.594472,-0.603866,0.530989,1.420033,-0.2552,0.600822,
+       0.639403,-0.514734,0.57115,0.839604,-0.23778,1.267897,
+       0.594472,-0.603866,0.530989,0.829506,-0.255335,1.261796,
+       0.639403,-0.514734,0.57115,0.839604,-0.23778,1.267897,
+       0.594472,-0.603866,0.530989,1.420033,-0.2552,0.600822,
+       0.655352,-0.477297,0.585407,1.426514,-0.237645,0.610972,
+       -0.311023,0,0.950402,-1.343835,-0.351986,2.308269,
+       -0.288237,0,0.957559,-1.753229,0.429973,2.185036,
+       -0.288237,0,0.957559,-1.753229,-0.351986,2.185036,
+       -0.288237,0,0.957559,-1.753229,0.429973,2.185036,
+       -0.311023,0,0.950402,-1.343835,-0.351986,2.308269,
+       -0.333644,0,0.942699,-1.343835,0.429973,2.308269,
+       0.366268,-0.87114,0.327053,1.388803,-0.296992,0.565492,
+       0.316357,-0.905615,0.282454,0.777003,-0.306661,1.222126,
+       0.279519,-0.927146,0.249538,1.373684,-0.306525,0.554264,
+       0.316357,-0.905615,0.282454,0.777003,-0.306661,1.222126,
+       0.366268,-0.87114,0.327053,1.388803,-0.296992,0.565492,
+       0.388456,-0.853684,0.346879,0.790598,-0.297129,1.23506,
+       0.316357,-0.905615,0.282454,0.777003,-0.306661,1.222126,
+       0.388456,-0.853684,0.346879,0.790598,-0.297129,1.23506,
+       0.337978,-0.891461,0.301774,0.782018,-0.302539,1.228689,
+       0.426503,-0.836005,-0.345241,0.665608,-0.095567,1.107224,
+       0.410782,-0.836134,-0.363507,0.393122,-0.391356,1.486857,
+       0.426432,-0.836018,-0.345296,0.645497,-0.099189,1.091151,
+       0.410782,-0.836134,-0.363507,0.393122,-0.391356,1.486857,
+       0.426503,-0.836005,-0.345241,0.665608,-0.095567,1.107224,
+       0.426318,-0.836032,-0.345403,0.673898,-0.094074,1.113849,
+       0.405161,-0.913099,-0.045758,1.80488,-0.376661,2.820885,
+       0.252879,-0.950479,-0.180671,1.744615,-0.391346,2.580312,
+       0.379015,-0.886977,-0.263854,1.777341,-0.376815,2.578476,
+       0.252879,-0.950479,-0.180671,1.744615,-0.391346,2.580312,
+       0.405161,-0.913099,-0.045758,1.80488,-0.376661,2.820885,
+       0.207733,-0.9779,-0.023645,1.772155,-0.391357,2.822721,
+       0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+       0.240571,0.970213,-0.028486,1.63484,0.469339,1.718695,
+       0.180985,0.982354,-0.047179,1.594075,0.469851,1.569594,
+       -0.486507,0.572163,0.660258,0.758981,-0.077961,1.179865,
+       -0.504226,0.552291,0.663876,0.755695,-0.079224,1.178282,
+       -0.479798,0.509116,0.714559,0.758404,-0.078952,1.180247,
+       -0.765433,-0.076157,0.638994,0.546029,-0.105148,0.973456,
+       -0.824319,-0.208014,0.526525,0.538904,-0.105527,0.964835,
+       -0.78972,-0.133178,0.598838,0.682929,-0.311817,1.108903,
+       0.467544,-0.836198,-0.286662,0.020451,-0.391356,0.973919,
+       0.470214,-0.836003,-0.28284,0.396675,-0.073374,0.659509,
+       0.463075,-0.836184,-0.293866,0.420331,-0.082341,0.724045,
+       0.494701,-0.836109,-0.23705,-0.210168,-0.391356,0.557872,
+       0.500479,-0.836021,-0.224924,0.428578,0.1157,0.099871,
+       0.496685,-0.836056,-0.233057,0.406831,0.08212,0.174281,
+       0.494701,-0.836109,-0.23705,-0.210168,-0.391356,0.557872,
+       0.496685,-0.836056,-0.233057,0.406831,0.08212,0.174281,
+       0.49078,-0.836227,-0.244662,0.378789,0.038394,0.270618,
+       0.430585,-0.755425,-0.493893,0.762622,-0.077692,1.181918,
+       0.441471,-0.737274,-0.511401,0.758404,-0.078952,1.180247,
+       0.496169,-0.607991,-0.619809,0.758981,-0.077961,1.179865,
+       0.432927,-0.836473,-0.335988,0.293295,-0.391356,1.363581,
+       0.435934,-0.836023,-0.333207,0.640686,-0.100103,1.087313,
+       0.428434,-0.836046,-0.342742,0.643743,-0.099518,1.08978,
+       0.456862,-0.836223,-0.303327,0.106845,-0.391356,1.106955,
+       0.463075,-0.836184,-0.293866,0.420331,-0.082341,0.724045,
+       0.459265,-0.836065,-0.300117,0.455635,-0.09635,0.818877,
+       0.240977,-0.859676,-0.450429,1.63484,0.05269,1.718695,
+       0.25896,-0.861903,-0.435962,1.620844,0.074945,1.667507,
+       0.275598,-0.853624,-0.442009,1.667565,0.059804,1.716859,
+       0.367836,-0.89319,-0.258668,0.690311,-0.091124,1.126951,
+       0.324389,-0.893916,-0.309333,0.755695,-0.079224,1.178282,
+       0.341562,-0.894102,-0.289684,0.753511,-0.079688,1.177433,
+       0.444321,-0.74498,-0.497578,0.755695,-0.079224,1.178282,
+       0.455024,-0.799852,-0.391394,0.690311,-0.091124,1.126951,
+       0.496169,-0.607991,-0.619809,0.758981,-0.077961,1.179865,
+       0.444321,-0.74498,-0.497578,0.755695,-0.079224,1.178282,
+       0.496169,-0.607991,-0.619809,0.758981,-0.077961,1.179865,
+       0.441471,-0.737274,-0.511401,0.758404,-0.078952,1.180247,
+       0.828657,-0.513374,-0.223105,1.808137,-0.334296,2.576748,
+       0.806377,-0.584412,-0.090654,1.80488,-0.376661,2.820885,
+       0.782324,-0.576239,-0.23647,1.777341,-0.376815,2.578476,
+       0.986813,-0.09744,-0.129251,1.867696,-0.075915,2.573407,
+       0.969456,-0.193643,-0.150523,1.854908,-0.178538,2.574124,
+       0.964083,-0.187609,-0.188009,1.839353,-0.124227,2.437205,
+       0.993252,-0.014102,-0.11512,1.872085,0.03421,2.57316,
+       0.986813,-0.09744,-0.129251,1.867696,-0.075915,2.573407,
+       0.986156,-0.079836,-0.145337,1.852141,-0.030933,2.436487,
+       0.992962,0.019572,-0.116804,1.85653,0.069181,2.436241,
+       0.993252,-0.014102,-0.11512,1.872085,0.03421,2.57316,
+       0.986156,-0.079836,-0.145337,1.852141,-0.030933,2.436487,
+       0.892304,-0.335983,-0.30151,1.745133,0.156883,1.712507,
+       0.915392,-0.31686,-0.248308,1.819039,-0.204345,2.438344,
+       0.782483,-0.506128,-0.362704,1.724818,0.113734,1.713647,
+       0.956965,-0.269823,-0.106838,1.862133,-0.265255,2.817672,
+       0.892998,-0.438832,-0.099907,1.835677,-0.333656,2.819157,
+       0.929733,-0.320654,-0.181048,1.834594,-0.266668,2.575264,
+       0.929733,-0.320654,-0.181048,1.834594,-0.266668,2.575264,
+       0.892998,-0.438832,-0.099907,1.835677,-0.333656,2.819157,
+       0.828657,-0.513374,-0.223105,1.808137,-0.334296,2.576748,
+       0.941461,0.31575,-0.118125,1.862354,0.343336,2.81766,
+       0.974976,0.189186,-0.116748,1.882604,0.254219,2.816524,
+       0.95607,0.274398,-0.103135,1.834814,0.335056,2.575251,
+       0.850682,0.512682,-0.116178,1.835947,0.411713,2.819142,
+       0.941461,0.31575,-0.118125,1.862354,0.343336,2.81766,
+       0.889216,0.445544,-0.103856,1.808407,0.402661,2.576733,
+       0.805615,0.58129,-0.114393,1.805181,0.45469,2.820868,
+       0.850682,0.512682,-0.116178,1.835947,0.411713,2.819142,
+       0.797689,0.594217,-0.102947,1.777642,0.445154,2.578459,
+       0.981604,-0.156227,-0.109762,1.882448,-0.17612,2.816533,
+       0.956965,-0.269823,-0.106838,1.862133,-0.265255,2.817672,
+       0.969456,-0.193643,-0.150523,1.854908,-0.178538,2.574124,
+       0.987616,0.121103,-0.099745,1.852221,0.169291,2.436483,
+       0.991975,0.067695,-0.106788,1.867776,0.144331,2.573402,
+       0.992962,0.019572,-0.116804,1.85653,0.069181,2.436241,
+       0.782483,-0.506128,-0.362704,1.724818,0.113734,1.713647,
+       0.915392,-0.31686,-0.248308,1.819039,-0.204345,2.438344,
+       0.807977,-0.486376,-0.332584,1.792582,-0.265825,2.439829,
+       0.991975,0.067695,-0.106788,1.867776,0.144331,2.573402,
+       0.993252,-0.014102,-0.11512,1.872085,0.03421,2.57316,
+       0.992962,0.019572,-0.116804,1.85653,0.069181,2.436241,
+       0.797689,0.594217,-0.102947,1.777642,0.445154,2.578459,
+       0.850682,0.512682,-0.116178,1.835947,0.411713,2.819142,
+       0.889216,0.445544,-0.103856,1.808407,0.402661,2.576733,
+       0.889216,0.445544,-0.103856,1.808407,0.402661,2.576733,
+       0.941461,0.31575,-0.118125,1.862354,0.343336,2.81766,
+       0.95607,0.274398,-0.103135,1.834814,0.335056,2.575251,
+       0.969456,-0.193643,-0.150523,1.854908,-0.178538,2.574124,
+       0.956965,-0.269823,-0.106838,1.862133,-0.265255,2.817672,
+       0.929733,-0.320654,-0.181048,1.834594,-0.266668,2.575264,
+       0.95607,0.274398,-0.103135,1.834814,0.335056,2.575251,
+       0.974976,0.189186,-0.116748,1.882604,0.254219,2.816524,
+       0.981926,0.158648,-0.103211,1.855064,0.246944,2.574115,
+       0.892998,-0.438832,-0.099907,1.835677,-0.333656,2.819157,
+       0.806377,-0.584412,-0.090654,1.80488,-0.376661,2.820885,
+       0.828657,-0.513374,-0.223105,1.808137,-0.334296,2.576748,
+       0.467544,-0.836198,-0.286662,0.020451,-0.391356,0.973919,
+       0.474256,-0.836102,-0.275709,0.38175,-0.056076,0.582184,
+       0.470214,-0.836003,-0.28284,0.396675,-0.073374,0.659509,
+       0.456862,-0.836223,-0.303327,0.106845,-0.391356,1.106955,
+       0.459265,-0.836065,-0.300117,0.455635,-0.09635,0.818877,
+       0.451622,-0.836275,-0.310937,0.477253,-0.098489,0.857111,
+       0.410782,-0.836134,-0.363507,0.393122,-0.391356,1.486857,
+       0.428434,-0.836046,-0.342742,0.643743,-0.099518,1.08978,
+       0.426432,-0.836018,-0.345296,0.645497,-0.099189,1.091151,
+       0.432927,-0.836473,-0.335988,0.293295,-0.391356,1.363581,
+       0.438762,-0.836856,-0.327354,0.551399,-0.104719,0.980011,
+       0.433809,-0.83702,-0.333476,0.555173,-0.104583,0.984454,
+       0.410782,-0.836134,-0.363507,0.393122,-0.391356,1.486857,
+       0.426318,-0.836032,-0.345403,0.673898,-0.094074,1.113849,
+       0.406635,-0.856746,-0.31723,0.690311,-0.091124,1.126951,
+       0.797689,0.594217,-0.102947,1.777642,0.445154,2.578459,
+       0.889216,0.445544,-0.103856,1.808407,0.402661,2.576733,
+       0.844008,0.528559,-0.090974,1.792852,0.404136,2.439814,
+       0.37929,0.924605,-0.035288,1.762087,0.442766,2.44154,
+       0.371988,0.925853,-0.066493,1.667866,0.462248,1.716842,
+       0.240571,0.970213,-0.028486,1.63484,0.469339,1.718695,
+       0.896813,0.381482,-0.22405,1.704523,0.381335,1.563397,
+       0.946878,0.205961,-0.246986,1.717236,0.338631,1.562684,
+       0.904661,0.346941,-0.247428,1.271248,0.380955,-0.021329,
+       0.964263,-0.000657,-0.264945,1.721544,0.292802,1.562442,
+       0.938723,-0.205797,-0.276489,1.717155,0.246972,1.562689,
+       0.952752,-0.156236,-0.260487,1.284116,0.24723,-0.021329,
+       0.724259,-0.575555,-0.379718,1.761786,-0.304479,2.441557,
+       0.828657,-0.513374,-0.223105,1.808137,-0.334296,2.576748,
+       0.782324,-0.576239,-0.23647,1.777341,-0.376815,2.578476,
+       0.919898,0.381988,-0.088733,1.819259,0.342676,2.438332,
+       0.95607,0.274398,-0.103135,1.834814,0.335056,2.575251,
+       0.967362,0.236279,-0.091558,1.839509,0.262575,2.437196,
+       0.851194,0.50661,-0.137165,1.725039,0.408343,1.713635,
+       0.967362,0.236279,-0.091558,1.839509,0.262575,2.437196,
+       0.94538,0.296534,-0.135365,1.745289,0.365203,1.712498,
+       0.240571,0.970213,-0.028486,1.63484,0.469339,1.718695,
+       0.371988,0.925853,-0.066493,1.667866,0.462248,1.716842,
+       0.180985,0.982354,-0.047179,1.594075,0.469851,1.569594,
+       0.262608,-0.840906,-0.473195,1.72906,-0.317688,2.443393,
+       0.240977,-0.859676,-0.450429,1.63484,0.05269,1.718695,
+       0.275598,-0.853624,-0.442009,1.667565,0.059804,1.716859,
+       0.953603,-0.164611,-0.252081,1.75792,0.207128,1.71179,
+       0.964083,-0.187609,-0.188009,1.839353,-0.124227,2.437205,
+       0.892304,-0.335983,-0.30151,1.745133,0.156883,1.712507,
+       0.653549,0.750745,-0.096206,1.777642,0.445154,2.578459,
+       0.844008,0.528559,-0.090974,1.792852,0.404136,2.439814,
+       0.711557,0.698766,-0.073569,1.762087,0.442766,2.44154,
+       0.36952,-0.836018,-0.405622,1.350509,0.1157,1.368801,
+       0.378858,-0.836018,-0.396914,0.717541,-0.391356,1.834754,
+       0.383451,-0.836018,-0.392479,1.254219,0.1157,1.279009,
+       0.378858,-0.836018,-0.396914,0.717541,-0.391356,1.834754,
+       0.36952,-0.836018,-0.405622,1.350509,0.1157,1.368801,
+       0.364775,-0.836018,-0.409895,0.833554,-0.391356,1.942938,
+       0.982391,-0.009206,-0.186608,1.762309,0.261046,1.711543,
+       0.986156,-0.079836,-0.145337,1.852141,-0.030933,2.436487,
+       0.953603,-0.164611,-0.252081,1.75792,0.207128,1.71179,
+       0.869834,0.47479,-0.13403,1.725039,0.408343,1.713635,
+       0.919898,0.381988,-0.088733,1.819259,0.342676,2.438332,
+       0.967362,0.236279,-0.091558,1.839509,0.262575,2.437196,
+       0.39596,0.91224,-0.105037,1.627101,0.463824,1.567741,
+       0.627181,0.763304,-0.154955,1.657866,0.44614,1.566015,
+       0.613857,0.771354,-0.167905,1.223803,0.445458,-0.021329,
+       0.938723,-0.205797,-0.276489,1.717155,0.246972,1.562689,
+       0.953603,-0.164611,-0.252081,1.75792,0.207128,1.71179,
+       0.882004,-0.370857,-0.290748,1.704367,0.204263,1.563406,
+       0.882004,-0.370857,-0.290748,1.704367,0.204263,1.563406,
+       0.770844,-0.562595,-0.298807,1.684053,0.167587,1.564546,
+       0.807151,-0.547554,-0.220661,1.250463,0.167512,-0.021329,
+       0.326686,0.943881,-0.048628,1.72906,0.455932,2.443393,
+       0.37929,0.924605,-0.035288,1.762087,0.442766,2.44154,
+       0.240571,0.970213,-0.028486,1.63484,0.469339,1.718695,
+       0.608966,-0.724087,-0.323817,1.657596,0.139442,1.56603,
+       0.782483,-0.506128,-0.362704,1.724818,0.113734,1.713647,
+       0.570937,-0.702812,-0.424365,1.698362,0.080622,1.715131,
+       0.896813,0.381482,-0.22405,1.704523,0.381335,1.563397,
+       0.94538,0.296534,-0.135365,1.745289,0.365203,1.712498,
+       0.971942,0.152801,-0.17883,1.758001,0.314963,1.711785,
+       0.352435,-0.903593,-0.243536,1.6268,0.121747,1.567758,
+       0.605395,-0.778525,-0.165517,1.223677,0.139521,-0.021329,
+       0.608966,-0.724087,-0.323817,1.657596,0.139442,1.56603,
+       0.896813,0.381482,-0.22405,1.704523,0.381335,1.563397,
+       0.971942,0.152801,-0.17883,1.758001,0.314963,1.711785,
+       0.946878,0.205961,-0.246986,1.717236,0.338631,1.562684,
+       0.773313,0.602828,-0.196431,1.684274,0.418004,1.564533,
+       0.896813,0.381482,-0.22405,1.704523,0.381335,1.563397,
+       0.80696,0.547786,-0.220785,1.250799,0.417372,-0.021329,
+       0.882004,-0.370857,-0.290748,1.704367,0.204263,1.563406,
+       0.892304,-0.335983,-0.30151,1.745133,0.156883,1.712507,
+       0.770844,-0.562595,-0.298807,1.684053,0.167587,1.564546,
+       0.946878,0.205961,-0.246986,1.717236,0.338631,1.562684,
+       0.964263,-0.000657,-0.264945,1.721544,0.292802,1.562442,
+       0.952938,0.154945,-0.260578,1.284174,0.338115,-0.021329,
+       0.953603,-0.164611,-0.252081,1.75792,0.207128,1.71179,
+       0.892304,-0.335983,-0.30151,1.745133,0.156883,1.712507,
+       0.882004,-0.370857,-0.290748,1.704367,0.204263,1.563406,
+       0.967362,0.236279,-0.091558,1.839509,0.262575,2.437196,
+       0.981926,0.158648,-0.103211,1.855064,0.246944,2.574115,
+       0.987616,0.121103,-0.099745,1.852221,0.169291,2.436483,
+       0.95607,0.274398,-0.103135,1.834814,0.335056,2.575251,
+       0.981926,0.158648,-0.103211,1.855064,0.246944,2.574115,
+       0.967362,0.236279,-0.091558,1.839509,0.262575,2.437196,
+       0.946878,0.205961,-0.246986,1.717236,0.338631,1.562684,
+       0.971942,0.152801,-0.17883,1.758001,0.314963,1.711785,
+       0.964263,-0.000657,-0.264945,1.721544,0.292802,1.562442,
+       0.627181,0.763304,-0.154955,1.657866,0.44614,1.566015,
+       0.739369,0.666111,-0.098133,1.698631,0.441443,1.715116,
+       0.851194,0.50661,-0.137165,1.725039,0.408343,1.713635,
+       0.889216,0.445544,-0.103856,1.808407,0.402661,2.576733,
+       0.95607,0.274398,-0.103135,1.834814,0.335056,2.575251,
+       0.919898,0.381988,-0.088733,1.819259,0.342676,2.438332,
+       0.964263,-0.000657,-0.264945,1.721544,0.292802,1.562442,
+       0.982391,-0.009206,-0.186608,1.762309,0.261046,1.711543,
+       0.953603,-0.164611,-0.252081,1.75792,0.207128,1.71179,
+       0.953603,-0.164611,-0.252081,1.75792,0.207128,1.71179,
+       0.986156,-0.079836,-0.145337,1.852141,-0.030933,2.436487,
+       0.964083,-0.187609,-0.188009,1.839353,-0.124227,2.437205,
+       0.770844,-0.562595,-0.298807,1.684053,0.167587,1.564546,
+       0.892304,-0.335983,-0.30151,1.745133,0.156883,1.712507,
+       0.782483,-0.506128,-0.362704,1.724818,0.113734,1.713647,
+       -0.266041,0.835984,0.479951,1.744615,-0.391346,2.580312,
+       -0.266041,0.835984,0.479951,1.743775,-0.387364,2.572911,
+       -0.266041,0.835984,0.479951,1.740919,-0.391356,2.578282,
+       0.964263,-0.000657,-0.264945,1.721544,0.292802,1.562442,
+       0.953603,-0.164611,-0.252081,1.75792,0.207128,1.71179,
+       0.938723,-0.205797,-0.276489,1.717155,0.246972,1.562689,
+       0.527931,0.84762,-0.05318,1.762087,0.442766,2.44154,
+       0.694799,0.712655,-0.096836,1.698631,0.441443,1.715116,
+       0.371988,0.925853,-0.066493,1.667866,0.462248,1.716842,
+       0.969456,-0.193643,-0.150523,1.854908,-0.178538,2.574124,
+       0.929733,-0.320654,-0.181048,1.834594,-0.266668,2.575264,
+       0.915392,-0.31686,-0.248308,1.819039,-0.204345,2.438344,
+       0.372426,-0.888996,-0.266431,1.744615,-0.391346,2.580312,
+       0.459522,-0.764252,-0.452503,1.761786,-0.304479,2.441557,
+       0.379015,-0.886977,-0.263854,1.777341,-0.376815,2.578476,
+       0.971942,0.152801,-0.17883,1.758001,0.314963,1.711785,
+       0.992962,0.019572,-0.116804,1.85653,0.069181,2.436241,
+       0.982391,-0.009206,-0.186608,1.762309,0.261046,1.711543,
+       0.371988,0.925853,-0.066493,1.667866,0.462248,1.716842,
+       0.627181,0.763304,-0.154955,1.657866,0.44614,1.566015,
+       0.39596,0.91224,-0.105037,1.627101,0.463824,1.567741,
+       0.971942,0.152801,-0.17883,1.758001,0.314963,1.711785,
+       0.982391,-0.009206,-0.186608,1.762309,0.261046,1.711543,
+       0.964263,-0.000657,-0.264945,1.721544,0.292802,1.562442,
+       0.770844,-0.562595,-0.298807,1.684053,0.167587,1.564546,
+       0.782483,-0.506128,-0.362704,1.724818,0.113734,1.713647,
+       0.608966,-0.724087,-0.323817,1.657596,0.139442,1.56603,
+       0.403179,0.91206,-0.074795,1.777642,0.445154,2.578459,
+       0.37929,0.924605,-0.035288,1.762087,0.442766,2.44154,
+       0.326686,0.943881,-0.048628,1.72906,0.455932,2.443393,
+       0.013852,-0.999834,-0.0118,-1.789572,0.418917,2.721769,
+       0.006074,-0.999778,-0.020183,-1.753229,0.429973,2.185036,
+       0.01031,-0.999871,-0.012311,-1.343835,0.429973,2.308269,
+       0.627181,0.763304,-0.154955,1.657866,0.44614,1.566015,
+       0.773313,0.602828,-0.196431,1.684274,0.418004,1.564533,
+       0.613857,0.771354,-0.167905,1.223803,0.445458,-0.021329,
+       0.94538,0.296534,-0.135365,1.745289,0.365203,1.712498,
+       0.987616,0.121103,-0.099745,1.852221,0.169291,2.436483,
+       0.971942,0.152801,-0.17883,1.758001,0.314963,1.711785,
+       0.995462,0,-0.09516,1.772155,0.429175,2.822721,
+       0.998221,0,-0.059628,1.804276,0.469339,3.360463,
+       0.998221,0,-0.059628,1.804276,0.418917,3.360463,
+       0.998221,0,-0.059628,1.804276,0.469339,3.360463,
+       0.995462,0,-0.09516,1.772155,0.429175,2.822721,
+       0.998221,0,-0.059628,1.772155,0.469339,2.822721,
+       0.326344,0.942627,-0.070391,1.744615,0.460772,2.580312,
+       0.486592,0.869856,-0.08111,1.777642,0.445154,2.578459,
+       0.326686,0.943881,-0.048628,1.72906,0.455932,2.443393,
+       0.117527,-0.982232,-0.146317,1.594074,0.1157,1.569594,
+       0.259122,-0.963243,-0.070844,1.192294,0.121731,-0.021329,
+       0.30254,-0.939741,-0.159236,1.6268,0.121747,1.567758,
+       0,1,0,1.567503,-0.351987,3.38714,
+       0,1,0,1.772155,-0.351987,2.822721,
+       0,1,0,1.767999,-0.351987,2.786146,
+       0,1,0,1.772155,-0.351987,2.822721,
+       0,1,0,1.567503,-0.351987,3.38714,
+       0,1,0,1.792693,-0.351987,3.166558,
+       0.915392,-0.31686,-0.248308,1.819039,-0.204345,2.438344,
+       0.929733,-0.320654,-0.181048,1.834594,-0.266668,2.575264,
+       0.807977,-0.486376,-0.332584,1.792582,-0.265825,2.439829,
+       0.815608,0.569675,-0.10126,1.698631,0.441443,1.715116,
+       0.844008,0.528559,-0.090974,1.792852,0.404136,2.439814,
+       0.919898,0.381988,-0.088733,1.819259,0.342676,2.438332,
+       0.807977,-0.486376,-0.332584,1.792582,-0.265825,2.439829,
+       0.929733,-0.320654,-0.181048,1.834594,-0.266668,2.575264,
+       0.828657,-0.513374,-0.223105,1.808137,-0.334296,2.576748,
+       -0.045349,0.979938,0.194076,-0.497427,0.46934,3.460249,
+       -0.040582,0.999145,0.007945,-0.433276,0.66934,2.462309,
+       -0.093562,0.988956,0.114946,-1.473662,0.46934,3.101913,
+       -0.108877,0,0.994055,0.500177,0.418917,3.617705,
+       -0.219726,0,0.975562,-0.497427,0.46934,3.460249,
+       -0.282885,0,0.959154,-0.497427,0.418917,3.460249,
+       -0.219726,0,0.975562,-0.497427,0.46934,3.460249,
+       -0.108877,0,0.994055,0.500177,0.418917,3.617705,
+       -0.155904,0,0.987772,0.001375,0.46934,3.538977,
+       -0.155904,0,0.987772,0.001375,0.46934,3.538977,
+       -0.108877,0,0.994055,0.500177,0.418917,3.617705,
+       -0.029634,0,0.999561,0.500177,0.469339,3.617705,
+       -0.030971,0.98007,0.196225,0.001375,0.46934,3.538977,
+       -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+       -0.045349,0.979938,0.194076,-0.497427,0.46934,3.460249,
+       0.68279,0,0.730615,1.804276,0.418917,3.360463,
+       0.68279,0,0.730615,1.567503,0.469339,3.581738,
+       0.68279,0,0.730615,1.567503,0.418917,3.581738,
+       0.68279,0,0.730615,1.567503,0.469339,3.581738,
+       0.68279,0,0.730615,1.804276,0.418917,3.360463,
+       0.68279,0,0.730615,1.804276,0.469339,3.360463,
+       -0.106238,0.992765,0.055963,-1.760402,0.46934,2.906435,
+       -0.13077,0.99131,-0.01428,-1.234429,0.56934,2.130951,
+       -0.259904,0.965446,-0.019075,-1.789572,0.46934,2.721769,
+       -0.019925,0.980232,0.196846,0.500177,0.469339,3.617705,
+       0.067043,0.991144,0.114624,1.567503,0.469339,3.581738,
+       0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+       -0.282885,0,0.959154,-0.497427,-0.391356,3.265652,
+       -0.399962,0,0.916532,-1.473662,-0.351986,2.907315,
+       -0.454111,0,0.890945,-1.473662,-0.391356,2.907315,
+       -0.399962,0,0.916532,-1.473662,-0.351986,2.907315,
+       -0.282885,0,0.959154,-0.497427,-0.391356,3.265652,
+       -0.219726,0,0.975562,-0.497427,-0.351986,3.265652,
+       -0.097163,0,0.995268,0.551147,-0.351987,2.822685,
+       -0.227815,0,0.973704,-0.407016,0.429972,2.665229,
+       -0.292742,0,0.956192,-0.407017,-0.351986,2.665229,
+       -0.227815,0,0.973704,-0.407016,0.429972,2.665229,
+       -0.097163,0,0.995268,0.551147,-0.351987,2.822685,
+       -0.031469,0,0.999505,0.551147,0.429969,2.822685,
+       0.770964,-0.531938,-0.350222,1.792582,-0.265825,2.439829,
+       0.828657,-0.513374,-0.223105,1.808137,-0.334296,2.576748,
+       0.580091,-0.694621,-0.425438,1.761786,-0.304479,2.441557,
+       0.015086,-0.999854,-0.007974,-1.760402,0.418917,2.906435,
+       0.013852,-0.999834,-0.0118,-1.789572,0.418917,2.721769,
+       0.01031,-0.999871,-0.012311,-1.343835,0.429973,2.308269,
+       -0.259904,0.965446,-0.019075,-1.789572,0.46934,2.721769,
+       -0.13077,0.99131,-0.01428,-1.234429,0.56934,2.130951,
+       -0.224548,0.97391,-0.032814,-1.71917,0.452349,1.9758,
+       0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+       0.326686,0.943881,-0.048628,1.72906,0.455932,2.443393,
+       0.240571,0.970213,-0.028486,1.63484,0.469339,1.718695,
+       -0.093562,0.988956,0.114946,-1.473662,0.46934,3.101913,
+       -0.040582,0.999145,0.007945,-0.433276,0.66934,2.462309,
+       -0.13077,0.99131,-0.01428,-1.234429,0.56934,2.130951,
+       -0.019925,0.980232,0.196846,0.500177,0.469339,3.617705,
+       -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+       -0.030971,0.98007,0.196225,0.001375,0.46934,3.538977,
+       0.006145,-0.999897,-0.012996,-1.473662,0.418917,3.101913,
+       0.015086,-0.999854,-0.007974,-1.760402,0.418917,2.906435,
+       0.01031,-0.999871,-0.012311,-1.343835,0.429973,2.308269,
+       0,1,0,-1.473662,-0.351986,2.907315,
+       0,1,0,-0.407017,-0.351986,2.665229,
+       0,1,0,-1.343835,-0.351986,2.308269,
+       0,1,0,-0.407017,-0.351986,2.665229,
+       0,1,0,-1.473662,-0.351986,2.907315,
+       0,1,0,-0.497427,-0.351986,3.265652,
+       -0.045349,0.979938,0.194076,-0.497427,0.46934,3.460249,
+       -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+       -0.040582,0.999145,0.007945,-0.433276,0.66934,2.462309,
+       -0.844783,-0.265761,0.464449,0.477253,-0.098489,0.857111,
+       -0.855881,-0.307094,0.416127,0.592896,-0.292953,0.956179,
+       -0.824319,-0.208014,0.526525,0.538904,-0.105527,0.964835,
+       0,1,0,-0.497427,-0.351986,3.265652,
+       0,1,0,0.551147,-0.351987,2.822685,
+       0,1,0,-0.407017,-0.351986,2.665229,
+       0,1,0,0.551147,-0.351987,2.822685,
+       0,1,0,-0.497427,-0.351986,3.265652,
+       0,1,0,0.500177,-0.351986,3.423108,
+       0.000845,1,-0.00005,1.772155,-0.391357,2.822721,
+       0.000845,1,-0.00005,1.769671,-0.391357,2.781136,
+       0.000845,1,-0.00005,1.744615,-0.391346,2.580312,
+       0.982391,-0.009206,-0.186608,1.762309,0.261046,1.711543,
+       0.992962,0.019572,-0.116804,1.85653,0.069181,2.436241,
+       0.986156,-0.079836,-0.145337,1.852141,-0.030933,2.436487,
+       0.067043,0.991144,0.114624,1.567503,0.469339,3.581738,
+       0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+       0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+       0.69976,0,0.714378,1.792693,-0.391357,3.166558,
+       0.69976,0,0.714378,1.567503,-0.351987,3.38714,
+       0.69976,0,0.714378,1.567503,-0.391357,3.38714,
+       0.69976,0,0.714378,1.567503,-0.351987,3.38714,
+       0.69976,0,0.714378,1.792693,-0.391357,3.166558,
+       0.69976,0,0.714378,1.792693,-0.351987,3.166558,
+       -0.019925,0.980232,0.196846,0.500177,0.469339,3.617705,
+       0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+       -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+       0.997715,0,0.067557,-1.753229,0.429973,2.185036,
+       0.996516,0,0.083404,-1.789572,-0.351986,2.721769,
+       0.997715,0,0.067557,-1.753229,-0.351986,2.185036,
+       0.996516,0,0.083404,-1.789572,-0.351986,2.721769,
+       0.997715,0,0.067557,-1.753229,0.429973,2.185036,
+       0.996177,0,0.087363,-1.789572,0.418917,2.721769,
+       -0.093562,0.988956,0.114946,-1.473662,0.46934,3.101913,
+       -0.13077,0.99131,-0.01428,-1.234429,0.56934,2.130951,
+       -0.106238,0.992765,0.055963,-1.760402,0.46934,2.906435,
+       0.401352,-0.790567,-0.462515,1.761786,-0.304479,2.441557,
+       0.285897,-0.82997,-0.478972,1.743775,-0.387364,2.572911,
+       0.262608,-0.840906,-0.473195,1.72906,-0.317688,2.443393,
+       0.285897,-0.82997,-0.478972,1.743775,-0.387364,2.572911,
+       0.401352,-0.790567,-0.462515,1.761786,-0.304479,2.441557,
+       0.372426,-0.888996,-0.266431,1.744615,-0.391346,2.580312,
+       0.770844,-0.562595,-0.298807,1.684053,0.167587,1.564546,
+       0.608966,-0.724087,-0.323817,1.657596,0.139442,1.56603,
+       0.605395,-0.778525,-0.165517,1.223677,0.139521,-0.021329,
+       -0.01688,-0.999694,-0.018062,1.772155,0.429175,2.822721,
+       -0.008676,-0.999834,-0.015995,1.567503,0.418917,3.581738,
+       -0.005944,-0.999865,-0.015303,1.768126,0.429883,2.787255,
+       -0.008676,-0.999834,-0.015995,1.567503,0.418917,3.581738,
+       -0.01688,-0.999694,-0.018062,1.772155,0.429175,2.822721,
+       -0.01688,-0.999694,-0.018062,1.804276,0.418917,3.360463,
+       0.067043,0.991144,0.114624,1.567503,0.469339,3.581738,
+       0.141065,0.989418,0.033953,1.804276,0.469339,3.360463,
+       0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+       0.570937,-0.702812,-0.424365,1.698362,0.080622,1.715131,
+       0.415876,-0.852051,-0.317895,1.6268,0.121747,1.567758,
+       0.608966,-0.724087,-0.323817,1.657596,0.139442,1.56603,
+       -0.282885,0,0.959154,-0.497427,0.418917,3.460249,
+       -0.420316,0,0.907378,-1.473662,0.46934,3.101913,
+       -0.493712,0,0.869625,-1.473662,0.418917,3.101913,
+       -0.420316,0,0.907378,-1.473662,0.46934,3.101913,
+       -0.282885,0,0.959154,-0.497427,0.418917,3.460249,
+       -0.219726,0,0.975562,-0.497427,0.46934,3.460249,
+       0.94538,0.296534,-0.135365,1.745289,0.365203,1.712498,
+       0.967362,0.236279,-0.091558,1.839509,0.262575,2.437196,
+       0.987616,0.121103,-0.099745,1.852221,0.169291,2.436483,
+       0.773313,0.602828,-0.196431,1.684274,0.418004,1.564533,
+       0.851194,0.50661,-0.137165,1.725039,0.408343,1.713635,
+       0.896813,0.381482,-0.22405,1.704523,0.381335,1.563397,
+       -0.292742,0,0.956192,-0.407017,-0.351986,2.665229,
+       -0.333644,0,0.942699,-1.343835,0.429973,2.308269,
+       -0.311023,0,0.950402,-1.343835,-0.351986,2.308269,
+       -0.333644,0,0.942699,-1.343835,0.429973,2.308269,
+       -0.292742,0,0.956192,-0.407017,-0.351986,2.665229,
+       -0.227815,0,0.973704,-0.407016,0.429972,2.665229,
+       0.844008,0.528559,-0.090974,1.792852,0.404136,2.439814,
+       0.889216,0.445544,-0.103856,1.808407,0.402661,2.576733,
+       0.919898,0.381988,-0.088733,1.819259,0.342676,2.438332,
+       0.371988,0.925853,-0.066493,1.667866,0.462248,1.716842,
+       0.694799,0.712655,-0.096836,1.698631,0.441443,1.715116,
+       0.627181,0.763304,-0.154955,1.657866,0.44614,1.566015,
+       -0.093083,0,0.995658,0.500177,-0.391356,3.423108,
+       -0.219726,0,0.975562,-0.497427,-0.351986,3.265652,
+       -0.282885,0,0.959154,-0.497427,-0.391356,3.265652,
+       -0.219726,0,0.975562,-0.497427,-0.351986,3.265652,
+       -0.093083,0,0.995658,0.500177,-0.391356,3.423108,
+       -0.029634,0,0.999561,0.500177,-0.351986,3.423108,
+       0.739369,0.666111,-0.098133,1.698631,0.441443,1.715116,
+       0.919898,0.381988,-0.088733,1.819259,0.342676,2.438332,
+       0.851194,0.50661,-0.137165,1.725039,0.408343,1.713635,
+       0.352435,-0.903593,-0.243536,1.6268,0.121747,1.567758,
+       0.259122,-0.963243,-0.070844,1.192294,0.121731,-0.021329,
+       0.605395,-0.778525,-0.165517,1.223677,0.139521,-0.021329,
+       0.981926,0.158648,-0.103211,1.855064,0.246944,2.574115,
+       0.988875,0.094445,-0.114917,1.895316,0.150435,2.815811,
+       0.991975,0.067695,-0.106788,1.867776,0.144331,2.573402,
+       0.988875,0.094445,-0.114917,1.895316,0.150435,2.815811,
+       0.981926,0.158648,-0.103211,1.855064,0.246944,2.574115,
+       0.974976,0.189186,-0.116748,1.882604,0.254219,2.816524,
+       0.371988,0.925853,-0.066493,1.667866,0.462248,1.716842,
+       0.39596,0.91224,-0.105037,1.627101,0.463824,1.567741,
+       0.180985,0.982354,-0.047179,1.594075,0.469851,1.569594,
+       0.275598,-0.853624,-0.442009,1.667565,0.059804,1.716859,
+       0.117527,-0.982232,-0.146317,1.594074,0.1157,1.569594,
+       0.352435,-0.903593,-0.243536,1.6268,0.121747,1.567758,
+       0.964083,-0.187609,-0.188009,1.839353,-0.124227,2.437205,
+       0.969456,-0.193643,-0.150523,1.854908,-0.178538,2.574124,
+       0.915392,-0.31686,-0.248308,1.819039,-0.204345,2.438344,
+       0.262608,-0.840906,-0.473195,1.72906,-0.317688,2.443393,
+       0.335823,-0.832009,-0.441569,1.667565,0.059804,1.716859,
+       0.459522,-0.764252,-0.452503,1.761786,-0.304479,2.441557,
+       0.056017,0,0.99843,1.80488,-0.376661,2.820885,
+       0.056017,0,0.99843,1.772155,-0.351987,2.822721,
+       0.056017,0,0.99843,1.772155,-0.391357,2.822721,
+       0.056017,0,0.99843,1.772155,-0.351987,2.822721,
+       0.056017,0,0.99843,1.80488,-0.376661,2.820885,
+       0.056017,0,0.99843,1.772155,0.429175,2.822721,
+       0.056017,0,0.99843,1.772155,0.429175,2.822721,
+       0.056017,0,0.99843,1.80488,-0.376661,2.820885,
+       0.056017,0,0.99843,1.772155,0.469339,2.822721,
+       0.056017,0,0.99843,1.772155,0.469339,2.822721,
+       0.056017,0,0.99843,1.80488,-0.376661,2.820885,
+       0.056017,0,0.99843,1.805181,0.45469,2.820868,
+       0.056017,0,0.99843,1.805181,0.45469,2.820868,
+       0.056017,0,0.99843,1.80488,-0.376661,2.820885,
+       0.056017,0,0.99843,1.835677,-0.333656,2.819157,
+       0.056017,0,0.99843,1.805181,0.45469,2.820868,
+       0.056017,0,0.99843,1.835677,-0.333656,2.819157,
+       0.056017,0,0.99843,1.835947,0.411713,2.819142,
+       0.056017,0,0.99843,1.835947,0.411713,2.819142,
+       0.056017,0,0.99843,1.835677,-0.333656,2.819157,
+       0.056017,0,0.99843,1.862133,-0.265255,2.817672,
+       0.056017,0,0.99843,1.835947,0.411713,2.819142,
+       0.056017,0,0.99843,1.862133,-0.265255,2.817672,
+       0.056017,0,0.99843,1.862354,0.343336,2.81766,
+       0.056017,0,0.99843,1.862354,0.343336,2.81766,
+       0.056017,0,0.99843,1.862133,-0.265255,2.817672,
+       0.056017,0,0.99843,1.882448,-0.17612,2.816533,
+       0.056017,0,0.99843,1.862354,0.343336,2.81766,
+       0.056017,0,0.99843,1.882448,-0.17612,2.816533,
+       0.056017,0,0.99843,1.882604,0.254219,2.816524,
+       0.056017,0,0.99843,1.882604,0.254219,2.816524,
+       0.056017,0,0.99843,1.882448,-0.17612,2.816533,
+       0.056017,0,0.99843,1.895235,-0.072325,2.815815,
+       0.056017,0,0.99843,1.882604,0.254219,2.816524,
+       0.056017,0,0.99843,1.895235,-0.072325,2.815815,
+       0.056017,0,0.99843,1.895316,0.150435,2.815811,
+       0.056017,0,0.99843,1.895316,0.150435,2.815811,
+       0.056017,0,0.99843,1.895235,-0.072325,2.815815,
+       0.056017,0,0.99843,1.899624,0.039057,2.815569,
+       0.986156,-0.079836,-0.145337,1.852141,-0.030933,2.436487,
+       0.986813,-0.09744,-0.129251,1.867696,-0.075915,2.573407,
+       0.964083,-0.187609,-0.188009,1.839353,-0.124227,2.437205,
+       0.892304,-0.335983,-0.30151,1.745133,0.156883,1.712507,
+       0.964083,-0.187609,-0.188009,1.839353,-0.124227,2.437205,
+       0.915392,-0.31686,-0.248308,1.819039,-0.204345,2.438344,
+       0.851194,0.50661,-0.137165,1.725039,0.408343,1.713635,
+       0.94538,0.296534,-0.135365,1.745289,0.365203,1.712498,
+       0.896813,0.381482,-0.22405,1.704523,0.381335,1.563397,
+       0.782483,-0.506128,-0.362704,1.724818,0.113734,1.713647,
+       0.770964,-0.531938,-0.350222,1.792582,-0.265825,2.439829,
+       0.570937,-0.702812,-0.424365,1.698362,0.080622,1.715131,
+       0.335823,-0.832009,-0.441569,1.667565,0.059804,1.716859,
+       0.415876,-0.852051,-0.317895,1.6268,0.121747,1.567758,
+       0.570937,-0.702812,-0.424365,1.698362,0.080622,1.715131,
+       0.664025,-0.635453,-0.394044,1.792582,-0.265825,2.439829,
+       0.335823,-0.832009,-0.441569,1.667565,0.059804,1.716859,
+       0.570937,-0.702812,-0.424365,1.698362,0.080622,1.715131,
+       0.971942,0.152801,-0.17883,1.758001,0.314963,1.711785,
+       0.987616,0.121103,-0.099745,1.852221,0.169291,2.436483,
+       0.992962,0.019572,-0.116804,1.85653,0.069181,2.436241,
+       0.938723,-0.205797,-0.276489,1.717155,0.246972,1.562689,
+       0.882004,-0.370857,-0.290748,1.704367,0.204263,1.563406,
+       0.904449,-0.347599,-0.24728,1.27116,0.204368,-0.021329,
+       0.180985,0.982354,-0.047179,1.594075,0.469851,1.569594,
+       0.39596,0.91224,-0.105037,1.627101,0.463824,1.567741,
+       0.288332,0.954261,-0.079066,1.192338,0.463307,-0.021329,
+       0.711557,0.698766,-0.073569,1.762087,0.442766,2.44154,
+       0.844008,0.528559,-0.090974,1.792852,0.404136,2.439814,
+       0.739369,0.666111,-0.098133,1.698631,0.441443,1.715116,
+       0.506757,-0.743743,-0.43594,1.667565,0.059804,1.716859,
+       0.770964,-0.531938,-0.350222,1.792582,-0.265825,2.439829,
+       0.505027,-0.739497,-0.445076,1.761786,-0.304479,2.441557,
+       0.952938,0.154945,-0.260578,1.284174,0.338115,-0.021329,
+       0.964263,-0.000657,-0.264945,1.721544,0.292802,1.562442,
+       0.964597,-0.000855,-0.263728,1.288529,0.292549,-0.021329,
+       0.981926,0.158648,-0.103211,1.855064,0.246944,2.574115,
+       0.991975,0.067695,-0.106788,1.867776,0.144331,2.573402,
+       0.987616,0.121103,-0.099745,1.852221,0.169291,2.436483,
+       0.627181,0.763304,-0.154955,1.657866,0.44614,1.566015,
+       0.825346,0.546533,-0.14179,1.725039,0.408343,1.713635,
+       0.773313,0.602828,-0.196431,1.684274,0.418004,1.564533,
+       -0.998221,0,0.059628,1.772155,0.429175,2.822721,
+       -0.998221,0,0.059628,1.769671,-0.351987,2.781136,
+       -0.998221,0,0.059628,1.772155,-0.351987,2.822721,
+       -0.998221,0,0.059628,1.769671,-0.351987,2.781136,
+       -0.998221,0,0.059628,1.772155,0.429175,2.822721,
+       -0.998221,0,0.059628,1.769671,0.429968,2.781136,
+       0,-1,0,-1.473662,-0.391356,2.907315,
+       -0.204863,-0.9786,-0.019334,-1.789572,-0.391356,2.721769,
+       -0.243848,-0.96921,-0.034203,-1.719171,-0.391356,1.9758,
+       0,-1,0,-1.473662,-0.391356,2.907315,
+       -0.243848,-0.96921,-0.034203,-1.719171,-0.391356,1.9758,
+       -0.232489,-0.970402,-0.065331,-1.593323,-0.391356,1.438224,
+       -0.001426,-0.999999,0.000039,-0.497427,-0.391356,3.265652,
+       -0.00444,-0.99999,0.000116,-0.583012,-0.391356,-0.021329,
+       -0.004277,-0.999991,0.000118,-0.578202,-0.391399,-0.021329,
+       0,-1,0,0.500177,-0.391356,3.423108,
+       0,-1,0,-0.445302,-0.391356,-0.021329,
+       0,-1,0,-0.396035,-0.391356,0.119998,
+       0,-1,0,0.500177,-0.391356,3.423108,
+       0,-1,0,-0.339188,-0.391356,0.268089,
+       0,-1,0,-0.277207,-0.391356,0.414107,
+       0,-1,0,0.500177,-0.391356,3.423108,
+       0,-1,0,-0.277207,-0.391356,0.414107,
+       0,-1,0,-0.210168,-0.391356,0.557872,
+       0,-1,0,0.500177,-0.391356,3.423108,
+       0,-1,0,-0.210168,-0.391356,0.557872,
+       0,-1,0,-0.138153,-0.391356,0.69921,
+       0,-1,0,0.500177,-0.391356,3.423108,
+       0,-1,0,-0.138153,-0.391356,0.69921,
+       0,-1,0,-0.061249,-0.391356,0.837949,
+       0,-1,0,0.500177,-0.391356,3.423108,
+       0,-1,0,-0.061249,-0.391356,0.837949,
+       0,-1,0,0.020451,-0.391356,0.973919,
+       0,-1,0,0.500177,-0.391356,3.423108,
+       0,-1,0,0.020451,-0.391356,0.973919,
+       0,-1,0,0.106845,-0.391356,1.106955,
+       0,-1,0,0.500177,-0.391356,3.423108,
+       0,-1,0,0.106845,-0.391356,1.106955,
+       0,-1,0,0.19783,-0.391356,1.236895,
+       0,-1,0,0.500177,-0.391356,3.423108,
+       0,-1,0,0.19783,-0.391356,1.236895,
+       0,-1,0,0.293295,-0.391356,1.363581,
+       0,-1,0,0.500177,-0.391356,3.423108,
+       0,-1,0,0.293295,-0.391356,1.363581,
+       0,-1,0,0.393122,-0.391356,1.486857,
+       0,-1,0,0.500177,-0.391356,3.423108,
+       0,-1,0,0.393122,-0.391356,1.486857,
+       0,-1,0,0.497191,-0.391356,1.606575,
+       0,-1,0,0.500177,-0.391356,3.423108,
+       0,-1,0,0.497191,-0.391356,1.606575,
+       0,-1,0,0.605375,-0.391356,1.722588,
+       0,-1,0,0.500177,-0.391356,3.423108,
+       0,-1,0,0.605375,-0.391356,1.722588,
+       0,-1,0,1.567503,-0.391357,3.38714,
+       0,-1,0,1.567503,-0.391357,3.38714,
+       0,-1,0,0.605375,-0.391356,1.722588,
+       0,-1,0,0.717541,-0.391356,1.834754,
+       0,-1,0,1.567503,-0.391357,3.38714,
+       0,-1,0,0.717541,-0.391356,1.834754,
+       0,-1,0,0.833554,-0.391356,1.942938,
+       0,-1,0,1.567503,-0.391357,3.38714,
+       0,-1,0,0.833554,-0.391356,1.942938,
+       0,-1,0,0.953272,-0.391356,2.047007,
+       0,-1,0,1.567503,-0.391357,3.38714,
+       0,-1,0,0.953272,-0.391356,2.047007,
+       0,-1,0,1.076548,-0.391356,2.146834,
+       0,-1,0,1.567503,-0.391357,3.38714,
+       0,-1,0,1.076548,-0.391356,2.146834,
+       0,-1,0,1.203234,-0.391356,2.242299,
+       0,-1,0,1.567503,-0.391357,3.38714,
+       0,-1,0,1.203234,-0.391356,2.242299,
+       0,-1,0,1.333174,-0.391356,2.333284,
+       0,-1,0,1.567503,-0.391357,3.38714,
+       0,-1,0,1.333174,-0.391356,2.333284,
+       0,-1,0,1.46621,-0.391356,2.419678,
+       0,-1,0,1.567503,-0.391357,3.38714,
+       0,-1,0,1.46621,-0.391356,2.419678,
+       0,-1,0,1.60218,-0.391356,2.501378,
+       0,-1,0,1.567503,-0.391357,3.38714,
+       0,-1,0,1.60218,-0.391356,2.501378,
+       0.000552,-1,-0.000055,1.792693,-0.391357,3.166558,
+       0.000552,-1,-0.000055,1.792693,-0.391357,3.166558,
+       0,-1,0,1.60218,-0.391356,2.501378,
+       0.001527,-0.999999,-0.000135,1.740919,-0.391356,2.578282,
+       0.000552,-1,-0.000055,1.792693,-0.391357,3.166558,
+       0.001527,-0.999999,-0.000135,1.740919,-0.391356,2.578282,
+       0.20767,-0.977918,-0.023446,1.744615,-0.391346,2.580312,
+       0.000552,-1,-0.000055,1.792693,-0.391357,3.166558,
+       0.20767,-0.977918,-0.023446,1.744615,-0.391346,2.580312,
+       0.207733,-0.9779,-0.023645,1.772155,-0.391357,2.822721,
+       0.613857,0.771354,-0.167905,1.223803,0.445458,-0.021329,
+       0.773313,0.602828,-0.196431,1.684274,0.418004,1.564533,
+       0.80696,0.547786,-0.220785,1.250799,0.417372,-0.021329,
+       0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+       0,0.997162,-0.07528,0.377018,0.469993,-0.021329,
+       0.009051,0.997085,-0.075758,0.303932,0.469993,-0.021329,
+       0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+       0.008038,0.997118,-0.075439,0.391707,0.469993,-0.021329,
+       0,0.997162,-0.07528,0.377018,0.469993,-0.021329,
+       0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+       0.006337,0.997132,-0.075415,0.394344,0.469951,-0.021329,
+       0.008038,0.997118,-0.075439,0.391707,0.469993,-0.021329,
+       0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+       -0.001701,0.997163,-0.075255,0.406812,0.469993,-0.021329,
+       0.006337,0.997132,-0.075415,0.394344,0.469951,-0.021329,
+       0.770844,-0.562595,-0.298807,1.684053,0.167587,1.564546,
+       0.605395,-0.778525,-0.165517,1.223677,0.139521,-0.021329,
+       0.807151,-0.547554,-0.220661,1.250463,0.167512,-0.021329,
+       0.39596,0.91224,-0.105037,1.627101,0.463824,1.567741,
+       0.505346,0.851806,-0.138025,1.219931,0.447894,-0.021329,
+       0.288332,0.954261,-0.079066,1.192338,0.463307,-0.021329,
+       0.39596,0.91224,-0.105037,1.627101,0.463824,1.567741,
+       0.613857,0.771354,-0.167905,1.223803,0.445458,-0.021329,
+       0.505346,0.851806,-0.138025,1.219931,0.447894,-0.021329,
+       -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+       -0.001297,0.996986,-0.077575,0.029236,0.470013,-0.021329,
+       -0.001223,0.996985,-0.077584,0.012875,0.469971,-0.021329,
+       0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+       -0.000418,0.999281,-0.037914,1.086592,0.46967,-0.021329,
+       -0.000735,0.999282,-0.03789,1.085566,0.469669,-0.021329,
+       0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+       0.083141,0.995658,-0.041878,1.157159,0.469626,-0.021329,
+       -0.000418,0.999281,-0.037914,1.086592,0.46967,-0.021329,
+       0.180985,0.982354,-0.047179,1.594075,0.469851,1.569594,
+       0.184736,0.981481,-0.050663,1.188641,0.464041,-0.021329,
+       0.168416,0.984624,-0.046387,1.159104,0.4693,-0.021329,
+       0.180985,0.982354,-0.047179,1.594075,0.469851,1.569594,
+       0.288332,0.954261,-0.079066,1.192338,0.463307,-0.021329,
+       0.184736,0.981481,-0.050663,1.188641,0.464041,-0.021329,
+       0.904661,0.346941,-0.247428,1.271248,0.380955,-0.021329,
+       0.946878,0.205961,-0.246986,1.717236,0.338631,1.562684,
+       0.952938,0.154945,-0.260578,1.284174,0.338115,-0.021329,
+       -0.346553,0.933315,-0.093941,-1.593323,0.46934,1.438224,
+       -0.512223,0.844277,-0.157556,-1.168401,0.454762,-0.021329,
+       -0.388183,0.91542,-0.106401,-1.625486,0.454676,1.429408,
+       -0.436436,0.891263,-0.123179,-1.593323,0.46934,1.438224,
+       -0.505009,0.849029,-0.155293,-1.166885,0.456027,-0.021329,
+       -0.654864,0.727594,-0.204353,-1.168401,0.454762,-0.021329,
+       -0.346553,0.933315,-0.093941,-1.593323,0.46934,1.438224,
+       -0.271068,0.958765,-0.085395,-1.133667,0.469297,-0.021329,
+       -0.505009,0.849029,-0.155293,-1.166885,0.456027,-0.021329,
+       0.952752,-0.156236,-0.260487,1.284116,0.24723,-0.021329,
+       0.938723,-0.205797,-0.276489,1.717155,0.246972,1.562689,
+       0.904449,-0.347599,-0.24728,1.27116,0.204368,-0.021329,
+       0.904449,-0.347599,-0.24728,1.27116,0.204368,-0.021329,
+       0.882004,-0.370857,-0.290748,1.704367,0.204263,1.563406,
+       0.807151,-0.547554,-0.220661,1.250463,0.167512,-0.021329,
+       0.964263,-0.000657,-0.264945,1.721544,0.292802,1.562442,
+       0.952752,-0.156236,-0.260487,1.284116,0.24723,-0.021329,
+       0.964597,-0.000855,-0.263728,1.288529,0.292549,-0.021329,
+       0.80696,0.547786,-0.220785,1.250799,0.417372,-0.021329,
+       0.896813,0.381482,-0.22405,1.704523,0.381335,1.563397,
+       0.904661,0.346941,-0.247428,1.271248,0.380955,-0.021329,
+       -0.788436,-0.590729,-0.171486,0.365496,-0.027628,0.463635,
+       -0.671967,-0.6777,-0.298635,0.364466,0.008825,0.342799,
+       -0.672528,-0.677458,-0.297921,0.550466,-0.257589,0.528855,
+       -0.084698,0.953745,0.28844,0.364466,0.008825,0.342799,
+       -0.084698,0.953745,0.28844,0.365496,-0.027628,0.463635,
+       -0.084698,0.953745,0.28844,0.364821,-0.003737,0.384439,
+       -0.874399,-0.46654,-0.133289,0.364821,-0.003737,0.384439,
+       -0.788436,-0.590729,-0.171486,0.365496,-0.027628,0.463635,
+       -0.874399,-0.46654,-0.133289,0.365067,-0.017684,0.431644,
+       -0.788436,-0.590729,-0.171486,0.365496,-0.027628,0.463635,
+       -0.672528,-0.677458,-0.297921,0.550466,-0.257589,0.528855,
+       -0.775202,-0.621236,-0.11458,0.365783,-0.037793,0.497331,
+       -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+       -0.765433,-0.076157,0.638994,0.546029,-0.105148,0.973456,
+       -0.78972,-0.133178,0.598838,0.682929,-0.311817,1.108903,
+       -0.765433,-0.076157,0.638994,0.546029,-0.105148,0.973456,
+       -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+       -0.765796,-0.063678,0.639923,0.555173,-0.104583,0.984454,
+       -0.765433,-0.076157,0.638994,0.546029,-0.105148,0.973456,
+       -0.765796,-0.063678,0.639923,0.555173,-0.104583,0.984454,
+       -0.759557,-0.12673,0.637976,0.549572,-0.104847,0.977734,
+       -0.438608,-0.806129,0.397215,0.549572,-0.104847,0.977734,
+       -0.438608,-0.806129,0.397215,0.555173,-0.104583,0.984454,
+       -0.438608,-0.806129,0.397215,0.551399,-0.104719,0.980011,
+       -0.397992,0.380616,0.834706,0.886816,-0.070199,1.246183,
+       -0.486507,0.572163,0.660258,0.758981,-0.077961,1.179865,
+       -0.499279,0.460824,0.733731,0.758404,-0.078952,1.180247,
+       -0.084938,-0.957458,0.275791,0.758981,-0.077961,1.179865,
+       -0.084938,-0.957458,0.275791,0.886816,-0.070199,1.246183,
+       -0.084938,-0.957458,0.275791,0.762622,-0.077692,1.181918,
+       -0.47928,0.243811,0.843117,0.865187,-0.178304,1.269373,
+       -0.525635,0.427293,0.735615,0.755695,-0.079224,1.178282,
+       -0.490795,0.246987,0.835534,0.753511,-0.079688,1.177433,
+       -0.502999,0.214001,0.837374,0.755695,-0.079224,1.178282,
+       -0.47928,0.243811,0.843117,0.865187,-0.178304,1.269373,
+       -0.479672,0.399525,0.781213,0.758404,-0.078952,1.180247,
+       0.411104,-0.808356,-0.421371,0.755695,-0.079224,1.178282,
+       0.410782,-0.836134,-0.363507,0.393122,-0.391356,1.486857,
+       0.341562,-0.894102,-0.289684,0.753511,-0.079688,1.177433,
+       0.410782,-0.836134,-0.363507,0.393122,-0.391356,1.486857,
+       0.411104,-0.808356,-0.421371,0.755695,-0.079224,1.178282,
+       0.441471,-0.737274,-0.511401,0.758404,-0.078952,1.180247,
+       0.410782,-0.836134,-0.363507,0.393122,-0.391356,1.486857,
+       0.406635,-0.856746,-0.31723,0.690311,-0.091124,1.126951,
+       0.341562,-0.894102,-0.289684,0.753511,-0.079688,1.177433,
+       0.430585,-0.755425,-0.493893,0.762622,-0.077692,1.181918,
+       0.40862,-0.836512,-0.365072,0.497191,-0.391356,1.606575,
+       0.441471,-0.737274,-0.511401,0.758404,-0.078952,1.180247,
+       0.40862,-0.836512,-0.365072,0.497191,-0.391356,1.606575,
+       0.430585,-0.755425,-0.493893,0.762622,-0.077692,1.181918,
+       0.416058,-0.835881,-0.358048,0.868735,-0.0443,1.228096,
+       -0.232489,-0.970402,-0.065331,-1.593323,-0.391356,1.438224,
+       -0.388183,-0.915419,-0.106401,-1.625487,-0.376692,1.429408,
+       -0.209954,-0.97514,-0.070863,-1.168402,-0.376779,-0.021329,
+       -0.232489,-0.970402,-0.065331,-1.593323,-0.391356,1.438224,
+       -0.209954,-0.97514,-0.070863,-1.168402,-0.376779,-0.021329,
+       -0.217197,-0.973383,-0.073152,-1.166885,-0.376822,-0.021329,
+       -0.232489,-0.970402,-0.065331,-1.593323,-0.391356,1.438224,
+       -0.217197,-0.973383,-0.073152,-1.166885,-0.376822,-0.021329,
+       -0.135336,-0.989883,-0.042621,-1.133667,-0.391356,-0.021329,
+       0.000001,-1,0.000294,0.435364,0.1157,0.114425,
+       -0.000315,-1,0.00014,0.428578,0.1157,0.099871,
+       -0.000086,-1,0.00026,0.50133,0.11566,-0.021329,
+       0.000033,-1,0.000347,0.574271,0.115699,0.068952,
+       0.000064,-1,0.000388,0.512455,0.115661,-0.021329,
+       0.000029,-1,0.000412,0.517242,0.115661,-0.021329,
+       0.000033,-1,0.000347,0.574271,0.115699,0.068952,
+       -0.000033,-1,0.000445,0.525941,0.115661,-0.021329,
+       -0.000014,-1,0.000438,0.53006,0.115661,-0.021329,
+       -0.000001,-1,0,1.303752,0.115699,0.560049,
+       0,-1,0,1.226889,0.115699,0.4205,
+       0,-1,0,1.158086,0.115699,-0.021329,
+       0,-1,0,1.346671,0.115699,0.703372,
+       -0.000001,-1,0,1.303752,0.115699,0.560049,
+       0,-1,0,1.158086,0.115699,-0.021329,
+       0.076269,-0.993022,-0.089943,1.594074,0.1157,1.569594,
+       0,-1,0,1.347924,0.115699,0.731818,
+       0,-1,0,1.346671,0.115699,0.703372,
+       0.076269,-0.993022,-0.089943,1.594074,0.1157,1.569594,
+       0,-1,0,1.350509,0.1157,1.368801,
+       0,-1,0,1.347924,0.115699,0.731818,
+       0.076269,-0.993022,-0.089943,1.594074,0.1157,1.569594,
+       0,-1,0,1.449875,0.1157,1.455178,
+       0,-1,0,1.350509,0.1157,1.368801,
+       0.076269,-0.993022,-0.089943,1.594074,0.1157,1.569594,
+       0,-1,0,1.552194,0.1157,1.538035,
+       0,-1,0,1.449875,0.1157,1.455178,
+       0,-1,0,1.071328,0.1157,1.08962,
+       0,-1,0,1.050087,0.1157,1.065186,
+       0,-1,0,1.347924,0.115699,0.731818,
+       0,-1,0,1.16112,0.1157,1.185911,
+       0,-1,0,1.071328,0.1157,1.08962,
+       0,-1,0,1.347924,0.115699,0.731818,
+       0,-1,0,1.254219,0.1157,1.279009,
+       0,-1,0,1.16112,0.1157,1.185911,
+       0,-1,0,1.347924,0.115699,0.731818,
+       0,-1,0,1.350509,0.1157,1.368801,
+       0,-1,0,1.254219,0.1157,1.279009,
+       0,-1,0,1.347924,0.115699,0.731818,
+       -0.611735,0.119506,0.781984,0.84883,-0.216217,1.272781,
+       -0.630309,0.099649,0.769923,0.643743,-0.099518,1.08978,
+       -0.704322,0.009285,0.70982,0.640686,-0.100103,1.087313,
+       -0.630309,0.099649,0.769923,0.643743,-0.099518,1.08978,
+       -0.611735,0.119506,0.781984,0.84883,-0.216217,1.272781,
+       -0.628473,0.104347,0.7708,0.645497,-0.099189,1.091151,
+       -0.628473,0.104347,0.7708,0.645497,-0.099189,1.091151,
+       -0.611735,0.119506,0.781984,0.84883,-0.216217,1.272781,
+       -0.631922,0.095714,0.769099,0.665608,-0.095567,1.107224,
+       -0.631922,0.095714,0.769099,0.665608,-0.095567,1.107224,
+       -0.611735,0.119506,0.781984,0.84883,-0.216217,1.272781,
+       -0.631713,0.096164,0.769215,0.673898,-0.094074,1.113849,
+       -0.631713,0.096164,0.769215,0.673898,-0.094074,1.113849,
+       -0.611735,0.119506,0.781984,0.84883,-0.216217,1.272781,
+       -0.631638,0.096354,0.769253,0.690311,-0.091124,1.126951,
+       -0.611735,0.119506,0.781984,0.84883,-0.216217,1.272781,
+       -0.490795,0.246987,0.835534,0.753511,-0.079688,1.177433,
+       -0.631638,0.096354,0.769253,0.690311,-0.091124,1.126951,
+       -0.949809,0.173614,-0.260235,-1.700945,0.254166,1.408725,
+       -0.942413,0.153754,-0.297013,-1.250661,0.25354,-0.021329,
+       -0.959247,0.088043,-0.268503,-1.71336,0.150374,1.405322,
+       -0.942413,0.153754,-0.297013,-1.250661,0.25354,-0.021329,
+       -0.946173,0.125627,-0.298284,-1.258407,0.189508,-0.021329,
+       -0.959247,0.088043,-0.268503,-1.71336,0.150374,1.405322,
+       -0.946173,0.125627,-0.298284,-1.258407,0.189508,-0.021329,
+       -0.951352,0.071862,-0.299608,-1.264066,0.150374,-0.021329,
+       -0.959247,0.088043,-0.268503,-1.71336,0.150374,1.405322,
+       0.000033,-1,0.000347,0.574271,0.115699,0.068952,
+       -0.000014,-1,0.000438,0.53006,0.115661,-0.021329,
+       0.000022,-1,0.000133,1.105769,0.115699,-0.021329,
+       -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+       0.006788,0.997025,-0.076781,0.302467,0.470013,-0.021329,
+       -0.001297,0.996986,-0.077575,0.029236,0.470013,-0.021329,
+       0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+       0.058512,0.995903,-0.06894,0.726874,0.469993,-0.021329,
+       -0.001701,0.997163,-0.075255,0.406812,0.469993,-0.021329,
+       0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+       -0.000735,0.999282,-0.03789,1.085566,0.469669,-0.021329,
+       0.078004,0.995473,-0.05431,0.72963,0.469668,-0.021329,
+       -0.001426,-0.999999,0.000039,-0.497427,-0.391356,3.265652,
+       0,-1,0,-1.129276,-0.391356,-0.021329,
+       -0.00444,-0.99999,0.000116,-0.583012,-0.391356,-0.021329,
+       -0.040582,0.999145,0.007945,-0.433276,0.66934,2.462309,
+       0,0.996796,-0.07999,-0.403368,0.470034,-0.021329,
+       -0.063557,0.995303,-0.073018,-0.701067,0.470034,-0.021329,
+       0.514271,-0.836016,-0.19132,-0.396035,-0.391356,0.119998,
+       0.51815,-0.835999,-0.18063,-0.445302,-0.391356,-0.021329,
+       0.515247,-0.836022,-0.18865,-0.007741,-0.120157,-0.021329,
+       -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+       -0.001223,0.996985,-0.077584,0.012875,0.469971,-0.021329,
+       0.009468,0.996863,-0.078582,-0.272122,0.470013,-0.021329,
+       -0.040582,0.999145,0.007945,-0.433276,0.66934,2.462309,
+       0.007064,0.996807,-0.079537,-0.273618,0.470034,-0.021329,
+       0,0.996796,-0.07999,-0.403368,0.470034,-0.021329,
+       -0.001426,-0.999999,0.000039,-0.497427,-0.391356,3.265652,
+       -0.004277,-0.999991,0.000118,-0.578202,-0.391399,-0.021329,
+       0.000109,-1,0.000002,-0.447809,-0.391356,-0.021329,
+       -0.13077,0.99131,-0.01428,-1.234429,0.56934,2.130951,
+       -0.047726,0.997181,-0.057905,-0.704134,0.46974,-0.021329,
+       -0.114051,0.992145,-0.051394,-1.131355,0.469698,-0.021329,
+       0.000033,-1,0.000347,0.574271,0.115699,0.068952,
+       0.000029,-1,0.000412,0.517242,0.115661,-0.021329,
+       -0.000033,-1,0.000445,0.525941,0.115661,-0.021329,
+       0.117527,-0.982232,-0.146317,1.594074,0.1157,1.569594,
+       0.089681,-0.995669,-0.024519,1.159105,0.115699,-0.021329,
+       0.259122,-0.963243,-0.070844,1.192294,0.121731,-0.021329,
+       -0.486507,0.572163,0.660258,0.758981,-0.077961,1.179865,
+       -0.504226,0.552291,0.663876,0.755695,-0.079224,1.178282,
+       -0.479798,0.509116,0.714559,0.758404,-0.078952,1.180247,
+       -0.479798,0.509116,0.714559,0.758404,-0.078952,1.180247,
+       -0.486507,0.572163,0.660258,0.758981,-0.077961,1.179865,
+       -0.504226,0.552291,0.663876,0.755695,-0.079224,1.178282,
+       -0.452228,0.452832,0.768397,0.762622,-0.077692,1.181918,
+       -0.486507,0.572163,0.660258,0.758981,-0.077961,1.179865,
+       -0.499279,0.460824,0.733731,0.758404,-0.078952,1.180247,
+       -0.452228,0.452832,0.768397,0.762622,-0.077692,1.181918,
+       -0.486507,0.572163,0.660258,0.758981,-0.077961,1.179865,
+       -0.499279,0.460824,0.733731,0.758404,-0.078952,1.180247,
+       0,0,-1,-1.264066,0.150374,-0.021329,
+       0,0,-1,-1.264066,-0.07239,-0.021329,
+       0,0,-1,-1.268666,0.038992,-0.021329,
+       0,0,-1,-1.264066,-0.07239,-0.021329,
+       0,0,-1,-1.264066,0.150374,-0.021329,
+       0,0,-1,-1.25058,-0.176182,-0.021329,
+       0,0,-1,-1.25058,-0.176182,-0.021329,
+       0,0,-1,-1.264066,0.150374,-0.021329,
+       0,0,-1,-1.258407,0.189508,-0.021329,
+       0,0,-1,-1.25058,-0.176182,-0.021329,
+       0,0,-1,-1.258407,0.189508,-0.021329,
+       0,0,-1,-1.250661,0.25354,-0.021329,
+       0,0,-1,-1.25058,-0.176182,-0.021329,
+       0,0,-1,-1.250661,0.25354,-0.021329,
+       0,0,-1,-1.229126,0.343294,-0.021329,
+       0,0,-1,-1.25058,-0.176182,-0.021329,
+       0,0,-1,-1.229126,0.343294,-0.021329,
+       0,0,-1,-1.229126,-0.26531,-0.021329,
+       0,0,-1,-1.229126,-0.26531,-0.021329,
+       0,0,-1,-1.229126,0.343294,-0.021329,
+       0,0,-1,-1.201167,-0.333701,-0.021329,
+       0,0,-1,-1.201167,-0.333701,-0.021329,
+       0,0,-1,-1.229126,0.343294,-0.021329,
+       0,0,-1,-1.201167,0.411684,-0.021329,
+       0,0,-1,-1.201167,-0.333701,-0.021329,
+       0,0,-1,-1.201167,0.411684,-0.021329,
+       0,0,-1,-1.168402,-0.376779,-0.021329,
+       0,0,-1,-1.168402,-0.376779,-0.021329,
+       0,0,-1,-1.201167,0.411684,-0.021329,
+       0,0,-1,-1.168401,0.454762,-0.021329,
+       0,0,-1,-1.168402,-0.376779,-0.021329,
+       0,0,-1,-1.168401,0.454762,-0.021329,
+       0,0,-1,-1.166885,-0.376822,-0.021329,
+       0,0,-1,-1.166885,-0.376822,-0.021329,
+       0,0,-1,-1.168401,0.454762,-0.021329,
+       0,0,-1,-1.166885,0.456027,-0.021329,
+       0,0,-1,-1.166885,-0.376822,-0.021329,
+       0,0,-1,-1.166885,0.456027,-0.021329,
+       0,0,-1,-1.133667,-0.391356,-0.021329,
+       0,0,-1,-1.133667,-0.391356,-0.021329,
+       0,0,-1,-1.166885,0.456027,-0.021329,
+       0,0,-1,-1.133667,0.469297,-0.021329,
+       0,0,-1,-1.133667,-0.391356,-0.021329,
+       0,0,-1,-1.133667,0.469297,-0.021329,
+       0,0,-1,-1.131951,-0.391356,-0.021329,
+       0,0,-1,-1.131951,-0.391356,-0.021329,
+       0,0,-1,-1.133667,0.469297,-0.021329,
+       0,0,-1,-1.131355,0.469698,-0.021329,
+       0,0,-1,-1.131951,-0.391356,-0.021329,
+       0,0,-1,-1.131355,0.469698,-0.021329,
+       0,0,-1,-1.129276,-0.391356,-0.021329,
+       0,0,-1,-1.129276,-0.391356,-0.021329,
+       0,0,-1,-1.131355,0.469698,-0.021329,
+       0,0,-1,-0.704134,0.46974,-0.021329,
+       0,0,-1,-1.129276,-0.391356,-0.021329,
+       0,0,-1,-0.704134,0.46974,-0.021329,
+       0,0,-1,-0.583012,-0.391356,-0.021329,
+       0,0,-1,-0.583012,-0.391356,-0.021329,
+       0,0,-1,-0.704134,0.46974,-0.021329,
+       0,0,-1,-0.701067,0.470034,-0.021329,
+       0,0,-1,-0.583012,-0.391356,-0.021329,
+       0,0,-1,-0.701067,0.470034,-0.021329,
+       0,0,-1,-0.403368,0.470034,-0.021329,
+       0,0,-1,-0.583012,-0.391356,-0.021329,
+       0,0,-1,-0.403368,0.470034,-0.021329,
+       0,0,-1,-0.578202,-0.391399,-0.021329,
+       0,0,-1,-0.578202,-0.391399,-0.021329,
+       0,0,-1,-0.403368,0.470034,-0.021329,
+       0,0,-1,-0.447809,-0.391356,-0.021329,
+       0,0,-1,-0.447809,-0.391356,-0.021329,
+       0,0,-1,-0.403368,0.470034,-0.021329,
+       0,0,-1,-0.445302,-0.391356,-0.021329,
+       0,0,-1,-0.445302,-0.391356,-0.021329,
+       0,0,-1,-0.403368,0.470034,-0.021329,
+       0.000003,0,-1,-0.007741,-0.120157,-0.021329,
+       0.000003,0,-1,-0.007741,-0.120157,-0.021329,
+       0,0,-1,-0.403368,0.470034,-0.021329,
+       0,0,-1,-0.273618,0.470034,-0.021329,
+       0.000003,0,-1,-0.007741,-0.120157,-0.021329,
+       0,0,-1,-0.273618,0.470034,-0.021329,
+       0,0,-1,-0.272122,0.470013,-0.021329,
+       0.000003,0,-1,-0.007741,-0.120157,-0.021329,
+       0,0,-1,-0.272122,0.470013,-0.021329,
+       0.000006,-0.000006,-1,0.012875,0.469971,-0.021329,
+       0.000003,0,-1,-0.007741,-0.120157,-0.021329,
+       0.000006,-0.000006,-1,0.012875,0.469971,-0.021329,
+       -0.000005,-0.000015,-1,0.377134,0.1157,-0.021323,
+       -0.000005,-0.000015,-1,0.377134,0.1157,-0.021323,
+       0.000006,-0.000006,-1,0.012875,0.469971,-0.021329,
+       0,-0.000018,-1,0.029236,0.470013,-0.021329,
+       -0.000005,-0.000015,-1,0.377134,0.1157,-0.021323,
+       0,-0.000018,-1,0.029236,0.470013,-0.021329,
+       0,-0.000018,-1,0.302467,0.470013,-0.021329,
+       -0.000005,-0.000015,-1,0.377134,0.1157,-0.021323,
+       0,-0.000018,-1,0.302467,0.470013,-0.021329,
+       0,-0.000018,-1,0.303932,0.469993,-0.021329,
+       -0.000005,-0.000015,-1,0.377134,0.1157,-0.021323,
+       0,-0.000018,-1,0.303932,0.469993,-0.021329,
+       0,-0.000018,-1,0.377018,0.469993,-0.021329,
+       -0.000005,-0.000015,-1,0.377134,0.1157,-0.021323,
+       0,-0.000018,-1,0.377018,0.469993,-0.021329,
+       -0.000017,-0.000011,-1,0.391707,0.469993,-0.021329,
+       -0.000005,-0.000015,-1,0.377134,0.1157,-0.021323,
+       -0.000017,-0.000011,-1,0.391707,0.469993,-0.021329,
+       -0.00001,-0.000003,-1,0.50133,0.11566,-0.021329,
+       -0.00001,-0.000003,-1,0.50133,0.11566,-0.021329,
+       -0.000017,-0.000011,-1,0.391707,0.469993,-0.021329,
+       0,0,-1,0.394344,0.469951,-0.021329,
+       -0.00001,-0.000003,-1,0.50133,0.11566,-0.021329,
+       0,0,-1,0.394344,0.469951,-0.021329,
+       0,0,-1,0.406812,0.469993,-0.021329,
+       -0.00001,-0.000003,-1,0.50133,0.11566,-0.021329,
+       0,0,-1,0.406812,0.469993,-0.021329,
+       0,0,-1,0.726874,0.469993,-0.021329,
+       -0.00001,-0.000003,-1,0.50133,0.11566,-0.021329,
+       0,0,-1,0.726874,0.469993,-0.021329,
+       0,0,-1,0.503029,0.11566,-0.021329,
+       0,0,-1,0.503029,0.11566,-0.021329,
+       0,0,-1,0.726874,0.469993,-0.021329,
+       0,0,-1,0.512455,0.115661,-0.021329,
+       0,0,-1,0.512455,0.115661,-0.021329,
+       0,0,-1,0.726874,0.469993,-0.021329,
+       0,0,-1,0.517242,0.115661,-0.021329,
+       0,0,-1,0.517242,0.115661,-0.021329,
+       0,0,-1,0.726874,0.469993,-0.021329,
+       0,0,-1,0.525941,0.115661,-0.021329,
+       0,0,-1,0.525941,0.115661,-0.021329,
+       0,0,-1,0.726874,0.469993,-0.021329,
+       0,0,-1,0.53006,0.115661,-0.021329,
+       0,0,-1,0.53006,0.115661,-0.021329,
+       0,0,-1,0.726874,0.469993,-0.021329,
+       0,0,-1,1.105769,0.115699,-0.021329,
+       0,0,-1,1.105769,0.115699,-0.021329,
+       0,0,-1,0.726874,0.469993,-0.021329,
+       0,0,-1,0.72963,0.469668,-0.021329,
+       0,0,-1,1.105769,0.115699,-0.021329,
+       0,0,-1,0.72963,0.469668,-0.021329,
+       0,0,-1,1.085566,0.469669,-0.021329,
+       0,0,-1,1.105769,0.115699,-0.021329,
+       0,0,-1,1.085566,0.469669,-0.021329,
+       0,0,-1,1.086592,0.46967,-0.021329,
+       0,0,-1,1.105769,0.115699,-0.021329,
+       0,0,-1,1.086592,0.46967,-0.021329,
+       0,0,-1,1.157159,0.469626,-0.021329,
+       0,0,-1,1.105769,0.115699,-0.021329,
+       0,0,-1,1.157159,0.469626,-0.021329,
+       0,0,-1,1.11936,0.115699,-0.021329,
+       0,0,-1,1.11936,0.115699,-0.021329,
+       0,0,-1,1.157159,0.469626,-0.021329,
+       0,0,-1,1.138614,0.115699,-0.021329,
+       0,0,-1,1.138614,0.115699,-0.021329,
+       0,0,-1,1.157159,0.469626,-0.021329,
+       0,0,-1,1.150338,0.115699,-0.021329,
+       0,0,-1,1.150338,0.115699,-0.021329,
+       0,0,-1,1.157159,0.469626,-0.021329,
+       0,0,-1,1.155792,0.115699,-0.021329,
+       0,0,-1,1.155792,0.115699,-0.021329,
+       0,0,-1,1.157159,0.469626,-0.021329,
+       0,0,-1,1.158086,0.115699,-0.021329,
+       0,0,-1,1.158086,0.115699,-0.021329,
+       0,0,-1,1.157159,0.469626,-0.021329,
+       0,0,-1,1.159104,0.4693,-0.021329,
+       0,0,-1,1.158086,0.115699,-0.021329,
+       0,0,-1,1.159104,0.4693,-0.021329,
+       0,0,-1,1.159105,0.115699,-0.021329,
+       0,0,-1,1.159105,0.115699,-0.021329,
+       0,0,-1,1.159104,0.4693,-0.021329,
+       0,0,-1,1.188641,0.464041,-0.021329,
+       0,0,-1,1.159105,0.115699,-0.021329,
+       0,0,-1,1.188641,0.464041,-0.021329,
+       0,0,-1,1.192294,0.121731,-0.021329,
+       0,0,-1,1.192294,0.121731,-0.021329,
+       0,0,-1,1.188641,0.464041,-0.021329,
+       0,0,-1,1.192338,0.463307,-0.021329,
+       0,0,-1,1.192294,0.121731,-0.021329,
+       0,0,-1,1.192338,0.463307,-0.021329,
+       0,0,-1,1.223677,0.139521,-0.021329,
+       0,0,-1,1.223677,0.139521,-0.021329,
+       0,0,-1,1.192338,0.463307,-0.021329,
+       0,0,-1,1.219931,0.447894,-0.021329,
+       0,0,-1,1.223677,0.139521,-0.021329,
+       0,0,-1,1.219931,0.447894,-0.021329,
+       0,0,-1,1.223803,0.445458,-0.021329,
+       0,0,-1,1.223677,0.139521,-0.021329,
+       0,0,-1,1.223803,0.445458,-0.021329,
+       0,0,-1,1.250463,0.167512,-0.021329,
+       0,0,-1,1.250463,0.167512,-0.021329,
+       0,0,-1,1.223803,0.445458,-0.021329,
+       0,0,-1,1.250799,0.417372,-0.021329,
+       0,0,-1,1.250463,0.167512,-0.021329,
+       0,0,-1,1.250799,0.417372,-0.021329,
+       0,0,-1,1.27116,0.204368,-0.021329,
+       0,0,-1,1.27116,0.204368,-0.021329,
+       0,0,-1,1.250799,0.417372,-0.021329,
+       0,0,-1,1.271248,0.380955,-0.021329,
+       0,0,-1,1.27116,0.204368,-0.021329,
+       0,0,-1,1.271248,0.380955,-0.021329,
+       0,0,-1,1.284116,0.24723,-0.021329,
+       0,0,-1,1.284116,0.24723,-0.021329,
+       0,0,-1,1.271248,0.380955,-0.021329,
+       0,0,-1,1.284174,0.338115,-0.021329,
+       0,0,-1,1.284116,0.24723,-0.021329,
+       0,0,-1,1.284174,0.338115,-0.021329,
+       0,0,-1,1.288529,0.292549,-0.021329,
+       -0.000315,-1,0.00014,0.428578,0.1157,0.099871,
+       -0.000321,-1,0.000136,0.377134,0.1157,-0.021323,
+       -0.000086,-1,0.00026,0.50133,0.11566,-0.021329,
+       0.000128,-1,0.000374,0.453243,0.1157,0.101903,
+       -0.000086,-1,0.00026,0.50133,0.11566,-0.021329,
+       0.000057,-1,0.000347,0.503029,0.11566,-0.021329,
+       -0.000086,-1,0.00026,0.50133,0.11566,-0.021329,
+       0.000128,-1,0.000374,0.453243,0.1157,0.101903,
+       0.000001,-1,0.000294,0.435364,0.1157,0.114425,
+       0,-1,0,0.711069,0.115699,0.073242,
+       0.000022,-1,0.000133,1.105769,0.115699,-0.021329,
+       0,-1,0,1.11936,0.115699,-0.021329,
+       0.000022,-1,0.000133,1.105769,0.115699,-0.021329,
+       0,-1,0,0.711069,0.115699,0.073242,
+       0.000033,-1,0.000347,0.574271,0.115699,0.068952,
+       0,-1,0,0.854313,0.115699,0.11448,
+       0,-1,0,1.11936,0.115699,-0.021329,
+       0,-1,0,1.138614,0.115699,-0.021329,
+       0,-1,0,1.11936,0.115699,-0.021329,
+       0,-1,0,0.854313,0.115699,0.11448,
+       0,-1,0,0.711069,0.115699,0.073242,
+       0,-1,0,0.994243,0.115699,0.189857,
+       0,-1,0,1.138614,0.115699,-0.021329,
+       0,-1,0,1.150338,0.115699,-0.021329,
+       0,-1,0,1.138614,0.115699,-0.021329,
+       0,-1,0,0.994243,0.115699,0.189857,
+       0,-1,0,0.854313,0.115699,0.11448,
+       0.076269,-0.993022,-0.089943,1.594074,0.1157,1.569594,
+       0,-1,0,1.158086,0.115699,-0.021329,
+       0.089681,-0.995669,-0.024519,1.159105,0.115699,-0.021329,
+       0,-1,0,1.158086,0.115699,-0.021329,
+       0.076269,-0.993022,-0.089943,1.594074,0.1157,1.569594,
+       0,-1,0,1.346671,0.115699,0.703372,
+       0.509935,-0.836018,-0.202584,0.377134,0.1157,-0.021323,
+       0.514271,-0.836016,-0.19132,-0.396035,-0.391356,0.119998,
+       0.515247,-0.836022,-0.18865,-0.007741,-0.120157,-0.021329,
+       0.514271,-0.836016,-0.19132,-0.396035,-0.391356,0.119998,
+       0.509935,-0.836018,-0.202584,0.377134,0.1157,-0.021323,
+       0.507543,-0.836018,-0.208504,-0.339188,-0.391356,0.268089,
+       0,-1,0,1.226889,0.115699,0.4205,
+       0,-1,0,1.155792,0.115699,-0.021329,
+       0,-1,0,1.158086,0.115699,-0.021329,
+       0,-1,0,1.155792,0.115699,-0.021329,
+       0,-1,0,1.226889,0.115699,0.4205,
+       0,-1,0,1.121322,0.115699,0.294234,
+       0,-1,0,0.500177,-0.391356,3.423108,
+       0.000109,-1,0.000002,-0.447809,-0.391356,-0.021329,
+       0,-1,0,-0.445302,-0.391356,-0.021329,
+       0.000109,-1,0.000002,-0.447809,-0.391356,-0.021329,
+       0,-1,0,0.500177,-0.391356,3.423108,
+       -0.001426,-0.999999,0.000039,-0.497427,-0.391356,3.265652,
+       0,-1,0,1.121322,0.115699,0.294234,
+       0,-1,0,1.150338,0.115699,-0.021329,
+       0,-1,0,1.155792,0.115699,-0.021329,
+       0,-1,0,1.150338,0.115699,-0.021329,
+       0,-1,0,1.121322,0.115699,0.294234,
+       0,-1,0,0.994243,0.115699,0.189857,
+       0,-1,0,-1.473662,-0.391356,2.907315,
+       -0.135336,-0.989883,-0.042621,-1.133667,-0.391356,-0.021329,
+       0,-1,0,-1.131951,-0.391356,-0.021329,
+       -0.135336,-0.989883,-0.042621,-1.133667,-0.391356,-0.021329,
+       0,-1,0,-1.473662,-0.391356,2.907315,
+       -0.232489,-0.970402,-0.065331,-1.593323,-0.391356,1.438224,
+       -0.001426,-0.999999,0.000039,-0.497427,-0.391356,3.265652,
+       0,-1,0,-1.131951,-0.391356,-0.021329,
+       0,-1,0,-1.129276,-0.391356,-0.021329,
+       0,-1,0,-1.131951,-0.391356,-0.021329,
+       -0.001426,-0.999999,0.000039,-0.497427,-0.391356,3.265652,
+       0,-1,0,-1.473662,-0.391356,2.907315,
+       0.000033,-1,0.000347,0.574271,0.115699,0.068952,
+       0.000057,-1,0.000347,0.503029,0.11566,-0.021329,
+       0.000064,-1,0.000388,0.512455,0.115661,-0.021329,
+       0.000057,-1,0.000347,0.503029,0.11566,-0.021329,
+       0.000033,-1,0.000347,0.574271,0.115699,0.068952,
+       0.000128,-1,0.000374,0.453243,0.1157,0.101903,
+       -0.949809,0.173614,-0.260235,-1.700945,0.254166,1.408725,
+       -0.918203,0.270695,-0.289184,-1.229126,0.343294,-0.021329,
+       -0.942413,0.153754,-0.297013,-1.250661,0.25354,-0.021329,
+       -0.918203,0.270695,-0.289184,-1.229126,0.343294,-0.021329,
+       -0.949809,0.173614,-0.260235,-1.700945,0.254166,1.408725,
+       -0.921725,0.294507,-0.252364,-1.681196,0.343294,1.414138,
+       0.500479,-0.836021,-0.224924,0.428578,0.1157,0.099871,
+       0.507543,-0.836018,-0.208504,-0.339188,-0.391356,0.268089,
+       0.509935,-0.836018,-0.202584,0.377134,0.1157,-0.021323,
+       0.507543,-0.836018,-0.208504,-0.339188,-0.391356,0.268089,
+       0.500479,-0.836021,-0.224924,0.428578,0.1157,0.099871,
+       0.501259,-0.836022,-0.223175,-0.277207,-0.391356,0.414107,
+       -0.778493,-0.586351,-0.223921,-1.625487,-0.376692,1.429408,
+       -0.817175,-0.515734,-0.257377,-1.201167,-0.333701,-0.021329,
+       -0.772035,-0.587205,-0.243211,-1.168402,-0.376779,-0.021329,
+       -0.817175,-0.515734,-0.257377,-1.201167,-0.333701,-0.021329,
+       -0.778493,-0.586351,-0.223921,-1.625487,-0.376692,1.429408,
+       -0.846632,-0.478533,-0.232853,-1.655459,-0.3337,1.421192,
+       -0.846632,-0.478533,-0.232853,-1.655459,-0.3337,1.421192,
+       -0.904453,-0.317539,-0.284838,-1.229126,-0.26531,-0.021329,
+       -0.817175,-0.515734,-0.257377,-1.201167,-0.333701,-0.021329,
+       -0.904453,-0.317539,-0.284838,-1.229126,-0.26531,-0.021329,
+       -0.846632,-0.478533,-0.232853,-1.655459,-0.3337,1.421192,
+       -0.921583,-0.294507,-0.252885,-1.681196,-0.26531,1.414138,
+       -0.921583,-0.294507,-0.252885,-1.681196,-0.26531,1.414138,
+       -0.93637,-0.1904,-0.29489,-1.25058,-0.176182,-0.021329,
+       -0.904453,-0.317539,-0.284838,-1.229126,-0.26531,-0.021329,
+       -0.93637,-0.1904,-0.29489,-1.25058,-0.176182,-0.021329,
+       -0.921583,-0.294507,-0.252885,-1.681196,-0.26531,1.414138,
+       -0.949732,-0.173729,-0.260436,-1.700945,-0.176182,1.408725,
+       -0.949732,-0.173729,-0.260436,-1.700945,-0.176182,1.408725,
+       -0.949487,-0.095192,-0.299021,-1.264066,-0.07239,-0.021329,
+       -0.93637,-0.1904,-0.29489,-1.25058,-0.176182,-0.021329,
+       -0.949487,-0.095192,-0.299021,-1.264066,-0.07239,-0.021329,
+       -0.949732,-0.173729,-0.260436,-1.700945,-0.176182,1.408725,
+       -0.961223,-0.081307,-0.263515,-1.71336,-0.07239,1.405322,
+       -0.343264,-0.686966,-0.640506,0.714801,-0.258939,0.363541,
+       -0.41126,-0.697198,-0.58718,0.435364,0.1157,0.114425,
+       -0.307986,-0.679834,-0.66556,0.453243,0.1157,0.101903,
+       -0.41126,-0.697198,-0.58718,0.435364,0.1157,0.114425,
+       -0.343264,-0.686966,-0.640506,0.714801,-0.258939,0.363541,
+       -0.41126,-0.697198,-0.58718,0.406831,0.08212,0.174281,
+       -0.41126,-0.697198,-0.58718,0.406831,0.08212,0.174281,
+       -0.343264,-0.686966,-0.640506,0.714801,-0.258939,0.363541,
+       -0.507972,-0.702526,-0.498419,0.391924,0.064577,0.205552,
+       -0.507972,-0.702526,-0.498419,0.391924,0.064577,0.205552,
+       -0.343264,-0.686966,-0.640506,0.714801,-0.258939,0.363541,
+       -0.507497,-0.702632,-0.498754,0.615433,-0.255562,0.429129,
+       0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+       0.168416,0.984624,-0.046387,1.159104,0.4693,-0.021329,
+       0.083141,0.995658,-0.041878,1.157159,0.469626,-0.021329,
+       0.168416,0.984624,-0.046387,1.159104,0.4693,-0.021329,
+       0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+       0.180985,0.982354,-0.047179,1.594075,0.469851,1.569594,
+       0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+       0.078004,0.995473,-0.05431,0.72963,0.469668,-0.021329,
+       0.058512,0.995903,-0.06894,0.726874,0.469993,-0.021329,
+       0.078004,0.995473,-0.05431,0.72963,0.469668,-0.021329,
+       0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+       0.132481,0.990896,-0.02395,1.285101,0.569339,2.603406,
+       -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+       0.009051,0.997085,-0.075758,0.303932,0.469993,-0.021329,
+       0.006788,0.997025,-0.076781,0.302467,0.470013,-0.021329,
+       0.009051,0.997085,-0.075758,0.303932,0.469993,-0.021329,
+       -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+       0.032071,0.999429,-0.01065,0.44507,0.66934,2.619225,
+       -0.964427,0,-0.264349,-1.717594,0.038992,1.404161,
+       -0.951352,0.071862,-0.299608,-1.264066,0.150374,-0.021329,
+       -0.953736,-0.013129,-0.300359,-1.268666,0.038992,-0.021329,
+       -0.951352,0.071862,-0.299608,-1.264066,0.150374,-0.021329,
+       -0.964427,0,-0.264349,-1.717594,0.038992,1.404161,
+       -0.959247,0.088043,-0.268503,-1.71336,0.150374,1.405322,
+       -0.961223,-0.081307,-0.263515,-1.71336,-0.07239,1.405322,
+       -0.953736,-0.013129,-0.300359,-1.268666,0.038992,-0.021329,
+       -0.949487,-0.095192,-0.299021,-1.264066,-0.07239,-0.021329,
+       -0.953736,-0.013129,-0.300359,-1.268666,0.038992,-0.021329,
+       -0.961223,-0.081307,-0.263515,-1.71336,-0.07239,1.405322,
+       -0.964427,0,-0.264349,-1.717594,0.038992,1.404161,
+       -0.040582,0.999145,0.007945,-0.433276,0.66934,2.462309,
+       0.009468,0.996863,-0.078582,-0.272122,0.470013,-0.021329,
+       0.007064,0.996807,-0.079537,-0.273618,0.470034,-0.021329,
+       0.009468,0.996863,-0.078582,-0.272122,0.470013,-0.021329,
+       -0.040582,0.999145,0.007945,-0.433276,0.66934,2.462309,
+       -0.009408,0.999431,0.032405,0.005897,0.66934,2.540767,
+       -0.13077,0.99131,-0.01428,-1.234429,0.56934,2.130951,
+       -0.063557,0.995303,-0.073018,-0.701067,0.470034,-0.021329,
+       -0.047726,0.997181,-0.057905,-0.704134,0.46974,-0.021329,
+       -0.063557,0.995303,-0.073018,-0.701067,0.470034,-0.021329,
+       -0.13077,0.99131,-0.01428,-1.234429,0.56934,2.130951,
+       -0.040582,0.999145,0.007945,-0.433276,0.66934,2.462309,
+       -0.302581,0.949833,-0.079128,-1.593323,0.46934,1.438224,
+       -0.114051,0.992145,-0.051394,-1.131355,0.469698,-0.021329,
+       -0.271068,0.958765,-0.085395,-1.133667,0.469297,-0.021329,
+       -0.114051,0.992145,-0.051394,-1.131355,0.469698,-0.021329,
+       -0.302581,0.949833,-0.079128,-1.593323,0.46934,1.438224,
+       -0.13077,0.99131,-0.01428,-1.234429,0.56934,2.130951,
+       -0.921725,0.294507,-0.252364,-1.681196,0.343294,1.414138,
+       -0.855994,0.441137,-0.269577,-1.201167,0.411684,-0.021329,
+       -0.918203,0.270695,-0.289184,-1.229126,0.343294,-0.021329,
+       -0.855994,0.441137,-0.269577,-1.201167,0.411684,-0.021329,
+       -0.921725,0.294507,-0.252364,-1.681196,0.343294,1.414138,
+       -0.846877,0.478832,-0.23134,-1.655458,0.411684,1.421192,
+       -0.846877,0.478832,-0.23134,-1.655458,0.411684,1.421192,
+       -0.728809,0.645974,-0.227057,-1.168401,0.454762,-0.021329,
+       -0.855994,0.441137,-0.269577,-1.201167,0.411684,-0.021329,
+       -0.728809,0.645974,-0.227057,-1.168401,0.454762,-0.021329,
+       -0.846877,0.478832,-0.23134,-1.655458,0.411684,1.421192,
+       -0.78424,0.585803,-0.204457,-1.625486,0.454676,1.429408,
+       0,-1,0,0.500177,-0.391356,3.423108,
+       0,-1,0,-0.396035,-0.391356,0.119998,
+       0,-1,0,-0.339188,-0.391356,0.268089,
+       0.117527,-0.982232,-0.146317,1.594074,0.1157,1.569594,
+       0.259122,-0.963243,-0.070844,1.192294,0.121731,-0.021329,
+       0.30254,-0.939741,-0.159236,1.6268,0.121747,1.567758
+};
+static const struct gllist handsy_model_palm_frame = {
+ GL_N3F_V3F, GL_TRIANGLES, 2082, handsy_model_palm_data, 0
+};
+const struct gllist *handsy_model_palm = &handsy_model_palm_frame;
+
+static const float handsy_model_thumb_distal_data[] = {
+       0.931218,0.038006,0.362475,0.29625,0.056256,0.664416,
+       0.873922,-0.003805,0.486051,0.255586,0.077023,0.737599,
+       0.873735,-0.002446,0.486396,0.259079,0.042565,0.731119,
+       0.873922,-0.003805,0.486051,0.255586,0.077023,0.737599,
+       0.931218,0.038006,0.362475,0.29625,0.056256,0.664416,
+       0.927775,0.05186,0.369519,0.290282,0.101111,0.675403,
+       0.931218,0.038006,0.362475,0.29625,0.056256,0.664416,
+       0.873703,-0.000675,0.48646,0.263372,0.000216,0.723233,
+       0.919547,0.019558,0.392492,0.301447,0,0.654848,
+       0.873703,-0.000675,0.48646,0.263372,0.000216,0.723233,
+       0.931218,0.038006,0.362475,0.29625,0.056256,0.664416,
+       0.873735,-0.002446,0.486396,0.259079,0.042565,0.731119,
+       0.371923,0.814436,0.445385,0.085971,0.305932,1.195089,
+       0.500468,0.831871,0.239838,0.145913,0.309078,1.106884,
+       0.312254,0.908542,0.277577,0.092482,0.341223,1.106884,
+       0.500468,0.831871,0.239838,0.145913,0.309078,1.106884,
+       0.371923,0.814436,0.445385,0.085971,0.305932,1.195089,
+       0.56058,0.750837,0.349275,0.145913,0.292777,1.143555,
+       0.56058,0.750837,0.349275,0.145913,0.292777,1.143555,
+       0.371923,0.814436,0.445385,0.085971,0.305932,1.195089,
+       0.539476,0.689911,0.482689,0.138564,0.274291,1.195089,
+       0.876662,-0.009947,0.481004,0.173158,0.314854,0.891031,
+       0.876902,-0.010028,0.480565,0.164839,0.309002,0.906089,
+       0.876422,-0.009866,0.481442,0.17165,0.297474,0.89342,
+       0.876902,-0.010028,0.480565,0.164839,0.309002,0.906089,
+       0.85821,-0.006695,0.513255,0.162433,0.32323,0.910776,
+       0.838263,-0.003347,0.545256,0.161481,0.30464,0.912126,
+       0.85821,-0.006695,0.513255,0.162433,0.32323,0.910776,
+       0.876902,-0.010028,0.480565,0.164839,0.309002,0.906089,
+       0.876662,-0.009947,0.481004,0.173158,0.314854,0.891031,
+       0.6758,0.511985,0.530251,0.182602,0.222325,1.198099,
+       0.52718,0.556291,0.642357,0.118556,0.223958,1.270833,
+       0.676335,0.41763,0.606759,0.155432,0.182861,1.270833,
+       0.52718,0.556291,0.642357,0.118556,0.223958,1.270833,
+       0.6758,0.511985,0.530251,0.182602,0.222325,1.198099,
+       0.62679,0.5624,0.539297,0.177609,0.230776,1.195089,
+       0.52718,0.556291,0.642357,0.118556,0.223958,1.270833,
+       0.62679,0.5624,0.539297,0.177609,0.230776,1.195089,
+       0.539476,0.689911,0.482689,0.138564,0.274291,1.195089,
+       0.793481,0.350519,0.497519,0.210798,0.152003,1.211665,
+       0.676335,0.41763,0.606759,0.155432,0.182861,1.270833,
+       0.780002,0.279437,0.559921,0.183727,0.129302,1.270833,
+       0.676335,0.41763,0.606759,0.155432,0.182861,1.270833,
+       0.793481,0.350519,0.497519,0.210798,0.152003,1.211665,
+       0.763605,0.403416,0.504145,0.195133,0.201117,1.19609,
+       0.676335,0.41763,0.606759,0.155432,0.182861,1.270833,
+       0.763605,0.403416,0.504145,0.195133,0.201117,1.19609,
+       0.6758,0.511985,0.530251,0.182602,0.222325,1.198099,
+       -0.952716,-0.303863,0,0.224838,0.10798,1.346935,
+       -0.971429,-0.23733,0,0.226074,0.104106,1.208813,
+       -0.985558,-0.169336,0,0.226074,0.104106,1.347445,
+       -0.971429,-0.23733,0,0.226074,0.104106,1.208813,
+       -0.952716,-0.303863,0,0.224838,0.10798,1.346935,
+       -0.952716,-0.303863,0,0.210798,0.152003,1.211665,
+       -0.952716,-0.303863,0,0.210798,0.152003,1.211665,
+       -0.952716,-0.303863,0,0.224838,0.10798,1.346935,
+       -0.912598,-0.408857,0,0.195133,0.201117,1.308356,
+       -0.952716,-0.303863,0,0.210798,0.152003,1.211665,
+       -0.912598,-0.408857,0,0.195133,0.201117,1.308356,
+       -0.912598,-0.408857,0,0.195133,0.201117,1.19609,
+       0.994901,0.100856,0,0.263372,0.000216,0.723233,
+       0.994901,0.100856,0,0.263394,0,1.36115,
+       0.994901,0.100856,0,0.263394,0,0.723195,
+       0.994901,0.100856,0,0.263394,0,1.36115,
+       0.994901,0.100856,0,0.263372,0.000216,0.723233,
+       0.994901,0.100856,0,0.252447,0.10798,1.346935,
+       0.994901,0.100856,0,0.252447,0.10798,1.346935,
+       0.994901,0.100856,0,0.263372,0.000216,0.723233,
+       0.994901,0.100856,0,0.259079,0.042565,0.731119,
+       0.994901,0.100856,0,0.252447,0.10798,1.346935,
+       0.994901,0.100856,0,0.259079,0.042565,0.731119,
+       0.994901,0.100856,0,0.255586,0.077023,0.737599,
+       0.994901,0.100856,0,0.252447,0.10798,1.346935,
+       0.994901,0.100856,0,0.255586,0.077023,0.737599,
+       0.985558,0.169336,0,0.251928,0.113103,0.744607,
+       0.994901,0.100856,0,0.252447,0.10798,1.346935,
+       0.985558,0.169336,0,0.251928,0.113103,0.744607,
+       0.971429,0.23733,0,0.251928,0.113103,1.344813,
+       0.919422,0.073474,0.386347,0.274037,0.157167,0.70531,
+       0.874814,-0.007622,0.484399,0.237898,0.157092,0.77053,
+       0.874447,-0.006469,0.485078,0.248003,0.12541,0.751819,
+       0.874814,-0.007622,0.484399,0.237898,0.157092,0.77053,
+       0.919422,0.073474,0.386347,0.274037,0.157167,0.70531,
+       0.910258,0.063882,0.409084,0.259167,0.19321,0.732687,
+       0.910258,0.063882,0.409084,0.259167,0.19321,0.732687,
+       0.875344,-0.008697,0.483422,0.219541,0.214647,0.804721,
+       0.874814,-0.007622,0.484399,0.237898,0.157092,0.77053,
+       0.875344,-0.008697,0.483422,0.219541,0.214647,0.804721,
+       0.910258,0.063882,0.409084,0.259167,0.19321,0.732687,
+       0.875651,-0.009145,0.482859,0.230667,0.24695,0.785155,
+       0.876066,-0.009661,0.482094,0.214135,0.2689,0.815591,
+       0.876422,-0.009866,0.481442,0.17165,0.297474,0.89342,
+       0.87595,-0.009537,0.482307,0.206427,0.238615,0.828993,
+       0.876422,-0.009866,0.481442,0.17165,0.297474,0.89342,
+       0.876066,-0.009661,0.482094,0.214135,0.2689,0.815591,
+       0.876662,-0.009947,0.481004,0.173158,0.314854,0.891031,
+       0.865819,0.160892,0.473783,0.228767,0.077538,1.217427,
+       0.780002,0.279437,0.559921,0.183727,0.129302,1.270833,
+       0.777747,0.144332,0.611782,0.201514,0.066932,1.270833,
+       0.780002,0.279437,0.559921,0.183727,0.129302,1.270833,
+       0.865819,0.160892,0.473783,0.228767,0.077538,1.217427,
+       0.844325,0.24079,0.478682,0.226074,0.104106,1.208813,
+       0.780002,0.279437,0.559921,0.183727,0.129302,1.270833,
+       0.844325,0.24079,0.478682,0.226074,0.104106,1.208813,
+       0.793481,0.350519,0.497519,0.210798,0.152003,1.211665,
+       0.865819,0.160892,0.473783,0.228767,0.077538,1.217427,
+       0.84071,0.076204,0.536096,0.207581,0,1.270833,
+       0.881366,0.079889,0.46563,0.236628,0,1.215852,
+       0.84071,0.076204,0.536096,0.207581,0,1.270833,
+       0.865819,0.160892,0.473783,0.228767,0.077538,1.217427,
+       0.777747,0.144332,0.611782,0.201514,0.066932,1.270833,
+       -0.994901,-0.100856,0,0.236628,0,1.36115,
+       -0.994901,-0.100856,0,0.228767,0.077538,1.217427,
+       -0.994901,-0.100856,0,0.236628,0,1.215852,
+       -0.994901,-0.100856,0,0.228767,0.077538,1.217427,
+       -0.994901,-0.100856,0,0.236628,0,1.36115,
+       -0.985558,-0.169336,0,0.226074,0.104106,1.347445,
+       -0.994901,-0.100856,0,0.228767,0.077538,1.217427,
+       -0.985558,-0.169336,0,0.226074,0.104106,1.347445,
+       -0.971429,-0.23733,0,0.226074,0.104106,1.208813,
+       0.873703,-0.000675,0.48646,0.263372,0.000216,0.723233,
+       0.873705,0.00202,0.486453,0.263394,0,0.723195,
+       0.919547,0.019558,0.392492,0.301447,0,0.654848,
+       0.931218,0.038006,0.362475,0.29625,0.056256,0.664416,
+       0.919547,0.019558,0.392492,0.301447,0,0.654848,
+       0.977781,0.093209,0.187769,0.429204,0,0,
+       0.062066,0.491963,0.868401,0.218313,0.218497,1.297663,
+       0.023594,0.566338,0.823835,0.19071,0.208602,1.305256,
+       0.061786,0.414288,0.908046,0.195133,0.201117,1.308356,
+       0.361607,0.924025,0.124172,0.093273,0.345512,1.073157,
+       0.512375,0.851663,0.110186,0.145913,0.322451,1.012229,
+       0.491078,0.866607,0.088512,0.106015,0.346454,1.012229,
+       0.512375,0.851663,0.110186,0.145913,0.322451,1.012229,
+       0.361607,0.924025,0.124172,0.093273,0.345512,1.073157,
+       0.500468,0.831871,0.239838,0.145913,0.309078,1.106884,
+       0.500468,0.831871,0.239838,0.145913,0.309078,1.106884,
+       0.361607,0.924025,0.124172,0.093273,0.345512,1.073157,
+       0.312254,0.908542,0.277577,0.092482,0.341223,1.106884,
+       0.896572,0.442898,0,0.218313,0.218497,0.807025,
+       0.860952,0.508686,0,0.173108,0.295007,1.238954,
+       0.938151,0.346226,0,0.218313,0.218497,1.297663,
+       0.860952,0.508686,0,0.173108,0.295007,1.238954,
+       0.896572,0.442898,0,0.218313,0.218497,0.807025,
+       0.860952,0.508686,0,0.206427,0.238615,0.828993,
+       0.860952,0.508686,0,0.173108,0.295007,1.238954,
+       0.860952,0.508686,0,0.206427,0.238615,0.828993,
+       0.860952,0.508686,0,0.17165,0.297474,0.89342,
+       0.860952,0.508686,0,0.173108,0.295007,1.238954,
+       0.860952,0.508686,0,0.17165,0.297474,0.89342,
+       0.860952,0.508686,0,0.164839,0.309002,1.220716,
+       0.860952,0.508686,0,0.164839,0.309002,1.220716,
+       0.860952,0.508686,0,0.17165,0.297474,0.89342,
+       0.860952,0.508686,0,0.164839,0.309002,0.906089,
+       0.99992,0.012221,0.00341,0.146283,0.284903,1.087672,
+       0.99993,0.01068,0.005115,0.145913,0.292777,1.143555,
+       0.999936,0.010052,0.005203,0.145913,0.284422,1.159696,
+       0.99993,0.01068,0.005115,0.145913,0.292777,1.143555,
+       0.99992,0.012221,0.00341,0.146283,0.284903,1.087672,
+       0.999961,0.008668,0.001509,0.145913,0.309078,1.106884,
+       0.952716,0.303863,0,0.248003,0.12541,0.751819,
+       0.971429,0.23733,0,0.251928,0.113103,1.344813,
+       0.985558,0.169336,0,0.251928,0.113103,0.744607,
+       0.971429,0.23733,0,0.251928,0.113103,1.344813,
+       0.952716,0.303863,0,0.248003,0.12541,0.751819,
+       0.938151,0.346226,0,0.218313,0.218497,1.297663,
+       0.938151,0.346226,0,0.218313,0.218497,1.297663,
+       0.952716,0.303863,0,0.248003,0.12541,0.751819,
+       0.952716,0.303863,0,0.237898,0.157092,0.77053,
+       0.938151,0.346226,0,0.218313,0.218497,1.297663,
+       0.952716,0.303863,0,0.237898,0.157092,0.77053,
+       0.952716,0.303863,0,0.219541,0.214647,0.804721,
+       0.938151,0.346226,0,0.218313,0.218497,1.297663,
+       0.952716,0.303863,0,0.219541,0.214647,0.804721,
+       0.896572,0.442898,0,0.218313,0.218497,0.807025,
+       0,0.130526,0.991445,0.236628,0,1.36115,
+       -0.012701,0.21502,0.976527,0.252447,0.10798,1.346935,
+       0.004021,0.220216,0.975443,0.226074,0.104106,1.347445,
+       -0.012701,0.21502,0.976527,0.252447,0.10798,1.346935,
+       0,0.130526,0.991445,0.236628,0,1.36115,
+       0,0.130526,0.991445,0.263394,0,1.36115,
+       0.927775,0.05186,0.369519,0.290282,0.101111,0.675403,
+       0.874222,-0.005676,0.485494,0.251928,0.113103,0.744607,
+       0.873922,-0.003805,0.486051,0.255586,0.077023,0.737599,
+       0.874222,-0.005676,0.485494,0.251928,0.113103,0.744607,
+       0.927775,0.05186,0.369519,0.290282,0.101111,0.675403,
+       0.919422,0.073474,0.386347,0.274037,0.157167,0.70531,
+       0.874222,-0.005676,0.485494,0.251928,0.113103,0.744607,
+       0.919422,0.073474,0.386347,0.274037,0.157167,0.70531,
+       0.874447,-0.006469,0.485078,0.248003,0.12541,0.751819,
+       0.026002,0.337305,0.941036,0.251928,0.113103,1.344813,
+       0.061786,0.414288,0.908046,0.195133,0.201117,1.308356,
+       0.025091,0.266414,0.963532,0.224838,0.10798,1.346935,
+       -0.912598,-0.408857,0,0.195133,0.201117,1.308356,
+       -0.860952,-0.508686,0,0.182602,0.222325,1.198099,
+       -0.912598,-0.408857,0,0.195133,0.201117,1.19609,
+       -0.860952,-0.508686,0,0.182602,0.222325,1.198099,
+       -0.912598,-0.408857,0,0.195133,0.201117,1.308356,
+       -0.862228,-0.506519,0.000588,0.19071,0.208602,1.305256,
+       -0.860952,-0.508686,0,0.182602,0.222325,1.198099,
+       -0.862228,-0.506519,0.000588,0.19071,0.208602,1.305256,
+       -0.825039,-0.55911,0.081898,0.177609,0.230776,1.195089,
+       0.023594,0.566338,0.823835,0.19071,0.208602,1.305256,
+       0,0.675426,0.737428,0.154063,0.295007,1.238954,
+       0,0.608761,0.793353,0.146283,0.284903,1.246708,
+       0,0.675426,0.737428,0.154063,0.295007,1.238954,
+       0.023594,0.566338,0.823835,0.19071,0.208602,1.305256,
+       0,0.675426,0.737428,0.173108,0.295007,1.238954,
+       0,0.675426,0.737428,0.173108,0.295007,1.238954,
+       0.023594,0.566338,0.823835,0.19071,0.208602,1.305256,
+       0.062066,0.491963,0.868401,0.218313,0.218497,1.297663,
+       -0.012701,0.21502,0.976527,0.252447,0.10798,1.346935,
+       0.026002,0.337305,0.941036,0.251928,0.113103,1.344813,
+       0.004021,0.220216,0.975443,0.226074,0.104106,1.347445,
+       0.866079,0.482943,0.129122,0.230667,0.24695,0.785155,
+       0.938648,0.308986,0.15319,0.259167,0.19321,0.732687,
+       0.902969,0.403992,0.146418,0.371702,0.214602,0,
+       0.026002,0.337305,0.941036,0.251928,0.113103,1.344813,
+       0.025091,0.266414,0.963532,0.224838,0.10798,1.346935,
+       0.004021,0.220216,0.975443,0.226074,0.104106,1.347445,
+       0.926797,0.118754,0.356292,0.274037,0.157167,0.70531,
+       0.927775,0.05186,0.369519,0.290282,0.101111,0.675403,
+       0.964645,0.195253,0.177021,0.414579,0.111086,0,
+       0.141093,0.950715,0.276106,0.08622,0.34242,1.106884,
+       0.361607,0.924025,0.124172,0.093273,0.345512,1.073157,
+       0.01826,0.970957,0.238555,0,0.35326,1.106884,
+       0.01826,0.970957,0.238555,0,0.35326,1.106884,
+       0.361607,0.924025,0.124172,0.093273,0.345512,1.073157,
+       0.288047,0.952171,0.101981,0.094656,0.35326,1.012229,
+       0.01826,0.970957,0.238555,0,0.35326,1.106884,
+       0.288047,0.952171,0.101981,0.094656,0.35326,1.012229,
+       -0.018655,0.995608,0.091745,0,0.365721,1.012229,
+       0.026002,0.337305,0.941036,0.251928,0.113103,1.344813,
+       0.062066,0.491963,0.868401,0.218313,0.218497,1.297663,
+       0.061786,0.414288,0.908046,0.195133,0.201117,1.308356,
+       0,0.675426,0.737428,0.173108,0.295007,1.238954,
+       0,0.793353,0.608761,0.164839,0.309002,1.220716,
+       0,0.675426,0.737428,0.154063,0.295007,1.238954,
+       0.774879,0.62326,0.105398,0.173158,0.314854,0.891031,
+       0.845942,0.520777,0.114772,0.214135,0.2689,0.815591,
+       0.768035,0.631773,0.104812,0.303493,0.303493,0,
+       0.491078,0.866607,0.088512,0.106015,0.346454,1.012229,
+       0.495531,0.865546,0.072654,0.214602,0.371702,0,
+       0.293356,0.953923,0.063035,0.111086,0.414579,0,
+       0.100502,0.687999,0.718719,0.051933,0.254321,1.270833,
+       -0.004579,0.695959,0.718067,0,0.258604,1.270833,
+       0.060772,0.500882,0.863379,0.039779,0.180901,1.328953,
+       0.129618,0.851245,0.508509,0.067773,0.309412,1.195089,
+       0.141093,0.950715,0.276106,0.08622,0.34242,1.106884,
+       -0.004744,0.86721,0.49792,0,0.316724,1.195089,
+       0.060772,0.500882,0.863379,0.039779,0.180901,1.328953,
+       -0.021105,0.462042,0.886607,0,0.182861,1.328953,
+       0.025206,0.28498,0.958202,0.032138,0.094157,1.365488,
+       0.998302,0.002696,0.058183,0.145913,0.330528,0.935778,
+       0.981055,0.006029,0.193634,0.146283,0.284903,0.933671,
+       0.892207,0,0.451626,0.146283,0.330528,0.933671,
+       -0.004579,0.695959,0.718067,0,0.258604,1.270833,
+       0.129618,0.851245,0.508509,0.067773,0.309412,1.195089,
+       -0.004744,0.86721,0.49792,0,0.316724,1.195089,
+       -0.004579,0.695959,0.718067,0,0.258604,1.270833,
+       0.100502,0.687999,0.718719,0.051933,0.254321,1.270833,
+       0.129618,0.851245,0.508509,0.067773,0.309412,1.195089,
+       0.060772,0.500882,0.863379,0.039779,0.180901,1.328953,
+       -0.004579,0.695959,0.718067,0,0.258604,1.270833,
+       -0.021105,0.462042,0.886607,0,0.182861,1.328953,
+       0.025206,0.28498,0.958202,0.032138,0.094157,1.365488,
+       -0.021105,0.462042,0.886607,0,0.182861,1.328953,
+       -0.014849,0.257672,0.966118,0,0.094656,1.365488,
+       -0.004744,0.86721,0.49792,0,0.316724,1.195089,
+       0.141093,0.950715,0.276106,0.08622,0.34242,1.106884,
+       0.01826,0.970957,0.238555,0,0.35326,1.106884,
+       0.777747,0.144332,0.611782,0.201514,0.066932,1.270833,
+       0.587064,0.226454,0.777222,0.138564,0.09143,1.328953,
+       0.599673,0.101216,0.793819,0.151142,0.047328,1.328953,
+       0.587064,0.226454,0.777222,0.138564,0.09143,1.328953,
+       0.777747,0.144332,0.611782,0.201514,0.066932,1.270833,
+       0.780002,0.279437,0.559921,0.183727,0.129302,1.270833,
+       0.024964,0.082992,0.996238,0.029532,0,1.37795,
+       -0.231736,0.145641,0.961815,-0.081974,0.047328,1.365488,
+       -0.260629,0.080414,0.962084,-0.09143,0.024499,1.365488,
+       0.335836,0.144904,0.930708,0.085971,0.047328,1.365488,
+       0.474349,0.333906,0.814555,0.118556,0.129302,1.328953,
+       0.273657,0.202688,0.940228,0.075614,0.066932,1.365488,
+       0.474349,0.333906,0.814555,0.118556,0.129302,1.328953,
+       0.335836,0.144904,0.930708,0.085971,0.047328,1.365488,
+       0.587064,0.226454,0.777222,0.138564,0.09143,1.328953,
+       0.587064,0.226454,0.777222,0.138564,0.09143,1.328953,
+       0.676335,0.41763,0.606759,0.155432,0.182861,1.270833,
+       0.474349,0.333906,0.814555,0.118556,0.129302,1.328953,
+       0.676335,0.41763,0.606759,0.155432,0.182861,1.270833,
+       0.587064,0.226454,0.777222,0.138564,0.09143,1.328953,
+       0.780002,0.279437,0.559921,0.183727,0.129302,1.270833,
+       0.335836,0.144904,0.930708,0.085971,0.047328,1.365488,
+       0.273657,0.202688,0.940228,0.075614,0.066932,1.365488,
+       0.024964,0.082992,0.996238,0.029532,0,1.37795,
+       0.273657,0.202688,0.940228,0.075614,0.066932,1.365488,
+       0.190766,0.247969,0.9498,0.062117,0.081974,1.365488,
+       0.024964,0.082992,0.996238,0.029532,0,1.37795,
+       0.273657,0.202688,0.940228,0.075614,0.066932,1.365488,
+       0.34381,0.421062,0.839346,0.092482,0.158362,1.328953,
+       0.190766,0.247969,0.9498,0.062117,0.081974,1.365488,
+       0.34381,0.421062,0.839346,0.092482,0.158362,1.328953,
+       0.273657,0.202688,0.940228,0.075614,0.066932,1.365488,
+       0.474349,0.333906,0.814555,0.118556,0.129302,1.328953,
+       0.411599,0.037309,0.910601,0.094702,0,1.365488,
+       0.374938,0.079168,0.923663,0.092482,0.024499,1.365488,
+       0.024964,0.082992,0.996238,0.029532,0,1.37795,
+       0.474349,0.333906,0.814555,0.118556,0.129302,1.328953,
+       0.52718,0.556291,0.642357,0.118556,0.223958,1.270833,
+       0.34381,0.421062,0.839346,0.092482,0.158362,1.328953,
+       0.52718,0.556291,0.642357,0.118556,0.223958,1.270833,
+       0.474349,0.333906,0.814555,0.118556,0.129302,1.328953,
+       0.676335,0.41763,0.606759,0.155432,0.182861,1.270833,
+       0.56058,0.750837,0.349275,0.145913,0.292777,1.143555,
+       0.539476,0.689911,0.482689,0.138564,0.274291,1.195089,
+       0.703455,0.631189,0.326728,0.145913,0.284422,1.159696,
+       -0.260629,0.080414,0.962084,-0.09143,0.024499,1.365488,
+       -0.430421,0.254256,0.866078,-0.158362,0.09143,1.328953,
+       -0.481561,0.134192,0.866078,-0.17663,0.047328,1.328953,
+       -0.430421,0.254256,0.866078,-0.158362,0.09143,1.328953,
+       -0.260629,0.080414,0.962084,-0.09143,0.024499,1.365488,
+       -0.231736,0.145641,0.961815,-0.081974,0.047328,1.365488,
+       0.190766,0.247969,0.9498,0.062117,0.081974,1.365488,
+       0.092059,0.276195,0.956683,0.046399,0.09143,1.365488,
+       0.024964,0.082992,0.996238,0.029532,0,1.37795,
+       -0.430421,0.254256,0.866078,-0.158362,0.09143,1.328953,
+       -0.517383,0.501035,0.693742,-0.182861,0.182861,1.270833,
+       -0.627494,0.326475,0.70687,-0.223958,0.129302,1.270833,
+       -0.517383,0.501035,0.693742,-0.182861,0.182861,1.270833,
+       -0.430421,0.254256,0.866078,-0.158362,0.09143,1.328953,
+       -0.349948,0.356994,0.866078,-0.129302,0.129302,1.328953,
+       0.190766,0.247969,0.9498,0.062117,0.081974,1.365488,
+       0.178567,0.479998,0.858904,0.062117,0.17663,1.328953,
+       0.092059,0.276195,0.956683,0.046399,0.09143,1.365488,
+       0.178567,0.479998,0.858904,0.062117,0.17663,1.328953,
+       0.190766,0.247969,0.9498,0.062117,0.081974,1.365488,
+       0.34381,0.421062,0.839346,0.092482,0.158362,1.328953,
+       -0.481561,0.134192,0.866078,-0.17663,0.047328,1.328953,
+       -0.627494,0.326475,0.70687,-0.223958,0.129302,1.270833,
+       -0.690611,0.152943,0.70687,-0.249792,0.066932,1.270833,
+       -0.627494,0.326475,0.70687,-0.223958,0.129302,1.270833,
+       -0.481561,0.134192,0.866078,-0.17663,0.047328,1.328953,
+       -0.430421,0.254256,0.866078,-0.158362,0.09143,1.328953,
+       0.278638,0.67847,0.679735,0.075614,0.249792,1.270833,
+       0.539476,0.689911,0.482689,0.138564,0.274291,1.195089,
+       0.371923,0.814436,0.445385,0.085971,0.305932,1.195089,
+       0.539476,0.689911,0.482689,0.138564,0.274291,1.195089,
+       0.278638,0.67847,0.679735,0.075614,0.249792,1.270833,
+       0.52718,0.556291,0.642357,0.118556,0.223958,1.270833,
+       0.34381,0.421062,0.839346,0.092482,0.158362,1.328953,
+       0.278638,0.67847,0.679735,0.075614,0.249792,1.270833,
+       0.178567,0.479998,0.858904,0.062117,0.17663,1.328953,
+       0.278638,0.67847,0.679735,0.075614,0.249792,1.270833,
+       0.34381,0.421062,0.839346,0.092482,0.158362,1.328953,
+       0.52718,0.556291,0.642357,0.118556,0.223958,1.270833,
+       -0.517383,0.501035,0.693742,-0.182861,0.182861,1.270833,
+       -0.751368,0.430509,0.500107,-0.274291,0.158362,1.195089,
+       -0.627494,0.326475,0.70687,-0.223958,0.129302,1.270833,
+       -0.751368,0.430509,0.500107,-0.274291,0.158362,1.195089,
+       -0.517383,0.501035,0.693742,-0.182861,0.182861,1.270833,
+       -0.627248,0.627248,0.46165,-0.223958,0.223958,1.195089,
+       -0.803542,-0.582394,0.123034,0.146283,0.284903,1.246708,
+       -0.825039,-0.55911,0.081898,0.177609,0.230776,1.195089,
+       -0.862228,-0.506519,0.000588,0.19071,0.208602,1.305256,
+       0.361607,0.924025,0.124172,0.093273,0.345512,1.073157,
+       0.491078,0.866607,0.088512,0.106015,0.346454,1.012229,
+       0.288047,0.952171,0.101981,0.094656,0.35326,1.012229,
+       -0.627248,0.627248,0.46165,-0.223958,0.223958,1.195089,
+       -0.837235,0.481678,0.258889,-0.305932,0.17663,1.106884,
+       -0.751368,0.430509,0.500107,-0.274291,0.158362,1.195089,
+       -0.837235,0.481678,0.258889,-0.305932,0.17663,1.106884,
+       -0.627248,0.627248,0.46165,-0.223958,0.223958,1.195089,
+       -0.69037,0.69037,0.216285,-0.249792,0.249792,1.106884,
+       -0.231736,0.145641,0.961815,-0.081974,0.047328,1.365488,
+       -0.349948,0.356994,0.866078,-0.129302,0.129302,1.328953,
+       -0.430421,0.254256,0.866078,-0.158362,0.09143,1.328953,
+       -0.349948,0.356994,0.866078,-0.129302,0.129302,1.328953,
+       -0.231736,0.145641,0.961815,-0.081974,0.047328,1.365488,
+       -0.187251,0.201824,0.961355,-0.066932,0.066932,1.365488,
+       0.025206,0.28498,0.958202,0.032138,0.094157,1.365488,
+       -0.014849,0.257672,0.966118,0,0.094656,1.365488,
+       0.024964,0.082992,0.996238,0.029532,0,1.37795,
+       0.024964,0.082992,0.996238,0.029532,0,1.37795,
+       -0.014849,0.257672,0.966118,0,0.094656,1.365488,
+       -0.062541,0.273564,0.959818,-0.024499,0.09143,1.365488,
+       -0.627494,0.326475,0.70687,-0.223958,0.129302,1.270833,
+       -0.83719,0.221372,0.500107,-0.305932,0.081974,1.195089,
+       -0.690611,0.152943,0.70687,-0.249792,0.066932,1.270833,
+       -0.83719,0.221372,0.500107,-0.305932,0.081974,1.195089,
+       -0.627494,0.326475,0.70687,-0.223958,0.129302,1.270833,
+       -0.751368,0.430509,0.500107,-0.274291,0.158362,1.195089,
+       -0.062541,0.273564,0.959818,-0.024499,0.09143,1.365488,
+       -0.021105,0.462042,0.886607,0,0.182861,1.328953,
+       -0.124567,0.48414,0.866078,-0.047328,0.17663,1.328953,
+       -0.021105,0.462042,0.886607,0,0.182861,1.328953,
+       -0.062541,0.273564,0.959818,-0.024499,0.09143,1.365488,
+       -0.014849,0.257672,0.966118,0,0.094656,1.365488,
+       -0.124567,0.48414,0.866078,-0.047328,0.17663,1.328953,
+       -0.004579,0.695959,0.718067,0,0.258604,1.270833,
+       -0.179072,0.683956,0.707204,-0.066932,0.249792,1.270833,
+       -0.004579,0.695959,0.718067,0,0.258604,1.270833,
+       -0.124567,0.48414,0.866078,-0.047328,0.17663,1.328953,
+       -0.021105,0.462042,0.886607,0,0.182861,1.328953,
+       -0.179072,0.683956,0.707204,-0.066932,0.249792,1.270833,
+       -0.004744,0.86721,0.49792,0,0.316724,1.195089,
+       -0.221372,0.83719,0.500107,-0.081974,0.305932,1.195089,
+       -0.004744,0.86721,0.49792,0,0.316724,1.195089,
+       -0.179072,0.683956,0.707204,-0.066932,0.249792,1.270833,
+       -0.004579,0.695959,0.718067,0,0.258604,1.270833,
+       -0.221372,0.83719,0.500107,-0.081974,0.305932,1.195089,
+       0.01826,0.970957,0.238555,0,0.35326,1.106884,
+       -0.248573,0.933374,0.258889,-0.09143,0.341223,1.106884,
+       0.01826,0.970957,0.238555,0,0.35326,1.106884,
+       -0.221372,0.83719,0.500107,-0.081974,0.305932,1.195089,
+       -0.004744,0.86721,0.49792,0,0.316724,1.195089,
+       -0.248573,0.933374,0.258889,-0.09143,0.341223,1.106884,
+       -0.018655,0.995608,0.091745,0,0.365721,1.012229,
+       -0.31221,0.945601,0.091454,-0.094656,0.35326,1.012229,
+       -0.018655,0.995608,0.091745,0,0.365721,1.012229,
+       -0.248573,0.933374,0.258889,-0.09143,0.341223,1.106884,
+       0.01826,0.970957,0.238555,0,0.35326,1.106884,
+       -0.751368,0.430509,0.500107,-0.274291,0.158362,1.195089,
+       -0.933374,0.248573,0.258889,-0.341223,0.09143,1.106884,
+       -0.83719,0.221372,0.500107,-0.305932,0.081974,1.195089,
+       -0.933374,0.248573,0.258889,-0.341223,0.09143,1.106884,
+       -0.751368,0.430509,0.500107,-0.274291,0.158362,1.195089,
+       -0.837235,0.481678,0.258889,-0.305932,0.17663,1.106884,
+       0.374938,0.079168,0.923663,0.092482,0.024499,1.365488,
+       0.335836,0.144904,0.930708,0.085971,0.047328,1.365488,
+       0.024964,0.082992,0.996238,0.029532,0,1.37795,
+       -0.69037,0.69037,0.216285,-0.249792,0.249792,1.106884,
+       -0.872168,0.480862,0.089971,-0.316724,0.182861,1.012229,
+       -0.837235,0.481678,0.258889,-0.305932,0.17663,1.106884,
+       -0.872168,0.480862,0.089971,-0.316724,0.182861,1.012229,
+       -0.69037,0.69037,0.216285,-0.249792,0.249792,1.106884,
+       -0.744941,0.662269,0.080386,-0.258604,0.258604,1.012229,
+       -0.430509,0.751368,0.500107,-0.158362,0.274291,1.195089,
+       -0.248573,0.933374,0.258889,-0.09143,0.341223,1.106884,
+       -0.481678,0.837235,0.258889,-0.17663,0.305932,1.106884,
+       -0.248573,0.933374,0.258889,-0.09143,0.341223,1.106884,
+       -0.430509,0.751368,0.500107,-0.158362,0.274291,1.195089,
+       -0.221372,0.83719,0.500107,-0.081974,0.305932,1.195089,
+       -0.481678,0.837235,0.258889,-0.17663,0.305932,1.106884,
+       -0.31221,0.945601,0.091454,-0.094656,0.35326,1.012229,
+       -0.54686,0.832268,0.090962,-0.182861,0.316724,1.012229,
+       -0.31221,0.945601,0.091454,-0.094656,0.35326,1.012229,
+       -0.481678,0.837235,0.258889,-0.17663,0.305932,1.106884,
+       -0.248573,0.933374,0.258889,-0.09143,0.341223,1.106884,
+       0.024964,0.082992,0.996238,0.029532,0,1.37795,
+       -0.062541,0.273564,0.959818,-0.024499,0.09143,1.365488,
+       -0.129745,0.245423,0.960694,-0.047328,0.081974,1.365488,
+       -0.129745,0.245423,0.960694,-0.047328,0.081974,1.365488,
+       -0.124567,0.48414,0.866078,-0.047328,0.17663,1.328953,
+       -0.245627,0.435403,0.866078,-0.09143,0.158362,1.328953,
+       -0.124567,0.48414,0.866078,-0.047328,0.17663,1.328953,
+       -0.129745,0.245423,0.960694,-0.047328,0.081974,1.365488,
+       -0.062541,0.273564,0.959818,-0.024499,0.09143,1.365488,
+       -0.245627,0.435403,0.866078,-0.09143,0.158362,1.328953,
+       -0.179072,0.683956,0.707204,-0.066932,0.249792,1.270833,
+       -0.349991,0.614303,0.707204,-0.129302,0.223958,1.270833,
+       -0.179072,0.683956,0.707204,-0.066932,0.249792,1.270833,
+       -0.245627,0.435403,0.866078,-0.09143,0.158362,1.328953,
+       -0.124567,0.48414,0.866078,-0.047328,0.17663,1.328953,
+       0.024964,0.082992,0.996238,0.029532,0,1.37795,
+       -0.129745,0.245423,0.960694,-0.047328,0.081974,1.365488,
+       -0.187251,0.201824,0.961355,-0.066932,0.066932,1.365488,
+       -0.349991,0.614303,0.707204,-0.129302,0.223958,1.270833,
+       -0.221372,0.83719,0.500107,-0.081974,0.305932,1.195089,
+       -0.430509,0.751368,0.500107,-0.158362,0.274291,1.195089,
+       -0.221372,0.83719,0.500107,-0.081974,0.305932,1.195089,
+       -0.349991,0.614303,0.707204,-0.129302,0.223958,1.270833,
+       -0.179072,0.683956,0.707204,-0.066932,0.249792,1.270833,
+       -0.690611,0.152943,0.70687,-0.249792,0.066932,1.270833,
+       -0.838063,0.110333,0.5343,-0.316724,0,1.195089,
+       -0.70396,0.092678,0.704167,-0.258604,0,1.270833,
+       -0.838063,0.110333,0.5343,-0.316724,0,1.195089,
+       -0.690611,0.152943,0.70687,-0.249792,0.066932,1.270833,
+       -0.83719,0.221372,0.500107,-0.305932,0.081974,1.195089,
+       -0.187251,0.201824,0.961355,-0.066932,0.066932,1.365488,
+       -0.245627,0.435403,0.866078,-0.09143,0.158362,1.328953,
+       -0.349948,0.356994,0.866078,-0.129302,0.129302,1.328953,
+       -0.245627,0.435403,0.866078,-0.09143,0.158362,1.328953,
+       -0.187251,0.201824,0.961355,-0.066932,0.066932,1.365488,
+       -0.129745,0.245423,0.960694,-0.047328,0.081974,1.365488,
+       0.374938,0.079168,0.923663,0.092482,0.024499,1.365488,
+       0.587064,0.226454,0.777222,0.138564,0.09143,1.328953,
+       0.335836,0.144904,0.930708,0.085971,0.047328,1.365488,
+       0.587064,0.226454,0.777222,0.138564,0.09143,1.328953,
+       0.374938,0.079168,0.923663,0.092482,0.024499,1.365488,
+       0.599673,0.101216,0.793819,0.151142,0.047328,1.328953,
+       -0.349948,0.356994,0.866078,-0.129302,0.129302,1.328953,
+       -0.349991,0.614303,0.707204,-0.129302,0.223958,1.270833,
+       -0.517383,0.501035,0.693742,-0.182861,0.182861,1.270833,
+       -0.349991,0.614303,0.707204,-0.129302,0.223958,1.270833,
+       -0.349948,0.356994,0.866078,-0.129302,0.129302,1.328953,
+       -0.245627,0.435403,0.866078,-0.09143,0.158362,1.328953,
+       -0.517383,0.501035,0.693742,-0.182861,0.182861,1.270833,
+       -0.430509,0.751368,0.500107,-0.158362,0.274291,1.195089,
+       -0.627248,0.627248,0.46165,-0.223958,0.223958,1.195089,
+       -0.430509,0.751368,0.500107,-0.158362,0.274291,1.195089,
+       -0.517383,0.501035,0.693742,-0.182861,0.182861,1.270833,
+       -0.349991,0.614303,0.707204,-0.129302,0.223958,1.270833,
+       -0.627248,0.627248,0.46165,-0.223958,0.223958,1.195089,
+       -0.481678,0.837235,0.258889,-0.17663,0.305932,1.106884,
+       -0.69037,0.69037,0.216285,-0.249792,0.249792,1.106884,
+       -0.481678,0.837235,0.258889,-0.17663,0.305932,1.106884,
+       -0.627248,0.627248,0.46165,-0.223958,0.223958,1.195089,
+       -0.430509,0.751368,0.500107,-0.158362,0.274291,1.195089,
+       0.024964,0.082992,0.996238,0.029532,0,1.37795,
+       -0.187251,0.201824,0.961355,-0.066932,0.066932,1.365488,
+       -0.231736,0.145641,0.961815,-0.081974,0.047328,1.365488,
+       -0.69037,0.69037,0.216285,-0.249792,0.249792,1.106884,
+       -0.54686,0.832268,0.090962,-0.182861,0.316724,1.012229,
+       -0.744941,0.662269,0.080386,-0.258604,0.258604,1.012229,
+       -0.54686,0.832268,0.090962,-0.182861,0.316724,1.012229,
+       -0.69037,0.69037,0.216285,-0.249792,0.249792,1.106884,
+       -0.481678,0.837235,0.258889,-0.17663,0.305932,1.106884,
+       0.777747,0.144332,0.611782,0.201514,0.066932,1.270833,
+       0.67336,0.061035,0.736791,0.155432,0,1.328953,
+       0.84071,0.076204,0.536096,0.207581,0,1.270833,
+       0.67336,0.061035,0.736791,0.155432,0,1.328953,
+       0.777747,0.144332,0.611782,0.201514,0.066932,1.270833,
+       0.599673,0.101216,0.793819,0.151142,0.047328,1.328953,
+       -0.837235,0.481678,0.258889,-0.305932,0.17663,1.106884,
+       -0.966816,0.23921,0.089691,-0.35326,0.094656,1.012229,
+       -0.933374,0.248573,0.258889,-0.341223,0.09143,1.106884,
+       -0.966816,0.23921,0.089691,-0.35326,0.094656,1.012229,
+       -0.837235,0.481678,0.258889,-0.305932,0.17663,1.106884,
+       -0.872168,0.480862,0.089971,-0.316724,0.182861,1.012229,
+       0.024964,0.082992,0.996238,0.029532,0,1.37795,
+       -0.260629,0.080414,0.962084,-0.09143,0.024499,1.365488,
+       -0.290881,0.038295,0.955993,-0.094656,0,1.365488,
+       -0.290881,0.038295,0.955993,-0.094656,0,1.365488,
+       -0.481561,0.134192,0.866078,-0.17663,0.047328,1.328953,
+       -0.536052,0.070573,0.84123,-0.182861,0,1.328953,
+       -0.481561,0.134192,0.866078,-0.17663,0.047328,1.328953,
+       -0.290881,0.038295,0.955993,-0.094656,0,1.365488,
+       -0.260629,0.080414,0.962084,-0.09143,0.024499,1.365488,
+       -0.536052,0.070573,0.84123,-0.182861,0,1.328953,
+       -0.690611,0.152943,0.70687,-0.249792,0.066932,1.270833,
+       -0.70396,0.092678,0.704167,-0.258604,0,1.270833,
+       -0.690611,0.152943,0.70687,-0.249792,0.066932,1.270833,
+       -0.536052,0.070573,0.84123,-0.182861,0,1.328953,
+       -0.481561,0.134192,0.866078,-0.17663,0.047328,1.328953,
+       -0.83719,0.221372,0.500107,-0.305932,0.081974,1.195089,
+       -0.946203,0.12457,0.298635,-0.35326,0,1.106884,
+       -0.838063,0.110333,0.5343,-0.316724,0,1.195089,
+       -0.946203,0.12457,0.298635,-0.35326,0,1.106884,
+       -0.83719,0.221372,0.500107,-0.305932,0.081974,1.195089,
+       -0.933374,0.248573,0.258889,-0.341223,0.09143,1.106884,
+       -0.933374,0.248573,0.258889,-0.341223,0.09143,1.106884,
+       -0.985881,0.129794,0.105798,-0.365721,0,1.012229,
+       -0.946203,0.12457,0.298635,-0.35326,0,1.106884,
+       -0.985881,0.129794,0.105798,-0.365721,0,1.012229,
+       -0.933374,0.248573,0.258889,-0.341223,0.09143,1.106884,
+       -0.966816,0.23921,0.089691,-0.35326,0.094656,1.012229,
+       0.411599,0.037309,0.910601,0.094702,0,1.365488,
+       0.599673,0.101216,0.793819,0.151142,0.047328,1.328953,
+       0.374938,0.079168,0.923663,0.092482,0.024499,1.365488,
+       0.599673,0.101216,0.793819,0.151142,0.047328,1.328953,
+       0.411599,0.037309,0.910601,0.094702,0,1.365488,
+       0.67336,0.061035,0.736791,0.155432,0,1.328953,
+       0.178567,0.479998,0.858904,0.062117,0.17663,1.328953,
+       0.100502,0.687999,0.718719,0.051933,0.254321,1.270833,
+       0.060772,0.500882,0.863379,0.039779,0.180901,1.328953,
+       0.100502,0.687999,0.718719,0.051933,0.254321,1.270833,
+       0.178567,0.479998,0.858904,0.062117,0.17663,1.328953,
+       0.278638,0.67847,0.679735,0.075614,0.249792,1.270833,
+       0.129618,0.851245,0.508509,0.067773,0.309412,1.195089,
+       0.312254,0.908542,0.277577,0.092482,0.341223,1.106884,
+       0.141093,0.950715,0.276106,0.08622,0.34242,1.106884,
+       0.312254,0.908542,0.277577,0.092482,0.341223,1.106884,
+       0.129618,0.851245,0.508509,0.067773,0.309412,1.195089,
+       0.371923,0.814436,0.445385,0.085971,0.305932,1.195089,
+       0.491078,0.866607,0.088512,0.106015,0.346454,1.012229,
+       0.293356,0.953923,0.063035,0.111086,0.414579,0,
+       0.288047,0.952171,0.101981,0.094656,0.35326,1.012229,
+       0.129618,0.851245,0.508509,0.067773,0.309412,1.195089,
+       0.278638,0.67847,0.679735,0.075614,0.249792,1.270833,
+       0.371923,0.814436,0.445385,0.085971,0.305932,1.195089,
+       0.278638,0.67847,0.679735,0.075614,0.249792,1.270833,
+       0.129618,0.851245,0.508509,0.067773,0.309412,1.195089,
+       0.100502,0.687999,0.718719,0.051933,0.254321,1.270833,
+       0.838263,-0.003347,0.545256,0.161481,0.30464,0.912126,
+       0.892207,0,0.451626,0.146283,0.330528,0.933671,
+       0.923345,0,0.383971,0.146283,0.284903,0.933671,
+       0.892207,0,0.451626,0.146283,0.330528,0.933671,
+       0.838263,-0.003347,0.545256,0.161481,0.30464,0.912126,
+       0.85821,-0.006695,0.513255,0.162433,0.32323,0.910776,
+       0.092059,0.276195,0.956683,0.046399,0.09143,1.365488,
+       0.060772,0.500882,0.863379,0.039779,0.180901,1.328953,
+       0.025206,0.28498,0.958202,0.032138,0.094157,1.365488,
+       0.060772,0.500882,0.863379,0.039779,0.180901,1.328953,
+       0.092059,0.276195,0.956683,0.046399,0.09143,1.365488,
+       0.178567,0.479998,0.858904,0.062117,0.17663,1.328953,
+       0.092059,0.276195,0.956683,0.046399,0.09143,1.365488,
+       0.025206,0.28498,0.958202,0.032138,0.094157,1.365488,
+       0.024964,0.082992,0.996238,0.029532,0,1.37795,
+       0.312254,0.908542,0.277577,0.092482,0.341223,1.106884,
+       0.361607,0.924025,0.124172,0.093273,0.345512,1.073157,
+       0.141093,0.950715,0.276106,0.08622,0.34242,1.106884,
+       0.875651,-0.009145,0.482859,0.230667,0.24695,0.785155,
+       0.875834,-0.009413,0.48252,0.218313,0.218497,0.807025,
+       0.875344,-0.008697,0.483422,0.219541,0.214647,0.804721,
+       0.875834,-0.009413,0.48252,0.218313,0.218497,0.807025,
+       0.875651,-0.009145,0.482859,0.230667,0.24695,0.785155,
+       0.87595,-0.009537,0.482307,0.206427,0.238615,0.828993,
+       0.87595,-0.009537,0.482307,0.206427,0.238615,0.828993,
+       0.875651,-0.009145,0.482859,0.230667,0.24695,0.785155,
+       0.876066,-0.009661,0.482094,0.214135,0.2689,0.815591,
+       -0.798008,0.602646,0.000065,0.146283,0.284903,1.246708,
+       -0.800822,0.598902,0.000098,0.145913,0.284422,1.159696,
+       -0.809157,0.587593,0.000196,0.138564,0.274291,1.195089,
+       0.964645,0.195253,0.177021,0.414579,0.111086,0,
+       0.927775,0.05186,0.369519,0.290282,0.101111,0.675403,
+       0.931218,0.038006,0.362475,0.29625,0.056256,0.664416,
+       0.610633,0.787554,0.082987,0.162433,0.32323,0.910776,
+       0.774879,0.62326,0.105398,0.173158,0.314854,0.891031,
+       0.768035,0.631773,0.104812,0.303493,0.303493,0,
+       -0.798008,0.602646,0.000065,0.146283,0.284903,1.246708,
+       -0.792329,0.610094,0,0.146283,0.284903,1.087672,
+       -0.800822,0.598902,0.000098,0.145913,0.284422,1.159696,
+       -0.792329,0.610094,0,0.146283,0.284903,1.087672,
+       -0.798008,0.602646,0.000065,0.146283,0.284903,1.246708,
+       -0.792329,0.610094,0,0.154063,0.295007,1.238954,
+       -0.792329,0.610094,0,0.146283,0.284903,1.087672,
+       -0.792329,0.610094,0,0.154063,0.295007,1.238954,
+       -0.792329,0.610094,0,0.146283,0.284903,0.933671,
+       -0.792329,0.610094,0,0.146283,0.284903,0.933671,
+       -0.792329,0.610094,0,0.154063,0.295007,1.238954,
+       -0.792329,0.610094,0,0.161481,0.30464,0.912126,
+       -0.792329,0.610094,0,0.161481,0.30464,0.912126,
+       -0.792329,0.610094,0,0.154063,0.295007,1.238954,
+       -0.792329,0.610094,0,0.164839,0.309002,1.220716,
+       -0.792329,0.610094,0,0.161481,0.30464,0.912126,
+       -0.792329,0.610094,0,0.164839,0.309002,1.220716,
+       -0.792329,0.610094,0,0.164839,0.309002,0.906089,
+       0.902969,0.403992,0.146418,0.371702,0.214602,0,
+       0.924479,0.12193,0.361208,0.259167,0.19321,0.732687,
+       0.926797,0.118754,0.356292,0.274037,0.157167,0.70531,
+       -0.803542,-0.582394,0.123034,0.146283,0.284903,1.246708,
+       -0.72232,-0.648117,0.241242,0.138564,0.274291,1.195089,
+       -0.825039,-0.55911,0.081898,0.177609,0.230776,1.195089,
+       0.902969,0.403992,0.146418,0.371702,0.214602,0,
+       0.945888,0.279771,0.16439,0.274037,0.157167,0.70531,
+       0.964645,0.195253,0.177021,0.414579,0.111086,0,
+       0.768035,0.631773,0.104812,0.303493,0.303493,0,
+       0.845942,0.520777,0.114772,0.214135,0.2689,0.815591,
+       0.866079,0.482943,0.129122,0.230667,0.24695,0.785155,
+       0.610633,0.787554,0.082987,0.162433,0.32323,0.910776,
+       0.768035,0.631773,0.104812,0.303493,0.303493,0,
+       0.495531,0.865546,0.072654,0.214602,0.371702,0,
+       0.768035,0.631773,0.104812,0.303493,0.303493,0,
+       0.866079,0.482943,0.129122,0.230667,0.24695,0.785155,
+       0.902969,0.403992,0.146418,0.371702,0.214602,0,
+       0.964645,0.195253,0.177021,0.414579,0.111086,0,
+       0.931218,0.038006,0.362475,0.29625,0.056256,0.664416,
+       0.977781,0.093209,0.187769,0.429204,0,0,
+       0.998302,0.002696,0.058183,0.145913,0.330528,0.935778,
+       0.999961,0.008668,0.001509,0.145913,0.309078,1.106884,
+       0.998275,0.007814,0.058184,0.146283,0.284903,0.933671,
+       0.999961,0.008668,0.001509,0.145913,0.309078,1.106884,
+       0.998302,0.002696,0.058183,0.145913,0.330528,0.935778,
+       1,0,0,0.145913,0.322451,1.012229,
+       0.999961,0.008668,0.001509,0.145913,0.309078,1.106884,
+       0.99992,0.012221,0.00341,0.146283,0.284903,1.087672,
+       0.998275,0.007814,0.058184,0.146283,0.284903,0.933671,
+       0.499452,0.862679,0.079575,0.146283,0.330528,0.933671,
+       0.610633,0.787554,0.082987,0.162433,0.32323,0.910776,
+       0.495531,0.865546,0.072654,0.214602,0.371702,0,
+       0.491078,0.866607,0.088512,0.106015,0.346454,1.012229,
+       0.499452,0.862679,0.079575,0.146283,0.330528,0.933671,
+       0.495531,0.865546,0.072654,0.214602,0.371702,0,
+       0.491078,0.866607,0.088512,0.106015,0.346454,1.012229,
+       0.513415,0.853391,0.090157,0.145913,0.330528,0.935778,
+       0.499452,0.862679,0.079575,0.146283,0.330528,0.933671,
+       0.513415,0.853391,0.090157,0.145913,0.330528,0.935778,
+       0.491078,0.866607,0.088512,0.106015,0.346454,1.012229,
+       0.512375,0.851663,0.110186,0.145913,0.322451,1.012229,
+       -0.744941,0.662269,0.080386,-0.258604,0.258604,1.012229,
+       -0.842678,0.535089,0.059785,-0.351049,0.202678,0.351049,
+       -0.872168,0.480862,0.089971,-0.316724,0.182861,1.012229,
+       -0.842678,0.535089,0.059785,-0.351049,0.202678,0.351049,
+       -0.744941,0.662269,0.080386,-0.258604,0.258604,1.012229,
+       -0.794265,0.604621,0.059807,-0.341369,0.216238,0.341369,
+       -0.744941,0.662269,0.080386,-0.258604,0.258604,1.012229,
+       -0.796561,0.601545,0.060284,-0.319565,0.247297,0.319565,
+       -0.794265,0.604621,0.059807,-0.341369,0.216238,0.341369,
+       -0.796561,0.601545,0.060284,-0.319565,0.247297,0.319565,
+       -0.744941,0.662269,0.080386,-0.258604,0.258604,1.012229,
+       -0.676046,0.734345,0.060814,-0.289756,0.289756,0.289756,
+       -0.872168,0.480862,0.089971,-0.316724,0.182861,1.012229,
+       -0.952168,0.299814,0.059064,-0.388916,0.10421,0.388916,
+       -0.966816,0.23921,0.089691,-0.35326,0.094656,1.012229,
+       -0.952168,0.299814,0.059064,-0.388916,0.10421,0.388916,
+       -0.872168,0.480862,0.089971,-0.316724,0.182861,1.012229,
+       -0.923255,0.379637,0.058951,-0.382487,0.120717,0.382487,
+       -0.842678,0.535089,0.059785,-0.351049,0.202678,0.351049,
+       -0.923255,0.379637,0.058951,-0.382487,0.120717,0.382487,
+       -0.872168,0.480862,0.089971,-0.316724,0.182861,1.012229,
+       -0.966816,0.23921,0.089691,-0.35326,0.094656,1.012229,
+       -0.989755,0.130304,0.058357,-0.401718,0,0.401718,
+       -0.985881,0.129794,0.105798,-0.365721,0,1.012229,
+       -0.989755,0.130304,0.058357,-0.401718,0,0.401718,
+       -0.966816,0.23921,0.089691,-0.35326,0.094656,1.012229,
+       -0.989867,0.129393,0.058479,-0.399435,0.01836,0.399435,
+       -0.952168,0.299814,0.059064,-0.388916,0.10421,0.388916,
+       -0.989867,0.129393,0.058479,-0.399435,0.01836,0.399435,
+       -0.966816,0.23921,0.089691,-0.35326,0.094656,1.012229,
+       -0.54686,0.832268,0.090962,-0.182861,0.316724,1.012229,
+       -0.463375,0.883993,0.061975,-0.207855,0.360015,0.207855,
+       -0.611294,0.789058,0.060884,-0.277897,0.29976,0.277897,
+       -0.676046,0.734345,0.060814,-0.289756,0.289756,0.289756,
+       -0.54686,0.832268,0.090962,-0.182861,0.316724,1.012229,
+       -0.611294,0.789058,0.060884,-0.277897,0.29976,0.277897,
+       -0.54686,0.832268,0.090962,-0.182861,0.316724,1.012229,
+       -0.676046,0.734345,0.060814,-0.289756,0.289756,0.289756,
+       -0.744941,0.662269,0.080386,-0.258604,0.258604,1.012229,
+       -0.31221,0.945601,0.091454,-0.094656,0.35326,1.012229,
+       -0.217377,0.974082,0.062537,-0.109312,0.407957,0.109312,
+       -0.38421,0.921178,0.061758,-0.194861,0.366264,0.194861,
+       -0.463375,0.883993,0.061975,-0.207855,0.360015,0.207855,
+       -0.31221,0.945601,0.091454,-0.094656,0.35326,1.012229,
+       -0.38421,0.921178,0.061758,-0.194861,0.366264,0.194861,
+       -0.31221,0.945601,0.091454,-0.094656,0.35326,1.012229,
+       -0.463375,0.883993,0.061975,-0.207855,0.360015,0.207855,
+       -0.54686,0.832268,0.090962,-0.182861,0.316724,1.012229,
+       -0.018655,0.995608,0.091745,0,0.365721,1.012229,
+       0.293356,0.953923,0.063035,0.111086,0.414579,0,
+       0,0.998039,0.062593,0,0.429204,0,
+       0.293356,0.953923,0.063035,0.111086,0.414579,0,
+       -0.018655,0.995608,0.091745,0,0.365721,1.012229,
+       0.288047,0.952171,0.101981,0.094656,0.35326,1.012229,
+       -0.217377,0.974082,0.062537,-0.109312,0.407957,0.109312,
+       -0.018655,0.995608,0.091745,0,0.365721,1.012229,
+       0,0.998039,0.062593,0,0.429204,0,
+       -0.018655,0.995608,0.091745,0,0.365721,1.012229,
+       -0.217377,0.974082,0.062537,-0.109312,0.407957,0.109312,
+       -0.31221,0.945601,0.091454,-0.094656,0.35326,1.012229,
+       0,0,-1,0,0.429204,0,
+       0,0,-1,0.356283,0.214602,0,
+       0,0,-1,0,0.214602,0,
+       0,0,-1,0.356283,0.214602,0,
+       0,0,-1,0,0.429204,0,
+       0,0,-1,0.111086,0.414579,0,
+       0,0,-1,0.356283,0.214602,0,
+       0,0,-1,0.111086,0.414579,0,
+       0,0,-1,0.214602,0.371702,0,
+       0,0,-1,0.356283,0.214602,0,
+       0,0,-1,0.214602,0.371702,0,
+       0,0,-1,0.303493,0.303493,0,
+       0,0,-1,0.356283,0.214602,0,
+       0,0,-1,0.303493,0.303493,0,
+       0,0,-1,0.371702,0.214602,0,
+       0,0,-1,0.356283,0.214602,0,
+       0,0,-1,0.371702,0.214602,0,
+       0,0,-1,0.356283,0,0,
+       0,0,-1,0.356283,0,0,
+       0,0,-1,0.371702,0.214602,0,
+       0,0,-1,0.429204,0,0,
+       0,0,-1,0.429204,0,0,
+       0,0,-1,0.371702,0.214602,0,
+       0,0,-1,0.414579,0.111086,0,
+       -0.707107,0,-0.707107,-0.399435,0.01836,0.399435,
+       -0.707107,0,-0.707107,-0.25193,0,0.25193,
+       -0.707107,0,-0.707107,-0.401718,0,0.401718,
+       -0.707107,0,-0.707107,-0.25193,0,0.25193,
+       -0.707107,0,-0.707107,-0.399435,0.01836,0.399435,
+       -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+       -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+       -0.707107,0,-0.707107,-0.399435,0.01836,0.399435,
+       -0.707107,0,-0.707107,-0.388916,0.10421,0.388916,
+       -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+       -0.707107,0,-0.707107,-0.388916,0.10421,0.388916,
+       -0.707107,0,-0.707107,-0.382487,0.120717,0.382487,
+       -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+       -0.707107,0,-0.707107,-0.382487,0.120717,0.382487,
+       -0.707107,0,-0.707107,-0.351049,0.202678,0.351049,
+       -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+       -0.707107,0,-0.707107,-0.351049,0.202678,0.351049,
+       -0.707107,0,-0.707107,-0.341369,0.216238,0.341369,
+       -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+       -0.707107,0,-0.707107,-0.341369,0.216238,0.341369,
+       -0.707107,0,-0.707107,0,0.214602,0,
+       -0.707107,0,-0.707107,0,0.214602,0,
+       -0.707107,0,-0.707107,-0.341369,0.216238,0.341369,
+       -0.707107,0,-0.707107,0,0.429204,0,
+       -0.707107,0,-0.707107,0,0.429204,0,
+       -0.707107,0,-0.707107,-0.341369,0.216238,0.341369,
+       -0.707107,0,-0.707107,-0.319565,0.247297,0.319565,
+       -0.707107,0,-0.707107,0,0.429204,0,
+       -0.707107,0,-0.707107,-0.319565,0.247297,0.319565,
+       -0.707107,0,-0.707107,-0.289756,0.289756,0.289756,
+       -0.707107,0,-0.707107,0,0.429204,0,
+       -0.707107,0,-0.707107,-0.289756,0.289756,0.289756,
+       -0.707107,0,-0.707107,-0.277897,0.29976,0.277897,
+       -0.707107,0,-0.707107,0,0.429204,0,
+       -0.707107,0,-0.707107,-0.277897,0.29976,0.277897,
+       -0.707107,0,-0.707107,-0.207855,0.360015,0.207855,
+       -0.707107,0,-0.707107,0,0.429204,0,
+       -0.707107,0,-0.707107,-0.207855,0.360015,0.207855,
+       -0.707107,0,-0.707107,-0.194861,0.366264,0.194861,
+       -0.707107,0,-0.707107,0,0.429204,0,
+       -0.707107,0,-0.707107,-0.194861,0.366264,0.194861,
+       -0.707107,0,-0.707107,-0.109312,0.407957,0.109312
+};
+static const struct gllist handsy_model_thumb_distal_frame = {
+ GL_N3F_V3F, GL_TRIANGLES, 804, handsy_model_thumb_distal_data, 0
+};
+const struct gllist *handsy_model_thumb_distal = &handsy_model_thumb_distal_frame;
+
+static const float handsy_model_thumb_metacarpal_data[] = {
+       -0.965926,0,-0.258819,-0.344143,0,1.403844,
+       -0.866025,0,-0.5,-0.30855,0.214602,1.317916,
+       -0.866025,0,-0.5,-0.30855,0,1.317916,
+       -0.866025,0,-0.5,-0.30855,0.214602,1.317916,
+       -0.965926,0,-0.258819,-0.344143,0,1.403844,
+       -0.965926,0,-0.258819,-0.344143,0.214602,1.403844,
+       0.258819,0,0.965926,0.092213,0,1.8402,
+       0,0,1,0,0.214602,1.85234,
+       0,0,1,0,0,1.85234,
+       0,0,1,0,0.214602,1.85234,
+       0.258819,0,0.965926,0.092213,0,1.8402,
+       0.258819,0,0.965926,0.092213,0.214602,1.8402,
+       -0.675426,0,0.737428,-0.25193,0,1.747987,
+       -0.5,0,0.866025,-0.178141,0.214602,1.804607,
+       -0.737428,0,0.675426,-0.25193,0.214602,1.747987,
+       -0.5,0,0.866025,-0.178141,0.214602,1.804607,
+       -0.675426,0,0.737428,-0.25193,0,1.747987,
+       -0.5,0,0.866025,-0.178141,0,1.804607,
+       0.707107,0,0.707107,0.25193,0,1.747987,
+       0.5,0,0.866025,0.178141,0.214602,1.804607,
+       0.5,0,0.866025,0.178141,0,1.804607,
+       0.5,0,0.866025,0.178141,0.214602,1.804607,
+       0.707107,0,0.707107,0.25193,0,1.747987,
+       0.707107,0,0.707107,0.25193,0.214602,1.747987,
+       -0.866025,0,0.5,-0.30855,0,1.674199,
+       -0.965926,0,0.258819,-0.344143,0.214602,1.58827,
+       -0.965926,0,0.258819,-0.344143,0,1.58827,
+       -0.965926,0,0.258819,-0.344143,0.214602,1.58827,
+       -0.866025,0,0.5,-0.30855,0,1.674199,
+       -0.866025,0,0.5,-0.30855,0.214602,1.674199,
+       -0.258819,0,0.965926,-0.092213,0,1.8402,
+       -0.5,0,0.866025,-0.178141,0.214602,1.804607,
+       -0.5,0,0.866025,-0.178141,0,1.804607,
+       -0.5,0,0.866025,-0.178141,0.214602,1.804607,
+       -0.258819,0,0.965926,-0.092213,0,1.8402,
+       -0.258819,0,0.965926,-0.092213,0.214602,1.8402,
+       0.866025,0,0.5,0.30855,0.214602,1.674199,
+       0.707107,0,0.707107,0.25193,0,1.747987,
+       0.866025,0,0.5,0.30855,0,1.674199,
+       0.707107,0,0.707107,0.25193,0,1.747987,
+       0.866025,0,0.5,0.30855,0.214602,1.674199,
+       0.707107,0,0.707107,0.25193,0.214602,1.747987,
+       0.991445,0,0.130526,0.356283,0.214602,1.496057,
+       0.965926,0,0.258819,0.344143,0,1.58827,
+       0.991445,0,0.130526,0.356283,0,1.496057,
+       0.965926,0,0.258819,0.344143,0,1.58827,
+       0.991445,0,0.130526,0.356283,0.214602,1.496057,
+       0.965926,0,0.258819,0.344143,0.214602,1.58827,
+       -0.999038,0,-0.043842,-0.356283,0.214602,1.496057,
+       -0.965926,0,-0.258819,-0.344143,0,1.403844,
+       -0.999038,0,0.043842,-0.356283,0,1.496057,
+       -0.965926,0,-0.258819,-0.344143,0,1.403844,
+       -0.999038,0,-0.043842,-0.356283,0.214602,1.496057,
+       -0.965926,0,-0.258819,-0.344143,0.214602,1.403844,
+       -0.866025,0,-0.5,-0.30855,0.214602,1.317916,
+       -0.793353,0,-0.608761,-0.25193,0,1.244127,
+       -0.866025,0,-0.5,-0.30855,0,1.317916,
+       -0.793353,0,-0.608761,-0.25193,0,1.244127,
+       -0.866025,0,-0.5,-0.30855,0.214602,1.317916,
+       -0.793353,0,-0.608761,-0.25193,0.214602,1.244127,
+       0.965926,0,0.258819,0.344143,0,1.58827,
+       0.866025,0,0.5,0.30855,0.214602,1.674199,
+       0.866025,0,0.5,0.30855,0,1.674199,
+       0.866025,0,0.5,0.30855,0.214602,1.674199,
+       0.965926,0,0.258819,0.344143,0,1.58827,
+       0.965926,0,0.258819,0.344143,0.214602,1.58827,
+       0.258819,0,0.965926,0.092213,0,1.8402,
+       0.5,0,0.866025,0.178141,0.214602,1.804607,
+       0.258819,0,0.965926,0.092213,0.214602,1.8402,
+       0.5,0,0.866025,0.178141,0.214602,1.804607,
+       0.258819,0,0.965926,0.092213,0,1.8402,
+       0.5,0,0.866025,0.178141,0,1.804607,
+       -0.737428,0,0.675426,-0.25193,0.214602,1.747987,
+       -0.866025,0,0.5,-0.30855,0,1.674199,
+       -0.675426,0,0.737428,-0.25193,0,1.747987,
+       -0.866025,0,0.5,-0.30855,0,1.674199,
+       -0.737428,0,0.675426,-0.25193,0.214602,1.747987,
+       -0.866025,0,0.5,-0.30855,0.214602,1.674199,
+       -0.258819,0,0.965926,-0.092213,0,1.8402,
+       0,0,1,0,0.214602,1.85234,
+       -0.258819,0,0.965926,-0.092213,0.214602,1.8402,
+       0,0,1,0,0.214602,1.85234,
+       -0.258819,0,0.965926,-0.092213,0,1.8402,
+       0,0,1,0,0,1.85234,
+       -0.965926,0,0.258819,-0.344143,0.214602,1.58827,
+       -0.999038,0,0.043842,-0.356283,0,1.496057,
+       -0.965926,0,0.258819,-0.344143,0,1.58827,
+       -0.999038,0,0.043842,-0.356283,0,1.496057,
+       -0.965926,0,0.258819,-0.344143,0.214602,1.58827,
+       -0.999038,0,-0.043842,-0.356283,0.214602,1.496057,
+       0,1,0,-0.30855,0.214602,1.317916,
+       0,1,0,0,0.214602,1.496057,
+       0,1,0,-0.25193,0.214602,1.244127,
+       0,1,0,0,0.214602,1.496057,
+       0,1,0,-0.30855,0.214602,1.317916,
+       0,1,0,-0.344143,0.214602,1.403844,
+       0,1,0,0,0.214602,1.496057,
+       0,1,0,-0.344143,0.214602,1.403844,
+       0,1,0,-0.356283,0.214602,1.496057,
+       0,0.081483,0.996675,0,0.214602,1.496057,
+       0,0.162423,0.986721,-0.356283,0.214602,1.496057,
+       0,0.023241,0.99973,0.356283,0.214602,1.496057,
+       0,1,0,0.356283,0.214602,1.496057,
+       0,1,0,-0.356283,0.214602,1.496057,
+       0,1,0,0.344143,0.214602,1.58827,
+       0,1,0,0.344143,0.214602,1.58827,
+       0,1,0,-0.356283,0.214602,1.496057,
+       0,1,0,-0.344143,0.214602,1.58827,
+       0,1,0,0.344143,0.214602,1.58827,
+       0,1,0,-0.344143,0.214602,1.58827,
+       0,1,0,-0.30855,0.214602,1.674199,
+       0,1,0,0.344143,0.214602,1.58827,
+       0,1,0,-0.30855,0.214602,1.674199,
+       0,1,0,0.30855,0.214602,1.674199,
+       0,1,0,0.30855,0.214602,1.674199,
+       0,1,0,-0.30855,0.214602,1.674199,
+       0,1,0,-0.25193,0.214602,1.747987,
+       0,1,0,0.30855,0.214602,1.674199,
+       0,1,0,-0.25193,0.214602,1.747987,
+       0,1,0,0.25193,0.214602,1.747987,
+       0,1,0,0.25193,0.214602,1.747987,
+       0,1,0,-0.25193,0.214602,1.747987,
+       0,1,0,-0.178141,0.214602,1.804607,
+       0,1,0,0.25193,0.214602,1.747987,
+       0,1,0,-0.178141,0.214602,1.804607,
+       0,1,0,0.178141,0.214602,1.804607,
+       0,1,0,0.178141,0.214602,1.804607,
+       0,1,0,-0.178141,0.214602,1.804607,
+       0,1,0,-0.092213,0.214602,1.8402,
+       0,1,0,0.178141,0.214602,1.804607,
+       0,1,0,-0.092213,0.214602,1.8402,
+       0,1,0,0.092213,0.214602,1.8402,
+       0,1,0,0.092213,0.214602,1.8402,
+       0,1,0,-0.092213,0.214602,1.8402,
+       0,1,0,0,0.214602,1.85234,
+       -0.707107,0,0.707107,-0.25193,0,1.244127,
+       -0.707107,0,0.707107,-0.391599,0.104929,1.104458,
+       -0.707107,0,0.707107,-0.40435,0,1.091707,
+       -0.707107,0,0.707107,-0.391599,0.104929,1.104458,
+       -0.707107,0,0.707107,-0.25193,0,1.244127,
+       -0.707107,0,0.707107,-0.353826,0.204282,1.142231,
+       -0.707107,0,0.707107,-0.353826,0.204282,1.142231,
+       -0.707107,0,0.707107,-0.25193,0,1.244127,
+       -0.707107,0,0.707107,-0.292513,0.292513,1.203544,
+       -0.707107,0,0.707107,-0.292513,0.292513,1.203544,
+       -0.707107,0,0.707107,-0.25193,0,1.244127,
+       -0.707107,0,0.707107,-0.25193,0.214602,1.244127,
+       -0.707107,0,0.707107,-0.25193,0.214602,1.244127,
+       -0.707107,0,0.707107,-0.210267,0.364193,1.28579,
+       -0.707107,0,0.707107,-0.292513,0.292513,1.203544,
+       -0.707107,0,0.707107,-0.210267,0.364193,1.28579,
+       -0.707107,0,0.707107,-0.25193,0.214602,1.244127,
+       -0.707107,0,0.707107,0,0.214602,1.496057,
+       -0.707107,0,0.707107,-0.210267,0.364193,1.28579,
+       -0.707107,0,0.707107,0,0.214602,1.496057,
+       -0.707107,0,0.707107,-0.110985,0.414201,1.385072,
+       -0.707107,0,0.707107,-0.110985,0.414201,1.385072,
+       -0.707107,0,0.707107,0,0.214602,1.496057,
+       -0.707107,0,0.707107,0,0.438068,1.496057,
+       0,0.023241,0.99973,0.356283,0.214602,1.496057,
+       0,0,1,0,0.438068,1.496057,
+       0,0.081483,0.996675,0,0.214602,1.496057,
+       0,0,1,0,0.438068,1.496057,
+       0,0.023241,0.99973,0.356283,0.214602,1.496057,
+       0,0,1,0.11338,0.423141,1.496057,
+       0,0,1,0.11338,0.423141,1.496057,
+       0,0.023241,0.99973,0.356283,0.214602,1.496057,
+       0,0,1,0.219034,0.379378,1.496057,
+       0,0,1,0.219034,0.379378,1.496057,
+       0,0.023241,0.99973,0.356283,0.214602,1.496057,
+       0,0,1,0.309761,0.309761,1.496057,
+       0,0,1,0.309761,0.309761,1.496057,
+       0,0.023241,0.99973,0.356283,0.214602,1.496057,
+       0,0,1,0.379378,0.219034,1.496057,
+       0,0,1,0.379378,0.219034,1.496057,
+       0,0.023241,0.99973,0.356283,0.214602,1.496057,
+       0,0,1,0.356283,0,1.496057,
+       0,0,1,0.379378,0.219034,1.496057,
+       0,0,1,0.356283,0,1.496057,
+       0,0,1,0.438068,0,1.496057,
+       0,0,1,0.379378,0.219034,1.496057,
+       0,0,1,0.438068,0,1.496057,
+       0,0,1,0.423141,0.11338,1.496057,
+       0.041601,0.996196,-0.076566,0,0.438068,1.496057,
+       0.258748,0.96566,-0.023446,0.099412,0.37101,0.793862,
+       -0.001082,0.999993,0.003472,0,0.384098,0.793862,
+       0.258748,0.96566,-0.023446,0.099412,0.37101,0.793862,
+       0.041601,0.996196,-0.076566,0,0.438068,1.496057,
+       0.258058,0.963085,-0.076633,0.11338,0.423141,1.496057,
+       0.258748,0.96566,-0.023446,0.099412,0.37101,0.793862,
+       0.49853,0.863479,-0.076633,0.219034,0.379378,1.496057,
+       0.499776,0.865637,0.029959,0.192049,0.332638,0.793862,
+       0.49853,0.863479,-0.076633,0.219034,0.379378,1.496057,
+       0.258748,0.96566,-0.023446,0.099412,0.37101,0.793862,
+       0.258058,0.963085,-0.076633,0.11338,0.423141,1.496057,
+       0.49853,0.863479,-0.076633,0.219034,0.379378,1.496057,
+       0.72025,0.693666,-0.008188,0.271598,0.271598,0.793862,
+       0.499776,0.865637,0.029959,0.192049,0.332638,0.793862,
+       0.72025,0.693666,-0.008188,0.271598,0.271598,0.793862,
+       0.49853,0.863479,-0.076633,0.219034,0.379378,1.496057,
+       0.705027,0.705027,-0.076633,0.309761,0.309761,1.496057,
+       0.72025,0.693666,-0.008188,0.271598,0.271598,0.793862,
+       0.840797,0.53591,-0.07656,0.379378,0.219034,1.496057,
+       0.887109,0.461549,0.003255,0.332638,0.192049,0.793862,
+       0.840797,0.53591,-0.07656,0.379378,0.219034,1.496057,
+       0.72025,0.693666,-0.008188,0.271598,0.271598,0.793862,
+       0.705027,0.705027,-0.076633,0.309761,0.309761,1.496057,
+       0.976339,0.216221,0.003255,0.37101,0.099412,0.793862,
+       0.988579,0.130149,-0.075981,0.438068,0,1.496057,
+       0.99144,0.130526,0.00323,0.384098,0,0.793862,
+       0.988579,0.130149,-0.075981,0.438068,0,1.496057,
+       0.976339,0.216221,0.003255,0.37101,0.099412,0.793862,
+       0.950851,0.300035,-0.07656,0.423141,0.11338,1.496057,
+       0.887109,0.461549,0.003255,0.332638,0.192049,0.793862,
+       0.950851,0.300035,-0.07656,0.423141,0.11338,1.496057,
+       0.976339,0.216221,0.003255,0.37101,0.099412,0.793862,
+       0.950851,0.300035,-0.07656,0.423141,0.11338,1.496057,
+       0.887109,0.461549,0.003255,0.332638,0.192049,0.793862,
+       0.840797,0.53591,-0.07656,0.379378,0.219034,1.496057,
+       -0.887453,0.460848,0.006822,-0.332638,0.192049,0.793862,
+       -0.9659,0.258812,0.007352,-0.37101,0.099412,0.793862,
+       -0.964063,0.256638,-0.068694,-0.391599,0.104929,1.104458,
+       -0.843132,0.53305,-0.070611,-0.353826,0.204282,1.142231,
+       -0.887453,0.460848,0.006822,-0.332638,0.192049,0.793862,
+       -0.964063,0.256638,-0.068694,-0.391599,0.104929,1.104458,
+       -0.676924,0.732471,-0.072528,-0.292513,0.292513,1.203544,
+       -0.538474,0.842627,0.004963,-0.192049,0.332638,0.793862,
+       -0.738136,0.674626,0.005907,-0.271598,0.271598,0.793862,
+       -0.464387,0.882512,-0.074281,-0.210267,0.364193,1.28579,
+       -0.538474,0.842627,0.004963,-0.192049,0.332638,0.793862,
+       -0.676924,0.732471,-0.072528,-0.292513,0.292513,1.203544,
+       -0.219928,0.972573,-0.075722,-0.110985,0.414201,1.385072,
+       -0.001082,0.999993,0.003472,0,0.384098,0.793862,
+       -0.277867,0.960495,0.015458,-0.099412,0.37101,0.793862,
+       0.041601,0.996196,-0.076566,0,0.438068,1.496057,
+       -0.001082,0.999993,0.003472,0,0.384098,0.793862,
+       -0.219928,0.972573,-0.075722,-0.110985,0.414201,1.385072,
+       -0.738136,0.674626,0.005907,-0.271598,0.271598,0.793862,
+       -0.887453,0.460848,0.006822,-0.332638,0.192049,0.793862,
+       -0.843132,0.53305,-0.070611,-0.353826,0.204282,1.142231,
+       -0.676924,0.732471,-0.072528,-0.292513,0.292513,1.203544,
+       -0.738136,0.674626,0.005907,-0.271598,0.271598,0.793862,
+       -0.843132,0.53305,-0.070611,-0.353826,0.204282,1.142231,
+       -0.964063,0.256638,-0.068694,-0.391599,0.104929,1.104458,
+       -0.991477,0.130067,0.007441,-0.384098,0,0.793862,
+       -0.989436,0.128411,-0.067277,-0.40435,0,1.091707,
+       -0.964063,0.256638,-0.068694,-0.391599,0.104929,1.104458,
+       -0.9659,0.258812,0.007352,-0.37101,0.099412,0.793862,
+       -0.991477,0.130067,0.007441,-0.384098,0,0.793862,
+       -0.464387,0.882512,-0.074281,-0.210267,0.364193,1.28579,
+       -0.277867,0.960495,0.015458,-0.099412,0.37101,0.793862,
+       -0.538474,0.842627,0.004963,-0.192049,0.332638,0.793862,
+       -0.219928,0.972573,-0.075722,-0.110985,0.414201,1.385072,
+       -0.277867,0.960495,0.015458,-0.099412,0.37101,0.793862,
+       -0.464387,0.882512,-0.074281,-0.210267,0.364193,1.28579,
+       -0.738136,0.674626,0.005907,-0.271598,0.271598,0.793862,
+       -0.840359,0.535631,0.083047,-0.389987,0.225159,0,
+       -0.887453,0.460848,0.006822,-0.332638,0.192049,0.793862,
+       -0.840359,0.535631,0.083047,-0.389987,0.225159,0,
+       -0.738136,0.674626,0.005907,-0.271598,0.271598,0.793862,
+       -0.673093,0.73488,0.083047,-0.318423,0.318423,0,
+       -0.001082,0.999993,0.003472,0,0.384098,0.793862,
+       0.257923,0.962583,0.083127,0.116551,0.434974,0,
+       -0.043691,0.995587,0.083047,0,0.450318,0,
+       0.257923,0.962583,0.083127,0.116551,0.434974,0,
+       -0.001082,0.999993,0.003472,0,0.384098,0.793862,
+       0.258748,0.96566,-0.023446,0.099412,0.37101,0.793862,
+       0.499776,0.865637,0.029959,0.192049,0.332638,0.793862,
+       0.673093,0.73488,0.083047,0.318423,0.318423,0,
+       0.498269,0.863028,0.083127,0.225159,0.389987,0,
+       0.673093,0.73488,0.083047,0.318423,0.318423,0,
+       0.499776,0.865637,0.029959,0.192049,0.332638,0.793862,
+       0.72025,0.693666,-0.008188,0.271598,0.271598,0.793862,
+       -0.887453,0.460848,0.006822,-0.332638,0.192049,0.793862,
+       -0.962583,0.257923,0.083127,-0.434974,0.116551,0,
+       -0.9659,0.258812,0.007352,-0.37101,0.099412,0.793862,
+       -0.962583,0.257923,0.083127,-0.434974,0.116551,0,
+       -0.887453,0.460848,0.006822,-0.332638,0.192049,0.793862,
+       -0.840359,0.535631,0.083047,-0.389987,0.225159,0,
+       0.988072,0.130082,0.08242,0.450318,0,0,
+       0.976339,0.216221,0.003255,0.37101,0.099412,0.793862,
+       0.99144,0.130526,0.00323,0.384098,0,0.793862,
+       0.976339,0.216221,0.003255,0.37101,0.099412,0.793862,
+       0.988072,0.130082,0.08242,0.450318,0,0,
+       0.950356,0.299879,0.083047,0.434974,0.116551,0,
+       -0.277867,0.960495,0.015458,-0.099412,0.37101,0.793862,
+       -0.043691,0.995587,0.083047,0,0.450318,0,
+       -0.257923,0.962583,0.083127,-0.116551,0.434974,0,
+       -0.043691,0.995587,0.083047,0,0.450318,0,
+       -0.277867,0.960495,0.015458,-0.099412,0.37101,0.793862,
+       -0.001082,0.999993,0.003472,0,0.384098,0.793862,
+       -0.459957,0.884049,0.083047,-0.225159,0.389987,0,
+       -0.277867,0.960495,0.015458,-0.099412,0.37101,0.793862,
+       -0.257923,0.962583,0.083127,-0.116551,0.434974,0,
+       -0.277867,0.960495,0.015458,-0.099412,0.37101,0.793862,
+       -0.459957,0.884049,0.083047,-0.225159,0.389987,0,
+       -0.538474,0.842627,0.004963,-0.192049,0.332638,0.793862,
+       0.257923,0.962583,0.083127,0.116551,0.434974,0,
+       0.499776,0.865637,0.029959,0.192049,0.332638,0.793862,
+       0.498269,0.863028,0.083127,0.225159,0.389987,0,
+       0.499776,0.865637,0.029959,0.192049,0.332638,0.793862,
+       0.257923,0.962583,0.083127,0.116551,0.434974,0,
+       0.258748,0.96566,-0.023446,0.099412,0.37101,0.793862,
+       0.950356,0.299879,0.083047,0.434974,0.116551,0,
+       0.887109,0.461549,0.003255,0.332638,0.192049,0.793862,
+       0.976339,0.216221,0.003255,0.37101,0.099412,0.793862,
+       0.887109,0.461549,0.003255,0.332638,0.192049,0.793862,
+       0.950356,0.299879,0.083047,0.434974,0.116551,0,
+       0.840359,0.535631,0.083047,0.389987,0.225159,0,
+       -0.673093,0.73488,0.083047,-0.318423,0.318423,0,
+       -0.538474,0.842627,0.004963,-0.192049,0.332638,0.793862,
+       -0.459957,0.884049,0.083047,-0.225159,0.389987,0,
+       -0.538474,0.842627,0.004963,-0.192049,0.332638,0.793862,
+       -0.673093,0.73488,0.083047,-0.318423,0.318423,0,
+       -0.738136,0.674626,0.005907,-0.271598,0.271598,0.793862,
+       -0.991477,0.130067,0.007441,-0.384098,0,0.793862,
+       -0.962583,0.257923,0.083127,-0.434974,0.116551,0,
+       -0.988072,0.130082,0.08242,-0.450318,0,0,
+       -0.962583,0.257923,0.083127,-0.434974,0.116551,0,
+       -0.991477,0.130067,0.007441,-0.384098,0,0.793862,
+       -0.9659,0.258812,0.007352,-0.37101,0.099412,0.793862,
+       0.840359,0.535631,0.083047,0.389987,0.225159,0,
+       0.72025,0.693666,-0.008188,0.271598,0.271598,0.793862,
+       0.887109,0.461549,0.003255,0.332638,0.192049,0.793862,
+       0.72025,0.693666,-0.008188,0.271598,0.271598,0.793862,
+       0.840359,0.535631,0.083047,0.389987,0.225159,0,
+       0.673093,0.73488,0.083047,0.318423,0.318423,0,
+       0.30062,0.039577,-0.952922,0.092213,0,-0.344143,
+       0,0.084475,-0.996426,0,0,-0.356283,
+       0.271764,0.083332,-0.958749,0.089071,0.023866,-0.344143,
+       0.481561,0.134192,-0.866078,0.172071,0.046106,-0.30855,
+       0.30062,0.039577,-0.952922,0.092213,0,-0.344143,
+       0.271764,0.083332,-0.958749,0.089071,0.023866,-0.344143,
+       0.30062,0.039577,-0.952922,0.092213,0,-0.344143,
+       0.481561,0.134192,-0.866078,0.172071,0.046106,-0.30855,
+       0.536052,0.070573,-0.84123,0.178141,0,-0.30855,
+       0.668799,0.16246,-0.725476,0.243346,0.065204,-0.25193,
+       0.536052,0.070573,-0.84123,0.178141,0,-0.30855,
+       0.481561,0.134192,-0.866078,0.172071,0.046106,-0.30855,
+       0.536052,0.070573,-0.84123,0.178141,0,-0.30855,
+       0.668799,0.16246,-0.725476,0.243346,0.065204,-0.25193,
+       0.73389,0.096619,-0.672361,0.25193,0,-0.25193,
+       0.73389,0.096619,-0.672361,0.25193,0,-0.25193,
+       0.831628,0.204716,-0.516223,0.298036,0.079859,-0.178141,
+       0.860389,0.113272,-0.496891,0.30855,0,-0.178141,
+       0.831628,0.204716,-0.516223,0.298036,0.079859,-0.178141,
+       0.73389,0.096619,-0.672361,0.25193,0,-0.25193,
+       0.668799,0.16246,-0.725476,0.243346,0.065204,-0.25193,
+       0.831628,0.204716,-0.516223,0.298036,0.079859,-0.178141,
+       0.958191,0.126148,-0.256821,0.344143,0,-0.092213,
+       0.860389,0.113272,-0.496891,0.30855,0,-0.178141,
+       0.958191,0.126148,-0.256821,0.344143,0,-0.092213,
+       0.831628,0.204716,-0.516223,0.298036,0.079859,-0.178141,
+       0.919462,0.271766,-0.284135,0.332416,0.089071,-0.092213,
+       0.958191,0.126148,-0.256821,0.344143,0,-0.092213,
+       0.957662,0.256605,-0.130526,0.344143,0.092213,0,
+       0.983106,0.129428,-0.129428,0.356283,0,0,
+       0.957662,0.256605,-0.130526,0.344143,0.092213,0,
+       0.958191,0.126148,-0.256821,0.344143,0,-0.092213,
+       0.919462,0.271766,-0.284135,0.332416,0.089071,-0.092213,
+       0.271764,0.083332,-0.958749,0.089071,0.023866,-0.344143,
+       0,0.084475,-0.996426,0,0,-0.356283,
+       0.240936,0.15083,-0.958749,0.079859,0.046106,-0.344143,
+       0.430421,0.254256,-0.866078,0.154275,0.089071,-0.30855,
+       0.271764,0.083332,-0.958749,0.089071,0.023866,-0.344143,
+       0.240936,0.15083,-0.958749,0.079859,0.046106,-0.344143,
+       0.271764,0.083332,-0.958749,0.089071,0.023866,-0.344143,
+       0.430421,0.254256,-0.866078,0.154275,0.089071,-0.30855,
+       0.481561,0.134192,-0.866078,0.172071,0.046106,-0.30855,
+       0.627494,0.326475,-0.70687,0.218178,0.125965,-0.25193,
+       0.481561,0.134192,-0.866078,0.172071,0.046106,-0.30855,
+       0.430421,0.254256,-0.866078,0.154275,0.089071,-0.30855,
+       0.481561,0.134192,-0.866078,0.172071,0.046106,-0.30855,
+       0.627494,0.326475,-0.70687,0.218178,0.125965,-0.25193,
+       0.668799,0.16246,-0.725476,0.243346,0.065204,-0.25193,
+       0.627494,0.326475,-0.70687,0.218178,0.125965,-0.25193,
+       0.831628,0.204716,-0.516223,0.298036,0.079859,-0.178141,
+       0.668799,0.16246,-0.725476,0.243346,0.065204,-0.25193,
+       0.831628,0.204716,-0.516223,0.298036,0.079859,-0.178141,
+       0.627494,0.326475,-0.70687,0.218178,0.125965,-0.25193,
+       0.751368,0.430509,-0.500107,0.267212,0.154275,-0.178141,
+       0.751368,0.430509,-0.500107,0.267212,0.154275,-0.178141,
+       0.919462,0.271766,-0.284135,0.332416,0.089071,-0.092213,
+       0.831628,0.204716,-0.516223,0.298036,0.079859,-0.178141,
+       0.919462,0.271766,-0.284135,0.332416,0.089071,-0.092213,
+       0.751368,0.430509,-0.500107,0.267212,0.154275,-0.178141,
+       0.837235,0.481678,-0.258889,0.298036,0.172071,-0.092213,
+       0.837235,0.481678,-0.258889,0.298036,0.172071,-0.092213,
+       0.957662,0.256605,-0.130526,0.344143,0.092213,0,
+       0.919462,0.271766,-0.284135,0.332416,0.089071,-0.092213,
+       0.957662,0.256605,-0.130526,0.344143,0.092213,0,
+       0.837235,0.481678,-0.258889,0.298036,0.172071,-0.092213,
+       0.836071,0.532898,-0.130403,0.30855,0.178141,0,
+       0.240936,0.15083,-0.958749,0.079859,0.046106,-0.344143,
+       0,0.084475,-0.996426,0,0,-0.356283,
+       0.193688,0.208049,-0.958749,0.065204,0.065204,-0.344143,
+       0.349948,0.356994,-0.866078,0.125965,0.125965,-0.30855,
+       0.240936,0.15083,-0.958749,0.079859,0.046106,-0.344143,
+       0.193688,0.208049,-0.958749,0.065204,0.065204,-0.344143,
+       0.240936,0.15083,-0.958749,0.079859,0.046106,-0.344143,
+       0.349948,0.356994,-0.866078,0.125965,0.125965,-0.30855,
+       0.430421,0.254256,-0.866078,0.154275,0.089071,-0.30855,
+       0.521615,0.477758,-0.70687,0.178141,0.178141,-0.25193,
+       0.430421,0.254256,-0.866078,0.154275,0.089071,-0.30855,
+       0.349948,0.356994,-0.866078,0.125965,0.125965,-0.30855,
+       0.430421,0.254256,-0.866078,0.154275,0.089071,-0.30855,
+       0.521615,0.477758,-0.70687,0.178141,0.178141,-0.25193,
+       0.627494,0.326475,-0.70687,0.218178,0.125965,-0.25193,
+       0.521615,0.477758,-0.70687,0.178141,0.178141,-0.25193,
+       0.751368,0.430509,-0.500107,0.267212,0.154275,-0.178141,
+       0.627494,0.326475,-0.70687,0.218178,0.125965,-0.25193,
+       0.751368,0.430509,-0.500107,0.267212,0.154275,-0.178141,
+       0.521615,0.477758,-0.70687,0.178141,0.178141,-0.25193,
+       0.60815,0.62945,-0.48368,0.218178,0.218178,-0.178141,
+       0.60815,0.62945,-0.48368,0.218178,0.218178,-0.178141,
+       0.837235,0.481678,-0.258889,0.298036,0.172071,-0.092213,
+       0.751368,0.430509,-0.500107,0.267212,0.154275,-0.178141,
+       0.837235,0.481678,-0.258889,0.298036,0.172071,-0.092213,
+       0.60815,0.62945,-0.48368,0.218178,0.218178,-0.178141,
+       0.69037,0.69037,-0.216285,0.243346,0.243346,-0.092213,
+       0.69037,0.69037,-0.216285,0.243346,0.243346,-0.092213,
+       0.836071,0.532898,-0.130403,0.30855,0.178141,0,
+       0.837235,0.481678,-0.258889,0.298036,0.172071,-0.092213,
+       0.836071,0.532898,-0.130403,0.30855,0.178141,0,
+       0.69037,0.69037,-0.216285,0.243346,0.243346,-0.092213,
+       0.701057,0.701057,-0.130526,0.25193,0.25193,0,
+       0.193688,0.208049,-0.958749,0.065204,0.065204,-0.344143,
+       0,0.084475,-0.996426,0,0,-0.356283,
+       0.133242,0.25109,-0.958749,0.046106,0.079859,-0.344143,
+       0.245627,0.435403,-0.866078,0.089071,0.154275,-0.30855,
+       0.193688,0.208049,-0.958749,0.065204,0.065204,-0.344143,
+       0.133242,0.25109,-0.958749,0.046106,0.079859,-0.344143,
+       0.193688,0.208049,-0.958749,0.065204,0.065204,-0.344143,
+       0.245627,0.435403,-0.866078,0.089071,0.154275,-0.30855,
+       0.349948,0.356994,-0.866078,0.125965,0.125965,-0.30855,
+       0.370077,0.617872,-0.693742,0.125965,0.218178,-0.25193,
+       0.349948,0.356994,-0.866078,0.125965,0.125965,-0.30855,
+       0.245627,0.435403,-0.866078,0.089071,0.154275,-0.30855,
+       0.349948,0.356994,-0.866078,0.125965,0.125965,-0.30855,
+       0.370077,0.617872,-0.693742,0.125965,0.218178,-0.25193,
+       0.521615,0.477758,-0.70687,0.178141,0.178141,-0.25193,
+       0.370077,0.617872,-0.693742,0.125965,0.218178,-0.25193,
+       0.60815,0.62945,-0.48368,0.218178,0.218178,-0.178141,
+       0.521615,0.477758,-0.70687,0.178141,0.178141,-0.25193,
+       0.60815,0.62945,-0.48368,0.218178,0.218178,-0.178141,
+       0.370077,0.617872,-0.693742,0.125965,0.218178,-0.25193,
+       0.418063,0.77311,-0.476995,0.154275,0.267212,-0.178141,
+       0.481678,0.837235,-0.258889,0.172071,0.298036,-0.092213,
+       0.60815,0.62945,-0.48368,0.218178,0.218178,-0.178141,
+       0.418063,0.77311,-0.476995,0.154275,0.267212,-0.178141,
+       0.60815,0.62945,-0.48368,0.218178,0.218178,-0.178141,
+       0.481678,0.837235,-0.258889,0.172071,0.298036,-0.092213,
+       0.69037,0.69037,-0.216285,0.243346,0.243346,-0.092213,
+       0.532898,0.836071,-0.130403,0.178141,0.30855,0,
+       0.69037,0.69037,-0.216285,0.243346,0.243346,-0.092213,
+       0.481678,0.837235,-0.258889,0.172071,0.298036,-0.092213,
+       0.69037,0.69037,-0.216285,0.243346,0.243346,-0.092213,
+       0.532898,0.836071,-0.130403,0.178141,0.30855,0,
+       0.701057,0.701057,-0.130526,0.25193,0.25193,0,
+       0.133242,0.25109,-0.958749,0.046106,0.079859,-0.344143,
+       0,0.084475,-0.996426,0,0,-0.356283,
+       0.063714,0.27702,-0.958749,0.023866,0.089071,-0.344143,
+       0.133251,0.458018,-0.878899,0.046106,0.172071,-0.30855,
+       0.133242,0.25109,-0.958749,0.046106,0.079859,-0.344143,
+       0.063714,0.27702,-0.958749,0.023866,0.089071,-0.344143,
+       0.133242,0.25109,-0.958749,0.046106,0.079859,-0.344143,
+       0.133251,0.458018,-0.878899,0.046106,0.172071,-0.30855,
+       0.245627,0.435403,-0.866078,0.089071,0.154275,-0.30855,
+       0.174788,0.652319,-0.737516,0.065204,0.243346,-0.25193,
+       0.245627,0.435403,-0.866078,0.089071,0.154275,-0.30855,
+       0.133251,0.458018,-0.878899,0.046106,0.172071,-0.30855,
+       0.245627,0.435403,-0.866078,0.089071,0.154275,-0.30855,
+       0.174788,0.652319,-0.737516,0.065204,0.243346,-0.25193,
+       0.370077,0.617872,-0.693742,0.125965,0.218178,-0.25193,
+       0.204716,0.831628,-0.516223,0.079859,0.298036,-0.178141,
+       0.370077,0.617872,-0.693742,0.125965,0.218178,-0.25193,
+       0.174788,0.652319,-0.737516,0.065204,0.243346,-0.25193,
+       0.370077,0.617872,-0.693742,0.125965,0.218178,-0.25193,
+       0.204716,0.831628,-0.516223,0.079859,0.298036,-0.178141,
+       0.418063,0.77311,-0.476995,0.154275,0.267212,-0.178141,
+       0.271766,0.919462,-0.284135,0.089071,0.332416,-0.092213,
+       0.418063,0.77311,-0.476995,0.154275,0.267212,-0.178141,
+       0.204716,0.831628,-0.516223,0.079859,0.298036,-0.178141,
+       0.418063,0.77311,-0.476995,0.154275,0.267212,-0.178141,
+       0.271766,0.919462,-0.284135,0.089071,0.332416,-0.092213,
+       0.481678,0.837235,-0.258889,0.172071,0.298036,-0.092213,
+       0.256605,0.957662,-0.130526,0.092213,0.344143,0,
+       0.481678,0.837235,-0.258889,0.172071,0.298036,-0.092213,
+       0.271766,0.919462,-0.284135,0.089071,0.332416,-0.092213,
+       0.481678,0.837235,-0.258889,0.172071,0.298036,-0.092213,
+       0.256605,0.957662,-0.130526,0.092213,0.344143,0,
+       0.532898,0.836071,-0.130403,0.178141,0.30855,0,
+       0.063714,0.27702,-0.958749,0.023866,0.089071,-0.344143,
+       0,0.084475,-0.996426,0,0,-0.356283,
+       0,0.258748,-0.965945,0,0.092213,-0.344143,
+       0.011532,0.483485,-0.875276,0,0.178141,-0.30855,
+       0.063714,0.27702,-0.958749,0.023866,0.089071,-0.344143,
+       0,0.258748,-0.965945,0,0.092213,-0.344143,
+       0.063714,0.27702,-0.958749,0.023866,0.089071,-0.344143,
+       0.011532,0.483485,-0.875276,0,0.178141,-0.30855,
+       0.133251,0.458018,-0.878899,0.046106,0.172071,-0.30855,
+       0.174788,0.652319,-0.737516,0.065204,0.243346,-0.25193,
+       0.011532,0.483485,-0.875276,0,0.178141,-0.30855,
+       0.004051,0.706997,-0.707204,0,0.25193,-0.25193,
+       0.011532,0.483485,-0.875276,0,0.178141,-0.30855,
+       0.174788,0.652319,-0.737516,0.065204,0.243346,-0.25193,
+       0.133251,0.458018,-0.878899,0.046106,0.172071,-0.30855,
+       0.004051,0.706997,-0.707204,0,0.25193,-0.25193,
+       0.204716,0.831628,-0.516223,0.079859,0.298036,-0.178141,
+       0.174788,0.652319,-0.737516,0.065204,0.243346,-0.25193,
+       0.204716,0.831628,-0.516223,0.079859,0.298036,-0.178141,
+       0.004051,0.706997,-0.707204,0,0.25193,-0.25193,
+       -0.037975,0.865338,-0.499749,0,0.30855,-0.178141,
+       0.04235,0.96504,-0.258657,0,0.344143,-0.092213,
+       0.204716,0.831628,-0.516223,0.079859,0.298036,-0.178141,
+       -0.037975,0.865338,-0.499749,0,0.30855,-0.178141,
+       0.204716,0.831628,-0.516223,0.079859,0.298036,-0.178141,
+       0.04235,0.96504,-0.258657,0,0.344143,-0.092213,
+       0.271766,0.919462,-0.284135,0.089071,0.332416,-0.092213,
+       0.04235,0.96504,-0.258657,0,0.344143,-0.092213,
+       0.256605,0.957662,-0.130526,0.092213,0.344143,0,
+       0.271766,0.919462,-0.284135,0.089071,0.332416,-0.092213,
+       0.256605,0.957662,-0.130526,0.092213,0.344143,0,
+       0.04235,0.96504,-0.258657,0,0.344143,-0.092213,
+       -0.043468,0.990508,-0.130403,0,0.356283,0,
+       0,0.084475,-0.996426,0,0,-0.356283,
+       -0.063714,0.27702,-0.958749,-0.023866,0.089071,-0.344143,
+       0,0.258748,-0.965945,0,0.092213,-0.344143,
+       0.011532,0.483485,-0.875276,0,0.178141,-0.30855,
+       -0.063714,0.27702,-0.958749,-0.023866,0.089071,-0.344143,
+       -0.124567,0.48414,-0.866078,-0.046106,0.172071,-0.30855,
+       -0.063714,0.27702,-0.958749,-0.023866,0.089071,-0.344143,
+       0.011532,0.483485,-0.875276,0,0.178141,-0.30855,
+       0,0.258748,-0.965945,0,0.092213,-0.344143,
+       0.004051,0.706997,-0.707204,0,0.25193,-0.25193,
+       -0.124567,0.48414,-0.866078,-0.046106,0.172071,-0.30855,
+       -0.19755,0.692601,-0.693742,-0.065204,0.243346,-0.25193,
+       -0.124567,0.48414,-0.866078,-0.046106,0.172071,-0.30855,
+       0.004051,0.706997,-0.707204,0,0.25193,-0.25193,
+       0.011532,0.483485,-0.875276,0,0.178141,-0.30855,
+       -0.19755,0.692601,-0.693742,-0.065204,0.243346,-0.25193,
+       -0.037975,0.865338,-0.499749,0,0.30855,-0.178141,
+       0.004051,0.706997,-0.707204,0,0.25193,-0.25193,
+       -0.037975,0.865338,-0.499749,0,0.30855,-0.178141,
+       -0.19755,0.692601,-0.693742,-0.065204,0.243346,-0.25193,
+       -0.224128,0.836455,-0.500109,-0.079859,0.298036,-0.178141,
+       -0.249995,0.932995,-0.258889,-0.089071,0.332416,-0.092213,
+       -0.037975,0.865338,-0.499749,0,0.30855,-0.178141,
+       -0.224128,0.836455,-0.500109,-0.079859,0.298036,-0.178141,
+       -0.037975,0.865338,-0.499749,0,0.30855,-0.178141,
+       -0.249995,0.932995,-0.258889,-0.089071,0.332416,-0.092213,
+       0.04235,0.96504,-0.258657,0,0.344143,-0.092213,
+       -0.249995,0.932995,-0.258889,-0.089071,0.332416,-0.092213,
+       -0.043468,0.990508,-0.130403,0,0.356283,0,
+       0.04235,0.96504,-0.258657,0,0.344143,-0.092213,
+       -0.043468,0.990508,-0.130403,0,0.356283,0,
+       -0.249995,0.932995,-0.258889,-0.089071,0.332416,-0.092213,
+       -0.256605,0.957662,-0.130526,-0.092213,0.344143,0,
+       0,0.084475,-0.996426,0,0,-0.356283,
+       -0.133242,0.25109,-0.958749,-0.046106,0.079859,-0.344143,
+       -0.063714,0.27702,-0.958749,-0.023866,0.089071,-0.344143,
+       -0.124567,0.48414,-0.866078,-0.046106,0.172071,-0.30855,
+       -0.133242,0.25109,-0.958749,-0.046106,0.079859,-0.344143,
+       -0.245627,0.435403,-0.866078,-0.089071,0.154275,-0.30855,
+       -0.133242,0.25109,-0.958749,-0.046106,0.079859,-0.344143,
+       -0.124567,0.48414,-0.866078,-0.046106,0.172071,-0.30855,
+       -0.063714,0.27702,-0.958749,-0.023866,0.089071,-0.344143,
+       -0.19755,0.692601,-0.693742,-0.065204,0.243346,-0.25193,
+       -0.245627,0.435403,-0.866078,-0.089071,0.154275,-0.30855,
+       -0.380188,0.596483,-0.70687,-0.125965,0.218178,-0.25193,
+       -0.245627,0.435403,-0.866078,-0.089071,0.154275,-0.30855,
+       -0.19755,0.692601,-0.693742,-0.065204,0.243346,-0.25193,
+       -0.124567,0.48414,-0.866078,-0.046106,0.172071,-0.30855,
+       -0.424514,0.765403,-0.48368,-0.154275,0.267212,-0.178141,
+       -0.19755,0.692601,-0.693742,-0.065204,0.243346,-0.25193,
+       -0.380188,0.596483,-0.70687,-0.125965,0.218178,-0.25193,
+       -0.19755,0.692601,-0.693742,-0.065204,0.243346,-0.25193,
+       -0.424514,0.765403,-0.48368,-0.154275,0.267212,-0.178141,
+       -0.224128,0.836455,-0.500109,-0.079859,0.298036,-0.178141,
+       -0.424514,0.765403,-0.48368,-0.154275,0.267212,-0.178141,
+       -0.249995,0.932995,-0.258889,-0.089071,0.332416,-0.092213,
+       -0.224128,0.836455,-0.500109,-0.079859,0.298036,-0.178141,
+       -0.249995,0.932995,-0.258889,-0.089071,0.332416,-0.092213,
+       -0.424514,0.765403,-0.48368,-0.154275,0.267212,-0.178141,
+       -0.482954,0.8365,-0.258889,-0.172071,0.298036,-0.092213,
+       -0.495722,0.858616,-0.130526,-0.178141,0.30855,0,
+       -0.249995,0.932995,-0.258889,-0.089071,0.332416,-0.092213,
+       -0.482954,0.8365,-0.258889,-0.172071,0.298036,-0.092213,
+       -0.249995,0.932995,-0.258889,-0.089071,0.332416,-0.092213,
+       -0.495722,0.858616,-0.130526,-0.178141,0.30855,0,
+       -0.256605,0.957662,-0.130526,-0.092213,0.344143,0,
+       0,0.084475,-0.996426,0,0,-0.356283,
+       -0.193688,0.208049,-0.958749,-0.065204,0.065204,-0.344143,
+       -0.133242,0.25109,-0.958749,-0.046106,0.079859,-0.344143,
+       -0.245627,0.435403,-0.866078,-0.089071,0.154275,-0.30855,
+       -0.193688,0.208049,-0.958749,-0.065204,0.065204,-0.344143,
+       -0.349948,0.356994,-0.866078,-0.125965,0.125965,-0.30855,
+       -0.193688,0.208049,-0.958749,-0.065204,0.065204,-0.344143,
+       -0.245627,0.435403,-0.866078,-0.089071,0.154275,-0.30855,
+       -0.133242,0.25109,-0.958749,-0.046106,0.079859,-0.344143,
+       -0.380188,0.596483,-0.70687,-0.125965,0.218178,-0.25193,
+       -0.349948,0.356994,-0.866078,-0.125965,0.125965,-0.30855,
+       -0.521615,0.477758,-0.70687,-0.178141,0.178141,-0.25193,
+       -0.349948,0.356994,-0.866078,-0.125965,0.125965,-0.30855,
+       -0.380188,0.596483,-0.70687,-0.125965,0.218178,-0.25193,
+       -0.245627,0.435403,-0.866078,-0.089071,0.154275,-0.30855,
+       -0.614342,0.610308,-0.500107,-0.218178,0.218178,-0.178141,
+       -0.380188,0.596483,-0.70687,-0.125965,0.218178,-0.25193,
+       -0.521615,0.477758,-0.70687,-0.178141,0.178141,-0.25193,
+       -0.380188,0.596483,-0.70687,-0.125965,0.218178,-0.25193,
+       -0.614342,0.610308,-0.500107,-0.218178,0.218178,-0.178141,
+       -0.424514,0.765403,-0.48368,-0.154275,0.267212,-0.178141,
+       -0.673819,0.698612,-0.240642,-0.243346,0.243346,-0.092213,
+       -0.424514,0.765403,-0.48368,-0.154275,0.267212,-0.178141,
+       -0.614342,0.610308,-0.500107,-0.218178,0.218178,-0.178141,
+       -0.424514,0.765403,-0.48368,-0.154275,0.267212,-0.178141,
+       -0.673819,0.698612,-0.240642,-0.243346,0.243346,-0.092213,
+       -0.482954,0.8365,-0.258889,-0.172071,0.298036,-0.092213,
+       -0.673819,0.698612,-0.240642,-0.243346,0.243346,-0.092213,
+       -0.495722,0.858616,-0.130526,-0.178141,0.30855,0,
+       -0.482954,0.8365,-0.258889,-0.172071,0.298036,-0.092213,
+       -0.495722,0.858616,-0.130526,-0.178141,0.30855,0,
+       -0.673819,0.698612,-0.240642,-0.243346,0.243346,-0.092213,
+       -0.701057,0.701057,-0.130526,-0.25193,0.25193,0,
+       0,0.084475,-0.996426,0,0,-0.356283,
+       -0.240936,0.15083,-0.958749,-0.079859,0.046106,-0.344143,
+       -0.193688,0.208049,-0.958749,-0.065204,0.065204,-0.344143,
+       -0.349948,0.356994,-0.866078,-0.125965,0.125965,-0.30855,
+       -0.240936,0.15083,-0.958749,-0.079859,0.046106,-0.344143,
+       -0.430421,0.254256,-0.866078,-0.154275,0.089071,-0.30855,
+       -0.240936,0.15083,-0.958749,-0.079859,0.046106,-0.344143,
+       -0.349948,0.356994,-0.866078,-0.125965,0.125965,-0.30855,
+       -0.193688,0.208049,-0.958749,-0.065204,0.065204,-0.344143,
+       -0.521615,0.477758,-0.70687,-0.178141,0.178141,-0.25193,
+       -0.430421,0.254256,-0.866078,-0.154275,0.089071,-0.30855,
+       -0.627494,0.326475,-0.70687,-0.218178,0.125965,-0.25193,
+       -0.430421,0.254256,-0.866078,-0.154275,0.089071,-0.30855,
+       -0.521615,0.477758,-0.70687,-0.178141,0.178141,-0.25193,
+       -0.349948,0.356994,-0.866078,-0.125965,0.125965,-0.30855,
+       -0.751368,0.430509,-0.500107,-0.267212,0.154275,-0.178141,
+       -0.521615,0.477758,-0.70687,-0.178141,0.178141,-0.25193,
+       -0.627494,0.326475,-0.70687,-0.218178,0.125965,-0.25193,
+       -0.521615,0.477758,-0.70687,-0.178141,0.178141,-0.25193,
+       -0.751368,0.430509,-0.500107,-0.267212,0.154275,-0.178141,
+       -0.614342,0.610308,-0.500107,-0.218178,0.218178,-0.178141,
+       -0.837235,0.481678,-0.258889,-0.298036,0.172071,-0.092213,
+       -0.614342,0.610308,-0.500107,-0.218178,0.218178,-0.178141,
+       -0.751368,0.430509,-0.500107,-0.267212,0.154275,-0.178141,
+       -0.614342,0.610308,-0.500107,-0.218178,0.218178,-0.178141,
+       -0.837235,0.481678,-0.258889,-0.298036,0.172071,-0.092213,
+       -0.673819,0.698612,-0.240642,-0.243346,0.243346,-0.092213,
+       -0.836071,0.532898,-0.130403,-0.30855,0.178141,0,
+       -0.673819,0.698612,-0.240642,-0.243346,0.243346,-0.092213,
+       -0.837235,0.481678,-0.258889,-0.298036,0.172071,-0.092213,
+       -0.673819,0.698612,-0.240642,-0.243346,0.243346,-0.092213,
+       -0.836071,0.532898,-0.130403,-0.30855,0.178141,0,
+       -0.701057,0.701057,-0.130526,-0.25193,0.25193,0,
+       0,0.084475,-0.996426,0,0,-0.356283,
+       -0.271764,0.083332,-0.958749,-0.089071,0.023866,-0.344143,
+       -0.240936,0.15083,-0.958749,-0.079859,0.046106,-0.344143,
+       -0.430421,0.254256,-0.866078,-0.154275,0.089071,-0.30855,
+       -0.271764,0.083332,-0.958749,-0.089071,0.023866,-0.344143,
+       -0.481561,0.134192,-0.866078,-0.172071,0.046106,-0.30855,
+       -0.271764,0.083332,-0.958749,-0.089071,0.023866,-0.344143,
+       -0.430421,0.254256,-0.866078,-0.154275,0.089071,-0.30855,
+       -0.240936,0.15083,-0.958749,-0.079859,0.046106,-0.344143,
+       -0.627494,0.326475,-0.70687,-0.218178,0.125965,-0.25193,
+       -0.481561,0.134192,-0.866078,-0.172071,0.046106,-0.30855,
+       -0.668799,0.16246,-0.725476,-0.243346,0.065204,-0.25193,
+       -0.481561,0.134192,-0.866078,-0.172071,0.046106,-0.30855,
+       -0.627494,0.326475,-0.70687,-0.218178,0.125965,-0.25193,
+       -0.430421,0.254256,-0.866078,-0.154275,0.089071,-0.30855,
+       -0.831628,0.204716,-0.516223,-0.298036,0.079859,-0.178141,
+       -0.627494,0.326475,-0.70687,-0.218178,0.125965,-0.25193,
+       -0.668799,0.16246,-0.725476,-0.243346,0.065204,-0.25193,
+       -0.627494,0.326475,-0.70687,-0.218178,0.125965,-0.25193,
+       -0.831628,0.204716,-0.516223,-0.298036,0.079859,-0.178141,
+       -0.751368,0.430509,-0.500107,-0.267212,0.154275,-0.178141,
+       -0.919462,0.271766,-0.284135,-0.332416,0.089071,-0.092213,
+       -0.751368,0.430509,-0.500107,-0.267212,0.154275,-0.178141,
+       -0.831628,0.204716,-0.516223,-0.298036,0.079859,-0.178141,
+       -0.751368,0.430509,-0.500107,-0.267212,0.154275,-0.178141,
+       -0.919462,0.271766,-0.284135,-0.332416,0.089071,-0.092213,
+       -0.837235,0.481678,-0.258889,-0.298036,0.172071,-0.092213,
+       -0.957662,0.256605,-0.130526,-0.344143,0.092213,0,
+       -0.837235,0.481678,-0.258889,-0.298036,0.172071,-0.092213,
+       -0.919462,0.271766,-0.284135,-0.332416,0.089071,-0.092213,
+       -0.837235,0.481678,-0.258889,-0.298036,0.172071,-0.092213,
+       -0.957662,0.256605,-0.130526,-0.344143,0.092213,0,
+       -0.836071,0.532898,-0.130403,-0.30855,0.178141,0,
+       0,0.084475,-0.996426,0,0,-0.356283,
+       -0.30062,0.039577,-0.952922,-0.092213,0,-0.344143,
+       -0.271764,0.083332,-0.958749,-0.089071,0.023866,-0.344143,
+       -0.481561,0.134192,-0.866078,-0.172071,0.046106,-0.30855,
+       -0.30062,0.039577,-0.952922,-0.092213,0,-0.344143,
+       -0.536052,0.070573,-0.84123,-0.178141,0,-0.30855,
+       -0.30062,0.039577,-0.952922,-0.092213,0,-0.344143,
+       -0.481561,0.134192,-0.866078,-0.172071,0.046106,-0.30855,
+       -0.271764,0.083332,-0.958749,-0.089071,0.023866,-0.344143,
+       -0.668799,0.16246,-0.725476,-0.243346,0.065204,-0.25193,
+       -0.536052,0.070573,-0.84123,-0.178141,0,-0.30855,
+       -0.73389,0.096619,-0.672361,-0.25193,0,-0.25193,
+       -0.536052,0.070573,-0.84123,-0.178141,0,-0.30855,
+       -0.668799,0.16246,-0.725476,-0.243346,0.065204,-0.25193,
+       -0.481561,0.134192,-0.866078,-0.172071,0.046106,-0.30855,
+       -0.831628,0.204716,-0.516223,-0.298036,0.079859,-0.178141,
+       -0.73389,0.096619,-0.672361,-0.25193,0,-0.25193,
+       -0.860389,0.113272,-0.496891,-0.30855,0,-0.178141,
+       -0.73389,0.096619,-0.672361,-0.25193,0,-0.25193,
+       -0.831628,0.204716,-0.516223,-0.298036,0.079859,-0.178141,
+       -0.668799,0.16246,-0.725476,-0.243346,0.065204,-0.25193,
+       -0.958191,0.126148,-0.256821,-0.344143,0,-0.092213,
+       -0.831628,0.204716,-0.516223,-0.298036,0.079859,-0.178141,
+       -0.860389,0.113272,-0.496891,-0.30855,0,-0.178141,
+       -0.831628,0.204716,-0.516223,-0.298036,0.079859,-0.178141,
+       -0.958191,0.126148,-0.256821,-0.344143,0,-0.092213,
+       -0.919462,0.271766,-0.284135,-0.332416,0.089071,-0.092213,
+       -0.957662,0.256605,-0.130526,-0.344143,0.092213,0,
+       -0.958191,0.126148,-0.256821,-0.344143,0,-0.092213,
+       -0.983106,0.129428,-0.129428,-0.356283,0,0,
+       -0.958191,0.126148,-0.256821,-0.344143,0,-0.092213,
+       -0.957662,0.256605,-0.130526,-0.344143,0.092213,0,
+       -0.919462,0.271766,-0.284135,-0.332416,0.089071,-0.092213,
+       0,0,-1,-0.434974,0.116551,0,
+       0,0,-1,-0.356283,0,0,
+       0,0,-1,-0.450318,0,0,
+       0,0,-1,-0.356283,0,0,
+       0,0,-1,-0.434974,0.116551,0,
+       0,0,-1,-0.389987,0.225159,0,
+       0,0,-1,-0.356283,0,0,
+       0,0,-1,-0.389987,0.225159,0,
+       0,0,-1,-0.318423,0.318423,0,
+       0,0,-1,-0.356283,0,0,
+       0,0,-1,-0.318423,0.318423,0,
+       0,0,-1,-0.344143,0.092213,0,
+       0,0,-1,-0.344143,0.092213,0,
+       0,0,-1,-0.318423,0.318423,0,
+       0,0,-1,-0.30855,0.178141,0,
+       0,0,-1,-0.30855,0.178141,0,
+       0,0,-1,-0.318423,0.318423,0,
+       0,0,-1,-0.225159,0.389987,0,
+       0,0,-1,-0.30855,0.178141,0,
+       0,0,-1,-0.225159,0.389987,0,
+       0,0,-1,-0.25193,0.25193,0,
+       0,0,-1,-0.25193,0.25193,0,
+       0,0,-1,-0.225159,0.389987,0,
+       0,0,-1,-0.178141,0.30855,0,
+       0,0,-1,-0.178141,0.30855,0,
+       0,0,-1,-0.225159,0.389987,0,
+       0,0,-1,-0.116551,0.434974,0,
+       0,0,-1,-0.178141,0.30855,0,
+       0,0,-1,-0.116551,0.434974,0,
+       0,0,-1,-0.092213,0.344143,0,
+       0,0,-1,-0.092213,0.344143,0,
+       0,0,-1,-0.116551,0.434974,0,
+       0,0,-1,0,0.450318,0,
+       0,0,-1,-0.092213,0.344143,0,
+       0,0,-1,0,0.450318,0,
+       0,0,-1,0,0.356283,0,
+       0,0,-1,0,0.356283,0,
+       0,0,-1,0,0.450318,0,
+       0,0,-1,0.116551,0.434974,0,
+       0,0,-1,0,0.356283,0,
+       0,0,-1,0.116551,0.434974,0,
+       0,0,-1,0.092213,0.344143,0,
+       0,0,-1,0.092213,0.344143,0,
+       0,0,-1,0.116551,0.434974,0,
+       0,0,-1,0.178141,0.30855,0,
+       0,0,-1,0.178141,0.30855,0,
+       0,0,-1,0.116551,0.434974,0,
+       0,0,-1,0.225159,0.389987,0,
+       0,0,-1,0.178141,0.30855,0,
+       0,0,-1,0.225159,0.389987,0,
+       0,0,-1,0.25193,0.25193,0,
+       0,0,-1,0.25193,0.25193,0,
+       0,0,-1,0.225159,0.389987,0,
+       0,0,-1,0.318423,0.318423,0,
+       0,0,-1,0.25193,0.25193,0,
+       0,0,-1,0.318423,0.318423,0,
+       0,0,-1,0.30855,0.178141,0,
+       0,0,-1,0.30855,0.178141,0,
+       0,0,-1,0.318423,0.318423,0,
+       0,0,-1,0.344143,0.092213,0,
+       0,0,-1,0.344143,0.092213,0,
+       0,0,-1,0.318423,0.318423,0,
+       0,0,-1,0.389987,0.225159,0,
+       0,0,-1,0.344143,0.092213,0,
+       0,0,-1,0.389987,0.225159,0,
+       0,0,-1,0.356283,0,0,
+       0,0,-1,0.356283,0,0,
+       0,0,-1,0.389987,0.225159,0,
+       0,0,-1,0.450318,0,0,
+       0,0,-1,0.450318,0,0,
+       0,0,-1,0.389987,0.225159,0,
+       0,0,-1,0.434974,0.116551,0
+};
+static const struct gllist handsy_model_thumb_metacarpal_frame = {
+ GL_N3F_V3F, GL_TRIANGLES, 795, handsy_model_thumb_metacarpal_data, 0
+};
+const struct gllist *handsy_model_thumb_metacarpal = &handsy_model_thumb_metacarpal_frame;
+
+static const float handsy_model_thumb_proximal_data[] = {
+       -0.936373,0.288163,0.20042,-0.353285,0.094662,0.353285,
+       -0.973563,0.117553,0.195847,-0.355438,0.071069,0.355438,
+       -0.964953,0.236604,0.113507,-0.335809,0.08998,0.441663,
+       0.518608,0.846422,0.120897,0.173828,0.301078,0.441663,
+       0.661729,0.722474,0.200364,0.309761,0.309761,0,
+       0.452191,0.869124,0.200364,0.219034,0.379378,0,
+       -0.497453,0.861614,0.100805,-0.173828,0.301078,0.441663,
+       -0.375037,0.90542,0.198902,-0.131358,0.386837,0.131358,
+       -0.489842,0.848431,0.200549,-0.198696,0.344152,0.198696,
+       0.826171,0.526588,0.200364,0.379378,0.219034,0,
+       0.882604,0.459204,0.100709,0.301078,0.173828,0.441663,
+       0.934311,0.294816,0.200364,0.423141,0.11338,0,
+       -0.256474,0.957172,0.134323,-0.08998,0.335809,0.441663,
+       -0.042953,0.978779,0.200364,0,0.438068,0,
+       -0.253561,0.946302,0.200549,-0.107675,0.40185,0.107675,
+       0.275694,0.957356,0.086383,0.08998,0.335809,0.441663,
+       0.452191,0.869124,0.200364,0.219034,0.379378,0,
+       0.211837,0.956545,0.200364,0.11338,0.423141,0,
+       -0.692741,0.692741,0.200549,-0.270592,0.270592,0.270592,
+       -0.777502,0.596598,0.198902,-0.291297,0.236707,0.291297,
+       -0.730758,0.669317,0.134196,-0.24583,0.24583,0.441663,
+       -0.730758,0.669317,0.134196,-0.24583,0.24583,0.441663,
+       -0.596598,0.777502,0.198902,-0.233181,0.30887,0.233181,
+       -0.692741,0.692741,0.200549,-0.270592,0.270592,0.270592,
+       -0.826171,0.526588,0.200364,-0.322249,0.18605,0.322249,
+       -0.90542,0.375037,0.198902,-0.331519,0.158753,0.331519,
+       -0.878954,0.457636,0.134198,-0.301078,0.173828,0.441663,
+       0.934311,0.294816,0.200364,0.423141,0.11338,0,
+       0.965222,0.231799,0.120897,0.335809,0.08998,0.441663,
+       0.971635,0.127918,0.198902,0.438068,0,0,
+       0.661729,0.722474,0.200364,0.309761,0.309761,0,
+       0.717436,0.691248,0.086383,0.24583,0.24583,0.441663,
+       0.826171,0.526588,0.200364,0.379378,0.219034,0,
+       -0.000441,0.994906,0.100805,0,0.347655,0.441663,
+       0.211837,0.956545,0.200364,0.11338,0.423141,0,
+       -0.042953,0.978779,0.200364,0,0.438068,0,
+       -0.497453,0.861614,0.100805,-0.173828,0.301078,0.441663,
+       -0.258341,0.964141,-0.06076,-0.08998,0.335809,0.768373,
+       -0.256474,0.957172,0.134323,-0.08998,0.335809,0.441663,
+       -0.258341,0.964141,-0.06076,-0.08998,0.335809,0.768373,
+       -0.497453,0.861614,0.100805,-0.173828,0.301078,0.441663,
+       -0.496295,0.859609,-0.121508,-0.173828,0.301078,0.768373,
+       0.275694,0.957356,0.086383,0.08998,0.335809,0.441663,
+       0.482303,0.872513,-0.078134,0.173828,0.301078,0.768373,
+       0.518608,0.846422,0.120897,0.173828,0.301078,0.441663,
+       0.482303,0.872513,-0.078134,0.173828,0.301078,0.768373,
+       0.275694,0.957356,0.086383,0.08998,0.335809,0.441663,
+       0.232074,0.966532,-0.109355,0.08998,0.335809,0.768373,
+       0.295926,0.937828,-0.181402,0.111086,0.414579,1.210037,
+       0.482303,0.872513,-0.078134,0.173828,0.301078,0.768373,
+       0.232074,0.966532,-0.109355,0.08998,0.335809,0.768373,
+       0.482303,0.872513,-0.078134,0.173828,0.301078,0.768373,
+       0.295926,0.937828,-0.181402,0.111086,0.414579,1.210037,
+       0.52857,0.829281,-0.181402,0.214602,0.371702,1.210037,
+       -0.872513,0.482303,-0.078134,-0.301078,0.173828,0.768373,
+       -0.730758,0.669317,0.134196,-0.24583,0.24583,0.441663,
+       -0.878954,0.457636,0.134198,-0.301078,0.173828,0.441663,
+       -0.730758,0.669317,0.134196,-0.24583,0.24583,0.441663,
+       -0.872513,0.482303,-0.078134,-0.301078,0.173828,0.768373,
+       -0.716053,0.690228,-0.104175,-0.24583,0.24583,0.768373,
+       -0.258341,0.964141,-0.06076,-0.08998,0.335809,0.768373,
+       -0.000441,0.994906,0.100805,0,0.347655,0.441663,
+       -0.256474,0.957172,0.134323,-0.08998,0.335809,0.441663,
+       -0.000441,0.994906,0.100805,0,0.347655,0.441663,
+       -0.258341,0.964141,-0.06076,-0.08998,0.335809,0.768373,
+       0.00036,0.995835,-0.091178,0,0.347655,0.768373,
+       0.717436,0.691248,0.086383,0.24583,0.24583,0.441663,
+       0.862238,0.498229,-0.091178,0.301078,0.173828,0.768373,
+       0.882604,0.459204,0.100709,0.301078,0.173828,0.441663,
+       0.862238,0.498229,-0.091178,0.301078,0.173828,0.768373,
+       0.717436,0.691248,0.086383,0.24583,0.24583,0.441663,
+       0.701867,0.701867,-0.121508,0.24583,0.24583,0.768373,
+       0.701867,0.701867,-0.121508,0.24583,0.24583,0.768373,
+       0.829281,0.52857,-0.181402,0.371702,0.214602,1.210037,
+       0.862238,0.498229,-0.091178,0.301078,0.173828,0.768373,
+       0.829281,0.52857,-0.181402,0.371702,0.214602,1.210037,
+       0.701867,0.701867,-0.121508,0.24583,0.24583,0.768373,
+       0.695353,0.695353,-0.181571,0.303493,0.303493,1.210037,
+       -0.716053,0.690228,-0.104175,-0.24583,0.24583,0.768373,
+       -0.497453,0.861614,0.100805,-0.173828,0.301078,0.441663,
+       -0.730758,0.669317,0.134196,-0.24583,0.24583,0.441663,
+       -0.497453,0.861614,0.100805,-0.173828,0.301078,0.441663,
+       -0.716053,0.690228,-0.104175,-0.24583,0.24583,0.768373,
+       -0.496295,0.859609,-0.121508,-0.173828,0.301078,0.768373,
+       0.00036,0.995835,-0.091178,0,0.347655,0.768373,
+       0.275694,0.957356,0.086383,0.08998,0.335809,0.441663,
+       -0.000441,0.994906,0.100805,0,0.347655,0.441663,
+       0.275694,0.957356,0.086383,0.08998,0.335809,0.441663,
+       0.00036,0.995835,-0.091178,0,0.347655,0.768373,
+       0.232074,0.966532,-0.109355,0.08998,0.335809,0.768373,
+       0.043115,0.982463,-0.181402,0,0.429204,1.210037,
+       0.232074,0.966532,-0.109355,0.08998,0.335809,0.768373,
+       0.00036,0.995835,-0.091178,0,0.347655,0.768373,
+       0.232074,0.966532,-0.109355,0.08998,0.335809,0.768373,
+       0.043115,0.982463,-0.181402,0,0.429204,1.210037,
+       0.295926,0.937828,-0.181402,0.111086,0.414579,1.210037,
+       -0.872513,0.482303,-0.078134,-0.301078,0.173828,0.768373,
+       -0.964953,0.236604,0.113507,-0.335809,0.08998,0.441663,
+       -0.976006,0.203287,-0.078024,-0.335809,0.08998,0.768373,
+       -0.964953,0.236604,0.113507,-0.335809,0.08998,0.441663,
+       -0.872513,0.482303,-0.078134,-0.301078,0.173828,0.768373,
+       -0.878954,0.457636,0.134198,-0.301078,0.173828,0.441663,
+       0.482303,0.872513,-0.078134,0.173828,0.301078,0.768373,
+       0.717436,0.691248,0.086383,0.24583,0.24583,0.441663,
+       0.518608,0.846422,0.120897,0.173828,0.301078,0.441663,
+       0.717436,0.691248,0.086383,0.24583,0.24583,0.441663,
+       0.482303,0.872513,-0.078134,0.173828,0.301078,0.768373,
+       0.701867,0.701867,-0.121508,0.24583,0.24583,0.768373,
+       0.52857,0.829281,-0.181402,0.214602,0.371702,1.210037,
+       0.701867,0.701867,-0.121508,0.24583,0.24583,0.768373,
+       0.482303,0.872513,-0.078134,0.173828,0.301078,0.768373,
+       0.701867,0.701867,-0.121508,0.24583,0.24583,0.768373,
+       0.52857,0.829281,-0.181402,0.214602,0.371702,1.210037,
+       0.695353,0.695353,-0.181571,0.303493,0.303493,1.210037,
+       -0.976006,0.203287,-0.078024,-0.335809,0.08998,0.768373,
+       -0.991445,0.130526,0,-0.347655,0,0.467099,
+       -0.987385,0.129992,-0.090404,-0.347655,0,0.768373,
+       -0.991445,0.130526,0,-0.347655,0,0.467099,
+       -0.976006,0.203287,-0.078024,-0.335809,0.08998,0.768373,
+       -0.989366,0.130253,0.064723,-0.347655,0,0.441663,
+       -0.989366,0.130253,0.064723,-0.347655,0,0.441663,
+       -0.976006,0.203287,-0.078024,-0.335809,0.08998,0.768373,
+       -0.964953,0.236604,0.113507,-0.335809,0.08998,0.441663,
+       0.882604,0.459204,0.100709,0.301078,0.173828,0.441663,
+       0.967612,0.240045,-0.078134,0.335809,0.08998,0.768373,
+       0.965222,0.231799,0.120897,0.335809,0.08998,0.441663,
+       0.967612,0.240045,-0.078134,0.335809,0.08998,0.768373,
+       0.882604,0.459204,0.100709,0.301078,0.173828,0.441663,
+       0.862238,0.498229,-0.091178,0.301078,0.173828,0.768373,
+       0.862238,0.498229,-0.091178,0.301078,0.173828,0.768373,
+       0.937828,0.295926,-0.181402,0.414579,0.111086,1.210037,
+       0.967612,0.240045,-0.078134,0.335809,0.08998,0.768373,
+       0.937828,0.295926,-0.181402,0.414579,0.111086,1.210037,
+       0.862238,0.498229,-0.091178,0.301078,0.173828,0.768373,
+       0.829281,0.52857,-0.181402,0.371702,0.214602,1.210037,
+       0.989244,0.130236,0.066597,0.347655,0,0.441663,
+       0.967612,0.240045,-0.078134,0.335809,0.08998,0.768373,
+       0.987385,0.129992,-0.090404,0.347655,0,0.768373,
+       0.967612,0.240045,-0.078134,0.335809,0.08998,0.768373,
+       0.989244,0.130236,0.066597,0.347655,0,0.441663,
+       0.965222,0.231799,0.120897,0.335809,0.08998,0.441663,
+       0.967612,0.240045,-0.078134,0.335809,0.08998,0.768373,
+       0.975239,0.128393,-0.180068,0.429204,0,1.210037,
+       0.987385,0.129992,-0.090404,0.347655,0,0.768373,
+       0.975239,0.128393,-0.180068,0.429204,0,1.210037,
+       0.967612,0.240045,-0.078134,0.335809,0.08998,0.768373,
+       0.937828,0.295926,-0.181402,0.414579,0.111086,1.210037,
+       0.882604,0.459204,0.100709,0.301078,0.173828,0.441663,
+       0.965222,0.231799,0.120897,0.335809,0.08998,0.441663,
+       0.934311,0.294816,0.200364,0.423141,0.11338,0,
+       0.275694,0.957356,0.086383,0.08998,0.335809,0.441663,
+       0.211837,0.956545,0.200364,0.11338,0.423141,0,
+       -0.000441,0.994906,0.100805,0,0.347655,0.441663,
+       -0.964953,0.236604,0.113507,-0.335809,0.08998,0.441663,
+       -0.972735,0.128063,0.193353,-0.363243,0,0.363243,
+       -0.989366,0.130253,0.064723,-0.347655,0,0.441663,
+       -0.972735,0.128063,0.193353,-0.363243,0,0.363243,
+       -0.964953,0.236604,0.113507,-0.335809,0.08998,0.441663,
+       -0.973563,0.117553,0.195847,-0.355438,0.071069,0.355438,
+       -0.730758,0.669317,0.134196,-0.24583,0.24583,0.441663,
+       -0.826171,0.526588,0.200364,-0.322249,0.18605,0.322249,
+       -0.878954,0.457636,0.134198,-0.301078,0.173828,0.441663,
+       -0.826171,0.526588,0.200364,-0.322249,0.18605,0.322249,
+       -0.730758,0.669317,0.134196,-0.24583,0.24583,0.441663,
+       -0.777502,0.596598,0.198902,-0.295978,0.229044,0.295978,
+       -0.777502,0.596598,0.198902,-0.295978,0.229044,0.295978,
+       -0.730758,0.669317,0.134196,-0.24583,0.24583,0.441663,
+       -0.777502,0.596598,0.198902,-0.291297,0.236707,0.291297,
+       -0.596598,0.777502,0.198902,-0.233181,0.30887,0.233181,
+       -0.497453,0.861614,0.100805,-0.173828,0.301078,0.441663,
+       -0.489842,0.848431,0.200549,-0.198696,0.344152,0.198696,
+       -0.497453,0.861614,0.100805,-0.173828,0.301078,0.441663,
+       -0.596598,0.777502,0.198902,-0.233181,0.30887,0.233181,
+       -0.730758,0.669317,0.134196,-0.24583,0.24583,0.441663,
+       -0.878954,0.457636,0.134198,-0.301078,0.173828,0.441663,
+       -0.936373,0.288163,0.20042,-0.353285,0.094662,0.353285,
+       -0.964953,0.236604,0.113507,-0.335809,0.08998,0.441663,
+       -0.936373,0.288163,0.20042,-0.353285,0.094662,0.353285,
+       -0.878954,0.457636,0.134198,-0.301078,0.173828,0.441663,
+       -0.90542,0.375037,0.198902,-0.331519,0.158753,0.331519,
+       -0.000441,0.994906,0.100805,0,0.347655,0.441663,
+       -0.042953,0.978779,0.200364,0,0.438068,0,
+       -0.256474,0.957172,0.134323,-0.08998,0.335809,0.441663,
+       0.275694,0.957356,0.086383,0.08998,0.335809,0.441663,
+       0.518608,0.846422,0.120897,0.173828,0.301078,0.441663,
+       0.452191,0.869124,0.200364,0.219034,0.379378,0,
+       0.717436,0.691248,0.086383,0.24583,0.24583,0.441663,
+       0.882604,0.459204,0.100709,0.301078,0.173828,0.441663,
+       0.826171,0.526588,0.200364,0.379378,0.219034,0,
+       0.717436,0.691248,0.086383,0.24583,0.24583,0.441663,
+       0.661729,0.722474,0.200364,0.309761,0.309761,0,
+       0.518608,0.846422,0.120897,0.173828,0.301078,0.441663,
+       -0.375037,0.90542,0.198902,-0.131358,0.386837,0.131358,
+       -0.256474,0.957172,0.134323,-0.08998,0.335809,0.441663,
+       -0.253561,0.946302,0.200549,-0.107675,0.40185,0.107675,
+       -0.256474,0.957172,0.134323,-0.08998,0.335809,0.441663,
+       -0.375037,0.90542,0.198902,-0.131358,0.386837,0.131358,
+       -0.497453,0.861614,0.100805,-0.173828,0.301078,0.441663,
+       0.965222,0.231799,0.120897,0.335809,0.08998,0.441663,
+       0.989244,0.130236,0.066597,0.347655,0,0.441663,
+       0.971635,0.127918,0.198902,0.438068,0,0,
+       0,0,-1,0,0.438068,0,
+       0,0,-1,0.356283,0.214602,0,
+       0,0,-1,0,0.214602,0,
+       0,0,-1,0.356283,0.214602,0,
+       0,0,-1,0,0.438068,0,
+       0,0,-1,0.11338,0.423141,0,
+       0,0,-1,0.356283,0.214602,0,
+       0,0,-1,0.11338,0.423141,0,
+       0,0,-1,0.219034,0.379378,0,
+       0,0,-1,0.356283,0.214602,0,
+       0,0,-1,0.219034,0.379378,0,
+       0,0,-1,0.309761,0.309761,0,
+       0,0,-1,0.356283,0.214602,0,
+       0,0,-1,0.309761,0.309761,0,
+       0,0,-1,0.379378,0.219034,0,
+       0,0,-1,0.356283,0.214602,0,
+       0,0,-1,0.379378,0.219034,0,
+       0,0,-1,0.356283,0,0,
+       0,0,-1,0.356283,0,0,
+       0,0,-1,0.379378,0.219034,0,
+       0,0,-1,0.438068,0,0,
+       0,0,-1,0.438068,0,0,
+       0,0,-1,0.379378,0.219034,0,
+       0,0,-1,0.423141,0.11338,0,
+       -0.707107,0,-0.707107,-0.355438,0.071069,0.355438,
+       -0.707107,0,-0.707107,-0.25193,0,0.25193,
+       -0.707107,0,-0.707107,-0.363243,0,0.363243,
+       -0.707107,0,-0.707107,-0.25193,0,0.25193,
+       -0.707107,0,-0.707107,-0.355438,0.071069,0.355438,
+       -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+       -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+       -0.707107,0,-0.707107,-0.355438,0.071069,0.355438,
+       -0.707107,0,-0.707107,-0.353285,0.094662,0.353285,
+       -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+       -0.707107,0,-0.707107,-0.353285,0.094662,0.353285,
+       -0.707107,0,-0.707107,-0.331519,0.158753,0.331519,
+       -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+       -0.707107,0,-0.707107,-0.331519,0.158753,0.331519,
+       -0.707107,0,-0.707107,-0.322249,0.18605,0.322249,
+       -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+       -0.707107,0,-0.707107,-0.322249,0.18605,0.322249,
+       -0.707107,0,-0.707107,-0.295978,0.229044,0.295978,
+       -0.707107,0,-0.707107,-0.25193,0.214602,0.25193,
+       -0.707107,0,-0.707107,-0.295978,0.229044,0.295978,
+       -0.707107,0,-0.707107,0,0.214602,0,
+       -0.707107,0,-0.707107,0,0.214602,0,
+       -0.707107,0,-0.707107,-0.295978,0.229044,0.295978,
+       -0.707107,0,-0.707107,0,0.438068,0,
+       -0.707107,0,-0.707107,0,0.438068,0,
+       -0.707107,0,-0.707107,-0.295978,0.229044,0.295978,
+       -0.707107,0,-0.707107,-0.291297,0.236707,0.291297,
+       -0.707107,0,-0.707107,0,0.438068,0,
+       -0.707107,0,-0.707107,-0.291297,0.236707,0.291297,
+       -0.707107,0,-0.707107,-0.270592,0.270592,0.270592,
+       -0.707107,0,-0.707107,0,0.438068,0,
+       -0.707107,0,-0.707107,-0.270592,0.270592,0.270592,
+       -0.707107,0,-0.707107,-0.233181,0.30887,0.233181,
+       -0.707107,0,-0.707107,0,0.438068,0,
+       -0.707107,0,-0.707107,-0.233181,0.30887,0.233181,
+       -0.707107,0,-0.707107,-0.198696,0.344152,0.198696,
+       -0.707107,0,-0.707107,0,0.438068,0,
+       -0.707107,0,-0.707107,-0.198696,0.344152,0.198696,
+       -0.707107,0,-0.707107,-0.131358,0.386837,0.131358,
+       -0.707107,0,-0.707107,0,0.438068,0,
+       -0.707107,0,-0.707107,-0.131358,0.386837,0.131358,
+       -0.707107,0,-0.707107,-0.107675,0.40185,0.107675,
+       0,1,0,-0.30855,0.214602,1.031895,
+       0,1,0,0,0.214602,1.210037,
+       0,1,0,-0.25193,0.214602,0.958107,
+       0,1,0,0,0.214602,1.210037,
+       0,1,0,-0.30855,0.214602,1.031895,
+       0,1,0,-0.344143,0.214602,1.117824,
+       0,1,0,0,0.214602,1.210037,
+       0,1,0,-0.344143,0.214602,1.117824,
+       0,1,0,-0.356283,0.214602,1.210037,
+       0,1,0,0,0.214602,1.210037,
+       0,1,0,-0.356283,0.214602,1.210037,
+       0,1,0,-0.344143,0.214602,1.302249,
+       0,1,0,0,0.214602,1.210037,
+       0,1,0,0.344143,0.214602,1.302249,
+       0,1,0,0.356283,0.214602,1.210037,
+       0,1,0,0.344143,0.214602,1.302249,
+       0,1,0,0,0.214602,1.210037,
+       0,1,0,-0.344143,0.214602,1.302249,
+       0,1,0,0.344143,0.214602,1.302249,
+       0,1,0,-0.344143,0.214602,1.302249,
+       0,1,0,-0.317592,0.214602,1.366349,
+       0,1,0,0.344143,0.214602,1.302249,
+       0,1,0,-0.317592,0.214602,1.366349,
+       0,1,0,0.30855,0.214602,1.388178,
+       0,1,0,0.30855,0.214602,1.388178,
+       0,1,0,-0.317592,0.214602,1.366349,
+       0,1,0,-0.30855,0.214602,1.388178,
+       0,1,0,0.30855,0.214602,1.388178,
+       0,1,0,-0.30855,0.214602,1.388178,
+       0,1,0,-0.25193,0.214602,1.461967,
+       0,1,0,0.30855,0.214602,1.388178,
+       0,1,0,-0.25193,0.214602,1.461967,
+       0,1,0,0.25193,0.214602,1.461967,
+       0,1,0,0.25193,0.214602,1.461967,
+       0,1,0,-0.25193,0.214602,1.461967,
+       0,1,0,-0.178141,0.214602,1.518587,
+       0,1,0,0.25193,0.214602,1.461967,
+       0,1,0,-0.178141,0.214602,1.518587,
+       0,1,0,0.178141,0.214602,1.518587,
+       0,1,0,0.178141,0.214602,1.518587,
+       0,1,0,-0.178141,0.214602,1.518587,
+       0,1,0,-0.092213,0.214602,1.554179,
+       0,1,0,0.178141,0.214602,1.518587,
+       0,1,0,-0.092213,0.214602,1.554179,
+       0,1,0,0.092213,0.214602,1.554179,
+       0,1,0,0.092213,0.214602,1.554179,
+       0,1,0,-0.092213,0.214602,1.554179,
+       0,1,0,0,0.214602,1.566319,
+       0.991445,0,0.130526,0.356283,0,1.210037,
+       0.965926,0,0.258819,0.344143,0.214602,1.302249,
+       0.965926,0,0.258819,0.344143,0,1.302249,
+       0.965926,0,0.258819,0.344143,0.214602,1.302249,
+       0.991445,0,0.130526,0.356283,0,1.210037,
+       0.991445,0,0.130526,0.356283,0.214602,1.210037,
+       0.965926,0,0.258819,0.344143,0.214602,1.302249,
+       0.887114,0,0.461551,0.30855,0,1.388178,
+       0.965926,0,0.258819,0.344143,0,1.302249,
+       0.887114,0,0.461551,0.30855,0,1.388178,
+       0.965926,0,0.258819,0.344143,0.214602,1.302249,
+       0.843272,0,0.537487,0.30855,0.214602,1.388178,
+       0.843272,0,0.537487,0.30855,0.214602,1.388178,
+       0.707107,0,0.707107,0.25193,0,1.461967,
+       0.887114,0,0.461551,0.30855,0,1.388178,
+       0.707107,0,0.707107,0.25193,0,1.461967,
+       0.843272,0,0.537487,0.30855,0.214602,1.388178,
+       0.707107,0,0.707107,0.25193,0.214602,1.461967,
+       0.707107,0,0.707107,0.25193,0,1.461967,
+       0.537487,0,0.843272,0.178141,0.214602,1.518587,
+       0.461551,0,0.887114,0.178141,0,1.518587,
+       0.537487,0,0.843272,0.178141,0.214602,1.518587,
+       0.707107,0,0.707107,0.25193,0,1.461967,
+       0.707107,0,0.707107,0.25193,0.214602,1.461967,
+       0.461551,0,0.887114,0.178141,0,1.518587,
+       0.300918,0,0.95365,0.092213,0.214602,1.554179,
+       0.216222,0,0.976344,0.092213,0,1.554179,
+       0.300918,0,0.95365,0.092213,0.214602,1.554179,
+       0.461551,0,0.887114,0.178141,0,1.518587,
+       0.537487,0,0.843272,0.178141,0.214602,1.518587,
+       0.216222,0,0.976344,0.092213,0,1.554179,
+       0.043842,0,0.999038,0,0.214602,1.566319,
+       -0.043842,0,0.999038,0,0,1.566319,
+       0.043842,0,0.999038,0,0.214602,1.566319,
+       0.216222,0,0.976344,0.092213,0,1.554179,
+       0.300918,0,0.95365,0.092213,0.214602,1.554179,
+       -0.043842,0,0.999038,0,0,1.566319,
+       -0.216222,0,0.976344,-0.092213,0.214602,1.554179,
+       -0.300918,0,0.95365,-0.092213,0,1.554179,
+       -0.216222,0,0.976344,-0.092213,0.214602,1.554179,
+       -0.043842,0,0.999038,0,0,1.566319,
+       0.043842,0,0.999038,0,0.214602,1.566319,
+       -0.300918,0,0.95365,-0.092213,0,1.554179,
+       -0.461551,0,0.887114,-0.178141,0.214602,1.518587,
+       -0.555804,0,0.831313,-0.178141,0,1.518587,
+       -0.461551,0,0.887114,-0.178141,0.214602,1.518587,
+       -0.300918,0,0.95365,-0.092213,0,1.554179,
+       -0.216222,0,0.976344,-0.092213,0.214602,1.554179,
+       -0.555804,0,0.831313,-0.178141,0,1.518587,
+       -0.725474,0,0.68825,-0.25193,0.194957,1.461967,
+       -0.707107,0,0.707107,-0.25193,0,1.461967,
+       -0.725474,0,0.68825,-0.25193,0.194957,1.461967,
+       -0.555804,0,0.831313,-0.178141,0,1.518587,
+       -0.675426,0,0.737428,-0.25193,0.214602,1.461967,
+       -0.675426,0,0.737428,-0.25193,0.214602,1.461967,
+       -0.555804,0,0.831313,-0.178141,0,1.518587,
+       -0.461551,0,0.887114,-0.178141,0.214602,1.518587,
+       -0.725474,0,0.68825,-0.25193,0.194957,1.461967,
+       -0.843272,0,0.537487,-0.30855,0,1.388178,
+       -0.707107,0,0.707107,-0.25193,0,1.461967,
+       -0.843272,0,0.537487,-0.30855,0,1.388178,
+       -0.725474,0,0.68825,-0.25193,0.194957,1.461967,
+       -0.866025,0,0.5,-0.30855,0.214602,1.388178,
+       -0.866025,0,0.5,-0.30855,0.214602,1.388178,
+       -0.725474,0,0.68825,-0.25193,0.194957,1.461967,
+       -0.675426,0,0.737428,-0.25193,0.214602,1.461967,
+       -0.866025,0,0.5,-0.30855,0.214602,1.388178,
+       -0.92388,0,0.382683,-0.317592,0,1.366349,
+       -0.843272,0,0.537487,-0.30855,0,1.388178,
+       -0.92388,0,0.382683,-0.317592,0,1.366349,
+       -0.965926,0,0.258819,-0.344143,0.214602,1.302249,
+       -0.965926,0,0.258819,-0.344143,0,1.302249,
+       -0.965926,0,0.258819,-0.344143,0.214602,1.302249,
+       -0.92388,0,0.382683,-0.317592,0,1.366349,
+       -0.866025,0,0.5,-0.30855,0.214602,1.388178,
+       -0.645102,0.715851,0.26721,-0.344143,0.214602,1.302249,
+       -0.645102,0.715851,0.26721,-0.30855,0.214602,1.388178,
+       -0.645102,0.715851,0.26721,-0.317592,0.214602,1.366349,
+       -0.829281,0.52857,-0.181402,-0.320459,0.185017,0.889577,
+       -0.716053,0.690228,-0.104175,-0.24583,0.24583,0.768373,
+       -0.872513,0.482303,-0.078134,-0.301078,0.173828,0.768373,
+       -0.716053,0.690228,-0.104175,-0.24583,0.24583,0.768373,
+       -0.829281,0.52857,-0.181402,-0.320459,0.185017,0.889577,
+       -0.780385,0.598811,-0.180068,-0.293976,0.227495,0.916061,
+       -0.716053,0.690228,-0.104175,-0.24583,0.24583,0.768373,
+       -0.780385,0.598811,-0.180068,-0.293976,0.227495,0.916061,
+       -0.66422,0.725193,-0.181402,-0.268445,0.268445,0.941592,
+       -0.66422,0.725193,-0.181402,-0.268445,0.268445,0.941592,
+       -0.496295,0.859609,-0.121508,-0.173828,0.301078,0.768373,
+       -0.716053,0.690228,-0.104175,-0.24583,0.24583,0.768373,
+       -0.496295,0.859609,-0.121508,-0.173828,0.301078,0.768373,
+       -0.66422,0.725193,-0.181402,-0.268445,0.268445,0.941592,
+       -0.491689,0.85163,-0.181571,-0.196464,0.340286,1.013572,
+       -0.496295,0.859609,-0.121508,-0.173828,0.301078,0.768373,
+       -0.254517,0.94987,-0.181571,-0.10602,0.395671,1.104017,
+       -0.258341,0.964141,-0.06076,-0.08998,0.335809,0.768373,
+       -0.254517,0.94987,-0.181571,-0.10602,0.395671,1.104017,
+       -0.496295,0.859609,-0.121508,-0.173828,0.301078,0.768373,
+       -0.491689,0.85163,-0.181571,-0.196464,0.340286,1.013572,
+       -0.937828,0.295926,-0.181402,-0.351831,0.094273,0.858206,
+       -0.872513,0.482303,-0.078134,-0.301078,0.173828,0.768373,
+       -0.976006,0.203287,-0.078024,-0.335809,0.08998,0.768373,
+       -0.872513,0.482303,-0.078134,-0.301078,0.173828,0.768373,
+       -0.937828,0.295926,-0.181402,-0.351831,0.094273,0.858206,
+       -0.829281,0.52857,-0.181402,-0.320459,0.185017,0.889577,
+       -0.975239,0.128393,-0.180068,-0.362308,0,0.847729,
+       -0.976006,0.203287,-0.078024,-0.335809,0.08998,0.768373,
+       -0.987385,0.129992,-0.090404,-0.347655,0,0.768373,
+       -0.976006,0.203287,-0.078024,-0.335809,0.08998,0.768373,
+       -0.975239,0.128393,-0.180068,-0.362308,0,0.847729,
+       -0.937828,0.295926,-0.181402,-0.351831,0.094273,0.858206,
+       -0.254517,0.94987,-0.181571,-0.10602,0.395671,1.104017,
+       0.00036,0.995835,-0.091178,0,0.347655,0.768373,
+       -0.258341,0.964141,-0.06076,-0.08998,0.335809,0.768373,
+       0.00036,0.995835,-0.091178,0,0.347655,0.768373,
+       -0.254517,0.94987,-0.181571,-0.10602,0.395671,1.104017,
+       0.043115,0.982463,-0.181402,0,0.429204,1.210037,
+       -0.965926,0,-0.258819,-0.344143,0.214602,1.117824,
+       -0.866025,0,-0.5,-0.30855,0,1.031895,
+       -0.965926,0,-0.258819,-0.344143,0,1.117824,
+       -0.866025,0,-0.5,-0.30855,0,1.031895,
+       -0.965926,0,-0.258819,-0.344143,0.214602,1.117824,
+       -0.843272,0,-0.537487,-0.30855,0.214602,1.031895,
+       -0.965926,0,0.258819,-0.344143,0.214602,1.302249,
+       -1,0,0,-0.356283,0,1.210037,
+       -0.965926,0,0.258819,-0.344143,0,1.302249,
+       -1,0,0,-0.356283,0,1.210037,
+       -0.965926,0,0.258819,-0.344143,0.214602,1.302249,
+       -1,0,0,-0.356283,0.214602,1.210037,
+       -1,0,0,-0.356283,0,1.210037,
+       -0.965926,0,-0.258819,-0.344143,0.214602,1.117824,
+       -0.965926,0,-0.258819,-0.344143,0,1.117824,
+       -0.965926,0,-0.258819,-0.344143,0.214602,1.117824,
+       -1,0,0,-0.356283,0,1.210037,
+       -1,0,0,-0.356283,0.214602,1.210037,
+       -0.866025,0,-0.5,-0.30855,0,1.031895,
+       -0.793353,0,-0.608761,-0.25193,0.194957,0.958107,
+       -0.793353,0,-0.608761,-0.25193,0,0.958107,
+       -0.793353,0,-0.608761,-0.25193,0.194957,0.958107,
+       -0.866025,0,-0.5,-0.30855,0,1.031895,
+       -0.843272,0,-0.537487,-0.30855,0.214602,1.031895,
+       -0.793353,0,-0.608761,-0.25193,0.194957,0.958107,
+       -0.843272,0,-0.537487,-0.30855,0.214602,1.031895,
+       -0.793353,0,-0.608761,-0.25193,0.214602,0.958107,
+       -0.707107,0,0.707107,0,0.429204,1.210037,
+       -0.707107,0,0.707107,-0.25193,0.214602,0.958107,
+       -0.707107,0,0.707107,0,0.214602,1.210037,
+       -0.707107,0,0.707107,-0.25193,0.214602,0.958107,
+       -0.707107,0,0.707107,0,0.429204,1.210037,
+       -0.707107,0,0.707107,-0.293976,0.227495,0.916061,
+       -0.707107,0,0.707107,-0.293976,0.227495,0.916061,
+       -0.707107,0,0.707107,0,0.429204,1.210037,
+       -0.707107,0,0.707107,-0.268445,0.268445,0.941592,
+       -0.707107,0,0.707107,-0.268445,0.268445,0.941592,
+       -0.707107,0,0.707107,0,0.429204,1.210037,
+       -0.707107,0,0.707107,-0.196464,0.340286,1.013572,
+       -0.707107,0,0.707107,-0.196464,0.340286,1.013572,
+       -0.707107,0,0.707107,0,0.429204,1.210037,
+       -0.707107,0,0.707107,-0.10602,0.395671,1.104017,
+       -0.707107,0,0.707107,-0.25193,0.194957,0.958107,
+       -0.707107,0,0.707107,-0.362308,0,0.847729,
+       -0.707107,0,0.707107,-0.25193,0,0.958107,
+       -0.707107,0,0.707107,-0.362308,0,0.847729,
+       -0.707107,0,0.707107,-0.25193,0.194957,0.958107,
+       -0.707107,0,0.707107,-0.351831,0.094273,0.858206,
+       -0.707107,0,0.707107,-0.351831,0.094273,0.858206,
+       -0.707107,0,0.707107,-0.25193,0.194957,0.958107,
+       -0.707107,0,0.707107,-0.320459,0.185017,0.889577,
+       -0.707107,0,0.707107,-0.320459,0.185017,0.889577,
+       -0.707107,0,0.707107,-0.25193,0.194957,0.958107,
+       -0.707107,0,0.707107,-0.293976,0.227495,0.916061,
+       -0.707107,0,0.707107,-0.293976,0.227495,0.916061,
+       -0.707107,0,0.707107,-0.25193,0.194957,0.958107,
+       -0.707107,0,0.707107,-0.25193,0.214602,0.958107,
+       0,0,1,0.429204,0,1.210037,
+       0,0,1,0.356283,0.214602,1.210037,
+       0,0,1,0.356283,0,1.210037,
+       0,0,1,0.356283,0.214602,1.210037,
+       0,0,1,0.429204,0,1.210037,
+       0,0,1,0.371702,0.214602,1.210037,
+       0,0,1,0.371702,0.214602,1.210037,
+       0,0,1,0.429204,0,1.210037,
+       0,0,1,0.414579,0.111086,1.210037,
+       0,0,1,0,0.214602,1.210037,
+       0,0,1,0.111086,0.414579,1.210037,
+       0,0,1,0,0.429204,1.210037,
+       0,0,1,0.111086,0.414579,1.210037,
+       0,0,1,0,0.214602,1.210037,
+       0,0,1,0.356283,0.214602,1.210037,
+       0,0,1,0.111086,0.414579,1.210037,
+       0,0,1,0.356283,0.214602,1.210037,
+       0,0,1,0.214602,0.371702,1.210037,
+       0,0,1,0.214602,0.371702,1.210037,
+       0,0,1,0.356283,0.214602,1.210037,
+       0,0,1,0.303493,0.303493,1.210037,
+       0,0,1,0.303493,0.303493,1.210037,
+       0,0,1,0.356283,0.214602,1.210037,
+       0,0,1,0.371702,0.214602,1.210037
+};
+static const struct gllist handsy_model_thumb_proximal_frame = {
+ GL_N3F_V3F, GL_TRIANGLES, 513, handsy_model_thumb_proximal_data, 0
+};
+const struct gllist *handsy_model_thumb_proximal = &handsy_model_thumb_proximal_frame;
index a547a76ca1fe22c2c74872f8459c3d6f51a35d33..ba76d86f13502357137f2b9d8f22f9c852404e0b 100644 (file)
@@ -450,7 +450,7 @@ draw_hexstrut (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glShadeModel(GL_SMOOTH);
 
@@ -496,6 +496,13 @@ ENTRYPOINT void
 free_hexstrut (ModeInfo *mi)
 {
   hexstrut_configuration *bp = &bps[MI_SCREEN(mi)];
+
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->colors) free (bp->colors);
   while (bp->triangles)
     {
       triangle *t = bp->triangles->next;
index dbb2ce6741d6bbd17ac8c12a793e72858b53007a..98faa4b9c9aeb277b3a251cecf27cd5a13b3a88d 100644 (file)
@@ -21,7 +21,6 @@
                        "*geometry:     800x800\n" \
                        "*suppressRotationAnimation: True\n" \
 
-# define free_hilbert 0
 # define release_hilbert 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -987,7 +986,7 @@ draw_hilbert (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glShadeModel(GL_SMOOTH);
 
@@ -1139,6 +1138,30 @@ draw_hilbert (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_hilbert (ModeInfo *mi)
+{
+  hilbert_configuration *bp = &bps[MI_SCREEN(mi)];
+  int i;
+
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->rot2) free_rotator (bp->rot2);
+  if (bp->colors) free (bp->colors);
+  if (bp->caches)
+    for (i = 0; i < max_depth + 2; i++)
+      if (bp->caches[i])
+        {
+          free (bp->caches[i]->values);
+          free (bp->caches[i]);
+        }
+  /* #### free dlists */
+}
+
 XSCREENSAVER_MODULE ("Hilbert", hilbert)
 
 #endif /* USE_GL */
index faf15a0eab628a2ede227a75cebe65061ce392dc..99bc6cdc1ac78ca35a66d103eb28c89803405a02 100644 (file)
@@ -754,7 +754,7 @@ draw_hydrostat (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -797,11 +797,21 @@ free_hydrostat (ModeInfo *mi)
 {
   hydrostat_configuration *bp = &bps[MI_SCREEN(mi)];
   int i;
-  if (!bp->squids)
-    return;
-  for (i = 0; i < MI_COUNT(mi); i++)
-    free_squid (bp->squids[i]);
-  free (bp->squids);
+
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+# ifdef USE_TRACKBALL
+  if (bp->trackball) gltrackball_free (bp->trackball);
+# endif
+  if (bp->squids)
+    {
+      for (i = 0; i < MI_COUNT(mi); i++)
+        free_squid (bp->squids[i]);
+      free (bp->squids);
+    }
+
+  if (glIsList(bp->head)) glDeleteLists(bp->head, 1);
 }
 
 XSCREENSAVER_MODULE ("Hydrostat", hydrostat)
index 3ae6aadfc1676be19ae2e2a209d8ae313c8184d6..df64923c8d74ba9d8e9efdb1e7fd4f54834af272 100644 (file)
@@ -89,7 +89,6 @@ static const char sccsid[] = "@(#)hypertorus.c  1.2 05/09/28 xlockmore";
                             "*showFPS:    False \n" \
                            "*suppressRotationAnimation: True\n" \
 
-# define free_hypertorus 0
 # define release_hypertorus 0
 # include "xlockmore.h"         /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
@@ -982,7 +981,7 @@ ENTRYPOINT void draw_hypertorus(ModeInfo *mi)
   if (!hp->glx_context)
     return;
 
-  glXMakeCurrent(display,window,*(hp->glx_context));
+  glXMakeCurrent(display, window, *hp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
   glLoadIdentity();
@@ -1006,11 +1005,20 @@ ENTRYPOINT void change_hypertorus(ModeInfo *mi)
   if (!hp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi),MI_WINDOW(mi),*(hp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *hp->glx_context);
   init(mi);
 }
 #endif /* !STANDALONE */
 
+ENTRYPOINT void free_hypertorus(ModeInfo *mi)
+{
+  hypertorusstruct *hp = &hyper[MI_SCREEN(mi)];
+  if (!hp->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *hp->glx_context);
+  gltrackball_free (hp->trackballs[0]);
+  gltrackball_free (hp->trackballs[1]);
+}
+
 XSCREENSAVER_MODULE ("Hypertorus", hypertorus)
 
 #endif /* USE_GL */
index 0602e6e4e423970125bb7a3afa06255f9ca6f29d..76896da58253db8f87f5d559eeea7ef570ad9a02 100644 (file)
@@ -24,7 +24,6 @@
                        "*wireframe:    False       \n" \
                        "*suppressRotationAnimation: True\n" \
 
-# define free_hypnowheel 0
 # define release_hypnowheel 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -243,7 +242,7 @@ draw_hypnowheel (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -317,6 +316,22 @@ hypnowheel_handle_event (ModeInfo *mi, XEvent *event)
 }
 
 
+ENTRYPOINT void
+free_hypnowheel (ModeInfo *mi)
+{
+  hypnowheel_configuration *bp = &bps[MI_SCREEN(mi)];
+  int i;
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->colors) free (bp->colors);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->discs) {
+    for (i = 0; i < nlayers; i++)
+      if (bp->discs[i].rot) free_rotator (bp->discs[i].rot);
+    free (bp->discs);
+  }
+}
+
 XSCREENSAVER_MODULE ("Hypnowheel", hypnowheel)
 
 #endif /* USE_GL */
index fea13fdd675b4a25b5b4264e4c9a806f7ca9f917..d67a14d1ca159a55f5493ca824759e7029313566 100644 (file)
@@ -41,7 +41,6 @@
                             "*wireframe: False\n" \
                            "*suppressRotationAnimation: True\n" \
 
-# define free_jigglypuff 0
 # define release_jigglypuff 0
 # include "xlockmore.h"
 #else
@@ -94,7 +93,14 @@ static int shininess;
 
 static int random_parms;
 
+/* This is all the half-edge b-rep code (as well as basic geometry) */
 typedef struct solid solid;
+typedef struct face face;
+typedef struct edge edge;
+typedef struct hedge hedge;
+typedef struct vertex vertex;
+typedef GLfloat coord;
+typedef coord vector[3];
 
 typedef struct {
     float stable_distance;
@@ -119,6 +125,13 @@ typedef struct {
     float axis;
     float speed;
 
+    face *faces;
+    edge *edges;
+    hedge *hedges;
+    vertex *vertices;
+
+    GLuint texid;
+
     GLXContext *glx_context;
 } jigglystruct;
 
@@ -203,14 +216,6 @@ static const GLfloat flowerbox_colors[4][4] = {
 #endif
 #endif /* 0 */
 
-/* This is all the half-edge b-rep code (as well as basic geometry) */
-typedef struct face face;
-typedef struct edge edge;
-typedef struct hedge hedge;
-typedef struct vertex vertex;
-typedef GLfloat coord;
-typedef coord vector[3];
-
 struct solid {
     face *faces;
     edge *edges;
@@ -221,21 +226,21 @@ struct face {
     solid *s;
     hedge *start;
     const GLfloat *color;
-    face *next;
+    face *next, *next0;
 };
 
 struct edge {
     solid *s;
     hedge *left;
     hedge *right;
-    edge *next;
+    edge *next, *next0;
 };
 
 struct hedge {
     face *f;
     edge *e;
     vertex *vtx;
-    hedge *next;
+    hedge *next, *next0;
     hedge *prev;
 };
 
@@ -246,7 +251,7 @@ struct vertex {
     vector n;
     vector f;
     vector vel;
-    vertex *next;
+    vertex *next, *next0;
 };
 
 static inline void vector_init(vector v, coord x, coord y, coord z)
@@ -353,12 +358,14 @@ static inline hedge *partner(hedge *h) {
     }
 }
 
-static vertex *vertex_new(solid *s, vector v)
+static vertex *vertex_new(jigglystruct *js, solid *s, vector v)
 {
     vertex *vtx = (vertex*)malloc(sizeof(vertex));
 
     if(!vtx)
        return NULL;
+    vtx->next0 = js->vertices;
+    js->vertices = vtx;
     vtx->s = s;
     vtx->next = s->vertices;
     s->vertices = vtx;
@@ -372,7 +379,7 @@ static vertex *vertex_new(solid *s, vector v)
  * i.e. it is a helper for the split_* functions, which
  * maintain the consistency of the solid.
  */
-static hedge *hedge_new(hedge *hafter, vertex *vtx)
+static hedge *hedge_new(jigglystruct *js, hedge *hafter, vertex *vtx)
 {
     hedge *h = (hedge*)malloc(sizeof(hedge));
     
@@ -380,6 +387,8 @@ static hedge *hedge_new(hedge *hafter, vertex *vtx)
 /*     _DEBUG("Out of memory in hedge_new()\n",NULL); */
        return NULL;
     }
+    h->next0 = js->hedges;
+    js->hedges = h;
     h->f = hafter->f;
     h->vtx = vtx;
     h->e = NULL;
@@ -390,13 +399,15 @@ static hedge *hedge_new(hedge *hafter, vertex *vtx)
     return h;
 }
 
-static edge *edge_new(solid *s)
+static edge *edge_new(jigglystruct *js, solid *s)
 {
     edge *e = (edge*)malloc(sizeof(edge));
     if(!e) {
 /*     _DEBUG("Out of memory in edge_new()\n",NULL);*/
        exit(-1);
     }
+    e->next0 = js->edges;
+    js->edges = e;
     e->next = s->edges;
     s->edges = e;
     e-> s = s;
@@ -404,13 +415,15 @@ static edge *edge_new(solid *s)
     return e;
 }
 
-static face *face_new(solid *s, hedge *h)
+static face *face_new(jigglystruct *js, solid *s, hedge *h)
 {
     face *f = (face*)malloc(sizeof(face));
     if(!f) {
 /*     _DEBUG("Out of memory in face_new()",NULL);*/
        exit(-1);
     }
+    f->next0 = js->faces;
+    js->faces = f;
     f->s = s;
     f->start = h;
     f->next = s->faces;
@@ -432,7 +445,7 @@ static face *face_new(solid *s, hedge *h)
  *    the vertex returned will have h==<the new halfedge>.
  */
 
-static vertex *vertex_split(hedge *h, vector v)
+static vertex *vertex_split(jigglystruct *js, hedge *h, vector v)
 {
     hedge *h2, *hn1, *hn2;
     vertex *vtxn;
@@ -442,10 +455,10 @@ static vertex *vertex_split(hedge *h, vector v)
     f1 = h->f;
     h2 = partner(h);
     
-    vtxn = vertex_new(f1->s, v);
-    hn1 = hedge_new(h, vtxn);
+    vtxn = vertex_new(js, f1->s, v);
+    hn1 = hedge_new(js, h, vtxn);
     vtxn->h = hn1;
-    hn2 = hedge_new(h2, vtxn);
+    hn2 = hedge_new(js, h2, vtxn);
     hn2->e = h->e;
 
     if(h2->e->left == h2)
@@ -453,7 +466,7 @@ static vertex *vertex_split(hedge *h, vector v)
     else
        h2->e->right = hn2;
 
-    en = edge_new(f1->s);
+    en = edge_new(js, f1->s);
     en->left = hn1;
     en->right = h2;
     hn1->e = en;
@@ -461,7 +474,7 @@ static vertex *vertex_split(hedge *h, vector v)
     return vtxn;
 }
 
-static face *face_split(face *f, hedge *h1, hedge *h2)
+static face *face_split(jigglystruct *js, face *f, hedge *h1, hedge *h2)
 {
     hedge *hn1, *hn2, *tmp;
     edge *en;
@@ -482,9 +495,9 @@ static face *face_split(face *f, hedge *h1, hedge *h2)
     h1->prev = h2->prev;
     h2->prev = tmp;
     /* insert halfedges & create edge */
-    hn1 = hedge_new(h2->prev, h1->vtx);
-    hn2 = hedge_new(h1->prev, h2->vtx);
-    en = edge_new(f->s);
+    hn1 = hedge_new(js, h2->prev, h1->vtx);
+    hn2 = hedge_new(js, h1->prev, h2->vtx);
+    en = edge_new(js, f->s);
     en->left = hn1;
     en->right = hn2;
     hn1->e = en;
@@ -496,7 +509,7 @@ static face *face_split(face *f, hedge *h1, hedge *h2)
     while(tmp != h1 && tmp != h2)
        tmp = tmp->next;
     tmp = (tmp == h1) ? h2 : h1 ;
-    fn = face_new(f->s, tmp);
+    fn = face_new(js, f->s, tmp);
     do {
        tmp->f = fn;
        tmp = tmp->next;
@@ -505,7 +518,7 @@ static face *face_split(face *f, hedge *h1, hedge *h2)
     return fn;
 }
 
-static solid *solid_new(vector where) 
+static solid *solid_new(jigglystruct *js, vector where) 
 {
     solid *s = (solid*)malloc(sizeof(solid));
     face *f1, *f2;
@@ -522,19 +535,24 @@ static solid *solid_new(vector where)
     h1->next = h1->prev = h1;
     h2->next = h2->prev = h2;
 
-    vtx = vertex_new(s, where);
+    h1->next0 = js->hedges;
+    js->hedges = h1;
+    h2->next0 = js->hedges;
+    js->hedges = h2;
+
+    vtx = vertex_new(js, s, where);
     vtx->h = h1;
     h1->vtx = vtx;
     h2->vtx = vtx;
 
-    e = edge_new(s);
+    e = edge_new(js, s);
     e->left = h1;
     e->right = h2;
     h1->e = e;
     h2->e = e;
 
-    f1 = face_new(s, h1);
-    f2 = face_new(s, h2);
+    f1 = face_new(js, s, h1);
+    f2 = face_new(js, s, h2);
     h1->f = f1;
     h2->f = f2;
 
@@ -542,14 +560,14 @@ static solid *solid_new(vector where)
 }
 
 /* This is all the code directly related to constructing the jigglypuff */
-static void face_tessel2(face *f)
+static void face_tessel2(jigglystruct *js, face *f)
 {
     hedge *h1=f->start->prev, *h2=f->start->next;
     
     if(h1->next == h1)
        return;
     while(h2 != h1 && h2->next != h1) {
-       f = face_split(f, h1, h2);
+       f = face_split(js, f, h1, h2);
        h1 = f->start;
        h2 = f->start->next->next;
     }
@@ -563,7 +581,7 @@ static void face_tessel2(face *f)
  * added at the head of the list. If that ever changes,
  * this is borked. 
  */
-static void solid_tesselate(solid *s) 
+static void solid_tesselate(jigglystruct *js, solid *s) 
 {
     edge *e = s->edges;
     face *f = s->faces;
@@ -571,11 +589,11 @@ static void solid_tesselate(solid *s)
     while(e) {
        vector v;
        midpoint(e->left->vtx->v, e->right->vtx->v, v);
-       vertex_split(e->left, v);
+       vertex_split(js, e->left, v);
        e = e->next;
     }
     while(f) {
-       face_tessel2(f);
+       face_tessel2(js, f);
        f=f->next;
     }
 }
@@ -600,19 +618,19 @@ static solid *tetrahedron(jigglystruct *js)
     int i;
 
     vector_init(v, 1, 1, 1);
-    s = solid_new(v);
+    s = solid_new(js, v);
     vector_init(v, -1, -1, 1);
     h = s->faces->start;
-    vtx = vertex_split(h, v);
+    vtx = vertex_split(js, h, v);
     vector_init(v, -1, 1, -1);
-    vtx = vertex_split(vtx->h, v);
+    vtx = vertex_split(js, vtx->h, v);
     h = vtx->h;
-    f = face_split(s->faces, h, h->prev);
+    f = face_split(js, s->faces, h, h->prev);
     vector_init(v, 1, -1, -1);
-    vertex_split(f->start, v);
+    vertex_split(js, f->start, v);
     f = s->faces->next->next;
     h = f->start;
-    face_split(f, h, h->next->next);
+    face_split(js, f, h, h->next->next);
 
     if(js->color_style == COLOR_STYLE_FLOWERBOX) {
        f = s->faces;
@@ -630,7 +648,7 @@ static solid *tesselated_tetrahedron(coord size, int iter, jigglystruct *js) {
     int i;
 
     for(i=0; i<iter; i++) {
-       solid_tesselate(s);
+       solid_tesselate(js, s);
     }
     return s;
 }
@@ -768,9 +786,12 @@ static void update_shape(jigglystruct *js)
 
 static void init_texture(ModeInfo *mi)
 {
+    jigglystruct *js = &jss[MI_SCREEN(mi)];
     XImage *img = image_data_to_ximage(mi->dpy, mi->xgwa.visual,
                                        jigglymap_png, sizeof(jigglymap_png));
 
+    glGenTextures (1, &js->texid);
+    glBindTexture (GL_TEXTURE_2D, js->texid);
     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB,
                 img->width, img->height, 0, GL_RGBA,
                 GL_UNSIGNED_BYTE, img->data);
@@ -959,7 +980,7 @@ ENTRYPOINT void draw_jigglypuff(ModeInfo *mi)
 {
     jigglystruct *js = &jss[MI_SCREEN(mi)];
     
-    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(js->glx_context));
+    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *js->glx_context);
     
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -1054,7 +1075,7 @@ ENTRYPOINT void init_jigglypuff(ModeInfo *mi)
     calculate_parameters(js, subdivs);
 
     if((js->glx_context = init_GL(mi)) != NULL) {
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(js->glx_context));
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *js->glx_context);
        setup_opengl(mi, js);
        reshape_jigglypuff(mi, MI_WIDTH(mi), MI_HEIGHT(mi));
     }
@@ -1069,6 +1090,41 @@ ENTRYPOINT void init_jigglypuff(ModeInfo *mi)
           js->do_wireframe, js->spooky, js->color_style, js->shininess);*/
 }
 
+
+ENTRYPOINT void free_jigglypuff(ModeInfo *mi)
+{
+    jigglystruct *js = &jss[MI_SCREEN(mi)];
+
+    if (!js->glx_context) return;
+    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *js->glx_context);
+
+    if (js->texid) glDeleteTextures(1, &js->texid);
+    if (js->trackball) gltrackball_free (js->trackball);
+
+    while (js->faces) {
+      face *n = js->faces->next0;
+      free (js->faces);
+      js->faces = n;
+    }
+    while (js->edges) {
+      edge *n = js->edges->next0;
+      free (js->edges);
+      js->edges = n;
+    }
+    while (js->hedges) {
+      hedge *n = js->hedges->next0;
+      free (js->hedges);
+      js->hedges = n;
+    }
+    while (js->vertices) {
+      vertex *n = js->vertices->next0;
+      free (js->vertices);
+      js->vertices = n;
+    }
+    free (js->shape);
+    if (js->texid) glDeleteTextures (1, &js->texid);
+}
+
 XSCREENSAVER_MODULE ("JigglyPuff", jigglypuff)
 
 #endif /* USE_GL */
index 934dbcc7a758bb89f95c080f277147bf65a1dfcf..38716e207373bc7bbbf39a35e29748def2131d7c 100644 (file)
@@ -59,7 +59,6 @@
                  "*suppressRotationAnimation: True\n" \
 
 
-# define free_jigsaw 0
 # define release_jigsaw 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -1436,7 +1435,7 @@ draw_jigsaw (ModeInfo *mi)
   if (!jc->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(jc->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *jc->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -1504,6 +1503,22 @@ draw_jigsaw (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_jigsaw (ModeInfo *mi)
+{
+  jigsaw_configuration *jc = &sps[MI_SCREEN(mi)];
+
+  if (!jc->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *jc->glx_context);
+
+  if (jc->trackball) free (jc->trackball);
+  if (jc->rot) free_rotator (jc->rot);
+  if (jc->texfont) free_texture_font (jc->texfont);
+  free_puzzle_grid (jc);
+  if (glIsList(jc->loading_dlist)) glDeleteLists(jc->loading_dlist, 1);
+}
+
 XSCREENSAVER_MODULE ("Jigsaw", jigsaw)
 
 #endif /* USE_GL */
index 031502912cc5584eede216f33ddf86bfec725e9c..1b7d7c6042a842c355ffac0e76f1776d9f63427b 100644 (file)
@@ -640,6 +640,13 @@ ENTRYPOINT void
 free_juggle(ModeInfo *mi) {
   jugglestruct *sp = &juggles[MI_SCREEN(mi)];
 
+  if (!sp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
+
+  if (sp->trackball) gltrackball_free (sp->trackball);
+  if (sp->rot) free_rotator (sp->rot);
+  if (sp->font_data) free_texture_font (sp->font_data);
+
   if (sp->head != NULL) {
        while (sp->head->next != sp->head) {
          trajectory_destroy(sp->head->next);
@@ -668,7 +675,6 @@ add_throw(ModeInfo *mi, char type, int h, Notation n, const char* name)
 
   ADD_ELEMENT(Trajectory, t, sp->head->prev);
   if(t == NULL){ /* Out of Memory */
-       free_juggle(mi);
        return False;
   }
   t->object = NULL;
@@ -909,7 +915,6 @@ part(ModeInfo *mi)
          t->action = CATCH;
          ADD_ELEMENT(Trajectory, nt, p);
          if(nt == NULL){
-               free_juggle(mi);
                return False;
          }
          nt->object = NULL;
@@ -2570,7 +2575,6 @@ refill_juggle(ModeInfo * mi)
   positions(sp);
 
   if (!projectile(sp)) {
-       free_juggle(mi);
        return;
   }
 
@@ -2729,14 +2733,12 @@ init_juggle (ModeInfo * mi)
        /* create circular trajectory list */
        ADD_ELEMENT(Trajectory, sp->head, sp->head);
        if(sp->head == NULL){
-         free_juggle(mi);
          return;
        }
 
        /* create circular object list */
        ADD_ELEMENT(Object, sp->objects, sp->objects);
        if(sp->objects == NULL){
-         free_juggle(mi);
          return;
        }
 
@@ -2828,7 +2830,7 @@ draw_juggle (ModeInfo *mi)
   if (!sp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
 
   glShadeModel(GL_SMOOTH);
 
index 884400f8c65256554ac7fb0419b59fc3dc25be5d..b3a7feebacd3bb569b5464fbc8d034639a8a7ccf 100644 (file)
@@ -21,7 +21,6 @@
                        "*wireframe:    False       \n" \
                        "*suppressRotationAnimation: True\n" \
 
-# define free_kaleidocycle 0
 # define release_kaleidocycle 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -414,7 +413,7 @@ draw_kaleidocycle (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -569,6 +568,19 @@ draw_kaleidocycle (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_kaleidocycle (ModeInfo *mi)
+{
+  kaleidocycle_configuration *bp = &bps[MI_SCREEN(mi)];
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->rot2) free_rotator (bp->rot2);
+  if (bp->colors) free (bp->colors);
+}
+
 XSCREENSAVER_MODULE ("Kaleidocycle", kaleidocycle)
 
 #endif /* USE_GL */
index 1c042da51b264d0de89ad33e3bb169aaf105cf1e..0fac5d299f01e2d54b2696dcbe305bfaacc07c93 100644 (file)
@@ -137,7 +137,6 @@ static const char sccsid[] = "@(#)klein.c  1.1 08/10/04 xlockmore";
 # define DEFAULTS           "*delay:      10000 \n" \
                             "*showFPS:    False \n" \
 
-# define free_klein 0
 # define release_klein 0
 # include "xlockmore.h"         /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
@@ -2065,7 +2064,7 @@ ENTRYPOINT void draw_klein(ModeInfo *mi)
   if (!kb->glx_context)
     return;
 
-  glXMakeCurrent(display,window,*(kb->glx_context));
+  glXMakeCurrent(display, window, *kb->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
   glLoadIdentity();
@@ -2089,11 +2088,21 @@ ENTRYPOINT void change_klein(ModeInfo *mi)
   if (!kb->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi),MI_WINDOW(mi),*(kb->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *kb->glx_context);
   init(mi);
 }
 #endif /* !STANDALONE */
 
+ENTRYPOINT void free_klein(ModeInfo *mi)
+{
+  kleinstruct *kb = &klein[MI_SCREEN(mi)];
+  if (!kb->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *kb->glx_context);
+  gltrackball_free (kb->trackballs[0]);
+  gltrackball_free (kb->trackballs[1]);
+  if (kb->tex_name) glDeleteTextures (1, &kb->tex_name);
+}
+
 XSCREENSAVER_MODULE ("Klein", klein)
 
 #endif /* USE_GL */
index 97ce18b3378b27e6457a49c54dc6508036bd78e9..d84a58f5e05639a21d02a25b1fa3d85005c98bf9 100644 (file)
@@ -32,7 +32,6 @@
                        "*wireframe:    False   \n"     \
                        "*suppressRotationAnimation: True\n" \
 
-# define free_lament 0
 # define release_lament 0
 #include "xlockmore.h"
 
@@ -1768,7 +1767,7 @@ draw_lament (ModeInfo *mi)
 
   glDrawBuffer(GL_BACK);
 
-  glXMakeCurrent(dpy, window, *(lc->glx_context));
+  glXMakeCurrent(dpy, window, *lc->glx_context);
   draw(mi);
   if (mi->fps_p) do_fps (mi);
 
@@ -1781,6 +1780,23 @@ draw_lament (ModeInfo *mi)
     animate(mi);
 }
 
+ENTRYPOINT void
+free_lament (ModeInfo *mi)
+{
+  lament_configuration *lc = &lcs[MI_SCREEN(mi)];
+  int i;
+  if (!lc->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *lc->glx_context);
+  if (lc->states) free (lc->states);
+  if (lc->trackball) gltrackball_free (lc->trackball);
+  if (lc->rot) free_rotator (lc->rot);
+  if (lc->texture) XDestroyImage (lc->texture);
+  for (i = 0; i < countof(all_objs); i++)
+    if (glIsList(lc->dlists[i])) glDeleteLists(lc->dlists[i], 1);
+  for (i = 0; i < countof(lc->texids); i++)
+    if (lc->texids[i]) glDeleteTextures (1, &lc->texids[i]);
+}
+
 XSCREENSAVER_MODULE ("Lament", lament)
 
 #endif /* USE_GL */
index 73d5805ed0d093218c7830d2236485f21be04192..8d484fe843f5eeedc052aa64092667ed448fb44d 100644 (file)
@@ -70,7 +70,6 @@
                        "*geometry:     600x900\n"      \
                        "*count:      " DEF_COUNT " \n" \
 
-# define free_lavalite 0
 # define release_lavalite 0
 
 
@@ -1423,7 +1422,7 @@ draw_lavalite (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glMatrixMode (GL_MODELVIEW);
   glPushMatrix ();
@@ -1534,6 +1533,21 @@ draw_lavalite (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_lavalite (ModeInfo *mi)
+{
+  lavalite_configuration *bp = &bps[MI_SCREEN(mi)];
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->balls) free (bp->balls);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->rot2) free_rotator (bp->rot2);
+  if (glIsList(bp->bottle_list)) glDeleteLists(bp->bottle_list, 1);
+  if (glIsList(bp->ball_list)) glDeleteLists(bp->ball_list, 1);
+}
+
 XSCREENSAVER_MODULE ("Lavalite", lavalite)
 
 #endif /* USE_GL */
index f15374b213824ba9e86a1e442385cd6c1e8dce08..2bd87e91c4515a5a37641b09e3d73bbc039a7eda 100644 (file)
@@ -213,8 +213,7 @@ reshape_lockward (ModeInfo *mi, int width, int height)
           h = height / (GLfloat) width;
         }
 
-       glXMakeCurrent (MI_DISPLAY (mi), MI_WINDOW (mi),
-                       *(ctx->glx_context));
+       glXMakeCurrent (MI_DISPLAY (mi), MI_WINDOW (mi), *ctx->glx_context);
 
        glViewport (0, y, (GLint) width, (GLint) height);
 
@@ -734,7 +733,7 @@ draw_lockward (ModeInfo *mi)
        if (!ctx->glx_context)
                return;
 
-       glXMakeCurrent (MI_DISPLAY (mi), MI_WINDOW (mi), *(ctx->glx_context));
+       glXMakeCurrent (MI_DISPLAY (mi), MI_WINDOW (mi), *ctx->glx_context);
 
 
        glClear (GL_COLOR_BUFFER_BIT);
@@ -937,11 +936,8 @@ free_lockward (ModeInfo *mi)
        lockward_context        *ctx = &g_ctx[MI_SCREEN (mi)];
        int i;
 
-       if (!ctx->glx_context)
-               return;
-
-       glXMakeCurrent (MI_DISPLAY (mi), MI_WINDOW (mi),
-                       *(ctx->glx_context));
+        if (!ctx->glx_context) return;
+       glXMakeCurrent (MI_DISPLAY (mi), MI_WINDOW (mi), *ctx->glx_context);
 
        if (ctx->blink.noise)
                free (ctx->blink.noise);
index 255839e9e3e8c4fd669369c05029bc1fb928d40c..362d5d2f992c670bd848cc6db3342fd44c7a37ac 100755 (executable)
@@ -1170,7 +1170,7 @@ draw_maze (ModeInfo * mi)
 
     if (!maze->glx_context)
       return;
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(maze->glx_context));
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *maze->glx_context);
 
        glMatrixMode(GL_PROJECTION);
     glLoadIdentity();
@@ -1919,6 +1919,10 @@ ENTRYPOINT void
 free_maze (ModeInfo * mi)
 {
        maze_configuration *maze = &mazes[MI_SCREEN(mi)];
+    int i;
+
+    if (!maze->glx_context) return;
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *maze->glx_context);
 
     glDeleteTextures(1, &maze->wallTexture);
     glDeleteTextures(1, &maze->floorTexture);
@@ -1937,16 +1941,14 @@ free_maze (ModeInfo * mi)
     glDeleteTextures(1, &maze->fractal4Texture);
 # endif
 
-    glDeleteLists(maze->dlists[ARROW], 4);
-    glDeleteLists(maze->dlists[INVERTER_TETRAHEDRON], 4);
+    for (i = 0; i < countof(maze->dlists); i++)
+      if (glIsList(maze->dlists[i])) glDeleteLists(maze->dlists[i], 1);
 
     free(maze->mazeGrid);
     free(maze->wallList);
     free(maze->inverterPosition);
     free(maze->gl3dTextPosition);
     free(maze->rats);
-
-    memset(maze, 0, sizeof(*maze));
 }
 
 
old mode 100755 (executable)
new mode 100644 (file)
index 249d224013f6e5d6611580587fe3040b93b45542..96582e35e49e474925afa852cb53041e3d03b673 100644 (file)
@@ -56,7 +56,6 @@
                        "*suppressRotationAnimation: True\n" \
 
 
-# define free_sponge 0
 # define release_sponge 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -481,7 +480,7 @@ draw_sponge (ModeInfo *mi)
   if (!sp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -557,6 +556,21 @@ draw_sponge (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_sponge (ModeInfo *mi)
+{
+  sponge_configuration *sp = &sps[MI_SCREEN(mi)];
+  if (!sp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
+  if (sp->colors) free (sp->colors);
+  if (sp->rot) free_rotator (sp->rot);
+  if (sp->trackball) gltrackball_free (sp->trackball);
+  if (glIsList(sp->sponge_list0)) glDeleteLists(sp->sponge_list0, 1);
+  if (glIsList(sp->sponge_list1)) glDeleteLists(sp->sponge_list1, 1);
+  if (glIsList(sp->sponge_list2)) glDeleteLists(sp->sponge_list2, 1);
+}
+
 XSCREENSAVER_MODULE_2 ("Menger", menger, sponge)
 
 #endif /* USE_GL */
index eb746d1a101e433d3972a84a5d6326beb54052a4..42981bd8e09f8e561d830556c055d2f538e4c90c 100644 (file)
@@ -1729,7 +1729,7 @@ draw_mirrorblob(ModeInfo * mi)
   if (gp->waiting_for_image_p && gp->first_image_p)
     return;
 
-  glXMakeCurrent(display, window, *(gp->glx_context));
+  glXMakeCurrent(display, window, *gp->glx_context);
   draw_scene(mi);
   if (mi->fps_p) do_fps (mi);
   glFinish();
@@ -1826,14 +1826,24 @@ ENTRYPOINT void
 free_mirrorblob(ModeInfo * mi)
 {
   mirrorblobstruct *gp = &Mirrorblob[MI_SCREEN(mi)];
+  int i;
+
+  if (!gp->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
+
   if (gp->nodes) free(gp->nodes);
   if (gp->faces) free(gp->faces);
   if (gp->bump_data) free(gp->bump_data);
   if (gp->colours) free(gp->colours);
   if (gp->tex_coords) free(gp->tex_coords);
   if (gp->dots) free(gp->dots);
+  if (gp->normals) free(gp->normals);
   if (gp->wall_shape) free(gp->wall_shape);
   if (gp->bump_shape) free(gp->bump_shape);
+  if (gp->trackball) gltrackball_free (gp->trackball);
+
+  for (i = 0; i < NUM_TEXTURES; i++)
+    if (gp->textures[i]) glDeleteTextures(1, &gp->textures[i]);
 }
 
 XSCREENSAVER_MODULE ("MirrorBlob", mirrorblob)
index 5ef2c0dffbf1919acb3a345e7a1951a821010b84..e3155ac6b6ba3cd747ee0b59d831c4af57a843a3 100644 (file)
@@ -79,7 +79,6 @@ static const char sccsid[] = "@(#)moebius.c   5.01 2001/03/01 xlockmore";
 
 #ifdef STANDALONE
 # define MODE_moebius
-# define free_moebius 0
 # define release_moebius 0
 # define DEFAULTS                      "*delay:                20000   \n"                     \
                                                        "*showFPS:      False   \n"                     \
@@ -715,7 +714,7 @@ draw_moebius (ModeInfo * mi)
        if (!mp->glx_context)
                return;
 
-       glXMakeCurrent(display, window, *(mp->glx_context));
+       glXMakeCurrent(display, window, *mp->glx_context);
 
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -777,11 +776,20 @@ change_moebius (ModeInfo * mi)
        if (!mp->glx_context)
                return;
 
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context));
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
        pinit();
 }
 #endif /* !STANDALONE */
 
+ENTRYPOINT void
+free_moebius (ModeInfo * mi)
+{
+       moebiusstruct *mp = &moebius[MI_SCREEN(mi)];
+    if (!mp->glx_context) return;
+       glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
+    if (mp->trackball) gltrackball_free (mp->trackball);
+    if (mp->rot) free_rotator (mp->rot);
+}
 
 XSCREENSAVER_MODULE ("Moebius", moebius)
 
index 0f058b81e603f43c037c5cbce772302855250762..fdcd4e0faac59b53b2de45a36f191ae99c10ee73 100644 (file)
@@ -15,7 +15,6 @@
                        "*wireframe:    False       \n" \
                        "*suppressRotationAnimation: True\n" \
 
-# define free_mgears 0
 # define release_mgears 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -344,7 +343,7 @@ draw_mgears (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glShadeModel(GL_SMOOTH);
 
@@ -432,6 +431,18 @@ draw_mgears (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_mgears (ModeInfo *mi)
+{
+  mgears_configuration *bp = &bps[MI_SCREEN(mi)];
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->gears) free (bp->gears);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+}
+
 XSCREENSAVER_MODULE_2 ("MoebiusGears", moebiusgears, mgears)
 
 #endif /* USE_GL */
index d8bc1d854ccf6ab42ae201a134f8194eb01a2d67..94d7dd3f012d301a97a508b9662a3a115cd46da1 100644 (file)
@@ -33,7 +33,6 @@
                        "*wireframeThreshold:  150    \n" \
                        "*suppressRotationAnimation: True\n" \
 
-# define free_molecule 0
 # define release_molecule 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -124,7 +123,7 @@ static const atom_data all_atom_data[] = {
 
 typedef struct {
   int id;              /* sequence number in the PDB file */
-  const char *label;   /* The atom name */
+  char *label;         /* The atom name */
   GLfloat x, y, z;     /* position in 3-space (angstroms) */
   const atom_data *data; /* computed: which style of atom this is */
 } molecule_atom;
@@ -136,7 +135,7 @@ typedef struct {
 
 
 typedef struct {
-  const char *label;           /* description of this compound */
+  char *label;         /* description of this compound */
   int natoms, atoms_size;
   int nbonds, bonds_size;
   molecule_atom *atoms;
@@ -635,7 +634,7 @@ build_molecule (ModeInfo *mi, Bool transparent_p)
 
 static void
 push_atom (molecule *m,
-           int id, const char *label,
+           int id, char *label,
            GLfloat x, GLfloat y, GLfloat z)
 {
   m->natoms++;
@@ -723,7 +722,7 @@ parse_pdb_data (molecule *m, const char *data, const char *filename, int line)
               !strcmp (n2 + strlen(n2) - 4, ".pdb"))
             n2[strlen(n2)-4] = 0;
 
-          if (m->label) free ((char *) m->label);
+          if (m->label) free (m->label);
           m->label = strdup (n2);
           free (name);
         }
@@ -780,7 +779,8 @@ parse_pdb_data (molecule *m, const char *data, const char *filename, int line)
           int id;
           const char *end = strchr (s, '\n');
           int L = end - s;
-          char *name = (char *) calloc (1, 4);
+          char *oname = (char *) calloc (1, 4);
+          char *name = oname;
           GLfloat x = -999, y = -999, z = -999;
 
           if (1 != sscanf (s+7, " %d ", &id))
@@ -816,12 +816,14 @@ parse_pdb_data (molecule *m, const char *data, const char *filename, int line)
                    progname, filename, line,
                    id, name, x, y, z);
 */
-          push_atom (m, id, name, x, y, z);
+          push_atom (m, id, strdup(name), x, y, z);
+          free (oname);
         }
       else if (!strncmp (s, "HETATM ", 7))
         {
           int id;
-          char *name = (char *) calloc (1, 4);
+          char *oname = (char *) calloc (1, 4);
+          char *name = oname;
           GLfloat x = -999, y = -999, z = -999;
 
           if (1 != sscanf (s+7, " %d ", &id))
@@ -839,7 +841,8 @@ parse_pdb_data (molecule *m, const char *data, const char *filename, int line)
                    progname, filename, line,
                    id, name, x, y, z);
 */
-          push_atom (m, id, name, x, y, z);
+          push_atom (m, id, strdup(name), x, y, z);
+          free (oname);
         }
       else if (!strncmp (s, "CONECT ", 7))
         {
@@ -893,6 +896,7 @@ parse_pdb_file (molecule *m, const char *name)
       char *buf = (char *) malloc(1024 + strlen(name));
       sprintf(buf, "%s: error reading \"%s\"", progname, name);
       perror(buf);
+      free(buf);
       return -1;
     }
 
@@ -1001,7 +1005,7 @@ generate_molecule_formula (molecule *m)
   strcpy (s, m->label);
   strcat (s, "\n");
   strcat (s, buf);
-  free ((char *) m->label);
+  free (m->label);
   free (buf);
   m->label = s;
 }
@@ -1162,6 +1166,7 @@ load_molecules (ModeInfo *mi)
   if (mc->nmolecules == 0)     /* do the builtins if no files */
     {
       mc->nmolecules = countof(builtin_pdb_data);
+      if (mc->molecules) free (mc->molecules);
       mc->molecules = (molecule *) calloc (sizeof (molecule), mc->nmolecules);
       for (i = 0; i < mc->nmolecules; i++)
         {
@@ -1557,7 +1562,7 @@ draw_molecule (ModeInfo *mi)
   if (!mc->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mc->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mc->glx_context);
 
   if (mc->draw_time == 0)
     {
@@ -1677,6 +1682,35 @@ draw_molecule (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_molecule (ModeInfo *mi)
+{
+  molecule_configuration *mc = &mcs[MI_SCREEN(mi)];
+  int i, j;
+
+  if (!mc->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mc->glx_context);
+
+  for (i = 0; i < mc->nmolecules; i++) {
+    molecule *m = &mc->molecules[i];
+    for (j = 0; j < m->natoms; j++)
+      free (m->atoms[j].label);
+    free (m->atoms);
+    free (m->bonds);
+    free (m->label);
+  }
+  if (mc->molecules) free (mc->molecules);
+  if (mc->trackball) gltrackball_free (mc->trackball);
+  if (mc->rot) free_rotator (mc->rot);
+  if (mc->atom_font) free_texture_font (mc->atom_font);
+  if (mc->title_font) free_texture_font (mc->title_font);
+
+  if (glIsList(mc->molecule_dlist)) glDeleteLists(mc->molecule_dlist, 1);
+  if (glIsList(mc->shell_dlist)) glDeleteLists(mc->shell_dlist, 1);
+  if (glIsList(mc->molecule_dlist)) glDeleteLists(mc->molecule_dlist, 1);
+}
+
 XSCREENSAVER_MODULE ("Molecule", molecule)
 
 #endif /* USE_GL */
index 078044496b5fa57d31990b708f740b7adc8a6cab..0f372239a64f6ff0db64a2e3f36f22340e210749 100644 (file)
@@ -58,7 +58,6 @@ static const char sccsid[] = "@(#)morph3d.c   5.01 2001/03/01 xlockmore";
                                                "*count:                0               \n"             \
                                                "*suppressRotationAnimation: True\n" \
 
-# define free_morph3d 0
 # define release_morph3d 0
 # define morph3d_handle_event xlockmore_no_events
 # include "xlockmore.h"                /* from the xscreensaver distribution */
@@ -760,7 +759,7 @@ draw_morph3d(ModeInfo * mi)
                return;
 
     mi->polygon_count = 0;
-       glXMakeCurrent(display, window, *(mp->glx_context));
+       glXMakeCurrent(display, window, *mp->glx_context);
 
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -832,6 +831,12 @@ change_morph3d(ModeInfo * mi)
 }
 #endif /* !STANDALONE */
 
+ENTRYPOINT void
+free_morph3d(ModeInfo * mi)
+{
+  /* nothing to do */
+}
+
 #endif
 
 XSCREENSAVER_MODULE ("Morph3D", morph3d)
index 4e42840862fa65c408a9a9d6b977214025cb0027..2349b07dc48631259c607a58a2a5b09ddb0d96ba 100644 (file)
@@ -19,7 +19,6 @@
                        "*doubleBuffer: False       \n" \
                        "*suppressRotationAnimation: True\n" \
 
-# define free_noof 0
 # define release_noof 0
 # define noof_handle_event 0
 #include "xlockmore.h"
@@ -379,7 +378,7 @@ draw_noof (ModeInfo *mi)
 
   if (!bp->glx_context)
     return;
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -398,6 +397,7 @@ draw_noof (ModeInfo *mi)
       glBindTexture (GL_TEXTURE_2D, bp->screenshot_texture);
       glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
       glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+      glColor3f (1, 1, 1);
       glBegin (GL_QUADS);
       glTexCoord2f (0,  0);  glVertex3f (0, 0, 0);
       glTexCoord2f (tw, 0);  glVertex3f (bp->wd, 0, 0);
@@ -514,6 +514,16 @@ init_noof (ModeInfo *mi)
 }
 
 
+ENTRYPOINT void 
+free_noof (ModeInfo *mi)
+{
+  noof_configuration *bp = &bps[MI_SCREEN(mi)];
+  if (!bp->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->screenshot_texture) glDeleteTextures (1, &bp->screenshot_texture);
+}
+
+
 XSCREENSAVER_MODULE ("Noof", noof)
 
 #endif /* USE_GL */
index 02ebab84cdf5e802774d235cdce868f5f8169010..4d15ff8c025488d86c52e797d9ef51196fb75e83 100644 (file)
@@ -22,7 +22,6 @@
                        "*showFPS:      False       \n" \
                        "*wireframe:    False       \n" \
 
-# define free_peepers 0
 # define release_peepers 0
 
 #define DEF_SPEED "1.0"
@@ -1375,7 +1374,7 @@ draw_peepers (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -1450,6 +1449,25 @@ draw_peepers (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_peepers (ModeInfo *mi)
+{
+  peepers_configuration *bp = &bps[MI_SCREEN(mi)];
+  int i;
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  for (i = 0; i < bp->nfloaters; i++)
+    free_rotator (bp->floaters[i].rot);
+  if (bp->floaters) free (bp->floaters);
+  if (glIsList(bp->lens_list)) glDeleteLists(bp->lens_list, 1);
+  if (glIsList(bp->sclera_list)) glDeleteLists(bp->sclera_list, 1);
+  if (glIsList(bp->iris_list)) glDeleteLists(bp->iris_list, 1);
+  if (glIsList(bp->retina_list)) glDeleteLists(bp->retina_list, 1);
+  if (bp->sclera_texture) glDeleteTextures (1, &bp->sclera_texture);
+  if (bp->iris_texture) glDeleteTextures (1, &bp->iris_texture);
+}
+
 XSCREENSAVER_MODULE ("Peepers", peepers)
 
 #endif /* USE_GL */
index e060f25b11fe6bf5d0b0a3fe58d0ba8dd6e59706..01d18d6978b6ee28cd8cfd1a2ad91f088b5545d7 100644 (file)
@@ -31,7 +31,6 @@
                   "*chooseRandomImages:  True  \n" \
                  "*suppressRotationAnimation: True\n" \
 
-# define free_photopile 0
 # define release_photopile 0
 # define photopile_handle_event xlockmore_no_events
 
@@ -471,6 +470,7 @@ hack_resources (Display *dpy)
   value.addr = buf2;
   value.size = strlen(buf2);
   XrmPutResource (&db, buf1, "String", &value);
+  free (val);
 # endif /* !HAVE_JWXYZ */
 }
 
@@ -730,7 +730,7 @@ draw_photopile (ModeInfo *mi)
   if (!ss->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(ss->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ss->glx_context);
 
   if (ss->mode == EARLY)
     if (loading_initial_image (mi))
@@ -828,6 +828,24 @@ draw_photopile (ModeInfo *mi)
   glXSwapBuffers (MI_DISPLAY (mi), MI_WINDOW(mi));
 }
 
+
+ENTRYPOINT void
+free_photopile (ModeInfo *mi)
+{
+  photopile_state *ss = &sss[MI_SCREEN(mi)];
+  if (!ss->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *ss->glx_context);
+  if (ss->frames) {
+    int i;
+    for (i = 0; i < MI_COUNT(mi); i++) {
+      if (ss->frames[i].title) free (ss->frames[i].title);
+      if (ss->frames[i].texid) glDeleteTextures(1, &ss->frames[i].texid);
+    }
+  }
+  if (ss->shadow) glDeleteTextures(1, &ss->shadow);
+  if (ss->texfont) free_texture_font (ss->texfont);
+}
+
 XSCREENSAVER_MODULE ("Photopile", photopile)
 
 #endif /* USE_GL */
index f6793eb446b01366bc2802965983707c7b9f6601..956a444b04c6fa093a15eacff1cda8c6f49acf93 100644 (file)
@@ -16,7 +16,6 @@
            "*titleFont2: -*-helvetica-medium-r-normal-*-*-120-*-*-*-*-*-*\n" \
            "*titleFont3: -*-helvetica-medium-r-normal-*-*-80-*-*-*-*-*-*\n"  \
 
-# define free_pinion 0
 # define release_pinion 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -1355,7 +1354,7 @@ draw_pinion (ModeInfo *mi)
   if (!pp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(pp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *pp->glx_context);
 
   glPushMatrix();
   glRotatef(current_device_rotation(), 0, 0, 1);
@@ -1465,6 +1464,25 @@ draw_pinion (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_pinion (ModeInfo *mi)
+{
+  pinion_configuration *pp = &pps[MI_SCREEN(mi)];
+  int i;
+
+  if (!pp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *pp->glx_context);
+
+  for (i = 0; i < pp->ngears; i++)
+    if (pp->gears[i]) free_gear (pp->gears[i]);
+  if (pp->gears) free (pp->gears);
+  if (pp->trackball) gltrackball_free (pp->trackball);
+  if (pp->font1) free_texture_font (pp->font1);
+  if (pp->font2) free_texture_font (pp->font2);
+  if (pp->font3) free_texture_font (pp->font3);
+}
+
 XSCREENSAVER_MODULE ("Pinion", pinion)
 
 #endif /* USE_GL */
index 24f9a2a093bf9602c7699a1481b77ed5cf19d403..0112f9385dbb7c6d89113d13eac7f78a8f2245dc 100644 (file)
@@ -183,7 +183,7 @@ typedef struct {
        GLXContext *glx_context;
 
     Bool button_down_p;
-    trackball_state *trackball;
+   trackball_state *trackball;
     GLuint *dlists, *poly_counts;
     int dlist_count, dlist_size;
     int system_index, system_size;
@@ -1079,7 +1079,7 @@ draw_pipes (ModeInfo * mi)
        if (!pp->glx_context)
                return;
 
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(pp->glx_context));
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *pp->glx_context);
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
        glColor3f(1.0, 1.0, 1.0);
@@ -1166,7 +1166,7 @@ change_pipes (ModeInfo * mi)
        if (!pp->glx_context)
                return;
 
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(pp->glx_context));
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *pp->glx_context);
        pinit(mi, 1);
 }
 #endif /* !STANDALONE */
@@ -1177,42 +1177,41 @@ free_pipes (ModeInfo * mi)
 {
        pipesstruct *pp = &pipes[MI_SCREEN(mi)];
 
-       if (pp->glx_context) {
-
-               /* Display lists MUST be freed while their glXContext is current. */
-               glXMakeCurrent(MI_DISPLAY(mi), pp->window, *(pp->glx_context));
-
-               if (pp->valve)
-                       glDeleteLists(pp->valve, 1);
-               if (pp->bolts)
-                       glDeleteLists(pp->bolts, 1);
-               if (pp->betweenbolts)
-                       glDeleteLists(pp->betweenbolts, 1);
-
-               if (pp->elbowbolts)
-                       glDeleteLists(pp->elbowbolts, 1);
-               if (pp->elbowcoins)
-                       glDeleteLists(pp->elbowcoins, 1);
-
-               if (pp->guagehead)
-                       glDeleteLists(pp->guagehead, 1);
-               if (pp->guageface)
-                       glDeleteLists(pp->guageface, 1);
-               if (pp->guagedial)
-                       glDeleteLists(pp->guagedial, 1);
-               if (pp->guageconnector)
-                       glDeleteLists(pp->guageconnector, 1);
-               if (pp->teapot)
-                       glDeleteLists(pp->teapot, 1);
-        if (pp->dlists)
-          {
-            int i;
-            for (i = 0; i < pp->dlist_count; i++)
-              glDeleteLists (pp->dlists[i], 1);
-            free (pp->dlists);
-            free (pp->poly_counts);
-          }
-       }
+    if (!pp->glx_context) return;
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *pp->glx_context);
+
+    if (pp->trackball) gltrackball_free (pp->trackball);
+
+    if (pp->valve)
+        glDeleteLists(pp->valve, 1);
+    if (pp->bolts)
+        glDeleteLists(pp->bolts, 1);
+    if (pp->betweenbolts)
+        glDeleteLists(pp->betweenbolts, 1);
+
+    if (pp->elbowbolts)
+        glDeleteLists(pp->elbowbolts, 1);
+    if (pp->elbowcoins)
+        glDeleteLists(pp->elbowcoins, 1);
+
+    if (pp->guagehead)
+        glDeleteLists(pp->guagehead, 1);
+    if (pp->guageface)
+        glDeleteLists(pp->guageface, 1);
+    if (pp->guagedial)
+        glDeleteLists(pp->guagedial, 1);
+    if (pp->guageconnector)
+        glDeleteLists(pp->guageconnector, 1);
+    if (pp->teapot)
+        glDeleteLists(pp->teapot, 1);
+    if (pp->dlists)
+      {
+        int i;
+        for (i = 0; i < pp->dlist_count; i++)
+          glDeleteLists (pp->dlists[i], 1);
+        free (pp->dlists);
+        free (pp->poly_counts);
+      }
 }
 
 XSCREENSAVER_MODULE ("Pipes", pipes)
index 507d295790768be406a9086e3f4f0e7feb427589..00f6bd456e5a5dcb7adb8beec224c32e5442bcae 100644 (file)
@@ -24,7 +24,6 @@
        "*suppressRotationAnimation: True\n" \
 
 
-# define free_polyhedra 0
 # define release_polyhedra 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -581,7 +580,7 @@ draw_polyhedra (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   if (bp->mode == 0 && do_which >= 0 && bp->change_to < 0)
     ;
@@ -678,6 +677,27 @@ draw_polyhedra (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_polyhedra (ModeInfo *mi)
+{
+  polyhedra_configuration *bp = &bps[MI_SCREEN(mi)];
+  int i;
+
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+  for (i = 0; i < bp->npolyhedra; i++)
+    free_polyhedron (bp->polyhedra[i]);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->colors) free (bp->colors);
+  if (bp->font1_data) free_texture_font (bp->font1_data);
+  if (bp->font2_data) free_texture_font (bp->font2_data);
+  if (bp->font3_data) free_texture_font (bp->font3_data);
+  if (glIsList(bp->object_list)) glDeleteLists(bp->object_list, 1);
+}
+
 XSCREENSAVER_MODULE ("Polyhedra", polyhedra)
 
 #endif /* USE_GL */
index a7699c917b640b2515fd71632831a5847ef0cecb..98e68918f4b7ede7eda9d0d94c2fd694f5aa4037 100644 (file)
@@ -2406,6 +2406,7 @@ free_polyhedron (polyhedron *p)
   Free (p->name);
   Free (p->group);
   Free (p->class);
+  Free (p->points);
   if (p->faces)
     {
       int i;
index 76c1287363a10ba537a13d1ad85d7c57bd152b29..c704722a32d27c47d1a2bfa83996b683a403a7f1 100644 (file)
@@ -93,7 +93,6 @@ static const char sccsid[] = "@(#)polytopes.c  1.2 05/09/28 xlockmore";
                             "*showFPS:    False \n" \
                            "*suppressRotationAnimation: True\n" \
 
-# define free_polytopes 0
 # define release_polytopes 0
 # include "xlockmore.h"         /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
@@ -3097,7 +3096,7 @@ ENTRYPOINT void draw_polytopes(ModeInfo *mi)
   if (!hp->glx_context)
     return;
 
-  glXMakeCurrent(display,window,*(hp->glx_context));
+  glXMakeCurrent(display, window, *hp->glx_context);
 
 
   glMatrixMode(GL_PROJECTION);
@@ -3179,11 +3178,20 @@ ENTRYPOINT void change_polytopes(ModeInfo *mi)
   if (!hp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi),MI_WINDOW(mi),*(hp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *hp->glx_context);
   init(mi);
 }
 #endif /* !STANDALONE */
 
+ENTRYPOINT void free_polytopes(ModeInfo *mi)
+{
+  polytopesstruct *hp = &poly[MI_SCREEN(mi)];
+  if (!hp->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *hp->glx_context);
+  gltrackball_free (hp->trackballs[0]);
+  gltrackball_free (hp->trackballs[1]);
+}
+
 XSCREENSAVER_MODULE ("Polytopes", polytopes)
 
 #endif /* USE_GL */
index 2a1e56604c92cdaa1dad2b67222e7322d4ea85db..3a052eae59ffbe0f9de331f7ee570ea9321892b7 100644 (file)
@@ -219,7 +219,6 @@ static const char sccsid[] = "@(#)projectiveplane.c  1.1 14/01/01 xlockmore";
 # define DEFAULTS           "*delay:      10000 \n" \
                             "*showFPS:    False \n" \
 
-# define free_projectiveplane 0
 # define release_projectiveplane 0
 # include "xlockmore.h"         /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
@@ -1516,7 +1515,7 @@ ENTRYPOINT void draw_projectiveplane(ModeInfo *mi)
   if (!pp->glx_context)
     return;
 
-  glXMakeCurrent(display,window,*(pp->glx_context));
+  glXMakeCurrent(display, window, *pp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
   glLoadIdentity();
@@ -1540,11 +1539,21 @@ ENTRYPOINT void change_projectiveplane(ModeInfo *mi)
   if (!pp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi),MI_WINDOW(mi),*(pp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *pp->glx_context);
   init(mi);
 }
 #endif /* !STANDALONE */
 
+ENTRYPOINT void free_projectiveplane(ModeInfo *mi)
+{
+  projectiveplanestruct *pp = &projectiveplane[MI_SCREEN(mi)];
+  if (!pp->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *pp->glx_context);
+  gltrackball_free (pp->trackballs[0]);
+  gltrackball_free (pp->trackballs[1]);
+  if (pp->tex_name) glDeleteTextures (1, &pp->tex_name);
+}
+
 XSCREENSAVER_MODULE ("ProjectivePlane", projectiveplane)
 
 #endif /* USE_GL */
index d628845e6d567f17f7fcb7ca1f8283a0758a6645..0ef87fd4b9312dd29e81a35c9563c6dae63045ae 100644 (file)
@@ -19,7 +19,6 @@
                            "*showFPS: False   \n" \
                            "*wireframe: False \n"
 
-# define free_providence 0
 # define release_providence 0
 #include "xlockmore.h"
 #else
@@ -101,6 +100,8 @@ typedef struct {
   double theta;
   double theta_scale;
 
+  /* This structure is so large that debugging malloc requires
+     $MALLOC_PERMIT_INSANE_REQUESTS to be set under iOS... */
   double particles[PARTICLE_COUNT][5];
   int eyeparticles[EYE_PARTICLE_COUNT][2];
   double lookup[LOOKUPSIZE][EYELENGTH][2];
@@ -713,7 +714,7 @@ ENTRYPOINT void draw_providence(ModeInfo * mi)
   if(!mp->glx_context)
     return;
   
-  glXMakeCurrent(display, window, *(mp->glx_context));
+  glXMakeCurrent(display, window, *mp->glx_context);
   
   /* setup twoside lighting */
   glLightfv(GL_LIGHT0, GL_AMBIENT, ambient2);
@@ -791,9 +792,19 @@ ENTRYPOINT void change_providence(ModeInfo * mi)
   if (!mp->glx_context)
        return;
   
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(mp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
   pinit();
 }
 #endif /* !STANDALONE */
 
+ENTRYPOINT void free_providence(ModeInfo * mi) 
+{
+  providencestruct *mp = &providence[MI_SCREEN(mi)];
+  if (!mp->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *mp->glx_context);
+  gltrackball_free (mp->trackball);
+  if (glIsList(mp->pyramidlist)) glDeleteLists(mp->pyramidlist, 1);
+  if (mp->bricktexture) glDeleteTextures (1, &mp->bricktexture);
+}
+
 XSCREENSAVER_MODULE ("Providence", providence)
index 285b5decc344fed70bda1c3a65fe1d70630cd6e1..4a3e79ee972e904ecca82793d3aa42a63427761f 100644 (file)
@@ -467,7 +467,7 @@ ENTRYPOINT void draw_pulsar(ModeInfo * mi)
   if (!gp->glx_context)
        return;
 
-  glXMakeCurrent(display, window, *(gp->glx_context));
+  glXMakeCurrent(display, window, *gp->glx_context);
   drawScene(mi);
   if (mi->fps_p) do_fps (mi);
   glXSwapBuffers(display, window);
@@ -508,7 +508,10 @@ init_pulsar(ModeInfo * mi)
 ENTRYPOINT void free_pulsar(ModeInfo * mi)
 {
   pulsarstruct *gp = &Pulsar[MI_SCREEN(mi)];
+  if (!gp->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
   free(gp->quads);
+  if (glIsList(gp->quad_list)) glDeleteLists(gp->quad_list, 1);
 }
 #endif
 
index b82f470e847f51aa68a2de7c306ba9392dbc9967..52f819eededc90f60abba6aa113d50ac9a1d8736 100644 (file)
@@ -24,7 +24,6 @@
                        "*wireframe:    False       \n" \
                        "*suppressRotationAnimation: True\n" \
 
-# define free_quasicrystal 0
 # define release_quasicrystal 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -308,7 +307,7 @@ draw_quasicrystal (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -473,6 +472,24 @@ draw_quasicrystal (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_quasicrystal (ModeInfo *mi)
+{
+  quasicrystal_configuration *bp = &bps[MI_SCREEN(mi)];
+  int i;
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  for (i = 0; i < bp->count; i++) {
+    free_rotator (bp->planes[i].rot);
+    free_rotator (bp->planes[i].rot2);
+    if (bp->planes[i].texid) glDeleteTextures (1, &bp->planes[i].texid);
+  }    
+  if (bp->planes) free (bp->planes);
+  if (bp->colors) free (bp->colors);
+
+}
+
 XSCREENSAVER_MODULE ("QuasiCrystal", quasicrystal)
 
 #endif /* USE_GL */
index bc9b2029d228f8894673e28db90930851b35841c..fce9d37b9612deb55952fac81747d318f09c7a4a 100644 (file)
@@ -22,7 +22,6 @@
                        "*showFPS:     False \n" \
                       "*wireframe:   False \n" \
 
-# define free_queens 0
 # define release_queens 0
 # include "xlockmore.h"
 
@@ -576,7 +575,7 @@ ENTRYPOINT void draw_queens(ModeInfo *mi)
   if(!qs->glx_context)
     return;
 
-  glXMakeCurrent(disp, w, *(qs->glx_context));
+  glXMakeCurrent(disp, w, *qs->glx_context);
 
   if(flat)
     glShadeModel(GL_FLAT);
@@ -605,6 +604,20 @@ ENTRYPOINT void draw_queens(ModeInfo *mi)
   glXSwapBuffers(disp, w);
 }
 
+
+ENTRYPOINT void free_queens(ModeInfo *mi) 
+{
+  Queenscreen *qs = &qss[MI_SCREEN(mi)];
+  int i;
+  if (!qs->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *qs->glx_context);
+  gltrackball_free (qs->trackball);
+
+  /* this is horrible! List numbers are hardcoded! */
+  for (i = 1; i <= 20; i++)
+    if (glIsList(i)) glDeleteLists(i, 1);
+}
+
 XSCREENSAVER_MODULE ("Queens", queens)
 
 #endif
index 0dd0faaca7e0c8e8e4afaeafc9c99994b29fd0e5..161b74ed427054334f7a569e0c2d21c356aeb9ef 100644 (file)
 #define __QUICKHULL_H__
 
 typedef struct qh_vertex {
-  union {
-    double v[3];
-    struct {
-      double x;
-      double y;
-      double z;
-    };
-  };
+  double x;
+  double y;
+  double z;
 } qh_vertex_t;
 
 typedef qh_vertex_t qh_vec3_t;
index 5cf35f7fccf6f0f91eebb4b254ecf3cbf863cfe7..e08fdadfee7a3f91948a092be365724f1c63a8ce 100644 (file)
@@ -16,7 +16,6 @@
                        "*showFPS:      False       \n" \
                        "*wireframe:    False       \n" \
 
-# define free_hoop 0
 # define release_hoop 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -715,7 +714,7 @@ draw_hoop (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -762,6 +761,31 @@ draw_hoop (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_hoop (ModeInfo *mi)
+{
+  hoop_configuration *bp = &bps[MI_SCREEN(mi)];
+
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->lights) free (bp->lights);
+  while (bp->trail) {
+    afterimage *n = bp->trail->next;
+    free (bp->trail);
+    bp->trail = n;
+  }
+  while (bp->oscillators) {
+    oscillator *n = bp->oscillators->next;
+    free (bp->oscillators);
+    bp->oscillators = n;
+  }
+  
+}
+
 XSCREENSAVER_MODULE_2 ("RaverHoop", raverhoop, hoop)
 
 #endif /* USE_GL */
index a3c8f98f235feb645c675cbeefdd8efda210f487..4c940d198b9750eee9f5ae35e283920f8d646a4b 100644 (file)
@@ -571,7 +571,7 @@ draw_dazzle (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glShadeModel(GL_SMOOTH);
   glDisable(GL_DEPTH_TEST);
@@ -709,6 +709,10 @@ ENTRYPOINT void
 free_dazzle (ModeInfo *mi)
 {
   dazzle_configuration *bp = &bps[MI_SCREEN(mi)];
+
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
   if (bp->nodes) free (bp->nodes);
   if (bp->colors) free (bp->colors);
   if (bp->dlists)
index 9ad12f0c7e9e0456e3b54b8dec4286a59736a882..e906082141e0faf20d4a35d04d2ba702cfc27d1a 100644 (file)
@@ -1497,7 +1497,7 @@ ENTRYPOINT void draw_romanboy(ModeInfo *mi)
   if (!pp->glx_context)
     return;
 
-  glXMakeCurrent(display,window,*(pp->glx_context));
+  glXMakeCurrent(display, window, *pp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
   glLoadIdentity();
@@ -1524,14 +1524,15 @@ ENTRYPOINT void free_romanboy(ModeInfo *mi)
 {
   romanboystruct *pp = &romanboy[MI_SCREEN(mi)];
 
-  if (pp->pp)
-    (void) free((void *)pp->pp);
-  if (pp->pn)
-    (void) free((void *)pp->pn);
-  if (pp->col)
-    (void) free((void *)pp->col);
-  if (pp->tex)
-    (void) free((void *)pp->tex);
+  if (!pp->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *pp->glx_context);
+
+  if (pp->pp) free(pp->pp);
+  if (pp->pn) free(pp->pn);
+  if (pp->col) free(pp->col);
+  if (pp->tex) free(pp->tex);
+  gltrackball_free (pp->trackball);
+  if (pp->tex_name) glDeleteTextures (1, &pp->tex_name);
 }
 
 #ifndef STANDALONE
@@ -1542,7 +1543,7 @@ ENTRYPOINT void change_romanboy(ModeInfo *mi)
   if (!pp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi),MI_WINDOW(mi),*(pp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *pp->glx_context);
   init(mi);
 }
 #endif /* !STANDALONE */
index ed06645aedce34379cda5132ad4c4d0f6e804e31..e0182cf0453930a4fa10651f7147f53d8962c6ca 100644 (file)
@@ -1460,7 +1460,7 @@ rotateFace(rubikstruct * rp, int face, int direction)
                /* DrawSquare(face, position); */
        }
        if (faceLoc != NULL)
-               (void) free((void *) faceLoc);
+               free(faceLoc);
        return True;
 }
 
@@ -1728,7 +1728,7 @@ shuffle(ModeInfo * mi)
 
        for (face = 0; face < MAXFACES; face++) {
                if (rp->cubeLoc[face] != NULL)
-                       (void) free((void *) rp->cubeLoc[face]);
+                       free(rp->cubeLoc[face]);
                if ((rp->cubeLoc[face] = (RubikLoc *) malloc(sizeFace(rp, face) *
                                sizeof (RubikLoc))) == NULL) {
                        return False;
@@ -1740,7 +1740,7 @@ shuffle(ModeInfo * mi)
        }
        for (i = 0; i < MAXORIENT; i++) {
                if (rp->rowLoc[i] != NULL)
-                       (void) free((void *) rp->rowLoc[i]);
+                       free(rp->rowLoc[i]);
                /* The following is reused so make it the biggest size */
                if ((rp->rowLoc[i] = (RubikLoc *) malloc(MAXMAXSIZE *
                                sizeof (RubikLoc))) == NULL) {
@@ -1750,7 +1750,7 @@ shuffle(ModeInfo * mi)
        rp->storedmoves = MI_COUNT(mi);
        if (rp->storedmoves < 0) {
                if (rp->moves != NULL)
-                       (void) free((void *) rp->moves);
+                       free(rp->moves);
                rp->moves = (RubikMove *) NULL;
                rp->storedmoves = NRAND(-rp->storedmoves) + 1;
        }
@@ -1880,18 +1880,23 @@ free_rubik(ModeInfo *mi)
        rubikstruct *rp = &rubik[MI_SCREEN(mi)];
        int         i;
 
+    if (!rp->glx_context) return;
+       glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *rp->glx_context);
+
+    if (rp->trackball) gltrackball_free (rp->trackball);
+
        for (i = 0; i < MAXFACES; i++)
                if (rp->cubeLoc[i] != NULL) {
-                       (void) free((void *) rp->cubeLoc[i]);
+                       free(rp->cubeLoc[i]);
                        rp->cubeLoc[i] = (RubikLoc *) NULL;
                }
        for (i = 0; i < MAXORIENT; i++)
                if (rp->rowLoc[i] != NULL) {
-                       (void) free((void *) rp->rowLoc[i]);
+                       free(rp->rowLoc[i]);
                        rp->rowLoc[i] = (RubikLoc *) NULL;
                }
        if (rp->moves != NULL) {
-               (void) free((void *) rp->moves);
+               free(rp->moves);
                rp->moves = (RubikMove *) NULL;
        }
 }
@@ -1945,7 +1950,7 @@ draw_rubik(ModeInfo * mi)
                return;
 
     mi->polygon_count = 0;
-       glXMakeCurrent(display, window, *(rp->glx_context));
+       glXMakeCurrent(display, window, *rp->glx_context);
 
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
index fadeb0d07c5ca5ef614be77d13caa3bb696be011..6082f09818d2ffb96bf6c628d6922a1c298e37bf 100644 (file)
@@ -22,7 +22,6 @@
                    "*wireframe:     False         \n" \
                   "*suppressRotationAnimation: True\n" \
 
-# define free_rubikblocks 0
 # define release_rubikblocks 0
 #include "xlockmore.h"
 #include "rotator.h"
@@ -592,7 +591,7 @@ draw_rubikblocks(ModeInfo * mi)
   MI_IS_DRAWN(mi) = True;
   if (!cp->glx_context) return;
   mi->polygon_count = 0;
-  glXMakeCurrent(display, window, *(cp->glx_context));
+  glXMakeCurrent(display, window, *cp->glx_context);
   if (!draw_main(mi, cp)) 
   {
     MI_ABORT(mi);
@@ -609,7 +608,7 @@ change_rubikblocks(ModeInfo * mi)
 {
   rubikblocks_conf *cp = &rubikblocks[MI_SCREEN(mi)];
   if (!cp->glx_context) return;
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cp->glx_context);
   init_gl(mi);
 }
 #endif /* !STANDALONE */
@@ -628,6 +627,17 @@ rubikblocks_handle_event (ModeInfo *mi, XEvent *event)
 }
 
 
+ENTRYPOINT void
+free_rubikblocks (ModeInfo *mi)
+{
+  rubikblocks_conf *cp = &rubikblocks[MI_SCREEN(mi)];
+  if (!cp->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *cp->glx_context);
+  if (cp->trackball) gltrackball_free (cp->trackball);
+  glDeleteLists (cp->list_base, 27);
+}
+
+
 XSCREENSAVER_MODULE ("RubikBlocks", rubikblocks)
 
 #endif
index 6cd95f5d16b7c34d6f44fe95212464fed9b2de06..e0fccd3f6309da0ebaab48d99f02c7cd1b05ab0a 100644 (file)
@@ -724,7 +724,7 @@ ENTRYPOINT void draw_sballs(ModeInfo * mi)
     if (!sb->glx_context)
        return;
 
-    glXMakeCurrent(display, window, *(sb->glx_context));
+    glXMakeCurrent(display, window, *sb->glx_context);
     Draw(mi);
 #ifndef STANDALONE
     Reshape(mi); /* xlock mode */
@@ -747,21 +747,23 @@ ENTRYPOINT void draw_sballs(ModeInfo * mi)
 ENTRYPOINT void free_sballs(ModeInfo * mi)
 {
     sballsstruct *sb = &sballs[MI_SCREEN(mi)];
-    if (sb->glx_context)
+
+    if (!sb->glx_context) return;
+    glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *sb->glx_context);
+
+    gltrackball_free (sb->trackball);
+
+    if (sb->btexture)
     {
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sb->glx_context));
-       if (sb->btexture)
-       {
-           glDeleteTextures(1,&sb->backid);
-           XDestroyImage(sb->btexture);
-            sb->btexture = 0;
-       }
-       if (sb->ftexture)
-       {
-           glDeleteTextures(1,&sb->faceid);
-           XDestroyImage(sb->ftexture);
-            sb->ftexture = 0;
-       }
+        glDeleteTextures(1,&sb->backid);
+        XDestroyImage(sb->btexture);
+        sb->btexture = 0;
+    }
+    if (sb->ftexture)
+    {
+        glDeleteTextures(1,&sb->faceid);
+        XDestroyImage(sb->ftexture);
+        sb->ftexture = 0;
     }
 }
 
@@ -813,7 +815,7 @@ ENTRYPOINT void change_sballs(ModeInfo * mi)
                       do_texture ? "on" : "off"
                        );
     }
-    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sb->glx_context));
+    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sb->glx_context);
 
 }
 #endif /* !STANDALONE */
index 0317299ab25d24dcdbefeb4bfdd08369fadd6022..3740f226123a190da79919972462b3b9aa377bc4 100644 (file)
@@ -550,7 +550,7 @@ draw_gasket(ModeInfo * mi)
   if (max_depth > 10)
     max_depth = 10;
 
-  glXMakeCurrent(display, window, *(gp->glx_context));
+  glXMakeCurrent(display, window, *gp->glx_context);
   draw(mi);
   if (mi->fps_p) do_fps (mi);
   glFinish();
@@ -562,16 +562,17 @@ free_gasket(ModeInfo * mi)
 {
   gasketstruct *gp = &gasket[MI_SCREEN(mi)];
 
-  if (gp->glx_context)
-  {
-       /* Display lists MUST be freed while their glXContext is current. */
-    glXMakeCurrent(MI_DISPLAY(mi), gp->window, *(gp->glx_context));
+  if (!gp->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *gp->glx_context);
 
-    if (glIsList(gp->gasket0)) glDeleteLists(gp->gasket0, 1);
-    if (glIsList(gp->gasket1)) glDeleteLists(gp->gasket1, 1);
-    if (glIsList(gp->gasket2)) glDeleteLists(gp->gasket2, 1);
-    if (glIsList(gp->gasket3)) glDeleteLists(gp->gasket3, 1);
-  }
+  if (gp->trackball) gltrackball_free (gp->trackball);
+  if (gp->rot) free_rotator (gp->rot);
+  if (gp->colors) free (gp->colors);
+
+  if (glIsList(gp->gasket0)) glDeleteLists(gp->gasket0, 1);
+  if (glIsList(gp->gasket1)) glDeleteLists(gp->gasket1, 1);
+  if (glIsList(gp->gasket2)) glDeleteLists(gp->gasket2, 1);
+  if (glIsList(gp->gasket3)) glDeleteLists(gp->gasket3, 1);
 }
 
 XSCREENSAVER_MODULE_2 ("Sierpinski3D", sierpinski3d, gasket)
index 1061482074d5d96c21fb25863c04e0de4899ec2a..272a447dba10a648c36ed62ca5828cafdcee551b 100644 (file)
@@ -14,7 +14,6 @@
                        "*showFPS:      False       \n" \
                        "*wireframe:    False       \n" \
 
-# define free_tentacles 0
 # define release_tentacles 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -90,7 +89,6 @@ typedef struct {
   GLuint texid;
 
   Bool left_p;
-  
 
 } tentacles_configuration;
 
@@ -994,7 +992,7 @@ draw_tentacles (ModeInfo *mi)
   if (!tc->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(tc->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tc->glx_context);
 
   glShadeModel(GL_SMOOTH);
 
@@ -1098,6 +1096,30 @@ draw_tentacles (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_tentacles (ModeInfo *mi)
+{
+  tentacles_configuration *tc = &tcs[MI_SCREEN(mi)];
+  int i, j;
+
+  if (!tc->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tc->glx_context);
+
+  for (i = 0; i < tc->ntentacles; i++) {
+    for (j = 0; j < tc->tentacles[i]->nsegments; j++)
+      free_rotator (tc->tentacles[i]->segments[j].rot);
+    free (tc->tentacles[i]->segments);
+    free (tc->tentacles[i]);
+  }
+  if (tc->tentacles) free (tc->tentacles);
+  if (tc->torus_points) free (tc->torus_points);
+  if (tc->torus_normals) free (tc->torus_normals);
+  if (tc->texture) XDestroyImage (tc->texture);
+  if (tc->trackball) gltrackball_free (tc->trackball);
+  if (tc->texid) glDeleteTextures (1, &tc->texid);
+}
+
 XSCREENSAVER_MODULE_2 ("SkyTentacles", skytentacles, tentacles)
 
 #endif /* USE_GL */
index 3464c377fe481ede133a8fc7edeb3776c389e99c..862f35893e52e2fcd8f399d42796857292499f39 100644 (file)
@@ -758,7 +758,9 @@ subnet_hosts (sonar_sensor_data *ssd, char **error_ret, char **desc_ret,
                      mask_width (mask),
                      mask);
           if (in2.s_addr == 0x0100007f ||   /* 127.0.0.1 in network order */
+              ((in2.s_addr & 0x000000ff) == 0x7f) ||  /* 127.0.0.0/24 */
               mask == 0)
+            /* Assume all 127 addresses are loopback, not just 127.0.0.1. */
             continue;
 
           /* At least on the AT&T 3G network, pinging either of the two
@@ -780,6 +782,10 @@ subnet_hosts (sonar_sensor_data *ssd, char **error_ret, char **desc_ret,
 
           in = in2;
           subnet_width = mask_width (mask);
+
+          /* Take the first non-loopback network: prefer en0 over en1. */
+          if (in.s_addr && subnet_width)
+            break;
         }
 
       if (in.s_addr)
@@ -980,6 +986,8 @@ send_ping (ping_data *pd, const sonar_bogie *b)
       perror(buf);
 #endif
     }
+
+  free (packet);
 }
 
 /* signal handler */
index c4ea949046812e66939893a474776fd97c6cd39f..ddbb79f0b6424749e70d311b0acbfced2bc0a5d5 100644 (file)
@@ -623,17 +623,20 @@ static void
 update_sensor_data (sonar_configuration *sp)
 {
   sonar_bogie *new_list = sp->ssd->scan_cb (sp->ssd);
-  sonar_bogie *b2;
+  sonar_bogie *b2, *next;
 
   /* If a bogie exists in 'new_list' but not 'pending', add it.
      If a bogie exists in both, update it in 'pending'.
    */
-  for (b2 = new_list; b2; b2 = b2->next)
+  for (b2 = new_list, next = b2 ? b2->next : 0; 
+       b2; 
+       b2 = next, next = next ? next->next : 0)
     {
       if (debug_p > 2)
         fprintf (stderr, "%s:   updated: %s (%5.2f %5.2f %5.2f)\n", 
                  progname, b2->name, b2->r, b2->th, b2->ttl);
       copy_and_insert_bogie (sp->ssd, b2, &sp->pending);
+      sonar_free_bogie (sp->ssd, b2);
     }
   if (debug_p > 2) fprintf (stderr, "\n");
 }
@@ -1041,7 +1044,7 @@ draw_sonar (ModeInfo *mi)
   if (!sp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -1227,13 +1230,16 @@ draw_sonar (ModeInfo *mi)
 ENTRYPOINT void
 free_sonar (ModeInfo *mi)
 {
-#if 0
   sonar_configuration *sp = &sps[MI_SCREEN(mi)];
   sonar_bogie *b = sp->displayed;
+
+  if (!sp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
+
   while (b)
     {
       sonar_bogie *next = b->next;
-      free_bogie (sp->ssd, b);
+      sonar_free_bogie (sp->ssd, b);
       b = next;
     }
   sp->displayed = 0;
@@ -1242,15 +1248,24 @@ free_sonar (ModeInfo *mi)
   while (b)
     {
       sonar_bogie *next = b->next;
-      free_bogie (sp->ssd, b);
+      sonar_free_bogie (sp->ssd, b);
       b = next;
     }
   sp->pending = 0;
 
-  sp->ssd->free_data_cb (sp->ssd, sp->ssd->closure);
-  free (sp->ssd);
-  sp->ssd = 0;
-#endif
+  if (sp->ssd) {
+    sp->ssd->free_data_cb (sp->ssd, sp->ssd->closure);
+    free (sp->ssd);
+    sp->ssd = 0;
+  }
+
+  if (sp->trackball) gltrackball_free (sp->trackball);
+  if (sp->rot) free_rotator (sp->rot);
+  if (sp->texfont) free_texture_font (sp->texfont);
+  glDeleteLists (sp->table_list, 1);
+  glDeleteLists (sp->screen_list, 1);
+  glDeleteLists (sp->grid_list, 1);
+  glDeleteLists (sp->sweep_list, 1);
 }
 
 XSCREENSAVER_MODULE ("Sonar", sonar)
index 9cefbf3dbb322b196c9cb8d446b1ff85edf38877..cf01c7de209a0d911df77b565e0c4ae8e234652f 100644 (file)
@@ -66,7 +66,6 @@
                 "*suppressRotationAnimation: True\n" \
         "*labelfont:   -*-helvetica-medium-r-normal-*-*-180-*-*-*-*-*-*\n"
 
-# define free_spheremonics 0
 # define release_spheremonics 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -796,7 +795,7 @@ draw_spheremonics (ModeInfo *mi)
   if (!cc->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(cc->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cc->glx_context);
 
   gl_init(mi);
 
@@ -877,6 +876,21 @@ draw_spheremonics (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_spheremonics (ModeInfo *mi)
+{
+  spheremonics_configuration *cc = &ccs[MI_SCREEN(mi)];
+  if (!cc->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *cc->glx_context);
+  if (cc->colors) free (cc->colors);
+  if (cc->trackball) gltrackball_free (cc->trackball);
+  if (cc->rot) free_rotator (cc->rot);
+  if (cc->font_data) free_texture_font (cc->font_data);
+  if (glIsList(cc->dlist)) glDeleteLists(cc->dlist, 1);
+  if (glIsList(cc->dlist2)) glDeleteLists(cc->dlist2, 1);
+}
+
 XSCREENSAVER_MODULE ("Spheremonics", spheremonics)
 
 #endif /* USE_GL */
index b84a359d7cda108bbcf62aacdf3fbfb5f1fd46e3..8cc8eb402b4b91abeab7a45792ba3553ab1c55ff 100644 (file)
@@ -283,6 +283,7 @@ parse_color (ModeInfo *mi, char *key, GLfloat color[4])
                key, string);
       exit (1);
     }
+  free (string);
 
   color[0] = xcolor.red   / 65536.0;
   color[1] = xcolor.green / 65536.0;
@@ -1319,7 +1320,7 @@ draw_splitflap (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -1397,10 +1398,27 @@ ENTRYPOINT void
 free_splitflap (ModeInfo *mi)
 {
   splitflap_configuration *bp = &bps[MI_SCREEN(mi)];
-  if (bp->tc)
-    textclient_close (bp->tc);
-  bp->tc = 0;
-  /* #### bp->texinfo */
+  int i;
+
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+  if (bp->flappers) free (bp->flappers);
+  if (bp->tc) textclient_close (bp->tc);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->rot2) free_rotator (bp->rot2);
+  if (bp->font_data) free_texture_font (bp->font_data);
+  if (bp->dlists) {
+    for (i = 0; i < countof(all_objs); i++)
+      if (glIsList(bp->dlists[i])) glDeleteLists(bp->dlists[i], 1);
+    free (bp->dlists);
+  }
+  if (bp->texinfo) {
+    for (i = 0; i < bp->texinfo_size; i++)
+      if (bp->texinfo[i].texid) glDeleteTextures (1, &bp->texinfo[i].texid);
+    free (bp->texinfo);
+  }
 }
 
 XSCREENSAVER_MODULE ("SplitFlap", splitflap)
index 28231339e79edebb6544a743fb5f04e3f752fada..a68e992d3e05bbdfbc2b616ca1760127c4b37790 100644 (file)
@@ -575,7 +575,7 @@ draw_splodesic (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glShadeModel(GL_SMOOTH);
 
@@ -627,12 +627,19 @@ ENTRYPOINT void
 free_splodesic (ModeInfo *mi)
 {
   splodesic_configuration *bp = &bps[MI_SCREEN(mi)];
+
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
   while (bp->triangles)
     {
       triangle *t = bp->triangles->next;
       free (bp->triangles);
       bp->triangles = t;
     }
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->colors) free (bp->colors);
 }
 
 XSCREENSAVER_MODULE ("Splodesic", splodesic)
index 1860b11eaf574baef8134920d0b5d306acf44c7c..c0d5c9b6511c5177d3bb177512cc202adbed747b 100644 (file)
@@ -768,7 +768,7 @@ CleanupSproingies(sp_instance *si)
                glDeleteLists(si->TopsSides, 2);
        }
        if (si->positions) {
-               (void) free((void *) (si->positions));
+               free((si->positions));
                si->positions = NULL;
        }
 }
index 7089f9c1c90ab9a76ef9c8fc196ec6c49cd8a3e9..c4eb759fd3d965ddea9e84c08156bde3a2687a66 100644 (file)
@@ -181,7 +181,7 @@ draw_sproingies (ModeInfo * mi)
                return;
 
        glDrawBuffer(GL_BACK);
-       glXMakeCurrent(display, window, *(sp->glx_context));
+       glXMakeCurrent(display, window, *sp->glx_context);
 
     glPushMatrix();
     glRotatef(current_device_rotation(), 0, 0, 1);
@@ -216,12 +216,9 @@ ENTRYPOINT void
 free_sproingies (ModeInfo * mi)
 {
        sproingiesstruct *sp = &sproingies[MI_SCREEN(mi)];
-
-       if (sp->glx_context) {
-
-               glXMakeCurrent(MI_DISPLAY(mi), sp->window, *(sp->glx_context));
-               CleanupSproingies(&sp->si);
-       }
+    if (!sp->glx_context) return;
+       glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
+    CleanupSproingies(&sp->si);
 }
 
 XSCREENSAVER_MODULE ("Sproingies", sproingies)
index 7b6fbe2fe2aaf199f097ece2ed42c5dbd2be7722..faf9a37b192e4a37efe4f332956d03466896b293 100644 (file)
@@ -472,7 +472,7 @@ draw_stairs (ModeInfo * mi)
        if (!sp->glx_context)
                return;
 
-       glXMakeCurrent(display, window, *(sp->glx_context));
+       glXMakeCurrent(display, window, *sp->glx_context);
 
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -570,7 +570,7 @@ change_stairs (ModeInfo * mi)
        if (!sp->glx_context)
                return;
 
-       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sp->glx_context));
+       glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
        pinit();
 }
 #endif /* !STANDALONE */
@@ -579,9 +579,10 @@ ENTRYPOINT void
 free_stairs (ModeInfo * mi)
 {
        stairsstruct *sp = &stairs[MI_SCREEN(mi)];
-       if (glIsList(sp->objects)) {
-               glDeleteLists(sp->objects, 1);
-       }
+    if (!sp->glx_context) return;
+       glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
+       if (glIsList(sp->objects)) glDeleteLists(sp->objects, 1);
+    if (sp->trackball) gltrackball_free (sp->trackball);
 }
 
 XSCREENSAVER_MODULE ("Stairs", stairs)
index 1efcd154c321d84ffd6e9e4c38790cccab820089..bccd5682efe5ededc18dcfc14d0fafb4064935fc 100644 (file)
@@ -896,7 +896,7 @@ draw_sws (ModeInfo *mi)
     return;
 
   glDrawBuffer (GL_BACK);
-  glXMakeCurrent (dpy, window, *(sc->glx_context));
+  glXMakeCurrent (dpy, window, *sc->glx_context);
 
   glClear (GL_COLOR_BUFFER_BIT);
 
@@ -1057,10 +1057,18 @@ ENTRYPOINT void
 free_sws (ModeInfo *mi)
 {
   sws_configuration *sc = &scs[MI_SCREEN(mi)];
-  if (sc->tc)
-    textclient_close (sc->tc);
-
-  /* #### there's more to free here */
+  int i;
+  if (!sc->glx_context) return;
+  glXMakeCurrent (MI_DISPLAY(mi), MI_WINDOW(mi), *sc->glx_context);
+  if (sc->tc) textclient_close (sc->tc);
+  if (sc->texfont) free_texture_font (sc->texfont);
+  if (sc->buf) free (sc->buf);
+  if (sc->line_widths) free (sc->line_widths);
+  for (i = 0; i < sc->total_lines; i++)
+    if (sc->lines[i]) free (sc->lines[i]);
+  if (sc->lines) free (sc->lines);
+  if (glIsList(sc->star_list)) glDeleteLists(sc->star_list, 1);
+  if (glIsList(sc->text_list)) glDeleteLists(sc->text_list, 1);
 }
 
 
index 880ef01b78cc1c9e48a197489ea3e4df621fd3b8..ff4e131969fc5c430c3257bfed695151b6d83edb 100644 (file)
@@ -101,7 +101,7 @@ draw_stonerview (ModeInfo *mi)
 {
   stonerview_configuration *bp = &bps[MI_SCREEN(mi)];
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glPushMatrix ();
   glRotatef( current_device_rotation(), 0, 0, 1);
@@ -132,6 +132,9 @@ ENTRYPOINT void
 free_stonerview (ModeInfo *mi)
 {
   stonerview_configuration *bp = &bps[MI_SCREEN(mi)];
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->trackball) gltrackball_free (bp->trackball);
   if (bp->st)
     stonerview_win_release (bp->st);
 }
index 3c0833543deedcefd181a6f37b100540316a65cb..69dc9205cf7899f473e8189f6d244bec81eb868d 100644 (file)
@@ -78,7 +78,6 @@ static const char sccsid[] = "@(#)superquadrics.c     4.07 97/11/24 xlockmore";
                                        "*wireframe:    False   \n"                     \
                                        "*suppressRotationAnimation: True\n" \
 
-# define free_superquadrics 0
 # define release_superquadrics 0
 # define superquadrics_handle_event 0
 # include "xlockmore.h"                                /* from the xscreensaver distribution */
@@ -776,7 +775,7 @@ draw_superquadrics(ModeInfo * mi)
        if (!sp->glx_context)
                return;
 
-       glXMakeCurrent(display, window, *(sp->glx_context));
+       glXMakeCurrent(display, window, *sp->glx_context);
 
     mi->polygon_count = NextSuperquadricDisplay(mi);
 
@@ -800,6 +799,12 @@ reshape_superquadrics(ModeInfo * mi, int width, int height)
 }
 
 
+ENTRYPOINT void
+free_superquadrics(ModeInfo * mi)
+{
+  /* nothing to do */
+}
+
 #endif
 
 /* End of superquadrics.c */
index 4c7974038f48cd4cda9f0beb0b08ae83cff9ddf9..26439d5dfca999b5befb2c91b11b54efdb2acc10 100644 (file)
@@ -46,7 +46,6 @@
                                     "*showFPS:      False   \n" \
                                   "*suppressRotationAnimation: True\n" \
 
-# define free_surface 0
 # define release_surface 0
 # include "xlockmore.h"     /* from the xscreensaver distribution */
 #else  /* !STANDALONE */
@@ -429,7 +428,7 @@ ENTRYPOINT void reshape_surface(ModeInfo *mi, int width, int height)
     h = height / (GLfloat) width;
   }
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
 
   glViewport(0, y, (GLint) width, (GLint) height);
   glMatrixMode(GL_PROJECTION);
@@ -634,7 +633,7 @@ ENTRYPOINT void draw_surface(ModeInfo * mi)
 
   glDrawBuffer(GL_BACK);
 
-  glXMakeCurrent(display, window, *(sp->glx_context));
+  glXMakeCurrent(display, window, *sp->glx_context);
   draw(mi);
   if (mi->fps_p)
     do_fps(mi);
@@ -643,6 +642,16 @@ ENTRYPOINT void draw_surface(ModeInfo * mi)
 }
 
 
+ENTRYPOINT void free_surface(ModeInfo * mi)
+{
+  surfacestruct *sp = &surface[MI_SCREEN(mi)];
+  if (!sp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *sp->glx_context);
+  gltrackball_free (sp->trackball);
+  free_rotator (sp->rot);
+}
+
+
 XSCREENSAVER_MODULE_2("Surfaces", surfaces, surface)
 
 #endif
index c250f5455ea6d7176d91fdd037c21a870f2a70c2..c90d6116f1924fa6a367c3818cd3cd7c537e1c49 100644 (file)
@@ -22,7 +22,6 @@
        "*titleFont2: -*-helvetica-medium-r-normal-*-*-120-*-*-*-*-*-*\n" \
        "*titleFont3: -*-helvetica-medium-r-normal-*-*-80-*-*-*-*-*-*\n"  \
 
-# define free_tangram 0
 # define release_tangram 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -967,7 +966,7 @@ ENTRYPOINT void draw_tangram(ModeInfo * mi)
 
     if (! tp->glx_context)
       return;
-    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(tp->glx_context));
+    glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tp->glx_context);
 
     ls[small_triangle1] = &tp->tsm1;
     ls[small_triangle2] = &tp->tsm2;
@@ -1060,7 +1059,16 @@ tangram_handle_event (ModeInfo *mi, XEvent *event)
   return False;
 }
 
-
+ENTRYPOINT void
+free_tangram (ModeInfo *mi)
+{
+  tangram_configuration *tp = &tps[MI_SCREEN(mi)];
+  if (!tp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tp->glx_context);
+  if (tp->font1_data) free_texture_font (tp->font1_data);
+  if (tp->font2_data) free_texture_font (tp->font2_data);
+  if (tp->font3_data) free_texture_font (tp->font3_data);
+}
 
 XSCREENSAVER_MODULE ("Tangram", tangram)
 
index 540db9ffd1d2c95923c2245c10c899212e87566f..f879d50c01a79280afccf30ed07378bdc885e25b 100644 (file)
@@ -1,4 +1,4 @@
-/* texfonts, Copyright (c) 2005-2017 Jamie Zawinski <jwz@jwz.org>
+/* texfonts, Copyright (c) 2005-2018 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -952,6 +952,7 @@ free_texture_font (texture_font_data *data)
     {
       texfont_cache *next = data->cache->next;
       glDeleteTextures (1, &data->cache->texid);
+      free (data->cache->string);
       free (data->cache);
       data->cache = next;
     }
index 723d04deec4adf7c8e60443834afc030b346cbb3..2dd83be3f199f7df12f3490818c75258b4c4e46f 100644 (file)
@@ -23,7 +23,6 @@
 
 
 
-# define free_tunnel 0
 # define release_tunnel 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -1061,7 +1060,7 @@ init_tunnel (ModeInfo *mi)
   tc->end_time = end;
 
   /* reset animation knots, effect 0 not defined. */
-  tc->effects = malloc(sizeof(effect_t) * ( tc->num_effects + 1));
+  tc->effects = calloc(sizeof(effect_t),tc->num_effects + 1);
   for ( i = 1; i <= tc->num_effects ; i++)
        init_effects(&tc->effects[i], i);
 
@@ -1159,7 +1158,7 @@ draw_tunnel (ModeInfo *mi)
   if (!tc->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(tc->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tc->glx_context);
 
   glShadeModel(GL_SMOOTH);
 
@@ -1235,6 +1234,29 @@ draw_tunnel (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_tunnel (ModeInfo *mi)
+{
+  tunnel_configuration *tc = &tconf[MI_SCREEN(mi)];
+  int i;
+  if (!tc->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tc->glx_context);
+  if (tc->trackball) gltrackball_free (tc->trackball);
+  if (tc->rot) free_rotator (tc->rot);
+  if (tc->texshift) free (tc->texshift);
+  if (tc->effects) {
+    for (i = 0; i < tc->num_effects; i++) {
+      if (tc->effects[i].knots) free (tc->effects[i].knots);
+      if (tc->effects[i].state) free (tc->effects[i].state);
+    }
+    free (tc->effects);
+  }
+  if (glIsList(tc->cyllist)) glDeleteLists(tc->cyllist, 1);
+  if (glIsList(tc->diamondlist)) glDeleteLists(tc->diamondlist, 1);
+  glDeleteTextures (MAX_TEXTURE, tc->texture_binds);
+}
+
 XSCREENSAVER_MODULE_2 ("TimeTunnel", timetunnel, tunnel)
 
 #endif /* USE_GL */
index 9161d38d16d6f364c1e38e2a9770b367f5277f82..59a463f0a31c0d8395a8830ef72607ba5c41b1d3 100644 (file)
@@ -179,13 +179,20 @@ ENTRYPOINT void
 free_topBlock(ModeInfo *mi)
 {
   topBlockSTATE *tb = &tbs[MI_SCREEN(mi)];
-       NODE *llCurrent, *llOld;
-       llCurrent = tb->blockNodeRoot;
-       while (llCurrent != NULL) {
-               llOld = llCurrent;
-               llCurrent = llCurrent->next;
-               free(llOld);
-       }
+  NODE *llCurrent, *llOld;
+
+  if (!tb->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tb->glx_context);
+
+  llCurrent = tb->blockNodeRoot;
+  while (llCurrent != NULL) {
+          llOld = llCurrent;
+          llCurrent = llCurrent->next;
+          free(llOld);
+  }
+  if (tb->trackball) gltrackball_free (tb->trackball);
+  if (glIsList(tb->carpet)) glDeleteLists(tb->carpet, 1);
+  if (glIsList(tb->block)) glDeleteLists(tb->block, 1);
 }
 
 /* setup */
@@ -309,7 +316,7 @@ draw_topBlock (ModeInfo *mi)
 
   if (!tb->glx_context)
     return;
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(tb->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *tb->glx_context);
   mi->polygon_count = 0;
 
        generateNewBlock(mi);
index b79309cd85f19d975b0815c128e1ba12cd6f010b..7354355c4fafc818fafe788c0f12c285c189e0cb 100644 (file)
@@ -14,7 +14,6 @@
                        "*showFPS:      False       \n" \
                        "*wireframe:    False       \n"
 
-# define free_bit 0
 # define release_bit 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -456,7 +455,7 @@ draw_bit (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -531,6 +530,23 @@ draw_bit (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_bit (ModeInfo *mi)
+{
+  bit_configuration *bp = &bps[MI_SCREEN(mi)];
+  int i;
+
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->rot) free_rotator (bp->rot);
+  for (i = 0; i < countof(bp->dlists); i++)
+    if (glIsList(bp->dlists[i])) glDeleteLists(bp->dlists[i], 1);
+
+}
+
 XSCREENSAVER_MODULE_2 ("TronBit", tronbit, bit)
 
 #endif /* USE_GL */
index 79422522aa22322001629f94faeb3089ebe2eee9..3ddd480f0d9fafa3cfd2ba732a9013e1d709a8db 100644 (file)
@@ -15,7 +15,6 @@
        "*titleFont: -*-helvetica-bold-r-normal-*-*-180-*-*-*-*-*-*\n" \
        "*font:      -*-helvetica-bold-r-normal-*-*-2400-*-*-*-*-iso10646-1\n" \
 
-# define free_unicrud 0
 # define release_unicrud 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -879,7 +878,7 @@ draw_unicrud (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glShadeModel (GL_FLAT);
   glEnable (GL_NORMALIZE);
@@ -956,6 +955,19 @@ draw_unicrud (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_unicrud (ModeInfo *mi)
+{
+  unicrud_configuration *bp = &bps[MI_SCREEN(mi)];
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  if (bp->rot) free_rotator (bp->rot);
+  if (bp->title_font) free_texture_font (bp->title_font);
+  if (bp->char_font) free_texture_font (bp->char_font);
+}
+
 XSCREENSAVER_MODULE_2 ("Unicrud", unicrud, unicrud)
 
 #endif /* USE_GL */
index 98025663cb2c5ef699d3dc582339cd3f7a22b77b..a52819f9ffc1d9178e8a7805f4cc3ab0e79ee2fa 100644 (file)
@@ -1,4 +1,4 @@
-/* unknownpleasures, Copyright (c) 2013-2014 Jamie Zawinski <jwz@jwz.org>
+/* unknownpleasures, Copyright (c) 2013-2018 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -8,40 +8,48 @@
  * software for any purpose.  It is provided "as is" without express or 
  * implied warranty.
  *
- * Translated from Mathematica code by Archery:
- * http://intothecontinuum.tumblr.com/post/27443100682/in-july-1967-astronomers-at-the-cavendish
+ * A very particular waterfall chart.
  *
  * Interestingly, the original image is copyright-free:
  * http://adamcap.com/2011/05/19/history-of-joy-division-unknown-pleasures-album-art/
+ * https://blogs.scientificamerican.com/sa-visual/pop-culture-pulsar-origin-story-of-joy-division-s-unknown-pleasures-album-cover-video/
  * https://en.wikipedia.org/wiki/Unknown_Pleasures
  *
- * TODO:
- *
- * - Performance is not great. Spending half our time in compute_line()
- *   and half our time in glEnd().  It's a vast number of cos/pow calls,
- *   and a vast number of polygons.  I'm not sure how much could be cached.
+ *   "Eighty successive periods of the first pulsar observed, CP1919
+ *   (Cambridge pulsar at 19 hours 19 minutes right ascension), are stacked
+ *   on top of one another using the average period of 1.33730 seconds in
+ *   this computer-generated illustration produced at the Arecibo Radio
+ *   Observatory in Puerto Rico. Athough the leading edges of the radio
+ *   pulses occur within a few thousandths of a second of the predicted
+ *   times, the shape of the pulses is quite irregular. Some of this
+ *   irregularity in radio reception is caused by the effects of
+ *   transmission through the interstellar medium. The average pulse width
+ *   is less than 50 thousandths of a second."
  *
- * - There's too low periodicity vertically on the screen.
+ * TODO:
  *
- * - There's too low periodicity in time.
+ * - Load images and feed them line by line into the plotter, so it scrolls.
  *
- * - Could take advantage of time periodicity for caching: just save every
- *   poly for an N second loop.  That would be a huge amount of RAM though.
+ * - Same but use the image as a mask against the random graph data.
  *
- * - At low resolutions, GL_POLYGON_OFFSET_FILL seems to work poorly
- *   and the lines get blocky.
+ * - Take a function generator program as a command line argument:
+ *   read lines of N float values from it, interpolate to full width.
  */
 
+#define DEF_ORTHO      "True"
+#define DEF_SPEED      "1.0"
+#define DEF_RESOLUTION "100"
+#define DEF_AMPLITUDE  "0.13"
+#define DEF_NOISE      "1.0"
+#define DEF_ASPECT     "1.9"
+#define DEF_BUZZ       "False"
 
 #define DEFAULTS       "*delay:        30000       \n" \
                        "*count:        80          \n" \
-                       "*resolution:   100         \n" \
-                       "*ortho:        True        \n" \
                        "*showFPS:      False       \n" \
                        "*wireframe:    False       \n" \
                        "*geometry:    =800x800"   "\n" \
 
-# define free_unk 0
 # define release_unk 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
 
 #ifdef USE_GL /* whole file */
 
-#define DEF_SPEED  "1.0"
+#undef DEBUG
+
+Bool ortho_arg;
+GLfloat speed_arg;
+int resolution_arg;
+GLfloat amplitude_arg;
+GLfloat noise_arg;
+GLfloat aspect_arg;
+Bool buzz_arg;
 
 
 typedef struct {
@@ -61,38 +77,91 @@ typedef struct {
   trackball_state *trackball;
   Bool button_down_p;
   Bool orthop;
-  GLfloat resolution;
-  int count;
-  GLfloat t;
+  double speed, tick;
+  int resolution;      /* X points */
+  int count;           /* Y lines */
+  GLfloat amplitude;   /* Z height */
+  int frames;          /* Number of renders of each line, for buzzing */
+  GLfloat noise;       /* Number of peaks in each line */
+  GLfloat aspect;      /* Shape of the plot */
+  GLuint base;         /* Display list for back */
+  GLuint *lines;       /* Display lists for each edge * face * frame */
+  GLfloat *heights;    /* Animated elevation / alpha of each line */
+  GLfloat fg[4], bg[4];        /* Colors */
 } unk_configuration;
 
 static unk_configuration *bps = NULL;
 
-static GLfloat speed;
-
 static XrmOptionDescRec opts[] = {
   { "-speed",        ".speed",      XrmoptionSepArg, 0 },
   { "-resolution",   ".resolution", XrmoptionSepArg, 0 },
+  { "-amplitude",    ".amplitude",  XrmoptionSepArg, 0 },
+  { "-noise",        ".noise",      XrmoptionSepArg, 0 },
+  { "-aspect",       ".aspect",     XrmoptionSepArg, 0 },
   { "-ortho",        ".ortho",      XrmoptionNoArg,  "True"  },
   { "-no-ortho",     ".ortho",      XrmoptionNoArg,  "False" },
+  { "-buzz",         ".buzz",       XrmoptionNoArg,  "True"  },
+  { "-no-buzz",      ".buzz",       XrmoptionNoArg,  "False" },
 };
 
 static argtype vars[] = {
-  {&speed, "speed",  "Speed",  DEF_SPEED,  t_Float},
+  {&ortho_arg,      "ortho",       "Ortho",       DEF_ORTHO,      t_Bool},
+  {&speed_arg,      "speed",       "Speed",       DEF_SPEED,      t_Float},
+  {&resolution_arg, "resolution",  "Resolution",  DEF_RESOLUTION, t_Int},
+  {&amplitude_arg,  "amplitude",   "Amplitude",   DEF_AMPLITUDE,  t_Float},
+  {&noise_arg,      "noise",       "Noise",       DEF_NOISE,      t_Float},
+  {&aspect_arg,     "aspect",      "Aspect",      DEF_ASPECT,     t_Float},
+  {&buzz_arg,       "buzz",        "Buzz",        DEF_BUZZ,       t_Bool},
 };
 
 ENTRYPOINT ModeSpecOpt unk_opts = {countof(opts), opts, countof(vars), vars, NULL};
 
 
 
-/* Window management, etc
+/* Returns the current time in seconds as a double.
  */
+static double
+double_time (void)
+{
+  struct timeval now;
+# ifdef GETTIMEOFDAY_TWO_ARGS
+  struct timezone tzp;
+  gettimeofday(&now, &tzp);
+# else
+  gettimeofday(&now);
+# endif
+
+  return (now.tv_sec + ((double) now.tv_usec * 0.000001));
+}
+
+
+static void
+parse_color (ModeInfo *mi, char *res, char *class, GLfloat *a)
+{
+  XColor c;
+  char *s = get_string_resource(mi->dpy, res, class);
+  if (! XParseColor (MI_DISPLAY(mi), MI_COLORMAP(mi), s, &c))
+    {
+      fprintf (stderr, "%s: can't parse %s color %s", progname, res, s);
+      exit (1);
+    }
+  if (s) free (s);
+  a[0] = c.red   / 65536.0;
+  a[1] = c.green / 65536.0;
+  a[2] = c.blue  / 65536.0;
+  a[3] = 1.0;
+}
+
+
 ENTRYPOINT void
 reshape_unk (ModeInfo *mi, int width, int height)
 {
   unk_configuration *bp = &bps[MI_SCREEN(mi)];
+  int wire = MI_IS_WIREFRAME(mi);
   GLfloat h = (GLfloat) height / (GLfloat) width;
   int y = 0;
+  int i;
+  int new_count;
 
   if (width > height * 5) {   /* tiny window: show middle */
     height = width*1.5;
@@ -104,13 +173,15 @@ reshape_unk (ModeInfo *mi, int width, int height)
 
   if (bp->orthop)
     {
+      int magic = 700;
+      int range = 30; /* Must be small or glPolygonOffset doesn't work. */
       glMatrixMode(GL_PROJECTION);
       glLoadIdentity();
-      gluPerspective (1.0, 1/h, 690, 710);
+      gluPerspective (1.0, 1/h, magic-range/2, magic+range/2);
 
       glMatrixMode(GL_MODELVIEW);
       glLoadIdentity();
-      gluLookAt( 0, 0, 700,
+      gluLookAt( 0, 0, magic,
                  0, 0, 0,
                  0, 1, 0);
       if (width < height)
@@ -121,7 +192,7 @@ reshape_unk (ModeInfo *mi, int width, int height)
     {
       glMatrixMode(GL_PROJECTION);
       glLoadIdentity();
-      gluPerspective (30.0, 1/h, 20.0, 40.0);
+      gluPerspective (30.0, 1/h, 1.0, 100.0);
 
       glMatrixMode(GL_MODELVIEW);
       glLoadIdentity();
@@ -132,10 +203,72 @@ reshape_unk (ModeInfo *mi, int width, int height)
         glScalef (1/h, 1/h, 1);
     }
 
+  new_count = MI_COUNT(mi);
+
+# if 0
+  /* Lower the resolution to get a decent frame rate on iPhone 4s */
+  if (mi->xgwa.width <= 640 || mi->xgwa.height <= 640)
+    new_count /= 3;
+# endif
+
+  /* Lower it even further for iPhone 3 */
+  if (mi->xgwa.width <= 480 || mi->xgwa.height <= 480)
+    new_count /= 2;
+
+  if (wire) new_count /= 2;
+
+  if (new_count < 1) new_count = 1;
+
+  if (bp->count != new_count || !bp->lines)
+    {
+      if (bp->lines)
+        {
+          for (i = 0; i < bp->count * bp->frames * 2; i++)
+            glDeleteLists (bp->lines[i], 1);
+          free (bp->lines);
+          free (bp->heights);
+        }
+
+      bp->count = new_count;
+      bp->lines = (GLuint *)
+        malloc (bp->count * bp->frames * 2 * sizeof(*bp->lines));
+      for (i = 0; i < bp->count * bp->frames * 2; i++)
+        bp->lines[i] = glGenLists (1);
+      bp->heights = (GLfloat *) calloc (bp->count, sizeof(*bp->heights));
+    }
+
+  {
+    GLfloat lw = 1;
+    GLfloat s = 1;
+
+    if (MI_WIDTH(mi) > 2560) lw = 4;  /* Retina displays */
+# ifdef HAVE_COCOA
+    else if (MI_WIDTH(mi) > 1280) lw = 3;  /* WTF */
+# endif
+    else if (MI_WIDTH(mi) > 1920) lw = 3;
+    else if (mi->xgwa.width > 640 && mi->xgwa.height > 640) lw = 2;
+
+# ifdef HAVE_MOBILE
+    lw = 4;
+    s = 1.4;
+# else
+    /* Make the image fill the screen a little more fully */
+    if (mi->xgwa.width <= 640 || mi->xgwa.height <= 640)
+      s = 1.2;
+# endif
+
+    glScalef (s, s, s);
+    glLineWidth (lw);
+  }
+
   glClear(GL_COLOR_BUFFER_BIT);
 }
 
 
+# ifdef DEBUG
+static GLfloat poly1 = 0, poly2 = 0;
+# endif
+
 ENTRYPOINT Bool
 unk_handle_event (ModeInfo *mi, XEvent *event)
 {
@@ -161,6 +294,26 @@ unk_handle_event (ModeInfo *mi, XEvent *event)
       gltrackball_mousewheel (bp->trackball, b, speed, !!event->xbutton.state);
       return True;
     }
+
+# ifdef DEBUG
+  else if (event->type == KeyPress)
+    {
+      KeySym keysym;
+      char c = 0;
+      GLfloat i = 0.1;
+      XLookupString (&event->xkey, &c, 1, &keysym, 0);
+      switch (keysym) {
+      case XK_Up:    poly1 += i; break;
+      case XK_Down:  poly1 -= i; break;
+      case XK_Left:  poly2 += i; break;
+      case XK_Right: poly2 -= i; break;
+      default: break;
+      }
+      fprintf (stderr,"%.2f %.2f\n", poly1, poly2);
+      return True;
+    }
+# endif /* DEBUG */
+
   else if (gltrackball_event_handler (event, bp->trackball,
                                       MI_WIDTH (mi), MI_HEIGHT (mi),
                                       &bp->button_down_p))
@@ -176,11 +329,117 @@ unk_handle_event (ModeInfo *mi, XEvent *event)
 }
 
 
+/* Like cos but constrained to [-pi, +pi] */
+static GLfloat
+cos1 (GLfloat th)
+{
+  if (th < -M_PI) th = -M_PI;
+  if (th >  M_PI) th =  M_PI;
+  return cos (th);
+}
+
+
+/* Returns an array of floats for one new row, range [0, 1.0] */
+static double *
+generate_signal (ModeInfo *mi)
+{
+  unk_configuration *bp = &bps[MI_SCREEN(mi)];
+  double *points = (double *) calloc (sizeof(*points), bp->resolution);
+  double *p;
+  int i, j;
+  int nspikes = (6 + frand(15)) * bp->noise;
+  double step = 1.0 / bp->resolution;
+  double r, max;
+
+  for (j = 0; j < nspikes; j++)
+    {
+      double off = frand (0.8) - 0.4;
+      double amp = (0.1 + frand (0.9)) * nspikes;
+      double freq = (7 + frand (11)) * bp->noise;
+      for (i = 0, r = -0.5, p = points;
+           i < bp->resolution;
+           i++, r += step, p++)
+        *p += amp/2 + amp/2 * cos1 ((r + off) * M_PI * 2 * freq);
+    }
+
+  /* Avoid clipping */
+  max = nspikes;
+  if (max <= 0) max = 1;
+  for (i = 0, p = points; i < bp->resolution; i++, p++)
+    if (max < *p) max = *p;
+
+  /* Multiply by baseline clipping curve, add static. */
+  for (i = 0, r = -0.5, p = points; i < bp->resolution; i++, r += step, p++)
+    *p = ((*p / max)
+          * (0.5 + 0.5 * cos1 (r * r * M_PI * 14) * (1 - frand(0.2))));
+
+  return points;
+}
+
+
+static void
+tick_unk (ModeInfo *mi)
+{
+  unk_configuration *bp = &bps[MI_SCREEN(mi)];
+  int wire = MI_IS_WIREFRAME(mi);
+  double *points = generate_signal (mi);
+  int linesp, frame;
+
+  /* Roll forward by one line (2 dlists per frame) */
+  GLuint *cur = (GLuint *) malloc (bp->frames * 2 * sizeof(*cur));
+  memcpy (cur, bp->lines, bp->frames * 2 * sizeof(*cur));
+  memmove (bp->lines, bp->lines + 2 * bp->frames,
+           sizeof(*bp->lines) * (bp->count-1) * bp->frames * 2);
+  memcpy (bp->lines + (bp->count-1) * bp->frames * 2, cur,
+          bp->frames * 2 * sizeof(*cur));
+
+  memmove (bp->heights, bp->heights + 1,
+           sizeof(*bp->heights) * (bp->count-1));
+  bp->heights[bp->count-1] = 0;
+
+  /* Regenerate the pair at the bottom. */
+
+  for (frame = 0; frame < bp->frames; frame++)
+    {
+      mi->polygon_count = 0;
+      for (linesp = 0; linesp <= 1; linesp++)
+        {
+          int i;
+
+          glNewList (cur[frame * 2 + !linesp], GL_COMPILE);
+          glBegin (linesp
+                   ? GL_LINE_STRIP
+                   : wire ? GL_LINES : GL_QUAD_STRIP);
+          for (i = 0; i < bp->resolution; i++)
+            {
+              GLfloat x = i / (GLfloat) bp->resolution;
+              GLfloat z = (points[i] + frand (0.05)) * bp->amplitude;
+              if (z < 0) z = 0;
+              if (z > bp->amplitude) z = bp->amplitude;
+              glVertex3f (x, 0, z);
+              if (! linesp)
+                glVertex3f (x, 0, 0);
+              mi->polygon_count++;
+            }
+          glEnd ();
+          glEndList ();
+        }
+    }
+
+  mi->polygon_count *= bp->count;
+  mi->polygon_count += 5;  /* base */
+
+  free (cur);
+  free (points);
+}
+
 
 ENTRYPOINT void 
 init_unk (ModeInfo *mi)
 {
   unk_configuration *bp;
+  int wire = MI_IS_WIREFRAME(mi);
+  int i;
 
   MI_INIT (mi, bps);
 
@@ -188,109 +447,110 @@ init_unk (ModeInfo *mi)
 
   bp->glx_context = init_GL(mi);
 
-  bp->orthop = get_boolean_resource (MI_DISPLAY (mi), "ortho", "Ortho");
-  bp->resolution = get_float_resource (MI_DISPLAY (mi),
-                                       "resolution", "Resolution");
+  bp->orthop = ortho_arg;
+  bp->resolution = resolution_arg;
+  bp->amplitude = amplitude_arg;
+  bp->noise = noise_arg;
+  bp->aspect = aspect_arg;
+  bp->speed = speed_arg;
+  bp->frames = buzz_arg ? 15 : 1;
   if (bp->resolution < 1) bp->resolution = 1;
   if (bp->resolution > 300) bp->resolution = 300;
+  if (bp->amplitude < 0.01) bp->amplitude = 0.01;
+  if (bp->amplitude > 1) bp->amplitude = 1;
+  if (bp->noise < 0.01) bp->noise = 0.01;
+  if (bp->speed <= 0.001) bp->speed = 0.001;
 
-  reshape_unk (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
+  parse_color (mi, "foreground", "Foreground", bp->fg);
+  parse_color (mi, "background", "Background", bp->bg);
 
-  bp->count = MI_COUNT(mi);
-  if (bp->count < 1) bp->count = 1;
+  reshape_unk (mi, MI_WIDTH(mi), MI_HEIGHT(mi));
 
   bp->trackball = gltrackball_init (False);
 
   if (MI_COUNT(mi) < 1) MI_COUNT(mi) = 1;
+  /* bp->count is set in reshape */
 
-  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-}
-
-
+  bp->base = glGenLists (1);
+  glNewList (bp->base, GL_COMPILE);
+  {
+    GLfloat h1 = 0.01;
+    GLfloat h2 = 0.02;
+    GLfloat h3 = (h1 + h2) / 2;
+    GLfloat s = 0.505;
+    glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+    glVertex3f (-s, -s, -h1);
+    glVertex3f ( s, -s, -h1);
+    glVertex3f ( s,  s, -h1);
+    glVertex3f (-s,  s, -h1);
+    glEnd();
+    glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+    glVertex3f (-s, -s, 0);
+    glVertex3f (-s, -s, -h2);
+    glVertex3f ( s, -s, -h2);
+    glVertex3f ( s, -s, 0);
+    glEnd();
+    glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+    glVertex3f (-s, -s, 0);
+    glVertex3f (-s, -s, -h2);
+    glVertex3f (-s,  s, -h2);
+    glVertex3f (-s,  s, 0);
+    glEnd();
+    glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+    glVertex3f ( s, -s, 0);
+    glVertex3f ( s, -s, -h2);
+    glVertex3f ( s,  s, -h2);
+    glVertex3f ( s,  s, 0);
+    glEnd();
+    glBegin (wire ? GL_LINE_LOOP : GL_QUADS);
+    glVertex3f (-s,  s, 0);
+    glVertex3f (-s,  s, -h2);
+    glVertex3f ( s,  s, -h2);
+    glVertex3f ( s,  s, 0);
+    glEnd();
 
-static double
-R (double f)
-{
-  /* A simple, fast, deterministic PRNG.
-     ya_rand_init() is too slow for this, and the stream of numbers here
-     doesn't have to be high quality.
-   */
-#if 1
-  int seed0 = 1613287;
+    glColor3fv (bp->fg);
+    glBegin (GL_LINE_LOOP);
+    s -= 0.01;
+    glVertex3f (-s, -s, -h3);
+    glVertex3f ( s, -s, -h3);
+    glVertex3f ( s,  s, -h3);
+    glVertex3f (-s,  s, -h3);
+    glEnd();
+  }
+  glEndList ();
 
-# else
-  /* Kluge to let me pick a good seed factor by trial and error... */
-  static int seed0 = 0;
-  static int count = 0;
-  if (count++ > 150000000) seed0 = 0, count=0;
-  if (! seed0)
+  if (! wire)
     {
-      seed0 = (random() & 0xFFFFF);
-      fprintf(stderr, "seed0 = %8x %d\n", seed0, seed0);
+      glEnable (GL_LINE_SMOOTH);
+      glHint (GL_LINE_SMOOTH_HINT, GL_NICEST);
+      glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
+      glEnable (GL_BLEND);
     }
-# endif
 
-  long seed = seed0 * f;
-  seed = 48271 * (seed % 44488) - 3399 * (seed / 44488);
-  f = (double) seed / 0x7FFFFFFF;
+  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
-  return f;
+  for (i = 0; i < bp->count; i++)
+    tick_unk (mi);
 }
 
 
-static void
-compute_line (ModeInfo *mi,
-              int xmin, int xmax, GLfloat xinc,
-              GLfloat res_scale,
-              int y,
-              GLfloat *points)
+static double
+ease_fn (double r)
 {
-  unk_configuration *bp = &bps[MI_SCREEN(mi)];
-
-  GLfloat fx;
-  int lastx = -999999;
-
-  /* Compute the points on the line */
-
-  for (fx = xmin; fx < xmax; fx += xinc)
-    {
-      int x = fx;
-      int n;
-      GLfloat hsum = 0, vsum = 0;
-
-      if (x == lastx) continue;
-      lastx = x;
-
-      for (n = 1; n <= 30; n++)
-        {
-          /* This sum affects crinkliness of the lines */
-          hsum += (10 *
-                   sin (2 * M_PI
-                        * R (4 * y)
-                        + bp->t
-                        + R (2 * n * y)
-                        * 2 * M_PI)
-                   *  exp (-pow ((.3 * (x / res_scale) + 30
-                                  - 1 * 100 * R (2 * n * y)),
-                                 2)
-                           / 20.0));
-        }
-
-      for (n = 1; n <= 4; n++)
-        {
-          /* This sum affects amplitude of the peaks */
-          vsum += (3 * (1 + R (3 * n * y))
-                   * fabs (sin (bp->t + R (n * y)
-                                * 2 * M_PI))
-                   * exp (-pow (((x / res_scale) - 1 * 100 * R (n * y)),
-                                2)
-                          / 20.0));
-        }
+  return cos ((r/2 + 1) * M_PI) + 1; /* Smooth curve up, end at slope 1. */
+}
 
-      /* Scale of this affects amplitude of the flat parts */
-      points[x - xmin] = (0.2 * sin (2 * M_PI * R (6 * y) + hsum) + vsum);
-    }
 
+static double
+ease_ratio (double r)
+{
+  double ease = 0.5;
+  if      (r <= 0)     return 0;
+  else if (r >= 1)     return 1;
+  else if (r <= ease)  return     ease * ease_fn (r / ease);
+  else if (r > 1-ease) return 1 - ease * ease_fn ((1 - r) / ease);
+  else                 return r;
 }
 
 
@@ -298,32 +558,25 @@ ENTRYPOINT void
 draw_unk (ModeInfo *mi)
 {
   unk_configuration *bp = &bps[MI_SCREEN(mi)];
+  int wire = MI_IS_WIREFRAME(mi);
   Display *dpy = MI_DISPLAY(mi);
   Window window = MI_WINDOW(mi);
-  int wire = MI_IS_WIREFRAME(mi);
-  GLfloat aspect = 1.5;
+  GLfloat step = 1.0 / bp->count;
+  double speed = (0.6 / bp->speed) * (80.0 / bp->count);
+  double now = double_time();
+  double ratio = (now - bp->tick) / speed;
+  int frame;
+  int i;
 
-  GLfloat res_scale = 4;
-  int xmin = -50 * res_scale;
-  int xmax = 150 * res_scale;
-  GLfloat xinc = 100.0 / (bp->resolution / res_scale);
-  int ymin = 1;
-  int ytop = MI_COUNT(mi);
-  int yinc = 1;
-  int y;
-  GLfloat *points;
-
-  if (xinc < 0.25) xinc = 0.25;
+  ratio = (ratio < 0 ? 0 : ratio > 1 ? 1 : ratio);
 
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
-  mi->polygon_count = 0;
-
   glShadeModel (GL_FLAT);
   glEnable (GL_DEPTH_TEST);
   glDisable (GL_CULL_FACE);
@@ -333,152 +586,93 @@ draw_unk (ModeInfo *mi)
   glRotatef(current_device_rotation(), 0, 0, 1);
 
   gltrackball_rotate (bp->trackball);
-  glScalef (10, 10, 10);
 
   glRotatef (-45, 1, 0, 0);
-  glTranslatef (-0.5, -0.5, 0);
-  if (bp->orthop)
-    glTranslatef (0, 0.05, 0);
+
+  i = bp->orthop ? 15 : 17;
+  glScalef (i / bp->aspect, i, i / bp->aspect);
+
+  glDisable (GL_POLYGON_OFFSET_FILL);
+  if (wire)
+    glColor3f (0.5 * bp->fg[0], 0.5 * bp->fg[1], 0.5 * bp->fg[2]);
   else
-    glTranslatef (0, 0.15, 0);
+    glColor4fv (bp->bg);
+  glCallList (bp->base);
 
-  points = (GLfloat *) malloc (sizeof(*points) * (xmax - xmin));
+  /* So the masking quads don't interfere with the lines.
+     These numbers are empirical black magic. */
+  glEnable (GL_POLYGON_OFFSET_FILL);
 
-  if (!bp->button_down_p)
-    {
-      double s = 6.3 / 19 / 3;
-# if 1
-      bp->t -= s * speed;
-      if (bp->t <= 0)
-        bp->t = s * 18 * 3;
+# ifdef DEBUG
+  glPolygonOffset (poly1, poly2);
 # else
-      bp->t += s;
+  glPolygonOffset (0.5, 0.5);
 # endif
-    }
 
-  glLineWidth (2);
+  glTranslatef (-0.5, 0.55 + step*ratio, 0);
 
-  /* Lower the resolution to get a decent frame rate on iPhone 4s */
-  if (mi->xgwa.width <= 640 || mi->xgwa.height <= 640)
+  frame = random() % bp->frames;
+  for (i = 0; i < bp->count; i++)
     {
-      ytop *= 0.6;
-      xinc *= 3;
+      int j = i * bp->frames * 2 + frame * 2;
+      GLfloat s  = ease_ratio (bp->heights[i]);
+      GLfloat s2 = ease_ratio (bp->heights[i] * 1.5);
+
+      glPushMatrix();
+      glScalef (1, 1, s);
+      glColor4f (bp->fg[0], bp->fg[1], bp->fg[2], s2);
+      glCallList (bp->lines[j]);       /* curve */
+      s = 1;
+      if (wire)
+        glColor4f (0.5 * bp->fg[0], 0.5 * bp->fg[1], 0.5 * bp->fg[2], s);
+      else
+        glColor4f (bp->bg[0], bp->bg[1], bp->bg[2], s);
+      glCallList (bp->lines[j+1]);     /* shield */
+      glPopMatrix();
+      glTranslatef (0, -step, 0);
     }
 
-# ifdef HAVE_MOBILE
-  /* Lower it even further for iPhone 3 */
-  if (mi->xgwa.width <= 480 || mi->xgwa.height <= 480)
-    {
-      ytop *= 0.8;
-      xinc *= 1.2;
-    }
-
-  /* Performance just sucks on iPad 3, even with a very high xinc. WTF? */
-/*
-  if (mi->xgwa.width >= 2048 || mi->xgwa.height >= 2048)
-    xinc *= 2;
-*/
-
-# endif /* HAVE_MOBILE */
-
-
-  /* Make the image fill the screen a little more fully */
-  if (mi->xgwa.width <= 640 || mi->xgwa.height <= 640)
-    {
-      glScalef (1.2, 1.2, 1.2);
-      glTranslatef (-0.08, 0, 0);
-    }
-
-  if (mi->xgwa.width <= 480 || mi->xgwa.height <= 480)
-    glLineWidth (1);
-
-
-  if (wire)
-    xinc *= 1.3;
+  glPopMatrix ();
 
-  /* Draw back mask */
-  {
-    GLfloat s = 0.99;
-    glDisable (GL_POLYGON_OFFSET_FILL);
-    glColor3f (0, 0, 0);
-    glPushMatrix();
-    glTranslatef (0, (1-aspect)/2, -0.005);
-    glScalef (1, aspect, 1);
-    glTranslatef (0.5, 0.5, 0);
-    glScalef (s, s, 1);
-    glBegin (GL_QUADS);
-    glVertex3f (-0.5, -0.5, 0);
-    glVertex3f ( 0.5, -0.5, 0);
-    glVertex3f ( 0.5,  0.5, 0);
-    glVertex3f (-0.5,  0.5, 0);
-    glEnd();
-    glPopMatrix();
-  }
+  if (mi->fps_p) do_fps (mi);
+  glFinish();
 
-  if (! wire)
+  if (!bp->button_down_p)
     {
-      glEnable (GL_LINE_SMOOTH);
-      glHint (GL_LINE_SMOOTH_HINT, GL_NICEST);
-      glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
-      glEnable (GL_BLEND);
-
-      /* So the masking quads don't interfere with the lines */
-      glEnable (GL_POLYGON_OFFSET_FILL);
-      glPolygonOffset (1.0, 1.0);
-    }
+      /* Set height/fade based on distance from either edge. */
+      GLfloat dist = bp->count * 0.05;
+      int i;
+      for (i = 0; i < bp->count; i++)
+        {
+          GLfloat i2 = i - ratio;
+          GLfloat h = ((i2 < bp->count/2 ? i2 : (bp->count - 1 - i2))
+                       / dist);
+          bp->heights[i] = (h > 1 ? 1 : h < 0 ? 0 : h);
+        }
 
-  for (y = ymin; y <= ytop; y += yinc)
-    {
-      /* Compute all the verts on the line */
-      compute_line (mi, xmin, xmax, xinc, res_scale, y, points);
-
-      /* Draw the line segments; then draw the black shielding quads. */
-      {
-        GLfloat yy = y / (GLfloat) ytop;
-        int linesp;
-
-        yy = (yy * aspect) - ((aspect - 1) / 2);
-
-        for (linesp = 0; linesp <= 1; linesp++)
-          {
-            GLfloat fx;
-            int lastx = -999999;
-
-            GLfloat c = (linesp || wire ? 1 : 0);
-            glColor3f (c, c, c);
-
-            glBegin (linesp
-                     ? GL_LINE_STRIP
-                     : wire ? GL_LINES : GL_QUAD_STRIP);
-            lastx = -999999;
-            for (fx = xmin; fx < xmax; fx += xinc)
-              {
-                int x = fx;
-                GLfloat xx = (x - xmin) / (GLfloat) (xmax - xmin);
-                GLfloat zz = points [x - xmin];
-
-                if (x == lastx) continue;
-                lastx = x;
-
-                zz /= 80;
-                glVertex3f (xx, yy, zz);
-                if (! linesp)
-                  glVertex3f (xx, yy, 0);
-                mi->polygon_count++;
-              }
-            glEnd ();
-          }
-      }
+      if (bp->tick + speed <= now)     /* Add a new row. */
+        {
+          tick_unk (mi);
+          bp->tick = now;
+        }
     }
 
-  free (points);
+  glXSwapBuffers(dpy, window);
+}
 
-  glPopMatrix ();
 
-  if (mi->fps_p) do_fps (mi);
-  glFinish();
-
-  glXSwapBuffers(dpy, window);
+ENTRYPOINT void
+free_unk (ModeInfo *mi)
+{
+  unk_configuration *bp = &bps[MI_SCREEN(mi)];
+  int i;
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+  if (bp->trackball) gltrackball_free (bp->trackball);
+  for (i = 0; i < bp->count * bp->frames * 2; i++)
+    glDeleteLists (bp->lines[i], 1);
+  free (bp->lines);
+  free (bp->heights);
 }
 
 XSCREENSAVER_MODULE_2 ("UnknownPleasures", unknownpleasures, unk)
index 422c81fd9ce7ba3f86121aca3560e44b9dc3fb7b..2eab727ddd3f7dbab510c02c3accdb82a4577eb5 100644 (file)
@@ -1,6 +1,6 @@
 .TH XScreenSaver 1 "" "X Version 11"
 .SH NAME
-unknownpleasures - an animation of the signal from the pulsar PSR B1919+21.
+unknownpleasures - a waterfall graph of the signal from pulsar PSR B1919+21.
 .SH SYNOPSIS
 .B unknownpleasures
 [\-display \fIhost:display.screen\fP]
@@ -8,10 +8,14 @@ unknownpleasures - an animation of the signal from the pulsar PSR B1919+21.
 [\-window]
 [\-root]
 [\-delay \fInumber\fP]
-[\-speed \fIpercent\fP]
-[\-count \fIinteger\fP]
-[\-resolution \fIpercent\fP]
+[\-count \fInumber\fP]
+[\-speed \fInumber\fP]
+[\-resolution \fInumber\fP]
+[\-amplitude \fInumber\fP]
+[\-noise \fInumber\fP]
 [\-no-ortho]
+[\-buzz]
+[\-wireframe]
 [\-fps]
 .SH DESCRIPTION
 PSR B1919+21 (AKA CP 1919) was the first pulsar ever discovered: a spinning
@@ -34,7 +38,7 @@ Draw on a newly-created window.  This is the default.
 Draw on the root window.
 .TP 8
 .B \-delay \fInumber\fP
-Per-frame delay, in microseconds.  Default: 30000 (0.03 seconds.).
+Per-frame delay, in microseconds.  Default: 30000 (0.03 seconds).
 .TP 8
 .B \-speed \fInumber\fP
 Animation speed. 2 for twice as fast, 0.5 for half as fast.
@@ -42,12 +46,24 @@ Animation speed. 2 for twice as fast, 0.5 for half as fast.
 .B \-count \fInumber\fP
 Scanlines (vertical resolution).  Default: 80.
 .TP 8
-.B \-count \fInumber\fP
-Horizontal Resolution, Default: 100%.
+.B \-resolution \fInumber\fP
+Horizontal Resolution, Default: 100.
+.TP 8
+.B \-amplitude \fInumber\fP
+Height of the waves, 0 - 1.0.  Default: 0.13.
+.TP 8
+.B \-noise \fInumber\fP
+How noisy the signal is. 2 for twice as noisy, 0.5 for half as noisy.
 .TP 8
 .B \-ortho | \-no-ortho
 Whether to use an orthographic projection.
 .TP 8
+.B \-buzz | \-no-buzz
+Whether each line should seethe with noise.
+.TP 8
+.B \-wireframe | \-no-wireframe
+Render in wireframe instead of solid.
+.TP 8
 .B \-fps | \-no-fps
 Whether to show a frames-per-second display at the bottom of the screen.
 .SH ENVIRONMENT
@@ -63,7 +79,7 @@ stored in the RESOURCE_MANAGER property.
 .BR X (1),
 .BR xscreensaver (1)
 .SH COPYRIGHT
-Copyright \(co 2013 by Jamie Zawinski.  Permission to use, copy, modify, 
+Copyright \(co 2013-2018 by 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
index 05e19edc7faa76abd37ca07ad702ec6aec8f2adb..49f0df55f2f375db8c38fd0504e5ea2d8414b4ea 100644 (file)
@@ -22,7 +22,6 @@
                        "*lensColor:    #000000"   "\n" \
                        "*groundColor:  #004400"   "\n" \
 
-# define free_camera 0
 # define release_camera 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -210,6 +209,7 @@ parse_color (ModeInfo *mi, char *key, GLfloat color[4])
                key, string);
       exit (1);
     }
+  free (string);
 
   color[0] = xcolor.red   / 65536.0;
   color[1] = xcolor.green / 65536.0;
@@ -1053,7 +1053,7 @@ draw_camera (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -1145,6 +1145,32 @@ draw_camera (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_camera (ModeInfo *mi)
+{
+  camera_configuration *bp = &bps[MI_SCREEN(mi)];
+  pedestrian *p;
+  int i;
+
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+  if (bp->user_trackball) gltrackball_free (bp->user_trackball);
+  if (bp->cameras) free (bp->cameras);
+  p = bp->pedestrians;
+  while (p) {
+    pedestrian *p2 = p->next;
+    free (p);
+    p = p2;
+  }
+  if (bp->dlists) {
+    for (i = 0; i < countof(all_objs); i++)
+      if (glIsList(bp->dlists[i])) glDeleteLists(bp->dlists[i], 1);
+    free (bp->dlists);
+  }
+}
+
 XSCREENSAVER_MODULE_2 ("Vigilance", vigilance, camera)
 
 #endif /* USE_GL */
index 895f96716fdc17b3c338f59976781105e1a28638..01b3ccd65abe717514c798f9a2b753e3538c4342 100644 (file)
@@ -13,7 +13,6 @@
                         "*showFPS:      False              \n" \
                        "*suppressRotationAnimation: True\n" \
 
-# define free_voronoi 0
 # define release_voronoi 0
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
@@ -514,7 +513,7 @@ draw_voronoi (ModeInfo *mi)
   if (!vp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(vp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *vp->glx_context);
 
   glShadeModel(GL_FLAT);
   glEnable(GL_POINT_SMOOTH);
@@ -538,6 +537,23 @@ draw_voronoi (ModeInfo *mi)
   glXSwapBuffers(dpy, window);
 }
 
+
+ENTRYPOINT void
+free_voronoi (ModeInfo *mi)
+{
+  voronoi_configuration *vp = &vps[MI_SCREEN(mi)];
+  node *n;
+  if (!vp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *vp->glx_context);
+  if (vp->colors) free (vp->colors);
+  n = vp->nodes;
+  while (n) {
+    node *n2 = n->next;
+    free (n);
+    n = n2;
+  }
+}
+
 XSCREENSAVER_MODULE ("Voronoi", voronoi)
 
 #endif /* USE_GL */
index 61091cfce9cdb34f048c3329a7aae8a0b2c9f4aa..148dd1fab5441371929940e9b056b92cd942216e 100644 (file)
@@ -332,6 +332,7 @@ load_textures (ModeInfo *mi)
                 xi->width, xi->height, 0,
                 GL_RGBA, GL_UNSIGNED_BYTE, xi->data);
   check_gl_error("texture");
+  XDestroyImage (xi);
 
   glEnable(GL_TEXTURE_GEN_S);
   glEnable(GL_TEXTURE_GEN_T);
@@ -356,6 +357,7 @@ parse_color (ModeInfo *mi, char *key, GLfloat color[4])
                key, string);
       exit (1);
     }
+  free (string);
 
   color[0] = xcolor.red   / 65536.0;
   color[1] = xcolor.green / 65536.0;
@@ -2300,7 +2302,7 @@ draw_robot (ModeInfo *mi)
   if (!bp->glx_context)
     return;
 
-  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context));
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
 
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
@@ -2471,11 +2473,31 @@ draw_robot (ModeInfo *mi)
 ENTRYPOINT void
 free_robot (ModeInfo *mi)
 {
-# ifdef WORDBUBBLES
   robot_configuration *bp = &bps[MI_SCREEN(mi)];
-  if (bp->tc)
-    textclient_close (bp->tc);
+  int i;
+
+  if (!bp->glx_context) return;
+  glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *bp->glx_context);
+
+  if (bp->user_trackball) gltrackball_free (bp->user_trackball);
+  if (bp->walkers) free (bp->walkers);
+  if (robot_dome) free (robot_dome); robot_dome = 0;
+  if (robot_gear) free (robot_gear); robot_gear = 0;
+  if (ground) free (ground); ground = 0;
+
+# ifdef WORDBUBBLES
+  if (bp->tc) textclient_close (bp->tc);
+  if (bp->font_data) free_texture_font (bp->font_data);
 # endif
+
+# ifdef HAVE_TEXTURE
+  if (bp->chrome_texture) glDeleteTextures(1, &bp->chrome_texture);
+# endif
+  if (bp->dlists) {
+    for (i = 0; i < countof(all_objs); i++)
+      if (glIsList(bp->dlists[i])) glDeleteLists(bp->dlists[i], 1);
+    free (bp->dlists);
+  }
 }
 
 XSCREENSAVER_MODULE_2 ("WindupRobot", winduprobot, robot)
index 36d724c9e675004f9ffa08d18b7f60953903a3da..3e610a1a25544050eaf613faebc6e7e799b57f56 100644 (file)
@@ -132,6 +132,7 @@ init_GL(ModeInfo * mi)
     if (! XParseColor (dpy, mi->xgwa.colormap, s, &c))
       fprintf (stderr, "%s: can't parse color %s; using black.\n", 
                progname, s);
+    if (s) free (s);
     glClearColor (c.red   / 65535.0,
                   c.green / 65535.0,
                   c.blue  / 65535.0,
index b70a636d1dae3230c1c386815a9e201b12ef121e..ecdd84f7e94be03377edbf77886d7c3fbe4b074e 100644 (file)
@@ -357,6 +357,17 @@ static void
 halftone_free (Display *dpy, Window window, void *closure)
 {
   halftone_screen *halftone = (halftone_screen *) closure;
+  free (halftone->gravity_point_x);
+  free (halftone->gravity_point_y);
+  free (halftone->gravity_point_mass);
+  free (halftone->gravity_point_x_inc);
+  free (halftone->gravity_point_y_inc);
+  free (halftone->dots);
+  free (halftone->colors);
+  if (halftone->buffer && halftone->buffer != halftone->window)
+    XFreePixmap (dpy, halftone->buffer);
+  if (halftone->gc) XFreeGC (dpy, halftone->gc);
+  if (halftone->buffer_gc) XFreeGC (dpy, halftone->buffer_gc);
   free (halftone);
 }
 
index 42b6a552e8843c07734f2ba4130299bb523fc083..c4d5ada6d92b428e488f71f669ed79f755c37a68 100644 (file)
@@ -117,6 +117,7 @@ halo_init (Display *dpy, Window window)
             progname, mode_str);
     exit (1);
   }
+  if (mode_str) free (mode_str);
 
   if (mono_p) cmode = seuss_mode;
   if (cmode == random_mode)
@@ -435,6 +436,16 @@ halo_event (Display *dpy, Window window, void *closure, XEvent *event)
 static void
 halo_free (Display *dpy, Window window, void *closure)
 {
+  struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->draw_gc);
+  XFreeGC (dpy, st->erase_gc);
+  XFreeGC (dpy, st->copy_gc);
+  XFreeGC (dpy, st->merge_gc);
+  if (st->pixmap) XFreePixmap (dpy, st->pixmap);
+  if (st->buffer) XFreePixmap (dpy, st->buffer);
+  free (st->circles);
+  free (st->colors);
+  free (st);
 }
 
 XSCREENSAVER_MODULE ("Halo", halo)
index 0fdaa90e749e2c73ef5544e424e456f397619b96..7c1051cc93c24c8bfcba7d6fb38481a912858d01 100644 (file)
@@ -330,6 +330,7 @@ static void
 helix_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->draw_gc);
   free (st);
 }
 
index 678a3c34946016ee7af39311c5fee969446324a5..e8c2d658f4cc4d80d1e6706ca4ef4473abcc7511 100644 (file)
@@ -277,7 +277,8 @@ hexadrop_init_1 (Display *dpy, Window window, state *st)
       else
         st->lockstep_p = get_boolean_resource (st->dpy, "lockstep","Lockstep");
     }
-
+  if (s1) free (s1);
+  if (s2) free (s2);
 
   st->sides = get_integer_resource (st->dpy, "sides", "Sides");
   if (! (st->sides == 0 || st->sides == 3 || st->sides == 4 || 
@@ -355,6 +356,7 @@ hexadrop_free (Display *dpy, Window window, void *closure)
       XFreeGC (st->dpy, st->gc);
       st->gc = 0;
     }
+  free (st);
 }
 
 
index cae6360900cff2dee24b1500f019d4c039307f25..767f0081069348f562cfa4d51ca703801a8ace40 100644 (file)
@@ -548,6 +548,11 @@ static void
 hyperball_free (Display *dpy, Window window, void *closure)
 {
   struct hyper_state *hs = (struct hyper_state *) closure;
+  int i, j;
+  XFreeGC (dpy, hs->black_gc);
+  for (i = 0; i < 8; i++)
+    for (j = 0; j < 8; j++)
+      if (hs->hs_color_gcs[i][j]) XFreeGC (dpy, hs->hs_color_gcs[i][j]);
   free (hs);
 }
 
index 0055696b8d110c66703fc8e94f69bdcca3540412..fe9e17731674d16332fd5dcd63fcfc5702cb9b9f 100644 (file)
@@ -564,6 +564,12 @@ static const struct line_info line_table[LINE_COUNT] =
 static void
 hypercube_free (Display *dpy, Window window, void *closure)
 {
+  struct hyper_state *hs = (struct hyper_state *) closure;
+  int i;
+  XFreeGC (dpy, hs->black_gc);
+  for (i = 0; i < 8; i++)
+    if (hs->hs_color_gcs[i]) XFreeGC (dpy, hs->hs_color_gcs[i]);
+  free (hs);
 }
 
 XSCREENSAVER_MODULE ("HyperCube", hypercube)
index ad8af952139d2704a5ae5e3130ea9ad2df2c5a30..b879f10b11ceb71268154b421d2a61d4f57e32c3 100644 (file)
@@ -545,6 +545,7 @@ ifs_free (Display *dpy, Window window, void *closure)
   if (st->colours) free(st->colours);
   if (st->backbuffer != None && st->backbuffer != st->window)
     XFreePixmap(st->dpy, st->backbuffer);
+  XFreeGC (dpy, st->gc);
   free(st);
 }
 
diff --git a/hacks/images/dvd.png b/hacks/images/dvd.png
new file mode 100644 (file)
index 0000000..238ed58
Binary files /dev/null and b/hacks/images/dvd.png differ
diff --git a/hacks/images/sun.png b/hacks/images/sun.png
new file mode 100644 (file)
index 0000000..45f631a
Binary files /dev/null and b/hacks/images/sun.png differ
index 1877243dcf00c2bce88dddb93a0fda7871f73fe1..475447b8e707f64f2b772b530b76a1f7f18a040e 100644 (file)
@@ -161,8 +161,10 @@ init_map (struct state *st)
 
   if (mono_p)
     st->flip_xy = 0;
-  else if (st->colors)
+  else if (st->colors) {
     free_colors (st->xgwa.screen, st->cmap, st->colors, st->ncolors);
+    free (st->colors);
+  }
   st->colors = 0;
 
   st->ncolors = get_integer_resource (st->dpy, "ncolors", "Integer");
@@ -187,6 +189,7 @@ init_map (struct state *st)
   if (!mono_p)
     {
       if (st->ncolors < 1) st->ncolors = 1;
+      if (st->colors) free (st->colors);
       st->colors = (XColor *) malloc (st->ncolors * sizeof(*st->colors));
 
       make_smooth_colormap (st->xgwa.screen, st->xgwa.visual, st->cmap,
@@ -387,6 +390,8 @@ static void
 imsmap_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->gc);
+  XFreeGC (dpy, st->gc2);
   if (st->colors) free (st->colors);
   if (st->cell) free (st->cell);
   free (st);
index 6308841f8fb2bfcc503a1f3b8fa5dfe61c5444fc..999ef9e3ab75ea3119a1b951355cd0abe67b3543 100644 (file)
@@ -974,6 +974,13 @@ static void
 interaggregate_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  if (st->f) {
+    free_circles (st->f);
+    if (st->f->off_img) free (st->f->off_img);
+    if (st->f->parsedcolors) free (st->f->parsedcolors);
+    free (st->f);
+  }
+  if (st->fgc) XFreeGC (st->dpy, st->fgc);
   free (st);
 }
 
index 78601439d9743fa1271803e2be963c8dba81bf6f..98f89e29dac9d4f4c26dd884d4116347a26fe120 100644 (file)
@@ -364,10 +364,8 @@ static void inter_free(Display* dpy, struct inter_context* c)
 
   destroy_image(dpy, c);
 
-  if(c->colors <= 2)
-    free(c->pal);
-  else if(c->pal)
-    free_colors(c->screen, c->cmap, c->pal, c->colors);
+  free_colors(c->screen, c->cmap, c->pal, c->colors);
+  if (c->pal) free(c->pal);
 
 #ifndef USE_XIMAGE
   for(i = 0; i != c->colors; ++i)
@@ -995,6 +993,7 @@ interference_free (Display *dpy, Window window, void *closure)
 {
   struct inter_context *c = (struct inter_context *) closure;
   inter_free(dpy, c);
+  free(c);
 }
 
 XSCREENSAVER_MODULE ("Interference", interference)
index 4e65b765864e76beafda1157a3bfceab198e4beb..fc5b932156fb22e92d44ac64f96cde5ef9ecd4f1 100644 (file)
@@ -543,6 +543,22 @@ static void
 intermomentary_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  if (st->f) {
+    if (st->f->off_alpha) free(st->f->off_alpha);
+    if (st->f->off_map != window) XFreePixmap (dpy, st->f->off_map);
+    if (st->f->discs) {
+      int i;
+      for (i = 0; i < st->f->num; i++) {
+        if (st->f->discs[i].pxRiders) free (st->f->discs[i].pxRiders);
+      }
+      free (st->f->discs);
+    }
+    free (st->f);
+  }
+  if (st->colors) free (st->colors);
+  XFreeGC (dpy, st->fgc);
+  XFreeGC (dpy, st->copygc);
+
   free (st);
 }
 
index e6ff01f67578ba43d26ef020c092762268b2168d..fba0fe56f40a660ae5f2e85808116fa2a1297f51 100644 (file)
@@ -2598,6 +2598,7 @@ init_juggle (ModeInfo * mi)
   if(describe && !sp->mode_font) { /* Check to see if there's room to describe patterns. */
     char *font = get_string_resource (MI_DISPLAY(mi), "font", "Font");
        sp->mode_font = load_font_retry(MI_DISPLAY(mi), font);
+    if (font) free (font);
   }
 }
 
index 87a823604a198c8c4489b26ef9bb4ed84593956e..8070368aeca4f98a8c79fc5bd17d2d4af06b62ae 100644 (file)
@@ -41,11 +41,11 @@ struct Obj {
   void (*propigate) (GLOBAL *, OBJECT *);
   void (*draw) (GLOBAL *, OBJECT *);
   void (*init) (GLOBAL *, OBJECT *);
-  void *cur;
+  void *cur, *root;
 };
 
 typedef struct KSEGMENT {
-  struct KSEGMENT *next;
+  struct KSEGMENT *next, *next0;
   XColor color;
   int drawn;
   short int x1,y1,x2,y2;  /* these are in the natural coordinate system */
@@ -211,9 +211,10 @@ create_ksegment (GLOBAL *g)
 
     kcopy_color(&(prev->color), &new_color);
 
-    prev->next              = (Ksegment*)malloc(sizeof(Ksegment));
-    (prev->next)->xsegments = (XSegment*)malloc(g->symmetry * sizeof(XSegment));
+    prev->next              = (Ksegment*)calloc(1,sizeof(Ksegment));
+    (prev->next)->xsegments = (XSegment*)calloc(g->symmetry, sizeof(XSegment));
     prev->drawn             = 0;
+    prev->next0 = prev->next;
     prev = (prev->next);
   } 
 
@@ -345,7 +346,7 @@ create_objects (GLOBAL *g)
   g->objects = (OBJECT *) malloc(g->nobjects * sizeof(OBJECT));
 
   for (i=0; i< g->nsegments; i++) {
-    g->objects[i].cur = create_ksegment(g);
+    g->objects[i].cur = g->objects[i].root = create_ksegment(g);
     g->objects[i].type = 1;
     g->objects[i].time = 0;
     g->objects[i].propigate = propigate_ksegment;
@@ -406,6 +407,7 @@ init_g (GLOBAL *g)
   } else {
     g->color_mode = 2;
   }
+  if (color_mode_str) free(color_mode_str);
 
   XGetWindowAttributes (g->dpy, g->window, &xgwa);
   g->xmax     = xgwa.width;
@@ -484,6 +486,19 @@ static void
 kaleidescope_free (Display *dpy, Window window, void *closure)
 {
   GLOBAL *g = (GLOBAL *) closure;
+  int i;
+  for (i = 0; i < g->nsegments; i++) {
+    Ksegment *s = g->objects[i].root;
+    while (s) {
+      Ksegment *p = s;
+      s = s->next0;
+      free (p->xsegments);
+      free (p);
+    }
+  }
+  free (g->objects);
+  XFreeGC (dpy, g->draw_gc);
+  XFreeGC (dpy, g->erase_gc);
   free (g);
 }
 
index 2e2955bcdcd2f94576d3cc4857654c46345a29a7..fc5167d7559a7cb4b07c44079acebc62c1d03371 100644 (file)
@@ -531,6 +531,8 @@ kumppa_free (Display *dpy, Window window, void *closure)
   free (st->Yrotations);
   free (st->Xrottable);
   free (st->Yrottable);
+  free (st->rotateX);
+  free (st->rotateY);
   free (st);
 }
 
index 9468a72ac1642129fc61456e9690d8f9b1689aa6..ae45da15b0d445fd35b7c364322246bd716b58b8 100644 (file)
@@ -362,6 +362,7 @@ initLMorph(struct state *st)
        fprintf(stderr, "figtype should be `all', `open' or `closed'.\n");
        st->figType = FT_ALL;
     }
+    if (ft) free (ft);
 
     if (steps <= 0)
       steps = (random() % 400) + 100;
@@ -389,7 +390,7 @@ initLMorph(struct state *st)
 
     st->aSlopeTo = (XPoint *) xmalloc(st->numPoints * sizeof(XPoint)); 
     st->aSlopeFrom = (XPoint *) xmalloc(st->numPoints * sizeof(XPoint)); 
-    st->aNext = (XPoint *) xmalloc(st->numPoints * sizeof(XPoint)); 
+    st->aNext = 0;
 
     for (i = 0; i < st->numPoints ; i++) {
         st->aSlopeTo[i].x = 0.0;
@@ -562,6 +563,16 @@ static void
 lmorph_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  int i;
+  XFreeGC (dpy, st->gcDraw);
+  XFreeGC (dpy, st->gcClear);
+  free (st->aWork[0]);
+  free (st->aWork[1]);
+  free (st->aTmp);
+  free (st->aSlopeTo);
+  free (st->aSlopeFrom);
+  for (i = 0; i < MAXFIGS; i++)
+    if (st->a[i]) free (st->a[i]);
   free (st);
 }
 
index ce18e9d3d9af074e85182ff49f327f59787e9432..d7c78e1ce62550163c64b3cebb47d2885291c8d9 100644 (file)
@@ -299,7 +299,9 @@ static void
 m6502_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  m6502_destroy6502(st->machine);
   analogtv_release(st->tv);
+  free (st->inp);
   free (st->file);
   free (st);
 }
index a0007ddb72eca06028567ba3230347a2a567dd07..acaeba5febe79e0352ad55178f8598ca8da9dd9c 100644 (file)
@@ -1655,6 +1655,16 @@ static void
 maze_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->gc);
+  XFreeGC (dpy, st->cgc);
+  XFreeGC (dpy, st->tgc);
+  XFreeGC (dpy, st->sgc);
+  XFreeGC (dpy, st->ugc);
+  XFreeGC (dpy, st->logo_gc);
+  XFreeGC (dpy, st->erase_gc);
+  if (st->solve_state) free (st->solve_state);
+  if (st->logo_map) XFreePixmap (dpy, st->logo_map);
+  exit_sets (st);
   free (st);
 }
 
index 2ccc8adbef4377cd2d25f46bda3de4a414fd4e47..9e81e506b6b317fa8cce7e1391dddd3ba025dbaf 100644 (file)
@@ -90,36 +90,16 @@ memscroller_init (Display *dpy, Window window)
   {
     int i;
     int nfonts = countof (st->fonts);
-    for (i = nfonts-1; i >= 0; i--)
+    for (i = 0; i < nfonts; i++)
       {
         char *fontname;
         char res[20];
         sprintf (res, "font%d", i+1);
         fontname = get_string_resource (dpy, res, "Font");
-        /* Each resource can be a comma-separated list of font names.
-           We use the first one that exists. */
-        if (fontname && *fontname) 
-          {
-            char *f2 = strdup(fontname);
-            char *f, *token = f2;
-            while ((f = strtok(token, ",")) && !st->fonts[i])
-              {
-                token = 0;
-                while (*f == ' ' || *f == '\t') f++;
-                st->fonts[i] = load_font_retry (dpy, f);
-              }
-            free (f2);
-            if (!st->fonts[i] && i < nfonts-1)
-              {
-                fprintf (stderr, "%s: unable to load font: \"%s\"\n",
-                         progname, fontname);
-                st->fonts[i] = st->fonts[i+1];
-              }
-          }
+        if (fontname && *fontname)
+          st->fonts[i] = load_font_retry (dpy, fontname);
+        if (fontname) free (fontname);
       }
-
-    if (!st->fonts[0])
-      st->fonts[0] = load_font_retry (dpy, "fixed");
     if (!st->fonts[0]) abort();
   }
 
@@ -581,6 +561,18 @@ memscroller_event (Display *dpy, Window window, void *closure, XEvent *event)
 static void
 memscroller_free (Display *dpy, Window window, void *closure)
 {
+  state *st = (state *) closure;
+  int i;
+  for (i = 0; i < st->nscrollers; i++)
+    destroy_xshm_image (dpy, st->scrollers[i].image, &st->shm_info);
+  free (st->scrollers);
+  for (i = 0; i < countof (st->fonts); i++)
+    if (st->fonts[i]) XFreeFont (dpy, st->fonts[i]);
+  if (st->filename) free (st->filename);
+  XFreeGC (dpy, st->draw_gc);
+  XFreeGC (dpy, st->erase_gc);
+  XFreeGC (dpy, st->text_gc);
+  free (st);
 }
 
 
@@ -601,13 +593,6 @@ static const char *memscroller_defaults [] = {
   ".font4:                OCR A Std 96,  Lucida Console 96,  Monaco 96",
   ".font5:                OCR A Std 48,  Lucida Console 48,  Monaco 48",
   ".font6:                OCR A Std 24,  Lucida Console 24,  Monaco 24",
-#elif 0  /* real X11, XQueryFont() */
-  ".font1:                -*-courier-bold-r-*-*-*-1440-*-*-m-*-*-*",
-  ".font2:                -*-courier-bold-r-*-*-*-960-*-*-m-*-*-*",
-  ".font3:                -*-courier-bold-r-*-*-*-480-*-*-m-*-*-*",
-  ".font4:                -*-courier-bold-r-*-*-*-320-*-*-m-*-*-*",
-  ".font5:                -*-courier-bold-r-*-*-*-180-*-*-m-*-*-*",
-  ".font6:                fixed",
 #else    /* real X11, load_font_retry() */
   ".font1:                -*-ocr a std-medium-r-*-*-*-1440-*-*-m-*-*-*",
   ".font2:                -*-ocr a std-medium-r-*-*-*-960-*-*-m-*-*-*",
index 3a2ae73ede3b31d37739c6f318d247226ca50072..f387785304ae63130c41eabd3f828cb3c637f400 100644 (file)
@@ -386,19 +386,20 @@ metaballs_event (Display *dpy, Window window, void *closure, XEvent *event)
 static void
 metaballs_free (Display *dpy, Window window, void *closure)
 {
-#if 0
   struct state *st = (struct state *) closure;
-       free( st->pImage->data );
-       XDestroyImage( st->pImage );
-       free( st->aiColorVals );
-       free( st->blobs );
-       for (i = 0; i < st->iWinHeight; ++i)
-         free( st->blub[i] );
-       free( st->blub );
-       for (i = 0; i < st->dradius; ++i)
-         free( st->blob[i] );
-       free( st->blob );
-#endif
+  int i;
+  if (st->pImage) XDestroyImage (st->pImage);
+  free (st->aiColorVals);
+  free (st->blobs);
+  for (i = 0; i < st->iWinHeight; ++i)
+    free (st->blub[i]);
+  free (st->blub);
+  for (i = 0; i < st->dradius; ++i)
+    free (st->blob[i]);
+  if (st->sColor) free (st->sColor);
+  free (st->blob);
+  XFreeGC (dpy, st->gc);
+  free (st);
 }
 
 
index 4add45768b9c89d74e4946278a62ad448b92facf..c688c8abf0f0d6e54a5cd40eeac5cccdb81bbf60 100644 (file)
@@ -123,6 +123,7 @@ moire_init_1 (struct state *st)
 
       gcv.foreground = st->colors[0].pixel;
     }
+  if (st->gc) XFreeGC (st->dpy, st->gc);
   st->gc = XCreateGC (st->dpy, st->window, GCForeground, &gcv);
 }
 
@@ -240,6 +241,12 @@ moire_event (Display *dpy, Window window, void *closure, XEvent *event)
 static void
 moire_free (Display *dpy, Window window, void *closure)
 {
+  struct state *st = (struct state *) closure;
+  if (st->draw_image)
+    destroy_xshm_image (dpy, st->draw_image, &st->shm_info);
+  XFreeGC (dpy, st->gc);
+  free (st->colors);
+  free (st);
 }
 
 XSCREENSAVER_MODULE ("Moire", moire)
index dad9d660a8f28b724ca0005ab5e39824a6030a2c..caf47c330f47f0bb44ef3550b22a8f49c5d9ec1e 100644 (file)
@@ -320,6 +320,12 @@ moire2_event (Display *dpy, Window window, void *closure, XEvent *event)
 static void
 moire2_free (Display *dpy, Window window, void *closure)
 {
+  struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->copy_gc);
+  XFreeGC (dpy, st->erase_gc);
+  XFreeGC (dpy, st->window_gc);
+  free (st->colors);
+  free (st);
 }
 
 static const char *moire2_defaults [] = {
index 836731a76e241eb0c5f200d24c1235a59982c54d..fe8f60f07460b1b8050ba26f991725a8ff9924be 100644 (file)
@@ -334,6 +334,7 @@ munch_init (Display *dpy, Window w)
     st->mismunch = random() & 1;
   else
     st->mismunch = get_boolean_resource (st->dpy, "mismunch", "Mismunch");
+  if (mm) free (mm);
 
   st->window_width = xgwa.width;
   st->window_height = xgwa.height;
@@ -439,6 +440,11 @@ static void
 munch_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  int i;
+  XFreeGC (dpy, st->gc);
+  for (i = 0; i < st->simul; i++)
+    free (st->munchers[i]);
+  free (st->munchers);
   free (st);
 }
 
index 081dbcab728d84bcbcd522e475af340d78dbf957..7adc94c89016b8762a1f565b218a1b890ba548f3 100644 (file)
@@ -1303,7 +1303,11 @@ static void
 nerverot_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  int i;
   freeBlots (st);
+  for (i = 0; i <= st->colorCount; i++) 
+    XFreeGC (dpy, st->gcs[i]);
+  free (st->gcs);
   free (st);
 }
 
index 726c2a7439ec20162758716aa85bfb44f7225152..bb0ca9f5eb7d2cf0b25097800ea7b8ed4911bd8a 100644 (file)
@@ -583,7 +583,7 @@ noseguy_init (Display *d, Window w)
   unsigned long fg, bg, text_fg, text_bg;
   XWindowAttributes xgwa;
   Colormap cmap;
-  char *fontname;
+  char *fontname, *cname, *s;
   XGCValues gcvalues;
   st->dpy = d;
   st->window = w;
@@ -608,10 +608,12 @@ noseguy_init (Display *d, Window w)
 
   st->xftfont = XftFontOpenXlfd (st->dpy, screen_number (xgwa.screen),
                                  fontname);
+  free (fontname);
+
+  cname = get_string_resource (st->dpy, "textForeground", "Foreground");
   XftColorAllocName (st->dpy, xgwa.visual, xgwa.colormap,
-                     get_string_resource (st->dpy,
-                                          "textForeground", "Foreground"),
-                     &st->xftcolor);
+                     cname, &st->xftcolor);
+  free (cname);
   st->xftdraw = XftDrawCreate (st->dpy, st->window, xgwa.visual,
                                xgwa.colormap);
 
@@ -621,9 +623,15 @@ noseguy_init (Display *d, Window w)
   text_fg = get_pixel_resource (st->dpy, cmap, "textForeground", "Foreground");
   text_bg = get_pixel_resource (st->dpy, cmap, "textBackground", "Background");
   /* notice when unspecified */
-  if (! get_string_resource (st->dpy, "textForeground", "Foreground"))
+  s = get_string_resource (st->dpy, "textForeground", "Foreground");
+  if (s)
+    free (s);
+  else
     text_fg = bg;
-  if (! get_string_resource (st->dpy, "textBackground", "Background"))
+  s = get_string_resource (st->dpy, "textBackground", "Background");
+  if (s)
+    free (s);
+  else
     text_bg = fg;
 
   gcvalues.foreground = fg;
@@ -683,6 +691,25 @@ noseguy_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
   textclient_close (st->tc);
+  XftFontClose (dpy, st->xftfont);
+  /* XftColorFree (dpy, st->xgwa.visual, st->xgwa.colormap, st->xftcolor); */
+  XftDrawDestroy (st->xftdraw);
+  XFreeGC (dpy, st->fg_gc);
+  XFreeGC (dpy, st->bg_gc);
+  XFreeGC (dpy, st->text_fg_gc);
+  XFreeGC (dpy, st->text_bg_gc);
+
+# define FP(F) \
+  if (st->F.p) XFreePixmap (dpy, st->F.p); \
+  if (st->F.m) XFreePixmap (dpy, st->F.m)
+  FP (left1);
+  FP (left2);
+  FP (right1);
+  FP (right2);
+  FP (left_front);
+  FP (right_front);
+  FP (front);
+  FP (down);
   free (st);
 }
 
index f7282fdd0d4601ec471cdccc5f21126386fd47e1..6d2dd855b83aa8b84a5102456f738da2d1af2c9f 100644 (file)
@@ -126,6 +126,8 @@ free_pacman (ModeInfo * mi)
     pacmangamestruct * pp = &pacman_games[MI_SCREEN (mi)];
     int dir, mouth, i, j, k;
 
+    if (pp->tiles) free (pp->tiles);
+
     if (pp->ghosts != NULL) {
         free (pp->ghosts);
         pp->ghosts = (ghoststruct *) NULL;
@@ -1249,6 +1251,9 @@ load_pixmaps (Display ** dpy, Window window, pacmangamestruct ** ps)
                           pp->spritexs, pp->spriteys);
         srcy += sw;
     }
+    XFreeGC (*dpy, gc);
+    XFreePixmap (*dpy, sprites);
+    XFreePixmap (*dpy, sprites_mask);
 }
 
 
index 87820bec332ed70b47c7c51022488de77020086f..8997f4af1317be1ab440e79507aae19bdf2f30ab 100644 (file)
@@ -302,6 +302,9 @@ static void
 pedal_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  if (st->eraser) eraser_free (st->eraser);
+  XFreeGC (dpy, st->gc);
+  free (st->points);
   free (st);
 }
 
index 9148827ded81a1113f72e0b59def83e629921bf5..8fcb0da256c3b26999e589bc641487eae31bfaf7 100644 (file)
@@ -951,6 +951,11 @@ static void
 penetrate_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->draw_gc);
+  XFreeGC (dpy, st->erase_gc);
+  XFreeGC (dpy, st->level_gc);
+  XFreeFont (dpy, st->font);
+  XFreeFont (dpy, st->scoreFont);
   free (st);
 }
 
index 97299d65073154fed5362aa9f4db5f08d231182f..e97c582f37c06171e02e12f4862d485cb6b51205 100644 (file)
@@ -419,7 +419,7 @@ setup_display (struct state *st)
 
     if (osize != cell_size)
       {
-        if (!st->warned)
+        if (0 && !st->warned)
           {
             fprintf (stderr,
              "%s: throttling cell size from %d to %d because of %dM limit.\n",
@@ -707,11 +707,19 @@ static void
 petri_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  if (st->arr) free (st->arr);
+  if (st->head) free (st->head);
+  if (st->tail) free (st->tail);
+  if (st->coloredGCs) {
+    int i;
+    for (i = 0; i < st->count*2; i++)
+      XFreeGC (st->dpy, st->coloredGCs[i]);
+    free (st->coloredGCs);
+  }
   free (st);
 }
 
 
-
 static const char *petri_defaults [] = {
   ".background:                black",
   ".foreground:                white",
index 2e57b8617603eed56d83876354175f89fe411590..374e134826e6abcb581719006bde558f0b5e9028 100644 (file)
@@ -185,6 +185,8 @@ phosphor_init (Display *dpy, Window window)
       if (!state->font) abort();
     }
 
+  if (fontname) free (fontname);
+
   font = state->font;
   state->scale = get_integer_resource (dpy, "scale", "Integer");
   state->ticks = STATE_MAX + get_integer_resource (dpy, "ticks", "Integer");
@@ -322,6 +324,8 @@ phosphor_init (Display *dpy, Window window)
         state->gcs[STATE_MAX + i] = XCreateGC (state->dpy, state->window,
                                                flags, &state->gcv);
       }
+
+    free (colors);
   }
 
   capture_font_bits (state);
@@ -548,7 +552,6 @@ capture_font_bits (p_state *state)
 
   for (i = 0; i < 256; i++)
     state->chars[i] = make_character (state, i);
-  state->chars[CURSOR_INDEX] = make_character (state, CURSOR_INDEX);
 }
 
 
@@ -1392,13 +1395,30 @@ static void
 phosphor_free (Display *dpy, Window window, void *closure)
 {
   p_state *state = (p_state *) closure;
+  int i;
 
   textclient_close (state->tc);
   if (state->cursor_timer)
     XtRemoveTimeOut (state->cursor_timer);
 
-  /* #### there's more to free here */
-
+  if (state->gc0) XFreeGC (dpy, state->gc0);
+  if (state->gc1) XFreeGC (dpy, state->gc1);
+#ifdef FUZZY_BORDER
+  if (state->gc2) XFreeGC (dpy, state->gc2);
+#endif /* FUZZY_BORDER */
+  for (i = 0; i < state->ticks; i++)
+    if (state->gcs[i]) XFreeGC (dpy, state->gcs[i]);
+  free (state->gcs);
+  for (i = 0; i < 256; i++) {
+    XFreePixmap (dpy, state->chars[i]->pixmap);
+#ifdef FUZZY_BORDER
+    XFreePixmap (dpy, state->chars[i]->pixmap2);
+#endif /* FUZZY_BORDER */
+    free (state->chars[i]);
+  }
+  XDestroyImage (state->font_bits);
+  free (state->chars);
+  free (state->cells);
   free (state);
 }
 
index 6e6e484f1db9fadf0af19d27cd2be1f8851bac21..9baa88df2ee672c5a416d5039311d646ae477c68 100644 (file)
@@ -61,6 +61,7 @@ typedef struct _fringe {
   int mni;                /* size of intersection array */
   int ni;                 /* number of intersections */
   int *i;                 /* sorted intersection list */
+  struct _fringe *next0;  /* allocation list */
   } fringe;
 
 
@@ -104,6 +105,8 @@ struct state {
   int count, delay, ncolors, colorspeed, color_index, flags, iterations;
   int color_iterations;
   circle *circles;
+  fringe *fringes;
+  event *events;
 };
 
 typedef int (*cut)(struct state *, tree*);    /* cut x is <, =, or > 0 given a <, =, or > x for some a */
@@ -335,6 +338,7 @@ static inline void fringe_add_intersection(fringe *f, double x, double y)
   f->ni++;
   if (f->mni < f->ni) {
     f->mni += 2;
+    /* #### valgrind says this leaks at exit */
     f->i = realloc(f->i, sizeof(int) * f->mni);
     }
   f->i[f->ni-1] = rint(atan2(y - f->c->y, x - f->c->x) * X_PI / M_PI);
@@ -345,8 +349,11 @@ static circle *init_circles(struct state *st, int n, int w, int h)
   int i, r0, dr, speed;
   double v, a;
   double minradius, maxradius;
-  fringe *s = malloc(sizeof(fringe) * n * 2);    /* never freed */
-  circle *c = malloc(sizeof(circle) * n);
+  fringe *s = calloc(sizeof(fringe), n * 2);
+  circle *c = calloc(sizeof(circle), n);
+
+  s->next0 = st->fringes;
+  st->fringes = s;
 
   speed = get_integer_resource(st->dpy, "speed", "Speed");
   minradius = get_float_resource(st->dpy, "minradius", "Float");
@@ -377,6 +384,8 @@ static circle *init_circles(struct state *st, int n, int w, int h)
     c[i].lo->side = 0;
     c[i].hi->side = 1;
     c[i].lo->mni = c[i].lo->ni = c[i].hi->mni = c[i].hi->ni = 0;
+    if (c[i].lo->i) free (c[i].lo->i);
+    if (c[i].hi->i) free (c[i].hi->i);
     c[i].lo->i = c[i].hi->i = 0;
     }
 
@@ -456,7 +465,7 @@ static void event_insert(struct state *st, event **eq, event *e)
 static void circle_start_event(struct state *st, event **eq, circle *c)
 {
   event *s;
-  s = malloc(sizeof(event));
+  s = calloc(1, sizeof(event));
   s->kind = START;
   s->x = c->x;
   s->y = c->y - c->r;
@@ -468,7 +477,7 @@ static void circle_start_event(struct state *st, event **eq, circle *c)
 static void circle_finish_event(struct state *st, event **eq, circle *c)
 {
   event *f;
-  f = malloc(sizeof(event));
+  f = calloc(1, sizeof(event));
   f->kind = FINISH;
   f->x = c->x;
   f->y = c->y + c->r;
@@ -543,11 +552,11 @@ static void fringe_intersect(struct state *st, event **eq, double y, fringe *lo,
   #define CHECK(xi, yi) (y <= yi && ((xi < lo->c->x) ^ lo->side) && ((xi < hi->c->x) ^ hi->side))
 
   #define ADD_CROSS(xi, yi, ilo, ihi) {  \
-    e = malloc(sizeof(event));   /* #### LEAK */        \
+    e = calloc(1, sizeof(event));        \
     e->kind = CROSS;                     \
     e->x = xi; e->y = yi;                \
     e->lo = ilo; e->hi = ihi;            \
-    event_insert(st, eq, e);                 \
+    event_insert(st, eq, e);             \
     }
 
   if (CHECK(x1, y1)) {
@@ -751,7 +760,7 @@ static void adjust_circle_visibility(circle *c)
   int i, j, n, a;
   int *in;
   n = c->lo->ni + c->hi->ni;
-  in = malloc(sizeof(int) * n);
+  in = calloc(sizeof(int), n);
   for (i=0;i<c->hi->ni;i++)
     in[i] = c->hi->i[i]; 
   for (i=c->lo->ni-1;i>=0;i--)
@@ -960,6 +969,22 @@ static void
 piecewise_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  int i;
+  XFreeGC (dpy, st->erase_gc);
+  XFreeGC (dpy, st->draw_gc);
+  for (i = 0; i < st->count; i++) {
+    if (st->circles[i].i) free (st->circles[i].i);
+    if (st->circles[i].lo) {
+      if (st->circles[i].lo->i) free (st->circles[i].lo->i);
+    }
+  }
+  while (st->fringes) {
+    fringe *f = st->fringes;
+    st->fringes = f->next0;
+    free (f);
+  }
+  free (st->circles);
+  free (st->colors);
   free (st);
 }
 
index fe200c35a65620d7c46e63f756dc4c44a615096f..8c18a1c87f8fbb998ff474c1e43b25db7d41684f 100644 (file)
@@ -1112,6 +1112,8 @@ pong_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
   analogtv_release(st->tv);
+  free(st->inp);
+  if (st->score_font.text_im) XDestroyImage (st->score_font.text_im);
   free (st);
 }
 
index 3b83fd768be60b57db5601d42b288341ef508cc3..4fc16a737143c149edbb25a76771b13684eb9f42 100644 (file)
@@ -265,6 +265,9 @@ static void
 popsquares_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->gc);
+  free (st->colors);
+  free (st->squares);
   free (st);
 }
 
index 442ea7f0da67ddb5a6a416b7793c088767bf5e1a..44bd58a1a1481bf73c7487491ed92c601eda8819 100644 (file)
@@ -340,6 +340,10 @@ static void
 pyro_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->draw_gc);
+  XFreeGC (dpy, st->erase_gc);
+  free (st->projectiles);
+  free (st->sorted_projectiles);
   free (st);
 }
 
index 1498af76d35f61578c2b6d5caf6fb8433b8b05a9..75721c7bfd6fd51121587b9f840dece543d2d5b1 100644 (file)
@@ -148,6 +148,7 @@ qix_init (Display *dpy, Window window)
   int nlines;
   XGCValues gcv;
   XWindowAttributes xgwa;
+  int i;
   st->dpy = dpy;
   st->window = window;
   XGetWindowAttributes (st->dpy, st->window, &xgwa);
@@ -243,7 +244,7 @@ qix_init (Display *dpy, Window window)
          st->count = nplanes;
        }
 
-      st->gcs[0] = (GC *) malloc (st->count * sizeof (GC));
+      st->gcs[0] = (GC *) calloc (st->count, sizeof (GC));
       st->gcs[1] = (st->xor_p
                     ? st->gcs[0]
                     : (GC *) malloc (st->count * sizeof (GC)));
@@ -321,12 +322,11 @@ qix_init (Display *dpy, Window window)
     jwxyz_XSetAlphaAllowed (dpy, st->draw_gc, True);
 #endif
 
-  st->qixes = (struct qix **) malloc ((st->count + 1) * sizeof (struct qix *));
-  st->qixes [st->count] = 0;
-  while (st->count--)
+  st->qixes = (struct qix **) calloc ((st->count + 1), sizeof (struct qix *));
+  for (i = 0; i < st->count; i++)
     {
-      st->qixes [st->count] = init_one_qix (st, nlines);
-      st->qixes [st->count]->id = st->count;
+      st->qixes [i] = init_one_qix (st, nlines);
+      st->qixes [i]->id = i;
     }
 
 # ifdef HAVE_JWXYZ
@@ -566,10 +566,27 @@ static void
 qix_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
-  if (st->gcs[0])
-    free (st->gcs[0]);
-  if (st->gcs[1] && st->gcs[0] != st->gcs[1])
-    free (st->gcs[1]);
+  int i;
+
+# if 0  /* 2001 jwz was a total jerk */
+  for (i = 0; i < 2; i++) {
+    int j;
+    if (st->gcs[i]) {
+      for (j = 0; i < st->count; j++)
+        if (st->gcs[i][j]) XFreeGC (dpy, st->gcs[i][j]);
+      free (st->gcs[i]);
+    }
+  }
+# endif
+  for (i = 0; i < st->count; i++) {
+    struct qix *q = st->qixes[i];
+    free (q->lines);
+    free (q);
+  }
+  if (st->draw_gc)
+    free (st->draw_gc);
+  if (st->erase_gc && st->draw_gc != st->erase_gc)
+    free (st->erase_gc);
   free (st->qixes);
   free (st);
 }
index 33cb602a1658a0d189d3a1382f8c5b38158d0699..9628619b757155d92369c90b4f0d0bc67230df9b 100644 (file)
@@ -446,6 +446,7 @@ rd_init (Display *dpy, Window win)
           ok = True;
       if (!ok)
         st->pdepth = 16;
+      free (pfv);
     }
 
   st->cmap = st->xgwa.colormap;
@@ -544,6 +545,16 @@ rd_event (Display *dpy, Window window, void *closure, XEvent *event)
 static void
 rd_free (Display *dpy, Window window, void *closure)
 {
+  struct state *st = (struct state *) closure;
+  free (st->r1);
+  free (st->r2);
+  free (st->r1b);
+  free (st->r2b);
+  free (st->colors);
+  free (st->mc);
+  XFreeGC (dpy, st->gc);
+  destroy_xshm_image (dpy, st->image, &st->shm_info);
+  free (st);
 }
 
 XSCREENSAVER_MODULE_2 ("RDbomb", rdbomb, rd)
index 9ef0e7a1e26f0ea1b0690d417aef8db1e83a2502..69bf3855acbfde3afc694cfc700addb6b5ffef6b 100644 (file)
@@ -48,10 +48,12 @@ struct record_anim_state {
   Window window;
   int frame_count;
   int target_frames;
+  int fps;
   XWindowAttributes xgwa;
   char *title;
   int pct;
   int fade_frames;
+  double start_time;
 # ifdef USE_GL
   char *data, *data2;
 # else  /* !USE_GL */
@@ -77,6 +79,21 @@ double_time (void)
 }
 
 
+static double
+double_timewarp (void)
+{
+  struct timeval now;
+# ifdef GETTIMEOFDAY_TWO_ARGS
+  struct timezone tzp;
+  screenhack_record_anim_gettimeofday(&now, &tzp);
+# else
+  screenhack_record_anim_gettimeofday(&now);
+# endif
+
+  return (now.tv_sec + ((double) now.tv_usec * 0.000001));
+}
+
+
 /* Some of the hacks set their timing based on the real-world wall clock,
    so to make the animations record at a sensible speed, we need to slow
    down that clock by discounting the time taken up by snapshotting and
@@ -131,13 +148,15 @@ screenhack_record_anim_init (Screen *screen, Window window, int target_frames)
 
   st = (record_anim_state *) calloc (1, sizeof(*st));
 
+  st->fps = 30;
   st->screen = screen;
   st->window = window;
   st->target_frames = target_frames;
+  st->start_time = double_time();
   st->frame_count = 0;
-  st->fade_frames = 30 * 1.5;
+  st->fade_frames = st->fps * 1.5;
 
-  if (st->fade_frames >= (st->target_frames / 2) - 30)
+  if (st->fade_frames >= (st->target_frames / 2) - st->fps)
     st->fade_frames = 0;
 
 # ifdef HAVE_GDK_PIXBUF
@@ -180,6 +199,10 @@ screenhack_record_anim_init (Screen *screen, Window window, int target_frames)
 
 # ifndef HAVE_JWXYZ
   XFetchName (dpy, st->window, &st->title);
+  {
+    char *s = strchr(st->title, ':');
+    if (s) *s = 0;
+  }
 # endif /* !HAVE_JWXYZ */
 
   return st;
@@ -311,9 +334,36 @@ screenhack_record_anim (record_anim_state *st)
     int pct = 100 * (st->frame_count + 1) / st->target_frames;
     if (pct != st->pct && st->title)
       {
+        double end   = st->target_frames / (double) st->fps;
+        double secs0 = double_time() - st->start_time;
+        double secs  = double_timewarp() - st->start_time;
+        double rate  = secs / secs0;
+        double secs2 = (end - secs) / rate;
         Display *dpy = DisplayOfScreen (st->screen);
-        char *t2 = (char *) malloc (strlen(st->title) + 20);
-        sprintf (t2, "%s: %d%%", st->title, pct);
+        char *t2 = (char *) malloc (strlen(st->title) + 100);
+        if (secs2 < 0) secs2 = 0;
+
+        sprintf (t2, "%s: %3d%% done,"
+                 " %d:%02d:%02d in"
+                 " %d:%02d:%02d;"
+                 " %d%% speed,"
+                 " %d:%02d:%02d remaining",
+                 st->title, pct,
+
+                 ((int) secs) / (60*60),
+                 (((int) secs) / 60) % 60,
+                 ((int) secs) % 60,
+
+                 ((int) secs0) / (60*60),
+                 (((int) secs0) / 60) % 60,
+                 ((int) secs0) % 60,
+
+                 (int) (100 * rate),
+
+                 ((int) secs2) / (60*60),
+                 (((int) secs2) / 60) % 60,
+                 ((int) secs2) % 60
+                 );
         XStoreName (dpy, st->window, t2);
         XSync (dpy, 0);
         free (t2);
@@ -371,10 +421,10 @@ screenhack_record_anim_free (record_anim_state *st)
            "ffmpeg"
            " -hide_banner"
            " -v 16"
-           " -framerate 30"    /* rate of input: must be before -i */
+           " -framerate %d"    /* rate of input: must be before -i */
            " -i '%s-%%06d.%s'"
-           " -r 30",           /* rate of output: must be after -i */
-           progname, type);
+           " -r %d",           /* rate of output: must be after -i */
+           st->fps, progname, type, st->fps);
   if (soundtrack)
     sprintf (cmd + strlen(cmd),
              " -i '%s' -map 0:v:0 -map 1:a:0 -acodec aac",
index 447a4555995b8a88ec8ebfbb20522c71e6f76935..7e39643398aa09396f384634ad04852bf9b69bba 100644 (file)
@@ -788,6 +788,11 @@ init_ripples(struct state *st, int ndrops, int splash)
 {
   int i;
 
+  if (st->bufferA) free (st->bufferA);
+  if (st->bufferB) free (st->bufferB);
+  if (st->temp) free (st->temp);
+  if (st->dirty_buffer) free (st->dirty_buffer);
+
   st->bufferA = (short *)calloc(st->width * st->height, sizeof(*st->bufferA));
   st->bufferB = (short *)calloc(st->width * st->height, sizeof(*st->bufferB));
   st->temp = (short *)calloc(st->width * st->height, sizeof(*st->temp));
@@ -1008,6 +1013,7 @@ ripples_draw (Display *dpy, Window window, void *closure)
         XWindowAttributes xgwa;
         XGetWindowAttributes(st->dpy, st->window, &xgwa);
         st->start_time = time ((time_t *) 0);
+        if (st->orig_map) XDestroyImage (st->orig_map);
         st->orig_map = XGetImage (st->dpy, st->window, 0, 0, 
                                   xgwa.width, xgwa.height,
                                   ~0L, ZPixmap);
@@ -1064,6 +1070,13 @@ static void
 ripples_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  if (st->bufferA) free (st->bufferA);
+  if (st->bufferB) free (st->bufferB);
+  if (st->temp) free (st->temp);
+  if (st->dirty_buffer) free (st->dirty_buffer);
+  if (st->orig_map) XDestroyImage (st->orig_map);
+  if (st->buffer_map) destroy_xshm_image (dpy, st->buffer_map, &st->shm_info);
+  XFreeGC (dpy, st->gc);
   free (st);
 }
 
index 5a976df65fcd308000aa10d827977f97eefaf0be..fea366073e5c95e6d86ad0be4cc60df561ca11cd 100644 (file)
@@ -505,6 +505,17 @@ rocks_event (Display *dpy, Window window, void *closure, XEvent *event)
 static void
 rocks_free (Display *dpy, Window window, void *closure)
 {
+  struct state *st = (struct state *) closure;
+  int i;
+  for (i = 0; i < MAX_SIZE; i++)
+    if (st->pixmaps[i]) XFreePixmap (dpy, st->pixmaps[i]);
+  for (i = 0; i < st->ncolors; i++)
+    if (st->draw_gcs[i]) XFreeGC (dpy, st->draw_gcs[i]);
+  XFreeGC (dpy, st->erase_gc);
+  free (st->colors);
+  free (st->rocks);
+  free (st->draw_gcs);
+  free (st);
 }
 
 \f
index 6b2d7a3b88d49b7f0f85762489994a2d9cd6c1bd..124ac73f2b4d0687847f3353e480f2ed6a566b6c 100644 (file)
@@ -181,6 +181,7 @@ static void
 rorschach_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->draw_gc);
   free (st);
 }
 
index 58f805cc72f6c24da3dc50e3e86ecc6099ac724c..08018197d6589752d80e885e5679852c9d7d2cc5 100644 (file)
@@ -336,6 +336,7 @@ set_mode(struct state *st)
   char *s = get_string_resource (st->dpy, "mode", "Mode");
   if (!s || !*s || !strcasecmp (s, "random"))
     {
+      free (s);
       switch (random() % 4) {
       case 0: s = "stationary"; break;
       case 1: s = "move"; break;
@@ -370,8 +371,15 @@ init_hack (struct state *st)
   set_mode (st);
 
   st->start_time = time ((time_t *) 0);
+
+  if (st->zoom_box) {
+    for (i = 0; i < st->num_zoom; i++)
+      if (st->zoom_box[i]) free (st->zoom_box[i]);
+    free (st->zoom_box);
+  }
   st->zoom_box = calloc (st->num_zoom, sizeof (struct zoom_area *));
   for (i = 0; i < st->num_zoom; i++) {
+    if (st->zoom_box[i]) free (st->zoom_box[i]);
     st->zoom_box[i] = create_zoom (st);
   }
 
@@ -395,6 +403,7 @@ rotzoomer_draw (Display *disp, Window win, void *closure)
       st->img_loader = load_image_async_simple (st->img_loader, 0, 0, 0, 0, 0);
       if (! st->img_loader) {  /* just finished */
         if (! st->pm) abort();
+        if (st->orig_map) XDestroyImage (st->orig_map);
        st->orig_map = XGetImage (st->dpy, st->pm,
                                   0, 0, st->width, st->height,
                                   ~0L, ZPixmap);
@@ -540,6 +549,15 @@ rotzoomer_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
   if (st->pm) XFreePixmap (dpy, st->pm);
+  if (st->gc) XFreeGC (dpy, st->gc);
+  if (st->orig_map) XDestroyImage (st->orig_map);
+  if (st->buffer_map) destroy_xshm_image (dpy, st->buffer_map, &st->shm_info);
+  if (st->zoom_box) {
+    int i;
+    for (i = 0; i < st->num_zoom; i++)
+      if (st->zoom_box[i]) free (st->zoom_box[i]);
+    free (st->zoom_box);
+  }
   free (st);
 }
 
index addc960ebbfa938c4e3e97a957577fa279d25a26..fdd2e4323a73e2bc23fda6e60c7ed8213dbb53de 100644 (file)
@@ -137,6 +137,9 @@ const char *progname;   /* used by hacks in error messages */
 const char *progclass;  /* used by ../utils/resources.c */
 Bool mono_p;           /* used by hacks */
 
+#ifdef EXIT_AFTER
+static time_t exit_after;      /* Exit gracefully after N seconds */
+#endif
 
 static XrmOptionDescRec default_options [] = {
   { "-root",   ".root",                XrmoptionNoArg, "True" },
@@ -151,11 +154,13 @@ static XrmOptionDescRec default_options [] = {
 
 # ifdef DEBUG_PAIR
   { "-pair",   ".pair",                XrmoptionNoArg, "True" },
-# endif /* DEBUG_PAIR */
-
+# endif
 # ifdef HAVE_RECORD_ANIM
   { "-record-animation", ".recordAnim", XrmoptionSepArg, 0 },
-# endif /* HAVE_RECORD_ANIM */
+# endif
+# ifdef EXIT_AFTER
+  { "-exit-after",     ".exitAfter",   XrmoptionSepArg, 0 },
+# endif
 
   { 0, 0, 0, 0 }
 };
@@ -473,6 +478,12 @@ screenhack_table_handle_events (Display *dpy,
       if (XtAppPending (app) & (XtIMTimer|XtIMAlternateInput))
         XtAppProcessEvent (app, XtIMTimer|XtIMAlternateInput);
     }
+
+# ifdef EXIT_AFTER
+  if (exit_after != 0 && time ((time_t *) 0) >= exit_after)
+    return False;
+# endif
+
   return True;
 }
 
@@ -601,11 +612,11 @@ run_screenhack_table (Display *dpy,
 #endif
 
   ft->free_cb (dpy, window, closure);
-  if (fpst) fps_free (fpst);
+  if (fpst) ft->fps_free (fpst);
 
 #ifdef DEBUG_PAIR
   if (window2) ft->free_cb (dpy, window2, closure2);
-  if (fpst2) fps_free (fpst2);
+  if (fpst2) ft->fps_free (fpst2);
 #endif
 }
 
@@ -707,9 +718,9 @@ main (int argc, char **argv)
   Window window2 = 0;
   Widget toplevel2 = 0;
 # endif
-#ifdef HAVE_RECORD_ANIM
+# ifdef HAVE_RECORD_ANIM
   record_anim_state *anim_state = 0;
-#endif
+# endif
   XtAppContext app;
   Bool root_p;
   Window on_window = 0;
@@ -864,6 +875,15 @@ main (int argc, char **argv)
 
   root_p = get_boolean_resource (dpy, "root", "Boolean");
 
+# ifdef EXIT_AFTER
+  {
+    int secs = get_integer_resource (dpy, "exitAfter", "Integer");
+    exit_after = (secs > 0
+                  ? time((time_t *) 0) + secs
+                  : 0);
+  }      
+# endif
+
   {
     char *s = get_string_resource (dpy, "windowID", "WindowID");
     if (s && *s)
index 78621ab768edbc87b0b9c325ad3faff1608b3071..16e629b057414d24953c33b716228c72881bbc3c 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1992-2015 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1992-2018 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -58,7 +58,8 @@
           PREFIX ## _reshape,                                  \
           PREFIX ## _event,                                    \
           PREFIX ## _free,                                     \
-          0, SCREENHACK_VISUAL };                                      \
+          0, fps_free,                                         \
+          SCREENHACK_VISUAL };                                 \
   XSCREENSAVER_LINK (NAME ## _xscreensaver_function_table)
 
 #define XSCREENSAVER_MODULE(CLASS,PREFIX)                      \
index b53ef746df6f63d4ef9fe35f8be08882396154e6..1fafa91394d5770b153fab8d8245beb905f346eb 100644 (file)
@@ -147,6 +147,7 @@ struct xscreensaver_function_table {
   Bool           (*event_cb)   (Display *, Window, void *, XEvent *);
   void           (*free_cb)    (Display *, Window, void *);
   void           (*fps_cb)     (Display *, Window, fps_state *, void *);
+  void           (*fps_free)   (fps_state *);
 
 # ifndef HAVE_JWXYZ
   Visual *       (*pick_visual_hook) (Screen *);
index 7a1a0ffc13c258bad17567ba44150f7e6ee809d3..d7961622fef365a9d679b8bd8a203764a5d30944 100644 (file)
@@ -454,12 +454,14 @@ shadebobs_free (Display *dpy, Window window, void *closure)
   struct state *st = (struct state *) closure;
        free( st->anSinTable );
        free( st->anCosTable );
-       /* free( st->pImage->data ); */
+        if (st->sColor) free (st->sColor);
+        XFreeGC (dpy, st->gc);
        XDestroyImage( st->pImage );
        for( st->iShadeBob=0; st->iShadeBob<st->nShadeBobCount; st->iShadeBob++ )
                free( st->aShadeBobs[ st->iShadeBob ].anDeltaMap );
        free( st->aShadeBobs );
        free( st->aiColorVals );
+        free(st);
 }
 
 
index c5656f32c867bc9b20df146b1dc16698fb6deded..aaa4762c236c94ad3e91fb82173e97d62c43fc74 100644 (file)
@@ -91,6 +91,8 @@ slidescreen_init (Display *dpy, Window window)
       XParseColor (st->dpy, xgwa.colormap, "black", &bgc);
     if (!XParseColor (st->dpy, xgwa.colormap, bgs, &bgc))
       XParseColor (st->dpy, xgwa.colormap, "gray", &fgc);
+    if (fgs) free (fgs);
+    if (bgs) free (bgs);
 
     fg_ok = XAllocColor (st->dpy, xgwa.colormap, &fgc);
     bg_ok = XAllocColor (st->dpy, xgwa.colormap, &bgc);
index 17a3f2a4d695d6de696f12bdfd3c46d90e2d09f8..e16cb5f7510f3f3ae31db8161698e54e7d8a306e 100644 (file)
@@ -1563,6 +1563,17 @@ static void
 speedmine_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  int i;
+  XFreeGC (dpy, st->draw_gc);
+  XFreeGC (dpy, st->erase_gc);
+  XFreeGC (dpy, st->tunnelend_gc);
+  XFreeGC (dpy, st->stars_gc);
+  XFreeGC (dpy, st->stars_erase_gc);
+  for (i = 0; i < MAX_COLORS; i++) {
+      if (st->ground_gcs[i]) XFreeGC (dpy, (st->ground_gcs[i]));
+      if (st->wall_gcs[i]) XFreeGC (dpy, (st->wall_gcs[i]));
+      if (st->bonus_gcs[i]) XFreeGC (dpy, (st->bonus_gcs[i]));
+  }
   free (st);
 }
 
index a38e0603dd28fa85bc366b47916c0edfdb8652b6..c1fa16f3cd644a76b5b7b1fdd125033d99d3aa31 100644 (file)
@@ -253,6 +253,12 @@ static void
 squiral_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  if (st->worms) free (st->worms);
+  if (st->fill) free (st->fill);
+/*  if (st->ncolors)
+    free_colors (st->xgwa.screen, st->xgwa.cmap, st->colors, st->ncolors); */
+  XFreeGC (dpy, st->draw_gc);
+  XFreeGC (dpy, st->erase_gc);
   free (st);
 }
 
index 5e94144401a4d51ce67e681f8481a2ca0b720534..a49b98f0c7b9540c38ceca8912ea6d582e732da5 100644 (file)
@@ -458,6 +458,7 @@ starfish_init (Display *dpy, Window window)
     st->blob_p = !(random() % 3);
   else
     fprintf (stderr, "%s: mode must be blob, zoom, or random", progname);
+  if (s) free (s);
 
   if (st->blob_p)
     st->delay *= 3;
@@ -520,6 +521,9 @@ static void
 starfish_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->gc);
+  free_starfish (st->starfish);
+  free (st->colors);
   free (st);
 }
 
index 89e9a3bc455cc677c291913a9666728abca01b51..c630f71734e54f59595cdcf4ec6327120638dba3 100644 (file)
@@ -175,7 +175,7 @@ DBL_To_PRM( 1.0-exp( -16.0*(a)/UNIT2 ) )
 
 #if defined(__BIGGEST_ALIGNMENT__) \
        && (defined(__GNUC__) \
-        && (__GNUC__ == 4 && __GNUC_MINOR__ >= 4 || __GNUC__ >= 5) \
+    && (__GNUC__ == 4 && __GNUC_MINOR__ >= 7 || __GNUC__ >= 5) \
        || defined(__clang__))
 # define ALIGNED __attribute__((aligned(__BIGGEST_ALIGNMENT__)))
 # define ALIGN_HINT(ptr) __builtin_assume_aligned((ptr), __BIGGEST_ALIGNMENT__)
index 278a3bd6a4fb18151c52f0f466977b335604c1ba..e0d842a668fc38c8936ed1e57bff63e5ae79e218 100644 (file)
@@ -735,6 +735,12 @@ static void
 substrate_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  if (st->f->cgrid) free(st->f->cgrid);
+  if (st->f->cracks) free(st->f->cracks);
+  if (st->f->off_img) free(st->f->off_img);
+  if (st->f->parsedcolors) free(st->f->parsedcolors);
+  XFreeGC (dpy, st->fgc);
+  free (st->f);
   free (st);
 }
 
index 959d24aff5c6604738963b01bcaaf2b88eee6516..a62c5546955c25d37035034c1e32dc2341d7bb5b 100644 (file)
@@ -372,6 +372,9 @@ initialize (struct state *st)
   printf("fast\t%i\nmarks\t%i\nwait\t%i\n",st->fastch,st->maxk,st->timewait);
 #endif
  
+  free (xgc);
+  free (xorgc);
+  free (xandgc);
 }
 
 static void fill_kugel(struct state *st, int i, Pixmap buf, int setcol);
@@ -936,6 +939,13 @@ t3d_event (Display *dpy, Window window, void *closure, XEvent *event)
 static void
 t3d_free (Display *dpy, Window window, void *closure)
 {
+  struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->gc);
+  XFreeGC (dpy, st->orgc);
+  XFreeGC (dpy, st->andgc);
+  XFreePixmap (dpy, st->buffer);
+  free (st->zeit);
+  free (st);
 }
 
 
index b9a8bd93ee6f05d1307d7272948e2767e5615b22..40c5b94fa105287f2bc918f54fc729a96c57bac1 100644 (file)
@@ -300,6 +300,7 @@ analyze (struct state *st)
                  progname, s);
         exit (1);
       }
+    if (s) free (s);
   }
 
   flush_cache (st);
@@ -966,6 +967,7 @@ tessellimage_free (Display *dpy, Window window, void *closure)
   if (st->image)  XFreePixmap (dpy, st->image);
   if (st->output) XFreePixmap (dpy, st->output);
   if (st->delta)  XDestroyImage (st->delta);
+  if (st->img)    XDestroyImage (st->img);
   free (st);
 }
 
index d0276f7825d02d1a0b3c709e120ced4515884e21..d635146e3d416e90e2c69daae609b3d2ecf132af 100644 (file)
@@ -529,6 +529,10 @@ truchet_event (Display *dpy, Window window, void *closure, XEvent *event)
 static void
 truchet_free (Display *dpy, Window window, void *closure)
 {
+  struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->agc);
+  XFreeGC (dpy, st->bgc);
+  free (st);
 }
 
 
index 1b2cdf6255793ae6734cbf64779ca851ebad0f9e..33b9cd3af2c2176b21cfd81b5eb598868716281c 100644 (file)
@@ -628,6 +628,14 @@ twang_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
   if (st->pm) XFreePixmap (dpy, st->pm);
+  XFreeGC (dpy, st->backgroundGC);
+  XFreeGC (dpy, st->foregroundGC);
+  XFreeGC (dpy, st->borderGC);
+  if (st->sourceImage) XDestroyImage (st->sourceImage);
+  if (st->workImage) destroy_xshm_image (st->dpy, st->workImage, &st->shmInfo);
+  if (st->tiles) free (st->tiles);
+  if (st->sortedTiles) free (st->sortedTiles);
+
   free (st);
 }
 
index 936479161bcee3032fedbc83e36f102e2177a17c..0accbd9ecb560a8fd34ec0c41d2d110fb4cff2e3 100644 (file)
@@ -65,7 +65,7 @@ linedata;
 
 static const struct stringAndSpeed
 {
-  char *str;
+  const char * const str;
   int speed;
 }
 sampleStrings[] =
@@ -99,7 +99,8 @@ struct state {
 
   int hei, wid, speed;
   Bool erasing, cleared, autopal;
-  char *instring;
+  char *oinstring;       /* allocated */
+  const char *instring;  /* consumed */
   int max_ticks;
 
   real sinof[degs], cosof[degs], tanof[degs];
@@ -435,7 +436,8 @@ maininit (struct state *st)
   if (!st->instring)
     {
       int n = random1 (sizeof (sampleStrings) / sizeof (sampleStrings[0]));
-      st->instring = sampleStrings[n].str;
+      if (st->oinstring) free (st->oinstring);
+      st->instring = st->oinstring = strdup (sampleStrings[n].str);
       st->speed = sampleStrings[n].speed;
     }
   st->boxh = 10;
@@ -745,7 +747,8 @@ vermiculate_draw (Display *dpy, Window window, void *closure)
   if (tick++ > st->max_ticks && !had_instring)
     {
       tick = 0;
-      st->instring = 0;
+      if (st->oinstring) free (st->oinstring);
+      st->instring = st->oinstring = 0;
       maininit(st);
       st->reset_p = True;
       st->autopal = False;
@@ -764,9 +767,12 @@ vermiculate_init (Display *d, Window w)
   st->dpy = d;
   st->window = w;
   st->reset_p = 1;
-  st->instring = get_string_resource (st->dpy, "instring", "Instring");
-  if (st->instring && !*st->instring)
-    st->instring = 0;
+  st->oinstring = get_string_resource (st->dpy, "instring", "Instring");
+  if (st->oinstring && !*st->oinstring) {
+    free (st->oinstring);
+    st->oinstring = 0;
+  }
+  st->instring = st->oinstring;
 
   st->max_ticks = get_integer_resource (st->dpy, "ticks", "Integer");
   st->speed = get_integer_resource (st->dpy, "speed", "Speed");
@@ -1189,11 +1195,9 @@ static void
 vermiculate_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
-
-  if (st->point)
-    {
-      free(st->point);
-    }
+  XFreeGC (dpy, st->mygc);
+  if (st->oinstring) free (st->oinstring);
+  if (st->point) free(st->point);
   free (st);
 }
 
index 5b482a7b947a70c778571d9d74eaf2a3d1c986fb..a2f32a0e8746ae232af576e265d62b184b79d908 100644 (file)
@@ -599,6 +599,7 @@ vfeedback_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
   analogtv_release (st->tv);
+  free (st->rec.input);
   if (st->pix)
     XFreePixmap (dpy, st->pix);
   XFreeGC (dpy, st->gc);
index 50fe255f45844b131fc19b9dc0183d89a56051d8..37f6e1bc8811552b5610c1cc50bad4ef54c82f97 100644 (file)
@@ -241,6 +241,7 @@ wander_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
   XFreeGC (st->dpy, st->context);
+  if (st->eraser) eraser_free (st->eraser);
   free (st);
 }
 
index 3525e498b134c5461d4a4d230332387c0b3b276e..a55328cdc6797dbfab527d50655a6a713855607a 100644 (file)
@@ -479,6 +479,8 @@ static void
 whirlwindwarp_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->draw_gc);
+  XFreeGC (dpy, st->erase_gc);
   free (st);
 }
 
index 22c7ddd650908981b4002950a994c2b507312a35..8c3bd1fef1528968137f8d7298cf47f5c216a22c 100644 (file)
@@ -655,6 +655,13 @@ whirlygig_event (Display *dpy, Window window, void *closure, XEvent *event)
 static void
 whirlygig_free (Display *dpy, Window window, void *closure)
 {
+  struct state *st = (struct state *) closure;
+  free (st->info);
+  XFreeGC (dpy, st->fgc);
+  XFreeGC (dpy, st->bgc);
+  if (st->xmode_str) free (st->xmode_str);
+  if (st->ymode_str) free (st->ymode_str);
+  free (st);
 }
 
 
index f28c5b2514640688032bdefd7be59347ab772dcd..602be9877a40f7d6c56ba2f49a34d959564579f2 100644 (file)
@@ -281,15 +281,13 @@ static void moveColorChanger( color_changer * ch )
 
 }
 
-#if 0
-static void destroyColorChanger( color_changer * ch )
+static void destroyColorChanger( struct state *st, color_changer * ch )
 {
        int q;
        for ( q = 0; q < ch->max; q++ )
-               XFreeColors( st->dpy, *cmap, &( ch->shade[q].pixel ), 1, 0 );
+               XFreeColors( st->dpy, st->cmap, &( ch->shade[q].pixel ), 1, 0 );
        free( ch->shade );
 }
-#endif
 
 static void resizeWormhole( struct state *st, wormhole * worm )
 {
@@ -353,21 +351,26 @@ static void initWormhole( struct state *st, wormhole * worm, Display * display,
        initColorChanger( st, &(worm->changer) );
 
        worm->num_stars = 64;
-       worm->stars = (starline **)malloc( sizeof(starline *) * worm->num_stars );
-       for ( i = 0; i < worm->num_stars; i++ )
+       worm->stars = (starline **)calloc(sizeof(starline *), worm->num_stars);
+       for ( i = 0; i < worm->num_stars; i++ ) {
+          if (worm->stars[i]) free (worm->stars[i]);
                worm->stars[i] = NULL;
+        }
 
 }
 
-#if 0
-static void destroyWormhole( wormhole * worm )
+static void destroyWormhole( struct state *st, wormhole * worm )
 {
-       destroyColorChanger( &(worm->changer), st->dpy, cmap );
-        if (work->work != st->window)
+        int i;
+       destroyColorChanger( st, &(worm->changer));
+        if (worm->work != st->window) {
           XFreePixmap( st->dpy, worm->work );
-       free( worm->stars );
+          worm->work = 0;
+        }
+       for (i = 0; i < worm->num_stars; i++)
+          if (worm->stars[i]) free(worm->stars[i]);
+       free(worm->stars);
 }
-#endif
 
 static double Cos( int a )
 {
@@ -696,6 +699,8 @@ static void
 wormhole_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  destroyWormhole (st, &st->worm);
+  XFreeGC (dpy, st->gc);
   free (st);
 }
 
index 80cc7d91734d8ad29eb6b350e69b3ed3fea0eebd..f3842dc677e8eccc54da0c60128dc93ad88c6bc3 100644 (file)
@@ -88,7 +88,7 @@ struct state {
   chansetting *cs;
 
   int change_now;
-  int colorbars_only_p;
+  Bool colorbars_only_p, no_colorbars_p;
 };
 
 
@@ -179,7 +179,7 @@ update_smpte_colorbars(analogtv_input *input)
                                     xpos, ypos, black_ntsc);
     }
   }
-  ypos += st->ugly_font.char_h*5/2;
+  ypos += (st->ugly_font.char_h * ANALOGTV_SCALE)*5/2;
 
   if (st->logo)
     {
@@ -191,7 +191,7 @@ update_smpte_colorbars(analogtv_input *input)
                             w2, h2);
     }
 
-  ypos += 58;
+  ypos += 58 * ANALOGTV_SCALE;
 
 #if 0
   analogtv_draw_string_centered(input, &st->ugly_font,
@@ -254,6 +254,7 @@ hack_resources (Display *dpy)
       value.addr = buf2;
       value.size = strlen(buf2);
       XrmPutResource (&db, buf1, "String", &value);
+      free (val);
     }
 #endif /* HAVE_JWXYZ */
 }
@@ -351,17 +352,23 @@ static void add_stations(struct state *st)
 static void load_station_images(struct state *st)
 {
   int i;
+  char *img_file = get_string_resource (st->dpy, "image", "Image");
+  XImage *ximage = 0;
+
   for (i = 0; i < MAX_STATIONS; i++) {
     analogtv_input *input = st->stations[i];
 
     st->chansettings[i].image_loaded_p = True;
-    if (i == 0 ||   /* station 0 is always colorbars */
-        st->colorbars_only_p) {
+    if (!st->no_colorbars_p &&
+        (i == 0 ||   /* station 0 is always colorbars */
+         st->colorbars_only_p)) {
       input->updater = update_smpte_colorbars;
       input->do_teletext=1;
     }
 #ifdef USE_TEST_PATTERNS
-    else if (random()%5==0) {
+    else if (!st->no_colorbars_p &&
+             !(img_file && *img_file) &&
+             ((random() % 5) == 0)) {
       int count = 0, j;
       for (count = 0; st->test_patterns[count]; count++)
         ;
@@ -372,12 +379,31 @@ static void load_station_images(struct state *st)
       analogtv_setup_teletext(input);
     }
 #endif
-    else {
+    else if (img_file && *img_file) {
+
+      /* Load a single image file into every free channel. */
+      if (! ximage) {
+        int w, h;
+        Pixmap p = file_to_pixmap (st->dpy, st->window, img_file, &w, &h, 0);
+        ximage = XGetImage (st->dpy, p, 0, 0, w, h, ~0L, ZPixmap);
+        XFreePixmap (st->dpy, p);
+      }
+
+      analogtv_input *input = st->stations[i];
+      analogtv_setup_sync(input, 1, (random()%20)==0);
+      analogtv_load_ximage (st->tv, input, ximage, 0, 0, 0, 0, 0);
+      analogtv_setup_teletext(input);
+      st->chansettings[i].image_loaded_p = True;
+
+    } else {
       analogtv_load_random_image(st);
       input->do_teletext=1;
       st->chansettings[i].image_loaded_p = False;
     }
   }
+
+  if (img_file) free (img_file);
+  if (ximage) XDestroyImage (ximage);
 }
 
 
@@ -399,6 +425,8 @@ xanalogtv_init (Display *dpy, Window window)
 
   st->colorbars_only_p =
     get_boolean_resource(dpy, "colorbarsOnly", "ColorbarsOnly");
+  st->no_colorbars_p =
+    get_boolean_resource(dpy, "noColorbars", "NoColorbars");
 
   /* if (!st->colorbars_only_p) */
     {
@@ -618,9 +646,13 @@ static void
 xanalogtv_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  int i;
   analogtv_release(st->tv);
   if (st->logo) XDestroyImage (st->logo);
   if (st->logo_mask) XDestroyImage (st->logo_mask);
+  if (st->ugly_font.text_im) XDestroyImage (st->ugly_font.text_im);
+  for (i = 0; i < MAX_STATIONS; i++)
+    if (st->stations[i]) free (st->stations[i]);
 # ifdef USE_TEST_PATTERNS
   {
     int i;
@@ -639,6 +671,8 @@ static const char *xanalogtv_defaults [] = {
   "*grabDesktopImages:  False",   /* HAVE_JWXYZ */
   "*chooseRandomImages: True",    /* HAVE_JWXYZ */
   "*colorbarsOnly:      False",
+  "*noColorbars:        False",
+  "*image:              ",
   ANALOGTV_DEFAULTS
   0,
 };
@@ -646,6 +680,8 @@ static const char *xanalogtv_defaults [] = {
 static XrmOptionDescRec xanalogtv_options [] = {
   { "-delay",          ".delay",               XrmoptionSepArg, 0 },
   { "-colorbars-only", ".colorbarsOnly",       XrmoptionNoArg, "True" },
+  { "-no-colorbars",   ".noColorbars",         XrmoptionNoArg, "True" },
+  { "-image",          ".image",               XrmoptionSepArg, 0 },
   ANALOGTV_OPTIONS
   { 0, 0, 0, 0 }
 };
index 1037460afb35d00433b6ea19fff3ce3f713597d8..d2273b1afee7a4bc77bedb8f4eb5d75cb62569a0 100644 (file)
@@ -202,8 +202,8 @@ InitFlame(struct state *st)
   st->fheight = st->height / 2;
 
   if (st->flame) free (st->flame);
-  st->flame   = (unsigned char *) malloc((st->fwidth + 2) * (st->fheight + 2)
-                                     * sizeof(unsigned char));
+  st->flame   = (unsigned char *) calloc((st->fwidth + 2) * (st->fheight + 2),
+                                         sizeof(unsigned char));
 
   if (!st->flame)
     {
@@ -656,7 +656,7 @@ loadBitmap (struct state *st)
   int blur = 0;
 
 # ifdef HAVE_JWXYZ
-  const char *bitmap_name = "(default)"; /* #### always use builtin */
+  char *bitmap_name = strdup("(default)"); /* #### always use builtin */
 # else
   char *bitmap_name = get_string_resource (st->dpy, "bitmap", "Bitmap");
 # endif
@@ -671,6 +671,8 @@ loadBitmap (struct state *st)
   else
     image = file_to_ximage (st->dpy, st->visual, bitmap_name);
 
+  if (bitmap_name) free (bitmap_name);
+
   if (! image) return 0;
 
   while (image->width  < st->width  / 10 &&
@@ -769,6 +771,13 @@ xflame_event (Display *dpy, Window window, void *closure, XEvent *event)
 static void
 xflame_free (Display *dpy, Window window, void *closure)
 {
+  struct state *st = (struct state *) closure;
+  if (st->xim)
+    destroy_xshm_image (dpy, st->xim, &st->shminfo);
+  free (st->theim);
+  free (st->flame);
+  XFreeGC (dpy, st->gc);
+  free (st);
 }
 
 
index 382699bb53b84eafef8d4c2e1acee10002138ee4..cb86ab393d15b96460015e9036bc9773f1c1873f 100644 (file)
@@ -87,8 +87,13 @@ make_ximage (Display *dpy, Visual *visual, const char *filename,
       g_type_init ();
 #  endif
 # endif
-      gdk_pixbuf_xlib_init (dpy, DefaultScreen (dpy));
-      xlib_rgb_init (dpy, DefaultScreenOfDisplay (dpy));
+      if (dpy)
+        {
+          /* Turns out gdk-pixbuf works even if you don't have display
+             connection, which is good news for analogtv-cli. */
+          gdk_pixbuf_xlib_init (dpy, DefaultScreen (dpy));
+          xlib_rgb_init (dpy, DefaultScreenOfDisplay (dpy));
+        }
       initted = 1;
     }
 
@@ -119,6 +124,7 @@ make_ximage (Display *dpy, Visual *visual, const char *filename,
       pb = gdk_pixbuf_new_from_stream (s, 0, &gerr);
 
       g_input_stream_close (s, NULL, NULL);
+      /* #### valgrind on xflame says there's a small leak in s? */
       g_object_unref (s);
 
       if (! pb)
@@ -198,6 +204,7 @@ make_ximage (Display *dpy, Visual *visual, const char *filename,
         row += stride;
       }
 
+    /* #### valgrind on xflame says there's a small leak in pb? */
     g_object_unref (pb);
     return image;
   }
index f5a3eb716c78a6bb1399577a4019cd29a4aa2a4e..27e4c9e75d1ce8aafbcc105e3abd03749cbc725a 100644 (file)
@@ -97,6 +97,7 @@ xjack_init (Display *dpy, Window window)
 
   st->font = load_font_retry (st->dpy, fontname);
   if (!st->font) abort();
+  if (fontname) free (fontname);
 
   gcv.font = st->font->fid;
   gcv.foreground = get_pixel_resource (st->dpy, st->xgwa.colormap,
@@ -461,6 +462,8 @@ static void
 xjack_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->gc);
+  XFreeFont (dpy, st->font);
   free (st);
 }
 
index 79d430a85c2831015cc5b0c6128189956c11f874..addfd4c8018a16932a576e387438166f6db89d74 100644 (file)
@@ -71,6 +71,9 @@ xlockmore_setup (struct xscreensaver_function_table *xsft, void *arg)
 
   /* Translate the xlockmore `opts[]' argument to a form that
      screenhack.c expects.
+
+     Some of the strings in here are leaked at exit, but since this code
+     only runs on X11, that doesn't matter.
    */
   new_options = (XrmOptionDescRec *) 
     calloc (xlockmore_opts->numopts*3 + 100, sizeof (*new_options));
index 285a12698457b87e682233fde361936594aea0c2..bbb7f8497955d4f00d17b1b4129f2dbe5c344f0b 100644 (file)
@@ -1,5 +1,5 @@
 /* xlockmore.h --- xscreensaver compatibility layer for xlockmore modules.
- * xscreensaver, Copyright (c) 1997-2017 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 1997-2018 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -177,8 +177,10 @@ ERROR!  Sorry, xlockmore.h requires ANSI C (gcc, for example.)
 
 # ifdef USE_GL
 #  define XLOCKMORE_FPS xlockmore_gl_compute_fps
+#  define XLOCKMORE_FPS_FREE xlockmore_gl_free_fps
 # else
 #  define XLOCKMORE_FPS xlockmore_do_fps
+#  define XLOCKMORE_FPS_FREE fps_free
 # endif
 
 # ifdef HAVE_JWXYZ
@@ -246,7 +248,7 @@ ERROR!  Sorry, xlockmore.h requires ANSI C (gcc, for example.)
           xlockmore_setup,                                             \
           & NAME ## _xlockmore_function_table,                         \
           0, 0, 0, 0, 0,                                               \
-          XLOCKMORE_FPS,                                               \
+          XLOCKMORE_FPS, XLOCKMORE_FPS_FREE,                           \
           XLOCKMORE_VISUAL };                                          \
                                                                        \
   XSCREENSAVER_LINK (NAME ## _xscreensaver_function_table)
index bf0adbf46550a4fcd67468bd659072bd5e33989a..440d39aed3f2c3a0f1241b7a3eb82663446d1e59 100644 (file)
@@ -73,6 +73,7 @@ typedef struct ModeInfo ModeInfo;
 extern void do_fps (ModeInfo *);
 extern void xlockmore_gl_compute_fps (Display *, Window, fps_state *, void *);
 extern void xlockmore_gl_draw_fps (ModeInfo *);
+extern void xlockmore_gl_free_fps (fps_state *);
 # define do_fps xlockmore_gl_draw_fps
 
 
index 2d43ce98450424b2c04f51b033c24efd174ef335..9f1305b9c80449e06a335a253002aa947428777b 100644 (file)
@@ -600,6 +600,7 @@ parseargs(struct state *st)
       if (st->Forcing[findex] >= NUMMAPS)
         usage();
     }
+    if (optarg) free (optarg);
   }
 #endif
   if (get_boolean_resource(st->dpy, "useLog", "Boolean"))
@@ -624,6 +625,7 @@ parseargs(struct state *st)
   if (s && *s) {
     st->prob=atof(s); st->Rflag++; setforcing(st);
   }
+  if (s) free (s);
 
   st->settle = get_integer_resource(st->dpy, "settle", "Integer");
 
@@ -633,11 +635,13 @@ parseargs(struct state *st)
     st->min_a = atof(s);
     st->aflag++;
   }
+  if (s) free (s);
   
   s = get_string_resource(st->dpy, "minB", "Float");
   if (s && *s) {
     st->min_b=atof(s); st->bflag++;
   }
+  if (s) free (s);
 #else
   st->min_a = get_float_resource (st->dpy, "minA", "Float");
   st->aflag++;
@@ -665,12 +669,14 @@ parseargs(struct state *st)
       ch++;
     }
   }
+  if (s) free (s);
 
   s = get_string_resource(st->dpy, "bRange", "Float");
   if (s && *s) {
     st->b_range = atof(s);
     st->hflag++;
   }
+  if (s) free (s);
 
   st->start_x = get_float_resource(st->dpy, "startX", "Float");
 
@@ -693,6 +699,7 @@ parseargs(struct state *st)
       for (i=0;i<FUNCMAXINDEX;i++)
         st->Forcing[i] = st->mapindex;
   }
+  if (s) free (s);
 
   st->outname = get_string_resource(st->dpy, "outputFile", "Integer");
 
@@ -707,6 +714,7 @@ parseargs(struct state *st)
   if (s && *s) {
     st->a_range = atof(s); st->wflag++;
   }
+  if (s) free (s);
 
   st->max_a = st->min_a + st->a_range;
   st->max_b = st->min_b + st->b_range;
@@ -1924,6 +1932,7 @@ xlyap_free (Display *dpy, Window window, void *closure)
 /*  XFreeGC (st->dpy, st->RubberGC);*/
   for (i = 0; i < st->maxcolor; i++)
     XFreeGC (st->dpy, st->Data_GC[i]);
+  if (st->outname) free (st->outname);
 
   free (st);
 }
index decddaa7bd7c8aaaf64b376452775dbd762d6ada..45c5f9d4277f4d996b93ecd60c8f399b4b6b2a72 100644 (file)
@@ -437,6 +437,7 @@ init_trace (m_state *state)
   if (!s)
     goto FAIL;
 
+  if (state->tracing) free (state->tracing);
   state->tracing = (signed char *) malloc (strlen (s) + 1);
   s3 = state->tracing;
 
@@ -450,6 +451,7 @@ init_trace (m_state *state)
 
   state->glyph_map = decimal_encoding;
   state->nglyphs = countof(decimal_encoding);
+  free (s);
 
   return;
 
@@ -580,7 +582,7 @@ xmatrix_init (Display *dpy, Window window)
 
   state->small_p = (state->xgwa.width < 300);
   {
-    const char *s = get_string_resource (dpy, "matrixFont", "String");
+    char *s = get_string_resource (dpy, "matrixFont", "String");
     if (!s || !*s || !strcasecmp(s, "large"))
       state->small_p = False;
     else if (!strcasecmp(s, "small"))
@@ -588,6 +590,7 @@ xmatrix_init (Display *dpy, Window window)
     else
       fprintf (stderr, "%s: matrixFont should be 'small' or 'large' not '%s'\n",
                progname, s);
+    if (s) free (s);
   }
 
   load_images (dpy, state);
@@ -733,6 +736,7 @@ xmatrix_init (Display *dpy, Window window)
       fprintf (stderr, "not `%s'\n", mode);
       set_mode (state, MATRIX);
     }
+  if (mode) free (mode);
 
   if (state->mode == MATRIX && get_boolean_resource (dpy, "trace", "Boolean"))
     set_mode (state, ((random() % 3) ? TRACE_TEXT_A : TRACE_TEXT_B));
@@ -1795,13 +1799,20 @@ static void
 xmatrix_free (Display *dpy, Window window, void *closure)
 {
   m_state *state = (m_state *) closure;
+  int i;
   if (state->tc)
     textclient_close (state->tc);
   if (state->cursor_timer)
     XtRemoveTimeOut (state->cursor_timer);
-
-  /* #### there's more to free here */
-
+  XFreeGC (dpy, state->draw_gc);
+  XFreeGC (dpy, state->erase_gc);
+  XFreeGC (dpy, state->scratch_gc);
+  free (state->cells);
+  free (state->background);
+  free (state->feeders);
+  if (state->tracing) free (state->tracing);
+  for (i = 0; i < CHAR_MAPS; i++)
+    if (state->images[i]) XFreePixmap (dpy, state->images[i]);
   free (state);
 }
 
index 678c7b042eea9fd82175e3c286f85f377f3c206b..d14eb391b9df5d8727d9b9cd73872becac77fd43 100644 (file)
@@ -324,6 +324,7 @@ static int initGraphics(struct state *st)
       color.flags=DoRed|DoGreen|DoBlue;
       XAllocColor(st->dpy,cmap,&color);
       xgcv.foreground=color.pixel;
+      if (st->fgc[i]) XFreeGC (st->dpy, st->fgc[i]);
       st->fgc[i] = XCreateGC(st->dpy, st->win, GCForeground | GCFunction,&xgcv);
 #ifdef HAVE_JWXYZ
       jwxyz_XSetAntiAliasing (st->dpy, st->fgc[i], False);
@@ -1218,6 +1219,10 @@ static void
 xrayswarm_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  int i;
+  for (i = 0; i < 256; i++)
+    if (st->fgc[i]) XFreeGC (dpy, (st->fgc[i]));
+  XFreeGC (dpy, st->cgc);
   free (st);
 }
 
index e6504ff53d2bdcdbece86f1bc39ed156e085a460..a67d8b2031870e5e6491fd5ac0e2d816061f240f 100644 (file)
@@ -303,6 +303,7 @@ static void
 xspirograph_free (Display *dpy, Window window, void *closure)
 {
   struct state *st = (struct state *) closure;
+  XFreeGC (dpy, st->draw_gc);
   free (st);
 }
 
index c70bdbe862ef0da3c5702d3109d19df686a31f81..fa76571edc60970c5d4fc1c46618bc5f33998f80 100644 (file)
@@ -39,6 +39,7 @@
 
 extern void jwxyz_abort(const char *fmt, ...) __dead2;
 #define abort() jwxyz_abort("abort in %s:%d", __FUNCTION__, __LINE__)
+#define exit(N) jwxyz_abort("abort in %s:%d", __FUNCTION__, __LINE__)
 
 typedef int Bool;
 typedef int Status;
index 9b84188df397b1ad3a320b8a53235816c1e85ca0..0853105d072f81eac687371b1a6826f28902335e 100644 (file)
@@ -1,4 +1,4 @@
-# Auto-generated: Sun Aug 12 16:36:38 PDT 2018
+# Auto-generated: Wed Dec 26 22:51:08 PST 2018
 driver/demo-Gtk-conf.c
 driver/demo-Gtk.c
 driver/screensaver-properties.desktop.in
@@ -111,6 +111,7 @@ hacks/config/grav.xml
 hacks/config/greynetic.xml
 hacks/config/halftone.xml
 hacks/config/halo.xml
+hacks/config/handsy.xml
 hacks/config/helix.xml
 hacks/config/hexadrop.xml
 hacks/config/hexstrut.xml
index 56fc602f06155eb64ac66d874a18b83bf899989b..dbb593bdb2c266f5683db693d2bc9396fd0b60fc 100644 (file)
@@ -195,7 +195,7 @@ CCUTILS = $(INCLUDES) $(DEFS) $(CPPFLAGS) $(CFLAGS) $(X_CFLAGS)
        $(CC) -c $(CCUTILS) $<
 
 # Two versions of this: driver/ does not link with Xft, but hacks/ does.
-font-retry-xft.o: font-retry.c
+font-retry-xft.o: $(srcdir)/font-retry.c
        $(CC) -c $(CCUTILS) -DUSE_XFT $< -o $@
 
 
index e6abd4861bdcd85e1a422fbc9745c6c0f58a106c..5445cd6ad7cc4fa76d6ad3dccbd50fb7a1f4c7bd 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1997-2013 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1997-2018 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -383,9 +383,22 @@ make_color_path (Screen *screen, Visual *visual, Colormap cmap,
   /* Floating-point round-off can make us decide to use fewer colors. */
   if (k < *ncolorsP)
     {
+      /* We used to just return the smaller set of colors, but that meant
+         that after re-generating the color map repeatedly, the number of
+         colors in use would tend toward 0, which not only looked bad but
+         also often caused crashes. So instead, just duplicate the last
+         color to pad things out. */
+# if 0
       *ncolorsP = k;
       if (k <= 0)
        return;
+# else
+      for (i = k+1; i < *ncolorsP; i++)
+        /* #### Should duplicate the allocation of the color cell here
+           to avoid a double-color-free on PseudoColor, but it's 2018
+           and I don't care, */
+        colors[i] = colors[k];
+# endif
     }
 
   if (!allocate_p)
index ae15ac8003b02fe5cece3035ca357589c8b91e91..fdf74968bb4a9cdcfd7c9793a130eefef6bb0825 100644 (file)
@@ -750,7 +750,7 @@ eraser_init (Display *dpy, Window window)
     which = -1;
   else
     which = get_integer_resource(dpy, "eraseMode", "Integer");
-  free (s);
+  if (s) free (s);
 
   if (which < 0 || which >= countof(erasers))
     which = random() % countof(erasers);
index c3e91a08e8b6e1d24c80659698a7130d8fc852ff..ab999e2b5bfcd614a7430195be52e18f0c8c75dc 100644 (file)
@@ -25,19 +25,21 @@ extern const char *progname;
 #undef countof
 #define countof(x) (sizeof((x))/sizeof((*x)))
 
+#undef DEBUG
+
 static void *
 load_font_retry_1 (Display *dpy, int screen, const char *xlfd, Bool xft_p)
 {
 
 # ifdef USE_XFT
-#  define LOADFONT() (xft_p \
-                      ? (void *) XftFontOpenXlfd (dpy, screen, xlfd) \
-                      : (void *) XLoadQueryFont (dpy, xlfd))
+#  define LOADFONT(F) (xft_p \
+                      ? (void *) XftFontOpenXlfd (dpy, screen, (F)) \
+                      : (void *) XLoadQueryFont (dpy, (F)))
 # else
-#  define LOADFONT() ((void *) XLoadQueryFont (dpy, xlfd))
+#  define LOADFONT(F) ((void *) XLoadQueryFont (dpy, (F)))
 # endif
 
-  void *f = LOADFONT();
+  void *f = xlfd ? LOADFONT(xlfd) : 0;
 
 # ifndef USE_XFT
   if (xft_p) abort();
@@ -46,11 +48,18 @@ load_font_retry_1 (Display *dpy, int screen, const char *xlfd, Bool xft_p)
 # ifdef HAVE_JWXYZ
   return f;
 # else /* !HAVE_JWXYZ */
+  if (! xlfd) xlfd = "<null>";
   if (f)
-    return f;
+    {
+# ifdef DEBUG
+      fprintf (stderr, "%s: loaded %s\n", progname, xlfd);
+# endif
+      return f;
+    }
   else
     {
-      Bool bold_p   = (!!strcasestr (xlfd, "-bold-"));
+      Bool bold_p   = (!!strcasestr (xlfd, "-bold-") ||
+                       !!strcasestr (xlfd, "-ocr"));
       Bool italic_p = (!!strcasestr (xlfd, "-i-") ||
                        !!strcasestr (xlfd, "-o-"));
       Bool fixed_p  = (!!strcasestr (xlfd, "courier") ||
@@ -59,6 +68,10 @@ load_font_retry_1 (Display *dpy, int screen, const char *xlfd, Bool xft_p)
                        !!strcasestr (xlfd, "-c-"));
       int size = 0;
 
+# ifdef DEBUG
+      fprintf (stderr, "%s: failed %s\n", progname, xlfd);
+# endif
+
       if (!strcmp (xlfd, "vga"))  /* BSOD uses this: it has no XLFD name. */
         fixed_p = True, size = 120;
 
@@ -90,7 +103,7 @@ load_font_retry_1 (Display *dpy, int screen, const char *xlfd, Bool xft_p)
           fprintf (stderr, "%s: unloadable, unparsable font: \"%s\"\n",
                    progname, xlfd);
           xlfd = "fixed";
-          return LOADFONT();
+          return LOADFONT(xlfd);
         }
       else
         {
@@ -145,13 +158,17 @@ load_font_retry_1 (Display *dpy, int screen, const char *xlfd, Bool xft_p)
                                  spacings[e],
                                  "*",                  /* average width */
                                  charsets[a]);
-                        /* fprintf(stderr, "%s: trying %s\n", progname, buf);*/
-                        f = LOADFONT();
+# ifdef DEBUG
+                        fprintf(stderr, "%s: trying %s\n", progname, buf);
+# endif
+                        f = LOADFONT(buf);
                         if (f)
                           {
-                            /* fprintf (stderr,
+# ifdef DEBUG
+                            fprintf (stderr,
                                      "%s: substituted \"%s\" for \"%s\"\n",
-                                     progname, buf, xlfd); */
+                                     progname, buf, xlfd);
+# endif
                             return f;
                           }
                       }
@@ -159,7 +176,7 @@ load_font_retry_1 (Display *dpy, int screen, const char *xlfd, Bool xft_p)
           fprintf (stderr, "%s: unable to find any alternatives to \"%s\"\n",
                    progname, xlfd);
           xlfd = "fixed";
-          return LOADFONT();
+          return LOADFONT(xlfd);
         }
     }
 # endif /* !HAVE_JWXYZ */
index c321487ed170bf6660632e81986edb342d09c746..4d0d89162093d7abec2b4a9e85a5270c72390992 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 2012-2016 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 2012-2018 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -311,11 +311,13 @@ textclient_strip_html (const char *html)
   int comment = 0;
   int white = 0;
   int nl = 0;
-  char *ret = (char *) malloc ((strlen(html) * 4) + 1);  // room for UTF8
+  int L = strlen(html);
+  char *ret = (char *) malloc ((L * 4) + 1);  // room for UTF8
   char *out = ret;
   *out = 0;
 
   for (const char *in = html; *in; in++) {
+    if (in >= html + L) abort();
     if (comment) {
       if (!strncmp (in, "-->", 3)) {
         comment = 0;
@@ -339,7 +341,7 @@ textclient_strip_html (const char *html)
         white = 1;
       }
     } else if (*in == ' ' || *in == '\t' || *in == '\r' || *in == '\n') {
-      if (!white && out != html)
+      if (!white && out != ret)
         *out++ = ' ';
       white = 1;
     } else {
@@ -552,7 +554,8 @@ strip_wiki (char *text)
 static char *
 textclient_strip_rss (const char *rss)
 {
-  char *ret = malloc (strlen(rss) * 4 + 1);  // room for UTF8
+  int L = strlen(rss);
+  char *ret = malloc (L * 4 + 1);  // room for UTF8
   char *out = ret;
   const char *a = 0, *b = 0, *c = 0, *d = 0, *t = 0;
   int head = 1;
@@ -561,6 +564,7 @@ textclient_strip_rss (const char *rss)
 
   *out = 0;
   for (const char *in = rss; *in; in++) {
+    if (in >= rss + L) abort();
     if (*in == '<') {
       if (!strncasecmp (in, "<item", 5) ||     // New item, dump.
           !strncasecmp (in, "<entry", 6)) {
@@ -592,6 +596,8 @@ textclient_strip_rss (const char *rss)
           out += strlen (out);
         }
 
+        if (done) break;
+
       } else if (head) {   // still before first <item>
         ;
       } else if (!strncasecmp (in, "<title", 6)) {
index 5ad7580a6593db592278d141cffb5bb308596cd6..56ad79a682ae5e983647d2811d5a9e3acc734d3b 100644 (file)
@@ -1,2 +1,2 @@
 static const char screensaver_id[] =
-       "@(#)xscreensaver 5.40 (12-Aug-2018), by Jamie Zawinski (jwz@jwz.org)";
+       "@(#)xscreensaver 5.41 (26-Dec-2018), by Jamie Zawinski (jwz@jwz.org)";
index 711aadd35a90ebaaa399edc11c9c3604b984fce9..9a75cdf3f5998bd15c2b45543daa63f07d204c81 100644 (file)
 #undef drand48
 #undef srandom
 #undef srand
-#undef srand48
 #undef frand
+#undef sranddev
+#undef srandomdev
+#undef arc4random
+#undef arc4random_addrandom
+#undef arc4random_buf
+#undef arc4random_stir
+#undef arc4random_uniform
+#undef erand48
+#undef jrand48
+#undef lcong48
+#undef lrand48
+#undef mrand48
+#undef nrand48
+#undef seed48
+#undef srand48
+#undef rand_r
 #undef RAND_MAX
 
 #ifdef VMS
@@ -47,8 +62,23 @@ extern void ya_rand_init (unsigned int);
 #define drand48       __ERROR_use_frand_not_drand48_in_xscreensaver__
 #define srandom       __ERROR_do_not_call_srandom_in_xscreensaver__
 #define srand         __ERROR_do_not_call_srand_in_xscreensaver__
-#define srand48       __ERROR_do_not_call_srand48_in_xscreensaver__
+#define sranddev      __ERROR_do_not_call_sranddev_in_xscreensaver__
 #define ya_rand_init  __ERROR_do_not_call_ya_rand_init_in_xscreensaver__
+#define srandomdev    __ERROR_do_not_call_srandomdev_in_xscreensaver__
+#define arc4random    __ERROR_do_not_call_arc4random_in_xscreensaver__
+#define arc4random_addrandom __ERROR_do_not_call_arc4random_in_xscreensaver__
+#define arc4random_buf       __ERROR_do_not_call_arc4random_in_xscreensaver__
+#define arc4random_stir      __ERROR_do_not_call_arc4random_in_xscreensaver__
+#define arc4random_uniform   __ERROR_do_not_call_arc4random_in_xscreensaver__
+#define erand48    __ERROR_do_not_call_erand48_in_xscreensaver__
+#define jrand48    __ERROR_do_not_call_jrand48_in_xscreensaver__
+#define lcong48    __ERROR_do_not_call_lcong48_in_xscreensaver__
+#define lrand48    __ERROR_do_not_call_lrand48_in_xscreensaver__
+#define mrand48    __ERROR_do_not_call_mrand48_in_xscreensaver__
+#define nrand48    __ERROR_do_not_call_nrand48_in_xscreensaver__
+#define seed48     __ERROR_do_not_call_seed48_in_xscreensaver__
+#define srand48    __ERROR_do_not_call_srand48_in_xscreensaver__
+#define rand_r     __ERROR_do_not_call_rand_r_in_xscreensaver__
 
 
 #if defined (__GNUC__) && (__GNUC__ >= 2)
index 1e14f513f9f4d93a8605e27393a8a921908aee82..3ad4f40da232343d56c738b0fb1127967a18c66f 100644 (file)
@@ -1,5 +1,5 @@
 %define        name xscreensaver
-%define        version 5.40
+%define        version 5.41
 
 Summary:       X screen saver and locker
 Name:          %{name}