Эх сурвалжийг харах

bump buildroot to 2020.02
bump toolchain to recent (gcc 9.2, ....)
add GfA plugins from source

Reinhard Russinger 5 жил өмнө
parent
commit
9e64ff90e9
100 өөрчлөгдсөн 7106 нэмэгдсэн , 13217 устгасан
  1. 4 5
      Config.in
  2. 21 0
      Make-bb-kernel_Qt5.12.sh
  3. 0 41
      Make-bb-kernel_Qt5.7.sh
  4. 0 41
      Make-bb-kernel_noRT_Qt5.7.sh
  5. 1 1
      board/GfA/Display001/BUILD
  6. 1691 1004
      board/GfA/Display001/Display001_4.19.y_ti_defconfig
  7. 9 8
      board/GfA/Display001/Display001_4.4.104_defconfig
  8. 0 2967
      board/GfA/Display001/linux_4.4.145_bone23/linux-001-Bootlogo-GfA.patch
  9. 0 17
      board/GfA/Display001/linux_4.4.145_bone23/linux-002-disa_pru_no_cild_msg.patch
  10. 0 1015
      board/GfA/Display001/linux_4.4.145_bone23/linux-004-egalax_i2c_touchcontroller.patch
  11. 0 828
      board/GfA/Display001/linux_4.4.145_bone23/linux-005-edt-ft5x06.patch
  12. 0 62
      board/GfA/Display001/linux_4.4.145_bone23/linux-006-RS485_udelay_before_tx.patch
  13. 0 13
      board/GfA/Display001/linux_4.4.145_bone23/linux-007-am33xx.dtsi_add_operating_points.patch
  14. 0 134
      board/GfA/Display001/linux_4.4.145_bone23/linux-020-edt-touch-make-gain-offset-threshold-writeable.patch
  15. 0 18
      board/GfA/Display001/linux_4.4.145_bone23/linux-021-remove_endless_loop_in_rtc-ds1307_driver.patch
  16. 0 108
      board/GfA/Display001/linux_4.4.145_bone23/linux-022-add-dts-flags-to-atmel-mxt-touch.patch
  17. 0 47
      board/GfA/Display001/linux_4.4.145_bone23/linux-023-edt-ft5x06-shared-irq.disabled__patch
  18. 0 65
      board/GfA/Display001/linux_4.4.145_bone23/linux-024-edt-ft5x06-fix-report-rate-for-M09.patch
  19. 0 20
      board/GfA/Display001/linux_4.4.145_bone23/linux-025-edt-ft5x06-fix-M9-M12-registercount-on-write.patch
  20. 0 39
      board/GfA/Display001/linux_4.4.145_bone23/linux-026-gpio-pca953x-sitara-i2c-quirks.patch
  21. 0 28
      board/GfA/Display001/linux_4.4.145_bone23/linux-027-input_events_add_IN1-IN4.patch
  22. 0 3583
      board/GfA/Display001/linux_4.4.145_bone23/linux-030-atmel_mxt_ts_backport.patch
  23. 13 0
      board/GfA/Display001/linux_4.4.94_rt19/linux-031-fix-gcc-8.patch
  24. 9 0
      board/GfA/Display001/post-build_4.4.sh
  25. 4 1
      board/GfA/Display001/rootfs/etc/profile
  26. 0 1
      board/GfA/Display001/rootfs/etc/ssh/sshd_config
  27. BIN
      board/GfA/Display001/rootfs/opt/GfA-Browser/GfA-browser
  28. 0 9
      board/GfA/Display001/rootfs/root/README.txt
  29. 3 1
      board/GfA/Display001/rootfs/root/startbrowser.sh
  30. BIN
      board/GfA/Display001/rootfs/usr/sbin/fbvncserver
  31. BIN
      board/GfA/Display001/rootfs/usr/sbin/vncpasswd
  32. 45 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/index.vnc
  33. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/VncViewer.jar
  34. 141 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/javaviewer.pseudo_proxy.patch
  35. 382 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/Makefile
  36. 2 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/Makefile.am
  37. 382 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/Makefile.in
  38. 338 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/README
  39. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/SignedUltraViewerSSL.jar
  40. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/SignedVncViewer.jar
  41. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/UltraViewerSSL.jar
  42. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/VncViewer.jar
  43. 26 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/index.vnc
  44. 65 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/onetimekey
  45. 73 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/proxy.vnc
  46. 3676 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/ss_vncviewer
  47. 28 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/ultra.vnc
  48. 28 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/ultraproxy.vnc
  49. 28 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/ultrasigned.vnc
  50. 35 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/LICENSE.txt
  51. 102 0
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/README.md
  52. 0 56
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/error-handler.js
  53. 0 92
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/alt.svg
  54. 0 106
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/clipboard.svg
  55. 0 96
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/connect.svg
  56. 0 96
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/ctrl.svg
  57. 0 100
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/ctrlaltdel.svg
  58. 0 94
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/disconnect.svg
  59. 0 71
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/drag.svg
  60. 0 81
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/error.svg
  61. 0 92
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/esc.svg
  62. 0 69
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/expander.svg
  63. 0 93
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/fullscreen.svg
  64. 0 82
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/handle.svg
  65. 0 172
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/handle_bg.svg
  66. 0 42
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/Makefile
  67. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-120x120.png
  68. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-144x144.png
  69. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-152x152.png
  70. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-16x16.png
  71. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-192x192.png
  72. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-24x24.png
  73. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-32x32.png
  74. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-48x48.png
  75. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-60x60.png
  76. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-64x64.png
  77. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-72x72.png
  78. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-76x76.png
  79. BIN
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-96x96.png
  80. 0 163
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-icon-sm.svg
  81. 0 163
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-icon.svg
  82. 0 81
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/info.svg
  83. 0 75
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/keyboard.svg
  84. 0 92
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/mouse_left.svg
  85. 0 92
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/mouse_middle.svg
  86. 0 92
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/mouse_none.svg
  87. 0 92
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/mouse_right.svg
  88. 0 87
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/power.svg
  89. 0 76
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/settings.svg
  90. 0 86
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/tab.svg
  91. 0 90
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/toggleextrakeys.svg
  92. 0 81
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/warning.svg
  93. 0 69
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/de.json
  94. 0 69
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/el.json
  95. 0 68
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/es.json
  96. 0 68
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/nl.json
  97. 0 69
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/pl.json
  98. 0 68
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/sv.json
  99. 0 69
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/tr.json
  100. 0 69
      board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/zh.json

+ 4 - 5
Config.in

@@ -1,10 +1,9 @@
-source "$BR2_EXTERNAL_GFA_Display001_PATH/package/wt/Config.in"
-source "$BR2_EXTERNAL_GFA_Display001_PATH/package/network_interfaces_script/Config.in"
-source "$BR2_EXTERNAL_GFA_Display001_PATH/package/gfa_addons/Config.in"
+source "$BR2_EXTERNAL_GFA_Display001_PATH/package/applicationlauncher/Config.in"
+source "$BR2_EXTERNAL_GFA_Display001_PATH/package/gfasqlplugin/Config.in"
+source "$BR2_EXTERNAL_GFA_Display001_PATH/package/qtfreevirtualkeyboard/Config.in"
+source "$BR2_EXTERNAL_GFA_Display001_PATH/package/gfabrowser/Config.in"
 source "$BR2_EXTERNAL_GFA_Display001_PATH/package/libgfaipc/Config.in"
 source "$BR2_EXTERNAL_GFA_Display001_PATH/package/libgfaipc/Config.in"
 source "$BR2_EXTERNAL_GFA_Display001_PATH/package/libgfatimer/Config.in"
 source "$BR2_EXTERNAL_GFA_Display001_PATH/package/libgfatimer/Config.in"
-source "$BR2_EXTERNAL_GFA_Display001_PATH/package/qmlplugins/Config.in"
-source "$BR2_EXTERNAL_GFA_Display001_PATH/package/python-ufw/Config.in"
 source "$BR2_EXTERNAL_GFA_Display001_PATH/package/libulfius/Config.in"
 source "$BR2_EXTERNAL_GFA_Display001_PATH/package/libulfius/Config.in"
 source "$BR2_EXTERNAL_GFA_Display001_PATH/package/libyder/Config.in"
 source "$BR2_EXTERNAL_GFA_Display001_PATH/package/libyder/Config.in"
 source "$BR2_EXTERNAL_GFA_Display001_PATH/package/liborcania/Config.in"
 source "$BR2_EXTERNAL_GFA_Display001_PATH/package/liborcania/Config.in"

+ 21 - 0
Make-bb-kernel_Qt5.12.sh

@@ -0,0 +1,21 @@
+#!/bin/bash
+GFAWRKDIR=`pwd`
+cd ..
+rm -rf buildroot
+git clone https://gogs.reru.org/PUBLIC_REPOS/buildroot.git ./buildroot
+cd buildroot
+##git checkout 160f0a033ba4edf2f7efe5fed82426acd3b34b70 -b gfawrk
+git checkout -b gfawrk
+for i in ../GfA/patches/*.patch
+do
+	echo "==Apply patch : <$i> =="
+	patch -p1 < $i
+done
+
+chmod a+x *.sh
+cp ../GfA/configs/* ./configs
+git add .
+git commit -m "GfA wrk changes and setup"
+make BR2_EXTERNAL=../GfA Display001_4.4.104_rt21_Qt5.12_defconfig
+cd $GFAWRKDIR
+#------

+ 0 - 41
Make-bb-kernel_Qt5.7.sh

@@ -1,41 +0,0 @@
-#!/bin/bash
-#-- build kernelsources from RCN Repos
-#--
-##GFAWRKDIR=`pwd`
-##cd ..
-##rm -rf bb-kernel
-##git clone https://github.com/RobertCNelson/bb-kernel
-##cd bb-kernel
-##git checkout -b GfA 4.4.104-bone-rt-r21
-# -- patch kernelbuild
-##patch -p1 < ../GfA/build_kernel_44104rt.sh.patch
-#---------------------------------
-##./build_kernel.sh
-##cd $GFAWRKDIR
-##rm ~/buildroot_dl/GfAkernel57.tar.gz
-##rm GfAkernel57.tar.gz
-##tar -C ../bb-kernel/KERNEL --exclude=./.config --exclude=./.git  -czvf GfAkernel57.tar.gz ./
-#--
-#--
-#!/bin/bash
-GFAWRKDIR=`pwd`
-cd ..
-rm -rf buildroot57
-#git clone git://git.buildroot.net/buildroot ./buildroot57
-#git clone ssh://gogs@gogs.reru.org:2222/PUBLIC_REPOS/buildroot.git ./buildroot57
-git clone https://gogs.reru.org/PUBLIC_REPOS/buildroot.git ./buildroot57
-cd buildroot57
-git checkout 2016.11.3 -b gfawrk
-for i in ../GfA/patches/*.patch
-do
-	echo "==Apply patch : <$i> =="
-	patch -p1 < $i
-done
-
-chmod a+x *.sh
-cp ../GfA/configs/* ./configs
-git add .
-git commit -m "GfA wrk changes and setup"
-make BR2_EXTERNAL=../GfA Display001_4.4.104_rt21_Qt5.7_defconfig
-cd $GFAWRKDIR
-#------

+ 0 - 41
Make-bb-kernel_noRT_Qt5.7.sh

@@ -1,41 +0,0 @@
-#!/bin/bash
-#-- build kernelsources from RCN Repos
-#--
-##GFAWRKDIR=`pwd`
-##cd ..
-##rm -rf bb-kernel
-##git clone https://github.com/RobertCNelson/bb-kernel
-##cd bb-kernel
-##git checkout -b GfA 4.4.104-bone-rt-r21
-# -- patch kernelbuild
-##patch -p1 < ../GfA/build_kernel_44104rt.sh.patch
-#---------------------------------
-##./build_kernel.sh
-##cd $GFAWRKDIR
-##rm ~/buildroot_dl/GfAkernel57.tar.gz
-##rm GfAkernel57.tar.gz
-##tar -C ../bb-kernel/KERNEL --exclude=./.config --exclude=./.git  -czvf GfAkernel57.tar.gz ./
-#--
-#--
-#!/bin/bash
-GFAWRKDIR=`pwd`
-cd ..
-rm -rf buildroot57
-#git clone git://git.buildroot.net/buildroot ./buildroot57
-##git clone ssh://gogs@gogs.reru.org:2222/PUBLIC_REPOS/buildroot.git ./buildroot57
-git clone https://gogs.reru.org/PUBLIC_REPOS/buildroot.git ./buildroot57
-cd buildroot57
-git checkout 2016.11.3 -b gfawrk
-for i in ../GfA/patches/*.patch
-do
-	echo "==Apply patch : <$i> =="
-	patch -p1 < $i
-done
-
-chmod a+x *.sh
-cp ../GfA/configs/* ./configs
-git add .
-git commit -m "GfA wrk changes and setup"
-make BR2_EXTERNAL=../GfA Display001_4.4.145_bone23_Qt5.7_defconfig
-cd $GFAWRKDIR
-#------

+ 1 - 1
board/GfA/Display001/BUILD

@@ -1 +1 @@
-655
+656

+ 1691 - 1004
board/GfA/Display001/Display001_4.4.94_rt_defconfig → board/GfA/Display001/Display001_4.19.y_ti_defconfig

@@ -1,31 +1,15 @@
 #
 #
 # Automatically generated file; DO NOT EDIT.
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 4.4.94 Kernel Configuration
+# Linux/arm 4.19.59 Kernel Configuration
 #
 #
-CONFIG_ARM=y
-CONFIG_ARM_HAS_SG_CHAIN=y
-CONFIG_NEED_SG_DMA_LENGTH=y
-CONFIG_ARM_DMA_USE_IOMMU=y
-CONFIG_ARM_DMA_IOMMU_ALIGNMENT=8
-CONFIG_MIGHT_HAVE_PCI=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_HAVE_PROC_CPU=y
-CONFIG_STACKTRACE_SUPPORT=y
-CONFIG_HAVE_LATENCYTOP_SUPPORT=y
-CONFIG_LOCKDEP_SUPPORT=y
-CONFIG_TRACE_IRQFLAGS_SUPPORT=y
-CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-CONFIG_ARCH_HAS_BANDGAP=y
-CONFIG_FIX_EARLYCON_MEM=y
-CONFIG_GENERIC_HWEIGHT=y
-CONFIG_GENERIC_CALIBRATE_DELAY=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_ARCH_SUPPORTS_UPROBES=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_ARM_PATCH_PHYS_VIRT=y
-CONFIG_GENERIC_BUG=y
-CONFIG_PGTABLE_LEVELS=2
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Compiler: arm-buildroot-linux-gnueabihf-gcc.br_real (Buildroot 2019.11-git-01210-gce9ebf551b) 7.4.0
+#
+CONFIG_CC_IS_GCC=y
+CONFIG_GCC_VERSION=70400
+CONFIG_CLANG_VERSION=0
+CONFIG_CC_HAS_ASM_GOTO=y
 CONFIG_IRQ_WORK=y
 CONFIG_IRQ_WORK=y
 CONFIG_BUILDTIME_EXTABLE_SORT=y
 CONFIG_BUILDTIME_EXTABLE_SORT=y
 
 
@@ -34,10 +18,10 @@ CONFIG_BUILDTIME_EXTABLE_SORT=y
 #
 #
 CONFIG_BROKEN_ON_SMP=y
 CONFIG_BROKEN_ON_SMP=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
 CONFIG_INIT_ENV_ARG_LIMIT=32
-CONFIG_CROSS_COMPILE=""
 # CONFIG_COMPILE_TEST is not set
 # CONFIG_COMPILE_TEST is not set
-CONFIG_LOCALVERSION="-bone-rt-r19"
-# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_BUILD_SALT=""
 CONFIG_HAVE_KERNEL_GZIP=y
 CONFIG_HAVE_KERNEL_GZIP=y
 CONFIG_HAVE_KERNEL_LZMA=y
 CONFIG_HAVE_KERNEL_LZMA=y
 CONFIG_HAVE_KERNEL_XZ=y
 CONFIG_HAVE_KERNEL_XZ=y
@@ -55,7 +39,6 @@ CONFIG_SYSVIPC_SYSCTL=y
 CONFIG_POSIX_MQUEUE=y
 CONFIG_POSIX_MQUEUE=y
 CONFIG_POSIX_MQUEUE_SYSCTL=y
 CONFIG_POSIX_MQUEUE_SYSCTL=y
 CONFIG_CROSS_MEMORY_ATTACH=y
 CONFIG_CROSS_MEMORY_ATTACH=y
-CONFIG_FHANDLE=y
 # CONFIG_USELIB is not set
 # CONFIG_USELIB is not set
 CONFIG_AUDIT=y
 CONFIG_AUDIT=y
 CONFIG_HAVE_ARCH_AUDITSYSCALL=y
 CONFIG_HAVE_ARCH_AUDITSYSCALL=y
@@ -73,9 +56,11 @@ CONFIG_HARDIRQS_SW_RESEND=y
 CONFIG_GENERIC_IRQ_CHIP=y
 CONFIG_GENERIC_IRQ_CHIP=y
 CONFIG_IRQ_DOMAIN=y
 CONFIG_IRQ_DOMAIN=y
 CONFIG_HANDLE_DOMAIN_IRQ=y
 CONFIG_HANDLE_DOMAIN_IRQ=y
-# CONFIG_IRQ_DOMAIN_DEBUG is not set
 CONFIG_IRQ_FORCED_THREADING=y
 CONFIG_IRQ_FORCED_THREADING=y
 CONFIG_SPARSE_IRQ=y
 CONFIG_SPARSE_IRQ=y
+# CONFIG_GENERIC_IRQ_DEBUGFS is not set
+CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
+CONFIG_ARCH_CLOCKSOURCE_DATA=y
 CONFIG_GENERIC_TIME_VSYSCALL=y
 CONFIG_GENERIC_TIME_VSYSCALL=y
 CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_GENERIC_CLOCKEVENTS=y
 
 
@@ -83,11 +68,14 @@ CONFIG_GENERIC_CLOCKEVENTS=y
 # Timers subsystem
 # Timers subsystem
 #
 #
 CONFIG_TICK_ONESHOT=y
 CONFIG_TICK_ONESHOT=y
-CONFIG_NO_HZ_COMMON=y
-# CONFIG_HZ_PERIODIC is not set
-CONFIG_NO_HZ_IDLE=y
+CONFIG_HZ_PERIODIC=y
+# CONFIG_NO_HZ_IDLE is not set
 # CONFIG_NO_HZ is not set
 # CONFIG_NO_HZ is not set
 CONFIG_HIGH_RES_TIMERS=y
 CONFIG_HIGH_RES_TIMERS=y
+# CONFIG_PREEMPT_NONE is not set
+# CONFIG_PREEMPT_VOLUNTARY is not set
+CONFIG_PREEMPT=y
+CONFIG_PREEMPT_COUNT=y
 
 
 #
 #
 # CPU/Task time and stats accounting
 # CPU/Task time and stats accounting
@@ -108,53 +96,50 @@ CONFIG_TASK_IO_ACCOUNTING=y
 CONFIG_PREEMPT_RCU=y
 CONFIG_PREEMPT_RCU=y
 # CONFIG_RCU_EXPERT is not set
 # CONFIG_RCU_EXPERT is not set
 CONFIG_SRCU=y
 CONFIG_SRCU=y
-# CONFIG_TASKS_RCU is not set
+CONFIG_TREE_SRCU=y
+CONFIG_TASKS_RCU=y
 CONFIG_RCU_STALL_COMMON=y
 CONFIG_RCU_STALL_COMMON=y
-# CONFIG_TREE_RCU_TRACE is not set
-# CONFIG_RCU_EXPEDITE_BOOT is not set
+CONFIG_RCU_NEED_SEGCBLIST=y
 CONFIG_BUILD_BIN2C=y
 CONFIG_BUILD_BIN2C=y
 CONFIG_IKCONFIG=y
 CONFIG_IKCONFIG=y
 CONFIG_IKCONFIG_PROC=y
 CONFIG_IKCONFIG_PROC=y
 CONFIG_LOG_BUF_SHIFT=18
 CONFIG_LOG_BUF_SHIFT=18
+CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13
 CONFIG_GENERIC_SCHED_CLOCK=y
 CONFIG_GENERIC_SCHED_CLOCK=y
 CONFIG_CGROUPS=y
 CONFIG_CGROUPS=y
-# CONFIG_CGROUP_DEBUG is not set
-CONFIG_CGROUP_FREEZER=y
-CONFIG_CGROUP_PIDS=y
-CONFIG_CGROUP_DEVICE=y
-CONFIG_CPUSETS=y
-CONFIG_PROC_PID_CPUSET=y
-CONFIG_CGROUP_CPUACCT=y
 CONFIG_PAGE_COUNTER=y
 CONFIG_PAGE_COUNTER=y
 CONFIG_MEMCG=y
 CONFIG_MEMCG=y
 CONFIG_MEMCG_SWAP=y
 CONFIG_MEMCG_SWAP=y
 CONFIG_MEMCG_SWAP_ENABLED=y
 CONFIG_MEMCG_SWAP_ENABLED=y
 CONFIG_MEMCG_KMEM=y
 CONFIG_MEMCG_KMEM=y
-CONFIG_CGROUP_PERF=y
-CONFIG_CGROUP_SCHED=y
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_CFS_BANDWIDTH=y
 CONFIG_BLK_CGROUP=y
 CONFIG_BLK_CGROUP=y
 # CONFIG_DEBUG_BLK_CGROUP is not set
 # CONFIG_DEBUG_BLK_CGROUP is not set
 CONFIG_CGROUP_WRITEBACK=y
 CONFIG_CGROUP_WRITEBACK=y
-CONFIG_CHECKPOINT_RESTORE=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_CFS_BANDWIDTH=y
+# CONFIG_RT_GROUP_SCHED is not set
+CONFIG_CGROUP_PIDS=y
+# CONFIG_CGROUP_RDMA is not set
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_CGROUP_PERF=y
+# CONFIG_CGROUP_BPF is not set
+# CONFIG_CGROUP_DEBUG is not set
+CONFIG_SOCK_CGROUP_DATA=y
 CONFIG_NAMESPACES=y
 CONFIG_NAMESPACES=y
 CONFIG_UTS_NS=y
 CONFIG_UTS_NS=y
 CONFIG_IPC_NS=y
 CONFIG_IPC_NS=y
 CONFIG_USER_NS=y
 CONFIG_USER_NS=y
 CONFIG_PID_NS=y
 CONFIG_PID_NS=y
 CONFIG_NET_NS=y
 CONFIG_NET_NS=y
+CONFIG_CHECKPOINT_RESTORE=y
 CONFIG_SCHED_AUTOGROUP=y
 CONFIG_SCHED_AUTOGROUP=y
 # CONFIG_SYSFS_DEPRECATED is not set
 # CONFIG_SYSFS_DEPRECATED is not set
 CONFIG_RELAY=y
 CONFIG_RELAY=y
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_INITRAMFS_SOURCE=""
-CONFIG_RD_GZIP=y
-CONFIG_RD_BZIP2=y
-CONFIG_RD_LZMA=y
-CONFIG_RD_XZ=y
-CONFIG_RD_LZO=y
-CONFIG_RD_LZ4=y
+# CONFIG_BLK_DEV_INITRD is not set
+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
 CONFIG_ANON_INODES=y
@@ -166,26 +151,36 @@ CONFIG_MULTIUSER=y
 # CONFIG_SGETMASK_SYSCALL is not set
 # CONFIG_SGETMASK_SYSCALL is not set
 CONFIG_SYSFS_SYSCALL=y
 CONFIG_SYSFS_SYSCALL=y
 CONFIG_SYSCTL_SYSCALL=y
 CONFIG_SYSCTL_SYSCALL=y
-CONFIG_KALLSYMS=y
-CONFIG_KALLSYMS_ALL=y
+CONFIG_FHANDLE=y
+CONFIG_POSIX_TIMERS=y
 CONFIG_PRINTK=y
 CONFIG_PRINTK=y
+CONFIG_PRINTK_NMI=y
 CONFIG_BUG=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
 CONFIG_ELF_CORE=y
 CONFIG_BASE_FULL=y
 CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_FUTEX=y
+CONFIG_FUTEX_PI=y
 CONFIG_EPOLL=y
 CONFIG_EPOLL=y
 CONFIG_SIGNALFD=y
 CONFIG_SIGNALFD=y
 CONFIG_TIMERFD=y
 CONFIG_TIMERFD=y
 CONFIG_EVENTFD=y
 CONFIG_EVENTFD=y
-CONFIG_BPF_SYSCALL=y
 CONFIG_SHMEM=y
 CONFIG_SHMEM=y
 CONFIG_AIO=y
 CONFIG_AIO=y
 CONFIG_ADVISE_SYSCALLS=y
 CONFIG_ADVISE_SYSCALLS=y
-# CONFIG_USERFAULTFD is not set
 CONFIG_MEMBARRIER=y
 CONFIG_MEMBARRIER=y
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_KALLSYMS_BASE_RELATIVE=y
+CONFIG_BPF_SYSCALL=y
+# CONFIG_BPF_JIT_ALWAYS_ON is not set
+# CONFIG_USERFAULTFD is not set
+CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
+CONFIG_RSEQ=y
+# CONFIG_DEBUG_RSEQ is not set
 CONFIG_EMBEDDED=y
 CONFIG_EMBEDDED=y
 CONFIG_HAVE_PERF_EVENTS=y
 CONFIG_HAVE_PERF_EVENTS=y
 CONFIG_PERF_USE_VMALLOC=y
 CONFIG_PERF_USE_VMALLOC=y
+# CONFIG_PC104 is not set
 
 
 #
 #
 # Kernel Performance Events And Counters
 # Kernel Performance Events And Counters
@@ -194,123 +189,44 @@ CONFIG_PERF_EVENTS=y
 # CONFIG_DEBUG_PERF_USE_VMALLOC is not set
 # CONFIG_DEBUG_PERF_USE_VMALLOC is not set
 CONFIG_VM_EVENT_COUNTERS=y
 CONFIG_VM_EVENT_COUNTERS=y
 CONFIG_SLUB_DEBUG=y
 CONFIG_SLUB_DEBUG=y
+# CONFIG_SLUB_MEMCG_SYSFS_ON is not set
 # CONFIG_COMPAT_BRK is not set
 # CONFIG_COMPAT_BRK is not set
+# CONFIG_SLAB is not set
 CONFIG_SLUB=y
 CONFIG_SLUB=y
-# CONFIG_SYSTEM_DATA_VERIFICATION is not set
+# CONFIG_SLOB is not set
+CONFIG_SLAB_MERGE_DEFAULT=y
+# CONFIG_SLAB_FREELIST_RANDOM is not set
+# CONFIG_SLAB_FREELIST_HARDENED is not set
+CONFIG_SYSTEM_DATA_VERIFICATION=y
 CONFIG_PROFILING=y
 CONFIG_PROFILING=y
 CONFIG_TRACEPOINTS=y
 CONFIG_TRACEPOINTS=y
-CONFIG_KEXEC_CORE=y
-CONFIG_HAVE_OPROFILE=y
-CONFIG_KPROBES=y
-CONFIG_UPROBES=y
-# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
-CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
-CONFIG_ARCH_USE_BUILTIN_BSWAP=y
-CONFIG_KRETPROBES=y
-CONFIG_HAVE_KPROBES=y
-CONFIG_HAVE_KRETPROBES=y
-CONFIG_HAVE_ARCH_TRACEHOOK=y
-CONFIG_HAVE_DMA_ATTRS=y
-CONFIG_HAVE_DMA_CONTIGUOUS=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GENERIC_IDLE_POLL_SETUP=y
-CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
-CONFIG_HAVE_CLK=y
-CONFIG_HAVE_DMA_API_DEBUG=y
-CONFIG_HAVE_HW_BREAKPOINT=y
-CONFIG_HAVE_PERF_REGS=y
-CONFIG_HAVE_PERF_USER_STACK_DUMP=y
-CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
-CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
-CONFIG_SECCOMP_FILTER=y
-CONFIG_HAVE_CC_STACKPROTECTOR=y
-CONFIG_CC_STACKPROTECTOR=y
-# CONFIG_CC_STACKPROTECTOR_NONE is not set
-# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
-CONFIG_CC_STACKPROTECTOR_STRONG=y
-CONFIG_HAVE_CONTEXT_TRACKING=y
-CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
-CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
-CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
-CONFIG_MODULES_USE_ELF_REL=y
-CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_OLD_SIGSUSPEND3=y
-CONFIG_OLD_SIGACTION=y
-
-#
-# GCOV-based kernel profiling
-#
-# CONFIG_GCOV_KERNEL is not set
-CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_SLABINFO=y
-CONFIG_RT_MUTEXES=y
-CONFIG_BASE_SMALL=0
-CONFIG_MODULES=y
-CONFIG_MODULE_FORCE_LOAD=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_MODVERSIONS=y
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-# CONFIG_MODULE_SIG is not set
-# CONFIG_MODULE_COMPRESS is not set
-CONFIG_MODULES_TREE_LOOKUP=y
-CONFIG_BLOCK=y
-CONFIG_LBDAF=y
-CONFIG_BLK_DEV_BSG=y
-CONFIG_BLK_DEV_BSGLIB=y
-CONFIG_BLK_DEV_INTEGRITY=y
-CONFIG_BLK_DEV_THROTTLING=y
-# CONFIG_BLK_CMDLINE_PARSER is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_AIX_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-CONFIG_KARMA_PARTITION=y
-CONFIG_EFI_PARTITION=y
-# CONFIG_SYSV68_PARTITION is not set
-# CONFIG_CMDLINE_PARTITION is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-CONFIG_IOSCHED_DEADLINE=y
-CONFIG_IOSCHED_CFQ=y
-CONFIG_CFQ_GROUP_IOSCHED=y
-# CONFIG_DEFAULT_DEADLINE is not set
-CONFIG_DEFAULT_CFQ=y
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="cfq"
-CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
-CONFIG_FREEZER=y
+CONFIG_ARM=y
+CONFIG_ARM_HAS_SG_CHAIN=y
+CONFIG_ARM_DMA_USE_IOMMU=y
+CONFIG_ARM_DMA_IOMMU_ALIGNMENT=8
+CONFIG_MIGHT_HAVE_PCI=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_HAVE_PROC_CPU=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_ARCH_HAS_BANDGAP=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_SUPPORTS_UPROBES=y
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+CONFIG_GENERIC_BUG=y
+CONFIG_PGTABLE_LEVELS=2
 
 
 #
 #
 # System Type
 # System Type
 #
 #
 CONFIG_MMU=y
 CONFIG_MMU=y
+CONFIG_ARCH_MMAP_RND_BITS_MIN=8
+CONFIG_ARCH_MMAP_RND_BITS_MAX=16
 CONFIG_ARCH_MULTIPLATFORM=y
 CONFIG_ARCH_MULTIPLATFORM=y
-# CONFIG_ARCH_REALVIEW is not set
-# CONFIG_ARCH_VERSATILE is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_GEMINI is not set
 # CONFIG_ARCH_EBSA110 is not set
 # CONFIG_ARCH_EBSA110 is not set
 # CONFIG_ARCH_EP93XX is not set
 # CONFIG_ARCH_EP93XX is not set
 # CONFIG_ARCH_FOOTBRIDGE is not set
 # CONFIG_ARCH_FOOTBRIDGE is not set
@@ -320,9 +236,6 @@ CONFIG_ARCH_MULTIPLATFORM=y
 # CONFIG_ARCH_IOP33X is not set
 # CONFIG_ARCH_IOP33X is not set
 # CONFIG_ARCH_IXP4XX is not set
 # CONFIG_ARCH_IXP4XX is not set
 # CONFIG_ARCH_DOVE is not set
 # CONFIG_ARCH_DOVE is not set
-# CONFIG_ARCH_MV78XX0 is not set
-# CONFIG_ARCH_ORION5X is not set
-# CONFIG_ARCH_MMP is not set
 # CONFIG_ARCH_KS8695 is not set
 # CONFIG_ARCH_KS8695 is not set
 # CONFIG_ARCH_W90X900 is not set
 # CONFIG_ARCH_W90X900 is not set
 # CONFIG_ARCH_LPC32XX is not set
 # CONFIG_ARCH_LPC32XX is not set
@@ -330,7 +243,6 @@ CONFIG_ARCH_MULTIPLATFORM=y
 # CONFIG_ARCH_RPC is not set
 # CONFIG_ARCH_RPC is not set
 # CONFIG_ARCH_SA1100 is not set
 # CONFIG_ARCH_SA1100 is not set
 # CONFIG_ARCH_S3C24XX is not set
 # CONFIG_ARCH_S3C24XX is not set
-# CONFIG_ARCH_S3C64XX is not set
 # CONFIG_ARCH_DAVINCI is not set
 # CONFIG_ARCH_DAVINCI is not set
 # CONFIG_ARCH_OMAP1 is not set
 # CONFIG_ARCH_OMAP1 is not set
 
 
@@ -344,20 +256,24 @@ CONFIG_ARCH_MULTIPLATFORM=y
 # CONFIG_ARCH_MULTI_V6 is not set
 # CONFIG_ARCH_MULTI_V6 is not set
 CONFIG_ARCH_MULTI_V7=y
 CONFIG_ARCH_MULTI_V7=y
 CONFIG_ARCH_MULTI_V6_V7=y
 CONFIG_ARCH_MULTI_V6_V7=y
-# CONFIG_ARCH_MULTI_CPU_AUTO is not set
 # CONFIG_ARCH_VIRT is not set
 # CONFIG_ARCH_VIRT is not set
-# CONFIG_ARCH_MVEBU is not set
+# CONFIG_ARCH_ACTIONS is not set
 # CONFIG_ARCH_ALPINE is not set
 # CONFIG_ARCH_ALPINE is not set
+# CONFIG_ARCH_ARTPEC is not set
 # CONFIG_ARCH_AT91 is not set
 # CONFIG_ARCH_AT91 is not set
 # CONFIG_ARCH_BCM is not set
 # CONFIG_ARCH_BCM is not set
 # CONFIG_ARCH_BERLIN is not set
 # CONFIG_ARCH_BERLIN is not set
 # CONFIG_ARCH_DIGICOLOR is not set
 # CONFIG_ARCH_DIGICOLOR is not set
+# CONFIG_ARCH_EXYNOS is not set
 # CONFIG_ARCH_HIGHBANK is not set
 # CONFIG_ARCH_HIGHBANK is not set
 # CONFIG_ARCH_HISI is not set
 # CONFIG_ARCH_HISI is not set
-# CONFIG_ARCH_KEYSTONE is not set
-# CONFIG_ARCH_MESON is not set
 # CONFIG_ARCH_MXC is not set
 # CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_KEYSTONE is not set
 # CONFIG_ARCH_MEDIATEK is not set
 # CONFIG_ARCH_MEDIATEK is not set
+# CONFIG_ARCH_MESON is not set
+# CONFIG_ARCH_MMP is not set
+# CONFIG_ARCH_MVEBU is not set
+# CONFIG_ARCH_NPCM is not set
 CONFIG_ARCH_OMAP=y
 CONFIG_ARCH_OMAP=y
 
 
 #
 #
@@ -368,12 +284,7 @@ CONFIG_ARCH_OMAP=y
 # OMAP Feature Selections
 # OMAP Feature Selections
 #
 #
 CONFIG_OMAP_RESET_CLOCKS=y
 CONFIG_OMAP_RESET_CLOCKS=y
-CONFIG_OMAP_MUX=y
-CONFIG_OMAP_MUX_DEBUG=y
-CONFIG_OMAP_MUX_WARNINGS=y
 CONFIG_OMAP_32K_TIMER=y
 CONFIG_OMAP_32K_TIMER=y
-CONFIG_OMAP_DM_TIMER=y
-CONFIG_OMAP_PM_NOOP=y
 CONFIG_MACH_OMAP_GENERIC=y
 CONFIG_MACH_OMAP_GENERIC=y
 
 
 #
 #
@@ -396,16 +307,18 @@ CONFIG_SOC_HAS_OMAP2_SDRC=y
 #
 #
 # OMAP Legacy Platform Data Board Type
 # OMAP Legacy Platform Data Board Type
 #
 #
+# CONFIG_ARCH_SIRF is not set
 # CONFIG_ARCH_QCOM is not set
 # CONFIG_ARCH_QCOM is not set
+# CONFIG_ARCH_REALVIEW is not set
 # CONFIG_ARCH_ROCKCHIP is not set
 # CONFIG_ARCH_ROCKCHIP is not set
+# CONFIG_ARCH_S5PV210 is not set
+# CONFIG_ARCH_RENESAS is not set
 # CONFIG_ARCH_SOCFPGA is not set
 # CONFIG_ARCH_SOCFPGA is not set
 # CONFIG_PLAT_SPEAR is not set
 # CONFIG_PLAT_SPEAR is not set
 # CONFIG_ARCH_STI is not set
 # CONFIG_ARCH_STI is not set
-# CONFIG_ARCH_S5PV210 is not set
-# CONFIG_ARCH_EXYNOS is not set
-# CONFIG_ARCH_SHMOBILE_MULTI is not set
+# CONFIG_ARCH_STM32 is not set
 # CONFIG_ARCH_SUNXI is not set
 # CONFIG_ARCH_SUNXI is not set
-# CONFIG_ARCH_SIRF is not set
+# CONFIG_ARCH_TANGO is not set
 # CONFIG_ARCH_TEGRA is not set
 # CONFIG_ARCH_TEGRA is not set
 # CONFIG_ARCH_UNIPHIER is not set
 # CONFIG_ARCH_UNIPHIER is not set
 # CONFIG_ARCH_U8500 is not set
 # CONFIG_ARCH_U8500 is not set
@@ -418,6 +331,7 @@ CONFIG_SOC_HAS_OMAP2_SDRC=y
 # Processor Type
 # Processor Type
 #
 #
 CONFIG_CPU_V7=y
 CONFIG_CPU_V7=y
+CONFIG_CPU_THUMB_CAPABLE=y
 CONFIG_CPU_32v6K=y
 CONFIG_CPU_32v6K=y
 CONFIG_CPU_32v7=y
 CONFIG_CPU_32v7=y
 CONFIG_CPU_ABRT_EV7=y
 CONFIG_CPU_ABRT_EV7=y
@@ -434,7 +348,6 @@ CONFIG_CPU_CP15_MMU=y
 # Processor Features
 # Processor Features
 #
 #
 # CONFIG_ARM_LPAE is not set
 # CONFIG_ARM_LPAE is not set
-# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
 CONFIG_ARM_THUMB=y
 CONFIG_ARM_THUMB=y
 CONFIG_ARM_THUMBEE=y
 CONFIG_ARM_THUMBEE=y
 CONFIG_ARM_VIRT_EXT=y
 CONFIG_ARM_VIRT_EXT=y
@@ -442,12 +355,15 @@ CONFIG_SWP_EMULATE=y
 # CONFIG_CPU_ICACHE_DISABLE is not set
 # CONFIG_CPU_ICACHE_DISABLE is not set
 # CONFIG_CPU_DCACHE_DISABLE is not set
 # CONFIG_CPU_DCACHE_DISABLE is not set
 # CONFIG_CPU_BPREDICT_DISABLE is not set
 # CONFIG_CPU_BPREDICT_DISABLE is not set
+CONFIG_CPU_SPECTRE=y
+CONFIG_HARDEN_BRANCH_PREDICTOR=y
 CONFIG_KUSER_HELPERS=y
 CONFIG_KUSER_HELPERS=y
 CONFIG_VDSO=y
 CONFIG_VDSO=y
 CONFIG_OUTER_CACHE=y
 CONFIG_OUTER_CACHE=y
 CONFIG_OUTER_CACHE_SYNC=y
 CONFIG_OUTER_CACHE_SYNC=y
 CONFIG_MIGHT_HAVE_CACHE_L2X0=y
 CONFIG_MIGHT_HAVE_CACHE_L2X0=y
 CONFIG_CACHE_L2X0=y
 CONFIG_CACHE_L2X0=y
+# CONFIG_CACHE_L2X0_PMU is not set
 CONFIG_PL310_ERRATA_588369=y
 CONFIG_PL310_ERRATA_588369=y
 CONFIG_PL310_ERRATA_727915=y
 CONFIG_PL310_ERRATA_727915=y
 # CONFIG_PL310_ERRATA_753970 is not set
 # CONFIG_PL310_ERRATA_753970 is not set
@@ -456,20 +372,27 @@ CONFIG_ARM_L1_CACHE_SHIFT_6=y
 CONFIG_ARM_L1_CACHE_SHIFT=6
 CONFIG_ARM_L1_CACHE_SHIFT=6
 CONFIG_ARM_DMA_MEM_BUFFERABLE=y
 CONFIG_ARM_DMA_MEM_BUFFERABLE=y
 CONFIG_ARM_HEAVY_MB=y
 CONFIG_ARM_HEAVY_MB=y
-# CONFIG_ARM_KERNMEM_PERMS is not set
-CONFIG_MULTI_IRQ_HANDLER=y
+CONFIG_DEBUG_ALIGN_RODATA=y
 CONFIG_ARM_ERRATA_430973=y
 CONFIG_ARM_ERRATA_430973=y
 CONFIG_ARM_ERRATA_720789=y
 CONFIG_ARM_ERRATA_720789=y
 CONFIG_ARM_ERRATA_754322=y
 CONFIG_ARM_ERRATA_754322=y
 CONFIG_ARM_ERRATA_775420=y
 CONFIG_ARM_ERRATA_775420=y
 # CONFIG_ARM_ERRATA_773022 is not set
 # CONFIG_ARM_ERRATA_773022 is not set
+# CONFIG_ARM_ERRATA_818325_852422 is not set
+# CONFIG_ARM_ERRATA_821420 is not set
+# CONFIG_ARM_ERRATA_825619 is not set
+# CONFIG_ARM_ERRATA_852421 is not set
+# CONFIG_ARM_ERRATA_852423 is not set
 
 
 #
 #
 # Bus support
 # Bus support
 #
 #
 # CONFIG_PCI is not set
 # CONFIG_PCI is not set
-# CONFIG_PCI_DOMAINS_GENERIC is not set
-# CONFIG_PCI_SYSCALL is not set
+
+#
+# PCI Endpoint
+#
+# CONFIG_PCI_ENDPOINT is not set
 # CONFIG_PCCARD is not set
 # CONFIG_PCCARD is not set
 
 
 #
 #
@@ -485,32 +408,20 @@ CONFIG_VMSPLIT_3G=y
 CONFIG_PAGE_OFFSET=0xC0000000
 CONFIG_PAGE_OFFSET=0xC0000000
 CONFIG_ARM_PSCI=y
 CONFIG_ARM_PSCI=y
 CONFIG_ARCH_NR_GPIO=0
 CONFIG_ARCH_NR_GPIO=0
-CONFIG_PREEMPT=y
-CONFIG_PREEMPT_RT_BASE=y
-CONFIG_HAVE_PREEMPT_LAZY=y
-CONFIG_PREEMPT_LAZY=y
-# CONFIG_PREEMPT_NONE is not set
-# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT__LL is not set
-# CONFIG_PREEMPT_RTB is not set
-CONFIG_PREEMPT_RT_FULL=y
-CONFIG_PREEMPT_COUNT=y
 CONFIG_HZ_FIXED=0
 CONFIG_HZ_FIXED=0
-CONFIG_HZ_100=y
+# CONFIG_HZ_100 is not set
 # CONFIG_HZ_200 is not set
 # CONFIG_HZ_200 is not set
 # CONFIG_HZ_250 is not set
 # CONFIG_HZ_250 is not set
 # CONFIG_HZ_300 is not set
 # CONFIG_HZ_300 is not set
 # CONFIG_HZ_500 is not set
 # CONFIG_HZ_500 is not set
-# CONFIG_HZ_1000 is not set
-CONFIG_HZ=100
+CONFIG_HZ_1000=y
+CONFIG_HZ=1000
 CONFIG_SCHED_HRTICK=y
 CONFIG_SCHED_HRTICK=y
-CONFIG_THUMB2_KERNEL=y
-CONFIG_THUMB2_AVOID_R_ARM_THM_JUMP11=y
-CONFIG_ARM_ASM_UNIFIED=y
+# CONFIG_THUMB2_KERNEL is not set
+CONFIG_ARM_PATCH_IDIV=y
 CONFIG_AEABI=y
 CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
 CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
 CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
-# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
-# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
 CONFIG_HAVE_ARCH_PFN_VALID=y
 CONFIG_HAVE_ARCH_PFN_VALID=y
 CONFIG_HIGHMEM=y
 CONFIG_HIGHMEM=y
 CONFIG_HIGHPTE=y
 CONFIG_HIGHPTE=y
@@ -518,43 +429,12 @@ CONFIG_CPU_SW_DOMAIN_PAN=y
 CONFIG_HW_PERF_EVENTS=y
 CONFIG_HW_PERF_EVENTS=y
 CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
 CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
 # CONFIG_ARM_MODULE_PLTS is not set
 # CONFIG_ARM_MODULE_PLTS is not set
-CONFIG_FLATMEM=y
-CONFIG_FLAT_NODE_MEM_MAP=y
-CONFIG_HAVE_MEMBLOCK=y
-CONFIG_NO_BOOTMEM=y
-CONFIG_MEMORY_ISOLATION=y
-# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4
-CONFIG_MEMORY_BALLOON=y
-CONFIG_BALLOON_COMPACTION=y
-CONFIG_COMPACTION=y
-CONFIG_MIGRATION=y
-# CONFIG_PHYS_ADDR_T_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=0
-CONFIG_BOUNCE=y
-CONFIG_KSM=y
-CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
-CONFIG_NEED_PER_CPU_KM=y
-# CONFIG_CLEANCACHE is not set
-CONFIG_FRONTSWAP=y
-CONFIG_CMA=y
-# CONFIG_CMA_DEBUG is not set
-# CONFIG_CMA_DEBUGFS is not set
-CONFIG_CMA_AREAS=7
-CONFIG_ZSWAP=y
-CONFIG_ZPOOL=y
-CONFIG_ZBUD=y
-CONFIG_ZSMALLOC=m
-# CONFIG_PGTABLE_MAPPING is not set
-# CONFIG_ZSMALLOC_STAT is not set
-# CONFIG_IDLE_PAGE_TRACKING is not set
-CONFIG_FRAME_VECTOR=y
 CONFIG_FORCE_MAX_ZONEORDER=12
 CONFIG_FORCE_MAX_ZONEORDER=12
 CONFIG_ALIGNMENT_TRAP=y
 CONFIG_ALIGNMENT_TRAP=y
 # CONFIG_UACCESS_WITH_MEMCPY is not set
 # CONFIG_UACCESS_WITH_MEMCPY is not set
 CONFIG_SECCOMP=y
 CONFIG_SECCOMP=y
-CONFIG_SWIOTLB=y
-CONFIG_IOMMU_HELPER=y
+# CONFIG_PARAVIRT is not set
+# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
 # CONFIG_XEN is not set
 # CONFIG_XEN is not set
 
 
 #
 #
@@ -574,6 +454,7 @@ CONFIG_KEXEC=y
 CONFIG_ATAGS_PROC=y
 CONFIG_ATAGS_PROC=y
 # CONFIG_CRASH_DUMP is not set
 # CONFIG_CRASH_DUMP is not set
 CONFIG_AUTO_ZRELADDR=y
 CONFIG_AUTO_ZRELADDR=y
+# CONFIG_EFI is not set
 
 
 #
 #
 # CPU Power Management
 # CPU Power Management
@@ -583,9 +464,9 @@ CONFIG_AUTO_ZRELADDR=y
 # CPU Frequency scaling
 # CPU Frequency scaling
 #
 #
 CONFIG_CPU_FREQ=y
 CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_GOV_ATTR_SET=y
 CONFIG_CPU_FREQ_GOV_COMMON=y
 CONFIG_CPU_FREQ_GOV_COMMON=y
 CONFIG_CPU_FREQ_STAT=y
 CONFIG_CPU_FREQ_STAT=y
-CONFIG_CPU_FREQ_STAT_DETAILS=y
 CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
 CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
 # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
 # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
 # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
 # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
@@ -601,15 +482,15 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
 # CPU frequency scaling drivers
 # CPU frequency scaling drivers
 #
 #
 CONFIG_CPUFREQ_DT=y
 CONFIG_CPUFREQ_DT=y
-# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
+CONFIG_CPUFREQ_DT_PLATDEV=y
 # CONFIG_ARM_OMAP2PLUS_CPUFREQ is not set
 # CONFIG_ARM_OMAP2PLUS_CPUFREQ is not set
+# CONFIG_ARM_TI_CPUFREQ is not set
 # CONFIG_QORIQ_CPUFREQ is not set
 # CONFIG_QORIQ_CPUFREQ is not set
 
 
 #
 #
 # CPU Idle
 # CPU Idle
 #
 #
 # CONFIG_CPU_IDLE is not set
 # CONFIG_CPU_IDLE is not set
-# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
 
 
 #
 #
 # Floating point emulation
 # Floating point emulation
@@ -623,70 +504,266 @@ CONFIG_VFPv3=y
 CONFIG_NEON=y
 CONFIG_NEON=y
 CONFIG_KERNEL_MODE_NEON=y
 CONFIG_KERNEL_MODE_NEON=y
 
 
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
-CONFIG_BINFMT_SCRIPT=y
-# CONFIG_HAVE_AOUT is not set
-CONFIG_BINFMT_MISC=m
-CONFIG_COREDUMP=y
-
 #
 #
 # Power management options
 # Power management options
 #
 #
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-# CONFIG_SUSPEND_SKIP_SYNC is not set
-CONFIG_HIBERNATE_CALLBACKS=y
-CONFIG_HIBERNATION=y
-CONFIG_PM_STD_PARTITION=""
-CONFIG_PM_SLEEP=y
-CONFIG_PM_AUTOSLEEP=y
-CONFIG_PM_WAKELOCKS=y
-CONFIG_PM_WAKELOCKS_LIMIT=100
-CONFIG_PM_WAKELOCKS_GC=y
+# CONFIG_SUSPEND is not set
+# CONFIG_HIBERNATION is not set
 CONFIG_PM=y
 CONFIG_PM=y
-CONFIG_PM_DEBUG=y
-CONFIG_PM_ADVANCED_DEBUG=y
-# CONFIG_PM_TEST_SUSPEND is not set
-CONFIG_PM_SLEEP_DEBUG=y
-CONFIG_APM_EMULATION=y
-CONFIG_PM_OPP=y
+# CONFIG_PM_DEBUG is not set
+# CONFIG_APM_EMULATION is not set
 CONFIG_PM_CLK=y
 CONFIG_PM_CLK=y
 # CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
 # CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
-CONFIG_CPU_PM=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_ARM_CPU_SUSPEND=y
 CONFIG_ARM_CPU_SUSPEND=y
 CONFIG_ARCH_HIBERNATION_POSSIBLE=y
 CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_NET=y
-CONFIG_NET_INGRESS=y
 
 
 #
 #
-# Networking options
+# Firmware Drivers
 #
 #
-CONFIG_PACKET=y
-CONFIG_PACKET_DIAG=m
-CONFIG_UNIX=y
-CONFIG_UNIX_DIAG=m
-CONFIG_XFRM=y
-CONFIG_XFRM_ALGO=m
-CONFIG_XFRM_USER=m
-CONFIG_XFRM_SUB_POLICY=y
-CONFIG_XFRM_MIGRATE=y
-# CONFIG_XFRM_STATISTICS is not set
-CONFIG_XFRM_IPCOMP=m
-CONFIG_NET_KEY=m
-CONFIG_NET_KEY_MIGRATE=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-CONFIG_IP_ADVANCED_ROUTER=y
-CONFIG_IP_FIB_TRIE_STATS=y
-CONFIG_IP_MULTIPLE_TABLES=y
-CONFIG_IP_ROUTE_MULTIPATH=y
-CONFIG_IP_ROUTE_VERBOSE=y
-CONFIG_IP_ROUTE_CLASSID=y
+CONFIG_ARM_PSCI_FW=y
+# CONFIG_ARM_SCMI_PROTOCOL is not set
+# CONFIG_ARM_SCPI_PROTOCOL is not set
+# CONFIG_FIRMWARE_MEMMAP is not set
+# CONFIG_FW_CFG_SYSFS is not set
+CONFIG_HAVE_ARM_SMCCC=y
+# CONFIG_GOOGLE_FIRMWARE is not set
+
+#
+# Tegra firmware driver
+#
+CONFIG_ARM_CRYPTO=y
+CONFIG_CRYPTO_SHA1_ARM=m
+CONFIG_CRYPTO_SHA1_ARM_NEON=m
+# CONFIG_CRYPTO_SHA1_ARM_CE is not set
+# CONFIG_CRYPTO_SHA2_ARM_CE is not set
+CONFIG_CRYPTO_SHA256_ARM=m
+CONFIG_CRYPTO_SHA512_ARM=m
+CONFIG_CRYPTO_AES_ARM=m
+CONFIG_CRYPTO_AES_ARM_BS=m
+# CONFIG_CRYPTO_AES_ARM_CE is not set
+# CONFIG_CRYPTO_GHASH_ARM_CE is not set
+# CONFIG_CRYPTO_CRCT10DIF_ARM_CE is not set
+# CONFIG_CRYPTO_CRC32_ARM_CE is not set
+# CONFIG_CRYPTO_CHACHA20_NEON is not set
+# CONFIG_VIRTUALIZATION is not set
+
+#
+# General architecture-dependent options
+#
+CONFIG_CRASH_CORE=y
+CONFIG_KEXEC_CORE=y
+# CONFIG_OPROFILE is not set
+CONFIG_HAVE_OPROFILE=y
+CONFIG_KPROBES=y
+# CONFIG_JUMP_LABEL is not set
+CONFIG_OPTPROBES=y
+CONFIG_UPROBES=y
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_ARCH_USE_BUILTIN_BSWAP=y
+CONFIG_KRETPROBES=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_OPTPROBES=y
+CONFIG_HAVE_NMI=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
+CONFIG_ARCH_HAS_SET_MEMORY=y
+CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_RSEQ=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_PERF_REGS=y
+CONFIG_HAVE_PERF_USER_STACK_DUMP=y
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_STACKPROTECTOR=y
+CONFIG_CC_HAS_STACKPROTECTOR_NONE=y
+CONFIG_STACKPROTECTOR=y
+CONFIG_STACKPROTECTOR_STRONG=y
+CONFIG_HAVE_CONTEXT_TRACKING=y
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
+CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
+CONFIG_HAVE_EXIT_THREAD=y
+CONFIG_ARCH_MMAP_RND_BITS=8
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OLD_SIGACTION=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
+CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
+CONFIG_STRICT_KERNEL_RWX=y
+CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
+CONFIG_STRICT_MODULE_RWX=y
+CONFIG_ARCH_HAS_PHYS_TO_DMA=y
+CONFIG_REFCOUNT_FULL=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
+CONFIG_PLUGIN_HOSTCC="g++"
+CONFIG_HAVE_GCC_PLUGINS=y
+# CONFIG_GCC_PLUGINS is not set
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_FORCE_LOAD=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_MODULE_SIG is not set
+# CONFIG_MODULE_COMPRESS is not set
+CONFIG_MODULES_TREE_LOOKUP=y
+CONFIG_BLOCK=y
+CONFIG_LBDAF=y
+CONFIG_BLK_SCSI_REQUEST=y
+CONFIG_BLK_DEV_BSG=y
+CONFIG_BLK_DEV_BSGLIB=y
+CONFIG_BLK_DEV_INTEGRITY=y
+# CONFIG_BLK_DEV_ZONED is not set
+CONFIG_BLK_DEV_THROTTLING=y
+# CONFIG_BLK_DEV_THROTTLING_LOW is not set
+# CONFIG_BLK_CMDLINE_PARSER is not set
+# CONFIG_BLK_WBT is not set
+# CONFIG_BLK_CGROUP_IOLATENCY is not set
+CONFIG_BLK_DEBUG_FS=y
+# CONFIG_BLK_SED_OPAL is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_AIX_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+CONFIG_KARMA_PARTITION=y
+CONFIG_EFI_PARTITION=y
+# CONFIG_SYSV68_PARTITION is not set
+# CONFIG_CMDLINE_PARTITION is not set
+CONFIG_BLK_MQ_VIRTIO=y
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_CFQ_GROUP_IOSCHED=y
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_MQ_IOSCHED_DEADLINE=y
+CONFIG_MQ_IOSCHED_KYBER=y
+# CONFIG_IOSCHED_BFQ is not set
+CONFIG_ASN1=y
+CONFIG_UNINLINE_SPIN_UNLOCK=y
+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
+CONFIG_FREEZER=y
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_ELF_FDPIC is not set
+CONFIG_ELFCORE=y
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_BINFMT_SCRIPT=y
+# CONFIG_BINFMT_FLAT is not set
+CONFIG_BINFMT_MISC=m
+CONFIG_COREDUMP=y
+
+#
+# Memory Management options
+#
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_HAVE_MEMBLOCK=y
+CONFIG_NO_BOOTMEM=y
+CONFIG_MEMORY_ISOLATION=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_MEMORY_BALLOON=y
+CONFIG_BALLOON_COMPACTION=y
+CONFIG_COMPACTION=y
+CONFIG_MIGRATION=y
+CONFIG_BOUNCE=y
+CONFIG_KSM=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_NEED_PER_CPU_KM=y
+# CONFIG_CLEANCACHE is not set
+CONFIG_FRONTSWAP=y
+CONFIG_CMA=y
+# CONFIG_CMA_DEBUG is not set
+# CONFIG_CMA_DEBUGFS is not set
+CONFIG_CMA_AREAS=7
+CONFIG_ZSWAP=y
+CONFIG_ZPOOL=y
+CONFIG_ZBUD=y
+# CONFIG_Z3FOLD is not set
+CONFIG_ZSMALLOC=m
+# CONFIG_PGTABLE_MAPPING is not set
+# CONFIG_ZSMALLOC_STAT is not set
+CONFIG_GENERIC_EARLY_IOREMAP=y
+# CONFIG_IDLE_PAGE_TRACKING is not set
+CONFIG_FRAME_VECTOR=y
+# CONFIG_PERCPU_STATS is not set
+# CONFIG_GUP_BENCHMARK is not set
+CONFIG_NET=y
+CONFIG_NET_INGRESS=y
+CONFIG_NET_EGRESS=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_DIAG=m
+CONFIG_UNIX=y
+CONFIG_UNIX_DIAG=m
+# CONFIG_TLS is not set
+CONFIG_XFRM=y
+CONFIG_XFRM_ALGO=m
+CONFIG_XFRM_USER=m
+# CONFIG_XFRM_INTERFACE is not set
+CONFIG_XFRM_SUB_POLICY=y
+CONFIG_XFRM_MIGRATE=y
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_XFRM_IPCOMP=m
+CONFIG_NET_KEY=m
+CONFIG_NET_KEY_MIGRATE=y
+# CONFIG_XDP_SOCKETS is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_IP_FIB_TRIE_STATS=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+CONFIG_IP_ROUTE_CLASSID=y
 CONFIG_IP_PNP=y
 CONFIG_IP_PNP=y
 CONFIG_IP_PNP_DHCP=y
 CONFIG_IP_PNP_DHCP=y
 CONFIG_IP_PNP_BOOTP=y
 CONFIG_IP_PNP_BOOTP=y
@@ -696,6 +773,7 @@ CONFIG_NET_IPGRE_DEMUX=m
 CONFIG_NET_IP_TUNNEL=m
 CONFIG_NET_IP_TUNNEL=m
 CONFIG_NET_IPGRE=m
 CONFIG_NET_IPGRE=m
 CONFIG_NET_IPGRE_BROADCAST=y
 CONFIG_NET_IPGRE_BROADCAST=y
+CONFIG_IP_MROUTE_COMMON=y
 CONFIG_IP_MROUTE=y
 CONFIG_IP_MROUTE=y
 CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
 CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
 CONFIG_IP_PIMSM_V1=y
 CONFIG_IP_PIMSM_V1=y
@@ -707,16 +785,18 @@ CONFIG_NET_FOU=m
 CONFIG_NET_FOU_IP_TUNNELS=y
 CONFIG_NET_FOU_IP_TUNNELS=y
 CONFIG_INET_AH=m
 CONFIG_INET_AH=m
 CONFIG_INET_ESP=m
 CONFIG_INET_ESP=m
+# CONFIG_INET_ESP_OFFLOAD is not set
 CONFIG_INET_IPCOMP=m
 CONFIG_INET_IPCOMP=m
 CONFIG_INET_XFRM_TUNNEL=m
 CONFIG_INET_XFRM_TUNNEL=m
 CONFIG_INET_TUNNEL=m
 CONFIG_INET_TUNNEL=m
 CONFIG_INET_XFRM_MODE_TRANSPORT=m
 CONFIG_INET_XFRM_MODE_TRANSPORT=m
 CONFIG_INET_XFRM_MODE_TUNNEL=m
 CONFIG_INET_XFRM_MODE_TUNNEL=m
 CONFIG_INET_XFRM_MODE_BEET=m
 CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_LRO=m
 CONFIG_INET_DIAG=m
 CONFIG_INET_DIAG=m
 CONFIG_INET_TCP_DIAG=m
 CONFIG_INET_TCP_DIAG=m
 CONFIG_INET_UDP_DIAG=m
 CONFIG_INET_UDP_DIAG=m
+# CONFIG_INET_RAW_DIAG is not set
+# CONFIG_INET_DIAG_DESTROY is not set
 CONFIG_TCP_CONG_ADVANCED=y
 CONFIG_TCP_CONG_ADVANCED=y
 CONFIG_TCP_CONG_BIC=m
 CONFIG_TCP_CONG_BIC=m
 CONFIG_TCP_CONG_CUBIC=y
 CONFIG_TCP_CONG_CUBIC=y
@@ -725,6 +805,7 @@ CONFIG_TCP_CONG_HTCP=m
 CONFIG_TCP_CONG_HSTCP=m
 CONFIG_TCP_CONG_HSTCP=m
 CONFIG_TCP_CONG_HYBLA=m
 CONFIG_TCP_CONG_HYBLA=m
 CONFIG_TCP_CONG_VEGAS=m
 CONFIG_TCP_CONG_VEGAS=m
+# CONFIG_TCP_CONG_NV is not set
 CONFIG_TCP_CONG_SCALABLE=m
 CONFIG_TCP_CONG_SCALABLE=m
 CONFIG_TCP_CONG_LP=m
 CONFIG_TCP_CONG_LP=m
 CONFIG_TCP_CONG_VENO=m
 CONFIG_TCP_CONG_VENO=m
@@ -732,6 +813,7 @@ CONFIG_TCP_CONG_YEAH=m
 CONFIG_TCP_CONG_ILLINOIS=m
 CONFIG_TCP_CONG_ILLINOIS=m
 CONFIG_TCP_CONG_DCTCP=m
 CONFIG_TCP_CONG_DCTCP=m
 CONFIG_TCP_CONG_CDG=m
 CONFIG_TCP_CONG_CDG=m
+# CONFIG_TCP_CONG_BBR is not set
 CONFIG_DEFAULT_CUBIC=y
 CONFIG_DEFAULT_CUBIC=y
 # CONFIG_DEFAULT_RENO is not set
 # CONFIG_DEFAULT_RENO is not set
 CONFIG_DEFAULT_TCP_CONG="cubic"
 CONFIG_DEFAULT_TCP_CONG="cubic"
@@ -742,6 +824,7 @@ CONFIG_IPV6_ROUTE_INFO=y
 CONFIG_IPV6_OPTIMISTIC_DAD=y
 CONFIG_IPV6_OPTIMISTIC_DAD=y
 CONFIG_INET6_AH=m
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
 CONFIG_INET6_ESP=m
+# CONFIG_INET6_ESP_OFFLOAD is not set
 CONFIG_INET6_IPCOMP=m
 CONFIG_INET6_IPCOMP=m
 CONFIG_IPV6_MIP6=y
 CONFIG_IPV6_MIP6=y
 CONFIG_IPV6_ILA=m
 CONFIG_IPV6_ILA=m
@@ -757,17 +840,20 @@ CONFIG_IPV6_SIT_6RD=y
 CONFIG_IPV6_NDISC_NODETYPE=y
 CONFIG_IPV6_NDISC_NODETYPE=y
 CONFIG_IPV6_TUNNEL=m
 CONFIG_IPV6_TUNNEL=m
 CONFIG_IPV6_GRE=m
 CONFIG_IPV6_GRE=m
+CONFIG_IPV6_FOU=m
+CONFIG_IPV6_FOU_TUNNEL=m
 CONFIG_IPV6_MULTIPLE_TABLES=y
 CONFIG_IPV6_MULTIPLE_TABLES=y
 CONFIG_IPV6_SUBTREES=y
 CONFIG_IPV6_SUBTREES=y
 CONFIG_IPV6_MROUTE=y
 CONFIG_IPV6_MROUTE=y
 CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
 CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
 CONFIG_IPV6_PIMSM_V2=y
 CONFIG_IPV6_PIMSM_V2=y
+# CONFIG_IPV6_SEG6_LWTUNNEL is not set
+# CONFIG_IPV6_SEG6_HMAC is not set
 CONFIG_NETLABEL=y
 CONFIG_NETLABEL=y
 CONFIG_NETWORK_SECMARK=y
 CONFIG_NETWORK_SECMARK=y
 CONFIG_NET_PTP_CLASSIFY=y
 CONFIG_NET_PTP_CLASSIFY=y
 # CONFIG_NETWORK_PHY_TIMESTAMPING is not set
 # CONFIG_NETWORK_PHY_TIMESTAMPING is not set
 CONFIG_NETFILTER=y
 CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
 CONFIG_NETFILTER_ADVANCED=y
 CONFIG_NETFILTER_ADVANCED=y
 CONFIG_BRIDGE_NETFILTER=m
 CONFIG_BRIDGE_NETFILTER=m
 
 
@@ -776,11 +862,16 @@ CONFIG_BRIDGE_NETFILTER=m
 #
 #
 CONFIG_NETFILTER_INGRESS=y
 CONFIG_NETFILTER_INGRESS=y
 CONFIG_NETFILTER_NETLINK=m
 CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_FAMILY_BRIDGE=y
+CONFIG_NETFILTER_FAMILY_ARP=y
 CONFIG_NETFILTER_NETLINK_ACCT=m
 CONFIG_NETFILTER_NETLINK_ACCT=m
 CONFIG_NETFILTER_NETLINK_QUEUE=m
 CONFIG_NETFILTER_NETLINK_QUEUE=m
 CONFIG_NETFILTER_NETLINK_LOG=m
 CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NETFILTER_NETLINK_OSF=m
 CONFIG_NF_CONNTRACK=m
 CONFIG_NF_CONNTRACK=m
 CONFIG_NF_LOG_COMMON=m
 CONFIG_NF_LOG_COMMON=m
+# CONFIG_NF_LOG_NETDEV is not set
+CONFIG_NETFILTER_CONNCOUNT=m
 CONFIG_NF_CONNTRACK_MARK=y
 CONFIG_NF_CONNTRACK_MARK=y
 CONFIG_NF_CONNTRACK_SECMARK=y
 CONFIG_NF_CONNTRACK_SECMARK=y
 CONFIG_NF_CONNTRACK_ZONES=y
 CONFIG_NF_CONNTRACK_ZONES=y
@@ -789,10 +880,10 @@ CONFIG_NF_CONNTRACK_EVENTS=y
 CONFIG_NF_CONNTRACK_TIMEOUT=y
 CONFIG_NF_CONNTRACK_TIMEOUT=y
 CONFIG_NF_CONNTRACK_TIMESTAMP=y
 CONFIG_NF_CONNTRACK_TIMESTAMP=y
 CONFIG_NF_CONNTRACK_LABELS=y
 CONFIG_NF_CONNTRACK_LABELS=y
-CONFIG_NF_CT_PROTO_DCCP=m
+CONFIG_NF_CT_PROTO_DCCP=y
 CONFIG_NF_CT_PROTO_GRE=m
 CONFIG_NF_CT_PROTO_GRE=m
-CONFIG_NF_CT_PROTO_SCTP=m
-CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CT_PROTO_SCTP=y
+CONFIG_NF_CT_PROTO_UDPLITE=y
 CONFIG_NF_CONNTRACK_AMANDA=m
 CONFIG_NF_CONNTRACK_AMANDA=m
 CONFIG_NF_CONNTRACK_FTP=m
 CONFIG_NF_CONNTRACK_FTP=m
 CONFIG_NF_CONNTRACK_H323=m
 CONFIG_NF_CONNTRACK_H323=m
@@ -810,34 +901,40 @@ CONFIG_NF_CT_NETLINK_HELPER=m
 CONFIG_NETFILTER_NETLINK_GLUE_CT=y
 CONFIG_NETFILTER_NETLINK_GLUE_CT=y
 CONFIG_NF_NAT=m
 CONFIG_NF_NAT=m
 CONFIG_NF_NAT_NEEDED=y
 CONFIG_NF_NAT_NEEDED=y
-CONFIG_NF_NAT_PROTO_DCCP=m
-CONFIG_NF_NAT_PROTO_UDPLITE=m
-CONFIG_NF_NAT_PROTO_SCTP=m
+CONFIG_NF_NAT_PROTO_DCCP=y
+CONFIG_NF_NAT_PROTO_UDPLITE=y
+CONFIG_NF_NAT_PROTO_SCTP=y
 CONFIG_NF_NAT_AMANDA=m
 CONFIG_NF_NAT_AMANDA=m
 CONFIG_NF_NAT_FTP=m
 CONFIG_NF_NAT_FTP=m
 CONFIG_NF_NAT_IRC=m
 CONFIG_NF_NAT_IRC=m
 CONFIG_NF_NAT_SIP=m
 CONFIG_NF_NAT_SIP=m
 CONFIG_NF_NAT_TFTP=m
 CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_REDIRECT=m
+CONFIG_NF_NAT_REDIRECT=y
 CONFIG_NETFILTER_SYNPROXY=m
 CONFIG_NETFILTER_SYNPROXY=m
 CONFIG_NF_TABLES=m
 CONFIG_NF_TABLES=m
-CONFIG_NF_TABLES_INET=m
+# CONFIG_NF_TABLES_SET is not set
+# CONFIG_NF_TABLES_INET is not set
 # CONFIG_NF_TABLES_NETDEV is not set
 # CONFIG_NF_TABLES_NETDEV is not set
-CONFIG_NFT_EXTHDR=m
-CONFIG_NFT_META=m
+# CONFIG_NFT_NUMGEN is not set
 CONFIG_NFT_CT=m
 CONFIG_NFT_CT=m
-CONFIG_NFT_RBTREE=m
-CONFIG_NFT_HASH=m
 CONFIG_NFT_COUNTER=m
 CONFIG_NFT_COUNTER=m
+# CONFIG_NFT_CONNLIMIT is not set
 CONFIG_NFT_LOG=m
 CONFIG_NFT_LOG=m
 CONFIG_NFT_LIMIT=m
 CONFIG_NFT_LIMIT=m
 CONFIG_NFT_MASQ=m
 CONFIG_NFT_MASQ=m
 CONFIG_NFT_REDIR=m
 CONFIG_NFT_REDIR=m
 CONFIG_NFT_NAT=m
 CONFIG_NFT_NAT=m
+# CONFIG_NFT_TUNNEL is not set
+# CONFIG_NFT_OBJREF is not set
 CONFIG_NFT_QUEUE=m
 CONFIG_NFT_QUEUE=m
+# CONFIG_NFT_QUOTA is not set
 CONFIG_NFT_REJECT=m
 CONFIG_NFT_REJECT=m
-CONFIG_NFT_REJECT_INET=m
 CONFIG_NFT_COMPAT=m
 CONFIG_NFT_COMPAT=m
+CONFIG_NFT_HASH=m
+# CONFIG_NFT_SOCKET is not set
+# CONFIG_NFT_OSF is not set
+# CONFIG_NFT_TPROXY is not set
+# CONFIG_NF_FLOW_TABLE is not set
 CONFIG_NETFILTER_XTABLES=y
 CONFIG_NETFILTER_XTABLES=y
 
 
 #
 #
@@ -936,6 +1033,7 @@ CONFIG_IP_SET_HASH_IPMARK=m
 CONFIG_IP_SET_HASH_IPPORT=m
 CONFIG_IP_SET_HASH_IPPORT=m
 CONFIG_IP_SET_HASH_IPPORTIP=m
 CONFIG_IP_SET_HASH_IPPORTIP=m
 CONFIG_IP_SET_HASH_IPPORTNET=m
 CONFIG_IP_SET_HASH_IPPORTNET=m
+# CONFIG_IP_SET_HASH_IPMAC is not set
 CONFIG_IP_SET_HASH_MAC=m
 CONFIG_IP_SET_HASH_MAC=m
 CONFIG_IP_SET_HASH_NETPORTNET=m
 CONFIG_IP_SET_HASH_NETPORTNET=m
 CONFIG_IP_SET_HASH_NET=m
 CONFIG_IP_SET_HASH_NET=m
@@ -971,6 +1069,7 @@ CONFIG_IP_VS_LBLC=m
 CONFIG_IP_VS_LBLCR=m
 CONFIG_IP_VS_LBLCR=m
 CONFIG_IP_VS_DH=m
 CONFIG_IP_VS_DH=m
 CONFIG_IP_VS_SH=m
 CONFIG_IP_VS_SH=m
+# CONFIG_IP_VS_MH is not set
 CONFIG_IP_VS_SED=m
 CONFIG_IP_VS_SED=m
 CONFIG_IP_VS_NQ=m
 CONFIG_IP_VS_NQ=m
 
 
@@ -979,6 +1078,11 @@ CONFIG_IP_VS_NQ=m
 #
 #
 CONFIG_IP_VS_SH_TAB_BITS=8
 CONFIG_IP_VS_SH_TAB_BITS=8
 
 
+#
+# IPVS MH scheduler
+#
+CONFIG_IP_VS_MH_TAB_INDEX=12
+
 #
 #
 # IPVS application helper
 # IPVS application helper
 #
 #
@@ -990,22 +1094,16 @@ CONFIG_IP_VS_PE_SIP=m
 # IP: Netfilter Configuration
 # IP: Netfilter Configuration
 #
 #
 CONFIG_NF_DEFRAG_IPV4=m
 CONFIG_NF_DEFRAG_IPV4=m
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-CONFIG_NF_TABLES_IPV4=m
-CONFIG_NFT_CHAIN_ROUTE_IPV4=m
-CONFIG_NFT_REJECT_IPV4=m
-CONFIG_NFT_DUP_IPV4=m
-CONFIG_NF_TABLES_ARP=m
+CONFIG_NF_SOCKET_IPV4=m
+CONFIG_NF_TPROXY_IPV4=m
+# CONFIG_NF_TABLES_IPV4 is not set
+# CONFIG_NF_TABLES_ARP is not set
 CONFIG_NF_DUP_IPV4=m
 CONFIG_NF_DUP_IPV4=m
 CONFIG_NF_LOG_ARP=m
 CONFIG_NF_LOG_ARP=m
 CONFIG_NF_LOG_IPV4=m
 CONFIG_NF_LOG_IPV4=m
 CONFIG_NF_REJECT_IPV4=m
 CONFIG_NF_REJECT_IPV4=m
 CONFIG_NF_NAT_IPV4=m
 CONFIG_NF_NAT_IPV4=m
-CONFIG_NFT_CHAIN_NAT_IPV4=m
-CONFIG_NF_NAT_MASQUERADE_IPV4=m
-CONFIG_NFT_MASQ_IPV4=m
-CONFIG_NFT_REDIR_IPV4=m
+CONFIG_NF_NAT_MASQUERADE_IPV4=y
 CONFIG_NF_NAT_SNMP_BASIC=m
 CONFIG_NF_NAT_SNMP_BASIC=m
 CONFIG_NF_NAT_PROTO_GRE=m
 CONFIG_NF_NAT_PROTO_GRE=m
 CONFIG_NF_NAT_PPTP=m
 CONFIG_NF_NAT_PPTP=m
@@ -1035,20 +1133,14 @@ CONFIG_IP_NF_ARP_MANGLE=m
 #
 #
 # IPv6: Netfilter Configuration
 # IPv6: Netfilter Configuration
 #
 #
-CONFIG_NF_DEFRAG_IPV6=m
-CONFIG_NF_CONNTRACK_IPV6=m
-CONFIG_NF_TABLES_IPV6=m
-CONFIG_NFT_CHAIN_ROUTE_IPV6=m
-CONFIG_NFT_REJECT_IPV6=m
-CONFIG_NFT_DUP_IPV6=m
+CONFIG_NF_SOCKET_IPV6=m
+CONFIG_NF_TPROXY_IPV6=m
+# CONFIG_NF_TABLES_IPV6 is not set
 CONFIG_NF_DUP_IPV6=m
 CONFIG_NF_DUP_IPV6=m
 CONFIG_NF_REJECT_IPV6=m
 CONFIG_NF_REJECT_IPV6=m
 CONFIG_NF_LOG_IPV6=m
 CONFIG_NF_LOG_IPV6=m
 CONFIG_NF_NAT_IPV6=m
 CONFIG_NF_NAT_IPV6=m
-CONFIG_NFT_CHAIN_NAT_IPV6=m
-CONFIG_NF_NAT_MASQUERADE_IPV6=m
-CONFIG_NFT_MASQ_IPV6=m
-CONFIG_NFT_REDIR_IPV6=m
+CONFIG_NF_NAT_MASQUERADE_IPV6=y
 CONFIG_IP6_NF_IPTABLES=m
 CONFIG_IP6_NF_IPTABLES=m
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
 CONFIG_IP6_NF_MATCH_EUI64=m
@@ -1059,6 +1151,7 @@ CONFIG_IP6_NF_MATCH_IPV6HEADER=m
 CONFIG_IP6_NF_MATCH_MH=m
 CONFIG_IP6_NF_MATCH_MH=m
 CONFIG_IP6_NF_MATCH_RPFILTER=m
 CONFIG_IP6_NF_MATCH_RPFILTER=m
 CONFIG_IP6_NF_MATCH_RT=m
 CONFIG_IP6_NF_MATCH_RT=m
+# CONFIG_IP6_NF_MATCH_SRH is not set
 CONFIG_IP6_NF_TARGET_HL=m
 CONFIG_IP6_NF_TARGET_HL=m
 CONFIG_IP6_NF_FILTER=m
 CONFIG_IP6_NF_FILTER=m
 CONFIG_IP6_NF_TARGET_REJECT=m
 CONFIG_IP6_NF_TARGET_REJECT=m
@@ -1069,10 +1162,8 @@ CONFIG_IP6_NF_SECURITY=m
 CONFIG_IP6_NF_NAT=m
 CONFIG_IP6_NF_NAT=m
 CONFIG_IP6_NF_TARGET_MASQUERADE=m
 CONFIG_IP6_NF_TARGET_MASQUERADE=m
 CONFIG_IP6_NF_TARGET_NPT=m
 CONFIG_IP6_NF_TARGET_NPT=m
-CONFIG_NF_TABLES_BRIDGE=m
-CONFIG_NFT_BRIDGE_META=m
-CONFIG_NFT_BRIDGE_REJECT=m
-CONFIG_NF_LOG_BRIDGE=m
+CONFIG_NF_DEFRAG_IPV6=m
+# CONFIG_NF_TABLES_BRIDGE is not set
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -1094,6 +1185,7 @@ CONFIG_BRIDGE_EBT_REDIRECT=m
 CONFIG_BRIDGE_EBT_SNAT=m
 CONFIG_BRIDGE_EBT_SNAT=m
 CONFIG_BRIDGE_EBT_LOG=m
 CONFIG_BRIDGE_EBT_LOG=m
 CONFIG_BRIDGE_EBT_NFLOG=m
 CONFIG_BRIDGE_EBT_NFLOG=m
+# CONFIG_BPFILTER is not set
 CONFIG_IP_DCCP=m
 CONFIG_IP_DCCP=m
 CONFIG_INET_DCCP_DIAG=m
 CONFIG_INET_DCCP_DIAG=m
 
 
@@ -1109,20 +1201,20 @@ CONFIG_IP_DCCP_TFRC_LIB=y
 # DCCP Kernel Hacking
 # DCCP Kernel Hacking
 #
 #
 # CONFIG_IP_DCCP_DEBUG is not set
 # CONFIG_IP_DCCP_DEBUG is not set
-CONFIG_NET_DCCPPROBE=m
 CONFIG_IP_SCTP=m
 CONFIG_IP_SCTP=m
-CONFIG_NET_SCTPPROBE=m
 # CONFIG_SCTP_DBG_OBJCNT is not set
 # CONFIG_SCTP_DBG_OBJCNT is not set
 CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y
 CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y
 # CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set
 # CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set
 # CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
 # CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
 CONFIG_SCTP_COOKIE_HMAC_MD5=y
 CONFIG_SCTP_COOKIE_HMAC_MD5=y
 CONFIG_SCTP_COOKIE_HMAC_SHA1=y
 CONFIG_SCTP_COOKIE_HMAC_SHA1=y
+CONFIG_INET_SCTP_DIAG=m
 CONFIG_RDS=m
 CONFIG_RDS=m
 CONFIG_RDS_TCP=m
 CONFIG_RDS_TCP=m
 # CONFIG_RDS_DEBUG is not set
 # CONFIG_RDS_DEBUG is not set
 CONFIG_TIPC=m
 CONFIG_TIPC=m
 CONFIG_TIPC_MEDIA_UDP=y
 CONFIG_TIPC_MEDIA_UDP=y
+CONFIG_TIPC_DIAG=m
 CONFIG_ATM=m
 CONFIG_ATM=m
 CONFIG_ATM_CLIP=m
 CONFIG_ATM_CLIP=m
 # CONFIG_ATM_CLIP_NO_ICMP is not set
 # CONFIG_ATM_CLIP_NO_ICMP is not set
@@ -1142,13 +1234,13 @@ CONFIG_BRIDGE=m
 CONFIG_BRIDGE_IGMP_SNOOPING=y
 CONFIG_BRIDGE_IGMP_SNOOPING=y
 CONFIG_BRIDGE_VLAN_FILTERING=y
 CONFIG_BRIDGE_VLAN_FILTERING=y
 CONFIG_HAVE_NET_DSA=y
 CONFIG_HAVE_NET_DSA=y
+# CONFIG_NET_DSA is not set
 CONFIG_VLAN_8021Q=m
 CONFIG_VLAN_8021Q=m
 CONFIG_VLAN_8021Q_GVRP=y
 CONFIG_VLAN_8021Q_GVRP=y
 CONFIG_VLAN_8021Q_MVRP=y
 CONFIG_VLAN_8021Q_MVRP=y
 # CONFIG_DECNET is not set
 # CONFIG_DECNET is not set
 CONFIG_LLC=m
 CONFIG_LLC=m
 CONFIG_LLC2=m
 CONFIG_LLC2=m
-# CONFIG_IPX is not set
 CONFIG_ATALK=m
 CONFIG_ATALK=m
 CONFIG_DEV_APPLETALK=m
 CONFIG_DEV_APPLETALK=m
 CONFIG_IPDDP=m
 CONFIG_IPDDP=m
@@ -1157,6 +1249,7 @@ CONFIG_IPDDP_ENCAP=y
 # CONFIG_LAPB is not set
 # CONFIG_LAPB is not set
 CONFIG_PHONET=m
 CONFIG_PHONET=m
 CONFIG_6LOWPAN=m
 CONFIG_6LOWPAN=m
+# CONFIG_6LOWPAN_DEBUGFS is not set
 CONFIG_6LOWPAN_NHC=m
 CONFIG_6LOWPAN_NHC=m
 CONFIG_6LOWPAN_NHC_DEST=m
 CONFIG_6LOWPAN_NHC_DEST=m
 CONFIG_6LOWPAN_NHC_FRAGMENT=m
 CONFIG_6LOWPAN_NHC_FRAGMENT=m
@@ -1165,6 +1258,12 @@ CONFIG_6LOWPAN_NHC_IPV6=m
 CONFIG_6LOWPAN_NHC_MOBILITY=m
 CONFIG_6LOWPAN_NHC_MOBILITY=m
 CONFIG_6LOWPAN_NHC_ROUTING=m
 CONFIG_6LOWPAN_NHC_ROUTING=m
 CONFIG_6LOWPAN_NHC_UDP=m
 CONFIG_6LOWPAN_NHC_UDP=m
+# CONFIG_6LOWPAN_GHC_EXT_HDR_HOP is not set
+# CONFIG_6LOWPAN_GHC_UDP is not set
+# CONFIG_6LOWPAN_GHC_ICMPV6 is not set
+# CONFIG_6LOWPAN_GHC_EXT_HDR_DEST is not set
+# CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG is not set
+# CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE is not set
 CONFIG_IEEE802154=m
 CONFIG_IEEE802154=m
 # CONFIG_IEEE802154_NL802154_EXPERIMENTAL is not set
 # CONFIG_IEEE802154_NL802154_EXPERIMENTAL is not set
 CONFIG_IEEE802154_SOCKET=m
 CONFIG_IEEE802154_SOCKET=m
@@ -1186,20 +1285,25 @@ CONFIG_NET_SCH_SFB=m
 CONFIG_NET_SCH_SFQ=m
 CONFIG_NET_SCH_SFQ=m
 CONFIG_NET_SCH_TEQL=m
 CONFIG_NET_SCH_TEQL=m
 CONFIG_NET_SCH_TBF=m
 CONFIG_NET_SCH_TBF=m
+# CONFIG_NET_SCH_CBS is not set
+# CONFIG_NET_SCH_ETF is not set
 CONFIG_NET_SCH_GRED=m
 CONFIG_NET_SCH_GRED=m
 CONFIG_NET_SCH_DSMARK=m
 CONFIG_NET_SCH_DSMARK=m
 CONFIG_NET_SCH_NETEM=m
 CONFIG_NET_SCH_NETEM=m
 CONFIG_NET_SCH_DRR=m
 CONFIG_NET_SCH_DRR=m
 CONFIG_NET_SCH_MQPRIO=m
 CONFIG_NET_SCH_MQPRIO=m
+# CONFIG_NET_SCH_SKBPRIO is not set
 CONFIG_NET_SCH_CHOKE=m
 CONFIG_NET_SCH_CHOKE=m
 CONFIG_NET_SCH_QFQ=m
 CONFIG_NET_SCH_QFQ=m
 CONFIG_NET_SCH_CODEL=m
 CONFIG_NET_SCH_CODEL=m
 CONFIG_NET_SCH_FQ_CODEL=m
 CONFIG_NET_SCH_FQ_CODEL=m
+# CONFIG_NET_SCH_CAKE is not set
 CONFIG_NET_SCH_FQ=m
 CONFIG_NET_SCH_FQ=m
 CONFIG_NET_SCH_HHF=m
 CONFIG_NET_SCH_HHF=m
 CONFIG_NET_SCH_PIE=m
 CONFIG_NET_SCH_PIE=m
 CONFIG_NET_SCH_INGRESS=m
 CONFIG_NET_SCH_INGRESS=m
 CONFIG_NET_SCH_PLUG=m
 CONFIG_NET_SCH_PLUG=m
+# CONFIG_NET_SCH_DEFAULT is not set
 
 
 #
 #
 # Classification
 # Classification
@@ -1218,6 +1322,7 @@ CONFIG_NET_CLS_FLOW=m
 CONFIG_NET_CLS_CGROUP=m
 CONFIG_NET_CLS_CGROUP=m
 CONFIG_NET_CLS_BPF=m
 CONFIG_NET_CLS_BPF=m
 # CONFIG_NET_CLS_FLOWER is not set
 # CONFIG_NET_CLS_FLOWER is not set
+# CONFIG_NET_CLS_MATCHALL is not set
 CONFIG_NET_EMATCH=y
 CONFIG_NET_EMATCH=y
 CONFIG_NET_EMATCH_STACK=32
 CONFIG_NET_EMATCH_STACK=32
 CONFIG_NET_EMATCH_CMP=m
 CONFIG_NET_EMATCH_CMP=m
@@ -1227,11 +1332,13 @@ CONFIG_NET_EMATCH_META=m
 CONFIG_NET_EMATCH_TEXT=m
 CONFIG_NET_EMATCH_TEXT=m
 CONFIG_NET_EMATCH_CANID=m
 CONFIG_NET_EMATCH_CANID=m
 CONFIG_NET_EMATCH_IPSET=m
 CONFIG_NET_EMATCH_IPSET=m
+# CONFIG_NET_EMATCH_IPT is not set
 CONFIG_NET_CLS_ACT=y
 CONFIG_NET_CLS_ACT=y
 CONFIG_NET_ACT_POLICE=m
 CONFIG_NET_ACT_POLICE=m
 CONFIG_NET_ACT_GACT=m
 CONFIG_NET_ACT_GACT=m
 CONFIG_GACT_PROB=y
 CONFIG_GACT_PROB=y
 CONFIG_NET_ACT_MIRRED=m
 CONFIG_NET_ACT_MIRRED=m
+# CONFIG_NET_ACT_SAMPLE is not set
 CONFIG_NET_ACT_IPT=m
 CONFIG_NET_ACT_IPT=m
 CONFIG_NET_ACT_NAT=m
 CONFIG_NET_ACT_NAT=m
 CONFIG_NET_ACT_PEDIT=m
 CONFIG_NET_ACT_PEDIT=m
@@ -1241,16 +1348,20 @@ CONFIG_NET_ACT_CSUM=m
 CONFIG_NET_ACT_VLAN=m
 CONFIG_NET_ACT_VLAN=m
 CONFIG_NET_ACT_BPF=m
 CONFIG_NET_ACT_BPF=m
 CONFIG_NET_ACT_CONNMARK=m
 CONFIG_NET_ACT_CONNMARK=m
+# CONFIG_NET_ACT_SKBMOD is not set
+# CONFIG_NET_ACT_IFE is not set
+# CONFIG_NET_ACT_TUNNEL_KEY is not set
 CONFIG_NET_CLS_IND=y
 CONFIG_NET_CLS_IND=y
 CONFIG_NET_SCH_FIFO=y
 CONFIG_NET_SCH_FIFO=y
 CONFIG_DCB=y
 CONFIG_DCB=y
 CONFIG_DNS_RESOLVER=y
 CONFIG_DNS_RESOLVER=y
 CONFIG_BATMAN_ADV=m
 CONFIG_BATMAN_ADV=m
+CONFIG_BATMAN_ADV_BATMAN_V=y
 CONFIG_BATMAN_ADV_BLA=y
 CONFIG_BATMAN_ADV_BLA=y
 CONFIG_BATMAN_ADV_DAT=y
 CONFIG_BATMAN_ADV_DAT=y
 CONFIG_BATMAN_ADV_NC=y
 CONFIG_BATMAN_ADV_NC=y
 CONFIG_BATMAN_ADV_MCAST=y
 CONFIG_BATMAN_ADV_MCAST=y
-# CONFIG_BATMAN_ADV_DEBUG is not set
+# CONFIG_BATMAN_ADV_DEBUGFS is not set
 CONFIG_OPENVSWITCH=m
 CONFIG_OPENVSWITCH=m
 CONFIG_OPENVSWITCH_GRE=m
 CONFIG_OPENVSWITCH_GRE=m
 CONFIG_OPENVSWITCH_VXLAN=m
 CONFIG_OPENVSWITCH_VXLAN=m
@@ -1261,20 +1372,22 @@ CONFIG_MPLS=y
 CONFIG_NET_MPLS_GSO=y
 CONFIG_NET_MPLS_GSO=y
 CONFIG_MPLS_ROUTING=m
 CONFIG_MPLS_ROUTING=m
 CONFIG_MPLS_IPTUNNEL=m
 CONFIG_MPLS_IPTUNNEL=m
-CONFIG_HSR=m
+CONFIG_NET_NSH=m
+# CONFIG_HSR_PRP is not set
 # CONFIG_NET_SWITCHDEV is not set
 # CONFIG_NET_SWITCHDEV is not set
-# CONFIG_NET_L3_MASTER_DEV is not set
+CONFIG_NET_L3_MASTER_DEV=y
+# CONFIG_NET_NCSI is not set
 CONFIG_CGROUP_NET_PRIO=y
 CONFIG_CGROUP_NET_PRIO=y
 CONFIG_CGROUP_NET_CLASSID=y
 CONFIG_CGROUP_NET_CLASSID=y
 CONFIG_NET_RX_BUSY_POLL=y
 CONFIG_NET_RX_BUSY_POLL=y
 CONFIG_BQL=y
 CONFIG_BQL=y
 CONFIG_BPF_JIT=y
 CONFIG_BPF_JIT=y
+# CONFIG_BPF_STREAM_PARSER is not set
 
 
 #
 #
 # Network testing
 # Network testing
 #
 #
 CONFIG_NET_PKTGEN=m
 CONFIG_NET_PKTGEN=m
-# CONFIG_NET_TCPPROBE is not set
 CONFIG_NET_DROP_MONITOR=m
 CONFIG_NET_DROP_MONITOR=m
 # CONFIG_HAMRADIO is not set
 # CONFIG_HAMRADIO is not set
 CONFIG_CAN=m
 CONFIG_CAN=m
@@ -1286,37 +1399,41 @@ CONFIG_CAN_GW=m
 # CAN Device Drivers
 # CAN Device Drivers
 #
 #
 CONFIG_CAN_VCAN=m
 CONFIG_CAN_VCAN=m
+# CONFIG_CAN_VXCAN is not set
 # CONFIG_CAN_SLCAN is not set
 # CONFIG_CAN_SLCAN is not set
 CONFIG_CAN_DEV=m
 CONFIG_CAN_DEV=m
 CONFIG_CAN_CALC_BITTIMING=y
 CONFIG_CAN_CALC_BITTIMING=y
-# CONFIG_CAN_LEDS is not set
-CONFIG_CAN_TI_HECC=m
 # CONFIG_CAN_FLEXCAN is not set
 # CONFIG_CAN_FLEXCAN is not set
 # CONFIG_CAN_GRCAN is not set
 # CONFIG_CAN_GRCAN is not set
-# CONFIG_CAN_RCAR is not set
-# CONFIG_CAN_SJA1000 is not set
+CONFIG_CAN_TI_HECC=m
 CONFIG_CAN_C_CAN=m
 CONFIG_CAN_C_CAN=m
 CONFIG_CAN_C_CAN_PLATFORM=m
 CONFIG_CAN_C_CAN_PLATFORM=m
-# CONFIG_CAN_M_CAN is not set
 # CONFIG_CAN_CC770 is not set
 # CONFIG_CAN_CC770 is not set
+# CONFIG_CAN_IFI_CANFD is not set
+# CONFIG_CAN_M_CAN is not set
+# CONFIG_CAN_RCAR is not set
+# CONFIG_CAN_RCAR_CANFD is not set
+# CONFIG_CAN_SJA1000 is not set
+# CONFIG_CAN_SOFTING is not set
 
 
 #
 #
 # CAN SPI interfaces
 # CAN SPI interfaces
 #
 #
+# CONFIG_CAN_HI311X is not set
 CONFIG_CAN_MCP251X=m
 CONFIG_CAN_MCP251X=m
 
 
 #
 #
 # CAN USB interfaces
 # CAN USB interfaces
 #
 #
+CONFIG_CAN_8DEV_USB=m
 CONFIG_CAN_EMS_USB=m
 CONFIG_CAN_EMS_USB=m
 CONFIG_CAN_ESD_USB2=m
 CONFIG_CAN_ESD_USB2=m
 CONFIG_CAN_GS_USB=m
 CONFIG_CAN_GS_USB=m
 CONFIG_CAN_KVASER_USB=m
 CONFIG_CAN_KVASER_USB=m
+# CONFIG_CAN_MCBA_USB is not set
 CONFIG_CAN_PEAK_USB=m
 CONFIG_CAN_PEAK_USB=m
-CONFIG_CAN_8DEV_USB=m
-# CONFIG_CAN_SOFTING is not set
+# CONFIG_CAN_UCAN is not set
 # CONFIG_CAN_DEBUG_DEVICES is not set
 # CONFIG_CAN_DEBUG_DEVICES is not set
-# CONFIG_IRDA is not set
 CONFIG_BT=m
 CONFIG_BT=m
 CONFIG_BT_BREDR=y
 CONFIG_BT_BREDR=y
 CONFIG_BT_RFCOMM=m
 CONFIG_BT_RFCOMM=m
@@ -1328,6 +1445,7 @@ CONFIG_BT_HIDP=m
 CONFIG_BT_HS=y
 CONFIG_BT_HS=y
 CONFIG_BT_LE=y
 CONFIG_BT_LE=y
 CONFIG_BT_6LOWPAN=m
 CONFIG_BT_6LOWPAN=m
+# CONFIG_BT_LEDS is not set
 # CONFIG_BT_SELFTEST is not set
 # CONFIG_BT_SELFTEST is not set
 CONFIG_BT_DEBUGFS=y
 CONFIG_BT_DEBUGFS=y
 
 
@@ -1337,8 +1455,8 @@ CONFIG_BT_DEBUGFS=y
 CONFIG_BT_INTEL=m
 CONFIG_BT_INTEL=m
 CONFIG_BT_BCM=m
 CONFIG_BT_BCM=m
 CONFIG_BT_RTL=m
 CONFIG_BT_RTL=m
-CONFIG_BT_QCA=m
 CONFIG_BT_HCIBTUSB=m
 CONFIG_BT_HCIBTUSB=m
+# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set
 CONFIG_BT_HCIBTUSB_BCM=y
 CONFIG_BT_HCIBTUSB_BCM=y
 CONFIG_BT_HCIBTUSB_RTL=y
 CONFIG_BT_HCIBTUSB_RTL=y
 CONFIG_BT_HCIBTSDIO=m
 CONFIG_BT_HCIBTSDIO=m
@@ -1346,11 +1464,9 @@ CONFIG_BT_HCIUART=m
 CONFIG_BT_HCIUART_H4=y
 CONFIG_BT_HCIUART_H4=y
 CONFIG_BT_HCIUART_BCSP=y
 CONFIG_BT_HCIUART_BCSP=y
 CONFIG_BT_HCIUART_ATH3K=y
 CONFIG_BT_HCIUART_ATH3K=y
-CONFIG_BT_HCIUART_LL=y
-CONFIG_BT_HCIUART_3WIRE=y
 # CONFIG_BT_HCIUART_INTEL is not set
 # CONFIG_BT_HCIUART_INTEL is not set
-CONFIG_BT_HCIUART_BCM=y
-CONFIG_BT_HCIUART_QCA=y
+# CONFIG_BT_HCIUART_AG6XX is not set
+# CONFIG_BT_HCIUART_MRVL is not set
 CONFIG_BT_HCIBCM203X=m
 CONFIG_BT_HCIBCM203X=m
 CONFIG_BT_HCIBPA10X=m
 CONFIG_BT_HCIBPA10X=m
 CONFIG_BT_HCIBFUSB=m
 CONFIG_BT_HCIBFUSB=m
@@ -1359,9 +1475,13 @@ CONFIG_BT_MRVL=m
 CONFIG_BT_MRVL_SDIO=m
 CONFIG_BT_MRVL_SDIO=m
 CONFIG_BT_ATH3K=m
 CONFIG_BT_ATH3K=m
 CONFIG_BT_WILINK=m
 CONFIG_BT_WILINK=m
+CONFIG_BT_HCIRSI=m
 CONFIG_AF_RXRPC=m
 CONFIG_AF_RXRPC=m
+# CONFIG_AF_RXRPC_IPV6 is not set
+# CONFIG_AF_RXRPC_INJECT_LOSS is not set
 # CONFIG_AF_RXRPC_DEBUG is not set
 # CONFIG_AF_RXRPC_DEBUG is not set
-CONFIG_RXKAD=m
+# CONFIG_RXKAD is not set
+# CONFIG_AF_KCM is not set
 CONFIG_FIB_RULES=y
 CONFIG_FIB_RULES=y
 CONFIG_WIRELESS=y
 CONFIG_WIRELESS=y
 CONFIG_WIRELESS_EXT=y
 CONFIG_WIRELESS_EXT=y
@@ -1372,11 +1492,11 @@ CONFIG_WEXT_PRIV=y
 CONFIG_CFG80211=m
 CONFIG_CFG80211=m
 # CONFIG_NL80211_TESTMODE is not set
 # CONFIG_NL80211_TESTMODE is not set
 # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
 # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
 # CONFIG_CFG80211_CERTIFICATION_ONUS is not set
 # CONFIG_CFG80211_CERTIFICATION_ONUS is not set
+CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y
+CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y
 CONFIG_CFG80211_DEFAULT_PS=y
 CONFIG_CFG80211_DEFAULT_PS=y
 # CONFIG_CFG80211_DEBUGFS is not set
 # CONFIG_CFG80211_DEBUGFS is not set
-# CONFIG_CFG80211_INTERNAL_REGDB is not set
 CONFIG_CFG80211_CRDA_SUPPORT=y
 CONFIG_CFG80211_CRDA_SUPPORT=y
 CONFIG_CFG80211_WEXT=y
 CONFIG_CFG80211_WEXT=y
 CONFIG_LIB80211=m
 CONFIG_LIB80211=m
@@ -1402,7 +1522,6 @@ CONFIG_WIMAX_DEBUG_LEVEL=8
 CONFIG_RFKILL=y
 CONFIG_RFKILL=y
 CONFIG_RFKILL_LEDS=y
 CONFIG_RFKILL_LEDS=y
 CONFIG_RFKILL_INPUT=y
 CONFIG_RFKILL_INPUT=y
-# CONFIG_RFKILL_REGULATOR is not set
 # CONFIG_RFKILL_GPIO is not set
 # CONFIG_RFKILL_GPIO is not set
 CONFIG_NET_9P=m
 CONFIG_NET_9P=m
 CONFIG_NET_9P_VIRTIO=m
 CONFIG_NET_9P_VIRTIO=m
@@ -1422,23 +1541,33 @@ CONFIG_NFC_SHDLC=y
 #
 #
 # Near Field Communication (NFC) devices
 # Near Field Communication (NFC) devices
 #
 #
-CONFIG_NFC_PN533=m
-CONFIG_NFC_WILINK=m
 # CONFIG_NFC_TRF7970A is not set
 # CONFIG_NFC_TRF7970A is not set
 CONFIG_NFC_SIM=m
 CONFIG_NFC_SIM=m
 CONFIG_NFC_PORT100=m
 CONFIG_NFC_PORT100=m
 # CONFIG_NFC_FDP is not set
 # CONFIG_NFC_FDP is not set
 CONFIG_NFC_PN544=m
 CONFIG_NFC_PN544=m
 CONFIG_NFC_PN544_I2C=m
 CONFIG_NFC_PN544_I2C=m
+# CONFIG_NFC_PN533_USB is not set
+# CONFIG_NFC_PN533_I2C is not set
 CONFIG_NFC_MICROREAD=m
 CONFIG_NFC_MICROREAD=m
 CONFIG_NFC_MICROREAD_I2C=m
 CONFIG_NFC_MICROREAD_I2C=m
 # CONFIG_NFC_MRVL_USB is not set
 # CONFIG_NFC_MRVL_USB is not set
-# CONFIG_NFC_ST21NFCA is not set
-# CONFIG_NFC_ST_NCI is not set
+# CONFIG_NFC_ST21NFCA_I2C is not set
+# CONFIG_NFC_ST_NCI_I2C is not set
+# CONFIG_NFC_ST_NCI_SPI is not set
 # CONFIG_NFC_NXP_NCI is not set
 # CONFIG_NFC_NXP_NCI is not set
 # CONFIG_NFC_S3FWRN5_I2C is not set
 # CONFIG_NFC_S3FWRN5_I2C is not set
+# CONFIG_NFC_ST95HF is not set
+# CONFIG_PSAMPLE is not set
+# CONFIG_NET_IFE is not set
 CONFIG_LWTUNNEL=y
 CONFIG_LWTUNNEL=y
-CONFIG_HAVE_BPF_JIT=y
+CONFIG_LWTUNNEL_BPF=y
+CONFIG_DST_CACHE=y
+CONFIG_GRO_CELLS=y
+# CONFIG_NET_DEVLINK is not set
+CONFIG_MAY_USE_DEVLINK=y
+CONFIG_FAILOVER=m
+CONFIG_HAVE_EBPF_JIT=y
 
 
 #
 #
 # Device Drivers
 # Device Drivers
@@ -1452,8 +1581,11 @@ CONFIG_DEVTMPFS=y
 CONFIG_DEVTMPFS_MOUNT=y
 CONFIG_DEVTMPFS_MOUNT=y
 CONFIG_STANDALONE=y
 CONFIG_STANDALONE=y
 CONFIG_PREVENT_FIRMWARE_BUILD=y
 CONFIG_PREVENT_FIRMWARE_BUILD=y
+
+#
+# Firmware loader
+#
 CONFIG_FW_LOADER=y
 CONFIG_FW_LOADER=y
-CONFIG_FIRMWARE_IN_KERNEL=y
 CONFIG_EXTRA_FIRMWARE="am335x-pm-firmware.elf am335x-bone-scale-data.bin am335x-evm-scale-data.bin am43x-evm-scale-data.bin"
 CONFIG_EXTRA_FIRMWARE="am335x-pm-firmware.elf am335x-bone-scale-data.bin am335x-evm-scale-data.bin am43x-evm-scale-data.bin"
 CONFIG_EXTRA_FIRMWARE_DIR="firmware"
 CONFIG_EXTRA_FIRMWARE_DIR="firmware"
 CONFIG_FW_LOADER_USER_HELPER=y
 CONFIG_FW_LOADER_USER_HELPER=y
@@ -1463,8 +1595,9 @@ CONFIG_ALLOW_DEV_COREDUMP=y
 CONFIG_DEV_COREDUMP=y
 CONFIG_DEV_COREDUMP=y
 # CONFIG_DEBUG_DRIVER is not set
 # CONFIG_DEBUG_DRIVER is not set
 # CONFIG_DEBUG_DEVRES is not set
 # CONFIG_DEBUG_DEVRES is not set
-# CONFIG_SYS_HYPERVISOR is not set
-# CONFIG_GENERIC_CPU_DEVICES is not set
+# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
+# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
+CONFIG_GENERIC_CPU_AUTOPROBE=y
 CONFIG_SOC_BUS=y
 CONFIG_SOC_BUS=y
 CONFIG_REGMAP=y
 CONFIG_REGMAP=y
 CONFIG_REGMAP_I2C=y
 CONFIG_REGMAP_I2C=y
@@ -1472,7 +1605,7 @@ CONFIG_REGMAP_SPI=y
 CONFIG_REGMAP_MMIO=y
 CONFIG_REGMAP_MMIO=y
 CONFIG_REGMAP_IRQ=y
 CONFIG_REGMAP_IRQ=y
 CONFIG_DMA_SHARED_BUFFER=y
 CONFIG_DMA_SHARED_BUFFER=y
-# CONFIG_FENCE_TRACE is not set
+# CONFIG_DMA_FENCE_TRACE is not set
 CONFIG_DMA_CMA=y
 CONFIG_DMA_CMA=y
 
 
 #
 #
@@ -1488,15 +1621,15 @@ CONFIG_CMA_ALIGNMENT=8
 #
 #
 # Bus devices
 # Bus devices
 #
 #
-# CONFIG_ARM_CCI400_PMU is not set
-# CONFIG_ARM_CCI500_PMU is not set
-# CONFIG_ARM_CCN is not set
 # CONFIG_BRCMSTB_GISB_ARB is not set
 # CONFIG_BRCMSTB_GISB_ARB is not set
 CONFIG_OMAP_INTERCONNECT=y
 CONFIG_OMAP_INTERCONNECT=y
 CONFIG_OMAP_OCP2SCP=y
 CONFIG_OMAP_OCP2SCP=y
+# CONFIG_SIMPLE_PM_BUS is not set
+CONFIG_TI_SYSC=y
 CONFIG_VEXPRESS_CONFIG=y
 CONFIG_VEXPRESS_CONFIG=y
 CONFIG_CONNECTOR=y
 CONFIG_CONNECTOR=y
 CONFIG_PROC_EVENTS=y
 CONFIG_PROC_EVENTS=y
+# CONFIG_GNSS is not set
 CONFIG_MTD=y
 CONFIG_MTD=y
 # CONFIG_MTD_TESTS is not set
 # CONFIG_MTD_TESTS is not set
 # CONFIG_MTD_REDBOOT_PARTS is not set
 # CONFIG_MTD_REDBOOT_PARTS is not set
@@ -1505,6 +1638,10 @@ CONFIG_MTD=y
 CONFIG_MTD_OF_PARTS=m
 CONFIG_MTD_OF_PARTS=m
 CONFIG_MTD_AR7_PARTS=m
 CONFIG_MTD_AR7_PARTS=m
 
 
+#
+# Partition parsers
+#
+
 #
 #
 # User Modules And Translation Layers
 # User Modules And Translation Layers
 #
 #
@@ -1529,13 +1666,8 @@ CONFIG_MTD_SWAP=m
 CONFIG_MTD_MAP_BANK_WIDTH_1=y
 CONFIG_MTD_MAP_BANK_WIDTH_1=y
 CONFIG_MTD_MAP_BANK_WIDTH_2=y
 CONFIG_MTD_MAP_BANK_WIDTH_2=y
 CONFIG_MTD_MAP_BANK_WIDTH_4=y
 CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
 CONFIG_MTD_CFI_I1=y
 CONFIG_MTD_CFI_I1=y
 CONFIG_MTD_CFI_I2=y
 CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
 CONFIG_MTD_RAM=m
 CONFIG_MTD_RAM=m
 # CONFIG_MTD_ROM is not set
 # CONFIG_MTD_ROM is not set
 # CONFIG_MTD_ABSENT is not set
 # CONFIG_MTD_ABSENT is not set
@@ -1556,6 +1688,7 @@ CONFIG_MTD_DATAFLASH=m
 # CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set
 # CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set
 # CONFIG_MTD_DATAFLASH_OTP is not set
 # CONFIG_MTD_DATAFLASH_OTP is not set
 CONFIG_MTD_M25P80=m
 CONFIG_MTD_M25P80=m
+# CONFIG_MTD_MCHP23K256 is not set
 CONFIG_MTD_SST25L=m
 CONFIG_MTD_SST25L=m
 # CONFIG_MTD_SLRAM is not set
 # CONFIG_MTD_SLRAM is not set
 # CONFIG_MTD_PHRAM is not set
 # CONFIG_MTD_PHRAM is not set
@@ -1566,29 +1699,26 @@ CONFIG_MTD_SST25L=m
 # Disk-On-Chip Device Drivers
 # Disk-On-Chip Device Drivers
 #
 #
 # CONFIG_MTD_DOCG3 is not set
 # CONFIG_MTD_DOCG3 is not set
+CONFIG_MTD_ONENAND=y
+CONFIG_MTD_ONENAND_VERIFY_WRITE=y
+# CONFIG_MTD_ONENAND_GENERIC is not set
+# CONFIG_MTD_ONENAND_OTP is not set
+CONFIG_MTD_ONENAND_2X_PROGRAM=y
 CONFIG_MTD_NAND_ECC=y
 CONFIG_MTD_NAND_ECC=y
 # CONFIG_MTD_NAND_ECC_SMC is not set
 # CONFIG_MTD_NAND_ECC_SMC is not set
 CONFIG_MTD_NAND=y
 CONFIG_MTD_NAND=y
 CONFIG_MTD_NAND_BCH=y
 CONFIG_MTD_NAND_BCH=y
 CONFIG_MTD_NAND_ECC_BCH=y
 CONFIG_MTD_NAND_ECC_BCH=y
-# CONFIG_MTD_SM_COMMON is not set
 # CONFIG_MTD_NAND_DENALI_DT is not set
 # CONFIG_MTD_NAND_DENALI_DT is not set
 # CONFIG_MTD_NAND_GPIO is not set
 # CONFIG_MTD_NAND_GPIO is not set
 CONFIG_MTD_NAND_OMAP2=m
 CONFIG_MTD_NAND_OMAP2=m
 # CONFIG_MTD_NAND_OMAP_BCH is not set
 # CONFIG_MTD_NAND_OMAP_BCH is not set
-# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set
-CONFIG_MTD_NAND_IDS=y
 # CONFIG_MTD_NAND_DISKONCHIP is not set
 # CONFIG_MTD_NAND_DISKONCHIP is not set
 # CONFIG_MTD_NAND_DOCG4 is not set
 # CONFIG_MTD_NAND_DOCG4 is not set
 CONFIG_MTD_NAND_NANDSIM=m
 CONFIG_MTD_NAND_NANDSIM=m
 # CONFIG_MTD_NAND_BRCMNAND is not set
 # CONFIG_MTD_NAND_BRCMNAND is not set
 # CONFIG_MTD_NAND_PLATFORM is not set
 # CONFIG_MTD_NAND_PLATFORM is not set
-# CONFIG_MTD_NAND_HISI504 is not set
-CONFIG_MTD_ONENAND=y
-CONFIG_MTD_ONENAND_VERIFY_WRITE=y
-# CONFIG_MTD_ONENAND_GENERIC is not set
-# CONFIG_MTD_ONENAND_OTP is not set
-CONFIG_MTD_ONENAND_2X_PROGRAM=y
+# CONFIG_MTD_SPI_NAND is not set
 
 
 #
 #
 # LPDDR & LPDDR2 PCM memory drivers
 # LPDDR & LPDDR2 PCM memory drivers
@@ -1597,51 +1727,59 @@ CONFIG_MTD_LPDDR=m
 CONFIG_MTD_QINFO_PROBE=m
 CONFIG_MTD_QINFO_PROBE=m
 # CONFIG_MTD_LPDDR2_NVM is not set
 # CONFIG_MTD_LPDDR2_NVM is not set
 CONFIG_MTD_SPI_NOR=m
 CONFIG_MTD_SPI_NOR=m
+# CONFIG_MTD_MT81xx_NOR is not set
 CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
 CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
+# CONFIG_SPI_CADENCE_QUADSPI is not set
 CONFIG_MTD_UBI=m
 CONFIG_MTD_UBI=m
 CONFIG_MTD_UBI_WL_THRESHOLD=4096
 CONFIG_MTD_UBI_WL_THRESHOLD=4096
 CONFIG_MTD_UBI_BEB_LIMIT=20
 CONFIG_MTD_UBI_BEB_LIMIT=20
 # CONFIG_MTD_UBI_FASTMAP is not set
 # CONFIG_MTD_UBI_FASTMAP is not set
 # CONFIG_MTD_UBI_GLUEBI is not set
 # CONFIG_MTD_UBI_GLUEBI is not set
 CONFIG_MTD_UBI_BLOCK=y
 CONFIG_MTD_UBI_BLOCK=y
+# CONFIG_MTD_HYPERBUS is not set
 CONFIG_DTC=y
 CONFIG_DTC=y
 CONFIG_OF=y
 CONFIG_OF=y
 # CONFIG_OF_UNITTEST is not set
 # CONFIG_OF_UNITTEST is not set
 CONFIG_OF_FLATTREE=y
 CONFIG_OF_FLATTREE=y
 CONFIG_OF_EARLY_FLATTREE=y
 CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_KOBJ=y
 CONFIG_OF_DYNAMIC=y
 CONFIG_OF_DYNAMIC=y
 CONFIG_OF_ADDRESS=y
 CONFIG_OF_ADDRESS=y
 CONFIG_OF_IRQ=y
 CONFIG_OF_IRQ=y
 CONFIG_OF_NET=y
 CONFIG_OF_NET=y
 CONFIG_OF_MDIO=y
 CONFIG_OF_MDIO=y
-CONFIG_OF_MTD=y
 CONFIG_OF_RESERVED_MEM=y
 CONFIG_OF_RESERVED_MEM=y
 CONFIG_OF_RESOLVE=y
 CONFIG_OF_RESOLVE=y
 CONFIG_OF_OVERLAY=y
 CONFIG_OF_OVERLAY=y
-CONFIG_OF_CONFIGFS=y
 CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
 CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
 # CONFIG_PARPORT is not set
 # CONFIG_PARPORT is not set
 CONFIG_BLK_DEV=y
 CONFIG_BLK_DEV=y
 CONFIG_BLK_DEV_NULL_BLK=m
 CONFIG_BLK_DEV_NULL_BLK=m
+CONFIG_CDROM=m
 CONFIG_ZRAM=m
 CONFIG_ZRAM=m
-CONFIG_ZRAM_LZ4_COMPRESS=y
-# CONFIG_BLK_DEV_COW_COMMON is not set
+# CONFIG_ZRAM_WRITEBACK is not set
+# CONFIG_ZRAM_MEMORY_TRACKING is not set
 CONFIG_BLK_DEV_LOOP=m
 CONFIG_BLK_DEV_LOOP=m
 CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
 CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
 # CONFIG_BLK_DEV_CRYPTOLOOP is not set
 # CONFIG_BLK_DEV_CRYPTOLOOP is not set
 CONFIG_BLK_DEV_DRBD=m
 CONFIG_BLK_DEV_DRBD=m
 # CONFIG_DRBD_FAULT_INJECTION is not set
 # CONFIG_DRBD_FAULT_INJECTION is not set
 CONFIG_BLK_DEV_NBD=m
 CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_OSD=m
 CONFIG_BLK_DEV_RAM=m
 CONFIG_BLK_DEV_RAM=m
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_COUNT=16
 CONFIG_BLK_DEV_RAM_SIZE=16384
 CONFIG_BLK_DEV_RAM_SIZE=16384
 # CONFIG_CDROM_PKTCDVD is not set
 # CONFIG_CDROM_PKTCDVD is not set
 CONFIG_ATA_OVER_ETH=m
 CONFIG_ATA_OVER_ETH=m
-# CONFIG_MG_DISK is not set
 CONFIG_VIRTIO_BLK=m
 CONFIG_VIRTIO_BLK=m
+# CONFIG_VIRTIO_BLK_SCSI is not set
 CONFIG_BLK_DEV_RBD=m
 CONFIG_BLK_DEV_RBD=m
 
 
+#
+# NVME Support
+#
+# CONFIG_NVME_FC is not set
+# CONFIG_NVME_TARGET is not set
+
 #
 #
 # Misc devices
 # Misc devices
 #
 #
@@ -1650,28 +1788,21 @@ CONFIG_AD525X_DPOT=m
 CONFIG_AD525X_DPOT_I2C=m
 CONFIG_AD525X_DPOT_I2C=m
 CONFIG_AD525X_DPOT_SPI=m
 CONFIG_AD525X_DPOT_SPI=m
 # CONFIG_DUMMY_IRQ is not set
 # CONFIG_DUMMY_IRQ is not set
-CONFIG_HWLAT_DETECTOR=m
 CONFIG_ICS932S401=m
 CONFIG_ICS932S401=m
 CONFIG_ENCLOSURE_SERVICES=m
 CONFIG_ENCLOSURE_SERVICES=m
 CONFIG_APDS9802ALS=m
 CONFIG_APDS9802ALS=m
 CONFIG_ISL29003=m
 CONFIG_ISL29003=m
 CONFIG_ISL29020=m
 CONFIG_ISL29020=m
 CONFIG_SENSORS_TSL2550=m
 CONFIG_SENSORS_TSL2550=m
-CONFIG_SENSORS_BH1780=m
 CONFIG_SENSORS_BH1770=m
 CONFIG_SENSORS_BH1770=m
 CONFIG_SENSORS_APDS990X=m
 CONFIG_SENSORS_APDS990X=m
 CONFIG_HMC6352=m
 CONFIG_HMC6352=m
 CONFIG_DS1682=m
 CONFIG_DS1682=m
-CONFIG_TI_DAC7512=m
-# CONFIG_BMP085_I2C is not set
-# CONFIG_BMP085_SPI is not set
 # CONFIG_USB_SWITCH_FSA9480 is not set
 # CONFIG_USB_SWITCH_FSA9480 is not set
 # CONFIG_LATTICE_ECP3_CONFIG is not set
 # CONFIG_LATTICE_ECP3_CONFIG is not set
 CONFIG_SRAM=y
 CONFIG_SRAM=y
+CONFIG_SRAM_EXEC=y
 CONFIG_VEXPRESS_SYSCFG=y
 CONFIG_VEXPRESS_SYSCFG=y
-CONFIG_BONE_CAPEMGR=y
-# CONFIG_DEV_OVERLAYMGR is not set
-CONFIG_TIEQEP=m
 CONFIG_C2PORT=m
 CONFIG_C2PORT=m
 
 
 #
 #
@@ -1683,6 +1814,7 @@ CONFIG_EEPROM_LEGACY=m
 CONFIG_EEPROM_MAX6875=m
 CONFIG_EEPROM_MAX6875=m
 CONFIG_EEPROM_93CX6=m
 CONFIG_EEPROM_93CX6=m
 CONFIG_EEPROM_93XX46=m
 CONFIG_EEPROM_93XX46=m
+# CONFIG_EEPROM_IDT_89HPESX is not set
 
 
 #
 #
 # Texas Instruments shared transport line discipline
 # Texas Instruments shared transport line discipline
@@ -1690,11 +1822,11 @@ CONFIG_EEPROM_93XX46=m
 CONFIG_TI_ST=m
 CONFIG_TI_ST=m
 CONFIG_SENSORS_LIS3_SPI=m
 CONFIG_SENSORS_LIS3_SPI=m
 CONFIG_SENSORS_LIS3_I2C=m
 CONFIG_SENSORS_LIS3_I2C=m
+CONFIG_ALTERA_STAPL=m
 
 
 #
 #
-# Altera FPGA firmware download module
+# Intel MIC & related support
 #
 #
-CONFIG_ALTERA_STAPL=m
 
 
 #
 #
 # Intel MIC Bus Driver
 # Intel MIC Bus Driver
@@ -1704,6 +1836,10 @@ CONFIG_ALTERA_STAPL=m
 # SCIF Bus Driver
 # SCIF Bus Driver
 #
 #
 
 
+#
+# VOP Bus Driver
+#
+
 #
 #
 # Intel MIC Host Driver
 # Intel MIC Host Driver
 #
 #
@@ -1721,14 +1857,10 @@ CONFIG_ALTERA_STAPL=m
 #
 #
 
 
 #
 #
-# Argus cape driver for beaglebone black
+# VOP Driver
 #
 #
-CONFIG_CAPE_BONE_ARGUS=y
-CONFIG_BEAGLEBONE_PINMUX_HELPER=y
 # CONFIG_ECHO is not set
 # CONFIG_ECHO is not set
-# CONFIG_CXL_BASE is not set
-# CONFIG_CXL_KERNEL_API is not set
-# CONFIG_CXL_EEH is not set
+# CONFIG_MISC_RTSX_USB is not set
 
 
 #
 #
 # SCSI device support
 # SCSI device support
@@ -1772,6 +1904,7 @@ CONFIG_ISCSI_TCP=m
 CONFIG_ISCSI_BOOT_SYSFS=m
 CONFIG_ISCSI_BOOT_SYSFS=m
 CONFIG_SCSI_UFSHCD=m
 CONFIG_SCSI_UFSHCD=m
 # CONFIG_SCSI_UFSHCD_PLATFORM is not set
 # CONFIG_SCSI_UFSHCD_PLATFORM is not set
+# CONFIG_SCSI_UFS_BSG is not set
 CONFIG_LIBFC=m
 CONFIG_LIBFC=m
 CONFIG_LIBFCOE=m
 CONFIG_LIBFCOE=m
 # CONFIG_SCSI_DEBUG is not set
 # CONFIG_SCSI_DEBUG is not set
@@ -1786,7 +1919,6 @@ CONFIG_SCSI_OSD_ULD=m
 CONFIG_SCSI_OSD_DPRINT_SENSE=1
 CONFIG_SCSI_OSD_DPRINT_SENSE=1
 # CONFIG_SCSI_OSD_DEBUG is not set
 # CONFIG_SCSI_OSD_DEBUG is not set
 CONFIG_ATA=y
 CONFIG_ATA=y
-# CONFIG_ATA_NONSTANDARD is not set
 CONFIG_ATA_VERBOSE_ERROR=y
 CONFIG_ATA_VERBOSE_ERROR=y
 CONFIG_SATA_PMP=y
 CONFIG_SATA_PMP=y
 
 
@@ -1794,6 +1926,7 @@ CONFIG_SATA_PMP=y
 # Controllers with non-SFF native interface
 # Controllers with non-SFF native interface
 #
 #
 CONFIG_SATA_AHCI_PLATFORM=y
 CONFIG_SATA_AHCI_PLATFORM=y
+# CONFIG_AHCI_DM816 is not set
 # CONFIG_AHCI_CEVA is not set
 # CONFIG_AHCI_CEVA is not set
 CONFIG_AHCI_QORIQ=y
 CONFIG_AHCI_QORIQ=y
 CONFIG_ATA_SFF=y
 CONFIG_ATA_SFF=y
@@ -1806,6 +1939,7 @@ CONFIG_ATA_BMDMA=y
 #
 #
 # SATA SFF controllers with BMDMA
 # SATA SFF controllers with BMDMA
 #
 #
+# CONFIG_SATA_DWC is not set
 
 
 #
 #
 # PATA SFF controllers with BMDMA
 # PATA SFF controllers with BMDMA
@@ -1830,21 +1964,22 @@ CONFIG_MD_RAID456=m
 CONFIG_MD_MULTIPATH=m
 CONFIG_MD_MULTIPATH=m
 CONFIG_MD_FAULTY=m
 CONFIG_MD_FAULTY=m
 # CONFIG_MD_CLUSTER is not set
 # CONFIG_MD_CLUSTER is not set
+# CONFIG_BCACHE is not set
 CONFIG_BLK_DEV_DM_BUILTIN=y
 CONFIG_BLK_DEV_DM_BUILTIN=y
 CONFIG_BLK_DEV_DM=m
 CONFIG_BLK_DEV_DM=m
 # CONFIG_DM_MQ_DEFAULT is not set
 # CONFIG_DM_MQ_DEFAULT is not set
 # CONFIG_DM_DEBUG is not set
 # CONFIG_DM_DEBUG is not set
 CONFIG_DM_BUFIO=m
 CONFIG_DM_BUFIO=m
+# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set
 CONFIG_DM_BIO_PRISON=m
 CONFIG_DM_BIO_PRISON=m
 CONFIG_DM_PERSISTENT_DATA=m
 CONFIG_DM_PERSISTENT_DATA=m
-# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
+# CONFIG_DM_UNSTRIPED is not set
 CONFIG_DM_CRYPT=m
 CONFIG_DM_CRYPT=m
 CONFIG_DM_SNAPSHOT=m
 CONFIG_DM_SNAPSHOT=m
 CONFIG_DM_THIN_PROVISIONING=m
 CONFIG_DM_THIN_PROVISIONING=m
 CONFIG_DM_CACHE=m
 CONFIG_DM_CACHE=m
-CONFIG_DM_CACHE_MQ=m
 CONFIG_DM_CACHE_SMQ=m
 CONFIG_DM_CACHE_SMQ=m
-CONFIG_DM_CACHE_CLEANER=m
+# CONFIG_DM_WRITECACHE is not set
 CONFIG_DM_ERA=m
 CONFIG_DM_ERA=m
 CONFIG_DM_MIRROR=m
 CONFIG_DM_MIRROR=m
 CONFIG_DM_LOG_USERSPACE=m
 CONFIG_DM_LOG_USERSPACE=m
@@ -1857,8 +1992,10 @@ CONFIG_DM_DELAY=m
 CONFIG_DM_UEVENT=y
 CONFIG_DM_UEVENT=y
 CONFIG_DM_FLAKEY=m
 CONFIG_DM_FLAKEY=m
 CONFIG_DM_VERITY=m
 CONFIG_DM_VERITY=m
+# CONFIG_DM_VERITY_FEC is not set
 CONFIG_DM_SWITCH=m
 CONFIG_DM_SWITCH=m
 CONFIG_DM_LOG_WRITES=m
 CONFIG_DM_LOG_WRITES=m
+# CONFIG_DM_INTEGRITY is not set
 CONFIG_TARGET_CORE=m
 CONFIG_TARGET_CORE=m
 CONFIG_TCM_IBLOCK=m
 CONFIG_TCM_IBLOCK=m
 CONFIG_TCM_FILEIO=m
 CONFIG_TCM_FILEIO=m
@@ -1883,17 +2020,22 @@ CONFIG_NET_TEAM_MODE_LOADBALANCE=m
 CONFIG_MACVLAN=m
 CONFIG_MACVLAN=m
 CONFIG_MACVTAP=m
 CONFIG_MACVTAP=m
 CONFIG_IPVLAN=m
 CONFIG_IPVLAN=m
+# CONFIG_IPVTAP is not set
 CONFIG_VXLAN=m
 CONFIG_VXLAN=m
 CONFIG_GENEVE=m
 CONFIG_GENEVE=m
+# CONFIG_GTP is not set
+# CONFIG_MACSEC is not set
 CONFIG_NETCONSOLE=m
 CONFIG_NETCONSOLE=m
 CONFIG_NETCONSOLE_DYNAMIC=y
 CONFIG_NETCONSOLE_DYNAMIC=y
 CONFIG_NETPOLL=y
 CONFIG_NETPOLL=y
 CONFIG_NET_POLL_CONTROLLER=y
 CONFIG_NET_POLL_CONTROLLER=y
 CONFIG_TUN=m
 CONFIG_TUN=m
+CONFIG_TAP=m
 # CONFIG_TUN_VNET_CROSS_LE is not set
 # CONFIG_TUN_VNET_CROSS_LE is not set
 CONFIG_VETH=m
 CONFIG_VETH=m
 CONFIG_VIRTIO_NET=m
 CONFIG_VIRTIO_NET=m
 CONFIG_NLMON=m
 CONFIG_NLMON=m
+# CONFIG_NET_VRF is not set
 CONFIG_ATM_DRIVERS=y
 CONFIG_ATM_DRIVERS=y
 CONFIG_ATM_DUMMY=m
 CONFIG_ATM_DUMMY=m
 # CONFIG_ATM_TCP is not set
 # CONFIG_ATM_TCP is not set
@@ -1901,27 +2043,28 @@ CONFIG_ATM_DUMMY=m
 #
 #
 # CAIF transport drivers
 # CAIF transport drivers
 #
 #
-# CONFIG_VHOST_NET is not set
-# CONFIG_VHOST_SCSI is not set
-# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
 
 
 #
 #
 # Distributed Switch Architecture drivers
 # Distributed Switch Architecture drivers
 #
 #
-# CONFIG_NET_DSA_MV88E6XXX is not set
-# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
 CONFIG_ETHERNET=y
 CONFIG_ETHERNET=y
+CONFIG_NET_VENDOR_ALACRITECH=y
 # CONFIG_ALTERA_TSE is not set
 # CONFIG_ALTERA_TSE is not set
+CONFIG_NET_VENDOR_AMAZON=y
+CONFIG_NET_VENDOR_AQUANTIA=y
 # CONFIG_NET_VENDOR_ARC is not set
 # CONFIG_NET_VENDOR_ARC is not set
 # CONFIG_NET_VENDOR_AURORA is not set
 # CONFIG_NET_VENDOR_AURORA is not set
-CONFIG_NET_CADENCE=y
-# CONFIG_MACB is not set
 CONFIG_NET_VENDOR_BROADCOM=y
 CONFIG_NET_VENDOR_BROADCOM=y
 # CONFIG_B44 is not set
 # CONFIG_B44 is not set
 # CONFIG_BCMGENET is not set
 # CONFIG_BCMGENET is not set
 # CONFIG_SYSTEMPORT is not set
 # CONFIG_SYSTEMPORT is not set
+CONFIG_NET_VENDOR_CADENCE=y
+# CONFIG_MACB is not set
+CONFIG_NET_VENDOR_CAVIUM=y
 CONFIG_NET_VENDOR_CIRRUS=y
 CONFIG_NET_VENDOR_CIRRUS=y
 # CONFIG_CS89x0 is not set
 # CONFIG_CS89x0 is not set
+CONFIG_NET_VENDOR_CORTINA=y
+# CONFIG_GEMINI_ETHERNET is not set
 # CONFIG_DM9000 is not set
 # CONFIG_DM9000 is not set
 # CONFIG_DNET is not set
 # CONFIG_DNET is not set
 CONFIG_NET_VENDOR_EZCHIP=y
 CONFIG_NET_VENDOR_EZCHIP=y
@@ -1931,14 +2074,19 @@ CONFIG_NET_VENDOR_FARADAY=y
 # CONFIG_FTGMAC100 is not set
 # CONFIG_FTGMAC100 is not set
 CONFIG_NET_VENDOR_HISILICON=y
 CONFIG_NET_VENDOR_HISILICON=y
 # CONFIG_HIX5HD2_GMAC is not set
 # CONFIG_HIX5HD2_GMAC is not set
+# CONFIG_HISI_FEMAC is not set
 # CONFIG_HIP04_ETH is not set
 # CONFIG_HIP04_ETH is not set
 # CONFIG_HNS is not set
 # CONFIG_HNS is not set
 # CONFIG_HNS_DSAF is not set
 # CONFIG_HNS_DSAF is not set
 # CONFIG_HNS_ENET is not set
 # CONFIG_HNS_ENET is not set
-CONFIG_NET_VENDOR_INTEL=y
+CONFIG_NET_VENDOR_HUAWEI=y
 CONFIG_NET_VENDOR_I825XX=y
 CONFIG_NET_VENDOR_I825XX=y
+CONFIG_NET_VENDOR_INTEL=y
 CONFIG_NET_VENDOR_MARVELL=y
 CONFIG_NET_VENDOR_MARVELL=y
 # CONFIG_MVMDIO is not set
 # CONFIG_MVMDIO is not set
+CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_MLXSW_CORE is not set
+# CONFIG_MLXFW is not set
 CONFIG_NET_VENDOR_MICREL=y
 CONFIG_NET_VENDOR_MICREL=y
 # CONFIG_KS8842 is not set
 # CONFIG_KS8842 is not set
 CONFIG_KS8851=m
 CONFIG_KS8851=m
@@ -1947,26 +2095,32 @@ CONFIG_NET_VENDOR_MICROCHIP=y
 CONFIG_ENC28J60=m
 CONFIG_ENC28J60=m
 # CONFIG_ENC28J60_WRITEVERIFY is not set
 # CONFIG_ENC28J60_WRITEVERIFY is not set
 CONFIG_ENCX24J600=m
 CONFIG_ENCX24J600=m
+CONFIG_NET_VENDOR_MICROSEMI=y
 CONFIG_NET_VENDOR_NATSEMI=y
 CONFIG_NET_VENDOR_NATSEMI=y
+CONFIG_NET_VENDOR_NETRONOME=y
+CONFIG_NET_VENDOR_NI=y
 CONFIG_NET_VENDOR_8390=y
 CONFIG_NET_VENDOR_8390=y
 # CONFIG_AX88796 is not set
 # CONFIG_AX88796 is not set
 # CONFIG_ETHOC is not set
 # CONFIG_ETHOC is not set
 CONFIG_NET_VENDOR_QUALCOMM=y
 CONFIG_NET_VENDOR_QUALCOMM=y
-# CONFIG_QCA7000 is not set
+# CONFIG_QCA7000_SPI is not set
+# CONFIG_QCOM_EMAC is not set
+# CONFIG_RMNET is not set
 CONFIG_NET_VENDOR_RENESAS=y
 CONFIG_NET_VENDOR_RENESAS=y
 CONFIG_NET_VENDOR_ROCKER=y
 CONFIG_NET_VENDOR_ROCKER=y
 CONFIG_NET_VENDOR_SAMSUNG=y
 CONFIG_NET_VENDOR_SAMSUNG=y
 # CONFIG_SXGBE_ETH is not set
 # CONFIG_SXGBE_ETH is not set
 CONFIG_NET_VENDOR_SEEQ=y
 CONFIG_NET_VENDOR_SEEQ=y
+CONFIG_NET_VENDOR_SOLARFLARE=y
 CONFIG_NET_VENDOR_SMSC=y
 CONFIG_NET_VENDOR_SMSC=y
 CONFIG_SMC91X=m
 CONFIG_SMC91X=m
 CONFIG_SMC911X=m
 CONFIG_SMC911X=m
 CONFIG_SMSC911X=m
 CONFIG_SMSC911X=m
-# CONFIG_SMSC911X_ARCH_HOOKS is not set
+CONFIG_NET_VENDOR_SOCIONEXT=y
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_NET_VENDOR_STMICRO=y
 # CONFIG_STMMAC_ETH is not set
 # CONFIG_STMMAC_ETH is not set
 CONFIG_NET_VENDOR_SYNOPSYS=y
 CONFIG_NET_VENDOR_SYNOPSYS=y
-# CONFIG_SYNOPSYS_DWC_ETH_QOS is not set
+# CONFIG_DWC_XLGMAC is not set
 CONFIG_NET_VENDOR_TI=y
 CONFIG_NET_VENDOR_TI=y
 CONFIG_TI_DAVINCI_MDIO=y
 CONFIG_TI_DAVINCI_MDIO=y
 CONFIG_TI_DAVINCI_CPDMA=y
 CONFIG_TI_DAVINCI_CPDMA=y
@@ -1974,46 +2128,66 @@ CONFIG_TI_CPSW_PHY_SEL=y
 CONFIG_TI_CPSW_ALE=y
 CONFIG_TI_CPSW_ALE=y
 CONFIG_TI_CPSW=y
 CONFIG_TI_CPSW=y
 CONFIG_TI_CPTS=y
 CONFIG_TI_CPTS=y
+CONFIG_TI_CPTS_MOD=y
+# CONFIG_TI_PTP_BC is not set
+# CONFIG_TI_1PPS_DM_TIMER is not set
 CONFIG_NET_VENDOR_VIA=y
 CONFIG_NET_VENDOR_VIA=y
 # CONFIG_VIA_RHINE is not set
 # CONFIG_VIA_RHINE is not set
 # CONFIG_VIA_VELOCITY is not set
 # CONFIG_VIA_VELOCITY is not set
 CONFIG_NET_VENDOR_WIZNET=y
 CONFIG_NET_VENDOR_WIZNET=y
 # CONFIG_WIZNET_W5100 is not set
 # CONFIG_WIZNET_W5100 is not set
 # CONFIG_WIZNET_W5300 is not set
 # CONFIG_WIZNET_W5300 is not set
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_BUS=y
+# CONFIG_MDIO_BCM_UNIMAC is not set
+# CONFIG_MDIO_BITBANG is not set
+# CONFIG_MDIO_BUS_MUX_GPIO is not set
+# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
+# CONFIG_MDIO_HISI_FEMAC is not set
+# CONFIG_MDIO_MSCC_MIIM is not set
 CONFIG_PHYLIB=y
 CONFIG_PHYLIB=y
+CONFIG_SWPHY=y
+# CONFIG_LED_TRIGGER_PHY is not set
 
 
 #
 #
 # MII PHY device drivers
 # MII PHY device drivers
 #
 #
+CONFIG_AMD_PHY=m
 # CONFIG_AQUANTIA_PHY is not set
 # CONFIG_AQUANTIA_PHY is not set
+# CONFIG_AX88796B_PHY is not set
 CONFIG_AT803X_PHY=m
 CONFIG_AT803X_PHY=m
-CONFIG_AMD_PHY=m
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-# CONFIG_TERANETICS_PHY is not set
-CONFIG_SMSC_PHY=y
-CONFIG_BCM_NET_PHYLIB=m
-CONFIG_BROADCOM_PHY=m
 # CONFIG_BCM7XXX_PHY is not set
 # CONFIG_BCM7XXX_PHY is not set
 CONFIG_BCM87XX_PHY=m
 CONFIG_BCM87XX_PHY=m
+CONFIG_BCM_NET_PHYLIB=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_CICADA_PHY=m
+# CONFIG_CORTINA_PHY is not set
+CONFIG_DAVICOM_PHY=m
+# CONFIG_DP83822_PHY is not set
+# CONFIG_DP83TC811_PHY is not set
+CONFIG_DP83848_PHY=y
+CONFIG_DP83867_PHY=m
+CONFIG_FIXED_PHY=y
 CONFIG_ICPLUS_PHY=m
 CONFIG_ICPLUS_PHY=m
-CONFIG_REALTEK_PHY=m
-CONFIG_NATIONAL_PHY=m
-CONFIG_STE10XP=m
+# CONFIG_INTEL_XWAY_PHY is not set
 CONFIG_LSI_ET1011C_PHY=m
 CONFIG_LSI_ET1011C_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_MARVELL_PHY=m
+# CONFIG_MARVELL_10G_PHY is not set
 CONFIG_MICREL_PHY=y
 CONFIG_MICREL_PHY=y
-CONFIG_DP83848_PHY=y
-CONFIG_DP83867_PHY=m
 CONFIG_MICROCHIP_PHY=m
 CONFIG_MICROCHIP_PHY=m
-CONFIG_FIXED_PHY=m
-# CONFIG_MDIO_BITBANG is not set
-# CONFIG_MDIO_BUS_MUX_GPIO is not set
-# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
-# CONFIG_MDIO_BCM_UNIMAC is not set
+# CONFIG_MICROCHIP_T1_PHY is not set
+# CONFIG_MICROSEMI_PHY is not set
+CONFIG_NATIONAL_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_REALTEK_PHY=m
+# CONFIG_RENESAS_PHY is not set
+# CONFIG_ROCKCHIP_PHY is not set
+CONFIG_SMSC_PHY=y
+CONFIG_STE10XP=m
+# CONFIG_TERANETICS_PHY is not set
+CONFIG_VITESSE_PHY=m
+# CONFIG_XILINX_GMII2RGMII is not set
 # CONFIG_MICREL_KS8995MA is not set
 # CONFIG_MICREL_KS8995MA is not set
 CONFIG_PPP=m
 CONFIG_PPP=m
 CONFIG_PPP_BSDCOMP=m
 CONFIG_PPP_BSDCOMP=m
@@ -2057,6 +2231,7 @@ CONFIG_USB_NET_NET1080=m
 CONFIG_USB_NET_PLUSB=m
 CONFIG_USB_NET_PLUSB=m
 CONFIG_USB_NET_MCS7830=m
 CONFIG_USB_NET_MCS7830=m
 CONFIG_USB_NET_RNDIS_HOST=m
 CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET_ENABLE=m
 CONFIG_USB_NET_CDC_SUBSET=m
 CONFIG_USB_NET_CDC_SUBSET=m
 CONFIG_USB_ALI_M5632=y
 CONFIG_USB_ALI_M5632=y
 CONFIG_USB_AN2720=y
 CONFIG_USB_AN2720=y
@@ -2076,17 +2251,10 @@ CONFIG_USB_SIERRA_NET=m
 CONFIG_USB_VL600=m
 CONFIG_USB_VL600=m
 CONFIG_USB_NET_CH9200=m
 CONFIG_USB_NET_CH9200=m
 CONFIG_WLAN=y
 CONFIG_WLAN=y
-CONFIG_LIBERTAS_THINFIRM=m
-# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
-CONFIG_LIBERTAS_THINFIRM_USB=m
-CONFIG_AT76C50X_USB=m
-CONFIG_USB_ZD1201=m
-CONFIG_USB_NET_RNDIS_WLAN=m
-CONFIG_RTL8187=m
-CONFIG_RTL8187_LEDS=y
-CONFIG_MAC80211_HWSIM=m
+# CONFIG_WIRELESS_WDS is not set
+CONFIG_WLAN_VENDOR_ADMTEK=y
 CONFIG_ATH_COMMON=m
 CONFIG_ATH_COMMON=m
-CONFIG_ATH_CARDS=m
+CONFIG_WLAN_VENDOR_ATH=y
 # CONFIG_ATH_DEBUG is not set
 # CONFIG_ATH_DEBUG is not set
 CONFIG_ATH9K_HW=m
 CONFIG_ATH9K_HW=m
 CONFIG_ATH9K_COMMON=m
 CONFIG_ATH9K_COMMON=m
@@ -2101,6 +2269,7 @@ CONFIG_ATH9K_RFKILL=y
 CONFIG_ATH9K_PCOEM=y
 CONFIG_ATH9K_PCOEM=y
 CONFIG_ATH9K_HTC=m
 CONFIG_ATH9K_HTC=m
 # CONFIG_ATH9K_HTC_DEBUGFS is not set
 # CONFIG_ATH9K_HTC_DEBUGFS is not set
+# CONFIG_ATH9K_HWRNG is not set
 CONFIG_CARL9170=m
 CONFIG_CARL9170=m
 CONFIG_CARL9170_LEDS=y
 CONFIG_CARL9170_LEDS=y
 CONFIG_CARL9170_WPC=y
 CONFIG_CARL9170_WPC=y
@@ -2112,11 +2281,17 @@ CONFIG_ATH6KL_USB=m
 # CONFIG_ATH6KL_TRACING is not set
 # CONFIG_ATH6KL_TRACING is not set
 CONFIG_AR5523=m
 CONFIG_AR5523=m
 CONFIG_ATH10K=m
 CONFIG_ATH10K=m
+CONFIG_ATH10K_CE=y
+# CONFIG_ATH10K_SDIO is not set
+# CONFIG_ATH10K_USB is not set
 # CONFIG_ATH10K_DEBUG is not set
 # CONFIG_ATH10K_DEBUG is not set
 # CONFIG_ATH10K_DEBUGFS is not set
 # CONFIG_ATH10K_DEBUGFS is not set
 # CONFIG_ATH10K_TRACING is not set
 # CONFIG_ATH10K_TRACING is not set
 CONFIG_WCN36XX=m
 CONFIG_WCN36XX=m
 # CONFIG_WCN36XX_DEBUGFS is not set
 # CONFIG_WCN36XX_DEBUGFS is not set
+CONFIG_WLAN_VENDOR_ATMEL=y
+CONFIG_AT76C50X_USB=m
+CONFIG_WLAN_VENDOR_BROADCOM=y
 CONFIG_B43=m
 CONFIG_B43=m
 CONFIG_B43_BCMA=y
 CONFIG_B43_BCMA=y
 CONFIG_B43_SSB=y
 CONFIG_B43_SSB=y
@@ -2150,19 +2325,38 @@ CONFIG_BRCMFMAC_SDIO=y
 CONFIG_BRCMFMAC_USB=y
 CONFIG_BRCMFMAC_USB=y
 # CONFIG_BRCM_TRACING is not set
 # CONFIG_BRCM_TRACING is not set
 # CONFIG_BRCMDBG is not set
 # CONFIG_BRCMDBG is not set
+CONFIG_WLAN_VENDOR_CISCO=y
+CONFIG_WLAN_VENDOR_INTEL=y
+CONFIG_WLAN_VENDOR_INTERSIL=y
 CONFIG_HOSTAP=m
 CONFIG_HOSTAP=m
 CONFIG_HOSTAP_FIRMWARE=y
 CONFIG_HOSTAP_FIRMWARE=y
 # CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
 # CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+CONFIG_P54_COMMON=m
+CONFIG_P54_USB=m
+# CONFIG_P54_SPI is not set
+CONFIG_P54_LEDS=y
+CONFIG_WLAN_VENDOR_MARVELL=y
 CONFIG_LIBERTAS=m
 CONFIG_LIBERTAS=m
 CONFIG_LIBERTAS_USB=m
 CONFIG_LIBERTAS_USB=m
 CONFIG_LIBERTAS_SDIO=m
 CONFIG_LIBERTAS_SDIO=m
 CONFIG_LIBERTAS_SPI=m
 CONFIG_LIBERTAS_SPI=m
 # CONFIG_LIBERTAS_DEBUG is not set
 # CONFIG_LIBERTAS_DEBUG is not set
 CONFIG_LIBERTAS_MESH=y
 CONFIG_LIBERTAS_MESH=y
-CONFIG_P54_COMMON=m
-CONFIG_P54_USB=m
-# CONFIG_P54_SPI is not set
-CONFIG_P54_LEDS=y
+CONFIG_LIBERTAS_THINFIRM=m
+# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
+CONFIG_LIBERTAS_THINFIRM_USB=m
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_SDIO=m
+CONFIG_MWIFIEX_USB=m
+CONFIG_WLAN_VENDOR_MEDIATEK=y
+CONFIG_MT7601U=m
+CONFIG_MT76_CORE=m
+CONFIG_MT76_LEDS=y
+CONFIG_MT76_USB=m
+CONFIG_MT76x2_COMMON=m
+CONFIG_MT76x0U=m
+CONFIG_MT76x2U=m
+CONFIG_WLAN_VENDOR_RALINK=y
 CONFIG_RT2X00=m
 CONFIG_RT2X00=m
 CONFIG_RT2500USB=m
 CONFIG_RT2500USB=m
 CONFIG_RT73USB=m
 CONFIG_RT73USB=m
@@ -2172,7 +2366,7 @@ CONFIG_RT2800USB_RT35XX=y
 CONFIG_RT2800USB_RT3573=y
 CONFIG_RT2800USB_RT3573=y
 CONFIG_RT2800USB_RT53XX=y
 CONFIG_RT2800USB_RT53XX=y
 CONFIG_RT2800USB_RT55XX=y
 CONFIG_RT2800USB_RT55XX=y
-# CONFIG_RT2800USB_UNKNOWN is not set
+CONFIG_RT2800USB_UNKNOWN=y
 CONFIG_RT2800_LIB=m
 CONFIG_RT2800_LIB=m
 CONFIG_RT2X00_LIB_USB=m
 CONFIG_RT2X00_LIB_USB=m
 CONFIG_RT2X00_LIB=m
 CONFIG_RT2X00_LIB=m
@@ -2180,8 +2374,9 @@ CONFIG_RT2X00_LIB_FIRMWARE=y
 CONFIG_RT2X00_LIB_CRYPTO=y
 CONFIG_RT2X00_LIB_CRYPTO=y
 CONFIG_RT2X00_LIB_LEDS=y
 CONFIG_RT2X00_LIB_LEDS=y
 # CONFIG_RT2X00_DEBUG is not set
 # CONFIG_RT2X00_DEBUG is not set
-CONFIG_WL_MEDIATEK=y
-CONFIG_MT7601U=m
+CONFIG_WLAN_VENDOR_REALTEK=y
+CONFIG_RTL8187=m
+CONFIG_RTL8187_LEDS=y
 CONFIG_RTL_CARDS=m
 CONFIG_RTL_CARDS=m
 CONFIG_RTL8192CU=m
 CONFIG_RTL8192CU=m
 CONFIG_RTLWIFI=m
 CONFIG_RTLWIFI=m
@@ -2189,8 +2384,16 @@ CONFIG_RTLWIFI_USB=m
 # CONFIG_RTLWIFI_DEBUG is not set
 # CONFIG_RTLWIFI_DEBUG is not set
 CONFIG_RTL8192C_COMMON=m
 CONFIG_RTL8192C_COMMON=m
 CONFIG_RTL8XXXU=m
 CONFIG_RTL8XXXU=m
-# CONFIG_RTL8XXXU_UNTESTED is not set
-CONFIG_WL_TI=y
+CONFIG_RTL8XXXU_UNTESTED=y
+CONFIG_WLAN_VENDOR_RSI=y
+CONFIG_RSI_91X=m
+CONFIG_RSI_DEBUGFS=y
+# CONFIG_RSI_SDIO is not set
+CONFIG_RSI_USB=m
+CONFIG_RSI_COEX=y
+CONFIG_WLAN_VENDOR_ST=y
+# CONFIG_CW1200 is not set
+CONFIG_WLAN_VENDOR_TI=y
 CONFIG_WL1251=m
 CONFIG_WL1251=m
 CONFIG_WL1251_SPI=m
 CONFIG_WL1251_SPI=m
 CONFIG_WL1251_SDIO=m
 CONFIG_WL1251_SDIO=m
@@ -2200,16 +2403,13 @@ CONFIG_WLCORE=m
 CONFIG_WLCORE_SPI=m
 CONFIG_WLCORE_SPI=m
 CONFIG_WLCORE_SDIO=m
 CONFIG_WLCORE_SDIO=m
 CONFIG_WILINK_PLATFORM_DATA=y
 CONFIG_WILINK_PLATFORM_DATA=y
+CONFIG_WLAN_VENDOR_ZYDAS=y
+CONFIG_USB_ZD1201=m
 CONFIG_ZD1211RW=m
 CONFIG_ZD1211RW=m
 # CONFIG_ZD1211RW_DEBUG is not set
 # CONFIG_ZD1211RW_DEBUG is not set
-CONFIG_MWIFIEX=m
-CONFIG_MWIFIEX_SDIO=m
-CONFIG_MWIFIEX_USB=m
-# CONFIG_CW1200 is not set
-CONFIG_RSI_91X=m
-CONFIG_RSI_DEBUGFS=y
-# CONFIG_RSI_SDIO is not set
-CONFIG_RSI_USB=m
+CONFIG_WLAN_VENDOR_QUANTENNA=y
+CONFIG_MAC80211_HWSIM=m
+CONFIG_USB_NET_RNDIS_WLAN=m
 
 
 #
 #
 # WiMAX Wireless Broadband devices
 # WiMAX Wireless Broadband devices
@@ -2225,8 +2425,13 @@ CONFIG_IEEE802154_AT86RF230=m
 CONFIG_IEEE802154_MRF24J40=m
 CONFIG_IEEE802154_MRF24J40=m
 CONFIG_IEEE802154_CC2520=m
 CONFIG_IEEE802154_CC2520=m
 CONFIG_IEEE802154_ATUSB=m
 CONFIG_IEEE802154_ATUSB=m
+# CONFIG_IEEE802154_ADF7242 is not set
+# CONFIG_IEEE802154_CA8210 is not set
+# CONFIG_IEEE802154_MCR20A is not set
+# CONFIG_IEEE802154_HWSIM is not set
+# CONFIG_NETDEVSIM is not set
+CONFIG_NET_FAILOVER=m
 # CONFIG_ISDN is not set
 # CONFIG_ISDN is not set
-# CONFIG_NVM is not set
 
 
 #
 #
 # Input device support
 # Input device support
@@ -2248,19 +2453,20 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
 CONFIG_INPUT_JOYDEV=m
 CONFIG_INPUT_JOYDEV=m
 CONFIG_INPUT_EVDEV=m
 CONFIG_INPUT_EVDEV=m
 # CONFIG_INPUT_EVBUG is not set
 # CONFIG_INPUT_EVBUG is not set
-# CONFIG_INPUT_APMPOWER is not set
 
 
 #
 #
 # Input Device Drivers
 # Input Device Drivers
 #
 #
 CONFIG_INPUT_KEYBOARD=y
 CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ADC is not set
 CONFIG_KEYBOARD_ADP5588=m
 CONFIG_KEYBOARD_ADP5588=m
 CONFIG_KEYBOARD_ADP5589=m
 CONFIG_KEYBOARD_ADP5589=m
 CONFIG_KEYBOARD_ATKBD=y
 CONFIG_KEYBOARD_ATKBD=y
 CONFIG_KEYBOARD_QT1070=m
 CONFIG_KEYBOARD_QT1070=m
 CONFIG_KEYBOARD_QT2160=m
 CONFIG_KEYBOARD_QT2160=m
+# CONFIG_KEYBOARD_DLINK_DIR685 is not set
 CONFIG_KEYBOARD_LKKBD=m
 CONFIG_KEYBOARD_LKKBD=m
-CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_GPIO=m
 CONFIG_KEYBOARD_GPIO_POLLED=m
 CONFIG_KEYBOARD_GPIO_POLLED=m
 CONFIG_KEYBOARD_TCA6416=m
 CONFIG_KEYBOARD_TCA6416=m
 CONFIG_KEYBOARD_TCA8418=m
 CONFIG_KEYBOARD_TCA8418=m
@@ -2276,6 +2482,7 @@ CONFIG_KEYBOARD_SAMSUNG=m
 CONFIG_KEYBOARD_STOWAWAY=m
 CONFIG_KEYBOARD_STOWAWAY=m
 CONFIG_KEYBOARD_SUNKBD=m
 CONFIG_KEYBOARD_SUNKBD=m
 CONFIG_KEYBOARD_OMAP4=m
 CONFIG_KEYBOARD_OMAP4=m
+# CONFIG_KEYBOARD_TM2_TOUCHKEY is not set
 CONFIG_KEYBOARD_TWL4030=m
 CONFIG_KEYBOARD_TWL4030=m
 CONFIG_KEYBOARD_XTKBD=m
 CONFIG_KEYBOARD_XTKBD=m
 CONFIG_KEYBOARD_CAP11XX=m
 CONFIG_KEYBOARD_CAP11XX=m
@@ -2283,14 +2490,18 @@ CONFIG_KEYBOARD_BCM=m
 CONFIG_INPUT_MOUSE=y
 CONFIG_INPUT_MOUSE=y
 CONFIG_MOUSE_PS2=m
 CONFIG_MOUSE_PS2=m
 CONFIG_MOUSE_PS2_ALPS=y
 CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_BYD=y
 CONFIG_MOUSE_PS2_LOGIPS2PP=y
 CONFIG_MOUSE_PS2_LOGIPS2PP=y
 CONFIG_MOUSE_PS2_SYNAPTICS=y
 CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y
 CONFIG_MOUSE_PS2_CYPRESS=y
 CONFIG_MOUSE_PS2_CYPRESS=y
 CONFIG_MOUSE_PS2_TRACKPOINT=y
 CONFIG_MOUSE_PS2_TRACKPOINT=y
 CONFIG_MOUSE_PS2_ELANTECH=y
 CONFIG_MOUSE_PS2_ELANTECH=y
+CONFIG_MOUSE_PS2_ELANTECH_SMBUS=y
 CONFIG_MOUSE_PS2_SENTELIC=y
 CONFIG_MOUSE_PS2_SENTELIC=y
 CONFIG_MOUSE_PS2_TOUCHKIT=y
 CONFIG_MOUSE_PS2_TOUCHKIT=y
 CONFIG_MOUSE_PS2_FOCALTECH=y
 CONFIG_MOUSE_PS2_FOCALTECH=y
+CONFIG_MOUSE_PS2_SMBUS=y
 CONFIG_MOUSE_SERIAL=m
 CONFIG_MOUSE_SERIAL=m
 CONFIG_MOUSE_APPLETOUCH=m
 CONFIG_MOUSE_APPLETOUCH=m
 CONFIG_MOUSE_BCM5974=m
 CONFIG_MOUSE_BCM5974=m
@@ -2329,22 +2540,28 @@ CONFIG_JOYSTICK_JOYDUMP=m
 CONFIG_JOYSTICK_XPAD=m
 CONFIG_JOYSTICK_XPAD=m
 CONFIG_JOYSTICK_XPAD_FF=y
 CONFIG_JOYSTICK_XPAD_FF=y
 CONFIG_JOYSTICK_XPAD_LEDS=y
 CONFIG_JOYSTICK_XPAD_LEDS=y
+# CONFIG_JOYSTICK_PSXPAD_SPI is not set
+# CONFIG_JOYSTICK_PXRC is not set
 CONFIG_INPUT_TABLET=y
 CONFIG_INPUT_TABLET=y
 CONFIG_TABLET_USB_ACECAD=m
 CONFIG_TABLET_USB_ACECAD=m
 CONFIG_TABLET_USB_AIPTEK=m
 CONFIG_TABLET_USB_AIPTEK=m
 CONFIG_TABLET_USB_GTCO=m
 CONFIG_TABLET_USB_GTCO=m
 CONFIG_TABLET_USB_HANWANG=m
 CONFIG_TABLET_USB_HANWANG=m
 CONFIG_TABLET_USB_KBTAB=m
 CONFIG_TABLET_USB_KBTAB=m
+# CONFIG_TABLET_USB_PEGASUS is not set
 CONFIG_TABLET_SERIAL_WACOM4=m
 CONFIG_TABLET_SERIAL_WACOM4=m
 CONFIG_INPUT_TOUCHSCREEN=y
 CONFIG_INPUT_TOUCHSCREEN=y
 CONFIG_TOUCHSCREEN_PROPERTIES=y
 CONFIG_TOUCHSCREEN_PROPERTIES=y
 CONFIG_TOUCHSCREEN_ADS7846=m
 CONFIG_TOUCHSCREEN_ADS7846=m
 CONFIG_TOUCHSCREEN_AD7877=m
 CONFIG_TOUCHSCREEN_AD7877=m
 # CONFIG_TOUCHSCREEN_AD7879 is not set
 # CONFIG_TOUCHSCREEN_AD7879 is not set
+# CONFIG_TOUCHSCREEN_ADC is not set
 CONFIG_TOUCHSCREEN_AR1021_I2C=m
 CONFIG_TOUCHSCREEN_AR1021_I2C=m
 CONFIG_TOUCHSCREEN_ATMEL_MXT=m
 CONFIG_TOUCHSCREEN_ATMEL_MXT=m
+# CONFIG_TOUCHSCREEN_ATMEL_MXT_T37 is not set
 CONFIG_TOUCHSCREEN_AUO_PIXCIR=m
 CONFIG_TOUCHSCREEN_AUO_PIXCIR=m
 CONFIG_TOUCHSCREEN_BU21013=m
 CONFIG_TOUCHSCREEN_BU21013=m
+# CONFIG_TOUCHSCREEN_BU21029 is not set
 CONFIG_TOUCHSCREEN_CHIPONE_ICN8318=m
 CONFIG_TOUCHSCREEN_CHIPONE_ICN8318=m
 CONFIG_TOUCHSCREEN_CY8CTMG110=m
 CONFIG_TOUCHSCREEN_CY8CTMG110=m
 CONFIG_TOUCHSCREEN_CYTTSP_CORE=m
 CONFIG_TOUCHSCREEN_CYTTSP_CORE=m
@@ -2359,12 +2576,14 @@ CONFIG_TOUCHSCREEN_HAMPSHIRE=m
 CONFIG_TOUCHSCREEN_EETI=m
 CONFIG_TOUCHSCREEN_EETI=m
 CONFIG_TOUCHSCREEN_EGALAX=m
 CONFIG_TOUCHSCREEN_EGALAX=m
 # CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set
 # CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set
-CONFIG_TOUCHSCREEN_FT6236=m
-CONFIG_TOUCHSCREEN_EGALAX_I2C=m
+# CONFIG_TOUCHSCREEN_EXC3000 is not set
 CONFIG_TOUCHSCREEN_FUJITSU=m
 CONFIG_TOUCHSCREEN_FUJITSU=m
 CONFIG_TOUCHSCREEN_GOODIX=m
 CONFIG_TOUCHSCREEN_GOODIX=m
+# CONFIG_TOUCHSCREEN_HIDEEP is not set
 CONFIG_TOUCHSCREEN_ILI210X=m
 CONFIG_TOUCHSCREEN_ILI210X=m
+# CONFIG_TOUCHSCREEN_S6SY761 is not set
 CONFIG_TOUCHSCREEN_GUNZE=m
 CONFIG_TOUCHSCREEN_GUNZE=m
+# CONFIG_TOUCHSCREEN_EKTF2127 is not set
 CONFIG_TOUCHSCREEN_ELAN=m
 CONFIG_TOUCHSCREEN_ELAN=m
 CONFIG_TOUCHSCREEN_ELO=m
 CONFIG_TOUCHSCREEN_ELO=m
 CONFIG_TOUCHSCREEN_WACOM_W8001=m
 CONFIG_TOUCHSCREEN_WACOM_W8001=m
@@ -2410,14 +2629,17 @@ CONFIG_TOUCHSCREEN_TSC200X_CORE=m
 CONFIG_TOUCHSCREEN_TSC2004=m
 CONFIG_TOUCHSCREEN_TSC2004=m
 CONFIG_TOUCHSCREEN_TSC2005=m
 CONFIG_TOUCHSCREEN_TSC2005=m
 CONFIG_TOUCHSCREEN_TSC2007=m
 CONFIG_TOUCHSCREEN_TSC2007=m
+# CONFIG_TOUCHSCREEN_TSC2007_IIO is not set
 # CONFIG_TOUCHSCREEN_RM_TS is not set
 # CONFIG_TOUCHSCREEN_RM_TS is not set
 # CONFIG_TOUCHSCREEN_SILEAD is not set
 # CONFIG_TOUCHSCREEN_SILEAD is not set
 # CONFIG_TOUCHSCREEN_SIS_I2C is not set
 # CONFIG_TOUCHSCREEN_SIS_I2C is not set
 CONFIG_TOUCHSCREEN_ST1232=m
 CONFIG_TOUCHSCREEN_ST1232=m
+# CONFIG_TOUCHSCREEN_STMFTS is not set
 # CONFIG_TOUCHSCREEN_SUR40 is not set
 # CONFIG_TOUCHSCREEN_SUR40 is not set
 # CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set
 # CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set
 CONFIG_TOUCHSCREEN_SX8654=m
 CONFIG_TOUCHSCREEN_SX8654=m
 CONFIG_TOUCHSCREEN_TPS6507X=m
 CONFIG_TOUCHSCREEN_TPS6507X=m
+# CONFIG_TOUCHSCREEN_ZET6223 is not set
 CONFIG_TOUCHSCREEN_ZFORCE=m
 CONFIG_TOUCHSCREEN_ZFORCE=m
 # CONFIG_TOUCHSCREEN_COLIBRI_VF50 is not set
 # CONFIG_TOUCHSCREEN_COLIBRI_VF50 is not set
 CONFIG_TOUCHSCREEN_ROHM_BU21023=m
 CONFIG_TOUCHSCREEN_ROHM_BU21023=m
@@ -2425,14 +2647,14 @@ CONFIG_INPUT_MISC=y
 CONFIG_INPUT_AD714X=m
 CONFIG_INPUT_AD714X=m
 CONFIG_INPUT_AD714X_I2C=m
 CONFIG_INPUT_AD714X_I2C=m
 CONFIG_INPUT_AD714X_SPI=m
 CONFIG_INPUT_AD714X_SPI=m
+# CONFIG_INPUT_ATMEL_CAPTOUCH is not set
 CONFIG_INPUT_BMA150=m
 CONFIG_INPUT_BMA150=m
 CONFIG_INPUT_E3X0_BUTTON=m
 CONFIG_INPUT_E3X0_BUTTON=m
 CONFIG_INPUT_MC13783_PWRBUTTON=m
 CONFIG_INPUT_MC13783_PWRBUTTON=m
 CONFIG_INPUT_MMA8450=m
 CONFIG_INPUT_MMA8450=m
-CONFIG_INPUT_MPU3050=m
 CONFIG_INPUT_GP2A=m
 CONFIG_INPUT_GP2A=m
 # CONFIG_INPUT_GPIO_BEEPER is not set
 # CONFIG_INPUT_GPIO_BEEPER is not set
-CONFIG_INPUT_GPIO_TILT_POLLED=m
+# CONFIG_INPUT_GPIO_DECODER is not set
 CONFIG_INPUT_ATI_REMOTE2=m
 CONFIG_INPUT_ATI_REMOTE2=m
 CONFIG_INPUT_KEYSPAN_REMOTE=m
 CONFIG_INPUT_KEYSPAN_REMOTE=m
 CONFIG_INPUT_KXTJ9=m
 CONFIG_INPUT_KXTJ9=m
@@ -2442,7 +2664,6 @@ CONFIG_INPUT_YEALINK=m
 CONFIG_INPUT_CM109=m
 CONFIG_INPUT_CM109=m
 CONFIG_INPUT_REGULATOR_HAPTIC=m
 CONFIG_INPUT_REGULATOR_HAPTIC=m
 CONFIG_INPUT_TPS65218_PWRBUTTON=y
 CONFIG_INPUT_TPS65218_PWRBUTTON=y
-CONFIG_INPUT_AXP20X_PEK=y
 CONFIG_INPUT_TWL4030_PWRBUTTON=y
 CONFIG_INPUT_TWL4030_PWRBUTTON=y
 CONFIG_INPUT_TWL4030_VIBRA=y
 CONFIG_INPUT_TWL4030_VIBRA=y
 CONFIG_INPUT_TWL6040_VIBRA=y
 CONFIG_INPUT_TWL6040_VIBRA=y
@@ -2450,6 +2671,7 @@ CONFIG_INPUT_UINPUT=y
 CONFIG_INPUT_PALMAS_PWRBUTTON=y
 CONFIG_INPUT_PALMAS_PWRBUTTON=y
 CONFIG_INPUT_PCF8574=m
 CONFIG_INPUT_PCF8574=m
 CONFIG_INPUT_PWM_BEEPER=m
 CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_PWM_VIBRA is not set
 CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
 CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
 CONFIG_INPUT_DA9052_ONKEY=m
 CONFIG_INPUT_DA9052_ONKEY=m
 CONFIG_INPUT_DA9055_ONKEY=m
 CONFIG_INPUT_DA9055_ONKEY=m
@@ -2464,6 +2686,19 @@ CONFIG_INPUT_CMA3000_I2C=m
 CONFIG_INPUT_DRV260X_HAPTICS=m
 CONFIG_INPUT_DRV260X_HAPTICS=m
 # CONFIG_INPUT_DRV2665_HAPTICS is not set
 # CONFIG_INPUT_DRV2665_HAPTICS is not set
 CONFIG_INPUT_DRV2667_HAPTICS=m
 CONFIG_INPUT_DRV2667_HAPTICS=m
+CONFIG_RMI4_CORE=m
+# CONFIG_RMI4_I2C is not set
+# CONFIG_RMI4_SPI is not set
+# CONFIG_RMI4_SMB is not set
+CONFIG_RMI4_F03=y
+CONFIG_RMI4_F03_SERIO=m
+CONFIG_RMI4_2D_SENSOR=y
+CONFIG_RMI4_F11=y
+CONFIG_RMI4_F12=y
+CONFIG_RMI4_F30=y
+# CONFIG_RMI4_F34 is not set
+# CONFIG_RMI4_F54 is not set
+# CONFIG_RMI4_F55 is not set
 
 
 #
 #
 # Hardware I/O ports
 # Hardware I/O ports
@@ -2476,6 +2711,7 @@ CONFIG_SERIO_ALTERA_PS2=m
 # CONFIG_SERIO_PS2MULT is not set
 # CONFIG_SERIO_PS2MULT is not set
 # CONFIG_SERIO_ARC_PS2 is not set
 # CONFIG_SERIO_ARC_PS2 is not set
 # CONFIG_SERIO_APBPS2 is not set
 # CONFIG_SERIO_APBPS2 is not set
+# CONFIG_SERIO_GPIO_PS2 is not set
 # CONFIG_USERIO is not set
 # CONFIG_USERIO is not set
 CONFIG_GAMEPORT=m
 CONFIG_GAMEPORT=m
 # CONFIG_GAMEPORT_NS558 is not set
 # CONFIG_GAMEPORT_NS558 is not set
@@ -2488,27 +2724,27 @@ CONFIG_TTY=y
 CONFIG_VT=y
 CONFIG_VT=y
 CONFIG_CONSOLE_TRANSLATIONS=y
 CONFIG_CONSOLE_TRANSLATIONS=y
 CONFIG_VT_CONSOLE=y
 CONFIG_VT_CONSOLE=y
-CONFIG_VT_CONSOLE_SLEEP=y
 CONFIG_HW_CONSOLE=y
 CONFIG_HW_CONSOLE=y
 CONFIG_VT_HW_CONSOLE_BINDING=y
 CONFIG_VT_HW_CONSOLE_BINDING=y
 CONFIG_UNIX98_PTYS=y
 CONFIG_UNIX98_PTYS=y
-CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
 # CONFIG_LEGACY_PTYS is not set
 # CONFIG_LEGACY_PTYS is not set
 # CONFIG_SERIAL_NONSTANDARD is not set
 # CONFIG_SERIAL_NONSTANDARD is not set
 CONFIG_N_GSM=m
 CONFIG_N_GSM=m
 # CONFIG_TRACE_SINK is not set
 # CONFIG_TRACE_SINK is not set
+CONFIG_LDISC_AUTOLOAD=y
 CONFIG_DEVMEM=y
 CONFIG_DEVMEM=y
 CONFIG_DEVKMEM=y
 CONFIG_DEVKMEM=y
 
 
 #
 #
 # Serial drivers
 # Serial drivers
 #
 #
+CONFIG_SERIAL_EARLYCON=y
 # CONFIG_SERIAL_8250 is not set
 # CONFIG_SERIAL_8250 is not set
 
 
 #
 #
 # Non-8250 serial port support
 # Non-8250 serial port support
 #
 #
-# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set
+CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST=y
 # CONFIG_SERIAL_KGDB_NMI is not set
 # CONFIG_SERIAL_KGDB_NMI is not set
 # CONFIG_SERIAL_MAX3100 is not set
 # CONFIG_SERIAL_MAX3100 is not set
 # CONFIG_SERIAL_MAX310X is not set
 # CONFIG_SERIAL_MAX310X is not set
@@ -2529,8 +2765,7 @@ CONFIG_SERIAL_OMAP_CONSOLE=y
 # CONFIG_SERIAL_FSL_LPUART is not set
 # CONFIG_SERIAL_FSL_LPUART is not set
 # CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
 # CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
 # CONFIG_SERIAL_ST_ASC is not set
 # CONFIG_SERIAL_ST_ASC is not set
-# CONFIG_SERIAL_STM32 is not set
-# CONFIG_SERIAL_MVEBU_UART is not set
+# CONFIG_SERIAL_DEV_BUS is not set
 # CONFIG_TTY_PRINTK is not set
 # CONFIG_TTY_PRINTK is not set
 CONFIG_HVC_DRIVER=y
 CONFIG_HVC_DRIVER=y
 # CONFIG_HVC_DCC is not set
 # CONFIG_HVC_DCC is not set
@@ -2540,16 +2775,18 @@ CONFIG_HW_RANDOM=m
 # CONFIG_HW_RANDOM_TIMERIOMEM is not set
 # CONFIG_HW_RANDOM_TIMERIOMEM is not set
 CONFIG_HW_RANDOM_OMAP=m
 CONFIG_HW_RANDOM_OMAP=m
 CONFIG_HW_RANDOM_VIRTIO=m
 CONFIG_HW_RANDOM_VIRTIO=m
-CONFIG_HW_RANDOM_TPM=m
-# CONFIG_NVRAM is not set
-# CONFIG_R3964 is not set
 # CONFIG_RAW_DRIVER is not set
 # CONFIG_RAW_DRIVER is not set
 CONFIG_TCG_TPM=m
 CONFIG_TCG_TPM=m
+CONFIG_HW_RANDOM_TPM=y
+# CONFIG_TCG_TIS is not set
+# CONFIG_TCG_TIS_SPI is not set
 CONFIG_TCG_TIS_I2C_ATMEL=m
 CONFIG_TCG_TIS_I2C_ATMEL=m
 # CONFIG_TCG_TIS_I2C_INFINEON is not set
 # CONFIG_TCG_TIS_I2C_INFINEON is not set
 # CONFIG_TCG_TIS_I2C_NUVOTON is not set
 # CONFIG_TCG_TIS_I2C_NUVOTON is not set
 # CONFIG_TCG_ATMEL is not set
 # CONFIG_TCG_ATMEL is not set
-# CONFIG_TCG_TIS_ST33ZP24 is not set
+# CONFIG_TCG_VTPM_PROXY is not set
+# CONFIG_TCG_TIS_ST33ZP24_I2C is not set
+# CONFIG_TCG_TIS_ST33ZP24_SPI is not set
 # CONFIG_XILLYBUS is not set
 # CONFIG_XILLYBUS is not set
 
 
 #
 #
@@ -2566,11 +2803,14 @@ CONFIG_I2C_MUX=y
 #
 #
 CONFIG_I2C_ARB_GPIO_CHALLENGE=m
 CONFIG_I2C_ARB_GPIO_CHALLENGE=m
 # CONFIG_I2C_MUX_GPIO is not set
 # CONFIG_I2C_MUX_GPIO is not set
+# CONFIG_I2C_MUX_GPMUX is not set
+# CONFIG_I2C_MUX_LTC4306 is not set
 # CONFIG_I2C_MUX_PCA9541 is not set
 # CONFIG_I2C_MUX_PCA9541 is not set
 CONFIG_I2C_MUX_PCA954x=y
 CONFIG_I2C_MUX_PCA954x=y
 CONFIG_I2C_MUX_PINCTRL=y
 CONFIG_I2C_MUX_PINCTRL=y
 # CONFIG_I2C_MUX_REG is not set
 # CONFIG_I2C_MUX_REG is not set
 # CONFIG_I2C_DEMUX_PINCTRL is not set
 # CONFIG_I2C_DEMUX_PINCTRL is not set
+# CONFIG_I2C_MUX_MLXCPLD is not set
 CONFIG_I2C_HELPER_AUTO=y
 CONFIG_I2C_HELPER_AUTO=y
 CONFIG_I2C_ALGOBIT=y
 CONFIG_I2C_ALGOBIT=y
 CONFIG_I2C_ALGOPCA=m
 CONFIG_I2C_ALGOPCA=m
@@ -2586,10 +2826,10 @@ CONFIG_I2C_ALGOPCA=m
 # CONFIG_I2C_DESIGNWARE_PLATFORM is not set
 # CONFIG_I2C_DESIGNWARE_PLATFORM is not set
 # CONFIG_I2C_EMEV2 is not set
 # CONFIG_I2C_EMEV2 is not set
 CONFIG_I2C_GPIO=m
 CONFIG_I2C_GPIO=m
+# CONFIG_I2C_GPIO_FAULT_INJECTOR is not set
 CONFIG_I2C_OCORES=m
 CONFIG_I2C_OCORES=m
 CONFIG_I2C_OMAP=y
 CONFIG_I2C_OMAP=y
 CONFIG_I2C_PCA_PLATFORM=m
 CONFIG_I2C_PCA_PLATFORM=m
-# CONFIG_I2C_PXA_PCI is not set
 CONFIG_I2C_RK3X=y
 CONFIG_I2C_RK3X=y
 CONFIG_I2C_SIMTEC=m
 CONFIG_I2C_SIMTEC=m
 # CONFIG_I2C_XILINX is not set
 # CONFIG_I2C_XILINX is not set
@@ -2616,32 +2856,35 @@ CONFIG_I2C_VIPERBOARD=m
 CONFIG_SPI=y
 CONFIG_SPI=y
 # CONFIG_SPI_DEBUG is not set
 # CONFIG_SPI_DEBUG is not set
 CONFIG_SPI_MASTER=y
 CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
 
 
 #
 #
 # SPI Master Controller Drivers
 # SPI Master Controller Drivers
 #
 #
 # CONFIG_SPI_ALTERA is not set
 # CONFIG_SPI_ALTERA is not set
+# CONFIG_SPI_AXI_SPI_ENGINE is not set
 CONFIG_SPI_BITBANG=y
 CONFIG_SPI_BITBANG=y
 # CONFIG_SPI_CADENCE is not set
 # CONFIG_SPI_CADENCE is not set
+# CONFIG_SPI_DESIGNWARE is not set
 CONFIG_SPI_DLN2=m
 CONFIG_SPI_DLN2=m
 CONFIG_SPI_GPIO=y
 CONFIG_SPI_GPIO=y
 # CONFIG_SPI_FSL_SPI is not set
 # CONFIG_SPI_FSL_SPI is not set
 # CONFIG_SPI_OC_TINY is not set
 # CONFIG_SPI_OC_TINY is not set
 CONFIG_SPI_OMAP24XX=y
 CONFIG_SPI_OMAP24XX=y
 CONFIG_SPI_TI_QSPI=m
 CONFIG_SPI_TI_QSPI=m
-# CONFIG_SPI_PXA2XX_PCI is not set
 CONFIG_SPI_ROCKCHIP=m
 CONFIG_SPI_ROCKCHIP=m
 # CONFIG_SPI_SC18IS602 is not set
 # CONFIG_SPI_SC18IS602 is not set
 # CONFIG_SPI_XCOMM is not set
 # CONFIG_SPI_XCOMM is not set
 # CONFIG_SPI_XILINX is not set
 # CONFIG_SPI_XILINX is not set
 # CONFIG_SPI_ZYNQMP_GQSPI is not set
 # CONFIG_SPI_ZYNQMP_GQSPI is not set
-# CONFIG_SPI_DESIGNWARE is not set
 
 
 #
 #
 # SPI Protocol Masters
 # SPI Protocol Masters
 #
 #
 CONFIG_SPI_SPIDEV=y
 CONFIG_SPI_SPIDEV=y
+# CONFIG_SPI_LOOPBACK_TEST is not set
 # CONFIG_SPI_TLE62X0 is not set
 # CONFIG_SPI_TLE62X0 is not set
+# CONFIG_SPI_SLAVE is not set
 # CONFIG_SPMI is not set
 # CONFIG_SPMI is not set
 CONFIG_HSI=m
 CONFIG_HSI=m
 CONFIG_HSI_BOARDINFO=y
 CONFIG_HSI_BOARDINFO=y
@@ -2654,10 +2897,6 @@ CONFIG_HSI_BOARDINFO=y
 # HSI clients
 # HSI clients
 #
 #
 # CONFIG_HSI_CHAR is not set
 # CONFIG_HSI_CHAR is not set
-
-#
-# PPS support
-#
 CONFIG_PPS=y
 CONFIG_PPS=y
 # CONFIG_PPS_DEBUG is not set
 # CONFIG_PPS_DEBUG is not set
 # CONFIG_NTP_PPS is not set
 # CONFIG_NTP_PPS is not set
@@ -2682,29 +2921,25 @@ CONFIG_PTP_1588_CLOCK=y
 # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
 # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
 #
 #
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL=y
-
-#
-# Pin controllers
-#
+CONFIG_GENERIC_PINCTRL_GROUPS=y
 CONFIG_PINMUX=y
 CONFIG_PINMUX=y
+CONFIG_GENERIC_PINMUX_FUNCTIONS=y
 CONFIG_PINCONF=y
 CONFIG_PINCONF=y
 CONFIG_GENERIC_PINCONF=y
 CONFIG_GENERIC_PINCONF=y
 # CONFIG_DEBUG_PINCTRL is not set
 # CONFIG_DEBUG_PINCTRL is not set
 CONFIG_PINCTRL_AS3722=y
 CONFIG_PINCTRL_AS3722=y
 # CONFIG_PINCTRL_AMD is not set
 # CONFIG_PINCTRL_AMD is not set
+# CONFIG_PINCTRL_MCP23S08 is not set
 CONFIG_PINCTRL_SINGLE=y
 CONFIG_PINCTRL_SINGLE=y
-CONFIG_PINCTRL_TI_IODELAY=y
+# CONFIG_PINCTRL_SX150X is not set
 CONFIG_PINCTRL_PALMAS=y
 CONFIG_PINCTRL_PALMAS=y
 CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
 CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
-CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
 CONFIG_GPIOLIB=y
 CONFIG_GPIOLIB=y
-CONFIG_GPIO_DEVRES=y
+CONFIG_GPIOLIB_FASTPATH_LIMIT=512
 CONFIG_OF_GPIO=y
 CONFIG_OF_GPIO=y
 CONFIG_GPIOLIB_IRQCHIP=y
 CONFIG_GPIOLIB_IRQCHIP=y
 # CONFIG_DEBUG_GPIO is not set
 # CONFIG_DEBUG_GPIO is not set
 CONFIG_GPIO_SYSFS=y
 CONFIG_GPIO_SYSFS=y
-CONFIG_GPIO_OF_HELPER=y
 CONFIG_GPIO_GENERIC=y
 CONFIG_GPIO_GENERIC=y
 CONFIG_GPIO_MAX730X=m
 CONFIG_GPIO_MAX730X=m
 
 
@@ -2714,14 +2949,17 @@ CONFIG_GPIO_MAX730X=m
 # CONFIG_GPIO_74XX_MMIO is not set
 # CONFIG_GPIO_74XX_MMIO is not set
 # CONFIG_GPIO_ALTERA is not set
 # CONFIG_GPIO_ALTERA is not set
 # CONFIG_GPIO_DWAPB is not set
 # CONFIG_GPIO_DWAPB is not set
-# CONFIG_GPIO_EM is not set
+# CONFIG_GPIO_FTGPIO010 is not set
 CONFIG_GPIO_GENERIC_PLATFORM=y
 CONFIG_GPIO_GENERIC_PLATFORM=y
 # CONFIG_GPIO_GRGPIO is not set
 # CONFIG_GPIO_GRGPIO is not set
+# CONFIG_GPIO_HLWD is not set
+# CONFIG_GPIO_MB86S7X is not set
+# CONFIG_GPIO_MOCKUP is not set
+# CONFIG_GPIO_MPC8XXX is not set
 CONFIG_GPIO_OMAP=y
 CONFIG_GPIO_OMAP=y
 CONFIG_GPIO_SYSCON=y
 CONFIG_GPIO_SYSCON=y
 # CONFIG_GPIO_XILINX is not set
 # CONFIG_GPIO_XILINX is not set
 # CONFIG_GPIO_ZEVIO is not set
 # CONFIG_GPIO_ZEVIO is not set
-# CONFIG_GPIO_ZX is not set
 
 
 #
 #
 # I2C GPIO expanders
 # I2C GPIO expanders
@@ -2733,7 +2971,7 @@ CONFIG_GPIO_MAX732X=m
 CONFIG_GPIO_PCA953X=y
 CONFIG_GPIO_PCA953X=y
 CONFIG_GPIO_PCA953X_IRQ=y
 CONFIG_GPIO_PCA953X_IRQ=y
 CONFIG_GPIO_PCF857X=m
 CONFIG_GPIO_PCF857X=m
-CONFIG_GPIO_SX150X=y
+# CONFIG_GPIO_TPIC2810 is not set
 
 
 #
 #
 # MFD GPIO expanders
 # MFD GPIO expanders
@@ -2741,7 +2979,9 @@ CONFIG_GPIO_SX150X=y
 CONFIG_GPIO_DA9052=y
 CONFIG_GPIO_DA9052=y
 CONFIG_GPIO_DA9055=y
 CONFIG_GPIO_DA9055=y
 CONFIG_GPIO_DLN2=m
 CONFIG_GPIO_DLN2=m
+# CONFIG_HTC_EGPIO is not set
 CONFIG_GPIO_PALMAS=y
 CONFIG_GPIO_PALMAS=y
+# CONFIG_GPIO_TPS65218 is not set
 CONFIG_GPIO_TPS65910=y
 CONFIG_GPIO_TPS65910=y
 CONFIG_GPIO_TWL4030=y
 CONFIG_GPIO_TWL4030=y
 CONFIG_GPIO_TWL6040=y
 CONFIG_GPIO_TWL6040=y
@@ -2750,13 +2990,11 @@ CONFIG_GPIO_TWL6040=y
 # SPI GPIO expanders
 # SPI GPIO expanders
 #
 #
 CONFIG_GPIO_74X164=m
 CONFIG_GPIO_74X164=m
+# CONFIG_GPIO_MAX3191X is not set
 CONFIG_GPIO_MAX7301=m
 CONFIG_GPIO_MAX7301=m
 CONFIG_GPIO_MC33880=m
 CONFIG_GPIO_MC33880=m
-
-#
-# SPI or I2C GPIO expanders
-#
-CONFIG_GPIO_MCP23S08=m
+# CONFIG_GPIO_PISOSR is not set
+# CONFIG_GPIO_XRA1403 is not set
 
 
 #
 #
 # USB GPIO expanders
 # USB GPIO expanders
@@ -2779,37 +3017,57 @@ CONFIG_HDQ_MASTER_OMAP=m
 #
 #
 CONFIG_W1_SLAVE_THERM=m
 CONFIG_W1_SLAVE_THERM=m
 CONFIG_W1_SLAVE_SMEM=m
 CONFIG_W1_SLAVE_SMEM=m
+# CONFIG_W1_SLAVE_DS2405 is not set
 CONFIG_W1_SLAVE_DS2408=m
 CONFIG_W1_SLAVE_DS2408=m
 CONFIG_W1_SLAVE_DS2408_READBACK=y
 CONFIG_W1_SLAVE_DS2408_READBACK=y
 CONFIG_W1_SLAVE_DS2413=m
 CONFIG_W1_SLAVE_DS2413=m
 CONFIG_W1_SLAVE_DS2406=m
 CONFIG_W1_SLAVE_DS2406=m
 CONFIG_W1_SLAVE_DS2423=m
 CONFIG_W1_SLAVE_DS2423=m
+# CONFIG_W1_SLAVE_DS2805 is not set
 CONFIG_W1_SLAVE_DS2431=m
 CONFIG_W1_SLAVE_DS2431=m
 CONFIG_W1_SLAVE_DS2433=m
 CONFIG_W1_SLAVE_DS2433=m
 CONFIG_W1_SLAVE_DS2433_CRC=y
 CONFIG_W1_SLAVE_DS2433_CRC=y
-CONFIG_W1_SLAVE_DS2760=m
+# CONFIG_W1_SLAVE_DS2438 is not set
 CONFIG_W1_SLAVE_DS2780=m
 CONFIG_W1_SLAVE_DS2780=m
 CONFIG_W1_SLAVE_DS2781=m
 CONFIG_W1_SLAVE_DS2781=m
 CONFIG_W1_SLAVE_DS28E04=m
 CONFIG_W1_SLAVE_DS28E04=m
-CONFIG_W1_SLAVE_BQ27000=m
+# CONFIG_W1_SLAVE_DS28E17 is not set
+CONFIG_POWER_AVS=y
+CONFIG_POWER_RESET=y
+CONFIG_POWER_RESET_AS3722=y
+# CONFIG_POWER_RESET_BRCMKONA is not set
+# CONFIG_POWER_RESET_BRCMSTB is not set
+CONFIG_POWER_RESET_GPIO=y
+CONFIG_POWER_RESET_GPIO_RESTART=y
+# CONFIG_POWER_RESET_LTC2952 is not set
+CONFIG_POWER_RESET_RESTART=y
+# CONFIG_POWER_RESET_VERSATILE is not set
+CONFIG_POWER_RESET_VEXPRESS=y
+CONFIG_POWER_RESET_SYSCON=y
+CONFIG_POWER_RESET_SYSCON_POWEROFF=y
+# CONFIG_SYSCON_REBOOT_MODE is not set
 CONFIG_POWER_SUPPLY=y
 CONFIG_POWER_SUPPLY=y
 # CONFIG_POWER_SUPPLY_DEBUG is not set
 # CONFIG_POWER_SUPPLY_DEBUG is not set
 # CONFIG_PDA_POWER is not set
 # CONFIG_PDA_POWER is not set
-# CONFIG_APM_POWER is not set
 CONFIG_GENERIC_ADC_BATTERY=m
 CONFIG_GENERIC_ADC_BATTERY=m
 # CONFIG_TEST_POWER is not set
 # CONFIG_TEST_POWER is not set
+# CONFIG_CHARGER_ADP5061 is not set
 # CONFIG_BATTERY_DS2760 is not set
 # CONFIG_BATTERY_DS2760 is not set
 # CONFIG_BATTERY_DS2780 is not set
 # CONFIG_BATTERY_DS2780 is not set
 # CONFIG_BATTERY_DS2781 is not set
 # CONFIG_BATTERY_DS2781 is not set
 # CONFIG_BATTERY_DS2782 is not set
 # CONFIG_BATTERY_DS2782 is not set
+# CONFIG_BATTERY_LEGO_EV3 is not set
 # CONFIG_BATTERY_SBS is not set
 # CONFIG_BATTERY_SBS is not set
+# CONFIG_CHARGER_SBS is not set
+# CONFIG_MANAGER_SBS is not set
 CONFIG_BATTERY_BQ27XXX=m
 CONFIG_BATTERY_BQ27XXX=m
-CONFIG_BATTERY_BQ27XXX_I2C=y
-CONFIG_BATTERY_BQ27XXX_PLATFORM=y
+CONFIG_BATTERY_BQ27XXX_I2C=m
+CONFIG_BATTERY_BQ27XXX_HDQ=m
+# CONFIG_BATTERY_BQ27XXX_DT_UPDATES_NVM is not set
 CONFIG_BATTERY_DA9052=m
 CONFIG_BATTERY_DA9052=m
-CONFIG_AXP288_FUEL_GAUGE=m
 # CONFIG_BATTERY_MAX17040 is not set
 # CONFIG_BATTERY_MAX17040 is not set
 # CONFIG_BATTERY_MAX17042 is not set
 # CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_BATTERY_MAX1721X is not set
 # CONFIG_BATTERY_TWL4030_MADC is not set
 # CONFIG_BATTERY_TWL4030_MADC is not set
 CONFIG_BATTERY_RX51=m
 CONFIG_BATTERY_RX51=m
 CONFIG_CHARGER_ISP1704=m
 CONFIG_CHARGER_ISP1704=m
@@ -2818,6 +3076,8 @@ CONFIG_CHARGER_ISP1704=m
 # CONFIG_CHARGER_LP8727 is not set
 # CONFIG_CHARGER_LP8727 is not set
 CONFIG_CHARGER_GPIO=m
 CONFIG_CHARGER_GPIO=m
 # CONFIG_CHARGER_MANAGER is not set
 # CONFIG_CHARGER_MANAGER is not set
+# CONFIG_CHARGER_LTC3651 is not set
+# CONFIG_CHARGER_DETECTOR_MAX14656 is not set
 CONFIG_CHARGER_BQ2415X=m
 CONFIG_CHARGER_BQ2415X=m
 # CONFIG_CHARGER_BQ24190 is not set
 # CONFIG_CHARGER_BQ24190 is not set
 # CONFIG_CHARGER_BQ24257 is not set
 # CONFIG_CHARGER_BQ24257 is not set
@@ -2827,19 +3087,6 @@ CONFIG_CHARGER_BQ2415X=m
 CONFIG_CHARGER_TPS65217=m
 CONFIG_CHARGER_TPS65217=m
 # CONFIG_BATTERY_GAUGE_LTC2941 is not set
 # CONFIG_BATTERY_GAUGE_LTC2941 is not set
 # CONFIG_CHARGER_RT9455 is not set
 # CONFIG_CHARGER_RT9455 is not set
-CONFIG_AXP20X_POWER=y
-CONFIG_POWER_RESET=y
-CONFIG_POWER_RESET_AS3722=y
-# CONFIG_POWER_RESET_BRCMSTB is not set
-CONFIG_POWER_RESET_GPIO=y
-CONFIG_POWER_RESET_GPIO_RESTART=y
-# CONFIG_POWER_RESET_LTC2952 is not set
-CONFIG_POWER_RESET_RESTART=y
-# CONFIG_POWER_RESET_VERSATILE is not set
-CONFIG_POWER_RESET_VEXPRESS=y
-CONFIG_POWER_RESET_SYSCON=y
-CONFIG_POWER_RESET_SYSCON_POWEROFF=y
-CONFIG_POWER_AVS=y
 CONFIG_HWMON=y
 CONFIG_HWMON=y
 CONFIG_HWMON_VID=m
 CONFIG_HWMON_VID=m
 # CONFIG_HWMON_DEBUG_CHIP is not set
 # CONFIG_HWMON_DEBUG_CHIP is not set
@@ -2864,6 +3111,7 @@ CONFIG_SENSORS_ADT7462=m
 CONFIG_SENSORS_ADT7470=m
 CONFIG_SENSORS_ADT7470=m
 CONFIG_SENSORS_ADT7475=m
 CONFIG_SENSORS_ADT7475=m
 CONFIG_SENSORS_ASC7621=m
 CONFIG_SENSORS_ASC7621=m
+# CONFIG_SENSORS_ASPEED is not set
 CONFIG_SENSORS_ATXP1=m
 CONFIG_SENSORS_ATXP1=m
 CONFIG_SENSORS_DS620=m
 CONFIG_SENSORS_DS620=m
 CONFIG_SENSORS_DS1621=m
 CONFIG_SENSORS_DS1621=m
@@ -2873,6 +3121,7 @@ CONFIG_SENSORS_F71805F=m
 CONFIG_SENSORS_F71882FG=m
 CONFIG_SENSORS_F71882FG=m
 CONFIG_SENSORS_F75375S=m
 CONFIG_SENSORS_F75375S=m
 CONFIG_SENSORS_MC13783_ADC=m
 CONFIG_SENSORS_MC13783_ADC=m
+# CONFIG_SENSORS_FTSTEUTATES is not set
 CONFIG_SENSORS_GL518SM=m
 CONFIG_SENSORS_GL518SM=m
 CONFIG_SENSORS_GL520SM=m
 CONFIG_SENSORS_GL520SM=m
 CONFIG_SENSORS_G760A=m
 CONFIG_SENSORS_G760A=m
@@ -2885,6 +3134,7 @@ CONFIG_SENSORS_JC42=m
 CONFIG_SENSORS_POWR1220=m
 CONFIG_SENSORS_POWR1220=m
 CONFIG_SENSORS_LINEAGE=m
 CONFIG_SENSORS_LINEAGE=m
 CONFIG_SENSORS_LTC2945=m
 CONFIG_SENSORS_LTC2945=m
+# CONFIG_SENSORS_LTC2990 is not set
 CONFIG_SENSORS_LTC4151=m
 CONFIG_SENSORS_LTC4151=m
 CONFIG_SENSORS_LTC4215=m
 CONFIG_SENSORS_LTC4215=m
 CONFIG_SENSORS_LTC4222=m
 CONFIG_SENSORS_LTC4222=m
@@ -2896,13 +3146,15 @@ CONFIG_SENSORS_MAX16065=m
 CONFIG_SENSORS_MAX1619=m
 CONFIG_SENSORS_MAX1619=m
 CONFIG_SENSORS_MAX1668=m
 CONFIG_SENSORS_MAX1668=m
 CONFIG_SENSORS_MAX197=m
 CONFIG_SENSORS_MAX197=m
+# CONFIG_SENSORS_MAX31722 is not set
+# CONFIG_SENSORS_MAX6621 is not set
 CONFIG_SENSORS_MAX6639=m
 CONFIG_SENSORS_MAX6639=m
 CONFIG_SENSORS_MAX6642=m
 CONFIG_SENSORS_MAX6642=m
 CONFIG_SENSORS_MAX6650=m
 CONFIG_SENSORS_MAX6650=m
 CONFIG_SENSORS_MAX6697=m
 CONFIG_SENSORS_MAX6697=m
 CONFIG_SENSORS_MAX31790=m
 CONFIG_SENSORS_MAX31790=m
-CONFIG_SENSORS_HTU21=m
 CONFIG_SENSORS_MCP3021=m
 CONFIG_SENSORS_MCP3021=m
+# CONFIG_SENSORS_TC654 is not set
 CONFIG_SENSORS_ADCXX=m
 CONFIG_SENSORS_ADCXX=m
 CONFIG_SENSORS_LM63=m
 CONFIG_SENSORS_LM63=m
 CONFIG_SENSORS_LM70=m
 CONFIG_SENSORS_LM70=m
@@ -2927,24 +3179,31 @@ CONFIG_SENSORS_NCT6683=m
 CONFIG_SENSORS_NCT6775=m
 CONFIG_SENSORS_NCT6775=m
 CONFIG_SENSORS_NCT7802=m
 CONFIG_SENSORS_NCT7802=m
 CONFIG_SENSORS_NCT7904=m
 CONFIG_SENSORS_NCT7904=m
+# CONFIG_SENSORS_NPCM7XX is not set
 CONFIG_SENSORS_PCF8591=m
 CONFIG_SENSORS_PCF8591=m
 CONFIG_PMBUS=m
 CONFIG_PMBUS=m
 CONFIG_SENSORS_PMBUS=m
 CONFIG_SENSORS_PMBUS=m
 CONFIG_SENSORS_ADM1275=m
 CONFIG_SENSORS_ADM1275=m
+# CONFIG_SENSORS_IBM_CFFPS is not set
+# CONFIG_SENSORS_IR35221 is not set
 CONFIG_SENSORS_LM25066=m
 CONFIG_SENSORS_LM25066=m
 CONFIG_SENSORS_LTC2978=m
 CONFIG_SENSORS_LTC2978=m
 CONFIG_SENSORS_LTC2978_REGULATOR=y
 CONFIG_SENSORS_LTC2978_REGULATOR=y
+# CONFIG_SENSORS_LTC3815 is not set
 CONFIG_SENSORS_MAX16064=m
 CONFIG_SENSORS_MAX16064=m
 CONFIG_SENSORS_MAX20751=m
 CONFIG_SENSORS_MAX20751=m
+# CONFIG_SENSORS_MAX31785 is not set
 CONFIG_SENSORS_MAX34440=m
 CONFIG_SENSORS_MAX34440=m
 CONFIG_SENSORS_MAX8688=m
 CONFIG_SENSORS_MAX8688=m
 CONFIG_SENSORS_TPS40422=m
 CONFIG_SENSORS_TPS40422=m
+# CONFIG_SENSORS_TPS53679 is not set
 CONFIG_SENSORS_UCD9000=m
 CONFIG_SENSORS_UCD9000=m
 CONFIG_SENSORS_UCD9200=m
 CONFIG_SENSORS_UCD9200=m
 CONFIG_SENSORS_ZL6100=m
 CONFIG_SENSORS_ZL6100=m
 CONFIG_SENSORS_PWM_FAN=m
 CONFIG_SENSORS_PWM_FAN=m
 CONFIG_SENSORS_SHT15=m
 CONFIG_SENSORS_SHT15=m
 CONFIG_SENSORS_SHT21=m
 CONFIG_SENSORS_SHT21=m
+# CONFIG_SENSORS_SHT3x is not set
 CONFIG_SENSORS_SHTC1=m
 CONFIG_SENSORS_SHTC1=m
 CONFIG_SENSORS_DME1737=m
 CONFIG_SENSORS_DME1737=m
 CONFIG_SENSORS_EMC1403=m
 CONFIG_SENSORS_EMC1403=m
@@ -2956,6 +3215,7 @@ CONFIG_SENSORS_SMSC47B397=m
 CONFIG_SENSORS_SCH56XX_COMMON=m
 CONFIG_SENSORS_SCH56XX_COMMON=m
 CONFIG_SENSORS_SCH5627=m
 CONFIG_SENSORS_SCH5627=m
 CONFIG_SENSORS_SCH5636=m
 CONFIG_SENSORS_SCH5636=m
+# CONFIG_SENSORS_STTS751 is not set
 CONFIG_SENSORS_SMM665=m
 CONFIG_SENSORS_SMM665=m
 CONFIG_SENSORS_ADC128D818=m
 CONFIG_SENSORS_ADC128D818=m
 CONFIG_SENSORS_ADS1015=m
 CONFIG_SENSORS_ADS1015=m
@@ -2964,15 +3224,17 @@ CONFIG_SENSORS_ADS7871=m
 CONFIG_SENSORS_AMC6821=m
 CONFIG_SENSORS_AMC6821=m
 CONFIG_SENSORS_INA209=m
 CONFIG_SENSORS_INA209=m
 CONFIG_SENSORS_INA2XX=m
 CONFIG_SENSORS_INA2XX=m
+# CONFIG_SENSORS_INA3221 is not set
 # CONFIG_SENSORS_TC74 is not set
 # CONFIG_SENSORS_TC74 is not set
 CONFIG_SENSORS_THMC50=m
 CONFIG_SENSORS_THMC50=m
 CONFIG_SENSORS_TMP102=m
 CONFIG_SENSORS_TMP102=m
 CONFIG_SENSORS_TMP103=m
 CONFIG_SENSORS_TMP103=m
+# CONFIG_SENSORS_TMP108 is not set
 CONFIG_SENSORS_TMP401=m
 CONFIG_SENSORS_TMP401=m
 CONFIG_SENSORS_TMP421=m
 CONFIG_SENSORS_TMP421=m
-CONFIG_SENSORS_TWL4030_MADC=m
 # CONFIG_SENSORS_VEXPRESS is not set
 # CONFIG_SENSORS_VEXPRESS is not set
 CONFIG_SENSORS_VT1211=m
 CONFIG_SENSORS_VT1211=m
+# CONFIG_SENSORS_W83773G is not set
 CONFIG_SENSORS_W83781D=m
 CONFIG_SENSORS_W83781D=m
 CONFIG_SENSORS_W83791D=m
 CONFIG_SENSORS_W83791D=m
 CONFIG_SENSORS_W83792D=m
 CONFIG_SENSORS_W83792D=m
@@ -2984,6 +3246,8 @@ CONFIG_SENSORS_W83L786NG=m
 CONFIG_SENSORS_W83627HF=m
 CONFIG_SENSORS_W83627HF=m
 CONFIG_SENSORS_W83627EHF=m
 CONFIG_SENSORS_W83627EHF=m
 CONFIG_THERMAL=y
 CONFIG_THERMAL=y
+# CONFIG_THERMAL_STATISTICS is not set
+CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
 CONFIG_THERMAL_HWMON=y
 CONFIG_THERMAL_HWMON=y
 CONFIG_THERMAL_OF=y
 CONFIG_THERMAL_OF=y
 # CONFIG_THERMAL_WRITABLE_TRIPS is not set
 # CONFIG_THERMAL_WRITABLE_TRIPS is not set
@@ -3000,16 +3264,23 @@ CONFIG_CPU_THERMAL=y
 CONFIG_CLOCK_THERMAL=y
 CONFIG_CLOCK_THERMAL=y
 CONFIG_DEVFREQ_THERMAL=y
 CONFIG_DEVFREQ_THERMAL=y
 # CONFIG_THERMAL_EMULATION is not set
 # CONFIG_THERMAL_EMULATION is not set
-# CONFIG_IMX_THERMAL is not set
+# CONFIG_QORIQ_THERMAL is not set
+
+#
+# ACPI INT340X thermal drivers
+#
 
 
 #
 #
 # Texas Instruments thermal drivers
 # Texas Instruments thermal drivers
 #
 #
 CONFIG_TI_SOC_THERMAL=y
 CONFIG_TI_SOC_THERMAL=y
 CONFIG_TI_THERMAL=y
 CONFIG_TI_THERMAL=y
+# CONFIG_GENERIC_ADC_THERMAL is not set
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG_CORE=y
 CONFIG_WATCHDOG_CORE=y
 CONFIG_WATCHDOG_NOWAYOUT=y
 CONFIG_WATCHDOG_NOWAYOUT=y
+CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y
+# CONFIG_WATCHDOG_SYSFS is not set
 
 
 #
 #
 # Watchdog Device Drivers
 # Watchdog Device Drivers
@@ -3020,36 +3291,31 @@ CONFIG_SOFT_WATCHDOG=m
 # CONFIG_DA9063_WATCHDOG is not set
 # CONFIG_DA9063_WATCHDOG is not set
 # CONFIG_GPIO_WATCHDOG is not set
 # CONFIG_GPIO_WATCHDOG is not set
 # CONFIG_XILINX_WATCHDOG is not set
 # CONFIG_XILINX_WATCHDOG is not set
+# CONFIG_ZIIRAVE_WATCHDOG is not set
 # CONFIG_CADENCE_WATCHDOG is not set
 # CONFIG_CADENCE_WATCHDOG is not set
+# CONFIG_FTWDT010_WATCHDOG is not set
 # CONFIG_DW_WATCHDOG is not set
 # CONFIG_DW_WATCHDOG is not set
 CONFIG_OMAP_WATCHDOG=y
 CONFIG_OMAP_WATCHDOG=y
 CONFIG_TWL4030_WATCHDOG=y
 CONFIG_TWL4030_WATCHDOG=y
 # CONFIG_MAX63XX_WATCHDOG is not set
 # CONFIG_MAX63XX_WATCHDOG is not set
-# CONFIG_BCM7038_WDT is not set
 # CONFIG_MEN_A21_WDT is not set
 # CONFIG_MEN_A21_WDT is not set
 
 
 #
 #
 # USB-based Watchdog Cards
 # USB-based Watchdog Cards
 #
 #
 # CONFIG_USBPCWATCHDOG is not set
 # CONFIG_USBPCWATCHDOG is not set
-CONFIG_SSB_POSSIBLE=y
 
 
 #
 #
-# Sonics Silicon Backplane
+# Watchdog Pretimeout Governors
 #
 #
+# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set
+CONFIG_SSB_POSSIBLE=y
 CONFIG_SSB=m
 CONFIG_SSB=m
 CONFIG_SSB_BLOCKIO=y
 CONFIG_SSB_BLOCKIO=y
 CONFIG_SSB_SDIOHOST_POSSIBLE=y
 CONFIG_SSB_SDIOHOST_POSSIBLE=y
 CONFIG_SSB_SDIOHOST=y
 CONFIG_SSB_SDIOHOST=y
-# CONFIG_SSB_HOST_SOC is not set
-# CONFIG_SSB_SILENT is not set
-# CONFIG_SSB_DEBUG is not set
 # CONFIG_SSB_DRIVER_GPIO is not set
 # CONFIG_SSB_DRIVER_GPIO is not set
 CONFIG_BCMA_POSSIBLE=y
 CONFIG_BCMA_POSSIBLE=y
-
-#
-# Broadcom specific AMBA
-#
 CONFIG_BCMA=m
 CONFIG_BCMA=m
 CONFIG_BCMA_BLOCKIO=y
 CONFIG_BCMA_BLOCKIO=y
 # CONFIG_BCMA_HOST_SOC is not set
 # CONFIG_BCMA_HOST_SOC is not set
@@ -3061,6 +3327,7 @@ CONFIG_BCMA_BLOCKIO=y
 # Multifunction device drivers
 # Multifunction device drivers
 #
 #
 CONFIG_MFD_CORE=y
 CONFIG_MFD_CORE=y
+# CONFIG_MFD_ACT8945A is not set
 # CONFIG_MFD_AS3711 is not set
 # CONFIG_MFD_AS3711 is not set
 CONFIG_MFD_AS3722=y
 CONFIG_MFD_AS3722=y
 # CONFIG_PMIC_ADP5520 is not set
 # CONFIG_PMIC_ADP5520 is not set
@@ -3068,8 +3335,10 @@ CONFIG_MFD_AS3722=y
 # CONFIG_MFD_ATMEL_FLEXCOM is not set
 # CONFIG_MFD_ATMEL_FLEXCOM is not set
 # CONFIG_MFD_ATMEL_HLCDC is not set
 # CONFIG_MFD_ATMEL_HLCDC is not set
 # CONFIG_MFD_BCM590XX is not set
 # CONFIG_MFD_BCM590XX is not set
-CONFIG_MFD_AXP20X=y
+# CONFIG_MFD_BD9571MWV is not set
+# CONFIG_MFD_AXP20X_I2C is not set
 # CONFIG_MFD_CROS_EC is not set
 # CONFIG_MFD_CROS_EC is not set
+# CONFIG_MFD_MADERA is not set
 # CONFIG_MFD_ASIC3 is not set
 # CONFIG_MFD_ASIC3 is not set
 # CONFIG_PMIC_DA903X is not set
 # CONFIG_PMIC_DA903X is not set
 CONFIG_PMIC_DA9052=y
 CONFIG_PMIC_DA9052=y
@@ -3084,15 +3353,14 @@ CONFIG_MFD_MC13XXX=m
 CONFIG_MFD_MC13XXX_SPI=m
 CONFIG_MFD_MC13XXX_SPI=m
 CONFIG_MFD_MC13XXX_I2C=m
 CONFIG_MFD_MC13XXX_I2C=m
 # CONFIG_MFD_HI6421_PMIC is not set
 # CONFIG_MFD_HI6421_PMIC is not set
-# CONFIG_HTC_EGPIO is not set
 # CONFIG_HTC_PASIC3 is not set
 # CONFIG_HTC_PASIC3 is not set
 # CONFIG_HTC_I2CPLD is not set
 # CONFIG_HTC_I2CPLD is not set
-# CONFIG_INTEL_SOC_PMIC is not set
 # CONFIG_MFD_KEMPLD is not set
 # CONFIG_MFD_KEMPLD is not set
 # CONFIG_MFD_88PM800 is not set
 # CONFIG_MFD_88PM800 is not set
 # CONFIG_MFD_88PM805 is not set
 # CONFIG_MFD_88PM805 is not set
 # CONFIG_MFD_88PM860X is not set
 # CONFIG_MFD_88PM860X is not set
 # CONFIG_MFD_MAX14577 is not set
 # CONFIG_MFD_MAX14577 is not set
+# CONFIG_MFD_MAX77620 is not set
 # CONFIG_MFD_MAX77686 is not set
 # CONFIG_MFD_MAX77686 is not set
 # CONFIG_MFD_MAX77693 is not set
 # CONFIG_MFD_MAX77693 is not set
 # CONFIG_MFD_MAX77843 is not set
 # CONFIG_MFD_MAX77843 is not set
@@ -3103,12 +3371,12 @@ CONFIG_MFD_MC13XXX_I2C=m
 # CONFIG_MFD_MT6397 is not set
 # CONFIG_MFD_MT6397 is not set
 # CONFIG_MFD_MENF21BMC is not set
 # CONFIG_MFD_MENF21BMC is not set
 # CONFIG_EZX_PCAP is not set
 # CONFIG_EZX_PCAP is not set
+# CONFIG_MFD_CPCAP is not set
 CONFIG_MFD_VIPERBOARD=m
 CONFIG_MFD_VIPERBOARD=m
 # CONFIG_MFD_RETU is not set
 # CONFIG_MFD_RETU is not set
 # CONFIG_MFD_PCF50633 is not set
 # CONFIG_MFD_PCF50633 is not set
-# CONFIG_MFD_PM8921_CORE is not set
+# CONFIG_MFD_PM8XXX is not set
 # CONFIG_MFD_RT5033 is not set
 # CONFIG_MFD_RT5033 is not set
-CONFIG_MFD_RTSX_USB=m
 # CONFIG_MFD_RC5T583 is not set
 # CONFIG_MFD_RC5T583 is not set
 # CONFIG_MFD_RK808 is not set
 # CONFIG_MFD_RK808 is not set
 # CONFIG_MFD_RN5T618 is not set
 # CONFIG_MFD_RN5T618 is not set
@@ -3123,17 +3391,20 @@ CONFIG_MFD_SYSCON=y
 CONFIG_MFD_TI_AM335X_TSCADC=m
 CONFIG_MFD_TI_AM335X_TSCADC=m
 # CONFIG_MFD_LP3943 is not set
 # CONFIG_MFD_LP3943 is not set
 # CONFIG_MFD_LP8788 is not set
 # CONFIG_MFD_LP8788 is not set
+# CONFIG_MFD_TI_LMU is not set
 CONFIG_MFD_OMAP_USB_HOST=y
 CONFIG_MFD_OMAP_USB_HOST=y
 CONFIG_MFD_PALMAS=y
 CONFIG_MFD_PALMAS=y
 # CONFIG_TPS6105X is not set
 # CONFIG_TPS6105X is not set
 # CONFIG_TPS65010 is not set
 # CONFIG_TPS65010 is not set
 # CONFIG_TPS6507X is not set
 # CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65086 is not set
 # CONFIG_MFD_TPS65090 is not set
 # CONFIG_MFD_TPS65090 is not set
 CONFIG_MFD_TPS65217=y
 CONFIG_MFD_TPS65217=y
+# CONFIG_MFD_TI_LP873X is not set
+# CONFIG_MFD_TI_LP87565 is not set
 CONFIG_MFD_TPS65218=y
 CONFIG_MFD_TPS65218=y
 # CONFIG_MFD_TPS6586X is not set
 # CONFIG_MFD_TPS6586X is not set
 CONFIG_MFD_TPS65910=y
 CONFIG_MFD_TPS65910=y
-# CONFIG_MFD_TPS65912 is not set
 # CONFIG_MFD_TPS65912_I2C is not set
 # CONFIG_MFD_TPS65912_I2C is not set
 # CONFIG_MFD_TPS65912_SPI is not set
 # CONFIG_MFD_TPS65912_SPI is not set
 # CONFIG_MFD_TPS80031 is not set
 # CONFIG_MFD_TPS80031 is not set
@@ -3144,7 +3415,6 @@ CONFIG_TWL6040_CORE=y
 CONFIG_MFD_WL1273_CORE=m
 CONFIG_MFD_WL1273_CORE=m
 # CONFIG_MFD_LM3533 is not set
 # CONFIG_MFD_LM3533 is not set
 # CONFIG_MFD_TC3589X is not set
 # CONFIG_MFD_TC3589X is not set
-# CONFIG_MFD_TMIO is not set
 # CONFIG_MFD_T7L66XB is not set
 # CONFIG_MFD_T7L66XB is not set
 # CONFIG_MFD_TC6387XB is not set
 # CONFIG_MFD_TC6387XB is not set
 # CONFIG_MFD_TC6393XB is not set
 # CONFIG_MFD_TC6393XB is not set
@@ -3155,17 +3425,18 @@ CONFIG_MFD_WL1273_CORE=m
 # CONFIG_MFD_WM831X_SPI is not set
 # CONFIG_MFD_WM831X_SPI is not set
 # CONFIG_MFD_WM8350_I2C is not set
 # CONFIG_MFD_WM8350_I2C is not set
 # CONFIG_MFD_WM8994 is not set
 # CONFIG_MFD_WM8994 is not set
+# CONFIG_MFD_ROHM_BD718XX is not set
 CONFIG_MFD_VEXPRESS_SYSREG=y
 CONFIG_MFD_VEXPRESS_SYSREG=y
 CONFIG_REGULATOR=y
 CONFIG_REGULATOR=y
 # CONFIG_REGULATOR_DEBUG is not set
 # CONFIG_REGULATOR_DEBUG is not set
 CONFIG_REGULATOR_FIXED_VOLTAGE=y
 CONFIG_REGULATOR_FIXED_VOLTAGE=y
 # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
 # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
 CONFIG_REGULATOR_USERSPACE_CONSUMER=y
 CONFIG_REGULATOR_USERSPACE_CONSUMER=y
+# CONFIG_REGULATOR_88PG86X is not set
 CONFIG_REGULATOR_ACT8865=m
 CONFIG_REGULATOR_ACT8865=m
 # CONFIG_REGULATOR_AD5398 is not set
 # CONFIG_REGULATOR_AD5398 is not set
 CONFIG_REGULATOR_ANATOP=y
 CONFIG_REGULATOR_ANATOP=y
 CONFIG_REGULATOR_AS3722=y
 CONFIG_REGULATOR_AS3722=y
-CONFIG_REGULATOR_AXP20X=y
 CONFIG_REGULATOR_DA9052=y
 CONFIG_REGULATOR_DA9052=y
 # CONFIG_REGULATOR_DA9055 is not set
 # CONFIG_REGULATOR_DA9055 is not set
 CONFIG_REGULATOR_DA9063=y
 CONFIG_REGULATOR_DA9063=y
@@ -3180,6 +3451,7 @@ CONFIG_REGULATOR_GPIO=y
 # CONFIG_REGULATOR_LP872X is not set
 # CONFIG_REGULATOR_LP872X is not set
 # CONFIG_REGULATOR_LP8755 is not set
 # CONFIG_REGULATOR_LP8755 is not set
 # CONFIG_REGULATOR_LTC3589 is not set
 # CONFIG_REGULATOR_LTC3589 is not set
+# CONFIG_REGULATOR_LTC3676 is not set
 # CONFIG_REGULATOR_MAX1586 is not set
 # CONFIG_REGULATOR_MAX1586 is not set
 # CONFIG_REGULATOR_MAX8649 is not set
 # CONFIG_REGULATOR_MAX8649 is not set
 # CONFIG_REGULATOR_MAX8660 is not set
 # CONFIG_REGULATOR_MAX8660 is not set
@@ -3192,21 +3464,33 @@ CONFIG_REGULATOR_MT6311=y
 CONFIG_REGULATOR_PALMAS=y
 CONFIG_REGULATOR_PALMAS=y
 CONFIG_REGULATOR_PBIAS=y
 CONFIG_REGULATOR_PBIAS=y
 CONFIG_REGULATOR_PFUZE100=y
 CONFIG_REGULATOR_PFUZE100=y
+# CONFIG_REGULATOR_PV88060 is not set
+# CONFIG_REGULATOR_PV88080 is not set
+# CONFIG_REGULATOR_PV88090 is not set
 CONFIG_REGULATOR_PWM=y
 CONFIG_REGULATOR_PWM=y
 CONFIG_REGULATOR_S2MPA01=m
 CONFIG_REGULATOR_S2MPA01=m
 CONFIG_REGULATOR_S2MPS11=m
 CONFIG_REGULATOR_S2MPS11=m
 CONFIG_REGULATOR_S5M8767=m
 CONFIG_REGULATOR_S5M8767=m
 CONFIG_REGULATOR_TI_ABB=y
 CONFIG_REGULATOR_TI_ABB=y
+# CONFIG_REGULATOR_SY8106A is not set
 # CONFIG_REGULATOR_TPS51632 is not set
 # CONFIG_REGULATOR_TPS51632 is not set
 # CONFIG_REGULATOR_TPS62360 is not set
 # CONFIG_REGULATOR_TPS62360 is not set
 CONFIG_REGULATOR_TPS65023=y
 CONFIG_REGULATOR_TPS65023=y
 CONFIG_REGULATOR_TPS6507X=y
 CONFIG_REGULATOR_TPS6507X=y
+# CONFIG_REGULATOR_TPS65132 is not set
 CONFIG_REGULATOR_TPS65217=y
 CONFIG_REGULATOR_TPS65217=y
 CONFIG_REGULATOR_TPS65218=y
 CONFIG_REGULATOR_TPS65218=y
 # CONFIG_REGULATOR_TPS6524X is not set
 # CONFIG_REGULATOR_TPS6524X is not set
 CONFIG_REGULATOR_TPS65910=y
 CONFIG_REGULATOR_TPS65910=y
 CONFIG_REGULATOR_TWL4030=y
 CONFIG_REGULATOR_TWL4030=y
+# CONFIG_REGULATOR_VCTRL is not set
 CONFIG_REGULATOR_VEXPRESS=m
 CONFIG_REGULATOR_VEXPRESS=m
+CONFIG_CEC_CORE=y
+CONFIG_RC_CORE=y
+# CONFIG_RC_MAP is not set
+# CONFIG_LIRC is not set
+# CONFIG_RC_DECODERS is not set
+# CONFIG_RC_DEVICES is not set
 CONFIG_MEDIA_SUPPORT=y
 CONFIG_MEDIA_SUPPORT=y
 
 
 #
 #
@@ -3217,7 +3501,8 @@ CONFIG_MEDIA_CAMERA_SUPPORT=y
 # CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set
 # CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set
 # CONFIG_MEDIA_RADIO_SUPPORT is not set
 # CONFIG_MEDIA_RADIO_SUPPORT is not set
 # CONFIG_MEDIA_SDR_SUPPORT is not set
 # CONFIG_MEDIA_SDR_SUPPORT is not set
-CONFIG_MEDIA_RC_SUPPORT=y
+# CONFIG_MEDIA_CEC_SUPPORT is not set
+# CONFIG_MEDIA_CEC_RC is not set
 CONFIG_MEDIA_CONTROLLER=y
 CONFIG_MEDIA_CONTROLLER=y
 CONFIG_VIDEO_DEV=y
 CONFIG_VIDEO_DEV=y
 CONFIG_VIDEO_V4L2_SUBDEV_API=y
 CONFIG_VIDEO_V4L2_SUBDEV_API=y
@@ -3225,22 +3510,14 @@ CONFIG_VIDEO_V4L2=y
 # CONFIG_VIDEO_ADV_DEBUG is not set
 # CONFIG_VIDEO_ADV_DEBUG is not set
 # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
 # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
 CONFIG_VIDEO_TUNER=m
 CONFIG_VIDEO_TUNER=m
-CONFIG_V4L2_MEM2MEM_DEV=m
+CONFIG_V4L2_MEM2MEM_DEV=y
+CONFIG_V4L2_FWNODE=m
 CONFIG_VIDEOBUF_GEN=m
 CONFIG_VIDEOBUF_GEN=m
 CONFIG_VIDEOBUF_VMALLOC=m
 CONFIG_VIDEOBUF_VMALLOC=m
-CONFIG_VIDEOBUF2_CORE=m
-CONFIG_VIDEOBUF2_MEMOPS=m
-CONFIG_VIDEOBUF2_DMA_CONTIG=m
-CONFIG_VIDEOBUF2_VMALLOC=m
-# CONFIG_TTPCI_EEPROM is not set
 
 
 #
 #
 # Media drivers
 # Media drivers
 #
 #
-CONFIG_RC_CORE=y
-# CONFIG_RC_MAP is not set
-# CONFIG_RC_DECODERS is not set
-# CONFIG_RC_DEVICES is not set
 CONFIG_MEDIA_USB_SUPPORT=y
 CONFIG_MEDIA_USB_SUPPORT=y
 
 
 #
 #
@@ -3315,6 +3592,8 @@ CONFIG_VIDEO_EM28XX_V4L2=m
 CONFIG_VIDEO_EM28XX_ALSA=m
 CONFIG_VIDEO_EM28XX_ALSA=m
 CONFIG_VIDEO_EM28XX_RC=m
 CONFIG_VIDEO_EM28XX_RC=m
 CONFIG_V4L_PLATFORM_DRIVERS=y
 CONFIG_V4L_PLATFORM_DRIVERS=y
+# CONFIG_VIDEO_CADENCE is not set
+# CONFIG_VIDEO_MUX is not set
 CONFIG_SOC_CAMERA=m
 CONFIG_SOC_CAMERA=m
 CONFIG_SOC_CAMERA_PLATFORM=m
 CONFIG_SOC_CAMERA_PLATFORM=m
 # CONFIG_VIDEO_XILINX is not set
 # CONFIG_VIDEO_XILINX is not set
@@ -3328,9 +3607,14 @@ CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
 #
 #
 CONFIG_VIDEO_TVEEPROM=m
 CONFIG_VIDEO_TVEEPROM=m
 CONFIG_CYPRESS_FIRMWARE=m
 CONFIG_CYPRESS_FIRMWARE=m
+CONFIG_VIDEOBUF2_CORE=y
+CONFIG_VIDEOBUF2_V4L2=y
+CONFIG_VIDEOBUF2_MEMOPS=y
+CONFIG_VIDEOBUF2_DMA_CONTIG=y
+CONFIG_VIDEOBUF2_VMALLOC=m
 
 
 #
 #
-# Media ancillary drivers (tuners, sensors, i2c, frontends)
+# Media ancillary drivers (tuners, sensors, i2c, spi, frontends)
 #
 #
 CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
 CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
 CONFIG_VIDEO_IR_I2C=y
 CONFIG_VIDEO_IR_I2C=y
@@ -3361,6 +3645,8 @@ CONFIG_VIDEO_TVP5150=m
 #
 #
 # Camera sensor devices
 # Camera sensor devices
 #
 #
+CONFIG_VIDEO_OV2640=m
+CONFIG_VIDEO_MT9M111=m
 CONFIG_VIDEO_MT9V011=m
 CONFIG_VIDEO_MT9V011=m
 
 
 #
 #
@@ -3375,6 +3661,10 @@ CONFIG_VIDEO_MT9V011=m
 # Audio/Video compression chips
 # Audio/Video compression chips
 #
 #
 
 
+#
+# SDR tuner chips
+#
+
 #
 #
 # Miscellaneous helper chips
 # Miscellaneous helper chips
 #
 #
@@ -3386,62 +3676,168 @@ CONFIG_VIDEO_MT9V011=m
 #
 #
 # soc_camera sensor drivers
 # soc_camera sensor drivers
 #
 #
-CONFIG_SOC_CAMERA_IMX074=m
 CONFIG_SOC_CAMERA_MT9M001=m
 CONFIG_SOC_CAMERA_MT9M001=m
 CONFIG_SOC_CAMERA_MT9M111=m
 CONFIG_SOC_CAMERA_MT9M111=m
-CONFIG_SOC_CAMERA_MT9T031=m
 CONFIG_SOC_CAMERA_MT9T112=m
 CONFIG_SOC_CAMERA_MT9T112=m
 CONFIG_SOC_CAMERA_MT9V022=m
 CONFIG_SOC_CAMERA_MT9V022=m
-CONFIG_SOC_CAMERA_OV2640=m
 CONFIG_SOC_CAMERA_OV5642=m
 CONFIG_SOC_CAMERA_OV5642=m
-CONFIG_SOC_CAMERA_OV6650=m
 CONFIG_SOC_CAMERA_OV772X=m
 CONFIG_SOC_CAMERA_OV772X=m
 CONFIG_SOC_CAMERA_OV9640=m
 CONFIG_SOC_CAMERA_OV9640=m
 CONFIG_SOC_CAMERA_OV9740=m
 CONFIG_SOC_CAMERA_OV9740=m
 CONFIG_SOC_CAMERA_RJ54N1=m
 CONFIG_SOC_CAMERA_RJ54N1=m
 CONFIG_SOC_CAMERA_TW9910=m
 CONFIG_SOC_CAMERA_TW9910=m
 
 
+#
+# Media SPI Adapters
+#
+
 #
 #
 # Tools to develop new frontends
 # Tools to develop new frontends
 #
 #
-# CONFIG_DVB_DUMMY_FE is not set
 
 
 #
 #
 # Graphics support
 # Graphics support
 #
 #
+# CONFIG_IMX_IPUV3_CORE is not set
 CONFIG_DRM=y
 CONFIG_DRM=y
+CONFIG_DRM_MIPI_DSI=y
+# CONFIG_DRM_DP_AUX_CHARDEV is not set
+# CONFIG_DRM_DEBUG_MM is not set
+# CONFIG_DRM_DEBUG_SELFTEST is not set
 CONFIG_DRM_KMS_HELPER=y
 CONFIG_DRM_KMS_HELPER=y
 CONFIG_DRM_KMS_FB_HELPER=y
 CONFIG_DRM_KMS_FB_HELPER=y
 CONFIG_DRM_FBDEV_EMULATION=y
 CONFIG_DRM_FBDEV_EMULATION=y
+CONFIG_DRM_FBDEV_OVERALLOC=300
+# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set
 CONFIG_DRM_LOAD_EDID_FIRMWARE=y
 CONFIG_DRM_LOAD_EDID_FIRMWARE=y
-CONFIG_DRM_TTM=m
+# CONFIG_DRM_DP_CEC is not set
 CONFIG_DRM_GEM_CMA_HELPER=y
 CONFIG_DRM_GEM_CMA_HELPER=y
 CONFIG_DRM_KMS_CMA_HELPER=y
 CONFIG_DRM_KMS_CMA_HELPER=y
+CONFIG_DRM_VM=y
 
 
 #
 #
 # I2C encoder or helper chips
 # I2C encoder or helper chips
 #
 #
-CONFIG_DRM_I2C_ADV7511=m
-CONFIG_DRM_I2C_ADIHDMI=m
 CONFIG_DRM_I2C_CH7006=m
 CONFIG_DRM_I2C_CH7006=m
 CONFIG_DRM_I2C_SIL164=m
 CONFIG_DRM_I2C_SIL164=m
 CONFIG_DRM_I2C_NXP_TDA998X=m
 CONFIG_DRM_I2C_NXP_TDA998X=m
+# CONFIG_DRM_I2C_NXP_TDA9950 is not set
+# CONFIG_DRM_HDLCD is not set
+# CONFIG_DRM_MALI_DISPLAY is not set
+
+#
+# ACP (Audio CoProcessor) Configuration
+#
+
+#
+# AMD Library routines
+#
 CONFIG_DRM_VGEM=m
 CONFIG_DRM_VGEM=m
+# CONFIG_DRM_VKMS is not set
 # CONFIG_DRM_EXYNOS is not set
 # CONFIG_DRM_EXYNOS is not set
 CONFIG_DRM_UDL=m
 CONFIG_DRM_UDL=m
 # CONFIG_DRM_ARMADA is not set
 # CONFIG_DRM_ARMADA is not set
+# CONFIG_DRM_RCAR_DW_HDMI is not set
+# CONFIG_DRM_RCAR_LVDS is not set
+CONFIG_DRM_OMAP=y
+CONFIG_DRM_OMAP_WB=y
+CONFIG_OMAP2_DSS_INIT=y
+CONFIG_OMAP_DSS_BASE=y
+CONFIG_OMAP2_DSS=y
+# CONFIG_OMAP2_DSS_DEBUG is not set
+CONFIG_OMAP2_DSS_DEBUGFS=y
+# CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS is not set
+CONFIG_OMAP2_DSS_DPI=y
+# CONFIG_OMAP2_DSS_VENC is not set
+CONFIG_OMAP2_DSS_HDMI_COMMON=y
+CONFIG_OMAP4_DSS_HDMI=y
+CONFIG_OMAP4_DSS_HDMI_CEC=y
+CONFIG_OMAP5_DSS_HDMI=y
+# CONFIG_OMAP2_DSS_SDI is not set
+# CONFIG_OMAP2_DSS_DSI is not set
+CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0
+CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y
+
+#
+# OMAPDRM External Display Device Drivers
+#
+# CONFIG_DRM_OMAP_ENCODER_OPA362 is not set
+# CONFIG_DRM_OMAP_ENCODER_TPD12S015 is not set
+# CONFIG_DRM_OMAP_CONNECTOR_HDMI is not set
+# CONFIG_DRM_OMAP_CONNECTOR_ANALOG_TV is not set
+# CONFIG_DRM_OMAP_PANEL_DSI_CM is not set
+# CONFIG_DRM_OMAP_PANEL_SONY_ACX565AKM is not set
+# CONFIG_DRM_OMAP_PANEL_LGPHILIPS_LB035Q02 is not set
+# CONFIG_DRM_OMAP_PANEL_SHARP_LS037V7DW01 is not set
+# CONFIG_DRM_OMAP_PANEL_TPO_TD028TTEC1 is not set
+# CONFIG_DRM_OMAP_PANEL_TPO_TD043MTEA1 is not set
+# CONFIG_DRM_OMAP_PANEL_NEC_NL8048HL11 is not set
 CONFIG_DRM_TILCDC=y
 CONFIG_DRM_TILCDC=y
-CONFIG_DRM_TILCDC_SLAVE_COMPAT=y
-CONFIG_DRM_VIRTIO_GPU=m
+# CONFIG_DRM_VIRTIO_GPU is not set
 # CONFIG_DRM_FSL_DCU is not set
 # CONFIG_DRM_FSL_DCU is not set
+# CONFIG_DRM_STM is not set
+CONFIG_DRM_PANEL=y
+
+#
+# Display Panels
+#
+# CONFIG_DRM_PANEL_ARM_VERSATILE is not set
+# CONFIG_DRM_PANEL_LVDS is not set
+# CONFIG_DRM_PANEL_SIMPLE is not set
+# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
+# CONFIG_DRM_PANEL_ILITEK_ILI9881C is not set
+# CONFIG_DRM_PANEL_INNOLUX_P079ZCA is not set
+# CONFIG_DRM_PANEL_JDI_LT070ME05000 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set
+# CONFIG_DRM_PANEL_LG_LG4573 is not set
+# CONFIG_DRM_PANEL_ORISETECH_OTM8009A is not set
+# CONFIG_DRM_PANEL_OSD_OSD101T2587_53TS is not set
+# CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set
+# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set
+# CONFIG_DRM_PANEL_RAYDIUM_RM68200 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set
+# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set
+# CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set
+# CONFIG_DRM_PANEL_SHARP_LS043T1LE01 is not set
+# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set
 CONFIG_DRM_BRIDGE=y
 CONFIG_DRM_BRIDGE=y
+CONFIG_DRM_PANEL_BRIDGE=y
 
 
 #
 #
 # Display Interface Bridges
 # Display Interface Bridges
 #
 #
+# CONFIG_DRM_ANALOGIX_ANX78XX is not set
+# CONFIG_DRM_CDNS_DSI is not set
+# CONFIG_DRM_CDNS_MHDP is not set
+# CONFIG_DRM_DUMB_VGA_DAC is not set
+# CONFIG_DRM_LVDS_ENCODER is not set
+# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set
 # CONFIG_DRM_NXP_PTN3460 is not set
 # CONFIG_DRM_NXP_PTN3460 is not set
 # CONFIG_DRM_PARADE_PS8622 is not set
 # CONFIG_DRM_PARADE_PS8622 is not set
+# CONFIG_DRM_SIL_SII8620 is not set
+# CONFIG_DRM_SII902X is not set
+# CONFIG_DRM_SII9234 is not set
+# CONFIG_DRM_THINE_THC63LVD1024 is not set
+# CONFIG_DRM_TOSHIBA_TC358767 is not set
+# CONFIG_DRM_TOSHIBA_TC358768 is not set
+# CONFIG_DRM_TI_TFP410 is not set
+CONFIG_DRM_I2C_ADV7511=m
+# CONFIG_DRM_I2C_ADV7511_AUDIO is not set
+CONFIG_DRM_I2C_ADV7533=y
+CONFIG_DRM_I2C_ADV7511_CEC=y
 # CONFIG_DRM_STI is not set
 # CONFIG_DRM_STI is not set
+# CONFIG_DRM_ARCPGU is not set
+# CONFIG_DRM_MXSFB is not set
+# CONFIG_DRM_TINYDRM is not set
+# CONFIG_DRM_PL111 is not set
+# CONFIG_DRM_TVE200 is not set
+CONFIG_DRM_TIDSS=y
+CONFIG_DRM_TIDSS_DSS6=y
+CONFIG_DRM_TIDSS_DSS7=y
+CONFIG_DRM_LEGACY=y
+CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
 
 
 #
 #
 # Frame buffer Devices
 # Frame buffer Devices
@@ -3449,20 +3845,16 @@ CONFIG_DRM_BRIDGE=y
 CONFIG_FB=y
 CONFIG_FB=y
 CONFIG_FIRMWARE_EDID=y
 CONFIG_FIRMWARE_EDID=y
 CONFIG_FB_CMDLINE=y
 CONFIG_FB_CMDLINE=y
-# CONFIG_FB_DDC is not set
-# CONFIG_FB_BOOT_VESA_SUPPORT is not set
+CONFIG_FB_NOTIFY=y
 CONFIG_FB_CFB_FILLRECT=y
 CONFIG_FB_CFB_FILLRECT=y
 CONFIG_FB_CFB_COPYAREA=y
 CONFIG_FB_CFB_COPYAREA=y
 CONFIG_FB_CFB_IMAGEBLIT=y
 CONFIG_FB_CFB_IMAGEBLIT=y
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
 CONFIG_FB_SYS_FILLRECT=y
 CONFIG_FB_SYS_FILLRECT=y
 CONFIG_FB_SYS_COPYAREA=y
 CONFIG_FB_SYS_COPYAREA=y
 CONFIG_FB_SYS_IMAGEBLIT=y
 CONFIG_FB_SYS_IMAGEBLIT=y
 # CONFIG_FB_FOREIGN_ENDIAN is not set
 # CONFIG_FB_FOREIGN_ENDIAN is not set
 CONFIG_FB_SYS_FOPS=y
 CONFIG_FB_SYS_FOPS=y
 CONFIG_FB_DEFERRED_IO=y
 CONFIG_FB_DEFERRED_IO=y
-# CONFIG_FB_SVGALIB is not set
-# CONFIG_FB_MACMODES is not set
 CONFIG_FB_BACKLIGHT=y
 CONFIG_FB_BACKLIGHT=y
 CONFIG_FB_MODE_HELPERS=y
 CONFIG_FB_MODE_HELPERS=y
 CONFIG_FB_TILEBLITTING=y
 CONFIG_FB_TILEBLITTING=y
@@ -3480,9 +3872,7 @@ CONFIG_FB_UDL=m
 # CONFIG_FB_VIRTUAL is not set
 # CONFIG_FB_VIRTUAL is not set
 # CONFIG_FB_METRONOME is not set
 # CONFIG_FB_METRONOME is not set
 # CONFIG_FB_BROADSHEET is not set
 # CONFIG_FB_BROADSHEET is not set
-# CONFIG_FB_AUO_K190X is not set
 CONFIG_FB_SIMPLE=y
 CONFIG_FB_SIMPLE=y
-# CONFIG_OMAP2_DSS is not set
 CONFIG_FB_SSD1307=y
 CONFIG_FB_SSD1307=y
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
 # CONFIG_LCD_CLASS_DEVICE is not set
 # CONFIG_LCD_CLASS_DEVICE is not set
@@ -3501,7 +3891,8 @@ CONFIG_BACKLIGHT_PWM=m
 CONFIG_BACKLIGHT_GPIO=m
 CONFIG_BACKLIGHT_GPIO=m
 # CONFIG_BACKLIGHT_LV5207LP is not set
 # CONFIG_BACKLIGHT_LV5207LP is not set
 # CONFIG_BACKLIGHT_BD6107 is not set
 # CONFIG_BACKLIGHT_BD6107 is not set
-# CONFIG_VGASTATE is not set
+# CONFIG_BACKLIGHT_ARCXCNN is not set
+# CONFIG_BACKLIGHT_LED is not set
 CONFIG_VIDEOMODE_HELPERS=y
 CONFIG_VIDEOMODE_HELPERS=y
 CONFIG_HDMI=y
 CONFIG_HDMI=y
 
 
@@ -3512,31 +3903,30 @@ CONFIG_DUMMY_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
 CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
 CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set
 CONFIG_LOGO=y
 CONFIG_LOGO=y
-CONFIG_FB_LOGO_CUSTOM=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
-# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
 CONFIG_SOUND=m
 CONFIG_SOUND=m
 CONFIG_SOUND_OSS_CORE=y
 CONFIG_SOUND_OSS_CORE=y
 # CONFIG_SOUND_OSS_CORE_PRECLAIM is not set
 # CONFIG_SOUND_OSS_CORE_PRECLAIM is not set
 CONFIG_SND=m
 CONFIG_SND=m
 CONFIG_SND_TIMER=m
 CONFIG_SND_TIMER=m
 CONFIG_SND_PCM=m
 CONFIG_SND_PCM=m
-CONFIG_SND_DMAENGINE_PCM=m
+CONFIG_SND_PCM_ELD=y
+CONFIG_SND_PCM_IEC958=y
 CONFIG_SND_HWDEP=m
 CONFIG_SND_HWDEP=m
+CONFIG_SND_SEQ_DEVICE=m
 CONFIG_SND_RAWMIDI=m
 CONFIG_SND_RAWMIDI=m
 CONFIG_SND_JACK=y
 CONFIG_SND_JACK=y
-CONFIG_SND_SEQUENCER=m
-CONFIG_SND_SEQ_DUMMY=m
+CONFIG_SND_JACK_INPUT_DEV=y
 CONFIG_SND_OSSEMUL=y
 CONFIG_SND_OSSEMUL=y
 CONFIG_SND_MIXER_OSS=m
 CONFIG_SND_MIXER_OSS=m
 CONFIG_SND_PCM_OSS=m
 CONFIG_SND_PCM_OSS=m
 CONFIG_SND_PCM_OSS_PLUGINS=y
 CONFIG_SND_PCM_OSS_PLUGINS=y
 CONFIG_SND_PCM_TIMER=y
 CONFIG_SND_PCM_TIMER=y
-# CONFIG_SND_SEQUENCER_OSS is not set
 CONFIG_SND_HRTIMER=m
 CONFIG_SND_HRTIMER=m
-CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
 CONFIG_SND_DYNAMIC_MINORS=y
 CONFIG_SND_DYNAMIC_MINORS=y
 CONFIG_SND_MAX_CARDS=32
 CONFIG_SND_MAX_CARDS=32
 CONFIG_SND_SUPPORT_OLD_API=y
 CONFIG_SND_SUPPORT_OLD_API=y
@@ -3545,11 +3935,12 @@ CONFIG_SND_VERBOSE_PROCFS=y
 # CONFIG_SND_VERBOSE_PRINTK is not set
 # CONFIG_SND_VERBOSE_PRINTK is not set
 # CONFIG_SND_DEBUG is not set
 # CONFIG_SND_DEBUG is not set
 CONFIG_SND_VMASTER=y
 CONFIG_SND_VMASTER=y
-CONFIG_SND_RAWMIDI_SEQ=m
-# CONFIG_SND_OPL3_LIB_SEQ is not set
-# CONFIG_SND_OPL4_LIB_SEQ is not set
-# CONFIG_SND_SBAWE_SEQ is not set
-# CONFIG_SND_EMU10K1_SEQ is not set
+CONFIG_SND_SEQUENCER=m
+CONFIG_SND_SEQ_DUMMY=m
+# CONFIG_SND_SEQUENCER_OSS is not set
+CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
+CONFIG_SND_SEQ_MIDI_EVENT=m
+CONFIG_SND_SEQ_MIDI=m
 CONFIG_SND_DRIVERS=y
 CONFIG_SND_DRIVERS=y
 # CONFIG_SND_DUMMY is not set
 # CONFIG_SND_DUMMY is not set
 CONFIG_SND_ALOOP=m
 CONFIG_SND_ALOOP=m
@@ -3578,12 +3969,8 @@ CONFIG_SND_USB_PODHD=m
 CONFIG_SND_USB_TONEPORT=m
 CONFIG_SND_USB_TONEPORT=m
 CONFIG_SND_USB_VARIAX=m
 CONFIG_SND_USB_VARIAX=m
 CONFIG_SND_SOC=m
 CONFIG_SND_SOC=m
-CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
+# CONFIG_SND_SOC_AMD_ACP is not set
 # CONFIG_SND_ATMEL_SOC is not set
 # CONFIG_SND_ATMEL_SOC is not set
-CONFIG_SND_EDMA_SOC=m
-CONFIG_SND_DAVINCI_SOC_MCASP=m
-CONFIG_SND_DAVINCI_SOC_GENERIC_EVM=m
-CONFIG_SND_AM33XX_SOC_EVM=m
 # CONFIG_SND_DESIGNWARE_I2S is not set
 # CONFIG_SND_DESIGNWARE_I2S is not set
 
 
 #
 #
@@ -3599,17 +3986,29 @@ CONFIG_SND_SOC_FSL_SSI=m
 CONFIG_SND_SOC_FSL_SPDIF=m
 CONFIG_SND_SOC_FSL_SPDIF=m
 # CONFIG_SND_SOC_FSL_ESAI is not set
 # CONFIG_SND_SOC_FSL_ESAI is not set
 CONFIG_SND_SOC_IMX_AUDMUX=m
 CONFIG_SND_SOC_IMX_AUDMUX=m
-CONFIG_SND_OMAP_SOC=m
-CONFIG_SND_OMAP_SOC_MCBSP=m
-CONFIG_SND_OMAP_SOC_HDMI_AUDIO=m
-CONFIG_SND_OMAP_SOC_RX51=m
-CONFIG_SND_OMAP_SOC_OMAP_TWL4030=m
+# CONFIG_SND_I2S_HI6210_I2S is not set
+# CONFIG_SND_SOC_IMG is not set
+
+#
+# STMicroelectronics STM32 SOC audio support
+#
+
+#
+# Audio support for Texas Instruments SoCs
+#
 
 
 #
 #
-# Allwinner SoC Audio support
+# Texas Instruments DAI support for:
 #
 #
-CONFIG_SND_SUN4I_CODEC=m
+# CONFIG_SND_SOC_DAVINCI_MCASP is not set
+# CONFIG_SND_SOC_OMAP_MCBSP is not set
+
+#
+# Audio support for boards with Texas Instruments SoCs
+#
+# CONFIG_SND_SOC_OMAP_HDMI is not set
 # CONFIG_SND_SOC_XTFPGA_I2S is not set
 # CONFIG_SND_SOC_XTFPGA_I2S is not set
+# CONFIG_ZX_TDM is not set
 CONFIG_SND_SOC_I2C_AND_SPI=m
 CONFIG_SND_SOC_I2C_AND_SPI=m
 
 
 #
 #
@@ -3617,13 +4016,24 @@ CONFIG_SND_SOC_I2C_AND_SPI=m
 #
 #
 # CONFIG_SND_SOC_AC97_CODEC is not set
 # CONFIG_SND_SOC_AC97_CODEC is not set
 # CONFIG_SND_SOC_ADAU1701 is not set
 # CONFIG_SND_SOC_ADAU1701 is not set
+# CONFIG_SND_SOC_ADAU1761_I2C is not set
+# CONFIG_SND_SOC_ADAU1761_SPI is not set
+# CONFIG_SND_SOC_ADAU7002 is not set
 # CONFIG_SND_SOC_AK4104 is not set
 # CONFIG_SND_SOC_AK4104 is not set
+# CONFIG_SND_SOC_AK4458 is not set
 # CONFIG_SND_SOC_AK4554 is not set
 # CONFIG_SND_SOC_AK4554 is not set
 # CONFIG_SND_SOC_AK4613 is not set
 # CONFIG_SND_SOC_AK4613 is not set
 # CONFIG_SND_SOC_AK4642 is not set
 # CONFIG_SND_SOC_AK4642 is not set
 # CONFIG_SND_SOC_AK5386 is not set
 # CONFIG_SND_SOC_AK5386 is not set
+# CONFIG_SND_SOC_AK5558 is not set
 # CONFIG_SND_SOC_ALC5623 is not set
 # CONFIG_SND_SOC_ALC5623 is not set
+# CONFIG_SND_SOC_BD28623 is not set
+# CONFIG_SND_SOC_BT_SCO is not set
 # CONFIG_SND_SOC_CS35L32 is not set
 # CONFIG_SND_SOC_CS35L32 is not set
+# CONFIG_SND_SOC_CS35L33 is not set
+# CONFIG_SND_SOC_CS35L34 is not set
+# CONFIG_SND_SOC_CS35L35 is not set
+# CONFIG_SND_SOC_CS42L42 is not set
 # CONFIG_SND_SOC_CS42L51_I2C is not set
 # CONFIG_SND_SOC_CS42L51_I2C is not set
 # CONFIG_SND_SOC_CS42L52 is not set
 # CONFIG_SND_SOC_CS42L52 is not set
 # CONFIG_SND_SOC_CS42L56 is not set
 # CONFIG_SND_SOC_CS42L56 is not set
@@ -3633,18 +4043,40 @@ CONFIG_SND_SOC_I2C_AND_SPI=m
 # CONFIG_SND_SOC_CS4271_I2C is not set
 # CONFIG_SND_SOC_CS4271_I2C is not set
 # CONFIG_SND_SOC_CS4271_SPI is not set
 # CONFIG_SND_SOC_CS4271_SPI is not set
 # CONFIG_SND_SOC_CS42XX8_I2C is not set
 # CONFIG_SND_SOC_CS42XX8_I2C is not set
+# CONFIG_SND_SOC_CS43130 is not set
 # CONFIG_SND_SOC_CS4349 is not set
 # CONFIG_SND_SOC_CS4349 is not set
-# CONFIG_SND_SOC_ES8328 is not set
+# CONFIG_SND_SOC_CS53L30 is not set
+CONFIG_SND_SOC_HDMI_CODEC=m
+# CONFIG_SND_SOC_ES7134 is not set
+# CONFIG_SND_SOC_ES7241 is not set
+# CONFIG_SND_SOC_ES8316 is not set
+# CONFIG_SND_SOC_ES8328_I2C is not set
+# CONFIG_SND_SOC_ES8328_SPI is not set
 # CONFIG_SND_SOC_GTM601 is not set
 # CONFIG_SND_SOC_GTM601 is not set
+# CONFIG_SND_SOC_INNO_RK3036 is not set
+# CONFIG_SND_SOC_MAX98504 is not set
+# CONFIG_SND_SOC_MAX9867 is not set
+# CONFIG_SND_SOC_MAX98927 is not set
+# CONFIG_SND_SOC_MAX98373 is not set
+# CONFIG_SND_SOC_MAX9860 is not set
+# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set
 # CONFIG_SND_SOC_PCM1681 is not set
 # CONFIG_SND_SOC_PCM1681 is not set
-# CONFIG_SND_SOC_PCM1792A is not set
+# CONFIG_SND_SOC_PCM1789_I2C is not set
+# CONFIG_SND_SOC_PCM179X_I2C is not set
+# CONFIG_SND_SOC_PCM179X_SPI is not set
+# CONFIG_SND_SOC_PCM186X_I2C is not set
+# CONFIG_SND_SOC_PCM186X_SPI is not set
+# CONFIG_SND_SOC_PCM3168A_I2C is not set
+# CONFIG_SND_SOC_PCM3168A_SPI is not set
 # CONFIG_SND_SOC_PCM512x_I2C is not set
 # CONFIG_SND_SOC_PCM512x_I2C is not set
 # CONFIG_SND_SOC_PCM512x_SPI is not set
 # CONFIG_SND_SOC_PCM512x_SPI is not set
+# CONFIG_SND_SOC_RT5616 is not set
 # CONFIG_SND_SOC_RT5631 is not set
 # CONFIG_SND_SOC_RT5631 is not set
-# CONFIG_SND_SOC_RT5677_SPI is not set
 CONFIG_SND_SOC_SGTL5000=m
 CONFIG_SND_SOC_SGTL5000=m
+# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set
 # CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set
 # CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set
 # CONFIG_SND_SOC_SPDIF is not set
 # CONFIG_SND_SOC_SPDIF is not set
+# CONFIG_SND_SOC_SSM2305 is not set
 # CONFIG_SND_SOC_SSM2602_SPI is not set
 # CONFIG_SND_SOC_SSM2602_SPI is not set
 # CONFIG_SND_SOC_SSM2602_I2C is not set
 # CONFIG_SND_SOC_SSM2602_I2C is not set
 # CONFIG_SND_SOC_SSM4567 is not set
 # CONFIG_SND_SOC_SSM4567 is not set
@@ -3654,16 +4086,23 @@ CONFIG_SND_SOC_SGTL5000=m
 # CONFIG_SND_SOC_TAS2552 is not set
 # CONFIG_SND_SOC_TAS2552 is not set
 # CONFIG_SND_SOC_TAS5086 is not set
 # CONFIG_SND_SOC_TAS5086 is not set
 # CONFIG_SND_SOC_TAS571X is not set
 # CONFIG_SND_SOC_TAS571X is not set
+# CONFIG_SND_SOC_TAS5720 is not set
+# CONFIG_SND_SOC_TAS6424 is not set
+# CONFIG_SND_SOC_TDA7419 is not set
 # CONFIG_SND_SOC_TFA9879 is not set
 # CONFIG_SND_SOC_TFA9879 is not set
 CONFIG_SND_SOC_TLV320AIC23=m
 CONFIG_SND_SOC_TLV320AIC23=m
 CONFIG_SND_SOC_TLV320AIC23_I2C=m
 CONFIG_SND_SOC_TLV320AIC23_I2C=m
 # CONFIG_SND_SOC_TLV320AIC23_SPI is not set
 # CONFIG_SND_SOC_TLV320AIC23_SPI is not set
 CONFIG_SND_SOC_TLV320AIC31XX=m
 CONFIG_SND_SOC_TLV320AIC31XX=m
+# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set
+# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set
 CONFIG_SND_SOC_TLV320AIC3X=m
 CONFIG_SND_SOC_TLV320AIC3X=m
 CONFIG_SND_SOC_TS3A227E=m
 CONFIG_SND_SOC_TS3A227E=m
-CONFIG_SND_SOC_TWL4030=m
+# CONFIG_SND_SOC_TSCS42XX is not set
+# CONFIG_SND_SOC_TSCS454 is not set
 # CONFIG_SND_SOC_WM8510 is not set
 # CONFIG_SND_SOC_WM8510 is not set
 # CONFIG_SND_SOC_WM8523 is not set
 # CONFIG_SND_SOC_WM8523 is not set
+# CONFIG_SND_SOC_WM8524 is not set
 # CONFIG_SND_SOC_WM8580 is not set
 # CONFIG_SND_SOC_WM8580 is not set
 # CONFIG_SND_SOC_WM8711 is not set
 # CONFIG_SND_SOC_WM8711 is not set
 # CONFIG_SND_SOC_WM8728 is not set
 # CONFIG_SND_SOC_WM8728 is not set
@@ -3674,14 +4113,27 @@ CONFIG_SND_SOC_TWL4030=m
 # CONFIG_SND_SOC_WM8753 is not set
 # CONFIG_SND_SOC_WM8753 is not set
 # CONFIG_SND_SOC_WM8770 is not set
 # CONFIG_SND_SOC_WM8770 is not set
 # CONFIG_SND_SOC_WM8776 is not set
 # CONFIG_SND_SOC_WM8776 is not set
+# CONFIG_SND_SOC_WM8782 is not set
 # CONFIG_SND_SOC_WM8804_I2C is not set
 # CONFIG_SND_SOC_WM8804_I2C is not set
 # CONFIG_SND_SOC_WM8804_SPI is not set
 # CONFIG_SND_SOC_WM8804_SPI is not set
 # CONFIG_SND_SOC_WM8903 is not set
 # CONFIG_SND_SOC_WM8903 is not set
+# CONFIG_SND_SOC_WM8960 is not set
 # CONFIG_SND_SOC_WM8962 is not set
 # CONFIG_SND_SOC_WM8962 is not set
+# CONFIG_SND_SOC_WM8974 is not set
 # CONFIG_SND_SOC_WM8978 is not set
 # CONFIG_SND_SOC_WM8978 is not set
+# CONFIG_SND_SOC_WM8985 is not set
+# CONFIG_SND_SOC_ZX_AUD96P22 is not set
+# CONFIG_SND_SOC_MAX9759 is not set
+# CONFIG_SND_SOC_MT6351 is not set
+# CONFIG_SND_SOC_NAU8540 is not set
+# CONFIG_SND_SOC_NAU8810 is not set
+# CONFIG_SND_SOC_NAU8824 is not set
 CONFIG_SND_SOC_TPA6130A2=m
 CONFIG_SND_SOC_TPA6130A2=m
+CONFIG_SND_SIMPLE_CARD_UTILS=m
 CONFIG_SND_SIMPLE_CARD=m
 CONFIG_SND_SIMPLE_CARD=m
-# CONFIG_SOUND_PRIME is not set
+# CONFIG_SND_SIMPLE_SCU_CARD is not set
+# CONFIG_SND_AUDIO_GRAPH_CARD is not set
+# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
 
 
 #
 #
 # HID support
 # HID support
@@ -3696,22 +4148,27 @@ CONFIG_HID_GENERIC=y
 # Special HID drivers
 # Special HID drivers
 #
 #
 CONFIG_HID_A4TECH=m
 CONFIG_HID_A4TECH=m
+# CONFIG_HID_ACCUTOUCH is not set
 CONFIG_HID_ACRUX=m
 CONFIG_HID_ACRUX=m
 CONFIG_HID_ACRUX_FF=y
 CONFIG_HID_ACRUX_FF=y
 CONFIG_HID_APPLE=m
 CONFIG_HID_APPLE=m
 CONFIG_HID_APPLEIR=m
 CONFIG_HID_APPLEIR=m
+# CONFIG_HID_ASUS is not set
 CONFIG_HID_AUREAL=m
 CONFIG_HID_AUREAL=m
 CONFIG_HID_BELKIN=m
 CONFIG_HID_BELKIN=m
 CONFIG_HID_BETOP_FF=m
 CONFIG_HID_BETOP_FF=m
 CONFIG_HID_CHERRY=m
 CONFIG_HID_CHERRY=m
 CONFIG_HID_CHICONY=m
 CONFIG_HID_CHICONY=m
 CONFIG_HID_CORSAIR=m
 CONFIG_HID_CORSAIR=m
+# CONFIG_HID_COUGAR is not set
 CONFIG_HID_PRODIKEYS=m
 CONFIG_HID_PRODIKEYS=m
+# CONFIG_HID_CMEDIA is not set
 CONFIG_HID_CP2112=m
 CONFIG_HID_CP2112=m
 CONFIG_HID_CYPRESS=m
 CONFIG_HID_CYPRESS=m
 CONFIG_HID_DRAGONRISE=m
 CONFIG_HID_DRAGONRISE=m
 CONFIG_DRAGONRISE_FF=y
 CONFIG_DRAGONRISE_FF=y
 CONFIG_HID_EMS_FF=m
 CONFIG_HID_EMS_FF=m
+# CONFIG_HID_ELAN is not set
 CONFIG_HID_ELECOM=m
 CONFIG_HID_ELECOM=m
 CONFIG_HID_ELO=m
 CONFIG_HID_ELO=m
 CONFIG_HID_EZKEY=m
 CONFIG_HID_EZKEY=m
@@ -3719,6 +4176,7 @@ CONFIG_HID_GEMBIRD=m
 CONFIG_HID_GFRM=m
 CONFIG_HID_GFRM=m
 CONFIG_HID_HOLTEK=m
 CONFIG_HID_HOLTEK=m
 CONFIG_HOLTEK_FF=y
 CONFIG_HOLTEK_FF=y
+# CONFIG_HID_GOOGLE_HAMMER is not set
 CONFIG_HID_GT683R=m
 CONFIG_HID_GT683R=m
 CONFIG_HID_KEYTOUCH=m
 CONFIG_HID_KEYTOUCH=m
 CONFIG_HID_KYE=m
 CONFIG_HID_KYE=m
@@ -3726,9 +4184,12 @@ CONFIG_HID_UCLOGIC=m
 CONFIG_HID_WALTOP=m
 CONFIG_HID_WALTOP=m
 CONFIG_HID_GYRATION=m
 CONFIG_HID_GYRATION=m
 CONFIG_HID_ICADE=m
 CONFIG_HID_ICADE=m
+# CONFIG_HID_ITE is not set
+# CONFIG_HID_JABRA is not set
 CONFIG_HID_TWINHAN=m
 CONFIG_HID_TWINHAN=m
 CONFIG_HID_KENSINGTON=m
 CONFIG_HID_KENSINGTON=m
 CONFIG_HID_LCPOWER=m
 CONFIG_HID_LCPOWER=m
+CONFIG_HID_LED=m
 CONFIG_HID_LENOVO=m
 CONFIG_HID_LENOVO=m
 CONFIG_HID_LOGITECH=y
 CONFIG_HID_LOGITECH=y
 CONFIG_HID_LOGITECH_DJ=y
 CONFIG_HID_LOGITECH_DJ=y
@@ -3738,9 +4199,12 @@ CONFIG_LOGIRUMBLEPAD2_FF=y
 CONFIG_LOGIG940_FF=y
 CONFIG_LOGIG940_FF=y
 CONFIG_LOGIWHEELS_FF=y
 CONFIG_LOGIWHEELS_FF=y
 CONFIG_HID_MAGICMOUSE=m
 CONFIG_HID_MAGICMOUSE=m
+# CONFIG_HID_MAYFLASH is not set
+# CONFIG_HID_REDRAGON is not set
 CONFIG_HID_MICROSOFT=m
 CONFIG_HID_MICROSOFT=m
 CONFIG_HID_MONTEREY=m
 CONFIG_HID_MONTEREY=m
 CONFIG_HID_MULTITOUCH=m
 CONFIG_HID_MULTITOUCH=m
+# CONFIG_HID_NTI is not set
 CONFIG_HID_NTRIG=m
 CONFIG_HID_NTRIG=m
 CONFIG_HID_ORTEK=m
 CONFIG_HID_ORTEK=m
 CONFIG_HID_PANTHERLORD=m
 CONFIG_HID_PANTHERLORD=m
@@ -3754,12 +4218,14 @@ CONFIG_HID_PICOLCD_LEDS=y
 CONFIG_HID_PICOLCD_CIR=y
 CONFIG_HID_PICOLCD_CIR=y
 CONFIG_HID_PLANTRONICS=m
 CONFIG_HID_PLANTRONICS=m
 CONFIG_HID_PRIMAX=m
 CONFIG_HID_PRIMAX=m
+# CONFIG_HID_RETRODE is not set
 CONFIG_HID_ROCCAT=m
 CONFIG_HID_ROCCAT=m
 CONFIG_HID_SAITEK=m
 CONFIG_HID_SAITEK=m
 CONFIG_HID_SAMSUNG=m
 CONFIG_HID_SAMSUNG=m
 CONFIG_HID_SONY=m
 CONFIG_HID_SONY=m
 CONFIG_SONY_FF=y
 CONFIG_SONY_FF=y
 CONFIG_HID_SPEEDLINK=m
 CONFIG_HID_SPEEDLINK=m
+# CONFIG_HID_STEAM is not set
 CONFIG_HID_STEELSERIES=m
 CONFIG_HID_STEELSERIES=m
 CONFIG_HID_SUNPLUS=m
 CONFIG_HID_SUNPLUS=m
 CONFIG_HID_RMI=m
 CONFIG_HID_RMI=m
@@ -3772,6 +4238,7 @@ CONFIG_HID_TOPSEED=m
 CONFIG_HID_THINGM=m
 CONFIG_HID_THINGM=m
 CONFIG_HID_THRUSTMASTER=m
 CONFIG_HID_THRUSTMASTER=m
 CONFIG_THRUSTMASTER_FF=y
 CONFIG_THRUSTMASTER_FF=y
+# CONFIG_HID_UDRAW_PS3 is not set
 CONFIG_HID_WACOM=m
 CONFIG_HID_WACOM=m
 CONFIG_HID_WIIMOTE=m
 CONFIG_HID_WIIMOTE=m
 CONFIG_HID_XINMO=m
 CONFIG_HID_XINMO=m
@@ -3780,6 +4247,7 @@ CONFIG_ZEROPLUS_FF=y
 CONFIG_HID_ZYDACRON=m
 CONFIG_HID_ZYDACRON=m
 CONFIG_HID_SENSOR_HUB=m
 CONFIG_HID_SENSOR_HUB=m
 CONFIG_HID_SENSOR_CUSTOM_SENSOR=m
 CONFIG_HID_SENSOR_CUSTOM_SENSOR=m
+# CONFIG_HID_ALPS is not set
 
 
 #
 #
 # USB HID support
 # USB HID support
@@ -3807,7 +4275,7 @@ CONFIG_USB_DYNAMIC_MINORS=y
 # CONFIG_USB_OTG is not set
 # CONFIG_USB_OTG is not set
 # CONFIG_USB_OTG_WHITELIST is not set
 # CONFIG_USB_OTG_WHITELIST is not set
 # CONFIG_USB_OTG_BLACKLIST_HUB is not set
 # CONFIG_USB_OTG_BLACKLIST_HUB is not set
-# CONFIG_USB_ULPI_BUS is not set
+# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set
 CONFIG_USB_MON=m
 CONFIG_USB_MON=m
 CONFIG_USB_WUSB=m
 CONFIG_USB_WUSB=m
 CONFIG_USB_WUSB_CBAF=m
 CONFIG_USB_WUSB_CBAF=m
@@ -3818,6 +4286,7 @@ CONFIG_USB_WUSB_CBAF=m
 #
 #
 # CONFIG_USB_C67X00_HCD is not set
 # CONFIG_USB_C67X00_HCD is not set
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_HCD=y
+# CONFIG_USB_XHCI_DBGCAP is not set
 CONFIG_USB_XHCI_PLATFORM=y
 CONFIG_USB_XHCI_PLATFORM=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_ROOT_HUB_TT=y
 CONFIG_USB_EHCI_ROOT_HUB_TT=y
@@ -3826,7 +4295,6 @@ CONFIG_USB_EHCI_HCD_OMAP=y
 CONFIG_USB_EHCI_HCD_PLATFORM=y
 CONFIG_USB_EHCI_HCD_PLATFORM=y
 # CONFIG_USB_OXU210HP_HCD is not set
 # CONFIG_USB_OXU210HP_HCD is not set
 # CONFIG_USB_ISP116X_HCD is not set
 # CONFIG_USB_ISP116X_HCD is not set
-# CONFIG_USB_ISP1362_HCD is not set
 # CONFIG_USB_FOTG210_HCD is not set
 # CONFIG_USB_FOTG210_HCD is not set
 # CONFIG_USB_MAX3421_HCD is not set
 # CONFIG_USB_MAX3421_HCD is not set
 # CONFIG_USB_OHCI_HCD is not set
 # CONFIG_USB_OHCI_HCD is not set
@@ -3878,8 +4346,12 @@ CONFIG_USB_MDC800=m
 CONFIG_USB_MICROTEK=m
 CONFIG_USB_MICROTEK=m
 CONFIG_USBIP_CORE=m
 CONFIG_USBIP_CORE=m
 CONFIG_USBIP_VHCI_HCD=m
 CONFIG_USBIP_VHCI_HCD=m
+CONFIG_USBIP_VHCI_HC_PORTS=8
+CONFIG_USBIP_VHCI_NR_HCS=1
 CONFIG_USBIP_HOST=m
 CONFIG_USBIP_HOST=m
+# CONFIG_USBIP_VUDC is not set
 # CONFIG_USBIP_DEBUG is not set
 # CONFIG_USBIP_DEBUG is not set
+# CONFIG_USB_CDNS3 is not set
 CONFIG_USB_MUSB_HDRC=y
 CONFIG_USB_MUSB_HDRC=y
 # CONFIG_USB_MUSB_HOST is not set
 # CONFIG_USB_MUSB_HOST is not set
 # CONFIG_USB_MUSB_GADGET is not set
 # CONFIG_USB_MUSB_GADGET is not set
@@ -3897,8 +4369,10 @@ CONFIG_USB_MUSB_AM335X_CHILD=y
 #
 #
 # MUSB DMA mode
 # MUSB DMA mode
 #
 #
-CONFIG_MUSB_PIO_ONLY=y
+# CONFIG_MUSB_PIO_ONLY is not set
+CONFIG_USB_TI_CPPI41_DMA=y
 CONFIG_USB_DWC3=y
 CONFIG_USB_DWC3=y
+# CONFIG_USB_DWC3_ULPI is not set
 # CONFIG_USB_DWC3_HOST is not set
 # CONFIG_USB_DWC3_HOST is not set
 # CONFIG_USB_DWC3_GADGET is not set
 # CONFIG_USB_DWC3_GADGET is not set
 CONFIG_USB_DWC3_DUAL_ROLE=y
 CONFIG_USB_DWC3_DUAL_ROLE=y
@@ -3907,6 +4381,7 @@ CONFIG_USB_DWC3_DUAL_ROLE=y
 # Platform Glue Driver Support
 # Platform Glue Driver Support
 #
 #
 CONFIG_USB_DWC3_OMAP=m
 CONFIG_USB_DWC3_OMAP=m
+CONFIG_USB_DWC3_OF_SIMPLE=y
 CONFIG_USB_DWC2=m
 CONFIG_USB_DWC2=m
 # CONFIG_USB_DWC2_HOST is not set
 # CONFIG_USB_DWC2_HOST is not set
 
 
@@ -3921,7 +4396,6 @@ CONFIG_USB_CHIPIDEA=y
 CONFIG_USB_CHIPIDEA_OF=y
 CONFIG_USB_CHIPIDEA_OF=y
 CONFIG_USB_CHIPIDEA_UDC=y
 CONFIG_USB_CHIPIDEA_UDC=y
 CONFIG_USB_CHIPIDEA_HOST=y
 CONFIG_USB_CHIPIDEA_HOST=y
-# CONFIG_USB_CHIPIDEA_DEBUG is not set
 # CONFIG_USB_ISP1760 is not set
 # CONFIG_USB_ISP1760 is not set
 
 
 #
 #
@@ -3946,23 +4420,12 @@ CONFIG_USB_SERIAL_IR=m
 CONFIG_USB_SERIAL_EDGEPORT=m
 CONFIG_USB_SERIAL_EDGEPORT=m
 CONFIG_USB_SERIAL_EDGEPORT_TI=m
 CONFIG_USB_SERIAL_EDGEPORT_TI=m
 CONFIG_USB_SERIAL_F81232=m
 CONFIG_USB_SERIAL_F81232=m
+# CONFIG_USB_SERIAL_F8153X is not set
 CONFIG_USB_SERIAL_GARMIN=m
 CONFIG_USB_SERIAL_GARMIN=m
 CONFIG_USB_SERIAL_IPW=m
 CONFIG_USB_SERIAL_IPW=m
 CONFIG_USB_SERIAL_IUU=m
 CONFIG_USB_SERIAL_IUU=m
 CONFIG_USB_SERIAL_KEYSPAN_PDA=m
 CONFIG_USB_SERIAL_KEYSPAN_PDA=m
 CONFIG_USB_SERIAL_KEYSPAN=m
 CONFIG_USB_SERIAL_KEYSPAN=m
-# CONFIG_USB_SERIAL_KEYSPAN_MPR is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set
-# CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set
 CONFIG_USB_SERIAL_KLSI=m
 CONFIG_USB_SERIAL_KLSI=m
 CONFIG_USB_SERIAL_KOBIL_SCT=m
 CONFIG_USB_SERIAL_KOBIL_SCT=m
 CONFIG_USB_SERIAL_MCT_U232=m
 CONFIG_USB_SERIAL_MCT_U232=m
@@ -3991,6 +4454,7 @@ CONFIG_USB_SERIAL_XSENS_MT=m
 CONFIG_USB_SERIAL_WISHBONE=m
 CONFIG_USB_SERIAL_WISHBONE=m
 CONFIG_USB_SERIAL_SSU100=m
 CONFIG_USB_SERIAL_SSU100=m
 CONFIG_USB_SERIAL_QT2=m
 CONFIG_USB_SERIAL_QT2=m
+# CONFIG_USB_SERIAL_UPD78F0730 is not set
 CONFIG_USB_SERIAL_DEBUG=m
 CONFIG_USB_SERIAL_DEBUG=m
 
 
 #
 #
@@ -4003,7 +4467,6 @@ CONFIG_USB_SEVSEG=m
 CONFIG_USB_RIO500=m
 CONFIG_USB_RIO500=m
 CONFIG_USB_LEGOTOWER=m
 CONFIG_USB_LEGOTOWER=m
 CONFIG_USB_LCD=m
 CONFIG_USB_LCD=m
-CONFIG_USB_LED=m
 CONFIG_USB_CYPRESS_CY7C63=m
 CONFIG_USB_CYPRESS_CY7C63=m
 CONFIG_USB_CYTHERM=m
 CONFIG_USB_CYTHERM=m
 CONFIG_USB_IDMOUSE=m
 CONFIG_USB_IDMOUSE=m
@@ -4019,7 +4482,9 @@ CONFIG_USB_EHSET_TEST_FIXTURE=m
 CONFIG_USB_ISIGHTFW=m
 CONFIG_USB_ISIGHTFW=m
 CONFIG_USB_YUREX=m
 CONFIG_USB_YUREX=m
 CONFIG_USB_EZUSB_FX2=m
 CONFIG_USB_EZUSB_FX2=m
+# CONFIG_USB_HUB_USB251XB is not set
 CONFIG_USB_HSIC_USB3503=m
 CONFIG_USB_HSIC_USB3503=m
+# CONFIG_USB_HSIC_USB4604 is not set
 # CONFIG_USB_LINK_LAYER_TEST is not set
 # CONFIG_USB_LINK_LAYER_TEST is not set
 CONFIG_USB_CHAOSKEY=m
 CONFIG_USB_CHAOSKEY=m
 # CONFIG_USB_ATM is not set
 # CONFIG_USB_ATM is not set
@@ -4041,6 +4506,7 @@ CONFIG_USB_GADGET=y
 # CONFIG_USB_GADGET_DEBUG_FS is not set
 # CONFIG_USB_GADGET_DEBUG_FS is not set
 CONFIG_USB_GADGET_VBUS_DRAW=500
 CONFIG_USB_GADGET_VBUS_DRAW=500
 CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
 CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
+# CONFIG_U_SERIAL_CONSOLE is not set
 
 
 #
 #
 # USB Peripheral Controller
 # USB Peripheral Controller
@@ -4052,6 +4518,7 @@ CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
 # CONFIG_USB_PXA27X is not set
 # CONFIG_USB_PXA27X is not set
 # CONFIG_USB_MV_UDC is not set
 # CONFIG_USB_MV_UDC is not set
 # CONFIG_USB_MV_U3D is not set
 # CONFIG_USB_MV_U3D is not set
+# CONFIG_USB_SNP_UDC_PLAT is not set
 # CONFIG_USB_M66592 is not set
 # CONFIG_USB_M66592 is not set
 # CONFIG_USB_BDC_UDC is not set
 # CONFIG_USB_BDC_UDC is not set
 # CONFIG_USB_NET2272 is not set
 # CONFIG_USB_NET2272 is not set
@@ -4062,6 +4529,7 @@ CONFIG_USB_F_ACM=m
 CONFIG_USB_F_SS_LB=m
 CONFIG_USB_F_SS_LB=m
 CONFIG_USB_U_SERIAL=m
 CONFIG_USB_U_SERIAL=m
 CONFIG_USB_U_ETHER=m
 CONFIG_USB_U_ETHER=m
+CONFIG_USB_U_AUDIO=m
 CONFIG_USB_F_SERIAL=m
 CONFIG_USB_F_SERIAL=m
 CONFIG_USB_F_OBEX=m
 CONFIG_USB_F_OBEX=m
 CONFIG_USB_F_NCM=m
 CONFIG_USB_F_NCM=m
@@ -4089,11 +4557,13 @@ CONFIG_USB_CONFIGFS_RNDIS=y
 # CONFIG_USB_CONFIGFS_F_LB_SS is not set
 # CONFIG_USB_CONFIGFS_F_LB_SS is not set
 # CONFIG_USB_CONFIGFS_F_FS is not set
 # CONFIG_USB_CONFIGFS_F_FS is not set
 # CONFIG_USB_CONFIGFS_F_UAC1 is not set
 # CONFIG_USB_CONFIGFS_F_UAC1 is not set
+# CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set
 # CONFIG_USB_CONFIGFS_F_UAC2 is not set
 # CONFIG_USB_CONFIGFS_F_UAC2 is not set
 # CONFIG_USB_CONFIGFS_F_MIDI is not set
 # CONFIG_USB_CONFIGFS_F_MIDI is not set
 # CONFIG_USB_CONFIGFS_F_HID is not set
 # CONFIG_USB_CONFIGFS_F_HID is not set
 # CONFIG_USB_CONFIGFS_F_UVC is not set
 # CONFIG_USB_CONFIGFS_F_UVC is not set
 # CONFIG_USB_CONFIGFS_F_PRINTER is not set
 # CONFIG_USB_CONFIGFS_F_PRINTER is not set
+# CONFIG_USB_CONFIGFS_F_TCM is not set
 CONFIG_USB_ZERO=m
 CONFIG_USB_ZERO=m
 CONFIG_USB_AUDIO=m
 CONFIG_USB_AUDIO=m
 # CONFIG_GADGET_UAC1 is not set
 # CONFIG_GADGET_UAC1 is not set
@@ -4122,41 +4592,50 @@ CONFIG_USB_G_DBGP=m
 # CONFIG_USB_G_DBGP_PRINTK is not set
 # CONFIG_USB_G_DBGP_PRINTK is not set
 CONFIG_USB_G_DBGP_SERIAL=y
 CONFIG_USB_G_DBGP_SERIAL=y
 # CONFIG_USB_G_WEBCAM is not set
 # CONFIG_USB_G_WEBCAM is not set
+# CONFIG_TYPEC is not set
+# CONFIG_USB_ROLE_SWITCH is not set
 CONFIG_USB_LED_TRIG=y
 CONFIG_USB_LED_TRIG=y
+CONFIG_USB_ULPI_BUS=y
 CONFIG_UWB=m
 CONFIG_UWB=m
 CONFIG_UWB_HWA=m
 CONFIG_UWB_HWA=m
 CONFIG_UWB_I1480U=m
 CONFIG_UWB_I1480U=m
 CONFIG_MMC=y
 CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-
-#
-# MMC/SD/SDIO Card Drivers
-#
+CONFIG_PWRSEQ_EMMC=y
+# CONFIG_PWRSEQ_SD8787 is not set
+CONFIG_PWRSEQ_SIMPLE=y
 CONFIG_MMC_BLOCK=y
 CONFIG_MMC_BLOCK=y
 CONFIG_MMC_BLOCK_MINORS=8
 CONFIG_MMC_BLOCK_MINORS=8
-CONFIG_MMC_BLOCK_BOUNCE=y
 CONFIG_SDIO_UART=m
 CONFIG_SDIO_UART=m
 # CONFIG_MMC_TEST is not set
 # CONFIG_MMC_TEST is not set
 
 
 #
 #
 # MMC/SD/SDIO Host Controller Drivers
 # MMC/SD/SDIO Host Controller Drivers
 #
 #
+# CONFIG_MMC_DEBUG is not set
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_PLTFM=y
 CONFIG_MMC_SDHCI_PLTFM=y
 # CONFIG_MMC_SDHCI_OF_ARASAN is not set
 # CONFIG_MMC_SDHCI_OF_ARASAN is not set
 # CONFIG_MMC_SDHCI_OF_AT91 is not set
 # CONFIG_MMC_SDHCI_OF_AT91 is not set
+# CONFIG_MMC_SDHCI_OF_DWCMSHC is not set
+# CONFIG_MMC_SDHCI_CADENCE is not set
 # CONFIG_MMC_SDHCI_F_SDH30 is not set
 # CONFIG_MMC_SDHCI_F_SDH30 is not set
 CONFIG_MMC_OMAP=y
 CONFIG_MMC_OMAP=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_MMC_OMAP_HS=y
+# CONFIG_MMC_SPI is not set
 CONFIG_MMC_DW=y
 CONFIG_MMC_DW=y
 CONFIG_MMC_DW_PLTFM=y
 CONFIG_MMC_DW_PLTFM=y
+# CONFIG_MMC_DW_BLUEFIELD is not set
 CONFIG_MMC_DW_EXYNOS=m
 CONFIG_MMC_DW_EXYNOS=m
+# CONFIG_MMC_DW_HI3798CV200 is not set
 # CONFIG_MMC_DW_K3 is not set
 # CONFIG_MMC_DW_K3 is not set
 CONFIG_MMC_VUB300=m
 CONFIG_MMC_VUB300=m
 CONFIG_MMC_USHC=m
 CONFIG_MMC_USHC=m
 # CONFIG_MMC_USDHI6ROL0 is not set
 # CONFIG_MMC_USDHI6ROL0 is not set
-CONFIG_MMC_REALTEK_USB=m
+# CONFIG_MMC_CQHCI is not set
 # CONFIG_MMC_MTK is not set
 # CONFIG_MMC_MTK is not set
+# CONFIG_MMC_SDHCI_XENON is not set
+# CONFIG_MMC_SDHCI_OMAP is not set
+# CONFIG_MMC_SDHCI_AM654 is not set
 CONFIG_MEMSTICK=m
 CONFIG_MEMSTICK=m
 # CONFIG_MEMSTICK_DEBUG is not set
 # CONFIG_MEMSTICK_DEBUG is not set
 
 
@@ -4170,22 +4649,25 @@ CONFIG_MSPRO_BLOCK=m
 #
 #
 # MemoryStick Host Controller Drivers
 # MemoryStick Host Controller Drivers
 #
 #
-CONFIG_MEMSTICK_REALTEK_USB=m
 CONFIG_NEW_LEDS=y
 CONFIG_NEW_LEDS=y
 CONFIG_LEDS_CLASS=y
 CONFIG_LEDS_CLASS=y
 # CONFIG_LEDS_CLASS_FLASH is not set
 # CONFIG_LEDS_CLASS_FLASH is not set
+# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set
 
 
 #
 #
 # LED drivers
 # LED drivers
 #
 #
 # CONFIG_LEDS_BCM6328 is not set
 # CONFIG_LEDS_BCM6328 is not set
 # CONFIG_LEDS_BCM6358 is not set
 # CONFIG_LEDS_BCM6358 is not set
+# CONFIG_LEDS_CR0014114 is not set
 CONFIG_LEDS_LM3530=m
 CONFIG_LEDS_LM3530=m
 CONFIG_LEDS_LM3642=m
 CONFIG_LEDS_LM3642=m
+# CONFIG_LEDS_LM3692X is not set
 CONFIG_LEDS_PCA9532=m
 CONFIG_LEDS_PCA9532=m
 CONFIG_LEDS_PCA9532_GPIO=y
 CONFIG_LEDS_PCA9532_GPIO=y
 CONFIG_LEDS_GPIO=m
 CONFIG_LEDS_GPIO=m
 CONFIG_LEDS_LP3944=m
 CONFIG_LEDS_LP3944=m
+# CONFIG_LEDS_LP3952 is not set
 CONFIG_LEDS_LP55XX_COMMON=m
 CONFIG_LEDS_LP55XX_COMMON=m
 CONFIG_LEDS_LP5521=m
 CONFIG_LEDS_LP5521=m
 CONFIG_LEDS_LP5523=m
 CONFIG_LEDS_LP5523=m
@@ -4193,6 +4675,7 @@ CONFIG_LEDS_LP5562=m
 CONFIG_LEDS_LP8501=m
 CONFIG_LEDS_LP8501=m
 CONFIG_LEDS_LP8860=m
 CONFIG_LEDS_LP8860=m
 CONFIG_LEDS_PCA955X=m
 CONFIG_LEDS_PCA955X=m
+# CONFIG_LEDS_PCA955X_GPIO is not set
 CONFIG_LEDS_PCA963X=m
 CONFIG_LEDS_PCA963X=m
 CONFIG_LEDS_DA9052=m
 CONFIG_LEDS_DA9052=m
 CONFIG_LEDS_DAC124S085=m
 CONFIG_LEDS_DAC124S085=m
@@ -4204,12 +4687,16 @@ CONFIG_LEDS_MC13783=m
 CONFIG_LEDS_TCA6507=m
 CONFIG_LEDS_TCA6507=m
 CONFIG_LEDS_TLC591XX=m
 CONFIG_LEDS_TLC591XX=m
 CONFIG_LEDS_LM355x=m
 CONFIG_LEDS_LM355x=m
+# CONFIG_LEDS_IS31FL319X is not set
+# CONFIG_LEDS_IS31FL32XX is not set
 
 
 #
 #
 # LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
 # LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
 #
 #
 # CONFIG_LEDS_BLINKM is not set
 # CONFIG_LEDS_BLINKM is not set
 # CONFIG_LEDS_SYSCON is not set
 # CONFIG_LEDS_SYSCON is not set
+# CONFIG_LEDS_MLXREG is not set
+# CONFIG_LEDS_USER is not set
 
 
 #
 #
 # LED Triggers
 # LED Triggers
@@ -4217,8 +4704,12 @@ CONFIG_LEDS_LM355x=m
 CONFIG_LEDS_TRIGGERS=y
 CONFIG_LEDS_TRIGGERS=y
 CONFIG_LEDS_TRIGGER_TIMER=y
 CONFIG_LEDS_TRIGGER_TIMER=y
 CONFIG_LEDS_TRIGGER_ONESHOT=y
 CONFIG_LEDS_TRIGGER_ONESHOT=y
+# CONFIG_LEDS_TRIGGER_DISK is not set
+# CONFIG_LEDS_TRIGGER_MTD is not set
 CONFIG_LEDS_TRIGGER_HEARTBEAT=y
 CONFIG_LEDS_TRIGGER_HEARTBEAT=y
 CONFIG_LEDS_TRIGGER_BACKLIGHT=y
 CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+# CONFIG_LEDS_TRIGGER_CPU is not set
+# CONFIG_LEDS_TRIGGER_ACTIVITY is not set
 CONFIG_LEDS_TRIGGER_GPIO=y
 CONFIG_LEDS_TRIGGER_GPIO=y
 CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
 CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
 
 
@@ -4227,18 +4718,23 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
 #
 #
 CONFIG_LEDS_TRIGGER_TRANSIENT=m
 CONFIG_LEDS_TRIGGER_TRANSIENT=m
 CONFIG_LEDS_TRIGGER_CAMERA=m
 CONFIG_LEDS_TRIGGER_CAMERA=m
+# CONFIG_LEDS_TRIGGER_PANIC is not set
+# CONFIG_LEDS_TRIGGER_NETDEV is not set
 CONFIG_ACCESSIBILITY=y
 CONFIG_ACCESSIBILITY=y
 CONFIG_A11Y_BRAILLE_CONSOLE=y
 CONFIG_A11Y_BRAILLE_CONSOLE=y
+# CONFIG_INFINIBAND is not set
 CONFIG_EDAC_ATOMIC_SCRUB=y
 CONFIG_EDAC_ATOMIC_SCRUB=y
 CONFIG_EDAC_SUPPORT=y
 CONFIG_EDAC_SUPPORT=y
 # CONFIG_EDAC is not set
 # CONFIG_EDAC is not set
 CONFIG_RTC_LIB=y
 CONFIG_RTC_LIB=y
+CONFIG_RTC_MC146818_LIB=y
 CONFIG_RTC_CLASS=y
 CONFIG_RTC_CLASS=y
 CONFIG_RTC_HCTOSYS=y
 CONFIG_RTC_HCTOSYS=y
 CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
 CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
 CONFIG_RTC_SYSTOHC=y
 CONFIG_RTC_SYSTOHC=y
 CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
 CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
 # CONFIG_RTC_DEBUG is not set
 # CONFIG_RTC_DEBUG is not set
+CONFIG_RTC_NVMEM=y
 
 
 #
 #
 # RTC interfaces
 # RTC interfaces
@@ -4256,34 +4752,34 @@ CONFIG_RTC_INTF_DEV=y
 # CONFIG_RTC_DRV_ABX80X is not set
 # CONFIG_RTC_DRV_ABX80X is not set
 CONFIG_RTC_DRV_AS3722=y
 CONFIG_RTC_DRV_AS3722=y
 CONFIG_RTC_DRV_DS1307=y
 CONFIG_RTC_DRV_DS1307=y
+# CONFIG_RTC_DRV_DS1307_CENTURY is not set
 CONFIG_RTC_DRV_DS1374=m
 CONFIG_RTC_DRV_DS1374=m
 CONFIG_RTC_DRV_DS1374_WDT=y
 CONFIG_RTC_DRV_DS1374_WDT=y
 CONFIG_RTC_DRV_DS1672=m
 CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_DS3232=m
 CONFIG_RTC_DRV_HYM8563=m
 CONFIG_RTC_DRV_HYM8563=m
 CONFIG_RTC_DRV_MAX6900=m
 CONFIG_RTC_DRV_MAX6900=m
 CONFIG_RTC_DRV_RS5C372=m
 CONFIG_RTC_DRV_RS5C372=m
 CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL12022=m
 CONFIG_RTC_DRV_ISL12022=m
-CONFIG_RTC_DRV_ISL12057=y
+# CONFIG_RTC_DRV_ISL12026 is not set
 CONFIG_RTC_DRV_X1205=m
 CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PALMAS=y
-CONFIG_RTC_DRV_PCF2127=m
 CONFIG_RTC_DRV_PCF8523=y
 CONFIG_RTC_DRV_PCF8523=y
-CONFIG_RTC_DRV_PCF8563=y
 CONFIG_RTC_DRV_PCF85063=m
 CONFIG_RTC_DRV_PCF85063=m
+# CONFIG_RTC_DRV_PCF85363 is not set
+CONFIG_RTC_DRV_PCF8563=y
 CONFIG_RTC_DRV_PCF8583=m
 CONFIG_RTC_DRV_PCF8583=m
 CONFIG_RTC_DRV_M41T80=m
 CONFIG_RTC_DRV_M41T80=m
 CONFIG_RTC_DRV_M41T80_WDT=y
 CONFIG_RTC_DRV_M41T80_WDT=y
 CONFIG_RTC_DRV_BQ32K=m
 CONFIG_RTC_DRV_BQ32K=m
 CONFIG_RTC_DRV_TWL4030=y
 CONFIG_RTC_DRV_TWL4030=y
+CONFIG_RTC_DRV_PALMAS=y
 CONFIG_RTC_DRV_TPS65910=m
 CONFIG_RTC_DRV_TPS65910=m
 CONFIG_RTC_DRV_S35390A=m
 CONFIG_RTC_DRV_S35390A=m
 CONFIG_RTC_DRV_FM3130=m
 CONFIG_RTC_DRV_FM3130=m
+# CONFIG_RTC_DRV_RX8010 is not set
 CONFIG_RTC_DRV_RX8581=m
 CONFIG_RTC_DRV_RX8581=m
 CONFIG_RTC_DRV_RX8025=m
 CONFIG_RTC_DRV_RX8025=m
 CONFIG_RTC_DRV_EM3027=m
 CONFIG_RTC_DRV_EM3027=m
-CONFIG_RTC_DRV_RV3029C2=m
 CONFIG_RTC_DRV_RV8803=m
 CONFIG_RTC_DRV_RV8803=m
 CONFIG_RTC_DRV_S5M=y
 CONFIG_RTC_DRV_S5M=y
 
 
@@ -4292,17 +4788,29 @@ CONFIG_RTC_DRV_S5M=y
 #
 #
 CONFIG_RTC_DRV_M41T93=m
 CONFIG_RTC_DRV_M41T93=m
 CONFIG_RTC_DRV_M41T94=m
 CONFIG_RTC_DRV_M41T94=m
+# CONFIG_RTC_DRV_DS1302 is not set
 CONFIG_RTC_DRV_DS1305=m
 CONFIG_RTC_DRV_DS1305=m
 CONFIG_RTC_DRV_DS1343=m
 CONFIG_RTC_DRV_DS1343=m
 CONFIG_RTC_DRV_DS1347=m
 CONFIG_RTC_DRV_DS1347=m
 CONFIG_RTC_DRV_DS1390=m
 CONFIG_RTC_DRV_DS1390=m
-CONFIG_RTC_DRV_MAX6902=m
+# CONFIG_RTC_DRV_MAX6916 is not set
 CONFIG_RTC_DRV_R9701=m
 CONFIG_RTC_DRV_R9701=m
+CONFIG_RTC_DRV_RX4581=m
+# CONFIG_RTC_DRV_RX6110 is not set
 CONFIG_RTC_DRV_RS5C348=m
 CONFIG_RTC_DRV_RS5C348=m
-CONFIG_RTC_DRV_DS3234=m
+CONFIG_RTC_DRV_MAX6902=m
 CONFIG_RTC_DRV_PCF2123=m
 CONFIG_RTC_DRV_PCF2123=m
-CONFIG_RTC_DRV_RX4581=m
 CONFIG_RTC_DRV_MCP795=m
 CONFIG_RTC_DRV_MCP795=m
+CONFIG_RTC_I2C_AND_SPI=y
+
+#
+# SPI and I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS3232=m
+CONFIG_RTC_DRV_DS3232_HWMON=y
+CONFIG_RTC_DRV_PCF2127=m
+CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV3029_HWMON=y
 
 
 #
 #
 # Platform RTC drivers
 # Platform RTC drivers
@@ -4318,7 +4826,6 @@ CONFIG_RTC_DRV_DS1685=y
 # CONFIG_RTC_DRV_DS17485 is not set
 # CONFIG_RTC_DRV_DS17485 is not set
 # CONFIG_RTC_DRV_DS17885 is not set
 # CONFIG_RTC_DRV_DS17885 is not set
 # CONFIG_RTC_DS1685_PROC_REGS is not set
 # CONFIG_RTC_DS1685_PROC_REGS is not set
-# CONFIG_RTC_DS1685_SYSFS_REGS is not set
 CONFIG_RTC_DRV_DS1742=m
 CONFIG_RTC_DRV_DS1742=m
 CONFIG_RTC_DRV_DS2404=m
 CONFIG_RTC_DRV_DS2404=m
 CONFIG_RTC_DRV_DA9052=y
 CONFIG_RTC_DRV_DA9052=y
@@ -4338,8 +4845,10 @@ CONFIG_RTC_DRV_V3020=m
 # on-CPU RTC drivers
 # on-CPU RTC drivers
 #
 #
 CONFIG_RTC_DRV_OMAP=y
 CONFIG_RTC_DRV_OMAP=y
+# CONFIG_RTC_DRV_FTRTC010 is not set
 CONFIG_RTC_DRV_MC13XXX=m
 CONFIG_RTC_DRV_MC13XXX=m
 CONFIG_RTC_DRV_SNVS=y
 CONFIG_RTC_DRV_SNVS=y
+# CONFIG_RTC_DRV_R7301 is not set
 
 
 #
 #
 # HID Sensor RTC drivers
 # HID Sensor RTC drivers
@@ -4354,21 +4863,31 @@ CONFIG_DMADEVICES=y
 CONFIG_DMA_ENGINE=y
 CONFIG_DMA_ENGINE=y
 CONFIG_DMA_VIRTUAL_CHANNELS=y
 CONFIG_DMA_VIRTUAL_CHANNELS=y
 CONFIG_DMA_OF=y
 CONFIG_DMA_OF=y
-CONFIG_DMA_OMAP=y
+# CONFIG_ALTERA_MSGDMA is not set
+# CONFIG_DW_AXI_DMAC is not set
 CONFIG_FSL_EDMA=y
 CONFIG_FSL_EDMA=y
 # CONFIG_INTEL_IDMA64 is not set
 # CONFIG_INTEL_IDMA64 is not set
 # CONFIG_NBPFAXI_DMA is not set
 # CONFIG_NBPFAXI_DMA is not set
-CONFIG_TI_CPPI41=y
-CONFIG_TI_DMA_CROSSBAR=y
-CONFIG_TI_EDMA=y
+# CONFIG_QCOM_HIDMA_MGMT is not set
+# CONFIG_QCOM_HIDMA is not set
 CONFIG_DW_DMAC_CORE=y
 CONFIG_DW_DMAC_CORE=y
 CONFIG_DW_DMAC=y
 CONFIG_DW_DMAC=y
+CONFIG_TI_CPPI41=y
+CONFIG_TI_EDMA=y
+CONFIG_DMA_OMAP=y
+CONFIG_TI_DMA_CROSSBAR=y
 
 
 #
 #
 # DMA Clients
 # DMA Clients
 #
 #
 CONFIG_ASYNC_TX_DMA=y
 CONFIG_ASYNC_TX_DMA=y
 # CONFIG_DMATEST is not set
 # CONFIG_DMATEST is not set
+
+#
+# DMABUF options
+#
+CONFIG_SYNC_FILE=y
+# CONFIG_SW_SYNC is not set
 # CONFIG_AUXDISPLAY is not set
 # CONFIG_AUXDISPLAY is not set
 CONFIG_UIO=m
 CONFIG_UIO=m
 CONFIG_UIO_PDRV_GENIRQ=m
 CONFIG_UIO_PDRV_GENIRQ=m
@@ -4377,10 +4896,7 @@ CONFIG_UIO_PRUSS=m
 # CONFIG_VFIO is not set
 # CONFIG_VFIO is not set
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO=y
 CONFIG_VIRTIO=y
-
-#
-# Virtio drivers
-#
+CONFIG_VIRTIO_MENU=y
 CONFIG_VIRTIO_BALLOON=m
 CONFIG_VIRTIO_BALLOON=m
 CONFIG_VIRTIO_INPUT=m
 CONFIG_VIRTIO_INPUT=m
 CONFIG_VIRTIO_MMIO=m
 CONFIG_VIRTIO_MMIO=m
@@ -4396,10 +4912,10 @@ CONFIG_RTLLIB=m
 CONFIG_RTLLIB_CRYPTO_CCMP=m
 CONFIG_RTLLIB_CRYPTO_CCMP=m
 CONFIG_RTLLIB_CRYPTO_TKIP=m
 CONFIG_RTLLIB_CRYPTO_TKIP=m
 CONFIG_RTLLIB_CRYPTO_WEP=m
 CONFIG_RTLLIB_CRYPTO_WEP=m
+# CONFIG_RTL8723BS is not set
 CONFIG_R8712U=m
 CONFIG_R8712U=m
 CONFIG_R8188EU=m
 CONFIG_R8188EU=m
 CONFIG_88EU_AP_MODE=y
 CONFIG_88EU_AP_MODE=y
-# CONFIG_R8723AU is not set
 # CONFIG_VT6656 is not set
 # CONFIG_VT6656 is not set
 
 
 #
 #
@@ -4409,12 +4925,8 @@ CONFIG_88EU_AP_MODE=y
 #
 #
 # Accelerometers
 # Accelerometers
 #
 #
-CONFIG_ADIS16201=m
 CONFIG_ADIS16203=m
 CONFIG_ADIS16203=m
-CONFIG_ADIS16209=m
 CONFIG_ADIS16240=m
 CONFIG_ADIS16240=m
-CONFIG_LIS3L02DQ=m
-CONFIG_SCA3000=m
 
 
 #
 #
 # Analog to digital converters
 # Analog to digital converters
@@ -4447,31 +4959,14 @@ CONFIG_AD7746=m
 CONFIG_AD9832=m
 CONFIG_AD9832=m
 CONFIG_AD9834=m
 CONFIG_AD9834=m
 
 
-#
-# Digital gyroscope sensors
-#
-CONFIG_ADIS16060=m
-
 #
 #
 # Network Analyzer, Impedance Converters
 # Network Analyzer, Impedance Converters
 #
 #
 CONFIG_AD5933=m
 CONFIG_AD5933=m
 
 
-#
-# Light sensors
-#
-CONFIG_SENSORS_ISL29018=m
-CONFIG_SENSORS_ISL29028=m
-CONFIG_TSL2583=m
-CONFIG_TSL2x7x=m
-
 #
 #
 # Active energy metering IC
 # Active energy metering IC
 #
 #
-CONFIG_ADE7753=m
-CONFIG_ADE7754=m
-CONFIG_ADE7758=m
-CONFIG_ADE7759=m
 CONFIG_ADE7854=m
 CONFIG_ADE7854=m
 CONFIG_ADE7854_I2C=m
 CONFIG_ADE7854_I2C=m
 CONFIG_ADE7854_SPI=m
 CONFIG_ADE7854_SPI=m
@@ -4480,13 +4975,8 @@ CONFIG_ADE7854_SPI=m
 # Resolver to digital converters
 # Resolver to digital converters
 #
 #
 CONFIG_AD2S90=m
 CONFIG_AD2S90=m
-CONFIG_AD2S1200=m
 CONFIG_AD2S1210=m
 CONFIG_AD2S1210=m
 
 
-#
-# Triggers - standalone
-#
-
 #
 #
 # Speakup console speech
 # Speakup console speech
 #
 #
@@ -4502,28 +4992,23 @@ CONFIG_SPEAKUP_SYNTH_SOFT=m
 CONFIG_SPEAKUP_SYNTH_SPKOUT=m
 CONFIG_SPEAKUP_SYNTH_SPKOUT=m
 CONFIG_SPEAKUP_SYNTH_TXPRT=m
 CONFIG_SPEAKUP_SYNTH_TXPRT=m
 CONFIG_SPEAKUP_SYNTH_DUMMY=m
 CONFIG_SPEAKUP_SYNTH_DUMMY=m
-# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
 # CONFIG_STAGING_MEDIA is not set
 # CONFIG_STAGING_MEDIA is not set
 
 
 #
 #
 # Android
 # Android
 #
 #
 CONFIG_ASHMEM=y
 CONFIG_ASHMEM=y
-CONFIG_ANDROID_TIMED_OUTPUT=y
-CONFIG_ANDROID_TIMED_GPIO=m
-# CONFIG_ANDROID_LOW_MEMORY_KILLER is not set
-CONFIG_SYNC=y
-# CONFIG_SW_SYNC is not set
 CONFIG_ION=y
 CONFIG_ION=y
-# CONFIG_ION_TEST is not set
-# CONFIG_ION_DUMMY is not set
+# CONFIG_ION_SYSTEM_HEAP is not set
+# CONFIG_ION_CARVEOUT_HEAP is not set
+# CONFIG_ION_CHUNK_HEAP is not set
+# CONFIG_ION_CMA_HEAP is not set
+# CONFIG_ION_TI is not set
 # CONFIG_STAGING_BOARD is not set
 # CONFIG_STAGING_BOARD is not set
-# CONFIG_WIMAX_GDM72XX is not set
 # CONFIG_LTE_GDM724X is not set
 # CONFIG_LTE_GDM724X is not set
 # CONFIG_MTD_SPINAND_MT29F is not set
 # CONFIG_MTD_SPINAND_MT29F is not set
-# CONFIG_LUSTRE_FS is not set
-# CONFIG_DGAP is not set
 # CONFIG_GS_FPGABOOT is not set
 # CONFIG_GS_FPGABOOT is not set
+# CONFIG_UNISYSSPAR is not set
 # CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set
 # CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set
 CONFIG_FB_TFT=m
 CONFIG_FB_TFT=m
 CONFIG_FB_TFT_AGM1264K_FL=m
 CONFIG_FB_TFT_AGM1264K_FL=m
@@ -4543,10 +5028,10 @@ CONFIG_FB_TFT_PCD8544=m
 CONFIG_FB_TFT_RA8875=m
 CONFIG_FB_TFT_RA8875=m
 CONFIG_FB_TFT_S6D02A1=m
 CONFIG_FB_TFT_S6D02A1=m
 CONFIG_FB_TFT_S6D1121=m
 CONFIG_FB_TFT_S6D1121=m
+# CONFIG_FB_TFT_SH1106 is not set
 CONFIG_FB_TFT_SSD1289=m
 CONFIG_FB_TFT_SSD1289=m
 CONFIG_FB_TFT_SSD1305=m
 CONFIG_FB_TFT_SSD1305=m
 CONFIG_FB_TFT_SSD1306=m
 CONFIG_FB_TFT_SSD1306=m
-CONFIG_FB_TFT_SSD1325=m
 CONFIG_FB_TFT_SSD1331=m
 CONFIG_FB_TFT_SSD1331=m
 CONFIG_FB_TFT_SSD1351=m
 CONFIG_FB_TFT_SSD1351=m
 CONFIG_FB_TFT_ST7735R=m
 CONFIG_FB_TFT_ST7735R=m
@@ -4559,9 +5044,22 @@ CONFIG_FB_TFT_UPD161704=m
 CONFIG_FB_TFT_WATTEROTT=m
 CONFIG_FB_TFT_WATTEROTT=m
 CONFIG_FB_FLEX=m
 CONFIG_FB_FLEX=m
 CONFIG_FB_TFT_FBTFT_DEVICE=m
 CONFIG_FB_TFT_FBTFT_DEVICE=m
-# CONFIG_WILC1000_DRIVER is not set
+# CONFIG_WILC1000_SDIO is not set
+# CONFIG_WILC1000_SPI is not set
 # CONFIG_MOST is not set
 # CONFIG_MOST is not set
+# CONFIG_KS7010 is not set
+# CONFIG_GREYBUS is not set
+# CONFIG_PI433 is not set
+# CONFIG_MTK_MMC is not set
+
+#
+# Gasket devices
+#
+# CONFIG_XIL_AXIS_FIFO is not set
+# CONFIG_EROFS_FS is not set
+# CONFIG_GOLDFISH is not set
 # CONFIG_CHROME_PLATFORMS is not set
 # CONFIG_CHROME_PLATFORMS is not set
+# CONFIG_MELLANOX_PLATFORM is not set
 CONFIG_CLKDEV_LOOKUP=y
 CONFIG_CLKDEV_LOOKUP=y
 CONFIG_HAVE_CLK_PREPARE=y
 CONFIG_HAVE_CLK_PREPARE=y
 CONFIG_COMMON_CLK=y
 CONFIG_COMMON_CLK=y
@@ -4569,40 +5067,40 @@ CONFIG_COMMON_CLK=y
 #
 #
 # Common Clock Framework
 # Common Clock Framework
 #
 #
+# CONFIG_CLK_HSDK is not set
+# CONFIG_COMMON_CLK_MAX9485 is not set
 # CONFIG_COMMON_CLK_SI5351 is not set
 # CONFIG_COMMON_CLK_SI5351 is not set
 # CONFIG_COMMON_CLK_SI514 is not set
 # CONFIG_COMMON_CLK_SI514 is not set
+# CONFIG_COMMON_CLK_SI544 is not set
 # CONFIG_COMMON_CLK_SI570 is not set
 # CONFIG_COMMON_CLK_SI570 is not set
+# CONFIG_COMMON_CLK_CDCE706 is not set
 # CONFIG_COMMON_CLK_CDCE925 is not set
 # CONFIG_COMMON_CLK_CDCE925 is not set
+# CONFIG_COMMON_CLK_CS2000_CP is not set
 CONFIG_COMMON_CLK_S2MPS11=m
 CONFIG_COMMON_CLK_S2MPS11=m
 CONFIG_CLK_TWL6040=y
 CONFIG_CLK_TWL6040=y
 # CONFIG_CLK_QORIQ is not set
 # CONFIG_CLK_QORIQ is not set
 CONFIG_COMMON_CLK_PALMAS=y
 CONFIG_COMMON_CLK_PALMAS=y
 # CONFIG_COMMON_CLK_PWM is not set
 # CONFIG_COMMON_CLK_PWM is not set
-# CONFIG_COMMON_CLK_PXA is not set
-# CONFIG_COMMON_CLK_CDCE706 is not set
+# CONFIG_COMMON_CLK_VC5 is not set
+# CONFIG_COMMON_CLK_TI_ADPLL is not set
 CONFIG_HWSPINLOCK=y
 CONFIG_HWSPINLOCK=y
-
-#
-# Hardware Spinlock drivers
-#
 CONFIG_HWSPINLOCK_OMAP=y
 CONFIG_HWSPINLOCK_OMAP=y
 
 
 #
 #
 # Clock Source drivers
 # Clock Source drivers
 #
 #
-CONFIG_CLKSRC_OF=y
-CONFIG_CLKSRC_PROBE=y
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+CONFIG_OMAP_DM_TIMER=y
 CONFIG_CLKSRC_MMIO=y
 CONFIG_CLKSRC_MMIO=y
 CONFIG_CLKSRC_TI_32K=y
 CONFIG_CLKSRC_TI_32K=y
 CONFIG_ARM_ARCH_TIMER=y
 CONFIG_ARM_ARCH_TIMER=y
 CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
 CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
+# CONFIG_ARM_GLOBAL_TIMER is not set
 CONFIG_ARM_TIMER_SP804=y
 CONFIG_ARM_TIMER_SP804=y
-# CONFIG_ATMEL_PIT is not set
-# CONFIG_SH_TIMER_CMT is not set
-# CONFIG_SH_TIMER_MTU2 is not set
-# CONFIG_SH_TIMER_TMU is not set
-# CONFIG_EM_TIMER_STI is not set
+CONFIG_CLKSRC_VERSATILE=y
 CONFIG_MAILBOX=y
 CONFIG_MAILBOX=y
+# CONFIG_PLATFORM_MHU is not set
 CONFIG_OMAP2PLUS_MBOX=y
 CONFIG_OMAP2PLUS_MBOX=y
 CONFIG_OMAP_MBOX_KFIFO_SIZE=256
 CONFIG_OMAP_MBOX_KFIFO_SIZE=256
 # CONFIG_ALTERA_MBOX is not set
 # CONFIG_ALTERA_MBOX is not set
@@ -4616,6 +5114,9 @@ CONFIG_IOMMU_SUPPORT=y
 CONFIG_IOMMU_IO_PGTABLE=y
 CONFIG_IOMMU_IO_PGTABLE=y
 CONFIG_IOMMU_IO_PGTABLE_LPAE=y
 CONFIG_IOMMU_IO_PGTABLE_LPAE=y
 # CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set
 # CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set
+# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set
+# CONFIG_IOMMU_DEBUGFS is not set
+# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
 CONFIG_OF_IOMMU=y
 CONFIG_OF_IOMMU=y
 CONFIG_OMAP_IOMMU=y
 CONFIG_OMAP_IOMMU=y
 # CONFIG_OMAP_IOMMU_DEBUG is not set
 # CONFIG_OMAP_IOMMU_DEBUG is not set
@@ -4625,19 +5126,53 @@ CONFIG_ARM_SMMU=y
 # Remoteproc drivers
 # Remoteproc drivers
 #
 #
 CONFIG_REMOTEPROC=y
 CONFIG_REMOTEPROC=y
-# CONFIG_STE_MODEM_RPROC is not set
 CONFIG_WKUP_M3_RPROC=y
 CONFIG_WKUP_M3_RPROC=y
 
 
 #
 #
 # Rpmsg drivers
 # Rpmsg drivers
 #
 #
+# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+# CONFIG_RPMSG_VIRTIO is not set
+
+#
+# Rpmsg virtual device drivers
+#
+# CONFIG_RPMSG_KDRV is not set
+# CONFIG_RPMSG_KDRV_DISPLAY is not set
+# CONFIG_SOUNDWIRE is not set
 
 
 #
 #
 # SOC (System On Chip) specific Drivers
 # SOC (System On Chip) specific Drivers
 #
 #
+
+#
+# Amlogic SoC drivers
+#
+
+#
+# Broadcom SoC drivers
+#
 # CONFIG_SOC_BRCMSTB is not set
 # CONFIG_SOC_BRCMSTB is not set
-# CONFIG_SUNXI_SRAM is not set
+
+#
+# NXP/Freescale QorIQ SoC drivers
+#
+
+#
+# i.MX SoC drivers
+#
+
+#
+# Qualcomm SoC drivers
+#
 CONFIG_SOC_TI=y
 CONFIG_SOC_TI=y
+# CONFIG_WKUP_M3_IPC is not set
+# CONFIG_TI_PRUSS is not set
+
+#
+# Xilinx SoC drivers
+#
+# CONFIG_XILINX_VCU is not set
 CONFIG_PM_DEVFREQ=y
 CONFIG_PM_DEVFREQ=y
 
 
 #
 #
@@ -4645,8 +5180,9 @@ CONFIG_PM_DEVFREQ=y
 #
 #
 CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
 CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
 CONFIG_DEVFREQ_GOV_PERFORMANCE=y
 CONFIG_DEVFREQ_GOV_PERFORMANCE=y
-CONFIG_DEVFREQ_GOV_POWERSAVE=y
+# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
 CONFIG_DEVFREQ_GOV_USERSPACE=y
 CONFIG_DEVFREQ_GOV_USERSPACE=y
+# CONFIG_DEVFREQ_GOV_PASSIVE is not set
 
 
 #
 #
 # DEVFREQ Drivers
 # DEVFREQ Drivers
@@ -4658,8 +5194,8 @@ CONFIG_EXTCON=y
 # Extcon Device Drivers
 # Extcon Device Drivers
 #
 #
 # CONFIG_EXTCON_ADC_JACK is not set
 # CONFIG_EXTCON_ADC_JACK is not set
-# CONFIG_EXTCON_AXP288 is not set
 CONFIG_EXTCON_GPIO=y
 CONFIG_EXTCON_GPIO=y
+# CONFIG_EXTCON_MAX3355 is not set
 CONFIG_EXTCON_PALMAS=y
 CONFIG_EXTCON_PALMAS=y
 # CONFIG_EXTCON_RT8973A is not set
 # CONFIG_EXTCON_RT8973A is not set
 # CONFIG_EXTCON_SM5502 is not set
 # CONFIG_EXTCON_SM5502 is not set
@@ -4668,39 +5204,56 @@ CONFIG_MEMORY=y
 CONFIG_TI_EMIF=y
 CONFIG_TI_EMIF=y
 CONFIG_OMAP_GPMC=y
 CONFIG_OMAP_GPMC=y
 # CONFIG_OMAP_GPMC_DEBUG is not set
 # CONFIG_OMAP_GPMC_DEBUG is not set
+# CONFIG_TI_EMIF_SRAM is not set
 CONFIG_IIO=m
 CONFIG_IIO=m
 CONFIG_IIO_BUFFER=y
 CONFIG_IIO_BUFFER=y
 CONFIG_IIO_BUFFER_CB=m
 CONFIG_IIO_BUFFER_CB=m
+# CONFIG_IIO_BUFFER_HW_CONSUMER is not set
 CONFIG_IIO_KFIFO_BUF=m
 CONFIG_IIO_KFIFO_BUF=m
 CONFIG_IIO_TRIGGERED_BUFFER=m
 CONFIG_IIO_TRIGGERED_BUFFER=m
 CONFIG_IIO_CONFIGFS=m
 CONFIG_IIO_CONFIGFS=m
 CONFIG_IIO_TRIGGER=y
 CONFIG_IIO_TRIGGER=y
 CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
+# CONFIG_IIO_SW_DEVICE is not set
 # CONFIG_IIO_SW_TRIGGER is not set
 # CONFIG_IIO_SW_TRIGGER is not set
 CONFIG_IIO_TRIGGERED_EVENT=m
 CONFIG_IIO_TRIGGERED_EVENT=m
 
 
 #
 #
 # Accelerometers
 # Accelerometers
 #
 #
+CONFIG_ADIS16201=m
+CONFIG_ADIS16209=m
 CONFIG_BMA180=m
 CONFIG_BMA180=m
+# CONFIG_BMA220 is not set
 CONFIG_BMC150_ACCEL=m
 CONFIG_BMC150_ACCEL=m
 CONFIG_BMC150_ACCEL_I2C=m
 CONFIG_BMC150_ACCEL_I2C=m
 CONFIG_BMC150_ACCEL_SPI=m
 CONFIG_BMC150_ACCEL_SPI=m
+# CONFIG_DA280 is not set
+# CONFIG_DA311 is not set
+# CONFIG_DMARD06 is not set
+# CONFIG_DMARD09 is not set
+# CONFIG_DMARD10 is not set
 CONFIG_HID_SENSOR_ACCEL_3D=m
 CONFIG_HID_SENSOR_ACCEL_3D=m
+# CONFIG_IIO_CROS_EC_ACCEL_LEGACY is not set
 CONFIG_IIO_ST_ACCEL_3AXIS=m
 CONFIG_IIO_ST_ACCEL_3AXIS=m
 CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m
 CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m
 CONFIG_IIO_ST_ACCEL_SPI_3AXIS=m
 CONFIG_IIO_ST_ACCEL_SPI_3AXIS=m
 CONFIG_KXSD9=m
 CONFIG_KXSD9=m
+CONFIG_KXSD9_SPI=m
+CONFIG_KXSD9_I2C=m
 CONFIG_KXCJK1013=m
 CONFIG_KXCJK1013=m
+# CONFIG_MC3230 is not set
 CONFIG_MMA7455=m
 CONFIG_MMA7455=m
 CONFIG_MMA7455_I2C=m
 CONFIG_MMA7455_I2C=m
 CONFIG_MMA7455_SPI=m
 CONFIG_MMA7455_SPI=m
+# CONFIG_MMA7660 is not set
 CONFIG_MMA8452=m
 CONFIG_MMA8452=m
 CONFIG_MMA9551_CORE=m
 CONFIG_MMA9551_CORE=m
 CONFIG_MMA9551=m
 CONFIG_MMA9551=m
 CONFIG_MMA9553=m
 CONFIG_MMA9553=m
 CONFIG_MXC4005=m
 CONFIG_MXC4005=m
 CONFIG_MXC6255=m
 CONFIG_MXC6255=m
+CONFIG_SCA3000=m
 CONFIG_STK8312=m
 CONFIG_STK8312=m
 CONFIG_STK8BA50=m
 CONFIG_STK8BA50=m
 
 
@@ -4712,32 +5265,53 @@ CONFIG_AD7266=m
 CONFIG_AD7291=m
 CONFIG_AD7291=m
 CONFIG_AD7298=m
 CONFIG_AD7298=m
 CONFIG_AD7476=m
 CONFIG_AD7476=m
+# CONFIG_AD7766 is not set
 CONFIG_AD7791=m
 CONFIG_AD7791=m
 CONFIG_AD7793=m
 CONFIG_AD7793=m
 CONFIG_AD7887=m
 CONFIG_AD7887=m
 CONFIG_AD7923=m
 CONFIG_AD7923=m
 CONFIG_AD799X=m
 CONFIG_AD799X=m
-CONFIG_AXP288_ADC=m
 CONFIG_CC10001_ADC=m
 CONFIG_CC10001_ADC=m
+# CONFIG_DLN2_ADC is not set
+# CONFIG_ENVELOPE_DETECTOR is not set
 CONFIG_HI8435=m
 CONFIG_HI8435=m
+# CONFIG_HX711 is not set
 CONFIG_INA2XX_ADC=m
 CONFIG_INA2XX_ADC=m
+# CONFIG_LTC2471 is not set
+# CONFIG_LTC2485 is not set
+# CONFIG_LTC2497 is not set
 CONFIG_MAX1027=m
 CONFIG_MAX1027=m
+# CONFIG_MAX11100 is not set
+# CONFIG_MAX1118 is not set
 CONFIG_MAX1363=m
 CONFIG_MAX1363=m
+# CONFIG_MAX9611 is not set
 CONFIG_MCP320X=m
 CONFIG_MCP320X=m
 CONFIG_MCP3422=m
 CONFIG_MCP3422=m
 CONFIG_NAU7802=m
 CONFIG_NAU7802=m
 CONFIG_PALMAS_GPADC=m
 CONFIG_PALMAS_GPADC=m
+# CONFIG_SD_ADC_MODULATOR is not set
 CONFIG_TI_ADC081C=m
 CONFIG_TI_ADC081C=m
 CONFIG_TI_ADC0832=m
 CONFIG_TI_ADC0832=m
+# CONFIG_TI_ADC084S021 is not set
+# CONFIG_TI_ADC12138 is not set
+# CONFIG_TI_ADC108S102 is not set
 CONFIG_TI_ADC128S052=m
 CONFIG_TI_ADC128S052=m
+# CONFIG_TI_ADC161S626 is not set
 CONFIG_TI_ADS1015=m
 CONFIG_TI_ADS1015=m
+# CONFIG_TI_ADS7950 is not set
 CONFIG_TI_ADS8688=m
 CONFIG_TI_ADS8688=m
 CONFIG_TI_AM335X_ADC=m
 CONFIG_TI_AM335X_ADC=m
+# CONFIG_TI_TLC4541 is not set
 CONFIG_TWL4030_MADC=m
 CONFIG_TWL4030_MADC=m
 CONFIG_TWL6030_GPADC=m
 CONFIG_TWL6030_GPADC=m
 CONFIG_VF610_ADC=m
 CONFIG_VF610_ADC=m
 CONFIG_VIPERBOARD_ADC=m
 CONFIG_VIPERBOARD_ADC=m
 
 
+#
+# Analog Front Ends
+#
+# CONFIG_IIO_RESCALE is not set
+
 #
 #
 # Amplifiers
 # Amplifiers
 #
 #
@@ -4747,6 +5321,8 @@ CONFIG_AD8366=m
 # Chemical Sensors
 # Chemical Sensors
 #
 #
 CONFIG_ATLAS_PH_SENSOR=m
 CONFIG_ATLAS_PH_SENSOR=m
+# CONFIG_BME680 is not set
+# CONFIG_CCS811 is not set
 CONFIG_IAQCORE=m
 CONFIG_IAQCORE=m
 CONFIG_VZ89X=m
 CONFIG_VZ89X=m
 
 
@@ -4765,6 +5341,10 @@ CONFIG_IIO_ST_SENSORS_I2C=m
 CONFIG_IIO_ST_SENSORS_SPI=m
 CONFIG_IIO_ST_SENSORS_SPI=m
 CONFIG_IIO_ST_SENSORS_CORE=m
 CONFIG_IIO_ST_SENSORS_CORE=m
 
 
+#
+# Counters
+#
+
 #
 #
 # Digital to analog converters
 # Digital to analog converters
 #
 #
@@ -4778,23 +5358,30 @@ CONFIG_AD5449=m
 # CONFIG_AD5593R is not set
 # CONFIG_AD5593R is not set
 CONFIG_AD5504=m
 CONFIG_AD5504=m
 CONFIG_AD5624R_SPI=m
 CONFIG_AD5624R_SPI=m
-CONFIG_AD5686=m
+# CONFIG_LTC2632 is not set
+# CONFIG_AD5686_SPI is not set
+# CONFIG_AD5696_I2C is not set
 CONFIG_AD5755=m
 CONFIG_AD5755=m
+# CONFIG_AD5758 is not set
 CONFIG_AD5761=m
 CONFIG_AD5761=m
 CONFIG_AD5764=m
 CONFIG_AD5764=m
 CONFIG_AD5791=m
 CONFIG_AD5791=m
 CONFIG_AD7303=m
 CONFIG_AD7303=m
+# CONFIG_AD8801 is not set
+# CONFIG_DPOT_DAC is not set
+# CONFIG_DS4424 is not set
 CONFIG_M62332=m
 CONFIG_M62332=m
 CONFIG_MAX517=m
 CONFIG_MAX517=m
 CONFIG_MAX5821=m
 CONFIG_MAX5821=m
 CONFIG_MCP4725=m
 CONFIG_MCP4725=m
 CONFIG_MCP4922=m
 CONFIG_MCP4922=m
+# CONFIG_TI_DAC082S085 is not set
+# CONFIG_TI_DAC5571 is not set
 # CONFIG_VF610_DAC is not set
 # CONFIG_VF610_DAC is not set
 
 
 #
 #
 # IIO dummy driver
 # IIO dummy driver
 #
 #
-# CONFIG_IIO_SIMPLE_DUMMY is not set
 
 
 #
 #
 # Frequency Synthesizers DDS/PLL
 # Frequency Synthesizers DDS/PLL
@@ -4822,6 +5409,7 @@ CONFIG_BMG160=m
 CONFIG_BMG160_I2C=m
 CONFIG_BMG160_I2C=m
 CONFIG_BMG160_SPI=m
 CONFIG_BMG160_SPI=m
 CONFIG_HID_SENSOR_GYRO_3D=m
 CONFIG_HID_SENSOR_GYRO_3D=m
+# CONFIG_MPU3050_I2C is not set
 CONFIG_IIO_ST_GYRO_3AXIS=m
 CONFIG_IIO_ST_GYRO_3AXIS=m
 CONFIG_IIO_ST_GYRO_I2C_3AXIS=m
 CONFIG_IIO_ST_GYRO_I2C_3AXIS=m
 CONFIG_IIO_ST_GYRO_SPI_3AXIS=m
 CONFIG_IIO_ST_GYRO_SPI_3AXIS=m
@@ -4837,6 +5425,7 @@ CONFIG_ITG3200=m
 CONFIG_AFE4403=m
 CONFIG_AFE4403=m
 CONFIG_AFE4404=m
 CONFIG_AFE4404=m
 CONFIG_MAX30100=m
 CONFIG_MAX30100=m
+# CONFIG_MAX30102 is not set
 
 
 #
 #
 # Humidity sensors
 # Humidity sensors
@@ -4844,6 +5433,8 @@ CONFIG_MAX30100=m
 # CONFIG_AM2315 is not set
 # CONFIG_AM2315 is not set
 CONFIG_DHT11=m
 CONFIG_DHT11=m
 CONFIG_HDC100X=m
 CONFIG_HDC100X=m
+# CONFIG_HID_SENSOR_HUMIDITY is not set
+# CONFIG_HTS221 is not set
 CONFIG_HTU21=m
 CONFIG_HTU21=m
 CONFIG_SI7005=m
 CONFIG_SI7005=m
 CONFIG_SI7020=m
 CONFIG_SI7020=m
@@ -4859,6 +5450,7 @@ CONFIG_KMX61=m
 CONFIG_INV_MPU6050_IIO=m
 CONFIG_INV_MPU6050_IIO=m
 CONFIG_INV_MPU6050_I2C=m
 CONFIG_INV_MPU6050_I2C=m
 CONFIG_INV_MPU6050_SPI=m
 CONFIG_INV_MPU6050_SPI=m
+# CONFIG_IIO_ST_LSM6DSX is not set
 CONFIG_IIO_ADIS_LIB=m
 CONFIG_IIO_ADIS_LIB=m
 CONFIG_IIO_ADIS_LIB_BUFFER=y
 CONFIG_IIO_ADIS_LIB_BUFFER=y
 
 
@@ -4874,29 +5466,41 @@ CONFIG_BH1750=m
 CONFIG_CM32181=m
 CONFIG_CM32181=m
 CONFIG_CM3232=m
 CONFIG_CM3232=m
 CONFIG_CM3323=m
 CONFIG_CM3323=m
+# CONFIG_CM3605 is not set
 CONFIG_CM36651=m
 CONFIG_CM36651=m
 CONFIG_GP2AP020A00F=m
 CONFIG_GP2AP020A00F=m
+CONFIG_SENSORS_ISL29018=m
+CONFIG_SENSORS_ISL29028=m
 CONFIG_ISL29125=m
 CONFIG_ISL29125=m
 CONFIG_HID_SENSOR_ALS=m
 CONFIG_HID_SENSOR_ALS=m
 CONFIG_HID_SENSOR_PROX=m
 CONFIG_HID_SENSOR_PROX=m
 CONFIG_JSA1212=m
 CONFIG_JSA1212=m
 CONFIG_RPR0521=m
 CONFIG_RPR0521=m
 CONFIG_LTR501=m
 CONFIG_LTR501=m
+# CONFIG_LV0104CS is not set
 # CONFIG_MAX44000 is not set
 # CONFIG_MAX44000 is not set
 CONFIG_OPT3001=m
 CONFIG_OPT3001=m
 CONFIG_PA12203001=m
 CONFIG_PA12203001=m
+# CONFIG_SI1133 is not set
+# CONFIG_SI1145 is not set
 CONFIG_STK3310=m
 CONFIG_STK3310=m
+# CONFIG_ST_UVIS25 is not set
 CONFIG_TCS3414=m
 CONFIG_TCS3414=m
 CONFIG_TCS3472=m
 CONFIG_TCS3472=m
 CONFIG_SENSORS_TSL2563=m
 CONFIG_SENSORS_TSL2563=m
+CONFIG_TSL2583=m
+# CONFIG_TSL2772 is not set
 CONFIG_TSL4531=m
 CONFIG_TSL4531=m
 CONFIG_US5182D=m
 CONFIG_US5182D=m
 CONFIG_VCNL4000=m
 CONFIG_VCNL4000=m
 # CONFIG_VEML6070 is not set
 # CONFIG_VEML6070 is not set
+# CONFIG_VL6180 is not set
+# CONFIG_ZOPT2201 is not set
 
 
 #
 #
 # Magnetometer sensors
 # Magnetometer sensors
 #
 #
+# CONFIG_AK8974 is not set
 CONFIG_AK8975=m
 CONFIG_AK8975=m
 CONFIG_AK09911=m
 CONFIG_AK09911=m
 # CONFIG_BMC150_MAGN_I2C is not set
 # CONFIG_BMC150_MAGN_I2C is not set
@@ -4911,6 +5515,11 @@ CONFIG_SENSORS_HMC5843=m
 CONFIG_SENSORS_HMC5843_I2C=m
 CONFIG_SENSORS_HMC5843_I2C=m
 CONFIG_SENSORS_HMC5843_SPI=m
 CONFIG_SENSORS_HMC5843_SPI=m
 
 
+#
+# Multiplexers
+#
+# CONFIG_IIO_MUX is not set
+
 #
 #
 # Inclinometer sensors
 # Inclinometer sensors
 #
 #
@@ -4926,15 +5535,27 @@ CONFIG_IIO_SYSFS_TRIGGER=m
 #
 #
 # Digital potentiometers
 # Digital potentiometers
 #
 #
+# CONFIG_AD5272 is not set
 # CONFIG_DS1803 is not set
 # CONFIG_DS1803 is not set
+# CONFIG_MAX5481 is not set
+# CONFIG_MAX5487 is not set
+# CONFIG_MCP4018 is not set
 # CONFIG_MCP4131 is not set
 # CONFIG_MCP4131 is not set
 CONFIG_MCP4531=m
 CONFIG_MCP4531=m
 CONFIG_TPL0102=m
 CONFIG_TPL0102=m
 
 
+#
+# Digital potentiostats
+#
+# CONFIG_LMP91000 is not set
+
 #
 #
 # Pressure sensors
 # Pressure sensors
 #
 #
+# CONFIG_ABP060MG is not set
 CONFIG_BMP280=m
 CONFIG_BMP280=m
+CONFIG_BMP280_I2C=m
+CONFIG_BMP280_SPI=m
 CONFIG_HID_SENSOR_PRESS=m
 CONFIG_HID_SENSOR_PRESS=m
 # CONFIG_HP03 is not set
 # CONFIG_HP03 is not set
 CONFIG_MPL115=m
 CONFIG_MPL115=m
@@ -4950,6 +5571,7 @@ CONFIG_IIO_ST_PRESS_I2C=m
 CONFIG_IIO_ST_PRESS_SPI=m
 CONFIG_IIO_ST_PRESS_SPI=m
 CONFIG_T5403=m
 CONFIG_T5403=m
 # CONFIG_HP206C is not set
 # CONFIG_HP206C is not set
+# CONFIG_ZPA2326 is not set
 
 
 #
 #
 # Lightning sensors
 # Lightning sensors
@@ -4957,16 +5579,29 @@ CONFIG_T5403=m
 CONFIG_AS3935=m
 CONFIG_AS3935=m
 
 
 #
 #
-# Proximity sensors
+# Proximity and distance sensors
 #
 #
+# CONFIG_ISL29501 is not set
 CONFIG_LIDAR_LITE_V2=m
 CONFIG_LIDAR_LITE_V2=m
+# CONFIG_RFD77402 is not set
+# CONFIG_SRF04 is not set
 CONFIG_SX9500=m
 CONFIG_SX9500=m
+# CONFIG_SRF08 is not set
+
+#
+# Resolver to digital converters
+#
+CONFIG_AD2S1200=m
 
 
 #
 #
 # Temperature sensors
 # Temperature sensors
 #
 #
+# CONFIG_MAXIM_THERMOCOUPLE is not set
+# CONFIG_HID_SENSOR_TEMP is not set
 CONFIG_MLX90614=m
 CONFIG_MLX90614=m
+# CONFIG_MLX90632 is not set
 CONFIG_TMP006=m
 CONFIG_TMP006=m
+# CONFIG_TMP007 is not set
 CONFIG_TSYS01=m
 CONFIG_TSYS01=m
 CONFIG_TSYS02D=m
 CONFIG_TSYS02D=m
 CONFIG_PWM=y
 CONFIG_PWM=y
@@ -4979,33 +5614,45 @@ CONFIG_PWM_TIEHRPWM=m
 CONFIG_PWM_TIPWMSS=y
 CONFIG_PWM_TIPWMSS=y
 CONFIG_PWM_TWL=m
 CONFIG_PWM_TWL=m
 CONFIG_PWM_TWL_LED=m
 CONFIG_PWM_TWL_LED=m
+
+#
+# IRQ chip support
+#
 CONFIG_IRQCHIP=y
 CONFIG_IRQCHIP=y
+CONFIG_ARM_GIC_MAX_NR=1
 CONFIG_OMAP_IRQCHIP=y
 CONFIG_OMAP_IRQCHIP=y
 # CONFIG_IPACK_BUS is not set
 # CONFIG_IPACK_BUS is not set
-# CONFIG_RESET_CONTROLLER is not set
+CONFIG_RESET_CONTROLLER=y
+# CONFIG_RESET_TI_SYSCON is not set
 # CONFIG_FMC is not set
 # CONFIG_FMC is not set
 
 
 #
 #
 # PHY Subsystem
 # PHY Subsystem
 #
 #
 CONFIG_GENERIC_PHY=y
 CONFIG_GENERIC_PHY=y
-# CONFIG_PHY_DM816X_USB is not set
+# CONFIG_BCM_KONA_USB2_PHY is not set
+# CONFIG_PHY_CADENCE_DP is not set
+# CONFIG_PHY_CADENCE_SIERRA is not set
 # CONFIG_PHY_PXA_28NM_HSIC is not set
 # CONFIG_PHY_PXA_28NM_HSIC is not set
 # CONFIG_PHY_PXA_28NM_USB2 is not set
 # CONFIG_PHY_PXA_28NM_USB2 is not set
+# CONFIG_PHY_CPCAP_USB is not set
+# CONFIG_PHY_MAPPHONE_MDM6600 is not set
+# CONFIG_PHY_QCOM_USB_HS is not set
+# CONFIG_PHY_QCOM_USB_HSIC is not set
+CONFIG_PHY_SAMSUNG_USB2=m
+# CONFIG_PHY_DM816X_USB is not set
 CONFIG_OMAP_CONTROL_PHY=y
 CONFIG_OMAP_CONTROL_PHY=y
 CONFIG_OMAP_USB2=y
 CONFIG_OMAP_USB2=y
 CONFIG_TI_PIPE3=m
 CONFIG_TI_PIPE3=m
-# CONFIG_BCM_KONA_USB2_PHY is not set
-CONFIG_PHY_SAMSUNG_USB2=m
-# CONFIG_PHY_EXYNOS4210_USB2 is not set
-# CONFIG_PHY_EXYNOS4X12_USB2 is not set
-# CONFIG_PHY_EXYNOS5250_USB2 is not set
+# CONFIG_PHY_TUSB1210 is not set
 # CONFIG_POWERCAP is not set
 # CONFIG_POWERCAP is not set
 # CONFIG_MCB is not set
 # CONFIG_MCB is not set
 
 
 #
 #
 # Performance monitor support
 # Performance monitor support
 #
 #
+# CONFIG_ARM_CCI_PMU is not set
+# CONFIG_ARM_CCN is not set
 CONFIG_ARM_PMU=y
 CONFIG_ARM_PMU=y
 CONFIG_RAS=y
 CONFIG_RAS=y
 
 
@@ -5014,28 +5661,28 @@ CONFIG_RAS=y
 #
 #
 CONFIG_ANDROID=y
 CONFIG_ANDROID=y
 CONFIG_ANDROID_BINDER_IPC=y
 CONFIG_ANDROID_BINDER_IPC=y
-CONFIG_ANDROID_BINDER_IPC_32BIT=y
+CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
+# CONFIG_ANDROID_BINDER_IPC_SELFTEST is not set
+# CONFIG_DAX is not set
 CONFIG_NVMEM=y
 CONFIG_NVMEM=y
-# CONFIG_STM is not set
-# CONFIG_STM_DUMMY is not set
-# CONFIG_STM_SOURCE_CONSOLE is not set
-# CONFIG_INTEL_TH is not set
 
 
 #
 #
-# FPGA Configuration Support
+# HW tracing support
 #
 #
+# CONFIG_STM is not set
+# CONFIG_INTEL_TH is not set
 # CONFIG_FPGA is not set
 # CONFIG_FPGA is not set
-
-#
-# Firmware Drivers
-#
-CONFIG_ARM_PSCI_FW=y
-# CONFIG_FIRMWARE_MEMMAP is not set
+# CONFIG_FSI is not set
+# CONFIG_TEE is not set
+CONFIG_PM_OPP=y
+# CONFIG_SIOX is not set
+# CONFIG_SLIMBUS is not set
 
 
 #
 #
 # File systems
 # File systems
 #
 #
 CONFIG_DCACHE_WORD_ACCESS=y
 CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_FS_IOMAP=y
 # CONFIG_EXT2_FS is not set
 # CONFIG_EXT2_FS is not set
 # CONFIG_EXT3_FS is not set
 # CONFIG_EXT3_FS is not set
 CONFIG_EXT4_FS=y
 CONFIG_EXT4_FS=y
@@ -5063,6 +5710,7 @@ CONFIG_XFS_FS=y
 CONFIG_XFS_QUOTA=y
 CONFIG_XFS_QUOTA=y
 CONFIG_XFS_POSIX_ACL=y
 CONFIG_XFS_POSIX_ACL=y
 CONFIG_XFS_RT=y
 CONFIG_XFS_RT=y
+# CONFIG_XFS_ONLINE_SCRUB is not set
 # CONFIG_XFS_WARN is not set
 # CONFIG_XFS_WARN is not set
 # CONFIG_XFS_DEBUG is not set
 # CONFIG_XFS_DEBUG is not set
 CONFIG_GFS2_FS=m
 CONFIG_GFS2_FS=m
@@ -5079,6 +5727,7 @@ CONFIG_BTRFS_FS_POSIX_ACL=y
 # CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
 # CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
 # CONFIG_BTRFS_DEBUG is not set
 # CONFIG_BTRFS_DEBUG is not set
 # CONFIG_BTRFS_ASSERT is not set
 # CONFIG_BTRFS_ASSERT is not set
+# CONFIG_BTRFS_FS_REF_VERIFY is not set
 CONFIG_NILFS2_FS=m
 CONFIG_NILFS2_FS=m
 CONFIG_F2FS_FS=y
 CONFIG_F2FS_FS=y
 CONFIG_F2FS_STAT_FS=y
 CONFIG_F2FS_STAT_FS=y
@@ -5088,9 +5737,13 @@ CONFIG_F2FS_FS_SECURITY=y
 # CONFIG_F2FS_CHECK_FS is not set
 # CONFIG_F2FS_CHECK_FS is not set
 CONFIG_F2FS_FS_ENCRYPTION=y
 CONFIG_F2FS_FS_ENCRYPTION=y
 # CONFIG_F2FS_IO_TRACE is not set
 # CONFIG_F2FS_IO_TRACE is not set
+# CONFIG_F2FS_FAULT_INJECTION is not set
 CONFIG_FS_POSIX_ACL=y
 CONFIG_FS_POSIX_ACL=y
 CONFIG_EXPORTFS=y
 CONFIG_EXPORTFS=y
+# CONFIG_EXPORTFS_BLOCK_OPS is not set
 CONFIG_FILE_LOCKING=y
 CONFIG_FILE_LOCKING=y
+CONFIG_MANDATORY_FILE_LOCKING=y
+CONFIG_FS_ENCRYPTION=y
 CONFIG_FSNOTIFY=y
 CONFIG_FSNOTIFY=y
 CONFIG_DNOTIFY=y
 CONFIG_DNOTIFY=y
 CONFIG_INOTIFY_USER=y
 CONFIG_INOTIFY_USER=y
@@ -5105,9 +5758,15 @@ CONFIG_QFMT_V1=m
 CONFIG_QFMT_V2=m
 CONFIG_QFMT_V2=m
 CONFIG_QUOTACTL=y
 CONFIG_QUOTACTL=y
 CONFIG_AUTOFS4_FS=y
 CONFIG_AUTOFS4_FS=y
+CONFIG_AUTOFS_FS=y
 CONFIG_FUSE_FS=y
 CONFIG_FUSE_FS=y
 CONFIG_CUSE=m
 CONFIG_CUSE=m
 CONFIG_OVERLAY_FS=y
 CONFIG_OVERLAY_FS=y
+# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set
+CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y
+# CONFIG_OVERLAY_FS_INDEX is not set
+# CONFIG_OVERLAY_FS_XINO_AUTO is not set
+# CONFIG_OVERLAY_FS_METACOPY is not set
 
 
 #
 #
 # Caches
 # Caches
@@ -5128,7 +5787,6 @@ CONFIG_ISO9660_FS=m
 CONFIG_JOLIET=y
 CONFIG_JOLIET=y
 CONFIG_ZISOFS=y
 CONFIG_ZISOFS=y
 CONFIG_UDF_FS=m
 CONFIG_UDF_FS=m
-CONFIG_UDF_NLS=y
 
 
 #
 #
 # DOS/FAT/NT Filesystems
 # DOS/FAT/NT Filesystems
@@ -5138,6 +5796,7 @@ CONFIG_MSDOS_FS=y
 CONFIG_VFAT_FS=y
 CONFIG_VFAT_FS=y
 CONFIG_FAT_DEFAULT_CODEPAGE=437
 CONFIG_FAT_DEFAULT_CODEPAGE=437
 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
 CONFIG_NTFS_FS=m
 CONFIG_NTFS_FS=m
 # CONFIG_NTFS_DEBUG is not set
 # CONFIG_NTFS_DEBUG is not set
 CONFIG_NTFS_RW=y
 CONFIG_NTFS_RW=y
@@ -5154,9 +5813,10 @@ CONFIG_SYSFS=y
 CONFIG_TMPFS=y
 CONFIG_TMPFS=y
 CONFIG_TMPFS_POSIX_ACL=y
 CONFIG_TMPFS_POSIX_ACL=y
 CONFIG_TMPFS_XATTR=y
 CONFIG_TMPFS_XATTR=y
-# CONFIG_HUGETLB_PAGE is not set
+CONFIG_MEMFD_CREATE=y
 CONFIG_CONFIGFS_FS=y
 CONFIG_CONFIGFS_FS=y
 CONFIG_MISC_FILESYSTEMS=y
 CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ORANGEFS_FS is not set
 CONFIG_ADFS_FS=m
 CONFIG_ADFS_FS=m
 # CONFIG_ADFS_FS_RW is not set
 # CONFIG_ADFS_FS_RW is not set
 CONFIG_AFFS_FS=m
 CONFIG_AFFS_FS=m
@@ -5164,7 +5824,6 @@ CONFIG_ECRYPT_FS=m
 CONFIG_ECRYPT_FS_MESSAGING=y
 CONFIG_ECRYPT_FS_MESSAGING=y
 CONFIG_HFS_FS=m
 CONFIG_HFS_FS=m
 CONFIG_HFSPLUS_FS=m
 CONFIG_HFSPLUS_FS=m
-# CONFIG_HFSPLUS_FS_POSIX_ACL is not set
 CONFIG_BEFS_FS=m
 CONFIG_BEFS_FS=m
 # CONFIG_BEFS_DEBUG is not set
 # CONFIG_BEFS_DEBUG is not set
 CONFIG_BFS_FS=m
 CONFIG_BFS_FS=m
@@ -5191,7 +5850,9 @@ CONFIG_UBIFS_FS_ADVANCED_COMPR=y
 CONFIG_UBIFS_FS_LZO=y
 CONFIG_UBIFS_FS_LZO=y
 CONFIG_UBIFS_FS_ZLIB=y
 CONFIG_UBIFS_FS_ZLIB=y
 # CONFIG_UBIFS_ATIME_SUPPORT is not set
 # CONFIG_UBIFS_ATIME_SUPPORT is not set
-CONFIG_LOGFS=m
+CONFIG_UBIFS_FS_XATTR=y
+# CONFIG_UBIFS_FS_ENCRYPTION is not set
+CONFIG_UBIFS_FS_SECURITY=y
 # CONFIG_CRAMFS is not set
 # CONFIG_CRAMFS is not set
 CONFIG_SQUASHFS=m
 CONFIG_SQUASHFS=m
 CONFIG_SQUASHFS_FILE_CACHE=y
 CONFIG_SQUASHFS_FILE_CACHE=y
@@ -5204,6 +5865,7 @@ CONFIG_SQUASHFS_ZLIB=y
 CONFIG_SQUASHFS_LZ4=y
 CONFIG_SQUASHFS_LZ4=y
 CONFIG_SQUASHFS_LZO=y
 CONFIG_SQUASHFS_LZO=y
 CONFIG_SQUASHFS_XZ=y
 CONFIG_SQUASHFS_XZ=y
+# CONFIG_SQUASHFS_ZSTD is not set
 # CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
 # CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
 # CONFIG_SQUASHFS_EMBEDDED is not set
 # CONFIG_SQUASHFS_EMBEDDED is not set
 CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
 CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
@@ -5227,23 +5889,6 @@ CONFIG_UFS_FS=m
 # CONFIG_UFS_DEBUG is not set
 # CONFIG_UFS_DEBUG is not set
 CONFIG_EXOFS_FS=m
 CONFIG_EXOFS_FS=m
 # CONFIG_EXOFS_DEBUG is not set
 # CONFIG_EXOFS_DEBUG is not set
-CONFIG_AUFS_FS=m
-CONFIG_AUFS_BRANCH_MAX_127=y
-# CONFIG_AUFS_BRANCH_MAX_511 is not set
-# CONFIG_AUFS_BRANCH_MAX_1023 is not set
-# CONFIG_AUFS_BRANCH_MAX_32767 is not set
-CONFIG_AUFS_SBILIST=y
-# CONFIG_AUFS_HNOTIFY is not set
-CONFIG_AUFS_EXPORT=y
-CONFIG_AUFS_XATTR=y
-# CONFIG_AUFS_FHSM is not set
-# CONFIG_AUFS_RDU is not set
-# CONFIG_AUFS_SHWH is not set
-# CONFIG_AUFS_BR_RAMFS is not set
-# CONFIG_AUFS_BR_FUSE is not set
-CONFIG_AUFS_BR_HFSPLUS=y
-CONFIG_AUFS_BDEV_LOOP=y
-# CONFIG_AUFS_DEBUG is not set
 CONFIG_ORE=m
 CONFIG_ORE=m
 CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NFS_FS=y
 CONFIG_NFS_FS=y
@@ -5256,7 +5901,6 @@ CONFIG_NFS_V4_1=y
 CONFIG_NFS_V4_2=y
 CONFIG_NFS_V4_2=y
 CONFIG_PNFS_FILE_LAYOUT=y
 CONFIG_PNFS_FILE_LAYOUT=y
 CONFIG_PNFS_BLOCK=m
 CONFIG_PNFS_BLOCK=m
-CONFIG_PNFS_OBJLAYOUT=m
 CONFIG_PNFS_FLEXFILE_LAYOUT=m
 CONFIG_PNFS_FLEXFILE_LAYOUT=m
 CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org"
 CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org"
 # CONFIG_NFS_V4_1_MIGRATION is not set
 # CONFIG_NFS_V4_1_MIGRATION is not set
@@ -5270,7 +5914,9 @@ CONFIG_NFSD_V2_ACL=y
 CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
 CONFIG_NFSD_V4=y
-# CONFIG_NFSD_PNFS is not set
+# CONFIG_NFSD_BLOCKLAYOUT is not set
+# CONFIG_NFSD_SCSILAYOUT is not set
+# CONFIG_NFSD_FLEXFILELAYOUT is not set
 CONFIG_NFSD_V4_SECURITY_LABEL=y
 CONFIG_NFSD_V4_SECURITY_LABEL=y
 # CONFIG_NFSD_FAULT_INJECTION is not set
 # CONFIG_NFSD_FAULT_INJECTION is not set
 CONFIG_GRACE_PERIOD=y
 CONFIG_GRACE_PERIOD=y
@@ -5288,7 +5934,8 @@ CONFIG_CEPH_FS=m
 CONFIG_CEPH_FSCACHE=y
 CONFIG_CEPH_FSCACHE=y
 CONFIG_CEPH_FS_POSIX_ACL=y
 CONFIG_CEPH_FS_POSIX_ACL=y
 CONFIG_CIFS=m
 CONFIG_CIFS=m
-# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_STATS2 is not set
+CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y
 CONFIG_CIFS_WEAK_PW_HASH=y
 CONFIG_CIFS_WEAK_PW_HASH=y
 CONFIG_CIFS_UPCALL=y
 CONFIG_CIFS_UPCALL=y
 CONFIG_CIFS_XATTR=y
 CONFIG_CIFS_XATTR=y
@@ -5296,19 +5943,9 @@ CONFIG_CIFS_POSIX=y
 CONFIG_CIFS_ACL=y
 CONFIG_CIFS_ACL=y
 CONFIG_CIFS_DEBUG=y
 CONFIG_CIFS_DEBUG=y
 # CONFIG_CIFS_DEBUG2 is not set
 # CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_DEBUG_DUMP_KEYS is not set
 CONFIG_CIFS_DFS_UPCALL=y
 CONFIG_CIFS_DFS_UPCALL=y
-CONFIG_CIFS_SMB2=y
-# CONFIG_CIFS_SMB311 is not set
 CONFIG_CIFS_FSCACHE=y
 CONFIG_CIFS_FSCACHE=y
-CONFIG_NCP_FS=m
-CONFIG_NCPFS_PACKET_SIGNING=y
-CONFIG_NCPFS_IOCTL_LOCKING=y
-CONFIG_NCPFS_STRONG=y
-CONFIG_NCPFS_NFS_NS=y
-CONFIG_NCPFS_OS2_NS=y
-# CONFIG_NCPFS_SMALLDOS is not set
-CONFIG_NCPFS_NLS=y
-CONFIG_NCPFS_EXTRAS=y
 CONFIG_CODA_FS=m
 CONFIG_CODA_FS=m
 CONFIG_AFS_FS=m
 CONFIG_AFS_FS=m
 # CONFIG_AFS_DEBUG is not set
 # CONFIG_AFS_DEBUG is not set
@@ -5371,205 +6008,6 @@ CONFIG_NLS_UTF8=m
 CONFIG_DLM=m
 CONFIG_DLM=m
 CONFIG_DLM_DEBUG=y
 CONFIG_DLM_DEBUG=y
 
 
-#
-# Kernel hacking
-#
-
-#
-# printk and dmesg options
-#
-CONFIG_PRINTK_TIME=y
-CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
-# CONFIG_BOOT_PRINTK_DELAY is not set
-CONFIG_DYNAMIC_DEBUG=y
-
-#
-# Compile-time checks and compiler options
-#
-CONFIG_DEBUG_INFO=y
-# CONFIG_DEBUG_INFO_REDUCED is not set
-CONFIG_DEBUG_INFO_SPLIT=y
-CONFIG_DEBUG_INFO_DWARF4=y
-# CONFIG_GDB_SCRIPTS is not set
-CONFIG_ENABLE_WARN_DEPRECATED=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_FRAME_WARN=1024
-CONFIG_STRIP_ASM_SYMS=y
-# CONFIG_READABLE_ASM is not set
-CONFIG_UNUSED_SYMBOLS=y
-# CONFIG_PAGE_OWNER is not set
-CONFIG_DEBUG_FS=y
-# CONFIG_HEADERS_CHECK is not set
-# CONFIG_DEBUG_SECTION_MISMATCH is not set
-CONFIG_SECTION_MISMATCH_WARN_ONLY=y
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6
-CONFIG_DEBUG_KERNEL=y
-
-#
-# Memory Debugging
-#
-# CONFIG_PAGE_EXTENSION is not set
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_SLUB_DEBUG_ON is not set
-# CONFIG_SLUB_STATS is not set
-CONFIG_HAVE_DEBUG_KMEMLEAK=y
-# CONFIG_DEBUG_KMEMLEAK is not set
-# CONFIG_DEBUG_STACK_USAGE is not set
-# CONFIG_DEBUG_VM is not set
-CONFIG_DEBUG_MEMORY_INIT=y
-# CONFIG_DEBUG_HIGHMEM is not set
-# CONFIG_DEBUG_SHIRQ is not set
-
-#
-# Debug Lockups and Hangs
-#
-CONFIG_LOCKUP_DETECTOR=y
-# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
-CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
-CONFIG_DETECT_HUNG_TASK=y
-CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
-# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
-CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
-# CONFIG_PANIC_ON_OOPS is not set
-CONFIG_PANIC_ON_OOPS_VALUE=0
-CONFIG_PANIC_TIMEOUT=0
-CONFIG_SCHED_DEBUG=y
-CONFIG_SCHED_INFO=y
-CONFIG_SCHEDSTATS=y
-CONFIG_SCHED_STACK_END_CHECK=y
-# CONFIG_DEBUG_TIMEKEEPING is not set
-CONFIG_TIMER_STATS=y
-CONFIG_DEBUG_PREEMPT=y
-
-#
-# Lock Debugging (spinlocks, mutexes, etc...)
-#
-# CONFIG_DEBUG_RT_MUTEXES is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_MUTEXES is not set
-# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
-# CONFIG_DEBUG_LOCK_ALLOC is not set
-# CONFIG_PROVE_LOCKING is not set
-# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_ATOMIC_SLEEP is not set
-# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
-# CONFIG_LOCK_TORTURE_TEST is not set
-CONFIG_STACKTRACE=y
-# CONFIG_DEBUG_KOBJECT is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_DEBUG_LIST=y
-# CONFIG_DEBUG_PI_LIST is not set
-# CONFIG_DEBUG_SG is not set
-# CONFIG_DEBUG_NOTIFIERS is not set
-# CONFIG_DEBUG_CREDENTIALS is not set
-
-#
-# RCU Debugging
-#
-# CONFIG_PROVE_RCU is not set
-# CONFIG_SPARSE_RCU_POINTER is not set
-# CONFIG_TORTURE_TEST is not set
-# CONFIG_RCU_TORTURE_TEST is not set
-CONFIG_RCU_CPU_STALL_TIMEOUT=21
-# CONFIG_RCU_TRACE is not set
-# CONFIG_RCU_EQS_DEBUG is not set
-# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-CONFIG_NOTIFIER_ERROR_INJECTION=m
-CONFIG_PM_NOTIFIER_ERROR_INJECT=m
-# CONFIG_OF_RECONFIG_NOTIFIER_ERROR_INJECT is not set
-# CONFIG_FAULT_INJECTION is not set
-# CONFIG_LATENCYTOP is not set
-CONFIG_NOP_TRACER=y
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
-CONFIG_HAVE_C_RECORDMCOUNT=y
-CONFIG_TRACER_MAX_TRACE=y
-CONFIG_TRACE_CLOCK=y
-CONFIG_RING_BUFFER=y
-CONFIG_EVENT_TRACING=y
-CONFIG_CONTEXT_SWITCH_TRACER=y
-CONFIG_TRACING=y
-CONFIG_GENERIC_TRACER=y
-CONFIG_TRACING_SUPPORT=y
-CONFIG_FTRACE=y
-CONFIG_FUNCTION_TRACER=y
-# CONFIG_IRQSOFF_TRACER is not set
-# CONFIG_PREEMPT_TRACER is not set
-# CONFIG_SCHED_TRACER is not set
-# CONFIG_MISSED_TIMER_OFFSETS_HIST is not set
-CONFIG_FTRACE_SYSCALLS=y
-CONFIG_TRACER_SNAPSHOT=y
-# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
-CONFIG_BRANCH_PROFILE_NONE=y
-# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
-# CONFIG_PROFILE_ALL_BRANCHES is not set
-CONFIG_STACK_TRACER=y
-CONFIG_BLK_DEV_IO_TRACE=y
-CONFIG_KPROBE_EVENT=y
-CONFIG_UPROBE_EVENT=y
-CONFIG_BPF_EVENTS=y
-CONFIG_PROBE_EVENTS=y
-CONFIG_DYNAMIC_FTRACE=y
-# CONFIG_FUNCTION_PROFILER is not set
-CONFIG_FTRACE_MCOUNT_RECORD=y
-# CONFIG_FTRACE_STARTUP_TEST is not set
-# CONFIG_TRACEPOINT_BENCHMARK is not set
-# CONFIG_RING_BUFFER_BENCHMARK is not set
-# CONFIG_RING_BUFFER_STARTUP_TEST is not set
-# CONFIG_TRACE_ENUM_MAP_FILE is not set
-CONFIG_TRACING_EVENTS_GPIO=y
-
-#
-# Runtime Testing
-#
-# CONFIG_LKDTM is not set
-# CONFIG_TEST_LIST_SORT is not set
-# CONFIG_KPROBES_SANITY_TEST is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
-# CONFIG_RBTREE_TEST is not set
-# CONFIG_INTERVAL_TREE_TEST is not set
-# CONFIG_PERCPU_TEST is not set
-# CONFIG_ATOMIC64_SELFTEST is not set
-# CONFIG_ASYNC_RAID6_TEST is not set
-# CONFIG_TEST_HEXDUMP is not set
-# CONFIG_TEST_STRING_HELPERS is not set
-# CONFIG_TEST_KSTRTOX is not set
-# CONFIG_TEST_PRINTF is not set
-# CONFIG_TEST_RHASHTABLE is not set
-# CONFIG_DMA_API_DEBUG is not set
-# CONFIG_TEST_LKM is not set
-CONFIG_TEST_USER_COPY=m
-CONFIG_TEST_BPF=m
-CONFIG_TEST_FIRMWARE=m
-# CONFIG_TEST_UDELAY is not set
-# CONFIG_MEMTEST is not set
-CONFIG_TEST_STATIC_KEYS=m
-# CONFIG_SAMPLES is not set
-CONFIG_HAVE_ARCH_KGDB=y
-CONFIG_KGDB=y
-CONFIG_KGDB_SERIAL_CONSOLE=y
-# CONFIG_KGDB_TESTS is not set
-CONFIG_KGDB_KDB=y
-CONFIG_KDB_DEFAULT_ENABLE=0x1
-CONFIG_KDB_KEYBOARD=y
-CONFIG_KDB_CONTINUE_CATASTROPHIC=0
-# CONFIG_ARM_PTDUMP is not set
-# CONFIG_STRICT_DEVMEM is not set
-CONFIG_ARM_UNWIND=y
-# CONFIG_DEBUG_USER is not set
-# CONFIG_DEBUG_LL is not set
-CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
-# CONFIG_DEBUG_UART_8250 is not set
-CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
-# CONFIG_ARM_KPROBES_TEST is not set
-# CONFIG_PID_IN_CONTEXTIDR is not set
-# CONFIG_DEBUG_SET_MODULE_RONX is not set
-# CONFIG_CORESIGHT is not set
-
 #
 #
 # Security options
 # Security options
 #
 #
@@ -5578,6 +6016,7 @@ CONFIG_KEYS=y
 # CONFIG_BIG_KEYS is not set
 # CONFIG_BIG_KEYS is not set
 # CONFIG_TRUSTED_KEYS is not set
 # CONFIG_TRUSTED_KEYS is not set
 CONFIG_ENCRYPTED_KEYS=y
 CONFIG_ENCRYPTED_KEYS=y
+# CONFIG_KEY_DH_OPERATIONS is not set
 # CONFIG_SECURITY_DMESG_RESTRICT is not set
 # CONFIG_SECURITY_DMESG_RESTRICT is not set
 CONFIG_SECURITY=y
 CONFIG_SECURITY=y
 CONFIG_SECURITYFS=y
 CONFIG_SECURITYFS=y
@@ -5585,13 +6024,16 @@ CONFIG_SECURITY_NETWORK=y
 CONFIG_SECURITY_NETWORK_XFRM=y
 CONFIG_SECURITY_NETWORK_XFRM=y
 CONFIG_SECURITY_PATH=y
 CONFIG_SECURITY_PATH=y
 CONFIG_LSM_MMAP_MIN_ADDR=32768
 CONFIG_LSM_MMAP_MIN_ADDR=32768
+CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
+# CONFIG_HARDENED_USERCOPY is not set
+# CONFIG_FORTIFY_SOURCE is not set
+# CONFIG_STATIC_USERMODEHELPER is not set
 CONFIG_SECURITY_SELINUX=y
 CONFIG_SECURITY_SELINUX=y
 # CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
 # CONFIG_SECURITY_SELINUX_BOOTPARAM is not set
 # CONFIG_SECURITY_SELINUX_DISABLE is not set
 # CONFIG_SECURITY_SELINUX_DISABLE is not set
 CONFIG_SECURITY_SELINUX_DEVELOP=y
 CONFIG_SECURITY_SELINUX_DEVELOP=y
 CONFIG_SECURITY_SELINUX_AVC_STATS=y
 CONFIG_SECURITY_SELINUX_AVC_STATS=y
 CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
 CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
-# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
 # CONFIG_SECURITY_SMACK is not set
 # CONFIG_SECURITY_SMACK is not set
 CONFIG_SECURITY_TOMOYO=y
 CONFIG_SECURITY_TOMOYO=y
 CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048
 CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048
@@ -5602,6 +6044,9 @@ CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/sbin/init"
 CONFIG_SECURITY_APPARMOR=y
 CONFIG_SECURITY_APPARMOR=y
 CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1
 CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1
 CONFIG_SECURITY_APPARMOR_HASH=y
 CONFIG_SECURITY_APPARMOR_HASH=y
+CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y
+# CONFIG_SECURITY_APPARMOR_DEBUG is not set
+# CONFIG_SECURITY_LOADPIN is not set
 CONFIG_SECURITY_YAMA=y
 CONFIG_SECURITY_YAMA=y
 CONFIG_INTEGRITY=y
 CONFIG_INTEGRITY=y
 # CONFIG_INTEGRITY_SIGNATURE is not set
 # CONFIG_INTEGRITY_SIGNATURE is not set
@@ -5635,10 +6080,14 @@ CONFIG_CRYPTO_HASH2=y
 CONFIG_CRYPTO_RNG=y
 CONFIG_CRYPTO_RNG=y
 CONFIG_CRYPTO_RNG2=y
 CONFIG_CRYPTO_RNG2=y
 CONFIG_CRYPTO_RNG_DEFAULT=y
 CONFIG_CRYPTO_RNG_DEFAULT=y
-CONFIG_CRYPTO_PCOMP=m
-CONFIG_CRYPTO_PCOMP2=y
 CONFIG_CRYPTO_AKCIPHER2=y
 CONFIG_CRYPTO_AKCIPHER2=y
-# CONFIG_CRYPTO_RSA is not set
+CONFIG_CRYPTO_AKCIPHER=y
+CONFIG_CRYPTO_KPP2=y
+CONFIG_CRYPTO_KPP=m
+CONFIG_CRYPTO_ACOMP2=y
+CONFIG_CRYPTO_RSA=y
+# CONFIG_CRYPTO_DH is not set
+CONFIG_CRYPTO_ECDH=m
 CONFIG_CRYPTO_MANAGER=y
 CONFIG_CRYPTO_MANAGER=y
 CONFIG_CRYPTO_MANAGER2=y
 CONFIG_CRYPTO_MANAGER2=y
 # CONFIG_CRYPTO_USER is not set
 # CONFIG_CRYPTO_USER is not set
@@ -5651,7 +6100,8 @@ CONFIG_CRYPTO_CRYPTD=m
 # CONFIG_CRYPTO_MCRYPTD is not set
 # CONFIG_CRYPTO_MCRYPTD is not set
 CONFIG_CRYPTO_AUTHENC=m
 CONFIG_CRYPTO_AUTHENC=m
 CONFIG_CRYPTO_TEST=m
 CONFIG_CRYPTO_TEST=m
-CONFIG_CRYPTO_ABLK_HELPER=m
+CONFIG_CRYPTO_SIMD=m
+CONFIG_CRYPTO_ENGINE=m
 
 
 #
 #
 # Authenticated Encryption with Associated Data
 # Authenticated Encryption with Associated Data
@@ -5659,6 +6109,11 @@ CONFIG_CRYPTO_ABLK_HELPER=m
 CONFIG_CRYPTO_CCM=m
 CONFIG_CRYPTO_CCM=m
 CONFIG_CRYPTO_GCM=m
 CONFIG_CRYPTO_GCM=m
 # CONFIG_CRYPTO_CHACHA20POLY1305 is not set
 # CONFIG_CRYPTO_CHACHA20POLY1305 is not set
+# CONFIG_CRYPTO_AEGIS128 is not set
+# CONFIG_CRYPTO_AEGIS128L is not set
+# CONFIG_CRYPTO_AEGIS256 is not set
+# CONFIG_CRYPTO_MORUS640 is not set
+# CONFIG_CRYPTO_MORUS1280 is not set
 CONFIG_CRYPTO_SEQIV=y
 CONFIG_CRYPTO_SEQIV=y
 CONFIG_CRYPTO_ECHAINIV=m
 CONFIG_CRYPTO_ECHAINIV=m
 
 
@@ -5666,6 +6121,7 @@ CONFIG_CRYPTO_ECHAINIV=m
 # Block modes
 # Block modes
 #
 #
 CONFIG_CRYPTO_CBC=y
 CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_CFB is not set
 CONFIG_CRYPTO_CTR=y
 CONFIG_CRYPTO_CTR=y
 CONFIG_CRYPTO_CTS=y
 CONFIG_CRYPTO_CTS=y
 CONFIG_CRYPTO_ECB=y
 CONFIG_CRYPTO_ECB=y
@@ -5686,7 +6142,7 @@ CONFIG_CRYPTO_VMAC=m
 # Digest
 # Digest
 #
 #
 CONFIG_CRYPTO_CRC32C=y
 CONFIG_CRYPTO_CRC32C=y
-CONFIG_CRYPTO_CRC32=m
+CONFIG_CRYPTO_CRC32=y
 CONFIG_CRYPTO_CRCT10DIF=y
 CONFIG_CRYPTO_CRCT10DIF=y
 CONFIG_CRYPTO_GHASH=m
 CONFIG_CRYPTO_GHASH=m
 # CONFIG_CRYPTO_POLY1305 is not set
 # CONFIG_CRYPTO_POLY1305 is not set
@@ -5700,6 +6156,8 @@ CONFIG_CRYPTO_RMD320=m
 CONFIG_CRYPTO_SHA1=y
 CONFIG_CRYPTO_SHA1=y
 CONFIG_CRYPTO_SHA256=y
 CONFIG_CRYPTO_SHA256=y
 CONFIG_CRYPTO_SHA512=m
 CONFIG_CRYPTO_SHA512=m
+# CONFIG_CRYPTO_SHA3 is not set
+# CONFIG_CRYPTO_SM3 is not set
 CONFIG_CRYPTO_TGR192=m
 CONFIG_CRYPTO_TGR192=m
 CONFIG_CRYPTO_WP512=m
 CONFIG_CRYPTO_WP512=m
 
 
@@ -5707,6 +6165,7 @@ CONFIG_CRYPTO_WP512=m
 # Ciphers
 # Ciphers
 #
 #
 CONFIG_CRYPTO_AES=y
 CONFIG_CRYPTO_AES=y
+# CONFIG_CRYPTO_AES_TI is not set
 CONFIG_CRYPTO_ANUBIS=m
 CONFIG_CRYPTO_ANUBIS=m
 CONFIG_CRYPTO_ARC4=m
 CONFIG_CRYPTO_ARC4=m
 CONFIG_CRYPTO_BLOWFISH=m
 CONFIG_CRYPTO_BLOWFISH=m
@@ -5722,6 +6181,7 @@ CONFIG_CRYPTO_SALSA20=m
 # CONFIG_CRYPTO_CHACHA20 is not set
 # CONFIG_CRYPTO_CHACHA20 is not set
 CONFIG_CRYPTO_SEED=m
 CONFIG_CRYPTO_SEED=m
 CONFIG_CRYPTO_SERPENT=m
 CONFIG_CRYPTO_SERPENT=m
+# CONFIG_CRYPTO_SM4 is not set
 CONFIG_CRYPTO_TEA=m
 CONFIG_CRYPTO_TEA=m
 CONFIG_CRYPTO_TWOFISH=m
 CONFIG_CRYPTO_TWOFISH=m
 CONFIG_CRYPTO_TWOFISH_COMMON=m
 CONFIG_CRYPTO_TWOFISH_COMMON=m
@@ -5730,11 +6190,11 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
 # Compression
 # Compression
 #
 #
 CONFIG_CRYPTO_DEFLATE=m
 CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_ZLIB=m
 CONFIG_CRYPTO_LZO=y
 CONFIG_CRYPTO_LZO=y
 # CONFIG_CRYPTO_842 is not set
 # CONFIG_CRYPTO_842 is not set
 CONFIG_CRYPTO_LZ4=m
 CONFIG_CRYPTO_LZ4=m
 CONFIG_CRYPTO_LZ4HC=m
 CONFIG_CRYPTO_LZ4HC=m
+# CONFIG_CRYPTO_ZSTD is not set
 
 
 #
 #
 # Random Number Generation
 # Random Number Generation
@@ -5751,27 +6211,26 @@ CONFIG_CRYPTO_USER_API_HASH=m
 CONFIG_CRYPTO_USER_API_SKCIPHER=m
 CONFIG_CRYPTO_USER_API_SKCIPHER=m
 # CONFIG_CRYPTO_USER_API_RNG is not set
 # CONFIG_CRYPTO_USER_API_RNG is not set
 # CONFIG_CRYPTO_USER_API_AEAD is not set
 # CONFIG_CRYPTO_USER_API_AEAD is not set
+CONFIG_CRYPTO_HASH_INFO=y
 CONFIG_CRYPTO_HW=y
 CONFIG_CRYPTO_HW=y
-CONFIG_CRYPTO_DEV_OMAP_SHAM=m
-CONFIG_CRYPTO_DEV_OMAP_AES=m
-CONFIG_CRYPTO_DEV_OMAP_DES=m
-# CONFIG_ASYMMETRIC_KEY_TYPE is not set
+# CONFIG_CRYPTO_DEV_OMAP is not set
+CONFIG_CRYPTO_DEV_VIRTIO=m
+# CONFIG_CRYPTO_DEV_CCREE is not set
+CONFIG_ASYMMETRIC_KEY_TYPE=y
+CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
+CONFIG_X509_CERTIFICATE_PARSER=y
+CONFIG_PKCS7_MESSAGE_PARSER=y
+# CONFIG_PKCS7_TEST_KEY is not set
+# CONFIG_SIGNED_PE_FILE_VERIFICATION is not set
 
 
 #
 #
 # Certificates for signature checking
 # Certificates for signature checking
 #
 #
-# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
-CONFIG_ARM_CRYPTO=y
-CONFIG_CRYPTO_SHA1_ARM=m
-CONFIG_CRYPTO_SHA1_ARM_NEON=m
-# CONFIG_CRYPTO_SHA1_ARM_CE is not set
-# CONFIG_CRYPTO_SHA2_ARM_CE is not set
-CONFIG_CRYPTO_SHA256_ARM=m
-CONFIG_CRYPTO_SHA512_ARM=m
-CONFIG_CRYPTO_AES_ARM=m
-CONFIG_CRYPTO_AES_ARM_BS=m
-# CONFIG_CRYPTO_AES_ARM_CE is not set
-# CONFIG_CRYPTO_GHASH_ARM_CE is not set
+CONFIG_SYSTEM_TRUSTED_KEYRING=y
+CONFIG_SYSTEM_TRUSTED_KEYS=""
+# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
+# CONFIG_SECONDARY_TRUSTED_KEYRING is not set
+# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set
 CONFIG_BINARY_PRINTF=y
 CONFIG_BINARY_PRINTF=y
 
 
 #
 #
@@ -5785,9 +6244,8 @@ CONFIG_GENERIC_STRNCPY_FROM_USER=y
 CONFIG_GENERIC_STRNLEN_USER=y
 CONFIG_GENERIC_STRNLEN_USER=y
 CONFIG_GENERIC_NET_UTILS=y
 CONFIG_GENERIC_NET_UTILS=y
 CONFIG_GENERIC_PCI_IOMAP=y
 CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GENERIC_IO=y
 CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
 CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
-CONFIG_CRC_CCITT=m
+CONFIG_CRC_CCITT=y
 CONFIG_CRC16=y
 CONFIG_CRC16=y
 CONFIG_CRC_T10DIF=y
 CONFIG_CRC_T10DIF=y
 CONFIG_CRC_ITU_T=m
 CONFIG_CRC_ITU_T=m
@@ -5797,11 +6255,13 @@ CONFIG_CRC32_SLICEBY8=y
 # CONFIG_CRC32_SLICEBY4 is not set
 # CONFIG_CRC32_SLICEBY4 is not set
 # CONFIG_CRC32_SARWATE is not set
 # CONFIG_CRC32_SARWATE is not set
 # CONFIG_CRC32_BIT is not set
 # CONFIG_CRC32_BIT is not set
+# CONFIG_CRC64 is not set
+# CONFIG_CRC4 is not set
 CONFIG_CRC7=m
 CONFIG_CRC7=m
 CONFIG_LIBCRC32C=y
 CONFIG_LIBCRC32C=y
 # CONFIG_CRC8 is not set
 # CONFIG_CRC8 is not set
+CONFIG_XXHASH=y
 CONFIG_AUDIT_GENERIC=y
 CONFIG_AUDIT_GENERIC=y
-# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
 # CONFIG_RANDOM32_SELFTEST is not set
 # CONFIG_RANDOM32_SELFTEST is not set
 CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_DEFLATE=y
 CONFIG_ZLIB_DEFLATE=y
@@ -5809,7 +6269,9 @@ CONFIG_LZO_COMPRESS=y
 CONFIG_LZO_DECOMPRESS=y
 CONFIG_LZO_DECOMPRESS=y
 CONFIG_LZ4_COMPRESS=m
 CONFIG_LZ4_COMPRESS=m
 CONFIG_LZ4HC_COMPRESS=m
 CONFIG_LZ4HC_COMPRESS=m
-CONFIG_LZ4_DECOMPRESS=y
+CONFIG_LZ4_DECOMPRESS=m
+CONFIG_ZSTD_COMPRESS=y
+CONFIG_ZSTD_DECOMPRESS=y
 CONFIG_XZ_DEC=y
 CONFIG_XZ_DEC=y
 # CONFIG_XZ_DEC_X86 is not set
 # CONFIG_XZ_DEC_X86 is not set
 # CONFIG_XZ_DEC_POWERPC is not set
 # CONFIG_XZ_DEC_POWERPC is not set
@@ -5819,37 +6281,262 @@ CONFIG_XZ_DEC_ARMTHUMB=y
 # CONFIG_XZ_DEC_SPARC is not set
 # CONFIG_XZ_DEC_SPARC is not set
 CONFIG_XZ_DEC_BCJ=y
 CONFIG_XZ_DEC_BCJ=y
 # CONFIG_XZ_DEC_TEST is not set
 # CONFIG_XZ_DEC_TEST is not set
-CONFIG_DECOMPRESS_GZIP=y
-CONFIG_DECOMPRESS_BZIP2=y
-CONFIG_DECOMPRESS_LZMA=y
-CONFIG_DECOMPRESS_XZ=y
-CONFIG_DECOMPRESS_LZO=y
-CONFIG_DECOMPRESS_LZ4=y
 CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_BCH=y
 CONFIG_BCH=y
 CONFIG_TEXTSEARCH=y
 CONFIG_TEXTSEARCH=y
 CONFIG_TEXTSEARCH_KMP=m
 CONFIG_TEXTSEARCH_KMP=m
 CONFIG_TEXTSEARCH_BM=m
 CONFIG_TEXTSEARCH_BM=m
 CONFIG_TEXTSEARCH_FSM=m
 CONFIG_TEXTSEARCH_FSM=m
-CONFIG_BTREE=y
 CONFIG_ASSOCIATIVE_ARRAY=y
 CONFIG_ASSOCIATIVE_ARRAY=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT_MAP=y
 CONFIG_HAS_IOPORT_MAP=y
 CONFIG_HAS_DMA=y
 CONFIG_HAS_DMA=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SGL_ALLOC=y
 CONFIG_DQL=y
 CONFIG_DQL=y
 CONFIG_GLOB=y
 CONFIG_GLOB=y
 # CONFIG_GLOB_SELFTEST is not set
 # CONFIG_GLOB_SELFTEST is not set
 CONFIG_NLATTR=y
 CONFIG_NLATTR=y
-CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
 CONFIG_LRU_CACHE=m
 CONFIG_LRU_CACHE=m
+CONFIG_CLZ_TAB=y
 CONFIG_CORDIC=m
 CONFIG_CORDIC=m
 CONFIG_DDR=y
 CONFIG_DDR=y
+# CONFIG_IRQ_POLL is not set
+CONFIG_MPILIB=y
 CONFIG_LIBFDT=y
 CONFIG_LIBFDT=y
 CONFIG_OID_REGISTRY=y
 CONFIG_OID_REGISTRY=y
 CONFIG_FONT_SUPPORT=y
 CONFIG_FONT_SUPPORT=y
 # CONFIG_FONTS is not set
 # CONFIG_FONTS is not set
 CONFIG_FONT_8x8=y
 CONFIG_FONT_8x8=y
 CONFIG_FONT_8x16=y
 CONFIG_FONT_8x16=y
-# CONFIG_SG_SPLIT is not set
+CONFIG_SG_SPLIT=y
+CONFIG_SG_POOL=y
 CONFIG_ARCH_HAS_SG_CHAIN=y
 CONFIG_ARCH_HAS_SG_CHAIN=y
-CONFIG_VIRTUALIZATION=y
+CONFIG_SBITMAP=y
+# CONFIG_STRING_SELFTEST is not set
+
+#
+# Kernel hacking
+#
+
+#
+# printk and dmesg options
+#
+CONFIG_PRINTK_TIME=y
+CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
+CONFIG_CONSOLE_LOGLEVEL_QUIET=4
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
+# CONFIG_BOOT_PRINTK_DELAY is not set
+CONFIG_DYNAMIC_DEBUG=y
+
+#
+# Compile-time checks and compiler options
+#
+# CONFIG_DEBUG_INFO is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+CONFIG_STRIP_ASM_SYMS=y
+# CONFIG_READABLE_ASM is not set
+CONFIG_UNUSED_SYMBOLS=y
+# CONFIG_PAGE_OWNER is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6
+CONFIG_MAGIC_SYSRQ_SERIAL=y
+CONFIG_DEBUG_KERNEL=y
+
+#
+# Memory Debugging
+#
+# CONFIG_PAGE_EXTENSION is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_PAGE_POISONING is not set
+# CONFIG_DEBUG_PAGE_REF is not set
+# CONFIG_DEBUG_RODATA_TEST is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
+# CONFIG_DEBUG_VIRTUAL is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+# CONFIG_DEBUG_HIGHMEM is not set
+CONFIG_ARCH_HAS_KCOV=y
+CONFIG_CC_HAS_SANCOV_TRACE_PC=y
+# CONFIG_KCOV is not set
+# CONFIG_DEBUG_SHIRQ is not set
+
+#
+# Debug Lockups and Hangs
+#
+# CONFIG_SOFTLOCKUP_DETECTOR is not set
+CONFIG_DETECT_HUNG_TASK=y
+CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
+# CONFIG_WQ_WATCHDOG is not set
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
+CONFIG_PANIC_TIMEOUT=0
+CONFIG_SCHED_DEBUG=y
+CONFIG_SCHED_INFO=y
+CONFIG_SCHEDSTATS=y
+CONFIG_SCHED_STACK_END_CHECK=y
+# CONFIG_DEBUG_TIMEKEEPING is not set
+CONFIG_DEBUG_PREEMPT=y
+
+#
+# Lock Debugging (spinlocks, mutexes, etc...)
+#
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_LOCK_TORTURE_TEST is not set
+# CONFIG_WW_MUTEX_SELFTEST is not set
+CONFIG_STACKTRACE=y
+# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_LIST=y
+# CONFIG_DEBUG_PI_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
+
+#
+# RCU Debugging
+#
+# CONFIG_RCU_PERF_TEST is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_RCU_CPU_STALL_TIMEOUT=21
+# CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_EQS_DEBUG is not set
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+CONFIG_NOTIFIER_ERROR_INJECTION=m
+CONFIG_PM_NOTIFIER_ERROR_INJECT=m
+# CONFIG_OF_RECONFIG_NOTIFIER_ERROR_INJECT is not set
+# CONFIG_NETDEV_NOTIFIER_ERROR_INJECT is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_NOP_TRACER=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_TRACER_MAX_TRACE=y
+CONFIG_TRACE_CLOCK=y
+CONFIG_RING_BUFFER=y
+CONFIG_EVENT_TRACING=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+CONFIG_TRACING=y
+CONFIG_GENERIC_TRACER=y
+CONFIG_TRACING_SUPPORT=y
+CONFIG_FTRACE=y
+CONFIG_FUNCTION_TRACER=y
+CONFIG_FUNCTION_GRAPH_TRACER=y
+# CONFIG_PREEMPTIRQ_EVENTS is not set
+# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_PREEMPT_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_HWLAT_TRACER is not set
+CONFIG_FTRACE_SYSCALLS=y
+CONFIG_TRACER_SNAPSHOT=y
+# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+CONFIG_STACK_TRACER=y
+CONFIG_BLK_DEV_IO_TRACE=y
+CONFIG_KPROBE_EVENTS=y
+CONFIG_UPROBE_EVENTS=y
+CONFIG_BPF_EVENTS=y
+CONFIG_PROBE_EVENTS=y
+CONFIG_DYNAMIC_FTRACE=y
+CONFIG_DYNAMIC_FTRACE_WITH_REGS=y
+# CONFIG_FUNCTION_PROFILER is not set
+CONFIG_FTRACE_MCOUNT_RECORD=y
+# CONFIG_FTRACE_STARTUP_TEST is not set
+# CONFIG_TRACEPOINT_BENCHMARK is not set
+# CONFIG_RING_BUFFER_BENCHMARK is not set
+# CONFIG_RING_BUFFER_STARTUP_TEST is not set
+# CONFIG_PREEMPTIRQ_DELAY_TEST is not set
+# CONFIG_TRACE_EVAL_MAP_FILE is not set
+CONFIG_TRACING_EVENTS_GPIO=y
+# CONFIG_DMA_API_DEBUG is not set
+CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_LKDTM is not set
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_TEST_SORT is not set
+# CONFIG_KPROBES_SANITY_TEST is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_RBTREE_TEST is not set
+# CONFIG_INTERVAL_TREE_TEST is not set
+# CONFIG_PERCPU_TEST is not set
+# CONFIG_ATOMIC64_SELFTEST is not set
+# CONFIG_ASYNC_RAID6_TEST is not set
+# CONFIG_TEST_HEXDUMP is not set
+# CONFIG_TEST_STRING_HELPERS is not set
+# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_TEST_PRINTF is not set
+# CONFIG_TEST_BITMAP is not set
+# CONFIG_TEST_BITFIELD is not set
+# CONFIG_TEST_UUID is not set
+# CONFIG_TEST_OVERFLOW is not set
+# CONFIG_TEST_RHASHTABLE is not set
+# CONFIG_TEST_HASH is not set
+# CONFIG_TEST_IDA is not set
+# CONFIG_TEST_LKM is not set
+CONFIG_TEST_USER_COPY=m
+CONFIG_TEST_BPF=m
+# CONFIG_FIND_BIT_BENCHMARK is not set
+CONFIG_TEST_FIRMWARE=m
+# CONFIG_TEST_SYSCTL is not set
+# CONFIG_TEST_UDELAY is not set
+CONFIG_TEST_STATIC_KEYS=m
+# CONFIG_TEST_KMOD is not set
+# CONFIG_MEMTEST is not set
+# CONFIG_BUG_ON_DATA_CORRUPTION is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+CONFIG_KGDB=y
+CONFIG_KGDB_SERIAL_CONSOLE=y
+# CONFIG_KGDB_TESTS is not set
+CONFIG_KGDB_KDB=y
+CONFIG_KDB_DEFAULT_ENABLE=0x1
+CONFIG_KDB_KEYBOARD=y
+CONFIG_KDB_CONTINUE_CATASTROPHIC=0
+# CONFIG_UBSAN is not set
+CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
+# CONFIG_STRICT_DEVMEM is not set
+# CONFIG_ARM_PTDUMP_DEBUGFS is not set
+# CONFIG_DEBUG_WX is not set
+CONFIG_ARM_UNWIND=y
+CONFIG_OLD_MCOUNT=y
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_LL is not set
+CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
+# CONFIG_ARM_KPROBES_TEST is not set
+# CONFIG_PID_IN_CONTEXTIDR is not set
+# CONFIG_CORESIGHT is not set

+ 9 - 8
board/GfA/Display001/Display001_4.4.104_bone23_defconfig → board/GfA/Display001/Display001_4.4.104_defconfig

@@ -1,6 +1,6 @@
 #
 #
 # Automatically generated file; DO NOT EDIT.
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 4.4.145 Kernel Configuration
+# Linux/arm 4.4.104 Kernel Configuration
 #
 #
 CONFIG_ARM=y
 CONFIG_ARM=y
 CONFIG_ARM_HAS_SG_CHAIN=y
 CONFIG_ARM_HAS_SG_CHAIN=y
@@ -36,7 +36,7 @@ CONFIG_BROKEN_ON_SMP=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
 CONFIG_INIT_ENV_ARG_LIMIT=32
 CONFIG_CROSS_COMPILE=""
 CONFIG_CROSS_COMPILE=""
 # CONFIG_COMPILE_TEST is not set
 # CONFIG_COMPILE_TEST is not set
-CONFIG_LOCALVERSION="-bone23"
+CONFIG_LOCALVERSION="-bone-GfA"
 # CONFIG_LOCALVERSION_AUTO is not set
 # CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_HAVE_KERNEL_GZIP=y
 CONFIG_HAVE_KERNEL_GZIP=y
 CONFIG_HAVE_KERNEL_LZMA=y
 CONFIG_HAVE_KERNEL_LZMA=y
@@ -148,7 +148,6 @@ CONFIG_SCHED_AUTOGROUP=y
 # CONFIG_SYSFS_DEPRECATED is not set
 # CONFIG_SYSFS_DEPRECATED is not set
 CONFIG_RELAY=y
 CONFIG_RELAY=y
 # CONFIG_BLK_DEV_INITRD is not set
 # CONFIG_BLK_DEV_INITRD is not set
-CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
 CONFIG_ANON_INODES=y
@@ -207,6 +206,7 @@ CONFIG_ARCH_USE_BUILTIN_BSWAP=y
 CONFIG_KRETPROBES=y
 CONFIG_KRETPROBES=y
 CONFIG_HAVE_KPROBES=y
 CONFIG_HAVE_KPROBES=y
 CONFIG_HAVE_KRETPROBES=y
 CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_OPTPROBES=y
 CONFIG_HAVE_ARCH_TRACEHOOK=y
 CONFIG_HAVE_ARCH_TRACEHOOK=y
 CONFIG_HAVE_DMA_ATTRS=y
 CONFIG_HAVE_DMA_ATTRS=y
 CONFIG_HAVE_DMA_CONTIGUOUS=y
 CONFIG_HAVE_DMA_CONTIGUOUS=y
@@ -502,10 +502,9 @@ CONFIG_HZ_FIXED=0
 CONFIG_HZ_1000=y
 CONFIG_HZ_1000=y
 CONFIG_HZ=1000
 CONFIG_HZ=1000
 CONFIG_SCHED_HRTICK=y
 CONFIG_SCHED_HRTICK=y
-CONFIG_THUMB2_KERNEL=y
-CONFIG_THUMB2_AVOID_R_ARM_THM_JUMP11=y
-CONFIG_ARM_ASM_UNIFIED=y
+# CONFIG_THUMB2_KERNEL is not set
 CONFIG_AEABI=y
 CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
 CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
 CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
 # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
 # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
 # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
 # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
@@ -1426,7 +1425,6 @@ CONFIG_NFC_MICROREAD_I2C=m
 # CONFIG_NFC_NXP_NCI is not set
 # CONFIG_NFC_NXP_NCI is not set
 # CONFIG_NFC_S3FWRN5_I2C is not set
 # CONFIG_NFC_S3FWRN5_I2C is not set
 CONFIG_LWTUNNEL=y
 CONFIG_LWTUNNEL=y
-CONFIG_DST_CACHE=y
 CONFIG_HAVE_BPF_JIT=y
 CONFIG_HAVE_BPF_JIT=y
 
 
 #
 #
@@ -2047,7 +2045,6 @@ CONFIG_USB_NET_NET1080=m
 CONFIG_USB_NET_PLUSB=m
 CONFIG_USB_NET_PLUSB=m
 CONFIG_USB_NET_MCS7830=m
 CONFIG_USB_NET_MCS7830=m
 CONFIG_USB_NET_RNDIS_HOST=m
 CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET_ENABLE=m
 CONFIG_USB_NET_CDC_SUBSET=m
 CONFIG_USB_NET_CDC_SUBSET=m
 CONFIG_USB_ALI_M5632=y
 CONFIG_USB_ALI_M5632=y
 CONFIG_USB_AN2720=y
 CONFIG_USB_AN2720=y
@@ -5393,6 +5390,7 @@ CONFIG_DEBUG_FS=y
 # CONFIG_HEADERS_CHECK is not set
 # CONFIG_HEADERS_CHECK is not set
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
 CONFIG_SECTION_MISMATCH_WARN_ONLY=y
 CONFIG_SECTION_MISMATCH_WARN_ONLY=y
+CONFIG_FRAME_POINTER=y
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6
 CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x01b6
@@ -5475,6 +5473,7 @@ CONFIG_PM_NOTIFIER_ERROR_INJECT=m
 # CONFIG_LATENCYTOP is not set
 # CONFIG_LATENCYTOP is not set
 CONFIG_NOP_TRACER=y
 CONFIG_NOP_TRACER=y
 CONFIG_HAVE_FUNCTION_TRACER=y
 CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
 CONFIG_HAVE_DYNAMIC_FTRACE=y
 CONFIG_HAVE_DYNAMIC_FTRACE=y
 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
 CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
 CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
 CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
@@ -5489,6 +5488,7 @@ CONFIG_GENERIC_TRACER=y
 CONFIG_TRACING_SUPPORT=y
 CONFIG_TRACING_SUPPORT=y
 CONFIG_FTRACE=y
 CONFIG_FTRACE=y
 CONFIG_FUNCTION_TRACER=y
 CONFIG_FUNCTION_TRACER=y
+CONFIG_FUNCTION_GRAPH_TRACER=y
 # CONFIG_IRQSOFF_TRACER is not set
 # CONFIG_IRQSOFF_TRACER is not set
 # CONFIG_PREEMPT_TRACER is not set
 # CONFIG_PREEMPT_TRACER is not set
 # CONFIG_SCHED_TRACER is not set
 # CONFIG_SCHED_TRACER is not set
@@ -5552,6 +5552,7 @@ CONFIG_KDB_CONTINUE_CATASTROPHIC=0
 # CONFIG_ARM_PTDUMP is not set
 # CONFIG_ARM_PTDUMP is not set
 # CONFIG_STRICT_DEVMEM is not set
 # CONFIG_STRICT_DEVMEM is not set
 CONFIG_ARM_UNWIND=y
 CONFIG_ARM_UNWIND=y
+CONFIG_OLD_MCOUNT=y
 # CONFIG_DEBUG_USER is not set
 # CONFIG_DEBUG_USER is not set
 # CONFIG_DEBUG_LL is not set
 # CONFIG_DEBUG_LL is not set
 CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
 CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"

+ 0 - 2967
board/GfA/Display001/linux_4.4.145_bone23/linux-001-Bootlogo-GfA.patch

@@ -1,2967 +0,0 @@
-diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c
-index 6e92917..1302223 100644
---- a/drivers/video/console/fbcon.c
-+++ b/drivers/video/console/fbcon.c
-@@ -580,6 +580,7 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
- 	if (fb_get_color_depth(&info->var, &info->fix) == 1)
- 		erase &= ~0x400;
- 	logo_height = fb_prepare_logo(info, ops->rotate);
-+	logo_height += 5;
- 	logo_lines = DIV_ROUND_UP(logo_height, vc->vc_font.height);
- 	q = (unsigned short *) (vc->vc_origin +
- 				vc->vc_size_row * rows);
-diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
-index 0705d88..6a60d1ef 100644
---- a/drivers/video/fbdev/core/fbmem.c
-+++ b/drivers/video/fbdev/core/fbmem.c
-@@ -498,8 +498,8 @@ static int fb_show_logo_line(struct fb_info *info, int rotate,
- 		fb_set_logo(info, logo, logo_new, fb_logo.depth);
- 	}
- 
--	image.dx = 0;
--	image.dy = y;
-+	image.dx = 0 + 5;
-+	image.dy = y + 5;
- 	image.width = logo->width;
- 	image.height = logo->height;
- 
-diff --git a/drivers/video/logo/Kconfig b/drivers/video/logo/Kconfig
-index 0037104..fa2c4b9 100644
---- a/drivers/video/logo/Kconfig
-+++ b/drivers/video/logo/Kconfig
-@@ -15,6 +15,10 @@ config FB_LOGO_EXTRA
- 	depends on FB=y
- 	default y if SPU_BASE
- 
-+config FB_LOGO_CUSTOM
-+	bool "Custom Linux Logo"
-+	default n
-+
- config LOGO_LINUX_MONO
- 	bool "Standard black and white Linux logo"
- 	default y
-diff --git a/drivers/video/logo/Makefile b/drivers/video/logo/Makefile
-index 3b43781..e31313d 100644
---- a/drivers/video/logo/Makefile
-+++ b/drivers/video/logo/Makefile
-@@ -15,6 +15,7 @@ obj-$(CONFIG_LOGO_SUPERH_MONO)		+= logo_superh_mono.o
- obj-$(CONFIG_LOGO_SUPERH_VGA16)		+= logo_superh_vga16.o
- obj-$(CONFIG_LOGO_SUPERH_CLUT224)	+= logo_superh_clut224.o
- obj-$(CONFIG_LOGO_M32R_CLUT224)		+= logo_m32r_clut224.o
-+obj-$(CONFIG_FB_LOGO_CUSTOM)		+= logo_custom_clut224.o
- 
- obj-$(CONFIG_SPU_BASE)			+= logo_spe_clut224.o
- 
-diff --git a/drivers/video/logo/logo.c b/drivers/video/logo/logo.c
-index 10fbfd8..2c8dfc6 100644
---- a/drivers/video/logo/logo.c
-+++ b/drivers/video/logo/logo.c
-@@ -42,6 +42,8 @@ late_initcall(fb_logo_late_init);
-  */
- const struct linux_logo * __init_refok fb_find_logo(int depth)
- {
-+	extern const struct linux_logo logo_custom_clut224;
-+	
- 	const struct linux_logo *logo = NULL;
- 
- 	if (nologo || logos_freed)
-@@ -111,6 +113,10 @@ const struct linux_logo * __init_refok fb_find_logo(int depth)
- 		/* M32R Linux logo */
- 		logo = &logo_m32r_clut224;
- #endif
-+#ifdef CONFIG_FB_LOGO_CUSTOM
-+		/* Custom Linux logo */
-+		logo = &logo_custom_clut224;
-+#endif
- 	}
- 	return logo;
- }
-diff --git a/drivers/video/logo/logo_custom_clut224.ppm b/drivers/video/logo/logo_custom_clut224.ppm
-new file mode 100644
-index 0000000..f46e5de
---- /dev/null
-+++ b/drivers/video/logo/logo_custom_clut224.ppm
-@@ -0,0 +1,2883 @@
-+P3
-+179 96
-+255
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  24 24 24  24 24 24  39 39 39
-+57 57 57  72 72 72  87 87 87  87 87 87  87 87 87  87 87 87
-+87 87 87  87 87 87  87 87 87  72 72 72  72 72 72  57 57 57
-+39 39 39  24 24 24  24 24 24  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 55 55  0 72 72
-+0 88 88  0 103 103  0 122 122  0 128 128  0 128 128  0 122 122
-+0 103 103  0 103 103  0 72 72  0 40 40  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  24 24 24
-+39 39 39  72 72 72  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  72 72 72  39 39 39
-+24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 55 55  0 103 103  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 103 103
-+0 40 40  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  39 39 39  72 72 72  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  72 72 72  24 24 24  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 72 72
-+0 122 122  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 122 122  0 55 55  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  24 24 24
-+57 57 57  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  57 57 57
-+24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 40 40  0 103 103  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 122 122  0 103 103  0 40 40  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  39 39 39  72 72 72  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  72 72 72  24 24 24  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 72 72  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 72 72
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  24 24 24  87 87 87  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  87 87 87  24 24 24  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 103 103  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 88 88  0 21 21  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  24 24 24
-+72 72 72  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  72 72 72
-+24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 21 21
-+0 103 103  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 103 103  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  57 57 57  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+72 72 72  0 0 0  0 0 0  0 0 0  0 0 0  0 103 103
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 103 103  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 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  24 24 24  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
-+0 0 0  0 0 0  0 0 0  0 0 0  0 88 88  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 72 72  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  57 57 57  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  24 24 24
-+0 0 0  0 0 0  0 0 0  0 55 55  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 55 55  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+72 72 72  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  39 39 39  0 0 0
-+0 0 0  0 0 0  0 21 21  0 122 122  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 122 122  0 21 21
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  57 57 57  0 0 0  0 0 0
-+0 0 0  0 21 21  0 122 122  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 122 122
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 103 103
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  24 24 24  87 87 87  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
-+72 72 72  57 57 57  39 39 39  39 39 39  39 39 39  24 24 24
-+39 39 39  39 39 39  39 39 39  39 39 39  57 57 57  72 72 72
-+87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  72 72 72  0 0 0  0 0 0  0 0 0
-+0 0 0  0 103 103  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 122 122
-+0 88 88  0 55 55  0 21 21  0 21 21  0 21 21  0 40 40
-+0 55 55  0 88 88  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 21 21  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  24 24 24  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  87 87 87  57 57 57  39 39 39  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  39 39 39  57 57 57  87 87 87  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  24 24 24  0 0 0  0 0 0  0 0 0
-+0 72 72  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 72 72  0 21 21
-+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 21 21  0 88 88  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 55 55
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  24 24 24  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  87 87 87  57 57 57
-+24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  24 24 24
-+39 39 39  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  39 39 39  0 0 0  0 0 0  0 0 0  0 40 40
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 122 122  0 40 40  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 55 55  0 122 122
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 88 88  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+24 24 24  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  72 72 72  39 39 39  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  39 39 39  72 72 72  105 105 105  105 105 105
-+57 57 57  0 0 0  0 0 0  0 0 0  0 21 21  0 122 122
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 122 122  0 21 21  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 55 55
-+0 122 122  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 103 103  0 0 0  0 0 0
-+0 0 0  0 0 0  72 72 72  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  24 24 24
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+87 87 87  24 24 24  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  57 57 57
-+0 0 0  0 0 0  0 0 0  0 0 0  0 103 103  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 55 55  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 55 55  0 122 122  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 122 122  0 21 21  0 0 0  0 0 0
-+0 0 0  57 57 57  105 105 105  72 72 72  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  87 87 87
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  39 39 39
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 88 88  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 88 88  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 88 88  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 40 40  0 0 0  0 0 0  0 0 0
-+39 39 39  105 105 105  105 105 105  105 105 105  57 57 57  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  87 87 87  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  72 72 72  0 21 21  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 55 55  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 103 103
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 21 21  0 103 103  0 128 128  0 128 128  0 128 128
-+0 128 128  0 72 72  0 0 0  0 0 0  0 0 0  0 21 21
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  39 39 39
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  57 57 57  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  57 57 57  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 21 21  0 122 122  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 122 122  0 21 21
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 21 21  0 128 128  0 128 128  0 122 122
-+0 103 103  0 0 0  0 0 0  0 0 0  0 0 0  87 87 87
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  39 39 39  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  24 24 24  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 122 122  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 40 40  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 55 55  0 128 128  0 122 122
-+0 0 0  0 0 0  0 0 0  0 0 0  72 72 72  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+87 87 87  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  87 87 87  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
-+0 21 21  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 88 88  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 72 72  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 72 72  0 21 21
-+0 0 0  0 0 0  0 0 0  39 39 39  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  72 72 72  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  72 72 72  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  87 87 87  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 72 72
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 103 103  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  24 24 24  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  39 39 39  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+24 24 24  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  87 87 87  24 24 24  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 40 40  0 122 122
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 122 122  0 122 122  0 21 21  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  87 87 87  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  24 24 24  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  87 87 87  24 24 24  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 21 21  0 103 103  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 40 40  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  72 72 72  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  87 87 87  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  39 39 39
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  24 24 24  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 103 103  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 55 55  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  57 57 57  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  87 87 87  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  87 87 87
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  39 39 39  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 72 72  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 88 88
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  87 87 87  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  57 57 57
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  39 39 39  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+72 72 72  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 40 40  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 21 21
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  87 87 87  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 21 21  0 122 122  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 122 122  0 21 21  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  39 39 39  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+87 87 87  24 24 24  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  24 24 24  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  39 39 39
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 103 103  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 55 55  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  57 57 57  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  72 72 72  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  72 72 72  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  87 87 87  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 88 88
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 88 88  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  72 72 72
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  57 57 57  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  24 24 24  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 55 55  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 103 103  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  39 39 39  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  39 39 39  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  87 87 87  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 21 21  0 122 122  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 122 122  0 21 21  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+24 24 24  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  87 87 87  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  24 24 24  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 122 122  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 40 40  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  39 39 39  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  87 87 87  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  87 87 87  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 103 103  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 72 72
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  72 72 72  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  72 72 72
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 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  24 24 24  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  39 39 39  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 72 72  0 122 122  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  87 87 87  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+39 39 39  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  72 72 72  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 40 40  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 122 122  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  24 24 24  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  24 24 24  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  87 87 87  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  87 87 87  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 21 21
-+0 122 122  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 122 122  0 40 40  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 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  24 24 24  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  39 39 39  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 103 103
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 55 55  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  57 57 57
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  72 72 72  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+24 24 24  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  24 24 24  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 72 72  0 122 122
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 88 88  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  57 57 57  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+39 39 39  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 55 55  0 122 122  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 103 103  0 21 21  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  24 24 24  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+57 57 57  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+87 87 87  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 21 21  0 122 122  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 122 122
-+0 21 21  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  24 24 24  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  24 24 24
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+72 72 72  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+57 57 57  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 103 103  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 55 55
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  39 39 39  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  72 72 72
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+39 39 39  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 88 88  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 72 72  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  72 72 72  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+57 57 57  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+39 39 39  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 55 55  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 103 103  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  87 87 87  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  39 39 39  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 21 21
-+0 122 122  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 122 122  0 21 21  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  24 24 24  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 21 21  0 103 103
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 40 40  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  39 39 39
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  87 87 87  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 103 103  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 72 72  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+57 57 57  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  72 72 72  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 72 72  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 122 122
-+0 103 103  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  87 87 87  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  39 39 39  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 40 40  0 122 122  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 122 122
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  24 24 24  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  24 24 24
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 21 21  0 122 122  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 122 122  0 40 40
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  24 24 24  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 103 103  0 122 122  0 122 122  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 55 55  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  57 57 57  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+87 87 87  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+39 39 39  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 72 72  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 122 122  0 122 122
-+0 122 122  0 122 122  0 122 122  0 122 122  0 122 122  0 122 122
-+0 122 122  0 122 122  0 122 122  0 122 122  0 122 122  0 122 122
-+0 122 122  0 122 122  0 122 122  0 122 122  0 122 122  0 122 122
-+0 122 122  0 122 122  0 122 122  0 122 122  0 122 122  0 122 122
-+0 122 122  0 122 122  0 122 122  0 122 122  0 122 122  0 122 122
-+0 122 122  0 122 122  0 122 122  0 122 122  0 122 122  0 122 122
-+0 122 122  0 122 122  0 122 122  0 122 122  0 122 122  0 122 122
-+0 122 122  0 122 122  0 122 122  0 122 122  0 103 103  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  72 72 72  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  39 39 39  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+72 72 72  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+57 57 57  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 55 55
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 122 122  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 122 122  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 122 122  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  87 87 87
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  39 39 39  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+57 57 57  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+87 87 87  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 21 21  0 122 122
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  24 24 24
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+39 39 39  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 103 103  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 122 122  0 103 103  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+39 39 39  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  87 87 87  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+24 24 24  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  24 24 24  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 88 88  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  72 72 72  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  57 57 57  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 21 21  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  39 39 39  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 55 55  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  87 87 87  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  39 39 39
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  87 87 87  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  72 72 72  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 40 40  0 122 122  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  24 24 24  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  72 72 72  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  0 21 21  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 122 122  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 122 122  0 103 103  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  39 39 39  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+87 87 87  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  39 39 39  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  39 39 39  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 103 103  0 122 122  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  72 72 72  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  72 72 72  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  72 72 72  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 72 72
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  87 87 87
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  39 39 39  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  87 87 87  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  24 24 24  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 40 40  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  24 24 24  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  57 57 57  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  72 72 72  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 21 21  0 122 122  0 122 122
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 122 122  0 103 103  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+24 24 24  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  24 24 24  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 103 103  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 55 55  0 21 21  0 21 21  0 21 21  0 21 21  0 21 21
-+0 21 21  0 21 21  0 21 21  0 21 21  0 21 21  0 21 21
-+0 21 21  0 21 21  0 21 21  0 21 21  0 21 21  0 21 21
-+0 21 21  0 21 21  0 21 21  0 21 21  0 21 21  0 21 21
-+0 21 21  0 21 21  0 21 21  0 21 21  0 21 21  0 21 21
-+0 21 21  0 21 21  0 21 21  0 21 21  0 21 21  0 21 21
-+0 21 21  0 21 21  0 21 21  0 21 21  0 21 21  0 21 21
-+0 21 21  0 21 21  0 21 21  0 21 21  0 21 21  0 21 21
-+0 21 21  0 21 21  0 21 21  0 21 21  0 21 21  0 21 21
-+0 21 21  0 21 21  0 21 21  0 21 21  0 21 21  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  57 57 57  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  87 87 87  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  72 72 72  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  72 72 72  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 88 88  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 88 88
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  72 72 72  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  57 57 57
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  39 39 39  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  24 24 24
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 55 55  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 21 21  0 122 122  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 21 21  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+39 39 39  39 39 39  39 39 39  39 39 39  39 39 39  39 39 39
-+39 39 39  39 39 39  39 39 39  39 39 39  39 39 39  39 39 39
-+39 39 39  39 39 39  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  24 24 24  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  24 24 24  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  39 39 39  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+57 57 57  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 21 21
-+0 103 103  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 55 55  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  57 57 57
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  39 39 39  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  39 39 39  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  87 87 87  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  39 39 39  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 88 88
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 72 72  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  39 39 39  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+87 87 87  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  72 72 72
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  57 57 57  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  39 39 39
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  24 24 24  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 55 55  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 122 122
-+0 128 128  0 103 103  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  24 24 24  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+39 39 39  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  39 39 39  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  87 87 87  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 40 40  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 122 122
-+0 122 122  0 21 21  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  87 87 87  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+24 24 24  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  24 24 24  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+39 39 39  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  72 72 72  0 0 0  0 0 0
-+0 0 0  0 0 0  0 21 21  0 122 122  0 122 122  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 122 122
-+0 40 40  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  87 87 87  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  24 24 24
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  39 39 39  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  72 72 72  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  87 87 87  0 0 0
-+0 0 0  0 0 0  0 103 103  0 122 122  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 122 122  0 72 72
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  87 87 87  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  72 72 72  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  57 57 57  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  72 72 72
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
-+0 0 0  0 72 72  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  87 87 87  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+39 39 39  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  39 39 39  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 103 103  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  87 87 87
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  39 39 39  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  24 24 24  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  72 72 72  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  36 120 120  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 40 40  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  39 39 39  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  72 72 72  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  87 87 87  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  87 87 87  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  61 115 115  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 55 55  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  57 57 57  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  87 87 87  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  57 57 57
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  87 87 87  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  87 109 109  24 123 123
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 88 88  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+39 39 39  87 87 87  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+72 72 72  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  57 57 57  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  24 24 24
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+87 109 109  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 103 103  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  72 72 72
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  24 24 24  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+39 39 39  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  69 113 113  0 128 128  0 128 128  0 122 122
-+0 21 21  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  24 24 24  72 72 72  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  39 39 39
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  24 24 24  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  24 24 24
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  39 39 39  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  87 109 109  38 67 67
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+39 39 39  87 87 87  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  39 39 39  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  39 39 39  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  39 39 39  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  72 72 72  39 39 39  24 24 24  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  24 24 24  39 39 39  72 72 72  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  39 39 39  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  72 72 72  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+57 57 57  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  39 39 39  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  72 72 72
-+57 57 57  39 39 39  24 24 24  24 24 24  24 24 24  24 24 24
-+0 0 0  24 24 24  24 24 24  39 39 39  39 39 39  57 57 57
-+87 87 87  87 87 87  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  39 39 39  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  87 87 87  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  39 39 39  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  24 24 24  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  24 24 24  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  24 123 123
-+87 109 109  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  39 39 39
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  87 87 87  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 103 103  0 128 128
-+0 128 128  69 113 113  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  72 72 72  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+57 57 57  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  72 72 72  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 72 72  0 128 128  0 128 128
-+0 128 128  0 128 128  36 120 120  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  87 87 87  39 39 39  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  72 72 72  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  57 57 57  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 40 40  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  69 113 113  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  72 72 72  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  24 24 24
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 21 21  0 122 122  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  36 120 120
-+87 109 109  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
-+24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  24 24 24  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 103 103  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  36 120 120  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  39 39 39  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 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  57 57 57  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+87 87 87  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 88 88  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 122 122  43 92 92  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  87 87 87  39 39 39  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  72 72 72  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  57 57 57  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 55 55
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 103 103  0 0 0  0 0 0  39 39 39
-+72 72 72  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  72 72 72
-+39 39 39  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  87 87 87
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  39 39 39  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 40 40  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 122 122  0 21 21  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  39 39 39  87 87 87  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  87 87 87  39 39 39  24 24 24  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  24 24 24
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  87 87 87  24 24 24  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 103 103  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 122 122  0 55 55  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  39 39 39
-+72 72 72  87 87 87  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  57 57 57
-+39 39 39  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+39 39 39  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  87 87 87  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 103 103  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
-+0 72 72  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 21 21  24 24 24  39 39 39  57 57 57
-+72 72 72  87 87 87  87 87 87  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  87 87 87  87 87 87  72 72 72
-+72 72 72  39 39 39  24 24 24  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
-+0 0 0  72 72 72  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
-+105 105 105  105 105 105  105 105 105  105 105 105  72 72 72

+ 0 - 17
board/GfA/Display001/linux_4.4.145_bone23/linux-002-disa_pru_no_cild_msg.patch

@@ -1,17 +0,0 @@
-diff --git a/drivers/uio/uio_pruss.c b/drivers/uio/uio_pruss.c
-index 6559752..9e263b5 100644
---- a/drivers/uio/uio_pruss.c
-+++ b/drivers/uio/uio_pruss.c
-@@ -195,10 +195,10 @@ static int pruss_probe(struct platform_device *pdev)
- 			"pins are not configured from the driver\n");
- 	else{
- 		count = of_get_child_count(pdev->dev.of_node);
--		if (!count){
-+/*		if (!count){
- 			dev_info(&pdev->dev, "No children\n");
- 			return -ENODEV;
--		}
-+		}*/
- 		// Run through all children. They have lables for easy reference.
- 		for_each_child_of_node(pdev->dev.of_node, child){
- 			enum of_gpio_flags flags;

+ 0 - 1015
board/GfA/Display001/linux_4.4.145_bone23/linux-004-egalax_i2c_touchcontroller.patch

@@ -1,1015 +0,0 @@
-From a12a55f6571c5992f5a88e8bbbaabf442c0be88c Mon Sep 17 00:00:00 2001
-From: Reinhard Russinger <reinhard@russinger.at>
-Date: Wed, 3 May 2017 08:25:31 +0200
-Subject: [PATCH 1/1] add egalax i2c touchcontroller driver
-
----
- drivers/input/touchscreen/Kconfig      |  10 +
- drivers/input/touchscreen/Makefile     |   1 +
- drivers/input/touchscreen/egalax_i2c.c | 961 +++++++++++++++++++++++++++++++++
- 3 files changed, 972 insertions(+)
- create mode 100644 drivers/input/touchscreen/egalax_i2c.c
-
-diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
-index 2fb1f43..01f4776 100644
---- a/drivers/input/touchscreen/Kconfig
-+++ b/drivers/input/touchscreen/Kconfig
-@@ -318,6 +318,16 @@ config TOUCHSCREEN_FT6236
- 	  To compile this driver as a module, choose M here: the
- 	  module will be called ft6236.
- 
-+config TOUCHSCREEN_EGALAX_I2C
-+	tristate "EETI eGalax (egalax_i2c) multi-touch panel support for i2C"
-+	depends on I2C && OF
-+	help
-+	  Say Y here to enable support for I2C connected EETI
-+	  eGalax multi-touch panels.
-+
-+	  To compile this driver as a module, choose M here: the
-+	  module will be called egalax_i2c.
-+
- config TOUCHSCREEN_FUJITSU
- 	tristate "Fujitsu serial touchscreen"
- 	select SERIO
-diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
-index b4373d6..67ed603 100644
---- a/drivers/input/touchscreen/Makefile
-+++ b/drivers/input/touchscreen/Makefile
-@@ -34,6 +34,7 @@ obj-$(CONFIG_TOUCHSCREEN_GUNZE)		+= gunze.o
- obj-$(CONFIG_TOUCHSCREEN_EETI)		+= eeti_ts.o
- obj-$(CONFIG_TOUCHSCREEN_ELAN)		+= elants_i2c.o
- obj-$(CONFIG_TOUCHSCREEN_ELO)		+= elo.o
-+obj-$(CONFIG_TOUCHSCREEN_EGALAX_I2C)	+= egalax_i2c.o
- obj-$(CONFIG_TOUCHSCREEN_EGALAX)	+= egalax_ts.o
- obj-$(CONFIG_TOUCHSCREEN_EGALAX_SERIAL)	+= egalax_ts_serial.o
- obj-$(CONFIG_TOUCHSCREEN_FT6236)	+= ft6236.o
-diff --git a/drivers/input/touchscreen/egalax_i2c.c b/drivers/input/touchscreen/egalax_i2c.c
-new file mode 100644
-index 0000000..9ee5566
---- /dev/null
-+++ b/drivers/input/touchscreen/egalax_i2c.c
-@@ -0,0 +1,961 @@
-+/*
-+ *
-+ * Touch Screen I2C Driver for EETI Controller
-+ *
-+ * Copyright (C) 2000-2015  eGalax_eMPIA Technology Inc.
-+ * All Rights Reserved.
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ */
-+
-+#define RELEASE_DATE "2015/04/23"
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/interrupt.h>
-+#include <linux/wait.h>
-+#include <linux/delay.h>
-+#include <linux/i2c.h>
-+#include <linux/gpio.h>
-+#include <linux/device.h>
-+#include <asm/uaccess.h>
-+#include <linux/kfifo.h>
-+#include <linux/version.h>
-+#include <linux/input.h>
-+#include <linux/irq.h>
-+#include <linux/timer.h>
-+#include <linux/proc_fs.h>
-+#include <linux/seq_file.h>
-+#include <linux/miscdevice.h>
-+#include <linux/slab.h>
-+#include <linux/poll.h>
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)
-+#include <linux/input/mt.h>
-+#endif
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)
-+#include <linux/of_gpio.h>
-+#endif
-+
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)
-+	#define __devinit 
-+	#define __devexit 
-+	#define __devexit_p(x) x
-+#endif
-+
-+#ifdef CONFIG_HAS_EARLYSUSPEND
-+	#include <linux/earlysuspend.h>
-+	static struct early_suspend egalax_early_suspend;
-+#endif
-+
-+// Global define to enable function
-+//#define _SWITCH_XY
-+//#define _CONVERT_Y
-+
-+#define MAX_EVENTS		600
-+#define MAX_I2C_LEN		64
-+#define FIFO_SIZE		8192 //(PAGE_SIZE*2)
-+#define MAX_SUPPORT_POINT	16
-+#define REPORTID_MOUSE		0x01
-+#define REPORTID_VENDOR		0x03
-+#define REPORTID_MTOUCH		0x06//0x04
-+#define MAX_RESOLUTION		4095
-+
-+// running mode
-+#define MODE_STOP	0
-+#define MODE_WORKING	1
-+#define MODE_IDLE	2
-+#define MODE_SUSPEND	3
-+
-+struct tagMTContacts {
-+	unsigned char ID;
-+	signed char Status;
-+	unsigned short X;
-+	unsigned short Y;
-+};
-+
-+struct _egalax_i2c {
-+	struct workqueue_struct *ktouch_wq;
-+	struct work_struct work_irq;
-+	struct delayed_work delay_work_ioctl;
-+	struct mutex mutex_wq;
-+	struct i2c_client *client;
-+	unsigned char work_state;
-+	unsigned char skip_packet;
-+	unsigned int ioctl_cmd;
-+	int interrupt_gpio;
-+};
-+
-+struct egalax_char_dev
-+{
-+	int OpenCnts;
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
-+	struct kfifo* pDataKFiFo;
-+#else
-+	struct kfifo DataKFiFo;
-+#endif
-+	unsigned char *pFiFoBuf;
-+	spinlock_t FiFoLock;
-+	struct semaphore sem;
-+	wait_queue_head_t fifo_inq;
-+};
-+
-+static struct _egalax_i2c *p_egalax_i2c_dev = NULL;	// allocated in egalax_i2c_probe
-+static struct egalax_char_dev *p_char_dev = NULL;	// allocated in init_module
-+static atomic_t egalax_char_available = ATOMIC_INIT(1);
-+static atomic_t wait_command_ack = ATOMIC_INIT(0);
-+static struct input_dev *input_dev = NULL;
-+static struct tagMTContacts pContactBuf[MAX_SUPPORT_POINT];
-+static unsigned char input_report_buf[MAX_I2C_LEN+2];
-+
-+#define DBG_MODULE	0x00000001
-+#define DBG_CDEV	0x00000002
-+#define DBG_PROC	0x00000004
-+#define DBG_POINT	0x00000008
-+#define DBG_INT		0x00000010
-+#define DBG_I2C		0x00000020
-+#define DBG_SUSP	0x00000040
-+#define DBG_INPUT	0x00000080
-+#define DBG_CONST	0x00000100
-+#define DBG_IDLE	0x00000200
-+#define DBG_WAKEUP	0x00000400
-+#define DBG_BUTTON	0x00000800
-+static unsigned int DbgLevel = DBG_MODULE|DBG_SUSP;
-+
-+#define PROC_FS_NAME	"egalax_dbg"
-+#define PROC_FS_MAX_LEN	8
-+static struct proc_dir_entry *dbgProcFile;
-+
-+#define EGALAX_DBG(level, fmt, args...)  do{ if( (level&DbgLevel)>0 ) \
-+					printk( KERN_DEBUG "[egalax_i2c]: " fmt, ## args); }while(0)
-+
-+static int egalax_I2C_read(unsigned char *pBuf, unsigned short len)
-+{
-+	struct i2c_msg xfer;
-+	unsigned char cmdbuf[2]={0x27, 0x00};
-+
-+	if(pBuf==NULL)
-+		return -1;
-+
-+	// Write register first
-+	xfer.addr = p_egalax_i2c_dev->client->addr;
-+	xfer.flags = 0;
-+	xfer.len = 2;
-+	xfer.buf = cmdbuf;
-+	i2c_transfer(p_egalax_i2c_dev->client->adapter, &xfer, 1);
-+
-+	// Read device data
-+	xfer.addr = p_egalax_i2c_dev->client->addr;
-+	xfer.flags = I2C_M_RD;
-+	xfer.len = len;
-+	xfer.buf = pBuf;
-+
-+	if(i2c_transfer(p_egalax_i2c_dev->client->adapter, &xfer, 1) != 1) 
-+	{
-+		EGALAX_DBG(DBG_I2C, " %s: i2c transfer fail\n", __func__);
-+		return -EIO;
-+	}
-+	else
-+		EGALAX_DBG(DBG_I2C, " %s: i2c transfer success\n", __func__);
-+
-+	return 0;
-+}
-+
-+static int egalax_I2C_write(unsigned short reg, unsigned char *pBuf, unsigned short len)
-+{
-+	unsigned char cmdbuf[4+len];
-+	struct i2c_msg xfer;
-+
-+	if(pBuf==NULL)
-+		return -1;
-+
-+	cmdbuf[0] = reg & 0x00FF;
-+	cmdbuf[1] = (reg >> 8) & 0x00FF;
-+	cmdbuf[2] = (len+2) & 0x00FF;
-+	cmdbuf[3] = ((len+2) >> 8) & 0x00FF;
-+	memcpy(cmdbuf+4, pBuf, len);
-+
-+	// Write data to device
-+	xfer.addr = p_egalax_i2c_dev->client->addr;
-+	xfer.flags = 0;
-+	xfer.len = sizeof(cmdbuf);
-+	xfer.buf = cmdbuf;
-+
-+	if(i2c_transfer(p_egalax_i2c_dev->client->adapter, &xfer, 1) != 1) 
-+	{
-+		EGALAX_DBG(DBG_I2C, " %s: i2c transfer fail\n", __func__);
-+		return -EIO;
-+	}
-+	else
-+		EGALAX_DBG(DBG_I2C, " %s: i2c transfer success\n", __func__);
-+
-+	return 0;
-+}
-+
-+static int egalax_cdev_open(struct inode *inode, struct file *filp)
-+{
-+	if( !atomic_dec_and_test(&egalax_char_available) )
-+	{
-+		atomic_inc(&egalax_char_available);
-+		return -EBUSY; // already open
-+	}
-+
-+	p_char_dev->OpenCnts++;
-+	filp->private_data = p_char_dev;// Used by the read and write metheds
-+
-+	EGALAX_DBG(DBG_CDEV, " CDev open done!\n");
-+	try_module_get(THIS_MODULE);
-+	return 0;
-+}
-+
-+static int egalax_cdev_release(struct inode *inode, struct file *filp)
-+{
-+	struct egalax_char_dev *cdev = filp->private_data;
-+
-+	atomic_inc(&egalax_char_available); // release the device
-+
-+	cdev->OpenCnts--;
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
-+	kfifo_reset( cdev->pDataKFiFo );
-+#else
-+	kfifo_reset( &cdev->DataKFiFo );
-+#endif
-+
-+	EGALAX_DBG(DBG_CDEV, " CDev release done!\n");
-+	module_put(THIS_MODULE);
-+	return 0;
-+}
-+
-+static char fifo_read_buf[MAX_I2C_LEN];
-+static ssize_t egalax_cdev_read(struct file *file, char __user *buf, size_t count, loff_t *offset)
-+{
-+	int read_cnt, ret, fifoLen;
-+	struct egalax_char_dev *cdev = file->private_data;
-+	
-+	if( down_interruptible(&cdev->sem) )
-+		return -ERESTARTSYS;
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
-+	fifoLen = kfifo_len(cdev->pDataKFiFo);
-+#else
-+	fifoLen = kfifo_len(&cdev->DataKFiFo);
-+#endif
-+
-+	while( fifoLen<1 ) // nothing to read
-+	{
-+		up(&cdev->sem); // release the lock
-+		if( file->f_flags & O_NONBLOCK )
-+			return -EAGAIN;
-+
-+	#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
-+		if( wait_event_interruptible(cdev->fifo_inq, kfifo_len( cdev->pDataKFiFo )>0) )
-+	#else
-+		if( wait_event_interruptible(cdev->fifo_inq, kfifo_len( &cdev->DataKFiFo )>0) )
-+	#endif
-+		{
-+			return -ERESTARTSYS; // signal: tell the fs layer to handle it
-+		}
-+
-+		if( down_interruptible(&cdev->sem) )
-+			return -ERESTARTSYS;
-+	}
-+
-+	if(count > MAX_I2C_LEN)
-+		count = MAX_I2C_LEN;
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
-+	read_cnt = kfifo_get(cdev->pDataKFiFo, fifo_read_buf, count);
-+#else
-+	read_cnt = kfifo_out_locked(&cdev->DataKFiFo, fifo_read_buf, count, &cdev->FiFoLock);
-+#endif
-+	EGALAX_DBG(DBG_CDEV, " \"%s\" reading fifo data count=%d\n", current->comm, read_cnt);
-+
-+	ret = copy_to_user(buf, fifo_read_buf, read_cnt)?-EFAULT:read_cnt;
-+
-+	up(&cdev->sem);
-+	
-+	return ret;
-+}
-+
-+static ssize_t egalax_cdev_write(struct file *file, const char __user *buf, size_t count, loff_t *offset)
-+{
-+	struct egalax_char_dev *cdev = file->private_data;
-+	int ret=0;
-+	char *tmp;
-+
-+	if( down_interruptible(&cdev->sem) )
-+		return -ERESTARTSYS;
-+
-+	if (count > MAX_I2C_LEN)
-+		count = MAX_I2C_LEN;
-+
-+	tmp = kzalloc(MAX_I2C_LEN, GFP_KERNEL);
-+	if(tmp==NULL)
-+	{
-+		up(&cdev->sem);
-+		return -ENOMEM;
-+	}
-+
-+	if(copy_from_user(tmp, buf, count))
-+	{
-+		up(&cdev->sem);
-+		kfree(tmp);
-+		return -EFAULT;
-+	}
-+	
-+	ret = egalax_I2C_write(0x0067, tmp, MAX_I2C_LEN);
-+
-+	up(&cdev->sem);
-+	EGALAX_DBG(DBG_CDEV, " I2C writing %zu bytes.\n", count);
-+	kfree(tmp);
-+
-+	return (ret==0?count:-1);
-+}
-+
-+static unsigned int egalax_cdev_poll(struct file *filp, struct poll_table_struct *wait)
-+{
-+	struct egalax_char_dev *cdev = filp->private_data;
-+	unsigned int mask = 0;
-+	int fifoLen;
-+	
-+	down(&cdev->sem);
-+	poll_wait(filp, &cdev->fifo_inq,  wait);
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
-+	fifoLen = kfifo_len(cdev->pDataKFiFo);
-+#else
-+	fifoLen = kfifo_len(&cdev->DataKFiFo);
-+#endif
-+
-+	if( fifoLen > 0 )
-+		mask |= POLLIN | POLLRDNORM;    /* readable */
-+	if( (FIFO_SIZE - fifoLen) > MAX_I2C_LEN )
-+		mask |= POLLOUT | POLLWRNORM;   /* writable */
-+
-+	up(&cdev->sem);
-+	return mask;
-+}
-+
-+static int egalax_proc_show(struct seq_file* seqfilp, void *v)
-+{
-+	seq_printf(seqfilp, "EETI I2C for All Points.\nDebug Level: 0x%08X\nRelease Date: %s\n", DbgLevel, RELEASE_DATE);
-+	return 0;
-+}
-+
-+static int egalax_proc_open(struct inode *inode, struct file *filp)
-+{
-+	EGALAX_DBG(DBG_PROC, " \"%s\" call proc_open\n", current->comm);
-+	return single_open(filp, egalax_proc_show, NULL);
-+}
-+
-+static ssize_t egalax_proc_write(struct file *file, const char __user *buf, size_t count, loff_t *offset)
-+{
-+	char procfs_buffer_size = 0; 
-+	unsigned char procfs_buf[PROC_FS_MAX_LEN+1] = {0};
-+
-+	EGALAX_DBG(DBG_PROC, " \"%s\" call proc_write\n", current->comm);
-+
-+	procfs_buffer_size = count;
-+	if(procfs_buffer_size > PROC_FS_MAX_LEN ) 
-+		procfs_buffer_size = PROC_FS_MAX_LEN+1;
-+	
-+	if( copy_from_user(procfs_buf, buf, procfs_buffer_size) ) 
-+	{
-+		EGALAX_DBG(DBG_PROC, " proc_write faied at copy_from_user\n");
-+		return -EFAULT;
-+	}
-+
-+	sscanf(procfs_buf, "%x", &DbgLevel);
-+	EGALAX_DBG(DBG_PROC, " Switch Debug Level to 0x%08X\n", DbgLevel);
-+
-+	return procfs_buffer_size;
-+}
-+
-+#define MAX_POINT_PER_PACKET	5
-+#define POINT_STRUCT_SIZE	10
-+static int TotalPtsCnt=0, RecvPtsCnt=0;
-+static void ProcessReport(unsigned char *buf, struct _egalax_i2c *p_egalax_i2c)
-+{
-+	unsigned char i, index=0, cnt_down=0, cnt_up=0, shift=0;
-+	unsigned char status=0;
-+	unsigned short contactID=0, x=0, y=0;
-+
-+	if(TotalPtsCnt<=0)
-+	{
-+		if(buf[1]==0 || buf[1]>MAX_SUPPORT_POINT)
-+		{
-+			EGALAX_DBG(DBG_POINT, " NumsofContacts mismatch, skip packet\n");
-+			return;
-+		}
-+
-+		TotalPtsCnt = buf[1];
-+		RecvPtsCnt = 0;
-+	}
-+	else if(buf[1]>0)
-+	{
-+		TotalPtsCnt = RecvPtsCnt = 0;
-+		EGALAX_DBG(DBG_POINT, " NumsofContacts mismatch, skip packet\n");
-+		return;
-+	}
-+
-+	while(index<MAX_POINT_PER_PACKET)
-+	{
-+		shift = index * POINT_STRUCT_SIZE + 2;
-+		status = buf[shift] & 0x01;
-+		contactID = buf[shift+1];
-+		x = ((buf[shift+3]<<8) + buf[shift+2]);
-+		y = ((buf[shift+5]<<8) + buf[shift+4]);
-+
-+		if( contactID>=MAX_SUPPORT_POINT )
-+		{
-+			TotalPtsCnt = RecvPtsCnt = 0;
-+			EGALAX_DBG(DBG_POINT, " Get error ContactID.\n");
-+			return;
-+		}
-+
-+		EGALAX_DBG(DBG_POINT, " Get Point[%d] Update: Status=%d X=%d Y=%d\n", contactID, status, x, y);
-+
-+	#ifdef _SWITCH_XY
-+		short tmp = x;
-+		x = y;
-+		y = tmp;
-+	#endif
-+	#ifdef _CONVERT_X
-+		x = MAX_RESOLUTION-x;
-+	#endif
-+
-+	#ifdef _CONVERT_Y
-+		y = MAX_RESOLUTION-y;
-+	#endif
-+
-+		pContactBuf[RecvPtsCnt].ID = contactID;
-+		pContactBuf[RecvPtsCnt].Status = status;
-+		pContactBuf[RecvPtsCnt].X = x;
-+		pContactBuf[RecvPtsCnt].Y = y;
-+
-+		RecvPtsCnt++;
-+		index++;
-+
-+		// Recv all points, send input report
-+		if(RecvPtsCnt==TotalPtsCnt)
-+		{
-+			for(i=0; i<RecvPtsCnt; i++)
-+			{
-+			#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0)
-+				input_mt_slot(input_dev, pContactBuf[i].ID);
-+				input_mt_report_slot_state(input_dev, MT_TOOL_FINGER, pContactBuf[i].Status);
-+				if(pContactBuf[i].Status)
-+				{
-+					input_report_abs(input_dev, ABS_MT_TOUCH_MAJOR, pContactBuf[i].Status);
-+					input_report_abs(input_dev, ABS_MT_POSITION_X, pContactBuf[i].X);
-+					input_report_abs(input_dev, ABS_MT_POSITION_Y, pContactBuf[i].Y);
-+				}
-+			#else
-+				input_report_abs(input_dev, ABS_MT_TRACKING_ID, pContactBuf[i].ID);
-+				input_report_abs(input_dev, ABS_MT_TOUCH_MAJOR, pContactBuf[i].Status);
-+				input_report_abs(input_dev, ABS_MT_POSITION_X, pContactBuf[i].X);
-+				input_report_abs(input_dev, ABS_MT_POSITION_Y, pContactBuf[i].Y);
-+				input_report_abs(input_dev, ABS_MT_WIDTH_MAJOR, 0);
-+				input_mt_sync(input_dev);
-+			#endif
-+
-+				if(pContactBuf[i].Status)
-+					cnt_down++;
-+				else
-+					cnt_up++;
-+			}
-+		#ifndef CONFIG_HAS_EARLYSUSPEND //We use this config to distinguish Linux and Android
-+			#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)
-+			input_mt_report_pointer_emulation(input_dev, true);
-+			#endif
-+		#endif
-+			input_sync(input_dev);
-+			EGALAX_DBG(DBG_POINT, " Input sync point data done! (Down:%d Up:%d)\n", cnt_down, cnt_up);
-+			
-+			TotalPtsCnt = RecvPtsCnt = 0;
-+			return;
-+		}
-+	}
-+}
-+
-+static struct input_dev * allocate_Input_Dev(void)
-+{
-+	int ret;
-+	struct input_dev *pInputDev=NULL;
-+
-+	pInputDev = input_allocate_device();
-+	if(pInputDev == NULL)
-+	{
-+		EGALAX_DBG(DBG_MODULE, " Failed to allocate input device\n");
-+		return NULL;//-ENOMEM;
-+	}
-+
-+	pInputDev->name = "eGalax_Touch_Screen";
-+	pInputDev->phys = "I2C";
-+	pInputDev->id.bustype = BUS_I2C;
-+	pInputDev->id.vendor = 0x0EEF;
-+	pInputDev->id.product = 0x0020;
-+	pInputDev->id.version = 0x0001;
-+	
-+	set_bit(EV_ABS, pInputDev->evbit);
-+#ifndef CONFIG_HAS_EARLYSUSPEND //We use this config to distinguish Linux and Android
-+	set_bit(EV_KEY, pInputDev->evbit);
-+	__set_bit(BTN_TOUCH, pInputDev->keybit);
-+	input_set_abs_params(pInputDev, ABS_X, 0, MAX_RESOLUTION, 0, 0);
-+	input_set_abs_params(pInputDev, ABS_Y, 0, MAX_RESOLUTION, 0, 0);
-+#endif
-+
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0)
-+	__set_bit(INPUT_PROP_DIRECT, pInputDev->propbit);
-+	#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0)
-+		input_mt_init_slots(pInputDev, MAX_SUPPORT_POINT, 0);
-+	#else
-+		input_mt_init_slots(pInputDev, MAX_SUPPORT_POINT);
-+	#endif
-+	input_set_abs_params(pInputDev, ABS_MT_POSITION_X, 0, MAX_RESOLUTION, 0, 0);
-+	input_set_abs_params(pInputDev, ABS_MT_POSITION_Y, 0, MAX_RESOLUTION, 0, 0);
-+	input_set_abs_params(pInputDev, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);
-+#else
-+	input_set_abs_params(pInputDev, ABS_MT_POSITION_X, 0, MAX_RESOLUTION, 0, 0);
-+	input_set_abs_params(pInputDev, ABS_MT_POSITION_Y, 0, MAX_RESOLUTION, 0, 0);
-+	input_set_abs_params(pInputDev, ABS_MT_WIDTH_MAJOR, 0, MAX_RESOLUTION, 0, 0); //Size
-+	input_set_abs_params(pInputDev, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0); //Pressure
-+	input_set_abs_params(pInputDev, ABS_MT_TRACKING_ID, 0, MAX_SUPPORT_POINT, 0, 0);
-+#endif // #if LINUX_VERSION_CODE > KERNEL_VERSION(3,0,0)
-+
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
-+	input_set_events_per_packet(pInputDev, MAX_EVENTS);
-+#endif
-+
-+	ret = input_register_device(pInputDev);
-+	if(ret) 
-+	{
-+		EGALAX_DBG(DBG_MODULE, " Unable to register input device.\n");
-+		input_free_device(pInputDev);
-+		pInputDev = NULL;
-+	}
-+	
-+	return pInputDev;
-+}
-+
-+static int egalax_i2c_measure(struct _egalax_i2c *egalax_i2c)
-+{
-+	int ret=0, frameLen=0, loop=3, i;
-+
-+	EGALAX_DBG(DBG_INT, " egalax_i2c_measure\n");
-+
-+	if( egalax_I2C_read(input_report_buf, MAX_I2C_LEN+2) < 0)
-+	{
-+		EGALAX_DBG(DBG_I2C, " I2C read input report fail!\n");
-+		return -1;
-+	}
-+	
-+	if( DbgLevel&DBG_I2C )
-+	{
-+		char dbgmsg[(MAX_I2C_LEN+2)*4];
-+		for(i=0; i<MAX_I2C_LEN+2; i++)
-+			sprintf(dbgmsg+i*4, "[%02X]", input_report_buf[i]);
-+		EGALAX_DBG(DBG_I2C, " Buf=%s\n", dbgmsg);
-+	}
-+
-+	frameLen = input_report_buf[0] + (input_report_buf[1]<<8);
-+	EGALAX_DBG(DBG_I2C, " I2C read data with Len=%d\n", frameLen);
-+
-+	if(frameLen==0)
-+	{
-+		EGALAX_DBG(DBG_MODULE, " Device reset\n");
-+		return -1;
-+	}
-+
-+	switch(input_report_buf[2])
-+	{
-+		case REPORTID_MTOUCH:
-+			if( !egalax_i2c->skip_packet && egalax_i2c->work_state==MODE_WORKING )
-+				ProcessReport(input_report_buf+2, egalax_i2c);
-+			ret = 0;
-+			break;
-+		case REPORTID_VENDOR:
-+			atomic_set(&wait_command_ack, 1);
-+			EGALAX_DBG(DBG_I2C, " I2C get vendor command packet\n");
-+
-+			if( p_char_dev->OpenCnts>0 ) // If someone reading now! put the data into the buffer!
-+			{
-+				loop=3;
-+				do {
-+				#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
-+					ret = wait_event_timeout(p_char_dev->fifo_inq, (FIFO_SIZE-kfifo_len(p_char_dev->pDataKFiFo))>=MAX_I2C_LEN, HZ);
-+				#else
-+					ret = wait_event_timeout(p_char_dev->fifo_inq, kfifo_avail(&p_char_dev->DataKFiFo)>=MAX_I2C_LEN, HZ);
-+				#endif
-+				}while(ret<=0 && --loop);
-+
-+				if(ret>0) // fifo size is ready
-+				{
-+				#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
-+					ret = kfifo_put(p_char_dev->pDataKFiFo, input_report_buf+2, MAX_I2C_LEN);
-+				#else
-+					ret = kfifo_in_locked(&p_char_dev->DataKFiFo, input_report_buf+2, MAX_I2C_LEN, &p_char_dev->FiFoLock);
-+				#endif
-+
-+					wake_up_interruptible( &p_char_dev->fifo_inq );
-+				}
-+				else
-+					EGALAX_DBG(DBG_CDEV, " [Warning] Can't write data because fifo size is overflow.\n");
-+			}
-+
-+			break;
-+		default:
-+			EGALAX_DBG(DBG_I2C, " I2C read error data with hedaer=%d\n", input_report_buf[2]);
-+			ret = -1;
-+			break;
-+	}
-+
-+	return ret;
-+}
-+
-+static void egalax_i2c_wq_irq(struct work_struct *work)
-+{
-+	struct _egalax_i2c *egalax_i2c = container_of(work, struct _egalax_i2c, work_irq);
-+	struct i2c_client *client = egalax_i2c->client;
-+
-+	EGALAX_DBG(DBG_INT, " egalax_i2c_wq run\n");
-+
-+	/*continue recv data*/
-+	while( !gpio_get_value(egalax_i2c->interrupt_gpio) )
-+	{
-+		egalax_i2c_measure(egalax_i2c);
-+		schedule();
-+	}
-+		
-+	if( egalax_i2c->skip_packet > 0 )
-+		egalax_i2c->skip_packet = 0;
-+
-+	enable_irq(client->irq);
-+
-+	EGALAX_DBG(DBG_INT, " egalax_i2c_wq leave\n");
-+}
-+
-+static irqreturn_t egalax_i2c_interrupt(int irq, void *dev_id)
-+{
-+	struct _egalax_i2c *egalax_i2c = (struct _egalax_i2c *)dev_id;
-+
-+	EGALAX_DBG(DBG_INT, " INT with irq:%d\n", irq);
-+
-+	disable_irq_nosync(irq);
-+
-+	queue_work(egalax_i2c->ktouch_wq, &egalax_i2c->work_irq);
-+
-+	return IRQ_HANDLED;
-+}
-+
-+#ifdef CONFIG_HAS_EARLYSUSPEND
-+static void egalax_i2c_early_suspend(struct early_suspend *handler)
-+{
-+	pm_message_t state;
-+	state.event = PM_EVENT_SUSPEND;
-+
-+	EGALAX_DBG(DBG_SUSP, " %s\n", __func__);
-+	egalax_i2c_pm_suspend(p_egalax_i2c_dev->client, state);
-+}
-+
-+static void egalax_i2c_early_resume(struct early_suspend *handler)
-+{
-+	EGALAX_DBG(DBG_SUSP, " %s\n", __func__);
-+	egalax_i2c_pm_resume(p_egalax_i2c_dev->client);
-+}
-+#endif // #ifdef CONFIG_HAS_EARLYSUSPEND
-+
-+static int __devinit egalax_i2c_probe(struct i2c_client *client, const struct i2c_device_id *idp)
-+{
-+	int ret;
-+	struct device_node *devnode;
-+	
-+	EGALAX_DBG(DBG_MODULE, " Start probe\n");
-+
-+	p_egalax_i2c_dev = (struct _egalax_i2c *)kzalloc(sizeof(struct _egalax_i2c), GFP_KERNEL);
-+	if (!p_egalax_i2c_dev) 
-+	{
-+		EGALAX_DBG(DBG_MODULE, " Request memory failed\n");
-+		ret = -ENOMEM;
-+		goto fail1;
-+	}
-+
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)
-+	devnode = client->dev.of_node;
-+	if(devnode) //if use the device tree config
-+	{
-+		p_egalax_i2c_dev->interrupt_gpio = of_get_named_gpio(devnode, "int-gpios", 0);
-+	}
-+#else
-+	{
-+		p_egalax_i2c_dev->interrupt_gpio = irq_to_gpio(client->irq);
-+	}
-+#endif
-+
-+	if( !gpio_is_valid(p_egalax_i2c_dev->interrupt_gpio) )
-+	{
-+		ret = -ENODEV;
-+		goto fail1;
-+	}
-+	ret = gpio_request(p_egalax_i2c_dev->interrupt_gpio, "Touch IRQ");
-+	if(ret<0)
-+	{
-+		EGALAX_DBG(DBG_MODULE, " gpio_request[%d] failed: %d\n", p_egalax_i2c_dev->interrupt_gpio, ret);
-+		if(ret!=-EBUSY)
-+			goto fail1;
-+	}
-+	gpio_direction_input(p_egalax_i2c_dev->interrupt_gpio);
-+
-+	input_dev = allocate_Input_Dev();
-+	if(input_dev==NULL)
-+	{
-+		EGALAX_DBG(DBG_MODULE, " allocate_Input_Dev failed\n");
-+		ret = -EINVAL; 
-+		goto fail2;
-+	}
-+	EGALAX_DBG(DBG_MODULE, " Register input device done\n");
-+
-+	p_egalax_i2c_dev->client = client;
-+	mutex_init(&p_egalax_i2c_dev->mutex_wq);
-+
-+	p_egalax_i2c_dev->ktouch_wq = create_singlethread_workqueue("egalax_touch_wq");
-+	INIT_WORK(&p_egalax_i2c_dev->work_irq, egalax_i2c_wq_irq);
-+
-+	i2c_set_clientdata(client, p_egalax_i2c_dev);
-+
-+	if( gpio_get_value(p_egalax_i2c_dev->interrupt_gpio) )
-+		p_egalax_i2c_dev->skip_packet = 0;
-+	else
-+		p_egalax_i2c_dev->skip_packet = 1;
-+
-+	p_egalax_i2c_dev->work_state = MODE_WORKING;
-+
-+	ret = request_irq(client->irq, egalax_i2c_interrupt, IRQF_TRIGGER_LOW, client->name, p_egalax_i2c_dev);
-+	if( ret ) 
-+	{
-+		EGALAX_DBG(DBG_MODULE, " Request irq(%d) failed\n", client->irq);
-+		goto fail3;
-+	}
-+	EGALAX_DBG(DBG_MODULE, " Request irq(%d) gpio(%d) with result:%d\n", client->irq, p_egalax_i2c_dev->interrupt_gpio, ret);
-+
-+#ifdef CONFIG_HAS_EARLYSUSPEND
-+	egalax_early_suspend.level = EARLY_SUSPEND_LEVEL_BLANK_SCREEN;
-+	egalax_early_suspend.suspend = egalax_i2c_early_suspend;
-+	egalax_early_suspend.resume = egalax_i2c_early_resume;
-+	register_early_suspend(&egalax_early_suspend);
-+	EGALAX_DBG(DBG_MODULE, " Register early_suspend done\n");
-+#endif
-+
-+	EGALAX_DBG(DBG_MODULE, " I2C probe done\n");
-+	return 0;
-+
-+fail3:
-+	i2c_set_clientdata(client, NULL);
-+	destroy_workqueue(p_egalax_i2c_dev->ktouch_wq); 
-+	free_irq(client->irq, p_egalax_i2c_dev);
-+	input_unregister_device(input_dev);
-+	input_dev = NULL;
-+fail2:
-+	gpio_free(p_egalax_i2c_dev->interrupt_gpio);
-+fail1:
-+	kfree(p_egalax_i2c_dev);
-+	p_egalax_i2c_dev = NULL;
-+
-+	EGALAX_DBG(DBG_MODULE, " I2C probe failed\n");
-+	return ret;
-+}
-+
-+static int __devexit egalax_i2c_remove(struct i2c_client *client)
-+{
-+	struct _egalax_i2c *egalax_i2c = i2c_get_clientdata(client);
-+
-+	egalax_i2c->work_state = MODE_STOP;
-+
-+	cancel_work_sync(&egalax_i2c->work_irq);
-+
-+	if(client->irq)
-+	{
-+		disable_irq(client->irq);
-+		free_irq(client->irq, egalax_i2c);
-+	}
-+
-+	gpio_free(egalax_i2c->interrupt_gpio);
-+	
-+	if(egalax_i2c->ktouch_wq) 
-+		destroy_workqueue(egalax_i2c->ktouch_wq); 
-+
-+#ifdef CONFIG_HAS_EARLYSUSPEND
-+	unregister_early_suspend(&egalax_early_suspend);
-+#endif
-+
-+	if(input_dev)
-+	{
-+		EGALAX_DBG(DBG_MODULE,  " Unregister input device\n");
-+		input_unregister_device(input_dev);
-+		input_dev = NULL;
-+	}
-+
-+	i2c_set_clientdata(client, NULL);
-+	kfree(egalax_i2c);
-+	p_egalax_i2c_dev = NULL;
-+
-+	return 0;
-+}
-+
-+static const struct i2c_device_id egalax_i2c_idtable[] = { 
-+	{ "egalax_i2c", 0 }, 
-+	{ } 
-+};
-+
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)
-+static const struct of_device_id egalax_i2c_dt_ids[] = { 
-+	{ .compatible = "eeti,egalax_i2c" }, 
-+	{ } 
-+};
-+#endif
-+
-+MODULE_DEVICE_TABLE(i2c, egalax_i2c_idtable);
-+
-+static struct i2c_driver egalax_i2c_driver = {
-+	.driver = {
-+		.name 	= "egalax_i2c",
-+		.owner	= THIS_MODULE,
-+	#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)
-+		.of_match_table = egalax_i2c_dt_ids,
-+	#endif
-+	},
-+	.id_table	= egalax_i2c_idtable,
-+	.probe		= egalax_i2c_probe,
-+	.remove		= __devexit_p(egalax_i2c_remove),
-+};
-+
-+static const struct file_operations egalax_cdev_fops = {
-+	.owner	= THIS_MODULE,
-+	.read	= egalax_cdev_read,
-+	.write	= egalax_cdev_write,
-+	.open	= egalax_cdev_open,
-+	.release= egalax_cdev_release,
-+	.poll	= egalax_cdev_poll,
-+};
-+
-+static const struct file_operations egalax_proc_fops = {
-+	.owner		= THIS_MODULE,
-+        .open           = egalax_proc_open,
-+        .read           = seq_read,
-+        .write          = egalax_proc_write,
-+        .llseek         = seq_lseek,
-+	.release	= single_release,
-+};
-+
-+static struct miscdevice egalax_misc_dev = {
-+	.minor = MISC_DYNAMIC_MINOR,
-+	.name = "egalax_i2c",
-+	.fops = &egalax_cdev_fops,
-+};
-+
-+static void egalax_i2c_ts_exit(void)
-+{
-+	if(p_char_dev)
-+	{
-+		if( p_char_dev->pFiFoBuf )
-+			kfree(p_char_dev->pFiFoBuf);
-+
-+		kfree(p_char_dev);
-+		p_char_dev = NULL;
-+	}
-+
-+	misc_deregister(&egalax_misc_dev);
-+
-+	i2c_del_driver(&egalax_i2c_driver);
-+
-+	remove_proc_entry(PROC_FS_NAME, NULL);
-+
-+	EGALAX_DBG(DBG_MODULE, " Exit driver done!\n");
-+}
-+
-+static struct egalax_char_dev* setup_chardev(void)
-+{
-+	struct egalax_char_dev *pCharDev;
-+
-+	pCharDev = kzalloc(1*sizeof(struct egalax_char_dev), GFP_KERNEL);
-+	if(!pCharDev) 
-+		goto fail_cdev;
-+
-+	spin_lock_init( &pCharDev->FiFoLock );
-+	pCharDev->pFiFoBuf = kzalloc(sizeof(unsigned char)*FIFO_SIZE, GFP_KERNEL);
-+	if(!pCharDev->pFiFoBuf)
-+		goto fail_fifobuf;
-+
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
-+	pCharDev->pDataKFiFo = kfifo_init(pCharDev->pFiFoBuf, FIFO_SIZE, GFP_KERNEL, &pCharDev->FiFoLock);
-+	if( pCharDev->pDataKFiFo==NULL )
-+		goto fail_kfifo;
-+#else
-+	kfifo_init(&pCharDev->DataKFiFo, pCharDev->pFiFoBuf, FIFO_SIZE);
-+	if( !kfifo_initialized(&pCharDev->DataKFiFo) )
-+		goto fail_kfifo;
-+#endif
-+	
-+	pCharDev->OpenCnts = 0;
-+	sema_init(&pCharDev->sem, 1);
-+	init_waitqueue_head(&pCharDev->fifo_inq);
-+
-+	return pCharDev; 
-+
-+fail_kfifo:
-+	kfree(pCharDev->pFiFoBuf);
-+fail_fifobuf:
-+	kfree(pCharDev);
-+fail_cdev:
-+	return NULL;
-+}
-+
-+static int egalax_i2c_ts_init(void)
-+{
-+	int result;
-+
-+	result = misc_register(&egalax_misc_dev);
-+	if(result) 
-+	{
-+		EGALAX_DBG(DBG_MODULE, " misc device register failed\n");
-+		goto fail;
-+	}
-+
-+	p_char_dev = setup_chardev(); // allocate the character device
-+	if(!p_char_dev) 
-+	{
-+		result = -ENOMEM;
-+		goto fail;
-+	}
-+
-+	dbgProcFile = proc_create(PROC_FS_NAME, S_IRUGO|S_IWUGO, NULL, &egalax_proc_fops);
-+	if (dbgProcFile == NULL) 
-+	{
-+		remove_proc_entry(PROC_FS_NAME, NULL);
-+		EGALAX_DBG(DBG_MODULE, " Could not initialize /proc/%s\n", PROC_FS_NAME);
-+	}
-+
-+	EGALAX_DBG(DBG_MODULE, " Driver init done!\n");
-+	return i2c_add_driver(&egalax_i2c_driver);
-+
-+fail:	
-+	egalax_i2c_ts_exit();
-+	return result;
-+}
-+
-+module_init(egalax_i2c_ts_init);
-+module_exit(egalax_i2c_ts_exit);
-+
-+MODULE_AUTHOR("EETI <touch_fae@eeti.com>");
-+MODULE_DESCRIPTION("egalax all points controller i2c driver");
-+MODULE_LICENSE("GPL");
--- 
-1.9.1
-

+ 0 - 828
board/GfA/Display001/linux_4.4.145_bone23/linux-005-edt-ft5x06.patch

@@ -1,828 +0,0 @@
-commit ab28538ebe289c686cf357a6274c3f4a71969ca3
-Author: Reinhard Russinger <reinhard@russinger.at>
-Date:   Thu May 4 06:59:24 2017 +0200
-
-    changes edt-ft5x06 touchcontroller
-
-diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
-index 703e295..e862958 100644
---- a/drivers/input/touchscreen/edt-ft5x06.c
-+++ b/drivers/input/touchscreen/edt-ft5x06.c
-@@ -27,7 +27,6 @@
- 
- #include <linux/module.h>
- #include <linux/ratelimit.h>
--#include <linux/irq.h>
- #include <linux/interrupt.h>
- #include <linux/input.h>
- #include <linux/i2c.h>
-@@ -35,10 +34,12 @@
- #include <linux/delay.h>
- #include <linux/debugfs.h>
- #include <linux/slab.h>
--#include <linux/gpio/consumer.h>
-+#include <linux/gpio.h>
-+#include <linux/of_gpio.h>
- #include <linux/input/mt.h>
--#include <linux/input/touchscreen.h>
--#include <linux/of_device.h>
-+#include <linux/input/edt-ft5x06.h>
-+
-+#define MAX_SUPPORT_POINTS		5
- 
- #define WORK_REGISTER_THRESHOLD		0x00
- #define WORK_REGISTER_REPORT_RATE	0x08
-@@ -53,6 +54,13 @@
- #define M09_REGISTER_NUM_X		0x94
- #define M09_REGISTER_NUM_Y		0x95
- 
-+#define M12_REGISTER_THRESHOLD		0x80
-+#define M12_REGISTER_GAIN		0x92
-+#define M12_REGISTER_OFFSET		0x93
-+#define M12_REGISTER_NUM_X		0x94
-+#define M12_REGISTER_NUM_Y		0x95
-+#define M12_REGISTER_REPORT_RATE	0x88
-+
- #define NO_REGISTER			0xff
- 
- #define WORK_REGISTER_OPMODE		0x3c
-@@ -72,6 +80,7 @@
- enum edt_ver {
- 	M06,
- 	M09,
-+	M12,
- };
- 
- struct edt_reg_addr {
-@@ -86,12 +95,12 @@ struct edt_reg_addr {
- struct edt_ft5x06_ts_data {
- 	struct i2c_client *client;
- 	struct input_dev *input;
--	struct touchscreen_properties prop;
- 	u16 num_x;
- 	u16 num_y;
- 
--	struct gpio_desc *reset_gpio;
--	struct gpio_desc *wake_gpio;
-+	int reset_pin;
-+	int irq_pin;
-+	int wake_pin;
- 
- #if defined(CONFIG_DEBUG_FS)
- 	struct dentry *debug_dir;
-@@ -105,18 +114,20 @@ struct edt_ft5x06_ts_data {
- 	int gain;
- 	int offset;
- 	int report_rate;
--	int max_support_points;
- 
-+	u32 invert_x;
-+	u32 invert_y;
-+	u32 swap_xy;
-+	
-+	u32 max_x;
-+	u32 max_y;
-+	
- 	char name[EDT_NAME_LEN];
- 
- 	struct edt_reg_addr reg_addr;
- 	enum edt_ver version;
- };
- 
--struct edt_i2c_chip_data {
--	int  max_support_points;
--};
--
- static int edt_ft5x06_ts_readwrite(struct i2c_client *client,
- 				   u16 wr_len, u8 *wr_buf,
- 				   u16 rd_len, u8 *rd_buf)
-@@ -173,9 +184,9 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev_id)
- 	struct edt_ft5x06_ts_data *tsdata = dev_id;
- 	struct device *dev = &tsdata->client->dev;
- 	u8 cmd;
--	u8 rdbuf[63];
-+	u8 rdbuf[29];
- 	int i, type, x, y, id;
--	int offset, tplen, datalen, crclen;
-+	int offset, tplen, datalen;
- 	int error;
- 
- 	switch (tsdata->version) {
-@@ -183,14 +194,15 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev_id)
- 		cmd = 0xf9; /* tell the controller to send touch data */
- 		offset = 5; /* where the actual touch data starts */
- 		tplen = 4;  /* data comes in so called frames */
--		crclen = 1; /* length of the crc data */
-+		datalen = 26; /* how much bytes to listen for */
- 		break;
--
-+		
-+	case M12:	
- 	case M09:
--		cmd = 0x0;
--		offset = 3;
-+		cmd = 0x02;
-+		offset = 1;
- 		tplen = 6;
--		crclen = 0;
-+		datalen = 29;
- 		break;
- 
- 	default:
-@@ -198,7 +210,6 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev_id)
- 	}
- 
- 	memset(rdbuf, 0, sizeof(rdbuf));
--	datalen = tplen * tsdata->max_support_points + offset + crclen;
- 
- 	error = edt_ft5x06_ts_readwrite(tsdata->client,
- 					sizeof(cmd), &cmd,
-@@ -209,8 +220,8 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev_id)
- 		goto out;
- 	}
- 
--	/* M09 does not send header or CRC */
--	if (tsdata->version == M06) {
-+	/* M09 M12 does not send header or CRC */
-+	if (tsdata->version == M06)  {
- 		if (rdbuf[0] != 0xaa || rdbuf[1] != 0xaa ||
- 			rdbuf[2] != datalen) {
- 			dev_err_ratelimited(dev,
-@@ -223,7 +234,7 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev_id)
- 			goto out;
- 	}
- 
--	for (i = 0; i < tsdata->max_support_points; i++) {
-+	for (i = 0; i < MAX_SUPPORT_POINTS; i++) {
- 		u8 *buf = &rdbuf[i * tplen + offset];
- 		bool down;
- 
-@@ -236,19 +247,32 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev_id)
- 		if (tsdata->version == M06 && type == TOUCH_EVENT_DOWN)
- 			continue;
- 
--		x = ((buf[0] << 8) | buf[1]) & 0x0fff;
--		y = ((buf[2] << 8) | buf[3]) & 0x0fff;
-+		if( tsdata->swap_xy) {
-+		  y = ((buf[0] << 8) | buf[1]) & 0x0fff;
-+		  x = ((buf[2] << 8) | buf[3]) & 0x0fff;
-+		  } else {
-+		  x = ((buf[0] << 8) | buf[1]) & 0x0fff;
-+		  y = ((buf[2] << 8) | buf[3]) & 0x0fff;
-+		  }
- 		id = (buf[2] >> 4) & 0x0f;
- 		down = type != TOUCH_EVENT_UP;
- 
-+		if(tsdata->invert_x) {
-+  		  x = tsdata->max_x - x; 
-+ 		  }
-+ 		  
-+		if(tsdata->invert_y) {
-+  		  y = tsdata->max_y - y; 
-+ 		  }
-+ 		  
- 		input_mt_slot(tsdata->input, id);
- 		input_mt_report_slot_state(tsdata->input, MT_TOOL_FINGER, down);
- 
- 		if (!down)
- 			continue;
- 
--		touchscreen_report_pos(tsdata->input, &tsdata->prop, x, y,
--				       true);
-+		input_report_abs(tsdata->input, ABS_MT_POSITION_X, x);
-+		input_report_abs(tsdata->input, ABS_MT_POSITION_Y, y);
- 	}
- 
- 	input_mt_report_pointer_emulation(tsdata->input, true);
-@@ -267,15 +291,17 @@ static int edt_ft5x06_register_write(struct edt_ft5x06_ts_data *tsdata,
- 	case M06:
- 		wrbuf[0] = tsdata->factory_mode ? 0xf3 : 0xfc;
- 		wrbuf[1] = tsdata->factory_mode ? addr & 0x7f : addr & 0x3f;
-+		wrbuf[1] = tsdata->factory_mode ? addr & 0x7f : addr & 0x3f;
- 		wrbuf[2] = value;
- 		wrbuf[3] = wrbuf[0] ^ wrbuf[1] ^ wrbuf[2];
--		return edt_ft5x06_ts_readwrite(tsdata->client, 4,
--					wrbuf, 0, NULL);
-+		return edt_ft5x06_ts_readwrite(tsdata->client, 4, wrbuf, 0, NULL);
-+		
-+	case M12:
- 	case M09:
- 		wrbuf[0] = addr;
- 		wrbuf[1] = value;
- 
--		return edt_ft5x06_ts_readwrite(tsdata->client, 2,
-+		return edt_ft5x06_ts_readwrite(tsdata->client, 3,
- 					wrbuf, 0, NULL);
- 
- 	default:
-@@ -309,6 +335,7 @@ static int edt_ft5x06_register_read(struct edt_ft5x06_ts_data *tsdata,
- 		}
- 		break;
- 
-+        case M12:
- 	case M09:
- 		wrbuf[0] = addr;
- 		error = edt_ft5x06_ts_readwrite(tsdata->client, 1,
-@@ -331,9 +358,10 @@ struct edt_ft5x06_attribute {
- 	u8 limit_high;
- 	u8 addr_m06;
- 	u8 addr_m09;
-+	u8 addr_m12;
- };
- 
--#define EDT_ATTR(_field, _mode, _addr_m06, _addr_m09,			\
-+#define EDT_ATTR(_field, _mode, _addr_m06, _addr_m09, _addr_m12,			\
- 		_limit_low, _limit_high)				\
- 	struct edt_ft5x06_attribute edt_ft5x06_attr_##_field = {	\
- 		.dattr = __ATTR(_field, _mode,				\
-@@ -342,6 +370,7 @@ struct edt_ft5x06_attribute {
- 		.field_offset = offsetof(struct edt_ft5x06_ts_data, _field), \
- 		.addr_m06 = _addr_m06,					\
- 		.addr_m09 = _addr_m09,					\
-+		.addr_m12 = _addr_m12,					\
- 		.limit_low = _limit_low,				\
- 		.limit_high = _limit_high,				\
- 	}
-@@ -372,6 +401,10 @@ static ssize_t edt_ft5x06_setting_show(struct device *dev,
- 		addr = attr->addr_m06;
- 		break;
- 
-+        case M12:
-+		addr = attr->addr_m12;
-+		break;
-+
- 	case M09:
- 		addr = attr->addr_m09;
- 		break;
-@@ -441,6 +474,10 @@ static ssize_t edt_ft5x06_setting_store(struct device *dev,
- 		addr = attr->addr_m06;
- 		break;
- 
-+        case M12:
-+		addr = attr->addr_m12;
-+		break;
-+
- 	case M09:
- 		addr = attr->addr_m09;
- 		break;
-@@ -467,13 +504,13 @@ out:
- }
- 
- static EDT_ATTR(gain, S_IWUSR | S_IRUGO, WORK_REGISTER_GAIN,
--		M09_REGISTER_GAIN, 0, 31);
-+		M09_REGISTER_GAIN, M12_REGISTER_GAIN, 0, 31);
- static EDT_ATTR(offset, S_IWUSR | S_IRUGO, WORK_REGISTER_OFFSET,
--		M09_REGISTER_OFFSET, 0, 31);
-+		M09_REGISTER_OFFSET, M12_REGISTER_OFFSET, 0, 31);
- static EDT_ATTR(threshold, S_IWUSR | S_IRUGO, WORK_REGISTER_THRESHOLD,
--		M09_REGISTER_THRESHOLD, 20, 80);
-+		M09_REGISTER_THRESHOLD, M12_REGISTER_THRESHOLD, 1, 255);
- static EDT_ATTR(report_rate, S_IWUSR | S_IRUGO, WORK_REGISTER_REPORT_RATE,
--		NO_REGISTER, 3, 14);
-+		NO_REGISTER, M12_REGISTER_REPORT_RATE, 3, 14);
- 
- static struct attribute *edt_ft5x06_attrs[] = {
- 	&edt_ft5x06_attr_gain.dattr.attr,
-@@ -508,7 +545,7 @@ static int edt_ft5x06_factory_mode(struct edt_ft5x06_ts_data *tsdata)
- 	}
- 
- 	/* mode register is 0x3c when in the work mode */
--	if (tsdata->version == M09)
-+	if ((tsdata->version == M09) || (tsdata->version == M12)) 
- 		goto m09_out;
- 
- 	error = edt_ft5x06_register_write(tsdata, WORK_REGISTER_OPMODE, 0x03);
-@@ -545,7 +582,7 @@ err_out:
- 	return error;
- 
- m09_out:
--	dev_err(&client->dev, "No factory mode support for M09\n");
-+	dev_err(&client->dev, "No factory mode support for M09 and M12\n");
- 	return -EINVAL;
- 
- }
-@@ -721,23 +758,46 @@ static void
- edt_ft5x06_ts_prepare_debugfs(struct edt_ft5x06_ts_data *tsdata,
- 			      const char *debugfs_name)
- {
-+	struct edt_reg_addr *reg_addr = &tsdata->reg_addr;
-+
- 	tsdata->debug_dir = debugfs_create_dir(debugfs_name, NULL);
- 	if (!tsdata->debug_dir)
- 		return;
- 
- 	debugfs_create_u16("num_x", S_IRUSR, tsdata->debug_dir, &tsdata->num_x);
- 	debugfs_create_u16("num_y", S_IRUSR, tsdata->debug_dir, &tsdata->num_y);
-+	debugfs_create_u32("threshold", S_IRUSR, tsdata->debug_dir, &tsdata->threshold);
-+	debugfs_create_u32("gain", S_IRUSR, tsdata->debug_dir, &tsdata->gain);
-+	debugfs_create_u32("offset", S_IRUSR, tsdata->debug_dir, &tsdata->offset);
-+
- 
- 	debugfs_create_file("mode", S_IRUSR | S_IWUSR,
- 			    tsdata->debug_dir, tsdata, &debugfs_mode_fops);
- 	debugfs_create_file("raw_data", S_IRUSR,
- 			    tsdata->debug_dir, tsdata, &debugfs_raw_data_fops);
-+			    
-+	if (reg_addr->reg_report_rate != NO_REGISTER)
-+           debugfs_create_u32("report_rate", S_IRUSR, tsdata->debug_dir, &tsdata->report_rate);
-+           
-+	debugfs_create_u32("invert_x", S_IRUSR | S_IWUSR,
-+			    tsdata->debug_dir, &tsdata->invert_x);
-+	debugfs_create_u32("invert_y", S_IRUSR | S_IWUSR,
-+			    tsdata->debug_dir, &tsdata->invert_y);
-+	debugfs_create_u32("swap_xy", S_IRUSR,
-+			    tsdata->debug_dir, &tsdata->swap_xy);
-+	debugfs_create_u32("max_x", S_IRUSR,
-+			    tsdata->debug_dir, &tsdata->max_x);
-+	debugfs_create_u32("max_y", S_IRUSR,
-+			    tsdata->debug_dir, &tsdata->max_y);
-+
-+
- }
- 
- static void
- edt_ft5x06_ts_teardown_debugfs(struct edt_ft5x06_ts_data *tsdata)
- {
--	debugfs_remove_recursive(tsdata->debug_dir);
-+	if (tsdata->debug_dir)
-+		debugfs_remove_recursive(tsdata->debug_dir);
- 	kfree(tsdata->raw_buffer);
- }
- 
-@@ -756,6 +816,45 @@ edt_ft5x06_ts_teardown_debugfs(struct edt_ft5x06_ts_data *tsdata)
- 
- #endif /* CONFIG_DEBUGFS */
- 
-+static int edt_ft5x06_ts_reset(struct i2c_client *client,
-+			struct edt_ft5x06_ts_data *tsdata)
-+{
-+	int error;
-+
-+	if (gpio_is_valid(tsdata->wake_pin)) {
-+		error = devm_gpio_request_one(&client->dev,
-+					tsdata->wake_pin, GPIOF_OUT_INIT_LOW,
-+					"edt-ft5x06 wake");
-+		if (error) {
-+			dev_err(&client->dev,
-+				"Failed to request GPIO %d as wake pin, error %d\n",
-+				tsdata->wake_pin, error);
-+			return error;
-+		}
-+
-+		msleep(5);
-+		gpio_set_value(tsdata->wake_pin, 1);
-+	}
-+	if (gpio_is_valid(tsdata->reset_pin)) {
-+		/* this pulls reset down, enabling the low active reset */
-+		error = devm_gpio_request_one(&client->dev,
-+					tsdata->reset_pin, GPIOF_OUT_INIT_LOW,
-+					"edt-ft5x06 reset");
-+		if (error) {
-+			dev_err(&client->dev,
-+				"Failed to request GPIO %d as reset pin, error %d\n",
-+				tsdata->reset_pin, error);
-+			return error;
-+		}
-+
-+		msleep(5);
-+		gpio_set_value(tsdata->reset_pin, 1);
-+		msleep(300);
-+	}
-+
-+	return 0;
-+}
-+
- static int edt_ft5x06_ts_identify(struct i2c_client *client,
- 					struct edt_ft5x06_ts_data *tsdata,
- 					char *fw_version)
-@@ -771,14 +870,16 @@ static int edt_ft5x06_ts_identify(struct i2c_client *client,
- 	 */
- 	memset(rdbuf, 0, sizeof(rdbuf));
- 	error = edt_ft5x06_ts_readwrite(client, 1, "\xbb",
--					EDT_NAME_LEN - 1, rdbuf);
-+					EDT_NAME_LEN - 1,
-+					rdbuf);
- 	if (error)
- 		return error;
- 
-+        printk(KERN_INFO "EDT-TC:: %s ::-----%s----\n", __func__, rdbuf);
- 	/* if we find something consistent, stay with that assumption
- 	 * at least M09 won't send 3 bytes here
- 	 */
--	if (!(strncasecmp(rdbuf + 1, "EP0", 3))) {
-+	if ((strncasecmp(rdbuf + 1, "EP0", 3) == 0) && (strncasecmp(rdbuf + 6, "M12", 3) != 0)) {
- 		tsdata->version = M06;
- 
- 		/* remove last '$' end marker */
-@@ -792,8 +893,24 @@ static int edt_ft5x06_ts_identify(struct i2c_client *client,
- 			*p++ = '\0';
- 		strlcpy(model_name, rdbuf + 1, EDT_NAME_LEN);
- 		strlcpy(fw_version, p ? p : "", EDT_NAME_LEN);
-+	} else if (!(strncasecmp(rdbuf + 6, "M12", 3))) {
-+		tsdata->version = M12;
-+
-+		error = edt_ft5x06_ts_readwrite(client, 1, "\xA6",
-+						2, rdbuf);
-+		if (error)
-+			return error;
-+
-+		strlcpy(fw_version, rdbuf, 2);
-+
-+		error = edt_ft5x06_ts_readwrite(client, 1, "\xA8",
-+						1, rdbuf);
-+		if (error)
-+			return error;
-+
-+		snprintf(model_name, EDT_NAME_LEN, "EP0%i%i0M12",
-+			rdbuf[0] >> 4, rdbuf[0] & 0x0F);
- 	} else {
--		/* since there are only two versions around (M06, M09) */
- 		tsdata->version = M09;
- 
- 		error = edt_ft5x06_ts_readwrite(client, 1, "\xA6",
-@@ -815,30 +932,58 @@ static int edt_ft5x06_ts_identify(struct i2c_client *client,
- 	return 0;
- }
- 
--static void edt_ft5x06_ts_get_defaults(struct device *dev,
--				       struct edt_ft5x06_ts_data *tsdata)
-+#define EDT_ATTR_CHECKSET(name, reg) \
-+	if (pdata->name >= edt_ft5x06_attr_##name.limit_low &&		\
-+	    pdata->name <= edt_ft5x06_attr_##name.limit_high)		\
-+		edt_ft5x06_register_write(tsdata, reg, pdata->name)
-+
-+#define EDT_GET_PROP(name, reg) {				\
-+	u32 val;						\
-+	if (of_property_read_u32(np, #name, &val) == 0)		\
-+		edt_ft5x06_register_write(tsdata, reg, val);	\
-+}
-+
-+static void edt_ft5x06_ts_get_dt_defaults(struct device_node *np,
-+					struct edt_ft5x06_ts_data *tsdata)
- {
- 	struct edt_reg_addr *reg_addr = &tsdata->reg_addr;
--	u32 val;
--	int error;
- 
--	error = device_property_read_u32(dev, "threshold", &val);
--	if (!error) {
--		edt_ft5x06_register_write(tsdata, reg_addr->reg_threshold, val);
--		tsdata->threshold = val;
--	}
-+	switch (tsdata->version) {
-+	     case M12:
-+	      EDT_GET_PROP(threshold_M12, reg_addr->reg_threshold);
-+              EDT_GET_PROP(gain_M12, reg_addr->reg_gain);
-+              EDT_GET_PROP(offset_M12, reg_addr->reg_offset);
-+              break;
-+
-+	     case M09:
-+	      EDT_GET_PROP(threshold_M09, reg_addr->reg_threshold);
-+              EDT_GET_PROP(gain_M09, reg_addr->reg_gain);
-+              EDT_GET_PROP(offset_M09, reg_addr->reg_offset);
-+              break;
-+
-+	     case M06:
-+	      EDT_GET_PROP(threshold_M06, reg_addr->reg_threshold);
-+              EDT_GET_PROP(gain_M06, reg_addr->reg_gain);
-+              EDT_GET_PROP(offset_M06, reg_addr->reg_offset);
-+              break;
-+             }
-+}
- 
--	error = device_property_read_u32(dev, "gain", &val);
--	if (!error) {
--		edt_ft5x06_register_write(tsdata, reg_addr->reg_gain, val);
--		tsdata->gain = val;
--	}
-+static void
-+edt_ft5x06_ts_get_defaults(struct edt_ft5x06_ts_data *tsdata,
-+			   const struct edt_ft5x06_platform_data *pdata)
-+{
-+	struct edt_reg_addr *reg_addr = &tsdata->reg_addr;
- 
--	error = device_property_read_u32(dev, "offset", &val);
--	if (!error) {
--		edt_ft5x06_register_write(tsdata, reg_addr->reg_offset, val);
--		tsdata->offset = val;
--	}
-+	if (!pdata->use_parameters)
-+		return;
-+
-+	/* pick up defaults from the platform data */
-+	EDT_ATTR_CHECKSET(threshold, reg_addr->reg_threshold);
-+	EDT_ATTR_CHECKSET(gain, reg_addr->reg_gain);
-+	EDT_ATTR_CHECKSET(offset, reg_addr->reg_offset);
-+	if (reg_addr->reg_report_rate != NO_REGISTER)
-+		EDT_ATTR_CHECKSET(report_rate, reg_addr->reg_report_rate);
- }
- 
- static void
-@@ -855,6 +1000,12 @@ edt_ft5x06_ts_get_parameters(struct edt_ft5x06_ts_data *tsdata)
- 						reg_addr->reg_report_rate);
- 	tsdata->num_x = edt_ft5x06_register_read(tsdata, reg_addr->reg_num_x);
- 	tsdata->num_y = edt_ft5x06_register_read(tsdata, reg_addr->reg_num_y);
-+
-+	if(tsdata->max_x == 0)	
-+		tsdata->max_x = tsdata->num_x * 64;
-+	if(tsdata->max_y == 0)
-+		tsdata->max_y = tsdata->num_y * 64;
-+	
- }
- 
- static void
-@@ -872,6 +1023,15 @@ edt_ft5x06_ts_set_regs(struct edt_ft5x06_ts_data *tsdata)
- 		reg_addr->reg_num_y = WORK_REGISTER_NUM_Y;
- 		break;
- 
-+        case M12:
-+		reg_addr->reg_threshold = M12_REGISTER_THRESHOLD;
-+		reg_addr->reg_report_rate = M12_REGISTER_REPORT_RATE;
-+		reg_addr->reg_gain = M12_REGISTER_GAIN;
-+		reg_addr->reg_offset = M12_REGISTER_OFFSET;
-+		reg_addr->reg_num_x = M12_REGISTER_NUM_X;
-+		reg_addr->reg_num_y = M12_REGISTER_NUM_Y;
-+		break;
-+
- 	case M09:
- 		reg_addr->reg_threshold = M09_REGISTER_THRESHOLD;
- 		reg_addr->reg_gain = M09_REGISTER_GAIN;
-@@ -882,13 +1042,48 @@ edt_ft5x06_ts_set_regs(struct edt_ft5x06_ts_data *tsdata)
- 	}
- }
- 
-+#ifdef CONFIG_OF
-+static int edt_ft5x06_i2c_ts_probe_dt(struct device *dev,
-+				struct edt_ft5x06_ts_data *tsdata)
-+{
-+	struct device_node *np = dev->of_node;
-+	/*
-+	 * irq_pin is not needed for DT setup.
-+	 * irq is associated via 'interrupts' property in DT
-+	 */
-+	tsdata->irq_pin = -EINVAL;
-+	tsdata->reset_pin = of_get_named_gpio(np, "reset-gpios", 0);
-+	tsdata->wake_pin = of_get_named_gpio(np, "wake-gpios", 0);
-+	
-+	tsdata->swap_xy = of_property_read_bool(np, "swap_xy")?1:0;
-+	tsdata->invert_x = of_property_read_bool(np, "invert_x")?1:0;
-+	tsdata->invert_y = of_property_read_bool(np, "invert_y")?1:0;
-+
-+	if(of_property_read_u32(np, "max_x", &tsdata->max_x))
-+		tsdata->max_x = 0;
-+	if(of_property_read_u32(np, "max_y", &tsdata->max_y))
-+		tsdata->max_y = 0;
-+
-+	if(tsdata->swap_xy) {
-+         printk(KERN_INFO "EDT-TC:: %s :: SWAP_XY\n", __func__);
-+	 }
-+	return 0;
-+}
-+#else
-+static inline int edt_ft5x06_i2c_ts_probe_dt(struct device *dev,
-+					struct edt_ft5x06_ts_data *tsdata)
-+{
-+	return -ENODEV;
-+}
-+#endif
-+
- static int edt_ft5x06_ts_probe(struct i2c_client *client,
- 					 const struct i2c_device_id *id)
- {
--	const struct edt_i2c_chip_data *chip_data;
-+	const struct edt_ft5x06_platform_data *pdata =
-+						dev_get_platdata(&client->dev);
- 	struct edt_ft5x06_ts_data *tsdata;
- 	struct input_dev *input;
--	unsigned long irq_flags;
- 	int error;
- 	char fw_version[EDT_NAME_LEN];
- 
-@@ -900,43 +1095,32 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
- 		return -ENOMEM;
- 	}
- 
--	chip_data = of_device_get_match_data(&client->dev);
--	if (!chip_data)
--		chip_data = (const struct edt_i2c_chip_data *)id->driver_data;
--	if (!chip_data || !chip_data->max_support_points) {
--		dev_err(&client->dev, "invalid or missing chip data\n");
--		return -EINVAL;
--	}
--
--	tsdata->max_support_points = chip_data->max_support_points;
--
--	tsdata->reset_gpio = devm_gpiod_get_optional(&client->dev,
--						     "reset", GPIOD_OUT_HIGH);
--	if (IS_ERR(tsdata->reset_gpio)) {
--		error = PTR_ERR(tsdata->reset_gpio);
--		dev_err(&client->dev,
--			"Failed to request GPIO reset pin, error %d\n", error);
--		return error;
-+	if (!pdata) {
-+		error = edt_ft5x06_i2c_ts_probe_dt(&client->dev, tsdata);
-+		if (error) {
-+			dev_err(&client->dev,
-+				"DT probe failed and no platform data present\n");
-+			return error;
-+		}
-+	} else {
-+		tsdata->reset_pin = pdata->reset_pin;
-+		tsdata->irq_pin = pdata->irq_pin;
-+		tsdata->wake_pin = -EINVAL;
- 	}
- 
--	tsdata->wake_gpio = devm_gpiod_get_optional(&client->dev,
--						    "wake", GPIOD_OUT_LOW);
--	if (IS_ERR(tsdata->wake_gpio)) {
--		error = PTR_ERR(tsdata->wake_gpio);
--		dev_err(&client->dev,
--			"Failed to request GPIO wake pin, error %d\n", error);
-+	error = edt_ft5x06_ts_reset(client, tsdata);
-+	if (error)
- 		return error;
--	}
- 
--	if (tsdata->wake_gpio) {
--		usleep_range(5000, 6000);
--		gpiod_set_value_cansleep(tsdata->wake_gpio, 1);
--	}
--
--	if (tsdata->reset_gpio) {
--		usleep_range(5000, 6000);
--		gpiod_set_value_cansleep(tsdata->reset_gpio, 0);
--		msleep(300);
-+	if (gpio_is_valid(tsdata->irq_pin)) {
-+		error = devm_gpio_request_one(&client->dev, tsdata->irq_pin,
-+					GPIOF_IN, "edt-ft5x06 irq");
-+		if (error) {
-+			dev_err(&client->dev,
-+				"Failed to request GPIO %d, error %d\n",
-+				tsdata->irq_pin, error);
-+			return error;
-+		}
- 	}
- 
- 	input = devm_input_allocate_device(&client->dev);
-@@ -957,7 +1141,12 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
- 	}
- 
- 	edt_ft5x06_ts_set_regs(tsdata);
--	edt_ft5x06_ts_get_defaults(&client->dev, tsdata);
-+
-+	if (!pdata)
-+		edt_ft5x06_ts_get_dt_defaults(client->dev.of_node, tsdata);
-+	else
-+		edt_ft5x06_ts_get_defaults(tsdata, pdata);
-+
- 	edt_ft5x06_ts_get_parameters(tsdata);
- 
- 	dev_dbg(&client->dev,
-@@ -968,15 +1157,18 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
- 	input->id.bustype = BUS_I2C;
- 	input->dev.parent = &client->dev;
- 
-+	__set_bit(EV_SYN, input->evbit);
-+	__set_bit(EV_KEY, input->evbit);
-+	__set_bit(EV_ABS, input->evbit);
-+	__set_bit(BTN_TOUCH, input->keybit);
-+	
-+ 	input_set_abs_params(input, ABS_X, 0, tsdata->max_x - 1, 0, 0);
-+	input_set_abs_params(input, ABS_Y, 0, tsdata->max_y - 1, 0, 0);
- 	input_set_abs_params(input, ABS_MT_POSITION_X,
--			     0, tsdata->num_x * 64 - 1, 0, 0);
-+			     0, tsdata->max_x - 1, 0, 0);
- 	input_set_abs_params(input, ABS_MT_POSITION_Y,
--			     0, tsdata->num_y * 64 - 1, 0, 0);
--
--	touchscreen_parse_properties(input, true, &tsdata->prop);
--
--	error = input_mt_init_slots(input, tsdata->max_support_points,
--				INPUT_MT_DIRECT);
-+			     0, tsdata->max_y - 1, 0, 0);
-+	error = input_mt_init_slots(input, MAX_SUPPORT_POINTS, 0);
- 	if (error) {
- 		dev_err(&client->dev, "Unable to init MT slots.\n");
- 		return error;
-@@ -985,13 +1177,9 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
- 	input_set_drvdata(input, tsdata);
- 	i2c_set_clientdata(client, tsdata);
- 
--	irq_flags = irq_get_trigger_type(client->irq);
--	if (irq_flags == IRQF_TRIGGER_NONE)
--		irq_flags = IRQF_TRIGGER_FALLING;
--	irq_flags |= IRQF_ONESHOT;
--
--	error = devm_request_threaded_irq(&client->dev, client->irq,
--					NULL, edt_ft5x06_ts_isr, irq_flags,
-+	error = devm_request_threaded_irq(&client->dev, client->irq, NULL,
-+					edt_ft5x06_ts_isr,
-+					IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
- 					client->name, tsdata);
- 	if (error) {
- 		dev_err(&client->dev, "Unable to request touchscreen IRQ.\n");
-@@ -1011,9 +1199,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client,
- 
- 	dev_dbg(&client->dev,
- 		"EDT FT5x06 initialized: IRQ %d, WAKE pin %d, Reset pin %d.\n",
--		client->irq,
--		tsdata->wake_gpio ? desc_to_gpio(tsdata->wake_gpio) : -1,
--		tsdata->reset_gpio ? desc_to_gpio(tsdata->reset_gpio) : -1);
-+		client->irq, tsdata->wake_pin, tsdata->reset_pin);
- 
- 	return 0;
- 
-@@ -1032,7 +1218,8 @@ static int edt_ft5x06_ts_remove(struct i2c_client *client)
- 	return 0;
- }
- 
--static int __maybe_unused edt_ft5x06_ts_suspend(struct device *dev)
-+#ifdef CONFIG_PM_SLEEP
-+static int edt_ft5x06_ts_suspend(struct device *dev)
- {
- 	struct i2c_client *client = to_i2c_client(dev);
- 
-@@ -1042,7 +1229,7 @@ static int __maybe_unused edt_ft5x06_ts_suspend(struct device *dev)
- 	return 0;
- }
- 
--static int __maybe_unused edt_ft5x06_ts_resume(struct device *dev)
-+static int edt_ft5x06_ts_resume(struct device *dev)
- {
- 	struct i2c_client *client = to_i2c_client(dev);
- 
-@@ -1051,31 +1238,22 @@ static int __maybe_unused edt_ft5x06_ts_resume(struct device *dev)
- 
- 	return 0;
- }
-+#endif
- 
- static SIMPLE_DEV_PM_OPS(edt_ft5x06_ts_pm_ops,
- 			 edt_ft5x06_ts_suspend, edt_ft5x06_ts_resume);
- 
--static const struct edt_i2c_chip_data edt_ft5x06_data = {
--	.max_support_points = 5,
--};
--
--static const struct edt_i2c_chip_data edt_ft5506_data = {
--	.max_support_points = 10,
--};
--
- static const struct i2c_device_id edt_ft5x06_ts_id[] = {
--	{ .name = "edt-ft5x06", .driver_data = (long)&edt_ft5x06_data },
--	{ .name = "edt-ft5506", .driver_data = (long)&edt_ft5506_data },
-+	{ "edt-ft5x06", 0, },
- 	{ /* sentinel */ }
- };
- MODULE_DEVICE_TABLE(i2c, edt_ft5x06_ts_id);
- 
- #ifdef CONFIG_OF
- static const struct of_device_id edt_ft5x06_of_match[] = {
--	{ .compatible = "edt,edt-ft5206", .data = &edt_ft5x06_data },
--	{ .compatible = "edt,edt-ft5306", .data = &edt_ft5x06_data },
--	{ .compatible = "edt,edt-ft5406", .data = &edt_ft5x06_data },
--	{ .compatible = "edt,edt-ft5506", .data = &edt_ft5506_data },
-+	{ .compatible = "edt,edt-ft5206", },
-+	{ .compatible = "edt,edt-ft5306", },
-+	{ .compatible = "edt,edt-ft5406", },
- 	{ /* sentinel */ }
- };
- MODULE_DEVICE_TABLE(of, edt_ft5x06_of_match);
-@@ -1083,6 +1261,7 @@ MODULE_DEVICE_TABLE(of, edt_ft5x06_of_match);
- 
- static struct i2c_driver edt_ft5x06_ts_driver = {
- 	.driver = {
-+		.owner = THIS_MODULE,
- 		.name = "edt_ft5x06",
- 		.of_match_table = of_match_ptr(edt_ft5x06_of_match),
- 		.pm = &edt_ft5x06_ts_pm_ops,
-diff --git a/include/linux/input/edt-ft5x06.h b/include/linux/input/edt-ft5x06.h
-new file mode 100644
-index 0000000..8a1e0d1
---- /dev/null
-+++ b/include/linux/input/edt-ft5x06.h
-@@ -0,0 +1,24 @@
-+#ifndef _EDT_FT5X06_H
-+#define _EDT_FT5X06_H
-+
-+/*
-+ * Copyright (c) 2012 Simon Budig, <simon.budig@kernelconcepts.de>
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 as published by
-+ * the Free Software Foundation.
-+ */
-+
-+struct edt_ft5x06_platform_data {
-+	int irq_pin;
-+	int reset_pin;
-+
-+	/* startup defaults for operational parameters */
-+	bool use_parameters;
-+	u8 gain;
-+	u8 threshold;
-+	u8 offset;
-+	u8 report_rate;
-+};
-+
-+#endif /* _EDT_FT5X06_H */

+ 0 - 62
board/GfA/Display001/linux_4.4.145_bone23/linux-006-RS485_udelay_before_tx.patch

@@ -1,62 +0,0 @@
-diff --git a/Documentation/serial/serial-rs485.txt b/Documentation/serial/serial-rs485.txt
-index 2253b8b45a74..6225a3b759de 100644
---- a/Documentation/serial/serial-rs485.txt
-+++ b/Documentation/serial/serial-rs485.txt
-@@ -73,6 +73,9 @@
- 	/* Set rts delay before send, if needed: */
- 	rs485conf.delay_rts_before_send = ...;
- 
-+	/* Set udelay_before_enable_tx, if needed: */
-+	rs485conf.udelay_before_enable_tx = ...;
-+
- 	/* Set rts delay after send, if needed: */
- 	rs485conf.delay_rts_after_send = ...;
- 
-diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
-index 2c6c06f3d61c..19f51585641b 100644
---- a/drivers/tty/serial/omap-serial.c
-+++ b/drivers/tty/serial/omap-serial.c
-@@ -423,6 +423,8 @@ static void serial_omap_start_tx(struct uart_port *port)
- 		/* if rts not already enabled */
- 		res = (port->rs485.flags & SER_RS485_RTS_ON_SEND) ? 1 : 0;
- 		if (gpio_get_value(up->rts_gpio) != res) {
-+			if(port->rs485.udelay_before_enable_tx)
-+				udelay(port->rs485.udelay_before_enable_tx);
- 			gpio_set_value(up->rts_gpio, res);
- 			if (port->rs485.delay_rts_before_send > 0)
- 				mdelay(port->rs485.delay_rts_before_send);
-@@ -1545,7 +1547,7 @@ static int serial_omap_probe_rs485(struct uart_omap_port *up,
- 				   struct device_node *np)
- {
- 	struct serial_rs485 *rs485conf = &up->port.rs485;
--	u32 rs485_delay[2];
-+	u32 rs485_delay[3];
- 	enum of_gpio_flags flags;
- 	int ret;
- 
-@@ -1577,9 +1579,10 @@ static int serial_omap_probe_rs485(struct uart_omap_port *up,
- 	}
- 
- 	if (of_property_read_u32_array(np, "rs485-rts-delay",
--				    rs485_delay, 2) == 0) {
-+				    rs485_delay, 3) == 0) {
- 		rs485conf->delay_rts_before_send = rs485_delay[0];
- 		rs485conf->delay_rts_after_send = rs485_delay[1];
-+		rs485conf->udelay_before_enable_tx = rs485_delay[2];
- 	}
- 
- 	if (of_property_read_bool(np, "rs485-rx-during-tx"))
-diff --git a/include/uapi/linux/serial.h b/include/uapi/linux/serial.h
-index 5d59c3ebf459..d100bdac93c2 100644
---- a/include/uapi/linux/serial.h
-+++ b/include/uapi/linux/serial.h
-@@ -124,7 +124,8 @@ struct serial_rs485 {
- #define SER_RS485_RX_DURING_TX		(1 << 4)
- 	__u32	delay_rts_before_send;	/* Delay before send (milliseconds) */
- 	__u32	delay_rts_after_send;	/* Delay after send (milliseconds) */
--	__u32	padding[5];		/* Memory is cheap, new structs
-+	__u32   udelay_before_enable_tx;/* Delay before switching to tx direction */
-+	__u32	padding[4];		/* Memory is cheap, new structs
- 					   are a royal PITA .. */
- };
- 

+ 0 - 13
board/GfA/Display001/linux_4.4.145_bone23/linux-007-am33xx.dtsi_add_operating_points.patch

@@ -1,13 +0,0 @@
-diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
-index 1a499bb..858d21f 100644
---- a/arch/arm/boot/dts/am33xx.dtsi
-+++ b/arch/arm/boot/dts/am33xx.dtsi
-@@ -52,6 +52,8 @@
- 			 */
- 			operating-points = <
- 				/* kHz    uV */
-+				1000000	1351000
-+				800000	1285000
- 				720000  1285000
- 				600000  1225000
- 				500000  1125000

+ 0 - 134
board/GfA/Display001/linux_4.4.145_bone23/linux-020-edt-touch-make-gain-offset-threshold-writeable.patch

@@ -1,134 +0,0 @@
---- a/drivers/input/touchscreen/edt-ft5x06.c	2017-09-26 15:27:56.685769326 +0200
-+++ b/drivers/input/touchscreen/edt-ft5x06.c	2017-09-25 08:00:57.530768619 +0200
-@@ -639,6 +639,111 @@
- 	return 0;
- }
- 
-+
-+static int edt_ft5x06_debugfs_threshold_get(void *data, u64 *threshold)
-+{
-+	struct edt_ft5x06_ts_data *tsdata = data;
-+
-+	*threshold = (u64)(tsdata->threshold);
-+
-+	return 0;
-+};
-+
-+static int edt_ft5x06_debugfs_threshold_set(void *data, u64 threshold)
-+{
-+	struct edt_ft5x06_ts_data *tsdata = data;
-+	struct edt_reg_addr *reg_addr = &tsdata->reg_addr;
-+	int retval = 0;
-+
-+/*	if (param > ??????)
-+		return -ERANGE;
-+*/
-+	mutex_lock(&tsdata->mutex);
-+	
-+	tsdata->threshold = (int)(threshold);
-+	edt_ft5x06_register_write(tsdata, reg_addr->reg_threshold,
-+				  tsdata->threshold);
-+	tsdata->threshold = edt_ft5x06_register_read(tsdata,
-+						     reg_addr->reg_threshold);
-+
-+	mutex_unlock(&tsdata->mutex);
-+
-+	return retval;
-+};
-+
-+DEFINE_SIMPLE_ATTRIBUTE(debugfs_threshold_fops, edt_ft5x06_debugfs_threshold_get,
-+			edt_ft5x06_debugfs_threshold_set, "%llu\n");
-+
-+
-+static int edt_ft5x06_debugfs_gain_get(void *data, u64 *gain)
-+{
-+	struct edt_ft5x06_ts_data *tsdata = data;
-+
-+	*gain = (u64)(tsdata->gain);
-+
-+	return 0;
-+};
-+
-+static int edt_ft5x06_debugfs_gain_set(void *data, u64 gain)
-+{
-+	struct edt_ft5x06_ts_data *tsdata = data;
-+	struct edt_reg_addr *reg_addr = &tsdata->reg_addr;
-+	int retval = 0;
-+
-+/*	if (param > ??????)
-+		return -ERANGE;
-+*/
-+	mutex_lock(&tsdata->mutex);
-+	
-+	tsdata->gain = (int)(gain);
-+	edt_ft5x06_register_write(tsdata, reg_addr->reg_gain,
-+				  tsdata->gain);
-+	tsdata->gain = edt_ft5x06_register_read(tsdata,
-+						     reg_addr->reg_gain);
-+
-+	mutex_unlock(&tsdata->mutex);
-+
-+	return retval;
-+};
-+
-+DEFINE_SIMPLE_ATTRIBUTE(debugfs_gain_fops, edt_ft5x06_debugfs_gain_get,
-+			edt_ft5x06_debugfs_gain_set, "%llu\n");
-+
-+
-+static int edt_ft5x06_debugfs_offset_get(void *data, u64 *offset)
-+{
-+	struct edt_ft5x06_ts_data *tsdata = data;
-+
-+	*offset = (u64)(tsdata->offset);
-+
-+	return 0;
-+};
-+
-+static int edt_ft5x06_debugfs_offset_set(void *data, u64 offset)
-+{
-+	struct edt_ft5x06_ts_data *tsdata = data;
-+	struct edt_reg_addr *reg_addr = &tsdata->reg_addr;
-+	int retval = 0;
-+
-+/*	if (param > ??????)
-+		return -ERANGE;
-+*/
-+	mutex_lock(&tsdata->mutex);
-+	
-+	tsdata->offset = (int)(offset);
-+	edt_ft5x06_register_write(tsdata, reg_addr->reg_offset,
-+				  tsdata->offset);
-+	tsdata->offset = edt_ft5x06_register_read(tsdata,
-+						     reg_addr->reg_offset);
-+
-+	mutex_unlock(&tsdata->mutex);
-+
-+	return retval;
-+};
-+
-+DEFINE_SIMPLE_ATTRIBUTE(debugfs_offset_fops, edt_ft5x06_debugfs_offset_get,
-+			edt_ft5x06_debugfs_offset_set, "%llu\n");
-+
- static int edt_ft5x06_debugfs_mode_get(void *data, u64 *mode)
- {
- 	struct edt_ft5x06_ts_data *tsdata = data;
-@@ -766,10 +871,19 @@
- 
- 	debugfs_create_u16("num_x", S_IRUSR, tsdata->debug_dir, &tsdata->num_x);
- 	debugfs_create_u16("num_y", S_IRUSR, tsdata->debug_dir, &tsdata->num_y);
-+
-+/*
- 	debugfs_create_u32("threshold", S_IRUSR, tsdata->debug_dir, &tsdata->threshold);
- 	debugfs_create_u32("gain", S_IRUSR, tsdata->debug_dir, &tsdata->gain);
- 	debugfs_create_u32("offset", S_IRUSR, tsdata->debug_dir, &tsdata->offset);
-+*/
- 
-+	debugfs_create_file("threshold", S_IRUSR | S_IWUSR,
-+			    tsdata->debug_dir, tsdata, &debugfs_threshold_fops);
-+	debugfs_create_file("gain", S_IRUSR | S_IWUSR,
-+			    tsdata->debug_dir, tsdata, &debugfs_gain_fops);
-+	debugfs_create_file("offset", S_IRUSR | S_IWUSR,
-+			    tsdata->debug_dir, tsdata, &debugfs_offset_fops);
- 
- 	debugfs_create_file("mode", S_IRUSR | S_IWUSR,
- 			    tsdata->debug_dir, tsdata, &debugfs_mode_fops);

+ 0 - 18
board/GfA/Display001/linux_4.4.145_bone23/linux-021-remove_endless_loop_in_rtc-ds1307_driver.patch

@@ -1,18 +0,0 @@
-diff -Naurp a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c
---- a/drivers/rtc/rtc-ds1307.c	2018-02-19 11:38:04.000000000 +0100
-+++ b/drivers/rtc/rtc-ds1307.c	2018-03-08 11:58:06.832574443 +0100
-@@ -1093,11 +1093,11 @@ read_rtc:
- 		}
- 
- 		/* clock halted?  turn it on, so clock can tick. */
--		if (!(tmp & MCP794XX_BIT_ST)) {
-+		if (!(ds1307->regs[3] & 0x20)) { /* check OSC Bit from REG 3 */
-+			dev_warn(&client->dev, "OSC NOT RUNNING !SET TIME!\n");
- 			i2c_smbus_write_byte_data(client, DS1307_REG_SECS,
- 					MCP794XX_BIT_ST);
--			dev_warn(&client->dev, "SET TIME!\n");
--			goto read_rtc;
-+//			goto read_rtc; /* dont loop endless osc failure */
- 		}
- 
- 		break;

+ 0 - 108
board/GfA/Display001/linux_4.4.145_bone23/linux-022-add-dts-flags-to-atmel-mxt-touch.patch

@@ -1,108 +0,0 @@
-diff -Naurp a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
---- a/drivers/input/touchscreen/atmel_mxt_ts.c	2018-01-20 11:42:13.000000000 +0100
-+++ b/drivers/input/touchscreen/atmel_mxt_ts.c	2018-01-25 09:03:33.876115406 +0100
-@@ -24,6 +24,7 @@
- #include <linux/i2c.h>
- #include <linux/platform_data/atmel_mxt_ts.h>
- #include <linux/input/mt.h>
-+#include <linux/input/touchscreen.h>
- #include <linux/interrupt.h>
- #include <linux/of.h>
- #include <linux/slab.h>
-@@ -216,6 +217,9 @@ struct mxt_data {
- 	unsigned int irq;
- 	unsigned int max_x;
- 	unsigned int max_y;
-+	bool invert_x;
-+	bool invert_y;
-+	bool swap_x_y;
- 	bool xy_switch;
- 	bool in_bootloader;
- 	u16 mem_size;
-@@ -257,6 +261,22 @@ struct mxt_data {
- 	struct completion crc_completion;
- };
- 
-+static void mxt_apply_prop_to_x_y(const struct mxt_data *data,
-+                             int *x, int *y)
-+{
-+        if (data->invert_x)
-+                *x = data->max_x - *x;
-+
-+        if (data->invert_y)
-+                *y = data->max_y - *y;
-+
-+        if (data->swap_x_y)
-+                swap(*x, *y);
-+}
-+
-+
-+
-+
- static size_t mxt_obj_size(const struct mxt_object *obj)
- {
- 	return obj->size_minus_one + 1;
-@@ -741,6 +761,8 @@ static void mxt_proc_t9_message(struct m
- 
- 		/* Touch active */
- 		input_mt_report_slot_state(input_dev, MT_TOOL_FINGER, 1);
-+		mxt_apply_prop_to_x_y(data, &x, &y);
-+		
- 		input_report_abs(input_dev, ABS_MT_POSITION_X, x);
- 		input_report_abs(input_dev, ABS_MT_POSITION_Y, y);
- 		input_report_abs(input_dev, ABS_MT_PRESSURE, amplitude);
-@@ -760,8 +782,8 @@ static void mxt_proc_t100_message(struct
- 	int id;
- 	u8 status;
- 	u8 type = 0;
--	u16 x;
--	u16 y;
-+	/*u16*/ int x;
-+	/*u16*/ int y;
- 	int distance = 0;
- 	int tool = 0;
- 	u8 major = 0;
-@@ -845,6 +867,7 @@ static void mxt_proc_t100_message(struct
- 			id, type, x, y, major, pressure, orientation);
- 
- 		input_mt_report_slot_state(input_dev, tool, 1);
-+		mxt_apply_prop_to_x_y(data, &x, &y);
- 		input_report_abs(input_dev, ABS_MT_POSITION_X, x);
- 		input_report_abs(input_dev, ABS_MT_POSITION_Y, y);
- 		input_report_abs(input_dev, ABS_MT_TOUCH_MAJOR, major);
-@@ -1778,7 +1801,8 @@ static int mxt_initialize_input_device(s
- 	int error;
- 	unsigned int num_mt_slots;
- 	unsigned int mt_flags = 0;
--
-+	struct device_node *np = dev->of_node;
-+	
- 	switch (data->multitouch) {
- 	case MXT_TOUCH_MULTI_T9:
- 		num_mt_slots = data->T9_reportid_max - data->T9_reportid_min + 1;
-@@ -1818,6 +1842,7 @@ static int mxt_initialize_input_device(s
- 		return -ENOMEM;
- 	}
- 
-+
- 	input_dev->name = "Atmel maXTouch Touchscreen";
- 	input_dev->phys = data->phys;
- 	input_dev->id.bustype = BUS_I2C;
-@@ -1908,6 +1933,17 @@ static int mxt_initialize_input_device(s
- 
- 	data->input_dev = input_dev;
- 
-+	if (np) {
-+		data->invert_x = of_property_read_bool(np, "invert_x")?1:0;
-+		data->invert_y = of_property_read_bool(np, "invert_y")?1:0;
-+        	data->swap_x_y = of_property_read_bool(np, "swap_x_y")?1:0;
-+        	
-+        	dev_info(dev, "loaded toucscreen properties\n");
-+        	dev_info(dev, "touchscreen-inverted-x %d\n", data->invert_x);
-+        	dev_info(dev, "touchscreen-inverted-y %d\n", data->invert_y);
-+        	dev_info(dev, "touchscreen-swap-x-y %d\n", data->swap_x_y);
-+        }
-+
- 	return 0;
- 
- err_free_mem:

+ 0 - 47
board/GfA/Display001/linux_4.4.145_bone23/linux-023-edt-ft5x06-shared-irq.disabled__patch

@@ -1,47 +0,0 @@
-diff -Naurp a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
---- a/drivers/input/touchscreen/edt-ft5x06.c	2018-01-30 21:28:53.696245462 +0100
-+++ b/drivers/input/touchscreen/edt-ft5x06.c	2018-01-30 21:28:19.220223683 +0100
-@@ -188,6 +188,7 @@ static irqreturn_t edt_ft5x06_ts_isr(int
- 	int i, type, x, y, id;
- 	int offset, tplen, datalen;
- 	int error;
-+	
- 
- 	switch (tsdata->version) {
- 	case M06:
-@@ -532,7 +533,7 @@ static int edt_ft5x06_factory_mode(struc
- 	int ret;
- 	int error;
- 
--	disable_irq(client->irq);
-+//	disable_irq(client->irq);
- 
- 	if (!tsdata->raw_buffer) {
- 		tsdata->raw_bufsize = tsdata->num_x * tsdata->num_y *
-@@ -577,7 +578,7 @@ err_out:
- 	kfree(tsdata->raw_buffer);
- 	tsdata->raw_buffer = NULL;
- 	tsdata->factory_mode = false;
--	enable_irq(client->irq);
-+//	enable_irq(client->irq);
- 
- 	return error;
- 
-@@ -634,7 +635,7 @@ static int edt_ft5x06_work_mode(struct e
- 		edt_ft5x06_register_write(tsdata, reg_addr->reg_report_rate,
- 				  tsdata->report_rate);
- 
--	enable_irq(client->irq);
-+//	enable_irq(client->irq);
- 
- 	return 0;
- }
-@@ -1293,7 +1294,7 @@ static int edt_ft5x06_ts_probe(struct i2
- 
- 	error = devm_request_threaded_irq(&client->dev, client->irq, NULL,
- 					edt_ft5x06_ts_isr,
--					IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
-+					IRQF_TRIGGER_LOW | IRQF_ONESHOT | IRQF_SHARED,
- 					client->name, tsdata);
- 	if (error) {
- 		dev_err(&client->dev, "Unable to request touchscreen IRQ.\n");

+ 0 - 65
board/GfA/Display001/linux_4.4.145_bone23/linux-024-edt-ft5x06-fix-report-rate-for-M09.patch

@@ -1,65 +0,0 @@
-diff -Naurp a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
---- a/drivers/input/touchscreen/edt-ft5x06.c	2018-02-13 23:46:04.845194636 +0100
-+++ b/drivers/input/touchscreen/edt-ft5x06.c	2018-02-13 23:45:01.705110745 +0100
-@@ -53,6 +53,7 @@
- #define M09_REGISTER_OFFSET		0x93
- #define M09_REGISTER_NUM_X		0x94
- #define M09_REGISTER_NUM_Y		0x95
-+#define M09_REGISTER_REPORT_RATE	0x88
- 
- #define M12_REGISTER_THRESHOLD		0x80
- #define M12_REGISTER_GAIN		0x92
-@@ -510,7 +511,7 @@ static EDT_ATTR(offset, S_IWUSR | S_IRUG
- static EDT_ATTR(threshold, S_IWUSR | S_IRUGO, WORK_REGISTER_THRESHOLD,
- 		M09_REGISTER_THRESHOLD, M12_REGISTER_THRESHOLD, 1, 255);
- static EDT_ATTR(report_rate, S_IWUSR | S_IRUGO, WORK_REGISTER_REPORT_RATE,
--		NO_REGISTER, M12_REGISTER_REPORT_RATE, 3, 14);
-+		M09_REGISTER_REPORT_RATE, M12_REGISTER_REPORT_RATE, 3, 14);
- 
- static struct attribute *edt_ft5x06_attrs[] = {
- 	&edt_ft5x06_attr_gain.dattr.attr,
-@@ -530,7 +531,7 @@ static int edt_ft5x06_factory_mode(struc
- 	struct i2c_client *client = tsdata->client;
- 	int retries = EDT_SWITCH_MODE_RETRIES;
- 	int ret;
--	int error;
-+	int error = 0;
- 
- 	disable_irq(client->irq);
- 
-@@ -570,7 +571,8 @@ static int edt_ft5x06_factory_mode(struc
- 		error = -EIO;
- 		goto err_out;
- 	}
--
-+	
-+	printk(KERN_INFO "EDT-TC: %s: set to factory mode\n", __func__);
- 	return 0;
- 
- err_out:
-@@ -891,7 +893,8 @@ edt_ft5x06_ts_prepare_debugfs(struct edt
- 			    tsdata->debug_dir, tsdata, &debugfs_raw_data_fops);
- 			    
- 	if (reg_addr->reg_report_rate != NO_REGISTER)
--           debugfs_create_u32("report_rate", S_IRUSR, tsdata->debug_dir, &tsdata->report_rate);
-+           debugfs_create_u32("report_rate", S_IRUSR, tsdata->debug_dir, 
-+           	&tsdata->report_rate);
-            
- 	debugfs_create_u32("invert_x", S_IRUSR | S_IWUSR,
- 			    tsdata->debug_dir, &tsdata->invert_x);
-@@ -989,7 +992,6 @@ static int edt_ft5x06_ts_identify(struct
- 	if (error)
- 		return error;
- 
--        printk(KERN_INFO "EDT-TC:: %s ::-----%s----\n", __func__, rdbuf);
- 	/* if we find something consistent, stay with that assumption
- 	 * at least M09 won't send 3 bytes here
- 	 */
-@@ -1148,6 +1150,7 @@ edt_ft5x06_ts_set_regs(struct edt_ft5x06
- 
- 	case M09:
- 		reg_addr->reg_threshold = M09_REGISTER_THRESHOLD;
-+		reg_addr->reg_report_rate = M09_REGISTER_REPORT_RATE;
- 		reg_addr->reg_gain = M09_REGISTER_GAIN;
- 		reg_addr->reg_offset = M09_REGISTER_OFFSET;
- 		reg_addr->reg_num_x = M09_REGISTER_NUM_X;

+ 0 - 20
board/GfA/Display001/linux_4.4.145_bone23/linux-025-edt-ft5x06-fix-M9-M12-registercount-on-write.patch

@@ -1,20 +0,0 @@
-diff -Naurp a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
---- a/drivers/input/touchscreen/edt-ft5x06.c	2018-02-20 20:55:48.828441552 +0100
-+++ b/drivers/input/touchscreen/edt-ft5x06.c	2018-02-20 20:55:02.332357749 +0100
-@@ -292,7 +292,6 @@ static int edt_ft5x06_register_write(str
- 	case M06:
- 		wrbuf[0] = tsdata->factory_mode ? 0xf3 : 0xfc;
- 		wrbuf[1] = tsdata->factory_mode ? addr & 0x7f : addr & 0x3f;
--		wrbuf[1] = tsdata->factory_mode ? addr & 0x7f : addr & 0x3f;
- 		wrbuf[2] = value;
- 		wrbuf[3] = wrbuf[0] ^ wrbuf[1] ^ wrbuf[2];
- 		return edt_ft5x06_ts_readwrite(tsdata->client, 4, wrbuf, 0, NULL);
-@@ -302,7 +301,7 @@ static int edt_ft5x06_register_write(str
- 		wrbuf[0] = addr;
- 		wrbuf[1] = value;
- 
--		return edt_ft5x06_ts_readwrite(tsdata->client, 3,
-+		return edt_ft5x06_ts_readwrite(tsdata->client, 2,
- 					wrbuf, 0, NULL);
- 
- 	default:

+ 0 - 39
board/GfA/Display001/linux_4.4.145_bone23/linux-026-gpio-pca953x-sitara-i2c-quirks.patch

@@ -1,39 +0,0 @@
-diff -Naurp a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c
---- a/drivers/gpio/gpio-pca953x.c	2018-03-05 08:25:33.000000000 +0100
-+++ b/drivers/gpio/gpio-pca953x.c	2018-03-10 21:16:09.597556913 +0100
-@@ -123,10 +123,16 @@ static int pca953x_read_single(struct pc
- 
- 	ret = i2c_smbus_read_byte_data(chip->client,
- 				(reg << bank_shift) + offset);
-+
-+	if (ret < 0) { /* only one retry due to i2c quirks */
-+		/*dev_err(&chip->client->dev, "retry failed reading (single) register\n");*/
-+		ret = i2c_smbus_read_byte_data(chip->client,
-+				(reg << bank_shift) + offset);
-+	}
- 	*val = ret;
- 
- 	if (ret < 0) {
--		dev_err(&chip->client->dev, "failed reading register\n");
-+		dev_err(&chip->client->dev, "failed reading (single) register\n");
- 		return ret;
- 	}
- 
-@@ -207,7 +213,7 @@ static int pca953x_read_regs(struct pca9
- 		val[1] = (u16)ret >> 8;
- 	}
- 	if (ret < 0) {
--		dev_err(&chip->client->dev, "failed reading register\n");
-+		dev_err(&chip->client->dev, "failed reading (regs) register\n");
- 		return ret;
- 	}
- 
-@@ -315,7 +321,7 @@ static int pca953x_gpio_get_value(struct
- 		 * do unless gpio_*_value_cansleep() calls become different
- 		 * from their nonsleeping siblings (and report faults).
- 		 */
--		return 0;
-+		return 1;
- 	}
- 
- 	return (reg_val & (1u << (off % BANK_SZ))) ? 1 : 0;

+ 0 - 28
board/GfA/Display001/linux_4.4.145_bone23/linux-027-input_events_add_IN1-IN4.patch

@@ -1,28 +0,0 @@
-diff -Naurp a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
---- a/include/linux/mod_devicetable.h	2018-02-19 11:38:07.000000000 +0100
-+++ b/include/linux/mod_devicetable.h	2018-05-04 21:39:09.862508306 +0200
-@@ -291,7 +291,7 @@ struct pcmcia_device_id {
- #define INPUT_DEVICE_ID_LED_MAX		0x0f
- #define INPUT_DEVICE_ID_SND_MAX		0x07
- #define INPUT_DEVICE_ID_FF_MAX		0x7f
--#define INPUT_DEVICE_ID_SW_MAX		0x0f
-+#define INPUT_DEVICE_ID_SW_MAX		0x13
- 
- #define INPUT_DEVICE_ID_MATCH_BUS	1
- #define INPUT_DEVICE_ID_MATCH_VENDOR	2
-diff a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
---- a/include/uapi/linux/input-event-codes.h	2018-02-19 11:38:08.000000000 +0100
-+++ b/include/uapi/linux/input-event-codes.h	2018-05-04 21:36:45.066395759 +0200
-@@ -749,7 +749,11 @@
- #define SW_ROTATE_LOCK		0x0c  /* set = rotate locked/disabled */
- #define SW_LINEIN_INSERT	0x0d  /* set = inserted */
- #define SW_MUTE_DEVICE		0x0e  /* set = device disabled */
--#define SW_MAX			0x0f
-+#define SW_IO1			0x0f
-+#define SW_IO2			0x10
-+#define SW_IO3			0x11
-+#define SW_IO4			0x12
-+#define SW_MAX			0x13
- #define SW_CNT			(SW_MAX+1)
- 
- /*

+ 0 - 3583
board/GfA/Display001/linux_4.4.145_bone23/linux-030-atmel_mxt_ts_backport.patch

@@ -1,3583 +0,0 @@
-diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
-index 700ae2f..2979cf3 100644
---- a/drivers/input/touchscreen/atmel_mxt_ts.c
-+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
-@@ -4,6 +4,7 @@
-  * Copyright (C) 2010 Samsung Electronics Co.Ltd
-  * Copyright (C) 2011-2014 Atmel Corporation
-  * Copyright (C) 2012 Google, Inc.
-+ * Copyright (C) 2016 Zodiac Inflight Innovations
-  *
-  * Author: Joonyoung Shim <jy0922.shim@samsung.com>
-  *
-@@ -22,16 +23,22 @@
- #include <linux/delay.h>
- #include <linux/firmware.h>
- #include <linux/i2c.h>
--#include <linux/platform_data/atmel_mxt_ts.h>
- #include <linux/input/mt.h>
--#include <linux/input/touchscreen.h>
- #include <linux/interrupt.h>
- #include <linux/of.h>
-+#include <linux/property.h>
- #include <linux/slab.h>
-+#include <linux/gpio/consumer.h>
- #include <asm/unaligned.h>
-+#include <media/v4l2-device.h>
-+#include <media/v4l2-ioctl.h>
-+#include <media/videobuf2-v4l2.h>
-+#include <media/videobuf2-vmalloc.h>
- 
- /* Firmware files */
- #define MXT_FW_NAME		"maxtouch.fw"
-+
-+/* Configuration file */
- #define MXT_CFG_NAME		"maxtouch.cfg"
- #define MXT_CFG_MAGIC		"OBP_RAW V1"
- 
-@@ -41,35 +48,62 @@
- #define MXT_INFO_CHECKSUM_SIZE	3
- #define MXT_MAX_BLOCK_WRITE	256
- 
--/* Object types */
--#define MXT_DEBUG_DIAGNOSTIC_T37	37
-+/* Objects */
- #define MXT_GEN_MESSAGE_T5		5
- #define MXT_GEN_COMMAND_T6		6
- #define MXT_GEN_POWER_T7		7
- #define MXT_GEN_ACQUIRE_T8		8
--#define MXT_GEN_DATASOURCE_T53		53
- #define MXT_TOUCH_MULTI_T9		9
-+#define MXT_PROCI_KEYTHRESHOLD_T14	14
- #define MXT_TOUCH_KEYARRAY_T15		15
-+#define MXT_SPT_COMMSCONFIG_T18		18
-+#define MXT_SPT_GPIOPWM_T19		19
- #define MXT_TOUCH_PROXIMITY_T23		23
- #define MXT_TOUCH_PROXKEY_T52		52
- #define MXT_PROCI_GRIPFACE_T20		20
- #define MXT_PROCG_NOISE_T22		22
- #define MXT_PROCI_ONETOUCH_T24		24
-+#define MXT_SPT_SELFTEST_T25		25
- #define MXT_PROCI_TWOTOUCH_T27		27
-+#define MXT_SPT_CTECONFIG_T28		28
-+#define MXT_DEBUG_DIAGNOSTIC_T37	37
-+#define MXT_SPT_USERDATA_T38		38
- #define MXT_PROCI_GRIP_T40		40
- #define MXT_PROCI_PALM_T41		41
- #define MXT_PROCI_TOUCHSUPPRESSION_T42	42
--#define MXT_PROCI_STYLUS_T47		47
--#define MXT_PROCG_NOISESUPPRESSION_T48	48
--#define MXT_SPT_COMMSCONFIG_T18		18
--#define MXT_SPT_GPIOPWM_T19		19
--#define MXT_SPT_SELFTEST_T25		25
--#define MXT_SPT_CTECONFIG_T28		28
--#define MXT_SPT_USERDATA_T38		38
- #define MXT_SPT_DIGITIZER_T43		43
- #define MXT_SPT_MESSAGECOUNT_T44	44
- #define MXT_SPT_CTECONFIG_T46		46
--#define MXT_TOUCH_MULTITOUCHSCREEN_T100 100
-+#define MXT_PROCI_STYLUS_T47		47
-+#define MXT_PROCG_NOISESUPPRESSION_T48	48
-+#define MXT_GEN_DATASOURCE_T53		53
-+#define MXT_PROCI_SHIELDLESS_T56	56
-+#define MXT_SPT_TIMER_T61		61
-+#define MXT_PROCI_LENSBENDING_T65	65
-+#define MXT_SPT_SERIALDATACOMMAND_T68	68
-+#define MXT_SPT_DYNAMICCONFIGURATIONCONTROLLER_T70 70
-+#define MXT_SPT_DYNAMICCONFIGURATIONCONTAINER_T71  71
-+#define MXT_NOISESUPPRESSION_T72		   72
-+#define MXT_SPT_CTESCANCONFIG_T77		   77
-+#define MXT_PROCI_GLOVEDETECTION_T78		   78
-+#define MXT_SPT_TOUCHEVENTTRIGGER_T79		   79
-+#define MXT_PROCI_RETRANSMISSIONCOMPENSATION_T80   80
-+#define MXT_PROCG_NOISESUPACTIVESTYLUS_T86	   86
-+#define MXT_PROCI_SYMBOLGESTUREPROCESSOR_T92	   92
-+#define MXT_PROCI_TOUCHSEQUENCELOGGER_T93	   93
-+#define MXT_TOUCH_MULTITOUCHSCREEN_T100 	   100
-+#define MXT_SPT_AUXTOUCHCONFIG_T104		   104
-+#define MXT_PROCG_NOISESUPSELFCAP_T108		   108
-+#define MXT_SPT_SELFCAPGLOBALCONFIG_T109	   109
-+#define MXT_PROCI_ACTIVESTYLUS_T107		   107
-+#define MXT_SPT_CAPTUNINGPARAMS_T110		   110
-+#define MXT_SPT_SELFCAPCONFIG_T111		   111
-+#define MXT_PROCI_SELFCAPGRIPSUPPRESSION_T112	   112
-+#define MXT_SPT_PROXMEASURECONFIG_T113		   113
-+#define MXT_ACTIVESTYLUSMEASCONFIG_T114		   114
-+#define MXT_SPT_DATACONTAINERCTRL_T118		   118
-+#define MXT_PROCI_HOVERGESTUREPROCESSOR_T129	   129
-+#define MXT_SPT_SELCAPVOLTAGEMODE_T133		   133
- 
- /* MXT_GEN_MESSAGE_T5 object */
- #define MXT_RPTID_NOMSG		0xff
-@@ -82,12 +116,12 @@
- #define MXT_COMMAND_DIAGNOSTIC	5
- 
- /* Define for T6 status byte */
--#define MXT_T6_STATUS_RESET	(1 << 7)
--#define MXT_T6_STATUS_OFL	(1 << 6)
--#define MXT_T6_STATUS_SIGERR	(1 << 5)
--#define MXT_T6_STATUS_CAL	(1 << 4)
--#define MXT_T6_STATUS_CFGERR	(1 << 3)
--#define MXT_T6_STATUS_COMSERR	(1 << 2)
-+#define MXT_T6_STATUS_RESET	BIT(7)
-+#define MXT_T6_STATUS_OFL	BIT(6)
-+#define MXT_T6_STATUS_SIGERR	BIT(5)
-+#define MXT_T6_STATUS_CAL	BIT(4)
-+#define MXT_T6_STATUS_CFGERR	BIT(3)
-+#define MXT_T6_STATUS_COMSERR	BIT(2)
- 
- /* MXT_GEN_POWER_T7 field */
- struct t7_config {
-@@ -100,18 +134,20 @@ struct t7_config {
- 
- /* MXT_TOUCH_MULTI_T9 field */
- #define MXT_T9_CTRL		0
-+#define MXT_T9_XSIZE		3
-+#define MXT_T9_YSIZE		4
- #define MXT_T9_ORIENT		9
- #define MXT_T9_RANGE		18
- 
- /* MXT_TOUCH_MULTI_T9 status */
--#define MXT_T9_UNGRIP		(1 << 0)
--#define MXT_T9_SUPPRESS		(1 << 1)
--#define MXT_T9_AMP		(1 << 2)
--#define MXT_T9_VECTOR		(1 << 3)
--#define MXT_T9_MOVE		(1 << 4)
--#define MXT_T9_RELEASE		(1 << 5)
--#define MXT_T9_PRESS		(1 << 6)
--#define MXT_T9_DETECT		(1 << 7)
-+#define MXT_T9_UNGRIP		BIT(0)
-+#define MXT_T9_SUPPRESS		BIT(1)
-+#define MXT_T9_AMP		BIT(2)
-+#define MXT_T9_VECTOR		BIT(3)
-+#define MXT_T9_MOVE		BIT(4)
-+#define MXT_T9_RELEASE		BIT(5)
-+#define MXT_T9_PRESS		BIT(6)
-+#define MXT_T9_DETECT		BIT(7)
- 
- struct t9_range {
- 	__le16 x;
-@@ -119,36 +155,70 @@ struct t9_range {
- } __packed;
- 
- /* MXT_TOUCH_MULTI_T9 orient */
--#define MXT_T9_ORIENT_SWITCH	(1 << 0)
-+#define MXT_T9_ORIENT_SWITCH	BIT(0)
-+#define MXT_T9_ORIENT_INVERTX	BIT(1)
-+#define MXT_T9_ORIENT_INVERTY	BIT(2)
- 
- /* MXT_SPT_COMMSCONFIG_T18 */
- #define MXT_COMMS_CTRL		0
- #define MXT_COMMS_CMD		1
- 
-+/* MXT_DEBUG_DIAGNOSTIC_T37 */
-+#define MXT_DIAGNOSTIC_PAGEUP	0x01
-+#define MXT_DIAGNOSTIC_DELTAS	0x10
-+#define MXT_DIAGNOSTIC_REFS	0x11
-+#define MXT_DIAGNOSTIC_SIZE	128
-+
-+#define MXT_FAMILY_1386			160
-+#define MXT1386_COLUMNS			3
-+#define MXT1386_PAGES_PER_COLUMN	8
-+
-+struct t37_debug {
-+#ifdef CONFIG_TOUCHSCREEN_ATMEL_MXT_T37
-+	u8 mode;
-+	u8 page;
-+	u8 data[MXT_DIAGNOSTIC_SIZE];
-+#endif
-+};
-+
- /* Define for MXT_GEN_COMMAND_T6 */
- #define MXT_BOOT_VALUE		0xa5
- #define MXT_RESET_VALUE		0x01
- #define MXT_BACKUP_VALUE	0x55
-+#define MXT_BACKUP_W_STOP	0x33
-+
-+/* Define for MXT_PROCI_TOUCHSUPPRESSION_T42 */
-+#define MXT_T42_MSG_TCHSUP	BIT(0)
- 
- /* T100 Multiple Touch Touchscreen */
- #define MXT_T100_CTRL		0
- #define MXT_T100_CFG1		1
- #define MXT_T100_TCHAUX		3
-+#define MXT_T100_XSIZE		9
- #define MXT_T100_XRANGE		13
-+#define MXT_T100_YSIZE		20
- #define MXT_T100_YRANGE		24
-+#define MXT_T100_AUX_OFFSET	6
-+#define MXT_RSVD_RPTIDS		2
-+#define MXT_MIN_RPTID_SEC	18
- 
- #define MXT_T100_CFG_SWITCHXY	BIT(5)
-+#define MXT_T100_CFG_INVERTY	BIT(6)
-+#define MXT_T100_CFG_INVERTX	BIT(7)
- 
- #define MXT_T100_TCHAUX_VECT	BIT(0)
- #define MXT_T100_TCHAUX_AMPL	BIT(1)
- #define MXT_T100_TCHAUX_AREA	BIT(2)
--
- #define MXT_T100_DETECT		BIT(7)
--#define MXT_T100_TYPE_MASK	0x70
-+
-+#define MXT_T100_TYPE_MASK		0x70
-+#define MXT_T100_ENABLE_BIT_MASK	0x01
-+
- 
- enum t100_type {
- 	MXT_T100_TYPE_FINGER		= 1,
- 	MXT_T100_TYPE_PASSIVE_STYLUS	= 2,
-+	MXT_T100_TYPE_ACTIVE_STYLUS	= 3,
- 	MXT_T100_TYPE_HOVERING_FINGER	= 4,
- 	MXT_T100_TYPE_GLOVE		= 5,
- 	MXT_T100_TYPE_LARGE_TOUCH	= 6,
-@@ -160,13 +230,27 @@ enum t100_type {
- #define MXT_TOUCH_MAJOR_DEFAULT		1
- #define MXT_PRESSURE_DEFAULT		1
- 
-+/* Gen2 Active Stylus */
-+#define MXT_T107_STYLUS_STYAUX		42
-+#define MXT_T107_STYLUS_STYAUX_PRESSURE	BIT(0)
-+#define MXT_T107_STYLUS_STYAUX_PEAK	BIT(4)
-+
-+#define MXT_T107_STYLUS_HOVER		BIT(0)
-+#define MXT_T107_STYLUS_TIPSWITCH	BIT(1)
-+#define MXT_T107_STYLUS_BUTTON0		BIT(2)
-+#define MXT_T107_STYLUS_BUTTON1		BIT(3)
-+
- /* Delay times */
- #define MXT_BACKUP_TIME		50	/* msec */
-+#define MXT_RESET_GPIO_TIME	20	/* msec */
-+#define MXT_RESET_INVALID_CHG	100	/* msec */
- #define MXT_RESET_TIME		200	/* msec */
- #define MXT_RESET_TIMEOUT	3000	/* msec */
- #define MXT_CRC_TIMEOUT		1000	/* msec */
-+#define MXT_FW_FLASH_TIME	1000	/* msec */
- #define MXT_FW_RESET_TIME	3000	/* msec */
- #define MXT_FW_CHG_TIMEOUT	300	/* msec */
-+#define MXT_BOOTLOADER_WAIT	3000	/* msec */
- 
- /* Command to unlock bootloader */
- #define MXT_UNLOCK_CMD_MSB	0xaa
-@@ -180,14 +264,16 @@ enum t100_type {
- #define MXT_FRAME_CRC_PASS	0x04
- #define MXT_APP_CRC_FAIL	0x40	/* valid 7 8 bit only */
- #define MXT_BOOT_STATUS_MASK	0x3f
--#define MXT_BOOT_EXTENDED_ID	(1 << 5)
-+#define MXT_BOOT_EXTENDED_ID	BIT(5)
- #define MXT_BOOT_ID_MASK	0x1f
- 
- /* Touchscreen absolute values */
- #define MXT_MAX_AREA		0xff
--
- #define MXT_PIXELS_PER_MM	20
- 
-+/* Debug message size max */
-+#define DEBUG_MSG_MAX		200
-+
- struct mxt_info {
- 	u8 family_id;
- 	u8 variant_id;
-@@ -206,26 +292,84 @@ struct mxt_object {
- 	u8 num_report_ids;
- } __packed;
- 
-+struct mxt_dbg {
-+	u16 t37_address;
-+	u16 diag_cmd_address;
-+	struct t37_debug *t37_buf;
-+	unsigned int t37_pages;
-+	unsigned int t37_nodes;
-+
-+	struct v4l2_device v4l2;
-+	struct v4l2_pix_format format;
-+	struct video_device vdev;
-+	struct vb2_queue queue;
-+	struct mutex lock;
-+	int input;
-+};
-+
-+enum v4l_dbg_inputs {
-+	MXT_V4L_INPUT_DELTAS,
-+	MXT_V4L_INPUT_REFS,
-+	MXT_V4L_INPUT_MAX,
-+};
-+
-+static const struct v4l2_file_operations mxt_video_fops = {
-+	.owner = THIS_MODULE,
-+	.open = v4l2_fh_open,
-+	.release = vb2_fop_release,
-+	.unlocked_ioctl = video_ioctl2,
-+	.read = vb2_fop_read,
-+	.mmap = vb2_fop_mmap,
-+	.poll = vb2_fop_poll,
-+};
-+
-+enum mxt_suspend_mode {
-+	MXT_SUSPEND_DEEP_SLEEP	= 0,
-+	MXT_SUSPEND_T9_CTRL	= 1,
-+};
-+
-+/* Config update context */
-+struct mxt_cfg {
-+	u8 *raw;
-+	size_t raw_size;
-+	off_t raw_pos;
-+
-+	u8 *mem;
-+	size_t mem_size;
-+	int start_ofs;
-+
-+	struct mxt_info info;
-+};
-+
- /* Each client has this additional data */
- struct mxt_data {
- 	struct i2c_client *client;
- 	struct input_dev *input_dev;
-+	struct input_dev *input_dev_sec;
- 	char phys[64];		/* device physical location */
--	const struct mxt_platform_data *pdata;
- 	struct mxt_object *object_table;
--	struct mxt_info info;
-+	struct mxt_info *info;
-+	void *raw_info_block;
- 	unsigned int irq;
- 	unsigned int max_x;
- 	unsigned int max_y;
--	bool invert_x;
--	bool invert_y;
--	bool swap_x_y;
-+	bool invertx;
-+	bool inverty;
- 	bool xy_switch;
-+	u8 xsize;
-+	u8 ysize;
- 	bool in_bootloader;
- 	u16 mem_size;
- 	u8 t100_aux_ampl;
- 	u8 t100_aux_area;
- 	u8 t100_aux_vect;
-+	struct bin_attribute mem_access_attr;
-+	bool debug_enabled;
-+	bool debug_v2_enabled;
-+	u8 *debug_msg_data;
-+	u16 debug_msg_count;
-+	struct bin_attribute debug_msg_attr;
-+	struct mutex debug_msg_lock;
- 	u8 max_reportid;
- 	u32 config_crc;
- 	u32 info_crc;
-@@ -233,10 +377,16 @@ struct mxt_data {
- 	u8 *msg_buf;
- 	u8 t6_status;
- 	bool update_input;
-+	bool update_input_sec;
- 	u8 last_message_count;
- 	u8 num_touchids;
- 	u8 multitouch;
- 	struct t7_config t7_cfg;
-+	unsigned long t15_keystatus;
-+	u8 stylus_aux_pressure;
-+	u8 stylus_aux_peak;
-+	struct mxt_dbg dbg;
-+	struct gpio_desc *reset_gpio;
- 
- 	/* Cached parameters from object table */
- 	u16 T5_address;
-@@ -244,12 +394,52 @@ struct mxt_data {
- 	u8 T6_reportid;
- 	u16 T6_address;
- 	u16 T7_address;
-+	u16 T14_address;
-+	u16 T71_address;
- 	u8 T9_reportid_min;
- 	u8 T9_reportid_max;
--	u8 T19_reportid;
-+	u8 T15_reportid_min;
-+	u8 T15_reportid_max;
-+	u16 T18_address;
-+	u8 T19_reportid_min;
-+	u8 T24_reportid_min;
-+	u8 T24_reportid_max;
-+	u8 T25_reportid_min;
-+	u8 T27_reportid_min;
-+	u8 T27_reportid_max;
-+	u8 T42_reportid_min;
-+	u8 T42_reportid_max;
- 	u16 T44_address;
-+	u8 T46_reportid_min;	
-+	u8 T48_reportid_min;
-+	u8 T56_reportid_min;
-+	u8 T61_reportid_min;
-+	u8 T61_reportid_max;
-+	u8 T65_reportid_min;
-+	u8 T65_reportid_max;
-+	u8 T68_reportid_min;
-+	u8 T70_reportid_min;
-+	u8 T70_reportid_max;
-+	u8 T72_reportid_min;
-+	u8 T80_reportid_min;
-+	u8 T80_reportid_max;
-+	u16 T92_address;
-+	u8 T92_reportid_min;
-+	u16 T93_address;
-+	u8 T93_reportid_min;
- 	u8 T100_reportid_min;
- 	u8 T100_reportid_max;
-+	u16 T107_address;
-+	u8 T108_reportid_min;
-+	u8 T109_reportid_min;
-+	u8 T112_reportid_min;
-+	u8 T112_reportid_max;
-+	u8 T129_reportid_min;
-+	u8 T133_reportid_min;
-+	
-+	/* Cached instance parameter */
-+	u8 T100_instances;
-+	u8 T15_instances;
- 
- 	/* for fw update in bootloader */
- 	struct completion bl_completion;
-@@ -259,23 +449,24 @@ struct mxt_data {
- 
- 	/* for config update handling */
- 	struct completion crc_completion;
--};
- 
--static void mxt_apply_prop_to_x_y(const struct mxt_data *data,
--                             int *x, int *y)
--{
--        if (data->invert_x)
--                *x = data->max_x - *x;
-+	u32 *t19_keymap;
-+	unsigned int t19_num_keys;
- 
--        if (data->invert_y)
--                *y = data->max_y - *y;
-+	u32 *t15_keymap;
-+	unsigned int t15_num_keys;
- 
--        if (data->swap_x_y)
--                swap(*x, *y);
--}
-+	enum mxt_suspend_mode suspend_mode;
- 
-+	/* Indicates whether device is updating configuration */
-+	bool sysfs_updating_config;
- 
-+};
- 
-+struct mxt_vb2_buffer {
-+	struct vb2_buffer	vb;
-+	struct list_head	list;
-+};
- 
- static size_t mxt_obj_size(const struct mxt_object *obj)
- {
-@@ -298,6 +489,7 @@ static bool mxt_object_readable(unsigned int type)
- 	case MXT_TOUCH_KEYARRAY_T15:
- 	case MXT_TOUCH_PROXIMITY_T23:
- 	case MXT_TOUCH_PROXKEY_T52:
-+	case MXT_TOUCH_MULTITOUCHSCREEN_T100:
- 	case MXT_PROCI_GRIPFACE_T20:
- 	case MXT_PROCG_NOISE_T22:
- 	case MXT_PROCI_ONETOUCH_T24:
-@@ -314,6 +506,16 @@ static bool mxt_object_readable(unsigned int type)
- 	case MXT_SPT_USERDATA_T38:
- 	case MXT_SPT_DIGITIZER_T43:
- 	case MXT_SPT_CTECONFIG_T46:
-+	case MXT_PROCI_SHIELDLESS_T56:
-+	case MXT_SPT_TIMER_T61:
-+	case MXT_PROCI_LENSBENDING_T65:
-+	case MXT_SPT_DYNAMICCONFIGURATIONCONTROLLER_T70:
-+	case MXT_SPT_DYNAMICCONFIGURATIONCONTAINER_T71:
-+	case MXT_NOISESUPPRESSION_T72:
-+	case MXT_PROCI_GLOVEDETECTION_T78:
-+	case MXT_SPT_TOUCHEVENTTRIGGER_T79:
-+	case MXT_PROCI_RETRANSMISSIONCOMPENSATION_T80:
-+
- 		return true;
- 	default:
- 		return false;
-@@ -326,6 +528,136 @@ static void mxt_dump_message(struct mxt_data *data, u8 *message)
- 		data->T5_msg_size, message);
- }
- 
-+static void mxt_debug_msg_enable(struct mxt_data *data)
-+{
-+	struct device *dev = &data->client->dev;
-+
-+	if (data->debug_v2_enabled)
-+		return;
-+
-+	mutex_lock(&data->debug_msg_lock);
-+
-+	data->debug_msg_data = kcalloc(DEBUG_MSG_MAX,
-+				data->T5_msg_size, GFP_KERNEL);
-+	if (!data->debug_msg_data)
-+		return;
-+
-+	data->debug_v2_enabled = true;
-+	mutex_unlock(&data->debug_msg_lock);
-+
-+	dev_dbg(dev, "Enabled message output\n");
-+}
-+
-+static void mxt_debug_msg_disable(struct mxt_data *data)
-+{
-+	struct device *dev = &data->client->dev;
-+
-+	if (!data->debug_v2_enabled)
-+		return;
-+
-+	data->debug_v2_enabled = false;
-+
-+	mutex_lock(&data->debug_msg_lock);
-+	kfree(data->debug_msg_data);
-+	data->debug_msg_data = NULL;
-+	data->debug_msg_count = 0;
-+	mutex_unlock(&data->debug_msg_lock);
-+	dev_dbg(dev, "Disabled message output\n");
-+}
-+
-+static void mxt_debug_msg_add(struct mxt_data *data, u8 *msg)
-+{
-+	struct device *dev = &data->client->dev;
-+
-+	mutex_lock(&data->debug_msg_lock);
-+
-+	if (!data->debug_msg_data) {
-+		dev_err(dev, "No buffer!\n");
-+		return;
-+	}
-+
-+	if (data->debug_msg_count < DEBUG_MSG_MAX) {
-+		memcpy(data->debug_msg_data +
-+		       data->debug_msg_count * data->T5_msg_size,
-+		       msg,
-+		       data->T5_msg_size);
-+		data->debug_msg_count++;
-+	} else {
-+		dev_dbg(dev, "Discarding %u messages\n", data->debug_msg_count);
-+		data->debug_msg_count = 0;
-+	}
-+
-+	mutex_unlock(&data->debug_msg_lock);
-+
-+	sysfs_notify(&data->client->dev.kobj, NULL, "debug_notify");
-+}
-+
-+static ssize_t mxt_debug_msg_write(struct file *filp, struct kobject *kobj,
-+	struct bin_attribute *bin_attr, char *buf, loff_t off,
-+	size_t count)
-+{
-+	return -EIO;
-+}
-+
-+static ssize_t mxt_debug_msg_read(struct file *filp, struct kobject *kobj,
-+	struct bin_attribute *bin_attr, char *buf, loff_t off, size_t bytes)
-+{
-+	struct device *dev = container_of(kobj, struct device, kobj);
-+	struct mxt_data *data = dev_get_drvdata(dev);
-+	int count;
-+	size_t bytes_read;
-+
-+	if (!data->debug_msg_data) {
-+		dev_err(dev, "No buffer!\n");
-+		return 0;
-+	}
-+
-+	count = bytes / data->T5_msg_size;
-+
-+	if (count > DEBUG_MSG_MAX)
-+		count = DEBUG_MSG_MAX;
-+
-+	mutex_lock(&data->debug_msg_lock);
-+
-+	if (count > data->debug_msg_count)
-+		count = data->debug_msg_count;
-+
-+	bytes_read = count * data->T5_msg_size;
-+
-+	memcpy(buf, data->debug_msg_data, bytes_read);
-+	data->debug_msg_count = 0;
-+
-+	mutex_unlock(&data->debug_msg_lock);
-+
-+	return bytes_read;
-+}
-+
-+static int mxt_debug_msg_init(struct mxt_data *data)
-+{
-+	sysfs_bin_attr_init(&data->debug_msg_attr);
-+	data->debug_msg_attr.attr.name = "debug_msg";
-+	data->debug_msg_attr.attr.mode = 0666;
-+	data->debug_msg_attr.read = mxt_debug_msg_read;
-+	data->debug_msg_attr.write = mxt_debug_msg_write;
-+	data->debug_msg_attr.size = data->T5_msg_size * DEBUG_MSG_MAX;
-+
-+	if (sysfs_create_bin_file(&data->client->dev.kobj,
-+				  &data->debug_msg_attr) < 0) {
-+		dev_err(&data->client->dev, "Failed to create %s\n",
-+			data->debug_msg_attr.attr.name);
-+		return -EINVAL;
-+	}
-+
-+	return 0;
-+}
-+
-+static void mxt_debug_msg_remove(struct mxt_data *data)
-+{
-+	if (data->debug_msg_attr.attr.name)
-+		sysfs_remove_bin_file(&data->client->dev.kobj,
-+				      &data->debug_msg_attr);
-+}
-+
- static int mxt_wait_for_completion(struct mxt_data *data,
- 				   struct completion *comp,
- 				   unsigned int timeout_ms)
-@@ -373,13 +705,21 @@ static int mxt_bootloader_write(struct mxt_data *data,
- {
- 	int ret;
- 	struct i2c_msg msg;
-+	u8 *data_buf;
-+
-+	data_buf = kmalloc(count, GFP_KERNEL);
-+	if (!data_buf)
-+		return -ENOMEM;
-+	
-+	memcpy(&data_buf[0], val, count);
- 
- 	msg.addr = data->bootloader_addr;
- 	msg.flags = data->client->flags & I2C_M_TEN;
- 	msg.len = count;
--	msg.buf = (u8 *)val;
-+	msg.buf = data_buf;
- 
- 	ret = i2c_transfer(data->client->adapter, &msg, 1);
-+
- 	if (ret == 1) {
- 		ret = 0;
- 	} else {
-@@ -395,12 +735,13 @@ static int mxt_lookup_bootloader_address(struct mxt_data *data, bool retry)
- {
- 	u8 appmode = data->client->addr;
- 	u8 bootloader;
-+	u8 family_id = data->info ? data->info->family_id : 0;
- 
- 	switch (appmode) {
- 	case 0x4a:
- 	case 0x4b:
- 		/* Chips after 1664S use different scheme */
--		if (retry || data->info.family_id >= 0xa2) {
-+		if (retry || family_id >= 0xa2) {
- 			bootloader = appmode - 0x24;
- 			break;
- 		}
-@@ -420,6 +761,9 @@ static int mxt_lookup_bootloader_address(struct mxt_data *data, bool retry)
- 	}
- 
- 	data->bootloader_addr = bootloader;
-+
-+	dev_info(&data->client->dev, "Bootloader address: %x\n", bootloader);
-+
- 	return 0;
- }
- 
-@@ -621,13 +965,12 @@ static int mxt_write_reg(struct i2c_client *client, u16 reg, u8 val)
- 	return __mxt_write_reg(client, reg, 1, &val);
- }
- 
--static struct mxt_object *
--mxt_get_object(struct mxt_data *data, u8 type)
-+static struct mxt_object *mxt_get_object(struct mxt_data *data, u8 type)
- {
- 	struct mxt_object *object;
- 	int i;
- 
--	for (i = 0; i < data->info.object_num; i++) {
-+	for (i = 0; i < data->info->object_num; i++) {
- 		object = data->object_table + i;
- 		if (object->type == type)
- 			return object;
-@@ -643,13 +986,13 @@ static void mxt_proc_t6_messages(struct mxt_data *data, u8 *msg)
- 	u8 status = msg[1];
- 	u32 crc = msg[2] | (msg[3] << 8) | (msg[4] << 16);
- 
--	complete(&data->crc_completion);
--
- 	if (crc != data->config_crc) {
- 		data->config_crc = crc;
- 		dev_dbg(dev, "T6 Config Checksum: 0x%06X\n", crc);
- 	}
- 
-+	complete(&data->crc_completion);
-+
- 	/* Detect reset */
- 	if (status & MXT_T6_STATUS_RESET)
- 		complete(&data->reset_completion);
-@@ -687,15 +1030,14 @@ static int mxt_write_object(struct mxt_data *data,
- static void mxt_input_button(struct mxt_data *data, u8 *message)
- {
- 	struct input_dev *input = data->input_dev;
--	const struct mxt_platform_data *pdata = data->pdata;
- 	int i;
- 
--	for (i = 0; i < pdata->t19_num_keys; i++) {
--		if (pdata->t19_keymap[i] == KEY_RESERVED)
-+	for (i = 0; i < data->t19_num_keys; i++) {
-+		if (data->t19_keymap[i] == KEY_RESERVED)
- 			continue;
- 
- 		/* Active-low switch */
--		input_report_key(input, pdata->t19_keymap[i],
-+		input_report_key(input, data->t19_keymap[i],
- 				 !(message[1] & BIT(i)));
- 	}
- }
-@@ -703,8 +1045,14 @@ static void mxt_input_button(struct mxt_data *data, u8 *message)
- static void mxt_input_sync(struct mxt_data *data)
- {
- 	input_mt_report_pointer_emulation(data->input_dev,
--					  data->pdata->t19_num_keys);
--	input_sync(data->input_dev);
-+					  data->t19_num_keys);
-+	
-+	if (data->update_input) 
-+		input_sync(data->input_dev);
-+	
-+	if (data->update_input_sec)
-+		input_sync(data->input_dev_sec);
-+	
- }
- 
- static void mxt_proc_t9_message(struct mxt_data *data, u8 *message)
-@@ -717,6 +1065,7 @@ static void mxt_proc_t9_message(struct mxt_data *data, u8 *message)
- 	int y;
- 	int area;
- 	int amplitude;
-+	int tool;
- 
- 	id = message[0] - data->T9_reportid_min;
- 	status = message[1];
-@@ -759,10 +1108,20 @@ static void mxt_proc_t9_message(struct mxt_data *data, u8 *message)
- 			mxt_input_sync(data);
- 		}
- 
-+		/* A size of zero indicates touch is from a linked T47 Stylus */
-+		if (area == 0) {
-+			area = MXT_TOUCH_MAJOR_DEFAULT;
-+			tool = MT_TOOL_PEN;
-+		} else {
-+			tool = MT_TOOL_FINGER;
-+		}
-+
-+		/* if active, pressure must be non-zero */
-+		if (!amplitude)
-+			amplitude = MXT_PRESSURE_DEFAULT;
-+
- 		/* Touch active */
--		input_mt_report_slot_state(input_dev, MT_TOOL_FINGER, 1);
--		mxt_apply_prop_to_x_y(data, &x, &y);
--		
-+		input_mt_report_slot_state(input_dev, tool, 1);
- 		input_report_abs(input_dev, ABS_MT_POSITION_X, x);
- 		input_report_abs(input_dev, ABS_MT_POSITION_Y, y);
- 		input_report_abs(input_dev, ABS_MT_PRESSURE, amplitude);
-@@ -779,27 +1138,38 @@ static void mxt_proc_t100_message(struct mxt_data *data, u8 *message)
- {
- 	struct device *dev = &data->client->dev;
- 	struct input_dev *input_dev = data->input_dev;
--	int id;
-+	struct input_dev *input_dev_sec = data->input_dev_sec;
-+	int id = 0;
-+	int id_sec = 0;
- 	u8 status;
- 	u8 type = 0;
--	/*u16*/ int x;
--	/*u16*/ int y;
-+	u16 x;
-+	u16 y;
- 	int distance = 0;
- 	int tool = 0;
- 	u8 major = 0;
- 	u8 pressure = 0;
- 	u8 orientation = 0;
-+	bool hover = false;
-+	
-+	/* Determine id of touch messages only */
-+	id = (message[0] - data->T100_reportid_min - MXT_RSVD_RPTIDS);
-+	
-+	if (id >= MXT_MIN_RPTID_SEC) {
-+		id_sec = (message[0] - data->T100_reportid_min - MXT_MIN_RPTID_SEC - 
-+			MXT_RSVD_RPTIDS);
-+	}
- 
--	id = message[0] - data->T100_reportid_min - 2;
--
--	/* ignore SCRSTATUS events */
--	if (id < 0)
-+	/* Skip SCRSTATUS events */
-+	if (id < 0 || id_sec < 0)
- 		return;
- 
- 	status = message[1];
- 	x = get_unaligned_le16(&message[2]);
- 	y = get_unaligned_le16(&message[4]);
--
-+	
-+	/* Get other auxdata[] bytes if present */
-+	
- 	if (status & MXT_T100_DETECT) {
- 		type = (status & MXT_T100_TYPE_MASK) >> 4;
- 
-@@ -807,6 +1177,7 @@ static void mxt_proc_t100_message(struct mxt_data *data, u8 *message)
- 		case MXT_T100_TYPE_HOVERING_FINGER:
- 			tool = MT_TOOL_FINGER;
- 			distance = MXT_DISTANCE_HOVERING;
-+			hover = true;
- 
- 			if (data->t100_aux_vect)
- 				orientation = message[data->t100_aux_vect];
-@@ -817,6 +1188,7 @@ static void mxt_proc_t100_message(struct mxt_data *data, u8 *message)
- 		case MXT_T100_TYPE_GLOVE:
- 			tool = MT_TOOL_FINGER;
- 			distance = MXT_DISTANCE_ACTIVE_TOUCH;
-+			hover = false;
- 
- 			if (data->t100_aux_area)
- 				major = message[data->t100_aux_area];
-@@ -831,6 +1203,8 @@ static void mxt_proc_t100_message(struct mxt_data *data, u8 *message)
- 
- 		case MXT_T100_TYPE_PASSIVE_STYLUS:
- 			tool = MT_TOOL_PEN;
-+			distance = MXT_DISTANCE_ACTIVE_TOUCH;
-+			hover = false;
- 
- 			/*
- 			 * Passive stylus is reported with size zero so
-@@ -843,6 +1217,30 @@ static void mxt_proc_t100_message(struct mxt_data *data, u8 *message)
- 
- 			break;
- 
-+		case MXT_T100_TYPE_ACTIVE_STYLUS:
-+			/* Report input buttons */
-+			input_report_key(input_dev, BTN_STYLUS,
-+					 message[6] & MXT_T107_STYLUS_BUTTON0);
-+			input_report_key(input_dev, BTN_STYLUS2,
-+					 message[6] & MXT_T107_STYLUS_BUTTON1);
-+
-+			/* stylus in range, but position unavailable */
-+			if (!(message[6] & MXT_T107_STYLUS_HOVER))
-+				break;
-+
-+			tool = MT_TOOL_PEN;
-+			distance = MXT_DISTANCE_ACTIVE_TOUCH;
-+			major = MXT_TOUCH_MAJOR_DEFAULT;
-+
-+			if (!(message[6] & MXT_T107_STYLUS_TIPSWITCH)) {
-+				hover = true;
-+				distance = MXT_DISTANCE_HOVERING;
-+			} else if (data->stylus_aux_pressure) {
-+				pressure = message[data->stylus_aux_pressure];
-+			}
-+
-+			break;
-+
- 		case MXT_T100_TYPE_LARGE_TOUCH:
- 			/* Ignore suppressed touch */
- 			break;
-@@ -857,42 +1255,169 @@ static void mxt_proc_t100_message(struct mxt_data *data, u8 *message)
- 	 * Values reported should be non-zero if tool is touching the
- 	 * device
- 	 */
--	if (!pressure && type != MXT_T100_TYPE_HOVERING_FINGER)
-+	if (!pressure && !hover)
- 		pressure = MXT_PRESSURE_DEFAULT;
- 
--	input_mt_slot(input_dev, id);
--
-+	if (id >= MXT_MIN_RPTID_SEC) {
-+		input_mt_slot(input_dev_sec, id_sec);
-+	} else {
-+		input_mt_slot(input_dev, id);
-+	}
-+		
- 	if (status & MXT_T100_DETECT) {
--		dev_dbg(dev, "[%u] type:%u x:%u y:%u a:%02X p:%02X v:%02X\n",
-+		
-+		if (id >= MXT_MIN_RPTID_SEC) {
-+			dev_dbg(dev, "id:[%u] type:%u x:%u y:%u a:%02X p:%02X v:%02X\n",
-+			id_sec, type, x, y, major, pressure, orientation);
-+		} else {
-+			dev_dbg(dev, "id:[%u] type:%u x:%u y:%u a:%02X p:%02X v:%02X\n",
- 			id, type, x, y, major, pressure, orientation);
-+		}
-+		
-+		if (id >= MXT_MIN_RPTID_SEC) {	
-+			input_mt_report_slot_state(input_dev_sec, tool, 1);
-+		  	input_report_abs(input_dev_sec, ABS_MT_POSITION_X, x);
-+		  	input_report_abs(input_dev_sec, ABS_MT_POSITION_Y, y);
-+		  	input_report_abs(input_dev_sec, ABS_MT_TOUCH_MAJOR, major);
-+		  	input_report_abs(input_dev_sec, ABS_MT_PRESSURE, pressure);
-+		  	input_report_abs(input_dev_sec, ABS_MT_DISTANCE, distance);
-+		  	input_report_abs(input_dev_sec, ABS_MT_ORIENTATION, orientation);
-+			
-+			if (id == MXT_MIN_RPTID_SEC) {
-+				input_report_abs(input_dev_sec, ABS_X, x);
-+				input_report_abs(input_dev_sec, ABS_Y, y);
-+				input_report_key(input_dev_sec, BTN_TOUCH, 1);
-+			}
-+		} else {
-+		  	input_mt_report_slot_state(input_dev, tool, 1);
-+		  	input_report_abs(input_dev, ABS_MT_POSITION_X, x);
-+		  	input_report_abs(input_dev, ABS_MT_POSITION_Y, y);
-+		  	input_report_abs(input_dev, ABS_MT_TOUCH_MAJOR, major);
-+		  	input_report_abs(input_dev, ABS_MT_PRESSURE, pressure);
-+		  	input_report_abs(input_dev, ABS_MT_DISTANCE, distance);
-+		  	input_report_abs(input_dev, ABS_MT_ORIENTATION, orientation);
-+		}
-+	} else {
-+		 
-+		if (id >= MXT_MIN_RPTID_SEC){
-+			dev_dbg(dev, "[%u] release\n", id_sec);
- 
--		input_mt_report_slot_state(input_dev, tool, 1);
--		mxt_apply_prop_to_x_y(data, &x, &y);
--		input_report_abs(input_dev, ABS_MT_POSITION_X, x);
--		input_report_abs(input_dev, ABS_MT_POSITION_Y, y);
--		input_report_abs(input_dev, ABS_MT_TOUCH_MAJOR, major);
--		input_report_abs(input_dev, ABS_MT_PRESSURE, pressure);
--		input_report_abs(input_dev, ABS_MT_DISTANCE, distance);
--		input_report_abs(input_dev, ABS_MT_ORIENTATION, orientation);
-+			/* close out slot */
-+			input_mt_report_slot_state(input_dev_sec, 0, 0);
-+
-+			/* Set BTN_TOUCH to 0 */
-+			if (id == MXT_MIN_RPTID_SEC)
-+				input_report_key(input_dev_sec, BTN_TOUCH, 0);
-+
-+		} else {
-+			dev_dbg(dev, "[%u] release\n", id);
-+
-+			/* close out slot */
-+		  	input_mt_report_slot_state(input_dev, 0, 0);
-+		}
-+	}
-+	
-+	if (id >= MXT_MIN_RPTID_SEC) {
-+		data->update_input_sec = true;
- 	} else {
--		dev_dbg(dev, "[%u] release\n", id);
-+		data->update_input = true;
-+	}
-+}
- 
--		/* close out slot */
--		input_mt_report_slot_state(input_dev, 0, 0);
-+static void mxt_proc_t15_messages(struct mxt_data *data, u8 *msg)
-+{
-+	struct input_dev *input_dev = data->input_dev;
-+	struct device *dev = &data->client->dev;
-+	int key;
-+	bool curr_state, new_state;
-+	bool sync = false;
-+	unsigned long keystates = le32_to_cpu(msg[2]);
-+
-+	for (key = 0; key < data->t15_num_keys; key++) {
-+		curr_state = test_bit(key, &data->t15_keystatus);
-+		new_state = test_bit(key, &keystates);
-+
-+		if (!curr_state && new_state) {
-+			dev_dbg(dev, "T15 key press: %u\n", key);
-+			__set_bit(key, &data->t15_keystatus);
-+			input_event(input_dev, EV_KEY,
-+				    data->t15_keymap[key], 1);
-+			sync = true;
-+		} else if (curr_state && !new_state) {
-+			dev_dbg(dev, "T15 key release: %u\n", key);
-+			__clear_bit(key, &data->t15_keystatus);
-+			input_event(input_dev, EV_KEY,
-+				    data->t15_keymap[key], 0);
-+			sync = true;
-+		}
- 	}
- 
--	data->update_input = true;
-+	if (sync)
-+		input_sync(input_dev);
-+}
-+
-+static void mxt_proc_t42_messages(struct mxt_data *data, u8 *msg)
-+{
-+	struct device *dev = &data->client->dev;
-+	u8 status = msg[1];
-+
-+	if (status & MXT_T42_MSG_TCHSUP)
-+		dev_info(dev, "T42 suppress\n");
-+	else
-+		dev_info(dev, "T42 normal\n");
-+}
-+
-+static int mxt_proc_t48_messages(struct mxt_data *data, u8 *msg)
-+{
-+	struct device *dev = &data->client->dev;
-+	u8 status, state;
-+
-+	status = msg[1];
-+	state  = msg[4];
-+
-+	dev_dbg(dev, "T48 state %d status %02X %s%s%s%s%s\n", state, status,
-+		status & 0x01 ? "FREQCHG " : "",
-+		status & 0x02 ? "APXCHG " : "",
-+		status & 0x04 ? "ALGOERR " : "",
-+		status & 0x10 ? "STATCHG " : "",
-+		status & 0x20 ? "NLVLCHG " : "");
-+
-+	return 0;
-+}
-+
-+static void mxt_proc_t92_messages(struct mxt_data *data, u8 *msg)
-+{
-+	struct device *dev = &data->client->dev;
-+	u8 status = msg[1];
-+
-+	dev_info(dev, "T92 long stroke LSTR=%d %d\n",
-+		 (status & 0x80) ? 1 : 0,
-+		 status & 0x0F);
-+}
-+
-+static void mxt_proc_t93_messages(struct mxt_data *data, u8 *msg)
-+{
-+	struct device *dev = &data->client->dev;
-+	u8 status = msg[1];
-+
-+	dev_info(dev, "T93 report double tap %d\n", status);
- }
- 
- static int mxt_proc_message(struct mxt_data *data, u8 *message)
- {
- 	u8 report_id = message[0];
-+	bool dump = data->debug_enabled;
- 
- 	if (report_id == MXT_RPTID_NOMSG)
- 		return 0;
- 
- 	if (report_id == data->T6_reportid) {
- 		mxt_proc_t6_messages(data, message);
-+	} else if (report_id >= data->T42_reportid_min
-+		   && report_id <= data->T42_reportid_max) {
-+		mxt_proc_t42_messages(data, message);
-+	} else if (report_id == data->T48_reportid_min) {
-+		mxt_proc_t48_messages(data, message);
- 	} else if (!data->input_dev) {
- 		/*
- 		 * Do not report events if input device
-@@ -905,13 +1430,26 @@ static int mxt_proc_message(struct mxt_data *data, u8 *message)
- 	} else if (report_id >= data->T100_reportid_min &&
- 		   report_id <= data->T100_reportid_max) {
- 		mxt_proc_t100_message(data, message);
--	} else if (report_id == data->T19_reportid) {
-+	} else if (report_id == data->T19_reportid_min) {
- 		mxt_input_button(data, message);
- 		data->update_input = true;
-+	} else if (report_id >= data->T15_reportid_min
-+		   && report_id <= data->T15_reportid_max) {
-+		mxt_proc_t15_messages(data, message);
-+	} else if (report_id == data->T92_reportid_min) {
-+		mxt_proc_t92_messages(data, message);
-+	} else if (report_id == data->T93_reportid_min) {
-+		mxt_proc_t93_messages(data, message);
- 	} else {
- 		mxt_dump_message(data, message);
- 	}
- 
-+	if (dump)
-+		mxt_dump_message(data, message);
-+
-+	if (data->debug_v2_enabled)
-+		mxt_debug_msg_add(data, message);
-+
- 	return 1;
- }
- 
-@@ -993,9 +1531,14 @@ static irqreturn_t mxt_process_messages_t44(struct mxt_data *data)
- 	}
- 
- end:
--	if (data->update_input) {
-+	if (data->update_input || data->update_input_sec) {
- 		mxt_input_sync(data);
--		data->update_input = false;
-+		
-+		if (data->update_input)
-+			data->update_input = false;
-+		
-+		if (data->update_input_sec)
-+			data->update_input_sec = false;
- 	}
- 
- 	return IRQ_HANDLED;
-@@ -1016,9 +1559,14 @@ static int mxt_process_messages_until_invalid(struct mxt_data *data)
- 			return 0;
- 	} while (--tries);
- 
--	if (data->update_input) {
-+	if (data->update_input || data->update_input_sec ) {
- 		mxt_input_sync(data);
--		data->update_input = false;
-+		
-+		if(data->update_input)
-+			data->update_input = false;
-+		
-+		if(data->update_input_sec)
-+			data->update_input_sec = false;
- 	}
- 
- 	dev_err(dev, "CHG pin isn't cleared\n");
-@@ -1056,9 +1604,14 @@ static irqreturn_t mxt_process_messages(struct mxt_data *data)
- update_count:
- 	data->last_message_count = total_handled;
- 
--	if (data->update_input) {
-+	if (data->update_input || data->update_input_sec) {
- 		mxt_input_sync(data);
--		data->update_input = false;
-+		
-+		if(data->update_input)
-+			data->update_input = false;
-+		
-+		if(data->update_input_sec)
-+			data->update_input_sec = false;
- 	}
- 
- 	return IRQ_HANDLED;
-@@ -1145,7 +1698,7 @@ static int mxt_soft_reset(struct mxt_data *data)
- 		return ret;
- 
- 	/* Ignore CHG line for 100ms after reset */
--	msleep(100);
-+	msleep(MXT_RESET_INVALID_CHG);
- 
- 	mxt_acquire_irq(data);
- 
-@@ -1214,12 +1767,7 @@ static u32 mxt_calculate_crc(u8 *base, off_t start_off, off_t end_off)
- 	return crc;
- }
- 
--static int mxt_prepare_cfg_mem(struct mxt_data *data,
--			       const struct firmware *cfg,
--			       unsigned int data_pos,
--			       unsigned int cfg_start_ofs,
--			       u8 *config_mem,
--			       size_t config_mem_size)
-+static int mxt_prepare_cfg_mem(struct mxt_data *data, struct mxt_cfg *cfg)
- {
- 	struct device *dev = &data->client->dev;
- 	struct mxt_object *object;
-@@ -1230,9 +1778,9 @@ static int mxt_prepare_cfg_mem(struct mxt_data *data,
- 	u16 reg;
- 	u8 val;
- 
--	while (data_pos < cfg->size) {
-+	while (cfg->raw_pos < cfg->raw_size) {
- 		/* Read type, instance, length */
--		ret = sscanf(cfg->data + data_pos, "%x %x %x%n",
-+		ret = sscanf(cfg->raw + cfg->raw_pos, "%x %x %x%n",
- 			     &type, &instance, &size, &offset);
- 		if (ret == 0) {
- 			/* EOF */
-@@ -1241,20 +1789,20 @@ static int mxt_prepare_cfg_mem(struct mxt_data *data,
- 			dev_err(dev, "Bad format: failed to parse object\n");
- 			return -EINVAL;
- 		}
--		data_pos += offset;
-+		cfg->raw_pos += offset;
- 
- 		object = mxt_get_object(data, type);
- 		if (!object) {
- 			/* Skip object */
- 			for (i = 0; i < size; i++) {
--				ret = sscanf(cfg->data + data_pos, "%hhx%n",
-+				ret = sscanf(cfg->raw + cfg->raw_pos, "%hhx%n",
- 					     &val, &offset);
- 				if (ret != 1) {
- 					dev_err(dev, "Bad format in T%d at %d\n",
- 						type, i);
- 					return -EINVAL;
- 				}
--				data_pos += offset;
-+				cfg->raw_pos += offset;
- 			}
- 			continue;
- 		}
-@@ -1289,7 +1837,7 @@ static int mxt_prepare_cfg_mem(struct mxt_data *data,
- 		reg = object->start_address + mxt_obj_size(object) * instance;
- 
- 		for (i = 0; i < size; i++) {
--			ret = sscanf(cfg->data + data_pos, "%hhx%n",
-+			ret = sscanf(cfg->raw + cfg->raw_pos, "%hhx%n",
- 				     &val,
- 				     &offset);
- 			if (ret != 1) {
-@@ -1297,15 +1845,15 @@ static int mxt_prepare_cfg_mem(struct mxt_data *data,
- 					type, i);
- 				return -EINVAL;
- 			}
--			data_pos += offset;
-+			cfg->raw_pos += offset;
- 
- 			if (i > mxt_obj_size(object))
- 				continue;
- 
--			byte_offset = reg + i - cfg_start_ofs;
-+			byte_offset = reg + i - cfg->start_ofs;
- 
--			if (byte_offset >= 0 && byte_offset < config_mem_size) {
--				*(config_mem + byte_offset) = val;
-+			if (byte_offset >= 0 && byte_offset < cfg->mem_size) {
-+				*(cfg->mem + byte_offset) = val;
- 			} else {
- 				dev_err(dev, "Bad object: reg:%d, T%d, ofs=%d\n",
- 					reg, object->type, byte_offset);
-@@ -1317,22 +1865,21 @@ static int mxt_prepare_cfg_mem(struct mxt_data *data,
- 	return 0;
- }
- 
--static int mxt_upload_cfg_mem(struct mxt_data *data, unsigned int cfg_start,
--			      u8 *config_mem, size_t config_mem_size)
-+static int mxt_upload_cfg_mem(struct mxt_data *data, struct mxt_cfg *cfg)
- {
- 	unsigned int byte_offset = 0;
- 	int error;
- 
- 	/* Write configuration as blocks */
--	while (byte_offset < config_mem_size) {
--		unsigned int size = config_mem_size - byte_offset;
-+	while (byte_offset < cfg->mem_size) {
-+		unsigned int size = cfg->mem_size - byte_offset;
- 
- 		if (size > MXT_MAX_BLOCK_WRITE)
- 			size = MXT_MAX_BLOCK_WRITE;
- 
- 		error = __mxt_write_reg(data->client,
--					cfg_start + byte_offset,
--					size, config_mem + byte_offset);
-+					cfg->start_ofs + byte_offset,
-+					size, cfg->mem + byte_offset);
- 		if (error) {
- 			dev_err(&data->client->dev,
- 				"Config write error, ret=%d\n", error);
-@@ -1366,65 +1913,76 @@ static int mxt_init_t7_power_cfg(struct mxt_data *data);
-  *   <SIZE> - 2-byte object size as hex
-  *   <CONTENTS> - array of <SIZE> 1-byte hex values
-  */
--static int mxt_update_cfg(struct mxt_data *data, const struct firmware *cfg)
-+static int mxt_update_cfg(struct mxt_data *data, const struct firmware *fw)
- {
- 	struct device *dev = &data->client->dev;
--	struct mxt_info cfg_info;
-+	struct mxt_cfg cfg;
- 	int ret;
- 	int offset;
--	int data_pos;
- 	int i;
--	int cfg_start_ofs;
- 	u32 info_crc, config_crc, calculated_crc;
--	u8 *config_mem;
--	size_t config_mem_size;
-+	u16 crc_start = 0;
-+
-+	/* Make zero terminated copy of the OBP_RAW file */
-+	cfg.raw = kmemdup(fw->data, fw->size + 1, GFP_KERNEL);
-+	if (!cfg.raw)
-+		return -ENOMEM;
-+	cfg.raw[fw->size] = '\0';
-+	
-+	cfg.raw_size = fw->size;
- 
- 	mxt_update_crc(data, MXT_COMMAND_REPORTALL, 1);
- 
--	if (strncmp(cfg->data, MXT_CFG_MAGIC, strlen(MXT_CFG_MAGIC))) {
-+	if (strncmp(cfg.raw, MXT_CFG_MAGIC, strlen(MXT_CFG_MAGIC))) {
- 		dev_err(dev, "Unrecognised config file\n");
--		return -EINVAL;
-+		ret = -EINVAL;
-+		goto release_raw;
- 	}
- 
--	data_pos = strlen(MXT_CFG_MAGIC);
-+	cfg.raw_pos = strlen(MXT_CFG_MAGIC);
- 
- 	/* Load information block and check */
- 	for (i = 0; i < sizeof(struct mxt_info); i++) {
--		ret = sscanf(cfg->data + data_pos, "%hhx%n",
--			     (unsigned char *)&cfg_info + i,
-+		ret = sscanf(cfg.raw + cfg.raw_pos, "%hhx%n",
-+			     (unsigned char *)&cfg.info + i,
- 			     &offset);
- 		if (ret != 1) {
- 			dev_err(dev, "Bad format\n");
--			return -EINVAL;
-+			ret = -EINVAL;
-+			goto release_raw;
- 		}
- 
--		data_pos += offset;
-+		cfg.raw_pos += offset;
- 	}
- 
--	if (cfg_info.family_id != data->info.family_id) {
-+	if (cfg.info.family_id != data->info->family_id) {
- 		dev_err(dev, "Family ID mismatch!\n");
--		return -EINVAL;
-+		ret = -EINVAL;
-+		goto release_raw;
- 	}
- 
--	if (cfg_info.variant_id != data->info.variant_id) {
-+	if (cfg.info.variant_id != data->info->variant_id) {
- 		dev_err(dev, "Variant ID mismatch!\n");
--		return -EINVAL;
-+		ret = -EINVAL;
-+		goto release_raw;
- 	}
- 
- 	/* Read CRCs */
--	ret = sscanf(cfg->data + data_pos, "%x%n", &info_crc, &offset);
-+	ret = sscanf(cfg.raw + cfg.raw_pos, "%x%n", &info_crc, &offset);
- 	if (ret != 1) {
- 		dev_err(dev, "Bad format: failed to parse Info CRC\n");
--		return -EINVAL;
-+		ret = -EINVAL;
-+		goto release_raw;
- 	}
--	data_pos += offset;
-+	cfg.raw_pos += offset;
- 
--	ret = sscanf(cfg->data + data_pos, "%x%n", &config_crc, &offset);
-+	ret = sscanf(cfg.raw + cfg.raw_pos, "%x%n", &config_crc, &offset);
- 	if (ret != 1) {
- 		dev_err(dev, "Bad format: failed to parse Config CRC\n");
--		return -EINVAL;
-+		ret = -EINVAL;
-+		goto release_raw;
- 	}
--	data_pos += offset;
-+	cfg.raw_pos += offset;
- 
- 	/*
- 	 * The Info Block CRC is calculated over mxt_info and the object
-@@ -1436,7 +1994,7 @@ static int mxt_update_cfg(struct mxt_data *data, const struct firmware *cfg)
- 		if (config_crc == 0 || data->config_crc == 0) {
- 			dev_info(dev, "CRC zero, attempting to apply config\n");
- 		} else if (config_crc == data->config_crc) {
--			dev_dbg(dev, "Config CRC 0x%06X: OK\n",
-+			dev_info(dev, "Config CRC 0x%06X: OK. No update required.\n",
- 				 data->config_crc);
- 			return 0;
- 		} else {
-@@ -1449,40 +2007,48 @@ static int mxt_update_cfg(struct mxt_data *data, const struct firmware *cfg)
- 			 data->info_crc, info_crc);
- 	}
- 
-+	/* Stop T70 Dynamic Configuration before calculation of CRC */
-+
-+	mxt_update_crc(data, MXT_COMMAND_BACKUPNV, MXT_BACKUP_W_STOP);
-+
- 	/* Malloc memory to store configuration */
--	cfg_start_ofs = MXT_OBJECT_START +
--			data->info.object_num * sizeof(struct mxt_object) +
-+	cfg.start_ofs = MXT_OBJECT_START +
-+			data->info->object_num * sizeof(struct mxt_object) +
- 			MXT_INFO_CHECKSUM_SIZE;
--	config_mem_size = data->mem_size - cfg_start_ofs;
--	config_mem = kzalloc(config_mem_size, GFP_KERNEL);
--	if (!config_mem) {
--		dev_err(dev, "Failed to allocate memory\n");
--		return -ENOMEM;
-+	cfg.mem_size = data->mem_size - cfg.start_ofs;
-+	cfg.mem = kzalloc(cfg.mem_size, GFP_KERNEL);
-+	if (!cfg.mem) {
-+		ret = -ENOMEM;
-+		goto release_raw;
- 	}
- 
--	ret = mxt_prepare_cfg_mem(data, cfg, data_pos, cfg_start_ofs,
--				  config_mem, config_mem_size);
-+	ret = mxt_prepare_cfg_mem(data, &cfg);
- 	if (ret)
- 		goto release_mem;
- 
-+
- 	/* Calculate crc of the received configs (not the raw config file) */
--	if (data->T7_address < cfg_start_ofs) {
--		dev_err(dev, "Bad T7 address, T7addr = %x, config offset %x\n",
--			data->T7_address, cfg_start_ofs);
--		ret = 0;
--		goto release_mem;
--	}
-+	
-+	if (data->T14_address)
-+		crc_start = data->T14_address;
-+	else if (data->T71_address)
-+		crc_start = data->T71_address;
-+	else if (data->T7_address)
-+		crc_start = data->T7_address;
-+	else
-+		dev_warn(dev, "Could not find CRC start\n");
- 
--	calculated_crc = mxt_calculate_crc(config_mem,
--					   data->T7_address - cfg_start_ofs,
--					   config_mem_size);
-+	if (crc_start > cfg.start_ofs) {
-+		calculated_crc = mxt_calculate_crc(cfg.mem,
-+						   crc_start - cfg.start_ofs,
-+						   cfg.mem_size);
- 
--	if (config_crc > 0 && config_crc != calculated_crc)
--		dev_warn(dev, "Config CRC error, calculated=%06X, file=%06X\n",
--			 calculated_crc, config_crc);
-+		if (config_crc > 0 && config_crc != calculated_crc)
-+			dev_warn(dev, "Config CRC in file inconsistent, calculated=%06X, file=%06X\n",
-+				 calculated_crc, config_crc);
-+	}
- 
--	ret = mxt_upload_cfg_mem(data, cfg_start_ofs,
--				 config_mem, config_mem_size);
-+	ret = mxt_upload_cfg_mem(data, &cfg);
- 	if (ret)
- 		goto release_mem;
- 
-@@ -1497,25 +2063,13 @@ static int mxt_update_cfg(struct mxt_data *data, const struct firmware *cfg)
- 	/* T7 config may have changed */
- 	mxt_init_t7_power_cfg(data);
- 
-+release_raw:
-+	kfree(cfg.raw);
- release_mem:
--	kfree(config_mem);
-+	kfree(cfg.mem);
- 	return ret;
- }
- 
--static int mxt_get_info(struct mxt_data *data)
--{
--	struct i2c_client *client = data->client;
--	struct mxt_info *info = &data->info;
--	int error;
--
--	/* Read 7-byte info block starting at address 0 */
--	error = __mxt_read_reg(client, 0, sizeof(*info), info);
--	if (error)
--		return error;
--
--	return 0;
--}
--
- static void mxt_free_input_device(struct mxt_data *data)
- {
- 	if (data->input_dev) {
-@@ -1526,60 +2080,65 @@ static void mxt_free_input_device(struct mxt_data *data)
- 
- static void mxt_free_object_table(struct mxt_data *data)
- {
--	kfree(data->object_table);
-+#ifdef CONFIG_TOUCHSCREEN_ATMEL_MXT_T37
-+	video_unregister_device(&data->dbg.vdev);
-+	v4l2_device_unregister(&data->dbg.v4l2);
-+#endif
- 	data->object_table = NULL;
-+	data->info = NULL;
-+	kfree(data->raw_info_block);
-+	data->raw_info_block = NULL;
- 	kfree(data->msg_buf);
- 	data->msg_buf = NULL;
- 	data->T5_address = 0;
- 	data->T5_msg_size = 0;
- 	data->T6_reportid = 0;
- 	data->T7_address = 0;
-+	data->T14_address = 0;
-+	data->T71_address = 0;
- 	data->T9_reportid_min = 0;
- 	data->T9_reportid_max = 0;
--	data->T19_reportid = 0;
-+	data->T15_reportid_min = 0;
-+	data->T15_reportid_max = 0;
-+	data->T18_address = 0;
-+	data->T19_reportid_min = 0;
-+	data->T42_reportid_min = 0;
-+	data->T42_reportid_max = 0;
- 	data->T44_address = 0;
-+	data->T48_reportid_min = 0;
-+	data->T92_reportid_min = 0;
-+	data->T92_address = 0;
-+	data->T93_reportid_min = 0;
-+	data->T93_address = 0;
- 	data->T100_reportid_min = 0;
- 	data->T100_reportid_max = 0;
- 	data->max_reportid = 0;
- }
- 
--static int mxt_get_object_table(struct mxt_data *data)
-+static int mxt_parse_object_table(struct mxt_data *data,
-+				  struct mxt_object *object_table)
- {
- 	struct i2c_client *client = data->client;
--	size_t table_size;
--	struct mxt_object *object_table;
--	int error;
- 	int i;
- 	u8 reportid;
- 	u16 end_address;
--
--	table_size = data->info.object_num * sizeof(struct mxt_object);
--	object_table = kzalloc(table_size, GFP_KERNEL);
--	if (!object_table) {
--		dev_err(&data->client->dev, "Failed to allocate memory\n");
--		return -ENOMEM;
--	}
--
--	error = __mxt_read_reg(client, MXT_OBJECT_START, table_size,
--			object_table);
--	if (error) {
--		kfree(object_table);
--		return error;
--	}
-+	u8 num_instances;
- 
- 	/* Valid Report IDs start counting from 1 */
- 	reportid = 1;
- 	data->mem_size = 0;
--	for (i = 0; i < data->info.object_num; i++) {
-+	for (i = 0; i < data->info->object_num; i++) {
- 		struct mxt_object *object = object_table + i;
- 		u8 min_id, max_id;
- 
- 		le16_to_cpus(&object->start_address);
- 
-+		num_instances = mxt_obj_instances(object);
-+		
- 		if (object->num_report_ids) {
- 			min_id = reportid;
- 			reportid += object->num_report_ids *
--					mxt_obj_instances(object);
-+					num_instances;
- 			max_id = reportid - 1;
- 		} else {
- 			min_id = 0;
-@@ -1594,8 +2153,8 @@ static int mxt_get_object_table(struct mxt_data *data)
- 
- 		switch (object->type) {
- 		case MXT_GEN_MESSAGE_T5:
--			if (data->info.family_id == 0x80 &&
--			    data->info.version < 0x20) {
-+			if (data->info->family_id == 0x80 &&
-+			    data->info->version < 0x20) {
- 				/*
- 				 * On mXT224 firmware versions prior to V2.0
- 				 * read and discard unused CRC byte otherwise
-@@ -1615,25 +2174,114 @@ static int mxt_get_object_table(struct mxt_data *data)
- 		case MXT_GEN_POWER_T7:
- 			data->T7_address = object->start_address;
- 			break;
-+		case MXT_PROCI_KEYTHRESHOLD_T14:
-+			data->T14_address = object->start_address;
-+			break;
-+		case MXT_SPT_DYNAMICCONFIGURATIONCONTAINER_T71:
-+			data->T71_address = object->start_address;
-+			break;
- 		case MXT_TOUCH_MULTI_T9:
- 			data->multitouch = MXT_TOUCH_MULTI_T9;
-+			/* Only handle messages from first T9 instance */
- 			data->T9_reportid_min = min_id;
--			data->T9_reportid_max = max_id;
--			data->num_touchids = object->num_report_ids
--						* mxt_obj_instances(object);
-+			data->T9_reportid_max = min_id +
-+						object->num_report_ids - 1;
-+			data->num_touchids = object->num_report_ids;
-+			break;
-+		case MXT_TOUCH_KEYARRAY_T15:
-+			data->T15_reportid_min = min_id;
-+			data->T15_reportid_max = max_id;
-+			data->T15_instances = num_instances;
-+			break;
-+		case MXT_SPT_COMMSCONFIG_T18:
-+			data->T18_address = object->start_address;
-+			break;
-+		case MXT_SPT_GPIOPWM_T19:
-+			data->T19_reportid_min = min_id;
-+			break;
-+		case MXT_PROCI_ONETOUCH_T24:
-+			data->T24_reportid_min = min_id;
-+			data->T24_reportid_max = max_id;
-+			break;
-+		case MXT_SPT_SELFTEST_T25:
-+			data->T25_reportid_min = min_id;
-+			break;
-+		case MXT_PROCI_TWOTOUCH_T27:
-+			data->T27_reportid_min = min_id;
-+			data->T27_reportid_max = max_id;
-+			break;
-+		case MXT_PROCI_TOUCHSUPPRESSION_T42:
-+			data->T42_reportid_min = min_id;
-+			data->T42_reportid_max = max_id;
- 			break;
- 		case MXT_SPT_MESSAGECOUNT_T44:
- 			data->T44_address = object->start_address;
- 			break;
--		case MXT_SPT_GPIOPWM_T19:
--			data->T19_reportid = min_id;
-+		case MXT_SPT_CTECONFIG_T46:
-+			data->T46_reportid_min = min_id;
-+			break;
-+		case MXT_PROCG_NOISESUPPRESSION_T48:
-+			data->T48_reportid_min = min_id;
-+			break;
-+		case MXT_PROCI_SHIELDLESS_T56:
-+			data->T56_reportid_min = min_id;
-+			break;
-+		case MXT_SPT_TIMER_T61:
-+			data->T61_reportid_min = min_id;
-+			data->T61_reportid_max = max_id;
-+			break;
-+		case MXT_PROCI_LENSBENDING_T65:
-+			data->T65_reportid_min = min_id;
-+			data->T65_reportid_max = max_id;
-+			break;
-+		case MXT_SPT_SERIALDATACOMMAND_T68:
-+			data->T68_reportid_min = min_id;
-+			break;
-+			case MXT_SPT_DYNAMICCONFIGURATIONCONTROLLER_T70:
-+			data->T70_reportid_min = min_id;
-+			data->T70_reportid_max = max_id;
-+			break;
-+		case MXT_NOISESUPPRESSION_T72:
-+			data->T72_reportid_min = min_id;
-+			break;
-+		case MXT_PROCI_RETRANSMISSIONCOMPENSATION_T80:
-+			data->T80_reportid_min = min_id;
-+			data->T80_reportid_max = max_id;
-+			break;				
-+		case MXT_PROCI_SYMBOLGESTUREPROCESSOR_T92:
-+			data->T92_reportid_min = min_id;
-+			data->T92_address = object->start_address;
-+			break;
-+		case MXT_PROCI_TOUCHSEQUENCELOGGER_T93:
-+			data->T93_reportid_min = min_id;
-+			data->T93_address = object->start_address;
- 			break;
- 		case MXT_TOUCH_MULTITOUCHSCREEN_T100:
- 			data->multitouch = MXT_TOUCH_MULTITOUCHSCREEN_T100;
- 			data->T100_reportid_min = min_id;
- 			data->T100_reportid_max = max_id;
-+			data->T100_instances = num_instances;
- 			/* first two report IDs reserved */
--			data->num_touchids = object->num_report_ids - 2;
-+			data->num_touchids = object->num_report_ids - MXT_RSVD_RPTIDS;
-+			break;
-+		case MXT_PROCI_ACTIVESTYLUS_T107:
-+			data->T107_address = object->start_address;
-+			break;
-+		case MXT_PROCG_NOISESUPSELFCAP_T108:
-+			data->T108_reportid_min = min_id;
-+			break;
-+		case MXT_SPT_SELFCAPGLOBALCONFIG_T109:
-+			data->T109_reportid_min = min_id;
-+			break;
-+		case MXT_PROCI_SELFCAPGRIPSUPPRESSION_T112:
-+			data->T112_reportid_min = min_id;
-+			data->T112_reportid_max = max_id;
-+			break;
-+		case MXT_SPT_SELCAPVOLTAGEMODE_T133:
-+			data->T133_reportid_min = min_id;
-+			break;
-+		case MXT_PROCI_HOVERGESTUREPROCESSOR_T129:
-+			data->T129_reportid_min = min_id;
- 			break;
- 		}
- 
-@@ -1646,28 +2294,106 @@ static int mxt_get_object_table(struct mxt_data *data)
- 
- 	/* Store maximum reportid */
- 	data->max_reportid = reportid;
--
-+	
- 	/* If T44 exists, T5 position has to be directly after */
- 	if (data->T44_address && (data->T5_address != data->T44_address + 1)) {
- 		dev_err(&client->dev, "Invalid T44 position\n");
--		error = -EINVAL;
--		goto free_object_table;
-+		return -EINVAL;
- 	}
- 
- 	data->msg_buf = kcalloc(data->max_reportid,
- 				data->T5_msg_size, GFP_KERNEL);
--	if (!data->msg_buf) {
--		dev_err(&client->dev, "Failed to allocate message buffer\n");
-+	if (!data->msg_buf)
-+		return -ENOMEM;
-+
-+	return 0;
-+}
-+
-+static int mxt_read_info_block(struct mxt_data *data)
-+{
-+	struct i2c_client *client = data->client;
-+	int error;
-+	size_t size;
-+	void *id_buf, *buf;
-+	uint8_t num_objects;
-+	u32 calculated_crc;
-+	u8 *crc_ptr;
-+
-+	/* If info block already allocated, free it */
-+	if (data->raw_info_block)
-+		mxt_free_object_table(data);
-+
-+	/* Read 7-byte ID information block starting at address 0 */
-+	size = sizeof(struct mxt_info);
-+	id_buf = kzalloc(size, GFP_KERNEL);
-+	if (!id_buf)
-+		return -ENOMEM;
-+
-+	error = __mxt_read_reg(client, 0, size, id_buf);
-+	if (error)
-+		goto err_free_mem;
-+
-+	/* Resize buffer to give space for rest of info block */
-+	num_objects = ((struct mxt_info *)id_buf)->object_num;
-+	size += (num_objects * sizeof(struct mxt_object))
-+		+ MXT_INFO_CHECKSUM_SIZE;
-+
-+	buf = krealloc(id_buf, size, GFP_KERNEL);
-+	if (!buf) {
- 		error = -ENOMEM;
--		goto free_object_table;
-+		goto err_free_mem;
-+	}
-+	id_buf = buf;
-+
-+	/* Read rest of info block */
-+	error = __mxt_read_reg(client, MXT_OBJECT_START,
-+			       size - MXT_OBJECT_START,
-+			       id_buf + MXT_OBJECT_START);
-+	if (error)
-+		goto err_free_mem;
-+
-+	/* Extract & calculate checksum */
-+	crc_ptr = id_buf + size - MXT_INFO_CHECKSUM_SIZE;
-+	data->info_crc = crc_ptr[0] | (crc_ptr[1] << 8) | (crc_ptr[2] << 16);
-+
-+	calculated_crc = mxt_calculate_crc(id_buf, 0,
-+					   size - MXT_INFO_CHECKSUM_SIZE);
-+
-+	/*
-+	 * CRC mismatch can be caused by data corruption due to I2C comms
-+	 * issue or else device is not using Object Based Protocol (eg i2c-hid)
-+	 */
-+	if ((data->info_crc == 0) || (data->info_crc != calculated_crc)) {
-+		dev_err(&client->dev,
-+			"Info Block CRC error calculated=0x%06X read=0x%06X\n",
-+			calculated_crc, data->info_crc);
-+		error = -EIO;
-+		goto err_free_mem;
-+	}
-+
-+	data->raw_info_block = id_buf;
-+	data->info = (struct mxt_info *)id_buf;
-+
-+	dev_info(&client->dev,
-+		 "Family: %u Variant: %u Firmware V%u.%u.%02X Objects: %u\n",
-+		 data->info->family_id, data->info->variant_id,
-+		 data->info->version >> 4, data->info->version & 0xf,
-+		 data->info->build, data->info->object_num);
-+
-+	/* Parse object table information */
-+	error = mxt_parse_object_table(data, id_buf + MXT_OBJECT_START);
-+	if (error) {
-+		dev_err(&client->dev, "Error %d parsing object table\n", error);
-+		mxt_free_object_table(data);
-+		goto err_free_mem;
- 	}
- 
--	data->object_table = object_table;
-+	data->object_table = (struct mxt_object *)(id_buf + MXT_OBJECT_START);
- 
- 	return 0;
- 
--free_object_table:
--	mxt_free_object_table(data);
-+err_free_mem:
-+	kfree(id_buf);
- 	return error;
- }
- 
-@@ -1684,6 +2410,18 @@ static int mxt_read_t9_resolution(struct mxt_data *data)
- 		return -EINVAL;
- 
- 	error = __mxt_read_reg(client,
-+			       object->start_address + MXT_T9_XSIZE,
-+			       sizeof(data->xsize), &data->xsize);
-+	if (error)
-+		return error;
-+
-+	error = __mxt_read_reg(client,
-+			       object->start_address + MXT_T9_YSIZE,
-+			       sizeof(data->ysize), &data->ysize);
-+	if (error)
-+		return error;
-+
-+	error = __mxt_read_reg(client,
- 			       object->start_address + MXT_T9_RANGE,
- 			       sizeof(range), &range);
- 	if (error)
-@@ -1699,11 +2437,61 @@ static int mxt_read_t9_resolution(struct mxt_data *data)
- 		return error;
- 
- 	data->xy_switch = orient & MXT_T9_ORIENT_SWITCH;
-+	data->invertx = orient & MXT_T9_ORIENT_INVERTX;
-+	data->inverty = orient & MXT_T9_ORIENT_INVERTY;
-+
-+	return 0;
-+}
-+
-+static int mxt_set_up_active_stylus(struct input_dev *input_dev,
-+				    struct mxt_data *data)
-+{
-+	struct i2c_client *client = data->client;
-+	int error;
-+	struct mxt_object *object;
-+	u8 styaux;
-+	int aux;
-+	u8 ctrl;
-+
-+	object = mxt_get_object(data, MXT_PROCI_ACTIVESTYLUS_T107);
-+	if (!object)
-+		return 0;
-+
-+	error = __mxt_read_reg(client, object->start_address, 1, &ctrl);
-+	if (error)
-+		return error;
-+
-+	/* Check enable bit */
-+	if (!(ctrl & 0x01))
-+		return 0;
-+
-+	error = __mxt_read_reg(client,
-+			       object->start_address + MXT_T107_STYLUS_STYAUX,
-+			       1, &styaux);
-+	if (error)
-+		return error;
-+
-+	/* map aux bits */
-+	aux = 7;
-+
-+	if (styaux & MXT_T107_STYLUS_STYAUX_PRESSURE)
-+		data->stylus_aux_pressure = aux++;
-+
-+	if (styaux & MXT_T107_STYLUS_STYAUX_PEAK)
-+		data->stylus_aux_peak = aux++;
-+
-+	input_set_capability(input_dev, EV_KEY, BTN_STYLUS);
-+	input_set_capability(input_dev, EV_KEY, BTN_STYLUS2);
-+	input_set_abs_params(input_dev, ABS_MT_TOOL_TYPE, 0, MT_TOOL_MAX, 0, 0);
-+
-+	dev_dbg(&client->dev,
-+		"T107 active stylus, aux map pressure:%u peak:%u\n",
-+		data->stylus_aux_pressure, data->stylus_aux_peak);
- 
- 	return 0;
- }
- 
--static int mxt_read_t100_config(struct mxt_data *data)
-+static int mxt_read_t100_config(struct mxt_data *data, u8 instance)
- {
- 	struct i2c_client *client = data->client;
- 	int error;
-@@ -1711,14 +2499,28 @@ static int mxt_read_t100_config(struct mxt_data *data)
- 	u16 range_x, range_y;
- 	u8 cfg, tchaux;
- 	u8 aux;
-+	u16 obj_size = 0;
-+	u8 T100_enable;
- 
- 	object = mxt_get_object(data, MXT_TOUCH_MULTITOUCHSCREEN_T100);
- 	if (!object)
- 		return -EINVAL;
--
-+	
-+	if (instance == 2) {
-+		T100_enable = object->start_address + mxt_obj_size(object) + MXT_T100_CTRL;
-+		
-+		if ((T100_enable & MXT_T100_ENABLE_BIT_MASK) == 0x01 ){
-+			obj_size = mxt_obj_size(object);
-+		} else {
-+			dev_info(&client->dev, "T100 secondary input device not enabled\n");
-+			
-+			return 1;
-+		}	
-+	}
-+				
- 	/* read touchscreen dimensions */
- 	error = __mxt_read_reg(client,
--			       object->start_address + MXT_T100_XRANGE,
-+			       object->start_address + obj_size + MXT_T100_XRANGE,
- 			       sizeof(range_x), &range_x);
- 	if (error)
- 		return error;
-@@ -1726,30 +2528,44 @@ static int mxt_read_t100_config(struct mxt_data *data)
- 	data->max_x = get_unaligned_le16(&range_x);
- 
- 	error = __mxt_read_reg(client,
--			       object->start_address + MXT_T100_YRANGE,
-+			       object->start_address + obj_size + MXT_T100_YRANGE,
- 			       sizeof(range_y), &range_y);
- 	if (error)
- 		return error;
- 
- 	data->max_y = get_unaligned_le16(&range_y);
- 
-+	error = __mxt_read_reg(client,
-+			       object->start_address + obj_size + MXT_T100_XSIZE,
-+			       sizeof(data->xsize), &data->xsize);
-+	if (error)
-+		return error;
-+
-+	error = __mxt_read_reg(client,
-+			       object->start_address + obj_size + MXT_T100_YSIZE,
-+			       sizeof(data->ysize), &data->ysize);
-+	if (error)
-+		return error;
-+
- 	/* read orientation config */
- 	error =  __mxt_read_reg(client,
--				object->start_address + MXT_T100_CFG1,
-+				object->start_address + obj_size + MXT_T100_CFG1,
- 				1, &cfg);
- 	if (error)
- 		return error;
- 
- 	data->xy_switch = cfg & MXT_T100_CFG_SWITCHXY;
-+	data->invertx = cfg & MXT_T100_CFG_INVERTX;
-+	data->inverty = cfg & MXT_T100_CFG_INVERTY;
- 
- 	/* allocate aux bytes */
- 	error =  __mxt_read_reg(client,
--				object->start_address + MXT_T100_TCHAUX,
-+				object->start_address + obj_size+ MXT_T100_TCHAUX,
- 				1, &tchaux);
- 	if (error)
- 		return error;
- 
--	aux = 6;
-+	aux = MXT_T100_AUX_OFFSET;
- 
- 	if (tchaux & MXT_T100_TCHAUX_VECT)
- 		data->t100_aux_vect = aux++;
-@@ -1763,7 +2579,7 @@ static int mxt_read_t100_config(struct mxt_data *data)
- 	dev_dbg(&client->dev,
- 		"T100 aux mappings vect:%u ampl:%u area:%u\n",
- 		data->t100_aux_vect, data->t100_aux_ampl, data->t100_aux_area);
--
-+				
- 	return 0;
- }
- 
-@@ -1773,7 +2589,6 @@ static void mxt_input_close(struct input_dev *dev);
- static void mxt_set_up_as_touchpad(struct input_dev *input_dev,
- 				   struct mxt_data *data)
- {
--	const struct mxt_platform_data *pdata = data->pdata;
- 	int i;
- 
- 	input_dev->name = "Atmel maXTouch Touchpad";
-@@ -1787,21 +2602,136 @@ static void mxt_set_up_as_touchpad(struct input_dev *input_dev,
- 	input_abs_set_res(input_dev, ABS_MT_POSITION_Y,
- 			  MXT_PIXELS_PER_MM);
- 
--	for (i = 0; i < pdata->t19_num_keys; i++)
--		if (pdata->t19_keymap[i] != KEY_RESERVED)
-+	for (i = 0; i < data->t19_num_keys; i++)
-+		if (data->t19_keymap[i] != KEY_RESERVED)
- 			input_set_capability(input_dev, EV_KEY,
--					     pdata->t19_keymap[i]);
-+					     data->t19_keymap[i]);
-+}
-+
-+static int mxt_init_secondary_input(struct mxt_data *data)
-+{
-+	struct device *dev = &data->client->dev;
-+	struct input_dev *input_dev_sec;
-+	unsigned int num_mt_slots;
-+	unsigned int mt_flags = 0;
-+	int error;
-+	
-+	switch (data->multitouch) {
-+	case MXT_TOUCH_MULTITOUCHSCREEN_T100:
-+		num_mt_slots = data->num_touchids; 
-+		error = mxt_read_t100_config(data, 2);
-+		if (error) {
-+			dev_info(dev, "Failed to read T100 config\n");
-+			return -ENXIO;
-+		}
-+		break;
-+
-+	default:
-+		dev_err(dev, "Invalid multitouch object\n");
-+		return -EINVAL;
-+	}
-+
-+	/* Handle default values and orientation switch */
-+	if (data->max_x == 0)
-+		data->max_x = 1023;
-+
-+	if (data->max_y == 0)
-+		data->max_y = 1023;
-+
-+	if (data->xy_switch)
-+		swap(data->max_x, data->max_y);
-+
-+	dev_info(dev, "Secondary touchscreen size {x,y} = {%u,%u}\n", data->max_x, data->max_y);
-+
-+	/* Register input device */
-+	input_dev_sec = input_allocate_device();
-+	if (!input_dev_sec)
-+		return -ENOMEM;
-+
-+	input_dev_sec->name = "maXTouch Secondary Touchscreen";
-+	input_dev_sec->phys = data->phys;
-+	input_dev_sec->id.bustype = BUS_I2C;
-+	input_dev_sec->dev.parent = dev;
-+	input_dev_sec->open = mxt_input_open;
-+	input_dev_sec->close = mxt_input_close;
-+
-+	input_set_capability(input_dev_sec, EV_KEY, BTN_TOUCH);
-+
-+	/* For single touch */
-+	input_set_abs_params(input_dev_sec, ABS_X, 0, data->max_x, 0, 0);
-+	input_set_abs_params(input_dev_sec, ABS_Y, 0, data->max_y, 0, 0);
-+
-+	if ((data->multitouch == MXT_TOUCH_MULTITOUCHSCREEN_T100 &&
-+	     data->t100_aux_ampl)) {
-+		input_set_abs_params(input_dev_sec, ABS_PRESSURE, 0, 255, 0, 0);
-+	}
-+
-+	mt_flags |= INPUT_MT_DIRECT;
-+
-+	/* For multi touch */
-+	error = input_mt_init_slots(input_dev_sec, num_mt_slots, mt_flags);
-+	if (error) {
-+		dev_err(dev, "Error %d initialising slots\n", error);
-+		goto err_free_mem;
-+	}
-+
-+	if (data->multitouch == MXT_TOUCH_MULTITOUCHSCREEN_T100) {
-+		input_set_abs_params(input_dev_sec, ABS_MT_TOOL_TYPE,
-+				     0, MT_TOOL_MAX, 0, 0);
-+		input_set_abs_params(input_dev_sec, ABS_MT_DISTANCE,
-+				     MXT_DISTANCE_ACTIVE_TOUCH,
-+				     MXT_DISTANCE_HOVERING,
-+				     0, 0);
-+	}
-+
-+	input_set_abs_params(input_dev_sec, ABS_MT_POSITION_X,
-+			     0, data->max_x, 0, 0);
-+	input_set_abs_params(input_dev_sec, ABS_MT_POSITION_Y,
-+			     0, data->max_y, 0, 0);
-+
-+	if ((data->multitouch == MXT_TOUCH_MULTITOUCHSCREEN_T100 &&
-+	     data->t100_aux_area)) {
-+		input_set_abs_params(input_dev_sec, ABS_MT_TOUCH_MAJOR,
-+				     0, MXT_MAX_AREA, 0, 0);
-+	}
-+
-+	if ((data->multitouch == MXT_TOUCH_MULTITOUCHSCREEN_T100 &&
-+	     data->t100_aux_ampl)) {
-+		input_set_abs_params(input_dev_sec, ABS_MT_PRESSURE,
-+				     0, 255, 0, 0);
-+	}
-+
-+	if (data->multitouch == MXT_TOUCH_MULTITOUCHSCREEN_T100 &&
-+	    data->t100_aux_vect) {
-+		input_set_abs_params(input_dev_sec, ABS_MT_ORIENTATION,
-+				     0, 255, 0, 0);
-+	}
-+
-+	input_set_drvdata(input_dev_sec, data);
-+
-+	error = input_register_device(input_dev_sec);
-+	if (error) {
-+		dev_err(dev, "Error %d registering input device\n", error);
-+		goto err_free_mem;
-+	}
-+
-+	data->input_dev_sec = input_dev_sec;
-+
-+	return 0;
-+
-+err_free_mem:
-+	input_free_device(input_dev_sec);
-+	return error;
- }
- 
- static int mxt_initialize_input_device(struct mxt_data *data)
- {
--	const struct mxt_platform_data *pdata = data->pdata;
- 	struct device *dev = &data->client->dev;
- 	struct input_dev *input_dev;
- 	int error;
- 	unsigned int num_mt_slots;
- 	unsigned int mt_flags = 0;
--	struct device_node *np = dev->of_node;
-+	int i;
- 	
- 	switch (data->multitouch) {
- 	case MXT_TOUCH_MULTI_T9:
-@@ -1812,8 +2742,8 @@ static int mxt_initialize_input_device(struct mxt_data *data)
- 		break;
- 
- 	case MXT_TOUCH_MULTITOUCHSCREEN_T100:
--		num_mt_slots = data->num_touchids;
--		error = mxt_read_t100_config(data);
-+		num_mt_slots = (data->num_touchids);
-+		error = mxt_read_t100_config(data, 1);
- 		if (error)
- 			dev_warn(dev, "Failed to read T100 config\n");
- 		break;
-@@ -1833,15 +2763,12 @@ static int mxt_initialize_input_device(struct mxt_data *data)
- 	if (data->xy_switch)
- 		swap(data->max_x, data->max_y);
- 
--	dev_info(dev, "Touchscreen size X%uY%u\n", data->max_x, data->max_y);
-+	dev_info(dev, "Touchscreen size {x,y} = {%u,%u}\n", data->max_x, data->max_y);
- 
- 	/* Register input device */
- 	input_dev = input_allocate_device();
--	if (!input_dev) {
--		dev_err(dev, "Failed to allocate memory\n");
-+	if (!input_dev)
- 		return -ENOMEM;
--	}
--
- 
- 	input_dev->name = "Atmel maXTouch Touchscreen";
- 	input_dev->phys = data->phys;
-@@ -1863,7 +2790,7 @@ static int mxt_initialize_input_device(struct mxt_data *data)
- 	}
- 
- 	/* If device has buttons we assume it is a touchpad */
--	if (pdata->t19_num_keys) {
-+	if (data->t19_num_keys) {
- 		mxt_set_up_as_touchpad(input_dev, data);
- 		mt_flags |= INPUT_MT_POINTER;
- 	} else {
-@@ -1905,22 +2832,28 @@ static int mxt_initialize_input_device(struct mxt_data *data)
- 				     0, 255, 0, 0);
- 	}
- 
--	if (data->multitouch == MXT_TOUCH_MULTITOUCHSCREEN_T100 &&
--	    data->t100_aux_vect) {
-+	if (data->multitouch == MXT_TOUCH_MULTI_T9 ||
-+	    (data->multitouch == MXT_TOUCH_MULTITOUCHSCREEN_T100 &&
-+	    data->t100_aux_vect)) {
- 		input_set_abs_params(input_dev, ABS_MT_ORIENTATION,
- 				     0, 255, 0, 0);
- 	}
- 
-+	/* For T107 Active Stylus */
- 	if (data->multitouch == MXT_TOUCH_MULTITOUCHSCREEN_T100 &&
--	    data->t100_aux_ampl) {
--		input_set_abs_params(input_dev, ABS_MT_PRESSURE,
--				     0, 255, 0, 0);
-+	    data->T107_address) {
-+		error = mxt_set_up_active_stylus(input_dev, data);
-+		if (error)
-+			dev_warn(dev, "Failed to read T107 config\n");
- 	}
- 
--	if (data->multitouch == MXT_TOUCH_MULTITOUCHSCREEN_T100 &&
--	    data->t100_aux_vect) {
--		input_set_abs_params(input_dev, ABS_MT_ORIENTATION,
--				     0, 255, 0, 0);
-+	/* For T15 Key Array */
-+	if (data->T15_reportid_min) {
-+		data->t15_keystatus = 0;
-+
-+		for (i = 0; i < data->t15_num_keys; i++)
-+			input_set_capability(input_dev, EV_KEY,
-+					data->t15_keymap[i]);
- 	}
- 
- 	input_set_drvdata(input_dev, data);
-@@ -1933,17 +2866,6 @@ static int mxt_initialize_input_device(struct mxt_data *data)
- 
- 	data->input_dev = input_dev;
- 
--	if (np) {
--		data->invert_x = of_property_read_bool(np, "invert_x")?1:0;
--		data->invert_y = of_property_read_bool(np, "invert_y")?1:0;
--        	data->swap_x_y = of_property_read_bool(np, "swap_x_y")?1:0;
--        	
--        	dev_info(dev, "loaded toucscreen properties\n");
--        	dev_info(dev, "touchscreen-inverted-x %d\n", data->invert_x);
--        	dev_info(dev, "touchscreen-inverted-y %d\n", data->invert_y);
--        	dev_info(dev, "touchscreen-swap-x-y %d\n", data->swap_x_y);
--        }
--
- 	return 0;
- 
- err_free_mem:
-@@ -1951,6 +2873,8 @@ err_free_mem:
- 	return error;
- }
- 
-+static int mxt_sysfs_init(struct mxt_data *data);
-+static void mxt_sysfs_remove(struct mxt_data *data);
- static int mxt_configure_objects(struct mxt_data *data,
- 				 const struct firmware *cfg);
- 
-@@ -1967,7 +2891,7 @@ static int mxt_initialize(struct mxt_data *data)
- 	int error;
- 
- 	while (1) {
--		error = mxt_get_info(data);
-+		error = mxt_read_info_block(data);
- 		if (!error)
- 			break;
- 
-@@ -1998,31 +2922,21 @@ static int mxt_initialize(struct mxt_data *data)
- 		msleep(MXT_FW_RESET_TIME);
- 	}
- 
--	/* Get object table information */
--	error = mxt_get_object_table(data);
--	if (error) {
--		dev_err(&client->dev, "Error %d reading object table\n", error);
--		return error;
--	}
--
- 	error = mxt_acquire_irq(data);
- 	if (error)
--		goto err_free_object_table;
-+		return error;
- 
-+	/* Only works when driver compiled as module */
- 	error = request_firmware_nowait(THIS_MODULE, true, MXT_CFG_NAME,
- 					&client->dev, GFP_KERNEL, data,
- 					mxt_config_cb);
- 	if (error) {
- 		dev_err(&client->dev, "Failed to invoke firmware loader: %d\n",
- 			error);
--		goto err_free_object_table;
-+		return error;
- 	}
- 
- 	return 0;
--
--err_free_object_table:
--	mxt_free_object_table(data);
--	return error;
- }
- 
- static int mxt_set_t7_power_cfg(struct mxt_data *data, u8 sleep)
-@@ -2042,7 +2956,7 @@ static int mxt_set_t7_power_cfg(struct mxt_data *data, u8 sleep)
- 	if (error)
- 		return error;
- 
--	dev_dbg(dev, "Set T7 ACTV:%d IDLE:%d\n",
-+	dev_dbg(dev, "Set T7 ACTV:%d IDLE:%d\n",	
- 		new_config->active, new_config->idle);
- 
- 	return 0;
-@@ -2079,48 +2993,478 @@ recheck:
- 	return 0;
- }
- 
--static int mxt_configure_objects(struct mxt_data *data,
--				 const struct firmware *cfg)
-+#ifdef CONFIG_TOUCHSCREEN_ATMEL_MXT_T37
-+static u16 mxt_get_debug_value(struct mxt_data *data, unsigned int x,
-+			       unsigned int y)
- {
--	struct device *dev = &data->client->dev;
--	struct mxt_info *info = &data->info;
--	int error;
--
--	error = mxt_init_t7_power_cfg(data);
--	if (error) {
--		dev_err(dev, "Failed to initialize power cfg\n");
--		return error;
-+	struct mxt_info *info = data->info;
-+	struct mxt_dbg *dbg = &data->dbg;
-+	unsigned int ofs, page;
-+	unsigned int col = 0;
-+	unsigned int col_width;
-+
-+	if (info->family_id == MXT_FAMILY_1386) {
-+		col_width = info->matrix_ysize / MXT1386_COLUMNS;
-+		col = y / col_width;
-+		y = y % col_width;
-+	} else {
-+		col_width = info->matrix_ysize;
- 	}
- 
--	if (cfg) {
--		error = mxt_update_cfg(data, cfg);
--		if (error)
--			dev_warn(dev, "Error %d updating config\n", error);
--	}
-+	ofs = (y + (x * col_width)) * sizeof(u16);
-+	page = ofs / MXT_DIAGNOSTIC_SIZE;
-+	ofs %= MXT_DIAGNOSTIC_SIZE;
- 
--	if (data->multitouch) {
--		error = mxt_initialize_input_device(data);
--		if (error)
--			return error;
--	} else {
--		dev_warn(dev, "No touch object detected\n");
--	}
-+	if (info->family_id == MXT_FAMILY_1386)
-+		page += col * MXT1386_PAGES_PER_COLUMN;
- 
--	dev_info(dev,
--		 "Family: %u Variant: %u Firmware V%u.%u.%02X Objects: %u\n",
--		 info->family_id, info->variant_id, info->version >> 4,
--		 info->version & 0xf, info->build, info->object_num);
-+	return get_unaligned_le16(&dbg->t37_buf[page].data[ofs]);
-+}
-+
-+static int mxt_convert_debug_pages(struct mxt_data *data, u16 *outbuf)
-+{
-+	struct mxt_dbg *dbg = &data->dbg;
-+	unsigned int x = 0;
-+	unsigned int y = 0;
-+	unsigned int i, rx, ry;
-+
-+	for (i = 0; i < dbg->t37_nodes; i++) {
-+		/* Handle orientation */
-+		rx = data->xy_switch ? y : x;
-+		ry = data->xy_switch ? x : y;
-+		rx = data->invertx ? (data->xsize - 1 - rx) : rx;
-+		ry = data->inverty ? (data->ysize - 1 - ry) : ry;
-+
-+		outbuf[i] = mxt_get_debug_value(data, rx, ry);
-+
-+		/* Next value */
-+		if (++x >= (data->xy_switch ? data->ysize : data->xsize)) {
-+			x = 0;
-+			y++;
-+		}
-+	}
- 
- 	return 0;
- }
- 
--/* Firmware Version is returned as Major.Minor.Build */
--static ssize_t mxt_fw_version_show(struct device *dev,
--				   struct device_attribute *attr, char *buf)
-+static int mxt_read_diagnostic_debug(struct mxt_data *data, u8 mode,
-+				     u16 *outbuf)
- {
--	struct mxt_data *data = dev_get_drvdata(dev);
--	struct mxt_info *info = &data->info;
--	return scnprintf(buf, PAGE_SIZE, "%u.%u.%02X\n",
-+	struct mxt_dbg *dbg = &data->dbg;
-+	int retries = 0;
-+	int page;
-+	int ret;
-+	u8 cmd = mode;
-+	struct t37_debug *p;
-+	u8 cmd_poll;
-+
-+	for (page = 0; page < dbg->t37_pages; page++) {
-+		p = dbg->t37_buf + page;
-+
-+		ret = mxt_write_reg(data->client, dbg->diag_cmd_address,
-+				    cmd);
-+		if (ret)
-+			return ret;
-+
-+		retries = 0;
-+		msleep(20);
-+wait_cmd:
-+		/* Read back command byte */
-+		ret = __mxt_read_reg(data->client, dbg->diag_cmd_address,
-+				     sizeof(cmd_poll), &cmd_poll);
-+		if (ret)
-+			return ret;
-+
-+		/* Field is cleared once the command has been processed */
-+		if (cmd_poll) {
-+			if (retries++ > 100)
-+				return -EINVAL;
-+
-+			msleep(20);
-+			goto wait_cmd;
-+		}
-+
-+		/* Read T37 page */
-+		ret = __mxt_read_reg(data->client, dbg->t37_address,
-+				     sizeof(struct t37_debug), p);
-+		if (ret)
-+			return ret;
-+
-+		if (p->mode != mode || p->page != page) {
-+			dev_err(&data->client->dev, "T37 page mismatch\n");
-+			return -EINVAL;
-+		}
-+
-+		dev_dbg(&data->client->dev, "%s page:%d retries:%d\n",
-+			__func__, page, retries);
-+
-+		/* For remaining pages, write PAGEUP rather than mode */
-+		cmd = MXT_DIAGNOSTIC_PAGEUP;
-+	}
-+
-+	return mxt_convert_debug_pages(data, outbuf);
-+}
-+
-+static int mxt_queue_setup(struct vb2_queue *q,
-+		       unsigned int *nbuffers, unsigned int *nplanes,
-+		       unsigned int sizes[], struct device *alloc_devs[])
-+{
-+	struct mxt_data *data = q->drv_priv;
-+	size_t size = data->dbg.t37_nodes * sizeof(u16);
-+
-+	if (*nplanes)
-+		return sizes[0] < size ? -EINVAL : 0;
-+
-+	*nplanes = 1;
-+	sizes[0] = size;
-+
-+	return 0;
-+}
-+
-+static void mxt_buffer_queue(struct vb2_buffer *vb)
-+{
-+	struct mxt_data *data = vb2_get_drv_priv(vb->vb2_queue);
-+	u16 *ptr;
-+	int ret;
-+	u8 mode;
-+
-+	ptr = vb2_plane_vaddr(vb, 0);
-+	if (!ptr) {
-+		dev_err(&data->client->dev, "Error acquiring frame ptr\n");
-+		goto fault;
-+	}
-+
-+	switch (data->dbg.input) {
-+	case MXT_V4L_INPUT_DELTAS:
-+	default:
-+		mode = MXT_DIAGNOSTIC_DELTAS;
-+		break;
-+
-+	case MXT_V4L_INPUT_REFS:
-+		mode = MXT_DIAGNOSTIC_REFS;
-+		break;
-+	}
-+
-+	ret = mxt_read_diagnostic_debug(data, mode, ptr);
-+	if (ret)
-+		goto fault;
-+
-+	vb2_set_plane_payload(vb, 0, data->dbg.t37_nodes * sizeof(u16));
-+	vb2_buffer_done(vb, VB2_BUF_STATE_DONE);
-+	return;
-+
-+fault:
-+	vb2_buffer_done(vb, VB2_BUF_STATE_ERROR);
-+}
-+
-+/* V4L2 structures */
-+static const struct vb2_ops mxt_queue_ops = {
-+	.queue_setup		= mxt_queue_setup,
-+	.buf_queue		= mxt_buffer_queue,
-+	.wait_prepare		= vb2_ops_wait_prepare,
-+	.wait_finish		= vb2_ops_wait_finish,
-+};
-+
-+static const struct vb2_queue mxt_queue = {
-+	.type = V4L2_BUF_TYPE_VIDEO_CAPTURE,
-+	.io_modes = VB2_MMAP | VB2_USERPTR | VB2_DMABUF | VB2_READ,
-+	.buf_struct_size = sizeof(struct mxt_vb2_buffer),
-+	.ops = &mxt_queue_ops,
-+	.mem_ops = &vb2_vmalloc_memops,
-+	.timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC,
-+	.min_buffers_needed = 1,
-+};
-+
-+static int mxt_vidioc_querycap(struct file *file, void *priv,
-+				 struct v4l2_capability *cap)
-+{
-+	struct mxt_data *data = video_drvdata(file);
-+
-+	strlcpy(cap->driver, "atmel_mxt_ts", sizeof(cap->driver));
-+	strlcpy(cap->card, "atmel_mxt_ts touch", sizeof(cap->card));
-+	snprintf(cap->bus_info, sizeof(cap->bus_info),
-+		 "I2C:%s", dev_name(&data->client->dev));
-+	return 0;
-+}
-+
-+static int mxt_vidioc_enum_input(struct file *file, void *priv,
-+				   struct v4l2_input *i)
-+{
-+	if (i->index >= MXT_V4L_INPUT_MAX)
-+		return -EINVAL;
-+
-+	i->type = V4L2_INPUT_TYPE_TOUCH;
-+
-+	switch (i->index) {
-+	case MXT_V4L_INPUT_REFS:
-+		strlcpy(i->name, "Mutual Capacitance References",
-+			sizeof(i->name));
-+		break;
-+	case MXT_V4L_INPUT_DELTAS:
-+		strlcpy(i->name, "Mutual Capacitance Deltas", sizeof(i->name));
-+		break;
-+	}
-+
-+	return 0;
-+}
-+
-+static int mxt_set_input(struct mxt_data *data, unsigned int i)
-+{
-+	struct v4l2_pix_format *f = &data->dbg.format;
-+
-+	if (i >= MXT_V4L_INPUT_MAX)
-+		return -EINVAL;
-+
-+	if (i == MXT_V4L_INPUT_DELTAS)
-+		f->pixelformat = V4L2_TCH_FMT_DELTA_TD16;
-+	else
-+		f->pixelformat = V4L2_TCH_FMT_TU16;
-+
-+	f->width = data->xy_switch ? data->ysize : data->xsize;
-+	f->height = data->xy_switch ? data->xsize : data->ysize;
-+	f->field = V4L2_FIELD_NONE;
-+	f->colorspace = V4L2_COLORSPACE_RAW;
-+	f->bytesperline = f->width * sizeof(u16);
-+	f->sizeimage = f->width * f->height * sizeof(u16);
-+
-+	data->dbg.input = i;
-+
-+	return 0;
-+}
-+
-+static int mxt_vidioc_s_input(struct file *file, void *priv, unsigned int i)
-+{
-+	return mxt_set_input(video_drvdata(file), i);
-+}
-+
-+static int mxt_vidioc_g_input(struct file *file, void *priv, unsigned int *i)
-+{
-+	struct mxt_data *data = video_drvdata(file);
-+
-+	*i = data->dbg.input;
-+
-+	return 0;
-+}
-+
-+static int mxt_vidioc_fmt(struct file *file, void *priv, struct v4l2_format *f)
-+{
-+	struct mxt_data *data = video_drvdata(file);
-+
-+	f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
-+	f->fmt.pix = data->dbg.format;
-+
-+	return 0;
-+}
-+
-+static int mxt_vidioc_enum_fmt(struct file *file, void *priv,
-+				 struct v4l2_fmtdesc *fmt)
-+{
-+	if (fmt->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
-+		return -EINVAL;
-+
-+	switch (fmt->index) {
-+	case 0:
-+		fmt->pixelformat = V4L2_TCH_FMT_TU16;
-+		break;
-+
-+	case 1:
-+		fmt->pixelformat = V4L2_TCH_FMT_DELTA_TD16;
-+		break;
-+
-+	default:
-+		return -EINVAL;
-+	}
-+
-+	return 0;
-+}
-+
-+static int mxt_vidioc_g_parm(struct file *file, void *fh,
-+			     struct v4l2_streamparm *a)
-+{
-+	if (a->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
-+		return -EINVAL;
-+
-+	a->parm.capture.readbuffers = 1;
-+	a->parm.capture.timeperframe.numerator = 1;
-+	a->parm.capture.timeperframe.denominator = 10;
-+	return 0;
-+}
-+
-+static const struct v4l2_ioctl_ops mxt_video_ioctl_ops = {
-+	.vidioc_querycap        = mxt_vidioc_querycap,
-+
-+	.vidioc_enum_fmt_vid_cap = mxt_vidioc_enum_fmt,
-+	.vidioc_s_fmt_vid_cap   = mxt_vidioc_fmt,
-+	.vidioc_g_fmt_vid_cap   = mxt_vidioc_fmt,
-+	.vidioc_try_fmt_vid_cap	= mxt_vidioc_fmt,
-+	.vidioc_g_parm		= mxt_vidioc_g_parm,
-+
-+	.vidioc_enum_input      = mxt_vidioc_enum_input,
-+	.vidioc_g_input         = mxt_vidioc_g_input,
-+	.vidioc_s_input         = mxt_vidioc_s_input,
-+
-+	.vidioc_reqbufs         = vb2_ioctl_reqbufs,
-+	.vidioc_create_bufs     = vb2_ioctl_create_bufs,
-+	.vidioc_querybuf        = vb2_ioctl_querybuf,
-+	.vidioc_qbuf            = vb2_ioctl_qbuf,
-+	.vidioc_dqbuf           = vb2_ioctl_dqbuf,
-+	.vidioc_expbuf          = vb2_ioctl_expbuf,
-+
-+	.vidioc_streamon        = vb2_ioctl_streamon,
-+	.vidioc_streamoff       = vb2_ioctl_streamoff,
-+};
-+
-+static const struct video_device mxt_video_device = {
-+	.name = "Atmel maxTouch",
-+	.fops = &mxt_video_fops,
-+	.ioctl_ops = &mxt_video_ioctl_ops,
-+	.release = video_device_release_empty,
-+	.device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_TOUCH |
-+		       V4L2_CAP_READWRITE | V4L2_CAP_STREAMING,
-+};
-+
-+static void mxt_debug_init(struct mxt_data *data)
-+{
-+	struct mxt_info *info = data->info;
-+	struct mxt_dbg *dbg = &data->dbg;
-+	struct mxt_object *object;
-+	int error;
-+
-+	object = mxt_get_object(data, MXT_GEN_COMMAND_T6);
-+	if (!object)
-+		goto error;
-+
-+	dbg->diag_cmd_address = object->start_address + MXT_COMMAND_DIAGNOSTIC;
-+
-+	object = mxt_get_object(data, MXT_DEBUG_DIAGNOSTIC_T37);
-+	if (!object)
-+		goto error;
-+
-+	if (mxt_obj_size(object) != sizeof(struct t37_debug)) {
-+		dev_warn(&data->client->dev, "Bad T37 size");
-+		goto error;
-+	}
-+
-+	dbg->t37_address = object->start_address;
-+
-+	/* Calculate size of data and allocate buffer */
-+	dbg->t37_nodes = data->xsize * data->ysize;
-+
-+	if (info->family_id == MXT_FAMILY_1386)
-+		dbg->t37_pages = MXT1386_COLUMNS * MXT1386_PAGES_PER_COLUMN;
-+	else
-+		dbg->t37_pages = DIV_ROUND_UP(data->xsize *
-+					      info->matrix_ysize *
-+					      sizeof(u16),
-+					      sizeof(dbg->t37_buf->data));
-+
-+	dbg->t37_buf = devm_kmalloc_array(&data->client->dev, dbg->t37_pages,
-+					  sizeof(struct t37_debug), GFP_KERNEL);
-+	if (!dbg->t37_buf)
-+		goto error;
-+
-+	/* init channel to zero */
-+	mxt_set_input(data, 0);
-+
-+	/* register video device */
-+	snprintf(dbg->v4l2.name, sizeof(dbg->v4l2.name), "%s", "atmel_mxt_ts");
-+	error = v4l2_device_register(&data->client->dev, &dbg->v4l2);
-+	if (error)
-+		goto error;
-+
-+	/* initialize the queue */
-+	mutex_init(&dbg->lock);
-+	dbg->queue = mxt_queue;
-+	dbg->queue.drv_priv = data;
-+	dbg->queue.lock = &dbg->lock;
-+	dbg->queue.dev = &data->client->dev;
-+
-+	error = vb2_queue_init(&dbg->queue);
-+	if (error)
-+		goto error_unreg_v4l2;
-+
-+	dbg->vdev = mxt_video_device;
-+	dbg->vdev.v4l2_dev = &dbg->v4l2;
-+	dbg->vdev.lock = &dbg->lock;
-+	dbg->vdev.vfl_dir = VFL_DIR_RX;
-+	dbg->vdev.queue = &dbg->queue;
-+	video_set_drvdata(&dbg->vdev, data);
-+
-+	error = video_register_device(&dbg->vdev, VFL_TYPE_TOUCH, -1);
-+	if (error)
-+		goto error_unreg_v4l2;
-+
-+	return;
-+
-+error_unreg_v4l2:
-+	v4l2_device_unregister(&dbg->v4l2);
-+error:
-+	dev_warn(&data->client->dev, "Error initializing T37\n");
-+}
-+#else
-+static void mxt_debug_init(struct mxt_data *data)
-+{
-+}
-+#endif
-+
-+static int mxt_configure_objects(struct mxt_data *data,
-+				 const struct firmware *cfg)
-+{
-+	struct device *dev = &data->client->dev;
-+	int error;
-+
-+	error = mxt_init_t7_power_cfg(data);
-+	if (error) {
-+		dev_err(dev, "Failed to initialize power cfg\n");
-+		return error;
-+	}
-+
-+	if (cfg) {
-+		error = mxt_update_cfg(data, cfg);
-+		if (error)
-+			dev_warn(dev, "Error %d updating config\n", error);
-+	}
-+	
-+	if (!data->sysfs_updating_config) {
-+		if (data->multitouch) {
-+			dev_info(dev, "Registering devices\n");
-+			error = mxt_initialize_input_device(data);
-+			if (error)
-+				return error;
-+			
-+			if (data->T100_instances > 1) {
-+			    error = mxt_init_secondary_input(data);
-+			    if (error)
-+				    dev_warn(dev, "Error %d registering secondary device\n", error);
-+			}
-+		} else {
-+			dev_warn(dev, "No touch object detected\n");
-+		}
-+	}
-+	
-+	data->sysfs_updating_config = false;
-+	
-+	mxt_debug_init(data);
-+
-+	return 0;
-+}
-+
-+/* Configuration crc check sum is returned as hex xxxxxx */
-+static ssize_t mxt_config_crc_show(struct device *dev,
-+		struct device_attribute *attr, char *buf)
-+{
-+	struct mxt_data *data = dev_get_drvdata(dev);
-+
-+	return scnprintf(buf, PAGE_SIZE, "%06x\n", data->config_crc);
-+}
-+
-+/* Firmware Version is returned as Major.Minor.Build */
-+static ssize_t mxt_fw_version_show(struct device *dev,
-+				   struct device_attribute *attr, char *buf)
-+{
-+	struct mxt_data *data = dev_get_drvdata(dev);
-+	struct mxt_info *info = data->info;
-+	return scnprintf(buf, PAGE_SIZE, "%u.%u.%02X\n",
- 			 info->version >> 4, info->version & 0xf, info->build);
- }
- 
-@@ -2129,7 +3473,7 @@ static ssize_t mxt_hw_version_show(struct device *dev,
- 				   struct device_attribute *attr, char *buf)
- {
- 	struct mxt_data *data = dev_get_drvdata(dev);
--	struct mxt_info *info = &data->info;
-+	struct mxt_info *info = data->info;
- 	return scnprintf(buf, PAGE_SIZE, "%u.%u\n",
- 			 info->family_id, info->variant_id);
- }
-@@ -2168,7 +3512,7 @@ static ssize_t mxt_object_show(struct device *dev,
- 		return -ENOMEM;
- 
- 	error = 0;
--	for (i = 0; i < data->info.object_num; i++) {
-+	for (i = 0; i < data->info->object_num; i++) {
- 		object = data->object_table + i;
- 
- 		if (!mxt_object_readable(object->type))
-@@ -2232,12 +3576,19 @@ static int mxt_load_fw(struct device *dev, const char *fn)
- 	if (ret) {
- 		dev_err(dev, "Unable to open firmware %s\n", fn);
- 		return ret;
--	}
-+	} else {
-+
-+		dev_info(dev, "Opened firmware file: %s\n", fn);
-+	}  
- 
- 	/* Check for incorrect enc file */
- 	ret = mxt_check_firmware_format(dev, fw);
--	if (ret)
-+
-+	if (ret) {
- 		goto release_firmware;
-+	} else {
-+		dev_info(dev, "File format is okay\n");		
-+	}
- 
- 	if (!data->in_bootloader) {
- 		/* Change to the bootloader mode */
-@@ -2245,18 +3596,21 @@ static int mxt_load_fw(struct device *dev, const char *fn)
- 
- 		ret = mxt_t6_command(data, MXT_COMMAND_RESET,
- 				     MXT_BOOT_VALUE, false);
--		if (ret)
-+		if (ret) {
- 			goto release_firmware;
-+		} else {
-+			dev_info(dev, "Sent bootloader command.\n");
-+		}
- 
- 		msleep(MXT_RESET_TIME);
- 
- 		/* Do not need to scan since we know family ID */
- 		ret = mxt_lookup_bootloader_address(data, 0);
--		if (ret)
-+		if (ret) {
- 			goto release_firmware;
--
--		mxt_free_input_device(data);
--		mxt_free_object_table(data);
-+		} else {
-+			dev_info(dev, "Found bootloader I2C address\n");
-+		}	
- 	} else {
- 		enable_irq(data->irq);
- 	}
-@@ -2289,7 +3643,7 @@ static int mxt_load_fw(struct device *dev, const char *fn)
- 		frame_size += 2;
- 
- 		/* Write one frame to device */
--		ret = mxt_bootloader_write(data, fw->data + pos, frame_size);
-+		ret = mxt_bootloader_write(data, &fw->data[pos], frame_size);
- 		if (ret)
- 			goto disable_irq;
- 
-@@ -2310,17 +3664,16 @@ static int mxt_load_fw(struct device *dev, const char *fn)
- 			frame++;
- 		}
- 
--		if (frame % 50 == 0)
--			dev_dbg(dev, "Sent %d frames, %d/%zd bytes\n",
-+		if (pos >= fw->size) {
-+			dev_info(dev, "Sent %u frames, %zu bytes\n",
-+				frame, fw->size);
-+		}
-+		else if (frame % 50 == 0) {
-+			dev_info(dev, "Sent %u frames, %d/%zu bytes\n",
- 				frame, pos, fw->size);
-+		}
- 	}
- 
--	/* Wait for flash. */
--	ret = mxt_wait_for_completion(data, &data->bl_completion,
--				      MXT_FW_RESET_TIME);
--	if (ret)
--		goto disable_irq;
--
- 	dev_dbg(dev, "Sent %d frames, %d bytes\n", frame, pos);
- 
- 	/*
-@@ -2328,7 +3681,13 @@ static int mxt_load_fw(struct device *dev, const char *fn)
- 	 * the CHG line after bootloading has finished, so ignore potential
- 	 * errors.
- 	 */
--	mxt_wait_for_completion(data, &data->bl_completion, MXT_FW_RESET_TIME);
-+
-+	msleep(MXT_BOOTLOADER_WAIT);	/* Wait for chip to leave bootloader*/
-+	
-+	ret = mxt_wait_for_completion(data, &data->bl_completion,
-+				      MXT_BOOTLOADER_WAIT);
-+	if (ret)
-+		goto disable_irq;
- 
- 	data->in_bootloader = false;
- 
-@@ -2345,32 +3704,204 @@ static ssize_t mxt_update_fw_store(struct device *dev,
- {
- 	struct mxt_data *data = dev_get_drvdata(dev);
- 	int error;
--
-+	
- 	error = mxt_load_fw(dev, MXT_FW_NAME);
- 	if (error) {
- 		dev_err(dev, "The firmware update failed(%d)\n", error);
- 		count = error;
- 	} else {
- 		dev_info(dev, "The firmware update succeeded\n");
-+	}
-+	
-+	data->sysfs_updating_config = true;		
-+	
-+	msleep(MXT_FW_FLASH_TIME);
-+	
-+	error = mxt_acquire_irq(data);
-+	if (error)
-+		return error;
-+	
-+	/* Only works when driver compiled as module */
-+	error = request_firmware_nowait(THIS_MODULE, true, MXT_CFG_NAME,
-+					dev, GFP_KERNEL, data,
-+					mxt_config_cb);
-+	if (error) {
-+		dev_err(dev, "Failed to invoke firmware loader: %d\n",
-+			error);
-+		return error;
-+		
-+	}
-+	
-+	return count;
-+}
- 
--		error = mxt_initialize(data);
--		if (error)
--			return error;
-+static ssize_t mxt_update_cfg_store(struct device *dev,
-+		struct device_attribute *attr,
-+		const char *buf, size_t count)
-+{
-+	struct mxt_data *data = dev_get_drvdata(dev);
-+	const struct firmware *cfg;
-+	int ret;
-+
-+	ret = request_firmware(&cfg, MXT_CFG_NAME, dev);
-+	if (ret < 0) {
-+		dev_err(dev, "Failure to request config file %s\n",
-+			MXT_CFG_NAME);
-+		ret = -ENOENT;
-+		goto out;
-+	} else {
-+		dev_info(dev, "Found configuration file: %s\n",
-+			MXT_CFG_NAME);
- 	}
-+	
-+	data->sysfs_updating_config = true;
- 
--	return count;
-+	if (data->suspend_mode == MXT_SUSPEND_DEEP_SLEEP) {
-+		mxt_set_t7_power_cfg(data, MXT_POWER_CFG_RUN);
-+	}
-+
-+	ret = mxt_configure_objects(data, cfg);
-+	if (ret)
-+		goto release;
-+
-+	ret = count;
-+
-+release:
-+	release_firmware(cfg);
-+out:
-+	return ret;
-+}
-+
-+static ssize_t mxt_debug_enable_show(struct device *dev,
-+	struct device_attribute *attr, char *buf)
-+{
-+	struct mxt_data *data = dev_get_drvdata(dev);
-+	char c;
-+
-+	c = data->debug_enabled ? '1' : '0';
-+	return scnprintf(buf, PAGE_SIZE, "%c\n", c);
-+}
-+
-+static ssize_t mxt_debug_notify_show(struct device *dev,
-+	struct device_attribute *attr, char *buf)
-+{
-+	return sprintf(buf, "0\n");
-+}
-+
-+static ssize_t mxt_debug_v2_enable_store(struct device *dev,
-+	struct device_attribute *attr, const char *buf, size_t count)
-+{
-+	struct mxt_data *data = dev_get_drvdata(dev);
-+	u8 i;
-+	ssize_t ret;
-+
-+	if (kstrtou8(buf, 0, &i) == 0 && i < 2) {
-+		if (i == 1)
-+			mxt_debug_msg_enable(data);
-+		else
-+			mxt_debug_msg_disable(data);
-+
-+		ret = count;
-+	} else {
-+		dev_dbg(dev, "debug_enabled write error\n");
-+		ret = -EINVAL;
-+	}
-+
-+	return ret;
-+}
-+
-+static ssize_t mxt_debug_enable_store(struct device *dev,
-+	struct device_attribute *attr, const char *buf, size_t count)
-+{
-+	struct mxt_data *data = dev_get_drvdata(dev);
-+	u8 i;
-+	ssize_t ret;
-+
-+	if (kstrtou8(buf, 0, &i) == 0 && i < 2) {
-+		data->debug_enabled = (i == 1);
-+
-+		dev_dbg(dev, "%s\n", i ? "debug enabled" : "debug disabled");
-+		ret = count;
-+	} else {
-+		dev_dbg(dev, "debug_enabled write error\n");
-+		ret = -EINVAL;
-+	}
-+
-+	return ret;
-+}
-+
-+static int mxt_check_mem_access_params(struct mxt_data *data, loff_t off,
-+				       size_t *count)
-+{
-+	if (off >= data->mem_size)
-+		return -EIO;
-+
-+	if (off + *count > data->mem_size)
-+		*count = data->mem_size - off;
-+
-+	if (*count > MXT_MAX_BLOCK_WRITE)
-+		*count = MXT_MAX_BLOCK_WRITE;
-+
-+	return 0;
-+}
-+
-+static ssize_t mxt_mem_access_read(struct file *filp, struct kobject *kobj,
-+	struct bin_attribute *bin_attr, char *buf, loff_t off, size_t count)
-+{
-+	struct device *dev = container_of(kobj, struct device, kobj);
-+	struct mxt_data *data = dev_get_drvdata(dev);
-+	int ret = 0;
-+
-+	ret = mxt_check_mem_access_params(data, off, &count);
-+	if (ret < 0)
-+		return ret;
-+
-+	if (count > 0)
-+		ret = __mxt_read_reg(data->client, off, count, buf);
-+
-+	return ret == 0 ? count : ret;
-+}
-+
-+static ssize_t mxt_mem_access_write(struct file *filp, struct kobject *kobj,
-+	struct bin_attribute *bin_attr, char *buf, loff_t off,
-+	size_t count)
-+{
-+	struct device *dev = container_of(kobj, struct device, kobj);
-+	struct mxt_data *data = dev_get_drvdata(dev);
-+	int ret = 0;
-+
-+	ret = mxt_check_mem_access_params(data, off, &count);
-+	if (ret < 0)
-+		return ret;
-+
-+	if (count > 0)
-+		ret = __mxt_write_reg(data->client, off, count, buf);
-+
-+	return ret == 0 ? count : ret;
- }
- 
- static DEVICE_ATTR(fw_version, S_IRUGO, mxt_fw_version_show, NULL);
- static DEVICE_ATTR(hw_version, S_IRUGO, mxt_hw_version_show, NULL);
- static DEVICE_ATTR(object, S_IRUGO, mxt_object_show, NULL);
-+static DEVICE_ATTR(update_cfg, S_IWUSR, NULL, mxt_update_cfg_store);
-+static DEVICE_ATTR(config_crc, S_IRUGO, mxt_config_crc_show, NULL);
- static DEVICE_ATTR(update_fw, S_IWUSR, NULL, mxt_update_fw_store);
-+static DEVICE_ATTR(debug_enable, S_IWUSR | S_IRUSR, mxt_debug_enable_show,
-+		   mxt_debug_enable_store);
-+static DEVICE_ATTR(debug_v2_enable, S_IWUSR | S_IRUSR, NULL,
-+		   mxt_debug_v2_enable_store);
-+static DEVICE_ATTR(debug_notify, S_IRUGO, mxt_debug_notify_show, NULL);
- 
- static struct attribute *mxt_attrs[] = {
- 	&dev_attr_fw_version.attr,
- 	&dev_attr_hw_version.attr,
- 	&dev_attr_object.attr,
-+	&dev_attr_update_cfg.attr,
-+	&dev_attr_config_crc.attr,
- 	&dev_attr_update_fw.attr,
-+	&dev_attr_debug_enable.attr,
-+	&dev_attr_debug_v2_enable.attr,
-+	&dev_attr_debug_notify.attr,
- 	NULL
- };
- 
-@@ -2378,9 +3909,54 @@ static const struct attribute_group mxt_attr_group = {
- 	.attrs = mxt_attrs,
- };
- 
-+static int mxt_sysfs_init(struct mxt_data *data)
-+{
-+	struct i2c_client *client = data->client;
-+	int error;
-+
-+	error = sysfs_create_group(&client->dev.kobj, &mxt_attr_group);
-+	if (error) {
-+		dev_err(&client->dev, "Failure %d creating sysfs group\n",
-+			error);
-+		return error;
-+	}
-+
-+	sysfs_bin_attr_init(&data->mem_access_attr);
-+	data->mem_access_attr.attr.name = "mem_access";
-+	data->mem_access_attr.attr.mode = S_IRUGO | S_IWUSR;
-+	data->mem_access_attr.read = mxt_mem_access_read;
-+	data->mem_access_attr.write = mxt_mem_access_write;
-+	data->mem_access_attr.size = data->mem_size;
-+
-+	error = sysfs_create_bin_file(&client->dev.kobj,
-+				  &data->mem_access_attr);
-+	if (error) {
-+		dev_err(&client->dev, "Failed to create %s\n",
-+			data->mem_access_attr.attr.name);
-+		goto err_remove_sysfs_group;
-+	}
-+
-+	return 0;
-+
-+err_remove_sysfs_group:
-+	sysfs_remove_group(&client->dev.kobj, &mxt_attr_group);
-+	return error;
-+}
-+
-+static void mxt_sysfs_remove(struct mxt_data *data)
-+{
-+	struct i2c_client *client = data->client;
-+
-+	if (data->mem_access_attr.attr.name)
-+		sysfs_remove_bin_file(&client->dev.kobj,
-+				      &data->mem_access_attr);
-+
-+	sysfs_remove_group(&client->dev.kobj, &mxt_attr_group);
-+}
-+
- static void mxt_start(struct mxt_data *data)
- {
--	switch (data->pdata->suspend_mode) {
-+	switch (data->suspend_mode) {
- 	case MXT_SUSPEND_T9_CTRL:
- 		mxt_soft_reset(data);
- 
-@@ -2398,12 +3974,11 @@ static void mxt_start(struct mxt_data *data)
- 		mxt_t6_command(data, MXT_COMMAND_CALIBRATE, 1, false);
- 		break;
- 	}
--
- }
- 
- static void mxt_stop(struct mxt_data *data)
- {
--	switch (data->pdata->suspend_mode) {
-+	switch (data->suspend_mode) {
- 	case MXT_SUSPEND_T9_CTRL:
- 		/* Touch disable */
- 		mxt_write_object(data,
-@@ -2433,131 +4008,75 @@ static void mxt_input_close(struct input_dev *dev)
- 	mxt_stop(data);
- }
- 
--#ifdef CONFIG_OF
--static const struct mxt_platform_data *mxt_parse_dt(struct i2c_client *client)
-+static int mxt_parse_device_properties(struct mxt_data *data)
- {
--	struct mxt_platform_data *pdata;
--	struct device_node *np = client->dev.of_node;
-+	static const char keymap_property[] = "linux,gpio-keymap";
-+	struct device *dev = &data->client->dev;
- 	u32 *keymap;
--	int proplen, ret;
--
--	if (!np)
--		return ERR_PTR(-ENOENT);
--
--	pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL);
--	if (!pdata)
--		return ERR_PTR(-ENOMEM);
-+	int n_keys;
-+	int error;
- 
--	if (of_find_property(np, "linux,gpio-keymap", &proplen)) {
--		pdata->t19_num_keys = proplen / sizeof(u32);
-+	if (device_property_present(dev, keymap_property)) {
-+		n_keys = device_property_read_u32_array(dev, keymap_property,
-+							NULL, 0);
-+		if (n_keys <= 0) {
-+			error = n_keys < 0 ? n_keys : -EINVAL;
-+			dev_err(dev, "invalid/malformed '%s' property: %d\n",
-+				keymap_property, error);
-+			return error;
-+		}
- 
--		keymap = devm_kzalloc(&client->dev,
--				pdata->t19_num_keys * sizeof(keymap[0]),
--				GFP_KERNEL);
-+		keymap = devm_kmalloc_array(dev, n_keys, sizeof(*keymap),
-+					    GFP_KERNEL);
- 		if (!keymap)
--			return ERR_PTR(-ENOMEM);
-+			return -ENOMEM;
- 
--		ret = of_property_read_u32_array(np, "linux,gpio-keymap",
--						 keymap, pdata->t19_num_keys);
--		if (ret)
--			dev_warn(&client->dev,
--				 "Couldn't read linux,gpio-keymap: %d\n", ret);
-+		error = device_property_read_u32_array(dev, keymap_property,
-+						       keymap, n_keys);
-+		if (error) {
-+			dev_err(dev, "failed to parse '%s' property: %d\n",
-+				keymap_property, error);
-+			return error;
-+		}
- 
--		pdata->t19_keymap = keymap;
-+		data->t19_keymap = keymap;
-+		data->t19_num_keys = n_keys;
- 	}
- 
--	pdata->suspend_mode = MXT_SUSPEND_DEEP_SLEEP;
--
--	return pdata;
--}
--#else
--static const struct mxt_platform_data *mxt_parse_dt(struct i2c_client *client)
--{
--	return ERR_PTR(-ENOENT);
-+	return 0;
- }
--#endif
--
--#ifdef CONFIG_ACPI
--
--struct mxt_acpi_platform_data {
--	const char *hid;
--	struct mxt_platform_data pdata;
--};
--
--static unsigned int samus_touchpad_buttons[] = {
--	KEY_RESERVED,
--	KEY_RESERVED,
--	KEY_RESERVED,
--	BTN_LEFT
--};
- 
--static struct mxt_acpi_platform_data samus_platform_data[] = {
-+static const struct dmi_system_id chromebook_T9_suspend_dmi[] = {
- 	{
--		/* Touchpad */
--		.hid	= "ATML0000",
--		.pdata	= {
--			.t19_num_keys	= ARRAY_SIZE(samus_touchpad_buttons),
--			.t19_keymap	= samus_touchpad_buttons,
--		},
--	},
--	{
--		/* Touchscreen */
--		.hid	= "ATML0001",
--	},
--	{ }
--};
--
--static unsigned int chromebook_tp_buttons[] = {
--	KEY_RESERVED,
--	KEY_RESERVED,
--	KEY_RESERVED,
--	KEY_RESERVED,
--	KEY_RESERVED,
--	BTN_LEFT
--};
--
--static struct mxt_acpi_platform_data chromebook_platform_data[] = {
--	{
--		/* Touchpad */
--		.hid	= "ATML0000",
--		.pdata	= {
--			.t19_num_keys	= ARRAY_SIZE(chromebook_tp_buttons),
--			.t19_keymap	= chromebook_tp_buttons,
--		},
--	},
--	{
--		/* Touchscreen */
--		.hid	= "ATML0001",
--	},
--	{ }
--};
--
--static const struct dmi_system_id mxt_dmi_table[] = {
--	{
--		/* 2015 Google Pixel */
--		.ident = "Chromebook Pixel 2",
- 		.matches = {
- 			DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"),
--			DMI_MATCH(DMI_PRODUCT_NAME, "Samus"),
-+			DMI_MATCH(DMI_PRODUCT_NAME, "Link"),
- 		},
--		.driver_data = samus_platform_data,
- 	},
- 	{
--		/* Other Google Chromebooks */
--		.ident = "Chromebook",
- 		.matches = {
--			DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"),
-+			DMI_MATCH(DMI_PRODUCT_NAME, "Peppy"),
- 		},
--		.driver_data = chromebook_platform_data,
- 	},
- 	{ }
- };
- 
--static const struct mxt_platform_data *mxt_parse_acpi(struct i2c_client *client)
-+static int mxt_probe(struct i2c_client *client, const struct i2c_device_id *id)
- {
--	struct acpi_device *adev;
--	const struct dmi_system_id *system_id;
--	const struct mxt_acpi_platform_data *acpi_pdata;
-+	struct mxt_data *data;
-+	int error;
-+
-+	/*
-+	 * Ignore devices that do not have device properties attached to
-+	 * them, as we need help determining whether we are dealing with
-+	 * touch screen or touchpad.
-+	 *
-+	 * So far on x86 the only users of Atmel touch controllers are
-+	 * Chromebooks, and chromeos_laptop driver will ensure that
-+	 * necessary properties are provided (if firmware does not do that).
-+	 */
-+	if (!device_property_present(&client->dev, "compatible"))
-+		return -ENXIO;
- 
- 	/*
- 	 * Ignore ACPI devices representing bootloader mode.
-@@ -2569,79 +4088,17 @@ static const struct mxt_platform_data *mxt_parse_acpi(struct i2c_client *client)
- 	 * application mode addresses were all above 0x40, so we'll use it
- 	 * as a threshold.
- 	 */
--	if (client->addr < 0x40)
--		return ERR_PTR(-ENXIO);
--
--	adev = ACPI_COMPANION(&client->dev);
--	if (!adev)
--		return ERR_PTR(-ENOENT);
--
--	system_id = dmi_first_match(mxt_dmi_table);
--	if (!system_id)
--		return ERR_PTR(-ENOENT);
-+	if (ACPI_COMPANION(&client->dev) && client->addr < 0x40)
-+		return -ENXIO;
- 
--	acpi_pdata = system_id->driver_data;
--	if (!acpi_pdata)
--		return ERR_PTR(-ENOENT);
--
--	while (acpi_pdata->hid) {
--		if (!strcmp(acpi_device_hid(adev), acpi_pdata->hid))
--			return &acpi_pdata->pdata;
--
--		acpi_pdata++;
--	}
--
--	return ERR_PTR(-ENOENT);
--}
--#else
--static const struct mxt_platform_data *mxt_parse_acpi(struct i2c_client *client)
--{
--	return ERR_PTR(-ENOENT);
--}
--#endif
--
--static const struct mxt_platform_data *
--mxt_get_platform_data(struct i2c_client *client)
--{
--	const struct mxt_platform_data *pdata;
--
--	pdata = dev_get_platdata(&client->dev);
--	if (pdata)
--		return pdata;
--
--	pdata = mxt_parse_dt(client);
--	if (!IS_ERR(pdata) || PTR_ERR(pdata) != -ENOENT)
--		return pdata;
--
--	pdata = mxt_parse_acpi(client);
--	if (!IS_ERR(pdata) || PTR_ERR(pdata) != -ENOENT)
--		return pdata;
--
--	dev_err(&client->dev, "No platform data specified\n");
--	return ERR_PTR(-EINVAL);
--}
--
--static int mxt_probe(struct i2c_client *client, const struct i2c_device_id *id)
--{
--	struct mxt_data *data;
--	const struct mxt_platform_data *pdata;
--	int error;
--
--	pdata = mxt_get_platform_data(client);
--	if (IS_ERR(pdata))
--		return PTR_ERR(pdata);
--
--	data = kzalloc(sizeof(struct mxt_data), GFP_KERNEL);
--	if (!data) {
--		dev_err(&client->dev, "Failed to allocate memory\n");
-+	data = devm_kzalloc(&client->dev, sizeof(struct mxt_data), GFP_KERNEL);
-+	if (!data)
- 		return -ENOMEM;
--	}
- 
- 	snprintf(data->phys, sizeof(data->phys), "i2c-%u-%04x/input0",
- 		 client->adapter->nr, client->addr);
- 
- 	data->client = client;
--	data->pdata = pdata;
- 	data->irq = client->irq;
- 	i2c_set_clientdata(client, data);
- 
-@@ -2649,48 +4106,78 @@ static int mxt_probe(struct i2c_client *client, const struct i2c_device_id *id)
- 	init_completion(&data->reset_completion);
- 	init_completion(&data->crc_completion);
- 
--	error = request_threaded_irq(client->irq, NULL, mxt_interrupt,
--				     pdata->irqflags | IRQF_ONESHOT,
--				     client->name, data);
-+	data->suspend_mode = dmi_check_system(chromebook_T9_suspend_dmi) ?
-+		MXT_SUSPEND_T9_CTRL : MXT_SUSPEND_DEEP_SLEEP;
-+
-+	error = mxt_parse_device_properties(data);
-+	if (error)
-+		return error;
-+
-+	data->reset_gpio = devm_gpiod_get_optional(&client->dev,
-+						   "reset", GPIOD_OUT_LOW);
-+	if (IS_ERR(data->reset_gpio)) {
-+		error = PTR_ERR(data->reset_gpio);
-+		dev_err(&client->dev, "Failed to get reset gpio: %d\n", error);
-+		return error;
-+	} else {
-+		dev_dbg(&client->dev, "Got Reset GPIO\n");
-+	  }
-+
-+	error = devm_request_threaded_irq(&client->dev, client->irq,
-+					  NULL, mxt_interrupt, IRQF_ONESHOT,
-+					  client->name, data);
- 	if (error) {
- 		dev_err(&client->dev, "Failed to register interrupt\n");
--		goto err_free_mem;
-+		return error;
- 	}
- 
- 	disable_irq(client->irq);
- 
-+	if(!(IS_ERR(data->reset_gpio))) {
-+		gpiod_direction_output(data->reset_gpio, 1);	/* GPIO in device tree is active-low */
-+		dev_dbg(&client->dev, "Direction is ouput\n");
-+	}
-+	
-+	if(!(IS_ERR(data->reset_gpio))) {
-+		dev_info(&client->dev, "Resetting chip\n");
-+		msleep(MXT_RESET_GPIO_TIME);
-+		gpiod_set_value(data->reset_gpio, 1);
-+		msleep(MXT_RESET_INVALID_CHG);
-+		gpiod_set_value(data->reset_gpio, 0);
-+	}
-+
- 	error = mxt_initialize(data);
- 	if (error)
--		goto err_free_irq;
-+		return error;
- 
--	error = sysfs_create_group(&client->dev.kobj, &mxt_attr_group);
--	if (error) {
--		dev_err(&client->dev, "Failure %d creating sysfs group\n",
--			error);
--		goto err_free_object;
--	}
-+	/* Removed the mxt_sys_init and mxt_debug_msg_init */
-+	/* out of mxt_initialize to avoid duplicate inits */
-+
-+	error = mxt_sysfs_init(data);
-+	if (error)
-+		return error;
-+
-+	error = mxt_debug_msg_init(data);
-+	if (error)
-+		return error;
-+
-+	mutex_init(&data->debug_msg_lock);
- 
- 	return 0;
- 
--err_free_object:
--	mxt_free_input_device(data);
--	mxt_free_object_table(data);
--err_free_irq:
--	free_irq(client->irq, data);
--err_free_mem:
--	kfree(data);
--	return error;
- }
- 
- static int mxt_remove(struct i2c_client *client)
- {
- 	struct mxt_data *data = i2c_get_clientdata(client);
- 
-+	mxt_debug_msg_remove(data);	
-+	mxt_sysfs_remove(data);
-+
-+	disable_irq(data->irq);
- 	sysfs_remove_group(&client->dev.kobj, &mxt_attr_group);
--	free_irq(data->irq, data);
- 	mxt_free_input_device(data);
- 	mxt_free_object_table(data);
--	kfree(data);
- 
- 	return 0;
- }
-@@ -2737,6 +4224,11 @@ static SIMPLE_DEV_PM_OPS(mxt_pm_ops, mxt_suspend, mxt_resume);
- 
- static const struct of_device_id mxt_of_match[] = {
- 	{ .compatible = "atmel,maxtouch", },
-+	/* Compatibles listed below are deprecated */
-+	{ .compatible = "atmel,qt602240_ts", },
-+	{ .compatible = "atmel,atmel_mxt_ts", },
-+	{ .compatible = "atmel,atmel_mxt_tp", },
-+	{ .compatible = "atmel,mXT224", },
- 	{},
- };
- MODULE_DEVICE_TABLE(of, mxt_of_match);
-@@ -2763,7 +4255,7 @@ MODULE_DEVICE_TABLE(i2c, mxt_id);
- static struct i2c_driver mxt_driver = {
- 	.driver = {
- 		.name	= "atmel_mxt_ts",
--		.of_match_table = of_match_ptr(mxt_of_match),
-+		.of_match_table = mxt_of_match,
- 		.acpi_match_table = ACPI_PTR(mxt_acpi_id),
- 		.pm	= &mxt_pm_ops,
- 	},

+ 13 - 0
board/GfA/Display001/linux_4.4.94_rt19/linux-031-fix-gcc-8.patch

@@ -0,0 +1,13 @@
+diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
+index 35c9db85..cd8b5891 100644
+--- a/arch/arm/include/asm/uaccess.h
++++ b/arch/arm/include/asm/uaccess.h
+@@ -251,7 +251,7 @@ extern int __put_user_8(void *, unsigned long long);
+ 	({								\
+ 		unsigned long __limit = current_thread_info()->addr_limit - 1; \
+ 		const typeof(*(p)) __user *__tmp_p = (p);		\
+-		register const typeof(*(p)) __r2 asm("r2") = (x);	\
++		register typeof(*(p)) __r2 asm("r2") = (x);	\
+ 		register const typeof(*(p)) __user *__p asm("r0") = __tmp_p; \
+ 		register unsigned long __l asm("r1") = __limit;		\
+ 		register int __e asm("r0");				\

+ 9 - 0
board/GfA/Display001/post-build_4.4.sh

@@ -82,4 +82,13 @@ mkdir -p $TARGETDIR/usr/lib/fonts
 cp $TARGETDIR/usr/share/fonts/dejavu/* $TARGETDIR/usr/lib/fonts
 cp $TARGETDIR/usr/share/fonts/dejavu/* $TARGETDIR/usr/lib/fonts
 cp $TARGETDIR/usr/share/fonts/liberation/* $TARGETDIR/usr/lib/fonts
 cp $TARGETDIR/usr/share/fonts/liberation/* $TARGETDIR/usr/lib/fonts
 #------------------------------------
 #------------------------------------
+#-- dirty hack for wrong NEEDED path in Qt EGLFS libraries
+#-- use this workaound till this is fixed by Qt (propably in 5.14)
+mkdir -p ${TARGETDIR}${HOST_DIR}/arm-buildroot-linux-gnueabihf
+if [ -L ${TARGETDIR}${HOST_DIR}/arm-buildroot-linux-gnueabihf/sysroot ]
+then
+	rm  ${TARGETDIR}${HOST_DIR}/arm-buildroot-linux-gnueabihf/sysroot
+fi
+ln -s / ${TARGETDIR}${HOST_DIR}/arm-buildroot-linux-gnueabihf/sysroot
+#
 echo "GfA-Display001 Rel 1.0 Build $BUILD ($BUILDDATE)" > $TARGETDIR/etc/BUILD
 echo "GfA-Display001 Rel 1.0 Build $BUILD ($BUILDDATE)" > $TARGETDIR/etc/BUILD

+ 4 - 1
board/GfA/Display001/rootfs/etc/profile

@@ -33,7 +33,10 @@ if [ "$PS1" ]; then
     export EDITOR='/bin/vi'
     export EDITOR='/bin/vi'
     export INPUTRC=/etc/inputrc
     export INPUTRC=/etc/inputrc
     export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile
     export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile
-
+    ### Qt EGLFS Settings
+    export QT_QPA_EGLFS_INTEGRATION=none
+    export QT_QPA_EGLFS_HIDECURSOR=1
+    
     ### Some aliases
     ### Some aliases
     alias ps2='ps facux '
     alias ps2='ps facux '
     alias ps1='ps faxo "%U %t %p %a" '
     alias ps1='ps faxo "%U %t %p %a" '

+ 0 - 1
board/GfA/Display001/rootfs/etc/ssh/sshd_config

@@ -133,4 +133,3 @@ Subsystem	sftp	/usr/libexec/sftp-server
 #	ForceCommand cvs server
 #	ForceCommand cvs server
 
 
 #---------------
 #---------------
-Ciphers 3des-cbc,blowfish-cbc,cast128-cbc,arcfour,arcfour128,arcfour256,aes128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com

BIN
board/GfA/Display001/rootfs/opt/GfA-Browser/GfA-browser


+ 0 - 9
board/GfA/Display001/rootfs/root/README.txt

@@ -1,9 +0,0 @@
-noVNC:
-
-Beispiel für Verbindung mit 192.168.0.125 über Webbrowser:
-
-- bitte Parameter "host=" beachten
-- automatische Neuverbindung, bei Timeout erschein ein Reconnect button
-- Anzeige wird auf Browserfenster skaliert
-
-http://192.168.0.125:8081/vnc.html?host=192.168.0.125&port=5901&password=root&reconnect=true

+ 3 - 1
board/GfA/Display001/rootfs/root/startbrowser.sh

@@ -5,8 +5,10 @@ cd /root
 rm -rf .cache .local
 rm -rf .cache .local
 . /etc/profile
 . /etc/profile
 export HOME=/tmp
 export HOME=/tmp
+export QT_QPA_EGLFS_INTEGRATION=none
+export QT_QPA_EGLFS_HIDECURSOR=1
 
 
 export QT_QPA_EGLFS_PHYSICAL_WIDTH=152
 export QT_QPA_EGLFS_PHYSICAL_WIDTH=152
 export QT_QPA_EGLFS_PHYSICAL_HEIGHT=92
 export QT_QPA_EGLFS_PHYSICAL_HEIGHT=92
 
 
-/opt/GfA-Browser/GfA-browser
+/opt/GfA-Browser/GfA-browser --no-sandbox

BIN
board/GfA/Display001/rootfs/usr/sbin/fbvncserver


BIN
board/GfA/Display001/rootfs/usr/sbin/vncpasswd


+ 45 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/index.vnc

@@ -0,0 +1,45 @@
+<!-- index.vnc - default html page for Java VNC viewer applet.  On any file
+     ending in .vnc, the HTTP server embedded in Xvnc will substitute the
+     following variables when preceded by a dollar: USER, DESKTOP, DISPLAY,
+     APPLETWIDTH, APPLETHEIGHT, WIDTH, HEIGHT, PORT, PARAMS.  Use two dollar
+     signs ($$) to get a dollar sign in the generated html. -->
+
+<HTML>
+<head> 
+<TITLE>
+$USER's $DESKTOP desktop ($DISPLAY)
+</TITLE>
+</head> 
+<APPLET CODE=VncViewer.class ARCHIVE=java-applet/VncViewer.jar
+        WIDTH=$APPLETWIDTH HEIGHT=$APPLETHEIGHT>
+<param name=PORT value=$PORT>
+<param name="Open New Window" value=yes>
+</APPLET>
+<br/>
+<br/>
+
+If the above Java applet does not work, you can also try the new JavaScript-only <a href="http://kanaka.github.com/noVNC/">noVNC</a> viewer. You will need a HTML5-capable browser though.
+<script language="JavaScript">
+    <!--
+    function start_novnc(){
+	var host = document.location.hostname;
+	// If there are at least two colons in there, it is likely an IPv6 address. Check for square brackets and add them if missing.
+	if(host.search(/^.*:.*:.*$/) != -1) {
+	   if(host.charAt(0) != "[")
+	      host = "[" + host;
+	   if(host.charAt(host.length-1) != "]")
+	      host = host + "]";
+	}
+	open("novnc/vnc_auto.html?host=" + host + "&port=$PORT&true_color=1");
+    }
+    -->
+</script>
+<form name="novnc_button_form">
+  <input type="button" name="novnc_button" value="Click here to connect using noVNC" onClick='start_novnc()'>
+</form>
+
+<br/>
+<br/>
+<br/>
+<A href="http://libvncserver.sf.net/">LibVNCServer/LibVNCClient Homepage</A>
+</HTML>

BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/VncViewer.jar


+ 141 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/javaviewer.pseudo_proxy.patch

@@ -0,0 +1,141 @@
+diff -ru vnc_javasrc/OptionsFrame.java proxy_vnc_javasrc/OptionsFrame.java
+--- vnc_javasrc/OptionsFrame.java	Fri Jul  5 08:17:23 2002
++++ proxy_vnc_javasrc/OptionsFrame.java	Thu Aug 22 23:24:44 2002
+@@ -70,6 +70,12 @@
+ 
+   Label[] labels = new Label[names.length];
+   Choice[] choices = new Choice[names.length];
++
++  Label proxyHostLabel;
++  TextField proxyHostEdit;
++  Label proxyPortLabel;
++  TextField proxyPortEdit;
++  
+   Button closeButton;
+   VncViewer viewer;
+ 
+@@ -93,6 +99,9 @@
+   boolean shareDesktop;
+   boolean viewOnly;
+ 
++  String proxyHost;
++  int proxyPort;
++
+   //
+   // Constructor.  Set up the labels and choices from the names and values
+   // arrays.
+@@ -126,6 +135,32 @@
+       }
+     }
+ 
++    // TODO: find a way to set these to defaults from browser
++    proxyPort = viewer.readIntParameter("Use Proxy Port", -1);
++    if(proxyPort>-1) {
++      proxyHost = viewer.readParameter("Use Proxy Host", false);
++      if(proxyHost == null)
++	proxyHost = viewer.host;
++
++      proxyHostLabel = new Label("Proxy Host");
++      gbc.gridwidth = 1;
++      gridbag.setConstraints(proxyHostLabel,gbc);
++      add(proxyHostLabel);
++      proxyHostEdit = new TextField();
++      gbc.gridwidth = GridBagConstraints.REMAINDER;
++      gridbag.setConstraints(proxyHostEdit,gbc);
++      add(proxyHostEdit);
++    
++      proxyPortLabel = new Label("Proxy Port");
++      gbc.gridwidth = 1;
++      gridbag.setConstraints(proxyPortLabel,gbc);
++      add(proxyPortLabel);
++      proxyPortEdit = new TextField();
++      gbc.gridwidth = GridBagConstraints.REMAINDER;
++      gridbag.setConstraints(proxyPortEdit,gbc);
++      add(proxyPortEdit);
++    }
++    
+     closeButton = new Button("Close");
+     gbc.gridwidth = GridBagConstraints.REMAINDER;
+     gridbag.setConstraints(closeButton, gbc);
+@@ -161,6 +196,11 @@
+       }
+     }
+ 
++    if(proxyPort>-1) {
++      proxyPortEdit.setText(Integer.toString(proxyPort));
++      proxyHostEdit.setText(proxyHost);
++    }
++
+     // Make the booleans and encodings array correspond to the state of the GUI
+ 
+     setEncodings();
+@@ -361,8 +401,12 @@
+   //
+ 
+   public void actionPerformed(ActionEvent evt) {
+-    if (evt.getSource() == closeButton)
++    if (evt.getSource() == closeButton) {
+       setVisible(false);
++      proxyHost = proxyHostEdit.getText();
++      proxyPort = Integer.parseInt(proxyPortEdit.getText());
++      System.err.println("proxy is " + proxyHost + ":" + proxyPort);
++    }
+   }
+ 
+   //
+diff -ru vnc_javasrc/RfbProto.java proxy_vnc_javasrc/RfbProto.java
+--- vnc_javasrc/RfbProto.java	Sun Aug  4 18:39:35 2002
++++ proxy_vnc_javasrc/RfbProto.java	Thu Aug 22 22:53:53 2002
+@@ -119,12 +119,51 @@
+     viewer = v;
+     host = h;
+     port = p;
+-    sock = new Socket(host, port);
++    if(viewer.options.proxyPort>-1)
++      sock = new Socket(viewer.options.proxyHost, viewer.options.proxyPort);
++    else
++      sock = new Socket(host, port);
+     is = new DataInputStream(new BufferedInputStream(sock.getInputStream(),
+ 						     16384));
+     os = sock.getOutputStream();
++    if(viewer.options.proxyPort>-1)
++      negotiateProxy(host,port);
+   }
+ 
++  // this is inefficient as hell, but only used once per connection
++  String readLine() {
++    byte[] ba = new byte[1];
++    String s = new String("");
++
++    ba[0]=0;
++    try {
++      while(ba[0] != 0xa) {
++	ba[0] = (byte)is.readUnsignedByte();
++	s += new String(ba);
++      }
++    } catch(Exception e) {
++      e.printStackTrace();
++    }
++    return s;
++  }
++
++  void negotiateProxy(String realHost,int realPort) throws IOException {
++    String line;
++
++    // this would be the correct way, but we want to trick strict proxies.
++    // line = "CONNECT " + realHost + ":" + realPort + " HTTP/1.1\r\nHost: " + realHost + ":" + realPort + "\r\n\r\n";
++    line = "GET " + realHost + ":" + realPort + "/proxied.connection HTTP/1.0\r\nPragma: No-Cache\r\nProxy-Connection: Keep-Alive\r\n\r\n";
++    os.write(line.getBytes());
++
++    line = readLine();
++    System.err.println("Proxy said: " + line);
++    if(!(line.substring(0,7)+line.substring(8,12)).equalsIgnoreCase("HTTP/1. 200")) {
++      IOException e = new IOException(line);
++      throw e;
++    }
++    while(!line.equals("\r\n") && !line.equals("\n"))
++      line = readLine();
++  }    
+ 
+   void close() {
+     try {

+ 382 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/Makefile

@@ -0,0 +1,382 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# webclients/java-applet/ssl/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+pkgdatadir = $(datadir)/LibVNCServer
+pkgincludedir = $(includedir)/LibVNCServer
+pkglibdir = $(libdir)/LibVNCServer
+pkglibexecdir = $(libexecdir)/LibVNCServer
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = arm-buildroot-linux-gnueabihf
+subdir = webclients/java-applet/ssl
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/rfbconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9/missing --run aclocal-1.11
+AMTAR = ${SHELL} /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9/missing --run tar
+AM_DEFAULT_VERBOSITY = 0
+AR = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-ar
+AS = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-as
+AUTOCONF = ${SHELL} /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9/missing --run automake-1.11
+AVAHI_CFLAGS = 
+AVAHI_LIBS = 
+AWK = gawk
+CC = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-gcc
+CCDEPMODE = depmode=none
+CFLAGS = -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -pipe -Os -g2 -Wall -I/home/ru/BUILDROOTTEST/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include
+CPP = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-cpp
+CPPFLAGS = -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
+CRYPT_LIBS = -lcrypt
+CXX = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-g++
+CXXCPP = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-g++ -E
+CXXDEPMODE = depmode=none
+CXXFLAGS = -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -pipe -Os -g2
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+DLLTOOL = dlltool
+ECHO = echo
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+EXEEXT = 
+F77 = 
+FFLAGS = 
+GNUTLS_CFLAGS = 
+GNUTLS_LIBS = 
+GREP = /bin/grep
+GTK_CFLAGS = 
+GTK_LIBS = 
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+JPEG_LDFLAGS = 
+LDFLAGS = 
+LIBGCRYPT_CFLAGS = -I/home/ru/BUILDROOTTEST/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include
+LIBGCRYPT_CONFIG = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/bin/libgcrypt-config
+LIBGCRYPT_LIBS = -L/home/ru/BUILDROOTTEST/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib -lgcrypt -lgpg-error
+LIBOBJS =  ${LIBOBJDIR}lstat$U.o ${LIBOBJDIR}stat$U.o
+LIBS = -lnsl -lpthread -lz -lpng -ljpeg -lresolv -lssl -lcrypto -L/home/ru/BUILDROOTTEST/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib -lgcrypt -lgpg-error
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LN_S = ln -s
+LTLIBOBJS =  ${LIBOBJDIR}lstat$U.lo ${LIBOBJDIR}stat$U.lo
+MAKEINFO = ${SHELL} /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9/missing --run makeinfo
+MKDIR_P = /bin/mkdir -p
+OBJDUMP = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-objdump
+OBJEXT = o
+PACKAGE = LibVNCServer
+PACKAGE_BUGREPORT = http://sourceforge.net/projects/libvncserver
+PACKAGE_NAME = LibVNCServer
+PACKAGE_STRING = LibVNCServer 0.9.9
+PACKAGE_TARNAME = libvncserver
+PACKAGE_URL = 
+PACKAGE_VERSION = 0.9.9
+PATH_SEPARATOR = :
+PKG_CONFIG = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/pkg-config
+PKG_CONFIG_LIBDIR = 
+PKG_CONFIG_PATH = 
+RANLIB = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-ranlib
+RPMSOURCEDIR = NOT-FOUND
+SDL_CFLAGS = 
+SDL_LIBS = 
+SET_MAKE = 
+SHELL = /bin/bash
+SSL_LIBS = -lssl -lcrypto
+STRIP = /home/ru/BUILDROOTTEST/buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabihf-strip
+SYSTEM_LIBVNCSERVER_CFLAGS = 
+SYSTEM_LIBVNCSERVER_LIBS = 
+VERSION = 0.9.9
+WSOCKLIB = 
+XMKMF = 
+X_CFLAGS = 
+X_EXTRA_LIBS = 
+X_LIBS = 
+X_PRE_LIBS = 
+abs_builddir = /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9/webclients/java-applet/ssl
+abs_srcdir = /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9/webclients/java-applet/ssl
+abs_top_builddir = /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9
+abs_top_srcdir = /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9
+ac_ct_CC = 
+ac_ct_CXX = 
+ac_ct_F77 = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = x86_64-unknown-linux-gnu
+build_alias = x86_64-unknown-linux-gnu
+build_cpu = x86_64
+build_os = linux-gnu
+build_vendor = unknown
+builddir = .
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = /usr
+host = arm-buildroot-linux-gnueabihf
+host_alias = arm-buildroot-linux-gnueabihf
+host_cpu = arm
+host_os = linux-gnueabihf
+host_vendor = buildroot
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = ${SHELL} /home/ru/BUILDROOTTEST/buildroot/output/build/libvncserver-0.9.9/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = /var
+mandir = ${datarootdir}/man
+mkdir_p = /bin/mkdir -p
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr
+program_transform_name = s&^&&
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = /etc
+target_alias = arm-buildroot-linux-gnueabihf
+top_build_prefix = ../../../
+top_builddir = ../../..
+top_srcdir = ../../..
+with_ffmpeg = 
+EXTRA_DIST = VncViewer.jar index.vnc SignedVncViewer.jar proxy.vnc README ss_vncviewer onetimekey UltraViewerSSL.jar SignedUltraViewerSSL.jar ultra.vnc ultrasigned.vnc ultraproxy.vnc
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu webclients/java-applet/ssl/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu webclients/java-applet/ssl/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	distclean distclean-generic distclean-libtool distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

+ 2 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/Makefile.am

@@ -0,0 +1,2 @@
+EXTRA_DIST=VncViewer.jar index.vnc SignedVncViewer.jar proxy.vnc README ss_vncviewer onetimekey UltraViewerSSL.jar SignedUltraViewerSSL.jar ultra.vnc ultrasigned.vnc ultraproxy.vnc
+

+ 382 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/Makefile.in

@@ -0,0 +1,382 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = webclients/java-applet/ssl
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/rfbconfig.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_$(V))
+am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+am__v_GEN_0 = @echo "  GEN   " $@;
+AM_V_at = $(am__v_at_$(V))
+am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+am__v_at_0 = @
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AVAHI_CFLAGS = @AVAHI_CFLAGS@
+AVAHI_LIBS = @AVAHI_LIBS@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPT_LIBS = @CRYPT_LIBS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
+GNUTLS_LIBS = @GNUTLS_LIBS@
+GREP = @GREP@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JPEG_LDFLAGS = @JPEG_LDFLAGS@
+LDFLAGS = @LDFLAGS@
+LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@
+LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@
+LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+RANLIB = @RANLIB@
+RPMSOURCEDIR = @RPMSOURCEDIR@
+SDL_CFLAGS = @SDL_CFLAGS@
+SDL_LIBS = @SDL_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SSL_LIBS = @SSL_LIBS@
+STRIP = @STRIP@
+SYSTEM_LIBVNCSERVER_CFLAGS = @SYSTEM_LIBVNCSERVER_CFLAGS@
+SYSTEM_LIBVNCSERVER_LIBS = @SYSTEM_LIBVNCSERVER_LIBS@
+VERSION = @VERSION@
+WSOCKLIB = @WSOCKLIB@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+with_ffmpeg = @with_ffmpeg@
+EXTRA_DIST = VncViewer.jar index.vnc SignedVncViewer.jar proxy.vnc README ss_vncviewer onetimekey UltraViewerSSL.jar SignedUltraViewerSSL.jar ultra.vnc ultrasigned.vnc ultraproxy.vnc
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu webclients/java-applet/ssl/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu webclients/java-applet/ssl/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+	  else \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	distclean distclean-generic distclean-libtool distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-dvi install-dvi-am \
+	install-exec install-exec-am install-html install-html-am \
+	install-info install-info-am install-man install-pdf \
+	install-pdf-am install-ps install-ps-am install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

+ 338 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/README

@@ -0,0 +1,338 @@
+This directory contains a patched Java applet VNC viewer that is SSL
+enabled.
+
+The patches in the *.patch files are relative to the source tarball:
+
+	tightvnc-1.3dev7_javasrc.tar.gz  
+
+currently (4/06) available here:
+
+   http://prdownloads.sourceforge.net/vnc-tight/tightvnc-1.3dev7_javasrc.tar.gz?download
+
+It also includes some simple patches to:
+
+	- fix richcursor colors
+
+	- make the Java Applet cursor (not the cursor drawn to the canvas
+	  framebuffer) invisible when it is inside the canvas.
+
+	- allow Tab (and some other) keystrokes to be sent to the vnc
+	  server instead of doing widget traversal.
+
+
+This SSL applet should work with any VNC viewer that has an SSL tunnel in
+front of it.  It has been tested on x11vnc and using the stunnel tunnel
+to other VNC servers.
+
+By default this Vnc Viewer will only do SSL.  To do unencrypted traffic
+see the "DisableSSL" applet parameter (e.g. set it to Yes in index.vnc).
+
+Proxies: they are a general problem with java socket applets (a socket
+connection does not go through the proxy).  See the info in the proxy.vnc
+file for a workaround.  It uses SignedVncViewer.jar which is simply
+a signed version of VncViewer.jar.  The basic idea is the user clicks
+"Yes" to trust the applet and then it can connect directly to the proxy
+and issue a CONNECT request.
+
+This applet has been tested on versions 1.4.2 and 1.5.0 of the Sun
+Java plugin.  It may not work on older releases or different vendor VM's.
+Send full Java Console output for failures.
+
+---------------------------------------------------------------
+Tips:
+
+When doing single-port proxy connections (e.g. both VNC and HTTPS
+thru port 5900) it helps to move through the 'do you trust this site'
+dialogs quickly.   x11vnc has to wait to see if the traffic is VNC or
+HTTP and this can cause timeouts if you don't move thru them quickly.
+
+You may have to restart your browser completely if it gets into a
+weird state.  For one case we saw the JVM requesting VncViewer.class
+even when no such file exists.
+
+
+---------------------------------------------------------------
+Extras:
+
+ss_vncviewer (not Java):
+
+        Wrapper script for native VNC viewer to connect to x11vnc in
+        SSL mode.  Script launches stunnel(8) and then connects to it
+        via localhost which in turn is then redirected to x11vnc via an
+        SSL tunnel.  stunnel(8) must be installed and available in PATH.
+
+
+Running Java SSL VncViewer from the command line:
+
+	From this directory:
+
+	java -cp ./VncViewer.jar VncViewer HOST <thehost> PORT <theport>
+
+	substitute <thehost> and <theport> with the actual values.
+	You can add any other parameters, e.g.: ignoreProxy yes
+
+---------------------------------------------------------------
+UltraVNC:
+
+The UltraVNC java viewer has also been patched to support SSL.  Various
+bugs in the UltraVNC java viewer were also fixed.  This viewer can be
+useful because is support UltraVNC filetransfer, and so it works on
+Unix, etc.
+
+UltraViewerSSL.jar
+SignedUltraViewerSSL.jar
+ultra.vnc
+ultraproxy.vnc
+ultravnc-102-JavaViewer-ssl-etc.patch
+
+---------------------------------------------------------------
+Applet Parameters:
+
+Some additional applet parameters can be set via the URL, e.g.
+
+	http://host:5800/?param=value
+	http://host:5800/ultra.vnc?param=value
+	https://host:5900/ultra.vnc?param=value
+
+etc.  If running java from command line as show above, it comes
+in as java ... VncViewer param value ... 
+
+There is a limitation with libvncserver that param and value can
+only be alphanumeric, underscore, "+" (for space), or "."
+
+We have added some applet parameters to the stock VNC java
+viewers.  Here are the applet parameters:
+
+Both TightVNC and UltraVNC Java viewers:
+
+  HOST
+	string, default: none.
+	The Hostname to connect to.
+	
+  PORT
+	number, default: 0
+	The VNC server port to connect to.
+
+  Open New Window
+	yes/no, default: no
+	Run applet in separate frame.
+
+  Show Controls
+	yes/no, default: yes
+	Show Controls button panel.
+
+  Show Offline Desktop
+	yes/no, default: no
+	Do we continue showing desktop on remote disconnect?
+
+  Defer screen updates
+	number, default: 20
+	Milliseconds delay
+
+  Defer cursor updates
+	number, default: 10
+	Milliseconds delay
+
+  Defer update requests
+	number, default: 50
+	Milliseconds delay
+
+  PASSWORD
+	string, default: none
+	VNC session password in plain text.
+
+  ENCPASSWORD
+	string, default: none
+	VNC session password in encrypted in DES with KNOWN FIXED
+	key.  It is a hex string.  This is like the ~/.vnc/passwd format.
+  
+  
+  The following are added by x11vnc and/or ssvnc project
+  
+  VNCSERVERPORT
+	number, default: 0
+	Like PORT, but if there is a firewall this is the Actual VNC
+	server port.  PORT might be a redir port on the firewall.
+
+  DisableSSL
+	yes/no, default: no
+	Do unencrypted connection, no SSL. 
+
+  httpsPort
+	number, default: none
+	When checking for proxy, use this at the url port number.
+
+  CONNECT
+	string, default: none
+	Sets to host:port for the CONNECT line to a Web proxy. 
+	The Web proxy should connect us to it.
+
+  GET
+	yes/no, default: no
+	Set to do a special HTTP GET (/request.https.vnc.connection)
+	to the vnc server that will cause it to switch to VNC instead.
+	This is to speedup/make more robust, the single port HTTPS and VNC
+	mode of x11vnc (e.g. both services thru port 5900, etc) 
+	
+  urlPrefix
+	string, default: none
+	set to a string that will be prefixed to all URL's when contacting
+	the VNC server.  Idea is a special proxy will use this to indicate
+	internal hostname, etc.
+
+  oneTimeKey
+	string, default: none
+	set a special hex "key" to correspond to an SSL X.509 cert+key.
+	See the 'onetimekey' helper script.  Can also be PROMPT to prompt
+	the user to paste the hex key string in.
+
+	This provides a Client-Side cert+key that the client will use to
+	authenticate itself by SSL To the VNC Server.
+
+	This is to try to work around the problem that the Java applet
+	cannot keep an SSL keystore on disk, etc.  E.g. if they log
+	into an HTTPS website via password they are authenticated and
+	encrypted, then the website can safely put oneTimeKey=... on the
+	URL.  The Vncviewer authenticates the VNC server with this key.
+
+	Note that there is currently a problem in that if x11vnc requires
+	Client Certificates the user cannot download the index.vnc HTML
+	and VncViewer.jar from the same x11vnc.  Those need to come from
+	a different x11vnc or from a web server.
+
+	Note that the HTTPS website can also put the VNC Password
+	(e.g. a temporary/one-time one) in the parameter PASSWORD.
+	The Java Applet will automatically supply this VNC password
+	instead of prompting.
+
+  serverCert
+	string, default: none
+	set a special hex "cert" to correspond to an SSL X.509 cert
+	See the 'onetimekey -certonly' helper script.
+
+	This provides a Server-Side cert that the client will authenticate
+	the VNC Server against by SSL.
+
+	This is to try to work around the problem that the Java applet
+	cannot keep an SSL keystore on disk, etc.  E.g. if they log
+	into an HTTPS website via password they are authenticated and
+	encrypted, then the website can safely put serverCert=... on the
+	URL.
+
+	Of course the VNC Server is sending this string to the Java
+	Applet, so this is only reasonable security if the VNC Viewer
+	already trusts the HTTPS retrieval of the URL + serverCert param
+	that it gets.  This should be done over HTTPS not HTTP.
+
+  proxyHost
+	string, default: none
+	Do not try to guess the proxy's hostname, use the value in
+	proxyHost.  Does not imply forceProxy (below.)
+
+  proxyPort
+	string, default: none
+	Do not try to guess the proxy's port number, use the value in
+	proxyPort.  Does not imply forceProxy (below.)
+
+  forceProxy
+	yes/no, default: no
+	Assume there is a proxy and force its use.
+
+	If a string other than "yes" or "no" is given, it implies "yes"
+	and uses the string for proxyHost and proxyPort (see above).
+	In this case the string must be of the form "hostname+port".
+	Note that it is "+" and not ":" before the port number.
+
+  ignoreProxy
+	yes/no, default: no
+	Don't check for a proxy, assume there is none.
+
+  trustAllVncCerts
+	yes/no, default: no
+	Automatically trust any cert received from the VNC server
+	(obviously this could be dangerous and lead to man in the
+	middle attack).  Do not ask the user to verify any of these
+	certs from the VNC server.
+
+  trustUrlVncCert
+	yes/no, default: no
+	Automatically trust any cert that the web browsers has accepted.
+	E.g. the user said "Yes" or "Continue" to a web browser dialog
+	regarding a certificate.  If we get the same cert (chain) from
+	the VNC server we trust it without prompting the user.
+
+  debugCerts
+	yes/no, default: no
+	Print out every cert in the Server, TrustUrl, TrustAll chains.
+
+
+TightVNC Java viewer only:
+
+  Offer Relogin
+	yes/no, default: yes
+	"Offer Relogin" set to "No" disables "Login again" 
+
+  SocketFactory
+	string, default: none
+	set Java Socket class factory.
+
+UltraVNC Java viewer only:
+
+  None.
+
+  The following are added by x11vnc and/or ssvnc project
+  
+  ftpDropDown
+	string, default: none
+	Sets the file transfer "drives" dropdown to the "." separated
+	list.  Use "+" for space. The default is
+
+		My+Documents.Desktop.Home
+
+	for 3 entries in the dropdown in addition to the "drives"
+	(e.g. C:\)  These items should be expanded properly by the VNC
+	Server.  x11vnc will prepend $HOME to them, which is normally
+	what one wants.  To include a "/" use "_2F_".  Another example:
+
+		Home.Desktop.bin_2F_linux
+
+	If an item is prefixed with "TOP_" then the item is inserted at
+	the top of the drop down rather than being appended to the end.
+	E.g. to try to initially load the user homedir instead of /:
+
+		TOP_Home.My+Documents.Desktop
+
+	If ftpDropDown is set to the empty string, "", then no special
+	locations, [Desktop] etc., are placed in the drop down.  Only the
+	ultravnc "drives" will appear.
+
+  ftpOnly
+	yes/no, default: no
+	The VNC viewer only shows the filetransfer panel, no desktop
+	is displayed.
+
+  graftFtp
+	yes/no, default: no
+	As ftpOnly, the VNC viewer only shows the filetransfer panel,
+	no desktop is displayed, however it is "grafted" onto an existing
+	SSVNC unix vncviewer.  The special SSVNC vncviewer merges the two
+	channels.
+
+  dsmActive
+	yes/no, default: no
+	Special usage mode with the SSVNC unix vncviewer.  The UltraVNC
+	DSM encryption is active.  Foolishly, UltraVNC DSM encryption
+	*MODIFIES* the VNC protocol when active (it is not a pure tunnel).
+	This option indicates to modify the VNC protocol to make this work. 
+	Usually only used with graftFtp and SSVNC unix vncviewer.
+
+  delayAuthPanel
+	yes/no, default: no
+	This is another special usage mode with the SSVNC unix vncviewer.
+	A login panel is delayed (not shown at startup.)  Could be useful
+	for non SSVNC usage too.
+
+  ignoreMSLogonCheck
+	yes/no, default: no
+	Similar to delayAuthPanel, do not put up a popup asking for
+	Windows username, etc.

BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/SignedUltraViewerSSL.jar


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/SignedVncViewer.jar


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/UltraViewerSSL.jar


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/VncViewer.jar


+ 26 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/index.vnc

@@ -0,0 +1,26 @@
+<!-- 
+     index.vnc - default HTML page for TightVNC Java viewer applet, to be
+     used with Xvnc. On any file ending in .vnc, the HTTP server embedded in
+     Xvnc will substitute the following variables when preceded by a dollar:
+     USER, DESKTOP, DISPLAY, APPLETWIDTH, APPLETHEIGHT, WIDTH, HEIGHT, PORT,
+     PARAMS. Use two dollar signs ($$) to get a dollar sign in the generated
+     HTML page.
+
+     NOTE: the $PARAMS variable is not supported by the standard VNC, so
+     make sure you have TightVNC on the server side, if you're using this
+     variable.
+-->
+
+<HTML>
+<TITLE>
+$USER's $DESKTOP desktop ($DISPLAY)
+</TITLE>
+<APPLET CODE=VncViewer.class ARCHIVE=VncViewer.jar
+        WIDTH=$APPLETWIDTH HEIGHT=$APPLETHEIGHT>
+<param name=PORT value=$PORT>
+<param name="Open New Window" value=yes>
+$PARAMS
+</APPLET>
+<BR>
+<A href="http://www.karlrunge.com/x11vnc">x11vnc site</A>
+</HTML>

+ 65 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/onetimekey

@@ -0,0 +1,65 @@
+#!/bin/sh
+#
+# usage: onetimekey path/to/mycert.pem
+#        onetimekey -certonly path/to/mycert.pem
+#
+# Takes an openssl cert+key pem file and turns into a long string
+# for the x11vnc SSL VNC Java Viewer.
+#
+# The Java applet URL parameter can be  oneTimeKey=<str> where str is
+# the output of this program, or can be oneTimeKey=PROMPT in which
+# case the applet will ask you to paste in the string.
+#
+# The problem trying to be solved here is it is difficult to get
+# the Java applet to have or use a keystore with the key saved
+# in it.  Also, as the name implies, an HTTPS server can create
+# a one time key to send to the applet (the user has already
+# logged in via password to the HTTPS server).
+#
+# Note oneTimeKey is to provide a CLIENT Certificate for the viewer
+# to authenticate itself to the VNC Server.
+#
+# There is also the serverCert=<str> Applet parameter.  This is
+# a cert to authenticate the VNC server against.  To create that
+# string with this tool specify -certonly as the first argument.
+
+certonly=""
+if [ "X$1" = "X-certonly" ]; then
+	shift
+	certonly=1
+fi
+
+in=$1
+der=/tmp/1time$$.der
+touch $der
+chmod 600 $der
+
+openssl pkcs8 -topk8 -nocrypt -in "$in" -out "$der" -outform der
+
+pbinhex=/tmp/pbinhex.$$
+cat > $pbinhex <<END
+#!/usr/bin/perl
+
+\$str = '';
+while (1) {
+        \$c = getc(STDIN);
+        last if \$c eq '';
+        \$str .= sprintf("%02x", unpack("C", \$c));
+}
+
+print "\$str\n";
+END
+
+chmod 700 $pbinhex 
+
+str1=`$pbinhex < "$der"`
+rm -f "$der"
+
+n=`grep -n 'BEGIN CERTIFICATE' $in | awk -F: '{print $1}' | head -1`
+str2=`tail +$n $in | $pbinhex`
+if [ "X$certonly" = "X1" ]; then
+	echo "$str2"
+else
+	echo "$str1,$str2"
+fi
+rm -f $pbinhex

+ 73 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/proxy.vnc

@@ -0,0 +1,73 @@
+<!-- 
+     index.vnc - default HTML page for TightVNC Java viewer applet, to be
+     used with Xvnc. On any file ending in .vnc, the HTTP server embedded in
+     Xvnc will substitute the following variables when preceded by a dollar:
+     USER, DESKTOP, DISPLAY, APPLETWIDTH, APPLETHEIGHT, WIDTH, HEIGHT, PORT,
+     PARAMS. Use two dollar signs ($$) to get a dollar sign in the generated
+     HTML page.
+
+     NOTE: the $PARAMS variable is not supported by the standard VNC, so
+     make sure you have TightVNC on the server side, if you're using this
+     variable.
+-->
+
+<!--
+The idea behind using the signed applet in SignedVncViewer.jar for
+firewall proxies:
+
+Java socket applets and http proxies do not get along well.
+
+Java security allows the applet to connect back via a socket to the
+originating host, but the browser/plugin Proxy settings are not used for
+socket connections (only http and the like).  So the socket connection
+fails in the proxy environment.
+
+The applet is not allowed to open a socket connection to the proxy (since
+that would let it connect to just about any host, e.g. CONNECT method).
+
+This is indpendent of SSL but of course fails for that socket connection
+as well.  I.e. this is a problem for non-SSL VNC Viewers as well.
+
+Solution?  Sign the applet and have the user click on "Yes" that they
+fully trust the applet.  Then the applet can connect to any host via
+sockets, in particular the proxy.  It next issues the request
+
+	CONNECT host:port HTTP/1.1
+	Host: host:port
+
+and if the proxy supports the CONNECT method we are finally connected to
+the VNC server.
+
+For SSL connections, SSL is layered on top of this socket.  However note
+this scheme will work for non-SSL applet proxy tunnelling as well.
+
+It should be able to get non-SSL VNC connections to work via GET
+command but that has not been done yet.
+
+Note that some proxies only allow CONNECT to only these the ports 443
+(HTTPS) and 563 (SNEWS).  So you would have to run the VNC server on
+those ports.
+
+SignedVncViewer.jar is just a signed version of VncViewer.jar
+
+The URL to use for this file:  https://host:port/proxy.vnc
+
+Note VNCSERVERPORT, we assume $PARAMS will have the correct PORT setting
+(e.g. 563), not the one libvncserver puts in....
+
+-->
+
+
+<HTML>
+<TITLE>
+$USER's $DESKTOP desktop ($DISPLAY)
+</TITLE>
+<APPLET CODE=VncViewer.class ARCHIVE=SignedVncViewer.jar
+        WIDTH=$APPLETWIDTH HEIGHT=$APPLETHEIGHT>
+<param name=VNCSERVERPORT value=$PORT>
+<param name="Open New Window" value=yes>
+$PARAMS
+</APPLET>
+<BR>
+<A href="http://www.karlrunge.com/x11vnc">x11vnc site</A>
+</HTML>

+ 3676 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/ss_vncviewer

@@ -0,0 +1,3676 @@
+#!/bin/sh
+#
+# ss_vncviewer:  wrapper for vncviewer to use an stunnel SSL tunnel
+#                or an SSH tunnel.
+#
+# Copyright (c) 2006-2009 by Karl J. Runge <runge@karlrunge.com>
+#
+# ss_vncviewer is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or (at
+# your option) any later version.
+# 
+# ss_vncviewer is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with ss_vncviewer; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA
+# or see <http://www.gnu.org/licenses/>.
+# 
+# 
+# You must have stunnel(8) installed on the system and in your PATH
+# (however, see the -ssh option below, in which case you will need ssh(1)
+# installed)  Note: stunnel is usually installed in an "sbin" subdirectory.
+#
+# You should have "x11vnc -ssl ..." or "x11vnc -stunnel ..." 
+# already running as the VNC server on the remote machine.
+# (or use stunnel on the server side for any other VNC server)
+#
+#
+# Usage: ss_vncviewer [cert-args] host:display <vncviewer-args>
+#
+# e.g.:  ss_vncviewer snoopy:0
+#        ss_vncviewer snoopy:0 -encodings "copyrect tight zrle hextile"
+#
+# [cert-args] can be:
+#
+#	-verify /path/to/cacert.pem		
+#	-mycert /path/to/mycert.pem		
+#	-crl    /path/to/my_crl.pem  (or directory)
+#	-proxy  host:port
+#
+# -verify specifies a CA cert PEM file (or a self-signed one) for
+#         authenticating the VNC server.
+#
+# -mycert specifies this client's cert+key PEM file for the VNC server to
+#	  authenticate this client. 
+#
+# -proxy  try host:port as a Web proxy to use the CONNECT method
+#         to reach the VNC server (e.g. your firewall requires a proxy).
+#
+#         For the "double proxy" case use -proxy host1:port1,host2:port2
+#         (the first CONNECT is done through host1:port1 to host2:port2
+#         and then a 2nd CONNECT to the destination VNC server.)
+#
+#         Use socks://host:port, socks4://host:port, or socks5://host,port
+#         to force usage of a SOCKS proxy.  Also repeater://host:port and
+#         sslrepeater://host:port.
+#
+# -showcert  Only fetch the certificate using the 'openssl s_client'
+#            command (openssl(1) must in installed).  On ssvnc 1.0.27 and
+#            later the bundled command 'ultravnc_dsm_helper' is used.
+#
+#    See http://www.karlrunge.com/x11vnc/faq.html#faq-ssl-ca for details on
+#    SSL certificates with VNC.
+#
+# A few other args (not related to SSL and certs):
+#
+# -2nd    Run the vncviewer a 2nd time if the first connections fails.
+#
+# -ssh    Use ssh instead of stunnel SSL.  ssh(1) must be installed and you
+#         must be able to log into the remote machine via ssh.
+#
+#         In this case "host:display" may be of the form "user@host:display"
+#         where "user@host" is used for the ssh login (see ssh(1) manpage).
+#
+#         If -proxy is supplied it can be of the forms: "gwhost" "gwhost:port"
+#         "user@gwhost" or "user@gwhost:port".  "gwhost" is an incoming ssh 
+#         gateway machine (the VNC server is not running there), an ssh -L
+#         redir is used to "host" in "host:display" from "gwhost". Any "user@"
+#         part must be in the -proxy string (not in "host:display").
+#
+#         Under -proxy use "gwhost:port" if connecting to any ssh port
+#         other than the default (22).  (even for the non-gateway case,
+#         -proxy must be used to specify a non-standard ssh port)
+#
+#         A "double ssh" can be specified via a -proxy string with the two
+#         hosts separated by a comma:
+#
+#             [user1@]host1[:port1],[user2@]host2[:port2]
+#
+#         in which case a ssh to host1 and thru it via a -L redir a 2nd
+#         ssh is established to host2.  
+#
+#         Examples:
+#
+#         ss_vncviewer -ssh bob@bobs-home.net:0
+#         ss_vncviewer -ssh -sshcmd 'x11vnc -localhost' bob@bobs-home.net:0
+#
+#         ss_vncviewer -ssh -proxy fred@mygate.com:2022 mymachine:0
+#         ss_vncviewer -ssh -proxy bob@bobs-home.net:2222 localhost:0
+#
+#         ss_vncviewer -ssh -proxy fred@gw-host,fred@peecee localhost:0
+#
+# -sshcmd cmd   Run "cmd" via ssh instead of the default "sleep 15"
+#               e.g. -sshcmd 'x11vnc -display :0 -localhost -rfbport 5900'
+#
+# -sshargs "args"  pass "args" to the ssh process, e.g. -L/-R port redirs.
+#
+# -sshssl Tunnel the SSL connection thru a SSH connection.  The tunnel as
+#         under -ssh is set up and the SSL connection goes thru it.  Use
+#         this if you want to have and end-to-end SSL connection but must
+#         go thru a SSH gateway host (e.g. not the vnc server).  Or use
+#         this if you need to tunnel additional services via -R and -L 
+#         (see -sshargs above).
+#
+#         ss_vncviewer -sshssl -proxy fred@mygate.com mymachine:0
+#
+# -listen (or -reverse) set up a reverse connection.
+#
+# -alpha  turn on cursor alphablending hack if you are using the
+#         enhanced tightvnc vncviewer.
+#
+# -grab   turn on XGrabServer hack if you are using the enhanced tightvnc
+#         vncviewer (e.g. for fullscreen mode in some windowmanagers like
+#         fvwm that do not otherwise work in fullscreen mode)
+#
+#
+# set VNCVIEWERCMD to whatever vncviewer command you want to use.
+#
+VNCIPCMD=${VNCVIEWERCMD:-vncip}
+VNCVIEWERCMD=${VNCVIEWERCMD:-vncviewer}
+if [ "X$SSVNC_TURBOVNC" != "X" ]; then
+	if echo "$VNCVIEWERCMD" | grep '\.turbovnc' > /dev/null; then
+		:
+	else
+		if type "$VNCVIEWERCMD.turbovnc" > /dev/null 2>/dev/null; then
+			VNCVIEWERCMD="$VNCVIEWERCMD.turbovnc"
+		fi
+	fi
+fi
+#
+# Same for STUNNEL, e.g. set it to /path/to/stunnel or stunnel4, etc.
+#
+
+# turn on verbose debugging output
+if [ "X$SS_DEBUG" != "X" -a "X$SS_DEBUG" != "X0" ]; then
+	set -xv 
+fi
+
+PATH=$PATH:/usr/sbin:/usr/local/sbin:/dist/sbin; export PATH
+
+localhost="localhost"
+if uname | grep Darwin >/dev/null; then
+	localhost="127.0.0.1"
+fi
+
+# work out which stunnel to use (debian installs as stunnel4)
+stunnel_set_here=""
+if [ "X$STUNNEL" = "X" ]; then
+	check_stunnel=1
+	if [ "X$SSVNC_BASEDIRNAME" != "X" ]; then
+		if [ -x "$SSVNC_BASEDIRNAME/stunnel" ]; then
+			type stunnel > /dev/null 2>&1
+			if [ $? = 0 ]; then
+				# found ours
+				STUNNEL=stunnel
+				check_stunnel=0
+			fi
+		fi
+	fi
+	if [ "X$check_stunnel" = "X1" ]; then
+		type stunnel4 > /dev/null 2>&1
+		if [ $? = 0 ]; then
+			STUNNEL=stunnel4
+		else
+			STUNNEL=stunnel
+		fi
+	fi
+	stunnel_set_here=1
+fi
+
+help() {
+	tail -n +2 "$0" | sed -e '/^$/ q'
+}
+
+secondtry=""
+gotalpha=""
+use_ssh=""
+use_sshssl=""
+direct_connect=""
+ssh_sleep=15
+
+# sleep longer in -listen mode:
+if echo "$*" | grep '.*-listen' > /dev/null; then
+	ssh_sleep=1800
+fi
+
+
+ssh_cmd=""
+# env override of ssh_cmd:
+if [ "X$SS_VNCVIEWER_SSH_CMD" != "X" ]; then
+	ssh_cmd="$SS_VNCVIEWER_SSH_CMD"
+fi
+
+ssh_args=""
+showcert=""
+reverse=""
+
+ciphers=""
+anondh="ALL:RC4+RSA:+SSLv2:@STRENGTH"
+anondh_set=""
+stunnel_debug="6"
+if [ "X$SS_DEBUG" != "X" -o "X$SSVNC_VENCRYPT_DEBUG" != "X" -o "X$SSVNC_STUNNEL_DEBUG" != "X" ]; then
+	stunnel_debug="7"
+fi
+
+if [ "X$1" = "X-viewerflavor" ]; then
+	# special case, try to guess which viewer:
+	#
+	if echo "$VNCVIEWERCMD" | egrep -i '^(xmessage|sleep )' > /dev/null; then
+		echo "unknown"
+		exit 0
+	fi
+	if echo "$VNCVIEWERCMD" | grep -i chicken.of > /dev/null; then
+		echo "cotvnc"
+		exit 0
+	fi
+	if echo "$VNCVIEWERCMD" | grep -i ultra > /dev/null; then
+		echo "ultravnc"
+		exit 0
+	fi
+	# OK, run it for help output...
+	str=`$VNCVIEWERCMD -h 2>&1 | head -n 5`
+	if echo "$str" | grep -i 'TightVNC.viewer' > /dev/null; then
+		echo "tightvnc"
+	elif echo "$str" | grep -i 'VNC viewer version 3' > /dev/null; then
+		echo "realvnc3"
+	elif echo "$str" | grep -i 'VNC viewer .*Edition 4' > /dev/null; then
+		echo "realvnc4"
+	elif echo "$str" | grep -i 'RealVNC.Ltd' > /dev/null; then
+		echo "realvnc4"
+	else
+		echo "unknown"
+	fi
+	exit 0
+fi
+if [ "X$1" = "X-viewerhelp" ]; then
+	$VNCVIEWERCMD -h 2>&1
+	exit 0
+fi
+
+# grab our cmdline options:
+while [ "X$1" != "X" ]
+do
+    case $1 in 
+	"-verify")	shift; verify="$1"
+                ;;
+	"-mycert")	shift; mycert="$1"
+                ;;
+	"-crl")		shift; crl="$1"
+                ;;
+	"-proxy")	shift; proxy="$1"
+                ;;
+	"-ssh")		use_ssh=1
+                ;;
+	"-sshssl")	use_ssh=1
+			use_sshssl=1
+                ;;
+	"-sshcmd")	shift; ssh_cmd="$1"
+                ;;
+	"-sshargs")	shift; ssh_args="$1"
+                ;;
+	"-anondh")	ciphers="ciphers=$anondh"
+			ULTRAVNC_DSM_HELPER_SHOWCERT_ADH=1
+			export ULTRAVNC_DSM_HELPER_SHOWCERT_ADH
+			anondh_set=1
+                ;;
+	"-ciphers")	shift; ciphers="ciphers=$1"
+                ;;
+	"-alpha")	gotalpha=1
+                ;;
+	"-showcert")	showcert=1
+                ;;
+	"-listen")	reverse=1
+                ;;
+	"-reverse")	reverse=1
+                ;;
+	"-2nd")		secondtry=1
+                ;;
+	"-grab")	VNCVIEWER_GRAB_SERVER=1; export VNCVIEWER_GRAB_SERVER
+                ;;
+	"-x11cursor")	VNCVIEWER_X11CURSOR=1; export VNCVIEWER_X11CURSOR
+                ;;
+	"-rawlocal")	VNCVIEWER_RAWLOCAL=1; export VNCVIEWER_RAWLOCAL
+                ;;
+	"-scale")	shift; SSVNC_SCALE="$1"; export SSVNC_SCALE
+                ;;
+	"-onelisten")	SSVNC_LISTEN_ONCE=1; export SSVNC_LISTEN_ONCE
+                ;;
+	"-sendclipboard")	VNCVIEWER_SEND_CLIPBOARD=1; export VNCVIEWER_SEND_CLIPBOARD
+                ;;
+	"-sendalways")	VNCVIEWER_SEND_ALWAYS=1; export VNCVIEWER_SEND_ALWAYS
+                ;;
+	"-recvtext")	shift; VNCVIEWER_RECV_TEXT="$1"; export VNCVIEWER_RECV_TEXT
+                ;;
+	"-escape")	shift; VNCVIEWER_ESCAPE="$1"; export VNCVIEWER_ESCAPE
+                ;;
+	"-ssvnc_encodings")	shift; VNCVIEWER_ENCODINGS="$1"; export VNCVIEWER_ENCODINGS
+                ;;
+	"-ssvnc_extra_opts")	shift; VNCVIEWERCMD_EXTRA_OPTS="$1"; export VNCVIEWERCMD_EXTRA_OPTS
+                ;;
+	"-rfbversion")	shift; VNCVIEWER_RFBVERSION="$1"; export VNCVIEWER_RFBVERSION
+                ;;
+	"-nobell")	VNCVIEWER_NOBELL=1; export VNCVIEWER_NOBELL
+                ;;
+	"-popupfix")	VNCVIEWER_POPUP_FIX=1; export VNCVIEWER_POPUP_FIX
+                ;;
+	"-realvnc4")	VNCVIEWER_IS_REALVNC4=1; export VNCVIEWER_IS_REALVNC4
+                ;;
+	"-h"*)	help; exit 0
+                ;;
+	"--h"*)	help; exit 0
+                ;;
+	*)	break
+                ;;
+    esac
+    shift
+done
+
+# maxconn is something we added to stunnel, this disables it:
+if [ "X$SS_VNCVIEWER_NO_MAXCONN" != "X" ]; then
+	STUNNEL_EXTRA_OPTS=`echo "$STUNNEL_EXTRA_OPTS" | sed -e 's/maxconn/#maxconn/'`
+elif echo "$VNCVIEWERCMD" | egrep -i '^(xmessage|sleep )' > /dev/null; then
+	STUNNEL_EXTRA_OPTS=`echo "$STUNNEL_EXTRA_OPTS" | sed -e 's/maxconn/#maxconn/'`
+elif [ "X$reverse" != "X" ]; then
+	STUNNEL_EXTRA_OPTS=`echo "$STUNNEL_EXTRA_OPTS" | sed -e 's/maxconn/#maxconn/'`
+else
+	# new way (our patches).  other than the above, we set these:
+	if [ "X$SKIP_STUNNEL_ONCE" = "X" ]; then
+		STUNNEL_ONCE=1; export STUNNEL_ONCE
+	fi
+	if [ "X$SKIP_STUNNEL_MAX_CLIENTS" = "X" ]; then
+		STUNNEL_MAX_CLIENTS=1; export STUNNEL_MAX_CLIENTS
+	fi
+fi
+# always set this one:
+if [ "X$SKIP_STUNNEL_NO_SYSLOG" = "X" ]; then
+	STUNNEL_NO_SYSLOG=1; export STUNNEL_NO_SYSLOG
+fi
+
+# this is the -t ssh option (gives better keyboard response thru SSH tunnel)
+targ="-t"
+if [ "X$SS_VNCVIEWER_NO_T" != "X" ]; then
+	targ=""
+fi
+
+# set the alpha blending env. hack: 
+if [ "X$gotalpha" = "X1" ]; then
+	VNCVIEWER_ALPHABLEND=1
+	export VNCVIEWER_ALPHABLEND
+else
+	NO_ALPHABLEND=1
+	export NO_ALPHABLEND
+fi
+
+if [ "X$reverse" != "X" ]; then
+	ssh_sleep=1800
+	if [ "X$proxy" != "X" ]; then
+		# check proxy usage under reverse connection:
+		if [ "X$use_ssh" = "X" -a "X$use_sshssl" = "X" ]; then
+			echo ""
+			if echo "$proxy" | egrep -i "(repeater|vencrypt)://" > /dev/null; then
+				:
+			else
+				echo "*Warning*: SSL -listen and a Web proxy does not make sense."
+				sleep 2
+			fi
+		elif echo "$proxy" | grep "," > /dev/null; then
+			:
+		else
+			echo ""
+			echo "*Warning*: -listen and a single proxy/gateway does not make sense."
+			sleep 2
+		fi
+
+		# we now try to PPROXY_LOOP_THYSELF, set this var to disable that.
+		#SSVNC_LISTEN_ONCE=1; export SSVNC_LISTEN_ONCE
+	fi
+fi
+if [ "X$ssh_cmd" = "X" ]; then
+	# if no remote ssh cmd, sleep a bit:
+	ssh_cmd="sleep $ssh_sleep"
+fi
+
+# this should be a host:display:
+#
+orig="$1"
+shift
+
+dL="-L"
+if uname -sr | egrep 'SunOS 5\.[5-8]' > /dev/null; then
+	dL="-h"
+fi
+
+have_uvnc_dsm_helper_showcert=""
+if [ "X$showcert" = "X1" -a "X$SSVNC_USE_S_CLIENT" = "X" -a "X$reverse" = "X" ]; then
+	if type ultravnc_dsm_helper >/dev/null 2>&1; then
+		if ultravnc_dsm_helper -help 2>&1 | grep -w showcert >/dev/null; then
+			have_uvnc_dsm_helper_showcert=1
+		fi
+	fi
+fi
+have_uvnc_dsm_helper_ipv6=""
+if [ "X$SSVNC_ULTRA_DSM" != "X" ]; then
+	if type ultravnc_dsm_helper >/dev/null 2>&1; then
+		if ultravnc_dsm_helper -help 2>&1 | grep -iw ipv6 >/dev/null; then
+			have_uvnc_dsm_helper_ipv6=1
+		fi
+	fi
+fi
+
+rchk() {
+	# a kludge to set $RANDOM if we are not bash:
+	if [ "X$BASH_VERSION" = "X" ]; then
+		RANDOM=`date +%S``sh -c 'echo $$'``ps -elf 2>&1 | sum 2>&1 | awk '{print $1}'`
+	fi
+}
+rchk
+
+# a portable, but not absolutely safe, tmp file creator
+mytmp() {
+	tf=$1
+	if type mktemp > /dev/null 2>&1; then
+		# if we have mktemp(1), use it:
+		tf2="$tf.XXXXXX"
+		tf2=`mktemp "$tf2"`
+		if [ "X$tf2" != "X" -a -f "$tf2" ]; then
+			if [ "X$DEBUG_MKTEMP" != "X" ]; then
+				echo "mytmp-mktemp: $tf2" 1>&2
+			fi
+			echo "$tf2"
+			return
+		fi
+	fi
+	# fallback to multiple cmds:
+	rm -rf "$tf" || exit 1
+	if [ -d "$tf" ]; then
+		echo "tmp file $tf still exists as a directory."
+		exit 1
+	elif [ $dL "$tf" ]; then
+		echo "tmp file $tf still exists as a symlink."
+		exit 1
+	elif [ -f "$tf" ]; then
+		echo "tmp file $tf still exists."
+		exit 1
+	fi
+	touch "$tf" || exit 1
+	chmod 600 "$tf" || exit 1
+	rchk
+	if [ "X$DEBUG_MKTEMP" != "X" ]; then
+		echo "mytmp-touch: $tf" 1>&2
+	fi
+	echo "$tf"
+}
+
+# set up special case of ultravnc single click III mode:
+if echo "$proxy" | egrep "^sslrepeater://" > /dev/null; then
+	pstr=`echo "$proxy" | sed -e 's,sslrepeater://,,'`
+	pstr1=`echo "$pstr" | sed -e 's/+.*$//'`
+	pstr2=`echo "$pstr" | sed -e 's/^[^+]*+//'`
+	SSVNC_REPEATER="SCIII=$pstr2"; export SSVNC_REPEATER
+	orig=$pstr1
+	echo
+	echo "reset: SSVNC_REPEATER=$SSVNC_REPEATER orig=$orig proxy=''"
+	proxy=""
+fi
+if echo "$proxy" | egrep "vencrypt://" > /dev/null; then
+	vtmp="/tmp/ss_handshake${RANDOM}.$$.txt"
+	vtmp=`mytmp "$vtmp"`
+	SSVNC_PREDIGESTED_HANDSHAKE="$vtmp"
+	export SSVNC_PREDIGESTED_HANDSHAKE
+	if [ "X$SSVNC_USE_OURS" = "X" ]; then
+		NEED_VENCRYPT_VIEWER_BRIDGE=1
+	fi
+fi
+if [ "X$SSVNC_USE_OURS" = "X" ]; then
+	VNCVIEWERCMD_EXTRA_OPTS=""
+fi
+
+
+# check -ssh and -mycert/-verify conflict:
+if [ "X$use_ssh" = "X1" -a "X$use_sshssl" = "X" ]; then
+	if [ "X$mycert" != "X" -o "X$verify" != "X" ]; then
+		echo "-mycert and -verify cannot be used in -ssh mode" 
+		exit 1
+	fi
+fi
+
+# direct mode Vnc:// means show no warnings.
+# direct mode vnc:// will show warnings.
+if echo "$orig" | grep '^V[Nn][Cc]://' > /dev/null; then
+	SSVNC_NO_ENC_WARN=1
+	export SSVNC_NO_ENC_WARN
+	orig=`echo "$orig" | sed -e 's/^...:/vnc:/'`
+fi
+
+# interprest the pseudo URL proto:// strings:
+if echo "$orig" | grep '^vnc://' > /dev/null; then
+	orig=`echo "$orig" | sed -e 's,vnc://,,'`
+	verify=""
+	mycert=""
+	crl=""
+	use_ssh=""
+	use_sshssl=""
+	direct_connect=1
+elif echo "$orig" | grep '^vncs://' > /dev/null; then
+	orig=`echo "$orig" | sed -e 's,vncs://,,'`
+elif echo "$orig" | grep '^vncssl://' > /dev/null; then
+	orig=`echo "$orig" | sed -e 's,vncssl://,,'`
+elif echo "$orig" | grep '^vnc+ssl://' > /dev/null; then
+	orig=`echo "$orig" | sed -e 's,vnc.ssl://,,'`
+elif echo "$orig" | grep '^vncssh://' > /dev/null; then
+	orig=`echo "$orig" | sed -e 's,vncssh://,,'`
+	use_ssh=1
+elif echo "$orig" | grep '^vnc+ssh://' > /dev/null; then
+	orig=`echo "$orig" | sed -e 's,vnc.ssh://,,'`
+	use_ssh=1
+fi
+
+if [ "X$SSVNC_ULTRA_DSM" != "X" ]; then
+        verify=""
+        mycert=""
+        crl=""
+        use_ssh=""
+        use_sshssl=""
+        direct_connect=1
+	if echo "$SSVNC_ULTRA_DSM" | grep 'noultra:' > /dev/null; then
+		SSVNC_NO_ULTRA_DSM=1; export SSVNC_NO_ULTRA_DSM
+	fi
+fi
+
+# rsh mode is an internal/secret thing only I use.
+rsh=""
+if echo "$orig" | grep '^rsh://' > /dev/null; then
+	use_ssh=1
+	rsh=1
+	orig=`echo "$orig" | sed -e 's,rsh://,,'`
+elif echo "$orig" | grep '^rsh:' > /dev/null; then
+	use_ssh=1
+	rsh=1
+	orig=`echo "$orig" | sed -e 's,rsh:,,'`
+fi
+
+# play around with host:display port:
+if echo "$orig" | grep ':[0-9][0-9]*$' > /dev/null; then
+	:
+else
+	# add or assume :0 if no ':'
+	if [ "X$reverse" = "X" ]; then
+		orig="$orig:0"
+	elif [ "X$orig" = "X" ]; then
+		orig=":0"
+	fi
+fi
+
+# extract host and disp number:
+
+# try to see if it is ipv6 address:
+ipv6=0
+if echo "$orig" | grep '\[' > /dev/null; then
+	# ipv6 [fe80::219:dbff:fee5:3f92%eth1]:5900
+	host=`echo "$orig" | sed -e 's/\].*$//' -e 's/\[//'`
+	disp=`echo "$orig" | sed -e 's/^.*\]://'`
+	ipv6=1
+elif echo "$orig" | grep ':..*:' > /dev/null; then
+	# ipv6 fe80::219:dbff:fee5:3f92%eth1:5900
+	host=`echo "$orig" | sed -e 's/:[^:]*$//'`
+	disp=`echo "$orig" | sed -e 's/^.*://'`
+	ipv6=1
+else
+	# regular host:port
+	host=`echo "$orig" | awk -F: '{print $1}'`
+	disp=`echo "$orig" | awk -F: '{print $2}'`
+fi
+
+if [ "X$reverse" != "X" -a "X$STUNNEL_LISTEN" = "X" -a "X$host" != "X" ]; then
+	STUNNEL_LISTEN=$host
+	echo "set STUNNEL_LISTEN=$STUNNEL_LISTEN"
+fi
+
+if [ "X$host" = "X" ]; then
+	host=$localhost
+fi
+
+if [ "X$SSVNC_IPV6" = "X0" ]; then
+	# disable checking for it.
+	ipv6=0
+#elif [ "X$reverse" != "X" -a "X$ipv6" = "X1" ]; then
+#	ipv6=0
+elif [ "X$ipv6" = "X1" ]; then
+	:
+elif echo "$host" | grep '^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$' > /dev/null; then
+	:
+else
+	# regular hostname, can't be sure...
+	gout=""
+	if type getent > /dev/null 2>/dev/null; then
+		gout=`getent hosts "$host" 2>/dev/null`
+	fi
+	if echo "$gout" | grep ':.*:' > /dev/null; then
+		if echo "$gout" | grep '^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$' > /dev/null; then
+			:
+		else
+			echo "ipv6: "`echo "$gout" | grep ':.*:' | head -n 1`
+			ipv6=1
+		fi
+	fi
+	if [ "X$ipv6" = "X0" ]; then
+		hout=""
+		if type host > /dev/null 2>/dev/null; then
+			host "$host" >/dev/null 2>&1
+			host "$host" >/dev/null 2>&1
+			hout=`host "$host" 2>/dev/null`
+		fi
+		if echo "$hout" | grep -i 'has ipv6 address' > /dev/null; then
+			if echo "$hout" | grep -i 'has address' > /dev/null; then
+				:
+			else
+				echo "ipv6: "`echo "$hout" | grep -i 'has ipv6 address' | head -n 1`
+				ipv6=1
+			fi
+		fi
+	fi
+	if [ "X$ipv6" = "X0" ]; then
+		dout=""
+		if type dig > /dev/null 2>/dev/null; then
+		dout=`dig -t any "$host" 2>/dev/null`
+		fi
+		if echo "$dout" | grep -i "^$host" | grep '[ 	]AAAA[ 	]' > /dev/null; then
+			if echo "$dout" | grep -i "^$host" | grep '[ 	]A[ 	]' > /dev/null; then
+				:
+			else
+				echo "ipv6: "`echo "$dout" | grep -i '[ 	]AAAA[ 	]' | head -n 1`
+				ipv6=1
+			fi
+		fi
+	fi
+	if [ "X$ipv6" = "X0" ]; then
+		sout=`env LOOKUP="$host" \
+		      perl -e '	eval {use Socket};  exit 0 if $@;
+				eval {use Socket6}; exit 0 if $@;
+				@res = getaddrinfo($ENV{LOOKUP}, "daytime", AF_UNSPEC, SOCK_STREAM);
+				$ipv4 = 0;
+				$ipv6 = 0;
+				$ip6 = "";
+				while (scalar(@res) >= 5) {
+					($family, $socktype, $proto, $saddr, $canon, @res) = @res;
+					$ipv4 = 1 if $family == AF_INET;
+					$ipv6 = 1 if $family == AF_INET6;
+					if ($family == AF_INET6 && $ip6 eq "") {
+						my ($host, $port) = getnameinfo($saddr, NI_NUMERICHOST | NI_NUMERICSERV);
+						$ip6 = $host;
+					}
+				}
+				if (! $ipv4 && $ipv6) {
+					print "AF_INET6_ONLY: $ENV{LOOKUP}: $ip6\n";
+				}
+				exit 0;
+			' 2>/dev/null`
+		if echo "$sout" | grep AF_INET6_ONLY > /dev/null; then
+			echo "$sout"
+			ipv6=1
+		fi
+	fi
+fi
+if [ "X$ipv6" = "X1" ]; then
+	echo "ipv6: addr=$host disp=$disp"
+fi
+if [ "X$disp" = "X" ]; then
+	port=""	# probably -listen mode.
+elif [ $disp -lt 0 ]; then
+	# negative means use |n| without question:
+	port=`expr 0 - $disp`
+elif [ $disp -lt 200 ]; then
+	# less than 200 means 5900+n
+	if [ "X$reverse" = "X" ]; then
+		port=`expr $disp + 5900`
+	else
+		port=`expr $disp + 5500`
+	fi
+else
+	# otherwise use the number directly, e.g. 443, 2345
+	port=$disp
+fi
+
+if [ "X$ipv6" = "X1" -a "X$direct_connect" = "X1" ]; then
+	if [ "X$proxy" = "X" -a "X$reverse" = "X" ]; then
+		if [ "X$SSVNC_ULTRA_DSM" != "X" -a "X$have_uvnc_dsm_helper_ipv6" = "X1" ]; then
+			:
+		elif [ "X$SSVNC_NO_IPV6_PROXY" != "X" ]; then
+			:
+		elif [ "X$SSVNC_NO_IPV6_PROXY_DIRECT" != "X" ]; then
+			:
+		elif [ "X$SSVNC_USE_OURS" = "X1" ]; then
+			# requires 1.0.27 and later ssvncviewer binary
+			:
+		else
+			proxy="ipv6://$host:$port"
+			echo "direct connect: set proxy=$proxy"
+		fi
+	fi
+fi
+
+# (possibly) tell the vncviewer to only listen on lo: 
+if [ "X$reverse" != "X" ]; then
+	if [ "X$direct_connect" = "X" -o "X$proxy" != "X" -o "X$STUNNEL_LISTEN" != "X" ]; then
+		VNCVIEWER_LISTEN_LOCALHOST=1
+		export VNCVIEWER_LISTEN_LOCALHOST
+	fi
+fi
+
+# try to find an open listening port via netstat(1):
+inuse=""
+if uname | grep Linux > /dev/null; then
+	inuse=`netstat -ant | egrep 'LISTEN|WAIT|ESTABLISH|CLOSE' | awk '{print $4}' | sed 's/^.*://'`
+elif uname | grep SunOS > /dev/null; then
+	inuse=`netstat -an -f inet -P tcp | egrep 'LISTEN|WAIT|ESTABLISH|CLOSE' | awk '{print $1}' | sed 's/^.*\.//'`
+elif uname | egrep -i 'bsd|darwin' > /dev/null; then
+	inuse=`netstat -ant -f inet | egrep 'LISTEN|WAIT|ESTABLISH|CLOSE' | awk '{print $4}' | sed 's/^.*\.//'`
+# add others...
+fi
+
+# this is a crude attempt for unique ports tags, etc.
+date_sec=`date +%S`
+
+# these are special cases of no vnc, e.g. sleep or xmessage.
+# these are for using ssvnc as a general port redirector.
+if echo "$VNCVIEWERCMD" | grep '^sleep[ 	][ 	]*[0-9][0-9]*' > /dev/null; then
+	if [ "X$SS_VNCVIEWER_LISTEN_PORT" = "X" ]; then
+		p=`echo "$VNCVIEWERCMD" | awk '{print $3}'`
+		if [ "X$p" != "X" ]; then
+			SS_VNCVIEWER_LISTEN_PORT=$p
+		fi
+	fi
+	p2=`echo "$VNCVIEWERCMD" | awk '{print $2}'`
+	VNCVIEWERCMD="eval sleep $p2; echo Local "
+elif echo "$VNCVIEWERCMD" | grep '^xmessage[ 	][ 	]*[0-9][0-9]*' > /dev/null; then
+	if [ "X$SS_VNCVIEWER_LISTEN_PORT" = "X" ]; then
+		p=`echo "$VNCVIEWERCMD" | awk '{print $2}'`
+		SS_VNCVIEWER_LISTEN_PORT=$p
+	fi
+fi
+
+# utility to find a free port to listen on.
+findfree() {
+	try0=$1
+	try=$try0
+	use0=""
+
+	if [ "X$SS_VNCVIEWER_LISTEN_PORT" != "X" ]; then
+		echo "$SS_VNCVIEWER_LISTEN_PORT"
+		return	
+	fi
+	if [ $try -ge 6000 ]; then
+		fmax=`expr $try + 1000`
+	else
+		fmax=6000
+	fi
+
+	while [ $try -lt $fmax ]
+	do
+		if [ "X$inuse" = "X" ]; then
+			break
+		fi
+		if echo "$inuse" | grep -w $try > /dev/null; then
+			:
+		else
+			use0=$try
+			break
+		fi
+		try=`expr $try + 1`
+	done
+	if [ "X$use0" = "X" ]; then
+		use0=`expr $date_sec + $try0`
+	fi
+
+	echo $use0
+}
+
+# utility for exiting; kills some helper processes,
+# removes files, etc.
+final() {
+	echo ""
+	if [ "X$tmp_cfg" != "X" ]; then
+		rm -f $tmp_cfg
+	fi
+	if [ "X$SS_VNCVIEWER_RM" != "X" ]; then
+		rm -f $SS_VNCVIEWER_RM 2>/dev/null
+	fi
+	if [ "X$tcert" != "X" ]; then
+		rm -f $tcert
+	fi
+	if [ "X$pssh" != "X" ]; then
+		echo "Terminating background ssh process"
+		echo kill -TERM "$pssh"
+		kill -TERM "$pssh" 2>/dev/null
+		sleep 1
+		kill -KILL "$pssh" 2>/dev/null
+		pssh=""
+	fi
+	if [ "X$stunnel_pid" != "X" ]; then
+		echo "Terminating background stunnel process"
+		echo kill -TERM "$stunnel_pid"
+		kill -TERM "$stunnel_pid" 2>/dev/null
+		sleep 1
+		kill -KILL "$stunnel_pid" 2>/dev/null
+		stunnel_pid=""
+	fi
+	if [ "X$dsm_pid" != "X" ]; then
+		echo "Terminating background ultravnc_dsm_helper process"
+		echo kill -TERM "$dsm_pid"
+		kill -TERM "$dsm_pid" 2>/dev/null
+		sleep 1
+		kill -KILL "$dsm_pid" 2>/dev/null
+		stunnel_pid=""
+	fi
+	if [ "X$tail_pid" != "X" ]; then
+		kill -TERM $tail_pid
+	fi
+	if [ "X$tail_pid2" != "X" ]; then
+		kill -TERM $tail_pid2
+	fi
+}
+
+if [ "X$reverse" = "X" ]; then
+	# normal connections try 5930-5999:
+	if [ "X$showcert" = "X" ]; then
+		use=`findfree 5930`
+	else
+		# move away from normal place for (possibly many) -showcert
+		pstart=`date +%S`
+		pstart=`expr 6130 + $pstart + $pstart`
+		use=`findfree $pstart`
+	fi
+	if [ $use -ge 5900 ]; then
+		N=`expr $use - 5900`
+	else
+		N=$use
+	fi
+else
+	# reverse connections:
+	p2=`expr $port + 30`
+	use=`findfree $p2`
+	if [ $use -ge 5500 ]; then
+		N=`expr $use - 5500`
+	else
+		N=$use
+	fi
+fi
+
+# this is for my special use of ss_vncip -> vncip viewer.
+if echo "$0" | grep vncip > /dev/null; then
+	VNCVIEWERCMD="$VNCIPCMD"
+fi
+
+if echo "$VNCVIEWERCMD" | egrep -i '^(xmessage|sleep )' > /dev/null; then
+	:
+elif [ "X$VNCVIEWERCMD_EXTRA_OPTS" != "X" ]; then
+	VNCVIEWERCMD="$VNCVIEWERCMD $VNCVIEWERCMD_EXTRA_OPTS"
+fi
+
+# trick for the undocumented rsh://host:port method.
+rsh_setup() {
+	if echo "$ssh_host" | grep '@' > /dev/null; then
+		ul=`echo "$ssh_host" | awk -F@ '{print $1}'`
+		ul="-l $ul"
+		ssh_host=`echo "$ssh_host" | awk -F@ '{print $2}'`
+	else
+		ul=""
+	fi
+	ssh_cmd=`echo "$ssh_cmd" | sed -e 's/ -localhost/ /g'`
+}
+
+# trick for the undocumented rsh://host:port method.
+rsh_viewer() {
+	trap "final" 0 2 15
+	if [ "X$PORT" = "X" ]; then
+		exit 1
+	elif [ $PORT -ge 5900 ]; then
+		vdpy=`expr $PORT - 5900`
+	else
+		vdpy=":$PORT"
+	fi
+	stty sane
+	echo "$VNCVIEWERCMD" "$@" $ssh_host:$vdpy
+	echo ""
+	$VNCVIEWERCMD "$@" $ssh_host:$vdpy
+	if [ $? != 0 ]; then
+		sleep 2
+		$VNCVIEWERCMD "$@" $ssh_host:$vdpy
+	fi
+}
+
+check_perl() {
+	if type "$1" > /dev/null 2>&1; then
+		:
+	elif [ ! -x "$1" ]; then
+		echo ""
+		echo "*******************************************************"
+		echo "** Problem finding the Perl command '$1': **"
+		echo ""
+		type "perl"
+		echo ""
+		echo "** Perhaps you need to install the Perl package. **"
+		echo "*******************************************************"
+		echo ""
+		sleep 5
+	fi
+}
+
+# this is the PPROXY tool.  used only here for now... 
+pcode() {
+	tf=$1
+	PPROXY_PROXY=$proxy; export PPROXY_PROXY
+	PPROXY_DEST="$host:$port"; export PPROXY_DEST
+	check_perl /usr/bin/perl
+
+	cod='#!/usr/bin/perl
+
+# A hack to glue stunnel to a Web or SOCKS proxy, UltraVNC repeater for
+# client connections.
+# Also acts as a VeNCrypt bridge (by redirecting to stunnel.)
+
+use IO::Socket::INET;
+
+my $have_inet6 = "";
+eval "use IO::Socket::INET6;";
+$have_inet6 = 1 if $@ eq "";
+
+#my $have_sock6 = "";
+#eval "use Socket; use Socket6;";
+#$have_sock6 = 1 if $@ eq "";
+
+if (exists $ENV{PPROXY_LOOP_THYSELF}) {
+	# used for reverse vnc, run a repeating outer loop.
+	print STDERR "PPROXY_LOOP: $ENV{PPROXY_LOOP_THYSELF}\n";
+	my $rm = $ENV{PPROXY_REMOVE};
+	my $lp = $ENV{PPROXY_LOOP_THYSELF};
+	delete $ENV{PPROXY_REMOVE};
+	delete $ENV{PPROXY_LOOP_THYSELF};
+	$ENV{PPROXY_LOOP_THYSELF_MASTER} = $$;
+	my $pid = $$;
+	my $dbg = 0;
+	my $c = 0;
+	use POSIX ":sys_wait_h";
+	while (1) {
+		$pid = fork();
+		last if ! defined $pid;
+		if ($pid eq "0") {
+			last;
+		}
+		$c++;
+		print STDERR "\nPPROXY_LOOP: pid=$$ child=$pid count=$c\n";
+		while (1) {
+			waitpid(-1, WNOHANG);
+			fsleep(0.25);
+			if (! kill 0, $pid) {
+				print STDERR "PPROXY_LOOP: child=$pid gone.\n";
+				last;
+			}
+			print STDERR "PPROXY_LOOP: child=$pid alive.\n" if $dbg;
+			if (! -f $lp) {
+				print STDERR "PPROXY_LOOP: flag file $lp gone, killing $pid\n";
+				kill TERM, $pid;
+				fsleep(0.1);
+				wait;
+				last;
+			}
+			print STDERR "PPROXY_LOOP: file exists $lp\n" if $dbg;
+		}
+		last if ! -f $lp;
+		fsleep(0.25);
+	}
+	if ($pid ne "0") {
+		unlink($0) if $rm;
+		exit 0;
+	}
+}
+
+if (exists $ENV{PPROXY_SLEEP} && $ENV{PPROXY_SLEEP} > 0) {
+	print STDERR "PPROXY_PID: $$\n";
+	sleep $ENV{PPROXY_SLEEP};
+}
+
+foreach my $var (qw(
+		PPROXY_DEST
+		PPROXY_KILLPID
+		PPROXY_LISTEN
+		PPROXY_PROXY
+		PPROXY_REMOVE
+		PPROXY_REPEATER
+		PPROXY_REVERSE
+		PPROXY_SLEEP
+		PPROXY_SOCKS
+		PPROXY_VENCRYPT
+		PPROXY_VENCRYPT_VIEWER_BRIDGE
+    )) {
+	if (0 || $ENV{SS_DEBUG} || $ENV{SSVNC_VENCRYPT_DEBUG}) {
+		print STDERR "$var: $ENV{$var}\n";
+	}
+} 
+
+if ($ENV{PPROXY_SOCKS} ne "" && $ENV{PPROXY_PROXY} !~ m,^socks5?://,i) {
+	if ($ENV{PPROXY_SOCKS} eq "5") {
+		$ENV{PPROXY_PROXY} = "socks5://$ENV{PPROXY_PROXY}";
+	} else {
+		$ENV{PPROXY_PROXY} = "socks://$ENV{PPROXY_PROXY}";
+	}
+}
+
+my $rfbSecTypeAnonTls  = 18;
+my $rfbSecTypeVencrypt = 19;
+
+my $rfbVencryptPlain        = 256;
+my $rfbVencryptTlsNone      = 257;
+my $rfbVencryptTlsVnc       = 258;
+my $rfbVencryptTlsPlain     = 259;
+my $rfbVencryptX509None     = 260;
+my $rfbVencryptX509Vnc      = 261;
+my $rfbVencryptX509Plain    = 262;
+
+my $handshake_file = "";
+if (exists $ENV{SSVNC_PREDIGESTED_HANDSHAKE})  {
+	$handshake_file = $ENV{SSVNC_PREDIGESTED_HANDSHAKE};
+}
+
+my $have_gettimeofday = 0;
+eval "use Time::HiRes;";
+if ($@ eq "") {
+	$have_gettimeofday = 1;
+}
+sub gettime {
+	my $t = "0.0";
+	if ($have_gettimeofday) {
+		$t = Time::HiRes::gettimeofday();
+	}
+	return $t;
+}
+
+my $listen_handle = "";
+my $sock = "";
+my $parent = $$;
+
+my $initial_data = "";
+
+if ($ENV{PPROXY_VENCRYPT_VIEWER_BRIDGE}) {
+	my ($from, $to) = split(/,/, $ENV{PPROXY_VENCRYPT_VIEWER_BRIDGE});
+	do_vencrypt_viewer_bridge($from, $to);
+	exit 0;
+}
+
+my ($first, $second, $third) = split(/,/, $ENV{PPROXY_PROXY}, 3);
+my ($mode_1st, $mode_2nd, $mode_3rd) = ("", "", "");
+
+($first, $mode_1st) = url_parse($first);
+
+my ($proxy_host, $proxy_port) = ($first, "");
+if ($proxy_host =~ /^(.*):(\d+)$/) {
+	$proxy_host = $1;
+	$proxy_port = $2;
+}
+my $connect = $ENV{PPROXY_DEST};
+
+if ($second ne "") {
+	($second, $mode_2nd) = url_parse($second);
+}
+
+if ($third ne "") {
+	($third, $mode_3rd) = url_parse($third);
+}
+
+
+print STDERR "\n";
+print STDERR "PPROXY v0.4: a tool for Web, SOCKS, and UltraVNC proxies and for\n";
+print STDERR "PPROXY v0.4: IPv6 and VNC VeNCrypt bridging.\n";
+print STDERR "proxy_host:       $proxy_host\n";
+print STDERR "proxy_port:       $proxy_port\n";
+print STDERR "proxy_connect:    $connect\n";
+print STDERR "pproxy_params:    $ENV{PPROXY_PROXY}\n";
+print STDERR "pproxy_listen:    $ENV{PPROXY_LISTEN}\n";
+print STDERR "pproxy_reverse:   $ENV{PPROXY_REVERSE}\n";
+print STDERR "io_socket_inet6:  $have_inet6\n";
+print STDERR "\n";
+if (! $have_inet6) {
+	print STDERR "PPROXY: To enable IPv6 connections, install the IO::Socket::INET6 perl module.\n\n";
+}
+
+if (1) {
+	print STDERR "pproxy 1st: $first\t- $mode_1st\n";
+	print STDERR "pproxy 2nd: $second\t- $mode_2nd\n";
+	print STDERR "pproxy 3rd: $third\t- $mode_3rd\n";
+	print STDERR "\n";
+}
+
+sub pdie {
+	my $msg = shift;
+	kill_proxy_pids();
+	die "$msg";
+}
+
+if ($ENV{PPROXY_REVERSE} ne "") {
+	my ($rhost, $rport) = ($ENV{PPROXY_REVERSE}, "");
+	if ($rhost =~ /^(.*):(\d+)$/) {
+		$rhost = $1;
+		$rport = $2;
+	}
+	$rport = 5900 unless $rport;
+	my $emsg = "";
+	$listen_handle = IO::Socket::INET->new(
+		PeerAddr => $rhost,
+		PeerPort => $rport,
+		Proto => "tcp"
+	);
+	$emsg = $!;
+	if (! $listen_handle && $have_inet6) {
+		eval {$listen_handle = IO::Socket::INET6->new(
+			PeerAddr => $rhost,
+			PeerPort => $rport,
+			Proto => "tcp"
+		);};
+		$emsg .= " / $!";
+	}
+	if (! $listen_handle) {
+		pdie "pproxy: $emsg -- PPROXY_REVERSE\n";
+	}
+	print STDERR "PPROXY_REVERSE: connected to $rhost $rport\n";
+
+} elsif ($ENV{PPROXY_LISTEN} ne "") {
+	my $listen_sock = "";
+	my $maxtry = 12;
+	my $sleep = 5;
+	my $p2 = "";
+	my $emsg = "";
+	for (my $i=0; $i < $maxtry; $i++)  {
+		my ($if, $p) = ("", $ENV{PPROXY_LISTEN});
+		if ($p =~ /^(.*):(\d+)$/) {
+			$if = $1;
+			$p = $2;
+		}
+		$p2 = "*:$p";
+		if ($if eq "") {
+			$if = "localhost";
+		}
+		print STDERR "pproxy interface: $if\n";
+
+		$emsg = "";
+		if (($if eq "INADDR_ANY6" || $if eq "::") && $have_inet6) {
+			eval {$listen_sock = IO::Socket::INET6->new(
+				Listen    => 2,
+				ReuseAddr => 1,
+				Domain    => AF_INET6,
+				LocalAddr => "::",
+				LocalPort => $p,
+				Proto     => "tcp"
+			);};
+			$p2 = ":::$p";
+		} elsif ($if =~ /^INADDR_ANY/) {
+			$listen_sock = IO::Socket::INET->new(
+				Listen    => 2,
+				ReuseAddr => 1,
+				LocalPort => $p,
+				Proto     => "tcp"
+			);
+		} elsif (($if eq "INADDR_LOOPBACK6" || $if eq "::1") && $have_inet6) {
+			$p2 = "::1:$p";
+			eval {$listen_sock = IO::Socket::INET6->new(
+				Listen    => 2,
+				ReuseAddr => 1,
+				Domain    => AF_INET6,
+				LocalAddr => "::1",
+				LocalPort => $p,
+				Proto     => "tcp"
+			);};
+			$p2 = "::1:$p";
+		} else {
+			$p2 = "$if:$p";
+			$listen_sock = IO::Socket::INET->new(
+				Listen    => 2,
+				ReuseAddr => 1,
+				LocalAddr => $if,
+				LocalPort => $p,
+				Proto     => "tcp"
+			);
+			$emsg = $!;
+			
+			if (! $listen_sock && $have_inet6) {
+				print STDERR "PPROXY_LISTEN: retry with INET6\n";
+				eval {$listen_sock = IO::Socket::INET6->new(
+					Listen    => 2,
+					ReuseAddr => 1,
+					Domain    => AF_INET6,
+					LocalAddr => $if,
+					LocalPort => $p,
+					Proto     => "tcp"
+				);};
+				$emsg .= " / $!";
+			}
+		}
+		if (! $listen_sock) {
+			if ($i < $maxtry - 1) {
+				warn "pproxy: $emsg $!\n";
+				warn "Could not listen on port $p2, retrying in $sleep seconds... (Ctrl-C to quit)\n";
+				sleep $sleep;
+			}
+		} else {
+			last;
+		}
+	}
+	if (! $listen_sock) {
+		pdie "pproxy: $emsg -- PPROXY_LISTEN\n";
+	}
+	print STDERR "pproxy: listening on $p2\n";
+	my $ip;
+	($listen_handle, $ip) = $listen_sock->accept();
+	my $err = $!;
+	close $listen_sock;
+	if (! $listen_handle) {
+		pdie "pproxy: $err\n";
+	}
+
+	if ($ENV{PPROXY_LOOP_THYSELF_MASTER}) {
+		my $sml = $ENV{SSVNC_MULTIPLE_LISTEN}; 
+		if ($sml ne "" && $sml ne "0") {
+			setpgrp(0, 0);
+			if (fork()) {
+				close $viewer_sock;
+				wait;
+				exit 0;
+			}
+			if (fork()) {
+				close $viewer_sock;
+				exit 0;
+			}
+			setpgrp(0, 0);
+			$parent = $$;
+		}
+	}
+}
+
+$sock = IO::Socket::INET->new(
+	PeerAddr => $proxy_host,
+	PeerPort => $proxy_port,
+	Proto => "tcp"
+);
+
+my $err = "";
+
+if (! $sock && $have_inet6) {
+	$err = $!;
+
+	print STDERR "pproxy: $!\n";
+
+	eval {$sock = IO::Socket::INET6->new(
+		PeerAddr => $proxy_host,
+		PeerPort => $proxy_port,
+		Proto => "tcp"
+	);};
+	$err .= " / $!";
+}
+
+if (! $sock && ($proxy_host =~ /^::ffff:(\d+\.\d+\.\d+\.\d+)$/i || $proxy_host =~ /^::ffff:([\da-f]+:[\da-f]+)$/i)) {
+	print STDERR "pproxy: $!\n";
+	my $ipv4_addr = $1;
+	if ($ipv4_addr =~ /:/) {
+		my ($a, $b) = split(/:/, $ipv4_addr);
+		$a = hex($a);
+		$b = hex($b);
+		$ipv4_addr  = sprintf("%d.", ($a & 0xff00) >> 8);
+		$ipv4_addr .= sprintf("%d.", ($a & 0x00ff));
+		$ipv4_addr .= sprintf("%d.", ($b & 0xff00) >> 8);
+		$ipv4_addr .= sprintf("%d",  ($b & 0x00ff));
+	}
+
+	print STDERR "pproxy: re-trying with ipv4 addr: $ipv4_addr\n";
+
+	eval {$sock = IO::Socket::INET->new(
+		PeerAddr => $ipv4_addr,
+		PeerPort => $proxy_port,
+		Proto => "tcp"
+	);};
+	$err .= " / $!";
+}
+
+if (! $sock) {
+	unlink($0) if $ENV{PPROXY_REMOVE};
+	pdie "pproxy: $err\n";
+}
+
+unlink($0) if $ENV{PPROXY_REMOVE};
+
+if ($ENV{PPROXY_PROXY} =~ /^vencrypt:/ && $ENV{PPROXY_VENCRYPT_REVERSE}) {
+	print STDERR "\nPPROXY: vencrypt+reverse: swapping listen socket with connect socket.\n";
+	my $tmp_swap = $sock;
+	$sock = $listen_handle;
+	$listen_handle = $tmp_swap;
+}
+
+$cur_proxy = $first;
+setmode($mode_1st);
+
+if ($second ne "") {
+	connection($second, 1);
+
+	setmode($mode_2nd);
+	$cur_proxy = $second;
+
+	if ($third ne "") {
+		connection($third, 2);
+		setmode($mode_3rd);
+		$cur_proxy = $third;
+		connection($connect, 3);
+	} else {
+		connection($connect, 2);
+	}
+} else {
+	connection($connect, 1);
+}
+
+sub kill_proxy_pids() {
+	if ($ENV{PPROXY_VENCRYPT_VIEWER_BRIDGE}) {
+		return;
+	}
+	if ($ENV{PPROXY_KILLPID}) {
+		foreach my $p (split(/,/, $ENV{PPROXY_KILLPID})) {
+			if ($p =~ /^(\+|-)/) {
+				$p = $parent + $p;
+			}
+			print STDERR "kill TERM, $p (PPROXY_KILLPID)\n";
+			kill "TERM", $p;
+		}
+	}
+}
+
+sub xfer {
+	my($in, $out) = @_;
+	$RIN = $WIN = $EIN = "";
+	$ROUT = "";
+	vec($RIN, fileno($in), 1) = 1;
+	vec($WIN, fileno($in), 1) = 1;
+	$EIN = $RIN | $WIN;
+
+	while (1) {
+		my $nf = 0;
+		while (! $nf) {
+			$nf = select($ROUT=$RIN, undef, undef, undef);
+		}
+		my $len = sysread($in, $buf, 8192);
+		if (! defined($len)) {
+			next if $! =~ /^Interrupted/;
+			print STDERR "pproxy[$$]: $!\n";
+			last;
+		} elsif ($len == 0) {
+			print STDERR "pproxy[$$]: Input is EOF.\n";
+			last;
+		}
+		my $offset = 0;
+		my $quit = 0;
+		while ($len) {
+			my $written = syswrite($out, $buf, $len, $offset);
+			if (! defined $written) {
+				print STDERR "pproxy[$$]: Output is EOF. $!\n";
+				$quit = 1;
+				last;
+			}
+			$len -= $written;
+			$offset += $written;
+		}
+		last if $quit;
+	}
+	close($out);
+	close($in);
+	print STDERR "pproxy[$$]: finished xfer.\n";
+}
+
+sub handler {
+	print STDERR "pproxy[$$]: got SIGTERM.\n";
+	close $listen_handle if $listen_handle;
+	close $sock if $sock;
+	exit;
+}
+
+sub xfer_both {
+	$child = fork;
+
+	if (! defined $child) {
+		kill_proxy_pids();
+		exit 1;
+	}
+
+	$SIG{TERM} = "handler";
+
+	if ($child) {
+		if ($listen_handle) {
+			print STDERR "pproxy parent[$$]  listen_handle -> socket\n";
+			xfer($listen_handle, $sock);
+		} else {
+			print STDERR "pproxy parent[$$]  STDIN -> socket\n";
+			xfer(STDIN, $sock);
+		}
+		select(undef, undef, undef, 0.25);
+		if (kill 0, $child) {
+			select(undef, undef, undef, 0.9);
+			if (kill 0, $child) {
+				print STDERR "pproxy[$$]: kill TERM child $child\n";
+				kill "TERM", $child;
+			} else {
+				print STDERR "pproxy[$$]: child  $child gone.\n";
+			}
+		}
+	} else {
+		select(undef, undef, undef, 0.05);
+		if ($listen_handle) {
+			print STDERR "pproxy child [$$]  socket -> listen_handle\n";
+			if ($initial_data ne "") {
+				my $len = length $initial_data;
+				print STDERR "pproxy child [$$]  sending initial_data, length $len\n\n";
+				syswrite($listen_handle, $initial_data, $len);
+			} else {
+				print STDERR "\n";
+			}
+			xfer($sock, $listen_handle);
+		} else {
+			print STDERR "pproxy child [$$]  socket -> STDOUT\n";
+			if ($initial_data ne "") {
+				my $len = length $initial_data;
+				print STDERR "pproxy child [$$]  sending initial_data, length $len\n\n";
+				syswrite(STDOUT, $initial_data, $len);
+			} else {
+				print STDERR "\n";
+			}
+			xfer($sock, STDOUT);
+		}
+		select(undef, undef, undef, 0.25);
+		if (kill 0, $parent) {
+			select(undef, undef, undef, 0.8);
+			if (kill 0, $parent) {
+				print STDERR "pproxy[$$]: kill TERM parent $parent\n";
+				kill "TERM", $parent;
+			} else {
+				print STDERR "pproxy[$$]: parent $parent gone.\n";
+			}
+		}
+	}
+
+	kill_proxy_pids();
+}
+
+xfer_both();
+
+exit;
+
+sub fsleep {
+	select(undef, undef, undef, shift);
+}
+
+sub url_parse {
+	my $hostport = shift;
+	my $mode = "http";
+	if ($hostport =~ m,^socks4?://(\S*)$,i) {
+		$mode = "socks4";
+		$hostport = $1;
+	} elsif ($hostport =~ m,^socks5://(\S*)$,i) {
+		$mode = "socks5";
+		$hostport = $1;
+	} elsif ($hostport =~ m,^https?://(\S*)$,i) {
+		$mode = "http";
+		$hostport = $1;
+	} elsif ($hostport =~ m,^ipv6://(\S*)$,i) {
+		$mode = "ipv6";
+		$hostport = $1;
+	} elsif ($hostport =~ m,^repeater://(\S*)\+(\S*)$,i) {
+		# ultravnc repeater proxy.
+		$hostport = $1;
+		$mode = "repeater:$2";
+		if ($hostport !~ /:\d+$/) {
+			$hostport .= ":5900";
+		}
+	} elsif ($hostport =~ m,^vencrypt://(\S*)$,i) {
+		# vencrypt handshake.
+		$hostport = $1;
+		my $m = "connect";
+		if ($hostpost =~ /^(\S+)\+(\S+)$/) {
+			$hostport = $1;
+			$mode = $2;
+		}
+		$mode = "vencrypt:$m";
+		if ($hostport !~ /:\d+$/) {
+			$hostport .= ":5900";
+		}
+	}
+	return ($hostport, $mode);
+}
+
+sub setmode {
+	my $mode = shift;
+	$ENV{PPROXY_REPEATER} = "";
+	$ENV{PPROXY_VENCRYPT} = "";
+	if ($mode =~ /^socks/) {
+		if ($mode =~ /^socks5/) {
+			$ENV{PPROXY_SOCKS} = 5;
+		} else {
+			$ENV{PPROXY_SOCKS} = 1;
+		}
+	} elsif ($mode =~ /^ipv6/i) {
+		$ENV{PPROXY_SOCKS} = 0;
+	} elsif ($mode =~ /^repeater:(.*)/) {
+		$ENV{PPROXY_REPEATER} = $1;
+		$ENV{PPROXY_SOCKS} = "";
+	} elsif ($mode =~ /^vencrypt:(.*)/) {
+		$ENV{PPROXY_VENCRYPT} = $1;
+		$ENV{PPROXY_SOCKS} = "";
+	} else {
+		$ENV{PPROXY_SOCKS} = "";
+	}
+}
+
+sub connection {
+	my ($CONNECT, $w) = @_;
+
+	my $con = "";
+	my $msg = "";
+
+	if ($ENV{PPROXY_SOCKS} eq "5") {
+		# SOCKS5
+		my ($h, $p) = ($CONNECT, "");
+		if ($h =~ /^(.*):(\d+)$/) {
+			$h = $1;
+			$p = $2;
+		}
+		$con .= pack("C", 0x05);
+		$con .= pack("C", 0x01);
+		$con .= pack("C", 0x00);
+
+		$msg = "SOCKS5 via $cur_proxy to $h:$p\n\n";
+		print STDERR "proxy_request$w: $msg";
+
+		syswrite($sock, $con, length($con));
+
+		my ($n1, $n2, $n3, $n4, $n5, $n6);
+		my ($r1, $r2, $r3, $r4, $r5, $r6);
+		my ($s1, $s2, $s3, $s4, $s5, $s6);
+
+		$n1 = sysread($sock, $r1, 1);
+		$n2 = sysread($sock, $r2, 1);
+
+		$s1 = unpack("C", $r1);
+		$s2 = unpack("C", $r2);
+		if ($s1 != 0x05 || $s2 != 0x00) {
+			print STDERR "SOCKS5 fail s1=$s1 s2=$s2 n1=$n1 n2=$n2\n";
+			close $sock;
+			exit(1);
+		}
+
+		$con = "";
+		$con .= pack("C", 0x05);
+		$con .= pack("C", 0x01);
+		$con .= pack("C", 0x00);
+		$con .= pack("C", 0x03);
+		$con .= pack("C", length($h));
+		$con .= $h;
+		$con .= pack("C", $p >> 8);
+		$con .= pack("C", $p & 0xff);
+
+		syswrite($sock, $con, length($con));
+
+		$n1 = sysread($sock, $r1, 1);
+		$n2 = sysread($sock, $r2, 1);
+		$n3 = sysread($sock, $r3, 1);
+		$n4 = sysread($sock, $r4, 1);
+		$s1 = unpack("C", $r1);
+		$s2 = unpack("C", $r2);
+		$s3 = unpack("C", $r3);
+		$s4 = unpack("C", $r4);
+
+		if ($s4 == 0x1) {
+			sysread($sock, $r5, 4 + 2);
+		} elsif ($s4 == 0x3) {
+			sysread($sock, $r5, 1);
+			$s5 = unpack("C", $r5);
+			sysread($sock, $r6, $s5 + 2);
+		} elsif ($s4 == 0x4) {
+			sysread($sock, $r5, 16 + 2);
+		}
+
+		if ($s1 != 0x5 || $s2 != 0x0 || $s3 != 0x0) {
+			print STDERR "SOCKS5 failed: s1=$s1 s2=$s2 s3=$s3 s4=$s4 n1=$n1 n2=$n2 n3=$n3 n4=$n4\n";
+			close $sock;
+			exit(1);
+		}
+
+	} elsif ($ENV{PPROXY_SOCKS} eq "1") {
+		# SOCKS4 SOCKS4a
+		my ($h, $p) = ($CONNECT, "");
+		if ($h =~ /^(.*):(\d+)$/) {
+			$h = $1;
+			$p = $2;
+		}
+		$con .= pack("C", 0x04);
+		$con .= pack("C", 0x01);
+		$con .= pack("n", $p);
+
+		my $SOCKS_4a = 0;
+		if ($h eq "localhost" || $h eq "127.0.0.1") {
+			$con .= pack("C", 127);
+			$con .= pack("C", 0);
+			$con .= pack("C", 0);
+			$con .= pack("C", 1);
+		} elsif ($h =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/) {
+			$con .= pack("C", $1);
+			$con .= pack("C", $2);
+			$con .= pack("C", $3);
+			$con .= pack("C", $4);
+		} else {
+			$con .= pack("C", 0);
+			$con .= pack("C", 0);
+			$con .= pack("C", 0);
+			$con .= pack("C", 3);
+			$SOCKS_4a = 1;
+		}
+
+		$con .= "nobody";
+		$con .= pack("C", 0);
+
+		$msg = "SOCKS4 via $cur_proxy to $h:$p\n\n";
+		if ($SOCKS_4a) {
+			$con .= $h;
+			$con .= pack("C", 0);
+			$msg =~ s/SOCKS4/SOCKS4a/;
+		}
+		print STDERR "proxy_request$w: $msg";
+		syswrite($sock, $con, length($con));
+
+		my $ok = 1;
+		for (my $i = 0; $i < 8; $i++) {
+			my $c;
+			sysread($sock, $c, 1);
+			my $s = unpack("C", $c);
+			if ($i == 0) {
+				$ok = 0 if $s != 0x0;
+			} elsif ($i == 1) {
+				$ok = 0 if $s != 0x5a;
+			}
+		}
+		if (! $ok) {
+			print STDERR "SOCKS4 failed.\n";
+			close $sock;
+			exit(1);
+		}
+	} elsif ($ENV{PPROXY_SOCKS} eq "0") {
+		# hack for ipv6 "proxy", nothing to do, assume INET6 call worked.
+		;
+	} elsif ($ENV{PPROXY_REPEATER} ne "") {
+		my $rep = $ENV{PPROXY_REPEATER};
+		print STDERR "repeater: $rep\n";
+		$rep .= pack("x") x 250;
+		syswrite($sock, $rep, 250);
+
+		my $rfb = "";
+
+		my $ok = 1;
+		for (my $i = 0; $i < 12; $i++) {
+			my $c;
+			last if $ENV{PPROXY_GENERIC_REPEATER};
+			sysread($sock, $c, 1);
+			print STDERR $c;
+			$rfb .= $c;
+		}
+		if ($rfb ne "" && $rfb !~ /^RFB 000\.000/) {
+			$initial_data = $rfb;
+			$rfb =~ s/\n//g;
+			print STDERR "detected non-UltraVNC repeater; forwarding \"$rfb\"\nlength: ", length($initial_data), "\n";
+		}
+	} elsif ($ENV{PPROXY_VENCRYPT} ne "") {
+		my $vencrypt = $ENV{PPROXY_VENCRYPT};
+		vencrypt_dialog($vencrypt);
+
+	} else {
+		# Web Proxy:
+		$con = "CONNECT $CONNECT HTTP/1.1\r\n";
+		$con   .= "Host: $CONNECT\r\n";
+		$con   .= "Connection: close\r\n\r\n";
+		$msg = $con;
+
+		print STDERR "proxy_request$w: via $cur_proxy:\n$msg";
+		syswrite($sock, $con, length($con));
+
+		my $rep = "";
+		my $n = 0;
+		while ($rep !~ /\r\n\r\n/ && $n < 30000) {
+			my $c;
+			sysread($sock, $c, 1);
+			print STDERR $c;
+			$rep .= $c;
+			$n++;
+		}
+		if ($rep !~ m,HTTP/.* 200,) {
+			print STDERR "HTTP CONNECT failed.\n";
+			close $sock;
+			exit(1);
+		}
+	}
+}
+
+sub vdie {
+	append_handshake("done\n");
+	close $sock;
+	kill_proxy_pids();
+	exit(1);
+}
+
+sub anontls_handshake {
+	my ($vmode, $db) = @_;
+
+	print STDERR "\nPPROXY: Doing ANONTLS Handshake\n";
+
+	my $psec = pack("C", $rfbSecTypeAnonTls);
+	syswrite($sock, $psec, 1);
+
+	append_handshake("done\n");
+}
+
+sub vencrypt_handshake {
+	
+	my ($vmode, $db) = @_;
+
+	print STDERR "\nPPROXY: Doing VeNCrypt Handshake\n";
+
+	my $psec = pack("C", $rfbSecTypeVencrypt);
+
+	if (exists $ENV{SSVNC_TEST_SEC_TYPE}) {
+		my $fake = $ENV{SSVNC_TEST_SEC_TYPE};
+		print STDERR "PPROXY: sending sec-type: $fake\n";
+		$psec = pack("C", $fake);
+	}
+
+	syswrite($sock, $psec, 1);
+
+	my $vmajor;
+	my $vminor;
+	sysread($sock, $vmajor, 1);
+	sysread($sock, $vminor, 1);
+
+	vdie if $vmajor eq "" || $vminor eq "";
+
+	$vmajor = unpack("C", $vmajor);
+	$vminor = unpack("C", $vminor);
+	print STDERR "server vencrypt version $vmajor.$vminor\n" if $db;
+
+	if (exists $ENV{SSVNC_TEST_SEC_TYPE}) {
+		print STDERR "PPROXY: continuing on in test mode.\n";
+	} else {
+		vdie if $vmajor ne 0;
+		vdie if $vminor < 2;
+	}
+
+	$vmajor = pack("C", 0);
+	$vminor = pack("C", 2);
+	append_handshake("subversion=0.2\n");
+
+	syswrite($sock, $vmajor, 1);
+	syswrite($sock, $vminor, 1);
+
+	my $result;
+	sysread($sock, $result, 1);
+	print STDERR "result empty\n" if $db && $result eq "";
+
+	vdie if $result eq "";
+	$result = unpack("C", $result);
+	print STDERR "result=$result\n" if $db;
+
+	vdie if $result ne 0;
+
+	my $nsubtypes;
+	sysread($sock, $nsubtypes, 1);
+
+	vdie if $nsubtypes eq "";
+	$nsubtypes = unpack("C", $nsubtypes);
+	print STDERR "nsubtypes=$nsubtypes\n" if $db;
+
+	my %subtypes;
+
+	for (my $i = 0; $i < $nsubtypes; $i++) {
+		my $subtype = ""; 
+		sysread($sock, $subtype, 4);
+		vdie if length($subtype) != 4;
+
+		# XXX fix 64bit.
+		$subtype = unpack("N", $subtype);
+		print STDERR "subtype: $subtype\n" if $db;
+		$subtypes{$subtype} = 1;
+		append_handshake("sst$i=$subtype\n");
+	}
+
+	my $subtype = 0;
+	if (exists $subtypes{$rfbVencryptX509None})  {
+		$subtype = $rfbVencryptX509None;
+		print STDERR "selected rfbVencryptX509None\n" if $db;
+	} elsif (exists $subtypes{$rfbVencryptX509Vnc})  {
+		$subtype = $rfbVencryptX509Vnc;
+		print STDERR "selected rfbVencryptX509Vnc\n" if $db;
+	} elsif (exists $subtypes{$rfbVencryptX509Plain})  {
+		$subtype = $rfbVencryptX509Plain;
+		print STDERR "selected rfbVencryptX509Plain\n" if $db;
+	} elsif (exists $subtypes{$rfbVencryptTlsNone})  {
+		$subtype = $rfbVencryptTlsNone;
+		print STDERR "selected rfbVencryptTlsNone\n" if $db;
+	} elsif (exists $subtypes{$rfbVencryptTlsVnc})  {
+		$subtype = $rfbVencryptTlsVnc;
+		print STDERR "selected rfbVencryptTlsVnc\n" if $db;
+	} elsif (exists $subtypes{$rfbVencryptTlsPlain})  {
+		$subtype = $rfbVencryptTlsPlain;
+		print STDERR "selected rfbVencryptTlsPlain\n" if $db;
+	}
+
+	if (exists $ENV{SSVNC_TEST_SEC_SUBTYPE}) {
+		my $fake = $ENV{SSVNC_TEST_SEC_SUBTYPE};
+		print STDERR "PPROXY: sending sec-subtype: $fake\n";
+		$subtype = $fake;
+	}
+
+	append_handshake("subtype=$subtype\n");
+
+	my $pst = pack("N", $subtype);
+	syswrite($sock, $pst, 4); 
+
+	if (exists $ENV{SSVNC_TEST_SEC_SUBTYPE}) {
+		print STDERR "PPROXY: continuing on in test mode.\n";
+	} else {
+		vdie if $subtype == 0;
+	}
+
+	my $ok;
+	sysread($sock, $ok, 1);
+	$ok = unpack("C", $ok);
+	print STDERR "ok=$ok\n" if $db;
+
+	append_handshake("done\n");
+
+	vdie if $ok == 0;
+}
+
+sub vencrypt_dialog {
+	my $vmode = shift;
+	my $db = 0;
+
+	$db = 1 if exists $ENV{SS_DEBUG};
+	$db = 1 if exists $ENV{SSVNC_VENCRYPT_DEBUG};
+
+	append_handshake("mode=$vmode\n");
+
+	my $server_rfb = "";
+	#syswrite($sock, $rep, 250);
+	for (my $i = 0; $i < 12; $i++) {
+		my $c;
+		sysread($sock, $c, 1);
+		$server_rfb .= $c;
+		print STDERR $c;
+	}
+	print STDERR "server_rfb: $server_rfb\n" if $db;
+	append_handshake("server=$server_rfb");
+
+	my $minor = "";
+	if ($server_rfb =~ /^RFB 003\.(\d+)/) {
+		$minor = $1;
+	} else {
+		vdie;
+	}
+	my $viewer_rfb = "RFB 003.008\n";
+	if ($minor < 7) {
+		vdie;
+	} elsif ($minor == 7) {
+		$viewer_rfb = "RFB 003.007\n";
+	}
+	my $nsec;
+	my $t1 = gettime();
+	my $t0 = gettime();
+
+	syswrite($sock, $viewer_rfb, 12);
+	sysread($sock, $nsec, 1);
+
+	$t1 = gettime();
+	$t1 = sprintf("%.6f", $t1 - $t0);
+
+	append_handshake("viewer=$viewer_rfb");
+	append_handshake("latency=$t1\n");
+
+	vdie if $nsec eq "";
+
+	$nsec = unpack("C", $nsec);
+
+	print STDERR "nsec: $nsec\n" if $db;
+	vdie if $nsec eq 0 || $nsec > 100;
+
+	my %sectypes = ();
+
+	for (my $i = 0; $i < $nsec; $i++) {
+		my $sec;
+		sysread($sock, $sec, 1);
+		vdie if $sec eq "";
+		$sec = unpack("C", $sec);
+		print STDERR "sec: $sec\n" if $db;
+		$sectypes{$sec} = 1;
+	}
+	
+	if (exists $sectypes{$rfbSecTypeVencrypt}) {
+		print STDERR "found rfbSecTypeVencrypt\n" if $db;
+		append_handshake("sectype=$rfbSecTypeVencrypt\n");
+		vencrypt_handshake($vmode, $db);
+	} elsif (exists $sectypes{$rfbSecTypeAnonTls}) {
+		print STDERR "found rfbSecTypeAnonTls\n" if $db;
+		append_handshake("sectype=$rfbSecTypeAnonTls\n");
+		anontls_handshake($vmode, $db);
+	} else {
+		print STDERR "No supported sec-type found\n" if $db;
+		vdie;
+	}
+}
+
+sub append_handshake {
+	my $str = shift;
+	if ($handshake_file) {
+		if (open(HSF, ">>$handshake_file")) {
+			print HSF $str;
+			close HSF;
+		}
+	}
+}
+
+sub do_vencrypt_viewer_bridge {
+	my ($listen, $connect) = @_;
+	print STDERR "\npproxy: starting vencrypt_viewer_bridge[$$]: $listen \-> $connect\n";
+	my $db = 0;
+	my $backwards = 0;
+	if ($listen < 0) {
+		$backwards = 1;
+		$listen = -$listen;
+	}
+	if ($handshake_file eq "") {
+		die "pproxy: vencrypt_viewer_bridge[$$]: no SSVNC_PREDIGESTED_HANDSHAKE\n";
+	}
+	my $listen_sock;
+	my $maxtry = 12;
+	my $sleep = 5;
+	for (my $i=0; $i < $maxtry; $i++)  {
+		$listen_sock = IO::Socket::INET->new(
+			Listen    => 2,
+			ReuseAddr => 1,
+			LocalAddr => "127.0.0.1",
+			LocalPort => $listen,
+			Proto     => "tcp"
+		);
+		if (! $listen_sock) {
+			if ($i < $maxtry - 1) {
+				warn "pproxy: vencrypt_viewer_bridge[$$]: $!\n";
+				warn "Could not listen on port $listen, retrying in $sleep seconds... (Ctrl-C to quit)\n";
+				sleep $sleep;
+			}
+		} else {
+			last;
+		}
+	}
+	if (! $listen_sock) {
+		die "pproxy: vencrypt_viewer_bridge[$$]: $!\n";
+	}
+	print STDERR "pproxy: vencrypt_viewer_bridge[$$]: listening on port $listen\n\n";
+	my ($viewer_sock, $ip) = $listen_sock->accept();
+	my $err = $!;
+	close $listen_sock;
+	if (! $viewer_sock) {
+		die "pproxy: vencrypt_viewer_bridge[$$]: $err\n";
+	}
+	if ($ENV{PPROXY_LOOP_THYSELF_MASTER}) {
+		my $sml = $ENV{SSVNC_MULTIPLE_LISTEN}; 
+		if ($sml ne "" && $sml ne "0") {
+			setpgrp(0, 0);
+			if (fork()) {
+				close $viewer_sock;
+				wait;
+				exit 0;
+			}
+			if (fork()) {
+				close $viewer_sock;
+				exit 0;
+			}
+			setpgrp(0, 0);
+			$parent = $$;
+		}
+	}
+	print STDERR "vencrypt_viewer_bridge[$$]: viewer_sock $viewer_sock\n" if $db;
+
+	print STDERR "pproxy: vencrypt_viewer_bridge[$$]: connecting to 127.0.0.1:$connect\n";
+	my $server_sock = IO::Socket::INET->new(
+		PeerAddr => "127.0.0.1",
+		PeerPort => $connect,
+		Proto => "tcp"
+	);
+	print STDERR "vencrypt_viewer_bridge[$$]: server_sock $server_sock\n" if $db;
+	if (! $server_sock) {
+		my $err = $!;
+		die "pproxy: vencrypt_viewer_bridge[$$]: $err\n";
+	}
+
+	if ($backwards) {
+		print STDERR "vencrypt_viewer_bridge[$$]: reversing roles of viewer and server.\n";
+		my $t = $viewer_sock;
+		$viewer_sock = $server_sock;
+		$server_sock = $t;
+	}
+
+	my %hs = ();
+	my $dt = 0.2;
+	my $slept = 0.0;
+	while ($slept < 20.0) {
+		select(undef, undef, undef, $dt);
+		$slept += $dt;
+		if (-f $handshake_file && open(HSF, "<$handshake_file")) {
+			my $done = 0;
+			%hs = ();
+			my $str = "";
+			while (<HSF>) {
+				print STDERR "vencrypt_viewer_bridge[$$]: $_" if $ENV{VENCRYPT_VIEWER_BRIDGE_DEBUG};
+				$str .= "vencrypt_viewer_bridge[$$]: $_";
+				chomp;
+				if ($_ eq "done") {
+					$done = 1;
+				} else {
+					my ($k, $v) = split(/=/, $_, 2);
+					if ($k ne "" && $v ne "") {
+						$hs{$k} = $v;
+					}
+				}
+			}
+			close HSF;
+			if ($done) {
+				print STDERR "\n" . $str;
+				last;
+			}
+		}
+	}
+	if (! exists $hs{server}) {
+		$hs{server} = "RFB 003.008";
+	}
+	if (! exists $hs{sectype}) {
+		unlink($handshake_file);
+		die "pproxy: vencrypt_viewer_bridge[$$]: no sectype.\n";
+	}
+	syswrite($viewer_sock, "$hs{server}\n", length($hs{server}) + 1);
+	my $viewer_rfb = "";
+	for (my $i = 0; $i < 12; $i++) {
+		my $c;
+		sysread($viewer_sock, $c, 1);
+		$viewer_rfb .= $c;
+		print STDERR $c;
+	}
+	my $viewer_major = 3;
+	my $viewer_minor = 8;
+	if ($viewer_rfb =~ /RFB (\d+)\.(\d+)/) {
+		$viewer_major = $1;	
+		$viewer_minor = $2;	
+	}
+	my $u0 = pack("C", 0);
+	my $u1 = pack("C", 1);
+	my $u2 = pack("C", 2);
+	if ($hs{sectype} == $rfbSecTypeAnonTls) {
+		unlink($handshake_file);
+		print STDERR "\npproxy: vencrypt_viewer_bridge[$$]: rfbSecTypeAnonTls\n";
+		if ($viewer_major > 3 || $viewer_minor >= 7) {
+			;	# setup ok, proceed to xfer.
+		} else {
+			print STDERR "pproxy: vencrypt_viewer_bridge[$$]: faking RFB version 3.3 to viewer.\n";
+			my $n;
+			sysread($server_sock, $n, 1);
+			$n = unpack("C", $n);
+			if ($n == 0) {
+				die "pproxy: vencrypt_viewer_bridge[$$]: nsectypes == $n.\n";
+			}
+			my %types;
+			for (my $i = 0; $i < $n; $i++) {
+				my $t;
+				sysread($server_sock, $t, 1);
+				$t = unpack("C", $t);
+				$types{$t} = 1;
+			}
+			my $use = 1;	# None
+			if (exists $types{1}) {
+				$use = 1;	# None
+			} elsif (exists $types{2}) {
+				$use = 2;	# VncAuth
+			} else {
+				die "pproxy: vencrypt_viewer_bridge[$$]: no valid sectypes" . join(",", keys %types) . "\n";
+			}
+				
+			# send 4 bytes sectype to viewer: 
+			# (note this should be MSB, network byte order...)
+			my $up = pack("C", $use);
+			syswrite($viewer_sock, $u0, 1);
+			syswrite($viewer_sock, $u0, 1);
+			syswrite($viewer_sock, $u0, 1);
+			syswrite($viewer_sock, $up, 1);
+			# and tell server the one we selected:
+			syswrite($server_sock, $up, 1);
+			if ($use == 1) {
+				# even None has security result, so read it here and discard it.
+				my $sr = "";
+				sysread($server_sock, $sr, 4);
+			}
+		}
+	} elsif ($hs{sectype} == $rfbSecTypeVencrypt) {
+		print STDERR "\npproxy: vencrypt_viewer_bridge[$$]: rfbSecTypeVencrypt\n";
+		if (! exists $hs{subtype}) {
+			unlink($handshake_file);
+			die "pproxy: vencrypt_viewer_bridge[$$]: no subtype.\n";
+		}
+		my $fake_type = "None";
+		my $plain = 0;
+		my $sub_type = $hs{subtype};
+		if ($sub_type == $rfbVencryptTlsNone) {
+			$fake_type = "None";
+		} elsif ($sub_type == $rfbVencryptTlsVnc) {
+			$fake_type = "VncAuth";
+		} elsif ($sub_type == $rfbVencryptTlsPlain) {
+			$fake_type = "None";
+			$plain = 1;
+		} elsif ($sub_type == $rfbVencryptX509None) {
+			$fake_type = "None";
+		} elsif ($sub_type == $rfbVencryptX509Vnc) {
+			$fake_type = "VncAuth";
+		} elsif ($sub_type == $rfbVencryptX509Plain) {
+			$fake_type = "None";
+			$plain = 1;
+		}
+		if ($plain) {
+			if (!open(W, ">$handshake_file")) {
+				unlink($handshake_file);
+				die "pproxy: vencrypt_viewer_bridge[$$]: $handshake_file $!\n";
+			}
+			print W <<"END";
+
+			proc print_out {} {
+				global user pass env
+
+				if [info exists env(SSVNC_UP_DEBUG)] {
+					toplevel .b
+					button .b.b -text "user=\$user pass=\$pass" -command {destroy .b}
+					pack .b.b
+					update
+					tkwait window .b
+				}
+				
+				if [info exists env(SSVNC_UP_FILE)] {
+					set fh "" 
+					catch {set fh [open \$env(SSVNC_UP_FILE) w]}
+					if {\$fh != ""} {
+						puts \$fh user=\$user\\npass=\$pass
+						flush \$fh
+						close \$fh
+						return
+					}
+				}
+				puts stdout user=\$user\\npass=\$pass
+				flush stdout
+			}
+
+			proc center_win {w} {
+				update
+				set W [winfo screenwidth  \$w]
+				set W [expr \$W + 1]
+				wm geometry \$w +\$W+0
+				update
+				set x [expr [winfo screenwidth  \$w]/2 - [winfo width  \$w]/2]
+				set y [expr [winfo screenheight \$w]/2 - [winfo height \$w]/2]
+
+				wm geometry \$w +\$x+\$y
+				wm deiconify \$w
+				update
+			}
+
+			wm withdraw .
+
+			global env
+			set up {}
+			if [info exists env(SSVNC_UNIXPW)] {
+				set rm 0
+				set up \$env(SSVNC_UNIXPW)
+				if [regexp {^rm:} \$up]  {
+					set rm 1
+					regsub {^rm:} \$up {} up
+				}
+				if [file exists \$up] {
+					set fh ""
+					set f \$up
+					catch {set fh [open \$up r]}
+					if {\$fh != ""} {
+						gets \$fh u	
+						gets \$fh p	
+						close \$fh
+						set up "\$u@\$p"
+					}
+					if {\$rm} {
+						catch {file delete \$f}
+					}
+				}
+			} elseif [info exists env(SSVNC_VENCRYPT_USERPASS)] {
+				set up \$env(SSVNC_VENCRYPT_USERPASS)
+			}
+			#puts stderr up=\$up
+			if {\$up != ""} {
+				if [regexp {@} \$up] {
+					global user pass
+					set user \$up
+					set pass \$up
+					regsub {@.*\$}  \$user "" user
+					regsub {^[^@]*@} \$pass "" pass
+					print_out
+					exit
+				}
+			}
+
+			wm title . {VeNCrypt Viewer Bridge User/Pass}
+
+			set user {}
+			set pass {}
+
+			label .l -text {SSVNC VeNCrypt Viewer Bridge}
+
+			frame .f0
+			frame .f0.fL
+			label .f0.fL.la -text {Username: }
+			label .f0.fL.lb -text {Password: }
+
+			pack .f0.fL.la .f0.fL.lb -side top
+
+			frame .f0.fR
+			entry .f0.fR.ea -width 24 -textvariable user
+			entry .f0.fR.eb -width 24 -textvariable pass -show *
+
+			pack .f0.fR.ea .f0.fR.eb -side top -fill x
+
+			pack .f0.fL -side left
+			pack .f0.fR -side right -expand 1 -fill x
+
+			button .no -text Cancel -command {destroy .}
+			button .ok -text Done   -command {print_out; destroy .}
+
+			center_win .
+			pack .l .f0 .no .ok -side top -fill x
+			update
+			wm deiconify .
+
+			bind .f0.fR.ea <Return> {focus .f0.fR.eb}
+			bind .f0.fR.eb <Return> {print_out; destroy .}
+			focus .f0.fR.ea
+
+			wm resizable . 1 0
+			wm minsize . [winfo reqwidth .] [winfo reqheight .]
+END
+			close W;
+
+			#system("cat $handshake_file");
+			my $w = "wish";
+			if ($ENV{WISH}) {
+				$w = $ENV{WISH};	
+			}
+			print STDERR "pproxy: vencrypt_viewer_bridge[$$]: prompt  VencryptPlain user and passwd.\n";
+			my $res = "";
+			if (`uname` =~ /Darwin/) {
+				my $mtmp = `mktemp /tmp/hsup.XXXXXX`;
+				chomp $mtmp;
+				system("env SSVNC_UP_FILE=$mtmp $w $handshake_file");
+				$res = `cat $mtmp`;
+				unlink $mtmp;
+			} else {
+				$res = `$w $handshake_file`;
+			}
+			my $user = "";
+			my $pass = "";
+			if ($res =~ /user=(\S*)/) {
+				$user = $1;
+			}
+			if ($res =~ /pass=(\S*)/) {
+				$pass = $1;
+			}
+			print STDERR "pproxy: vencrypt_viewer_bridge[$$]: sending VencryptPlain user and passwd.\n";
+			my $ulen = pack("C", length($user));
+			my $plen = pack("C", length($pass));
+			# (note this should be MSB, network byte order...)
+			syswrite($server_sock, $u0, 1);
+			syswrite($server_sock, $u0, 1);
+			syswrite($server_sock, $u0, 1);
+			syswrite($server_sock, $ulen, 1);
+			syswrite($server_sock, $u0, 1);
+			syswrite($server_sock, $u0, 1);
+			syswrite($server_sock, $u0, 1);
+			syswrite($server_sock, $plen, 1);
+			syswrite($server_sock, $user, length($user));
+			syswrite($server_sock, $pass, length($pass));
+		}
+		unlink($handshake_file);
+
+		my $ft = 0;
+		if ($fake_type eq "None") {
+			$ft = 1;
+		} elsif ($fake_type eq "VncAuth") {
+			$ft = 2;
+		} else {
+			die "pproxy: vencrypt_viewer_bridge[$$]: unknown fake type: $fake_type\n";
+		}
+		my $fp = pack("C", $ft);
+		if ($viewer_major > 3 || $viewer_minor >= 7) {
+			syswrite($viewer_sock, $u1, 1);
+			syswrite($viewer_sock, $fp, 1);
+			my $cr;
+			sysread($viewer_sock, $cr, 1);
+			$cr = unpack("C", $cr);
+			if ($cr != $ft) {
+				die "pproxy: vencrypt_viewer_bridge[$$]: client selected wrong type: $cr / $ft\n";
+			}
+		} else {
+			print STDERR "pproxy: vencrypt_viewer_bridge[$$]: faking RFB version 3.3 to viewer.\n";
+			# send 4 bytes sect type to viewer: 
+			# (note this should be MSB, network byte order...)
+			syswrite($viewer_sock, $u0, 1);
+			syswrite($viewer_sock, $u0, 1);
+			syswrite($viewer_sock, $u0, 1);
+			syswrite($viewer_sock, $fp, 1);
+			if ($ft == 1) {
+				# even None has security result, so read it here and discard it.
+				my $sr = "";
+				sysread($server_sock, $sr, 4);
+			}
+		}
+	}
+
+	$listen_handle = $viewer_sock;
+	$sock = $server_sock;
+
+	xfer_both();
+}
+'
+	# '
+	# xpg_echo will expand \n \r, etc.
+	# try to unset and then test for it.
+	if type shopt > /dev/null 2>&1; then
+		shopt -u xpg_echo >/dev/null 2>&1
+	fi
+	v='print STDOUT "abc\n";'
+	echo "$v" > $tf
+	chmod 700 $tf
+
+	lc=`wc -l $tf | awk '{print $1}'`
+	if [ "X$lc" = "X1" ]; then
+		echo "$cod" > $tf
+	else
+		printf "%s" "$cod" > $tf
+		echo "" >> $tf
+	fi
+	# prime perl
+	perl -e 'use IO::Socket::INET; select(undef, undef, undef, 0.01)' >/dev/null 2>&1
+}
+
+# make_tcert is no longer invoked via the ssvnc gui (Listen mode).
+# make_tcert is for testing only now via -mycert BUILTIN
+make_tcert() {
+	tcert="/tmp/ss_vnc_viewer_tcert${RANDOM}.$$"
+	tcert=`mytmp "$tcert"`
+	cat > $tcert <<END
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAvkfXxb0wcxgrjV2ziFikjII+ze8iKcTBt47L0GM/c21efelN
++zZpJUUXLu4zz8Ryq8Q+sQgfNy7uTOpN9bUUaOk1TnD7gaDQnQWiNHmqbW2kL+DS
+OKngJVPo9dETAS8hf7+D1e1DBZxjTc1a4RQqWJixwpYj99ixWzu8VC2m/xXsjvOs
+jp4+DLBB490nbkwvstmhmiWm1CmI5O5xOkgioVNQqHvQMdVKOSz9PpbjvZiRX1Uo
+qoMrk+2NOqwP90TB35yPASXb9zXKpO7DLhkube+yYGf+yk46aD707L07Eb7cosFP
+S84vNZ9gX7rQ0UOwm5rYA/oZTBskgaqhtIzkLwIDAQABAoIBAD4ot/sXt5kRn0Ca
+CIkU9AQWlC+v28grR2EQW9JiaZrqcoDNUzUqbCTJsi4ZkIFh2lf0TsqELbZYNW6Y
+6AjJM7al4E0UqYSKJTv2WCuuRxdiRs2BMwthqyBmjeanev7bB6V0ybt7u3Y8xU/o
+MrTuYnr4vrEjXPKdLirwk7AoDbKsRXHSIiHEIBOq1+dUQ32t36ukdnnza4wKDLZc
+PKHiCdCk/wOGhuDlxD6RspqUAlRnJ8/aEhrgWxadFXw1hRhRsf/v1shtB0T3DmTe
+Jchjwyiw9mryb9JZAcKxW+fUc4EVvj6VdQGqYInQJY5Yxm5JAlVQUJicuuJEvn6A
+rj5osQECgYEA552CaHpUiFlB4HGkjaH00kL+f0+gRF4PANCPk6X3UPDVYzKnzmuu
+yDvIdEETGFWBwoztUrOOKqVvPEQ+kBa2+DWWYaERZLtg2cI5byfDJxQ3ldzilS3J
+1S3WgCojqcsG/hlxoQJ1dZFanUy/QhUZ0B+wlC+Zp1Q8AyuGQvhHp68CgYEA0lBI
+eqq2GGCdJuNHMPFbi8Q0BnX55LW5C1hWjhuYiEkb3hOaIJuJrqvayBlhcQa2cGqp
+uP34e9UCfoeLgmoCQ0b4KpL2NGov/mL4i8bMgog4hcoYuIi3qxN18vVR14VKEh4U
+RLk0igAYPU+IK2QByaQlBo9OSaKkcfm7U1/pK4ECgYAxr6VpGk0GDvfF2Tsusv6d
+GIgV8ZP09qSLTTJvvxvF/lQYeqZq7sjI5aJD5i3de4JhpO/IXQJzfZfWOuGc8XKA
+3qYK/Y2IqXXGYRcHFGWV/Y1LFd55mCADHlk0l1WdOBOg8P5iRu/Br9PbiLpCx9oI
+vrOXpnp03eod1/luZmqguwKBgQCWFRSj9Q7ddpSvG6HCG3ro0qsNsUMTI1tZ7UBX
+SPogx4tLf1GN03D9ZUZLZVFUByZKMtPLX/Hi7K9K/A9ikaPrvsl6GEX6QYzeTGJx
+3Pw0amFrmDzr8ySewNR6/PXahxPEuhJcuI31rPufRRI3ZLah3rFNbRbBFX+klkJH
+zTnoAQKBgDbUK/aQFGduSy7WUT7LlM3UlGxJ2sA90TQh4JRQwzur0ACN5GdYZkqM
+YBts4sBJVwwJoxD9OpbvKu3uKCt41BSj0/KyoBzjT44S2io2tj1syujtlVUsyyBy
+/ca0A7WBB8lD1D7QMIhYUm2O9kYtSCLlUTHt5leqGaRG38DqlX36
+-----END RSA PRIVATE KEY-----
+-----BEGIN CERTIFICATE-----
+MIIDzDCCArQCCQDSzxzxqhyqLzANBgkqhkiG9w0BAQQFADCBpzELMAkGA1UEBhMC
+VVMxFjAUBgNVBAgTDU1hc3NhY2h1c2V0dHMxDzANBgNVBAcTBkJvc3RvbjETMBEG
+A1UEChMKTXkgQ29tcGFueTEcMBoGA1UECxMTUHJvZHVjdCBEZXZlbG9wbWVudDEZ
+MBcGA1UEAxMQd3d3Lm5vd2hlcmUubm9uZTEhMB8GCSqGSIb3DQEJARYSYWRtaW5A
+bm93aGVyZS5ub25lMB4XDTA3MDMyMzE4MDc0NVoXDTI2MDUyMjE4MDc0NVowgacx
+CzAJBgNVBAYTAlVTMRYwFAYDVQQIEw1NYXNzYWNodXNldHRzMQ8wDQYDVQQHEwZC
+b3N0b24xEzARBgNVBAoTCk15IENvbXBhbnkxHDAaBgNVBAsTE1Byb2R1Y3QgRGV2
+ZWxvcG1lbnQxGTAXBgNVBAMTEHd3dy5ub3doZXJlLm5vbmUxITAfBgkqhkiG9w0B
+CQEWEmFkbWluQG5vd2hlcmUubm9uZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBAL5H18W9MHMYK41ds4hYpIyCPs3vIinEwbeOy9BjP3NtXn3pTfs2aSVF
+Fy7uM8/EcqvEPrEIHzcu7kzqTfW1FGjpNU5w+4Gg0J0FojR5qm1tpC/g0jip4CVT
+6PXREwEvIX+/g9XtQwWcY03NWuEUKliYscKWI/fYsVs7vFQtpv8V7I7zrI6ePgyw
+QePdJ25ML7LZoZolptQpiOTucTpIIqFTUKh70DHVSjks/T6W472YkV9VKKqDK5Pt
+jTqsD/dEwd+cjwEl2/c1yqTuwy4ZLm3vsmBn/spOOmg+9Oy9OxG+3KLBT0vOLzWf
+YF+60NFDsJua2AP6GUwbJIGqobSM5C8CAwEAATANBgkqhkiG9w0BAQQFAAOCAQEA
+vGomHEp6TVU83X2EBUgnbOhzKJ9u3fOI/Uf5L7p//Vxqow7OR1cguzh/YEzmXOIL
+ilMVnzX9nj/bvcLAuqEP7MR1A8f4+E807p/L/Sf49BiCcwQq5I966sGKYXjkve+T
+2GTBNwMSq+5kLSf6QY8VZI+qnrAudEQMeJByQhTZZ0dH8Njeq8EGl9KUio+VWaiW
+CQK6xJuAvAHqa06OjLmwu1fYD4GLGSrOIiRVkSXV8qLIUmzxdJaIRznkFWsrCEKR
+wAH966SAOvd2s6yOHMvyDRIL7WHxfESB6rDHsdIW/yny1fBePjv473KrxyXtbz7I
+dMw1yW09l+eEo4A7GzwOdw==
+-----END CERTIFICATE-----
+END
+	chmod 600 $tcert
+	echo "$tcert"
+}
+
+Kecho() {
+	NO_KECHO=1
+	if [ "X$USER" = "Xrunge" -a "X$NO_KECHO" = "X" ]; then
+		echo "dbg: $*"
+	fi
+}
+
+NHAFL_warning() {
+	echo "" 
+	echo "** Warning: For the proxy: $proxy" 
+	echo "** Warning: the ssh(1) option: $ssh_NHAFL" 
+	echo "** Warning: will be used to avoid frequent 'ssh key has changed for localhost'"
+	echo "** Warning: dialogs and connection failures (for example, ssh will exit asking"
+	echo "** Warning: you to manually remove a key from ~/.ssh/known_hosts.)"
+	echo "** Warning: "
+	echo "** Warning: This decreases security: a Man-In-The-Middle attack is possible."
+	echo "** Warning: For chained ssh connections the first ssh leg is secure but the"
+	echo "** Warning: 2nd ssh leg is vulnerable.  For an ssh connection going through"
+	echo "** Warning: a HTTP or SOCKS proxy the ssh connection is vulnerable."
+	echo "** Warning: "
+	echo "** Warning: You can set the SSVNC_SSH_LOCALHOST_AUTH=1 env. var. to disable" 
+	echo "** Warning: using the NoHostAuthenticationForLocalhost=yes ssh option." 
+	echo "** Warning: "
+	echo "** Warning: A better solution is to configure (in the SSVNC GUI) the setting:"
+	echo "** Warning: 'Options -> Advanced -> Private SSH KnownHosts file' (or set" 
+	echo "** Warning: SSVNC_KNOWN_HOSTS_FILE directly) to a per-connection known hosts" 
+	echo "** Warning: file.  That file holds the 'localhost' cert for this specific" 
+	echo "** Warning: connection.  This yields a both secure and convenient solution." 
+	echo "" 
+}
+
+space_expand() {
+	str=`echo "$1" | sed -e 's/%SPACE/ /g' -e 's/%TAB/\t/g'`
+	echo "$str"
+}
+
+# handle ssh case:
+#
+if [ "X$use_ssh" = "X1" ]; then
+	#
+	# USING SSH
+	#
+	ssh_port="22"
+	ssh_host="$host"
+	vnc_host="$localhost"
+	ssh_UKHF=""
+	localhost_extra=""
+	# let user override ssh via $SSH
+	ssh=${SSH:-"ssh -x"}
+
+	sshword=`echo "$ssh" | awk '{print $1}'`
+	if [ "X$sshword" != "X" ]; then
+		if [ -x "$sshword" ]; then
+			:
+		elif type "$sshword" > /dev/null 2>&1; then
+			:
+		else
+			echo ""
+			echo "*********************************************************"
+			echo "** Problem finding the SSH command '$sshword': **"
+			echo ""
+			type "$sshword"
+			echo ""
+			echo "** Perhaps you need to install the SSH client package. **"
+			echo "*********************************************************"
+			echo ""
+			sleep 5
+		fi
+	fi
+
+	ssh_NHAFL="-o NoHostAuthenticationForLocalhost=yes"
+	if [ "X$SSVNC_SSH_LOCALHOST_AUTH" = "X1" ]; then
+		ssh_NHAFL=""
+	fi
+	if [ "X$SSVNC_KNOWN_HOSTS_FILE" != "X" ]; then
+		ssh_NHAFL=""
+	
+		ssh_UKHF="-o UserKnownHostsFile=$SSVNC_KNOWN_HOSTS_FILE"
+		ssh_args="$ssh_args $ssh_UKHF"
+		if [ ! -f "$SSVNC_KNOWN_HOSTS_FILE" ]; then
+			touch "$SSVNC_KNOWN_HOSTS_FILE" >/dev/null 2>&1
+		fi
+		chmod 600 "$SSVNC_KNOWN_HOSTS_FILE" >/dev/null 2>&1
+	fi
+	did_ssh_NHAFL=""
+
+	if [ "X$SSVNC_LIM_ACCEPT_PRELOAD" != "X" ]; then
+		SSVNC_LIM_ACCEPT_PRELOAD="$SSVNC_BASEDIR/$SSVNC_UNAME/$SSVNC_LIM_ACCEPT_PRELOAD"
+	fi
+	if [ "X$SSVNC_LIM_ACCEPT_PRELOAD" != "X" ]; then
+		echo ""
+		echo "SSVNC_LIM_ACCEPT_PRELOAD=$SSVNC_LIM_ACCEPT_PRELOAD"
+	fi
+
+	if [ "X$SSVNC_LIM_ACCEPT_PRELOAD" != "X" -a -f "$SSVNC_LIM_ACCEPT_PRELOAD" ]; then
+		plvar=LD_PRELOAD
+		if uname | grep Darwin >/dev/null; then
+			plvar="DYLD_FORCE_FLAT_NAMESPACE=1 DYLD_INSERT_LIBRARIES"
+		fi
+		ssh="env $plvar=$SSVNC_LIM_ACCEPT_PRELOAD $ssh"
+	else
+		SSVNC_LIM_ACCEPT_PRELOAD=""
+	fi
+
+	ssh_vencrypt_proxy=""
+	# We handle vencrypt for SSH+SSL mode.
+	if echo "$proxy" | grep 'vencrypt://' > /dev/null; then
+		proxynew=""
+		for part in `echo "$proxy" | tr ',' ' '`
+		do
+			if echo "$part" | egrep -i '^vencrypt://' > /dev/null; then
+				ssh_vencrypt_proxy=$part
+			else
+				if [ "X$proxynew" = "X" ]; then
+					proxynew="$part"
+				else
+					proxynew="$proxynew,$part"
+				fi
+			fi
+		done
+		proxy=$proxynew
+	fi 
+	Kecho ssh_vencrypt_proxy=$ssh_vencrypt_proxy
+
+	# note that user must supply http:// for web proxy in SSH and SSH+SSL.
+	# No xxxx:// implies ssh server+port.
+	#
+	if echo "$proxy" | egrep '(http|https|socks|socks4|socks5)://' > /dev/null; then
+		# Handle Web or SOCKS proxy(ies) for the initial connect.
+		Kecho host=$host
+		Kecho port=$port
+		pproxy=""
+		sproxy1=""
+		sproxy_rest=""
+		for part in `echo "$proxy" | tr ',' ' '`
+		do
+			Kecho proxy_part=$part
+			if [ "X$part" = "X" ]; then
+				continue
+			elif echo "$part" | egrep -i '^(http|https|socks|socks4|socks5)://' > /dev/null; then
+				pproxy="$pproxy,$part"
+			else
+				if [ "X$sproxy1" = "X" ]; then
+					sproxy1="$part"
+				else
+					sproxy_rest="$sproxy_rest,$part"
+				fi
+			fi
+		done
+		pproxy=`echo "$pproxy" | sed -e 's/^,,*//' -e 's/,,*/,/g'`
+		sproxy_rest=`echo "$sproxy_rest" | sed -e 's/^,,*//' -e 's/,,*/,/g'`
+
+		Kecho pproxy=$pproxy
+		Kecho sproxy1=$sproxy1
+		Kecho sproxy_rest=$sproxy_rest
+
+		sproxy1_host=""
+		sproxy1_port=""
+		sproxy1_user=""
+
+		if [ "X$sproxy1" != "X" ]; then
+			# XXX fix ipv6 ip adder here and below.
+			sproxy1_host=`echo "$sproxy1" | awk -F: '{print $1}'`
+			sproxy1_user=`echo "$sproxy1_host" | awk -F@ '{print $1}'`
+			sproxy1_host=`echo "$sproxy1_host" | awk -F@ '{print $2}'`
+			if [ "X$sproxy1_host" = "X" ]; then
+				sproxy1_host=$sproxy1_user
+				sproxy1_user=""
+			else
+				sproxy1_user="${sproxy1_user}@"
+			fi
+			sproxy1_port=`echo "$sproxy1" | awk -F: '{print $2}'`
+			if [ "X$sproxy1_port" = "X" ]; then
+				sproxy1_port="22"
+			fi
+		else
+			sproxy1_host=`echo "$host" | awk -F: '{print $1}'`
+			sproxy1_user=`echo "$sproxy1_host" | awk -F@ '{print $1}'`
+			sproxy1_host=`echo "$sproxy1_host" | awk -F@ '{print $2}'`
+			if [ "X$sproxy1_host" = "X" ]; then
+				sproxy1_host=$sproxy1_user
+				sproxy1_user=""
+			else
+				sproxy1_user="${sproxy1_user}@"
+			fi
+			sproxy1_port=`echo "$host" | awk -F: '{print $2}'`
+			if [ "X$sproxy1_port" = "X" ]; then
+				sproxy1_port="22"
+			fi
+		fi
+
+		Kecho sproxy1_host=$sproxy1_host
+		Kecho sproxy1_port=$sproxy1_port
+		Kecho sproxy1_user=$sproxy1_user
+
+		ptmp="/tmp/ss_vncviewer_ssh${RANDOM}.$$.pl"
+		ptmp=`mytmp "$ptmp"`
+		PPROXY_REMOVE=1; export PPROXY_REMOVE
+		proxy=$pproxy
+		port_save=$port
+		host_save=$host
+		if [ "X$sproxy1_host" != "X" ]; then
+			host=$sproxy1_host
+		fi
+		if [ "X$sproxy1_port" != "X" ]; then
+			port=$sproxy1_port
+		fi
+		host=`echo "$host" | sed -e 's/^.*@//'`
+		port=`echo "$port" | sed -e 's/^.*://'`
+		pcode "$ptmp"
+		port=$port_save
+		host=$host_save
+
+		nd=`findfree 6600`
+		PPROXY_LISTEN=$nd; export PPROXY_LISTEN
+		# XXX no reverse forever PPROXY_LOOP_THYSELF ...
+		$ptmp &
+		sleep 1
+		if [ "X$ssh_NHAFL" != "X" -a "X$did_ssh_NHAFL" != "X1" ]; then
+			NHAFL_warning
+			ssh_args="$ssh_args $ssh_NHAFL"
+			did_ssh_NHAFL=1
+		fi
+		sleep 1
+		if [ "X$sproxy1" = "X" ]; then
+			u=""
+			if echo "$host" | grep '@' > /dev/null; then
+				u=`echo "$host" | sed -e 's/@.*$/@/'`
+			fi
+			
+			proxy="${u}$localhost:$nd"
+		else
+			proxy="${sproxy1_user}$localhost:$nd"
+		fi
+		localhost_extra=".2"
+		if [ "X$sproxy_rest" != "X" ]; then
+			proxy="$proxy,$sproxy_rest"
+		fi
+		Kecho proxy=$proxy
+	fi
+
+	if echo "$proxy" | grep "," > /dev/null; then
+
+		proxy1=`echo "$proxy" | awk -F, '{print $1}'`
+		proxy2=`echo "$proxy" | awk -F, '{print $2}'`
+
+		# user1@gw1.com:port1,user2@ws2:port2
+		ssh_host1=`echo "$proxy1" | awk -F: '{print $1}'`
+		ssh_port1=`echo "$proxy1" | awk -F: '{print $2}'`
+		if [ "X$ssh_port1" != "X" ]; then
+			ssh_port1="-p $ssh_port1"
+		fi
+		ssh_host2=`echo "$proxy2" | awk -F: '{print $1}'`
+		ssh_user2=`echo "$ssh_host2" | awk -F@ '{print $1}'`
+		ssh_host2=`echo "$ssh_host2" | awk -F@ '{print $2}'`
+		if [ "X$ssh_host2" = "X" ]; then
+			ssh_host2=$ssh_user2
+			ssh_user2=""
+		else
+			ssh_user2="${ssh_user2}@"
+		fi
+		ssh_port2=`echo "$proxy2" | awk -F: '{print $2}'`
+		if [ "X$ssh_port2" = "X" ]; then
+			ssh_port2="22"
+		fi
+		proxport=`findfree 3500`
+		if [ "X$ssh_NHAFL" != "X" -a "X$did_ssh_NHAFL" != "X1" ]; then
+			NHAFL_warning
+			did_ssh_NHAFL=1
+			sleep 1
+		fi
+		echo
+		echo "Running 1st ssh proxy:"
+		ukhf=""
+		if [ "X$ssh_UKHF" != "X" ]; then 
+			ukhf="$ssh_UKHF$localhost_extra"
+		fi
+		if echo "$ssh_host1" | grep '%' > /dev/null; then
+			uath=`space_expand "$ssh_host1"`
+		else
+			uath="$ssh_host1"
+		fi
+		echo "$ssh -f -x $ssh_port1 $targ -e none $ssh_NHAFL $ukhf -L $proxport:$ssh_host2:$ssh_port2 \"$uath\" \"sleep 30\""
+		echo ""
+		      $ssh -f -x $ssh_port1 $targ -e none $ssh_NHAFL $ukhf -L $proxport:$ssh_host2:$ssh_port2 "$uath" "sleep 30"
+		ssh_args="$ssh_args $ssh_NHAFL"
+		sleep 1
+		stty sane
+		proxy="${ssh_user2}$localhost:$proxport"
+	fi
+
+	if [ "X$proxy" != "X" ]; then
+		ssh_port=`echo "$proxy" | awk -F: '{print $2}'`
+		if [ "X$ssh_port" = "X" ]; then
+			ssh_port="22"
+		fi
+		ssh_host=`echo "$proxy" | awk -F: '{print $1}'`
+		vnc_host="$host"
+	fi
+
+	echo ""
+	echo "Running ssh:"
+	sz=`echo "$ssh_cmd" | wc -c`
+	if [ "$sz" -gt 300 ]; then
+		info="..."
+	else
+		info="$ssh_cmd"
+	fi
+
+	C=""
+	if [ "X$SS_VNCVIEWER_USE_C" != "X" ]; then
+		C="-C"
+	fi
+
+	getport=""
+	teeport=""
+	if echo "$ssh_cmd" | egrep "(PORT=|P=) " > /dev/null; then
+		getport=1
+		if echo "$ssh_cmd" | egrep "P= " > /dev/null; then
+			teeport=1
+		fi
+
+		PORT=""
+		ssh_cmd=`echo "$ssh_cmd" | sed -e 's/PORT=[ 	]*//' -e 's/P=//'`
+		SSVNC_NO_ENC_WARN=1
+		if [ "X$use_sshssl" = "X" ]; then
+			direct_connect=1
+		fi
+	fi
+	if [ "X$getport" != "X" ]; then
+		ssh_redir="-D ${use}"
+	elif [ "X$reverse" = "X" ]; then
+		ssh_redir="-L ${use}:${vnc_host}:${port}"
+	else
+		ssh_redir="-R ${port}:${vnc_host}:${use}"
+	fi
+	pmark=`sh -c 'echo $$'`
+
+	# the -t option actually speeds up typing response via VNC!!
+	if [ "X$ssh_port" = "X22" ]; then
+		ssh_port=""
+	else
+		ssh_port="-p $ssh_port"
+	fi
+
+	if echo "$ssh_host" | grep '%' > /dev/null; then
+		uath=`space_expand "$ssh_host"`
+	else
+		uath="$ssh_host"
+	fi
+	if [ "X$SS_VNCVIEWER_SSH_ONLY" != "X" ]; then
+		echo "$ssh -x $ssh_port $targ $C $ssh_args \"$uath\" \"$info\""
+		echo ""
+		$ssh -x $ssh_port $targ $C $ssh_args "$uath" "$ssh_cmd"
+		exit $?
+
+	elif [ "X$SS_VNCVIEWER_NO_F" != "X" ]; then
+		echo "$ssh -x $ssh_port $targ $C $ssh_redir $ssh_args \"$uath\" \"$info\""
+		echo ""
+		$ssh -x $ssh_port $targ $C $ssh_redir $ssh_args "$uath" "$ssh_cmd"
+		rc=$?
+
+	elif [ "X$getport" != "X" ]; then
+		tport=/tmp/ss_vncviewer_tport${RANDOM}.$$
+		tport=`mytmp "$tport"`
+		tport2=/tmp/ss_vncviewer_tport2${RANDOM}.$$
+		tport2=`mytmp "$tport2"`
+
+		if [ "X$rsh" != "X1" ]; then
+			if echo "$ssh_cmd" | grep "sudo " > /dev/null; then
+				echo ""
+				echo "Initial ssh with 'sudo id' to prime sudo so hopefully the next one"
+				echo "will require no password..."
+				echo ""
+				targ="-t"
+				$ssh -x $ssh_port $targ $ssh_args "$uath" "sudo id; tty"
+				echo ""
+			fi
+			echo "$ssh -x -f $ssh_port $targ $C $ssh_redir $ssh_args \"$uath\" \"$info\""
+			echo ""
+			$ssh -x -f $ssh_port $targ $C $ssh_redir $ssh_args "$uath" "$ssh_cmd" > $tport 2> $tport2
+			if [ "X$teeport" = "X1" ]; then
+				tail -f $tport  1>&2 &
+				tail_pid=$!
+				tail -f $tport2 1>&2 &
+				tail_pid2=$!
+			fi
+			rc=$?
+		else
+			rsh_setup
+			echo "rsh $ul \"$ssh_host\" \"$ssh_cmd\""
+			echo ""
+			rsh $ul "$ssh_host" "$ssh_cmd" > $tport &
+			sleep 1
+			rc=0
+		fi
+
+		if [ "X$SSVNC_EXTRA_SLEEP" != "X" ]; then
+			echo "sleep $SSVNC_EXTRA_SLEEP"
+			sleep $SSVNC_EXTRA_SLEEP
+		fi
+
+		stty sane
+		i=0
+		if type perl > /dev/null 2>&1; then
+			imax=50
+			sleepit="perl -e 'select(undef, undef, undef, 0.20)'"
+		else
+			imax=10
+			sleepit="sleep 1"
+		fi
+		while [ $i -lt $imax ]; do
+			#echo $sleepit
+			eval $sleepit
+			PORT=`grep "^PORT=" $tport | tr '\r' ' ' | head -n 1 | sed -e 's/PORT=//' -e 's/\r//g' -e 's/ *$//'`
+			if echo "$PORT" | grep '^[0-9][0-9]*$' > /dev/null; then
+				break
+			fi
+			vnss=`sed -e 's/\r//g' $tport $tport2 | egrep -i '^(New.* desktop is|A VNC server is already running).*:[0-9[0-9]*$' | head -n 1 | awk '{print $NF}'`
+			if [ "X$vnss" != "X" ]; then
+				PORT=`echo "$vnss" | awk -F: '{print $2}'`
+				if echo "$PORT" | grep '^[0-9][0-9]*$' > /dev/null; then
+					if [ $PORT -lt 100 ]; then
+						PORT=`expr $PORT + 5900`
+					fi
+				fi
+				if echo "$PORT" | grep '^[0-9][0-9]*$' > /dev/null; then
+					vnss=`sed -e 's/\r//g' $tport | egrep -i '^(New.* desktop is|A VNC server is already running).*:[0-9[0-9]*$' | head -n 1`
+					echo "vncserver string: $vnss" 1>&2
+					break
+				fi
+			fi
+			i=`expr $i + 1`
+		done
+
+		echo "found: PORT='$PORT'" 1>&2
+		lh6=""
+		if [ "X$SSVNC_PORT_IPV6" != "X" ]; then
+			lh6=1
+		elif egrep 'Info: listening on IPv6 only|Info: listening only on IPv6' $tport > /dev/null; then
+			lh6=1
+		fi
+		if [ "X$lh6" = "X1" ]; then
+			echo "set SOCKS5 localhost to ::1" 1>&2
+		fi
+		rm -f $tport $tport2
+		if [ "X$rsh" = "X1" ]; then
+			rsh_viewer "$@"
+			exit $?
+		fi
+		PPROXY_SOCKS=5
+		if [ "X$SSVNC_SOCKS5" != "X" ]; then
+			PPROXY_SOCKS=5
+		elif [ "X$SSVNC_SOCKS4" != "X" ]; then
+			PPROXY_SOCKS=1
+		fi
+		export PPROXY_SOCKS
+		if [ "X$lh6" = "X" ]; then
+			host="$localhost"
+		else
+			host="::1"
+		fi
+		port="$PORT"
+		proxy="$localhost:$use"
+
+	else
+		if [ "X$rsh" != "X1" ]; then
+			echo "$ssh -x -f $ssh_port $targ $C $ssh_redir $ssh_args \"$uath\" \"$info\""
+			echo ""
+			$ssh -x -f $ssh_port $targ $C $ssh_redir $ssh_args "$uath" "$ssh_cmd"
+			rc=$?
+		else
+			rsh_setup
+			echo "rsh $ul \"$ssh_host\" \"$ssh_cmd\""
+			echo ""
+			rsh $ul "$ssh_host" "$ssh_cmd" &
+			sleep 1
+			PORT=$port
+			rsh_viewer "$@"
+			exit $?
+		fi
+	fi
+
+	if [ "$rc" != "0" ]; then
+		echo ""
+		echo "ssh to \"$uath\" failed."
+		exit 1
+	fi
+	stty sane
+
+	c=0
+	pssh=""
+	while [ $c -lt 40 ]
+	do
+		p=`expr $pmark + $c`
+		pout=`ps -p "$p" 2>/dev/null | grep -v '^[ 	]*PID' | sed -e 's/-L.*$//' -e 's/-x .*$//'`
+		if echo "$pout" | grep "ssh" > /dev/null; then
+			if echo "$pout" | egrep -i 'ssh.*(-add|-agent|-ask|-keygen|-argv0|vnc)' >/dev/null; then
+				:
+			elif echo "$pout" | egrep -i 'scp|sshd' >/dev/null; then
+				:
+			else
+				pssh=$p
+				break
+			fi
+		fi
+		c=`expr $c + 1`
+	done
+	if [ "X$getport" != "X" ]; then
+		:
+	elif [ "X$SSVNC_LIM_ACCEPT_PRELOAD" != "X" ] ; then
+		sleep 2
+	elif [ "X$ssh_cmd" = "Xsleep $ssh_sleep" ] ; then
+		#echo T sleep 1
+		sleep 1
+	elif echo "$ssh_cmd" | grep '^sleep ' >/dev/null; then
+		#echo T sleep 2
+		sleep 2
+	else
+		# let any command get started a bit.
+		#echo T sleep 5
+		sleep 5
+	fi
+	echo ""
+	#reset
+	stty sane
+	if [ "X$SSVNC_EXTRA_SLEEP" != "X" ]; then
+		echo "sleep $SSVNC_EXTRA_SLEEP"
+		sleep $SSVNC_EXTRA_SLEEP
+	fi
+	echo "ssh_pid='$pssh'"; echo
+	if [ "X$use_sshssl" = "X" -a "X$getport" = "X" ]; then
+		if [ "X$SSVNC_EXTRA_COMMAND" != "X" ]; then
+			(sh -c "$SSVNC_EXTRA_COMMAND") &
+			echo "($SSVNC_EXTRA_COMMAND) &"; echo
+		fi
+		echo "Running viewer:"
+
+		trap "final" 0 2 15
+		if [ "X$reverse" = "X" ]; then
+			echo "$VNCVIEWERCMD" "$@" $localhost:$N
+			echo ""
+			$VNCVIEWERCMD "$@" $localhost:$N
+			if [ $? != 0 ]; then
+				echo "vncviewer command failed: $?"
+				if [ "X$secondtry" = "X1" ]; then
+					sleep 2
+					$VNCVIEWERCMD "$@" $localhost:$N
+				fi
+			fi
+		else
+			echo ""
+			echo "NOTE: Press Ctrl-C to terminate viewer LISTEN mode."
+			echo ""
+			N2=$N
+			if [ "X$VNCVIEWER_IS_REALVNC4" = "X1" ]; then
+				N2=`echo "$N2" | sed -e 's/://g'`
+				if [ $N2 -le 200 ]; then
+					N2=`expr $N2 + 5500`
+				fi
+			fi
+			echo "$VNCVIEWERCMD" "$@" -listen $N2
+			echo ""
+			$VNCVIEWERCMD "$@" -listen $N2
+		fi
+
+		exit $?
+	else
+		use2=`findfree 5960`
+		host0=$host
+		port0=$port
+		host=$localhost
+		port=$use
+		use=$use2
+		N=`expr $use - 5900`
+		if [ "X$getport" != "X" ]; then
+			host="$host0"
+			port="$port0"
+		else
+			proxy=""
+		fi
+		if [ "X$ssh_vencrypt_proxy" != "X" ]; then
+			ssh_vencrypt_proxy="vencrypt://$host:$port"
+			if [ "X$proxy" = "X" ]; then
+				proxy=$ssh_vencrypt_proxy
+			else
+				proxy="$proxy,$ssh_vencrypt_proxy"
+			fi
+			Kecho "proxy_now=$proxy"
+			unset PPROXY_LISTEN
+		fi
+	fi
+fi
+
+if [ "X$stunnel_set_here" = "X1" -a "X$showcert" = "X" ]; then
+	if type $STUNNEL > /dev/null 2>&1; then
+		:
+	else
+		echo ""
+		echo "***************************************************************"
+		echo "** Problem finding the Stunnel command '$STUNNEL': **"
+		echo ""
+		type $STUNNEL
+		echo ""
+		echo "** Perhaps you need to install the stunnel/stunnel4 package. **"
+		echo "***************************************************************"
+		echo ""
+		sleep 5
+	fi
+fi
+
+# create the stunnel config file:
+if [ "X$verify" != "X" ]; then
+	if [ -d $verify ]; then
+		verify="CApath = $verify"
+	else
+		verify="CAfile = $verify"
+	fi
+	verify="$verify
+verify = 2"
+fi
+if [ "X$SSVNC_STUNNEL_VERIFY3" != "X" ]; then
+	verify=`echo "$verify" | sed -e 's/verify = 2/verify = 3/'`
+fi
+if [ "X$mycert" != "X" ]; then
+	cert="cert = $mycert"
+fi
+if [ "X$crl" != "X" ]; then
+	if [ -d $crl ]; then
+		crl="CRLpath = $crl"
+	else
+		crl="CRLfile = $crl"
+	fi
+fi
+
+if [ "X$showcert" = "X1" ]; then
+	if [ "X$have_uvnc_dsm_helper_showcert" = "X1" ]; then
+		:
+	elif [ "X$SSVNC_NO_IPV6_PROXY" != "X" ]; then
+		:
+	elif [ "X$ipv6" = "X1" -a "X$proxy" = "X" ]; then
+		proxy="ipv6://$host:$port"
+	fi
+fi
+
+if [ "X$direct_connect" != "X" -a "X$STUNNEL_LISTEN" != "X" ]; then
+	proxy=reverse_direct
+fi
+
+ptmp=""
+if [ "X$proxy" != "X" ]; then
+	ptmp="/tmp/ss_vncviewer${RANDOM}.$$.pl"
+	ptmp=`mytmp "$ptmp"`
+	PPROXY_REMOVE=1; export PPROXY_REMOVE
+	pcode "$ptmp"
+	if [ "X$showcert" != "X1" -a "X$direct_connect" = "X" ]; then
+		if uname | egrep 'Darwin|SunOS' >/dev/null; then
+			vout=`echo "$proxy" | grep -i vencrypt`
+			if [ "X$vout" != "X" -a "X$reverse" = "X1" ]; then
+				# need to exec for reverse vencrypt
+				connect="exec = $ptmp"
+			else
+				# on mac and solaris we need to listen on socket instead of stdio:
+				nd=`findfree 6700`
+				PPROXY_LISTEN=$nd
+				export PPROXY_LISTEN
+				if [ "X$reverse" = "X" ]; then
+					$ptmp &
+				fi
+				sleep 2
+				host="$localhost"
+				port="$nd"
+				connect="connect = $localhost:$nd"
+			fi
+		else
+			# otherwise on unix we can exec it:
+			connect="exec = $ptmp"
+		fi
+	else
+		connect="exec = $ptmp"
+	fi
+else
+	connect="connect = $host:$port"
+fi
+
+# handle showcert case:
+#
+if [ "X$showcert" = "X1" ]; then
+	if [ "X$proxy" != "X" ]; then
+		PPROXY_LISTEN=$use
+		export PPROXY_LISTEN
+		if [ "X$SS_DEBUG" != "X" ]; then
+			$ptmp &
+		else
+			$ptmp 2>/dev/null &
+		fi
+		sleep 1
+		more_sleep=1
+		if uname | grep Linux > /dev/null; then
+			if netstat -ant | grep LISTEN | grep "127.0.0.1:$use" > /dev/null; then
+				more_sleep=""
+			fi
+		elif uname | grep SunOS > /dev/null; then
+			if netstat -an -f inet -P tcp | grep LISTEN | grep "127.0.0.1.$use" > /dev/null; then
+				more_sleep=""
+			fi
+		elif uname | egrep -i 'bsd|darwin' > /dev/null; then
+			if netstat -ant -f inet | grep LISTEN | grep "127.0.0.1.$use" > /dev/null; then
+				more_sleep=""
+			fi
+		fi
+		if [ "X$more_sleep" = "X1" ]; then
+			sleep 1
+		fi
+		host="$localhost"
+		port="$use"
+	fi
+	cipher_args=""
+	if [ "X$ciphers" != "X" ]; then
+		cipher_args=`echo "$ciphers" | sed -e 's/ciphers=/-cipher /'`
+	fi
+	if [ "X$have_uvnc_dsm_helper_showcert" = "X1" ]; then
+		:
+	elif type openssl > /dev/null 2>&1; then
+		:
+	else
+		echo ""
+		echo "********************************************************"
+		echo "** Problem finding the OpenSSL command 'openssl': **" 
+		echo ""
+		type openssl 2>&1
+		echo ""
+		echo "** Perhaps you need to install the 'openssl' package. **"
+		echo "********************************************************"
+		echo ""
+	fi
+	#echo "openssl s_client $cipher_args -connect $host:$port" 
+	if [ "X$reverse" = "X" ]; then
+		if type host > /dev/null 2>/dev/null; then
+			host $host >/dev/null 2>&1
+			host $host >/dev/null 2>&1
+		fi
+		timeout=15
+		if [ "X$SSVNC_FETCH_TIMEOUT" != "X" ]; then
+			timeout=$SSVNC_FETCH_TIMEOUT
+		fi
+		if [ "X$have_uvnc_dsm_helper_showcert" = "X1" ]; then
+			if type pkill >/dev/null 2>&1; then
+				(sleep $timeout; if kill -0 $$; then pkill -TERM -f "ultravnc_dsm_helper.*$host.*$port"; fi) >/dev/null 2>&1 &
+			fi
+			ultravnc_dsm_helper showcert $host:$port 2>&1
+		else
+			if type pkill >/dev/null 2>&1; then
+				(sleep $timeout; if kill -0 $$; then pkill -TERM -f "openssl.*s_client.*$host.*$port"; fi) >/dev/null 2>&1 &
+			fi
+			openssl s_client $cipher_args -prexit -connect $host:$port 2>&1 < /dev/null
+		fi
+		rc=$?
+	else
+		tcert=""
+		if [ "X$mycert" = "X" ]; then
+			tcert=`make_tcert`
+			cert_args="-cert $tcert -CAfile $tcert"
+		else
+			cert_args="-cert $mycert -CAfile $mycert"
+		fi
+		tmp_out=/tmp/showcert_out${RANDOM}.$$
+		tmp_out=`mytmp "$tmp_out"`
+		tmp_err=/tmp/showcert_err${RANDOM}.$$
+		tmp_err=`mytmp "$tmp_err"`
+
+		#echo "openssl s_server $cipher_args $cert_args -accept $port -verify 2 > $tmp_out 2> $tmp_err" 1>&2
+
+		# assume we have perl:
+		check_perl perl
+
+		perl -e "
+			\$p = open(O, \"|openssl s_server $cipher_args $cert_args -accept $port -verify 2 1>$tmp_out 2> $tmp_err\");
+			exit 1 unless \$p;
+			while (1) {
+				sleep 1;
+				if (!open(F, \"<$tmp_out\")) {
+					kill \$p;
+					exit 1;
+				}
+				while (<F>) {
+					if (/RFB 00/) {
+						fsleep(0.25);
+						print O \"RFB 000.000\\n\";
+						fsleep(1.00);
+						kill \$p;
+						fsleep(0.25);
+						exit 0;
+					}
+				}
+				close F;
+			}
+			sub fsleep {
+				select(undef, undef, undef, shift);
+			}
+		";
+
+		echo ""
+		cat $tmp_out
+		echo ""
+		echo "----2----"
+		cat $tmp_err
+		if grep BEGIN.CERTIFICATE $tmp_out >/dev/null; then
+			rc=0
+		else
+			rc=1
+		fi
+
+		rm -f $tmp_out $tmp_err
+	fi
+	if [ "X$SSVNC_PREDIGESTED_HANDSHAKE" != "X" ]; then
+		rm -f $SSVNC_PREDIGESTED_HANDSHAKE
+	fi
+	if [ "X$SSVNC_SHOWCERT_EXIT_0" = "X1" ]; then
+		exit 0
+	else
+		exit $rc
+	fi
+fi
+
+# handle direct connect case:
+#
+if [ "X$direct_connect" != "X" ]; then
+	if [ "X$SSVNC_ULTRA_DSM" != "X" ]; then
+		SSVNC_NO_ENC_WARN=1
+		echo ""
+		echo "Using UltraVNC DSM Plugin key for encryption:"
+		echo ""
+		ustr=`echo "$SSVNC_ULTRA_DSM" | sed -e 's/pw=[^ ]*/pw=******/g'`
+		echo "  $ustr PORT HOST:PORT"
+		echo ""
+	elif [ "X$getport" = "X" ]; then
+		echo ""
+		echo "Running viewer for direct connection:"
+		if echo X"$@" | grep chatonly > /dev/null; then
+			:
+		else
+			echo ""
+			echo "** WARNING: THERE WILL BE NO SSL OR SSH ENCRYPTION **"
+			echo ""
+		fi
+	fi
+	x=""
+	if [ "X$SSVNC_NO_ENC_WARN" != "X" ]; then
+		if [ "X$getport" = "X" ]; then
+			sleep 1
+		fi
+	elif type printf > /dev/null 2>&1; then
+		printf  "Are you sure you want to continue? [y]/n "
+		read x
+	else
+		echo -n "Are you sure you want to continue? [y]/n "
+		read x
+	fi
+	if [ "X$x" = "Xn" ]; then
+		exit 1
+	fi
+	echo ""
+	if [ "X$ptmp" != "X" ]; then
+		if [ "X$reverse" = "X" ]; then
+			PPROXY_LISTEN=$use
+			export PPROXY_LISTEN
+		else
+			if [ "X$proxy" = "Xreverse_direct" ]; then
+				PPROXY_LISTEN="$STUNNEL_LISTEN:`expr 5500 + $disp`"
+				PPROXY_DEST="$localhost:$use"
+				PPROXY_PROXY="ipv6://$localhost:$use"	# not always ipv6..
+				export PPROXY_LISTEN PPROXY_DEST PPROXY_PROXY
+				pps=1
+			else
+				PPROXY_REVERSE="$localhost:$use"
+				export PPROXY_LISTEN
+				pps=3
+			fi
+			if [ "X$SSVNC_LISTEN_ONCE" != "X1" ]; then
+				PPROXY_LOOP_THYSELF=`mytmp "/tmp/pproxy_loop_thyself.${RANDOM}.$$"`
+				export PPROXY_LOOP_THYSELF
+				pps=2
+			fi
+			if [ "X$SSVNC_EXTRA_SLEEP" != "X" ]; then
+				pps=`expr $pps + $SSVNC_EXTRA_SLEEP`
+			fi
+			PPROXY_SLEEP=$pps; export PPROXY_SLEEP;
+			PPROXY_KILLPID=+1; export PPROXY_KILLPID;
+		fi
+
+		$ptmp &
+
+		if [ "X$reverse" = "X" ]; then
+			#sleep 2
+			#echo T sleep 1
+			sleep 1
+		fi
+		host="$localhost"
+		disp="$N"
+		port=`expr $disp + 5900`
+	fi
+	if [ "X$SSVNC_EXTRA_SLEEP" != "X" ]; then
+		echo "T sleep $SSVNC_EXTRA_SLEEP"
+		sleep $SSVNC_EXTRA_SLEEP
+	fi
+	if [ "X$SSVNC_EXTRA_COMMAND" != "X" ]; then
+		(sh -c "$SSVNC_EXTRA_COMMAND") &
+		echo "($SSVNC_EXTRA_COMMAND) &"; echo
+	fi
+	if [ "X$reverse" = "X" ]; then
+		hostdisp="$host:$disp"
+		if [ "X$SSVNC_ULTRA_DSM" != "X" ]; then
+			if [ "X$SSVNC_USE_OURS" = "X1" ]; then
+				hostdisp="exec=$SSVNC_ULTRA_DSM 0 $host:$port"
+			else
+				pf=`findfree 5970`
+				cmd="$SSVNC_ULTRA_DSM -$pf $host:$port"
+				pf=`expr $pf - 5900`
+				hostdisp="$localhost:$pf"
+				ustr=`echo "$cmd" | sed -e 's/pw=[^ ]*/pw=******/g'`
+				echo "Running:"
+				echo
+				echo "$ustr &"
+				echo
+				$cmd &
+				dsm_pid=$!
+				sleep 2
+			fi
+		fi
+		hostdisp2=`echo "$hostdisp" | sed -e 's/pw=[^ ]*/pw=******/g'`
+		echo "$VNCVIEWERCMD" "$@" "$hostdisp2"
+		trap "final" 0 2 15
+		echo ""
+		$VNCVIEWERCMD "$@" "$hostdisp"
+		if [ $? != 0 ]; then
+			echo "vncviewer command failed: $?"
+			if [ "X$secondtry" = "X1" ]; then
+				sleep 2
+				$VNCVIEWERCMD "$@" "$hostdisp"
+			fi
+		fi
+	else
+		echo ""
+		echo "NOTE: Press Ctrl-C to terminate viewer LISTEN mode."
+		echo ""
+		trap "final" 0 2 15
+		if [ "X$SSVNC_ULTRA_DSM" != "X" ]; then
+			if [ "X$SSVNC_LISTEN_ONCE" = "X1" ]; then
+				echo "NOTE: The ultravnc_dsm_helper only runs once.  So after the first LISTEN"
+				echo "      ends you must restart the Listening mode.  You may also need to"
+				echo "      Press Ctrl-C to stop the viewer and restart for another connection."
+				echo ""
+			fi
+			#SSVNC_LISTEN_ONCE=1; export SSVNC_LISTEN_ONCE
+			VNCVIEWER_LISTEN_LOCALHOST=1
+			export VNCVIEWER_LISTEN_LOCALHOST
+			dport=`expr 5500 + $disp`
+			cmd="$SSVNC_ULTRA_DSM $dport $localhost:$use"
+			ustr=`echo "$cmd" | sed -e 's/pw=[^ ]*/pw=******/g'`
+			echo "Running:"
+			echo
+			echo "$ustr &"
+			echo
+			if [ "X$SSVNC_LISTEN_ONCE" = "X1" ]; then
+				$cmd &
+				dsm_pid=$!
+			else
+				while [ 1 ]; do $cmd; sleep 1; done &
+				dsm_pid=$!
+			fi
+			sleep 2
+			disp=$use
+			if [ $disp -ge 5500 ]; then
+				disp=`expr $disp - 5500`
+			fi
+		fi
+		disp2=$disp
+		if [ "X$VNCVIEWER_IS_REALVNC4" = "X1" ]; then
+			disp2=`echo "$disp2" | sed -e 's/://g'`
+			if [ $disp2 -le 200 ]; then
+				disp2=`expr $disp2 + 5500`
+			fi
+		fi
+		echo "$VNCVIEWERCMD" "$@" -listen $disp2
+		echo ""
+		$VNCVIEWERCMD "$@" -listen $disp2
+		if [ "X$PPROXY_LOOP_THYSELF" != "X" ]; then
+			rm -f $PPROXY_LOOP_THYSELF
+		fi
+	fi
+	exit $?
+fi
+
+tmp_cfg=/tmp/ss_vncviewer${RANDOM}.$$
+tmp_cfg=`mytmp "$tmp_cfg"`
+
+stunnel_exec=""
+if [ "X$SSVNC_USE_OURS" != "X1" ]; then
+	:
+elif echo $STUNNEL_EXTRA_SVC_OPTS | grep '#stunnel-exec' > /dev/null; then
+	stunnel_exec="#"
+fi
+
+if [ "X$reverse" = "X" ]; then
+
+	if echo "$proxy" | grep "^repeater://" > /dev/null; then
+		if [ "X$cert" = "XBUILTIN" ]; then
+			ttcert=`make_tcert`
+			cert="cert = $ttcert"
+		fi
+		# Note for listen mode, an empty cert will cause stunnel to fail.
+		# The ssvnc gui will have already taken care of this.
+	fi
+
+	cat > "$tmp_cfg" <<END
+foreground = yes
+pid =
+client = yes
+debug = $stunnel_debug
+$ciphers
+$STUNNEL_EXTRA_OPTS
+$STUNNEL_EXTRA_OPTS_USER
+$cert
+$crl
+$verify
+
+${stunnel_exec}[vnc_stunnel]
+${stunnel_exec}accept = $localhost:$use
+$connect
+$STUNNEL_EXTRA_SVC_OPTS
+$STUNNEL_EXTRA_SVC_OPTS_USER
+
+END
+
+else
+	# REVERSE case:
+
+	stunnel_exec=""	# doesn't work for listening.
+
+	p2=`expr 5500 + $N`
+	connect="connect = $localhost:$p2"
+	if [ "X$cert" = "XBUILTIN" ]; then
+		ttcert=`make_tcert`
+		cert="cert = $ttcert"
+	fi
+	# Note for listen mode, an empty cert will cause stunnel to fail.
+	# The ssvnc gui will have already taken care of this.
+
+
+	hloc=""
+	if [ "X$use_ssh" = "X1" ]; then
+		hloc="$localhost:"
+	elif [ "X$STUNNEL_LISTEN" != "X" ]; then
+		hloc="$STUNNEL_LISTEN:"
+	fi
+	if echo "$proxy" | grep -i '^vencrypt:' > /dev/null; then
+		hloc="$localhost:"
+		pv=`findfree 5570`
+		proxy="vencrypt:$pv:$port"
+		port=$pv
+		if [ "X$anondh_set" = "X1" ]; then
+			# not needed for ANONDH in this mode
+			#ciphers="ciphers = ADH:@STRENGTH"
+			:
+		fi
+	fi
+	cat > "$tmp_cfg" <<END
+foreground = yes
+pid =
+client = no
+debug = $stunnel_debug
+$ciphers
+$STUNNEL_EXTRA_OPTS
+$STUNNEL_EXTRA_OPTS_USER
+$cert
+$crl
+$verify
+
+[vnc_stunnel]
+accept = $hloc$port
+$connect
+$STUNNEL_EXTRA_SVC_OPTS
+$STUNNEL_EXTRA_SVC_OPTS_USER
+
+END
+
+fi
+
+echo ""
+echo "Using this stunnel configuration:"
+echo ""
+cat "$tmp_cfg" | uniq
+echo ""
+if egrep -i '^[ 	]*(CApath|CAfile) =' "$tmp_cfg" > /dev/null ; then
+	:
+else
+	echo "** WARNING: THE STUNNEL CONFIG HAS NO SERVER CERTIFICATE SPECIFIED       **"
+	echo "** WARNING: (the CApath or CAfile stunnel option) THE VNC SERVER WILL    **"
+	echo "** WARNING: NOT BE AUTHENTICATED. A MAN-IN-THE-MIDDLE ATTACK IS POSSIBLE **"
+	echo ""
+fi
+sleep 1
+
+if [ "X$stunnel_exec" = "X" ]; then
+	echo ""
+	echo "Running stunnel:"
+	echo "$STUNNEL $tmp_cfg"
+	st=`echo "$STUNNEL" | awk '{print $1}'`
+	$st -help > /dev/null 2>&1
+	$STUNNEL "$tmp_cfg" < /dev/tty > /dev/tty &
+	stunnel_pid=$!
+	echo ""
+
+	# pause here to let the user supply a possible passphrase for the
+	# mycert key:
+	if [ "X$mycert" != "X" ]; then
+		nsl=10
+		dsl=0
+		if [ ! -f $mycert ]; then
+			dsl=0
+		elif grep -i 'Proc-Type.*ENCRYPTED' "$mycert" > /dev/null 2>/dev/null; then
+			dsl=1
+		fi
+		if [ "X$dsl" = "X1" ]; then
+			echo ""
+			echo "(** pausing $nsl secs for possible certificate passphrase dialog **)"
+			echo ""
+			sleep $nsl
+			echo "(** done pausing for passphrase **)"
+			echo ""
+		fi
+	fi
+	#echo T sleep 1
+	sleep 1
+	rm -f "$tmp_cfg"
+fi
+
+
+echo ""
+if [ "X$SSVNC_EXTRA_SLEEP" != "X" ]; then
+	echo "sleep $SSVNC_EXTRA_SLEEP"
+	sleep $SSVNC_EXTRA_SLEEP
+fi
+if [ "X$SSVNC_EXTRA_COMMAND" != "X" ]; then
+	(sh -c "$SSVNC_EXTRA_COMMAND") &
+	echo "($SSVNC_EXTRA_COMMAND) &"; echo
+fi
+
+if [ "X$reverse" = "X" ]; then
+	if [ "X$NEED_VENCRYPT_VIEWER_BRIDGE" = "X1" -a "X$ptmp" != "X" ] ; then
+		port1=`expr 5900 + $N`		# stunnel port
+		port2=`findfree 5970`		# bridge port (viewer connects to it.)
+		N=`expr $port2 - 5900`
+		env PPROXY_REMOVE=0 PPROXY_SLEEP=0 PPROXY_VENCRYPT_VIEWER_BRIDGE="$port2,$port1" $ptmp &
+		sleep 1
+	fi
+	echo "Running viewer:"
+	vnc_hp=$localhost:$N
+	if [ "X$stunnel_exec" != "X" ]; then
+		vnc_hp="exec=$STUNNEL $tmp_cfg"
+	fi
+	echo "$VNCVIEWERCMD" "$@" "$vnc_hp"
+	trap "final" 0 2 15
+	echo ""
+	$VNCVIEWERCMD "$@" "$vnc_hp"
+	if [ $? != 0 ]; then
+		echo "vncviewer command failed: $?"
+		if [ "X$secondtry" = "X1" ]; then
+			sleep 2
+			$VNCVIEWERCMD "$@" "$vnc_hp"
+		fi
+	fi
+else
+	echo "Running viewer:"
+	echo ""
+	echo "NOTE: Press Ctrl-C to terminate viewer LISTEN mode."
+	echo ""
+	trap "final" 0 2 15
+	N2=$N
+	N2_trim=`echo "$N2" | sed -e 's/://g'`
+	if [ $N2_trim -le 200 ]; then
+		N2_trim=`expr $N2_trim + 5500`
+	fi
+	if [ "X$proxy" != "X" ]; then
+		if echo "$proxy" | grep -i '^vencrypt:' > /dev/null; then
+			pstunnel=`echo "$proxy" | awk -F: '{print $2}'`
+			plisten=`echo "$proxy" | awk -F: '{print $3}'`
+			IF=INADDR_ANY
+			if [ "X$STUNNEL_LISTEN" != "X" ]; then
+				IF=$STUNNEL_LISTEN
+			fi
+			PPROXY_VENCRYPT_REVERSE=1; export PPROXY_VENCRYPT_REVERSE
+			PPROXY_LISTEN="$IF:$plisten"; export PPROXY_LISTEN
+			PPROXY_PROXY="vencrypt://$localhost:$pstunnel"; export PPROXY_PROXY
+			PPROXY_DEST="$localhost:$pstunnel"; export PPROXY_DEST
+			STUNNEL_ONCE=1; export STUNNEL_ONCE
+			STUNNEL_MAX_CLIENTS=1; export STUNNEL_MAX_CLIENTS
+			if [ "X$NEED_VENCRYPT_VIEWER_BRIDGE" = "X1" -a "X$ptmp" != "X" ] ; then
+				port1=`expr 5500 + $N2`
+				port2=`findfree 5580`
+				N2=`expr $port2 - 5500`
+				N2_trim=`echo "$N2" | sed -e 's/://g'`
+				if [ $N2_trim -le 200 ]; then
+					N2_trim=`expr $N2_trim + 5500`
+				fi
+				if [ "X$SSVNC_LISTEN_ONCE" != "X1" ]; then
+					PPROXY_LOOP_THYSELF=`mytmp "/tmp/pproxy_loop_thyself1.${RANDOM}.$$"`
+					export PPROXY_LOOP_THYSELF
+					PPROXY_LOOP_THYSELF0=$PPROXY_LOOP_THYSELF
+				fi
+				env PPROXY_REMOVE=0 PPROXY_SLEEP=0 PPROXY_VENCRYPT_VIEWER_BRIDGE="-$port1,$port2" $ptmp &
+				sleep 1
+			fi
+		else
+			PPROXY_REVERSE="$localhost:$port"; export PPROXY_REVERSE
+			PPROXY_SLEEP=1; export PPROXY_SLEEP;
+		fi
+		PPROXY_KILLPID=+1; export PPROXY_KILLPID;
+		if [ "X$SSVNC_LISTEN_ONCE" != "X1" ]; then
+			PPROXY_LOOP_THYSELF=`mytmp "/tmp/pproxy_loop_thyself2.${RANDOM}.$$"`
+			export PPROXY_LOOP_THYSELF
+		fi
+		$ptmp &
+		# Important to have no extra pids generated between here and VNCVIEWERCMD
+	fi
+	if [ "X$VNCVIEWER_IS_REALVNC4" = "X1" ]; then
+		N2=$N2_trim
+	fi
+	echo "$VNCVIEWERCMD" "$@" -listen $N2
+	echo ""
+	$VNCVIEWERCMD "$@" -listen $N2
+
+	if [ "X$PPROXY_LOOP_THYSELF" != "X" ]; then
+		rm -f $PPROXY_LOOP_THYSELF
+	fi
+	if [ "X$PPROXY_LOOP_THYSELF0" != "X" ]; then
+		rm -f $PPROXY_LOOP_THYSELF0
+	fi
+fi
+
+sleep 1

+ 28 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/ultra.vnc

@@ -0,0 +1,28 @@
+<!-- 
+     index.vnc - default HTML page for TightVNC Java viewer applet, to be
+     used with Xvnc. On any file ending in .vnc, the HTTP server embedded in
+     Xvnc will substitute the following variables when preceded by a dollar:
+     USER, DESKTOP, DISPLAY, APPLETWIDTH, APPLETHEIGHT, WIDTH, HEIGHT, PORT,
+     PARAMS. Use two dollar signs ($$) to get a dollar sign in the generated
+     HTML page.
+
+     NOTE: the $PARAMS variable is not supported by the standard VNC, so
+     make sure you have TightVNC on the server side, if you're using this
+     variable.
+-->
+
+<HTML>
+<TITLE>
+$USER's $DESKTOP desktop ($DISPLAY)
+</TITLE>
+<APPLET CODE=VncViewer.class ARCHIVE=UltraViewerSSL.jar
+        WIDTH=$APPLETWIDTH HEIGHT=$APPLETHEIGHT>
+<param name=PORT value=$PORT>
+<param name="Open New Window" value=yes>
+<param name="ignoreMSLogonCheck" value=yes>
+<param name="delayAuthPanel" value=yes>
+$PARAMS
+</APPLET>
+<BR>
+<A href="http://www.karlrunge.com/x11vnc">x11vnc site</A>
+</HTML>

+ 28 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/ultraproxy.vnc

@@ -0,0 +1,28 @@
+<!-- 
+     index.vnc - default HTML page for TightVNC Java viewer applet, to be
+     used with Xvnc. On any file ending in .vnc, the HTTP server embedded in
+     Xvnc will substitute the following variables when preceded by a dollar:
+     USER, DESKTOP, DISPLAY, APPLETWIDTH, APPLETHEIGHT, WIDTH, HEIGHT, PORT,
+     PARAMS. Use two dollar signs ($$) to get a dollar sign in the generated
+     HTML page.
+
+     NOTE: the $PARAMS variable is not supported by the standard VNC, so
+     make sure you have TightVNC on the server side, if you're using this
+     variable.
+-->
+
+<HTML>
+<TITLE>
+$USER's $DESKTOP desktop ($DISPLAY)
+</TITLE>
+<APPLET CODE=VncViewer.class ARCHIVE=SignedUltraViewerSSL.jar
+        WIDTH=$APPLETWIDTH HEIGHT=$APPLETHEIGHT>
+<param name="Open New Window" value=yes>
+<param name="ignoreMSLogonCheck" value=yes>
+<param name="delayAuthPanel" value=yes>
+<param name=VNCSERVERPORT value=$PORT>
+$PARAMS
+</APPLET>
+<BR>
+<A href="http://www.karlrunge.com/x11vnc">x11vnc site</A>
+</HTML>

+ 28 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/java-applet/ssl/ultrasigned.vnc

@@ -0,0 +1,28 @@
+<!-- 
+     index.vnc - default HTML page for TightVNC Java viewer applet, to be
+     used with Xvnc. On any file ending in .vnc, the HTTP server embedded in
+     Xvnc will substitute the following variables when preceded by a dollar:
+     USER, DESKTOP, DISPLAY, APPLETWIDTH, APPLETHEIGHT, WIDTH, HEIGHT, PORT,
+     PARAMS. Use two dollar signs ($$) to get a dollar sign in the generated
+     HTML page.
+
+     NOTE: the $PARAMS variable is not supported by the standard VNC, so
+     make sure you have TightVNC on the server side, if you're using this
+     variable.
+-->
+
+<HTML>
+<TITLE>
+$USER's $DESKTOP desktop ($DISPLAY)
+</TITLE>
+<APPLET CODE=VncViewer.class ARCHIVE=SignedUltraViewerSSL.jar
+        WIDTH=$APPLETWIDTH HEIGHT=$APPLETHEIGHT>
+<param name=PORT value=$PORT>
+<param name="Open New Window" value=yes>
+<param name="ignoreMSLogonCheck" value=yes>
+<param name="delayAuthPanel" value=yes>
+$PARAMS
+</APPLET>
+<BR>
+<A href="http://www.karlrunge.com/x11vnc">x11vnc site</A>
+</HTML>

+ 35 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/LICENSE.txt

@@ -0,0 +1,35 @@
+noVNC is Copyright (C) 2011 Joel Martin <github@martintribe.org>
+
+Some portions of noVNC are copyright to their individual authors.
+Please refer to the individual source files and/or to the noVNC commit
+history: https://github.com/kanaka/noVNC/commits/master
+
+noVNC is licensed under the LGPL (GNU Lesser General Public License)
+version 3 with the following exceptions (all LGPL-3 compatible):
+
+    include/input.js           : LGPL-2 or any later version
+   
+    include/base64.js          : Dual GPL-2 or LGPL-2.1
+   
+    include/des.js             : Various BSD style licenses
+
+    include/jsunzip.js         : zlib/libpng license
+
+    include/web-socket-js/     : New BSD license. Source code at
+                                 http://github.com/gimite/web-socket-js
+
+    include/Orbitron*          : SIL Open Font License 1.1
+                                 (Copyright 2009 Matt McInerney)
+
+    images/                    : Creative Commons Attribution-ShareAlike
+                                 http://creativecommons.org/licenses/by-sa/3.0/
+
+The license texts are included at:
+    docs/LICENSE.LGPL-3 and
+    docs/LICENSE.GPL-3
+    docs/LICENSE.OFL-1.1
+
+Or alternatively the license texts may be found here:
+    http://www.gnu.org/licenses/lgpl.html and
+    http://www.gnu.org/licenses/gpl.html
+    http://scripts.sil.org/OFL

+ 102 - 0
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/README.md

@@ -0,0 +1,102 @@
+## noVNC: HTML5 VNC Client
+
+
+### Description
+
+noVNC is a HTML5 VNC client that runs well in any modern browser
+including mobile browsers (iPhone/iPad and Android).
+
+Notable commits, announcements and news are posted to
+@<a href="http://www.twitter.com/noVNC">noVNC</a>
+
+There are many companies/projects that have integrated noVNC into
+their products including: [Ganeti Web Manager](http://code.osuosl.org/projects/ganeti-webmgr), [Archipel](http://archipelproject.org), [openQRM](http://www.openqrm.com/), [OpenNode](http://www.opennodecloud.com/), [OpenStack](http://www.openstack.org), [Broadway (HTML5 GDK/GTK+ backend)](http://blogs.gnome.org/alexl/2011/03/15/gtk-html-backend-update/), [OpenNebula](http://opennebula.org/), [CloudSigma](http://www.cloudsigma.com/), [Zentyal (formerly eBox)](http://www.zentyal.org/), [SlapOS](http://www.slapos.org), [Intel MeshCentral](https://meshcentral.com), [Amahi](http://amahi.org), [Brightbox](http://brightbox.com/), [Foreman](http://theforeman.org) and [LibVNCServer](http://libvncserver.sourceforge.net). See [this wiki page](https://github.com/kanaka/noVNC/wiki/ProjectsCompanies-using-noVNC) for more info and links.
+
+
+### Features
+
+* Supports all modern browsers including mobile (iOS, Android)
+* Supported VNC encodings: raw, copyrect, rre, hextile, tight, tightPNG
+* WebSocket SSL/TLS encryption (i.e. "wss://") support
+* 24-bit true color and 8 bit colour mapped
+* Supports desktop resize notification/pseudo-encoding
+* Local or remote cursor
+* Clipboard copy/paste
+* Clipping or scolling modes for large remote screens
+* Easy site integration and theming (3 example themes included)
+* Licensed under the [LGPLv3](http://www.gnu.org/licenses/lgpl.html)
+
+### Screenshots
+
+Running in Chrome before and after connecting:
+
+<img src="http://kanaka.github.com/noVNC/img/noVNC-5.png" width=400>&nbsp;<img src="http://kanaka.github.com/noVNC/img/noVNC-7.jpg" width=400>
+
+See more screenshots <a href="http://kanaka.github.com/noVNC/screenshots.html">here</a>.
+
+
+### Browser Requirements
+
+* HTML5 Canvas (with createImageData): Chrome, Firefox 3.6+, iOS
+  Safari, Opera 11+, Internet Explorer 9+, etc.
+
+* HTML5 WebSockets: For browsers that do not have builtin
+  WebSockets support, the project includes
+  <a href="http://github.com/gimite/web-socket-js">web-socket-js</a>,
+  a WebSockets emulator using Adobe Flash. iOS 4.2+ has built-in
+  WebSocket support.
+
+* Fast Javascript Engine: this is not strictly a requirement, but
+  without a fast Javascript engine, noVNC might be painfully slow.
+
+* I maintain a more detailed browser compatibility list <a
+  href="https://github.com/kanaka/noVNC/wiki/Browser-support">here</a>.
+
+
+### Server Requirements
+
+Unless you are using a VNC server with support for WebSockets
+connections (such as [x11vnc/libvncserver](http://libvncserver.sourceforge.net/)),
+you need to use a WebSockets to TCP socket proxy. There is
+a python proxy included ('websockify').
+
+
+### Quick Start
+
+* Use the launch script to start a mini-webserver and the WebSockets
+  proxy (websockify). The `--vnc` option is used to specify the location of
+  a running VNC server:
+
+    `./utils/launch.sh --vnc localhost:5901`
+
+* Point your browser to the cut-and-paste URL that is output by the
+  launch script. Enter a password if the VNC server has one
+  configured. Hit the Connect button and enjoy!
+
+
+### Other Pages
+
+* [Advanced Usage](https://github.com/kanaka/noVNC/wiki/Advanced-usage). Generating an SSL
+  certificate, starting a VNC server, advanced websockify usage, etc.
+
+* [Integrating noVNC](https://github.com/kanaka/noVNC/wiki/Integration) into existing projects.
+
+* [Troubleshooting noVNC](https://github.com/kanaka/noVNC/wiki/Troubleshooting) problems.
+
+
+### Authors/Contributors
+
+* noVNC : Joel Martin (github.com/kanaka)
+    * New UI and Icons : Chris Gordon
+    * Original Logo : Michael Sersen
+    * tight encoding : Michael Tinglof (Mercuri.ca)
+
+* Included libraries:
+    * web-socket-js : Hiroshi Ichikawa (github.com/gimite/web-socket-js)
+    * as3crypto : Henri Torgemane (code.google.com/p/as3crypto)
+    * base64 : Martijn Pieters (Digital Creations 2), Samuel Sieb (sieb.net)
+    * jsunzip : Erik Moller (github.com/operasoftware/jsunzip),
+    * tinflate : Joergen Ibsen (ibsensoftware.com)
+    * DES : Dave Zimmerman (Widget Workshop), Jef Poskanzer (ACME Labs)
+
+

+ 0 - 56
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/error-handler.js

@@ -1,56 +0,0 @@
-// NB: this should *not* be included as a module until we have
-// native support in the browsers, so that our error handler
-// can catch script-loading errors.
-
-
-(function(){
-    "use strict";
-
-    // Fallback for all uncought errors
-    function handleError (event, err) {
-        try {
-            var msg = document.getElementById('noVNC_fallback_errormsg');
-
-            // Only show the initial error
-            if (msg.hasChildNodes()) {
-                return false;
-            }
-
-            var div = document.createElement("div");
-            div.classList.add('noVNC_message');
-            div.appendChild(document.createTextNode(event.message));
-            msg.appendChild(div);
-
-            if (event.filename) {
-                div = document.createElement("div");
-                div.className = 'noVNC_location';
-                var text = event.filename;
-                if (event.lineno !== undefined) {
-                    text += ":" + event.lineno;
-                    if (event.colno !== undefined) {
-                        text += ":" + event.colno;
-                    }
-                }
-                div.appendChild(document.createTextNode(text));
-                msg.appendChild(div);
-            }
-
-            if (err && (err.stack !== undefined)) {
-                div = document.createElement("div");
-                div.className = 'noVNC_stack';
-                div.appendChild(document.createTextNode(err.stack));
-                msg.appendChild(div);
-            }
-
-            document.getElementById('noVNC_fallback_error')
-                .classList.add("noVNC_open");
-        } catch (exc) {
-            document.write("noVNC encountered an error.");
-        }
-        // Don't return true since this would prevent the error
-        // from being printed to the browser console.
-        return false;
-    }
-    window.addEventListener('error', function (evt) { handleError(evt, evt.error); });
-    window.addEventListener('unhandledrejection', function (evt) { handleError(evt.reason, evt.reason); });
-})();

+ 0 - 92
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/alt.svg

@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="alt.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="16"
-     inkscape:cx="18.205425"
-     inkscape:cy="17.531398"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <g
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:48px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'Sans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       id="text5290">
-      <path
-         d="m 9.9560547,1042.3329 -2.9394531,0 -0.4638672,1.3281 -1.8896485,0 2.7001953,-7.29 2.241211,0 2.7001958,7.29 -1.889649,0 -0.4589843,-1.3281 z m -2.4707031,-1.3526 1.9970703,0 -0.9960938,-2.9003 -1.0009765,2.9003 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5340" />
-      <path
-         d="m 13.188477,1036.0634 1.748046,0 0,7.5976 -1.748046,0 0,-7.5976 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5342" />
-      <path
-         d="m 18.535156,1036.6395 0,1.5528 1.801758,0 0,1.25 -1.801758,0 0,2.3193 q 0,0.3809 0.151367,0.5176 0.151368,0.1318 0.600586,0.1318 l 0.898438,0 0,1.25 -1.499024,0 q -1.035156,0 -1.469726,-0.4297 -0.429688,-0.4345 -0.429688,-1.4697 l 0,-2.3193 -0.86914,0 0,-1.25 0.86914,0 0,-1.5528 1.748047,0 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5344" />
-    </g>
-  </g>
-</svg>

+ 0 - 106
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/clipboard.svg

@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="clipboard.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="15.366606"
-     inkscape:cy="16.42981"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 9,6 6,6 C 5.4459889,6 5,6.4459889 5,7 l 0,13 c 0,0.554011 0.4459889,1 1,1 l 13,0 c 0.554011,0 1,-0.445989 1,-1 L 20,7 C 20,6.4459889 19.554011,6 19,6 l -3,0"
-       transform="translate(0,1027.3622)"
-       id="rect6083"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cssssssssc" />
-    <rect
-       style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect6085"
-       width="7"
-       height="4"
-       x="9"
-       y="1031.3622"
-       ry="1.00002" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.50196081"
-       d="m 8.5071212,1038.8622 7.9999998,0"
-       id="path6087"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.50196081"
-       d="m 8.5071212,1041.8622 3.9999998,0"
-       id="path6089"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.50196081"
-       d="m 8.5071212,1044.8622 5.9999998,0"
-       id="path6091"
-       inkscape:connector-curvature="0" />
-  </g>
-</svg>

+ 0 - 96
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/connect.svg

@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="connect.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="37.14834"
-     inkscape:cy="1.9525926"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <g
-       id="g5103"
-       transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,-729.15757,315.8823)">
-      <path
-         sodipodi:nodetypes="cssssc"
-         inkscape:connector-curvature="0"
-         id="rect5096"
-         d="m 11,1040.3622 -5,0 c -1.108,0 -2,-0.892 -2,-2 l 0,-4 c 0,-1.108 0.892,-2 2,-2 l 5,0"
-         style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-      <path
-         style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         d="m 14,1032.3622 5,0 c 1.108,0 2,0.892 2,2 l 0,4 c 0,1.108 -0.892,2 -2,2 l -5,0"
-         id="path5099"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cssssc" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path5101"
-         d="m 9,1036.3622 7,0"
-         style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-    </g>
-  </g>
-</svg>

+ 0 - 96
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/ctrl.svg

@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="ctrl.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="16"
-     inkscape:cx="18.205425"
-     inkscape:cy="17.531398"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <g
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:48px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'Sans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       id="text5290">
-      <path
-         d="m 9.1210938,1043.1898 q -0.5175782,0.2686 -1.0791016,0.4053 -0.5615235,0.1367 -1.171875,0.1367 -1.8212891,0 -2.8857422,-1.0156 -1.0644531,-1.0205 -1.0644531,-2.7637 0,-1.748 1.0644531,-2.7637 1.0644531,-1.0205 2.8857422,-1.0205 0.6103515,0 1.171875,0.1368 0.5615234,0.1367 1.0791016,0.4052 l 0,1.5088 q -0.522461,-0.3564 -1.0302735,-0.5224 -0.5078125,-0.1661 -1.0693359,-0.1661 -1.0058594,0 -1.5820313,0.6446 -0.5761719,0.6445 -0.5761719,1.7773 0,1.1279 0.5761719,1.7725 0.5761719,0.6445 1.5820313,0.6445 0.5615234,0 1.0693359,-0.166 0.5078125,-0.166 1.0302735,-0.5225 l 0,1.5088 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5370" />
-      <path
-         d="m 12.514648,1036.5687 0,1.5528 1.801758,0 0,1.25 -1.801758,0 0,2.3193 q 0,0.3809 0.151368,0.5176 0.151367,0.1318 0.600586,0.1318 l 0.898437,0 0,1.25 -1.499023,0 q -1.035157,0 -1.469727,-0.4297 -0.429687,-0.4345 -0.429687,-1.4697 l 0,-2.3193 -0.8691411,0 0,-1.25 0.8691411,0 0,-1.5528 1.748046,0 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5372" />
-      <path
-         d="m 19.453125,1039.6107 q -0.229492,-0.1074 -0.458984,-0.1562 -0.22461,-0.054 -0.454102,-0.054 -0.673828,0 -1.040039,0.4345 -0.361328,0.4297 -0.361328,1.2354 l 0,2.5195 -1.748047,0 0,-5.4687 1.748047,0 0,0.8984 q 0.336914,-0.5371 0.771484,-0.7813 0.439453,-0.249 1.049805,-0.249 0.08789,0 0.19043,0.01 0.102539,0 0.297851,0.029 l 0.0049,1.582 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5374" />
-      <path
-         d="m 20.332031,1035.9926 1.748047,0 0,7.5976 -1.748047,0 0,-7.5976 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5376" />
-    </g>
-  </g>
-</svg>

+ 0 - 100
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/ctrlaltdel.svg

@@ -1,100 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="ctrlaltdel.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="8"
-     inkscape:cx="11.135667"
-     inkscape:cy="16.407428"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <rect
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect5253"
-       width="5"
-       height="5.0000172"
-       x="16"
-       y="1031.3622"
-       ry="1.0000174" />
-    <rect
-       y="1043.3622"
-       x="4"
-       height="5.0000172"
-       width="5"
-       id="rect5255"
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       ry="1.0000174" />
-    <rect
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect5257"
-       width="5"
-       height="5.0000172"
-       x="13"
-       y="1043.3622"
-       ry="1.0000174" />
-  </g>
-</svg>

+ 0 - 94
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/disconnect.svg

@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="disconnect.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="16"
-     inkscape:cx="25.05707"
-     inkscape:cy="11.594858"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="false">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <g
-       id="g5171"
-       transform="translate(-24.062499,-6.15775e-4)">
-      <path
-         id="path5110"
-         transform="translate(0,1027.3622)"
-         d="m 39.744141,3.4960938 c -0.769923,0 -1.539607,0.2915468 -2.121094,0.8730468 l -2.566406,2.5664063 1.414062,1.4140625 2.566406,-2.5664063 c 0.403974,-0.404 1.010089,-0.404 1.414063,0 l 2.828125,2.828125 c 0.40398,0.4039 0.403907,1.0101621 0,1.4140629 l -2.566406,2.566406 1.414062,1.414062 2.566406,-2.566406 c 1.163041,-1.1629 1.162968,-3.0791874 0,-4.2421874 L 41.865234,4.3691406 C 41.283747,3.7876406 40.514063,3.4960937 39.744141,3.4960938 Z M 39.017578,9.015625 a 1.0001,1.0001 0 0 0 -0.6875,0.3027344 l -0.445312,0.4453125 1.414062,1.4140621 0.445313,-0.445312 A 1.0001,1.0001 0 0 0 39.017578,9.015625 Z m -6.363281,0.7070312 a 1.0001,1.0001 0 0 0 -0.6875,0.3027348 L 28.431641,13.5625 c -1.163042,1.163 -1.16297,3.079187 0,4.242188 l 2.828125,2.828124 c 1.162974,1.163101 3.079213,1.163101 4.242187,0 l 3.535156,-3.535156 a 1.0001,1.0001 0 1 0 -1.414062,-1.414062 l -3.535156,3.535156 c -0.403974,0.404 -1.010089,0.404 -1.414063,0 l -2.828125,-2.828125 c -0.403981,-0.404 -0.403908,-1.010162 0,-1.414063 l 3.535156,-3.537109 A 1.0001,1.0001 0 0 0 32.654297,9.7226562 Z m 3.109375,2.1621098 -2.382813,2.384765 a 1.0001,1.0001 0 1 0 1.414063,1.414063 l 2.382812,-2.384766 -1.414062,-1.414062 z"
-         style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-         inkscape:connector-curvature="0" />
-      <rect
-         transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"
-         y="752.29541"
-         x="-712.31262"
-         height="18.000017"
-         width="3"
-         id="rect5116"
-         style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    </g>
-  </g>
-</svg>

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 71
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/drag.svg


+ 0 - 81
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/error.svg

@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="error.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="14.00357"
-     inkscape:cy="12.443398"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 7 3 C 4.7839905 3 3 4.7839905 3 7 L 3 18 C 3 20.21601 4.7839905 22 7 22 L 18 22 C 20.21601 22 22 20.21601 22 18 L 22 7 C 22 4.7839905 20.21601 3 18 3 L 7 3 z M 7.6992188 6 A 1.6916875 1.6924297 0 0 1 8.9121094 6.5117188 L 12.5 10.101562 L 16.087891 6.5117188 A 1.6916875 1.6924297 0 0 1 17.251953 6 A 1.6916875 1.6924297 0 0 1 18.480469 8.90625 L 14.892578 12.496094 L 18.480469 16.085938 A 1.6916875 1.6924297 0 1 1 16.087891 18.478516 L 12.5 14.888672 L 8.9121094 18.478516 A 1.6916875 1.6924297 0 1 1 6.5214844 16.085938 L 10.109375 12.496094 L 6.5214844 8.90625 A 1.6916875 1.6924297 0 0 1 7.6992188 6 z "
-       transform="translate(0,1027.3622)"
-       id="rect4135" />
-  </g>
-</svg>

+ 0 - 92
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/esc.svg

@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="esc.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="16"
-     inkscape:cx="18.205425"
-     inkscape:cy="17.531398"
-     inkscape:document-units="px"
-     inkscape:current-layer="text5290"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <g
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:48px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'Sans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       id="text5290">
-      <path
-         d="m 3.9331055,1036.1464 5.0732422,0 0,1.4209 -3.1933594,0 0,1.3574 3.0029297,0 0,1.4209 -3.0029297,0 0,1.6699 3.3007812,0 0,1.4209 -5.180664,0 0,-7.29 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5314" />
-      <path
-         d="m 14.963379,1038.1385 0,1.3282 q -0.561524,-0.2344 -1.083984,-0.3516 -0.522461,-0.1172 -0.986329,-0.1172 -0.498046,0 -0.742187,0.127 -0.239258,0.122 -0.239258,0.3808 0,0.21 0.180664,0.3223 0.185547,0.1123 0.65918,0.166 l 0.307617,0.044 q 1.342773,0.1709 1.806641,0.5615 0.463867,0.3906 0.463867,1.2256 0,0.874 -0.644531,1.3134 -0.644532,0.4395 -1.923829,0.4395 -0.541992,0 -1.123046,-0.088 -0.576172,-0.083 -1.186524,-0.2539 l 0,-1.3281 q 0.522461,0.2539 1.069336,0.3808 0.551758,0.127 1.118164,0.127 0.512695,0 0.771485,-0.1416 0.258789,-0.1416 0.258789,-0.4199 0,-0.2344 -0.180664,-0.3467 -0.175782,-0.1172 -0.708008,-0.1807 l -0.307617,-0.039 q -1.166993,-0.1465 -1.635743,-0.542 -0.46875,-0.3955 -0.46875,-1.2012 0,-0.8691 0.595703,-1.2891 0.595704,-0.4199 1.826172,-0.4199 0.483399,0 1.015625,0.073 0.532227,0.073 1.157227,0.2294 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5316" />
-      <path
-         d="m 21.066895,1038.1385 0,1.4258 q -0.356446,-0.2441 -0.717774,-0.3613 -0.356445,-0.1172 -0.742187,-0.1172 -0.732422,0 -1.142579,0.4297 -0.405273,0.4248 -0.405273,1.1914 0,0.7666 0.405273,1.1963 0.410157,0.4248 1.142579,0.4248 0.410156,0 0.776367,-0.1221 0.371094,-0.122 0.683594,-0.3613 l 0,1.4307 q -0.410157,0.1513 -0.834961,0.2246 -0.419922,0.078 -0.844727,0.078 -1.479492,0 -2.314453,-0.7568 -0.834961,-0.7618 -0.834961,-2.1143 0,-1.3525 0.834961,-2.1094 0.834961,-0.7617 2.314453,-0.7617 0.429688,0 0.844727,0.078 0.419921,0.073 0.834961,0.2246 z"
-         style="font-size:10px;fill:#ffffff;fill-opacity:1"
-         id="path5318" />
-    </g>
-  </g>
-</svg>

+ 0 - 69
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/expander.svg

@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="9"
-   height="10"
-   viewBox="0 0 9 10"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="expander.svg">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="45.254834"
-     inkscape:cx="9.8737281"
-     inkscape:cy="6.4583132"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     units="px"
-     inkscape:snap-object-midpoints="false"
-     inkscape:object-nodes="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="0"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1042.3622)">
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="M 2.0800781,1042.3633 A 2.0002,2.0002 0 0 0 0,1044.3613 l 0,6 a 2.0002,2.0002 0 0 0 3.0292969,1.7168 l 5,-3 a 2.0002,2.0002 0 0 0 0,-3.4316 l -5,-3 a 2.0002,2.0002 0 0 0 -0.9492188,-0.2832 z"
-       id="path4138"
-       inkscape:connector-curvature="0" />
-  </g>
-</svg>

+ 0 - 93
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/fullscreen.svg

@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="fullscreen.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="16.400723"
-     inkscape:cy="15.083758"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="false">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <rect
-       style="opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect5006"
-       width="17"
-       height="17.000017"
-       x="4"
-       y="1031.3622"
-       ry="3.0000174" />
-    <path
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
-       d="m 7.5,1044.8622 4,0 -1.5,-1.5 1.5,-1.5 -1,-1 -1.5,1.5 -1.5,-1.5 0,4 z"
-       id="path5017"
-       inkscape:connector-curvature="0" />
-    <path
-       inkscape:connector-curvature="0"
-       id="path5025"
-       d="m 17.5,1034.8622 -4,0 1.5,1.5 -1.5,1.5 1,1 1.5,-1.5 1.5,1.5 0,-4 z"
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
-  </g>
-</svg>

+ 0 - 82
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/handle.svg

@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="5"
-   height="6"
-   viewBox="0 0 5 6"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="handle.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="32"
-     inkscape:cx="1.3551778"
-     inkscape:cy="8.7800329"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1046.3622)">
-    <path
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 4.0000803,1049.3622 -3,-2 0,4 z"
-       id="path4247"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-  </g>
-</svg>

+ 0 - 172
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/handle_bg.svg

@@ -1,172 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="15"
-   height="50"
-   viewBox="0 0 15 50"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="handle_bg.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="16"
-     inkscape:cx="-10.001409"
-     inkscape:cy="24.512566"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1002.3622)">
-    <rect
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4249"
-       width="1"
-       height="1.0000174"
-       x="9.5"
-       y="1008.8622"
-       ry="1.7382812e-05" />
-    <rect
-       ry="1.7382812e-05"
-       y="1013.8622"
-       x="9.5"
-       height="1.0000174"
-       width="1"
-       id="rect4255"
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <rect
-       ry="1.7382812e-05"
-       y="1008.8622"
-       x="4.5"
-       height="1.0000174"
-       width="1"
-       id="rect4261"
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <rect
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4263"
-       width="1"
-       height="1.0000174"
-       x="4.5"
-       y="1013.8622"
-       ry="1.7382812e-05" />
-    <rect
-       ry="1.7382812e-05"
-       y="1039.8622"
-       x="9.5"
-       height="1.0000174"
-       width="1"
-       id="rect4265"
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <rect
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4267"
-       width="1"
-       height="1.0000174"
-       x="9.5"
-       y="1044.8622"
-       ry="1.7382812e-05" />
-    <rect
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4269"
-       width="1"
-       height="1.0000174"
-       x="4.5"
-       y="1039.8622"
-       ry="1.7382812e-05" />
-    <rect
-       ry="1.7382812e-05"
-       y="1044.8622"
-       x="4.5"
-       height="1.0000174"
-       width="1"
-       id="rect4271"
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <rect
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4273"
-       width="1"
-       height="1.0000174"
-       x="9.5"
-       y="1018.8622"
-       ry="1.7382812e-05" />
-    <rect
-       ry="1.7382812e-05"
-       y="1018.8622"
-       x="4.5"
-       height="1.0000174"
-       width="1"
-       id="rect4275"
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-    <rect
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4277"
-       width="1"
-       height="1.0000174"
-       x="9.5"
-       y="1034.8622"
-       ry="1.7382812e-05" />
-    <rect
-       ry="1.7382812e-05"
-       y="1034.8622"
-       x="4.5"
-       height="1.0000174"
-       width="1"
-       id="rect4279"
-       style="opacity:0.25;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-  </g>
-</svg>

+ 0 - 42
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/Makefile

@@ -1,42 +0,0 @@
-ICONS := \
-	novnc-16x16.png \
-	novnc-24x24.png \
-	novnc-32x32.png \
-	novnc-48x48.png \
-	novnc-64x64.png
-
-ANDROID_LAUNCHER := \
-	novnc-48x48.png \
-	novnc-72x72.png \
-	novnc-96x96.png \
-	novnc-144x144.png \
-	novnc-192x192.png
-
-IPHONE_LAUNCHER := \
-	novnc-60x60.png \
-	novnc-120x120.png
-
-IPAD_LAUNCHER := \
-	novnc-76x76.png \
-	novnc-152x152.png
-
-ALL_ICONS := $(ICONS) $(ANDROID_LAUNCHER) $(IPHONE_LAUNCHER) $(IPAD_LAUNCHER)
-
-all: $(ALL_ICONS)
-
-novnc-16x16.png: novnc-icon-sm.svg
-	convert -density 90 \
-		-background transparent "$<" "$@"
-novnc-24x24.png: novnc-icon-sm.svg
-	convert -density 135 \
-		-background transparent "$<" "$@"
-novnc-32x32.png: novnc-icon-sm.svg
-	convert -density 180 \
-		-background transparent "$<" "$@"
-
-novnc-%.png: novnc-icon.svg
-	convert -density $$[`echo $* | cut -d x -f 1` * 90 / 48] \
-		-background transparent "$<" "$@"
-
-clean:
-	rm -f *.png

BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-120x120.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-144x144.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-152x152.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-16x16.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-192x192.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-24x24.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-32x32.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-48x48.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-60x60.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-64x64.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-72x72.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-76x76.png


BIN
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-96x96.png


+ 0 - 163
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-icon-sm.svg

@@ -1,163 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   viewBox="0 0 16 16"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="novnc-icon-sm.svg">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="45.254834"
-     inkscape:cx="9.722703"
-     inkscape:cy="5.5311896"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:object-nodes="true"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:snap-midpoints="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4169" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1036.3621)">
-    <rect
-       style="opacity:1;fill:#494949;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4167"
-       width="16"
-       height="15.999992"
-       x="0"
-       y="1036.3622"
-       ry="2.6666584" />
-    <path
-       style="opacity:1;fill:#313131;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 2.6666667,1036.3621 C 1.1893373,1036.3621 0,1037.5515 0,1039.0288 l 0,10.6666 c 0,1.4774 1.1893373,2.6667 2.6666667,2.6667 l 4,0 C 11.837333,1052.3621 16,1046.7128 16,1039.6955 l 0,-0.6667 c 0,-1.4773 -1.189337,-2.6667 -2.666667,-2.6667 l -10.6666663,0 z"
-       id="rect4173"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g4381">
-      <g
-         transform="translate(0.25,0.25)"
-         style="fill:#000000;fill-opacity:1"
-         id="g4365">
-        <g
-           style="fill:#000000;fill-opacity:1"
-           id="g4367">
-          <path
-             inkscape:connector-curvature="0"
-             id="path4369"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="m 4.3289754,1039.3621 c 0.1846149,0 0.3419956,0.071 0.4716623,0.2121 C 4.933546,1039.7121 5,1039.8793 5,1040.0759 l 0,3.2862 -1,0 0,-2.964 c 0,-0.024 -0.011592,-0.036 -0.034038,-0.036 l -1.931924,0 C 2.011349,1040.3621 2,1040.3741 2,1040.3981 l 0,2.964 -1,0 0,-4 z"
-             sodipodi:nodetypes="scsccsssscccs" />
-          <path
-             inkscape:connector-curvature="0"
-             id="path4371"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="m 6.6710244,1039.3621 2.6579513,0 c 0.184775,0 0.3419957,0.071 0.471662,0.2121 C 9.933546,1039.7121 10,1039.8793 10,1040.0759 l 0,2.5724 c 0,0.1966 -0.066454,0.3655 -0.1993623,0.5069 -0.1296663,0.1379 -0.286887,0.2069 -0.471662,0.2069 l -2.6579513,0 c -0.184775,0 -0.3436164,-0.069 -0.4765247,-0.2069 C 6.0648334,1043.0138 6,1042.8449 6,1042.6483 l 0,-2.5724 c 0,-0.1966 0.064833,-0.3638 0.1944997,-0.5017 0.1329083,-0.1414 0.2917497,-0.2121 0.4765247,-0.2121 z m 2.2949386,1 -1.931926,0 C 7.011344,1040.3621 7,1040.3741 7,1040.3981 l 0,1.928 c 0,0.024 0.011347,0.036 0.034037,0.036 l 1.931926,0 c 0.02269,0 0.034037,-0.012 0.034037,-0.036 l 0,-1.928 c 0,-0.024 -0.011347,-0.036 -0.034037,-0.036 z"
-             sodipodi:nodetypes="sscsscsscsscssssssssss" />
-        </g>
-        <g
-           style="fill:#000000;fill-opacity:1"
-           id="g4373">
-          <path
-             inkscape:connector-curvature="0"
-             id="path4375"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="m 3,1047.1121 1,-2.75 1,0 -1.5,4 -1,0 -1.5,-4 1,0 z"
-             sodipodi:nodetypes="cccccccc" />
-          <path
-             inkscape:connector-curvature="0"
-             id="path4377"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="m 9,1046.8621 0,-2.5 1,0 0,4 -1,0 -2,-2.5 0,2.5 -1,0 0,-4 1,0 z"
-             sodipodi:nodetypes="ccccccccccc" />
-          <path
-             inkscape:connector-curvature="0"
-             id="path4379"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="m 15,1045.3621 -2.96596,0 c -0.02269,0 -0.03404,0.012 -0.03404,0.036 l 0,1.928 c 0,0.024 0.01135,0.036 0.03404,0.036 l 2.96596,0 0,1 -3.324113,0 c -0.188017,0 -0.348479,-0.068 -0.481388,-0.2037 C 11.064833,1048.0192 11,1047.8511 11,1047.6542 l 0,-2.5842 c 0,-0.1969 0.06483,-0.3633 0.194499,-0.4991 0.132909,-0.1392 0.293371,-0.2088 0.481388,-0.2088 l 3.324113,0 z"
-             sodipodi:nodetypes="cssssccscsscscc" />
-        </g>
-      </g>
-      <g
-         id="g4356">
-        <g
-           id="g4347">
-          <path
-             sodipodi:nodetypes="scsccsssscccs"
-             d="m 4.3289754,1039.3621 c 0.1846149,0 0.3419956,0.071 0.4716623,0.2121 C 4.933546,1039.7121 5,1039.8793 5,1040.0759 l 0,3.2862 -1,0 0,-2.964 c 0,-0.024 -0.011592,-0.036 -0.034038,-0.036 l -1.931924,0 c -0.022689,0 -0.034038,0.012 -0.034038,0.036 l 0,2.964 -1,0 0,-4 z"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             id="path4143"
-             inkscape:connector-curvature="0" />
-          <path
-             sodipodi:nodetypes="sscsscsscsscssssssssss"
-             d="m 6.6710244,1039.3621 2.6579513,0 c 0.184775,0 0.3419957,0.071 0.471662,0.2121 C 9.933546,1039.7121 10,1039.8793 10,1040.0759 l 0,2.5724 c 0,0.1966 -0.066454,0.3655 -0.1993623,0.5069 -0.1296663,0.1379 -0.286887,0.2069 -0.471662,0.2069 l -2.6579513,0 c -0.184775,0 -0.3436164,-0.069 -0.4765247,-0.2069 C 6.0648334,1043.0138 6,1042.8449 6,1042.6483 l 0,-2.5724 c 0,-0.1966 0.064833,-0.3638 0.1944997,-0.5017 0.1329083,-0.1414 0.2917497,-0.2121 0.4765247,-0.2121 z m 2.2949386,1 -1.931926,0 C 7.011344,1040.3621 7,1040.3741 7,1040.3981 l 0,1.928 c 0,0.024 0.011347,0.036 0.034037,0.036 l 1.931926,0 c 0.02269,0 0.034037,-0.012 0.034037,-0.036 l 0,-1.928 c 0,-0.024 -0.011347,-0.036 -0.034037,-0.036 z"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             id="path4145"
-             inkscape:connector-curvature="0" />
-        </g>
-        <g
-           id="g4351">
-          <path
-             sodipodi:nodetypes="cccccccc"
-             d="m 3,1047.1121 1,-2.75 1,0 -1.5,4 -1,0 -1.5,-4 1,0 z"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             id="path4147"
-             inkscape:connector-curvature="0" />
-          <path
-             sodipodi:nodetypes="ccccccccccc"
-             d="m 9,1046.8621 0,-2.5 1,0 0,4 -1,0 -2,-2.5 0,2.5 -1,0 0,-4 1,0 z"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             id="path4149"
-             inkscape:connector-curvature="0" />
-          <path
-             sodipodi:nodetypes="cssssccscsscscc"
-             d="m 15,1045.3621 -2.96596,0 c -0.02269,0 -0.03404,0.012 -0.03404,0.036 l 0,1.928 c 0,0.024 0.01135,0.036 0.03404,0.036 l 2.96596,0 0,1 -3.324113,0 c -0.188017,0 -0.348479,-0.068 -0.481388,-0.2037 C 11.064833,1048.0192 11,1047.8511 11,1047.6542 l 0,-2.5842 c 0,-0.1969 0.06483,-0.3633 0.194499,-0.4991 0.132909,-0.1392 0.293371,-0.2088 0.481388,-0.2088 l 3.324113,0 z"
-             style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             id="path4151"
-             inkscape:connector-curvature="0" />
-        </g>
-      </g>
-    </g>
-  </g>
-</svg>

+ 0 - 163
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/icons/novnc-icon.svg

@@ -1,163 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="48"
-   height="48"
-   viewBox="0 0 48 48.000001"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="novnc-icon.svg">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="11.313708"
-     inkscape:cx="27.187245"
-     inkscape:cy="17.700974"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:object-nodes="true"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:snap-midpoints="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4169" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1004.3621)">
-    <rect
-       style="opacity:1;fill:#494949;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4167"
-       width="48"
-       height="48"
-       x="0"
-       y="1004.3621"
-       ry="7.9999785" />
-    <path
-       style="opacity:1;fill:#313131;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       d="m 8,1004.3621 c -4.4319881,0 -8,3.568 -8,8 l 0,32 c 0,4.432 3.5680119,8 8,8 l 12,0 c 15.512,0 28,-16.948 28,-38 l 0,-2 c 0,-4.432 -3.568012,-8 -8,-8 l -32,0 z"
-       id="rect4173"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g4300"
-       style="fill:#000000;fill-opacity:1;stroke:none"
-       transform="translate(0.5,0.5)">
-      <g
-         id="g4302"
-         style="fill:#000000;fill-opacity:1;stroke:none">
-        <path
-           sodipodi:nodetypes="scsccsssscccs"
-           d="m 11.986926,1016.3621 c 0.554325,0 1.025987,0.2121 1.414987,0.6362 0.398725,0.4138 0.600909,0.9155 0.598087,1.5052 l 0,6.8586 -2,0 0,-6.8914 c 0,-0.072 -0.03404,-0.1086 -0.102113,-0.1086 l -4.7957745,0 C 7.0340375,1018.3621 7,1018.3983 7,1018.4707 l 0,6.8914 -2,0 0,-9 z"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           id="path4304"
-           inkscape:connector-curvature="0" />
-        <path
-           sodipodi:nodetypes="sscsscsscsscssssssssss"
-           d="m 17.013073,1016.3621 4.973854,0 c 0.554325,0 1.025987,0.2121 1.414986,0.6362 0.398725,0.4138 0.598087,0.9155 0.598087,1.5052 l 0,4.7172 c 0,0.5897 -0.199362,1.0966 -0.598087,1.5207 -0.388999,0.4138 -0.860661,0.6207 -1.414986,0.6207 l -4.973854,0 c -0.554325,0 -1.030849,-0.2069 -1.429574,-0.6207 C 15.1945,1024.3173 15,1023.8104 15,1023.2207 l 0,-4.7172 c 0,-0.5897 0.1945,-1.0914 0.583499,-1.5052 0.398725,-0.4241 0.875249,-0.6362 1.429574,-0.6362 z m 4.884815,2 -4.795776,0 c -0.06808,0 -0.102112,0.036 -0.102112,0.1086 l 0,4.7828 c 0,0.072 0.03404,0.1086 0.102112,0.1086 l 4.795776,0 c 0.06807,0 0.102112,-0.036 0.102112,-0.1086 l 0,-4.7828 c 0,-0.072 -0.03404,-0.1086 -0.102112,-0.1086 z"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           id="path4306"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         id="g4308"
-         style="fill:#000000;fill-opacity:1;stroke:none">
-        <path
-           sodipodi:nodetypes="cccccccc"
-           d="m 12,1036.9177 4.768114,-8.5556 2.231886,0 -6,11 -2,0 -6,-11 2.2318854,0 z"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           id="path4310"
-           inkscape:connector-curvature="0" />
-        <path
-           sodipodi:nodetypes="ccccccccccc"
-           d="m 29,1036.3621 0,-8 2,0 0,11 -2,0 -7,-8 0,8 -2,0 0,-11 2,0 z"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           id="path4312"
-           inkscape:connector-curvature="0" />
-        <path
-           sodipodi:nodetypes="cssssccscsscscc"
-           d="m 43,1030.3621 -8.897887,0 c -0.06808,0 -0.102113,0.036 -0.102113,0.1069 l 0,6.7862 c 0,0.071 0.03404,0.1069 0.102113,0.1069 l 8.897887,0 0,2 -8.972339,0 c -0.56405,0 -1.045437,-0.2037 -1.444162,-0.6111 C 32.1945,1038.3334 32,1037.8292 32,1037.2385 l 0,-6.7528 c 0,-0.5907 0.1945,-1.0898 0.583499,-1.4972 0.398725,-0.4176 0.880112,-0.6264 1.444162,-0.6264 l 8.972339,0 z"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           id="path4314"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-    <g
-       id="g4291"
-       style="stroke:none">
-      <g
-         id="g4282"
-         style="stroke:none">
-        <path
-           inkscape:connector-curvature="0"
-           id="path4143"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 11.986926,1016.3621 c 0.554325,0 1.025987,0.2121 1.414987,0.6362 0.398725,0.4138 0.600909,0.9155 0.598087,1.5052 l 0,6.8586 -2,0 0,-6.8914 c 0,-0.072 -0.03404,-0.1086 -0.102113,-0.1086 l -4.7957745,0 C 7.0340375,1018.3621 7,1018.3983 7,1018.4707 l 0,6.8914 -2,0 0,-9 z"
-           sodipodi:nodetypes="scsccsssscccs" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4145"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#008000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 17.013073,1016.3621 4.973854,0 c 0.554325,0 1.025987,0.2121 1.414986,0.6362 0.398725,0.4138 0.598087,0.9155 0.598087,1.5052 l 0,4.7172 c 0,0.5897 -0.199362,1.0966 -0.598087,1.5207 -0.388999,0.4138 -0.860661,0.6207 -1.414986,0.6207 l -4.973854,0 c -0.554325,0 -1.030849,-0.2069 -1.429574,-0.6207 C 15.1945,1024.3173 15,1023.8104 15,1023.2207 l 0,-4.7172 c 0,-0.5897 0.1945,-1.0914 0.583499,-1.5052 0.398725,-0.4241 0.875249,-0.6362 1.429574,-0.6362 z m 4.884815,2 -4.795776,0 c -0.06808,0 -0.102112,0.036 -0.102112,0.1086 l 0,4.7828 c 0,0.072 0.03404,0.1086 0.102112,0.1086 l 4.795776,0 c 0.06807,0 0.102112,-0.036 0.102112,-0.1086 l 0,-4.7828 c 0,-0.072 -0.03404,-0.1086 -0.102112,-0.1086 z"
-           sodipodi:nodetypes="sscsscsscsscssssssssss" />
-      </g>
-      <g
-         id="g4286"
-         style="stroke:none">
-        <path
-           inkscape:connector-curvature="0"
-           id="path4147"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 12,1036.9177 4.768114,-8.5556 2.231886,0 -6,11 -2,0 -6,-11 2.2318854,0 z"
-           sodipodi:nodetypes="cccccccc" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4149"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 29,1036.3621 0,-8 2,0 0,11 -2,0 -7,-8 0,8 -2,0 0,-11 2,0 z"
-           sodipodi:nodetypes="ccccccccccc" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4151"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:medium;line-height:125%;font-family:Orbitron;-inkscape-font-specification:'Orbitron Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 43,1030.3621 -8.897887,0 c -0.06808,0 -0.102113,0.036 -0.102113,0.1069 l 0,6.7862 c 0,0.071 0.03404,0.1069 0.102113,0.1069 l 8.897887,0 0,2 -8.972339,0 c -0.56405,0 -1.045437,-0.2037 -1.444162,-0.6111 C 32.1945,1038.3334 32,1037.8292 32,1037.2385 l 0,-6.7528 c 0,-0.5907 0.1945,-1.0898 0.583499,-1.4972 0.398725,-0.4176 0.880112,-0.6264 1.444162,-0.6264 l 8.972339,0 z"
-           sodipodi:nodetypes="cssssccscsscscc" />
-      </g>
-    </g>
-  </g>
-</svg>

+ 0 - 81
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/info.svg

@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="info.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="15.720838"
-     inkscape:cy="8.9111233"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 12.5 3 A 9.5 9.4999914 0 0 0 3 12.5 A 9.5 9.4999914 0 0 0 12.5 22 A 9.5 9.4999914 0 0 0 22 12.5 A 9.5 9.4999914 0 0 0 12.5 3 z M 12.5 5 A 1.5 1.5000087 0 0 1 14 6.5 A 1.5 1.5000087 0 0 1 12.5 8 A 1.5 1.5000087 0 0 1 11 6.5 A 1.5 1.5000087 0 0 1 12.5 5 z M 10.521484 8.9785156 L 12.521484 8.9785156 A 1.50015 1.50015 0 0 1 14.021484 10.478516 L 14.021484 15.972656 A 1.50015 1.50015 0 0 1 14.498047 18.894531 C 14.498047 18.894531 13.74301 19.228309 12.789062 18.912109 C 12.312092 18.754109 11.776235 18.366625 11.458984 17.828125 C 11.141734 17.289525 11.021484 16.668469 11.021484 15.980469 L 11.021484 11.980469 L 10.521484 11.980469 A 1.50015 1.50015 0 1 1 10.521484 8.9804688 L 10.521484 8.9785156 z "
-       transform="translate(0,1027.3622)"
-       id="path4136" />
-  </g>
-</svg>

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 75
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/keyboard.svg


+ 0 - 92
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/mouse_left.svg

@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="mouse_left.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="11.313708"
-     inkscape:cx="15.551515"
-     inkscape:cy="12.205592"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0068f6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 8,1030.3622 c -2.1987124,0 -4,1.8013 -4,4 l 0,2 5,0 0,-2 c 0,-1.4738 1.090393,-2.7071 2.5,-2.9492 l 0,-1.0508 -3.5,0 z"
-       id="path6219" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 13.5,1030.3622 0,1.0508 c 1.409607,0.2421 2.5,1.4754 2.5,2.9492 l 0,2 5,0 0,-2 c 0,-2.1987 -1.801288,-4 -4,-4 l -3.5,0 z"
-       id="path6217" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 12,1033.3622 c -0.571311,0 -1,0.4287 -1,1 l 0,5 c 0,0.5713 0.428689,1 1,1 l 1,0 c 0.571311,0 1,-0.4287 1,-1 l 0,-5 c 0,-0.5713 -0.428689,-1 -1,-1 l -1,0 z"
-       id="path6215" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 4,1038.3622 0,3.5 c 0,4.1377 3.362302,7.5 7.5,7.5 l 2,0 c 4.137698,0 7.5,-3.3623 7.5,-7.5 l 0,-3.5 -5,0 0,1 c 0,1.6447 -1.355293,3 -3,3 l -1,0 c -1.644707,0 -3,-1.3553 -3,-3 l 0,-1 -5,0 z"
-       id="rect6178" />
-  </g>
-</svg>

+ 0 - 92
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/mouse_middle.svg

@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="mouse_middle.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="11.313708"
-     inkscape:cx="15.551515"
-     inkscape:cy="12.205592"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 8,1030.3622 c -2.1987124,0 -4,1.8013 -4,4 l 0,2 5,0 0,-2 c 0,-1.4738 1.090393,-2.7071 2.5,-2.9492 l 0,-1.0508 -3.5,0 z"
-       id="path6219" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 13.5,1030.3622 0,1.0508 c 1.409607,0.2421 2.5,1.4754 2.5,2.9492 l 0,2 5,0 0,-2 c 0,-2.1987 -1.801288,-4 -4,-4 l -3.5,0 z"
-       id="path6217" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0068f6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 12,1033.3622 c -0.571311,0 -1,0.4287 -1,1 l 0,5 c 0,0.5713 0.428689,1 1,1 l 1,0 c 0.571311,0 1,-0.4287 1,-1 l 0,-5 c 0,-0.5713 -0.428689,-1 -1,-1 l -1,0 z"
-       id="path6215" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 4,1038.3622 0,3.5 c 0,4.1377 3.362302,7.5 7.5,7.5 l 2,0 c 4.137698,0 7.5,-3.3623 7.5,-7.5 l 0,-3.5 -5,0 0,1 c 0,1.6447 -1.355293,3 -3,3 l -1,0 c -1.644707,0 -3,-1.3553 -3,-3 l 0,-1 -5,0 z"
-       id="rect6178" />
-  </g>
-</svg>

+ 0 - 92
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/mouse_none.svg

@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="mouse_none.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="16"
-     inkscape:cx="23.160825"
-     inkscape:cy="13.208262"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 8,1030.3622 c -2.1987124,0 -4,1.8013 -4,4 l 0,2 5,0 0,-2 c 0,-1.4738 1.090393,-2.7071 2.5,-2.9492 l 0,-1.0508 -3.5,0 z"
-       id="path6219" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 13.5,1030.3622 0,1.0508 c 1.409607,0.2421 2.5,1.4754 2.5,2.9492 l 0,2 5,0 0,-2 c 0,-2.1987 -1.801288,-4 -4,-4 l -3.5,0 z"
-       id="path6217" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 12,1033.3622 c -0.571311,0 -1,0.4287 -1,1 l 0,5 c 0,0.5713 0.428689,1 1,1 l 1,0 c 0.571311,0 1,-0.4287 1,-1 l 0,-5 c 0,-0.5713 -0.428689,-1 -1,-1 l -1,0 z"
-       id="path6215" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 4,1038.3622 0,3.5 c 0,4.1377 3.362302,7.5 7.5,7.5 l 2,0 c 4.137698,0 7.5,-3.3623 7.5,-7.5 l 0,-3.5 -5,0 0,1 c 0,1.6447 -1.355293,3 -3,3 l -1,0 c -1.644707,0 -3,-1.3553 -3,-3 l 0,-1 -5,0 z"
-       id="rect6178" />
-  </g>
-</svg>

+ 0 - 92
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/mouse_right.svg

@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="mouse_right.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="11.313708"
-     inkscape:cx="15.551515"
-     inkscape:cy="12.205592"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 8,1030.3622 c -2.1987124,0 -4,1.8013 -4,4 l 0,2 5,0 0,-2 c 0,-1.4738 1.090393,-2.7071 2.5,-2.9492 l 0,-1.0508 -3.5,0 z"
-       id="path6219" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0068f6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 13.5,1030.3622 0,1.0508 c 1.409607,0.2421 2.5,1.4754 2.5,2.9492 l 0,2 5,0 0,-2 c 0,-2.1987 -1.801288,-4 -4,-4 l -3.5,0 z"
-       id="path6217" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 12,1033.3622 c -0.571311,0 -1,0.4287 -1,1 l 0,5 c 0,0.5713 0.428689,1 1,1 l 1,0 c 0.571311,0 1,-0.4287 1,-1 l 0,-5 c 0,-0.5713 -0.428689,-1 -1,-1 l -1,0 z"
-       id="path6215" />
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 4,1038.3622 0,3.5 c 0,4.1377 3.362302,7.5 7.5,7.5 l 2,0 c 4.137698,0 7.5,-3.3623 7.5,-7.5 l 0,-3.5 -5,0 0,1 c 0,1.6447 -1.355293,3 -3,3 l -1,0 c -1.644707,0 -3,-1.3553 -3,-3 l 0,-1 -5,0 z"
-       id="rect6178" />
-  </g>
-</svg>

+ 0 - 87
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/power.svg

@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="power.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="9.3159849"
-     inkscape:cy="13.436208"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="M 9 6.8183594 C 6.3418164 8.1213032 4.5 10.849161 4.5 14 C 4.5 18.4065 8.0935666 22 12.5 22 C 16.906433 22 20.5 18.4065 20.5 14 C 20.5 10.849161 18.658184 8.1213032 16 6.8183594 L 16 9.125 C 17.514327 10.211757 18.5 11.984508 18.5 14 C 18.5 17.3256 15.825553 20 12.5 20 C 9.1744469 20 6.5 17.3256 6.5 14 C 6.5 11.984508 7.4856727 10.211757 9 9.125 L 9 6.8183594 z "
-       transform="translate(0,1027.3622)"
-       id="path6140" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 12.5,1031.8836 0,6.4786"
-       id="path6142"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-  </g>
-</svg>

+ 0 - 76
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/settings.svg

@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="settings.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.627417"
-     inkscape:cx="14.69683"
-     inkscape:cy="8.8039511"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       d="M 11 3 L 11 5.1601562 A 7.5 7.5 0 0 0 8.3671875 6.2460938 L 6.84375 4.7226562 L 4.7226562 6.84375 L 6.2480469 8.3691406 A 7.5 7.5 0 0 0 5.1523438 11 L 3 11 L 3 14 L 5.1601562 14 A 7.5 7.5 0 0 0 6.2460938 16.632812 L 4.7226562 18.15625 L 6.84375 20.277344 L 8.3691406 18.751953 A 7.5 7.5 0 0 0 11 19.847656 L 11 22 L 14 22 L 14 19.839844 A 7.5 7.5 0 0 0 16.632812 18.753906 L 18.15625 20.277344 L 20.277344 18.15625 L 18.751953 16.630859 A 7.5 7.5 0 0 0 19.847656 14 L 22 14 L 22 11 L 19.839844 11 A 7.5 7.5 0 0 0 18.753906 8.3671875 L 20.277344 6.84375 L 18.15625 4.7226562 L 16.630859 6.2480469 A 7.5 7.5 0 0 0 14 5.1523438 L 14 3 L 11 3 z M 12.5 10 A 2.5 2.5 0 0 1 15 12.5 A 2.5 2.5 0 0 1 12.5 15 A 2.5 2.5 0 0 1 10 12.5 A 2.5 2.5 0 0 1 12.5 10 z "
-       transform="translate(0,1027.3622)"
-       id="rect4967" />
-  </g>
-</svg>

+ 0 - 86
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/tab.svg

@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="tab.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="16"
-     inkscape:cx="11.67335"
-     inkscape:cy="17.881696"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       d="m 3,1031.3622 0,8 2,0 0,-4 0,-4 -2,0 z m 2,4 4,4 0,-3 13,0 0,-2 -13,0 0,-3 -4,4 z"
-       id="rect5194"
-       inkscape:connector-curvature="0" />
-    <path
-       id="path5211"
-       d="m 22,1048.3622 0,-8 -2,0 0,4 0,4 2,0 z m -2,-4 -4,-4 0,3 -13,0 0,2 13,0 0,3 4,-4 z"
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       inkscape:connector-curvature="0" />
-  </g>
-</svg>

+ 0 - 90
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/toggleextrakeys.svg

@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="extrakeys.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="15.234555"
-     inkscape:cy="9.9710826"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="false">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="m 8,1031.3622 c -2.1987124,0 -4,1.8013 -4,4 l 0,8.9996 c 0,2.1987 1.8012876,4 4,4 l 9,0 c 2.198712,0 4,-1.8013 4,-4 l 0,-8.9996 c 0,-2.1987 -1.801288,-4 -4,-4 z m 0,2 9,0 c 1.125307,0 2,0.8747 2,2 l 0,7.0005 c 0,1.1253 -0.874693,2 -2,2 l -9,0 c -1.1253069,0 -2,-0.8747 -2,-2 l 0,-7.0005 c 0,-1.1253 0.8746931,-2 2,-2 z"
-       id="rect5006"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ssssssssssssssssss" />
-    <g
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'Sans Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       id="text4167"
-       transform="matrix(0.96021948,0,0,0.96021948,0.18921715,41.80659)">
-      <path
-         d="m 14.292969,1040.6791 -2.939453,0 -0.463868,1.3281 -1.889648,0 2.700195,-7.29 2.241211,0 2.700196,7.29 -1.889649,0 -0.458984,-1.3281 z m -2.470703,-1.3526 1.99707,0 -0.996094,-2.9004 -1.000976,2.9004 z"
-         id="path4172"
-         inkscape:connector-curvature="0" />
-    </g>
-  </g>
-</svg>

+ 0 - 81
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/images/warning.svg

@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="25"
-   height="25"
-   viewBox="0 0 25 25"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="warning.svg"
-   inkscape:export-filename="/home/ossman/devel/noVNC/images/drag.png"
-   inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#959595"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="16.457343"
-     inkscape:cy="12.179552"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     units="px"
-     inkscape:snap-bbox="true"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:object-paths="true"
-     showguides="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1920"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:object-nodes="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-global="true">
-    <inkscape:grid
-       type="xygrid"
-       id="grid4136" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-1027.3622)">
-    <path
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
-       d="M 12.513672 3.0019531 C 11.751609 2.9919531 11.052563 3.4242687 10.710938 4.1054688 L 3.2109375 19.105469 C 2.5461937 20.435369 3.5132277 21.9999 5 22 L 20 22 C 21.486772 21.9999 22.453806 20.435369 21.789062 19.105469 L 14.289062 4.1054688 C 13.951849 3.4330688 13.265888 3.0066531 12.513672 3.0019531 z M 12.478516 6.9804688 A 1.50015 1.50015 0 0 1 14 8.5 L 14 14.5 A 1.50015 1.50015 0 1 1 11 14.5 L 11 8.5 A 1.50015 1.50015 0 0 1 12.478516 6.9804688 z M 12.5 17 A 1.5 1.5 0 0 1 14 18.5 A 1.5 1.5 0 0 1 12.5 20 A 1.5 1.5 0 0 1 11 18.5 A 1.5 1.5 0 0 1 12.5 17 z "
-       transform="translate(0,1027.3622)"
-       id="path4208" />
-  </g>
-</svg>

+ 0 - 69
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/de.json

@@ -1,69 +0,0 @@
-{
-    "Connecting...": "Verbinden...",
-    "Disconnecting...": "Verbindung trennen...",
-    "Reconnecting...": "Verbindung wiederherstellen...",
-    "Internal error": "Interner Fehler",
-    "Must set host": "Richten Sie den Server ein",
-    "Connected (encrypted) to ": "Verbunden mit (verschlüsselt) ",
-    "Connected (unencrypted) to ": "Verbunden mit (unverschlüsselt) ",
-    "Something went wrong, connection is closed": "Etwas lief schief, Verbindung wurde getrennt",
-    "Disconnected": "Verbindung zum Server getrennt",
-    "New connection has been rejected with reason: ": "Verbindung wurde aus folgendem Grund abgelehnt: ",
-    "New connection has been rejected": "Verbindung wurde abgelehnt",
-    "Password is required": "Passwort ist erforderlich",
-    "noVNC encountered an error:": "Ein Fehler ist aufgetreten:",
-    "Hide/Show the control bar": "Kontrollleiste verstecken/anzeigen",
-    "Move/Drag Viewport": "Ansichtsfenster verschieben/ziehen",
-    "viewport drag": "Ansichtsfenster ziehen",
-    "Active Mouse Button": "Aktive Maustaste",
-    "No mousebutton": "Keine Maustaste",
-    "Left mousebutton": "Linke Maustaste",
-    "Middle mousebutton": "Mittlere Maustaste",
-    "Right mousebutton": "Rechte Maustaste",
-    "Keyboard": "Tastatur",
-    "Show Keyboard": "Tastatur anzeigen",
-    "Extra keys": "Zusatztasten",
-    "Show Extra Keys": "Zusatztasten anzeigen",
-    "Ctrl": "Strg",
-    "Toggle Ctrl": "Strg umschalten",
-    "Alt": "Alt",
-    "Toggle Alt": "Alt umschalten",
-    "Send Tab": "Tab senden",
-    "Tab": "Tab",
-    "Esc": "Esc",
-    "Send Escape": "Escape senden",
-    "Ctrl+Alt+Del": "Strg+Alt+Entf",
-    "Send Ctrl-Alt-Del": "Strg+Alt+Entf senden",
-    "Shutdown/Reboot": "Herunterfahren/Neustarten",
-    "Shutdown/Reboot...": "Herunterfahren/Neustarten...",
-    "Power": "Energie",
-    "Shutdown": "Herunterfahren",
-    "Reboot": "Neustarten",
-    "Reset": "Zurücksetzen",
-    "Clipboard": "Zwischenablage",
-    "Clear": "Löschen",
-    "Fullscreen": "Vollbild",
-    "Settings": "Einstellungen",
-    "Shared Mode": "Geteilter Modus",
-    "View Only": "Nur betrachten",
-    "Clip to Window": "Auf Fenster begrenzen",
-    "Scaling Mode:": "Skalierungsmodus:",
-    "None": "Keiner",
-    "Local Scaling": "Lokales skalieren",
-    "Remote Resizing": "Serverseitiges skalieren",
-    "Advanced": "Erweitert",
-    "Repeater ID:": "Repeater ID:",
-    "WebSocket": "WebSocket",
-    "Encrypt": "Verschlüsselt",
-    "Host:": "Server:",
-    "Port:": "Port:",
-    "Path:": "Pfad:",
-    "Automatic Reconnect": "Automatisch wiederverbinden",
-    "Reconnect Delay (ms):": "Wiederverbindungsverzögerung (ms):",
-    "Logging:": "Protokollierung:",
-    "Disconnect": "Verbindung trennen",
-    "Connect": "Verbinden",
-    "Password:": "Passwort:",
-    "Cancel": "Abbrechen",
-    "Canvas not supported.": "Canvas nicht unterstützt."
-}

+ 0 - 69
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/el.json

@@ -1,69 +0,0 @@
-{
-    "Connecting...": "Συνδέεται...",
-    "Disconnecting...": "Aποσυνδέεται...",
-    "Reconnecting...": "Επανασυνδέεται...",
-    "Internal error": "Εσωτερικό σφάλμα",
-    "Must set host": "Πρέπει να οριστεί ο διακομιστής",
-    "Connected (encrypted) to ": "Συνδέθηκε (κρυπτογραφημένα) με το ",
-    "Connected (unencrypted) to ": "Συνδέθηκε (μη κρυπτογραφημένα) με το ",
-    "Something went wrong, connection is closed": "Κάτι πήγε στραβά, η σύνδεση διακόπηκε",
-    "Disconnected": "Αποσυνδέθηκε",
-    "New connection has been rejected with reason: ": "Η νέα σύνδεση απορρίφθηκε διότι: ",
-    "New connection has been rejected": "Η νέα σύνδεση απορρίφθηκε ",
-    "Password is required": "Απαιτείται ο κωδικός πρόσβασης",
-    "noVNC encountered an error:": "το noVNC αντιμετώπισε ένα σφάλμα:",
-    "Hide/Show the control bar": "Απόκρυψη/Εμφάνιση γραμμής ελέγχου",
-    "Move/Drag Viewport": "Μετακίνηση/Σύρσιμο Θεατού πεδίου",
-    "viewport drag": "σύρσιμο θεατού πεδίου",
-    "Active Mouse Button": "Ενεργό Πλήκτρο Ποντικιού",
-    "No mousebutton": "Χωρίς Πλήκτρο Ποντικιού",
-    "Left mousebutton": "Αριστερό Πλήκτρο Ποντικιού",
-    "Middle mousebutton": "Μεσαίο Πλήκτρο Ποντικιού",
-    "Right mousebutton": "Δεξί Πλήκτρο Ποντικιού",
-    "Keyboard": "Πληκτρολόγιο",
-    "Show Keyboard": "Εμφάνιση Πληκτρολογίου",
-    "Extra keys": "Επιπλέον πλήκτρα",
-    "Show Extra Keys": "Εμφάνιση Επιπλέον Πλήκτρων",
-    "Ctrl": "Ctrl",
-    "Toggle Ctrl": "Εναλλαγή Ctrl",
-    "Alt": "Alt",
-    "Toggle Alt": "Εναλλαγή Alt",
-    "Send Tab": "Αποστολή Tab",
-    "Tab": "Tab",
-    "Esc": "Esc",
-    "Send Escape": "Αποστολή Escape",
-    "Ctrl+Alt+Del": "Ctrl+Alt+Del",
-    "Send Ctrl-Alt-Del": "Αποστολή Ctrl-Alt-Del",
-    "Shutdown/Reboot": "Κλείσιμο/Επανεκκίνηση",
-    "Shutdown/Reboot...": "Κλείσιμο/Επανεκκίνηση...",
-    "Power": "Απενεργοποίηση",
-    "Shutdown": "Κλείσιμο",
-    "Reboot": "Επανεκκίνηση",
-    "Reset": "Επαναφορά",
-    "Clipboard": "Πρόχειρο",
-    "Clear": "Καθάρισμα",
-    "Fullscreen": "Πλήρης Οθόνη",
-    "Settings": "Ρυθμίσεις",
-    "Shared Mode": "Κοινόχρηστη Λειτουργία",
-    "View Only": "Μόνο Θέαση",
-    "Clip to Window": "Αποκοπή στο όριο του Παράθυρου",
-    "Scaling Mode:": "Λειτουργία Κλιμάκωσης:",
-    "None": "Καμία",
-    "Local Scaling": "Τοπική Κλιμάκωση",
-    "Remote Resizing": "Απομακρυσμένη Αλλαγή μεγέθους",
-    "Advanced": "Για προχωρημένους",
-    "Repeater ID:": "Repeater ID:",
-    "WebSocket": "WebSocket",
-    "Encrypt": "Κρυπτογράφηση",
-    "Host:": "Όνομα διακομιστή:",
-    "Port:": "Πόρτα διακομιστή:",
-    "Path:": "Διαδρομή:",
-    "Automatic Reconnect": "Αυτόματη επανασύνδεση",
-    "Reconnect Delay (ms):": "Καθυστέρηση επανασύνδεσης (ms):",
-    "Logging:": "Καταγραφή:",
-    "Disconnect": "Αποσύνδεση",
-    "Connect": "Σύνδεση",
-    "Password:": "Κωδικός Πρόσβασης:",
-    "Cancel": "Ακύρωση",
-    "Canvas not supported.": "Δεν υποστηρίζεται το στοιχείο Canvas"
-}

+ 0 - 68
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/es.json

@@ -1,68 +0,0 @@
-{
-    "Connecting...": "Conectando...",
-    "Connected (encrypted) to ": "Conectado (con encriptación) a",
-    "Connected (unencrypted) to ": "Conectado (sin encriptación) a",
-    "Disconnecting...": "Desconectando...",
-    "Disconnected": "Desconectado",
-    "Must set host": "Debes configurar el host",
-    "Reconnecting...": "Reconectando...",
-    "Password is required": "Contraseña es obligatoria",
-    "Disconnect timeout": "Tiempo de desconexión agotado",
-    "noVNC encountered an error:": "noVNC ha encontrado un error:",
-    "Hide/Show the control bar": "Ocultar/Mostrar la barra de control",
-    "Move/Drag Viewport": "Mover/Arrastrar la ventana",
-    "viewport drag": "Arrastrar la ventana",
-    "Active Mouse Button": "Botón activo del ratón",
-    "No mousebutton": "Ningún botón del ratón",
-    "Left mousebutton": "Botón izquierdo del ratón",
-    "Middle mousebutton": "Botón central del ratón",
-    "Right mousebutton": "Botón derecho del ratón",
-    "Keyboard": "Teclado",
-    "Show Keyboard": "Mostrar teclado",
-    "Extra keys": "Teclas adicionales",
-    "Show Extra Keys": "Mostrar Teclas Adicionales",
-    "Ctrl": "Ctrl",
-    "Toggle Ctrl": "Pulsar/Soltar Ctrl",
-    "Alt": "Alt",
-    "Toggle Alt": "Pulsar/Soltar Alt",
-    "Send Tab": "Enviar Tabulación",
-    "Tab": "Tabulación",
-    "Esc": "Esc",
-    "Send Escape": "Enviar Escape",
-    "Ctrl+Alt+Del": "Ctrl+Alt+Del",
-    "Send Ctrl-Alt-Del": "Enviar Ctrl+Alt+Del",
-    "Shutdown/Reboot": "Apagar/Reiniciar",
-    "Shutdown/Reboot...": "Apagar/Reiniciar...",
-    "Power": "Encender",
-    "Shutdown": "Apagar",
-    "Reboot": "Reiniciar",
-    "Reset": "Restablecer",
-    "Clipboard": "Portapapeles",
-    "Clear": "Vaciar",
-    "Fullscreen": "Pantalla Completa",
-    "Settings": "Configuraciones",
-    "Shared Mode": "Modo Compartido",
-    "View Only": "Solo visualización",
-    "Clip to Window": "Recortar al tamaño de la ventana",
-    "Scaling Mode:": "Modo de escalado:",
-    "None": "Ninguno",
-    "Local Scaling": "Escalado Local",
-    "Local Downscaling": "Reducción de escala local",
-    "Remote Resizing": "Cambio de tamaño remoto",
-    "Advanced": "Avanzado",
-    "Local Cursor": "Cursor Local",
-    "Repeater ID:": "ID del Repetidor",
-    "WebSocket": "WebSocket",
-    "Encrypt": "",
-    "Host:": "Host",
-    "Port:": "Puesto",
-    "Path:": "Ruta",
-    "Automatic Reconnect": "Reconexión automática",
-    "Reconnect Delay (ms):": "Retraso en la reconexión (ms)",
-    "Logging:": "Logging",
-    "Disconnect": "Desconectar",
-    "Connect": "Conectar",
-    "Password:": "Contraseña",
-    "Cancel": "Cancelar",
-    "Canvas not supported.": "Canvas no está soportado"
-}

+ 0 - 68
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/nl.json

@@ -1,68 +0,0 @@
-{
-    "Connecting...": "Verbinden...",
-    "Connected (encrypted) to ": "Verbonden (versleuteld) met ",
-    "Connected (unencrypted) to ": "Verbonden (onversleuteld) met ",
-    "Disconnecting...": "Verbinding verbreken...",
-    "Disconnected": "Verbinding verbroken",
-    "Must set host": "Host moeten worden ingesteld",
-    "Reconnecting...": "Opnieuw verbinding maken...",
-    "Password is required": "Wachtwoord is vereist",
-    "Disconnect timeout": "Timeout tijdens verbreken van verbinding",
-    "noVNC encountered an error:": "noVNC heeft een fout bemerkt:",
-    "Hide/Show the control bar": "Verberg/Toon de bedieningsbalk",
-    "Move/Drag Viewport": "Verplaats/Versleep Kijkvenster",
-    "viewport drag": "kijkvenster slepen",
-    "Active Mouse Button": "Actieve Muisknop",
-    "No mousebutton": "Geen muisknop",
-    "Left mousebutton": "Linker muisknop",
-    "Middle mousebutton": "Middelste muisknop",
-    "Right mousebutton": "Rechter muisknop",
-    "Keyboard": "Toetsenbord",
-    "Show Keyboard": "Toon Toetsenbord",
-    "Extra keys": "Extra toetsen",
-    "Show Extra Keys": "Toon Extra Toetsen",
-    "Ctrl": "Ctrl",
-    "Toggle Ctrl": "Ctrl aan/uitzetten",
-    "Alt": "Alt",
-    "Toggle Alt": "Alt aan/uitzetten",
-    "Send Tab": "Tab Sturen",
-    "Tab": "Tab",
-    "Esc": "Esc",
-    "Send Escape": "Escape Sturen",
-    "Ctrl+Alt+Del": "Ctrl-Alt-Del",
-    "Send Ctrl-Alt-Del": "Ctrl-Alt-Del Sturen",
-    "Shutdown/Reboot": "Uitschakelen/Herstarten",
-    "Shutdown/Reboot...": "Uitschakelen/Herstarten...",
-    "Power": "Systeem",
-    "Shutdown": "Uitschakelen",
-    "Reboot": "Herstarten",
-    "Reset": "Resetten",
-    "Clipboard": "Klembord",
-    "Clear": "Wissen",
-    "Fullscreen": "Volledig Scherm",
-    "Settings": "Instellingen",
-    "Shared Mode": "Gedeelde Modus",
-    "View Only": "Alleen Kijken",
-    "Clip to Window": "Randen buiten venster afsnijden",
-    "Scaling Mode:": "Schaalmodus:",
-    "None": "Geen",
-    "Local Scaling": "Lokaal Schalen",
-    "Local Downscaling": "Lokaal Neerschalen",
-    "Remote Resizing": "Op Afstand Formaat Wijzigen",
-    "Advanced": "Geavanceerd",
-    "Local Cursor": "Lokale Cursor",
-    "Repeater ID:": "Repeater ID:",
-    "WebSocket": "WebSocket",
-    "Encrypt": "Versleutelen",
-    "Host:": "Host:",
-    "Port:": "Poort:",
-    "Path:": "Pad:",
-    "Automatic Reconnect": "Automatisch Opnieuw Verbinden",
-    "Reconnect Delay (ms):": "Vertraging voor Opnieuw Verbinden (ms):",
-    "Logging:": "Logmeldingen:",
-    "Disconnect": "Verbinding verbreken",
-    "Connect": "Verbinden",
-    "Password:": "Wachtwoord:",
-    "Cancel": "Annuleren",
-    "Canvas not supported.": "Canvas wordt niet ondersteund."
-}

+ 0 - 69
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/pl.json

@@ -1,69 +0,0 @@
-{
-    "Connecting...": "Łączenie...",
-    "Disconnecting...": "Rozłączanie...",
-    "Reconnecting...": "Łączenie...",
-    "Internal error": "Błąd wewnętrzny",
-    "Must set host": "Host i port są wymagane",
-    "Connected (encrypted) to ": "Połączenie (szyfrowane) z ",
-    "Connected (unencrypted) to ": "Połączenie (nieszyfrowane) z ",
-    "Something went wrong, connection is closed": "Coś poszło źle, połączenie zostało zamknięte",
-    "Disconnected": "Rozłączony",
-    "New connection has been rejected with reason: ": "Nowe połączenie zostało odrzucone z powodu: ",
-    "New connection has been rejected": "Nowe połączenie zostało odrzucone",
-    "Password is required": "Hasło jest wymagane",
-    "noVNC encountered an error:": "noVNC napotkało błąd:",
-    "Hide/Show the control bar": "Pokaż/Ukryj pasek ustawień",
-    "Move/Drag Viewport": "Ruszaj/Przeciągaj Viewport",
-    "viewport drag": "przeciągnij viewport",
-    "Active Mouse Button": "Aktywny Przycisk Myszy",
-    "No mousebutton": "Brak przycisku myszy",
-    "Left mousebutton": "Lewy przycisk myszy",
-    "Middle mousebutton": "Środkowy przycisk myszy",
-    "Right mousebutton": "Prawy przycisk myszy",
-    "Keyboard": "Klawiatura",
-    "Show Keyboard": "Pokaż klawiaturę",
-    "Extra keys": "Przyciski dodatkowe",
-    "Show Extra Keys": "Pokaż przyciski dodatkowe",
-    "Ctrl": "Ctrl",
-    "Toggle Ctrl": "Przełącz Ctrl",
-    "Alt": "Alt",
-    "Toggle Alt": "Przełącz Alt",
-    "Send Tab": "Wyślij Tab",
-    "Tab": "Tab",
-    "Esc": "Esc",
-    "Send Escape": "Wyślij Escape",
-    "Ctrl+Alt+Del": "Ctrl+Alt+Del",
-    "Send Ctrl-Alt-Del": "Wyślij Ctrl-Alt-Del",
-    "Shutdown/Reboot": "Wyłącz/Uruchom ponownie",
-    "Shutdown/Reboot...": "Wyłącz/Uruchom ponownie...",
-    "Power": "Włączony",
-    "Shutdown": "Wyłącz",
-    "Reboot": "Uruchom ponownie",
-    "Reset": "Resetuj",
-    "Clipboard": "Schowek",
-    "Clear": "Wyczyść",
-    "Fullscreen": "Pełny ekran",
-    "Settings": "Ustawienia",
-    "Shared Mode": "Tryb Współdzielenia",
-    "View Only": "Tylko Podgląd",
-    "Clip to Window": "Przytnij do Okna",
-    "Scaling Mode:": "Tryb Skalowania:",
-    "None": "Brak",
-    "Local Scaling": "Skalowanie lokalne",
-    "Remote Resizing": "Skalowanie zdalne",
-    "Advanced": "Zaawansowane",
-    "Repeater ID:": "ID Repeatera:",
-    "WebSocket": "WebSocket",
-    "Encrypt": "Szyfrowanie",
-    "Host:": "Host:",
-    "Port:": "Port:",
-    "Path:": "Ścieżka:",
-    "Automatic Reconnect": "Automatycznie wznawiaj połączenie",
-    "Reconnect Delay (ms):": "Opóźnienie wznawiania (ms):",
-    "Logging:": "Poziom logowania:",
-    "Disconnect": "Rozłącz",
-    "Connect": "Połącz",
-    "Password:": "Hasło:",
-    "Cancel": "Anuluj",
-    "Canvas not supported.": "Element Canvas nie jest wspierany."
-}

+ 0 - 68
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/sv.json

@@ -1,68 +0,0 @@
-{
-    "Connecting...": "Ansluter...",
-    "Connected (encrypted) to ": "Ansluten (krypterat) till ",
-    "Connected (unencrypted) to ": "Ansluten (okrypterat) till ",
-    "Disconnecting...": "Kopplar ner...",
-    "Disconnected": "Frånkopplad",
-    "Must set host": "Du måste specifiera en värd",
-    "Reconnecting...": "Återansluter...",
-    "Password is required": "Lösenord krävs",
-    "Disconnect timeout": "Det tog för lång tid att koppla ner",
-    "noVNC encountered an error:": "noVNC stötte på ett problem:",
-    "Hide/Show the control bar": "Göm/Visa kontrollbaren",
-    "Move/Drag Viewport": "Flytta/Dra Vyn",
-    "viewport drag": "dra vy",
-    "Active Mouse Button": "Aktiv musknapp",
-    "No mousebutton": "Ingen musknapp",
-    "Left mousebutton": "Vänster musknapp",
-    "Middle mousebutton": "Mitten-musknapp",
-    "Right mousebutton": "Höger musknapp",
-    "Keyboard": "Tangentbord",
-    "Show Keyboard": "Visa Tangentbord",
-    "Extra keys": "Extraknappar",
-    "Show Extra Keys": "Visa Extraknappar",
-    "Ctrl": "Ctrl",
-    "Toggle Ctrl": "Växla Ctrl",
-    "Alt": "Alt",
-    "Toggle Alt": "Växla Alt",
-    "Send Tab": "Skicka Tab",
-    "Tab": "Tab",
-    "Esc": "Esc",
-    "Send Escape": "Skicka Escape",
-    "Ctrl+Alt+Del": "Ctrl+Alt+Del",
-    "Send Ctrl-Alt-Del": "Skicka Ctrl-Alt-Del",
-    "Shutdown/Reboot": "Stäng av/Boota om",
-    "Shutdown/Reboot...": "Stäng av/Boota om...",
-    "Power": "Ström",
-    "Shutdown": "Stäng av",
-    "Reboot": "Boota om",
-    "Reset": "Återställ",
-    "Clipboard": "Urklipp",
-    "Clear": "Rensa",
-    "Fullscreen": "Fullskärm",
-    "Settings": "Inställningar",
-    "Shared Mode": "Delat Läge",
-    "View Only": "Endast Visning",
-    "Clip to Window": "Begränsa till Fönster",
-    "Scaling Mode:": "Skalningsläge:",
-    "None": "Ingen",
-    "Local Scaling": "Lokal Skalning",
-    "Local Downscaling": "Lokal Nedskalning",
-    "Remote Resizing": "Ändra Storlek",
-    "Advanced": "Avancerat",
-    "Local Cursor": "Lokal Muspekare",
-    "Repeater ID:": "Repeater-ID:",
-    "WebSocket": "WebSocket",
-    "Encrypt": "Kryptera",
-    "Host:": "Värd:",
-    "Port:": "Port:",
-    "Path:": "Sökväg:",
-    "Automatic Reconnect": "Automatisk Återanslutning",
-    "Reconnect Delay (ms):": "Fördröjning (ms):",
-    "Logging:": "Loggning:",
-    "Disconnect": "Koppla från",
-    "Connect": "Anslut",
-    "Password:": "Lösenord:",
-    "Cancel": "Avbryt",
-    "Canvas not supported.": "Canvas stöds ej"
-}

+ 0 - 69
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/tr.json

@@ -1,69 +0,0 @@
-{
-    "Connecting...": "Bağlanıyor...",
-    "Disconnecting...": "Bağlantı kesiliyor...",
-    "Reconnecting...": "Yeniden bağlantı kuruluyor...",
-    "Internal error": "İç hata",
-    "Must set host": "Sunucuyu kur",
-    "Connected (encrypted) to ": "Bağlı (şifrelenmiş)",
-    "Connected (unencrypted) to ": "Bağlandı (şifrelenmemiş)",
-    "Something went wrong, connection is closed": "Bir şeyler ters gitti, bağlantı kesildi",
-    "Disconnected": "Bağlantı kesildi",
-    "New connection has been rejected with reason: ": "Bağlantı aşağıdaki nedenlerden dolayı reddedildi: ",
-    "New connection has been rejected": "Bağlantı reddedildi",
-    "Password is required": "Şifre gerekli",
-    "noVNC encountered an error:": "Bir hata oluştu:",
-    "Hide/Show the control bar": "Denetim masasını Gizle/Göster",
-    "Move/Drag Viewport": "Görünümü Taşı/Sürükle",
-    "viewport drag": "Görüntü penceresini sürükle",
-    "Active Mouse Button": "Aktif Fare Düğmesi",
-    "No mousebutton": "Fare düğmesi yok",
-    "Left mousebutton": "Farenin sol düğmesi",
-    "Middle mousebutton": "Farenin orta düğmesi",
-    "Right mousebutton": "Farenin sağ düğmesi",
-    "Keyboard": "Klavye",
-    "Show Keyboard": "Klavye Düzenini Göster",
-    "Extra keys": "Ekstra tuşlar",
-    "Show Extra Keys": "Ekstra tuşları göster",
-    "Ctrl": "Ctrl",
-    "Toggle Ctrl": "Ctrl Değiştir ",
-    "Alt": "Alt",
-    "Toggle Alt": "Alt Değiştir",
-    "Send Tab": "Sekme Gönder",
-    "Tab": "Sekme",
-    "Esc": "Esc",
-    "Send Escape": "Boşluk Gönder",
-    "Ctrl+Alt+Del": "Ctrl + Alt + Del",
-    "Send Ctrl-Alt-Del": "Ctrl-Alt-Del Gönder",
-    "Shutdown/Reboot": "Kapat/Yeniden Başlat",
-    "Shutdown/Reboot...": "Kapat/Yeniden Başlat...",
-    "Power": "Güç",
-    "Shutdown": "Kapat",
-    "Reboot": "Yeniden Başlat",
-    "Reset": "Sıfırla",
-    "Clipboard": "Pano",
-    "Clear": "Temizle",
-    "Fullscreen": "Tam Ekran",
-    "Settings": "Ayarlar",
-    "Shared Mode": "Paylaşım Modu",
-    "View Only": "Sadece Görüntüle",
-    "Clip to Window": "Pencereye Tıkla",
-    "Scaling Mode:": "Ölçekleme Modu:",
-    "None": "Bilinmeyen",
-    "Local Scaling": "Yerel Ölçeklendirme",
-    "Remote Resizing": "Uzaktan Yeniden Boyutlandırma",
-    "Advanced": "Gelişmiş",
-    "Repeater ID:": "Tekralayıcı ID:",
-    "WebSocket": "WebSocket",
-    "Encrypt": "Şifrele",
-    "Host:": "Ana makine:",
-    "Port:": "Port:",
-    "Path:": "Yol:",
-    "Automatic Reconnect": "Otomatik Yeniden Bağlan",
-    "Reconnect Delay (ms):": "Yeniden Bağlanma Süreci (ms):",
-    "Logging:": "Giriş yapılıyor:",
-    "Disconnect": "Bağlantıyı Kes",
-    "Connect": "Bağlan",
-    "Password:": "Parola:",
-    "Cancel": "Vazgeç",
-    "Canvas not supported.": "Tuval desteklenmiyor."
-}

+ 0 - 69
board/GfA/Display001/rootfs/var/GfA/WebVnc/novnc/app/locale/zh.json

@@ -1,69 +0,0 @@
-{
-    "Connecting...": "連線中...",
-    "Disconnecting...": "正在中斷連線...",
-    "Reconnecting...": "重新連線中...",
-    "Internal error": "內部錯誤",
-    "Must set host": "請提供主機資訊",
-    "Connected (encrypted) to ": "已加密連線到",
-    "Connected (unencrypted) to ": "未加密連線到",
-    "Something went wrong, connection is closed": "發生錯誤,連線已關閉",
-    "Failed to connect to server": "無法連線到伺服器",
-    "Disconnected": "連線已中斷",
-    "New connection has been rejected with reason: ": "連線被拒絕,原因:",
-    "New connection has been rejected": "連線被拒絕",
-    "Password is required": "請提供密碼",
-    "noVNC encountered an error:": "noVNC 遇到一個錯誤:",
-    "Hide/Show the control bar": "顯示/隱藏控制列",
-    "Move/Drag Viewport": "拖放顯示範圍",
-    "viewport drag": "顯示範圍拖放",
-    "Active Mouse Button": "啟用滑鼠按鍵",
-    "No mousebutton": "無滑鼠按鍵",
-    "Left mousebutton": "滑鼠左鍵",
-    "Middle mousebutton": "滑鼠中鍵",
-    "Right mousebutton": "滑鼠右鍵",
-    "Keyboard": "鍵盤",
-    "Show Keyboard": "顯示鍵盤",
-    "Extra keys": "額外按鍵",
-    "Show Extra Keys": "顯示額外按鍵",
-    "Ctrl": "Ctrl",
-    "Toggle Ctrl": "切換 Ctrl",
-    "Alt": "Alt",
-    "Toggle Alt": "切換 Alt",
-    "Send Tab": "送出 Tab 鍵",
-    "Tab": "Tab",
-    "Esc": "Esc",
-    "Send Escape": "送出 Escape 鍵",
-    "Ctrl+Alt+Del": "Ctrl-Alt-Del",
-    "Send Ctrl-Alt-Del": "送出 Ctrl-Alt-Del 快捷鍵",
-    "Shutdown/Reboot": "關機/重新啟動",
-    "Shutdown/Reboot...": "關機/重新啟動...",
-    "Power": "電源",
-    "Shutdown": "關機",
-    "Reboot": "重新啟動",
-    "Reset": "重設",
-    "Clipboard": "剪貼簿",
-    "Clear": "清除",
-    "Fullscreen": "全螢幕",
-    "Settings": "設定",
-    "Shared Mode": "分享模式",
-    "View Only": "僅檢視",
-    "Clip to Window": "限制/裁切視窗大小",
-    "Scaling Mode:": "縮放模式:",
-    "None": "無",
-    "Local Scaling": "本機縮放",
-    "Remote Resizing": "遠端調整大小",
-    "Advanced": "進階",
-    "Repeater ID:": "中繼站 ID",
-    "WebSocket": "WebSocket",
-    "Encrypt": "加密",
-    "Host:": "主機:",
-    "Port:": "連接埠:",
-    "Path:": "路徑:",
-    "Automatic Reconnect": "自動重新連線",
-    "Reconnect Delay (ms):": "重新連線間隔 (ms):",
-    "Logging:": "日誌級別:",
-    "Disconnect": "中斷連線",
-    "Connect": "連線",
-    "Password:": "密碼:",
-    "Cancel": "取消"
-}

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно