SPEC-3723: restructure meta-agl 69/25769/13
authorJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Tue, 8 Dec 2020 10:12:45 +0000 (11:12 +0100)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Thu, 17 Dec 2020 13:59:52 +0000 (13:59 +0000)
Goal is to reach a minimal meta-agl-core as base for IVI and IC work at the same time.
Trim dependencies and move most 'demo' related recipes to meta-agl-demo.

v2: changed to bbapend + .inc , added description
v3: testbuild of all images
v4: restore -test packagegroup and -qa images, compare manifests and adapt packagegroups.
v5: rebased
v6: merged meta-agl-distro into meta-agl-core,
    due to dependency on meta-oe, moved -test packagegroup and -qa images
      to own layer meta-agl-core-test
v7: Fixed comments from Paul Barker
v8: Update the markdown files
v9: restore wayland/weston/agl-compositor recipes/appends, reworked to
    move app f/w specific changes to bbappends in meta-app-framework and
    only demo specific weston-init changes to meta-agl-demo
v10: fix s/agldemo/aglcore/ missed in weston-init.bbappend

Description:

This patch is part 1 out of 2 large patches that implement the layer rework
discussed during the previous workshop. Essentially meta-agl-core is the
small but versatile new core layer of AGL serving as basis for
the work done by the IC and IVI EGs.
All demo related work is moved to meta-agl-demo in the 2nd patchset.
This should be applied together as atomic change.

The resulting meta-agl/* follows these guidelines:
- only bsp adaptations in meta-agl-bsp
- remove the agl-profile-* layers for simplicity
-- the packagegroup-agl(-profile)-graphical and so on
   have been kept in meta-agl-demo
- meta-agl-profile-core is now meta-agl-core
- meta-agl-core does pass yocto-check-layer
-- therefore use the bbappend + conditional + .inc file
   construct found in meta-virtualization
- meta-agl/meta-security has been merged into meta-agl/meta-app-framework
- meta-netboot does pass yocto-check-layer
- meta-pipewire does pass yocto-check-layer

Migration:
All packagegroups are preserved but they're now enabled by 'agl-demo'.

Bug-AGL: SPEC-3723

Signed-off-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org>
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: Ia6c6e5e6ce2b4ffa69ea94959cdc57c310ba7c53
Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/25769

605 files changed:
agl-layers-overview.md
meta-agl-bsp/meta-aglprofilegraphical/recipes-graphics/wayland/libva_%.bbappend [deleted file]
meta-agl-bsp/meta-core/recipes-core/ovmf/ovmf_git.bbappend [deleted file]
meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa_%.bbappend [new file with mode: 0644]
meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa_agl.inc [moved from meta-agl-bsp/meta-aglprofilegraphical/recipes-graphics/mesa/mesa_%.bbappend with 100% similarity]
meta-agl-bsp/meta-core/recipes-graphics/wayland/weston_%.bbappend [new file with mode: 0644]
meta-agl-bsp/meta-core/recipes-graphics/wayland/weston_agl.inc [moved from meta-agl-bsp/meta-aglprofilegraphical/recipes-graphics/wayland/weston_%.bbappend with 100% similarity]
meta-agl-bsp/meta-core/recipes-kernel/linux/linux-yocto_%.bbappend
meta-agl-bsp/meta-core/recipes-kernel/linux/linux-yocto_agl.inc [new file with mode: 0644]
meta-agl-bsp/meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi_%.bbappend
meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0001-Set-up-environment-for-OSTree-integration.patch [deleted file]
meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0001-fixup-build-with-gcc6.patch [deleted file]
meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0002-Replace-wraps-with-built-in-code-to-remove-dependenc.patch [deleted file]
meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0002-fixup-build-with-gcc7.patch [deleted file]
meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota_2015.07.bb [deleted file]
meta-agl-bsp/recipes-graphics/opencv/opencv/0004-Change-Max-Device-Count-To-16.patch [deleted file]
meta-agl-bsp/recipes-graphics/opencv/opencv_4.%.bbappend [deleted file]
meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf.bbappend [deleted file]
meta-agl-bsp/recipes-kernel/linux/linux-yocto_%.bbappend [deleted file]
meta-agl-core-test/conf/include/agl-test.inc [moved from meta-agl-profile-core/recipes-connectivity/connman/.appends.core with 100% similarity]
meta-agl-core-test/conf/layer.conf [new file with mode: 0644]
meta-agl-core-test/images/agl-image-minimal-qa.bb [moved from meta-agl-profile-core/recipes-platform/images/agl-image-minimal-qa.bb with 100% similarity]
meta-agl-core-test/recipes-test/aiostress/aiostress_0.22.bb [moved from meta-agl-profile-core/recipes-test/aiostress/aiostress_0.22.bb with 100% similarity]
meta-agl-core-test/recipes-test/dung/dung_3.4.25-m2.bb [moved from meta-agl-profile-core/recipes-test/dung/dung_3.4.25-m2.bb with 100% similarity]
meta-agl-core-test/recipes-test/ebizzy/ebizzy_0.3.bb [moved from meta-agl-profile-core/recipes-test/ebizzy/ebizzy_0.3.bb with 100% similarity]
meta-agl-core-test/recipes-test/ffsb/ffsb_6.0-rc2.bb [moved from meta-agl-profile-core/recipes-test/ffsb/ffsb_6.0-rc2.bb with 100% similarity]
meta-agl-core-test/recipes-test/fontconfig/fontconfig_%.bbappend [moved from meta-agl-profile-core/recipes-test/fontconfig/fontconfig_%.bbappend with 100% similarity]
meta-agl-core-test/recipes-test/freetype/files/0001-Makefile-dont-build-gfx-demos.patch [moved from meta-agl-profile-core/recipes-test/freetype/files/0001-Makefile-dont-build-gfx-demos.patch with 100% similarity]
meta-agl-core-test/recipes-test/freetype/files/0001-ft2demos-Makefile-Do-not-hardcode-libtool-path.patch [moved from meta-agl-profile-core/recipes-test/freetype/files/0001-ft2demos-Makefile-Do-not-hardcode-libtool-path.patch with 100% similarity]
meta-agl-core-test/recipes-test/freetype/freetype_2.%.bbappend [moved from meta-agl-profile-core/recipes-test/freetype/freetype_2.%.bbappend with 100% similarity]
meta-agl-core-test/recipes-test/fsfuzzer/files/0001-fix_missing_header_sys_stat.patch [moved from meta-agl-profile-core/recipes-test/fsfuzzer/files/0001-fix_missing_header_sys_stat.patch with 100% similarity]
meta-agl-core-test/recipes-test/fsfuzzer/fsfuzzer_0.7.bb [moved from meta-agl-profile-core/recipes-test/fsfuzzer/fsfuzzer_0.7.bb with 100% similarity]
meta-agl-core-test/recipes-test/glmark2/glmark2_%.bbappendNOT [moved from meta-agl-profile-core/recipes-test/glmark2/glmark2_%.bbappend with 100% similarity]
meta-agl-core-test/recipes-test/himeno/himeno_2.0.bb [moved from meta-agl-profile-core/recipes-test/himeno/himeno_2.0.bb with 100% similarity]
meta-agl-core-test/recipes-test/interbench/files/interbench.c.patch [moved from meta-agl-profile-core/recipes-test/interbench/files/interbench.c.patch with 100% similarity]
meta-agl-core-test/recipes-test/interbench/interbench_0.31.bb [moved from meta-agl-profile-core/recipes-test/interbench/interbench_0.31.bb with 100% similarity]
meta-agl-core-test/recipes-test/ipv6connect/ipv6connect.bb [moved from meta-agl-profile-core/recipes-test/ipv6connect/ipv6connect.bb with 100% similarity]
meta-agl-core-test/recipes-test/linpack/linpack.bb [moved from meta-agl-profile-core/recipes-test/linpack/linpack.bb with 100% similarity]
meta-agl-core-test/recipes-test/linus-stress/linus-stress.bb [moved from meta-agl-profile-core/recipes-test/linus-stress/linus-stress.bb with 100% similarity]
meta-agl-core-test/recipes-test/packagegroups/packagegroup-agl-test.bb [moved from meta-agl-profile-core/recipes-test/packagegroups/packagegroup-agl-test.bb with 53% similarity]
meta-agl-core-test/recipes-test/trinity/trinity_git.bb [moved from meta-agl-profile-core/recipes-test/trinity/trinity_git.bb with 100% similarity]
meta-agl-core/LICENSE [moved from meta-agl-distro/LICENSE with 100% similarity]
meta-agl-core/LICENSE.GPL-2.0-only [moved from meta-agl-distro/LICENSE.GPL-2.0-only with 100% similarity]
meta-agl-core/LICENSE.MIT [moved from meta-agl-distro/LICENSE.MIT with 100% similarity]
meta-agl-core/README [new symlink]
meta-agl-core/README-AGL.md [new file with mode: 0644]
meta-agl-core/classes/cloc.bbclass [moved from meta-agl-profile-core/classes/cloc.bbclass with 100% similarity]
meta-agl-core/classes/sanity-meta-agl-core.bbclass [new file with mode: 0644]
meta-agl-core/conf/bblayers.conf.sample [new file with mode: 0644]
meta-agl-core/conf/distro/include/aarch64-tune.inc [moved from meta-agl-distro/conf/distro/include/aarch64-tune.inc with 100% similarity]
meta-agl-core/conf/distro/include/arc-tune.inc [moved from meta-agl-distro/conf/distro/include/arc-tune.inc with 100% similarity]
meta-agl-core/conf/distro/include/arm-tune.inc [moved from meta-agl-distro/conf/distro/include/arm-tune.inc with 100% similarity]
meta-agl-core/conf/distro/include/riscv64-tune.inc [moved from meta-agl-distro/conf/distro/include/riscv64-tune.inc with 100% similarity]
meta-agl-core/conf/distro/include/x86_64-tune.inc [moved from meta-agl-distro/conf/distro/include/x86_64-tune.inc with 100% similarity]
meta-agl-core/conf/distro/poky-agl.conf [moved from meta-agl-distro/conf/distro/poky-agl.conf with 100% similarity]
meta-agl-core/conf/include/agl-devel.inc [moved from meta-agl-profile-core/conf/include/agl-devel.inc with 100% similarity]
meta-agl-core/conf/include/agl-gplv2.inc [moved from meta-agl-profile-core/conf/include/agl-gplv2.inc with 100% similarity]
meta-agl-core/conf/include/base-agl.inc [moved from meta-agl-profile-core/conf/include/base-agl.inc with 96% similarity]
meta-agl-core/conf/layer.conf [new file with mode: 0644]
meta-agl-core/conf/local.conf.sample [new file with mode: 0644]
meta-agl-core/files/group [moved from meta-agl-profile-core/files/group with 100% similarity]
meta-agl-core/files/passwd [moved from meta-agl-profile-core/files/passwd with 100% similarity]
meta-agl-core/recipes-connectivity/busybox/busybox_%.bbappend [new file with mode: 0644]
meta-agl-core/recipes-connectivity/busybox/busybox_aglcore.inc [new file with mode: 0644]
meta-agl-core/recipes-connectivity/busybox/files/enable-wget-https.cfg [moved from meta-agl-profile-core/recipes-connectivity/busybox/files/enable-wget-https.cfg with 100% similarity]
meta-agl-core/recipes-connectivity/connman-ncurses/connman-ncurses_git.bb [moved from meta-agl-profile-core/recipes-connectivity/connman-ncurses/connman-ncurses_git.bb with 100% similarity]
meta-agl-core/recipes-connectivity/connman/connman_%.bbappend [new file with mode: 0644]
meta-agl-core/recipes-connectivity/connman/connman_aglcore.inc [moved from meta-agl-profile-core/recipes-connectivity/connman/connman_%.bbappend with 100% similarity]
meta-agl-core/recipes-connectivity/connman/files/0001-disable-when-booting-over-nfs.patch [moved from meta-agl-profile-core/recipes-connectivity/connman/files/0001-disable-when-booting-over-nfs.patch with 100% similarity]
meta-agl-core/recipes-connectivity/connman/files/main.conf [moved from meta-agl-profile-core/recipes-connectivity/connman/files/main.conf with 100% similarity]
meta-agl-core/recipes-core/systemd/.appends.core [moved from meta-agl-profile-core/recipes-core/dbus/.appends.core with 100% similarity]
meta-agl-core/recipes-core/systemd/systemd-conf_%.bbappend [new file with mode: 0644]
meta-agl-core/recipes-core/systemd/systemd-conf_aglcore.inc [moved from meta-agl-profile-core/recipes-core/systemd/systemd-conf_%.bbappend with 100% similarity]
meta-agl-core/recipes-core/systemd/systemd/0001-fix-udevd-seclabel-parsing.patch [new file with mode: 0644]
meta-agl-core/recipes-core/systemd/systemd/0002-network-add-CAN-Termination-tristate-option.patch [moved from meta-agl-profile-core/recipes-core/systemd/systemd/0002-network-add-CAN-Termination-tristate-option.patch with 100% similarity]
meta-agl-core/recipes-core/systemd/systemd/canbus-can.network [moved from meta-agl-profile-core/recipes-core/systemd/systemd/canbus-can.network with 100% similarity]
meta-agl-core/recipes-core/systemd/systemd/e2fsck.conf [moved from meta-agl-profile-core/recipes-core/systemd/systemd/e2fsck.conf with 100% similarity]
meta-agl-core/recipes-core/systemd/systemd/wired.network [moved from meta-agl-profile-core/recipes-core/systemd/systemd/wired.network with 100% similarity]
meta-agl-core/recipes-core/systemd/systemd_%.bbappend [new file with mode: 0644]
meta-agl-core/recipes-core/systemd/systemd_aglcore.inc [moved from meta-agl-profile-core/recipes-core/systemd/systemd_%.bbappend with 96% similarity]
meta-agl-core/recipes-devtools/cmake/cmake_%.bbappend [new file with mode: 0644]
meta-agl-core/recipes-devtools/cmake/cmake_aglcore.inc [moved from meta-agl-profile-core/recipes-devtools/cmake/cmake_%.bbappend with 100% similarity]
meta-agl-core/recipes-devtools/cmake/files/environment.d-cmake-agl.sh [moved from meta-agl-profile-core/recipes-devtools/cmake/files/environment.d-cmake-agl.sh with 100% similarity]
meta-agl-core/recipes-devtools/gdb/.appends.core [moved from meta-agl-profile-core/recipes-core/psplash/.appends.core with 100% similarity]
meta-agl-core/recipes-devtools/gdb/gdb_%.bbappend [new file with mode: 0644]
meta-agl-core/recipes-devtools/gdb/gdb_aglcore.inc [moved from meta-agl-profile-core/recipes-devtools/gdb/gdb_%.bbappend with 100% similarity]
meta-agl-core/recipes-extended/gperf/.appends.core [moved from meta-agl-profile-core/recipes-core/systemd/.appends.core with 100% similarity]
meta-agl-core/recipes-extended/gperf/gperf_%.bbappend [new file with mode: 0644]
meta-agl-core/recipes-extended/gperf/gperf_aglcore.inc [moved from meta-agl-profile-core/recipes-extended/gperf/gperf_%.bbappend with 100% similarity]
meta-agl-core/recipes-graphics/wayland/Readme.weston-ini-conf [moved from meta-agl-profile-graphical/recipes-graphics/wayland/Readme.weston-ini-conf with 100% similarity]
meta-agl-core/recipes-graphics/wayland/agl-compositor_git.bb [moved from meta-agl-profile-graphical/recipes-graphics/wayland/agl-compositor_git.bb with 100% similarity]
meta-agl-core/recipes-graphics/wayland/waltham-transmitter_git.bb [moved from meta-agl-profile-graphical/recipes-graphics/wayland/waltham-transmitter_git.bb with 91% similarity]
meta-agl-core/recipes-graphics/wayland/waltham/0001-Use-python3-instead-of-2.patch [moved from meta-agl-profile-graphical/recipes-graphics/wayland/waltham/0001-Use-python3-instead-of-2.patch with 100% similarity]
meta-agl-core/recipes-graphics/wayland/waltham/0001-waltham-Fix-compile-build-error.patch [moved from meta-agl-profile-graphical/recipes-graphics/wayland/waltham/0001-waltham-Fix-compile-build-error.patch with 100% similarity]
meta-agl-core/recipes-graphics/wayland/waltham/0002-commandxml-Add-support-wthp_app_id-interface.patch [moved from meta-agl-profile-graphical/recipes-graphics/wayland/waltham/0002-commandxml-Add-support-wthp_app_id-interface.patch with 100% similarity]
meta-agl-core/recipes-graphics/wayland/waltham_%.bbappend [moved from meta-agl-profile-graphical/recipes-graphics/wayland/waltham_%.bbappend with 100% similarity]
meta-agl-core/recipes-graphics/wayland/waltham_git.bb [moved from meta-agl-profile-graphical/recipes-graphics/wayland/waltham_git.bb with 100% similarity]
meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bb [moved from meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf.bb with 73% similarity]
meta-agl-core/recipes-graphics/wayland/weston-ini-conf.bbappend [moved from meta-agl-bsp/meta-aglprofilegraphical/recipes-graphics/wayland/weston-ini-conf.bbappend with 69% similarity]
meta-agl-core/recipes-graphics/wayland/weston-ini-conf/core.cfg [moved from meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/core.cfg with 100% similarity]
meta-agl-core/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-270.cfg [moved from meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-270.cfg with 100% similarity]
meta-agl-core/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-90.cfg [moved from meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-90.cfg with 100% similarity]
meta-agl-core/recipes-graphics/wayland/weston-ini-conf/remote-output.cfg [moved from meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/remote-output.cfg with 100% similarity]
meta-agl-core/recipes-graphics/wayland/weston-ini-conf/shell.cfg [moved from meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf/shell.cfg with 100% similarity]
meta-agl-core/recipes-graphics/wayland/weston-ini-conf/virtual.cfg [moved from meta-agl-bsp/meta-aglprofilegraphical/recipes-graphics/wayland/weston-ini-conf/virtual.cfg with 100% similarity]
meta-agl-core/recipes-graphics/wayland/weston-init.bbappend [new file with mode: 0644]
meta-agl-core/recipes-graphics/wayland/weston-init_aglcore.inc [new file with mode: 0644]
meta-agl-core/recipes-graphics/wayland/weston/0001-libweston-Expose-weston_output_damage-in-libweston.patch [moved from meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-libweston-Expose-weston_output_damage-in-libweston.patch with 100% similarity]
meta-agl-core/recipes-graphics/wayland/weston/0001-libweston-Migrate-weston_seat_init-release-to-public.patch [moved from meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-libweston-Migrate-weston_seat_init-release-to-public.patch with 100% similarity]
meta-agl-core/recipes-graphics/wayland/weston/0005-correctly-tear-down-drm-backend.patch [moved from meta-agl-profile-graphical/recipes-graphics/wayland/weston/0005-correctly-tear-down-drm-backend.patch with 100% similarity]
meta-agl-core/recipes-graphics/wayland/weston_8.0.%.bbappend [new file with mode: 0644]
meta-agl-core/recipes-graphics/wayland/weston_8.0_aglcore.inc [new file with mode: 0644]
meta-agl-core/recipes-kernel/linux/kernel-devsrc.bbappend [new file with mode: 0644]
meta-agl-core/recipes-kernel/linux/kernel-devsrc_agl.inc [moved from meta-agl-bsp/recipes-kernel/linux/kernel-devsrc.bbappend with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux-4.14/Smack-Handle-CGROUP2-in-the-same-way-that-CGROUP.patch [moved from meta-agl-bsp/recipes-kernel/linux/linux-4.14/Smack-Handle-CGROUP2-in-the-same-way-that-CGROUP.patch with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux-4.14/Smack-Privilege-check-on-key-operations.patch [moved from meta-agl-bsp/recipes-kernel/linux/linux-4.14/Smack-Privilege-check-on-key-operations.patch with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux-4.14/net-sch_generic-add-if_afp.h-header-to-get-ARPHRD_CA.patch [moved from meta-agl-bsp/recipes-kernel/linux/linux-4.14/net-sch_generic-add-if_afp.h-header-to-get-ARPHRD_CA.patch with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux-agl-4.14.inc [moved from meta-agl-bsp/recipes-kernel/linux/linux-agl-4.14.inc with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux-agl-4.19.inc [moved from meta-agl-bsp/recipes-kernel/linux/linux-agl-4.19.inc with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux-agl.inc [moved from meta-agl-bsp/recipes-kernel/linux/linux-agl.inc with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/btusb.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/btusb.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/can-bus.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/can-bus.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/drm.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/drm.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/fanotify.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/fanotify.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/hid.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/hid.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/i2c-led.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/i2c-led.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/iiodevice.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/iiodevice.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/joystick.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/joystick.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/nbd.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/nbd.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/net-sch_generic-Use-pfifo_fast-as-fallback-scheduler.patch [moved from meta-agl-bsp/recipes-kernel/linux/linux/net-sch_generic-Use-pfifo_fast-as-fallback-scheduler.patch with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/netfilter.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/netfilter.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/nfc.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/nfc.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/overlayfs.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/overlayfs.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/procevent.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/procevent.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/ramdisk.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/ramdisk.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/rtc.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/rtc.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/rtl_sdr.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/rtl_sdr.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/scheddebug.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/scheddebug.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/sound-hda.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/sound-hda.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/sound.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/sound.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/systemtap.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/systemtap.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/uinput.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/uinput.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/usb.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/usb.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/usbaudio.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/usbaudio.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/usbmodem.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/usbmodem.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/uvc.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/uvc.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/vbox-vmware-sata.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/vbox-vmware-sata.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/wifi.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/wifi.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/x86-extra-graphic-devices.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/x86-extra-graphic-devices.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/x86-net-devices.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/x86-net-devices.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/x86-security-tpm.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/x86-security-tpm.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/x86-upsquare.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/x86-upsquare.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/x86-usb-devices.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/x86-usb-devices.cfg with 100% similarity]
meta-agl-core/recipes-kernel/linux/linux/xen_domu.cfg [moved from meta-agl-bsp/recipes-kernel/linux/linux/xen_domu.cfg with 100% similarity]
meta-agl-core/recipes-platform/images/agl-image-boot.bb [moved from meta-agl-profile-core/recipes-platform/images/agl-image-boot.bb with 100% similarity]
meta-agl-core/recipes-platform/images/agl-image-boot.inc [moved from meta-agl-profile-core/recipes-platform/images/agl-image-boot.inc with 100% similarity]
meta-agl-core/recipes-platform/images/agl-image-core-autobuilder.bb [new file with mode: 0644]
meta-agl-core/recipes-platform/images/agl-image-minimal-crosssdk.bb [moved from meta-agl-profile-core/recipes-platform/images/agl-image-minimal-crosssdk.bb with 100% similarity]
meta-agl-core/recipes-platform/images/agl-image-minimal-crosssdk.inc [new file with mode: 0644]
meta-agl-core/recipes-platform/images/agl-image-minimal.bb [moved from meta-agl-profile-core/recipes-platform/images/agl-image-minimal.bb with 100% similarity]
meta-agl-core/recipes-platform/images/agl-image-minimal.inc [moved from meta-agl-profile-core/recipes-platform/images/agl-image-minimal.inc with 100% similarity]
meta-agl-core/recipes-platform/images/agl-image-weston.bb [moved from meta-agl-profile-graphical/recipes-platform/images/agl-image-weston.bb with 100% similarity]
meta-agl-core/recipes-platform/images/agl-image-weston.inc [moved from meta-agl-profile-graphical/recipes-platform/images/agl-image-weston.inc with 100% similarity]
meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-boot.bb [moved from meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-boot.bb with 98% similarity]
meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-connectivity.bb [moved from meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-connectivity.bb with 85% similarity]
meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-devel.bb [moved from meta-agl-profile-core/recipes-devtools/packagegroups/packagegroup-agl-core-devel.bb with 71% similarity]
meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-os-commonlibs.bb [moved from meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-os-commonlibs.bb with 100% similarity]
meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-security.bb [moved from meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-security.bb with 100% similarity]
meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-graphical-multimedia.bb [moved from meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-multimedia.bb with 100% similarity]
meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-graphical-weston.bb [moved from meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-weston.bb with 75% similarity]
meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-boot.bb [moved from meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-image-boot.bb with 100% similarity]
meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bb [moved from meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bb with 92% similarity]
meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-profile-graphical.bb [moved from meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-profile-graphical.bb with 92% similarity]
meta-agl-core/recipes-support/libsoup/libsoup-2.4_%.bbappend [moved from meta-agl-profile-core/recipes-support/libsoup/libsoup-2.4_%.bbappend with 100% similarity]
meta-agl-core/recipes-support/ptest-runner/ptest-runner/0007-WIP-Initial-LAVA-support.patch [moved from meta-agl-bsp/recipes-support/ptest-runner/ptest-runner/0007-WIP-Initial-LAVA-support.patch with 100% similarity]
meta-agl-core/recipes-support/ptest-runner/ptest-runner_2.%.bbappend [new file with mode: 0644]
meta-agl-core/recipes-support/ptest-runner/ptest-runner_agl.inc [moved from meta-agl-bsp/recipes-support/ptest-runner/ptest-runner_2.%.bbappend with 51% similarity]
meta-agl-core/scripts/oe-depends-dot [moved from meta-agl-distro/scripts/oe-depends-dot with 100% similarity]
meta-agl-core/scripts/run-yocto-check-layer-feature-enabled.sh [new file with mode: 0755]
meta-agl-core/scripts/run-yocto-check-layer.sh [new file with mode: 0755]
meta-agl-distro/README [deleted file]
meta-agl-distro/conf/layer.conf [deleted file]
meta-agl-profile-cluster-qt5/LICENSE [deleted file]
meta-agl-profile-cluster-qt5/LICENSE.GPL-2.0-only [deleted file]
meta-agl-profile-cluster-qt5/LICENSE.MIT [deleted file]
meta-agl-profile-cluster-qt5/conf/layer.conf [deleted file]
meta-agl-profile-cluster-qt5/recipes-platform/images/agl-image-cluster-qt5.bb [deleted file]
meta-agl-profile-cluster-qt5/recipes-platform/images/agl-image-cluster-qt5.inc [deleted file]
meta-agl-profile-cluster-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-cluster-qt5.bb [deleted file]
meta-agl-profile-cluster-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-cluster-qtcompositor.bb [deleted file]
meta-agl-profile-cluster-qt5/recipes-qt/qt5/files/0001-fixed-eglfs_kms-fails-to-build.patch [deleted file]
meta-agl-profile-cluster-qt5/recipes-qt/qt5/files/0002-fixed-invalid-conversion-from-EGLNativeDisplayType-to-void.patch [deleted file]
meta-agl-profile-cluster-qt5/recipes-qt/qt5/qtbase_%.bbappend [deleted file]
meta-agl-profile-cluster-qt5/recipes-qt/qt5/qtcompositor-conf_1.0.bb [deleted file]
meta-agl-profile-cluster/LICENSE [deleted file]
meta-agl-profile-cluster/LICENSE.GPL-2.0-only [deleted file]
meta-agl-profile-cluster/LICENSE.MIT [deleted file]
meta-agl-profile-cluster/conf/layer.conf [deleted file]
meta-agl-profile-cluster/recipes-platform/images/agl-image-cluster.bb [deleted file]
meta-agl-profile-cluster/recipes-platform/images/agl-image-cluster.inc [deleted file]
meta-agl-profile-cluster/recipes-platform/packagegroups/packagegroup-agl-profile-cluster.bb [deleted file]
meta-agl-profile-core/LICENSE [deleted file]
meta-agl-profile-core/LICENSE.GPL-2.0-only [deleted file]
meta-agl-profile-core/LICENSE.MIT [deleted file]
meta-agl-profile-core/conf/layer.conf [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-bluetooth-map/agl-service-bluetooth-map_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-bluetooth-pbap/agl-service-bluetooth-pbap_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-bluetooth/agl-service-bluetooth_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-can-low-level/agl-service-can-low-level_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-can-low-level/files/run-ptest [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-data-persistence/agl-service-data-persistence_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-geoclue/agl-service-geoclue_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-geofence/agl-service-geofence_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-gps/agl-service-gps_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-hvac/agl-service-hvac-conf_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-hvac/agl-service-hvac_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-identity-agent/agl-service-identity-agent_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-iiodevices/agl-service-iiodevices_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-mediascanner/agl-service-mediascanner_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-navigation/agl-service-navigation_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-network/agl-service-network_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-nfc/agl-service-nfc_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-platform-info/agl-service-platform-info_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-signal-composer/agl-service-signal-composer_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-signal-composer/files/run-ptest [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-telephony/agl-service-telephony_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-unicens-controller/agl-service-unicens-controller_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-unicens/agl-service-unicens_git.bb [deleted file]
meta-agl-profile-core/recipes-apis/agl-service-weather/agl-service-weather_git.bb [deleted file]
meta-agl-profile-core/recipes-config/agl-login-manager/agl-login-manager_0.1.bb [deleted file]
meta-agl-profile-core/recipes-config/agl-users/agl-users_0.1.bb [deleted file]
meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping/dev-mapping.conf.default [deleted file]
meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping_0.1.bb [deleted file]
meta-agl-profile-core/recipes-connectivity/bluez-alsa/bluez-alsa_git.bb [deleted file]
meta-agl-profile-core/recipes-connectivity/bluez-alsa/files/bluez-alsa.service [deleted file]
meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/bluetooth.conf [deleted file]
meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/bluetooth.service [deleted file]
meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/obex.service [deleted file]
meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/tmpdir.conf [deleted file]
meta-agl-profile-core/recipes-connectivity/bluez5/bluez5_%.bbappend [deleted file]
meta-agl-profile-core/recipes-connectivity/busybox/busybox_%.bbappend [deleted file]
meta-agl-profile-core/recipes-connectivity/neard/files/0001-systemd-neard-add-multi-user.target-to-neard.service.patch [deleted file]
meta-agl-profile-core/recipes-connectivity/neard/files/0002-ndef-avoid-dbus-property_get_type-method-on-empty-re.patch [deleted file]
meta-agl-profile-core/recipes-connectivity/neard/neard_0.16.bbappend [deleted file]
meta-agl-profile-core/recipes-connectivity/neardal/neardal.inc [deleted file]
meta-agl-profile-core/recipes-connectivity/neardal/neardal/0001-neardal-ncl-fix-segfault-on-help-page-being-displaye.patch [deleted file]
meta-agl-profile-core/recipes-connectivity/neardal/neardal/0002-neardal-lib-fix-memory-corruption.patch [deleted file]
meta-agl-profile-core/recipes-connectivity/neardal/neardal/ncl.patch [deleted file]
meta-agl-profile-core/recipes-connectivity/neardal/neardal_0.14.bb [deleted file]
meta-agl-profile-core/recipes-connectivity/ofono/files/0001-provision-allow-duplicate-entries-from-mbpi_lookup_a.patch [deleted file]
meta-agl-profile-core/recipes-connectivity/ofono/files/ofono.conf [deleted file]
meta-agl-profile-core/recipes-connectivity/ofono/ofono_%.bbappend [deleted file]
meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr/0001-remove-I-usr-include-in-pkg-config.patch [deleted file]
meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb [deleted file]
meta-agl-profile-core/recipes-core/dbus/dbus/dbus.service [deleted file]
meta-agl-profile-core/recipes-core/dbus/dbus/dbus.socket [deleted file]
meta-agl-profile-core/recipes-core/dbus/dbus/dbus_env.conf [deleted file]
meta-agl-profile-core/recipes-core/dbus/dbus/libdbus-c++/dbus-c++-threading.patch [deleted file]
meta-agl-profile-core/recipes-core/dbus/dbus_%.bbappend [deleted file]
meta-agl-profile-core/recipes-core/dbus/libdbus-c++/dbus-c++-threading.patch [deleted file]
meta-agl-profile-core/recipes-core/dbus/libdbus-c++_0.9.0.bbappend [deleted file]
meta-agl-profile-core/recipes-core/distro-build-manifest/distro-build-manifest.bb [deleted file]
meta-agl-profile-core/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend [deleted file]
meta-agl-profile-core/recipes-core/psplash/files/psplash-colors.h [deleted file]
meta-agl-profile-core/recipes-core/psplash/files/psplash-poky-img.h [deleted file]
meta-agl-profile-core/recipes-core/psplash/psplash_git.bbappend [deleted file]
meta-agl-profile-core/recipes-devtools/gdb/.appends.core [deleted file]
meta-agl-profile-core/recipes-devtools/json-c/json-c_%.bbappend [deleted file]
meta-agl-profile-core/recipes-devtools/low-level-can-generator/low-level-can-generator_git.bb [deleted file]
meta-agl-profile-core/recipes-devtools/packagegroups/nativesdk-packagegroup-sdk-host.bbappend [deleted file]
meta-agl-profile-core/recipes-devtools/python/python3-asyncssh_2.3.0.bb [deleted file]
meta-agl-profile-core/recipes-devtools/python/python3-pytest-dependency_0.5.1.bb [deleted file]
meta-agl-profile-core/recipes-devtools/python/python3-pytest-reverse_1.0.1.bb [deleted file]
meta-agl-profile-core/recipes-devtools/qemu/qemu_%.bbappend [deleted file]
meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts [deleted file]
meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts.service [deleted file]
meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts_1.0.bb [deleted file]
meta-agl-profile-core/recipes-extended/gperf/.appends.core [deleted file]
meta-agl-profile-core/recipes-kernel/most/files/0002-src-most-add-auto-conf-feature.patch [deleted file]
meta-agl-profile-core/recipes-kernel/most/files/0003-core-remove-kernel-log-for-MBO-status.patch [deleted file]
meta-agl-profile-core/recipes-kernel/most/files/0004-most-video-set-device_caps.patch [deleted file]
meta-agl-profile-core/recipes-kernel/most/files/0005-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch [deleted file]
meta-agl-profile-core/recipes-kernel/most/files/0006-dim2-fix-startup-sequence.patch [deleted file]
meta-agl-profile-core/recipes-kernel/most/files/0007-dim2-use-device-tree.patch [deleted file]
meta-agl-profile-core/recipes-kernel/most/files/0008-dim2-read-clock-speed-from-the-device-tree.patch [deleted file]
meta-agl-profile-core/recipes-kernel/most/files/0009-dim2-use-device-for-coherent-memory-allocation.patch [deleted file]
meta-agl-profile-core/recipes-kernel/most/files/0010-backport-usb-setup-timer.patch [deleted file]
meta-agl-profile-core/recipes-kernel/most/files/0011-handle-snd_pcm_lib_mmap_vmalloc-removal.patch [deleted file]
meta-agl-profile-core/recipes-kernel/most/files/0012-Fix-build-with-5.4-kernel.patch [deleted file]
meta-agl-profile-core/recipes-kernel/most/most.bb [deleted file]
meta-agl-profile-core/recipes-kernel/most/most.bbappend [deleted file]
meta-agl-profile-core/recipes-multimedia/libmp4v2/files/0001-add-a-configure-option-to-disable-build-of-man-pages.patch [deleted file]
meta-agl-profile-core/recipes-multimedia/libmp4v2/libmp4v2_git.bb [deleted file]
meta-agl-profile-core/recipes-multimedia/lightmediascanner/.appends.meta-efl [deleted file]
meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/0001-Define-comparison_fn_t-for-non-glibc-systems.patch [deleted file]
meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/0002-switch-from-G_BUS_TYPE_SESSION-to-G_BUS_TYPE_SYSTEM.patch [deleted file]
meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/dbus-lightmediascanner.conf [deleted file]
meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/id3-plugin-support-out-of-tree-build.patch [deleted file]
meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/lightmediascanner.service [deleted file]
meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/plugin-ogg-fix-chucksize-issue.patch [deleted file]
meta-agl-profile-core/recipes-multimedia/lightmediascanner/lightmediascanner_%.bbappend [deleted file]
meta-agl-profile-core/recipes-multimedia/lightmediascanner/lightmediascanner_0.5.1.bb [deleted file]
meta-agl-profile-core/recipes-navigation/geoclue/files/org.freedesktop.GeoClue2.Client.conf [deleted file]
meta-agl-profile-core/recipes-navigation/geoclue/geoclue_%.bbappend [deleted file]
meta-agl-profile-core/recipes-navigation/gpsd/gpsd_%.bbappend [deleted file]
meta-agl-profile-core/recipes-platform/images/agl-image-minimal-crosssdk.inc [deleted file]
meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-services.bb [deleted file]
meta-agl-profile-core/recipes-support/curl/curl_%.bbappend [deleted file]
meta-agl-profile-core/recipes-support/opencv/opencv_4.%.bbappend [deleted file]
meta-agl-profile-core/recipes-support/udisks/files/99-udisks2.rules [deleted file]
meta-agl-profile-core/recipes-support/udisks/files/automount.service [deleted file]
meta-agl-profile-core/recipes-support/udisks/files/automount.sh [deleted file]
meta-agl-profile-core/recipes-support/udisks/udisks2_%.bbappend [deleted file]
meta-agl-profile-core/recipes-test/gcovr-wrapper/gcovr-wrapper/gcovr-wrapper [deleted file]
meta-agl-profile-core/recipes-test/gcovr-wrapper/gcovr-wrapper_1.0.bb [deleted file]
meta-agl-profile-core/recipes-test/gcovr/gcovr/0001-add-gcov-filter-source-errors-option.patch [deleted file]
meta-agl-profile-core/recipes-test/gcovr/gcovr_%.bbappend [deleted file]
meta-agl-profile-core/recipes-test/gcovr/gcovr_git.bb [deleted file]
meta-agl-profile-core/recipes-test/pyagl/pyagl_git.bb [deleted file]
meta-agl-profile-graphical-html5/conf/layer.conf [deleted file]
meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf.bbappend [deleted file]
meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-180.cfg [deleted file]
meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/virtual-landscape.cfg [deleted file]
meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.bb [deleted file]
meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.inc [deleted file]
meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-appfw-html5.bb [deleted file]
meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-html5.bb [deleted file]
meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium-browser-service.bb [deleted file]
meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68/v8-qemu-wrapper.patch [deleted file]
meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68_git.bb [deleted file]
meta-agl-profile-graphical-html5/recipes-wam/chromium/gn-utils.inc [deleted file]
meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr.env [deleted file]
meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr@.service [deleted file]
meta-agl-profile-graphical-html5/recipes-wam/wam/files/trunc-webapp-roles.patch [deleted file]
meta-agl-profile-graphical-html5/recipes-wam/wam/wam_git.bb [deleted file]
meta-agl-profile-graphical-qt5/LICENSE [deleted file]
meta-agl-profile-graphical-qt5/LICENSE.GPL-2.0-only [deleted file]
meta-agl-profile-graphical-qt5/LICENSE.MIT [deleted file]
meta-agl-profile-graphical-qt5/conf/layer.conf [deleted file]
meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5-crosssdk.bb [deleted file]
meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5-crosssdk.inc [deleted file]
meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.bb [deleted file]
meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.inc [deleted file]
meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-appfw-native-qt5.bb [deleted file]
meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-demo-qt-examples.bb [deleted file]
meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-qt5.bb [deleted file]
meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-qt5-toolchain-target.bbappend [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qlibhomescreen/qlibhomescreen_git.bb [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qml-execscript-plugin/qml-execscript-plugin_1.0.bb [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase-native_git.bbappend [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase/0001-Force-qdbus-to-make-introspect-for-every-findMetaObj.patch [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase_%.bbappend [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtlocation/0001-mapbox-update-API-url-to-match-new-schema.patch [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtlocation_%.bbappend [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia/0001-metadata-image-support-with-the-data-URL-scheme-for-.patch [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia_%.bbappend [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtsystems_%.bbappend [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland-config/qtwayland [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland-config_1.0.0.bb [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0001-protocol-update-3rd-party-ivi-application-protocol.patch [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0010-Added-manifest-file-according-to-smack-3-domain-mode.patch [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0016-xdg-shell-Add-xdg-shell-protocol-file-version-1.4.0.patch [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0017-xdg-shell-Add-minimize-feature-to-QWindow-using-wayl.patch [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0019-xdg-shell-upgrade-to-support-current-version-weston-.patch [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0021-Implement-initial-IVI-Shell-support.patch [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0099_qtwayland_no_evdev.patch [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/UNUSED_NEEDS_CHECK_YOCTO_0018-packaging-enable-xdg-shell-at-runtime.patch [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland_%.bbappend [deleted file]
meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwebkit_%.bbappend [deleted file]
meta-agl-profile-graphical/LICENSE [deleted file]
meta-agl-profile-graphical/LICENSE.GPL-2.0-only [deleted file]
meta-agl-profile-graphical/LICENSE.MIT [deleted file]
meta-agl-profile-graphical/classes/agl-graphical.bbclass [deleted file]
meta-agl-profile-graphical/conf/layer.conf [deleted file]
meta-agl-profile-graphical/recipes-apis/agl-service-homescreen/agl-service-homescreen_git.bb [deleted file]
meta-agl-profile-graphical/recipes-apis/agl-service-mediaplayer/agl-service-mediaplayer_git.bb [deleted file]
meta-agl-profile-graphical/recipes-apis/agl-service-radio/agl-service-radio_git.bb [deleted file]
meta-agl-profile-graphical/recipes-apis/agl-service-taskmanager/agl-service-taskmanager.bb [deleted file]
meta-agl-profile-graphical/recipes-graphics/hmi-debug/files/hmi-debug [deleted file]
meta-agl-profile-graphical/recipes-graphics/hmi-debug/hmi-debug_git.bb [deleted file]
meta-agl-profile-graphical/recipes-graphics/libhomescreen/libhomescreen_git.bb [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0001-Added-ivi-id-agent-to-CMake.patch [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0002-add-LayerManagerControl-error-status.patch [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0002-ivi-id-agent-added-ivi-id-agent.patch [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0003-ivi-controller-load-id-agent-module.patch [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0004-ivi-ilmcontrol-added-focus-notification.patch [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0005-disable-EGLWLMockNavigation-example-build.patch [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0006-fix-plugin-registry-include.patch [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/wandboard_fix_build.patch [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension_git.bb [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/tmpfiles.conf.in [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston-dep.conf.in [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.conf.in [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri-imx.rules.in [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri.rules.in [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-input.rules.in [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-tty.rules.in [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/weston-ready/weston-ready [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/weston-ready/weston-ready.service [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/weston-ready_1.0.bb [deleted file]
meta-agl-profile-graphical/recipes-graphics/wayland/weston_8.0.%.bbappend [deleted file]
meta-agl-profile-graphical/recipes-multimedia/gstreamer1.0-plugins-bad/gstreamer1.0-plugins-bad/0001-gst-wayland-Install-wayland-header-from-gstwayland-l.patch [deleted file]
meta-agl-profile-graphical/recipes-multimedia/gstreamer1.0-plugins-bad/gstreamer1.0-plugins-bad_1.16.%.bbappend [deleted file]
meta-agl-profile-graphical/recipes-multimedia/gstreamer1.0-plugins-good/gstreamer1.0-plugins-good_%.bbappend [deleted file]
meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-multimedia.bbappend [deleted file]
meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-services.bb [deleted file]
meta-agl-profile-hud/LICENSE [deleted file]
meta-agl-profile-hud/LICENSE.GPL-2.0-only [deleted file]
meta-agl-profile-hud/LICENSE.MIT [deleted file]
meta-agl-profile-hud/conf/layer.conf [deleted file]
meta-agl-profile-telematics/LICENSE [deleted file]
meta-agl-profile-telematics/LICENSE.GPL-2.0-only [deleted file]
meta-agl-profile-telematics/LICENSE.MIT [deleted file]
meta-agl-profile-telematics/conf/layer.conf [deleted file]
meta-agl-profile-telematics/recipes-platform/images/agl-image-telematics.bb [deleted file]
meta-agl-profile-telematics/recipes-platform/images/agl-image-telematics.inc [deleted file]
meta-agl-profile-telematics/recipes-platform/packagegroups/packagegroup-agl-profile-telematics.bb [deleted file]
meta-agl.md
meta-agl/conf/layer.conf [deleted file]
meta-app-framework/conf/include/agl-appfw-smack.inc
meta-app-framework/conf/include/agl-sign-wgts.inc [moved from meta-agl-profile-core/conf/include/agl-sign-wgts.inc with 68% similarity]
meta-app-framework/conf/layer.conf
meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-security.bbappend [new file with mode: 0644]
meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-security_appfw.inc [moved from meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-core-security.bbappend with 80% similarity]
meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-boot.bbappend [new file with mode: 0644]
meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-boot_appfw.inc [moved from meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-image-boot.bbappend with 60% similarity]
meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bbappend [new file with mode: 0644]
meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal_appfw.inc [moved from meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bbappend with 60% similarity]
meta-app-framework/dynamic-layers/meta-qt5/recipes-devtools/libafb-helpers-qt/libafb-helpers-qt_git.bb [moved from meta-agl-profile-graphical-qt5/recipes-devtools/libafb-helpers-qt/libafb-helpers-qt_git.bb with 100% similarity]
meta-app-framework/dynamic-layers/meta-qt5/recipes-devtools/libqtappfw/libqtappfw_git.bb [moved from meta-agl-profile-graphical-qt5/recipes-devtools/libqtappfw/libqtappfw_git.bb with 100% similarity]
meta-app-framework/dynamic-layers/meta-qt5/recipes-platform/packagegroups/packagegroup-agl-appfw-qt5.bb [moved from meta-agl-profile-graphical-qt5/recipes-appfw/packagegroups/packagegroup-agl-appfw-qt5.bb with 100% similarity]
meta-app-framework/recipes-connectivity/bluez5/bluez5_%.bbappend [new file with mode: 0644]
meta-app-framework/recipes-connectivity/bluez5/bluez5_appfw.inc [moved from meta-security/recipes-connectivity/bluez5/bluez5_%.bbappend with 98% similarity]
meta-app-framework/recipes-connectivity/bluez5/files/bluetooth.service.conf [moved from meta-security/recipes-connectivity/bluez5/files/bluetooth.service.conf with 100% similarity]
meta-app-framework/recipes-connectivity/connman/connman_%.bbappend [new file with mode: 0644]
meta-app-framework/recipes-connectivity/connman/connman_appfw.inc [moved from meta-security/recipes-connectivity/connman/connman_%.bbappend with 96% similarity]
meta-app-framework/recipes-connectivity/connman/files/connman.service.conf [moved from meta-security/recipes-connectivity/connman/files/connman.service.conf with 100% similarity]
meta-app-framework/recipes-core/base-files/base-files_%.bbappend
meta-app-framework/recipes-core/base-files/base-files_appfw.inc [moved from meta-security/recipes-core/base-files/base-files_%.bbappend with 76% similarity]
meta-app-framework/recipes-core/coreutils/coreutils_%.bbappend [new file with mode: 0644]
meta-app-framework/recipes-core/coreutils/coreutils_appfw.inc [moved from meta-security/recipes-core/coreutils/coreutils_%.bbappend with 100% similarity]
meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0001-Integration-of-Cynara-asynchronous-security-checks.patch [moved from meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0001-Integration-of-Cynara-asynchronous-security-checks.patch with 100% similarity]
meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0002-Disable-message-dispatching-when-send-rule-result-is.patch [moved from meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0002-Disable-message-dispatching-when-send-rule-result-is.patch with 100% similarity]
meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0003-Handle-unavailability-of-policy-results-for-broadcas.patch [moved from meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0003-Handle-unavailability-of-policy-results-for-broadcas.patch with 100% similarity]
meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0004-Add-own-rule-result-unavailability-handling.patch [moved from meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0004-Add-own-rule-result-unavailability-handling.patch with 100% similarity]
meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0005-Perform-Cynara-runtime-policy-checks-by-default.patch [moved from meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0005-Perform-Cynara-runtime-policy-checks-by-default.patch with 100% similarity]
meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0006-Fix-SIGSEGV-on-disconnections.patch [moved from meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0006-Fix-SIGSEGV-on-disconnections.patch with 100% similarity]
meta-app-framework/recipes-core/dbus-cynagora/dbus-cynagora/0007-Switch-from-cynara-to-cynagora.patch [moved from meta-security/recipes-core/dbus-cynagora/dbus-cynagora/0007-Switch-from-cynara-to-cynagora.patch with 100% similarity]
meta-app-framework/recipes-core/dbus-cynagora/dbus_1.12.16.bbappend [new file with mode: 0644]
meta-app-framework/recipes-core/dbus-cynagora/dbus_appfw.inc [moved from meta-security/recipes-core/dbus-cynagora/dbus_1.12.16.bbappend with 100% similarity]
meta-app-framework/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend [deleted file]
meta-app-framework/recipes-core/security-manager/security-manager_%.bbappend [deleted file]
meta-app-framework/recipes-core/shadow/shadow_%.bbappend
meta-app-framework/recipes-core/shadow/shadow_appfw.inc [new file with mode: 0644]
meta-app-framework/recipes-core/smack-system-setup/files/55-udev-smack-default.rules [moved from meta-security/recipes-core/smack-system-setup/files/55-udev-smack-default.rules with 100% similarity]
meta-app-framework/recipes-core/smack-system-setup/files/systemd-journald.service.conf [moved from meta-security/recipes-core/smack-system-setup/files/systemd-journald.service.conf with 100% similarity]
meta-app-framework/recipes-core/smack-system-setup/files/systemd-tmpfiles-setup.service.conf [moved from meta-security/recipes-core/smack-system-setup/files/systemd-tmpfiles-setup.service.conf with 100% similarity]
meta-app-framework/recipes-core/smack-system-setup/files/tmp.mount.conf [moved from meta-security/recipes-core/smack-system-setup/files/tmp.mount.conf with 100% similarity]
meta-app-framework/recipes-core/smack-system-setup/smack-system-setup_1.bb [moved from meta-security/recipes-core/smack-system-setup/smack-system-setup_1.bb with 100% similarity]
meta-app-framework/recipes-core/systemd-sync/systemd-agl-sync_1.0.bb [deleted file]
meta-app-framework/recipes-core/systemd/systemd/0001-Switch-Smack-label-earlier.patch [moved from meta-security/recipes-core/systemd/systemd/0001-Switch-Smack-label-earlier.patch with 100% similarity]
meta-app-framework/recipes-core/systemd/systemd_2%.bbappend [new file with mode: 0644]
meta-app-framework/recipes-core/systemd/systemd_appfw.inc [moved from meta-security/recipes-core/systemd/systemd_2%.bbappend with 97% similarity]
meta-app-framework/recipes-core/util-linux/util-linux_%.bbappend [new file with mode: 0644]
meta-app-framework/recipes-core/util-linux/util-linux_appfw.inc [moved from meta-security/recipes-core/util-linux/util-linux_%.bbappend with 100% similarity]
meta-app-framework/recipes-devtools/cmake-apps-module/cmake-apps-module_git.bb [moved from meta-agl-profile-core/recipes-devtools/cmake-apps-module/cmake-apps-module_git.bb with 100% similarity]
meta-app-framework/recipes-devtools/json-c/json-c_%.bbappend [new file with mode: 0644]
meta-app-framework/recipes-devtools/json-c/json-c_appfw.inc [new file with mode: 0644]
meta-app-framework/recipes-devtools/libafb-helpers/libafb-helpers_git.bb [moved from meta-agl-profile-core/recipes-devtools/libafb-helpers/libafb-helpers_git.bb with 100% similarity]
meta-app-framework/recipes-devtools/libafb-helpers/libafb-helpers_git.inc [moved from meta-agl-profile-core/recipes-devtools/libafb-helpers/libafb-helpers_git.inc with 100% similarity]
meta-app-framework/recipes-devtools/libappcontroller/libappcontroller_git.bb [moved from meta-agl-profile-core/recipes-devtools/libappcontroller/libappcontroller_git.bb with 100% similarity]
meta-app-framework/recipes-devtools/packagegroups/nativesdk-packagegroup-sdk-host.bbappend [new file with mode: 0644]
meta-app-framework/recipes-devtools/packagegroups/nativesdk-packagegroup-sdk-host_appfw.inc [new file with mode: 0644]
meta-app-framework/recipes-devtools/run-agl-postinsts/run-agl-postinsts_1.0.bbappend [deleted file]
meta-app-framework/recipes-devtools/run-postinsts/run-postinsts/ldconfig-wait.conf [moved from meta-agl-profile-core/recipes-devtools/run-postinsts/run-postinsts/ldconfig-wait.conf with 100% similarity]
meta-app-framework/recipes-devtools/run-postinsts/run-postinsts_%.bbappend [new file with mode: 0644]
meta-app-framework/recipes-devtools/run-postinsts/run-postinsts_appfw.inc [moved from meta-agl-profile-core/recipes-devtools/run-postinsts/run-postinsts_%.bbappend with 79% similarity]
meta-app-framework/recipes-graphics/wayland/wayland/0001-Change-socket-mode-add-rw-for-group.patch [moved from meta-agl-profile-graphical/recipes-graphics/wayland/wayland/0001-Change-socket-mode-add-rw-for-group.patch with 100% similarity]
meta-app-framework/recipes-graphics/wayland/wayland_%.bbappend [new file with mode: 0644]
meta-app-framework/recipes-graphics/wayland/wayland_appfw.inc [moved from meta-agl-profile-graphical/recipes-graphics/wayland/wayland_%.bbappend with 63% similarity]
meta-app-framework/recipes-graphics/wayland/weston/0001-Allow-regular-users-to-launch-Weston_7.0.0.patch [moved from meta-agl-profile-graphical/recipes-graphics/wayland/weston/0001-Allow-regular-users-to-launch-Weston_7.0.0.patch with 100% similarity]
meta-app-framework/recipes-graphics/wayland/weston/smack-weston [moved from meta-agl-profile-graphical/recipes-graphics/wayland/weston/smack-weston with 100% similarity]
meta-app-framework/recipes-graphics/wayland/weston_8.0.%.bbappend [new file with mode: 0644]
meta-app-framework/recipes-graphics/wayland/weston_8.0_appfw.inc [new file with mode: 0644]
meta-app-framework/recipes-kernel/linux/linux-%.bbappend
meta-app-framework/recipes-kernel/linux/linux-appfw.inc [moved from meta-security/recipes-kernel/linux/linux-%.bbappend with 91% similarity]
meta-app-framework/recipes-kernel/linux/linux/smack-default-lsm.cfg [moved from meta-security/recipes-kernel/linux/linux/smack-default-lsm.cfg with 100% similarity]
meta-app-framework/recipes-kernel/linux/linux/smack.cfg [moved from meta-security/recipes-kernel/linux/linux/smack.cfg with 100% similarity]
meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-app-framework-examples.bb [moved from meta-app-framework/recipes-core/packagegroups/packagegroup-agl-app-framework-examples.bb with 100% similarity]
meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-app-framework.bb [moved from meta-app-framework/recipes-core/packagegroups/packagegroup-agl-app-framework.bb with 85% similarity]
meta-app-framework/recipes-platform/packagegroups/packagegroup-agl-appfw-native.bb [moved from meta-agl-profile-graphical-qt5/recipes-appfw/packagegroups/packagegroup-agl-appfw-native.bb with 89% similarity]
meta-app-framework/recipes-platform/packagegroups/packagegroup-security-framework.bb [moved from meta-security/recipes-core/packagegroups/packagegroup-security-framework.bb with 100% similarity]
meta-app-framework/recipes-security/audit/audit/0001-lib-i386_table.h-add-new-syscall.patch [moved from meta-security/recipes-security/audit/audit/0001-lib-i386_table.h-add-new-syscall.patch with 100% similarity]
meta-app-framework/recipes-security/audit/audit/Add-substitue-functions-for-strndupa-rawmemchr.patch [moved from meta-security/recipes-security/audit/audit/Add-substitue-functions-for-strndupa-rawmemchr.patch with 100% similarity]
meta-app-framework/recipes-security/audit/audit/Fixed-swig-host-contamination-issue.patch [moved from meta-security/recipes-security/audit/audit/Fixed-swig-host-contamination-issue.patch with 100% similarity]
meta-app-framework/recipes-security/audit/audit/audit-volatile.conf [moved from meta-security/recipes-security/audit/audit/audit-volatile.conf with 100% similarity]
meta-app-framework/recipes-security/audit/audit/auditd [moved from meta-security/recipes-security/audit/audit/auditd with 100% similarity]
meta-app-framework/recipes-security/audit/audit/auditd.service [moved from meta-security/recipes-security/audit/audit/auditd.service with 100% similarity]
meta-app-framework/recipes-security/audit/audit_2.8.5.bb [moved from meta-security/recipes-security/audit/audit_2.8.5.bb with 100% similarity]
meta-app-framework/recipes-security/cynagoauth/cynagoauth_0.1.bb [moved from meta-security/recipes-security/cynagoauth/cynagoauth_0.1.bb with 100% similarity]
meta-app-framework/recipes-security/cynagora/cynagora-cynara-compat_2.1.bb [moved from meta-security/recipes-security/cynagora/cynagora-cynara-compat_2.1.bb with 100% similarity]
meta-app-framework/recipes-security/cynagora/cynagora/run-ptest [moved from meta-security/recipes-security/cynagora/cynagora/run-ptest with 100% similarity]
meta-app-framework/recipes-security/cynagora/cynagora_2.1.bb [moved from meta-security/recipes-security/cynagora/cynagora_2.1.bb with 100% similarity]
meta-app-framework/recipes-security/security-manager/security-manager.inc [moved from meta-security/recipes-security/security-manager/security-manager.inc with 100% similarity]
meta-app-framework/recipes-security/security-manager/security-manager/0001-Adapt-rules-to-AGL.patch [moved from meta-app-framework/recipes-core/security-manager/security-manager/0001-Adapt-rules-to-AGL.patch with 100% similarity]
meta-app-framework/recipes-security/security-manager/security-manager/0001-systemd-stop-using-compat-libs.patch [moved from meta-security/recipes-security/security-manager/security-manager/0001-systemd-stop-using-compat-libs.patch with 100% similarity]
meta-app-framework/recipes-security/security-manager/security-manager/0002-security-manager-policy-reload-do-not-depend-on-GNU-.patch [moved from meta-security/recipes-security/security-manager/security-manager/0002-security-manager-policy-reload-do-not-depend-on-GNU-.patch with 100% similarity]
meta-app-framework/recipes-security/security-manager/security-manager/0003-Smack-rules-create-two-new-functions.patch [moved from meta-security/recipes-security/security-manager/security-manager/0003-Smack-rules-create-two-new-functions.patch with 100% similarity]
meta-app-framework/recipes-security/security-manager/security-manager/0004-app-install-implement-multiple-set-of-smack-rules.patch [moved from meta-security/recipes-security/security-manager/security-manager/0004-app-install-implement-multiple-set-of-smack-rules.patch with 100% similarity]
meta-app-framework/recipes-security/security-manager/security-manager/0005-c-11-replace-deprecated-auto_ptr.patch [moved from meta-security/recipes-security/security-manager/security-manager/0005-c-11-replace-deprecated-auto_ptr.patch with 100% similarity]
meta-app-framework/recipes-security/security-manager/security-manager/0006-socket-manager-removes-tizen-specific-call.patch [moved from meta-security/recipes-security/security-manager/security-manager/0006-socket-manager-removes-tizen-specific-call.patch with 100% similarity]
meta-app-framework/recipes-security/security-manager/security-manager/0007-removes-dependency-to-libslp-db-utils.patch [moved from meta-security/recipes-security/security-manager/security-manager/0007-removes-dependency-to-libslp-db-utils.patch with 100% similarity]
meta-app-framework/recipes-security/security-manager/security-manager/0008-Fix-gcc6-build.patch [moved from meta-security/recipes-security/security-manager/security-manager/0008-Fix-gcc6-build.patch with 100% similarity]
meta-app-framework/recipes-security/security-manager/security-manager/0009-Fix-Cmake-conf-for-gcc6-build.patch [moved from meta-security/recipes-security/security-manager/security-manager/0009-Fix-Cmake-conf-for-gcc6-build.patch with 100% similarity]
meta-app-framework/recipes-security/security-manager/security-manager/0010-gcc-7-requires-include-functional-for-std-function.patch [moved from meta-security/recipes-security/security-manager/security-manager/0010-gcc-7-requires-include-functional-for-std-function.patch with 100% similarity]
meta-app-framework/recipes-security/security-manager/security-manager/0011-Fix-gcc8-warning-error-Werror-catch-value.patch [moved from meta-security/recipes-security/security-manager/security-manager/0011-Fix-gcc8-warning-error-Werror-catch-value.patch with 100% similarity]
meta-app-framework/recipes-security/security-manager/security-manager/0012-Avoid-casting-from-const-T-to-void.patch [moved from meta-security/recipes-security/security-manager/security-manager/0012-Avoid-casting-from-const-T-to-void.patch with 100% similarity]
meta-app-framework/recipes-security/security-manager/security-manager/0013-Removing-tizen-platform-config.patch [moved from meta-security/recipes-security/security-manager/security-manager/0013-Removing-tizen-platform-config.patch with 100% similarity]
meta-app-framework/recipes-security/security-manager/security-manager/0014-Ensure-post-install-initialization-of-database.patch [moved from meta-security/recipes-security/security-manager/security-manager/0014-Ensure-post-install-initialization-of-database.patch with 100% similarity]
meta-app-framework/recipes-security/security-manager/security-manager/0015-Restrict-socket-accesses.patch [moved from meta-security/recipes-security/security-manager/security-manager/0015-Restrict-socket-accesses.patch with 100% similarity]
meta-app-framework/recipes-security/security-manager/security-manager_%.bbappend [moved from meta-agl-profile-graphical/recipes-security/security-manager/security-manager_%.bbappend with 64% similarity]
meta-app-framework/recipes-security/security-manager/security-manager_git.bb [moved from meta-security/recipes-security/security-manager/security-manager_git.bb with 100% similarity]
meta-app-framework/recipes-security/xmlsec1/xmlsec1_1.%.bbappend
meta-app-framework/recipes-security/xmlsec1/xmlsec1_appfw.inc [new file with mode: 0644]
meta-app-framework/recipes-support/libcap/libcap_%.bbappend
meta-app-framework/recipes-support/libcap/libcap_appfw.inc [new file with mode: 0644]
meta-app-framework/recipes-support/libzip/libzip_%.bbappend
meta-app-framework/recipes-support/libzip/libzip_appfw.inc [new file with mode: 0644]
meta-app-framework/recipes-test/afb-test/afb-test_git.bb [moved from meta-agl-profile-core/recipes-test/afb-test/afb-test_git.bb with 100% similarity]
meta-app-framework/recipes-test/afb-test/files/run-ptest [moved from meta-agl-profile-core/recipes-test/afb-test/files/run-ptest with 100% similarity]
meta-app-framework/scripts/run-yocto-check-layer-enabled-flags.sh [new file with mode: 0755]
meta-app-framework/scripts/run-yocto-check-layer.sh [new file with mode: 0755]
meta-netboot/README.renesas-gen3 [deleted file]
meta-netboot/classes/netboot.bbclass
meta-netboot/conf/include/agl-netboot.inc
meta-netboot/conf/layer.conf
meta-netboot/recipes-core/busybox/busybox_%.bbappend
meta-netboot/recipes-core/busybox/busybox_netboot.inc [new file with mode: 0644]
meta-netboot/recipes-core/images/initramfs-netboot-image.bb
meta-netboot/recipes-core/images/initramfs-netboot-image_netboot.inc [new file with mode: 0644]
meta-netboot/recipes-support/nbd/nbd_%.bbappend
meta-netboot/recipes-support/nbd/nbd_netboot.inc [new file with mode: 0644]
meta-netboot/scripts/run-yocto-check-layer-flags-enabled.sh [new file with mode: 0755]
meta-netboot/scripts/run-yocto-check-layer.sh [new file with mode: 0755]
meta-pipewire/conf/layer.conf
meta-pipewire/dynamic-layers/meta-app-framework/recipes-apis/agl-service-audiomixer/agl-service-audiomixer_git.bb [moved from meta-pipewire/recipes-multimedia/agl-service-audiomixer/agl-service-audiomixer_git.bb with 100% similarity]
meta-pipewire/dynamic-layers/meta-app-framework/recipes-core/packagegroups/packagegroup-pipewire.bbappend [new file with mode: 0644]
meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire-conf-agl/client.env [moved from meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/client.env with 100% similarity]
meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire-conf-agl/pipewire.conf.in [moved from meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/pipewire.conf.in with 100% similarity]
meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire-conf-agl/server.env [moved from meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl/server.env with 100% similarity]
meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire-conf-agl_git.bb [moved from meta-pipewire/recipes-multimedia/pipewire/pipewire-conf-agl_git.bb with 100% similarity]
meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire/pipewire@.service [moved from meta-pipewire/recipes-multimedia/pipewire/pipewire/pipewire@.service with 100% similarity]
meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire/pipewire@.socket [moved from meta-pipewire/recipes-multimedia/pipewire/pipewire/pipewire@.socket with 100% similarity]
meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire/smack-pipewire [moved from meta-pipewire/recipes-multimedia/pipewire/pipewire/smack-pipewire with 100% similarity]
meta-pipewire/dynamic-layers/meta-app-framework/recipes-multimedia/pipewire/pipewire_git.bbappend [moved from meta-pipewire/recipes-multimedia/pipewire/pipewire_git.bbappend with 92% similarity]
meta-pipewire/dynamic-layers/meta-app-framework/recipes-security/cynagora/cynagora_%.bbappend [moved from meta-pipewire/recipes-security/cynagora/cynagora_%.bbappend with 99% similarity]
meta-pipewire/dynamic-layers/meta-app-framework/recipes-security/security-manager/security-manager_%.bbappend [moved from meta-pipewire/recipes-security/security-manager/security-manager_%.bbappend with 99% similarity]
meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/0001-utils-add-a-gstreamer-helper-application-for-interco.patch [deleted file]
meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/bluealsa-gst-helper@.service [deleted file]
meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa_git.bbappend [deleted file]
meta-pipewire/recipes-core/packagegroups/packagegroup-pipewire.bb
meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-ak4613-audio-sink.endpoint
meta-pipewire/recipes-multimedia/wireplumber/wireplumber-board-config-agl/30-rcarsound-audio-sink.endpoint
meta-pipewire/scripts/run-yocto-check-layer.sh [new file with mode: 0755]
meta-security/COPYING.MIT [deleted file]
meta-security/README.md [deleted file]
meta-security/conf/layer.conf [deleted file]
meta-security/recipes-kernel/linux/linux/audit.cfg [deleted file]
meta-security/recipes-security/smacknet/files/smacknet [deleted file]
meta-security/recipes-security/smacknet/files/smacknet.service [deleted file]
meta-security/recipes-security/smacknet/smacknet.bb [deleted file]
scripts/README-mkefi-agl.md [deleted file]
templates/base/00_local.conf.agl.inc
templates/base/99_local.conf.inc
templates/base/bblayers.conf.sample
templates/feature/agl-appfw-smack/50_bblayers.conf.inc [new file with mode: 0644]
templates/feature/agl-appfw-smack/50_local.conf.inc
templates/feature/agl-hmi-framework/50_local.conf.inc
templates/feature/agl-localdev/80_bblayers.conf.inc [new file with mode: 0644]
templates/feature/agl-localdev/80_local.conf.inc [new file with mode: 0644]
templates/feature/agl-localdev/README_feature_agl-localdev.md [new file with mode: 0644]
templates/feature/agl-netboot/50_bblayers.conf.inc
templates/feature/agl-profile-cluster-qt5/50_bblayers.conf.inc [deleted file]
templates/feature/agl-profile-cluster-qt5/README_feature_agl-profile-cluster-qt5.md [deleted file]
templates/feature/agl-profile-cluster-qt5/included.dep [deleted file]
templates/feature/agl-profile-cluster/50_bblayers.conf.inc [deleted file]
templates/feature/agl-profile-cluster/README_feature_agl-profile-cluster.md [deleted file]
templates/feature/agl-profile-cluster/included.dep [deleted file]
templates/feature/agl-profile-graphical-html5/50_bblayers.conf.inc [deleted file]
templates/feature/agl-profile-graphical-html5/50_local.conf.inc [deleted file]
templates/feature/agl-profile-graphical-html5/README_feature_agl-profile-graphical-html5.md [deleted file]
templates/feature/agl-profile-graphical-html5/included.dep [deleted file]
templates/feature/agl-profile-graphical-qt5/50_bblayers.conf.inc [deleted file]
templates/feature/agl-profile-graphical-qt5/README_feature_agl-profile-graphical-qt5.md [deleted file]
templates/feature/agl-profile-graphical-qt5/included.dep [deleted file]
templates/feature/agl-profile-graphical/50_bblayers.conf.inc [deleted file]
templates/feature/agl-profile-graphical/README_feature_agl-profile-graphical.md [deleted file]
templates/feature/agl-profile-hud/50_bblayers.conf.inc [deleted file]
templates/feature/agl-profile-hud/README_feature_agl-profile-hud.md [deleted file]
templates/feature/agl-profile-telematics/50_bblayers.conf.inc [deleted file]
templates/feature/agl-profile-telematics/README_feature_agl-profile-telematics.md [deleted file]
templates/feature/agl-weston-remoting/included.dep

index 409eae5..e84f875 100755 (executable)
@@ -14,7 +14,6 @@ This section provides information about the layers used by the AGL Project:
 
 * **`meta-agl`**: Minimal set of software needed to create an AGL distribution
   used to boot a system.
-  AGL profiles are built on top of this minimal set of software.
 
 * **`meta-agl-demo`**: Provides a reference or demo platform and applications
   for the AGL Distribution.
diff --git a/meta-agl-bsp/meta-aglprofilegraphical/recipes-graphics/wayland/libva_%.bbappend b/meta-agl-bsp/meta-aglprofilegraphical/recipes-graphics/wayland/libva_%.bbappend
deleted file mode 100644 (file)
index eda8de3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-# This patch correct a bug in libva1_1.7.0.bb 1.8 inmeta-intel (no clue when it will be fixed)
-# libva.bb calls for an x11 runtime dependency even if wayland is selected
-#
-RDEPENDS_${PN}-egl_remove = "${@bb.utils.contains("DISTRO_FEATURES", "x11", "", "${PN}-x11", d)}"
diff --git a/meta-agl-bsp/meta-core/recipes-core/ovmf/ovmf_git.bbappend b/meta-agl-bsp/meta-core/recipes-core/ovmf/ovmf_git.bbappend
deleted file mode 100644 (file)
index 2858472..0000000
+++ /dev/null
@@ -1 +0,0 @@
-PARALLEL_MAKE = ""
diff --git a/meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa_%.bbappend b/meta-agl-bsp/meta-core/recipes-graphics/mesa/mesa_%.bbappend
new file mode 100644 (file)
index 0000000..3d5903d
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_agl.inc', '', d)}
diff --git a/meta-agl-bsp/meta-core/recipes-graphics/wayland/weston_%.bbappend b/meta-agl-bsp/meta-core/recipes-graphics/wayland/weston_%.bbappend
new file mode 100644 (file)
index 0000000..3d5903d
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_agl.inc', '', d)}
index e97b8f9..3d5903d 100644 (file)
@@ -1,17 +1 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/linux-yocto:"
-
-# Extra configuration options for the QEMU kernel
-SRC_URI += "file://hciattach.cfg \
-           file://virtio.cfg \
-            "
-
-# Enable some things on qemuarm64 so MOST drivers will build and load.
-SRC_URI_append_qemuarm64 = " file://most_deps.cfg"
-
-# Configuration for using the virt machine (and not versatilepb)
-SRC_URI_append_qemuarm = " file://qemuarm.cfg"
-
-# Build a generic v7 kernel instead of the arm926j one that upstream
-# qemuarm defaults to.
-KBUILD_DEFCONFIG_qemuarm = "multi_v7_defconfig"
-KCONFIG_MODE = "--alldefconfig"
+require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_agl.inc', '', d)}
diff --git a/meta-agl-bsp/meta-core/recipes-kernel/linux/linux-yocto_agl.inc b/meta-agl-bsp/meta-core/recipes-kernel/linux/linux-yocto_agl.inc
new file mode 100644 (file)
index 0000000..30e656b
--- /dev/null
@@ -0,0 +1,21 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/linux-yocto:"
+
+
+require recipes-kernel/linux/linux-agl.inc
+
+# Extra configuration options for the QEMU kernel
+SRC_URI += "file://hciattach.cfg \
+           file://virtio.cfg \
+            "
+
+# Enable some things on qemuarm64 so MOST drivers will build and load.
+SRC_URI_append_qemuarm64 = " file://most_deps.cfg"
+
+# Configuration for using the virt machine (and not versatilepb)
+SRC_URI_append_qemuarm = " file://qemuarm.cfg"
+
+# Build a generic v7 kernel instead of the arm926j one that upstream
+# qemuarm defaults to.
+KBUILD_DEFCONFIG_qemuarm = "multi_v7_defconfig"
+KCONFIG_MODE = "--alldefconfig"
+
index f78e0b5..238dd16 100644 (file)
@@ -20,7 +20,7 @@ CMDLINE_append = ' ${@bb.utils.contains('AGL_XEN_WANTED','1','modprobe.blacklist
 CMDLINE_append = " usbhid.mousepoll=0"
 
 # Add options to allow CMA to operate
-CMDLINE_append = ' ${@oe.utils.conditional("ENABLE_CMA", "1", "coherent_pool=6M smsc95xx.turbo_mode=N", "", d)}'
+CMDLINE_append = '${@oe.utils.conditional("ENABLE_CMA", "1", " coherent_pool=6M smsc95xx.turbo_mode=N", "", d)}'
 
 KERNEL_MODULE_AUTOLOAD += "snd-bcm2835"
 KERNEL_MODULE_AUTOLOAD += "hid-multitouch"
diff --git a/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0001-Set-up-environment-for-OSTree-integration.patch b/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0001-Set-up-environment-for-OSTree-integration.patch
deleted file mode 100644 (file)
index 5172fdd..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-From ebb26338d0c2f436a86fd4d7cb8d723a90d6a369 Mon Sep 17 00:00:00 2001
-From: Anton Gerasimov <anton@advancedtelematic.com>
-Date: Thu, 15 Sep 2016 17:52:41 +0200
-Subject: [PATCH 1/2] Set up environment for OSTree integration
-
----
- include/configs/qemu-x86.h | 20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
-
-diff --git a/include/configs/qemu-x86.h b/include/configs/qemu-x86.h
-index 78c296f..79df455 100644
---- a/include/configs/qemu-x86.h
-+++ b/include/configs/qemu-x86.h
-@@ -74,4 +74,24 @@
- #undef CONFIG_ENV_IS_IN_SPI_FLASH
- #define CONFIG_ENV_IS_NOWHERE
-+#undef CONFIG_BOOTARGS
-+#define CONFIG_BOOTARGS "root=/dev/hda2 console=ttyS0"
-+
-+#undef CONFIG_BOOTDELAY
-+#define CONFIG_BOOTDELAY 3
-+
-+#undef CONFIG_BOOTCOMMAND
-+#define CONFIG_BOOTCOMMAND "run loadenv;" \
-+                         "setenv bootargs $bootargs\" console=ttyS0 root=/dev/ram0 rw rootfstype=ext4 rootwait rootdelay=2 ostree_root=/dev/hda ramdisk_size=16384 \";" \
-+                         "ext2load ide 0 $loadaddr \"/boot\"$kernel_image;" \
-+                         "ext2load ide 0 $ramdiskaddr \"/boot\"$ramdisk_image;" \
-+                         "zboot $loadaddr - $ramdiskaddr $filesize"
-+
-+#undef CONFIG_EXTRA_ENV_SETTINGS
-+#define CONFIG_EXTRA_ENV_SETTINGS "kernel_image=/bzImage\0" \
-+                                "ramdisk_image=/initrd\0" \
-+                                "ramdiskaddr=0x4000000\0" \
-+                                "bootdelay=3\0" \
-+                                "loadenv=if ext2load ide 0 $loadaddr /boot/loader/uEnv.txt; then env import -t $loadaddr $filesize; fi;" 
-+
- #endif        /* __CONFIG_H */
--- 
-2.9.3
-
diff --git a/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0001-fixup-build-with-gcc6.patch b/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0001-fixup-build-with-gcc6.patch
deleted file mode 100644 (file)
index df1f786..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-From ba619c7ec7820e80d1b5b520440fdb81c31c0baf Mon Sep 17 00:00:00 2001
-From: Ronan Le Martret <ronan.lemartret@iot.bzh>
-Date: Fri, 14 Oct 2016 09:03:11 +0200
-Subject: [PATCH] fix gcc6 build
-
-Signed-off-by: ronan <ronan@linux-pgnz.suse>
----
- include/linux/compiler-gcc6.h | 66 +++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 66 insertions(+)
- create mode 100644 include/linux/compiler-gcc6.h
-
-diff --git a/include/linux/compiler-gcc6.h b/include/linux/compiler-gcc6.h
-new file mode 100644
-index 0000000..a3d00d8
---- /dev/null
-+++ b/include/linux/compiler-gcc6.h
-@@ -0,0 +1,66 @@
-+#ifndef __LINUX_COMPILER_H
-+#error "Please don't include <linux/compiler-gcc6.h> directly, include <linux/compiler.h> instead."
-+#endif
-+
-+#define __used                                __attribute__((__used__))
-+#define __must_check                  __attribute__((warn_unused_result))
-+#define __compiler_offsetof(a, b)     __builtin_offsetof(a, b)
-+
-+/* Mark functions as cold. gcc will assume any path leading to a call
-+   to them will be unlikely.  This means a lot of manual unlikely()s
-+   are unnecessary now for any paths leading to the usual suspects
-+   like BUG(), printk(), panic() etc. [but let's keep them for now for
-+   older compilers]
-+
-+   Early snapshots of gcc 4.3 don't support this and we can't detect this
-+   in the preprocessor, but we can live with this because they're unreleased.
-+   Maketime probing would be overkill here.
-+
-+   gcc also has a __attribute__((__hot__)) to move hot functions into
-+   a special section, but I don't see any sense in this right now in
-+   the kernel context */
-+#define __cold                        __attribute__((__cold__))
-+
-+#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
-+
-+#ifndef __CHECKER__
-+# define __compiletime_warning(message) __attribute__((warning(message)))
-+# define __compiletime_error(message) __attribute__((error(message)))
-+#endif /* __CHECKER__ */
-+
-+/*
-+ * Mark a position in code as unreachable.  This can be used to
-+ * suppress control flow warnings after asm blocks that transfer
-+ * control elsewhere.
-+ *
-+ * Early snapshots of gcc 4.5 don't support this and we can't detect
-+ * this in the preprocessor, but we can live with this because they're
-+ * unreleased.  Really, we need to have autoconf for the kernel.
-+ */
-+#define unreachable() __builtin_unreachable()
-+
-+/* Mark a function definition as prohibited from being cloned. */
-+#define __noclone     __attribute__((__noclone__))
-+
-+/*
-+ * Tell the optimizer that something else uses this function or variable.
-+ */
-+#define __visible __attribute__((externally_visible))
-+
-+/*
-+ * GCC 'asm goto' miscompiles certain code sequences:
-+ *
-+ *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
-+ *
-+ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
-+ * Fixed in GCC 4.8.2 and later versions.
-+ *
-+ * (asm goto is automatically volatile - the naming reflects this.)
-+ */
-+#define asm_volatile_goto(x...)       do { asm goto(x); asm (""); } while (0)
-+
-+#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
-+#define __HAVE_BUILTIN_BSWAP32__
-+#define __HAVE_BUILTIN_BSWAP64__
-+#define __HAVE_BUILTIN_BSWAP16__
-+#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
--- 
-2.6.6
-
diff --git a/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0002-Replace-wraps-with-built-in-code-to-remove-dependenc.patch b/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0002-Replace-wraps-with-built-in-code-to-remove-dependenc.patch
deleted file mode 100644 (file)
index 7540b74..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-From ab0d7e270d89f6eb99582197d2d58bf60c9c3d26 Mon Sep 17 00:00:00 2001
-From: Anton Gerasimov <anton@advancedtelematic.com>
-Date: Thu, 15 Sep 2016 16:49:32 +0200
-Subject: [PATCH 2/2] Replace wraps with built-in code to remove dependency on
- multilib
-
----
- arch/x86/config.mk |   2 --
- arch/x86/lib/gcc.c | 104 ++++++++++++++++++++++++++++++++++++++++++++---------
- 2 files changed, 87 insertions(+), 19 deletions(-)
-
-diff --git a/arch/x86/config.mk b/arch/x86/config.mk
-index 999143e..139576e 100644
---- a/arch/x86/config.mk
-+++ b/arch/x86/config.mk
-@@ -22,5 +22,3 @@ PLATFORM_RELFLAGS += -ffunction-sections -fvisibility=hidden
- PLATFORM_LDFLAGS += --emit-relocs -Bsymbolic -Bsymbolic-functions -m elf_i386
- LDFLAGS_FINAL += --gc-sections -pie
--LDFLAGS_FINAL += --wrap=__divdi3 --wrap=__udivdi3
--LDFLAGS_FINAL += --wrap=__moddi3 --wrap=__umoddi3
-diff --git a/arch/x86/lib/gcc.c b/arch/x86/lib/gcc.c
-index 497ad75..c321b11 100644
---- a/arch/x86/lib/gcc.c
-+++ b/arch/x86/lib/gcc.c
-@@ -19,22 +19,92 @@
- #ifdef __GNUC__
--/*
-- * GCC's libgcc handling is quite broken. While the libgcc functions
-- * are always regparm(0) the code that calls them uses whatever the
-- * compiler call specifies. Therefore we need a wrapper around those
-- * functions. See gcc bug PR41055 for more information.
-- */
--#define WRAP_LIBGCC_CALL(type, name) \
--      type __normal_##name(type a, type b) __attribute__((regparm(0))); \
--      type __wrap_##name(type a, type b); \
--      type __attribute__((no_instrument_function)) \
--              __wrap_##name(type a, type b) \
--               { return __normal_##name(a, b); }
--
--WRAP_LIBGCC_CALL(long long, __divdi3)
--WRAP_LIBGCC_CALL(unsigned long long, __udivdi3)
--WRAP_LIBGCC_CALL(long long, __moddi3)
--WRAP_LIBGCC_CALL(unsigned long long, __umoddi3)
-+#include <stdint.h>
-+#include <stddef.h>
-+
-+uint64_t __udivmoddi4 ( uint64_t num,
-+                       uint64_t den,
-+                       uint64_t *rem_p )
-+{
-+       uint64_t quot = 0, qbit = 1;
-+
-+       if ( den == 0 ) {
-+               return 1/((unsigned)den); /* Intentional divide by zero, without
-+                                            triggering a compiler warning which
-+                                            would abort the build */
-+       }
-+
-+       /* Left-justify denominator and count shift */
-+       while ( (int64_t)den >= 0 ) {
-+               den <<= 1;
-+               qbit <<= 1;
-+       }
-+
-+       while ( qbit ) {
-+               if ( den <= num ) {
-+                       num -= den;
-+                       quot += qbit;
-+               }
-+               den >>= 1;
-+               qbit >>= 1;
-+       }
-+
-+       if ( rem_p )
-+               *rem_p = num;
-+
-+       return quot;
-+}      
-+uint64_t __udivdi3( uint64_t num, uint64_t den )
-+{
-+       return __udivmoddi4(num, den, NULL);
-+}
-+
-+uint64_t __umoddi3 ( uint64_t num, uint64_t den )
-+{
-+       uint64_t v;
-+
-+       (void) __udivmoddi4(num, den, &v);
-+       return v;
-+}
-+
-+int64_t __divmoddi4 ( int64_t num,
-+               int64_t den,
-+               int64_t* rem_p )
-+{
-+       int minus = 0;
-+       int64_t v;
-+
-+       if ( num < 0 ) {
-+               num = -num;
-+               minus = 1;
-+       }
-+       if ( den < 0 ) {
-+               den = -den;
-+               minus ^= 1;
-+       }
-+
-+       v = __udivmoddi4(num, den, (uint64_t *)rem_p);
-+       if ( minus ) {
-+               v = -v;
-+               if ( rem_p )
-+                       *rem_p = -(*rem_p);
-+       }
-+
-+       return v;
-+}
-+
-+
-+int64_t __moddi3 (int64_t num, int64_t den)
-+{
-+       int64_t v;
-+
-+       (void) __divmoddi4(num, den, &v);
-+       return v;
-+}
-+
-+int64_t __divdi3(int64_t num, int64_t den)
-+{
-+       return __divmoddi4(num, den, NULL);
-+}
- #endif
--- 
-2.9.3
-
diff --git a/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0002-fixup-build-with-gcc7.patch b/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota/0002-fixup-build-with-gcc7.patch
deleted file mode 100644 (file)
index fc7933e..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-From eea58226f0b604d3047c495985197113838d3a7a Mon Sep 17 00:00:00 2001
-From: Trevor Woerner <twoerner@gmail.com>
-Date: Tue, 20 Jun 2017 13:25:20 -0400
-Subject: [PATCH] fix build for gcc7
-
-| In file included from .../include/linux/compiler.h:54:0,
-|                  from .../include/uapi/linux/stddef.h:1,
-|                  from .../include/linux/stddef.h:4,
-|                  from .../include/uapi/linux/posix_types.h:4,
-|                  from .../include/uapi/linux/types.h:13,
-|                  from .../include/linux/types.h:5,
-|                  from .../include/linux/mod_devicetable.h:11,
-|                  from .../scripts/mod/devicetable-offsets.c:2:
-| .../include/linux/compiler-gcc.h:121:1: fatal error: linux/compiler-gcc7.h: No such file or directory
-|  #include gcc_header(__GNUC__)
-
-Upstream-Status: Pending
-
-Signed-off-by: Trevor Woerner <twoerner@gmail.com>
-Signed-off-by: Fabio Berton <fabio.berton@gmail.com>
-Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
----
- include/linux/compiler-gcc7.h | 66 +++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 66 insertions(+)
- create mode 100644 include/linux/compiler-gcc7.h
-
-diff --git a/include/linux/compiler-gcc7.h b/include/linux/compiler-gcc7.h
-new file mode 100644
-index 0000000..cdd1cc2
---- /dev/null
-+++ b/include/linux/compiler-gcc7.h
-@@ -0,0 +1,66 @@
-+#ifndef __LINUX_COMPILER_H
-+#error "Please don't include <linux/compiler-gcc5.h> directly, include <linux/compiler.h> instead."
-+#endif
-+
-+#define __used                                __attribute__((__used__))
-+#define __must_check                  __attribute__((warn_unused_result))
-+#define __compiler_offsetof(a, b)     __builtin_offsetof(a, b)
-+
-+/* Mark functions as cold. gcc will assume any path leading to a call
-+   to them will be unlikely.  This means a lot of manual unlikely()s
-+   are unnecessary now for any paths leading to the usual suspects
-+   like BUG(), printk(), panic() etc. [but let's keep them for now for
-+   older compilers]
-+
-+   Early snapshots of gcc 4.3 don't support this and we can't detect this
-+   in the preprocessor, but we can live with this because they're unreleased.
-+   Maketime probing would be overkill here.
-+
-+   gcc also has a __attribute__((__hot__)) to move hot functions into
-+   a special section, but I don't see any sense in this right now in
-+   the kernel context */
-+#define __cold                        __attribute__((__cold__))
-+
-+#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
-+
-+#ifndef __CHECKER__
-+# define __compiletime_warning(message) __attribute__((warning(message)))
-+# define __compiletime_error(message) __attribute__((error(message)))
-+#endif /* __CHECKER__ */
-+
-+/*
-+ * Mark a position in code as unreachable.  This can be used to
-+ * suppress control flow warnings after asm blocks that transfer
-+ * control elsewhere.
-+ *
-+ * Early snapshots of gcc 4.5 don't support this and we can't detect
-+ * this in the preprocessor, but we can live with this because they're
-+ * unreleased.  Really, we need to have autoconf for the kernel.
-+ */
-+#define unreachable() __builtin_unreachable()
-+
-+/* Mark a function definition as prohibited from being cloned. */
-+#define __noclone     __attribute__((__noclone__))
-+
-+/*
-+ * Tell the optimizer that something else uses this function or variable.
-+ */
-+#define __visible __attribute__((externally_visible))
-+
-+/*
-+ * GCC 'asm goto' miscompiles certain code sequences:
-+ *
-+ *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
-+ *
-+ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
-+ * Fixed in GCC 4.8.2 and later versions.
-+ *
-+ * (asm goto is automatically volatile - the naming reflects this.)
-+ */
-+#define asm_volatile_goto(x...)       do { asm goto(x); asm (""); } while (0)
-+
-+#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
-+#define __HAVE_BUILTIN_BSWAP32__
-+#define __HAVE_BUILTIN_BSWAP64__
-+#define __HAVE_BUILTIN_BSWAP16__
-+#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
--- 
-2.7.4
-
diff --git a/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota_2015.07.bb b/meta-agl-bsp/recipes-bsp/u-boot/u-boot-ota_2015.07.bb
deleted file mode 100644 (file)
index 7ef3cac..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-include recipes-bsp/u-boot/u-boot.inc
-DEPENDS += "dtc-native"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://Licenses/README;md5=0507cd7da8e7ad6d6701926ec9b84c95"
-
-# This revision corresponds to the tag "v2015.07"
-# We use the revision in order to avoid having to fetch it from the
-# repo during parse
-SRCREV = "baba2f57e8f4ed3fa67fe213d22da0de5e00f204"
-
-SRC_URI = "\
-    git://git.denx.de/u-boot.git;branch=master \
-    file://0001-Set-up-environment-for-OSTree-integration.patch \
-    file://0002-Replace-wraps-with-built-in-code-to-remove-dependenc.patch \
-    file://0001-fixup-build-with-gcc6.patch \
-    file://0002-fixup-build-with-gcc7.patch \
-"
-S = "${WORKDIR}/git"
-
-PV = "v2015.07+git${SRCPV}"
-
-EXTRA_OEMAKE_append = " KCFLAGS=-fgnu89-inline "
-EXTRA_OEMAKE_append_qemux86 = " BUILD_ROM=y"
-EXTRA_OEMAKE_append_qemux86-64 = " BUILD_ROM=y"
-
-UBOOT_SUFFIX = "bin"
-UBOOT_SUFFIX_qemux86 = "rom"
-UBOOT_SUFFIX_qemux86-64 = "rom"
diff --git a/meta-agl-bsp/recipes-graphics/opencv/opencv/0004-Change-Max-Device-Count-To-16.patch b/meta-agl-bsp/recipes-graphics/opencv/opencv/0004-Change-Max-Device-Count-To-16.patch
deleted file mode 100644 (file)
index 2ad367c..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/modules/videoio/src/cap_v4l.cpp b/modules/videoio/src/cap_v4l.cpp
-index c36a619a56..0040e4574e 100644
---- a/modules/videoio/src/cap_v4l.cpp
-+++ b/modules/videoio/src/cap_v4l.cpp
-@@ -256,7 +256,7 @@ make & enjoy!
- #define DEFAULT_V4L_HEIGHT 480
- #define DEFAULT_V4L_FPS 30
--#define MAX_CAMERAS 8
-+#define MAX_CAMERAS 16
- // default and maximum number of V4L buffers, not including last, 'special' buffer
- #define MAX_V4L_BUFFERS 10
diff --git a/meta-agl-bsp/recipes-graphics/opencv/opencv_4.%.bbappend b/meta-agl-bsp/recipes-graphics/opencv/opencv_4.%.bbappend
deleted file mode 100644 (file)
index 8a68b06..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
-SRC_URI += " \
-        file://0004-Change-Max-Device-Count-To-16.patch \
-        "
diff --git a/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf.bbappend b/meta-agl-bsp/recipes-graphics/wayland/weston-ini-conf.bbappend
deleted file mode 100644 (file)
index 671fa17..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-SRC_URI += "${@bb.utils.contains("DISTRO_FEATURES", "weston-remoting", "file://remote-output.cfg", "",d)}"
diff --git a/meta-agl-bsp/recipes-kernel/linux/linux-yocto_%.bbappend b/meta-agl-bsp/recipes-kernel/linux/linux-yocto_%.bbappend
deleted file mode 100644 (file)
index 3861120..0000000
+++ /dev/null
@@ -1 +0,0 @@
-require linux-agl.inc
diff --git a/meta-agl-core-test/conf/layer.conf b/meta-agl-core-test/conf/layer.conf
new file mode 100644 (file)
index 0000000..2ce0c18
--- /dev/null
@@ -0,0 +1,14 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH =. "${LAYERDIR}:"
+
+# We have recipes-* directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+            ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "aglcoretest"
+BBFILE_PATTERN_aglcoretest = "^${LAYERDIR}/"
+BBFILE_PRIORITY_aglcoretest = "60"
+
+LAYERSERIES_COMPAT_aglcoretest = "dunfell"
+LAYERDEPENDS_aglcoretest = "core aglcore"
+LAYERDEPENDS_aglcoretest += "openembedded-layer"
@@ -15,44 +15,53 @@ ALLOW_EMPTY_${PN} = "1"
 
 RDEPENDS_${PN} += "\
     bc \
-    dbench \
     ebizzy \
     evtest \
     ffsb \
     glmark2 \
     interbench \
-    iozone3 \
-    iperf3 \
     ipv6connect \
     linpack \
     linus-stress \
-    lmbench \
-    nbench-byte \
     nmap \
     rt-tests \
     stress \
     "
+
+
+
+
+
 # to be added, but needs LICENSE_FLAGS_WHITELIST="non-commercial"
-#    netperf
+#    netperf                             # meta-networking
+
+# relocate due to dependencies
+#    iperf3 \                            # meta-oe
+#    lmbench \                           # meta-oe
+#    dbench \                            # meta-oe
+#    nbench-byte \                       # meta-oe
+#    iozone3 \                           # meta-oe
+#
 
 # FTBS, SPEC-316
-#    himeno 
+#    himeno                              # nowhere
 # FTBS, SPEC-1384
-#    trinity
+#    trinity                             # meta-linaro (1.5)
 
 #    packagegroup-agl-test-ltp \
-#    ltp \
+#    ltp \                               # ltp in oe-core
 #
 
 # Packages for shell commands which are required by LTP
 #   readelf, logrotate, vsftpd, crontab, sar, arp, ftp,
 #   host, rcp, rlogin, rsh, tcpdump, expect, iptables, dnsmasq,
 #   pgrep
-RDEPENDS_packagegroup-agl-test-ltp += " \
-    initscripts-functions bind-utils binutils \
-    cronie dnsmasq expect inetutils-ftp inetutils-rsh \
-    iptables logrotate net-tools sysstat tcpdump vsftpd \
-    "
+RDEPENDS_packagegroup-agl-test-ltp = ""
+#RDEPENDS_packagegroup-agl-test-ltp += " \
+#    initscripts-functions bind-utils binutils \
+#    cronie dnsmasq expect inetutils-ftp inetutils-rsh \
+#    iptables logrotate net-tools sysstat tcpdump vsftpd \
+#    "
 
 RDEPENDS_packagegroup-ivi-common-test = " \
     packagegroup-agl-test \
diff --git a/meta-agl-core/README b/meta-agl-core/README
new file mode 120000 (symlink)
index 0000000..4a7a1a1
--- /dev/null
@@ -0,0 +1 @@
+README-AGL.md
\ No newline at end of file
diff --git a/meta-agl-core/README-AGL.md b/meta-agl-core/README-AGL.md
new file mode 100644 (file)
index 0000000..c7fc029
--- /dev/null
@@ -0,0 +1,21 @@
+Overview
+========
+
+The
+[AGL Project](https://www.automotivelinux.org/) is an automotive-specific
+development environment that provides a Linux distribution
+[AGL UCB](https://www.automotivelinux.org/software/unified-code-base).
+
+AGL uses layers designed to be compatible with the
+[Yocto Project](https://www.yoctoproject.org) and the
+[OpenEmbedded Project (OE)](https://www.openembedded.org/wiki/Main_Page).
+
+This section provides information about the layers used by the AGL Project:
+
+* **`meta-agl/meta-agl-core`**: Minimal set of software needed to create an AGL distribution
+  used to boot a system.
+  AGL profiles are built on top of this minimal set of software.
+
+    ```
+    $ git clone https://gerrit.automotivelinux.org/gerrit/AGL/meta-agl
+    ```
diff --git a/meta-agl-core/classes/sanity-meta-agl-core.bbclass b/meta-agl-core/classes/sanity-meta-agl-core.bbclass
new file mode 100644 (file)
index 0000000..93df587
--- /dev/null
@@ -0,0 +1,10 @@
+addhandler aglcore_bbappend_distrocheck
+aglcore_bbappend_distrocheck[eventmask] = "bb.event.SanityCheck"
+python aglcore_bbappend_distrocheck() {
+    skip_check = e.data.getVar('SKIP_META_AGL_CORE_SANITY_CHECK') == "1"
+    if 'aglcore' not in e.data.getVar('AGL_FEATURES').split() and not skip_check:
+        bb.warn("You have included the meta-agl-core layer, but \
+'aglcore' has not been enabled in your AGL_FEATURES. Some bbappend files \
+may not take effect. See the meta-agl-core README for details on enabling \
+meta-agl-core support.")
+}
diff --git a/meta-agl-core/conf/bblayers.conf.sample b/meta-agl-core/conf/bblayers.conf.sample
new file mode 100644 (file)
index 0000000..8b1cbdf
--- /dev/null
@@ -0,0 +1,12 @@
+# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
+# changes incompatibly
+POKY_BBLAYERS_CONF_VERSION = "2"
+
+BBPATH = "${TOPDIR}"
+BBFILES ?= ""
+
+BBLAYERS ?= " \
+  ##OEROOT##/meta \
+  ##OEROOT##/meta-poky \
+  ##OEROOT##/meta-yocto-bsp \
+  "
similarity index 96%
rename from meta-agl-profile-core/conf/include/base-agl.inc
rename to meta-agl-core/conf/include/base-agl.inc
index c5cf1a5..5ca723a 100644 (file)
@@ -18,3 +18,5 @@ USERADDEXTENSION = "useradd-staticids"
 USERADD_ERROR_DYNAMIC = "error"
 USERADD_GID_TABLES = "files/group"
 USERADD_UID_TABLES = "files/passwd"
+
+AGL_FEATURES += "aglcore"
diff --git a/meta-agl-core/conf/layer.conf b/meta-agl-core/conf/layer.conf
new file mode 100644 (file)
index 0000000..2218e3d
--- /dev/null
@@ -0,0 +1,17 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH =. "${LAYERDIR}:"
+
+# We have recipes-* directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+            ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "aglcore"
+BBFILE_PATTERN_aglcore = "^${LAYERDIR}/"
+BBFILE_PRIORITY_aglcore = "60"
+
+LAYERSERIES_COMPAT_aglcore = "dunfell"
+LAYERDEPENDS_aglcore = "core"
+
+# Sanity check for meta-virtualization layer.
+# Setting SKIP_META_VIRT_SANITY_CHECK to "1" would skip the bbappend files check.
+#INHERIT += "sanity-meta-agl-core"
diff --git a/meta-agl-core/conf/local.conf.sample b/meta-agl-core/conf/local.conf.sample
new file mode 100644 (file)
index 0000000..82c9ddd
--- /dev/null
@@ -0,0 +1,277 @@
+#
+# This file is your local configuration file and is where all local user settings
+# are placed. The comments in this file give some guide to the options a new user
+# to the system might want to change but pretty much any configuration option can
+# be set in this file. More adventurous users can look at local.conf.extended
+# which contains other examples of configuration which can be placed in this file
+# but new users likely won't need any of them initially.
+#
+# Lines starting with the '#' character are commented out and in some cases the
+# default values are provided as comments to show people example syntax. Enabling
+# the option is a question of removing the # character and making any change to the
+# variable as required.
+
+#
+# Machine Selection
+#
+# You need to select a specific machine to target the build with. There are a selection
+# of emulated machines available which can boot and run in the QEMU emulator:
+#
+#MACHINE ?= "qemuarm"
+#MACHINE ?= "qemuarm64"
+#MACHINE ?= "qemumips"
+#MACHINE ?= "qemumips64"
+#MACHINE ?= "qemuppc"
+#MACHINE ?= "qemux86"
+#MACHINE ?= "qemux86-64"
+#
+# There are also the following hardware board target machines included for
+# demonstration purposes:
+#
+#MACHINE ?= "beaglebone-yocto"
+#MACHINE ?= "genericx86"
+#MACHINE ?= "genericx86-64"
+#MACHINE ?= "edgerouter"
+#
+# This sets the default machine to be qemux86-64 if no other machine is selected:
+MACHINE ??= "qemux86-64"
+
+#
+# Where to place downloads
+#
+# During a first build the system will download many different source code tarballs
+# from various upstream projects. This can take a while, particularly if your network
+# connection is slow. These are all stored in DL_DIR. When wiping and rebuilding you
+# can preserve this directory to speed up this part of subsequent builds. This directory
+# is safe to share between multiple builds on the same machine too.
+#
+# The default is a downloads directory under TOPDIR which is the build directory.
+#
+#DL_DIR ?= "${TOPDIR}/downloads"
+
+#
+# Where to place shared-state files
+#
+# BitBake has the capability to accelerate builds based on previously built output.
+# This is done using "shared state" files which can be thought of as cache objects
+# and this option determines where those files are placed.
+#
+# You can wipe out TMPDIR leaving this directory intact and the build would regenerate
+# from these files if no changes were made to the configuration. If changes were made
+# to the configuration, only shared state files where the state was still valid would
+# be used (done using checksums).
+#
+# The default is a sstate-cache directory under TOPDIR.
+#
+#SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
+
+#
+# Where to place the build output
+#
+# This option specifies where the bulk of the building work should be done and
+# where BitBake should place its temporary files and output. Keep in mind that
+# this includes the extraction and compilation of many applications and the toolchain
+# which can use Gigabytes of hard disk space.
+#
+# The default is a tmp directory under TOPDIR.
+#
+#TMPDIR = "${TOPDIR}/tmp"
+
+#
+# Default policy config
+#
+# The distribution setting controls which policy settings are used as defaults.
+# The default value is fine for general Yocto project use, at least initially.
+# Ultimately when creating custom policy, people will likely end up subclassing
+# these defaults.
+#
+DISTRO ?= "poky"
+# As an example of a subclass there is a "bleeding" edge policy configuration
+# where many versions are set to the absolute latest code from the upstream
+# source control systems. This is just mentioned here as an example, its not
+# useful to most new users.
+# DISTRO ?= "poky-bleeding"
+
+#
+# Package Management configuration
+#
+# This variable lists which packaging formats to enable. Multiple package backends
+# can be enabled at once and the first item listed in the variable will be used
+# to generate the root filesystems.
+# Options are:
+#  - 'package_deb' for debian style deb files
+#  - 'package_ipk' for ipk files are used by opkg (a debian style embedded package manager)
+#  - 'package_rpm' for rpm style packages
+# E.g.: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk"
+# We default to rpm:
+PACKAGE_CLASSES ?= "package_rpm"
+
+#
+# SDK target architecture
+#
+# This variable specifies the architecture to build SDK items for and means
+# you can build the SDK packages for architectures other than the machine you are
+# running the build on (i.e. building i686 packages on an x86_64 host).
+# Supported values are i686 and x86_64
+#SDKMACHINE ?= "i686"
+
+#
+# Extra image configuration defaults
+#
+# The EXTRA_IMAGE_FEATURES variable allows extra packages to be added to the generated
+# images. Some of these options are added to certain image types automatically. The
+# variable can contain the following options:
+#  "dbg-pkgs"       - add -dbg packages for all installed packages
+#                     (adds symbol information for debugging/profiling)
+#  "src-pkgs"       - add -src packages for all installed packages
+#                     (adds source code for debugging)
+#  "dev-pkgs"       - add -dev packages for all installed packages
+#                     (useful if you want to develop against libs in the image)
+#  "ptest-pkgs"     - add -ptest packages for all ptest-enabled packages
+#                     (useful if you want to run the package test suites)
+#  "tools-sdk"      - add development tools (gcc, make, pkgconfig etc.)
+#  "tools-debug"    - add debugging tools (gdb, strace)
+#  "eclipse-debug"  - add Eclipse remote debugging support
+#  "tools-profile"  - add profiling tools (oprofile, lttng, valgrind)
+#  "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.)
+#  "debug-tweaks"   - make an image suitable for development
+#                     e.g. ssh root access has a blank password
+# There are other application targets that can be used here too, see
+# meta/classes/image.bbclass and meta/classes/core-image.bbclass for more details.
+# We default to enabling the debugging tweaks.
+EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
+
+#
+# Additional image features
+#
+# The following is a list of additional classes to use when building images which
+# enable extra features. Some available options which can be included in this variable
+# are:
+#   - 'buildstats' collect build statistics
+#   - 'image-mklibs' to reduce shared library files size for an image
+#   - 'image-prelink' in order to prelink the filesystem image
+# NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink
+# NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended
+USER_CLASSES ?= "buildstats image-mklibs image-prelink"
+
+#
+# Runtime testing of images
+#
+# The build system can test booting virtual machine images under qemu (an emulator)
+# after any root filesystems are created and run tests against those images. It can also
+# run tests against any SDK that are built. To enable this uncomment these lines.
+# See classes/test{image,sdk}.bbclass for further details.
+#IMAGE_CLASSES += "testimage testsdk"
+#TESTIMAGE_AUTO_qemuall = "1"
+
+#
+# Interactive shell configuration
+#
+# Under certain circumstances the system may need input from you and to do this it
+# can launch an interactive shell. It needs to do this since the build is
+# multithreaded and needs to be able to handle the case where more than one parallel
+# process may require the user's attention. The default is iterate over the available
+# terminal types to find one that works.
+#
+# Examples of the occasions this may happen are when resolving patches which cannot
+# be applied, to use the devshell or the kernel menuconfig
+#
+# Supported values are auto, gnome, xfce, rxvt, screen, konsole (KDE 3.x only), none
+# Note: currently, Konsole support only works for KDE 3.x due to the way
+# newer Konsole versions behave
+#OE_TERMINAL = "auto"
+# By default disable interactive patch resolution (tasks will just fail instead):
+PATCHRESOLVE = "noop"
+
+#
+# Disk Space Monitoring during the build
+#
+# Monitor the disk space during the build. If there is less that 1GB of space or less
+# than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully
+# shutdown the build. If there is less that 100MB or 1K inodes, perform a hard abort
+# of the build. The reason for this is that running completely out of space can corrupt
+# files and damages the build in ways which may not be easily recoverable.
+# It's necesary to monitor /tmp, if there is no space left the build will fail
+# with very exotic errors.
+BB_DISKMON_DIRS ??= "\
+    STOPTASKS,${TMPDIR},1G,100K \
+    STOPTASKS,${DL_DIR},1G,100K \
+    STOPTASKS,${SSTATE_DIR},1G,100K \
+    STOPTASKS,/tmp,100M,100K \
+    ABORT,${TMPDIR},100M,1K \
+    ABORT,${DL_DIR},100M,1K \
+    ABORT,${SSTATE_DIR},100M,1K \
+    ABORT,/tmp,10M,1K"
+
+#
+# Shared-state files from other locations
+#
+# As mentioned above, shared state files are prebuilt cache data objects which can
+# used to accelerate build time. This variable can be used to configure the system
+# to search other mirror locations for these objects before it builds the data itself.
+#
+# This can be a filesystem directory, or a remote url such as http or ftp. These
+# would contain the sstate-cache results from previous builds (possibly from other
+# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the
+# cache locations to check for the shared objects.
+# NOTE: if the mirror uses the same structure as SSTATE_DIR, you need to add PATH
+# at the end as shown in the examples below. This will be substituted with the
+# correct path within the directory structure.
+#SSTATE_MIRRORS ?= "\
+#file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \
+#file://.* file:///some/local/dir/sstate/PATH"
+
+#
+# Yocto Project SState Mirror
+#
+# The Yocto Project has prebuilt artefacts available for its releases, you can enable
+# use of these by uncommenting the following line. This will mean the build uses
+# the network to check for artefacts at the start of builds, which does slow it down
+# equally, it will also speed up the builds by not having to build things if they are
+# present in the cache. It assumes you can download something faster than you can build it
+# which will depend on your network.
+#
+#SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/2.5/PATH;downloadfilename=PATH"
+
+#
+# Qemu configuration
+#
+# By default native qemu will build with a builtin VNC server where graphical output can be
+# seen. The line below enables the SDL UI frontend too.
+PACKAGECONFIG_append_pn-qemu-system-native = " sdl"
+# By default libsdl2-native will be built, if you want to use your host's libSDL instead of
+# the minimal libsdl built by libsdl2-native then uncomment the ASSUME_PROVIDED line below.
+#ASSUME_PROVIDED += "libsdl2-native"
+
+# You can also enable the Gtk UI frontend, which takes somewhat longer to build, but adds
+# a handy set of menus for controlling the emulator.
+#PACKAGECONFIG_append_pn-qemu-system-native = " gtk+"
+
+#
+# Hash Equivalence
+#
+# Enable support for automatically running a local hash equivalence server and
+# instruct bitbake to use a hash equivalence aware signature generator. Hash
+# equivalence improves reuse of sstate by detecting when a given sstate
+# artifact can be reused as equivalent, even if the current task hash doesn't
+# match the one that generated the artifact.
+#
+# A shared hash equivalent server can be set with "<HOSTNAME>:<PORT>" format
+#
+#BB_HASHSERVE = "auto"
+#BB_SIGNATURE_HANDLER = "OEEquivHash"
+
+# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to
+# track the version of this file when it was generated. This can safely be ignored if
+# this doesn't mean anything to you.
+CONF_VERSION = "1"
+
+# meta-agl-core uses these variables
+AGL_FEATURES ?= ""
+AGL_EXTRA_IMAGE_FSTYPES ?= ""
+
+DISTRO_FEATURES_append = " systemd "
+DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " sysvinit"
+VIRTUAL-RUNTIME_init_manager = "systemd"
+
+# soon: INIT_MANAGER = "systemd"
diff --git a/meta-agl-core/recipes-connectivity/busybox/busybox_%.bbappend b/meta-agl-core/recipes-connectivity/busybox/busybox_%.bbappend
new file mode 100644 (file)
index 0000000..9807832
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_aglcore.inc', '', d)}
diff --git a/meta-agl-core/recipes-connectivity/busybox/busybox_aglcore.inc b/meta-agl-core/recipes-connectivity/busybox/busybox_aglcore.inc
new file mode 100644 (file)
index 0000000..babf026
--- /dev/null
@@ -0,0 +1,3 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+SRC_URI_append = " file://enable-wget-https.cfg"
+
diff --git a/meta-agl-core/recipes-connectivity/connman/connman_%.bbappend b/meta-agl-core/recipes-connectivity/connman/connman_%.bbappend
new file mode 100644 (file)
index 0000000..8078f3d
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', 'connman_aglcore.inc', '', d)}
diff --git a/meta-agl-core/recipes-core/systemd/systemd-conf_%.bbappend b/meta-agl-core/recipes-core/systemd/systemd-conf_%.bbappend
new file mode 100644 (file)
index 0000000..9807832
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_aglcore.inc', '', d)}
diff --git a/meta-agl-core/recipes-core/systemd/systemd/0001-fix-udevd-seclabel-parsing.patch b/meta-agl-core/recipes-core/systemd/systemd/0001-fix-udevd-seclabel-parsing.patch
new file mode 100644 (file)
index 0000000..29165b5
--- /dev/null
@@ -0,0 +1,34 @@
+Fix udevd SECLABEL token parsing
+
+The udevd rules parsing rewrite in v243 broke SECLABEL parsing,
+with the result being that udevd crashes when it parses a line
+containing a SECLABEL token. Fix the handling of the attribute
+of SECLABEL tokens when parsing, and add a check to prevent
+crashes if the attribute is missing.
+
+Upstream-Status: Pending
+
+Signed-off-by: Scott Murray <scott.murray@konsulko.com>
+
+diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
+index efea16e5c5..3e757ccb06 100644
+--- a/src/udev/udev-rules.c
++++ b/src/udev/udev-rules.c
+@@ -918,7 +918,7 @@ static int parse_token(UdevRules *rules, const char *key, char *attr, UdevRuleOp
+                         op = OP_ASSIGN;
+                 }
+-                r = rule_line_add_token(rule_line, TK_A_SECLABEL, op, value, NULL);
++                r = rule_line_add_token(rule_line, TK_A_SECLABEL, op, value, attr);
+         } else if (streq(key, "RUN")) {
+                 if (is_match || op == OP_REMOVE)
+                         return log_token_invalid_op(rules, key);
+@@ -1927,6 +1927,8 @@ static int udev_rule_apply_token_to_event(
+                 _cleanup_free_ char *name = NULL, *label = NULL;
+                 char label_str[UTIL_LINE_SIZE] = {};
++                if (!token->data)
++                        break;
+                 name = strdup((const char*) token->data);
+                 if (!name)
+                         return log_oom();
diff --git a/meta-agl-core/recipes-core/systemd/systemd_%.bbappend b/meta-agl-core/recipes-core/systemd/systemd_%.bbappend
new file mode 100644 (file)
index 0000000..9807832
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_aglcore.inc', '', d)}
@@ -1,4 +1,4 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+FILESEXTRAPATHS_prepend := "${THISDIR}/systemd:"
 
 SRC_URI += "\
     file://0002-network-add-CAN-Termination-tristate-option.patch \
diff --git a/meta-agl-core/recipes-devtools/cmake/cmake_%.bbappend b/meta-agl-core/recipes-devtools/cmake/cmake_%.bbappend
new file mode 100644 (file)
index 0000000..9807832
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_aglcore.inc', '', d)}
diff --git a/meta-agl-core/recipes-devtools/gdb/gdb_%.bbappend b/meta-agl-core/recipes-devtools/gdb/gdb_%.bbappend
new file mode 100644 (file)
index 0000000..9807832
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_aglcore.inc', '', d)}
diff --git a/meta-agl-core/recipes-extended/gperf/gperf_%.bbappend b/meta-agl-core/recipes-extended/gperf/gperf_%.bbappend
new file mode 100644 (file)
index 0000000..9807832
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_aglcore.inc', '', d)}
@@ -4,7 +4,7 @@ HOMEPAGE = "https://github.com/waltham/waltham"
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://waltham-transmitter/COPYING;md5=f21c9af4de068fb53b83f0b37d262ec3"
 
-DEPENDS += "libdrm virtual/kernel wayland wayland-native waltham weston gstreamer1.0 gstreamer gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad wayland-ivi-extension"
+DEPENDS += "libdrm virtual/kernel wayland wayland-native waltham weston gstreamer1.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad wayland-ivi-extension"
 
 SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/weston-ivi-plugins.git;protocol=https;branch=${AGL_BRANCH}"
 SRCREV = "5287483228fa1e28f3217a54606cfe760c6582bd"
@@ -7,6 +7,19 @@ SRC_URI = "file://core.cfg \
            file://hdmi-a-1-270.cfg \
           "
 
+# cluster and html5-landscape
+# core, shell, hdmi-a-1-180.cfg, virtual-landscape.cfg
+SRC_URI_remove_landscape = " \
+       file://hdmi-a-1-270.cfg \
+       file://hdmi-a-1-90.cfg \
+       file://virtual.cfg \
+"
+SRC_URI_append_landscape = " \
+       file://hdmi-a-1-180.cfg \
+       file://virtual-landscape.cfg \
+"
+
+
 S = "${WORKDIR}"
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"
@@ -1,5 +1,10 @@
 FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
 
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+SRC_URI += "${@bb.utils.contains("DISTRO_FEATURES", "weston-remoting", "file://remote-output.cfg", "",d)}"
+
+
 # For virtual machines and intel-corei7-64 we want to support both the HDMI-A-1
 # and Virtual-1 outputs. This allows us to run virtual images on real hardware
 # and vice versa.
diff --git a/meta-agl-core/recipes-graphics/wayland/weston-init.bbappend b/meta-agl-core/recipes-graphics/wayland/weston-init.bbappend
new file mode 100644 (file)
index 0000000..c09d7cc
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', 'weston-init_aglcore.inc', '', d)}
diff --git a/meta-agl-core/recipes-graphics/wayland/weston-init_aglcore.inc b/meta-agl-core/recipes-graphics/wayland/weston-init_aglcore.inc
new file mode 100644 (file)
index 0000000..51c59ae
--- /dev/null
@@ -0,0 +1,6 @@
+do_install_append() {
+    # Remove upstream weston.ini to avoid conflict with weston-ini-conf package
+    rm -f ${D}${sysconfdir}/xdg/weston/weston.ini
+}
+
+SYSTEMD_AUTO_ENABLE = "enable"
diff --git a/meta-agl-core/recipes-graphics/wayland/weston_8.0.%.bbappend b/meta-agl-core/recipes-graphics/wayland/weston_8.0.%.bbappend
new file mode 100644 (file)
index 0000000..f627f5c
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', 'weston_8.0_aglcore.inc', '', d)}
diff --git a/meta-agl-core/recipes-graphics/wayland/weston_8.0_aglcore.inc b/meta-agl-core/recipes-graphics/wayland/weston_8.0_aglcore.inc
new file mode 100644 (file)
index 0000000..c249546
--- /dev/null
@@ -0,0 +1,11 @@
+FILESEXTRAPATHS_append := ":${THISDIR}/weston"
+
+SRC_URI_append = "\
+    file://0001-libweston-Expose-weston_output_damage-in-libweston.patch \
+    file://0001-libweston-Migrate-weston_seat_init-release-to-public.patch \
+    file://0005-correctly-tear-down-drm-backend.patch \
+    "
+
+# Workaround for incorrect upstream definition
+PACKAGECONFIG[remoting] = "-Dremoting=true,-Dremoting=false,gstreamer1.0 gstreamer1.0-plugins-base"
+PACKAGECONFIG_append = "${@bb.utils.contains('DISTRO_FEATURES', 'weston-remoting', ' remoting', '', d)}"
diff --git a/meta-agl-core/recipes-kernel/linux/kernel-devsrc.bbappend b/meta-agl-core/recipes-kernel/linux/kernel-devsrc.bbappend
new file mode 100644 (file)
index 0000000..3d5903d
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_agl.inc', '', d)}
diff --git a/meta-agl-core/recipes-platform/images/agl-image-core-autobuilder.bb b/meta-agl-core/recipes-platform/images/agl-image-core-autobuilder.bb
new file mode 100644 (file)
index 0000000..3855b3c
--- /dev/null
@@ -0,0 +1,18 @@
+SUMMARY = "A very basic Wayland image with a terminal"
+
+require agl-image-weston.inc
+
+LICENSE = "MIT"
+
+IMAGE_INSTALL_append = "\
+    packagegroup-agl-profile-graphical \
+    busybox \
+    psplash \
+    gdb \
+    gperf \
+    weston \
+    weston-examples \
+    curl \
+    ptest-runner \
+    libsoup-2.4 \
+    "
diff --git a/meta-agl-core/recipes-platform/images/agl-image-minimal-crosssdk.inc b/meta-agl-core/recipes-platform/images/agl-image-minimal-crosssdk.inc
new file mode 100644 (file)
index 0000000..a69e698
--- /dev/null
@@ -0,0 +1,24 @@
+IMAGE_FEATURES_append = " dev-pkgs"
+IMAGE_INSTALL_append = " kernel-dev kernel-devsrc"
+
+
+
+
+
+
+# FIXME:
+# Always include the test widgets
+#IMAGE_FEATURES_append = " agl-test-wgt"
+#
+# Required dependencies for app and test builds
+#TOOLCHAIN_HOST_TASK += " \
+#    nativesdk-lua \
+#    "
+#
+# Required dependencies for app and test builds
+#TOOLCHAIN_TARGET_TASK += " \
+#    lua-dev \
+#    lua-staticdev \
+#    libafb-helpers-staticdev \
+#    libappcontroller-staticdev \
+#    "
@@ -35,7 +35,6 @@ RDEPENDS_${PN} = "\
     base-passwd \
     busybox \
     rng-tools \
-    run-agl-postinsts \
     ${@bb.utils.contains("DISTRO_FEATURES", "sysvinit", "${SYSVINIT_SCRIPTS}", "", d)} \
     ${@bb.utils.contains("MACHINE_FEATURES", "keyboard", "${VIRTUAL-RUNTIME_keymaps}", "", d)} \
     netbase \
@@ -15,5 +15,5 @@ RDEPENDS_${PN} += "\
     dhcp-server \
     ${@bb.utils.contains('VIRTUAL-RUNTIME_net_manager','connman','connman connman-client connman-tests \
         connman-tools connman-ncurses connman-plugin-session-policy-local','',d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', '${PKGGROUP_ZEROCONF}', '', d)} \
+    ${@bb.utils.contains('AGL_FEATURES', 'agl-devel', '${PKGGROUP_ZEROCONF}', '', d)} \
     "
@@ -12,22 +12,20 @@ RDEPENDS_${PN} = "\
         gdb \
         valgrind \
         perf \
-        htop \
         powertop \
         screen \
         usbutils \
         rsync \
-        tree \
         pstree \
         procps \
-        jq \
         libxslt-bin \
-        agl-service-network-tools \
         gcc-sanitizers \
         pciutils \
-        pyagl \
-        gcov \
-        gcov-symlinks \
-        gcovr \
-        gcovr-wrapper \
         "
+
+# needs meta-oe present
+#RRECOMMENDS_${PN} = "\
+#        jq \
+#        htop \
+#        tree \
+#"
@@ -12,9 +12,6 @@ ALLOW_EMPTY_${PN} = "1"
 RDEPENDS_${PN} += " \
                   weston \
                   weston-init \
-                  weston-ini-conf \
                   weston-examples \
-                  agl-login-manager \
-                  agl-compositor \
                   "
 
@@ -15,11 +15,9 @@ RDEPENDS_${PN} += "\
     packagegroup-machine-base \
     "
 
-
 RDEPENDS_${PN} += "\
     packagegroup-agl-core-connectivity \
     packagegroup-agl-core-os-commonlibs \
-    packagegroup-agl-core-services \
     packagegroup-agl-core-security \
     "
 
@@ -14,7 +14,6 @@ ALLOW_EMPTY_${PN} = "1"
 RDEPENDS_${PN} += "\
     packagegroup-agl-image-minimal \
     packagegroup-agl-graphical-weston \
-    packagegroup-agl-graphical-services \
     packagegroup-agl-graphical-multimedia \
 "
 # FIXME: Removed due to issues building against weston 5.0.0:
diff --git a/meta-agl-core/recipes-support/ptest-runner/ptest-runner_2.%.bbappend b/meta-agl-core/recipes-support/ptest-runner/ptest-runner_2.%.bbappend
new file mode 100644 (file)
index 0000000..5033ed7
--- /dev/null
@@ -0,0 +1,2 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_agl.inc', '', d)}
+
diff --git a/meta-agl-core/scripts/run-yocto-check-layer-feature-enabled.sh b/meta-agl-core/scripts/run-yocto-check-layer-feature-enabled.sh
new file mode 100755 (executable)
index 0000000..93403b9
--- /dev/null
@@ -0,0 +1,50 @@
+#!/bin/bash
+set -x
+
+SCRIPTPATH="$( cd $(dirname $0) >/dev/null 2>&1 ; pwd -P )"
+echo $SCRIPTPATH
+AGLROOT="$SCRIPTPATH/../../.."
+POKYDIR="$AGLROOT/external/poky"
+TMPROOT=`mktemp -d`
+
+rm -rf ${TMPROOT}/testbuild-ycl || true
+mkdir -p ${TMPROOT}/testbuild-ycl
+cd ${TMPROOT}/testbuild-ycl
+
+source $POKYDIR/oe-init-build-env .
+
+cat << EOF >> conf/local.conf
+# just define defaults
+AGL_FEATURES ?= ""
+AGL_EXTRA_IMAGE_FSTYPES ?= ""
+
+# important settings imported from poky-agl.conf
+# we do not import 
+DISTRO_FEATURES_append = " systemd smack"
+DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " sysvinit"
+VIRTUAL-RUNTIME_init_manager = "systemd"
+
+# workaround:
+# ERROR: Nothing PROVIDES 'smack' (but /home/dl9pf/AGL/master-newlayout/external/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.3.bb DEPENDS on or otherwise requires it)
+BBMASK += "meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.3.bb"
+
+AGL_FEATURES += "aglcore"
+
+EOF
+
+
+yocto-check-layer \
+       --dependency \
+       $AGLROOT/external/meta-openembedded/meta-oe \
+       -- \
+       $AGLROOT/meta-agl/meta-agl-core
+
+
+[ $? = 0 ] && rm -rf ${TMPROOT}/testbuild-ycl
+
+exit 0
+
+       --dependency \
+           $AGLROOT/external/meta-openembedded/meta-oe \
+           $AGLROOT/external/meta-openembedded/meta-python \
+           $AGLROOT/external/meta-openembedded/meta-networking \
diff --git a/meta-agl-core/scripts/run-yocto-check-layer.sh b/meta-agl-core/scripts/run-yocto-check-layer.sh
new file mode 100755 (executable)
index 0000000..9082be9
--- /dev/null
@@ -0,0 +1,48 @@
+#!/bin/bash
+set -x
+
+SCRIPTPATH="$( cd $(dirname $0) >/dev/null 2>&1 ; pwd -P )"
+echo $SCRIPTPATH
+AGLROOT="$SCRIPTPATH/../../.."
+POKYDIR="$AGLROOT/external/poky"
+TMPROOT=`mktemp -d`
+
+rm -rf ${TMPROOT}/testbuild-ycl || true
+mkdir -p ${TMPROOT}/testbuild-ycl
+cd ${TMPROOT}/testbuild-ycl
+
+source $POKYDIR/oe-init-build-env .
+
+cat << EOF >> conf/local.conf
+# just define defaults
+AGL_FEATURES ?= ""
+AGL_EXTRA_IMAGE_FSTYPES ?= ""
+
+# important settings imported from poky-agl.conf
+# we do not import 
+DISTRO_FEATURES_append = " systemd smack"
+DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " sysvinit"
+VIRTUAL-RUNTIME_init_manager = "systemd"
+
+# workaround:
+# ERROR: Nothing PROVIDES 'smack' (but /home/dl9pf/AGL/master-newlayout/external/meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.3.bb DEPENDS on or otherwise requires it)
+BBMASK += "meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.3.bb"
+
+EOF
+
+
+yocto-check-layer \
+       --dependency \
+       $AGLROOT/external/meta-openembedded/meta-oe \
+       -- \
+       $AGLROOT/meta-agl/meta-agl-core
+
+
+[ $? = 0 ] && rm -rf ${TMPROOT}/testbuild-ycl
+
+exit 0
+
+       --dependency \
+           $AGLROOT/external/meta-openembedded/meta-oe \
+           $AGLROOT/external/meta-openembedded/meta-python \
+           $AGLROOT/external/meta-openembedded/meta-networking \
diff --git a/meta-agl-distro/README b/meta-agl-distro/README
deleted file mode 100644 (file)
index 08630b4..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-This is meta-agl-disto.
-
-This layer holds the distro config(s) in use by AGL.
diff --git a/meta-agl-distro/conf/layer.conf b/meta-agl-distro/conf/layer.conf
deleted file mode 100644 (file)
index f8cf50c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# We have a conf and classes directory, add to BBPATH
-BBPATH =. "${LAYERDIR}:"
-
-# We have recipes-* directories, add to BBFILES
-BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
-            ${LAYERDIR}/recipes-*/*/*.bbappend"
-
-BBFILE_COLLECTIONS += "agl-distro"
-BBFILE_PATTERN_agl-distro = "^${LAYERDIR}/"
-BBFILE_PRIORITY_agl-distro = "70"
-
-LAYERSERIES_COMPAT_agl-distro = "dunfell"
diff --git a/meta-agl-profile-cluster-qt5/LICENSE b/meta-agl-profile-cluster-qt5/LICENSE
deleted file mode 100644 (file)
index e8758f8..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Different components of the AGL layers are under different licenses (a mix
-of MIT and GPLv2). See LICENSE.GPL-2.0-only and LICENSE.MIT for further
-details of the individual licenses.
-
-All metadata (e.g. .bb, .bbappend, .bbclass, .inc, templates/* and similar)
-is MIT licensed unless otherwise stated.
-Source code included in tree for individual recipes (e.g. patches) are under
-the LICENSE stated in the associated recipe (.bb file) unless otherwise stated.
-
-License information for any other files (scripts) is either explicitly stated
-or defaults to GPL version 2 only.
-
-Individual files can contain the following style tags instead of the full
-license text to identify their license:
-
-    SPDX-License-Identifier: GPL-2.0-only
-    SPDX-License-Identifier: MIT
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-cluster-qt5/LICENSE.GPL-2.0-only b/meta-agl-profile-cluster-qt5/LICENSE.GPL-2.0-only
deleted file mode 100644 (file)
index 5db3c0a..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                           NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-
-Note:
-Individual files contain the following tag instead of the full license text.
-
-    SPDX-License-Identifier: GPL-2.0-only
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-cluster-qt5/LICENSE.MIT b/meta-agl-profile-cluster-qt5/LICENSE.MIT
deleted file mode 100644 (file)
index a6919eb..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-Note:
-Individual files contain the following tag instead of the full license text.
-
-    SPDX-License-Identifier: MIT
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-cluster-qt5/conf/layer.conf b/meta-agl-profile-cluster-qt5/conf/layer.conf
deleted file mode 100644 (file)
index 6ed7d8c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# We have a conf and classes directory, add to BBPATH
-BBPATH =. "${LAYERDIR}:"
-
-# We have recipes-* directories, add to BBFILES
-BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
-            ${LAYERDIR}/recipes-*/*/*.bbappend"
-
-BBFILE_COLLECTIONS += "aglprofileclusterqt5"
-BBFILE_PATTERN_aglprofileclusterqt5 = "^${LAYERDIR}/"
-BBFILE_PRIORITY_aglprofileclusterqt5 = "70"
-
-LAYERSERIES_COMPAT_aglprofileclusterqt5 = "dunfell"
diff --git a/meta-agl-profile-cluster-qt5/recipes-platform/images/agl-image-cluster-qt5.bb b/meta-agl-profile-cluster-qt5/recipes-platform/images/agl-image-cluster-qt5.bb
deleted file mode 100644 (file)
index 244e2ba..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY = "A basic Wayland based cluster image with Qt5 support"
-
-require agl-image-cluster-qt5.inc
-
-LICENSE = "MIT"
-
-IMAGE_INSTALL_append = "\
-    profile-cluster-qt5 \
-    "
diff --git a/meta-agl-profile-cluster-qt5/recipes-platform/images/agl-image-cluster-qt5.inc b/meta-agl-profile-cluster-qt5/recipes-platform/images/agl-image-cluster-qt5.inc
deleted file mode 100644 (file)
index 93826aa..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-require recipes-platform/images/agl-image-boot.inc
-
-IMAGE_FEATURES += "splash package-management ssh-server-dropbear"
-
-inherit features_check
-
-REQUIRED_DISTRO_FEATURES = "wayland"
diff --git a/meta-agl-profile-cluster-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-cluster-qt5.bb b/meta-agl-profile-cluster-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-cluster-qt5.bb
deleted file mode 100644 (file)
index 5436a56..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "The middleware for AGL Qt5 based cluster profile"
-DESCRIPTION = "The set of packages required for AGL Qt5 based Cluster Distribution"
-LICENSE = "MIT"
-
-inherit packagegroup
-
-PACKAGES = "\
-    packagegroup-agl-profile-cluster-qt5 \
-    profile-cluster-qt5 \
-    "
-
-ALLOW_EMPTY_${PN} = "1"
-
-RDEPENDS_${PN} += "\
-    packagegroup-agl-image-boot \
-    packagegroup-agl-core-security \
-    packagegroup-agl-graphical-weston \
-    packagegroup-agl-appfw-native-qt5 \
-"
-
-RDEPENDS_profile-cluster-qt5 = "${PN}"
diff --git a/meta-agl-profile-cluster-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-cluster-qtcompositor.bb b/meta-agl-profile-cluster-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-cluster-qtcompositor.bb
deleted file mode 100644 (file)
index 9d54b33..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "The middleware for AGL Qt5 based cluster qtcompositor"
-DESCRIPTION = "The set of packages required for AGL Qt5 based Cluster Demo Qtcompositor Distribution"
-LICENSE = "MIT"
-
-inherit packagegroup
-
-PACKAGES = "\
-    packagegroup-agl-profile-cluster-qtcompositor \
-    profile-cluster-qt5 \
-    "
-
-ALLOW_EMPTY_${PN} = "1"
-
-RDEPENDS_${PN} += "\
-    packagegroup-agl-image-boot \
-    packagegroup-agl-core-security \
-    packagegroup-agl-core-connectivity \
-"
-
-QT_LITE = " \
-    qtbase \
-    qtdeclarative \
-    qtwayland \
-    qtgraphicaleffects-qmlplugins \
-    qtsvg-plugins \
-    qtwebsockets \
-    qtwebsockets-qmlplugins \
-    qtcompositor-conf \
-"
-
-RDEPENDS_${PN}_append = " \
-    ${QT_LITE} \
-    agl-login-manager \
-"
-
-RDEPENDS_profile-cluster-qt5 = "${PN}"
diff --git a/meta-agl-profile-cluster-qt5/recipes-qt/qt5/files/0001-fixed-eglfs_kms-fails-to-build.patch b/meta-agl-profile-cluster-qt5/recipes-qt/qt5/files/0001-fixed-eglfs_kms-fails-to-build.patch
deleted file mode 100644 (file)
index 5c936e7..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-537bb3cc027eed14500fe5724ab30f Mon Sep 17 00:00:00 2001
-From: Laszlo Agocs <laszlo.agocs@qt.io>
-Date: Fri, 14 Dec 2018 10:48:43 +0100
-Subject: eglfs: avoid breaking builds without EGL_EXT_platform_base
-
-Change-Id: I9183e17b42c00435f20c00a414e1f20aa3972351
-Fixes: QTBUG-72559
-Reviewed-by: Johan Helsing <johan.helsing@qt.io>
----
- .../eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp     | 1 -
- .../eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmwindow.cpp          | 4 ++++
- 2 files changed, 4 insertions(+), 1 deletion(-)
-
-(limited to 'src/plugins/platforms/eglfs/deviceintegration/eglfs_kms')
-
-diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp
-index 1e4f4e72c8..f154520669 100644
---- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp
-+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp
-@@ -63,7 +63,6 @@ QEglFSKmsGbmIntegration::QEglFSKmsGbmIntegration()
- #ifndef EGL_EXT_platform_base
- typedef EGLDisplay (EGLAPIENTRYP PFNEGLGETPLATFORMDISPLAYEXTPROC) (EGLenum platform, void *native_display, const EGLint *attrib_list);
--typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
- #endif
- #ifndef EGL_PLATFORM_GBM_KHR
-diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmwindow.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmwindow.cpp
-index 65a7c4f38a..a93762e5b4 100644
---- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmwindow.cpp
-+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmwindow.cpp
-@@ -45,6 +45,10 @@
- QT_BEGIN_NAMESPACE
-+#ifndef EGL_EXT_platform_base
-+typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (EGLDisplay dpy, EGLConfig config, void *native_window, const EGLint *attrib_list);
-+#endif
-+
- void QEglFSKmsGbmWindow::resetSurface()
- {
-     QEglFSKmsGbmScreen *gbmScreen = static_cast<QEglFSKmsGbmScreen *>(screen());
--- 
-cgit v1.2.1
-
diff --git a/meta-agl-profile-cluster-qt5/recipes-qt/qt5/files/0002-fixed-invalid-conversion-from-EGLNativeDisplayType-to-void.patch b/meta-agl-profile-cluster-qt5/recipes-qt/qt5/files/0002-fixed-invalid-conversion-from-EGLNativeDisplayType-to-void.patch
deleted file mode 100644 (file)
index 3c33cfc..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-From 9514c51b5a6881c445586fa3a232ccd47fe4b1e5 Mon Sep 17 00:00:00 2001
-From: Stefan Zehetbauer
-Date: Fri, 14 Dec 2018 13:26:03 +0100
-Subject: [PATCH] fixed invalid conversion from EGLNativeDisplayType to void*
-
----
- .../eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp       | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp
-index d495a8d..34ca9e8 100644
---- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp
-+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp
-@@ -82,7 +82,7 @@ EGLDisplay QEglFSKmsGbmIntegration::createDisplay(EGLNativeDisplayType nativeDis
-     }
-     if (getPlatformDisplay) {
--        display = getPlatformDisplay(EGL_PLATFORM_GBM_KHR, nativeDisplay, nullptr);
-+        display = getPlatformDisplay(EGL_PLATFORM_GBM_KHR, reinterpret_cast<void *>(&nativeDisplay), nullptr);
-     } else {
-         qCDebug(qLcEglfsKmsDebug, "No eglGetPlatformDisplay for GBM, falling back to eglGetDisplay");
-         display = eglGetDisplay(nativeDisplay);
--- 
-1.9.1
diff --git a/meta-agl-profile-cluster-qt5/recipes-qt/qt5/qtbase_%.bbappend b/meta-agl-profile-cluster-qt5/recipes-qt/qt5/qtbase_%.bbappend
deleted file mode 100644 (file)
index e94ef03..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#Enable eglfs for QT based application
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-# FIXME: Disabled as they do not apply against 5.13.2, and it is
-#        unclear if they are still required for building dra7xx-evm,
-#        which fails for what looks like a different reason.
-#SRC_URI += " file://0001-fixed-eglfs_kms-fails-to-build.patch \
-#             file://0002-fixed-invalid-conversion-from-EGLNativeDisplayType-to-void.patch \
-#           "
-
-PACKAGECONFIG_GL_append = "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', ' eglfs kms gbm', '', d)}"
diff --git a/meta-agl-profile-cluster-qt5/recipes-qt/qt5/qtcompositor-conf_1.0.bb b/meta-agl-profile-cluster-qt5/recipes-qt/qt5/qtcompositor-conf_1.0.bb
deleted file mode 100644 (file)
index 49111b6..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-SUMMARY = "Configuration files for running wayland with a non-weston compositor"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-
-inherit allarch agl-graphical
-
-do_configure[noexec] = "1"
-do_compile[noexec] = "1"
-
-do_install() {
-    # Add a rule to ensure the 'display' user has permissions to
-    # open the graphics device
-    install -d ${D}${sysconfdir}/udev/rules.d
-    cat >${D}${sysconfdir}/udev/rules.d/zz-dri.rules <<'EOF'
-SUBSYSTEM=="drm", MODE="0660", GROUP="${WESTONGROUP}", SECLABEL{smack}="*"
-EOF
-
-    # user 'display' must also be able to access /dev/input/*
-    cat >${D}${sysconfdir}/udev/rules.d/zz-input.rules <<'EOF'
-SUBSYSTEM=="input", MODE="0660", GROUP="input", SECLABEL{smack}="^"
-EOF
-
-    # user 'display' must also be able to access /dev/media*, etc.
-    cat >${D}${sysconfdir}/udev/rules.d/zz-remote-display.rules <<'EOF'
-SUBSYSTEM=="media", MODE="0660", GROUP="display", SECLABEL{smack}="*"
-SUBSYSTEM=="video4linux", MODE="0660", GROUP="display", SECLABEL{smack}="*"
-KERNEL=="uvcs", SUBSYSTEM=="misc", MODE="0660", GROUP="display", SECLABEL{smack}="*"
-KERNEL=="rgnmm", SUBSYSTEM=="misc", MODE="0660", GROUP="display", SECLABEL{smack}="*"
-EOF
-}
-
-do_install_append_imx() {
-    install -d ${D}${sysconfdir}/udev/rules.d
-    cat >>${D}${sysconfdir}/udev/rules.d/zz-dri.rules <<'EOF'
-SUBSYSTEM=="gpu_class", MODE="0660", GROUP="${WESTONGROUP}", SECLABEL{smack}="*"
-EOF
-
-}
-
-RCONFLICTS_${PN} = "weston-init"
diff --git a/meta-agl-profile-cluster/LICENSE b/meta-agl-profile-cluster/LICENSE
deleted file mode 100644 (file)
index e8758f8..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Different components of the AGL layers are under different licenses (a mix
-of MIT and GPLv2). See LICENSE.GPL-2.0-only and LICENSE.MIT for further
-details of the individual licenses.
-
-All metadata (e.g. .bb, .bbappend, .bbclass, .inc, templates/* and similar)
-is MIT licensed unless otherwise stated.
-Source code included in tree for individual recipes (e.g. patches) are under
-the LICENSE stated in the associated recipe (.bb file) unless otherwise stated.
-
-License information for any other files (scripts) is either explicitly stated
-or defaults to GPL version 2 only.
-
-Individual files can contain the following style tags instead of the full
-license text to identify their license:
-
-    SPDX-License-Identifier: GPL-2.0-only
-    SPDX-License-Identifier: MIT
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-cluster/LICENSE.GPL-2.0-only b/meta-agl-profile-cluster/LICENSE.GPL-2.0-only
deleted file mode 100644 (file)
index 5db3c0a..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                           NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-
-Note:
-Individual files contain the following tag instead of the full license text.
-
-    SPDX-License-Identifier: GPL-2.0-only
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-cluster/LICENSE.MIT b/meta-agl-profile-cluster/LICENSE.MIT
deleted file mode 100644 (file)
index a6919eb..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-Note:
-Individual files contain the following tag instead of the full license text.
-
-    SPDX-License-Identifier: MIT
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-cluster/conf/layer.conf b/meta-agl-profile-cluster/conf/layer.conf
deleted file mode 100644 (file)
index e71e04c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# We have a conf and classes directory, add to BBPATH
-BBPATH =. "${LAYERDIR}:"
-
-# We have recipes-* directories, add to BBFILES
-BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
-            ${LAYERDIR}/recipes-*/*/*.bbappend"
-
-BBFILE_COLLECTIONS += "aglprofilecluster"
-BBFILE_PATTERN_aglprofilecluster = "^${LAYERDIR}/"
-BBFILE_PRIORITY_aglprofilecluster = "70"
-
-LAYERSERIES_COMPAT_aglprofilecluster = "dunfell"
diff --git a/meta-agl-profile-cluster/recipes-platform/images/agl-image-cluster.bb b/meta-agl-profile-cluster/recipes-platform/images/agl-image-cluster.bb
deleted file mode 100644 (file)
index 552d7a7..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY = "A basic Wayland based cluster image"
-
-require agl-image-cluster.inc
-
-LICENSE = "MIT"
-
-IMAGE_INSTALL_append = "\
-    profile-cluster \
-    "
diff --git a/meta-agl-profile-cluster/recipes-platform/images/agl-image-cluster.inc b/meta-agl-profile-cluster/recipes-platform/images/agl-image-cluster.inc
deleted file mode 100644 (file)
index 93826aa..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-require recipes-platform/images/agl-image-boot.inc
-
-IMAGE_FEATURES += "splash package-management ssh-server-dropbear"
-
-inherit features_check
-
-REQUIRED_DISTRO_FEATURES = "wayland"
diff --git a/meta-agl-profile-cluster/recipes-platform/packagegroups/packagegroup-agl-profile-cluster.bb b/meta-agl-profile-cluster/recipes-platform/packagegroups/packagegroup-agl-profile-cluster.bb
deleted file mode 100644 (file)
index c0c6124..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY = "The middleware for AGL cluster profile"
-DESCRIPTION = "The set of packages required for AGL Cluster Distribution"
-LICENSE = "MIT"
-
-inherit packagegroup
-
-PACKAGES = "\
-    packagegroup-agl-profile-cluster \
-    profile-cluster \
-    "
-
-ALLOW_EMPTY_${PN} = "1"
-
-RDEPENDS_${PN} += "\
-    packagegroup-agl-image-boot \
-    packagegroup-agl-core-security \
-    packagegroup-agl-graphical-weston \
-"
-
-RDEPENDS_profile-cluster = "${PN}"
diff --git a/meta-agl-profile-core/LICENSE b/meta-agl-profile-core/LICENSE
deleted file mode 100644 (file)
index e8758f8..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Different components of the AGL layers are under different licenses (a mix
-of MIT and GPLv2). See LICENSE.GPL-2.0-only and LICENSE.MIT for further
-details of the individual licenses.
-
-All metadata (e.g. .bb, .bbappend, .bbclass, .inc, templates/* and similar)
-is MIT licensed unless otherwise stated.
-Source code included in tree for individual recipes (e.g. patches) are under
-the LICENSE stated in the associated recipe (.bb file) unless otherwise stated.
-
-License information for any other files (scripts) is either explicitly stated
-or defaults to GPL version 2 only.
-
-Individual files can contain the following style tags instead of the full
-license text to identify their license:
-
-    SPDX-License-Identifier: GPL-2.0-only
-    SPDX-License-Identifier: MIT
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-core/LICENSE.GPL-2.0-only b/meta-agl-profile-core/LICENSE.GPL-2.0-only
deleted file mode 100644 (file)
index 5db3c0a..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                           NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-
-Note:
-Individual files contain the following tag instead of the full license text.
-
-    SPDX-License-Identifier: GPL-2.0-only
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-core/LICENSE.MIT b/meta-agl-profile-core/LICENSE.MIT
deleted file mode 100644 (file)
index a6919eb..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-Note:
-Individual files contain the following tag instead of the full license text.
-
-    SPDX-License-Identifier: MIT
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-core/conf/layer.conf b/meta-agl-profile-core/conf/layer.conf
deleted file mode 100644 (file)
index fef746d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# We have a conf and classes directory, add to BBPATH
-BBPATH =. "${LAYERDIR}:"
-
-# We have recipes-* directories, add to BBFILES
-BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
-            ${LAYERDIR}/recipes-*/*/*.bbappend"
-
-BBFILE_COLLECTIONS += "aglprofilecore"
-BBFILE_PATTERN_aglprofilecore = "^${LAYERDIR}/"
-BBFILE_PRIORITY_aglprofilecore = "80"
-
-LAYERSERIES_COMPAT_aglprofilecore = "dunfell"
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-bluetooth-map/agl-service-bluetooth-map_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-bluetooth-map/agl-service-bluetooth-map_git.bb
deleted file mode 100644 (file)
index bc53051..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY     = "Bluetooth MAP Service Binding"
-DESCRIPTION = "AGL Bluetooth MAP Service Binding"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-bluetooth-map"
-SECTION     = "apps"
-
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-bluetooth-map;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-DEPENDS = "glib-2.0 json-c"
-RDEPENDS_${PN} = "bluez5-obex agl-service-bluetooth"
-
-inherit cmake aglwgt pkgconfig
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-bluetooth-pbap/agl-service-bluetooth-pbap_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-bluetooth-pbap/agl-service-bluetooth-pbap_git.bb
deleted file mode 100644 (file)
index 3f9ff7b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY     = "Bluetooth PBAP Service Binding"
-DESCRIPTION = "AGL Bluetooth PBAP Service Binding"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-bluetooth-pbap"
-SECTION     = "apps"
-
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-bluetooth-pbap;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-DEPENDS = "glib-2.0 json-c"
-RDEPENDS_${PN} = "bluez5-obex agl-service-bluetooth agl-service-data-persistence"
-
-inherit cmake aglwgt pkgconfig
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-bluetooth/agl-service-bluetooth_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-bluetooth/agl-service-bluetooth_git.bb
deleted file mode 100644 (file)
index 8cfa8ec..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY     = "Bluetooth Service Binding"
-DESCRIPTION = "AGL Bluetooth Service Binding"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-bluetooth"
-SECTION     = "apps"
-
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-bluetooth;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-DEPENDS = "glib-2.0 json-c"
-RDEPENDS_${PN} = "agl-service-data-persistence agl-service-network"
-
-inherit cmake aglwgt pkgconfig
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-can-low-level/agl-service-can-low-level_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-can-low-level/agl-service-can-low-level_git.bb
deleted file mode 100644 (file)
index 83f6c1e..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY     = "Low level CAN service"
-DESCRIPTION = "AGL Service application for read and decode CAN messages"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/low-level-can-service"
-SECTION     = "apps"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-can-low-level;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "${AGL_APP_REVISION}"
-
-PV = "${AGLVERSION}"
-S  = "${WORKDIR}/git"
-
-DEPENDS = "libafb-helpers libappcontroller"
-
-inherit cmake aglwgt pkgconfig ptest
-
-# For now, just enable J1939 on the qemu platforms where we know the
-# linux-yocto kernel is new enough (>= 5.4) and has the support enabled.
-AGLWGT_CMAKE_CONFIGURE_ARGS_append_qemuall = " -DWITH_FEATURE_J1939=ON"
-
-RDEPENDS_${PN} = "virtual/low-can-dev-mapping"
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-can-low-level/files/run-ptest b/meta-agl-profile-core/recipes-apis/agl-service-can-low-level/files/run-ptest
deleted file mode 100644 (file)
index cc9c413..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-afm-test /usr/AGL/apps/testwgt/low-can-service-test.wgt
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-data-persistence/agl-service-data-persistence_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-data-persistence/agl-service-data-persistence_git.bb
deleted file mode 100644 (file)
index 569f070..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-DESCRIPTION = "AGL low level user database binding"
-HOMEPAGE = "https://git.automotivelinux.org/apps/agl-service-data-persistence/"
-SECTION = "base"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-data-persistence;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-inherit cmake aglwgt pkgconfig
-
-PV = "1.0+git${SRCPV}"
-S = "${WORKDIR}/git"
-
-DEPENDS += " af-binder json-c gdbm "
-
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-geoclue/agl-service-geoclue_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-geoclue/agl-service-geoclue_git.bb
deleted file mode 100644 (file)
index a129232..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY     = "GeoClue Service Binding"
-DESCRIPTION = "AGL GeoClue Service Binding"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-geoclue"
-SECTION     = "apps"
-
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-geoclue;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-DEPENDS = "json-c geoclue"
-
-inherit cmake aglwgt pkgconfig
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-geofence/agl-service-geofence_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-geofence/agl-service-geofence_git.bb
deleted file mode 100644 (file)
index 8bdcd7c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY     = "Geofence Service Binding"
-DESCRIPTION = "AGL Geofence Service Binding"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-geofence"
-SECTION     = "apps"
-
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-geofence;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-DEPENDS = "json-c glib-2.0"
-RDEPENDS_${PN} = "agl-service-gps"
-
-inherit cmake aglwgt pkgconfig
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-gps/agl-service-gps_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-gps/agl-service-gps_git.bb
deleted file mode 100644 (file)
index 254e5e4..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY     = "GPS/GNSS Service Binding"
-DESCRIPTION = "AGL GPS/GNSS Service Binding"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-gps"
-SECTION     = "apps"
-
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-gps;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-DEPENDS = "json-c gpsd"
-RDEPENDS_${PN} = "libgps"
-
-inherit cmake aglwgt pkgconfig
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-hvac/agl-service-hvac-conf_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-hvac/agl-service-hvac-conf_git.bb
deleted file mode 100644 (file)
index e4dccbf..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY     = "HVAC Service Binding Configuration"
-DESCRIPTION = "AGL HVAC Service Binding Configuration"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-hvac"
-SECTION     = "apps"
-
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-hvac;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-do_configure[noexec] = "1"
-do_compile[noexec] = "1"
-
-do_install () {
-    install -D -m 644 ${S}/hvac.json ${D}${sysconfdir}/hvac.json
-}
-
-do_install_append_ulcb() {
-    sed -i -e "s#vcan0#sllin0#g" ${D}${sysconfdir}/hvac.json
-}
-
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-hvac/agl-service-hvac_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-hvac/agl-service-hvac_git.bb
deleted file mode 100644 (file)
index 545ab6a..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-SUMMARY     = "HVAC Service Binding"
-DESCRIPTION = "AGL HVAC Service Binding"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-hvac"
-SECTION     = "apps"
-
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-hvac;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-DEPENDS = "json-c"
-
-inherit cmake aglwgt pkgconfig
-
-RDEPENDS_${PN} += "agl-service-identity-agent agl-service-can-low-level"
-RRECOMMENDS_${PN} += "agl-service-hvac-conf"
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-identity-agent/agl-service-identity-agent_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-identity-agent/agl-service-identity-agent_git.bb
deleted file mode 100644 (file)
index f2474be..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-DESCRIPTION = "AGL identity agent binding"
-HOMEPAGE = "https://gitlab.com/iotbzh/aia-binding"
-SECTION = "base"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-identity-agent;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-PV = "1.0+git${SRCPV}"
-
-inherit cmake aglwgt pkgconfig
-
-S = "${WORKDIR}/git"
-
-DEPENDS = "curl af-binder json-c systemd"
-
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-iiodevices/agl-service-iiodevices_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-iiodevices/agl-service-iiodevices_git.bb
deleted file mode 100644 (file)
index cc89369..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY     = "IIODEVICES Service Binding"
-DESCRIPTION = "AGL IIODEVICES Service Binding"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-iiodevices"
-SECTION     = "apps"
-
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-iiodevices;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-DEPENDS = "json-c libiio glib-2.0"
-
-RDEPENDS_${PN} = "libiio"
-
-inherit cmake aglwgt pkgconfig
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-mediascanner/agl-service-mediascanner_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-mediascanner/agl-service-mediascanner_git.bb
deleted file mode 100644 (file)
index c50a048..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY     = "Mediascanner Service Binding"
-DESCRIPTION = "AGL Mediascanner Service Binding"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-mediascanner"
-SECTION     = "apps"
-
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-mediascanner;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-DEPENDS = "json-c sqlite3 glib-2.0"
-RDEPENDS_${PN} = "lightmediascanner"
-
-inherit cmake aglwgt pkgconfig
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-navigation/agl-service-navigation_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-navigation/agl-service-navigation_git.bb
deleted file mode 100755 (executable)
index 71a615c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY     = "Navigation Service Binding"
-DESCRIPTION = "AGL Navigation Service API Binding"
-SECTION     = "apps"
-
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-DEPENDS = "json-c libdbus-c++"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-navigation;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "${AGL_APP_REVISION}"
-
-PV = "0.1+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-inherit cmake aglwgt pkgconfig
-
-RDEPENDS_${PN} += "json-c libdbus-c++"
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-network/agl-service-network_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-network/agl-service-network_git.bb
deleted file mode 100644 (file)
index c7fb72f..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY     = "Network Service Binding"
-DESCRIPTION = "AGL Network Service Binding"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-network"
-SECTION     = "apps"
-
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-network;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-DEPENDS = "glib-2.0 json-c"
-
-inherit cmake aglwgt pkgconfig
-
-do_install_append() {
-    install -d ${D}${sbindir}
-    install -m 755 ${B}/build-release/test/agl-service-network-ctl ${D}${sbindir}
-}
-
-FILES_${PN}-tools = "${sbindir}/agl-service-network-ctl"
-PACKAGES_prepend = "${PN}-tools "
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-nfc/agl-service-nfc_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-nfc/agl-service-nfc_git.bb
deleted file mode 100644 (file)
index 1757dcb..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "agl-service-nfc"
-DESCRIPTION = ""
-HOMEPAGE = "https://git.automotivelinux.org/apps/agl-service-nfc/"
-SECTION = "apps"
-DEPENDS = "af-binder json-c glib-2.0 neardal"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-inherit cmake pkgconfig aglwgt
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-nfc;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-platform-info/agl-service-platform-info_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-platform-info/agl-service-platform-info_git.bb
deleted file mode 100644 (file)
index 43eed3f..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY     = "Platform info provider binding"
-DESCRIPTION = "AGL Platform info provider binding"
-HOMEPAGE    = "https://git.automotivelinux.org/apps/agl-service-platform-info/"
-SECTION     = "apps"
-
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-platform-info;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-DEPENDS = "libafb-helpers"
-
-inherit cmake aglwgt pkgconfig
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-signal-composer/agl-service-signal-composer_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-signal-composer/agl-service-signal-composer_git.bb
deleted file mode 100644 (file)
index bf714f4..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY     = "agl-service-signal-composer"
-DESCRIPTION = "AGL High Level Signaling service to handle CAN, LIN, and others signaling sources"
-HOMEPAGE    = "https://git.automotivelinux.org/apps/agl-service-signal-composer/"
-SECTION     = "apps"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-inherit cmake pkgconfig aglwgt ptest
-
-DEPENDS += "lua lua-native libappcontroller libafb-helpers"
-RDEPENDS_${PN} += "lua"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-signal-composer;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "${AGL_APP_REVISION}"
-
-PV = "${AGLVERSION}"
-S  = "${WORKDIR}/git"
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-signal-composer/files/run-ptest b/meta-agl-profile-core/recipes-apis/agl-service-signal-composer/files/run-ptest
deleted file mode 100644 (file)
index 49187ad..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-afm-test /usr/AGL/apps/testwgt/signal-composer-test.wgt
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-telephony/agl-service-telephony_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-telephony/agl-service-telephony_git.bb
deleted file mode 100644 (file)
index ff39136..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY     = "Telephony Service Binding"
-DESCRIPTION = "AGL Telephony Service Binding"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-telephony"
-SECTION     = "apps"
-
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-telephony;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-DEPENDS = "json-c glib-2.0"
-RDEPENDS_${PN} = "ofono"
-
-inherit cmake aglwgt pkgconfig
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-unicens-controller/agl-service-unicens-controller_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-unicens-controller/agl-service-unicens-controller_git.bb
deleted file mode 100644 (file)
index 85ebc90..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY     = "Infotainment network device control"
-DESCRIPTION = "Abstraction layer to control INICnet devices"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-unicens-controller"
-SECTION     = "apps"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
-
-SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/apps/agl-service-unicens-controller;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "${AGL_APP_REVISION}"
-
-PV = "0.1+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-inherit cmake aglwgt pkgconfig
-
-DEPENDS += "json-c af-binder libafb-helpers"
-RDEPENDS_${PN} += "agl-service-unicens"
-
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-unicens/agl-service-unicens_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-unicens/agl-service-unicens_git.bb
deleted file mode 100644 (file)
index e7e25c7..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY     = "4A - Infotainment network setup and access"
-DESCRIPTION = "Infotainment network setup and access (using Unified Centralized Network Stack)"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-unicens"
-SECTION     = "apps"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/apps/agl-service-unicens;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "${AGL_APP_REVISION}"
-
-PV = "0.1+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-inherit cmake aglwgt pkgconfig
-
-DEPENDS += "alsa-lib json-c systemd af-binder glib-2.0 libxml2 libafb-helpers"
-RDEPENDS_${PN} += "libxml2 "
-
diff --git a/meta-agl-profile-core/recipes-apis/agl-service-weather/agl-service-weather_git.bb b/meta-agl-profile-core/recipes-apis/agl-service-weather/agl-service-weather_git.bb
deleted file mode 100644 (file)
index 75532da..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY     = "Weather Service Binding"
-DESCRIPTION = "AGL Weather Service Binding"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-weather"
-SECTION     = "apps"
-
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-weather;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-DEPENDS = "glib-2.0 json-c"
-RDEPENDS_${PN} = "agl-service-geoclue"
-
-inherit cmake aglwgt pkgconfig
diff --git a/meta-agl-profile-core/recipes-config/agl-login-manager/agl-login-manager_0.1.bb b/meta-agl-profile-core/recipes-config/agl-login-manager/agl-login-manager_0.1.bb
deleted file mode 100644 (file)
index 49efce7..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "AGL Login manager"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-
-LOGIN_USER ??="1001 1002"
-
-RDEPENDS_${PN} += "af-main"
-
-do_install_append() {
-
-    install -d ${D}${systemd_system_unitdir}/multi-user.target.wants/
-
-    for AGL_USER in ${LOGIN_USER};do
-        ln -s ../afm-user-session@.service ${D}${systemd_system_unitdir}/multi-user.target.wants/afm-user-session@${AGL_USER}.service
-    done
-}
-
-FILES_${PN} += "${systemd_system_unitdir}"
diff --git a/meta-agl-profile-core/recipes-config/agl-users/agl-users_0.1.bb b/meta-agl-profile-core/recipes-config/agl-users/agl-users_0.1.bb
deleted file mode 100644 (file)
index 709a109..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-inherit allarch useradd
-
-SUMMARY = "AGL Users Seed"
-DESCRIPTION = "This is a core framework component that\
- defines how users are managed and who are the default users."
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-
-ALLOW_EMPTY_${PN} = "1"
-
-USERADD_PACKAGES = "${PN}"
-
-USERADDEXTENSION = "useradd-staticids"
-
-GROUPADD_PARAM_${PN} = "\
-       --system display ; \
-       --system weston-launch ; \
-       -g 1001 agl-driver ; \
-       -g 1002 agl-passenger \
-"
-
-USERADD_PARAM_${PN} = "\
-  -g 1001 -u 1001 -o -d /home/1001 -m -K PASS_MAX_DAYS=-1 agl-driver ; \
-  -g 1002 -u 1002 -o -d /home/1002 -m -K PASS_MAX_DAYS=-1 agl-passenger ; \
-  --gid display --groups weston-launch,video,input --home-dir /run/platform/display --shell /bin/false --comment \"Display daemon\" --key PASS_MAX_DAYS=-1 display \
-"
diff --git a/meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping/dev-mapping.conf.default b/meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping/dev-mapping.conf.default
deleted file mode 100644 (file)
index 7bd8bf2..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-; Default CAN device mapping
-; Format has to follow ini rules key="value", notice " around value.
-
-[CANbus-mapping]
-hs="can0"
-ls="can0"
diff --git a/meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping_0.1.bb b/meta-agl-profile-core/recipes-config/dev-mapping/dev-mapping_0.1.bb
deleted file mode 100644 (file)
index 1309ffa..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "AGL Device mapping configuration file"
-DESCRIPTION = "This provide default dev-mapping.conf file \
- that defines mapping between kernel device and logical name \
- used in low-can binding by example."
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
-
-SRC_URI += "file://dev-mapping.conf.default"
-
-inherit allarch
-
-do_install() {
-    install -d ${D}${sysconfdir}
-    install -m 0644 ${WORKDIR}/dev-mapping.conf.default ${D}${sysconfdir}/dev-mapping.conf
-}
-
-RPROVIDES_${PN} = "virtual/low-can-dev-mapping"
diff --git a/meta-agl-profile-core/recipes-connectivity/bluez-alsa/bluez-alsa_git.bb b/meta-agl-profile-core/recipes-connectivity/bluez-alsa/bluez-alsa_git.bb
deleted file mode 100644 (file)
index 010329e..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-SUMMARY = "Bluetooth Audio ALSA Backend"
-HOMEPAGE = "https://github.com/Arkq/bluez-alsa"
-SECTION = "libs"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3d7d6ac7e2dbd2505652dceb3acdf1fe"
-
-SRC_URI = "git://github.com/Arkq/bluez-alsa.git;protocol=https;branch=master"
-SRCREV = "2cd6e4686f7808276480b430fb37df55dfdcc02b"
-
-SRC_URI += "file://bluez-alsa.service"
-
-S  = "${WORKDIR}/git"
-
-DEPENDS += "alsa-lib bluez5 systemd glib-2.0 sbc"
-
-PACKAGECONFIG[aac]  = "--enable-aac, --disable-aac, "
-PACKAGECONFIG[aptx] = "--enable-aptx,--disable-aptx,"
-PACKAGECONFIG[ofono] = "--enable-ofono, --disable-ofono,"
-
-inherit autotools pkgconfig
-inherit systemd
-
-SYSTEMD_AUTO_ENABLE = "enable"
-SYSTEMD_SERVICE_${PN} = "bluez-alsa.service"
-
-PACKAGECONFIG += "ofono"
-
-# enable debug tools in devel images
-PACKAGECONFIG[hcitop] = "--enable-hcitop, --disable-hcitop, libbsd ncurses"
-PACKAGECONFIG[rfcomm] = "--enable-rfcomm, --disable-rfcomm,"
-PACKAGECONFIG_append_agl-devel = " hcitop rfcomm"
-
-do_install_append () {
-    install -d ${D}${base_libdir}/systemd/system
-    install -m 0644 ${WORKDIR}/bluez-alsa.service ${D}${base_libdir}/systemd/system
-}
-
-FILES_${PN} += "\
-   ${datadir}/alsa/alsa.conf.d/20-bluealsa.conf\
-   ${libdir}/alsa-lib/libasound_module_ctl_bluealsa.so\
-   ${libdir}/alsa-lib/libasound_module_pcm_bluealsa.so\
-"
diff --git a/meta-agl-profile-core/recipes-connectivity/bluez-alsa/files/bluez-alsa.service b/meta-agl-profile-core/recipes-connectivity/bluez-alsa/files/bluez-alsa.service
deleted file mode 100644 (file)
index b59302e..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=Bluetooth Audio ALSA Backend
-After=bluetooth.service
-Requires=bluetooth.service
-
-[Service]
-Type=simple
-ExecStart=/usr/bin/bluealsa -p a2dp-sink -p hfp-ofono
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/bluetooth.conf b/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/bluetooth.conf
deleted file mode 100644 (file)
index 1f2762d..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-<!-- This configuration file specifies the required security policies
-     for Bluetooth core daemon to work. -->
-
-<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
- "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<busconfig>
-
-  <!-- ../system.conf have denied everything, so we just punch some holes -->
-
-  <policy user="root">
-    <allow own="org.bluez"/>
-    <allow send_destination="org.bluez"/>
-    <allow send_interface="org.bluez.Agent1"/>
-    <allow send_interface="org.bluez.MediaEndpoint1"/>
-    <allow send_interface="org.bluez.MediaPlayer1"/>
-    <allow send_interface="org.bluez.ThermometerWatcher1"/>
-    <allow send_interface="org.bluez.AlertAgent1"/>
-    <allow send_interface="org.bluez.Profile1"/>
-    <allow send_interface="org.bluez.HeartRateWatcher1"/>
-    <allow send_interface="org.bluez.CyclingSpeedWatcher1"/>
-    <allow send_interface="org.bluez.GattCharacteristic1"/>
-    <allow send_interface="org.bluez.GattDescriptor1"/>
-    <allow send_interface="org.freedesktop.DBus.ObjectManager"/>
-    <allow send_interface="org.freedesktop.DBus.Properties"/>
-    <allow receive_type="signal" receive_sender="org.bluez" receive_interface="org.freedesktop.DBus.Properties"/>
-    <allow receive_type="signal" receive_sender="org.bluez" receive_interface="org.freedesktop.DBus.ObjectManager"/>
-  </policy>
-
-  <policy at_console="true">
-    <allow send_destination="org.bluez"/>
-  </policy>
-
-  <!-- allow users of lp group (printing subsystem) to
-       communicate with bluetoothd -->
-  <policy group="lp">
-    <allow send_destination="org.bluez"/>
-  </policy>
-
-</busconfig>
diff --git a/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/bluetooth.service b/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/bluetooth.service
deleted file mode 100644 (file)
index 8ae83bd..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-[Unit]
-Description=Bluetooth service
-Documentation=man:bluetoothd(8)
-ConditionPathIsDirectory=/sys/class/bluetooth
-
-[Service]
-Type=dbus
-BusName=org.bluez
-ExecStartPre=-/usr/bin/hciconfig hci0 aclmtu 930:10
-ExecStart=/usr/libexec/bluetooth/bluetoothd
-NotifyAccess=main
-#WatchdogSec=10
-#Restart=on-failure
-CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
-LimitNPROC=1
-ProtectHome=true
-ProtectSystem=full
-
-[Install]
-WantedBy=bluetooth.target
-Alias=dbus-org.bluez.service
diff --git a/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/obex.service b/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/obex.service
deleted file mode 100644 (file)
index 87ffff6..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=Bluetooth OBEX service
-
-[Service]
-Type=dbus
-BusName=org.bluez.obex
-ExecStart=/usr/libexec/bluetooth/obexd --root=/var/volatile/tmp
-
-[Install]
-Alias=dbus-org.bluez.obex.service
diff --git a/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/tmpdir.conf b/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5/tmpdir.conf
deleted file mode 100644 (file)
index 8545d76..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-[Service]
-Environment="TMPDIR=/run/user/%U/usrshr"
diff --git a/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5_%.bbappend b/meta-agl-profile-core/recipes-connectivity/bluez5/bluez5_%.bbappend
deleted file mode 100644 (file)
index 52ae30b..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
-SRC_URI_append = " \
-    file://bluetooth.conf \
-    file://tmpdir.conf \
-    file://obex.service \
-    file://bluetooth.service \
-"
-
-FILES_${PN} += "${systemd_user_unitdir}/obex.service.d/tmpdir.conf"
-
-do_install_append() {
-    install -m 0644 ${WORKDIR}/bluetooth.conf ${D}${sysconfdir}/dbus-1/system.d/bluetooth.conf
-
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-        mkdir -p ${D}${systemd_user_unitdir}/obex.service.d
-
-        install -m 0644 ${WORKDIR}/obex.service ${D}${systemd_user_unitdir}
-        install -m 0644 ${WORKDIR}/tmpdir.conf ${D}${systemd_user_unitdir}/obex.service.d/tmpdir.conf
-        mkdir -p ${D}/etc/systemd/user
-        ln -sf ${systemd_user_unitdir}/obex.service ${D}/etc/systemd/user/dbus-org.bluez.obex.service
-        mkdir -p ${D}${systemd_system_unitdir}
-        install -m 0644 ${WORKDIR}/bluetooth.service ${D}${systemd_system_unitdir}
-    fi
-}
diff --git a/meta-agl-profile-core/recipes-connectivity/busybox/busybox_%.bbappend b/meta-agl-profile-core/recipes-connectivity/busybox/busybox_%.bbappend
deleted file mode 100644 (file)
index 198b651..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-SRC_URI += "file://enable-wget-https.cfg"
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
diff --git a/meta-agl-profile-core/recipes-connectivity/neard/files/0001-systemd-neard-add-multi-user.target-to-neard.service.patch b/meta-agl-profile-core/recipes-connectivity/neard/files/0001-systemd-neard-add-multi-user.target-to-neard.service.patch
deleted file mode 100644 (file)
index c329516..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-From d8c03a31e2734e59af43dd50cbd7f5a94d798ab1 Mon Sep 17 00:00:00 2001
-From: Matt Ranostay <matt.ranostay@konsulko.com>
-Date: Tue, 10 Jul 2018 21:18:26 -0700
-Subject: [PATCH] systemd: neard: add multi-user.target to neard.service
-
-Allowing a service to be system level requires a WantedBy= target
-
-Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
----
- src/neard.service.in | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/neard.service.in b/src/neard.service.in
-index dfa238c..540da7e 100644
---- a/src/neard.service.in
-+++ b/src/neard.service.in
-@@ -9,4 +9,5 @@ ExecStart=@pkglibexecdir@/neard -n
- LimitNPROC=1
- [Install]
-+WantedBy=multi-user.target
- Alias=dbus-org.neard.service
--- 
-2.17.1
-
diff --git a/meta-agl-profile-core/recipes-connectivity/neard/files/0002-ndef-avoid-dbus-property_get_type-method-on-empty-re.patch b/meta-agl-profile-core/recipes-connectivity/neard/files/0002-ndef-avoid-dbus-property_get_type-method-on-empty-re.patch
deleted file mode 100644 (file)
index 49c11a5..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-From d7ea2a00e00795ad24897e3481b015a27d37d60f Mon Sep 17 00:00:00 2001
-From: Raquel Medina <raquel.medina@konsulko.com>
-Date: Tue, 22 Jan 2019 09:00:05 -0500
-Subject: [PATCH] ndef: avoid dbus property_get_type method  on empty record
-
-Signed-off-by: Raquel Medina <raquel.medina@konsulko.com>
----
- src/ndef.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/src/ndef.c b/src/ndef.c
-index 5656baf..883c6f4 100644
---- a/src/ndef.c
-+++ b/src/ndef.c
-@@ -2832,10 +2832,14 @@ GList *near_ndef_parse_msg(uint8_t *ndef_data, size_t ndef_length,
-               case RECORD_TYPE_WKT_ALTERNATIVE_CARRIER:
-               case RECORD_TYPE_WKT_COLLISION_RESOLUTION:
-               case RECORD_TYPE_WKT_ERROR:
--              case RECORD_TYPE_UNKNOWN:
-               case RECORD_TYPE_ERROR:
-                       break;
-+              case RECORD_TYPE_UNKNOWN:
-+                      if (record->header->tnf == RECORD_TNF_EMPTY)
-+                              goto fail;
-+                      break;
-+
-               case RECORD_TYPE_WKT_HANDOVER_REQUEST:
-               case RECORD_TYPE_WKT_HANDOVER_SELECT:
-                       /*
--- 
-2.17.1
-
diff --git a/meta-agl-profile-core/recipes-connectivity/neard/neard_0.16.bbappend b/meta-agl-profile-core/recipes-connectivity/neard/neard_0.16.bbappend
deleted file mode 100644 (file)
index 64a044c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-SRC_URI_append = "\
-       file://0001-systemd-neard-add-multi-user.target-to-neard.service.patch \
-       file://0002-ndef-avoid-dbus-property_get_type-method-on-empty-re.patch \
-       "
-SYSTEMD_SERVICE_${PN} = "neard.service"
diff --git a/meta-agl-profile-core/recipes-connectivity/neardal/neardal.inc b/meta-agl-profile-core/recipes-connectivity/neardal/neardal.inc
deleted file mode 100644 (file)
index 3bb6b24..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Neard Abstraction Library (NeardAL)"
-
-DESCRIPTION = "NeardAL is a library that provides a simple C API \
-to exchange data with NFC daemon (Neard)."
-
-HOMEPAGE = "https://github.com/connectivity/neardal"
-SECTION = "libs"
-LICENSE = "LGPLv2"
-
-DEPENDS = "glib-2.0 readline glib-2.0-native"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=6a6e689d19255cf0557f3fe7d7068212 \
-       file://lib/neardal.h;endline=20;md5=a53e93aea9357387078ed217565c0a99"
-
-inherit autotools pkgconfig
-
-PACKAGES =+ "${PN}-tools ${PN}-tools-dbg"
-
-FILES_${PN}-tools = "${libexecdir}/ncl"
-FILES_${PN}-tools-dbg += "${libexecdir}/.debug"
-
-RDEPENDS_${PN}-tools = "bash"
diff --git a/meta-agl-profile-core/recipes-connectivity/neardal/neardal/0001-neardal-ncl-fix-segfault-on-help-page-being-displaye.patch b/meta-agl-profile-core/recipes-connectivity/neardal/neardal/0001-neardal-ncl-fix-segfault-on-help-page-being-displaye.patch
deleted file mode 100644 (file)
index 596fe05..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-From 795308b2452ee617da4096914b53ba3a1142e3db Mon Sep 17 00:00:00 2001
-From: Matt Ranostay <matt.ranostay@konsulko.com>
-Date: Fri, 6 Jul 2018 17:19:09 -0700
-Subject: [PATCH] neardal: ncl: fix segfault on help page being displayed
-
-LISTCMD_NAME is declared as a const char due to being defined in a
-macro so g_strdup it to stop proceeding operations from segfaulting.
-
-Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
-
----
- ncl/ncl.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/ncl/ncl.c b/ncl/ncl.c
-index 590d13b..f4165b7 100644
---- a/ncl/ncl.c
-+++ b/ncl/ncl.c
-@@ -329,7 +329,7 @@ int main(int argc, char *argv[])
-               g_io_channel_unref(gNclCtx.channel);
-               if (show_help)
--                      ncl_exec(LISTCMD_NAME);
-+                      ncl_exec(g_strdup(LISTCMD_NAME));
-               rl_callback_handler_install(NCL_PROMPT, ncl_parse_line);
diff --git a/meta-agl-profile-core/recipes-connectivity/neardal/neardal/0002-neardal-lib-fix-memory-corruption.patch b/meta-agl-profile-core/recipes-connectivity/neardal/neardal/0002-neardal-lib-fix-memory-corruption.patch
deleted file mode 100644 (file)
index d40d9a4..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-From ee6267f357b3d158f0a0e88460782e8b9d44274a Mon Sep 17 00:00:00 2001
-From: Raquel Medina <raquel.medina@konsulko.com>
-Date: Fri, 4 Jan 2019 07:43:03 -0500
-Subject: [PATCH] neardal: lib: fix memory corruption
-
- The current commit fixes an invalid memory  access
- which manifests as a random segfault  when executing
- continuous tag read operations.
-
- The corruption happens when releasing the  memory allocated to a
- record: in the time between  the memory being g_free'd and the
- subsequent memset  operation, the memory could have been reused by
- some  other process. And since memory allocation  depends on
- system-wide factors, it makes this bug hard to track.
-
- Tested using ACR122U reader and NTAG213
- tags on Automotive Grade Linux (flounder,
- guppy and master branches)
-
-Signed-off-by: Raquel Medina <raquel.medina@konsulko.com>
----
- lib/neardal_record.c | 1 -
- lib/neardal_tools.c  | 5 ++++-
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/lib/neardal_record.c b/lib/neardal_record.c
-index 669012c..cfed5e8 100644
---- a/lib/neardal_record.c
-+++ b/lib/neardal_record.c
-@@ -31,7 +31,6 @@ void neardal_record_free(neardal_record *r)
- {
-       g_return_if_fail(r);
-       neardal_g_strfreev((void **) r, &r->uriObjSize);
--      memset(r, 0, sizeof(*r));
- }
- void neardal_free_record(neardal_record *record) \
-diff --git a/lib/neardal_tools.c b/lib/neardal_tools.c
-index f0d6157..f307df6 100644
---- a/lib/neardal_tools.c
-+++ b/lib/neardal_tools.c
-@@ -32,9 +32,12 @@
- void neardal_g_strfreev(void **array, void *end)
- {
-       void **p = array;
--      for (; (void *) p < end; p++)
-+      for (; (void *) p < end; p++) {
-               g_free(*p);
-+              *p = NULL;
-+      }
-       g_free(array);
-+      array = NULL;
- }
- void neardal_g_variant_add_parsed(GVariant **v, const char *format, ...)
--- 
-2.17.1
-
diff --git a/meta-agl-profile-core/recipes-connectivity/neardal/neardal/ncl.patch b/meta-agl-profile-core/recipes-connectivity/neardal/neardal/ncl.patch
deleted file mode 100644 (file)
index baef6cc..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-From eab402bae42c3ea5caa8d540b6702d39e56c84c1 Mon Sep 17 00:00:00 2001
-From: Oleg Zhurakivskyy <oleg.zhurakivskyy@intel.com>
-Date: Tue, 10 Feb 2015 12:58:39 +0200
-Subject: [PATCH] build: Install ncl
-
-Signed-off-by: Oleg Zhurakivskyy <oleg.zhurakivskyy@intel.com>
----
- ncl/Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/ncl/Makefile.am b/ncl/Makefile.am
-index beda75b..c06742f 100644
---- a/ncl/Makefile.am
-+++ b/ncl/Makefile.am
-@@ -1,6 +1,6 @@
- AM_CPPFLAGS = @gio_CFLAGS@ -I$(top_builddir)/lib -I$(top_srcdir)/lib
--noinst_PROGRAMS=ncl
-+libexec_PROGRAMS = ncl
- ncl_SOURCES = \
-       $(srcdir)/ncl.c $(srcdir)/ncl.h \
--- 
-2.1.0
-
diff --git a/meta-agl-profile-core/recipes-connectivity/neardal/neardal_0.14.bb b/meta-agl-profile-core/recipes-connectivity/neardal/neardal_0.14.bb
deleted file mode 100644 (file)
index f8634c4..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-require neardal.inc
-
-SRC_URI = "git://github.com/connectivity/neardal.git;protocol=https \
-       file://ncl.patch \
-       file://0001-neardal-ncl-fix-segfault-on-help-page-being-displaye.patch  \
-       file://0002-neardal-lib-fix-memory-corruption.patch             \
-       "
-SRCREV = "fe0fa79c94e9a0f1c2cfa1f58b3acc9bdc7d5e13"
-
-S = "${WORKDIR}/git"
diff --git a/meta-agl-profile-core/recipes-connectivity/ofono/files/0001-provision-allow-duplicate-entries-from-mbpi_lookup_a.patch b/meta-agl-profile-core/recipes-connectivity/ofono/files/0001-provision-allow-duplicate-entries-from-mbpi_lookup_a.patch
deleted file mode 100644 (file)
index 7b44e48..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-From 7782f8f9d9634ebeddafefedab10ba254f9cc34a Mon Sep 17 00:00:00 2001
-From: Matt Ranostay <matt.ranostay@konsulko.com>
-Date: Fri, 1 Mar 2019 17:53:17 +0900
-Subject: [PATCH] provision: allow duplicate entries from mbpi_lookup_apn()
- results
-
-Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
----
- plugins/provision.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/plugins/provision.c b/plugins/provision.c
-index 99c299eb..aa0b05e4 100644
---- a/plugins/provision.c
-+++ b/plugins/provision.c
-@@ -50,7 +50,7 @@ static int provision_get_settings(const char *mcc, const char *mnc,
-       DBG("Provisioning for MCC %s, MNC %s, SPN '%s'", mcc, mnc, spn);
--      apns = mbpi_lookup_apn(mcc, mnc, FALSE, &error);
-+      apns = mbpi_lookup_apn(mcc, mnc, TRUE, &error);
-       if (apns == NULL) {
-               if (error != NULL) {
-                       ofono_error("%s", error->message);
--- 
-2.20.1
-
diff --git a/meta-agl-profile-core/recipes-connectivity/ofono/files/ofono.conf b/meta-agl-profile-core/recipes-connectivity/ofono/files/ofono.conf
deleted file mode 100644 (file)
index e47214c..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!-- This configuration file specifies the required security policies
-     for oFono core daemon to work. -->
-
-<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
- "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<busconfig>
-
-  <!-- ../system.conf have denied everything, so we just punch some holes -->
-
-  <policy user="root">
-    <allow own="org.ofono"/>
-    <allow send_destination="org.ofono"/>
-    <allow send_interface="org.ofono.Manager"/>
-    <allow send_interface="org.ofono.SimToolkitAgent"/>
-    <allow send_interface="org.ofono.PushNotificationAgent"/>
-    <allow send_interface="org.ofono.SmartMessagingAgent"/>
-    <allow send_interface="org.ofono.PositioningRequestAgent"/>
-    <allow send_interface="org.ofono.HandsfreeAudioAgent"/>
-    <allow send_interface="org.ofono.Modem"/>
-  </policy>
-
-  <policy at_console="true">
-    <allow send_destination="org.ofono"/>
-  </policy>
-
-  <policy context="default">
-    <deny send_destination="org.ofono"/>
-  </policy>
-
-</busconfig>
diff --git a/meta-agl-profile-core/recipes-connectivity/ofono/ofono_%.bbappend b/meta-agl-profile-core/recipes-connectivity/ofono/ofono_%.bbappend
deleted file mode 100644 (file)
index b02d6ee..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-SRC_URI_append = "\
-    file://ofono.conf \
-    file://0001-provision-allow-duplicate-entries-from-mbpi_lookup_a.patch \
-    "
-
-do_install_append() {
-    install -m 0644 ${WORKDIR}/ofono.conf ${D}${sysconfdir}/dbus-1/system.d/ofono.conf
-}
-
-SYSTEMD_AUTO_ENABLE = "enable"
diff --git a/meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr/0001-remove-I-usr-include-in-pkg-config.patch b/meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr/0001-remove-I-usr-include-in-pkg-config.patch
deleted file mode 100644 (file)
index 86b7392..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-From 3aeaf8054fcb2617ca8f6196ca32be3e69337f77 Mon Sep 17 00:00:00 2001
-From: Martin Kelly <mkelly@xevo.com>
-Date: Fri, 21 Apr 2017 10:29:19 -0700
-Subject: [PATCH] remove -I/usr/include in pkg-config
-
-This shouldn't be necessary as it's part of the default compiler include
-paths anyway. Morever, it can cause GCC 6 C++ build failures in
-downstream packages when combined with QMake (such as
-qtmultimedia-rtlfm-radio-plugin).
-
-Fix these issues by removing it.
-
-Upstream-Status: Inappropriate [disable-feature]
-
-This patch should not go upstream because it breaks the ability to build
-with --prefix. That's not a problem for Openembedded, but it is for
-upstream more generally. See this mail thread for more information:
-
-http://lists.osmocom.org/pipermail/osmocom-sdr/2017-April/001580.html
-
-Signed-off-by: Martin Kelly <mkelly@xevo.com>
----
- librtlsdr.pc.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/librtlsdr.pc.in b/librtlsdr.pc.in
-index 5e55049..84b6d0c 100644
---- a/librtlsdr.pc.in
-+++ b/librtlsdr.pc.in
-@@ -6,6 +6,6 @@ includedir=@includedir@
- Name: RTL-SDR Library
- Description: C Utility Library
- Version: @VERSION@
--Cflags: -I${includedir}/ @RTLSDR_PC_CFLAGS@
-+Cflags: @RTLSDR_PC_CFLAGS@
- Libs: -L${libdir} -lrtlsdr -lusb-1.0
- Libs.private: @RTLSDR_PC_LIBS@
--- 
-2.1.4
-
diff --git a/meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb b/meta-agl-profile-core/recipes-connectivity/rtl-sdr/rtl-sdr_0.5.3.bb
deleted file mode 100644 (file)
index b442d9f..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Turns a Realtek RTL2832U-based DVB dongle into a SDR receiver"
-DESCRIPTION = "DVB-T dongles based on the Realtek RTL2832U chipset can be used as Software Digital Radio adapters, since the chip allows transferring raw I/Q samples to the host, which is really used for DAB/DAB+/FM demodulation."
-HOMEPAGE = "http://sdr.osmocom.org/trac/wiki/rtl-sdr"
-
-LICENSE = "GPLv2+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
-                    file://src/librtlsdr.c;endline=18;md5=1b05599c3ebd4d74857a0a7c45f3d4ef"
-
-DEPENDS = "libusb1"
-
-SRC_URI = "git://git.osmocom.org/rtl-sdr \
-           file://0001-remove-I-usr-include-in-pkg-config.patch \
-           "
-SRCREV = "e3c03f738f5aef4dc51e2b741fbdb542b9cc1bb1"
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "--enable-driver-detach"
-
-do_configure_append() {
-    # remove included temporary path from pc file due to pass-through of OE CFLAGS
-    # debug-prefix-map
-    # See: http://lists.openembedded.org/pipermail/openembedded-devel/2016-May/107456.html
-    sed -i -e "s# -fdebug-prefix-map=.*##g;s# -fmacro-prefix-map=.*##g" librtlsdr.pc
-}
-
-do_install_append() {
-    install -D -m 0644 ${S}/rtl-sdr.rules ${D}${sysconfdir}/udev/rules.d/55-rtl-sdr.rules
-    sed -i 's/MODE:="0666"/GROUP="audio", MODE="0660", SECLABEL{smack}="*"/' \
-        ${D}${sysconfdir}/udev/rules.d/55-rtl-sdr.rules
-}
diff --git a/meta-agl-profile-core/recipes-core/dbus/dbus/dbus.service b/meta-agl-profile-core/recipes-core/dbus/dbus/dbus.service
deleted file mode 100644 (file)
index dee6ad7..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=D-Bus User Message Bus
-Documentation=man:dbus-daemon(1)
-Requires=dbus.socket
-
-[Service]
-ExecStart=/usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation
-ExecReload=/usr/bin/dbus-send --print-reply --session --type=method_call --dest=org.freedesktop.DBus / org.freedesktop.DBus.ReloadConfig
-Restart=always
-RestartSec=1
diff --git a/meta-agl-profile-core/recipes-core/dbus/dbus/dbus.socket b/meta-agl-profile-core/recipes-core/dbus/dbus/dbus.socket
deleted file mode 100644 (file)
index af76b2f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-[Unit]
-Description=D-Bus User Message Bus Socket
-Before=sockets.target
-
-[Socket]
-ListenStream=%t/bus
-
-[Install]
-WantedBy=default.target
diff --git a/meta-agl-profile-core/recipes-core/dbus/dbus/dbus_env.conf b/meta-agl-profile-core/recipes-core/dbus/dbus/dbus_env.conf
deleted file mode 100644 (file)
index f8f0266..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-[Unit]
-Wants=dbus.service
-
-[Service]
-Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%I/bus
diff --git a/meta-agl-profile-core/recipes-core/dbus/dbus/libdbus-c++/dbus-c++-threading.patch b/meta-agl-profile-core/recipes-core/dbus/dbus/libdbus-c++/dbus-c++-threading.patch
deleted file mode 100644 (file)
index c4fafef..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
---- libdbus-c++-0.9.0/include/dbus-c++/dispatcher.h.threading  2017-02-15 13:40:53.796004263 +0000
-+++ libdbus-c++-0.9.0/include/dbus-c++/dispatcher.h    2017-02-15 13:40:46.907000493 +0000
-@@ -188,6 +188,7 @@
- /* classes for multithreading support
- */
-+#if 0
- class DXXAPI Mutex
- {
- public:
-@@ -243,9 +244,11 @@
- typedef bool (*CondVarWaitTimeoutFn)(CondVar *cv, Mutex *mx, int timeout);
- typedef void (*CondVarWakeOneFn)(CondVar *cv);
- typedef void (*CondVarWakeAllFn)(CondVar *cv);
-+#endif
- void DXXAPI _init_threading();
-+#if 0
- void DXXAPI _init_threading(
-   MutexNewFn, MutexFreeFn, MutexLockFn, MutexUnlockFn,
-   CondVarNewFn, CondVarFreeFn, CondVarWaitFn, CondVarWaitTimeoutFn, CondVarWakeOneFn, CondVarWakeAllFn
-@@ -312,6 +315,7 @@
-     cv->wake_all();
-   }
- };
-+#endif
- } /* namespace DBus */
---- libdbus-c++-0.9.0/src/dispatcher.cpp.threading     2017-02-15 13:48:22.627249868 +0000
-+++ libdbus-c++-0.9.0/src/dispatcher.cpp       2017-02-15 13:48:29.164253445 +0000
-@@ -253,6 +253,7 @@
- #endif//DBUS_HAS_THREADS_INIT_DEFAULT
- }
-+#if 0
- void DBus::_init_threading(
-   MutexNewFn m1,
-   MutexFreeFn m2,
-@@ -318,3 +319,4 @@
- #endif//DBUS_HAS_RECURSIVE_MUTEX
-   dbus_threads_init(&functions);
- }
-+#endif
diff --git a/meta-agl-profile-core/recipes-core/dbus/dbus_%.bbappend b/meta-agl-profile-core/recipes-core/dbus/dbus_%.bbappend
deleted file mode 100644 (file)
index 379c543..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-FILESEXTRAPATHS_append := ":${THISDIR}/dbus"
-
-SRC_URI += "file://dbus.service \
-            file://dbus.socket \
-            file://dbus_env.conf \
-            "
-
-inherit systemd
-
-do_install_append() {
-    if [ "${PN}" != "nativesdk-dbus" ]; then
-        if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-            install -m 644 -p -D ${WORKDIR}/dbus.service ${D}${systemd_user_unitdir}/dbus.service
-            install -m 644 -p -D ${WORKDIR}/dbus.socket ${D}${systemd_user_unitdir}/dbus.socket
-            install -m 644 -p -D ${WORKDIR}/dbus_env.conf ${D}${systemd_system_unitdir}/user@.service.d/dbus_env.conf
-
-            # Execute these manually on behalf of systemctl script (from systemd-systemctl-native.bb)
-            # because it does not support systemd's user mode.
-            mkdir -p ${D}/etc/systemd/user/default.target.wants/
-            ln -sf ${systemd_user_unitdir}/dbus.socket ${D}/etc/systemd/user/default.target.wants/dbus.socket
-        fi
-    fi
-}
-
-FILES_${PN} += " \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_user_unitdir}/dbus.*', '', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_system_unitdir}/user@.service.d/dbus_env.conf', '', d)} \
-    "
diff --git a/meta-agl-profile-core/recipes-core/dbus/libdbus-c++/dbus-c++-threading.patch b/meta-agl-profile-core/recipes-core/dbus/libdbus-c++/dbus-c++-threading.patch
deleted file mode 100644 (file)
index c4fafef..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
---- libdbus-c++-0.9.0/include/dbus-c++/dispatcher.h.threading  2017-02-15 13:40:53.796004263 +0000
-+++ libdbus-c++-0.9.0/include/dbus-c++/dispatcher.h    2017-02-15 13:40:46.907000493 +0000
-@@ -188,6 +188,7 @@
- /* classes for multithreading support
- */
-+#if 0
- class DXXAPI Mutex
- {
- public:
-@@ -243,9 +244,11 @@
- typedef bool (*CondVarWaitTimeoutFn)(CondVar *cv, Mutex *mx, int timeout);
- typedef void (*CondVarWakeOneFn)(CondVar *cv);
- typedef void (*CondVarWakeAllFn)(CondVar *cv);
-+#endif
- void DXXAPI _init_threading();
-+#if 0
- void DXXAPI _init_threading(
-   MutexNewFn, MutexFreeFn, MutexLockFn, MutexUnlockFn,
-   CondVarNewFn, CondVarFreeFn, CondVarWaitFn, CondVarWaitTimeoutFn, CondVarWakeOneFn, CondVarWakeAllFn
-@@ -312,6 +315,7 @@
-     cv->wake_all();
-   }
- };
-+#endif
- } /* namespace DBus */
---- libdbus-c++-0.9.0/src/dispatcher.cpp.threading     2017-02-15 13:48:22.627249868 +0000
-+++ libdbus-c++-0.9.0/src/dispatcher.cpp       2017-02-15 13:48:29.164253445 +0000
-@@ -253,6 +253,7 @@
- #endif//DBUS_HAS_THREADS_INIT_DEFAULT
- }
-+#if 0
- void DBus::_init_threading(
-   MutexNewFn m1,
-   MutexFreeFn m2,
-@@ -318,3 +319,4 @@
- #endif//DBUS_HAS_RECURSIVE_MUTEX
-   dbus_threads_init(&functions);
- }
-+#endif
diff --git a/meta-agl-profile-core/recipes-core/dbus/libdbus-c++_0.9.0.bbappend b/meta-agl-profile-core/recipes-core/dbus/libdbus-c++_0.9.0.bbappend
deleted file mode 100644 (file)
index dac44b5..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:"
-SRC_URI_append = "file://dbus-c++-threading.patch"
diff --git a/meta-agl-profile-core/recipes-core/distro-build-manifest/distro-build-manifest.bb b/meta-agl-profile-core/recipes-core/distro-build-manifest/distro-build-manifest.bb
deleted file mode 100644 (file)
index 823cc28..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-SUMMARY = "Distribution build manifest"
-DESCRIPTION = "The folder /etc/platform-info contains build manifest (SPEC-720)."
-LICENSE = "MIT"
-
-# information distributed by the package is machine specific
-PACKAGE_ARCH = "${MACHINE_ARCH}"
-
-# dependencies of ${DISTRO_MANIFEST_GENERATOR}
-DEPENDS = "coreutils-native bash-native git-native gawk-native sed-native jq-native"
-
-# force a rebuild everytime a build is started
-do_compile[nostamp] = "1"
-
-# borrowed to os-release.bb (output format is very close)
-python do_compilestep1 () {
-   import shutil
-   with open(d.expand('${B}/bbinfo-deploy'),'w') as f:
-      allkeys=[]
-      for field in d.getVar('BUILD_MANIFEST_FIELDS_DEPLOY').split():
-         key='DIST_BB_{0}'.format(field)
-         allkeys.append(key)
-         value=d.getVar(field)
-         if value:
-            f.write('{0}="{1}"\n'.format(key,value))
-      f.write('declare -A BITBAKE_VARS\nBITBAKE_VARS[deploy]="%s"' % ' '.join(allkeys))
-
-   with open(d.expand('${B}/bbinfo-target'),'w') as f:
-      allkeys=[]
-      for field in d.getVar('BUILD_MANIFEST_FIELDS_TARGET').split():
-         key='DIST_BB_{0}'.format(field)
-         allkeys.append(key)
-         value=d.getVar(field)
-         if value:
-            f.write('{0}="{1}"\n'.format(key,value))
-      f.write('declare -A BITBAKE_VARS\nBITBAKE_VARS[target]="%s"' % ' '.join(allkeys))
-
-   with open(d.expand('${B}/bbinfo-sdk'),'w') as f:
-      allkeys=[]
-      for field in d.getVar('BUILD_MANIFEST_FIELDS_SDK').split():
-         key='DIST_BB_{0}'.format(field)
-         allkeys.append(key)
-         value=d.getVar(field)
-         if value:
-            f.write('{0}="{1}"\n'.format(key,value))
-      f.write('declare -A BITBAKE_VARS\nBITBAKE_VARS[sdk]="%s"' % ' '.join(allkeys))
-}
-
-do_compilestep2 () {
-    rc=99
-    timestamp=${DATETIME}
-    outfile=${B}/build-info
-    if [ -x "${DISTRO_MANIFEST_GENERATOR}" -a -f "${DISTRO_SETUP_MANIFEST}" ]; then
-               rc=0
-               for     format in bash json; do
-                       if [ "$format" = "json" ]; then
-                               ext=".json"
-                       else
-                               ext=""
-                       fi
-                       for mode in deploy target sdk; do
-                               ${DISTRO_MANIFEST_GENERATOR} -m $mode -f $format -t $timestamp -s ${B}/bbinfo-${mode} ${DISTRO_SETUP_MANIFEST} >${outfile}-${mode}${ext}
-                               rc=$?
-                               if [ $rc -ne 0 ]; then
-                                       break
-                               fi
-                       done
-               done
-    else
-        if [ -z "${DISTRO_MANIFEST_GENERATOR}" ]; then
-            echo "The name of the generation script is not defined."
-        elif [ ! -f "${DISTRO_MANIFEST_GENERATOR}" ]; then
-            echo "Generation script ${DISTRO_MANIFEST_GENERATOR} is missing."
-        elif [ ! -x "${DISTRO_MANIFEST_GENERATOR}" ]; then
-            echo "Generation script ${DISTRO_MANIFEST_GENERATOR} isn't executable."
-        fi
-        if [ -z "${DISTRO_SETUP_MANIFEST}" ]; then
-            echo "The name of the data file is not defined."
-        elif [ ! -f "${DISTRO_SETUP_MANIFEST}" ]; then
-            echo "Data file ${DISTRO_SETUP_MANIFEST} is missing."
-        fi
-       echo "You can try to rerun aglsetup.sh to solve that issue."
-       echo "You can also try to source agl-init-build-env instead of oe-init-build-env."
-    fi
-
-    if [ "$rc" -ne  0 ]; then
-        echo "distro-build-manifest generation failed."
-    fi
-    return $rc
-}
-
-do_compilestep1[vardeps] += " ${BUILD_MANIFEST_FIELDS_DEPLOY}"
-do_compilestep1[vardeps] += " ${BUILD_MANIFEST_FIELDS_TARGET}"
-do_compilestep1[vardeps] += " ${BUILD_MANIFEST_FIELDS_SDK}"
-
-# avoid errors "ERROR: When reparsing .../distro-build-manifest/distro-build-manifest.bb.do_compile, the basehash value changed from .... to .... . The metadata is not deterministic and this needs to be fixed."
-do_compilestep2[vardepsexclude] = "DATETIME"
-
-# combine the two steps
-python do_compile() {
-   bb.build.exec_func("do_compilestep1",d)
-   bb.build.exec_func("do_compilestep2",d)
-}
-
-do_install () {
-    # install in target dir
-    install -d ${D}${sysconfdir}/platform-info
-    install -m 0644 build-info-target ${D}${sysconfdir}/platform-info/build
-    install -m 0644 build-info-target.json ${D}${sysconfdir}/platform-info/build.json
-
-    # also copy in deploy dir
-    install -d ${DEPLOY_DIR_IMAGE}
-    install -m 0644 build-info-deploy ${DEPLOY_DIR_IMAGE}/build-info
-    install -m 0644 build-info-deploy.json ${DEPLOY_DIR_IMAGE}/build-info.json
-
-    # copy into sdk deploy dir
-    install -d ${DEPLOY_DIR}/sdk
-    install -m 0644 build-info-sdk ${DEPLOY_DIR}/sdk/${SDK_NAME}.build-info
-    install -m 0644 build-info-sdk.json ${DEPLOY_DIR}/sdk/${SDK_NAME}.build-info.json
-
-    # and copy to nativesdk package
-    # TODO
-}
-
-# list of variables to add to the various manifests
-# smalles one is 'target', then 'deploy' and finally 'sdk'
-BUILD_MANIFEST_FIELDS_TARGET = "\
-    MACHINE_ARCH \
-    MACHINEOVERRIDES \
-    MACHINE_FEATURES \
-    DISTRO_CODENAME \
-    DISTRO_FEATURES \
-    DISTRO_BRANCH_VERSION_TAG \
-    AGLVERSION \
-    AGL_BRANCH \
-    AGLRELEASETYPE \
-"
-
-BUILD_MANIFEST_FIELDS_DEPLOY = "\
-    ${BUILD_MANIFEST_FIELDS_TARGET} \
-    DISTRO \
-    DISTRO_VERSION \
-    DISTROOVERRIDES \
-    TUNE_FEATURES \
-    TUNE_PKGARCH \
-    ALL_MULTILIB_PACKAGE_ARCHS \
-"
-
-BUILD_MANIFEST_FIELDS_SDK = "\
-    ${BUILD_MANIFEST_FIELDS_DEPLOY} \
-    HOST_SYS \
-    TARGET_SYS \
-    TARGET_VENDOR \
-    SDK_ARCH \
-    SDK_VENDOR \
-    SDK_VERSION \
-    SDK_OS \
-"
-
-# dont exec useless tasks
-do_fetch[noexec] = "1"
-do_unpack[noexec] = "1"
-do_patch[noexec] = "1"
-do_configure[noexec] = "1"
-
diff --git a/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend b/meta-agl-profile-core/recipes-core/packagegroups/packagegroup-core-tools-profile.bbappend
deleted file mode 100644 (file)
index 301a1d5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-RDEPENDS_${PN}_remove_sota = "systemtap"
diff --git a/meta-agl-profile-core/recipes-core/psplash/files/psplash-colors.h b/meta-agl-profile-core/recipes-core/psplash/files/psplash-colors.h
deleted file mode 100644 (file)
index 4474903..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  pslash - a lightweight framebuffer splashscreen for embedded devices.
- *
- *  Copyright (c) 2012 sleep(5) ltd
- *  Author: Tomas Frydrych <tomas@sleepfive.com>
- *
- *  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, 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.
- *
- */
-
-#ifndef _HAVE_PSPLASH_COLORS_H
-#define _HAVE_PSPLASH_COLORS_H
-
-/* This is the overall background color */
-#define PSPLASH_BACKGROUND_COLOR 0xff,0xff,0xff
-
-/* This is the color of any text output */
-#define PSPLASH_TEXT_COLOR 0x00,0x00,0x00
-
-/* This is the color of the progress bar indicator */
-#define PSPLASH_BAR_COLOR 0x00,0x00,0x00
-
-/* This is the color of the progress bar background */
-#define PSPLASH_BAR_BACKGROUND_COLOR 0xff,0xff,0xff
-
-#endif
diff --git a/meta-agl-profile-core/recipes-core/psplash/files/psplash-poky-img.h b/meta-agl-profile-core/recipes-core/psplash/files/psplash-poky-img.h
deleted file mode 100644 (file)
index c0e8b08..0000000
+++ /dev/null
@@ -1,5411 +0,0 @@
-/* GdkPixbuf RGB C-Source image dump 1-byte-run-length-encoded */
-
-#define POKY_IMG_ROWSTRIDE (1800)
-#define POKY_IMG_WIDTH (600)
-#define POKY_IMG_HEIGHT (400)
-#define POKY_IMG_BYTES_PER_PIXEL (3) /* 3:RGB, 4:RGBA */
-#define POKY_IMG_RLE_PIXEL_DATA ((uint8*) \
-  "\377\377\377\377\377\377\377\377\203\377\377\377\1\376\376\376\221\377" \
-  "\377\377\1\376\376\376\215\377\377\377\1\376\376\376\203\377\377\377" \
-  "\1\376\376\376\233\377\377\377\1\376\376\376\203\377\377\377\1\376\376" \
-  "\376\202\377\377\377\5\376\376\376\377\377\377\376\376\376\377\377\377" \
-  "\376\376\376\206\377\377\377\1\376\376\376\203\377\377\377\1\376\376" \
-  "\376\204\377\377\377\1\376\376\376\203\377\377\377\5\376\376\376\377" \
-  "\377\377\376\376\376\377\377\377\376\376\376\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\377\377\377\202\376\376\376\207\377\377" \
-  "\377\1\376\376\376\205\377\377\377\1\376\376\376\211\377\377\377\3\376" \
-  "\376\376\377\377\377\376\376\376\235\377\377\377\1\376\376\376\203\377" \
-  "\377\377\1\376\376\376\213\377\377\377\3\376\376\376\377\377\377\376" \
-  "\376\376\216\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\365\377\377\377\1\376" \
-  "\376\376\203\377\377\377\1\376\376\376\207\377\377\377\1\376\376\376" \
-  "\203\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\205\377" \
-  "\377\377\1\376\376\376\203\377\377\377\12\376\376\376\377\377\377\346" \
-  "\346\346\315\315\315\316\316\316\265\265\265\235\235\235\234\234\234" \
-  "\233\233\233\204\204\204\203kkm\202lln\2EEG;;=\215::<\204kkm\3kkkxxx" \
-  "\235\235\235\202\234\234\234\1\265\265\265\202\316\316\316\1\332\332" \
-  "\332\207\377\377\377\202\376\376\376\2\377\377\377\376\376\376\211\377" \
-  "\377\377\3\376\376\376\377\377\377\376\376\376\203\377\377\377\5\376" \
-  "\376\376\377\377\377\376\376\376\377\377\377\376\376\376\377\377\377" \
-  "\377\377\377\377\377\377\377\377\377\366\377\377\377\1\376\376\376\205" \
-  "\377\377\377\1\376\376\376\214\377\377\377\11\376\376\376\332\332\332" \
-  "\316\316\320\247\247\251\236\236\240\204\204\206kkm__a<<>\202::<\11;" \
-  ";=99;;;=99;::<;;=::<;;=99;\203::<\1<<>\213::<\13;;=::<;;=::<;;=::<;;" \
-  "=::<;;=::<;;=\207::<\3SSUllnxxz\202\234\234\236\202\316\316\316\2\377" \
-  "\377\377\376\376\376\214\377\377\377\1\376\376\376\203\377\377\377\1" \
-  "\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377\376\377" \
-  "\377\377\1\376\376\376\203\377\377\377\1\376\376\376\203\377\377\377" \
-  "\7\332\332\334\302\302\304\234\234\236\203\203\205llnEEG;;=\202::<\6" \
-  ";;=::<;;=::<;;=99;\204::<\1""99;\202;;=\1""99;\205::<\1;;=\213::<\11" \
-  ";;=::<;;=::<;;=::<;;=::<;;=\202::<\1""99;\206::<\1;;=\203::<\13;;=99" \
-  ";;;=::<;;=::<kkmxxz\234\234\236\300\300\302\316\316\316\203\377\377\377" \
-  "\1\376\376\376\202\377\377\377\1\376\376\376\203\377\377\377\1\376\376" \
-  "\376\204\377\377\377\1\376\376\376\377\377\377\377\377\377\377\377\377" \
-  "\377\377\377\374\377\377\377\7\346\346\350\301\301\303\235\235\237ww" \
-  "y``b99;;;=\202::<\1;;=\204::<\203;;=\3::<99;;;=\207::<\202;;=\204::<" \
-  "\203;;=\215::<\1;;=\207::<\11;;=::<;;=99;::<;;=::<99;::<\202;;=\5::<" \
-  ";;=::<;;=99;\202::<\2;;=::<\202;;=\6::<SSUkkm\235\235\237\264\264\266" \
-  "\332\332\334\210\377\377\377\1\376\376\376\202\377\377\377\1\376\376" \
-  "\376\377\377\377\377\377\377\377\377\377\377\377\377\362\377\377\377" \
-  "\1\376\376\376\202\377\377\377\11\346\346\350\265\265\267\221\221\223" \
-  "kkm::<;;=::<99;;;=\203::<\1;;=\202::<\3""99;::<;;=\202::<\4;;=99;::<" \
-  ";;=\204::<\1;;=\202::<\202;;=\1::<\202;;=\202::<\1;;=\203::<\1;;=\211" \
-  "::<\2;;=99;\202::<\2;;=99;\206::<\1;;=\202::<\2""99;;;=\210::<\1;;=\202" \
-  "::<\1;;=\203::<\1;;=\203::<\1;;=\202::<\4kkm\222\222\224\265\265\267" \
-  "\332\332\334\204\377\377\377\1\376\376\376\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\362\377\377\377\12\363\363\363\316\316\316\235\235" \
-  "\235jjjFFH;;=::<;;=::<;;=\202::<\1;;=\204::<\1""99;\202::<\2;;=::<\202" \
-  ";;=\204::<\7;;=::<;;=::<;;=::<;;=\203::<\1;;=\202::<\1;;=\217::<\2""9" \
-  "9;;;=\203::<\1;;=\202::<\4""99;;;=::<;;=\203::<\2;;=99;\202::<\1;;=\207" \
-  "::<\1;;=\213::<\1;;=\204::<\7kkk\221\221\221\301\301\301\363\363\363" \
-  "\376\376\376\377\377\377\376\376\376\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\321\377\377\377\1\376\376\376\202\377\377\377\1\376" \
-  "\376\376\221\377\377\377\1\376\376\376\204\377\377\377\4\363\363\365" \
-  "\301\301\303\222\222\224__a\220::<\3;;=::<;;=\204::<\203;;=\203::<\2" \
-  ";;=::<\202;;=\4::<;;=::<;;=\204::<\1;;=\202::<\4;;=::<99;;;=\211::<\1" \
-  "99;\205::<\202;;=\210::<\5;;=::<;;=::<;;=\203::<\1;;=\212::<\4;;=99;" \
-  ";;=99;\211::<\4SSU\204\204\206\266\266\270\345\345\345\221\377\377\377" \
-  "\1\376\376\376\204\377\377\377\202\376\376\376\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\266\377\377\377\1\376\376\376\203\377\377\377" \
-  "\1\376\376\376\202\377\377\377\1\376\376\376\207\377\377\377\1\376\376" \
-  "\376\210\377\377\377\10\363\363\363\301\301\301\221\221\221``b99;;;=" \
-  "::<;;=\213::<\3;;=::<;;=\203::<\1;;=\204::<\2;;=99;\202::<\1""99;\202" \
-  ";;=\204::<\1;;=\210::<\202;;=\202::<\2;;=99;\215::<\1;;=\204::<\1;;=" \
-  "\205::<\5;;=99;;;=::<;;=\202::<\202;;=\4""99;;;=::<;;=\203::<\1;;=\204" \
-  "::<\3;;=99;;;=\210::<\11;;=::<;;=99;;;=SSS\205\205\205\266\266\266\363" \
-  "\363\363\202\377\377\377\1\376\376\376\206\377\377\377\1\376\376\376" \
-  "\204\377\377\377\1\376\376\376\205\377\377\377\1\376\376\376\377\377" \
-  "\377\377\377\377\377\377\377\377\377\377\266\377\377\377\1\376\376\376" \
-  "\204\377\377\377\1\376\376\376\205\377\377\377\1\376\376\376\207\377" \
-  "\377\377\5\376\376\376\333\333\335\250\250\252kkm;;=\203::<\202;;=\212" \
-  "::<\10;;=::<;;=::<;;=::<;;=::<\202;;=\206::<\10;;=::<;;=::<;;=::<;;=" \
-  "::<\202;;=\2::<;;=\203::<\3;;=::<;;=\202::<\1;;=\202::<\1;;=\211::<\1" \
-  "99;\202;;=\203::<\1;;=\205::<\1;;=\204::<\1;;=\206::<\203;;=\202::<\1" \
-  ";;=\206::<\1;;=\213::<\1;;=\204::<\1;;=\202::<\3__a\221\221\223\316\316" \
-  "\316\204\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\207" \
-  "\377\377\377\1\376\376\376\377\377\377\377\377\377\377\377\377\377\377" \
-  "\377\267\377\377\377\202\376\376\376\210\377\377\377\1\376\376\376\207" \
-  "\377\377\377\3\301\301\301\204\204\206SSU\203::<\3;;=::<;;=\202::<\2" \
-  "99;;;=\215::<\1;;=\204::<\2;;=99;\202::<\202;;=\202::<\7""99;::<;;=:" \
-  ":<;;=99;;;=\202::<\2""99;;;=\202::<\1;;=\207::<\1;;=\211::<\2""99;;;" \
-  "=\202::<\3;;=::<;;=\202::<\2""99;;;=\206::<\4;;=::<;;=::<\202;;=\206" \
-  "::<\3;;=::<;;=\202::<\5;;=::<;;=99;;;=\220::<\2;;=::<\202;;=\5""99;G" \
-  "GIxxx\265\265\265\363\363\363\207\377\377\377\1\376\376\376\205\377\377" \
-  "\377\1\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377\274" \
-  "\377\377\377\1\376\376\376\204\377\377\377\202\376\376\376\4\364\364" \
-  "\364\265\265\265xxz;;=\20299;\202::<\1""99;\204::<\3;;=::<;;=\213::<" \
-  "\1;;=\203::<\3;;=::<;;=\207::<\2;;=::<\202;;=\4""99;;;=::<;;=\202::<" \
-  "\5__allnkkm\221\221\223\235\235\237\202\234\234\236\6\317\317\317\315" \
-  "\315\315\317\317\317\315\315\315\316\316\316\346\346\346\213\377\377" \
-  "\377\3\376\376\376\377\377\377\346\346\346\204\316\316\316\5\316\316" \
-  "\320\251\251\253\234\234\236\233\233\235\235\235\237\203kkm\202::<\1" \
-  ";;=\202::<\6;;=::<;;=99;::<;;=\205::<\2;;=::<\203;;=\202::<\1;;=\212" \
-  "::<\1;;=\202::<\1;;=\202::<\1;;=\204::<\1;;=\202::<\3lln\250\250\252" \
-  "\346\346\350\206\377\377\377\1\376\376\376\204\377\377\377\1\376\376" \
-  "\376\377\377\377\377\377\377\377\377\377\377\377\377\271\377\377\377" \
-  "\1\376\376\376\202\377\377\377\1\376\376\376\202\377\377\377\4\362\362" \
-  "\362\266\266\270xxz::<\202;;=\202::<\10;;=::<99;;;=::<;;=::<;;=\203:" \
-  ":<\1;;=\213::<\3;;=::<;;=\205::<\1;;=\202::<\1<<>\202::<\7llnkkm\233" \
-  "\233\235\235\235\237\302\302\304\316\316\320\347\347\351\241\377\377" \
-  "\377\202\376\376\376\203\377\377\377\17\376\376\376\377\377\377\376\376" \
-  "\376\377\377\377\376\376\376\363\363\363\316\316\316\315\315\315\234" \
-  "\234\234\235\235\235xxxllnFFH::<;;=\205::<\5;;=99;;;=::<;;=\212::<\202" \
-  ";;=\212::<\5;;=99;;;=::<99;\202::<\5__a\250\250\252\346\346\346\377\377" \
-  "\377\376\376\376\202\377\377\377\1\376\376\376\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\271\377\377\377\202\376\376\376\2\377\377\377" \
-  "\376\376\376\203\377\377\377\3\363\363\363\266\266\266wwy\202;;=\210" \
-  "::<\1<<>\203::<\2<<>99;\215::<\1;;=\205::<\11;;=::<;;;___xxx\235\235" \
-  "\235\266\266\266\315\315\315\364\364\364\207\377\377\377\1\376\376\376" \
-  "\213\377\377\377\1\376\376\376\231\377\377\377\5\376\376\376\377\377" \
-  "\377\376\376\376\377\377\377\376\376\376\202\377\377\377\1\376\376\376" \
-  "\204\377\377\377\1\376\376\376\202\377\377\377\5\316\316\316\302\302" \
-  "\302\233\233\233yyykkk\202::<\6;;=::<;;=::<99;;;=\211::<\1;;=\202::<" \
-  "\1;;=\206::<\1""99;\202;;=\202::<\203;;=\1""99;\202::<\3__a\251\251\253" \
-  "\346\346\346\204\377\377\377\3\376\376\376\377\377\377\376\376\376\377" \
-  "\377\377\377\377\377\377\377\377\377\377\377\266\377\377\377\1\376\376" \
-  "\376\202\377\377\377\2\302\302\302xxx\203::<\3;;=::<;;=\232::<\1;;=\202" \
-  "::<\6RRTkkm\235\235\237\301\301\303\332\332\334\376\376\376\222\377\377" \
-  "\377\1\376\376\376\260\377\377\377\3\376\376\376\377\377\377\376\376" \
-  "\376\202\377\377\377\5\345\345\347\316\316\320\235\235\237xxzSSU\215" \
-  "::<\202;;=\202::<\203;;=\2::<;;=\203::<\1;;=\204::<\10;;=::<;;=::<;;" \
-  "=kkm\266\266\266\363\363\363\202\377\377\377\1\376\376\376\377\377\377" \
-  "\377\377\377\377\377\377\377\377\377\245\377\377\377\1\376\376\376\214" \
-  "\377\377\377\1\376\376\376\202\377\377\377\5\376\376\376\377\377\377" \
-  "\332\332\332\205\205\207GGI\202::<\1;;=\211::<\202;;=\205::<\2;;=::<" \
-  "\202;;=\203::<\14;;=99;::<;;=99;;;=FFFxxx\234\234\234\315\315\315\364" \
-  "\364\364\376\376\376\323\377\377\377\4\317\317\317\250\250\250xxxSSS" \
-  "\202::<\1;;=\206::<\2;;=::<\203;;=\202::<\2;;=99;\204::<\7;;=::<;;=:" \
-  ":<;;=::<;;=\204::<\3\204\204\206\301\301\301\376\376\376\220\377\377" \
-  "\377\1\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377\225" \
-  "\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\206\377\377" \
-  "\377\1\376\376\376\202\377\377\377\4\363\363\363\251\251\251___;;=\202" \
-  "::<\1;;=\202::<\202;;=\204::<\1;;=\202::<\7;;=::<;;=::<;;=::<;;=\203" \
-  "::<\3""99;::<;;=\202::<\5;;=__a\221\221\223\265\265\267\346\346\346\323" \
-  "\377\377\377\1\376\376\376\211\377\377\377\5\363\363\363\301\301\303" \
-  "\235\235\237lln::<\202;;=\203::<\1;;=\204::<\1;;=\202::<\2""99;;;=\205" \
-  "::<\2;;=99;\203::<\1""99;\204::<\3TTT\233\233\233\346\346\346\207\377" \
-  "\377\377\1\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377" \
-  "\250\377\377\377\3\316\316\316\204\204\204;;=\203::<\1;;=\203::<\1;;" \
-  "=\202::<\1;;=\205::<\3;;=::<;;=\202::<\4""99;;;=::<;;=\202::<\202;;=" \
-  "\4___\221\221\221\301\301\303\363\363\365\203\377\377\377\1\376\376\376" \
-  "\203\377\377\377\202\376\376\376\321\377\377\377\1\376\376\376\210\377" \
-  "\377\377\1\376\376\376\202\377\377\377\4\316\316\316\235\235\235kkk;" \
-  ";=\202::<\202;;=\203::<\5;;=::<;;=99;;;=\204::<\202;;=\7::<;;=99;::<" \
-  ";;=::<;;=\202::<\202;;=\2xxz\302\302\304\213\377\377\377\1\376\376\376" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\224\377\377\377\1\376" \
-  "\376\376\212\377\377\377\3\363\363\363\266\266\266TTV\203::<\3;;=::<" \
-  ";;=\202::<\203;;=\202::<\202;;=\205::<\1;;=\202::<\1;;=\204::<\4SSU\221" \
-  "\221\223\301\301\301\363\363\363\206\377\377\377\1\376\376\376\203\377" \
-  "\377\377\1\376\376\376\202\377\377\377\1\376\376\376\315\377\377\377" \
-  "\202\376\376\376\202\377\377\377\1\376\376\376\210\377\377\377\1\376" \
-  "\376\376\202\377\377\377\1\376\376\376\202\377\377\377\3\316\316\316" \
-  "\221\221\223__a\203::<\1;;=\203::<\3;;=::<;;=\203::<\5;;=99;;;=::<;;" \
-  "=\204::<\1""99;\205::<\3SSU\234\234\236\346\346\346\207\377\377\377\3" \
-  "\376\376\376\377\377\377\376\376\376\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\233\377\377\377\4\376\376\376\347\347\347\221\221\221" \
-  "FFH\207::<\4""99;;;=::<;;=\20299;\202;;=\202::<\1;;=\203::<\2;;=::<\202" \
-  ";;=\202::<\3xxz\250\250\252\346\346\350\215\377\377\377\203\376\376\376" \
-  "\316\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\211\377" \
-  "\377\377\1\376\376\376\211\377\377\377\4\363\363\363\265\265\267\205" \
-  "\205\207FFH\210::<\3;;=::<;;=\204::<\1;;=\207::<\2;;=::<\202;;=\2\203" \
-  "\203\205\317\317\321\206\377\377\377\1\376\376\376\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\233\377\377\377\3\316\316\316yy{99;\206" \
-  "::<\2;;=99;\202;;=\205::<\5""99;::<;;=::<;;=\202::<\6;;=::<;;=SSU\204" \
-  "\204\204\301\301\301\226\377\377\377\1\376\376\376\317\377\377\377\1" \
-  "\376\376\376\203\377\377\377\1\376\376\376\204\377\377\377\1\376\376" \
-  "\376\204\377\377\377\1\376\376\376\205\377\377\377\1\376\376\376\202" \
-  "\377\377\377\3\316\316\316\221\221\221SSU\203::<\3;;=::<99;\204::<\1" \
-  ";;=\203::<\2""99;;;=\202::<\1;;=\204::<\5""99;<<>::<kkk\264\264\264\203" \
-  "\377\377\377\1\376\376\376\377\377\377\377\377\377\377\377\377\377\377" \
-  "\377\232\377\377\377\2\266\266\270__a\202::<\5;;=::<;;=::<99;\202;;=" \
-  "\10::<;;=::<;;=::<;;=99;;;=\202::<\11;;=::<99;;;=::<;;=SSU\221\221\223" \
-  "\331\331\331\211\377\377\377\1\376\376\376\204\377\377\377\1\376\376" \
-  "\376\202\377\377\377\1\376\376\376\324\377\377\377\1\376\376\376\202" \
-  "\377\377\377\3\376\376\376\377\377\377\376\376\376\212\377\377\377\1" \
-  "\376\376\376\214\377\377\377\14\332\332\332\251\251\251``b::<;;=::<;" \
-  ";=99;::<;;=::<;;=\202::<\3;;=99;;;=\203::<\1;;=\202::<\10;;=99;;;=::" \
-  "<;;=SSU\250\250\252\363\363\363\377\377\377\377\377\377\377\377\377\377" \
-  "\377\377\231\377\377\377\2\265\265\265SSU\216::<\4;;=::<99;;;=\205::" \
-  "<\10;;=SSU\222\222\224\332\332\334\377\377\377\376\376\376\377\377\377" \
-  "\376\376\376\205\377\377\377\1\376\376\376\203\377\377\377\1\376\376" \
-  "\376\202\377\377\377\1\376\376\376\327\377\377\377\1\376\376\376\202" \
-  "\377\377\377\1\376\376\376\206\377\377\377\1\376\376\376\207\377\377" \
-  "\377\1\376\376\376\216\377\377\377\4\347\347\351\250\250\252``b::<\202" \
-  ";;=\202::<\1;;=\203::<\1;;=\203::<\1;;=\202::<\3;;=::<;;=\202::<\6""9" \
-  "9;;;=::<FFF\233\233\233\363\363\363\377\377\377\377\377\377\377\377\377" \
-  "\377\377\377\206\377\377\377\3\376\376\376\377\377\377\376\376\376\213" \
-  "\377\377\377\4\363\363\365\234\234\236FFH;;=\206::<\2""99;;;=\204::<" \
-  "\202;;=\2::<;;=\206::<\4FFH\204\204\206\333\333\333\376\376\376\264\377" \
-  "\377\377\3\376\376\376\377\377\377\376\376\376\327\377\377\377\4\346" \
-  "\346\346\221\221\221SSS:::\202::<\1;;=\204::<\3;;=::<;;=\214::<\3GGI" \
-  "\221\221\223\347\347\347\211\377\377\377\1\376\376\376\203\377\377\377" \
-  "\1\376\376\376\377\377\377\377\377\377\377\377\371\377\377\377\1\376" \
-  "\376\376\207\377\377\377\5\363\363\363\234\234\234FFH::<;;=\204::<\1" \
-  ";;=\202::<\1;;=\203::<\1;;=\204::<\1;;=\203::<\5;;=xxz\300\300\302\377" \
-  "\377\377\376\376\376\267\377\377\377\1\376\376\376\202\377\377\377\1" \
-  "\376\376\376\215\377\377\377\1\376\376\376\303\377\377\377\3\376\376" \
-  "\376\377\377\377\376\376\376\204\377\377\377\4\332\332\332\203\203\205" \
-  "GGI99;\207::<\202;;=\203::<\6;;=::<;;=::<;;=99;\202;;=\202::<\3\204\204" \
-  "\204\346\346\346\376\376\376\205\377\377\377\1\376\376\376\377\377\377" \
-  "\377\377\377\377\377\373\377\377\377\1\376\376\376\203\377\377\377\1" \
-  "\376\376\376\204\377\377\377\3\362\362\362\234\234\236GGI\203::<\15;" \
-  ";=::<;;=::<;;=::<;;=99;;;=::<;;=::<99;\202;;=\7::<;;=99;::<```\250\250" \
-  "\250\363\363\363\202\377\377\377\1\375\375\375\272\377\377\377\1\376" \
-  "\376\376\214\377\377\377\1\376\376\376\306\377\377\377\1\375\375\375" \
-  "\210\377\377\377\6\265\265\265lln::<;;=::<;;=\202::<\5;;=99;;;=::<99" \
-  ";\205::<\1;;=\206::<\4\204\204\206\345\345\345\377\377\377\376\376\376" \
-  "\207\377\377\377\1\376\376\376\377\377\377\377\377\377\377\377\372\377" \
-  "\377\377\1\376\376\376\202\377\377\377\3\364\364\364\233\233\235GGI\202" \
-  "::<\203;;=\2""99;;;=\202::<\3""99;::<;;=\202::<\13;;=99;::<;;=::<;;=" \
-  "::<FFH\204\204\204\333\333\333\376\376\376\204\377\377\377\1\376\376" \
-  "\376\204\377\377\377\1\376\376\376\304\377\377\377\1\376\376\376\317" \
-  "\377\377\377\4\346\346\346\221\221\223GGI99;\204::<\1""99;\202;;=\2:" \
-  ":<;;=\204::<\1;;=\204::<\202;;=\3::<\221\221\223\364\364\364\203\377" \
-  "\377\377\1\376\376\376\203\377\377\377\1\376\376\376\377\377\377\377" \
-  "\377\377\377\377\371\377\377\377\1\376\376\376\202\377\377\377\6\265" \
-  "\265\267SSU::<99;::<;;=\203::<\1;;=\202::<\1;;=\204::<\3;;=::<;;=\202" \
-  "::<\6;;=SSS\264\264\264\363\363\363\377\377\377\376\376\376\204\377\377" \
-  "\377\3\376\376\376\377\377\377\376\376\376\267\377\377\377\1\376\376" \
-  "\376\221\377\377\377\1\376\376\376\307\377\377\377\1\376\376\376\207" \
-  "\377\377\377\4\376\376\376\377\377\377\266\266\266kkm\202::<\1;;=\202" \
-  "::<\6;;=::<99;;;=99;;;=\205::<\3;;=::<99;\202::<\4GGI\234\234\234\363" \
-  "\363\363\376\376\376\377\377\377\377\377\377\377\377\375\377\377\377" \
-  "\4\376\376\376\377\377\377\265\265\265SSU\202::<\1;;=\204::<\1;;=\203" \
-  "::<\3;;=99;;;=\205::<\202;;=\2yyy\316\316\316\203\377\377\377\1\376\376" \
-  "\376\206\377\377\377\3\376\376\376\377\377\377\376\376\376\263\377\377" \
-  "\377\1\376\376\376\205\377\377\377\2\315\315\315;;;\211::<\3;;;:::\315" \
-  "\315\315\202\377\377\377\1\376\376\376\312\377\377\377\3\376\376\376" \
-  "\377\377\377\376\376\376\205\377\377\377\5\346\346\346\204\204\204FF" \
-  "H::<;;=\202::<\4;;=::<;;=::<\203;;=\203::<\2<<>99;\202::<\4""99;;;=F" \
-  "FF\234\234\234\377\377\377\377\377\377\377\377\375\377\377\377\11\316" \
-  "\316\320kkm::<;;=::<;;=99;::<;;=\203::<\202;;=\2::<99;\205::<\13;;=F" \
-  "FH\221\221\221\346\346\346\376\376\376\377\377\377\376\376\376\377\377" \
-  "\377\376\376\376\377\377\377\376\376\376\204\377\377\377\1\376\376\376" \
-  "\273\377\377\377\2\376\376\376\317\317\317\212::<\6;;=;;;\316\316\316" \
-  "\376\376\376\377\377\377\376\376\376\304\377\377\377\1\376\376\376\206" \
-  "\377\377\377\5\376\376\376\377\377\377\376\376\376\377\377\377\376\376" \
-  "\376\204\377\377\377\4\363\363\363\235\235\235RRT;;=\202::<\202;;=\7" \
-  "::<;;=99;::<;;=::<;;=\203::<\1;;=\202::<\6;;=::<SSU\264\264\264\377\377" \
-  "\377\376\376\376\377\377\377\377\377\377\377\377\367\377\377\377\3\346" \
-  "\346\346xxz;;=\205::<\1;;=\203::<\3;;=::<;;=\207::<\3SSU\247\247\251" \
-  "\363\363\363\217\377\377\377\1\376\376\376\272\377\377\377\1\316\316" \
-  "\316\213::<\2;;=\316\316\316\306\377\377\377\3\376\376\376\377\377\377" \
-  "\376\376\376\221\377\377\377\4\265\265\267SSU;;=99;\202::<\2""99;;;=" \
-  "\206::<\1;;=\204::<\1;;=\202::<\3jjj\317\317\317\376\376\376\377\377" \
-  "\377\377\377\377\377\377\343\377\377\377\1\376\376\376\211\377\377\377" \
-  "\1\376\376\376\206\377\377\377\2\363\363\363\233\233\233\210::<\1;;=" \
-  "\203::<\1;;=\203::<\1;;=\203::<\2SSS\265\265\265\315\377\377\377\1\316" \
-  "\316\316\214::<\1\316\316\316\334\377\377\377\3\316\316\316kkk::<\202" \
-  ";;=\206::<\1;;=\202::<\1;;=\202::<\7""99;;;=::<;;=::<\204\204\206\346" \
-  "\346\350\377\377\377\377\377\377\377\377\347\377\377\377\1\376\376\376" \
-  "\212\377\377\377\3\265\265\265SSS::<\202;;=\205::<\1;;=\202::<\202;;" \
-  "=\202::<\1;;=\203::<\2lln\265\265\267\203\377\377\377\1\376\376\376\313" \
-  "\377\377\377\1\316\316\316\214::<\1\316\316\316\336\377\377\377\6\316" \
-  "\316\316kkm::<;;=::<;;=\202::<\3;;=::<;;=\204::<\10;;=99;;;=::<99;;;" \
-  "=FFH\234\234\234\210\377\377\377\3\376\376\376\377\377\377\376\376\376" \
-  "\377\377\377\377\377\377\377\377\327\377\377\377\2\376\376\376\377\377" \
-  "\377\202\376\376\376\205\377\377\377\1\376\376\376\203\377\377\377\5" \
-  "\332\332\332kkk;;=::<;;=\205::<\4;;=::<;;=::<\202;;=\2::<;;=\203::<\2" \
-  "kkm\317\317\317\204\377\377\377\1\376\376\376\314\377\377\377\1\316\316" \
-  "\316\214::<\1\316\316\316\336\377\377\377\14\376\376\376\377\377\377" \
-  "\316\316\316\204\204\206;;=::<;;=::<;;=99;::<;;=\205::<\11;;=99;;;=9" \
-  "9;::<;;;RRR\317\317\317\376\376\376\204\377\377\377\1\376\376\376\377" \
-  "\377\377\377\377\377\377\377\332\377\377\377\202\376\376\376\211\377" \
-  "\377\377\2\363\363\363\221\221\223\203::<\1;;=\207::<\1;;=\202::<\202" \
-  ";;=\10::<99;::<lln\316\316\316\376\376\376\377\377\377\376\376\376\206" \
-  "\377\377\377\1\376\376\376\311\377\377\377\1\316\316\316\214::<\1\316" \
-  "\316\316\335\377\377\377\7\376\376\376\377\377\377\376\376\376\377\377" \
-  "\377\376\376\376\347\347\347kkm\202::<\2""88:;;=\203::<\1;;=\204::<\3" \
-  ";;=99;;;=\202::<\4;;=::<xxx\346\346\346\206\377\377\377\1\376\376\376" \
-  "\377\377\377\377\377\377\377\377\331\377\377\377\3\376\376\376\377\377" \
-  "\377\376\376\376\203\377\377\377\4\376\376\376\377\377\377\300\300\302" \
-  "SSU\207::<\1;;=\202::<\1;;=\205::<\4""99;;;=SSU\316\316\316\204\377\377" \
-  "\377\1\376\376\376\205\377\377\377\1\376\376\376\202\377\377\377\1\376" \
-  "\376\376\307\377\377\377\1\316\316\316\214::<\1\316\316\316\334\377\377" \
-  "\377\1\376\376\376\202\377\377\377\1\376\376\376\204\377\377\377\3\317" \
-  "\317\317kkm;;=\205::<\3;;=::<99;\203::<\1;;=\204::<\3;;=FFH\250\250\250" \
-  "\205\377\377\377\3\376\376\376\377\377\377\376\376\376\377\377\377\377" \
-  "\377\377\377\377\326\377\377\377\1\376\376\376\204\377\377\377\4\376" \
-  "\376\376\377\377\377\347\347\351xxz\202::<\1;;=\204::<\1;;=\203::<\1" \
-  ";;=\204::<\4""99;;;=SSU\266\266\266\205\377\377\377\1\376\376\376\202" \
-  "\377\377\377\1\376\376\376\205\377\377\377\1\375\375\375\310\377\377" \
-  "\377\1\316\316\316\214::<\1\316\316\316\344\377\377\377\7\376\376\376" \
-  "\377\377\377\316\316\316kkm;;=::<99;\202::<\203;;=\2::<;;=\204::<\1;" \
-  ";=\202::<\3;;=__a\332\332\334\377\377\377\377\377\377\377\377\335\377" \
-  "\377\377\1\376\376\376\204\377\377\377\4\250\250\252FFH::<;;=\202::<" \
-  "\3;;=::<;;=\202::<\3""99;::<;;=\202::<\1;;=\202::<\4HHJ\250\250\250\377" \
-  "\377\377\376\376\376\206\377\377\377\202\376\376\376\205\377\377\377" \
-  "\1\376\376\376\311\377\377\377\1\316\316\316\214::<\1\316\316\316\345" \
-  "\377\377\377\1\376\376\376\202\377\377\377\2\301\301\301SSU\202::<\1" \
-  ";;=\202::<\2""99;;;=\212::<\3;;=\233\233\233\363\363\363\377\377\377" \
-  "\377\377\377\377\377\331\377\377\377\1\376\376\376\204\377\377\377\2" \
-  "\346\346\346kkk\211::<\3;;=99;;;=\206::<\2\235\235\237\363\363\363\205" \
-  "\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\321\377\377" \
-  "\377\1\316\316\316\214::<\1\316\316\316\352\377\377\377\2\250\250\252" \
-  "GGI\206::<\5;;=::<;;=::<;;=\202::<\202;;=\4::<:::SSS\316\316\316\203" \
-  "\377\377\377\1\376\376\376\377\377\377\377\377\377\377\377\330\377\377" \
-  "\377\2\251\251\251FFH\203::<\1""99;\207::<\1;;=\204::<\3;;=xxx\346\346" \
-  "\346\334\377\377\377\1\316\316\316\214::<\1\316\316\316\350\377\377\377" \
-  "\13\376\376\376\377\377\377\376\376\376\363\363\363\234\234\23699;;;" \
-  "=::<;;=99;;;=\202::<\2""99;;;=\206::<\202;;=\2\221\221\223\363\363\363" \
-  "\204\377\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377\377" \
-  "\1\376\376\376\377\377\377\377\377\377\377\377\316\377\377\377\2\346" \
-  "\346\346kkk\202;;=\206::<\1;;=\203::<\3;;=::<;;=\202::<\2``b\316\316" \
-  "\320\336\377\377\377\1\316\316\316\214::<\1\316\316\316\353\377\377\377" \
-  "\4\376\376\376\377\377\377\350\350\352kkm\206::<\2;;=99;\203::<\1;;=" \
-  "\203::<\6;;=::<TTV\331\331\331\377\377\377\376\376\376\207\377\377\377" \
-  "\1\376\376\376\377\377\377\377\377\377\377\377\306\377\377\377\1\376" \
-  "\376\376\203\377\377\377\5\376\376\376\377\377\377\266\266\266EEG;;=" \
-  "\203::<\1;;=\203::<\1;;=\204::<\202;;=\3::<GGI\250\250\252\205\377\377" \
-  "\377\1\376\376\376\202\377\377\377\1\376\376\376\327\377\377\377\1\316" \
-  "\316\316\214::<\1\316\316\316\351\377\377\377\1\376\376\376\203\377\377" \
-  "\377\5\376\376\376\377\377\377\316\316\316TTV;;=\203::<\3;;=::<;;=\204" \
-  "::<\202;;=\5::<;;=99;;;=\234\234\236\207\377\377\377\1\376\376\376\377" \
-  "\377\377\377\377\377\377\377\303\377\377\377\3\376\376\376\377\377\377" \
-  "\376\376\376\203\377\377\377\6\376\376\376\377\377\377\364\364\364ww" \
-  "y::<;;=\202::<\202;;=\202::<\5;;=::<99;::<;;=\202::<\4;;=::<\204\204" \
-  "\206\363\363\363\202\377\377\377\1\376\376\376\202\377\377\377\3\376" \
-  "\376\376\377\377\377\376\376\376\331\377\377\377\1\316\316\316\214::" \
-  "<\1\316\316\316\353\377\377\377\1\376\376\376\204\377\377\377\11\376" \
-  "\376\376\234\234\234GGI::<;;=::<;;=::<;;=\207::<\1;;=\202::<\2__a\332" \
-  "\332\332\377\377\377\377\377\377\377\377\320\377\377\377\4\316\316\316" \
-  "FFH::<;;=\202::<\1;;=\207::<\2;;=99;\202;;=\3__a\316\316\320\376\376" \
-  "\376\342\377\377\377\1\316\316\316\214::<\1\316\316\316\361\377\377\377" \
-  "\5\376\376\376\347\347\347lln::<;;=\210::<\1""99;\202::<\7;;=::<99;G" \
-  "GI\247\247\247\377\377\377\376\376\376\202\377\377\377\1\376\376\376" \
-  "\377\377\377\377\377\377\377\377\305\377\377\377\1\376\376\376\203\377" \
-  "\377\377\3\221\221\221:::;;=\203::<\1;;=\202::<\1;;=\203::<\1;;=\202" \
-  "::<\4;;=FFH\234\234\234\376\376\376\202\377\377\377\1\375\375\375\202" \
-  "\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\332\377\377" \
-  "\377\1\316\316\316\214::<\1\316\316\316\364\377\377\377\3\301\301\303" \
-  "FFH;;=\206::<\1;;=\205::<\5;;=99;;;=yy{\363\363\363\377\377\377\377\377" \
-  "\377\377\377\312\377\377\377\3\346\346\346^^`;;=\207::<\1;;=\203::<\1" \
-  ";;=\203::<\2jjl\346\346\350\202\377\377\377\1\376\376\376\213\377\377" \
-  "\377\1\375\375\375\327\377\377\377\1\316\316\316\214::<\1\316\316\316" \
-  "\360\377\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377\377" \
-  "\2\363\363\363\220\220\220\202;;=\203::<\2;;=99;\206::<\1;;=\202::<\2" \
-  "SSU\316\316\320\202\377\377\377\1\376\376\376\377\377\377\377\377\377" \
-  "\377\377\303\377\377\377\4\376\376\376\377\377\377\302\302\302FFH\217" \
-  "::<\2GGI\250\250\252\205\377\377\377\1\376\376\376\211\377\377\377\3" \
-  "\376\376\376\377\377\377\376\376\376\326\377\377\377\1\316\316\316\214" \
-  "::<\1\316\316\316\356\377\377\377\1\376\376\376\210\377\377\377\3\316" \
-  "\316\316SSU;;=\203::<\202;;=\207::<\1;;=\202::<\1\235\235\237\377\377" \
-  "\377\377\377\377\377\377\306\377\377\377\1\221\221\221\202::<\2;;=99" \
-  ";\203::<\3;;=::<;;=\203::<\1;;=\202::<\2kkm\346\346\346\351\377\377\377" \
-  "\1\316\316\316\214::<\1\316\316\316\370\377\377\377\2\362\362\362\221" \
-  "\221\221\204::<\3;;=::<;;=\206::<\1;;=\202::<\2xxz\362\362\364\377\377" \
-  "\377\377\377\377\377\377\301\377\377\377\3\376\376\376\363\363\363__" \
-  "_\204::<\3;;=::<;;=\202::<\2;;=99;\202;;=\4::<99;GGI\250\250\252\353" \
-  "\377\377\377\1\316\316\316\214::<\1\316\316\316\366\377\377\377\1\376" \
-  "\376\376\203\377\377\377\2\317\317\317SSS\211::<\202;;=\6""99;;;=99;" \
-  "::<SSU\332\332\332\202\377\377\377\1\376\376\376\377\377\377\377\377" \
-  "\377\377\377\267\377\377\377\11\376\376\376\377\377\377\376\376\376\377" \
-  "\377\377\376\376\376\377\377\377\317\317\321FFH;;=\202::<\3;;=::<99;" \
-  "\203::<\203;;=\202::<\4;;=lll\346\346\346\376\376\376\353\377\377\377" \
-  "\1\316\316\316\214::<\1\316\316\316\367\377\377\377\1\376\376\376\202" \
-  "\377\377\377\5\376\376\376\363\363\363\221\221\223;;=99;\202;;=\3::<" \
-  "99;;;=\202::<\202;;=\6::<;;=::<;;=::<\265\265\265\202\377\377\377\1\376" \
-  "\376\376\377\377\377\377\377\377\377\377\273\377\377\377\1\250\250\252" \
-  "\202::<\2""99;;;=\203::<\1;;=\202::<\1;;=\204::<\3;;=\250\250\250\376" \
-  "\376\376\205\377\377\377\1\376\376\376\347\377\377\377\1\316\316\316" \
-  "\214::<\1\316\316\316\373\377\377\377\5\376\376\376\377\377\377\300\300" \
-  "\300FFH;;=\202::<\1;;=\202::<\3;;=::<;;=\202::<\2;;=::<\202;;=\4\205" \
-  "\205\207\376\376\376\377\377\377\376\376\376\377\377\377\377\377\377" \
-  "\377\377\267\377\377\377\3\376\376\376\364\364\364\205\205\207\202::" \
-  "<\202;;=\15""99;;;=::<;;=::<;;=::<99;;;=99;;;=__a\331\331\331\357\377" \
-  "\377\377\1\316\316\316\214::<\1\316\316\316\366\377\377\377\1\376\376" \
-  "\376\203\377\377\377\1\376\376\376\203\377\377\377\2\363\363\363kkm\215" \
-  "::<\4;;=99;__a\363\363\363\202\377\377\377\1\376\376\376\377\377\377" \
-  "\377\377\377\377\377\265\377\377\377\4\347\347\351__a::<;;=\203::<\1" \
-  ";;=\202::<\1;;=\203::<\1;;=\202::<\2\221\221\223\363\363\363\360\377" \
-  "\377\377\1\316\316\316\214::<\1\316\316\316\364\377\377\377\1\376\376" \
-  "\376\203\377\377\377\1\376\376\376\207\377\377\377\2\251\251\253;;=\203" \
-  "::<\1;;=\203::<\1;;=\203::<\203;;=\3FFH\332\332\332\376\376\376\377\377" \
-  "\377\377\377\377\377\377\265\377\377\377\4\331\331\331FFH::<;;=\203:" \
-  ":<\1;;=\202::<\1;;=\205::<\2FFH\302\302\302\205\377\377\377\7\376\376" \
-  "\376\377\377\377\376\376\376\377\377\377\376\376\376\377\377\377\376" \
-  "\376\376\346\377\377\377\1\316\316\316\214::<\1\316\316\316\377\377\377" \
-  "\377\202\377\377\377\2\332\332\332SSU\203::<\1;;=\203::<\12""99;;;=:" \
-  ":<99;::<;;=99;;;=\266\266\266\376\376\376\377\377\377\377\377\377\377" \
-  "\377\263\377\377\377\1\265\265\265\202::<\1;;=\205::<\202;;=\202::<\1" \
-  ";;=\202::<\2__a\346\346\350\203\377\377\377\1\376\376\376\357\377\377" \
-  "\377\1\316\316\316\214::<\1\316\316\316\377\377\377\377\203\377\377\377" \
-  "\2\363\363\363\204\204\204\202::<\1;;=\203::<\1;;=\205::<\1;;=\202::" \
-  "<\1\221\221\221\377\377\377\377\377\377\377\377\262\377\377\377\4\235" \
-  "\235\237;;=::<;;=\203::<\1;;=\206::<\3;;=::<\222\222\222\202\377\377" \
-  "\377\1\376\376\376\362\377\377\377\1\316\316\316\214::<\1\316\316\316" \
-  "\377\377\377\377\205\377\377\377\3\265\265\265:::;;=\206::<\5;;=::<;" \
-  ";=::<;;=\202::<\2\204\204\206\363\363\363\212\377\377\377\1\376\376\376" \
-  "\377\377\377\377\377\377\377\377\236\377\377\377\1\376\376\376\202\377" \
-  "\377\377\4\376\376\376\377\377\377\376\376\377\204\204\206\206::<\12" \
-  ";;=::<;;=::<;;=::<;;=::<FFH\301\301\301\366\377\377\377\1\316\316\316" \
-  "\214::<\1\316\316\316\377\377\377\377\206\377\377\377\4\333\333\333S" \
-  "SU::<;;=\205::<\4;;=::<;;=::<\202;;=\3::<__a\364\364\364\202\377\377" \
-  "\377\1\376\376\376\205\377\377\377\1\376\376\376\202\377\377\377\1\376" \
-  "\376\376\377\377\377\377\377\377\377\377\236\377\377\377\4\376\376\376" \
-  "\377\377\377\363\363\365__a\203::<\10""99;;;=::<;;=99;;;=99;;;=\203:" \
-  ":<\2__a\332\332\332\203\377\377\377\1\376\376\376\363\377\377\377\1\316" \
-  "\316\316\214::<\1\316\316\316\377\377\377\377\207\377\377\377\7\363\363" \
-  "\363kkm;;=::<;;=::<;;=\204::<\202;;=\10""99;;;=::<SSU\332\332\332\376" \
-  "\376\376\377\377\377\376\376\376\205\377\377\377\1\376\376\376\377\377" \
-  "\377\377\377\377\377\377\236\377\377\377\1\376\376\376\202\377\377\377" \
-  "\2\346\346\350__a\202::<\4;;=::<;;=99;\204::<\1;;=\203::<\3xxz\362\362" \
-  "\362\377\377\377\202\376\376\376\365\377\377\377\1\316\316\316\214::" \
-  "<\1\316\316\316\377\377\377\377\210\377\377\377\5\376\376\376\234\234" \
-  "\234;;=::<;;=\202::<\14;;=::<;;=99;;;=::<;;=::<;;=FFH\332\332\332\376" \
-  "\376\376\203\377\377\377\1\376\376\376\203\377\377\377\3\376\376\376" \
-  "\377\377\377\376\376\376\377\377\377\377\377\377\377\377\235\377\377" \
-  "\377\4\332\332\332FFH::<;;=\205::<\1;;=\205::<\2;;=\234\234\234\372\377" \
-  "\377\377\1\316\316\316\214::<\1\316\316\316\377\377\377\377\212\377\377" \
-  "\377\2\300\300\300FFH\203::<\1""99;\202::<\2;;=99;\203::<\4;;=::<FFH" \
-  "\266\266\266\205\377\377\377\1\376\376\376\202\377\377\377\1\376\376" \
-  "\376\377\377\377\377\377\377\377\377\235\377\377\377\3\332\332\332FF" \
-  "H;;=\205::<\1;;=\202::<\1""99;\203::<\6FFH\301\301\301\377\377\377\376" \
-  "\376\376\377\377\377\376\376\376\207\377\377\377\1\376\376\376\357\377" \
-  "\377\377\1\316\316\316\214::<\1\316\316\316\377\377\377\377\211\377\377" \
-  "\377\4\376\376\376\377\377\377\331\331\331SSU\204::<\6""99;::<;;=::<" \
-  ";;=::<\202;;=\202::<\1\266\266\270\203\377\377\377\1\376\376\376\377" \
-  "\377\377\377\377\377\377\377\240\377\377\377\2\265\265\265EEG\202::<" \
-  "\6;;=::<;;=::<;;=99;\203::<\4;;=::<SSU\332\332\332\203\377\377\377\1" \
-  "\376\376\376\207\377\377\377\1\376\376\376\360\377\377\377\1\316\316" \
-  "\316\214::<\1\316\316\316\377\377\377\377\212\377\377\377\15\376\376" \
-  "\376\377\377\377\363\363\363__a::<;;=99;;;=::<99;;;=::<;;=\202::<\4;" \
-  ";=99;;;=\250\250\252\204\377\377\377\1\376\376\376\377\377\377\377\377" \
-  "\377\377\377\235\377\377\377\5\265\265\265::<;;=::<;;=\202::<\202;;=" \
-  "\2::<;;=\204::<\2__a\364\364\364\206\377\377\377\1\376\376\376\366\377" \
-  "\377\377\1\316\316\316\214::<\1\316\316\316\377\377\377\377\211\377\377" \
-  "\377\1\376\376\376\204\377\377\377\2\204\204\20699;\204::<\1;;=\204:" \
-  ":<\5""99;;;=99;::<\204\204\204\377\377\377\377\377\377\377\377\232\377" \
-  "\377\377\1\376\376\376\205\377\377\377\2\265\265\267;;=\211::<\1;;=\203" \
-  "::<\1\205\205\205\377\377\377\377\1\316\316\316\214::<\1\316\316\316" \
-  "\377\377\377\377\215\377\377\377\12\376\376\376\377\377\377\250\250\250" \
-  "::<;;=::<99;;;=::<;;=\202::<\3;;=::<99;\202::<\1\205\205\207\212\377" \
-  "\377\377\1\376\376\376\377\377\377\377\377\377\377\377\223\377\377\377" \
-  "\1\265\265\267\203::<\202;;=\1""99;\204::<\5;;=::<;;=::<\235\235\237" \
-  "\377\377\377\377\2\377\377\377\316\316\316\214::<\1\316\316\316\377\377" \
-  "\377\377\216\377\377\377\3\376\376\376\377\377\377\265\265\267\202::" \
-  "<\3;;=::<;;=\205::<\1;;=\203::<\1\204\204\204\210\377\377\377\1\376\376" \
-  "\376\202\377\377\377\1\376\376\376\377\377\377\377\377\377\377\377\220" \
-  "\377\377\377\6\234\234\236::<;;=::<;;=99;\204::<\1;;=\204::<\1\265\265" \
-  "\265\377\377\377\377\202\377\377\377\1\316\316\316\214::<\1\316\316\316" \
-  "\377\377\377\377\215\377\377\377\1\376\376\376\203\377\377\377\2\334" \
-  "\334\334FFH\207::<\202;;=\203::<\3;;=\204\204\206\376\376\376\207\377" \
-  "\377\377\1\376\376\376\377\377\377\377\377\377\377\377\216\377\377\377" \
-  "\11\376\376\376\377\377\377\376\376\376\204\204\206::<99;;;=::<;;=\204" \
-  "::<\6;;=99;;;=::<FFH\301\301\301\377\377\377\377\203\377\377\377\1\316" \
-  "\316\316\214::<\1\316\316\316\377\377\377\377\215\377\377\377\1\376\376" \
-  "\376\202\377\377\377\202\376\376\376\3\332\332\332FFH::<\202;;=\203:" \
-  ":<\3;;=99;;;=\204::<\2\205\205\207\376\376\376\203\377\377\377\1\376" \
-  "\376\376\203\377\377\377\3\376\376\376\377\377\377\376\376\376\377\377" \
-  "\377\377\377\377\377\377\212\377\377\377\7\376\376\376\377\377\377\376" \
-  "\376\376\204\204\20499;::<;;=\202::<\1""99;\205::<\4;;=::<GGI\332\332" \
-  "\334\377\377\377\377\204\377\377\377\1\316\316\316\214::<\1\316\316\316" \
-  "\377\377\377\377\217\377\377\377\6\376\376\376\377\377\377\376\376\376" \
-  "\377\377\377\362\362\362__a\203::<\202;;=\11""99;;;=::<99;;;=::<;;=:" \
-  ":<\204\204\204\205\377\377\377\1\376\376\376\202\377\377\377\1\376\376" \
-  "\376\377\377\377\377\377\377\377\377\215\377\377\377\1\204\204\204\202" \
-  "::<\1;;=\207::<\1<<>\202::<\2FFH\331\331\333\377\377\377\377\205\377" \
-  "\377\377\1\316\316\316\214::<\1\316\316\316\377\377\377\377\216\377\377" \
-  "\377\1\376\376\376\203\377\377\377\4\376\376\376\377\377\377\363\363" \
-  "\363__a\204::<\2;;=99;\206::<\2;;=\204\204\204\203\377\377\377\1\376" \
-  "\376\376\377\377\377\377\377\377\377\377\220\377\377\377\1\204\204\204" \
-  "\205::<\1;;=\203::<\1;;=\203::<\4__a\363\363\363\377\377\377\376\376" \
-  "\376\377\377\377\377\204\377\377\377\1\316\316\316\214::<\1\316\316\316" \
-  "\377\377\377\377\224\377\377\377\4\376\376\376\363\363\363xxx::<\202" \
-  ";;=\202::<\1;;=\203::<\1;;=\203::<\1\205\205\207\204\377\377\377\1\376" \
-  "\376\376\377\377\377\377\377\377\377\377\215\377\377\377\1\250\250\250" \
-  "\205::<\1;;=\203::<\12;;=99;;;=::<__a\363\363\365\377\377\377\376\376" \
-  "\376\377\377\377\376\376\376\377\377\377\377\203\377\377\377\1\316\316" \
-  "\316\214::<\1\316\316\316\377\377\377\377\227\377\377\377\5\204\204\204" \
-  "::<;;=::<;;=\204::<\1""99;\204::<\1\204\204\204\377\377\377\377\377\377" \
-  "\377\377\213\377\377\377\1\376\376\376\202\377\377\377\4\376\376\376" \
-  "\377\377\377\265\265\267;;=\212::<\4;;=::<__a\363\363\363\217\377\377" \
-  "\377\1\376\376\376\367\377\377\377\1\316\316\316\214::<\1\316\316\316" \
-  "\376\377\377\377\202\377\377\375\3\377\376\377\377\377\377\376\377\375" \
-  "\224\377\377\377\3\204\204\206::<;;=\211::<\7""99;::<\203\203\205\377" \
-  "\377\377\376\376\376\377\377\377\376\376\376\205\377\377\377\1\376\376" \
-  "\376\202\377\377\377\202\376\376\376\377\377\377\377\377\377\377\377" \
-  "\2\264\264\266;;=\202::<\202;;=\1""99;\207::<\2__a\363\363\365\217\377" \
-  "\377\377\3\376\376\376\377\377\377\376\376\376\366\377\377\377\1\316" \
-  "\316\316\214::<\1\316\316\316\375\377\377\377\5\377\377\375\377\376\377" \
-  "\377\375\377\377\377\375\377\377\377\202\377\376\377\221\377\377\377" \
-  "\1\376\376\376\202\377\377\377\1\204\204\206\203::<\1;;=\202::<\2;;=" \
-  "::<\202;;=\202::<\3;;=\204\204\204\376\376\376\211\377\377\377\3\376" \
-  "\376\376\377\377\377\376\376\376\377\377\377\377\375\377\377\377\7\376" \
-  "\376\376\264\264\266;;=99;::<;;=99;\204::<\1;;=\203::<\2aac\363\363\363" \
-  "\221\377\377\377\1\376\376\376\367\377\377\377\1\316\316\316\214::<\1" \
-  "\316\316\316\375\377\377\377\202\376\376\376\203\377\377\377\202\376" \
-  "\377\377\222\377\377\377\10\376\376\376\377\377\377\376\376\376\204\204" \
-  "\206::<;;=::<;;=\203::<\202;;=\202::<\6""99;;;=\205\205\207\376\376\376" \
-  "\377\377\377\376\376\376\203\377\377\377\202\376\376\376\202\377\377" \
-  "\377\1\376\376\376\377\377\377\377\375\377\377\377\3\376\376\376\302" \
-  "\302\304;;=\203::<\1;;=\204::<\6;;=99;;;=::<aac\362\362\362\223\377\377" \
-  "\377\1\376\376\376\366\377\377\377\1\316\316\316\214::<\1\316\316\316" \
-  "\374\377\377\377\6\375\377\376\377\377\375\377\376\377\376\377\377\376" \
-  "\376\376\377\377\375\202\377\376\377\225\377\377\377\2\376\376\376\204" \
-  "\204\206\206::<\1""99;\203::<\1;;=\202::<\1\251\251\253\204\377\377\377" \
-  "\1\376\376\376\377\377\377\377\377\377\377\377\203\377\377\377\4\332" \
-  "\332\332FFH::<;;=\202::<\1""99;\205::<\4;;=::<__a\363\363\365\202\377" \
-  "\377\377\1\376\376\376\377\377\377\377\211\377\377\377\1\316\316\316" \
-  "\214::<\1\316\316\316\374\377\377\377\5\376\377\377\376\376\376\377\376" \
-  "\377\377\377\375\376\377\375\202\376\377\377\1\377\377\375\221\377\377" \
-  "\377\3\376\376\376\377\377\377\376\376\376\203\377\377\377\2\204\204" \
-  "\206;;=\205::<\1;;=\203::<\7;;=::<;;=\265\265\265\376\376\376\377\377" \
-  "\377\376\376\376\202\377\377\377\5\376\376\376\377\377\377\376\376\376" \
-  "\377\377\377\376\376\376\377\377\377\377\373\377\377\377\6\331\331\331" \
-  "GGI::<;;=::<;;=\205::<\1<<>\202::<\2__a\363\363\365\202\377\377\377\1" \
-  "\376\376\376\213\377\377\377\1\376\376\376\375\377\377\377\1\316\316" \
-  "\316\214::<\1\316\316\316\374\377\377\377\7\377\376\377\376\377\377\376" \
-  "\376\374\377\376\377\377\377\375\376\377\377\377\377\375\226\377\377" \
-  "\377\1\376\376\376\202\377\377\377\1\203\203\203\214::<\2;;=\265\265" \
-  "\265\206\377\377\377\1\376\376\376\377\377\377\377\374\377\377\377\4" \
-  "\364\364\364GGI99;;;=\206::<\1;;=\203::<\2__a\363\363\363\205\377\377" \
-  "\377\1\376\376\376\212\377\377\377\1\363\363\363\203\377\377\377\1\376" \
-  "\376\376\370\377\377\377\1\316\316\316\214::<\1\316\316\316\374\377\377" \
-  "\377\10\377\377\375\377\376\377\377\377\377\377\377\375\377\376\377\370" \
-  "\373\362\370\373\364\377\376\377\220\377\377\377\1\376\376\376\202\377" \
-  "\377\377\1\376\376\376\202\377\377\377\1\376\376\376\202\377\377\377" \
-  "\1\204\204\204\203::<\1;;=\210::<\2FFH\332\332\334\204\377\377\377\1" \
-  "\376\376\376\377\377\377\377\374\377\377\377\3\363\363\363___;;=\202" \
-  "::<\1;;=\204::<\6;;=99;;;=::<__a\363\363\365\220\377\377\377\3\265\265" \
-  "\265FFF\333\333\333\373\377\377\377\1\316\316\316\214::<\1\316\316\316" \
-  "\376\377\377\377\6\374\377\377\377\377\375\371\374\365\242\320c\240\322" \
-  "c\371\372\362\221\377\377\377\1\376\376\376\210\377\377\377\2\203\203" \
-  "\203;;=\202::<\1;;=\203::<\1;;=\203::<\3;;=FFH\333\333\333\202\377\377" \
-  "\377\1\376\376\376\377\377\377\377\371\377\377\377\1\376\376\376\203" \
-  "\377\377\377\2kkm::<\202;;=\1""99;\205::<\202;;=\3::<__a\363\363\363" \
-  "\220\377\377\377\5\265\265\267::<;;=FFH\332\332\332\206\377\377\377\3" \
-  "\376\376\376\377\377\377\376\376\376\361\377\377\377\1\316\316\316\213" \
-  "::<\2;;=\316\316\316\365\377\377\377\22\376\376\377\377\377\375\377\377" \
-  "\377\377\377\375\377\377\377\377\376\377\377\377\375\377\377\377\376" \
-  "\376\377\377\377\377\371\374\365\242\320c\215\307\77\215\305@\242\322" \
-  "e\372\373\365\376\377\375\377\376\377\230\377\377\377\3\205\205\207:" \
-  ":<;;=\206::<\1;;=\202::<\4;;=SSU\363\363\365\376\376\376\377\377\377" \
-  "\377\374\377\377\377\13\376\376\376\204\204\204::<;;=99;::<;;=::<;;=" \
-  "::<;;=\203::<\3__a\364\364\366\376\376\376\217\377\377\377\1\265\265" \
-  "\267\203::<\3;;=FFF\332\332\332\206\377\377\377\1\376\376\376\361\377" \
-  "\377\377\2\376\376\376\317\317\317\212::<\6;;=;;;\316\316\316\376\376" \
-  "\376\377\377\377\376\376\376\361\377\377\377\6\376\376\377\377\376\377" \
-  "\375\376\377\376\377\377\377\377\375\375\377\376\202\377\377\377\17\376" \
-  "\376\376\377\377\377\371\372\364\240\322a\215\305@\212\307>\215\307\77" \
-  "\215\305>\242\320c\370\372\365\377\377\377\377\376\377\376\377\375\377" \
-  "\377\375\377\376\377\225\377\377\377\5kkm::<;;=99;;;=\210::<\4__a\364" \
-  "\364\364\376\376\376\377\377\377\202\376\376\376\377\377\377\377\363" \
-  "\377\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377\377\4" \
-  "\250\250\252::<;;=99;\202;;=\205::<\202;;=\3FFH\345\345\345\376\376\376" \
-  "\217\377\377\377\4\264\264\266;;=::<;;=\203::<\2GGI\332\332\332\203\377" \
-  "\377\377\1\376\376\376\356\377\377\377\1\376\376\376\205\377\377\377" \
-  "\2\315\315\315;;;\211::<\3;;;:::\315\315\315\202\377\377\377\1\376\376" \
-  "\376\361\377\377\377\23\377\377\375\375\376\377\376\377\377\376\377\375" \
-  "\377\374\377\377\377\375\375\377\376\377\377\377\377\377\375\371\372" \
-  "\364\242\321g\215\306A\212\307>\215\306A\212\306@\214\305@\212\306B\241" \
-  "\322_\367\372\361\204\377\377\377\1\377\377\375\220\377\377\377\1\376" \
-  "\376\376\203\377\377\377\3\363\363\363__a99;\202::<\6;;=::<99;;;=99;" \
-  ";;=\203::<\1\205\205\207\204\377\377\377\1\376\376\376\377\377\377\377" \
-  "\362\377\377\377\1\376\376\376\202\377\377\377\22\376\376\376\265\265" \
-  "\267::<99;;;=::<;;=99;;;=::<;;=::<;;=::<FFH\331\331\331\377\377\377\376" \
-  "\376\376\216\377\377\377\1\265\265\267\203::<\1;;=\202::<\4;;=::<GGI" \
-  "\332\332\332\210\377\377\377\1\376\376\376\353\377\377\377\1\376\376" \
-  "\376\221\377\377\377\1\376\376\376\363\377\377\377\17\376\377\377\376" \
-  "\377\375\377\375\376\375\377\376\377\377\375\377\377\377\377\376\377" \
-  "\367\374\365\240\320b\215\307=\213\305=\215\306A\215\305>\214\305@\214" \
-  "\306>\202\214\305@\4\241\321a\371\374\365\376\376\377\377\377\375\202" \
-  "\376\377\377\221\377\377\377\1\376\376\376\203\377\377\377\3\362\362" \
-  "\362``b99;\205::<\1;;=\203::<\6;;=99;\235\235\237\376\376\376\377\377" \
-  "\377\376\376\376\377\377\377\377\366\377\377\377\2\332\332\332FFH\202" \
-  ";;=\4""99;;;=::<;;=\205::<\2FFH\332\332\334\202\377\377\377\3\376\376" \
-  "\376\377\377\377\376\376\376\213\377\377\377\4\266\266\26699;::<;;=\202" \
-  "::<\1;;=\202::<\4;;=::<FFF\332\332\332\203\377\377\377\1\376\376\376" \
-  "\202\377\377\377\1\376\376\376\375\377\377\377\1\376\376\376\363\377" \
-  "\377\377\202\377\377\375\3\377\374\377\375\377\376\376\377\377\202\377" \
-  "\377\377\21\370\373\364\241\321c\216\306\77\212\306@\214\306>\215\305" \
-  "@\212\306@\213\310=\214\306<\216\306\77\214\304=\214\306>\241\321c\372" \
-  "\375\362\376\376\376\377\376\377\376\376\374\220\377\377\377\2\376\376" \
-  "\376\377\377\377\203\376\376\376\4\377\377\377\364\364\364FFH;;=\202" \
-  "::<\1;;=\202::<\1;;=\203::<\3;;=::<\265\265\265\377\377\377\377\367\377" \
-  "\377\377\4\362\362\362SSU::<;;=\205::<\1""99;\202;;=\3::<;;=\265\265" \
-  "\267\216\377\377\377\3\376\376\376\377\377\377\265\265\265\202::<\5;" \
-  ";=99;;;=::<;;=\204::<\4;;=FFH\332\332\332\376\376\376\205\377\377\377" \
-  "\1\376\376\376\355\377\377\377\1\376\376\376\214\377\377\377\1\376\376" \
-  "\376\366\377\377\377\1\375\377\376\202\377\377\375\24\377\377\377\376" \
-  "\376\376\373\373\363\243\322b\213\307A\214\306>\215\305@\214\305@\212" \
-  "\307>\214\306>\215\305>\213\307A\214\305@\216\310@\214\306>\215\305>" \
-  "\242\320c\366\373\364\375\377\376\377\376\377\221\377\377\377\1\376\376" \
-  "\376\204\377\377\377\3\376\376\376\333\333\333EEG\202;;=\2::<;;=\207" \
-  "::<\3GGI\332\332\332\376\376\376\377\377\377\377\365\377\377\377\1__" \
-  "a\205::<\10;;=::<;;=::<;;=::<;;=\265\265\265\202\377\377\377\3\376\376" \
-  "\376\377\377\377\376\376\376\213\377\377\377\1\266\266\266\203::<\5""9" \
-  "9;<<>::<;;=::<\202;;=\203::<\4;;=FFH\333\333\333\376\376\376\202\377" \
-  "\377\377\1\376\376\376\355\377\377\377\1\376\376\376\202\377\377\377" \
-  "\1\376\376\376\215\377\377\377\1\376\376\376\363\377\377\377\3\377\376" \
-  "\377\377\377\377\375\377\376\202\377\377\377\2\373\373\363\241\321d\202" \
-  "\214\306>\17\216\306=\215\305@\215\307\77\214\306>\217\304>\214\306>" \
-  "\214\305B\215\307\77\211\305A\215\306A\216\306\77\214\305@\242\322e\370" \
-  "\373\364\377\377\375\230\377\377\377\1\333\333\335\203::<\202;;=\206" \
-  "::<\3;;=FFH\363\363\363\377\377\377\377\364\377\377\377\1\204\204\206" \
-  "\203::<\1;;=\207::<\2;;=\204\204\206\220\377\377\377\1\346\346\346\204" \
-  "::<\1;;=\203::<\1;;=\202::<\202;;=\203::<\2FFH\332\332\332\357\377\377" \
-  "\377\3\376\376\376\377\377\377\376\376\376\377\377\377\377\204\377\377" \
-  "\377\1\377\377\375\202\377\377\377\17\377\376\377\370\373\364\243\322" \
-  "b\214\306>\213\310\77\212\307>\214\306>\215\306C\212\307>\214\306<\213" \
-  "\310\77\214\305@\214\306<\214\306>\216\306\77\203\214\306>\3\214\306" \
-  "<\265\334\211\376\376\376\222\377\377\377\1\376\376\376\205\377\377\377" \
-  "\4\376\376\377\265\265\267::<;;=\212::<\1___\377\377\377\377\363\377" \
-  "\377\377\1\265\265\267\204::<\1;;=\206::<\2;;=\203\203\203\222\377\377" \
-  "\377\2\265\265\265;;=\203::<\1;;=\205::<\1;;=\204::<\3;;=FFH\332\332" \
-  "\332\206\377\377\377\3\376\376\376\377\377\377\376\376\376\377\377\377" \
-  "\377\345\377\377\377\10\376\376\377\377\377\375\377\377\377\377\377\375" \
-  "\377\377\377\377\376\377\377\377\375\376\377\377\202\377\377\377\6\370" \
-  "\373\362\243\322b\211\307B\213\310=\214\305@\214\306<\202\215\305@\4" \
-  "\214\306<\214\305@\214\306<\215\307\77\202\214\306>\6\212\307>\214\306" \
-  ">\215\307\77\214\305@\244\317c\367\375\361\233\377\377\377\3\234\234" \
-  "\236::<99;\211::<\2;;=\204\204\206\377\377\377\377\360\377\377\377\13" \
-  "\376\376\376\332\332\33299;::<99;;;=::<99;;;=::<;;=\202::<\3;;=^^`\364" \
-  "\364\364\223\377\377\377\12\265\265\267;;=::<;;=99;;;=::<;;=::<;;=\202" \
-  "::<\1;;=\203::<\3;;=FFF\332\332\332\206\377\377\377\1\376\376\376\377" \
-  "\377\377\377\345\377\377\377\6\376\376\377\377\376\377\375\376\377\376" \
-  "\377\377\377\377\375\375\377\376\203\377\377\377\27\377\377\375\372\373" \
-  "\366\241\321a\217\304@\212\307<\214\306>\215\305>\215\305@\213\310=\212" \
-  "\306@\214\306>\214\305B\215\307\77\215\305>\215\306A\212\307>\214\306" \
-  ">\215\307\77\214\306>\242\322b\370\373\362\376\376\377\377\375\376\233" \
-  "\377\377\377\1\204\204\206\203::<\13;;=::<;;=::<;;=::<;;=::<;;=\266\266" \
-  "\266\376\376\376\203\377\377\377\1\376\376\376\377\377\377\377\352\377" \
-  "\377\377\2\363\363\363TTV\202::<\3;;=99;;;=\204::<\4;;=99;FFH\363\363" \
-  "\363\224\377\377\377\7\376\376\376\265\265\265;;=::<;;=::<;;=\203::<" \
-  "\1;;=\203::<\1;;=\203::<\2GGI\332\332\332\203\377\377\377\1\376\376\376" \
-  "\377\377\377\377\347\377\377\377\7\377\377\375\375\376\377\376\377\377" \
-  "\376\377\375\377\374\377\377\377\375\375\377\376\202\377\377\377\5\372" \
-  "\373\366\240\320b\215\307\77\212\306@\215\305>\202\214\305@\20\215\305" \
-  "@\212\306@\214\305D\216\306\77\214\306>\215\307\77\214\306>\212\306@" \
-  "\214\306>\215\307\77\215\305@\242\320c\370\373\362\377\377\373\377\376" \
-  "\377\377\377\375\232\377\377\377\3\376\376\376\377\377\377^^`\202;;=" \
-  "\205::<\1""99;\202;;=\5::<;;=\332\332\332\377\377\377\376\376\376\377" \
-  "\377\377\377\347\377\377\377\1\376\376\376\204\377\377\377\1lln\204:" \
-  ":<\202;;=\203::<\6;;=99;GGI\332\332\332\377\377\377\376\376\376\225\377" \
-  "\377\377\2\264\264\264;;=\202::<\2""99;;;=\202::<\3""99;;;=::<\202;;" \
-  "=\202::<\4;;=::<GGI\332\332\332\210\377\377\377\1\376\376\376\377\377" \
-  "\377\377\342\377\377\377\37\376\377\377\376\377\375\377\375\376\375\377" \
-  "\376\377\377\375\377\377\377\377\376\377\370\373\362\241\321a\215\307" \
-  "\77\215\307=\214\305@\214\306>\212\307<\214\306>\214\306<\214\306>\216" \
-  "\306\77\215\305<\212\307>\213\307A\215\305>\212\307>\215\307\77\214\306" \
-  ">\242\321a\373\374\364\377\377\377\376\377\377\376\376\376\376\377\377" \
-  "\234\377\377\377\2\364\364\364RRT\202::<\4""99;;;=::<;;=\205::<\3SSU" \
-  "\362\362\362\377\377\377\202\376\376\376\377\377\377\377\351\377\377" \
-  "\377\1\234\234\236\204::<\1;;=\203::<\1;;=\203::<\1\265\265\267\231\377" \
-  "\377\377\2\265\265\267;;=\203::<\2""99;;;=\202::<\1;;=\202::<\1;;=\202" \
-  "::<\4;;=::<FFF\332\332\332\203\377\377\377\1\376\376\376\202\377\377" \
-  "\377\1\376\376\376\377\377\377\377\342\377\377\377\202\377\377\375\3" \
-  "\377\374\377\375\377\376\376\377\377\202\377\377\377\25\370\373\364\243" \
-  "\322b\217\304@\212\306@\214\305@\215\305>\212\307>\212\306@\214\305B" \
-  "\214\305@\214\305B\214\306>\212\307>\212\310\77\214\306>\217\304@\214" \
-  "\306>\214\305@\242\322b\370\373\362\377\377\377\202\377\376\377\1\377" \
-  "\377\375\235\377\377\377\3\376\376\376\332\332\334GGI\202;;=\6::<;;=" \
-  "99;;;=::<;;=\203::<\1yyy\202\376\376\376\202\377\377\377\1\376\376\376" \
-  "\377\377\377\377\345\377\377\377\4\376\376\376\317\317\317::<;;=\202" \
-  "::<\3;;=99;;;=\204::<\6;;=\221\221\223\377\377\377\376\376\376\377\377" \
-  "\377\376\376\376\226\377\377\377\3\376\376\376\265\265\267;;=\202::<" \
-  "\2;;=99;\205::<\1;;=\204::<\4;;=FFH\332\332\332\376\376\376\205\377\377" \
-  "\377\1\376\376\376\377\377\377\377\342\377\377\377\1\375\377\376\202" \
-  "\377\377\375\34\377\377\377\376\376\376\373\373\363\243\322b\211\307" \
-  "B\212\307<\215\305>\214\306>\212\307>\214\305@\217\304>\212\307<\214" \
-  "\306<\214\306>\215\307\77\213\307A\214\306>\215\305@\215\307\77\212\307" \
-  ">\244\317c\370\373\362\377\377\373\376\377\377\377\376\377\375\376\377" \
-  "\377\377\375\377\376\377\236\377\377\377\4\265\265\267::<;;=99;\202;" \
-  ";=\205::<\202;;=\1\250\250\250\202\377\377\377\1\376\376\376\377\377" \
-  "\377\377\343\377\377\377\1\376\376\376\202\377\377\377\3\363\363\363" \
-  "FFH;;=\202::<\5;;=::<;;=::<99;\202;;=\2::<kkm\205\377\377\377\1\376\376" \
-  "\376\227\377\377\377\1\265\265\265\204::<\6;;=::<;;=::<;;=::<\202;;=" \
-  "\203::<\4;;=FFH\333\333\333\376\376\376\202\377\377\377\1\376\376\376" \
-  "\377\377\377\377\343\377\377\377\3\377\376\377\377\377\377\375\377\376" \
-  "\202\377\377\377\11\373\373\363\241\321d\214\306>\213\310=\214\306>\214" \
-  "\305@\213\310=\212\306@\217\304>\202\215\307=\14\214\306>\215\305>\214" \
-  "\306>\215\305>\217\304@\215\307\77\215\307=\242\320c\367\375\361\376" \
-  "\376\377\377\376\377\376\376\376\202\377\377\375\2\374\377\377\377\376" \
-  "\377\234\377\377\377\1\376\376\376\202\377\377\377\10\221\221\221::<" \
-  ";;=99;::<;;=::<;;=\205::<\2\333\333\333\376\376\376\377\377\377\377\347" \
-  "\377\377\377\1kkk\202::<\1;;=\205::<\1;;=\202::<\2RRT\363\363\365\236" \
-  "\377\377\377\1\265\265\267\203::<\2""99;;;=\203::<\1;;=\202::<\202;;" \
-  "=\203::<\2FFH\332\332\332\377\377\377\377\346\377\377\377\1\377\377\375" \
-  "\202\377\377\377\32\377\376\377\370\373\364\243\322b\214\306>\213\310" \
-  "\77\214\305@\215\305>\215\305@\214\306>\214\305B\212\307<\215\307=\214" \
-  "\305B\214\306>\215\306A\212\306@\212\307>\214\306>\212\307<\244\317c" \
-  "\370\373\364\377\377\377\377\375\376\377\377\375\376\377\377\377\377" \
-  "\377\202\377\376\377\241\377\377\377\2kkm::<\202;;=\1""99;\204::<\203" \
-  ";;=\2SSU\364\364\364\377\377\377\377\336\377\377\377\3\376\376\376\377" \
-  "\377\377\376\376\376\204\377\377\377\2\376\376\376\250\250\252\202::" \
-  "<\1;;=\210::<\2FFH\333\333\333\202\377\377\377\1\376\376\376\235\377" \
-  "\377\377\2\265\265\265;;=\203::<\1;;=\205::<\1;;=\204::<\3;;=FFH\332" \
-  "\332\332\206\377\377\377\3\376\376\376\377\377\377\376\376\376\243\377" \
-  "\377\377\4\376\377\377\377\377\375\377\376\377\376\376\377\202\377\377" \
-  "\377\2\376\377\375\376\377\377\230\377\377\377\10\376\377\377\377\376" \
-  "\377\376\377\377\376\377\375\376\376\376\376\377\377\377\377\377\377" \
-  "\376\377\231\377\377\377\7\377\376\377\376\376\374\376\377\377\377\377" \
-  "\375\374\377\377\376\377\377\377\376\377\231\377\377\377\17\375\377\374" \
-  "\377\377\375\377\377\377\377\376\377\376\377\377\377\376\377\377\377" \
-  "\377\376\377\377\376\376\374\377\377\377\377\377\373\377\377\377\376" \
-  "\377\377\377\377\377\377\377\375\220\377\377\377\4\377\377\373\377\377" \
-  "\377\377\377\375\377\377\377\202\376\377\377\2\377\377\375\377\377\373" \
-  "\251\377\377\377\10\376\376\377\377\377\375\377\377\377\377\377\375\377" \
-  "\377\377\377\376\377\377\377\375\376\377\377\202\377\377\377\6\370\373" \
-  "\362\243\322b\211\307B\213\310=\214\305@\214\306<\202\215\305@\4\214" \
-  "\306<\214\305@\214\306<\215\307\77\202\214\306>\6\212\307>\214\306>\215" \
-  "\307\77\214\305@\244\317c\367\375\361\251\377\377\377\6\363\363\363T" \
-  "TT::<;;=::<;;=\206::<\2;;=www\204\377\377\377\1\376\376\376\377\377\377" \
-  "\377\340\377\377\377\2\332\332\332;;=\203::<\3;;=99;;;=\203::<\3;;=:" \
-  ":<\265\265\267\204\377\377\377\1\376\376\376\235\377\377\377\12\265\265" \
-  "\267;;=::<;;=99;;;=::<;;=::<;;=\202::<\1;;=\203::<\3;;=FFF\332\332\332" \
-  "\206\377\377\377\1\376\376\376\244\377\377\377\202\377\377\375\1\377" \
-  "\377\377\202\376\377\375\3\376\376\377\377\377\377\377\376\377\230\377" \
-  "\377\377\3\376\377\375\377\377\377\377\377\373\202\377\376\377\2\377" \
-  "\377\377\376\376\376\231\377\377\377\10\376\377\373\376\375\377\377\377" \
-  "\375\377\376\377\377\375\377\377\377\373\377\376\377\377\377\375\230" \
-  "\377\377\377\12\377\376\377\377\377\377\377\375\376\376\377\377\376\377" \
-  "\372\376\377\377\377\377\377\376\377\375\377\376\377\377\377\375\203" \
-  "\377\377\377\202\376\377\375\1\375\376\377\227\377\377\377\1\377\374" \
-  "\377\250\377\377\377\6\376\376\377\377\376\377\375\376\377\376\377\377" \
-  "\377\377\375\375\377\376\203\377\377\377\27\377\377\375\372\373\366\241" \
-  "\321a\217\304@\212\307<\214\306>\215\305>\215\305@\213\310=\212\306@" \
-  "\214\306>\214\305B\215\307\77\215\305>\215\306A\212\307>\214\306>\215" \
-  "\307\77\214\306>\242\322b\370\373\362\376\376\377\377\375\376\251\377" \
-  "\377\377\2\331\331\331;;=\206::<\1;;=\203::<\2;;=\265\265\265\204\377" \
-  "\377\377\1\376\376\376\202\377\377\377\1\376\376\376\377\377\377\377" \
-  "\322\377\377\377\1\376\376\376\203\377\377\377\3\376\376\376\377\377" \
-  "\377\376\376\376\202\377\377\377\2\363\363\363SSU\203::<\2;;=::<\202" \
-  ";;=\2""99;;;=\202::<\1\204\204\204\206\377\377\377\1\376\376\376\234" \
-  "\377\377\377\7\376\376\376\265\265\265;;=::<;;=::<;;=\203::<\1;;=\203" \
-  "::<\1;;=\203::<\2GGI\332\332\332\203\377\377\377\1\376\376\376\247\377" \
-  "\377\377\1\377\377\375\202\377\376\377\1\377\375\377\202\377\377\377" \
-  "\1\377\376\377\232\377\377\377\6\377\377\375\377\377\377\375\377\376" \
-  "\376\377\375\377\377\375\377\375\377\230\377\377\377\202\377\377\375" \
-  "\2\377\377\377\376\376\376\202\377\377\377\2\376\377\377\374\377\377" \
-  "\230\377\377\377\1\377\377\375\202\377\376\377\1\375\376\377\203\377" \
-  "\377\377\1\377\377\375\202\377\377\377\6\376\376\377\377\377\375\377" \
-  "\377\377\377\375\377\377\376\377\377\377\375\220\377\377\377\1\376\377" \
-  "\377\202\377\377\377\3\376\377\375\376\376\376\377\376\377\252\377\377" \
-  "\377\7\377\377\375\375\376\377\376\377\377\376\377\375\377\374\377\377" \
-  "\377\375\375\377\376\202\377\377\377\5\372\373\366\240\320b\215\307\77" \
-  "\212\306@\215\305>\202\214\305@\20\215\305@\212\306@\214\305D\216\306" \
-  "\77\214\306>\215\307\77\214\306>\212\306@\214\306>\215\307\77\215\305" \
-  "@\242\320c\370\373\362\377\377\373\377\376\377\377\377\375\252\377\377" \
-  "\377\2\250\250\25099;\204::<\12;;=99;::<;;=99;::<FFH\346\346\346\377" \
-  "\377\377\376\376\376\202\377\377\377\1\376\376\376\377\377\377\377\330" \
-  "\377\377\377\1\376\376\376\204\377\377\377\3\221\221\221::<;;=\202::" \
-  "<\5;;=::<;;=::<;;=\202::<\4___\363\363\363\377\377\377\376\376\376\202" \
-  "\377\377\377\5\376\376\376\377\377\377\376\376\376\377\377\377\376\376" \
-  "\376\234\377\377\377\2\264\264\264;;=\202::<\2""99;;;=\202::<\3""99;" \
-  ";;=::<\202;;=\202::<\4;;=::<GGI\332\332\332\210\377\377\377\1\376\376" \
-  "\376\241\377\377\377\7\376\377\377\376\376\377\377\377\377\377\377\375" \
-  "\376\377\375\375\377\376\376\377\377\230\377\377\377\3\376\376\377\376" \
-  "\377\377\376\376\377\203\377\377\377\1\376\376\374\231\377\377\377\1" \
-  "\377\376\377\202\377\377\377\202\376\377\377\1\376\376\376\232\377\377" \
-  "\377\11\376\377\377\376\376\376\377\377\377\376\377\377\377\377\377\377" \
-  "\377\375\376\377\377\376\376\377\376\377\377\202\377\377\377\5\377\377" \
-  "\375\377\377\377\377\376\377\377\377\377\376\377\377\220\377\377\377" \
-  "\10\376\376\377\377\376\377\377\377\377\376\376\376\377\376\377\377\377" \
-  "\375\377\376\377\377\377\375\251\377\377\377\37\376\377\377\376\377\375" \
-  "\377\375\376\375\377\376\377\377\375\377\377\377\377\376\377\370\373" \
-  "\362\241\321a\215\307\77\215\307=\214\305@\214\306>\212\307<\214\306" \
-  ">\214\306<\214\306>\216\306\77\215\305<\212\307>\213\307A\215\305>\212" \
-  "\307>\215\307\77\214\306>\242\321a\373\374\364\377\377\377\376\377\377" \
-  "\376\376\376\376\377\377\253\377\377\377\1yyy\205::<\3;;=::<99;\202;" \
-  ";=\3::<__a\376\376\376\377\377\377\377\335\377\377\377\1\376\376\376" \
-  "\202\377\377\377\5\301\301\301::<;;=99;;;=\207::<\2GGI\332\332\332\203" \
-  "\377\377\377\1\376\376\376\243\377\377\377\2\265\265\267;;=\203::<\2" \
-  "99;;;=\202::<\1;;=\202::<\1;;=\202::<\4;;=::<FFF\332\332\332\203\377" \
-  "\377\377\1\376\376\376\202\377\377\377\1\376\376\376\242\377\377\377" \
-  "\1\377\377\375\204\377\377\377\1\376\377\377\231\377\377\377\202\377" \
-  "\376\377\202\377\377\377\4\377\377\375\377\377\377\376\377\377\375\377" \
-  "\376\230\377\377\377\203\377\377\375\202\377\377\377\2\376\376\376\376" \
-  "\377\377\231\377\377\377\1\376\376\376\202\376\377\377\13\377\376\374" \
-  "\377\376\377\376\376\374\376\377\377\377\377\377\376\377\377\377\377" \
-  "\377\377\377\375\376\376\376\377\377\377\377\376\377\222\377\377\377" \
-  "\202\377\377\375\5\377\377\377\376\377\377\377\377\377\377\377\375\376" \
-  "\377\377\251\377\377\377\202\377\377\375\3\377\374\377\375\377\376\376" \
-  "\377\377\202\377\377\377\25\370\373\364\243\322b\217\304@\212\306@\214" \
-  "\305@\215\305>\212\307>\212\306@\214\305B\214\305@\214\305B\214\306>" \
-  "\212\307>\212\310\77\214\306>\217\304@\214\306>\214\305@\242\322b\370" \
-  "\373\362\377\377\377\202\377\376\377\1\377\377\375\254\377\377\377\4" \
-  "\363\363\363SSU;;=99;\202;;=\1""99;\204::<\3;;=::<\235\235\237\377\377" \
-  "\377\377\334\377\377\377\1\376\376\376\202\377\377\377\2\363\363\363" \
-  "GGI\202::<\7;;=::<99;::<;;=::<;;=\202::<\2\266\266\266\376\376\376\204" \
-  "\377\377\377\202\376\376\376\202\377\377\377\1\376\376\376\236\377\377" \
-  "\377\3\376\376\376\265\265\267;;=\202::<\2;;=99;\205::<\1;;=\204::<\4" \
-  ";;=FFH\332\332\332\376\376\376\205\377\377\377\1\376\376\376\240\377" \
-  "\377\377\10\376\377\375\377\375\377\377\377\375\376\377\375\377\377\377" \
-  "\377\376\377\377\377\377\376\376\374\230\377\377\377\10\374\377\377\377" \
-  "\376\374\377\377\377\376\376\374\377\376\377\376\377\377\377\377\377" \
-  "\377\376\377\230\377\377\377\3\377\377\375\377\377\377\376\377\375\203" \
-  "\377\377\377\1\377\376\377\231\377\377\377\6\377\375\377\376\376\374" \
-  "\377\377\377\377\376\377\376\377\375\377\376\377\202\377\377\377\2\377" \
-  "\376\377\377\377\377\202\376\377\377\2\376\376\377\376\377\377\222\377" \
-  "\377\377\2\377\377\375\377\375\377\202\376\377\377\4\376\376\376\376" \
-  "\377\377\375\377\374\377\375\377\251\377\377\377\1\375\377\376\202\377" \
-  "\377\375\34\377\377\377\376\376\376\373\373\363\243\322b\211\307B\212" \
-  "\307<\215\305>\214\306>\212\307>\214\305@\217\304>\212\307<\214\306<" \
-  "\214\306>\215\307\77\213\307A\214\306>\215\305@\215\307\77\212\307>\244" \
-  "\317c\370\373\362\377\377\373\376\377\377\377\376\377\375\376\377\377" \
-  "\377\375\377\376\377\252\377\377\377\5\376\376\376\377\377\377\333\333" \
-  "\33399;;;=\202::<\5;;=99;;;=99;;;=\203::<\1\332\332\334\377\377\377\377" \
-  "\330\377\377\377\1\376\376\376\205\377\377\377\1xxx\202::<\1;;=\202:" \
-  ":<\1;;=\204::<\4:::xxx\376\376\376\377\377\377\202\376\376\376\205\377" \
-  "\377\377\3\376\376\376\377\377\377\376\376\376\237\377\377\377\1\265" \
-  "\265\265\204::<\6;;=::<;;=::<;;=::<\202;;=\203::<\4;;=FFH\333\333\333" \
-  "\376\376\376\202\377\377\377\1\376\376\376\242\377\377\377\7\376\376" \
-  "\376\377\376\377\326\352\267\247\324o\247\324m\252\324r\247\324o\231" \
-  "\252\324p\10\323\353\271\377\376\377\377\377\377\376\377\377\350\365" \
-  "\333\253\323p\250\324r\251\324k\230\252\324p\10\250\325n\252\324p\277" \
-  "\337\223\376\377\377\377\377\377\375\377\376\376\377\377\276\336\222" \
-  "\230\252\324p\7\250\325p\250\324r\247\324o\253\324n\251\323m\346\364" \
-  "\332\377\376\377\202\377\377\377\7\323\352\266\253\323p\251\323m\253" \
-  "\323r\251\323o\247\324m\252\324r\220\252\324p\10\252\324n\253\324n\247" \
-  "\324k\252\324p\254\325o\247\324m\252\324p\324\353\267\250\377\377\377" \
-  "\3\377\376\377\377\377\377\375\377\376\202\377\377\377\11\373\373\363" \
-  "\241\321d\214\306>\213\310=\214\306>\214\305@\213\310=\212\306@\217\304" \
-  ">\202\215\307=\14\214\306>\215\305>\214\306>\215\305>\217\304@\215\307" \
-  "\77\215\307=\242\320c\367\375\361\376\376\377\377\376\377\376\376\376" \
-  "\202\377\377\375\2\374\377\377\377\376\377\254\377\377\377\2\376\376" \
-  "\376\251\251\251\202::<\5;;=::<;;=99;;;=\204::<\1``b\377\377\377\377" \
-  "\334\377\377\377\3\376\376\376\301\301\301:::\205::<\1""99;\202::<\4" \
-  ";;=::<SSS\362\362\362\207\377\377\377\1\376\376\376\202\377\377\377\202" \
-  "\376\376\376\240\377\377\377\1\265\265\267\203::<\2""99;;;=\203::<\1" \
-  ";;=\202::<\202;;=\203::<\2FFH\332\332\332\245\377\377\377\10\376\377" \
-  "\377\377\377\377\305\342\237\215\306A\215\307\77\215\305@\213\310=\214" \
-  "\305@\230\214\306>\10\304\341\237\377\374\377\377\376\377\377\377\377" \
-  "\341\362\322\215\305>\212\307>\215\305>\230\214\306>\4\215\305<\214\305" \
-  "@\252\324r\376\377\377\202\377\377\377\2\377\377\375\250\324r\230\214" \
-  "\306>\20\215\307\77\214\306>\214\306<\214\305B\212\307>\337\363\320\377" \
-  "\376\377\376\377\377\376\376\374\305\342\240\214\305@\213\310=\215\305" \
-  "@\214\306>\212\307<\214\305@\220\214\306>\10\214\305@\215\306C\212\307" \
-  "<\214\306>\215\305>\212\306@\215\305>\304\343\237\250\377\377\377\1\377" \
-  "\377\375\202\377\377\377\32\377\376\377\370\373\364\243\322b\214\306" \
-  ">\213\310\77\214\305@\215\305>\215\305@\214\306>\214\305B\212\307<\215" \
-  "\307=\214\305B\214\306>\215\306A\212\306@\212\307>\214\306>\212\307<" \
-  "\244\317c\370\373\364\377\377\377\377\375\376\377\377\375\376\377\377" \
-  "\377\377\377\202\377\376\377\257\377\377\377\1kkm\202::<\2;;=::<\202" \
-  ";;=\3::<;;=::<\202;;=\1\233\233\233\377\377\377\377\330\377\377\377\1" \
-  "\376\376\376\202\377\377\377\3\364\364\366FFH;;=\205::<\3;;=::<;;=\202" \
-  "::<\1\316\316\316\256\377\377\377\2\265\265\265;;=\203::<\1;;=\205::" \
-  "<\1;;=\204::<\3;;=FFH\332\332\332\206\377\377\377\3\376\376\376\377\377" \
-  "\377\376\376\376\235\377\377\377\1\304\343\240\235\214\306>\1\305\342" \
-  "\237\203\377\377\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377" \
-  "\377\1\252\324p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377" \
-  "\3\305\342\237\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306" \
-  ">\1\214\305@\205\214\306>\1\305\342\237\241\377\377\377\10\376\376\377" \
-  "\377\377\375\377\377\377\377\377\375\377\377\377\377\376\377\377\377" \
-  "\375\376\377\377\202\377\377\377\6\370\373\362\243\322b\211\307B\213" \
-  "\310=\214\305@\214\306<\202\215\305@\4\214\306<\214\305@\214\306<\215" \
-  "\307\77\202\214\306>\6\212\307>\214\306>\215\307\77\214\305@\244\317" \
-  "c\367\375\361\267\377\377\377\2\363\363\363FFF\204::<\1;;=\203::<\4:" \
-  "9>::<;;=\332\332\332\377\377\377\377\332\377\377\377\1yy{\202::<\2""9" \
-  "9;;;=\202::<\6;;=99;::<;;=::<\234\234\236\260\377\377\377\12\265\265" \
-  "\267;;=::<;;=99;;;=::<;;=::<;;=\202::<\1;;=\203::<\3;;=FFF\332\332\332" \
-  "\206\377\377\377\1\376\376\376\236\377\377\377\1\304\343\240\235\214" \
-  "\306>\1\305\342\237\203\377\377\377\1\342\362\316\235\214\306>\1\250" \
-  "\325p\204\377\377\377\1\252\324p\234\214\306>\2\215\307\77\342\362\316" \
-  "\203\377\377\377\3\305\342\237\214\305@\215\305>\202\214\306>\1\214\305" \
-  "@\222\214\306>\1\214\305@\205\214\306>\1\305\342\237\240\377\377\377" \
-  "\6\376\376\377\377\376\377\375\376\377\376\377\377\377\377\375\375\377" \
-  "\376\203\377\377\377\27\377\377\375\372\373\366\241\321a\217\304@\212" \
-  "\307<\214\306>\215\305>\215\305@\213\310=\212\306@\214\306>\214\305B" \
-  "\215\307\77\215\305>\215\306A\212\307>\214\306>\215\307\77\214\306>\242" \
-  "\322b\370\373\362\376\376\377\377\375\376\267\377\377\377\1\301\301\301" \
-  "\205::<\3;;=::<;;=\202::<\2""99;```\377\377\377\377\331\377\377\377\1" \
-  "\301\301\301\202::<\1;;=\203::<\1;;=\202::<\3<<>::<__a\261\377\377\377" \
-  "\7\376\376\376\265\265\265;;=::<;;=::<;;=\203::<\1;;=\203::<\1;;=\203" \
-  "::<\2GGI\332\332\332\203\377\377\377\1\376\376\376\240\377\377\377\1" \
-  "\304\343\240\235\214\306>\1\305\342\237\203\377\377\377\1\342\362\316" \
-  "\235\214\306>\1\250\325p\204\377\377\377\1\252\324p\234\214\306>\2\215" \
-  "\307\77\342\362\316\203\377\377\377\3\305\342\237\214\305@\215\305>\202" \
-  "\214\306>\1\214\305@\222\214\306>\1\214\305@\205\214\306>\1\305\342\237" \
-  "\240\377\377\377\7\377\377\375\375\376\377\376\377\377\376\377\375\377" \
-  "\374\377\377\377\375\375\377\376\202\377\377\377\5\372\373\366\240\320" \
-  "b\215\307\77\212\306@\215\305>\202\214\305@\20\215\305@\212\306@\214" \
-  "\305D\216\306\77\214\306>\215\307\77\214\306>\212\306@\214\306>\215\307" \
-  "\77\215\305@\242\320c\370\373\362\377\377\373\377\376\377\377\377\375" \
-  "\270\377\377\377\3\204\204\204::<;;=\206::<\4;;=::<;;=\234\234\236\377" \
-  "\377\377\377\325\377\377\377\4\376\376\376\377\377\377\363\363\363SS" \
-  "U\211::<\4""99;::<\332\332\334\376\376\376\202\377\377\377\1\376\376" \
-  "\376\257\377\377\377\2\264\264\264;;=\202::<\2""99;;;=\202::<\3""99;" \
-  ";;=::<\202;;=\202::<\4;;=::<GGI\332\332\332\210\377\377\377\1\376\376" \
-  "\376\232\377\377\377\1\304\343\240\235\214\306>\1\305\342\237\203\377" \
-  "\377\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377\377\1\252" \
-  "\324p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377\3\305\342" \
-  "\237\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306>\1\214\305" \
-  "@\205\214\306>\1\305\342\237\241\377\377\377\37\376\377\377\376\377\375" \
-  "\377\375\376\375\377\376\377\377\375\377\377\377\377\376\377\370\373" \
-  "\362\241\321a\215\307\77\215\307=\214\305@\214\306>\212\307<\214\306" \
-  ">\214\306<\214\306>\216\306\77\215\305<\212\307>\213\307A\215\305>\212" \
-  "\307>\215\307\77\214\306>\242\321a\373\374\364\377\377\377\376\377\377" \
-  "\376\376\376\376\377\377\270\377\377\377\3\363\363\363TTT;;=\202::<\1" \
-  ";;=\203::<\5""99;;;=::<;;=\332\332\332\377\377\377\377\323\377\377\377" \
-  "\1\376\376\376\202\377\377\377\4\221\221\221;;=99;;;=\202::<\1;;=\202" \
-  "::<\1;;=\202::<\1\233\233\233\202\377\377\377\1\376\376\376\262\377\377" \
-  "\377\2\265\265\267;;=\203::<\2""99;;;=\202::<\1;;=\202::<\1;;=\202::" \
-  "<\4;;=::<FFF\332\332\332\203\377\377\377\1\376\376\376\202\377\377\377" \
-  "\1\376\376\376\233\377\377\377\1\304\343\240\235\214\306>\1\305\342\237" \
-  "\203\377\377\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377\377" \
-  "\1\252\324p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377\3\305" \
-  "\342\237\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306>\1\214" \
-  "\305@\205\214\306>\1\305\342\237\240\377\377\377\202\377\377\375\3\377" \
-  "\374\377\375\377\376\376\377\377\202\377\377\377\25\370\373\364\243\322" \
-  "b\217\304@\212\306@\214\305@\215\305>\212\307>\212\306@\214\305B\214" \
-  "\305@\214\305B\214\306>\212\307>\212\310\77\214\306>\217\304@\214\306" \
-  ">\214\305@\242\322b\370\373\362\377\377\377\202\377\376\377\1\377\377" \
-  "\375\272\377\377\377\7\316\316\316::<;;=::<99;::<;;=\205::<\1kkm\377" \
-  "\377\377\377\325\377\377\377\1\315\315\315\206::<\6""99;::<99;;;=::<" \
-  "```\206\377\377\377\1\376\376\376\257\377\377\377\3\376\376\376\265\265" \
-  "\267;;=\202::<\2;;=99;\205::<\1;;=\204::<\4;;=FFH\332\332\332\376\376" \
-  "\376\205\377\377\377\1\376\376\376\232\377\377\377\1\304\343\240\235" \
-  "\214\306>\1\305\342\237\203\377\377\377\1\342\362\316\235\214\306>\1" \
-  "\250\325p\204\377\377\377\1\252\324p\234\214\306>\2\215\307\77\342\362" \
-  "\316\203\377\377\377\3\305\342\237\214\305@\215\305>\202\214\306>\1\214" \
-  "\305@\222\214\306>\1\214\305@\205\214\306>\1\305\342\237\241\377\377" \
-  "\377\1\375\377\376\202\377\377\375\34\377\377\377\376\376\376\373\373" \
-  "\363\243\322b\211\307B\212\307<\215\305>\214\306>\212\307>\214\305@\217" \
-  "\304>\212\307<\214\306<\214\306>\215\307\77\213\307A\214\306>\215\305" \
-  "@\215\307\77\212\307>\244\317c\370\373\362\377\377\373\376\377\377\377" \
-  "\376\377\375\376\377\377\377\375\377\376\377\272\377\377\377\2\222\222" \
-  "\22299;\205::<\1;;=\203::<\2;;=\250\250\250\377\377\377\377\324\377\377" \
-  "\377\4```;;=99;;;=\204::<\5;;=::<;;=::<\331\331\331\207\377\377\377\1" \
-  "\376\376\376\260\377\377\377\1\265\265\265\204::<\6;;=::<;;=::<;;=::" \
-  "<\202;;=\203::<\4;;=FFH\333\333\333\376\376\376\202\377\377\377\1\376" \
-  "\376\376\234\377\377\377\1\304\343\240\235\214\306>\1\305\342\237\203" \
-  "\377\377\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377\377\1" \
-  "\252\324p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377\3\305" \
-  "\342\237\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306>\1\214" \
-  "\305@\205\214\306>\1\305\342\237\240\377\377\377\3\377\376\377\377\377" \
-  "\377\375\377\376\202\377\377\377\11\373\373\363\241\321d\214\306>\213" \
-  "\310=\214\306>\214\305@\213\310=\212\306@\217\304>\202\215\307=\14\214" \
-  "\306>\215\305>\214\306>\215\305>\217\304@\215\307\77\215\307=\242\320" \
-  "c\367\375\361\376\376\377\377\376\377\376\376\376\202\377\377\375\2\374" \
-  "\377\377\377\376\377\262\377\377\377\2\376\376\376\377\377\377\202\376" \
-  "\376\376\204\377\377\377\5\363\363\363SSU99;::<;;=\207::<\2GGG\363\363" \
-  "\363\377\377\377\377\322\377\377\377\4\234\234\234:::::<;;=\202::<\1" \
-  ";;=\203::<\202;;=\1\234\234\236\207\377\377\377\1\376\376\376\262\377" \
-  "\377\377\1\265\265\267\203::<\2""99;;;=\203::<\1;;=\202::<\202;;=\203" \
-  "::<\2FFH\332\332\332\237\377\377\377\1\304\343\240\235\214\306>\1\305" \
-  "\342\237\203\377\377\377\1\342\362\316\235\214\306>\1\250\325p\204\377" \
-  "\377\377\1\252\324p\234\214\306>\2\215\307\77\342\362\316\203\377\377" \
-  "\377\3\305\342\237\214\305@\215\305>\202\214\306>\1\214\305@\222\214" \
-  "\306>\1\214\305@\205\214\306>\1\305\342\237\240\377\377\377\1\377\377" \
-  "\375\202\377\377\377\32\377\376\377\370\373\364\243\322b\214\306>\213" \
-  "\310\77\214\305@\215\305>\215\305@\214\306>\214\305B\212\307<\215\307" \
-  "=\214\305B\214\306>\215\306A\212\306@\212\307>\214\306>\212\307<\244" \
-  "\317c\370\373\364\377\377\377\377\375\376\377\377\375\376\377\377\377" \
-  "\377\377\202\377\376\377\273\377\377\377\2\376\376\376\316\316\316\206" \
-  "::<\202;;=\4::<;;=::<xxx\377\377\377\377\321\377\377\377\2\346\346\350" \
-  "FFH\203::<\1;;=\206::<\1__a\202\377\377\377\1\377\377\375\271\377\377" \
-  "\377\2\265\265\265;;=\203::<\1;;=\205::<\1;;=\203::<\4;;=::<GGI\331\331" \
-  "\331\236\377\377\377\1\304\343\240\235\214\306>\1\305\342\237\203\377" \
-  "\377\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377\377\1\252" \
-  "\324p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377\3\305\342" \
-  "\237\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306>\1\214\305" \
-  "@\205\214\306>\1\305\342\237\231\377\377\377\10\376\376\377\377\377\375" \
-  "\377\377\377\377\377\375\377\377\377\377\376\377\377\377\375\376\377" \
-  "\377\202\377\377\377\6\370\373\362\243\322b\211\307B\213\310=\214\305" \
-  "@\214\306<\202\215\305@\4\214\306<\214\305@\214\306<\215\307\77\202\214" \
-  "\306>\6\212\307>\214\306>\215\307\77\214\305@\244\317c\367\375\361\305" \
-  "\377\377\377\2xxz;;=\203::<\3;;=::<;;=\203::<\2;;=\315\315\315\377\377" \
-  "\377\377\313\377\377\377\203\376\376\376\202\377\377\377\3xxz;;=::<\202" \
-  ";;=\1""99;\202;;=\202::<\4;;=::<\333\333\335\376\376\376\274\377\377" \
-  "\377\12\265\265\267;;=::<;;=99;;;=::<;;=::<;;=\202::<\1;;=\202::<\4;" \
-  ";=99;GGI\332\332\332\235\377\377\377\1\304\343\240\235\214\306>\1\305" \
-  "\342\237\203\377\377\377\1\342\362\316\235\214\306>\1\250\325p\204\377" \
-  "\377\377\1\252\324p\234\214\306>\2\215\307\77\342\362\316\203\377\377" \
-  "\377\3\305\342\237\214\305@\215\305>\202\214\306>\1\214\305@\222\214" \
-  "\306>\1\214\305@\205\214\306>\1\305\342\237\230\377\377\377\6\376\376" \
-  "\377\377\376\377\375\376\377\376\377\377\377\377\375\375\377\376\203" \
-  "\377\377\377\27\377\377\375\372\373\366\241\321a\217\304@\212\307<\214" \
-  "\306>\215\305>\215\305@\213\310=\212\306@\214\306>\214\305B\215\307\77" \
-  "\215\305>\215\306A\212\307>\214\306>\215\307\77\214\306>\242\322b\370" \
-  "\373\362\376\376\377\377\375\376\304\377\377\377\2\364\364\364FFH\203" \
-  "::<\2""99;;;=\203::<\4<<>99;TTT\376\376\376\377\377\377\377\310\377\377" \
-  "\377\1\376\376\376\205\377\377\377\3\316\316\316::<99;\206::<\1;;=\202" \
-  "::<\1\221\221\221\203\377\377\377\1\376\376\376\272\377\377\377\7\376" \
-  "\376\376\265\265\265;;=::<;;=::<;;=\203::<\1;;=\203::<\6;;=::<;;=::<" \
-  "FFH\332\332\332\234\377\377\377\1\304\343\240\235\214\306>\1\305\342" \
-  "\237\203\377\377\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377" \
-  "\377\1\252\324p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377" \
-  "\3\305\342\237\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306" \
-  ">\1\214\305@\205\214\306>\1\305\342\237\230\377\377\377\7\377\377\375" \
-  "\375\376\377\376\377\377\376\377\375\377\374\377\377\377\375\375\377" \
-  "\376\202\377\377\377\5\372\373\366\240\320b\215\307\77\212\306@\215\305" \
-  ">\202\214\305@\20\215\305@\212\306@\214\305D\216\306\77\214\306>\215" \
-  "\307\77\214\306>\212\306@\214\306>\215\307\77\215\305@\242\320c\370\373" \
-  "\362\377\377\373\377\376\377\377\377\375\304\377\377\377\3\376\376\376" \
-  "\265\265\267;;=\204::<\1""99;\203::<\3;;=::<\234\234\234\203\377\377" \
-  "\377\1\376\376\376\377\377\377\377\306\377\377\377\7\376\376\376\377" \
-  "\377\377\376\376\376\377\377\377__a::<;;=\203::<\7;;=::<;;=::<;;=SSU" \
-  "\363\363\363\300\377\377\377\2\264\264\264;;=\202::<\2""99;;;=\202::" \
-  "<\3""99;;;=::<\202;;=\204::<\2FFH\332\332\332\233\377\377\377\1\304\343" \
-  "\240\235\214\306>\1\305\342\237\203\377\377\377\1\342\362\316\235\214" \
-  "\306>\1\250\325p\204\377\377\377\1\252\324p\234\214\306>\2\215\307\77" \
-  "\342\362\316\203\377\377\377\3\305\342\237\214\305@\215\305>\202\214" \
-  "\306>\1\214\305@\222\214\306>\1\214\305@\205\214\306>\1\305\342\237\231" \
-  "\377\377\377\37\376\377\377\376\377\375\377\375\376\375\377\376\377\377" \
-  "\375\377\377\377\377\376\377\370\373\362\241\321a\215\307\77\215\307" \
-  "=\214\305@\214\306>\212\307<\214\306>\214\306<\214\306>\216\306\77\215" \
-  "\305<\212\307>\213\307A\215\305>\212\307>\215\307\77\214\306>\242\321" \
-  "a\373\374\364\377\377\377\376\377\377\376\376\376\376\377\377\301\377" \
-  "\377\377\1\376\376\376\204\377\377\377\2kkm99;\203::<\202;;=\1""99;\203" \
-  "::<\2FFH\363\363\363\377\377\377\377\310\377\377\377\1\376\376\376\203" \
-  "\377\377\377\3\250\250\252::<;;=\203::<\1;;=\202::<\5;;=::<;;=\301\301" \
-  "\301\376\376\376\301\377\377\377\2\265\265\267;;=\203::<\2""99;;;=\202" \
-  "::<\1;;=\202::<\2;;=::<\202;;=\3::<GGI\332\332\332\232\377\377\377\1" \
-  "\304\343\240\235\214\306>\1\305\342\237\203\377\377\377\1\342\362\316" \
-  "\235\214\306>\1\250\325p\204\377\377\377\1\252\324p\234\214\306>\2\215" \
-  "\307\77\342\362\316\203\377\377\377\3\305\342\237\214\305@\215\305>\202" \
-  "\214\306>\1\214\305@\222\214\306>\1\214\305@\205\214\306>\1\305\342\237" \
-  "\230\377\377\377\202\377\377\375\3\377\374\377\375\377\376\376\377\377" \
-  "\202\377\377\377\25\370\373\364\243\322b\217\304@\212\306@\214\305@\215" \
-  "\305>\212\307>\212\306@\214\305B\214\305@\214\305B\214\306>\212\307>" \
-  "\212\310\77\214\306>\217\304@\214\306>\214\305@\242\322b\370\373\362" \
-  "\377\377\377\202\377\376\377\1\377\377\375\301\377\377\377\1\376\376" \
-  "\376\204\377\377\377\2\376\376\376\346\346\350\203::<\4;;=99;::<;;=\204" \
-  "::<\3\203\203\203\377\377\377\376\376\376\377\377\377\377\311\377\377" \
-  "\377\2\364\364\364FFH\202::<\5;;=::<;;=::<;;=\202::<\2;;=kkm\202\377" \
-  "\377\377\1\376\376\376\300\377\377\377\3\376\376\376\265\265\267;;=\202" \
-  "::<\2;;=99;\204::<\3;;=99;;;=\202::<\3;;=::<\265\265\265\232\377\377" \
-  "\377\1\304\343\240\235\214\306>\1\305\342\237\203\377\377\377\1\342\362" \
-  "\316\235\214\306>\1\250\325p\204\377\377\377\1\252\324p\234\214\306>" \
-  "\2\215\307\77\342\362\316\203\377\377\377\3\305\342\237\214\305@\215" \
-  "\305>\202\214\306>\1\214\305@\222\214\306>\1\214\305@\205\214\306>\1" \
-  "\305\342\237\231\377\377\377\1\375\377\376\202\377\377\375\34\377\377" \
-  "\377\376\376\376\373\373\363\243\322b\211\307B\212\307<\215\305>\214" \
-  "\306>\212\307>\214\305@\217\304>\212\307<\214\306<\214\306>\215\307\77" \
-  "\213\307A\214\306>\215\305@\215\307\77\212\307>\244\317c\370\373\362" \
-  "\377\377\373\376\377\377\377\376\377\375\376\377\377\377\375\377\376" \
-  "\377\301\377\377\377\202\376\376\376\2\377\377\377\376\376\376\202\377" \
-  "\377\377\1\234\234\236\203::<\1;;=\206::<\2;;=\331\331\331\377\377\377" \
-  "\377\306\377\377\377\1\376\376\376\203\377\377\377\4\233\233\233;;=:" \
-  ":<;;=\202::<\3;;=99;;;=\203::<\1\346\346\350\305\377\377\377\1\265\265" \
-  "\265\204::<\3;;=::<;;=\203::<\5;;=99;;;=::<\265\265\267\233\377\377\377" \
-  "\1\304\343\240\235\214\306>\1\305\342\237\203\377\377\377\1\342\362\316" \
-  "\235\214\306>\1\250\325p\204\377\377\377\1\252\324p\234\214\306>\2\215" \
-  "\307\77\342\362\316\203\377\377\377\3\305\342\237\214\305@\215\305>\202" \
-  "\214\306>\1\214\305@\222\214\306>\1\214\305@\205\214\306>\1\305\342\237" \
-  "\230\377\377\377\3\377\376\377\377\377\377\375\377\376\202\377\377\377" \
-  "\11\373\373\363\241\321d\214\306>\213\310=\214\306>\214\305@\213\310" \
-  "=\212\306@\217\304>\202\215\307=\14\214\306>\215\305>\214\306>\215\305" \
-  ">\217\304@\215\307\77\215\307=\242\320c\367\375\361\376\376\377\377\376" \
-  "\377\376\376\376\202\377\377\375\2\374\377\377\377\376\377\301\377\377" \
-  "\377\1\376\376\376\202\377\377\377\1\376\376\376\202\377\377\377\6\364" \
-  "\364\364SSU::<;;=::<;;=\205::<\4""99;kkk\377\377\377\376\376\376\377" \
-  "\377\377\377\307\377\377\377\2\346\346\346;;;\204::<\3;;=99;;;=\203:" \
-  ":<\1\234\234\236\205\377\377\377\1\376\376\376\301\377\377\377\1\265" \
-  "\265\267\203::<\2""99;;;=\202::<\1;;;\204::<\1\265\265\267\234\377\377" \
-  "\377\1\304\343\240\235\214\306>\1\305\342\237\203\377\377\377\1\342\362" \
-  "\316\235\214\306>\1\250\325p\204\377\377\377\1\252\324p\234\214\306>" \
-  "\2\215\307\77\342\362\316\203\377\377\377\3\305\342\237\214\305@\215" \
-  "\305>\202\214\306>\1\214\305@\222\214\306>\1\214\305@\205\214\306>\1" \
-  "\305\342\237\230\377\377\377\1\377\377\375\202\377\377\377\32\377\376" \
-  "\377\370\373\364\243\322b\214\306>\213\310\77\214\305@\215\305>\215\305" \
-  "@\214\306>\214\305B\212\307<\215\307=\214\305B\214\306>\215\306A\212" \
-  "\306@\212\307>\214\306>\212\307<\244\317c\370\373\364\377\377\377\377" \
-  "\375\376\377\377\375\376\377\377\377\377\377\202\377\376\377\306\377" \
-  "\377\377\1\376\376\376\202\377\377\377\2\301\301\303::<\202;;=\11::<" \
-  ";;=::<;;=::<99;;;=::<\301\301\301\377\377\377\377\306\377\377\377\12" \
-  "\376\376\376\377\377\377\204\204\204;;=::<:9>;;=::<99;;;=\203::<\5SS" \
-  "U\363\363\363\376\376\376\377\377\377\376\376\376\305\377\377\377\5\265" \
-  "\265\26599;;;=::<;;=\206::<\1\266\266\270\235\377\377\377\1\304\343\240" \
-  "\235\214\306>\1\305\342\237\203\377\377\377\1\342\362\316\235\214\306" \
-  ">\1\250\325p\204\377\377\377\1\252\324p\234\214\306>\2\215\307\77\342" \
-  "\362\316\203\377\377\377\3\305\342\237\214\305@\215\305>\202\214\306" \
-  ">\1\214\305@\222\214\306>\1\214\305@\205\214\306>\1\305\342\237\221\377" \
-  "\377\377\10\376\376\377\377\377\375\377\377\377\377\377\375\377\377\377" \
-  "\377\376\377\377\377\375\376\377\377\202\377\377\377\6\370\373\362\243" \
-  "\322b\211\307B\213\310=\214\305@\214\306<\202\215\305@\4\214\306<\214" \
-  "\305@\214\306<\215\307\77\202\214\306>\6\212\307>\214\306>\215\307\77" \
-  "\214\305@\244\317c\367\375\361\322\377\377\377\1kkk\203::<\4;;=99;::" \
-  "<;;=\203::<\1SSU\210\377\377\377\1\376\376\376\377\377\377\377\276\377" \
-  "\377\377\1\316\316\316\202::<\1;;=\202::<\202;;=\202::<\4;;=::<\265\265" \
-  "\267\376\376\376\307\377\377\377\3\376\376\376\377\377\377\265\265\267" \
-  "\207::<\3""99;\266\266\270\376\376\377\202\377\377\377\1\376\376\376" \
-  "\232\377\377\377\1\304\343\240\235\214\306>\1\305\342\237\203\377\377" \
-  "\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377\377\1\252\324" \
-  "p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377\3\305\342\237" \
-  "\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306>\1\214\305@\205" \
-  "\214\306>\1\305\342\237\220\377\377\377\6\376\376\377\377\376\377\375" \
-  "\376\377\376\377\377\377\377\375\375\377\376\203\377\377\377\27\377\377" \
-  "\375\372\373\366\241\321a\217\304@\212\307<\214\306>\215\305>\215\305" \
-  "@\213\310=\212\306@\214\306>\214\305B\215\307\77\215\305>\215\306A\212" \
-  "\307>\214\306>\215\307\77\214\306>\242\322b\370\373\362\376\376\377\377" \
-  "\375\376\321\377\377\377\1\346\346\346\204::<\1;;=\202::<\5;;=99;;;=" \
-  "::<\266\266\266\205\377\377\377\202\376\376\376\2\377\377\377\376\376" \
-  "\376\377\377\377\377\273\377\377\377\5\376\376\376\377\377\377kkm::<" \
-  ";;=\202::<\1;;=\203::<\3;;=::<kkm\203\377\377\377\1\376\376\376\306\377" \
-  "\377\377\4\376\376\376\377\377\377\265\265\265::<\202;;=\202::<\2""9" \
-  "9;\266\266\270\237\377\377\377\1\304\343\240\235\214\306>\1\305\342\237" \
-  "\203\377\377\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377\377" \
-  "\1\252\324p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377\3\305" \
-  "\342\237\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306>\1\214" \
-  "\305@\205\214\306>\1\305\342\237\220\377\377\377\7\377\377\375\375\376" \
-  "\377\376\377\377\376\377\375\377\374\377\377\377\375\375\377\376\202" \
-  "\377\377\377\5\372\373\366\240\320b\215\307\77\212\306@\215\305>\202" \
-  "\214\305@\20\215\305@\212\306@\214\305D\216\306\77\214\306>\215\307\77" \
-  "\214\306>\212\306@\214\306>\215\307\77\215\305@\242\320c\370\373\362" \
-  "\377\377\373\377\376\377\377\377\375\322\377\377\377\1\221\221\223\202" \
-  "::<\12;;=99;::<;;=::<;;=99;;;=EEG\364\364\364\203\377\377\377\1\376\376" \
-  "\376\202\377\377\377\1\376\376\376\377\377\377\377\275\377\377\377\2" \
-  "\316\316\320;;=\205::<\2""99;;;=\203::<\3\316\316\316\377\377\377\376" \
-  "\376\376\313\377\377\377\3\265\265\265;;=99;\202::<\1\266\266\270\203" \
-  "\377\377\377\3\376\376\376\377\377\377\376\376\376\232\377\377\377\1" \
-  "\304\343\240\235\214\306>\1\305\342\237\203\377\377\377\1\342\362\316" \
-  "\235\214\306>\1\250\325p\204\377\377\377\1\252\324p\234\214\306>\2\215" \
-  "\307\77\342\362\316\203\377\377\377\3\305\342\237\214\305@\215\305>\202" \
-  "\214\306>\1\214\305@\222\214\306>\1\214\305@\205\214\306>\1\305\342\237" \
-  "\221\377\377\377\37\376\377\377\376\377\375\377\375\376\375\377\376\377" \
-  "\377\375\377\377\377\377\376\377\370\373\362\241\321a\215\307\77\215" \
-  "\307=\214\305@\214\306>\212\307<\214\306>\214\306<\214\306>\216\306\77" \
-  "\215\305<\212\307>\213\307A\215\305>\212\307>\215\307\77\214\306>\242" \
-  "\321a\373\374\364\377\377\377\376\377\377\376\376\376\376\377\377\322" \
-  "\377\377\377\2\363\363\363FFH\203::<\202;;=\203::<\3;;=::<\235\235\235" \
-  "\204\377\377\377\1\376\376\376\377\377\377\377\277\377\377\377\1__a\202" \
-  "::<\1;;=\203::<\5;;=::<;;=::<\204\204\206\312\377\377\377\1\376\376\376" \
-  "\202\377\377\377\7\376\376\376\377\377\377\265\265\267;;=99;\266\266" \
-  "\270\376\376\377\203\377\377\377\202\376\376\376\233\377\377\377\1\304" \
-  "\343\240\235\214\306>\1\305\342\237\203\377\377\377\1\342\362\316\235" \
-  "\214\306>\1\250\325p\204\377\377\377\1\252\324p\234\214\306>\2\215\307" \
-  "\77\342\362\316\203\377\377\377\3\305\342\237\214\305@\215\305>\202\214" \
-  "\306>\1\214\305@\222\214\306>\1\214\305@\205\214\306>\1\305\342\237\220" \
-  "\377\377\377\202\377\377\375\3\377\374\377\375\377\376\376\377\377\202" \
-  "\377\377\377\25\370\373\364\243\322b\217\304@\212\306@\214\305@\215\305" \
-  ">\212\307>\212\306@\214\305B\214\305@\214\305B\214\306>\212\307>\212" \
-  "\310\77\214\306>\217\304@\214\306>\214\305@\242\322b\370\373\362\377" \
-  "\377\377\202\377\376\377\1\377\377\375\324\377\377\377\4\234\234\234" \
-  ";;=::<<<>\204::<\1;;=\202::<\2FFH\363\363\363\204\377\377\377\1\376\376" \
-  "\376\202\377\377\377\1\376\376\376\377\377\377\377\272\377\377\377\1" \
-  "\265\265\265\202::<\5;;=99;::<;;=::<\202;;=\3""99;;;=\346\346\346\320" \
-  "\377\377\377\2\264\264\266\265\265\267\203\377\377\377\202\376\376\376" \
-  "\235\377\377\377\1\304\343\240\235\214\306>\1\305\342\237\203\377\377" \
-  "\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377\377\1\252\324" \
-  "p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377\3\305\342\237" \
-  "\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306>\1\214\305@\205" \
-  "\214\306>\1\305\342\237\221\377\377\377\1\375\377\376\202\377\377\375" \
-  "\34\377\377\377\376\376\376\373\373\363\243\322b\211\307B\212\307<\215" \
-  "\305>\214\306>\212\307>\214\305@\217\304>\212\307<\214\306<\214\306>" \
-  "\215\307\77\213\307A\214\306>\215\305@\215\307\77\212\307>\244\317c\370" \
-  "\373\362\377\377\373\376\377\377\377\376\377\375\376\377\377\377\375" \
-  "\377\376\377\320\377\377\377\1\376\376\376\203\377\377\377\2SSU;;=\203" \
-  "::<\1;;=\203::<\3""99;::<\234\234\236\203\377\377\377\1\376\376\376\377" \
-  "\377\377\377\276\377\377\377\5RRT99;;;=99;;;=\203::<\4""99;;;=::<\234" \
-  "\234\236\314\377\377\377\1\376\376\376\212\377\377\377\1\376\376\376" \
-  "\235\377\377\377\1\304\343\240\235\214\306>\1\305\342\237\203\377\377" \
-  "\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377\377\1\252\324" \
-  "p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377\3\305\342\237" \
-  "\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306>\1\214\305@\205" \
-  "\214\306>\1\305\342\237\220\377\377\377\3\377\376\377\377\377\377\375" \
-  "\377\376\202\377\377\377\11\373\373\363\241\321d\214\306>\213\310=\214" \
-  "\306>\214\305@\213\310=\212\306@\217\304>\202\215\307=\14\214\306>\215" \
-  "\305>\214\306>\215\305>\217\304@\215\307\77\215\307=\242\320c\367\375" \
-  "\361\376\376\377\377\376\377\376\376\376\202\377\377\375\2\374\377\377" \
-  "\377\376\377\324\377\377\377\3\265\265\265;;=99;\202;;=\1""99;\202;;" \
-  "=\5::<;;=::<GGI\363\363\363\206\377\377\377\1\376\376\376\377\377\377" \
-  "\377\271\377\377\377\2\266\266\270;;=\202::<\1;;=\202::<\6;;=::<;;=:" \
-  ":<FFH\363\363\363\324\377\377\377\3\376\376\376\377\377\377\376\376\376" \
-  "\236\377\377\377\1\304\343\240\235\214\306>\1\305\342\237\203\377\377" \
-  "\377\1\342\362\316\235\214\306>\1\250\325p\204\377\377\377\1\252\324" \
-  "p\234\214\306>\2\215\307\77\342\362\316\203\377\377\377\3\305\342\237" \
-  "\214\305@\215\305>\202\214\306>\1\214\305@\222\214\306>\1\214\305@\205" \
-  "\214\306>\1\305\342\237\220\377\377\377\1\377\377\375\202\377\377\377" \
-  "\32\377\376\377\370\373\364\243\322b\214\306>\213\310\77\214\305@\215" \
-  "\305>\215\305@\214\306>\214\305B\212\307<\215\307=\214\305B\214\306>" \
-  "\215\306A\212\306@\212\307>\214\306>\212\307<\244\317c\370\373\364\377" \
-  "\377\377\377\375\376\377\377\375\376\377\377\377\377\377\202\377\376" \
-  "\377\326\377\377\377\1__a\203::<\1;;=\203::<\1;;=\202::<\1\234\234\234" \
-  "\377\377\377\377\274\377\377\377\1\376\376\376\203\377\377\377\3SSU;" \
-  ";=99;\210::<\1\234\234\234\365\377\377\377\7\376\377\375\304\341\236" \
-  "\215\306A\214\305B\215\307=\212\307>\212\306@\230\214\305@\1\304\341" \
-  "\236\203\377\377\377\4\341\362\320\214\306>\213\310\77\215\305@\231\214" \
-  "\305@\2\215\307\77\252\322q\202\377\376\377\202\377\377\377\1\250\325" \
-  "n\230\214\305@\3\215\305>\215\306A\215\307\77\202\214\306<\10\342\360" \
-  "\317\376\377\377\377\377\375\376\377\377\305\342\240\215\305@\212\306" \
-  "@\215\305>\202\214\305@\1\215\307=\220\214\305@\10\214\306>\212\306@" \
-  "\216\306A\212\307>\215\305>\215\305@\214\305@\304\343\237\211\377\377" \
-  "\377\10\376\376\377\377\377\375\377\377\377\377\377\375\377\377\377\377" \
-  "\376\377\377\377\375\376\377\377\202\377\377\377\6\370\373\362\243\322" \
-  "b\211\307B\213\310=\214\305@\214\306<\202\215\305@\4\214\306<\214\305" \
-  "@\214\306<\215\307\77\202\214\306>\6\212\307>\214\306>\215\307\77\214" \
-  "\305@\244\317c\367\375\361\335\377\377\377\2\376\376\376\316\316\316" \
-  "\211::<\3;;=GGI\363\363\365\203\377\377\377\1\376\376\376\377\377\377" \
-  "\377\266\377\377\377\10\376\376\376\377\377\377\376\376\376\377\377\377" \
-  "\265\265\265;;=::<;;=\207::<\2GGI\363\363\363\364\377\377\377\7\377\376" \
-  "\377\377\377\375\304\341\236\215\305>\215\307\77\214\306>\214\305@\231" \
-  "\214\306>\7\304\343\237\377\377\377\375\376\377\377\377\375\341\360\321" \
-  "\215\306A\214\305@\233\214\306>\6\252\324n\376\376\376\377\377\377\376" \
-  "\377\377\377\376\377\252\324p\230\214\306>\7\215\306A\212\307>\214\306" \
-  ">\212\307>\214\306>\343\361\320\376\377\377\202\377\377\377\7\305\342" \
-  "\237\215\305>\213\310\77\214\306>\214\305@\212\306@\215\307\77\222\214" \
-  "\306>\6\215\305>\212\307>\214\306>\215\307=\215\305@\305\342\237\210" \
-  "\377\377\377\6\376\376\377\377\376\377\375\376\377\376\377\377\377\377" \
-  "\375\375\377\376\203\377\377\377\27\377\377\375\372\373\366\241\321a" \
-  "\217\304@\212\307<\214\306>\215\305>\215\305@\213\310=\212\306@\214\306" \
-  ">\214\305B\215\307\77\215\305>\215\306A\212\307>\214\306>\215\307\77" \
-  "\214\306>\242\322b\370\373\362\376\376\377\377\375\376\336\377\377\377" \
-  "\1kkm\202::<\1;;=\205::<\202;;=\3\233\233\235\377\377\377\376\376\376" \
-  "\377\377\377\377\274\377\377\377\3SSU99;;;=\20299;\1;;=\203::<\3;;=:" \
-  ":<\234\234\236\366\377\377\377\7\376\377\375\305\342\240\213\304\77\213" \
-  "\310\77\214\305@\215\306A\216\306=\230\214\306>\10\305\342\240\377\377" \
-  "\375\376\377\377\377\376\377\341\360\317\214\306<\214\305@\212\306@\231" \
-  "\214\306>\7\215\305@\252\324p\377\377\377\377\377\375\376\377\377\377" \
-  "\376\374\252\324p\230\214\306>\7\212\307>\215\307\77\216\306A\212\307" \
-  ">\213\304\77\343\361\320\377\377\375\202\377\377\377\3\307\342\237\214" \
-  "\304\77\213\310\77\203\214\306>\1\215\307\77\220\214\306>\4\214\305@" \
-  "\214\306<\215\304B\213\310\77\202\212\307>\2\215\305@\305\342\240\210" \
-  "\377\377\377\7\377\377\375\375\376\377\376\377\377\376\377\375\377\374" \
-  "\377\377\377\375\375\377\376\202\377\377\377\5\372\373\366\240\320b\215" \
-  "\307\77\212\306@\215\305>\202\214\305@\20\215\305@\212\306@\214\305D" \
-  "\216\306\77\214\306>\215\307\77\214\306>\212\306@\214\306>\215\307\77" \
-  "\215\305@\242\320c\370\373\362\377\377\373\377\376\377\377\377\375\331" \
-  "\377\377\377\1\376\376\376\203\377\377\377\4\376\376\376\317\317\321" \
-  "::<;;=\203::<\3;;=::<;;=\202::<\4FFH\363\363\363\377\377\377\376\376" \
-  "\376\377\377\377\377\264\377\377\377\1\376\376\376\205\377\377\377\1" \
-  "\265\265\267\202;;=\3::<99;;;=\202::<\202;;=\2::<SSU\366\377\377\377" \
-  "\7\377\376\377\375\377\374\304\341\237\216\306\77\212\307<\213\310\77" \
-  "\212\307>\231\214\306>\2\305\342\240\377\377\377\202\377\376\377\3\341" \
-  "\362\316\216\306\77\214\306<\231\214\306>\3\215\305@\212\307>\252\324" \
-  "p\203\377\377\377\2\377\376\377\247\324o\230\214\306>\20\215\306A\214" \
-  "\305B\215\307\77\211\305\77\214\304;\342\362\315\377\377\377\377\376" \
-  "\377\376\376\376\305\342\237\215\306A\210\307;\215\306A\216\306A\214" \
-  "\306>\212\306@\220\214\306>\202\214\305@\6\216\305C\213\305=\214\305" \
-  "B\215\307\77\216\306\77\303\344\237\211\377\377\377\37\376\377\377\376" \
-  "\377\375\377\375\376\375\377\376\377\377\375\377\377\377\377\376\377" \
-  "\370\373\362\241\321a\215\307\77\215\307=\214\305@\214\306>\212\307<" \
-  "\214\306>\214\306<\214\306>\216\306\77\215\305<\212\307>\213\307A\215" \
-  "\305>\212\307>\215\307\77\214\306>\242\321a\373\374\364\377\377\377\376" \
-  "\377\377\376\376\376\376\377\377\331\377\377\377\3\376\376\376\377\377" \
-  "\377\376\376\376\203\377\377\377\1kkm\202::<\6;;=::<;;=::<;;=::<\202" \
-  ";;=\1\233\233\235\377\377\377\377\267\377\377\377\1\376\376\376\204\377" \
-  "\377\377\2kkm;;=\202::<\2;;=::<\202;;=\203::<\5\265\265\267\377\377\377" \
-  "\376\376\376\377\377\377\376\376\376\362\377\377\377\2\376\377\377\377" \
-  "\376\377\202\377\377\377\202\377\376\377\2\377\377\377\377\377\375\231" \
-  "\377\377\377\4\377\376\377\376\377\377\375\377\376\377\377\377\202\376" \
-  "\377\377\231\377\377\377\10\374\377\375\377\376\377\377\377\375\376\376" \
-  "\376\377\377\377\376\377\377\376\376\374\377\376\377\230\377\377\377" \
-  "\1\377\376\377\203\377\377\375\4\376\377\377\377\375\377\377\377\377" \
-  "\376\377\377\202\377\377\377\3\376\376\376\377\376\377\377\377\375\202" \
-  "\376\377\377\1\377\377\375\220\377\377\377\10\377\377\375\377\377\377" \
-  "\376\376\376\377\377\377\377\377\375\377\377\377\376\377\377\377\375" \
-  "\377\210\377\377\377\202\377\377\375\3\377\374\377\375\377\376\376\377" \
-  "\377\202\377\377\377\25\370\373\364\243\322b\217\304@\212\306@\214\305" \
-  "@\215\305>\212\307>\212\306@\214\305B\214\305@\214\305B\214\306>\212" \
-  "\307>\212\310\77\214\306>\217\304@\214\306>\214\305@\242\322b\370\373" \
-  "\362\377\377\377\202\377\376\377\1\377\377\375\340\377\377\377\1\316" \
-  "\316\316\203::<\3;;=99;;;=\204::<\2FFH\363\363\363\202\377\377\377\1" \
-  "\376\376\376\377\377\377\377\264\377\377\377\1\376\376\376\202\377\377" \
-  "\377\1\316\316\320\206::<\1;;=\203::<\2SSU\376\376\376\366\377\377\377" \
-  "\1\377\377\375\202\377\376\377\202\377\377\377\3\377\377\375\377\377" \
-  "\377\376\377\377\230\377\377\377\202\376\377\377\6\377\377\375\377\377" \
-  "\377\376\377\375\377\377\377\376\377\375\377\377\375\231\377\377\377" \
-  "\2\376\377\377\377\377\375\202\377\377\377\1\376\376\376\232\377\377" \
-  "\377\5\377\376\377\377\377\377\376\377\375\377\377\377\377\377\375\204" \
-  "\377\377\377\202\376\377\377\1\376\376\376\202\377\377\377\202\376\377" \
-  "\377\220\377\377\377\1\377\377\375\202\377\377\377\4\376\376\374\377" \
-  "\376\377\377\377\377\376\377\375\212\377\377\377\1\375\377\376\202\377" \
-  "\377\375\34\377\377\377\376\376\376\373\373\363\243\322b\211\307B\212" \
-  "\307<\215\305>\214\306>\212\307>\214\305@\217\304>\212\307<\214\306<" \
-  "\214\306>\215\307\77\213\307A\214\306>\215\305@\215\307\77\212\307>\244" \
-  "\317c\370\373\362\377\377\373\376\377\377\377\376\377\375\376\377\377" \
-  "\377\375\377\376\377\334\377\377\377\1\376\376\376\202\377\377\377\10" \
-  "\376\376\376kkm::<;;=99;;;=::<;;=\202::<\202;;=\1\234\234\236\203\377" \
-  "\377\377\1\376\376\376\377\377\377\377\262\377\377\377\5\376\376\376" \
-  "\377\377\377\376\376\376\377\377\377lln\210::<\3""99;;;=\265\265\265" \
-  "\202\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\370\377" \
-  "\377\377\1\376\377\377\230\377\377\377\7\377\376\377\377\377\375\377" \
-  "\376\377\376\376\377\377\377\375\377\377\377\377\377\375\233\377\377" \
-  "\377\1\377\376\377\203\377\377\377\1\376\377\375\231\377\377\377\5\377" \
-  "\377\375\377\377\377\377\377\375\377\377\377\377\377\375\202\377\377" \
-  "\377\1\377\377\375\203\377\377\377\2\376\376\376\377\376\377\226\377" \
-  "\377\377\5\377\377\375\377\377\377\376\377\377\377\377\375\376\377\377" \
-  "\210\377\377\377\3\377\376\377\377\377\377\375\377\376\202\377\377\377" \
-  "\11\373\373\363\241\321d\214\306>\213\310=\214\306>\214\305@\213\310" \
-  "=\212\306@\217\304>\202\215\307=\14\214\306>\215\305>\214\306>\215\305" \
-  ">\217\304@\215\307\77\215\307=\242\320c\367\375\361\376\376\377\377\376" \
-  "\377\376\376\376\202\377\377\375\2\374\377\377\377\376\377\333\377\377" \
-  "\377\1\376\376\376\202\377\377\377\3\376\376\376\377\377\377\316\316" \
-  "\320\203::<\1;;=\202::<\1;;=\203::<\2FFH\377\377\377\202\376\376\376" \
-  "\377\377\377\377\262\377\377\377\5\376\376\376\377\377\377\376\376\376" \
-  "\377\377\377\332\332\332\206::<\1;;=\202::<\5;;=FFH\363\363\363\377\377" \
-  "\377\376\376\376\203\377\377\377\1\376\376\376\365\377\377\377\1\377" \
-  "\377\375\202\377\377\377\1\377\377\375\230\377\377\377\2\376\377\377" \
-  "\377\377\375\204\377\377\377\2\377\376\377\376\377\375\230\377\377\377" \
-  "\4\377\377\375\377\377\377\377\377\373\376\377\377\203\377\377\377\1" \
-  "\377\376\377\230\377\377\377\13\376\377\377\377\377\375\377\377\377\376" \
-  "\377\377\377\375\376\377\377\377\377\377\375\376\377\377\377\376\377" \
-  "\377\377\377\376\376\376\202\377\377\377\1\377\377\375\226\377\377\377" \
-  "\202\376\377\377\2\377\377\375\377\376\377\210\377\377\377\1\377\377" \
-  "\375\202\377\377\377\32\377\376\377\370\373\364\243\322b\214\306>\213" \
-  "\310\77\214\305@\215\305>\215\305@\214\306>\214\305B\212\307<\215\307" \
-  "=\214\305B\214\306>\215\306A\212\306@\212\307>\214\306>\212\307<\244" \
-  "\317c\370\373\364\377\377\377\377\375\376\377\377\375\376\377\377\377" \
-  "\377\377\202\377\376\377\333\377\377\377\1\376\376\376\204\377\377\377" \
-  "\11\376\376\376\377\377\377kkm::<;;=99;;;=::<;;=\202::<\3;;=::<\264\264" \
-  "\264\377\377\377\377\265\377\377\377\1\376\376\376\202\377\377\377\1" \
-  "\204\204\204\203::<\1;;=\206::<\1\235\235\237\377\377\377\377\377\377" \
-  "\377\377\203\377\377\377\10\376\376\377\377\377\375\377\377\377\377\377" \
-  "\375\377\377\377\377\376\377\377\377\375\376\377\377\202\377\377\377" \
-  "\6\370\373\362\243\322b\211\307B\213\310=\214\305@\214\306<\202\215\305" \
-  "@\4\214\306<\214\305@\214\306<\215\307\77\202\214\306>\6\212\307>\214" \
-  "\306>\215\307\77\214\305@\244\317c\367\375\361\352\377\377\377\1\316" \
-  "\316\316\203::<\1;;=\203::<\202;;=\2::<RRT\377\377\377\377\267\377\377" \
-  "\377\3\346\346\346::<;;=\203::<\202;;=\5""99;::<;;=FFH\363\363\365\377" \
-  "\377\377\377\377\377\377\377\202\377\377\377\6\376\376\377\377\376\377" \
-  "\375\376\377\376\377\377\377\377\375\375\377\376\203\377\377\377\27\377" \
-  "\377\375\372\373\366\241\321a\217\304@\212\307<\214\306>\215\305>\215" \
-  "\305@\213\310=\212\306@\214\306>\214\305B\215\307\77\215\305>\215\306" \
-  "A\212\307>\214\306>\215\307\77\214\306>\242\322b\370\373\362\376\376" \
-  "\377\377\375\376\352\377\377\377\2kkm;;=\207::<\3;;=::<\301\301\301\377" \
-  "\377\377\377\266\377\377\377\2\221\221\221;;=\202::<\202;;=\202::<\1" \
-  ";;=\202::<\1\235\235\237\377\377\377\377\377\377\377\377\203\377\377" \
-  "\377\7\377\377\375\375\376\377\376\377\377\376\377\375\377\374\377\377" \
-  "\377\375\375\377\376\202\377\377\377\5\372\373\366\240\320b\215\307\77" \
-  "\212\306@\215\305>\202\214\305@\20\215\305@\212\306@\214\305D\216\306" \
-  "\77\214\306>\215\307\77\214\306>\212\306@\214\306>\215\307\77\215\305" \
-  "@\242\320c\370\373\362\377\377\373\377\376\377\377\377\375\350\377\377" \
-  "\377\4\376\376\376\377\377\377\265\265\26799;\203::<\3;;=::<;;=\203:" \
-  ":<\2kkk\376\376\376\377\377\377\377\264\377\377\377\2\362\362\362FFH" \
-  "\202::<\1;;=\203::<\5;;=::<;;=::<\363\363\363\377\377\377\377\377\377" \
-  "\377\377\204\377\377\377\37\376\377\377\376\377\375\377\375\376\375\377" \
-  "\376\377\377\375\377\377\377\377\376\377\370\373\362\241\321a\215\307" \
-  "\77\215\307=\214\305@\214\306>\212\307<\214\306>\214\306<\214\306>\216" \
-  "\306\77\215\305<\212\307>\213\307A\215\305>\212\307>\215\307\77\214\306" \
-  ">\242\321a\373\374\364\377\377\377\376\377\377\376\376\376\376\377\377" \
-  "\352\377\377\377\2\376\376\376TTV\204::<\7;;=99;::<;;=99;::<\332\332" \
-  "\332\377\377\377\377\263\377\377\377\3\376\376\376\266\266\266;;=\203" \
-  "::<\202;;=\204::<\1\205\205\207\377\377\377\377\377\377\377\377\204\377" \
-  "\377\377\202\377\377\375\3\377\374\377\375\377\376\376\377\377\202\377" \
-  "\377\377\25\370\373\364\243\322b\217\304@\212\306@\214\305@\215\305>" \
-  "\212\307>\212\306@\214\305B\214\305@\214\305B\214\306>\212\307>\212\310" \
-  "\77\214\306>\217\304@\214\306>\214\305@\242\322b\370\373\362\377\377" \
-  "\377\202\377\376\377\1\377\377\375\354\377\377\377\2\265\265\267::<\202" \
-  ";;=\205::<\4;;=::<\204\204\204\376\376\376\377\377\377\377\263\377\377" \
-  "\377\1SSU\202::<\1;;=\206::<\2;;=\346\346\346\377\377\377\377\377\377" \
-  "\377\377\205\377\377\377\1\375\377\376\202\377\377\375\34\377\377\377" \
-  "\376\376\376\373\373\363\243\322b\211\307B\212\307<\215\305>\214\306" \
-  ">\212\307>\214\305@\217\304>\212\307<\214\306<\214\306>\215\307\77\213" \
-  "\307A\214\306>\215\305@\215\307\77\212\307>\244\317c\370\373\362\377" \
-  "\377\373\376\377\377\377\376\377\375\376\377\377\377\375\377\376\377" \
-  "\354\377\377\377\4FFH;;=99;;;=\203::<\5;;=99;;;=99;\364\364\364\377\377" \
-  "\377\377\262\377\377\377\1\316\316\316\202;;=\1""99;\203::<\1;;=\203" \
-  "::<\1xxz\377\377\377\377\377\377\377\377\205\377\377\377\3\377\376\377" \
-  "\377\377\377\375\377\376\202\377\377\377\11\373\373\363\241\321d\214" \
-  "\306>\213\310=\214\306>\214\305@\213\310=\212\306@\217\304>\202\215\307" \
-  "=\14\214\306>\215\305>\214\306>\215\305>\217\304@\215\307\77\215\307" \
-  "=\242\320c\367\375\361\376\376\377\377\376\377\376\376\376\202\377\377" \
-  "\375\2\374\377\377\377\376\377\354\377\377\377\1\235\235\237\204::<\1" \
-  "<<>\202::<\4;;=::<;;=\247\247\251\377\377\377\377\262\377\377\377\4\204" \
-  "\204\204;;=::<;;=\206::<\2;;=\316\316\316\377\377\377\377\377\377\377" \
-  "\377\205\377\377\377\1\377\377\375\202\377\377\377\32\377\376\377\370" \
-  "\373\364\243\322b\214\306>\213\310\77\214\305@\215\305>\215\305@\214" \
-  "\306>\214\305B\212\307<\215\307=\214\305B\214\306>\215\306A\212\306@" \
-  "\212\307>\214\306>\212\307<\244\317c\370\373\364\377\377\377\377\375" \
-  "\376\377\377\375\376\377\377\377\377\377\202\377\376\377\355\377\377" \
-  "\377\1\363\363\363\212::<\1TTV\377\377\377\377\261\377\377\377\5\347" \
-  "\347\351::<;;=::<;;=\204::<\3;;=::<TTT\377\377\377\377\376\377\377\377" \
-  "\10\376\376\377\377\377\375\377\377\377\377\377\375\377\377\377\377\376" \
-  "\377\377\377\375\376\377\377\202\377\377\377\6\370\373\362\243\322b\211" \
-  "\307B\213\310=\214\305@\214\306<\202\215\305@\4\214\306<\214\305@\214" \
-  "\306<\215\307\77\202\214\306>\6\212\307>\214\306>\215\307\77\214\305" \
-  "@\244\317c\367\375\361\361\377\377\377\1\376\376\376\204\377\377\377" \
-  "\1\204\204\204\202;;=\203::<\1;;=\202::<\202;;=\1\302\302\302\203\377" \
-  "\377\377\1\376\376\376\377\377\377\377\244\377\377\377\1\376\376\376" \
-  "\203\377\377\377\1\376\376\376\203\377\377\377\1\234\234\236\202::<\1" \
-  ";;=\204::<\6;;=::<;;=\264\264\264\377\377\377\376\376\376\377\377\377" \
-  "\377\373\377\377\377\6\376\376\377\377\376\377\375\376\377\376\377\377" \
-  "\377\377\375\375\377\376\203\377\377\377\27\377\377\375\372\373\366\241" \
-  "\321a\217\304@\212\307<\214\306>\215\305>\215\305@\213\310=\212\306@" \
-  "\214\306>\214\305B\215\307\77\215\305>\215\306A\212\307>\214\306>\215" \
-  "\307\77\214\306>\242\322b\370\373\362\376\376\377\377\375\376\365\377" \
-  "\377\377\1\332\332\332\202::<\1;;=\202::<\6""99;::<;;=99;;;=xxx\205\377" \
-  "\377\377\1\376\376\376\377\377\377\377\243\377\377\377\1\376\376\376" \
-  "\206\377\377\377\4SSU;;=::<;;=\202::<\1;;=\203::<\3GGI\362\362\362\376" \
-  "\376\376\377\377\377\377\374\377\377\377\7\377\377\375\375\376\377\376" \
-  "\377\377\376\377\375\377\374\377\377\377\375\375\377\376\202\377\377" \
-  "\377\5\372\373\366\240\320b\215\307\77\212\306@\215\305>\202\214\305" \
-  "@\20\215\305@\212\306@\214\305D\216\306\77\214\306>\215\307\77\214\306" \
-  ">\212\306@\214\306>\215\307\77\215\305@\242\320c\370\373\362\377\377" \
-  "\373\377\376\377\377\377\375\364\377\377\377\3\376\376\376\377\377\377" \
-  "__a\203::<\202;;=\6::<99;;;=::<;;=\345\345\345\203\377\377\377\1\376" \
-  "\376\376\377\377\377\377\245\377\377\377\3\376\376\376\377\377\377\376" \
-  "\376\376\202\377\377\377\2\316\316\316::<\202;;=\205::<\202;;=\1\203" \
-  "\203\205\204\377\377\377\1\376\376\376\377\377\377\377\372\377\377\377" \
-  "\37\376\377\377\376\377\375\377\375\376\375\377\376\377\377\375\377\377" \
-  "\377\377\376\377\370\373\362\241\321a\215\307\77\215\307=\214\305@\214" \
-  "\306>\212\307<\214\306>\214\306<\214\306>\216\306\77\215\305<\212\307" \
-  ">\213\307A\215\305>\212\307>\215\307\77\214\306>\242\321a\373\374\364" \
-  "\377\377\377\376\377\377\376\376\376\376\377\377\362\377\377\377\202" \
-  "\376\376\376\3\377\377\377\376\376\376\265\265\267\202::<\1;;=\207::" \
-  "<\3\251\251\253\377\377\377\376\376\376\203\377\377\377\1\376\376\376" \
-  "\377\377\377\377\247\377\377\377\2\376\376\376\204\204\206\207::<\1;" \
-  ";=\202::<\3\346\346\346\377\377\377\376\376\376\377\377\377\377\374\377" \
-  "\377\377\202\377\377\375\3\377\374\377\375\377\376\376\377\377\202\377" \
-  "\377\377\25\370\373\364\243\322b\217\304@\212\306@\214\305@\215\305>" \
-  "\212\307>\212\306@\214\305B\214\305@\214\305B\214\306>\212\307>\212\310" \
-  "\77\214\306>\217\304@\214\306>\214\305@\242\322b\370\373\362\377\377" \
-  "\377\202\377\376\377\1\377\377\375\364\377\377\377\17\376\376\376\377" \
-  "\377\377\376\376\376\377\377\377FFH;;=99;::<;;=::<;;=99;;;=::<SSU\377" \
-  "\377\377\377\251\377\377\377\1\376\376\376\203\377\377\377\3\363\363" \
-  "\365::<;;=\202::<\11;;=::<;;=::<;;=::<kkm\377\377\377\376\376\376\377" \
-  "\377\377\377\376\377\377\377\1\375\377\376\202\377\377\375\34\377\377" \
-  "\377\376\376\376\373\373\363\243\322b\211\307B\212\307<\215\305>\214" \
-  "\306>\212\307>\214\305@\217\304>\212\307<\214\306<\214\306>\215\307\77" \
-  "\213\307A\214\306>\215\305@\215\307\77\212\307>\244\317c\370\373\362" \
-  "\377\377\373\376\377\377\377\376\377\375\376\377\377\377\375\377\376" \
-  "\377\361\377\377\377\202\376\376\376\2\377\377\377\376\376\376\202\377" \
-  "\377\377\1\221\221\221\205::<\202;;=\5::<;;=99;\316\316\320\376\376\376" \
-  "\377\377\377\377\250\377\377\377\1\376\376\376\202\377\377\377\4\266" \
-  "\266\270::<99;;;=\203::<\1;;=\203::<\1\265\265\265\377\377\377\377\377" \
-  "\377\377\377\3\377\376\377\377\377\377\375\377\376\202\377\377\377\11" \
-  "\373\373\363\241\321d\214\306>\213\310=\214\306>\214\305@\213\310=\212" \
-  "\306@\217\304>\202\215\307=\14\214\306>\215\305>\214\306>\215\305>\217" \
-  "\304@\215\307\77\215\307=\242\320c\367\375\361\376\376\377\377\376\377" \
-  "\376\376\376\202\377\377\375\2\374\377\377\377\376\377\360\377\377\377" \
-  "\1\376\376\376\202\377\377\377\202\376\376\376\202\377\377\377\6\346" \
-  "\346\346;;=99;::<99;;;=\204::<\2;;=\204\204\206\202\377\377\377\1\376" \
-  "\376\376\377\377\377\377\251\377\377\377\1__a\203::<\3;;=::<;;=\203:" \
-  ":<\4FFF\363\363\363\377\377\377\376\376\376\377\377\377\377\375\377\377" \
-  "\377\1\377\377\375\202\377\377\377\32\377\376\377\370\373\364\243\322" \
-  "b\214\306>\213\310\77\214\305@\215\305>\215\305@\214\306>\214\305B\212" \
-  "\307<\215\307=\214\305B\214\306>\215\306A\212\306@\212\307>\214\306>" \
-  "\212\307<\244\317c\370\373\364\377\377\377\377\375\376\377\377\375\376" \
-  "\377\377\377\377\377\202\377\376\377\371\377\377\377\4^^`;;=::<;;=\202" \
-  "::<\5;;=::<;;=::<FFH\377\377\377\377\253\377\377\377\3\346\346\346::" \
-  "<;;=\210::<\1\204\204\204\202\377\377\377\202\376\376\376\377\377\377" \
-  "\377\365\377\377\377\10\376\376\377\377\377\375\377\377\377\377\377\375" \
-  "\377\377\377\377\376\377\377\377\375\376\377\377\202\377\377\377\6\370" \
-  "\373\362\243\322b\211\307B\213\310=\214\305@\214\306<\202\215\305@\4" \
-  "\214\306<\214\305@\214\306<\215\307\77\202\214\306>\6\212\307>\214\306" \
-  ">\215\307\77\214\305@\244\317c\367\375\361\377\377\377\377\202\377\377" \
-  "\377\3\265\265\267::<;;=\204::<\1;;=\202::<\2;;=\265\265\265\202\377" \
-  "\377\377\1\376\376\376\377\377\377\377\246\377\377\377\2\376\376\376" \
-  "\234\234\234\202;;=\203::<\1;;=\202::<\3""99;::<\332\332\332\377\377" \
-  "\377\377\370\377\377\377\6\376\376\377\377\376\377\375\376\377\376\377" \
-  "\377\377\377\375\375\377\376\203\377\377\377\27\377\377\375\372\373\366" \
-  "\241\321a\217\304@\212\307<\214\306>\215\305>\215\305@\213\310=\212\306" \
-  "@\214\306>\214\305B\215\307\77\215\305>\215\306A\212\307>\214\306>\215" \
-  "\307\77\214\306>\242\322b\370\373\362\376\376\377\377\375\376\377\377" \
-  "\377\377\5\377\377\377\363\363\365;;=::<;;=\202::<\3;;=::<;;=\202::<" \
-  "\3xxz\377\377\377\376\376\376\377\377\377\377\246\377\377\377\3\376\376" \
-  "\376\377\377\377SSS\202::<\1;;=\202::<\1;;=\202::<\6;;=SSU\377\377\377" \
-  "\376\376\376\377\377\377\376\376\376\202\377\377\377\1\376\376\376\377" \
-  "\377\377\377\362\377\377\377\7\377\377\375\375\376\377\376\377\377\376" \
-  "\377\375\377\374\377\377\377\375\375\377\376\202\377\377\377\5\372\373" \
-  "\366\240\320b\215\307\77\212\306@\215\305>\202\214\305@\20\215\305@\212" \
-  "\306@\214\305D\216\306\77\214\306>\215\307\77\214\306>\212\306@\214\306" \
-  ">\215\307\77\215\305@\242\320c\370\373\362\377\377\373\377\376\377\377" \
-  "\377\375\377\377\377\377\11\377\377\377\376\376\376\204\204\206;;=::" \
-  "<99;;;=::<;;=\204::<\3\362\362\362\377\377\377\376\376\376\377\377\377" \
-  "\377\246\377\377\377\1\333\333\333\203::<\202;;=\202::<\5<<>99;::<\250" \
-  "\250\252\376\376\376\203\377\377\377\1\376\376\376\377\377\377\377\365" \
-  "\377\377\377\37\376\377\377\376\377\375\377\375\376\375\377\376\377\377" \
-  "\375\377\377\377\377\376\377\370\373\362\241\321a\215\307\77\215\307" \
-  "=\214\305@\214\306>\212\307<\214\306>\214\306<\214\306>\216\306\77\215" \
-  "\305<\212\307>\213\307A\215\305>\212\307>\215\307\77\214\306>\242\321" \
-  "a\373\374\364\377\377\377\376\377\377\376\376\376\376\377\377\377\377" \
-  "\377\377\202\377\377\377\1\301\301\301\202::<\1;;=\203::<\1;;=\203::" \
-  "<\1\266\266\270\377\377\377\377\250\377\377\377\2\220\220\220;;=\204" \
-  "::<\6;;=::<99;;;=::<\346\346\346\205\377\377\377\1\376\376\376\377\377" \
-  "\377\377\363\377\377\377\202\377\377\375\3\377\374\377\375\377\376\376" \
-  "\377\377\202\377\377\377\25\370\373\364\243\322b\217\304@\212\306@\214" \
-  "\305@\215\305>\212\307>\212\306@\214\305B\214\305@\214\305B\214\306>" \
-  "\212\307>\212\310\77\214\306>\217\304@\214\306>\214\305@\242\322b\370" \
-  "\373\362\377\377\377\202\377\376\377\1\377\377\375\377\377\377\377\204" \
-  "\377\377\377\2TTV99;\202::<\1;;=\202::<\6;;=::<;;=__a\377\377\377\376" \
-  "\376\376\377\377\377\377\244\377\377\377\3\376\376\376\377\377\377TT" \
-  "V\207::<\3;;=99;```\377\377\377\377\373\377\377\377\1\375\377\376\202" \
-  "\377\377\375\34\377\377\377\376\376\376\373\373\363\243\322b\211\307" \
-  "B\212\307<\215\305>\214\306>\212\307>\214\305@\217\304>\212\307<\214" \
-  "\306<\214\306>\215\307\77\213\307A\214\306>\215\305@\215\307\77\212\307" \
-  ">\244\317c\370\373\362\377\377\373\376\377\377\377\376\377\375\376\377" \
-  "\377\377\375\377\376\377\377\377\377\377\203\377\377\377\3\221\221\221" \
-  "::<;;=\202::<\202;;=\203::<\2;;=\345\345\347\377\377\377\377\246\377" \
-  "\377\377\4\332\332\332;;=::<;;=\203::<\1;;=\203::<\1\265\265\265\203" \
-  "\377\377\377\3\376\376\376\377\377\377\376\376\376\377\377\377\377\364" \
-  "\377\377\377\3\377\376\377\377\377\377\375\377\376\202\377\377\377\11" \
-  "\373\373\363\241\321d\214\306>\213\310=\214\306>\214\305@\213\310=\212" \
-  "\306@\217\304>\202\215\307=\14\214\306>\215\305>\214\306>\215\305>\217" \
-  "\304@\215\307\77\215\307=\242\320c\367\375\361\376\376\377\377\376\377" \
-  "\376\376\376\202\377\377\375\2\374\377\377\377\376\377\377\377\377\377" \
-  "\202\377\377\377\5\376\376\376\332\332\332;;=::<;;=\202::<\6;;=::<;;" \
-  "=99;::<\250\250\252\377\377\377\377\244\377\377\377\6\376\376\376\377" \
-  "\377\377\221\221\223::<;;=99;\202::<\3;;=::<;;=\202::<\1\363\363\363" \
-  "\377\377\377\377\372\377\377\377\1\377\377\375\202\377\377\377\32\377" \
-  "\376\377\370\373\364\243\322b\214\306>\213\310\77\214\305@\215\305>\215" \
-  "\305@\214\306>\214\305B\212\307<\215\307=\214\305B\214\306>\215\306A" \
-  "\212\306@\212\307>\214\306>\212\307<\244\317c\370\373\364\377\377\377" \
-  "\377\375\376\377\377\375\376\377\377\377\377\377\202\377\376\377\377" \
-  "\377\377\377\204\377\377\377\2\376\376\376SSU\204::<\204;;=\2::<__a\377" \
-  "\377\377\377\243\377\377\377\6\376\376\376\377\377\377\376\376\376TT" \
-  "V99;;;=\204::<\4;;=99;<<>xxz\377\377\377\377\364\377\377\377\10\376\376" \
-  "\377\377\377\375\377\377\377\377\377\375\377\377\377\377\376\377\377" \
-  "\377\375\376\377\377\202\377\377\377\6\370\373\362\243\322b\211\307B" \
-  "\213\310=\214\305@\214\306<\202\215\305@\4\214\306<\214\305@\214\306" \
-  "<\215\307\77\202\214\306>\6\212\307>\214\306>\215\307\77\214\305@\244" \
-  "\317c\367\375\361\377\377\377\377\213\377\377\377\5\376\376\376\377\377" \
-  "\377\221\221\223::<;;=\204::<\5;;=::<;;=::<\363\363\363\204\377\377\377" \
-  "\1\376\376\376\202\377\377\377\202\376\376\376\377\377\377\377\233\377" \
-  "\377\377\5\332\332\332::<;;=99;<<>\202::<\1;;=\203::<\1\265\265\267\377" \
-  "\377\377\377\363\377\377\377\6\376\376\377\377\376\377\375\376\377\376" \
-  "\377\377\377\377\375\375\377\376\203\377\377\377\27\377\377\375\372\373" \
-  "\366\241\321a\217\304@\212\307<\214\306>\215\305>\215\305@\213\310=\212" \
-  "\306@\214\306>\214\305B\215\307\77\215\305>\215\306A\212\307>\214\306" \
-  ">\215\307\77\214\306>\242\322b\370\373\362\376\376\377\377\375\376\377" \
-  "\377\377\377\213\377\377\377\2\375\375\375\333\333\333\202::<\1;;=\202" \
-  "::<\1;;=\202::<\3""99;::<\265\265\265\206\377\377\377\3\376\376\376\377" \
-  "\377\377\376\376\376\377\377\377\377\233\377\377\377\2\235\235\23599" \
-  ";\202;;=\1""99;\202;;=\202::<\3;;=::<\363\363\365\377\377\377\377\363" \
-  "\377\377\377\7\377\377\375\375\376\377\376\377\377\376\377\375\377\374" \
-  "\377\377\377\375\375\377\376\202\377\377\377\5\372\373\366\240\320b\215" \
-  "\307\77\212\306@\215\305>\202\214\305@\20\215\305@\212\306@\214\305D" \
-  "\216\306\77\214\306>\215\307\77\214\306>\212\306@\214\306>\215\307\77" \
-  "\215\305@\242\320c\370\373\362\377\377\373\377\376\377\377\377\375\377" \
-  "\377\377\377\214\377\377\377\2\376\376\376SSU\207::<\3;;=::<xxx\203\377" \
-  "\377\377\202\376\376\376\202\377\377\377\1\376\376\376\377\377\377\377" \
-  "\234\377\377\377\1^^`\211::<\3xxz\377\377\377\376\376\376\377\377\377" \
-  "\377\363\377\377\377\37\376\377\377\376\377\375\377\375\376\375\377\376" \
-  "\377\377\375\377\377\377\377\376\377\370\373\362\241\321a\215\307\77" \
-  "\215\307=\214\305@\214\306>\212\307<\214\306>\214\306<\214\306>\216\306" \
-  "\77\215\305<\212\307>\213\307A\215\305>\212\307>\215\307\77\214\306>" \
-  "\242\321a\373\374\364\377\377\377\376\377\377\376\376\376\376\377\377" \
-  "\377\377\377\377\212\377\377\377\4\376\376\376\377\377\377\376\376\376" \
-  "\222\222\222\205::<\1;;=\20299;\202::<\3\363\363\363\377\377\377\376" \
-  "\376\376\377\377\377\377\240\377\377\377\1\346\346\346\202::<\1;;=\204" \
-  "::<\1;;=\202::<\1\250\250\252\202\377\377\377\1\376\376\376\377\377\377" \
-  "\377\361\377\377\377\202\377\377\375\3\377\374\377\375\377\376\376\377" \
-  "\377\202\377\377\377\25\370\373\364\243\322b\217\304@\212\306@\214\305" \
-  "@\215\305>\212\307>\212\306@\214\305B\214\305@\214\305B\214\306>\212" \
-  "\307>\212\310\77\214\306>\217\304@\214\306>\214\305@\242\322b\370\373" \
-  "\362\377\377\377\202\377\376\377\1\377\377\375\377\377\377\377\212\377" \
-  "\377\377\1\376\376\376\203\377\377\377\2\332\332\332<<>\203::<\3;;=:" \
-  ":<<<>\203::<\2\301\301\303\376\376\376\202\377\377\377\5\376\376\376" \
-  "\377\377\377\376\376\376\377\377\377\376\376\376\377\377\377\377\231" \
-  "\377\377\377\4\376\376\376\251\251\253::<;;=\204::<\5;;=::<99;::<\346" \
-  "\346\346\377\377\377\377\365\377\377\377\1\375\377\376\202\377\377\375" \
-  "\34\377\377\377\376\376\376\373\373\363\243\322b\211\307B\212\307<\215" \
-  "\305>\214\306>\212\307>\214\305@\217\304>\212\307<\214\306<\214\306>" \
-  "\215\307\77\213\307A\214\306>\215\305@\215\307\77\212\307>\244\317c\370" \
-  "\373\362\377\377\373\376\377\377\377\376\377\375\376\377\377\377\375" \
-  "\377\376\377\377\377\377\377\212\377\377\377\1\376\376\376\203\377\377" \
-  "\377\1SSS\207::<\3;;=::<\205\205\207\205\377\377\377\1\376\376\376\377" \
-  "\377\377\377\234\377\377\377\3wwy::<;;=\206::<\2;;=__a\377\377\377\377" \
-  "\365\377\377\377\3\377\376\377\377\377\377\375\377\376\202\377\377\377" \
-  "\11\373\373\363\241\321d\214\306>\213\310=\214\306>\214\305@\213\310" \
-  "=\212\306@\217\304>\202\215\307=\14\214\306>\215\305>\214\306>\215\305" \
-  ">\217\304@\215\307\77\215\307=\242\320c\367\375\361\376\376\377\377\376" \
-  "\377\376\376\376\202\377\377\375\2\374\377\377\377\376\377\377\377\377" \
-  "\377\211\377\377\377\1\376\376\376\203\377\377\377\3\376\376\376\204" \
-  "\204\204::<\202;;=\1::<\202;;=\203::<\1SSU\204\377\377\377\1\376\376" \
-  "\376\377\377\377\377\235\377\377\377\1;;=\203::<\1;;=\202::<\1;;=\202" \
-  "::<\1\234\234\234\202\377\377\377\1\376\376\376\377\377\377\377\362\377" \
-  "\377\377\1\377\377\375\202\377\377\377\32\377\376\377\370\373\364\243" \
-  "\322b\214\306>\213\310\77\214\305@\215\305>\215\305@\214\306>\214\305" \
-  "B\212\307<\215\307=\214\305B\214\306>\215\306A\212\306@\212\307>\214" \
-  "\306>\212\307<\244\317c\370\373\364\377\377\377\377\375\376\377\377\375" \
-  "\376\377\377\377\377\377\202\377\376\377\377\377\377\377\212\377\377" \
-  "\377\1\376\376\376\204\377\377\377\6\301\301\301;;=::<;;=::<;;=\205:" \
-  ":<\1\333\333\333\202\377\377\377\1\376\376\376\377\377\377\377\231\377" \
-  "\377\377\1\376\376\376\203\377\377\377\1\301\301\303\204::<\1;;=\202" \
-  "::<\1:9>\202::<\1\332\332\332\377\377\377\377\356\377\377\377\10\376" \
-  "\376\377\377\377\375\377\377\377\377\377\375\377\377\377\377\376\377" \
-  "\377\377\375\376\377\377\202\377\377\377\6\370\373\362\243\322b\211\307" \
-  "B\213\310=\214\305@\214\306<\202\215\305@\4\214\306<\214\305@\214\306" \
-  "<\215\307\77\202\214\306>\6\212\307>\214\306>\215\307\77\214\305@\244" \
-  "\317c\367\375\361\377\377\377\377\230\377\377\377\2""99;;;=\210::<\1" \
-  "\250\250\250\377\377\377\377\240\377\377\377\3\221\221\223::<;;=\207" \
-  "::<\2SSU\376\376\376\377\377\377\377\355\377\377\377\6\376\376\377\377" \
-  "\376\377\375\376\377\376\377\377\377\377\375\375\377\376\203\377\377" \
-  "\377\27\377\377\375\372\373\366\241\321a\217\304@\212\307<\214\306>\215" \
-  "\305>\215\305@\213\310=\212\306@\214\306>\214\305B\215\307\77\215\305" \
-  ">\215\306A\212\307>\214\306>\215\307\77\214\306>\242\322b\370\373\362" \
-  "\376\376\377\377\375\376\377\377\377\377\227\377\377\377\1yy{\211::<" \
-  "\6lll\376\376\376\377\377\377\376\376\376\377\377\377\376\376\376\377" \
-  "\377\377\377\224\377\377\377\202\376\376\376\7\377\377\377\376\376\376" \
-  "\377\377\377\376\376\376\377\377\377__a;;=\202::<\4<<>;;=::<;;=\202:" \
-  ":<\1\204\204\206\203\377\377\377\1\376\376\376\377\377\377\377\352\377" \
-  "\377\377\7\377\377\375\375\376\377\376\377\377\376\377\375\377\374\377" \
-  "\377\377\375\375\377\376\202\377\377\377\5\372\373\366\240\320b\215\307" \
-  "\77\212\306@\215\305>\202\214\305@\20\215\305@\212\306@\214\305D\216" \
-  "\306\77\214\306>\215\307\77\214\306>\212\306@\214\306>\215\307\77\215" \
-  "\305@\242\320c\370\373\362\377\377\373\377\376\377\377\377\375\377\377" \
-  "\377\377\221\377\377\377\3\376\376\376\377\377\377\376\376\376\203\377" \
-  "\377\377\1\265\265\267\212::<\1\363\363\363\377\377\377\377\227\377\377" \
-  "\377\1\376\376\376\202\377\377\377\1\376\376\376\203\377\377\377\1\345" \
-  "\345\345\202::<\202;;=\1""99;\203::<\4;;=::<\301\301\301\376\376\376" \
-  "\203\377\377\377\1\376\376\376\377\377\377\377\352\377\377\377\37\376" \
-  "\377\377\376\377\375\377\375\376\375\377\376\377\377\375\377\377\377" \
-  "\377\376\377\370\373\362\241\321a\215\307\77\215\307=\214\305@\214\306" \
-  ">\212\307<\214\306>\214\306<\214\306>\216\306\77\215\305<\212\307>\213" \
-  "\307A\215\305>\212\307>\215\307\77\214\306>\242\321a\373\374\364\377" \
-  "\377\377\376\377\377\376\376\376\376\377\377\377\377\377\377\222\377" \
-  "\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377\377\1\347" \
-  "\347\347\212::<\1\302\302\304\205\377\377\377\1\376\376\376\377\377\377" \
-  "\377\222\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\202" \
-  "\377\377\377\5\265\265\265::<;;=99;;;=\203::<\1;;=\202::<\1\363\363\363" \
-  "\377\377\377\377\356\377\377\377\202\377\377\375\3\377\374\377\375\377" \
-  "\376\376\377\377\202\377\377\377\25\370\373\364\243\322b\217\304@\212" \
-  "\306@\214\305@\215\305>\212\307>\212\306@\214\305B\214\305@\214\305B" \
-  "\214\306>\212\307>\212\310\77\214\306>\217\304@\214\306>\214\305@\242" \
-  "\322b\370\373\362\377\377\377\202\377\376\377\1\377\377\375\377\377\377" \
-  "\377\230\377\377\377\2\376\376\376TTT\211::<\3\221\221\223\377\377\377" \
-  "\376\376\376\202\377\377\377\1\376\376\376\377\377\377\377\231\377\377" \
-  "\377\2\204\204\204::<\202;;=\202::<\1;;=\203::<\2``b\376\376\376\377" \
-  "\377\377\377\357\377\377\377\1\375\377\376\202\377\377\375\34\377\377" \
-  "\377\376\376\376\373\373\363\243\322b\211\307B\212\307<\215\305>\214" \
-  "\306>\212\307>\214\305@\217\304>\212\307<\214\306<\214\306>\215\307\77" \
-  "\213\307A\214\306>\215\305@\215\307\77\212\307>\244\317c\370\373\362" \
-  "\377\377\373\376\377\377\377\376\377\375\376\377\377\377\375\377\376" \
-  "\377\377\377\377\377\225\377\377\377\1\376\376\376\202\377\377\377\1" \
-  "\221\221\221\210::<\2;;=__a\202\377\377\377\1\376\376\376\377\377\377" \
-  "\377\227\377\377\377\1\376\376\376\203\377\377\377\1SSU\202::<\1;;=\204" \
-  "::<\202;;=\1\234\234\234\204\377\377\377\1\376\376\376\377\377\377\377" \
-  "\352\377\377\377\3\377\376\377\377\377\377\375\377\376\202\377\377\377" \
-  "\11\373\373\363\241\321d\214\306>\213\310=\214\306>\214\305@\213\310" \
-  "=\212\306@\217\304>\202\215\307=\14\214\306>\215\305>\214\306>\215\305" \
-  ">\217\304@\215\307\77\215\307=\242\320c\367\375\361\376\376\377\377\376" \
-  "\377\376\376\376\202\377\377\375\2\374\377\377\377\376\377\377\377\377" \
-  "\377\222\377\377\377\1\376\376\376\205\377\377\377\1\301\301\301\210" \
-  "::<\4""99;;;=\364\364\366\376\376\376\377\377\377\377\233\377\377\377" \
-  "\1\346\346\346\207::<\4;;=99;::<\316\316\316\203\377\377\377\1\376\376" \
-  "\376\377\377\377\377\353\377\377\377\1\377\377\375\202\377\377\377\32" \
-  "\377\376\377\370\373\364\243\322b\214\306>\213\310\77\214\305@\215\305" \
-  ">\215\305@\214\306>\214\305B\212\307<\215\307=\214\305B\214\306>\215" \
-  "\306A\212\306@\212\307>\214\306>\212\307<\244\317c\370\373\364\377\377" \
-  "\377\377\375\376\377\377\375\376\377\377\377\377\377\202\377\376\377" \
-  "\377\377\377\377\224\377\377\377\1\376\376\376\204\377\377\377\1\363" \
-  "\363\363\210::<\3;;=::<\302\302\304\377\377\377\377\231\377\377\377\1" \
-  "\376\376\376\202\377\377\377\1\266\266\270\203::<\203;;=\203::<\1:::" \
-  "\377\377\377\377\351\377\377\377\10\376\376\377\377\377\375\377\377\377" \
-  "\377\377\375\377\377\377\377\376\377\377\377\375\376\377\377\202\377" \
-  "\377\377\6\370\373\362\243\322b\211\307B\213\310=\214\305@\214\306<\202" \
-  "\215\305@\4\214\306<\214\305@\214\306<\215\307\77\202\214\306>\6\212" \
-  "\307>\214\306>\215\307\77\214\305@\244\317c\367\375\361\377\377\377\377" \
-  "\242\377\377\377\3__a::<;;=\207::<\1\221\221\221\377\377\377\377\234" \
-  "\377\377\377\1\204\204\206\204::<\202;;=\203::<\1lll\203\377\377\377" \
-  "\1\375\375\375\377\377\377\377\344\377\377\377\6\376\376\377\377\376" \
-  "\377\375\376\377\376\377\377\377\377\375\375\377\376\203\377\377\377" \
-  "\27\377\377\375\372\373\366\241\321a\217\304@\212\307<\214\306>\215\305" \
-  ">\215\305@\213\310=\212\306@\214\306>\214\305B\215\307\77\215\305>\215" \
-  "\306A\212\307>\214\306>\215\307\77\214\306>\242\322b\370\373\362\376" \
-  "\376\377\377\375\376\377\377\377\377\241\377\377\377\2\221\221\223;;" \
-  "=\202::<\202;;=\203::<\2;;=^^^\204\377\377\377\1\376\376\376\377\377" \
-  "\377\377\224\377\377\377\1\376\376\376\202\377\377\377\1``b\202::<\1" \
-  ";;=\206::<\1\234\234\234\205\377\377\377\1\376\376\376\377\377\377\377" \
-  "\342\377\377\377\7\377\377\375\375\376\377\376\377\377\376\377\375\377" \
-  "\374\377\377\377\375\375\377\376\202\377\377\377\5\372\373\366\240\320" \
-  "b\215\307\77\212\306@\215\305>\202\214\305@\20\215\305@\212\306@\214" \
-  "\305D\216\306\77\214\306>\215\307\77\214\306>\212\306@\214\306>\215\307" \
-  "\77\215\305@\242\320c\370\373\362\377\377\373\377\376\377\377\377\375" \
-  "\377\377\377\377\241\377\377\377\6\301\301\303::<;;=::<99;;;=\203::<" \
-  "\6;;=:::\377\377\377\376\376\376\377\377\377\376\376\376\377\377\377" \
-  "\377\224\377\377\377\1\376\376\376\202\377\377\377\2\363\363\363;;=\211" \
-  "::<\1\316\316\316\203\377\377\377\1\376\376\376\202\377\377\377\1\376" \
-  "\376\376\377\377\377\377\342\377\377\377\37\376\377\377\376\377\375\377" \
-  "\375\376\375\377\376\377\377\375\377\377\377\377\376\377\370\373\362" \
-  "\241\321a\215\307\77\215\307=\214\305@\214\306>\212\307<\214\306>\214" \
-  "\306<\214\306>\216\306\77\215\305<\212\307>\213\307A\215\305>\212\307" \
-  ">\215\307\77\214\306>\242\321a\373\374\364\377\377\377\376\377\377\376" \
-  "\376\376\376\377\377\377\377\377\377\241\377\377\377\1\363\363\365\202" \
-  "::<\1;;=\202::<\2""99;;;=\202::<\2;;=\316\316\316\377\377\377\377\231" \
-  "\377\377\377\10\376\376\376\316\316\316::<;;=::<;;=99;;;=\204::<\202" \
-  "\377\377\377\3\376\376\376\377\377\377\376\376\376\377\377\377\377\344" \
-  "\377\377\377\202\377\377\375\3\377\374\377\375\377\376\376\377\377\202" \
-  "\377\377\377\25\370\373\364\243\322b\217\304@\212\306@\214\305@\215\305" \
-  ">\212\307>\212\306@\214\305B\214\305@\214\305B\214\306>\212\307>\212" \
-  "\310\77\214\306>\217\304@\214\306>\214\305@\242\322b\370\373\362\377" \
-  "\377\377\202\377\376\377\1\377\377\375\377\377\377\377\243\377\377\377" \
-  "\1``b\203::<\203;;=\6::<<<>::<\234\234\234\377\377\377\376\376\376\377" \
-  "\377\377\377\230\377\377\377\1\234\234\236\204::<\12;;=99;::<;;=::<k" \
-  "km\377\377\377\376\376\376\377\377\377\376\376\376\377\377\377\377\346" \
-  "\377\377\377\1\375\377\376\202\377\377\375\34\377\377\377\376\376\376" \
-  "\373\373\363\243\322b\211\307B\212\307<\215\305>\214\306>\212\307>\214" \
-  "\305@\217\304>\212\307<\214\306<\214\306>\215\307\77\213\307A\214\306" \
-  ">\215\305@\215\307\77\212\307>\244\317c\370\373\362\377\377\373\376\377" \
-  "\377\377\376\377\375\376\377\377\377\375\377\376\377\377\377\377\377" \
-  "\242\377\377\377\2\222\222\222::<\202;;=\7""99;::<;;=::<99;;;=lln\202" \
-  "\377\377\377\1\376\376\376\377\377\377\377\225\377\377\377\3\376\376" \
-  "\376\377\377\377jjl\204;;=\2""99;;;=\202::<\2;;=\221\221\223\202\377" \
-  "\377\377\1\376\376\376\202\377\377\377\1\376\376\376\377\377\377\377" \
-  "\343\377\377\377\3\377\376\377\377\377\377\375\377\376\202\377\377\377" \
-  "\11\373\373\363\241\321d\214\306>\213\310=\214\306>\214\305@\213\310" \
-  "=\212\306@\217\304>\202\215\307=\14\214\306>\215\305>\214\306>\215\305" \
-  ">\217\304@\215\307\77\215\307=\242\320c\367\375\361\376\376\377\377\376" \
-  "\377\376\376\376\202\377\377\375\2\374\377\377\377\376\377\377\377\377" \
-  "\377\242\377\377\377\2\264\264\264;;=\206::<\6;;=::<FFH\376\376\376\377" \
-  "\377\377\376\376\376\377\377\377\377\227\377\377\377\1GGI\204::<\6;;" \
-  "=::<;;=::<;;=\302\302\304\206\377\377\377\1\376\376\376\377\377\377\377" \
-  "\342\377\377\377\1\377\377\375\202\377\377\377\32\377\376\377\370\373" \
-  "\364\243\322b\214\306>\213\310\77\214\305@\215\305>\215\305@\214\306" \
-  ">\214\305B\212\307<\215\307=\214\305B\214\306>\215\306A\212\306@\212" \
-  "\307>\214\306>\212\307<\244\317c\370\373\364\377\377\377\377\375\376" \
-  "\377\377\375\376\377\377\377\377\377\202\377\376\377\377\377\377\377" \
-  "\243\377\377\377\2\346\346\346;;=\211::<\1\346\346\350\377\377\377\377" \
-  "\230\377\377\377\3\346\346\350::<;;=\202::<\1;;=\205::<\1\346\346\346" \
-  "\302\377\377\377\5\376\376\376\377\377\377\376\376\376\377\377\377\376" \
-  "\376\376\377\377\377\377\233\377\377\377\10\376\376\377\377\377\375\377" \
-  "\377\377\377\377\375\377\377\377\377\376\377\377\377\375\376\377\377" \
-  "\202\377\377\377\6\370\373\362\243\322b\211\307B\213\310=\214\305@\214" \
-  "\306<\202\215\305@\4\214\306<\214\305@\214\306<\215\307\77\202\214\306" \
-  ">\6\212\307>\214\306>\215\307\77\214\305@\244\317c\367\375\361\345\377" \
-  "\377\377\1\376\376\376\305\377\377\377\3FFF::<;;=\202::<\3;;=::<;;=\202" \
-  "::<\1\301\301\303\377\377\377\377\230\377\377\377\4\301\301\30399;::" \
-  "<;;=\204::<\3;;=::<GGI\215\377\377\377\1\376\376\376\266\377\377\377" \
-  "\1\376\376\376\203\377\377\377\1\376\376\376\377\377\377\377\231\377" \
-  "\377\377\6\376\376\377\377\376\377\375\376\377\376\377\377\377\377\375" \
-  "\375\377\376\203\377\377\377\27\377\377\375\372\373\366\241\321a\217" \
-  "\304@\212\307<\214\306>\215\305>\215\305@\213\310=\212\306@\214\306>" \
-  "\214\305B\215\307\77\215\305>\215\306A\212\307>\214\306>\215\307\77\214" \
-  "\306>\242\322b\370\373\362\376\376\377\377\375\376\341\377\377\377\5" \
-  "\376\376\376\377\377\377\376\376\376\377\377\377\376\376\376\265\377" \
-  "\377\377\3\376\376\376\377\377\377\376\376\376\212\377\377\377\3\376" \
-  "\376\376\377\377\377lll\206::<\202;;=\2::<\234\234\236\377\377\377\377" \
-  "\224\377\377\377\1\376\376\376\203\377\377\377\2\233\233\235;;=\203:" \
-  ":<\2""99;;;=\202::<\2;;=xxz\213\377\377\377\1\376\376\376\265\377\377" \
-  "\377\1\376\376\376\377\377\377\377\240\377\377\377\7\377\377\375\375" \
-  "\376\377\376\377\377\376\377\375\377\374\377\377\377\375\375\377\376" \
-  "\202\377\377\377\5\372\373\366\240\320b\215\307\77\212\306@\215\305>" \
-  "\202\214\305@\20\215\305@\212\306@\214\305D\216\306\77\214\306>\215\307" \
-  "\77\214\306>\212\306@\214\306>\215\307\77\215\305@\242\320c\370\373\362" \
-  "\377\377\373\377\376\377\377\377\375\377\377\377\377\233\377\377\377" \
-  "\3\376\376\376\377\377\377\376\376\376\213\377\377\377\6\376\376\376" \
-  "\377\377\377\233\233\233;;=::<;;=\206::<\1lln\377\377\377\377\226\377" \
-  "\377\377\3\376\376\376\377\377\377kkm\210::<\2;;=\234\234\236\214\377" \
-  "\377\377\1\315\315\315\202\234\234\234\262\234\234\236\2\234\234\234" \
-  "\265\265\265\377\377\377\377\240\377\377\377\37\376\377\377\376\377\375" \
-  "\377\375\376\375\377\376\377\377\375\377\377\377\377\376\377\370\373" \
-  "\362\241\321a\215\307\77\215\307=\214\305@\214\306>\212\307<\214\306" \
-  ">\214\306<\214\306>\216\306\77\215\305<\212\307>\213\307A\215\305>\212" \
-  "\307>\215\307\77\214\306>\242\321a\373\374\364\377\377\377\376\377\377" \
-  "\376\376\376\376\377\377\344\377\377\377\4\376\376\376\347\347\347\234" \
-  "\234\234\235\235\235\260\234\234\236\204\234\234\234\216\377\377\377" \
-  "\1\301\301\301\202::<\1;;=\203::<\202;;=\2::<EEG\377\377\377\377\230" \
-  "\377\377\377\1FFH\204::<\202;;=\4::<;;=99;\302\302\304\212\377\377\377" \
-  "\5\376\376\376\377\377\377\234\234\234::<;;=\263::<\1jjj\205\377\377" \
-  "\377\1\376\376\376\377\377\377\377\231\377\377\377\202\377\377\375\3" \
-  "\377\374\377\375\377\376\376\377\377\202\377\377\377\25\370\373\364\243" \
-  "\322b\217\304@\212\306@\214\305@\215\305>\212\307>\212\306@\214\305B" \
-  "\214\305@\214\305B\214\306>\212\307>\212\310\77\214\306>\217\304@\214" \
-  "\306>\214\305@\242\322b\370\373\362\377\377\377\202\377\376\377\1\377" \
-  "\377\375\346\377\377\377\2\316\316\316:::\263::<\4;;=:::\377\377\377" \
-  "\376\376\376\214\377\377\377\3\346\346\346::<;;=\205::<\4;;=::<;;=\346" \
-  "\346\346\377\377\377\377\226\377\377\377\2\362\362\362;;=\204::<\3""9" \
-  "9;::<;;=\202::<\1\346\346\350\214\377\377\377\2\234\234\234;;=\264::" \
-  "<\1kkm\377\377\377\377\240\377\377\377\1\375\377\376\202\377\377\375" \
-  "\34\377\377\377\376\376\376\373\373\363\243\322b\211\307B\212\307<\215" \
-  "\305>\214\306>\212\307>\214\305@\217\304>\212\307<\214\306<\214\306>" \
-  "\215\307\77\213\307A\214\306>\215\305@\215\307\77\212\307>\244\317c\370" \
-  "\373\362\377\377\373\376\377\377\377\376\377\375\376\377\377\377\375" \
-  "\377\376\377\345\377\377\377\2\316\316\31699;\265::<\216\377\377\377" \
-  "\2\376\376\376FFH\203::<\1;;=\203::<\3;;=99;\316\316\316\377\377\377" \
-  "\377\226\377\377\377\1\317\317\317\206::<\202;;=\4""99;FFH\377\377\377" \
-  "\376\376\376\213\377\377\377\1\234\234\236\202::<\1;;=\261::<\2;;=kk" \
-  "m\205\377\377\377\1\376\376\376\377\377\377\377\231\377\377\377\3\377" \
-  "\376\377\377\377\377\375\377\376\202\377\377\377\11\373\373\363\241\321" \
-  "d\214\306>\213\310=\214\306>\214\305@\213\310=\212\306@\217\304>\202" \
-  "\215\307=\14\214\306>\215\305>\214\306>\215\305>\217\304@\215\307\77" \
-  "\215\307=\242\320c\367\375\361\376\376\377\377\376\377\376\376\376\202" \
-  "\377\377\375\2\374\377\377\377\376\377\345\377\377\377\1\316\316\316" \
-  "\264::<\202;;=\215\377\377\377\4\376\376\376\377\377\377lln99;\210::" \
-  "<\2\234\234\234\376\376\376\377\377\377\377\225\377\377\377\5\234\234" \
-  "\234::<;;=99;::<\202;;=\5::<;;=::<kkm\376\376\377\214\377\377\377\1\234" \
-  "\234\236\203::<\1:9>\261::<\1kkm\377\377\377\377\237\377\377\377\1\377" \
-  "\377\375\202\377\377\377\32\377\376\377\370\373\364\243\322b\214\306" \
-  ">\213\310\77\214\305@\215\305>\215\305@\214\306>\214\305B\212\307<\215" \
-  "\307=\214\305B\214\306>\215\306A\212\306@\212\307>\214\306>\212\307<" \
-  "\244\317c\370\373\364\377\377\377\377\375\376\377\377\375\376\377\377" \
-  "\377\377\377\202\377\376\377\346\377\377\377\1\316\316\316\266::<\217" \
-  "\377\377\377\2\234\234\236;;=\206::<\3""99;;;=www\377\377\377\377\226" \
-  "\377\377\377\3\204\204\206::<;;=\207::<\3\222\222\222\377\377\377\376" \
-  "\376\376\213\377\377\377\1\234\234\236\265::<\1kkm\377\377\377\377\210" \
-  "\377\377\377\7\376\376\376\377\377\377\377\377\375\376\377\375\376\377" \
-  "\377\377\377\377\377\376\377\203\377\377\377\1\376\376\376\203\377\377" \
-  "\377\1\376\377\377\203\377\377\377\16\377\377\375\377\377\377\377\376" \
-  "\377\377\377\377\377\377\373\376\377\377\377\377\377\377\377\373\371" \
-  "\372\364\242\322d\214\306<\215\307\77\214\305@\214\306<\202\215\305@" \
-  "\4\214\306<\214\305@\214\306<\215\307\77\202\214\306>\6\212\307>\214" \
-  "\306>\215\307\77\214\305@\244\317c\367\375\361\356\377\377\377\1\316" \
-  "\316\316\266::<\214\377\377\377\1\376\376\376\202\377\377\377\1\266\266" \
-  "\266\202::<\1;;=\203::<\1;;=\202::<\3__a\377\377\377\376\376\376\377" \
-  "\377\377\377\224\377\377\377\2kkm;;=\202::<\202;;=\202::<\3;;=::<\265" \
-  "\265\265\215\377\377\377\1\234\234\236\265::<\1kkm\377\377\377\377\214" \
-  "\377\377\377\2\376\377\377\376\377\375\202\377\377\375\203\377\377\377" \
-  "\204\377\377\375\205\377\377\377\1\376\376\377\202\377\377\377\6\377" \
-  "\377\375\377\377\377\371\372\362\242\320c\214\305@\215\305@\202\214\306" \
-  ">\20\215\305@\213\310=\212\306@\214\306>\214\305B\215\307\77\215\305" \
-  ">\215\306A\212\307>\214\306>\215\307\77\214\306>\242\322b\370\373\362" \
-  "\376\376\377\377\375\376\355\377\377\377\1\316\316\316\266::<\215\377" \
-  "\377\377\4\376\376\376\377\377\377\315\315\315;;=\203::<\1;;=\203::<" \
-  "\2;;=99;\377\377\377\377\226\377\377\377\203::<\1;;=\202::<\1;;=\203" \
-  "::<\2\317\317\317\376\376\376\214\377\377\377\1\234\234\236\265::<\1" \
-  "kkm\377\377\377\377\211\377\377\377\3\376\376\376\377\376\377\377\377" \
-  "\377\203\377\376\377\204\377\377\377\1\376\376\376\202\377\377\377\1" \
-  "\377\376\377\203\377\377\377\1\376\376\376\203\377\377\377\31\376\376" \
-  "\377\377\376\377\371\372\365\241\322e\212\307<\216\306\77\212\311<\216" \
-  "\303\77\212\307>\215\305@\212\306@\214\305D\216\306\77\214\306>\215\307" \
-  "\77\214\306>\212\306@\214\306>\215\307\77\215\305@\242\320c\370\373\362" \
-  "\377\377\373\377\376\377\377\377\375\355\377\377\377\1\316\316\316\266" \
-  "::<\220\377\377\377\202::<\4;;=::<;;=::<\202;;=\3""99;;;=\346\346\346" \
-  "\377\377\377\377\224\377\377\377\2\362\362\362;;=\202::<\7""99;::<;;" \
-  "=88:;;=::<;;=\216\377\377\377\1\234\234\236\265::<\1kkm\377\377\377\377" \
-  "\212\377\377\377\202\376\377\377\202\377\377\377\1\377\376\377\206\377" \
-  "\377\377\1\376\376\376\202\377\377\377\1\376\376\376\203\377\377\377" \
-  "\1\376\376\376\202\377\377\377\6\370\373\364\242\322b\214\306>\214\305" \
-  "@\215\305>\214\305@\202\215\306A\20\214\306<\214\306>\216\306\77\215" \
-  "\305<\212\307>\213\307A\215\305>\212\307>\215\307\77\214\306>\242\321" \
-  "a\373\374\364\377\377\377\376\377\377\376\376\376\376\377\377\355\377" \
-  "\377\377\1\316\316\316\266::<\216\377\377\377\6\376\376\376\377\377\377" \
-  "SSU;;=99;;;=\206::<\1\316\316\316\377\377\377\377\224\377\377\377\2\316" \
-  "\316\31699;\205::<\1;;=\202::<\1FFH\216\377\377\377\1\234\234\236\265" \
-  "::<\1kkm\377\377\377\377\207\377\377\377\202\377\376\377\2\377\377\377" \
-  "\377\377\375\203\377\377\377\1\376\377\375\202\377\377\375\203\377\377" \
-  "\377\202\377\377\375\2\377\377\377\377\377\375\205\377\377\377\26\377" \
-  "\377\375\371\372\362\243\322b\211\305A\215\305>\215\307\77\214\305@\214" \
-  "\306>\215\305@\212\307>\214\305@\214\305B\214\306>\212\307>\212\310\77" \
-  "\214\306>\217\304@\214\306>\214\305@\242\322b\370\373\362\377\377\377" \
-  "\202\377\376\377\1\377\377\375\356\377\377\377\1\316\316\316\266::<\220" \
-  "\377\377\377\3kkm::<;;=\202::<\6;;=::<;;=::<;;=\233\233\233\377\377\377" \
-  "\377\223\377\377\377\2\376\376\376\265\265\265\205::<\1;;=\202::<\2""9" \
-  "9;lln\216\377\377\377\1\234\234\236\265::<\1kkm\377\377\377\377\207\377" \
-  "\377\377\3\376\377\375\375\377\376\377\377\377\202\377\376\377\3\377" \
-  "\376\374\377\377\377\376\377\377\202\377\377\377\1\377\377\375\204\377" \
-  "\377\377\2\375\377\376\377\377\375\202\377\377\377\1\377\377\375\202" \
-  "\377\377\377\32\376\376\374\365\367\354\223\312K\215\305>\214\306<\211" \
-  "\305\77\214\306>\212\307>\215\307\77\214\306>\214\306<\214\306>\215\307" \
-  "\77\213\307A\214\306>\215\305@\215\307\77\212\307>\244\317c\370\373\362" \
-  "\377\377\373\376\377\377\377\376\377\375\376\377\377\377\375\377\376" \
-  "\377\355\377\377\377\1\316\316\316\266::<\217\377\377\377\5\376\376\376" \
-  "\234\234\236;;=::<;;=\202::<\2""99;::<\202;;=\1\221\221\221\377\377\377" \
-  "\377\224\377\377\377\1\235\235\235\211::<\2\221\221\223\376\376\376\215" \
-  "\377\377\377\1\234\234\236\265::<\1kkm\377\377\377\377\207\377\377\377" \
-  "\1\377\376\377\202\377\377\375\202\377\377\377\202\377\377\375\1\377" \
-  "\377\377\202\376\377\377\1\377\377\377\202\377\377\375\5\376\376\377" \
-  "\377\377\377\377\377\373\377\377\377\376\376\376\203\377\377\377\27\376" \
-  "\376\376\377\377\375\376\377\372\347\365\333\225\311K\217\304>\214\305" \
-  "B\215\307\77\212\306B\214\306>\215\306A\214\306>\215\305>\214\306>\215" \
-  "\305>\217\304@\215\307\77\215\307=\242\320c\367\375\361\376\376\377\377" \
-  "\376\377\376\376\376\202\377\377\375\2\374\377\377\377\376\377\355\377" \
-  "\377\377\1\316\316\316\266::<\214\377\377\377\1\376\376\376\203\377\377" \
-  "\377\3\250\250\252::<;;=\203::<\202;;=\202::<\1kkk\377\377\377\377\224" \
-  "\377\377\377\4www;;=::<;;=\202::<\202;;=\202::<\1\234\234\236\216\377" \
-  "\377\377\1\234\234\236\265::<\1kkm\377\377\377\377\207\377\377\377\15" \
-  "\367\374\365\343\361\316\316\346\254\305\342\240\304\343\240\303\342" \
-  "\236\305\342\237\312\346\251\345\356\317\365\373\357\376\377\377\376" \
-  "\376\377\377\377\375\214\377\377\377\24\350\365\333\223\312K\216\306" \
-  "\77\212\307>\215\304B\214\306>\215\307=\214\306>\215\306A\212\306@\212" \
-  "\307>\214\306>\212\307<\244\317c\370\373\364\377\377\377\377\375\376" \
-  "\377\377\375\376\377\377\377\377\377\202\377\376\377\356\377\377\377" \
-  "\1\316\316\316\266::<\217\377\377\377\2\376\376\376\316\316\320\207:" \
-  ":<\3;;=::<SSS\377\377\377\377\223\377\377\377\2\376\376\376kkm\202::" \
-  "<\1;;=\206::<\1\316\316\316\377\377\377\377\276\377\377\377\4\377\377" \
-  "\375\376\377\377\377\377\377\377\376\377\202\377\377\377\10\377\377\375" \
-  "\377\376\377\376\377\375\376\376\376\377\377\377\350\365\333\277\337" \
-  "\224\232\315V\210\214\306>\10\212\306@\212\307>\232\315W\277\337\224" \
-  "\352\364\333\377\377\377\377\376\377\377\377\375\202\376\377\377\202" \
-  "\377\377\377\2\377\376\377\377\377\375\202\377\377\377\17\377\377\375" \
-  "\377\376\377\347\365\333\226\312L\215\306A\213\310=\212\306@\217\304" \
-  ">\216\307<\214\305@\215\305<\214\305@\215\307=\244\317c\366\373\364\377" \
-  "\377\377\377\276\377\377\377\6\346\346\346;;=99;;;=::<;;=\205::<\377" \
-  "\377\377\377\224\377\377\377\1::<\202;;=\2::<;;=\203::<\4;;=::<\316\316" \
-  "\316\376\376\376\377\377\377\377\274\377\377\377\14\377\375\377\377\377" \
-  "\377\376\376\374\377\377\375\377\376\377\377\377\375\376\377\377\377" \
-  "\377\377\376\377\377\377\376\377\324\353\265\231\316Z\202\214\306<\1" \
-  "\215\305>\210\214\306>\202\215\305>\16\214\306>\213\307A\211\306;\233" \
-  "\314V\324\353\265\377\377\377\377\376\377\377\377\375\375\377\376\376" \
-  "\377\377\377\377\377\377\376\377\376\377\377\377\377\373\202\377\377" \
-  "\377\6\376\376\377\350\365\333\222\312K\215\306A\217\304>\212\306@\202" \
-  "\214\305@\6\213\310\77\212\307>\242\322d\370\373\364\377\377\377\377" \
-  "\377\375\377\377\377\377\276\377\377\377\203::<\3;;=::<99;\202;;=\202" \
-  "::<\1\346\346\350\377\377\377\377\222\377\377\377\2\376\376\376;;=\202" \
-  "::<\202;;=\205::<\377\377\377\377\275\377\377\377\4\377\377\375\377\377" \
-  "\377\377\377\373\377\376\374\202\376\377\377\12\377\377\375\377\377\377" \
-  "\376\377\375\342\360\317\232\315V\214\306<\220\306=\215\306A\215\306" \
-  "C\215\306A\210\214\306>\202\215\307\77\7\215\306A\214\306>\214\305@\213" \
-  "\307A\214\305@\230\315W\341\361\315\203\377\377\377\2\376\376\374\374" \
-  "\377\375\202\377\377\377\2\377\377\375\377\376\377\202\377\377\377\13" \
-  "\352\364\331\221\311J\215\306A\213\310=\216\306\77\214\305@\214\306<" \
-  "\242\322e\370\373\364\376\376\377\377\377\375\377\377\377\377\277\377" \
-  "\377\377\1``b\202::<\2;;=99;\202;;=\4::<;;=::<\316\316\320\377\377\377" \
-  "\377\222\377\377\377\4\316\316\316;;=::<99;\202::<\2;;=::<\202;;=\3:" \
-  ":<\376\376\376\377\377\377\202\376\376\376\377\377\377\377\271\377\377" \
-  "\377\17\376\377\377\376\376\374\377\376\374\376\377\377\377\377\377\377" \
-  "\377\375\376\377\377\370\373\364\277\336\222\215\305<\214\305@\215\307" \
-  "\77\212\307>\215\307\77\213\307A\211\214\306>\16\216\306A\214\305B\213" \
-  "\307A\214\306>\215\305<\213\305=\215\306A\214\306<\215\305>\300\337\223" \
-  "\370\373\362\376\376\377\377\377\375\376\377\377\204\377\377\377\16\377" \
-  "\376\377\376\376\377\376\377\377\352\364\331\222\312K\215\306A\214\306" \
-  "<\214\305@\243\321d\371\373\360\376\376\377\376\377\377\377\377\377\376" \
-  "\377\377\377\377\377\377\273\377\377\377\4\376\376\376\377\377\377\376" \
-  "\376\376lln\203::<\1;;=\20299;\1;;=\202::<\1\266\266\270\377\377\377" \
-  "\377\222\377\377\377\5\316\316\316::<;;=::<;;=\205::<\3kkm\377\377\377" \
-  "\376\376\376\377\377\377\377\274\377\377\377\14\377\377\375\376\377\377" \
-  "\377\377\377\377\377\375\376\376\376\367\374\365\244\317c\214\305@\215" \
-  "\307=\211\306=\213\307A\215\306A\202\212\306@\1\213\310<\210\214\306" \
-  ">\202\212\307>\3\212\307<\214\306>\216\306\77\202\214\306>\12\215\305" \
-  "<\215\307\77\212\306@\242\322b\371\374\365\377\377\375\376\376\374\376" \
-  "\377\377\377\376\377\376\377\377\202\377\377\377\13\376\377\375\376\376" \
-  "\377\377\377\377\350\365\333\225\311K\214\305B\242\320c\371\374\361\377" \
-  "\377\377\376\377\377\377\376\377\377\377\377\377\300\377\377\377\7\221" \
-  "\221\223::<99;::<;;=::<;;=\203::<\1\234\234\236\377\377\377\377\222\377" \
-  "\377\377\2\250\250\25099;\206::<\3;;=::<jjl\377\377\377\377\275\377\377" \
-  "\377\202\377\376\377\16\376\377\377\377\377\375\376\376\376\352\364\333" \
-  "\223\312K\220\306=\215\306A\214\305B\213\310=\215\306C\215\305>\216\306" \
-  "\77\215\305>\215\305@\210\214\306>\37\215\305@\215\307\77\212\306@\215" \
-  "\307\77\214\304\77\215\306A\212\307;\212\306@\214\306>\216\307B\214\306" \
-  ">\222\312K\354\364\334\377\376\377\377\377\377\377\377\373\376\377\377" \
-  "\377\375\376\376\377\375\377\377\377\377\376\377\377\377\377\376\376" \
-  "\377\347\365\333\260\327z\371\374\363\375\377\376\376\377\377\377\376" \
-  "\377\377\377\377\377\377\375\377\377\377\377\276\377\377\377\3\376\376" \
-  "\376\234\234\23699;\203;;=\205::<\1\221\221\223\377\377\377\377\222\377" \
-  "\377\377\2\234\234\234;;=\204::<\202;;=\3::<;;=\235\235\237\377\377\377" \
-  "\377\276\377\377\377\202\377\377\375\15\376\377\377\367\374\365\223\312" \
-  "K\214\306>\213\310\77\215\305@\214\306<\215\307=\214\305@\213\307A\211" \
-  "\305\77\215\307\77\215\305>\210\214\306>\20\215\306A\213\305=\215\307" \
-  "=\214\305@\215\306A\214\306>\213\304A\220\305\77\216\306\77\212\306@" \
-  "\215\305@\213\307A\221\311L\367\375\363\376\377\377\377\377\377\202\377" \
-  "\377\373\1\377\375\376\202\377\377\377\4\377\376\377\376\377\377\377" \
-  "\376\377\376\377\377\203\377\377\377\3\377\376\377\376\376\377\374\377" \
-  "\375\377\377\377\377\277\377\377\377\2\265\265\267<<>\20299;\7::<;;=" \
-  "::<99;;;=::<lln\377\377\377\377\222\377\377\377\3\221\221\221::<;;=\205" \
-  "::<\3;;=::<\234\234\236\377\377\377\377\276\377\377\377\17\376\377\377" \
-  "\377\377\377\366\373\364\244\317c\220\306=\213\310\77\212\306@\211\307" \
-  "@\216\306\77\215\305@\215\307\77\213\310\77\215\307\77\215\305>\214\305" \
-  "@\210\214\306>\22\216\306A\215\307\77\213\305=\216\306\77\214\306>\212" \
-  "\307>\213\310\77\214\305@\215\306C\214\306<\215\307=\215\305>\213\310" \
-  "=\242\320d\372\372\362\376\377\375\377\375\377\377\377\375\202\376\377" \
-  "\377\5\377\377\377\377\377\375\377\377\377\377\377\375\377\377\377\202" \
-  "\377\376\377\5\376\377\375\376\377\377\377\377\377\377\375\376\377\377" \
-  "\375\377\377\377\377\274\377\377\377\5\376\376\376\377\377\377\316\316" \
-  "\320::<;;=\202::<\1;;=\202::<\3""99;::<kkm\377\377\377\377\222\377\377" \
-  "\377\2kkm::<\203;;=\205::<\1\264\264\264\377\377\377\377\275\377\377" \
-  "\377\10\377\376\377\376\377\377\377\377\377\300\336\224\212\307>\214" \
-  "\306<\214\306>\211\307>\231\214\306>\1\216\306\77\203\214\306>\2\214" \
-  "\305@\266\334\207\202\377\377\377\7\377\376\377\377\377\377\377\376\377" \
-  "\377\377\375\377\377\377\377\377\375\376\377\377\377\377\377\377\303" \
-  "\377\377\377\1\376\376\376\202\377\377\377\1\316\316\316\206::<\6;;=" \
-  "::<;;=FFH\377\377\377\376\376\376\205\377\377\377\1\376\376\376\377\377" \
-  "\377\377\212\377\377\377\1lln\202::<\3;;=99;;;=\204::<\3\317\317\317" \
-  "\377\377\377\376\376\376\377\377\377\377\273\377\377\377\10\377\375\377" \
-  "\374\377\375\343\361\320\214\306>\215\306A\214\304=\212\307>\215\305" \
-  ">\230\214\306>\20\214\306<\213\304\77\212\307>\212\306B\214\306<\212" \
-  "\307>\220\304>\337\363\316\377\376\377\377\377\377\376\377\377\377\377" \
-  "\377\376\376\377\377\377\377\376\376\376\376\377\377\377\377\377\377" \
-  "\302\377\377\377\1\376\376\376\202\377\377\377\2\376\376\376\377\377" \
-  "\377\204::<\1;;=\202::<\3;;=99;;;=\203\377\377\377\1\376\376\376\202" \
-  "\377\377\377\1\376\376\376\377\377\377\377\213\377\377\377\2SSU;;=\202" \
-  "::<\2;;=99;\204::<\1\315\315\315\203\377\377\377\1\376\376\376\377\377" \
-  "\377\377\271\377\377\377\10\376\376\376\377\377\377\233\316W\214\305" \
-  "@\212\306@\216\306=\214\305@\215\305@\230\214\306>\17\214\306<\215\306" \
-  "C\211\306=\213\307A\214\304\77\212\306@\214\305B\234\313W\376\377\375" \
-  "\377\377\377\376\377\375\377\377\375\376\377\377\376\376\377\376\377" \
-  "\375\377\377\377\377\302\377\377\377\1\376\376\376\202\377\377\377\4" \
-  "\376\376\376\377\377\377\376\376\376;;=\206::<\202;;=\3::<\377\377\377" \
-  "\376\376\376\203\377\377\377\3\376\376\376\377\377\377\376\376\376\377" \
-  "\377\377\377\212\377\377\377\3::<99;;;=\202::<\10;;=::<;;=99;;;=\363" \
-  "\363\363\377\377\377\376\376\376\377\377\377\377\274\377\377\377\7\323" \
-  "\354\265\214\305@\215\307\77\215\306A\216\305C\213\304\77\212\307<\230" \
-  "\214\306>\20\215\307\77\215\304B\214\305@\214\306>\215\305>\215\307=" \
-  "\212\307<\215\307\77\323\351\270\377\376\377\377\377\377\376\376\376" \
-  "\376\377\375\376\376\376\376\377\377\377\376\374\377\377\377\377\302" \
-  "\377\377\377\202\376\376\376\202\377\377\377\2\376\376\376FFH\210::<" \
-  "\2;;=\316\316\316\202\377\377\377\1\376\376\376\377\377\377\377\215\377" \
-  "\377\377\1\376\376\376\202;;=\4""99;;;=::<;;=\202::<\2;;=::<\377\377" \
-  "\377\377\277\377\377\377\7\231\316X\220\304>\214\305@\215\307\77\214" \
-  "\306<\214\311>\214\305@\231\214\306>\11\215\304B\214\306>\215\306A\214" \
-  "\306<\215\306A\214\305B\215\307\77\234\315X\375\377\374\204\377\377\377" \
-  "\2\376\377\377\377\376\377\377\377\377\377\304\377\377\377\202\376\376" \
-  "\376\4\377\377\377jjl::<99;\202;;=\205::<\7\316\316\316\377\377\377\376" \
-  "\376\376\377\377\377\376\376\376\377\377\377\376\376\376\377\377\377" \
-  "\377\212\377\377\377\6\363\363\363::<99;;;=::<;;=\202::<\1;;=\202::<" \
-  "\377\377\377\377\276\377\377\377\2\342\361\320\214\306<\202\215\305>" \
-  "\4\212\307>\215\307=\211\306=\215\305>\230\214\306>\2\213\310=\214\306" \
-  "<\202\214\305@\7\215\306A\214\306>\215\307=\214\304\77\211\310<\343\362" \
-  "\321\377\377\375\202\377\376\377\2\377\377\375\376\376\376\377\377\377" \
-  "\377\310\377\377\377\4kkm::<;;=::<\202;;=\202::<\3;;=::<\316\316\316" \
-  "\202\377\377\377\1\376\376\376\377\377\377\377\215\377\377\377\3\316" \
-  "\316\316::<;;=\202::<\1;;=\204::<\1__a\202\377\377\377\3\376\376\376" \
-  "\377\377\377\376\376\376\377\377\377\377\271\377\377\377\4\270\333\207" \
-  "\214\306>\214\305@\214\306>\203\214\305@\1\215\305>\230\214\306>\17\215" \
-  "\306A\213\310=\212\307<\214\306>\214\306<\215\306A\214\306>\214\305@" \
-  "\213\306E\267\332\206\377\377\375\376\377\377\377\377\375\377\377\377" \
-  "\377\377\375\377\377\377\377\303\377\377\377\1\376\376\376\204\377\377" \
-  "\377\6lln;;=::<99;::<;;=\204::<\1\250\250\250\204\377\377\377\1\376\376" \
-  "\376\377\377\377\377\213\377\377\377\1\316\316\316\203::<\1;;=\205::" \
-  "<\1lln\203\377\377\377\1\376\376\376\377\377\377\377\272\377\377\377" \
-  "\10\232\315V\215\305@\212\306@\215\305>\214\306<\215\304D\215\305<\212" \
-  "\306@\230\214\306>\3\217\304@\214\306<\215\306A\202\215\305@\7\214\306" \
-  ">\214\305@\212\307>\215\305<\233\316W\376\376\377\376\377\375\203\377" \
-  "\377\377\1\376\377\377\377\377\377\377\305\377\377\377\3\376\376\376" \
-  "\377\377\377\234\234\236\203::<\2;;=99;\204::<\1\234\234\234\202\377" \
-  "\377\377\1\376\376\376\377\377\377\377\215\377\377\377\5\316\316\320" \
-  "::<;;=::<;;=\202::<\1;;=\202::<\1kkm\377\377\377\377\266\377\377\377" \
-  "\10\375\377\374\376\377\377\376\376\376\377\377\375\377\377\377\376\377" \
-  "\377\377\377\375\360\371\350\250\214\306>\4\214\305@\212\307>\360\371" \
-  "\346\376\377\375\202\377\377\377\1\377\377\375\377\377\377\377\304\377" \
-  "\377\377\1\376\376\376\203\377\377\377\1\234\234\234\211::<\1\234\234" \
-  "\234\205\377\377\377\1\376\376\376\377\377\377\377\212\377\377\377\4" \
-  "\316\316\320llnkkmlln\203kkm\1jjl\202kkm\1\221\221\223\377\377\377\377" \
-  "\270\377\377\377\1\377\376\377\202\377\377\377\3\375\376\377\377\377" \
-  "\375\341\361\315\251\214\306>\2\215\307\77\342\360\314\377\377\377\377" \
-  "\310\377\377\377\202\376\376\376\202\377\377\377\2\266\266\266kkk\210" \
-  "kkm\1\265\265\265\206\377\377\377\1\376\376\376\377\377\377\377\211\377" \
-  "\377\377\1\376\376\376\203\377\377\377\3\376\376\376\377\377\377\376" \
-  "\376\376\202\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376" \
-  "\377\377\377\377\264\377\377\377\1\377\376\377\205\377\377\377\2\375" \
-  "\377\374\310\340\246\252\214\306>\1\310\340\246\377\377\377\377\307\377" \
-  "\377\377\1\376\376\376\202\377\377\377\3\375\375\375\377\377\377\376" \
-  "\376\376\211\377\377\377\7\376\376\376\377\377\377\376\376\376\377\377" \
-  "\377\376\376\376\377\377\377\376\376\376\377\377\377\377\213\377\377" \
-  "\377\1\376\376\376\204\377\377\377\1\376\376\376\206\377\377\377\1\376" \
-  "\376\376\377\377\377\377\263\377\377\377\1\377\376\377\204\377\377\377" \
-  "\3\376\376\377\376\377\375\304\342\234\251\214\306>\7\215\305@\305\343" \
-  "\235\376\376\377\377\377\377\376\376\377\377\376\377\377\377\375\377" \
-  "\377\377\377\306\377\377\377\1\376\376\376\217\377\377\377\3\376\376" \
-  "\376\377\377\377\376\376\376\377\377\377\377\214\377\377\377\5\376\376" \
-  "\376\377\377\377\376\376\376\377\377\377\376\376\376\203\377\377\377" \
-  "\1\376\376\376\377\377\377\377\267\377\377\377\1\377\377\375\202\377" \
-  "\377\377\3\377\376\377\376\377\375\305\342\237\251\214\306>\3\215\305" \
-  "@\303\344\235\376\376\376\202\377\377\377\1\377\376\377\377\377\377\377" \
-  "\305\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\214\377" \
-  "\377\377\1\376\376\376\377\377\377\377\216\377\377\377\1\376\376\376" \
-  "\203\377\377\377\1\376\376\376\206\377\377\377\1\376\376\376\377\377" \
-  "\377\377\266\377\377\377\5\376\377\377\376\376\377\377\376\377\377\377" \
-  "\377\305\342\242\251\214\306>\4\215\306A\302\341\236\377\377\375\376" \
-  "\376\376\377\377\377\377\305\377\377\377\1\376\376\376\203\377\377\377" \
-  "\1\376\376\376\214\377\377\377\1\376\376\376\377\377\377\377\231\377" \
-  "\377\377\3\376\376\376\377\377\377\376\376\376\377\377\377\377\264\377" \
-  "\377\377\2\376\376\376\377\376\377\202\376\377\377\202\377\377\377\1" \
-  "\305\342\240\251\214\306>\7\214\305@\306\343\240\377\376\374\377\377" \
-  "\377\376\377\377\377\377\377\376\376\376\377\377\377\377\325\377\377" \
-  "\377\1\376\376\376\377\377\377\377\222\377\377\377\1\376\376\376\205" \
-  "\377\377\377\1\376\376\376\377\377\377\377\265\377\377\377\4\377\377" \
-  "\375\377\376\377\375\377\376\376\377\375\202\377\377\377\1\305\343\235" \
-  "\251\214\306>\4\213\310\77\306\341\234\377\376\377\377\377\377\202\376" \
-  "\377\375\377\377\377\377\311\377\377\377\1\377\377\375\215\377\377\377" \
-  "\1\376\376\376\377\377\377\377\377\377\377\377\314\377\377\377\3\377" \
-  "\377\375\377\377\377\376\377\375\203\377\377\377\11\376\377\377\345\360" \
-  "\320\214\305@\214\306>\214\305@\214\304\77\214\306<\215\305>\212\307" \
-  ">\231\214\306>\1\214\305@\202\215\307\77\205\214\306>\5\212\307>\214" \
-  "\306>\342\360\315\377\377\377\376\376\376\202\377\377\377\1\377\377\375" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\244" \
-  "\377\377\377\3\377\376\377\377\377\377\376\377\375\203\377\377\377\11" \
-  "\376\377\377\362\371\347\214\306>\214\305B\215\310<\215\306A\214\305" \
-  "@\215\307\77\214\305@\231\214\306>\4\215\307\77\213\305=\214\306>\215" \
-  "\307\77\202\214\306>\5\215\307\77\214\306>\216\306\77\215\306A\360\367" \
-  "\345\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \
-  "\251\377\377\377\2\377\376\377\377\377\375\203\377\377\377\13\377\377" \
-  "\375\377\377\377\375\377\374\233\316W\214\305@\213\304\77\212\306@\215" \
-  "\307\77\214\305@\215\306A\214\305@\230\214\306>\3\215\307\77\214\306" \
-  ">\215\306A\203\214\305@\7\215\306A\214\305@\215\304B\232\315T\377\377" \
-  "\375\376\377\377\377\377\375\377\377\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\250\377\377\377\1\377\377\375\205\377\377\377" \
-  "\11\377\376\377\267\333\204\213\307A\213\307C\215\307\77\213\304\77\215" \
-  "\307\77\215\305<\212\306@\231\214\306>\1\215\307\77\203\214\305@\202" \
-  "\214\306>\7\215\307\77\212\306@\267\333\204\377\376\377\376\377\377\377" \
-  "\377\375\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\247\377\377\377\17\377\377\375\377\377\377\377\377\375" \
-  "\376\376\376\377\377\377\377\377\375\376\376\377\334\354\305\211\306" \
-  "=\213\307A\213\305;\215\306A\214\306<\215\305>\213\307A\232\214\306>" \
-  "\202\214\305@\11\214\306>\214\306<\214\306>\215\307\77\212\311=\333\355" \
-  "\305\377\376\377\377\377\377\376\376\376\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\377\377\252\377\377\377\3\377\377\375\377" \
-  "\377\377\377\376\377\203\377\377\375\7\233\314V\215\307\77\215\305>\214" \
-  "\306>\215\307\77\214\305@\212\307>\232\214\306>\14\214\305@\214\306>" \
-  "\214\306<\215\307=\215\307\77\214\305@\232\315V\374\377\373\376\376\377" \
-  "\377\377\375\377\377\377\376\376\376\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\377\255\377\377\377\10\377\377\375\377\376" \
-  "\377\324\353\267\214\304\77\215\305>\214\305@\212\307<\214\305@\232\214" \
-  "\306>\2\215\307\77\215\306A\202\214\306>\4\215\307\77\213\304\77\215" \
-  "\306E\316\346\254\202\377\377\377\3\377\377\375\376\376\377\376\377\377" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\247" \
-  "\377\377\377\1\376\376\376\206\377\377\377\10\377\377\373\375\376\377" \
-  "\232\315W\214\306>\215\307=\211\307>\215\306A\215\305>\232\214\306>\1" \
-  "\214\305@\202\215\307\77\13\214\305@\215\306E\227\317P\377\377\377\377" \
-  "\377\375\376\377\377\377\377\377\377\377\375\375\377\376\377\377\377" \
-  "\377\377\375\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \
-  "\377\377\254\377\377\377\20\376\377\377\377\375\377\331\356\303\215\305" \
-  "@\213\310\77\215\305>\216\306\77\213\307A\215\306A\214\306<\214\306>" \
-  "\216\306\77\213\304\77\212\307<\214\306>\215\305@\210\214\306>\1\214" \
-  "\305@\202\215\307\77\205\214\306>\10\214\305@\212\307>\215\305>\214\305" \
-  "@\215\305>\214\305@\215\305>\331\356\305\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\377\377\264\377\377\377\20\376\376\374\377" \
-  "\377\375\376\376\374\261\330{\214\306>\216\306A\214\306>\213\307A\215" \
-  "\305>\215\306A\215\307\77\213\304A\215\307\77\214\305@\214\306<\216\306" \
-  "A\210\214\306>\4\215\307\77\213\305=\214\306>\215\307\77\202\214\306" \
-  ">\12\215\307\77\214\306>\212\307>\220\305\77\212\307>\214\306>\213\310" \
-  "=\214\306<\262\327z\376\377\377\377\377\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\265\377\377\377\17\374\377\377\377\377\377\370" \
-  "\373\362\241\321d\211\310<\215\305>\215\305@\216\306=\214\305@\214\306" \
-  ">\215\307\77\214\306>\212\307<\212\306@\212\307<\210\214\306>\3\215\307" \
-  "\77\214\306>\215\306A\203\214\305@\12\215\306A\214\305@\215\305>\212" \
-  "\307>\213\307A\216\305C\215\307=\242\322e\371\372\364\375\377\376\377" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\264\377" \
-  "\377\377\1\375\377\374\203\377\377\377\4\352\364\333\223\311O\212\306" \
-  "@\215\305@\202\213\310\77\202\214\306>\4\216\307F\213\305=\215\307\77" \
-  "\215\305@\211\214\306>\1\215\307\77\203\214\305@\202\214\306>\1\215\307" \
-  "\77\202\214\305@\6\216\305C\215\307\77\225\311K\351\363\332\377\377\377" \
-  "\376\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \
-  "\377\377\265\377\377\377\17\377\375\376\377\376\377\377\377\377\377\377" \
-  "\375\352\365\327\223\313L\212\307<\215\305>\214\305@\215\307=\214\305" \
-  "@\214\306<\213\310\77\213\304\77\220\305A\212\214\306>\202\214\305@\12" \
-  "\214\306>\214\306<\214\306>\215\307\77\214\306>\213\310=\215\307=\225" \
-  "\311K\347\365\334\377\377\375\377\377\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\267\377\377\377\1\377\377\375\202\377\377\377" \
-  "\13\377\376\377\376\377\377\353\363\334\245\320d\214\305B\214\305@\215" \
-  "\306A\213\305=\214\306>\213\307A\213\310=\213\214\306>\5\214\305@\214" \
-  "\306>\214\306<\215\307=\215\307\77\202\214\305@\5\214\306<\242\322e\351" \
-  "\363\332\377\377\375\376\376\376\377\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\267\377\377\377\1\376\376\374\202\377\377" \
-  "\375\6\376\377\377\377\376\377\377\377\375\371\372\364\255\330|\217\304" \
-  ">\202\212\306@\2\215\306A\214\303A\202\214\305@\211\214\306>\2\215\307" \
-  "\77\215\306A\202\214\306>\6\215\307\77\213\304\77\215\306E\215\305>\262" \
-  "\327z\371\372\364\203\377\377\377\2\376\377\377\377\377\375\377\377\377" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\264\377\377\377" \
-  "\1\376\376\376\202\377\377\377\2\377\377\375\377\376\377\203\377\377" \
-  "\377\6\377\377\375\331\356\303\233\314W\215\310<\214\305@\215\307\77" \
-  "\214\214\306>\1\214\305@\202\215\307\77\7\214\305@\215\306E\227\317P" \
-  "\331\356\305\376\377\377\375\377\376\376\377\377\202\377\377\377\2\377" \
-  "\377\375\376\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\274\377\377\377\10\377\377\375\377\376\377\365\375\362" \
-  "\307\342\237\234\315Z\212\306@\212\307>\214\305@\202\215\307\77\16\214" \
-  "\306>\215\307\77\214\306>\215\306A\214\306>\213\310\77\214\306>\215\305" \
-  "<\216\306A\213\310\77\212\307>\232\315T\307\341\242\370\373\362\377\377" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\304\377\377" \
-  "\377\1\377\377\375\202\377\377\377\10\377\376\377\376\376\374\335\354" \
-  "\303\270\333\207\222\311J\214\305@\215\306A\213\305=\202\214\306>\13" \
-  "\215\307\77\216\306\77\215\305>\212\306@\212\307>\226\312K\270\333\211" \
-  "\334\354\307\376\377\377\376\376\376\377\377\375\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\377\377\377\377\306\377\377\377\2\376\377" \
-  "\375\376\377\377\204\377\377\377\16\350\366\334\332\354\302\311\341\245" \
-  "\306\341\234\305\342\237\304\341\237\305\342\240\305\342\237\334\355" \
-  "\303\352\364\333\377\377\375\377\375\376\377\376\377\377\377\375\377" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\307\377" \
-  "\377\377\15\376\376\376\377\376\377\377\377\375\377\377\373\376\377\377" \
-  "\376\377\375\376\377\377\377\377\375\377\377\377\376\376\376\376\377" \
-  "\377\376\377\375\377\377\377\202\377\376\377\204\377\377\377\1\376\376" \
-  "\376\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \
-  "\307\377\377\377\3\376\377\377\377\377\377\376\376\376\202\377\377\377" \
-  "\1\376\376\376\210\377\377\377\3\375\377\376\376\377\377\377\377\377" \
-  "\203\377\376\377\4\376\377\375\376\377\377\377\377\377\377\376\377\377" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\304\377" \
-  "\377\377\10\377\377\375\377\376\377\377\377\373\377\377\377\375\377\376" \
-  "\376\377\377\376\376\376\377\376\377\202\376\377\377\1\377\377\377\202" \
-  "\376\376\376\202\377\377\377\202\376\377\377\5\376\377\375\377\377\377" \
-  "\376\376\374\377\377\377\377\377\375\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\377\307\377\377\377\1\376\376\377\202\377" \
-  "\377\377\2\377\377\375\376\376\377\202\377\377\377\2\376\377\375\377" \
-  "\377\375\204\377\377\377\202\377\377\375\1\376\377\375\202\376\377\377" \
-  "\202\377\377\375\202\377\377\377\1\377\376\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\377\377\377\310\377\377\377\5\377\377\375" \
-  "\377\376\377\377\377\375\376\376\377\377\376\377\207\377\377\377\202" \
-  "\377\376\377\1\376\376\376\377\377\377\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\377\261\377\377\377" \
-  "\1\376\376\376\210\377\377\377\3\376\376\376\377\377\377\376\376\376" \
-  "\331\377\377\377\1\376\376\376\204\377\377\377\1\376\376\376\257\377" \
-  "\377\377\1\376\376\376\212\377\377\377\1\376\376\376\211\377\377\377" \
-  "\1\376\376\376\221\377\377\377\1\376\376\376\203\377\377\377\1\376\376" \
-  "\376\205\377\377\377\1\376\376\376\312\377\377\377\1\376\376\376\214" \
-  "\377\377\377\1\376\376\376\202\377\377\377\6\377\376\375\377\377\377" \
-  "\376\377\377\377\377\377\377\376\377\376\377\377\270\377\377\377\7\376" \
-  "\377\377\377\376\377\376\377\377\377\377\375\377\377\377\377\375\377" \
-  "\377\376\377\273\377\377\377\1\376\376\376\202\377\377\377\1\376\376" \
-  "\376\302\377\377\377\1\376\376\376\305\377\377\377\1\376\376\376\241" \
-  "\377\377\377\1\376\376\376\214\377\377\377\1\376\376\376\235\377\377" \
-  "\377\1\376\376\376\202\377\377\377\1\376\376\376\202\377\377\377\1\376" \
-  "\376\376\202\377\377\377\1\376\376\376\252\377\377\377\1\376\376\376" \
-  "\212\377\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377\377" \
-  "\1\376\376\376\251\377\377\377\202\376\376\376\215\377\377\377\1\376" \
-  "\376\376\202\377\377\377\1\376\376\376\205\377\377\377\1\376\376\376" \
-  "\224\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\202\377" \
-  "\377\377\1\376\376\376\232\377\377\377\1\376\376\376\202\377\377\377" \
-  "\1\376\376\376\202\377\377\377\1\376\376\376\206\377\377\377\1\376\376" \
-  "\376\243\377\377\377\1\376\376\376\204\377\377\377\1\376\376\376\202" \
-  "\377\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377\377\2" \
-  "\376\376\376\377\377\377\202\377\377\375\3\377\377\377\376\377\377\377" \
-  "\377\375\202\377\376\377\1\377\377\377\270\377\376\377\14\377\377\377" \
-  "\377\376\377\377\376\374\377\377\375\375\376\377\376\377\377\377\377" \
-  "\375\376\376\376\377\377\377\376\376\376\377\377\377\376\376\376\203" \
-  "\377\377\377\1\376\376\376\266\377\377\377\1\376\376\376\203\377\377" \
-  "\377\1\376\376\376\202\377\377\377\1\376\376\376\214\377\377\377\202" \
-  "\376\376\376\207\377\377\377\1\376\376\376\272\377\377\377\1\376\376" \
-  "\376\252\377\377\377\202\376\376\376\247\377\377\377\5\376\376\376\377" \
-  "\377\377\376\376\376\377\377\377\376\376\376\202\377\377\377\1\376\376" \
-  "\376\203\377\377\377\1\376\376\376\311\377\377\377\1\376\376\376\221" \
-  "\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\302\377\377" \
-  "\377\1\376\376\376\207\377\377\377\1\346\346\346\204\316\316\316\10\317" \
-  "\317\317\315\315\315\316\316\316\363\363\365\377\377\377\376\376\376" \
-  "\377\377\377\376\376\376\204\377\377\377\1\376\376\376\202\377\377\377" \
-  "\1\376\376\376\234\377\377\377\1\376\376\376\262\377\377\377\1\376\376" \
-  "\376\213\377\377\377\1\377\377\375\202\376\377\377\1\376\376\377\202" \
-  "\377\377\377\2\377\376\377\377\377\375\270\276\317\331\1\377\376\377" \
-  "\205\377\377\377\3\376\377\375\377\377\375\376\376\376\257\377\377\377" \
-  "\1\376\376\376\210\377\377\377\202\376\376\376\210\377\377\377\1\376" \
-  "\376\376\220\377\377\377\1\376\376\376\207\377\377\377\1\376\376\376" \
-  "\243\377\377\377\1\376\376\376\203\377\377\377\3\376\376\376\377\377" \
-  "\377\376\376\376\207\377\377\377\1\376\376\376\331\377\377\377\12\376" \
-  "\376\376\377\377\377\235\235\235kkmllnkkmllnjjlkkm\346\346\346\202\377" \
-  "\377\377\1\376\376\376\237\377\377\377\2\346\346\346\317\317\317\204" \
-  "\316\316\316\2\317\317\317\346\346\346\234\377\377\377\1\376\376\376" \
-  "\203\377\377\377\1\376\376\376\202\377\377\377\1\332\332\332\203\316" \
-  "\316\316\1\317\317\317\202\316\316\316\213\377\377\377\5\346\346\346" \
-  "\317\317\317\315\315\315\316\316\316\315\315\315\252\316\316\316\1\363" \
-  "\363\363\205\377\377\377\1\376\376\376\212\377\377\377\1\376\376\376" \
-  "\211\377\377\377\4\346\346\346\250\250\250\204\204\206``b\202::<\1;;" \
-  "=\202::<\3;;=99;;;=\203::<\4lln\220\220\222\266\266\266\363\363\363\202" \
-  "\376\376\376\240\377\377\377\1\346\346\346\202\316\316\316\10\317\317" \
-  "\317\315\315\315\317\317\317\316\316\316\332\332\332\376\376\376\377" \
-  "\377\377\376\376\376\203\377\377\377\1\376\376\376\241\377\377\377\6" \
-  "\376\376\376\377\377\377\346\346\346\316\316\320\317\317\321\316\316" \
-  "\320\203\316\316\316\2\347\347\347\376\376\376\205\377\377\377\1\376" \
-  "\376\376\202\377\377\375\5\376\377\377\377\377\375\377\377\377\317\334" \
-  "\344\37V\177\270\0>i\12\37U{\317\334\344\377\376\374\377\377\375\376" \
-  "\377\377\377\376\374\376\377\377\376\376\376\377\377\377\363\363\363" \
-  "\202\316\316\316\1\315\315\315\202\317\317\317\251\316\316\316\1\332" \
-  "\332\332\202\377\377\377\1\376\376\376\203\377\377\377\202\376\376\376" \
-  "\204\377\377\377\3\346\346\346\316\316\316\316\316\320\204\316\316\316" \
-  "\2\346\346\346\376\376\376\212\377\377\377\1\347\347\347\206\316\316" \
-  "\316\2\317\317\317\363\363\363\250\377\377\377\2\376\376\376\331\331" \
-  "\331\206\316\316\316\1\332\332\332\202\377\377\377\1\376\376\376\204" \
-  "\377\377\377\1\376\376\376\203\377\377\377\3\332\332\332\316\316\316" \
-  "\316\316\320\250\316\316\316\1\363\363\363\205\377\377\377\1\376\376" \
-  "\376\242\377\377\377\4\346\346\346::<;;=99;\204::<\1\204\204\206\237" \
-  "\377\377\377\1\376\376\376\202\377\377\377\3\235\235\235::<;;=\202::" \
-  "<\3;;=::<\235\235\235\202\377\377\377\1\376\376\376\232\377\377\377\1" \
-  "\376\376\376\205\377\377\377\4kkm;;;99;;;=\202::<\1;;;\213\377\377\377" \
-  "\4\234\234\234:::::<;;=\202::<\1;;;\250::<\1\316\316\316\202\377\377" \
-  "\377\1\376\376\376\203\377\377\377\1\376\376\376\212\377\377\377\203" \
-  "\376\376\376\203\377\377\377\3\346\346\346\250\250\250```\204::<\202" \
-  ";;=\202::<\3;;=::<;;=\203::<\1;;=\202::<\5;;=::<```\265\265\265\362\362" \
-  "\362\203\377\377\377\1\376\376\376\233\377\377\377\1\234\234\236\204" \
-  "::<\5""99;;;=::<\333\333\335\376\376\376\203\377\377\377\1\376\376\376" \
-  "\241\377\377\377\4\376\376\376\377\377\377\363\363\363FFH\202::<\1;;" \
-  "=\203::<\1\234\234\234\210\377\377\377\6\376\377\377\377\377\375\375" \
-  "\376\377\356\363\366\40Vz\0\77h\270\0=i\20\0>i\22Ip\356\363\367\376\377" \
-  "\377\377\377\375\377\377\377\376\376\377\377\376\377\377\377\377\315" \
-  "\315\315:::::<;;=::<99;;;;\250::<\1kkm\205\377\377\377\1\376\376\376" \
-  "\203\377\377\377\4\376\376\376\377\377\377\376\376\376\234\234\234\203" \
-  "::<\6;;=::<:::\234\234\234\377\377\377\376\376\376\211\377\377\377\3" \
-  "\332\332\332:::;;=\202::<\202;;=\2::<\204\204\206\250\377\377\377\2\364" \
-  "\364\364FFF\204::<\202:::\1\234\234\234\206\377\377\377\1\376\376\376" \
-  "\204\377\377\377\2kkk;;=\251::<\1\316\316\316\202\377\377\377\1\376\376" \
-  "\376\203\377\377\377\1\376\376\376\240\377\377\377\6\376\376\376\234" \
-  "\234\236::<;;=::<;;=\203::<\2FFH\362\362\362\235\377\377\377\1\376\376" \
-  "\376\203\377\377\377\3\234\234\236::<;;=\202::<\3;;=::<\234\234\236\203" \
-  "\377\377\377\1\376\376\376\233\377\377\377\1\376\376\376\203\377\377" \
-  "\377\7kkm::<;;=::<;;=::<;;=\213\377\377\377\4\235\235\235::<;;=99;\202" \
-  ";;=\251::<\1\315\315\315\203\377\377\377\202\376\376\376\213\377\377" \
-  "\377\1\376\376\376\202\377\377\377\6\376\376\376\377\377\377\315\315" \
-  "\315\205\205\205::<;;=\213::<\4;;=::<;;=::<\203;;=\204::<\4FFF\204\204" \
-  "\204\346\346\346\376\376\376\234\377\377\377\3\234\234\236::<;;=\202" \
-  "::<\4;;=99;::<``b\244\377\377\377\1\376\376\376\203\377\377\377\1xxz" \
-  "\202::<\10;;=99;;;=::<;;=\233\233\235\377\377\377\376\376\376\202\377" \
-  "\377\377\1\376\376\376\203\377\377\377\4\375\377\376\377\376\373\377" \
-  "\377\375\235\267\310\202\0>i\271\0=i\4\0\77j\237\266\306\377\376\377" \
-  "\377\375\374\202\376\377\377\4\377\377\377\376\376\376\316\316\31699" \
-  ";\202;;=\2::<;;=\251::<\1kkm\203\377\377\377\1\376\376\376\210\377\377" \
-  "\377\4\235\235\235::<99;;;=\203::<\1\235\235\235\214\377\377\377\2ll" \
-  "n99;\202;;=\1::<\203;;=\2\362\362\364\376\376\376\245\377\377\377\2\376" \
-  "\376\376\250\250\250\204::<\4;;=::<:::\346\346\346\203\377\377\377\1" \
-  "\376\376\376\205\377\377\377\3\376\376\376\377\377\377jjl\252::<\1\315" \
-  "\315\315\203\377\377\377\202\376\376\376\242\377\377\377\3\362\362\364" \
-  "GGI::<\202;;=\2""99;;;=\202::<\2""99;\235\235\235\237\377\377\377\3\376" \
-  "\376\376\377\377\377\235\235\237\202::<\202;;=\202::<\3\235\235\237\377" \
-  "\377\377\376\376\376\233\377\377\377\1\376\376\376\203\377\377\377\4" \
-  "\376\376\376\377\377\377kkm;;=\202::<\5""99;;;=99;\377\377\377\376\376" \
-  "\376\211\377\377\377\1\233\233\233\202::<\3;;=::<99;\251::<\1\317\317" \
-  "\317\205\377\377\377\1\376\376\376\214\377\377\377\3\376\376\376\347" \
-  "\347\347xxz\203::<\1;;=\202::<\1;;=\204::<\1;;=\203::<\1;;=\205::<\1" \
-  ";;=\203::<\1;;=\203::<\2\234\234\236\362\362\362\233\377\377\377\2\233" \
-  "\233\235;;=\204::<\1;;=\202::<\1\234\234\236\245\377\377\377\4\376\376" \
-  "\376\302\302\304::<;;=\206::<\1\235\235\237\202\377\377\377\1\376\376" \
-  "\376\203\377\377\377\7\375\376\377\377\377\377\377\377\375\376\377\377" \
-  "\377\377\377\177\235\265\0\77k\271\0\77j\7\0\77k\0\77j~\236\265\377\376" \
-  "\377\376\377\377\375\377\374\377\377\375\202\377\377\377\5\315\315\315" \
-  ";;=::<99;;;=\252::<\3kkm\377\377\377\376\376\376\203\377\377\377\1\376" \
-  "\376\376\203\377\377\377\1\376\376\376\202\377\377\377\3\233\233\233" \
-  "::<;;=\202::<\3;;=::<\234\234\234\202\377\377\377\1\376\376\376\211\377" \
-  "\377\377\4\264\264\264;;=::<;;=\204::<\3\247\247\251\377\377\377\376" \
-  "\376\376\245\377\377\377\1SSS\203::<\1;;=\202::<\1\204\204\204\213\377" \
-  "\377\377\4\376\376\376lln::<:9>\250::<\1\317\317\317\205\377\377\377" \
-  "\1\376\376\376\241\377\377\377\1\265\265\267\204::<\1;;=\204::<\1FFF" \
-  "\241\377\377\377\2\234\234\236;;=\204::<\2;;=\234\234\236\234\377\377" \
-  "\377\3\376\376\376\377\377\377\376\376\376\204\377\377\377\1kkm\203:" \
-  ":<\4;;=::<;;=\376\376\376\212\377\377\377\1\234\234\234\204::<\1;;=\251" \
-  "::<\1\316\316\316\203\377\377\377\202\376\376\376\215\377\377\377\4\234" \
-  "\234\234;;=::<;;=\202::<\1""99;\204::<\1;;=\203::<\1;;=\211::<\1""99" \
-  ";\207::<\2FFF\301\301\301\232\377\377\377\2\234\234\23699;\210::<\1\333" \
-  "\333\333\241\377\377\377\6\376\376\376\377\377\377\376\376\376\363\363" \
-  "\363FFH;;=\205::<\3;;=::<\234\234\236\206\377\377\377\7\377\376\377\377" \
-  "\377\377\377\377\375\375\376\377\377\376\377\201\235\263\0>g\272\0>i" \
-  "\13\0>e\177\236\263\377\375\374\377\377\377\377\377\375\376\376\376\377" \
-  "\376\377\377\377\377\316\316\316::<;;=\202::<\2""99;;;=\250::<\1kkm\204" \
-  "\377\377\377\5\376\376\376\377\377\377\376\376\376\377\377\377\376\376" \
-  "\376\202\377\377\377\2\376\376\376\234\234\234\206::<\1\234\234\234\215" \
-  "\377\377\377\2RRT;;=\205::<\1SSU\246\377\377\377\2\316\316\316999\206" \
-  "::<\1\316\316\316\202\377\377\377\3\376\376\376\377\377\377\376\376\376" \
-  "\207\377\377\377\3jjl::<:9>\250::<\1\316\316\316\203\377\377\377\202" \
-  "\376\376\376\242\377\377\377\2SSU99;\202;;=\204::<\4;;=99;::<\264\264" \
-  "\266\240\377\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377\377" \
-  "\1kkm\206::<\213\377\377\377\2\234\234\236;;=\216::<\4""99;;;=::<;;=" \
-  "\206::<\3;;=::<;;=\222::<\1\316\316\316\205\377\377\377\1\376\376\376" \
-  "\207\377\377\377\1\376\376\376\202\377\377\377\2\346\346\350__a\202:" \
-  ":<\3;;=::<;;=\204::<\1;;=\202::<\3;;=::<;;=\203::<\1;;=\202::<\2""99" \
-  ";;;=\202::<\1;;=\204::<\7;;=::<;;=::<;;=\204\204\206\363\363\363\203" \
-  "\377\377\377\3\376\376\376\377\377\377\376\376\376\222\377\377\377\4" \
-  "\234\234\236::<;;=99;\204::<\3;;=::<__a\244\377\377\377\1xxx\205::<\1" \
-  ";;=\203::<\1\234\234\236\213\377\377\377\3\177\236\263\0=i\0>i\211\0" \
-  "=i\2\0>j\0=i\202\1>j\2\0\77k\0>j\232\0>i\2\0>j\0\77k\202\1>j\2\0=i\0" \
-  ">j\211\0=i\3\0>i\0=i\177\236\263\206\377\377\377\6\316\316\316:::::<" \
-  ";;=::<;;=\217::<\1;;=\203::<\1;;=\202::<\1;;=\222::<\1kkk\205\377\377" \
-  "\377\1\376\376\376\206\377\377\377\1\234\234\236\206::<\1\234\234\236" \
-  "\215\377\377\377\3\234\234\234;;=::<\202;;=\203::<\3\316\316\320\377" \
-  "\377\377\376\376\376\240\377\377\377\1\376\376\376\202\377\377\377\3" \
-  "xxz::<;;=\202::<\3;;=::<__a\215\377\377\377\1kkm\204::<\1;;=\202::<\1" \
-  ";;=\242::<\1\316\316\316\205\377\377\377\1\376\376\376\240\377\377\377" \
-  "\1\265\265\265\202::<\5;;=::<;;=::<;;=\204::<\2TTV\376\376\376\237\377" \
-  "\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377\377\1kkm\206" \
-  "::<\213\377\377\377\3\234\234\23499;;;=\214::<\1""99;\207::<\1;;=\227" \
-  "::<\1\316\316\316\204\377\377\377\3\376\376\376\377\377\377\376\376\376" \
-  "\203\377\377\377\1\376\376\376\204\377\377\377\2\333\333\335FFH\214:" \
-  ":<\16``b\221\221\223\251\251\251\315\315\315\316\316\316\363\363\363" \
-  "\377\377\377\332\332\332\316\316\316\301\301\301\235\235\237jjlFFH;;" \
-  "=\207::<\1;;=\202::<\3;;=__a\363\363\363\227\377\377\377\4\234\234\236" \
-  "99;::<;;=\205::<\3;;=::<\233\233\233\240\377\377\377\12\376\376\376\377" \
-  "\377\377\301\301\301;;=::<;;=::<;;=::<99;\203::<\1\234\234\236\213\377" \
-  "\377\377\3\177\236\263\0=i\0>i\211\0=i\7\1>j\0=i\1>j\0=i\0>g\3>h\2=g" \
-  "\230\0=i\7\2=g\3>h\0>g\0=i\1>j\0=i\1>j\211\0=i\3\0>i\0=i\177\236\263" \
-  "\206\377\377\377\2\317\317\317:::\221::<\202;;=\202::<\3;;=::<99;\203" \
-  "::<\2;;=99;\220::<\1kkk\214\377\377\377\1\234\234\236\206::<\1\234\234" \
-  "\236\213\377\377\377\3\376\376\376\377\377\377\363\363\363\204::<\4;" \
-  ";=::<;;=xxz\202\377\377\377\1\376\376\376\236\377\377\377\1\376\376\376" \
-  "\202\377\377\377\3\346\346\346::<;;=\202::<\4;;=99;;;=\266\266\270\215" \
-  "\377\377\377\1kkm\203::<\1;;=\202::<\1;;=\243::<\1\316\316\316\204\377" \
-  "\377\377\3\376\376\376\377\377\377\376\376\376\232\377\377\377\1\376" \
-  "\376\376\204\377\377\377\1kkm\202;;=\202::<\202;;=\2::<;;=\204::<\3\317" \
-  "\317\317\377\377\377\376\376\376\235\377\377\377\1\234\234\234\206::" \
-  "<\1\234\234\234\243\377\377\377\1kkm\206::<\212\377\377\377\1\376\376" \
-  "\376\224\377\377\377\1lln\203::<\1;;=\202::<\1\234\234\236\234\377\377" \
-  "\377\1\376\376\376\204\377\377\377\4\376\376\376\265\265\267::<;;=\202" \
-  "::<\1;;=\202::<\1;;=\203::<\5__a\266\266\270\363\363\363\377\377\377" \
-  "\376\376\376\204\377\377\377\1\376\376\376\203\377\377\377\1\376\376" \
-  "\376\202\377\377\377\4\301\301\303\204\204\206;;=::<\203;;=\202::<\2" \
-  ";;=::<\202;;=\3GGI\332\332\334\376\376\376\203\377\377\377\1\376\376" \
-  "\376\221\377\377\377\2\235\235\237::<\202;;=\202::<\1;;=\202::<\4""9" \
-  "9;::<;;=\331\331\331\240\377\377\377\2\363\363\363GGI\203::<\2;;=::<" \
-  "\203;;=\202::<\1\234\234\236\213\377\377\377\3\177\236\263\0=i\0>i\210" \
-  "\0=i\10\0\77k\0=i\1>j\0>i\0\77j\0=i\0>i\0>j\230\0>i\10\0>j\0>i\0=i\0" \
-  "\77j\0>i\1>j\0=i\0\77k\210\0=i\3\0>i\0=i\177\236\263\206\377\377\377" \
-  "\1\376\376\376\217\377\377\377\1\376\376\376\203\377\377\377\1\315\315" \
-  "\317\204::<\3;;=::<kkm\240\377\377\377\1\234\234\236\206::<\1\234\234" \
-  "\236\214\377\377\377\3\376\376\376\377\377\377\204\204\206\202::<\1;" \
-  ";=\202::<\202;;=\1\345\345\345\242\377\377\377\2\376\376\376\234\234" \
-  "\234\206::<\2GGI\363\363\363\215\377\377\377\1kkm\203::<\4""99;::<;;" \
-  "=\316\316\320\311\377\377\377\2\317\317\32199;\203::<\5;;=::<FFH;;=:" \
-  ":<\202;;=\202::<\1kkm\237\377\377\377\1\234\234\234\206::<\1\234\234" \
-  "\234\243\377\377\377\1kkm\206::<\213\377\377\377\3\376\376\376\377\377" \
-  "\377\376\376\376\216\377\377\377\1\376\376\376\202\377\377\377\5lln:" \
-  ":<;;=::<;;=\202::<\2\234\234\234\376\376\376\227\377\377\377\1\376\376" \
-  "\376\210\377\377\377\1\264\264\266\202;;=\4::<;;=::<99;\204::<\3jjl\317" \
-  "\317\321\376\376\376\202\377\377\377\1\375\375\375\203\377\377\377\3" \
-  "\376\376\376\377\377\377\376\376\376\204\377\377\377\1\376\376\376\203" \
-  "\377\377\377\3\363\363\365\234\234\236FFH\202::<\1;;=\202::<\1;;=\203" \
-  "::<\2FFH\332\332\334\225\377\377\377\1\233\233\235\202;;=\211::<\1__" \
-  "a\240\377\377\377\2xxz;;=\202::<\3;;=::<;;=\205::<\1\234\234\236\213" \
-  "\377\377\377\3\177\236\263\0=i\0>i\211\0=i\202\0>i\5\0<h\1>j\0=i\1>j" \
-  "\0>i\230\0=i\5\0>i\1>j\0=i\1>j\0<h\202\0>i\211\0=i\3\0>i\0=i\177\236" \
-  "\263\212\377\377\377\3\376\376\376\377\377\377\376\376\376\212\377\377" \
-  "\377\1\376\376\376\202\377\377\377\10\316\316\320::<;;=::<;;=99;::<j" \
-  "jl\225\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\207\377" \
-  "\377\377\1\234\234\236\206::<\1\234\234\236\216\377\377\377\3\332\332" \
-  "\332;;=99;\202::<\4;;=::<99;\234\234\236\237\377\377\377\1\376\376\376" \
-  "\203\377\377\377\1SSU\202::<\1;;=\203::<\1\221\221\221\216\377\377\377" \
-  "\1kkm\206::<\1\316\316\316\250\377\377\377\1\376\376\376\235\377\377" \
-  "\377\1\376\376\376\202\377\377\377\5xxz::<;;=::<;;=\202::<\3\316\316" \
-  "\320RRT;;=\203::<\4;;=::<\332\332\332\376\376\376\235\377\377\377\1\234" \
-  "\234\234\206::<\1\234\234\234\243\377\377\377\1kkm\206::<\214\377\377" \
-  "\377\3\376\376\376\377\377\377\376\376\376\213\377\377\377\1\376\376" \
-  "\376\204\377\377\377\4kkm;;=::<;;=\203::<\1\235\235\235\202\377\377\377" \
-  "\1\376\376\376\221\377\377\377\1\376\376\376\213\377\377\377\4\301\301" \
-  "\301;;=::<;;=\203::<\202;;=\3::<RRT\316\316\316\203\377\377\377\1\376" \
-  "\376\376\202\377\377\377\1\376\376\376\204\377\377\377\3\376\376\376" \
-  "\377\377\377\376\376\376\203\377\377\377\1\376\376\376\204\377\377\377" \
-  "\4\346\346\346xxz;;=99;\207::<\4GGI\362\362\362\377\377\377\376\376\376" \
-  "\222\377\377\377\1\234\234\236\206::<\203;;=\202::<\2;;=\233\233\235" \
-  "\236\377\377\377\10\301\301\301::<;;=:9>::<99;::<99;\202;;=\203::<\1" \
-  "\234\234\236\213\377\377\377\3\177\236\263\0=i\0>i\210\0=i\7\2=g\0>i" \
-  "\0>j\0\77j\0=i\0\77j\0=h\232\1>j\7\0=h\0\77j\0=i\0\77j\0>j\0>i\2=g\210" \
-  "\0=i\3\0>i\0=i\177\236\263\213\377\377\377\1\376\376\376\216\377\377" \
-  "\377\1\317\317\321\202::<\6;;=::<;;=::<lln\376\376\376\225\377\377\377" \
-  "\1\376\376\376\203\377\377\377\1\376\376\376\205\377\377\377\1\234\234" \
-  "\236\206::<\1\234\234\236\213\377\377\377\1\376\376\376\203\377\377\377" \
-  "\2kkm;;=\204::<\2;;=GGI\236\377\377\377\1\376\376\376\203\377\377\377" \
-  "\1\265\265\267\202::<\6;;=::<;;=::<;;=\345\345\345\216\377\377\377\1" \
-  "kkm\202::<\5;;=99;;;=99;\317\317\317\244\377\377\377\1\376\376\376\241" \
-  "\377\377\377\3\376\376\376\377\377\377\347\347\351\206::<\3``b\377\377" \
-  "\377\234\234\236\202::<\1;;=\202::<\4;;=\204\204\206\377\377\377\376" \
-  "\376\376\234\377\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377" \
-  "\377\1kkm\206::<\215\377\377\377\1\375\375\375\202\377\377\377\1\376" \
-  "\376\376\213\377\377\377\5\376\376\376\377\377\377\376\376\376lln;;=" \
-  "\203::<\3;;=::<\234\234\234\234\377\377\377\1\376\376\376\202\377\377" \
-  "\377\4\331\331\331FFH::<;;=\202::<\11;;=::<99;;;=\203\203\203\363\363" \
-  "\363\376\376\376\377\377\377\376\376\376\222\377\377\377\7\376\376\376" \
-  "\377\377\377\376\376\376\377\377\377\300\300\300GGI::<\202;;=\205::<" \
-  "\4``b\362\362\362\377\377\377\376\376\376\221\377\377\377\1\234\234\236" \
-  "\204::<\202;;=\203::<\5;;=99;::<;;=\332\332\332\234\377\377\377\4\363" \
-  "\363\363GGI;;=::<\202;;=\203::<\1;;=\202::<\3;;=::<\234\234\236\213\377" \
-  "\377\377\3\177\236\263\0=i\0>i\210\0=i\10\0\77j\0>j\0\77k\0=i\3>h\2=" \
-  "g\1>j\0\77k\230\0=i\10\0\77k\1>j\2=g\3>h\0=i\0\77k\0>j\0\77j\210\0=i" \
-  "\3\0>i\0=i\177\236\263\232\377\377\377\12\316\316\316;;=::<;;=::<;;=" \
-  "::<kkm\377\377\377\376\376\376\222\377\377\377\1\376\376\376\202\377" \
-  "\377\377\1\376\376\376\210\377\377\377\1\234\234\236\206::<\1\234\234" \
-  "\236\214\377\377\377\1\376\376\376\202\377\377\377\2\266\266\26699;\202" \
-  "::<\202;;=\202::<\3\266\266\270\377\377\377\376\376\376\234\377\377\377" \
-  "\203\376\376\376\1lln\202;;=\204::<\3xxx\377\377\377\376\376\376\215" \
-  "\377\377\377\1kkm\205::<\2;;=\316\316\316\305\377\377\377\1\376\376\376" \
-  "\202\377\377\377\1\203\203\205\206::<\4\265\265\267\377\377\377\363\363" \
-  "\363GGG\203::<\1;;=\202::<\1\346\346\346\235\377\377\377\1\234\234\234" \
-  "\206::<\1\234\234\234\243\377\377\377\1kkm\206::<\216\377\377\377\1\376" \
-  "\376\376\220\377\377\377\1jjl\206::<\1\234\234\234\202\377\377\377\1" \
-  "\376\376\376\232\377\377\377\3\376\376\376\364\364\364SSU\202::<\7;;" \
-  "=::<;;=99;::<;;=\265\265\265\205\377\377\377\203\376\376\376\214\377" \
-  "\377\377\5\376\376\376\377\377\377\376\376\376\377\377\377\376\376\376" \
-  "\203\377\377\377\7\332\332\332__a::<;;=::<;;=::<\202;;=\3::<\205\205" \
-  "\207\376\376\377\222\377\377\377\3\234\234\236::<;;=\202::<\2;;=99;\202" \
-  ";;=\1""99;\202::<\3;;=::<__a\234\377\377\377\1xxz\202;;=\205::<\1;;=" \
-  "\202::<\1;;=\202::<\1\234\234\236\213\377\377\377\3\177\236\263\0=i\0" \
-  ">i\210\0=i\10\0>i\0=i\0>i\0\77k\0>j\2=g\1\77h\0>l\230\0>i\10\0>l\1\77" \
-  "h\2=g\0>j\0\77k\0>i\0=i\0>i\210\0=i\3\0>i\0=i\177\236\263\205\377\377" \
-  "\377\1\376\376\376\202\377\377\377\1\376\376\376\221\377\377\377\3\316" \
-  "\316\316::<;;=\204::<\1kkm\225\377\377\377\202\376\376\376\211\377\377" \
-  "\377\1\234\234\236\206::<\1\234\234\236\217\377\377\377\3\376\376\376" \
-  "TTV99;\202::<\4""99;;;=::<kkm\240\377\377\377\1\346\346\346\202::<\1" \
-  "99;\204::<\1\316\316\316\217\377\377\377\1kkm\204::<\3;;=99;\316\316" \
-  "\316\305\377\377\377\7\376\376\376\377\377\377\363\363\363::<;;=::<;" \
-  ";=\202::<\1SSU\203\377\377\377\2\204\204\204;;=\203::<\4;;=99;\222\222" \
-  "\222\376\376\376\234\377\377\377\1\234\234\234\206::<\1\234\234\234\243" \
-  "\377\377\377\1kkm\206::<\214\377\377\377\3\376\376\376\377\377\377\376" \
-  "\376\376\220\377\377\377\1kkm\206::<\1\234\234\236\236\377\377\377\1" \
-  "\204\204\206\203::<\1;;=\202::<\3;;=::<\265\265\267\221\377\377\377\1" \
-  "\376\376\376\202\377\377\377\1\376\376\376\203\377\377\377\1\376\376" \
-  "\376\204\377\377\377\11\376\376\376\363\363\365__a::<;;=::<;;=::<;;=" \
-  "\202::<\1\301\301\303\222\377\377\377\2\234\234\236;;=\202::<\10;;=:" \
-  ":<;;=FFH::<;;=::<;;=\203::<\1\235\235\237\232\377\377\377\2\301\301\303" \
-  ";;=\205::<\2;;=RRT\204::<\3;;=::<\234\234\236\213\377\377\377\3\177\236" \
-  "\263\0=i\0>i\210\0=i\7\0>j\2=g\0>g\0>j\40V|o\224\256\177\236\262\232" \
-  "\177\236\263\7\177\236\262o\224\256\40V|\0>j\0>g\2=g\0>j\210\0=i\3\0" \
-  ">i\0=i\177\236\263\232\377\377\377\3\316\316\316::<;;=\203::<\2;;=kk" \
-  "m\232\377\377\377\1\376\376\376\205\377\377\377\1\234\234\236\206::<" \
-  "\1\234\234\236\220\377\377\377\2\233\233\235;;=\202::<\1<<>\203::<\1" \
-  "\346\346\346\237\377\377\377\1\204\204\204\206::<\2SSU\376\376\376\217" \
-  "\377\377\377\1kkm\203::<\4;;=::<;;=\316\316\320\304\377\377\377\1\376" \
-  "\376\376\202\377\377\377\2\234\234\236;;=\202::<\4;;=::<;;=\234\234\234" \
-  "\203\377\377\377\1\346\346\346\205::<\3;;=FFH\363\363\365\203\377\377" \
-  "\377\1\376\376\376\230\377\377\377\1\234\234\234\206::<\1\234\234\234" \
-  "\243\377\377\377\1kkm\206::<\237\377\377\377\1kkm\206::<\1\234\234\236" \
-  "\235\377\377\377\2\316\316\316;;=\202::<\6;;=::<;;=::<:::\265\265\265" \
-  "\237\377\377\377\7\376\376\376\363\363\363___::<;;=::<;;=\203::<\2GG" \
-  "I\363\363\363\204\377\377\377\1\376\376\376\214\377\377\377\1\234\234" \
-  "\234\203::<\202;;=\5::<\266\266\266GGI99;;;=\202::<\1;;=\202::<\1\332" \
-  "\332\332\206\377\377\377\1\376\376\376\211\377\377\377\1\376\376\376" \
-  "\207\377\377\377\2\363\363\363FFH\206::<\3FFH\301\301\30399;\202::<\202" \
-  ";;=\2::<\234\234\236\206\377\377\377\7\377\377\375\377\377\377\377\377" \
-  "\375\376\377\377\376\376\376\200\237\263\0\77i\211\0>i\7\0>g\1>j\0>g" \
-  "_\210\236\377\377\377\376\377\377\377\376\377\231\377\377\377\10\377" \
-  "\377\375\376\377\375\377\377\377\377\377\375`\210\242\3>h\0\77j\1\77" \
-  "h\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::<" \
-  "\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\220\377\377" \
-  "\377\1\363\363\363\204::<\202;;=\2""99;\205\205\207\207\377\377\377\1" \
-  "\376\376\376\224\377\377\377\4\376\376\376\377\377\377\363\363\363FF" \
-  "H\202::<\5;;=99;;;=::<\265\265\265\220\377\377\377\1kkm\206::<\1\316" \
-  "\316\316\305\377\377\377\5\376\376\376\364\364\364FFH::<;;=\202::<\4" \
-  ";;=FFH\363\363\363\377\377\377\202\376\376\376\6\377\377\377xxz::<;;" \
-  "=::<;;=\202::<\1\234\234\236\206\377\377\377\202\376\376\376\224\377" \
-  "\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377\377\1kkm\206" \
-  "::<\237\377\377\377\1kkm\206::<\1\234\234\236\225\377\377\377\1\376\376" \
-  "\376\207\377\377\377\2SSS;;=\202::<\1;;=\203::<\1\234\234\234\202\377" \
-  "\377\377\3\376\376\376\377\377\377\376\376\376\232\377\377\377\1\376" \
-  "\376\376\202\377\377\377\4\332\332\332FFH::<;;=\202::<\1;;=\202::<\1" \
-  "\222\222\224\205\377\377\377\1\376\376\376\213\377\377\377\3\234\234" \
-  "\234::<;;=\202::<\5""99;;;=\315\315\315\250\250\252;;=\206::<\2``b\376" \
-  "\376\376\202\377\377\377\1\376\376\376\216\377\377\377\1\376\376\376" \
-  "\205\377\377\377\2xxx;;=\202::<\1;;=\203::<\2\300\300\300\317\317\321" \
-  "\203::<\1;;=\202::<\1\234\234\236\207\377\377\377\1\377\376\377\202\377" \
-  "\377\377\4\377\376\377\201\235\263\0=j\3>j\210\0=i\5\1>j\0=j\37V\177" \
-  "\377\376\377\376\376\376\202\377\377\377\1\376\377\377\230\377\377\377" \
-  "\10\376\377\377\377\377\375\374\377\377\377\376\374\376\377\377#W\177" \
-  "\0>g\0\77i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316" \
-  "\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\220\377" \
-  "\377\377\2\376\376\376\204\204\206\205::<\3;;=FFH\362\362\362\204\377" \
-  "\377\377\202\376\376\376\2\377\377\377\376\376\376\224\377\377\377\3" \
-  "\376\376\376\265\265\265;;=\203::<\4;;=99;FFH\363\363\363\220\377\377" \
-  "\377\1kkm\206::<\1\316\316\316\306\377\377\377\4\265\265\26599;;;=::" \
-  "<\202;;=\2""99;\222\222\224\204\377\377\377\12\376\376\376\316\316\320" \
-  ";;=::<;;=99;;;=99;SSU\376\376\376\202\377\377\377\3\376\376\376\377\377" \
-  "\377\376\376\376\226\377\377\377\1\234\234\234\206::<\1\234\234\234\243" \
-  "\377\377\377\1kkm\206::<\237\377\377\377\1kkm\206::<\1\234\234\236\234" \
-  "\377\377\377\11\234\234\234::<;;=99;;;=99;::<;;=kkm\241\377\377\377\1" \
-  "\376\376\376\202\377\377\377\1\301\301\303\203::<\6;;=99;::<;;=::<\346" \
-  "\346\350\203\377\377\377\1\376\376\376\214\377\377\377\1\234\234\234" \
-  "\203::<\202;;=\10""99;\316\316\316\377\377\377kkm::<;;=::<;;=\203::<" \
-  "\1\235\235\237\203\377\377\377\1\376\376\376\214\377\377\377\1\376\376" \
-  "\376\205\377\377\377\3\302\302\304::<;;=\202::<\7""99;;;=99;xxz\377\377" \
-  "\377\315\315\315;;=\203::<\3:9>::<\234\234\236\206\377\377\377\3\376" \
-  "\377\377\377\377\375\377\377\377\202\377\377\375\3|\237\265\0\77k\0>" \
-  "g\210\0=i\10\0@h\3<i~\236\263\376\377\377\377\377\377\377\376\377\377" \
-  "\376\374\377\376\377\230\377\377\377\10\377\375\377\377\377\375\377\376" \
-  "\374\377\377\377\376\376\374\220\251\275\2=i\0>j\210\0=i\3\0>i\0=i\177" \
-  "\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377\1" \
-  "\234\234\236\206::<\1\234\234\236\215\377\377\377\1\376\376\376\203\377" \
-  "\377\377\2\332\332\334;;=\206::<\2\266\266\266\376\376\376\202\377\377" \
-  "\377\1\376\376\376\202\377\377\377\1\376\376\376\222\377\377\377\1\376" \
-  "\376\376\203\377\377\377\1SSS\203::<\4""99;::<;;=\221\221\223\221\377" \
-  "\377\377\1kkm\206::<\1\316\316\316\306\377\377\377\4RRT;;=::<;;=\202" \
-  "::<\2;;=\345\345\345\202\377\377\377\1\376\376\376\203\377\377\377\2" \
-  "__a;;=\202::<\1;;=\202::<\1\264\264\264\206\377\377\377\1\376\376\376" \
-  "\224\377\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377\377\1" \
-  "kkm\206::<\237\377\377\377\1kkm\206::<\1\234\234\236\226\377\377\377" \
-  "\1\376\376\376\204\377\377\377\2\363\363\363FFH\203::<\1;;=\202::<\2" \
-  "FFH\346\346\346\204\377\377\377\1\376\376\376\233\377\377\377\1\376\376" \
-  "\376\203\377\377\377\3\376\376\376xxz99;\202::<\1""99;\202::<\4;;=\204" \
-  "\204\206\377\377\377\376\376\376\202\377\377\377\1\376\376\376\213\377" \
-  "\377\377\1\234\234\234\202::<\10;;=99;;;=::<\317\317\317\376\376\376" \
-  "\363\363\363GGI\203::<\1;;=\203::<\3\331\331\331\377\377\377\376\376" \
-  "\376\202\377\377\377\1\376\376\376\217\377\377\377\5\363\363\363GGI;" \
-  ";=::<;;=\202::<\7""99;FFH\363\363\363\377\377\377\316\316\316::<;;=\202" \
-  "::<\3:9>::<\234\234\236\207\377\377\377\7\376\377\377\376\376\376\377" \
-  "\377\377\377\377\375\377\377\377\377\375\374\376\377\377\210\377\377" \
-  "\377\10\376\376\374\376\377\377\354\364\366\377\377\375\376\377\377\377" \
-  "\376\374\377\377\375\376\377\377\230\377\377\377\10\377\377\375\376\377" \
-  "\377\377\376\375\375\376\377\376\377\377\301\317\330\0>g\0>j\210\0=i" \
-  "\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240" \
-  "\377\377\377\1\234\234\236\206::<\1\234\234\236\220\377\377\377\5\376" \
-  "\376\376\377\377\377kkm::<;;=\202::<\3""99;::<^^`\204\377\377\377\1\376" \
-  "\376\376\227\377\377\377\1\316\316\316\202::<\203;;=\202::<\1\347\347" \
-  "\347\221\377\377\377\1kkm\206::<\1\316\316\316\303\377\377\377\12\376" \
-  "\376\376\377\377\377\301\301\301;;=::<;;=::<99;::<\204\204\206\204\377" \
-  "\377\377\4\376\376\376\377\377\377\376\376\376\266\266\266\202::<\5;" \
-  ";=::<;;=::<``b\203\377\377\377\1\376\376\376\227\377\377\377\1\234\234" \
-  "\234\206::<\1\234\234\234\243\377\377\377\1kkm\206::<\237\377\377\377" \
-  "\1kkm\206::<\1\234\234\236\233\377\377\377\1\265\265\267\204::<\4""9" \
-  "9;;;=::<\234\234\234\203\377\377\377\3\376\376\376\377\377\377\376\376" \
-  "\376\231\377\377\377\5\376\376\376\377\377\377\376\376\376\377\377\377" \
-  "\376\376\376\202\377\377\377\5\363\363\363GGI99;::<;;=\202::<\3;;=::" \
-  "<\346\346\346\204\377\377\377\1\376\376\376\212\377\377\377\3\234\234" \
-  "\234::<99;\202;;=\202::<\1\315\315\315\202\377\377\377\3\301\301\303" \
-  ";;=99;\202;;=\5::<;;=::<``b\376\376\376\202\377\377\377\1\376\376\376" \
-  "\215\377\377\377\6\376\376\376\377\377\377\376\376\376xxz::<;;=\203:" \
-  ":<\202;;=\1\300\300\302\202\377\377\377\3\316\316\316;;=99;\202::<\3" \
-  ";:\77::<\234\234\236\206\377\377\377\2\377\377\375\376\377\375\202\376" \
-  "\377\377\4\377\377\375\377\377\377\377\376\377\377\377\375\211\377\377" \
-  "\377\1\376\376\374\202\377\377\377\3\377\376\377\377\377\377\375\376" \
-  "\377\231\377\377\377\202\376\377\377\5\377\376\377\376\377\377\377\377" \
-  "\375\277\320\332\0\77j\211\0=i\3\0>i\0=i\177\236\263\232\377\377\377" \
-  "\1\316\316\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234" \
-  "\234\236\213\377\377\377\3\376\376\376\377\377\377\376\376\376\204\377" \
-  "\377\377\1\265\265\265\202::<\1;;=\204::<\1\315\315\317\204\377\377\377" \
-  "\1\376\376\376\202\377\377\377\1\376\376\376\220\377\377\377\1\376\376" \
-  "\376\202\377\377\377\3\204\204\204::<;;=\204::<\2yy{\376\376\376\221" \
-  "\377\377\377\1kkm\206::<\1\316\316\316\305\377\377\377\4kkm;;=::<;;=" \
-  "\203::<\1\316\316\316\210\377\377\377\1TTV\206::<\2\317\317\321\376\376" \
-  "\376\231\377\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377\377" \
-  "\1kkm\206::<\237\377\377\377\1kkm\206::<\1\234\234\236\233\377\377\377" \
-  "\1TTV\202::<\7;;=::<;;=::<RRT\377\377\377\376\376\376\203\377\377\377" \
-  "\1\376\376\376\233\377\377\377\1\376\376\376\206\377\377\377\2\233\233" \
-  "\235;;=\203::<\4;;=::<;;=\234\234\234\217\377\377\377\4\234\234\234:" \
-  ":<;;=99;\203::<\1\316\316\316\203\377\377\377\4xxz;;=::<99;\202::<\3" \
-  ";;=::<\234\234\236\216\377\377\377\1\376\376\376\202\377\377\377\16\376" \
-  "\376\376\302\302\304::<;;=::<;;=::<;;=::<\221\221\223\377\377\377\376" \
-  "\376\376\377\377\377\316\316\316\202::<\202;;=\202::<\1\234\234\236\206" \
-  "\377\377\377\2\377\376\377\377\377\377\202\377\376\377\4\376\376\376" \
-  "\353\366\374\327\355\370\323\356\371\210\326\356\372\7\325\354\372\327" \
-  "\355\372\365\372\376\376\376\376\377\377\377\376\377\377\377\377\373" \
-  "\231\377\377\377\2\377\376\377\376\377\375\202\377\377\377\4\374\377" \
-  "\377\300\316\327\0=i\1\77h\210\0=i\3\0>i\0=i\177\236\263\232\377\377" \
-  "\377\1\316\316\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1" \
-  "\234\234\236\221\377\377\377\4\376\376\376\377\377\377SSU;;=\202::<\4" \
-  ";;=99;;;=\204\204\206\203\377\377\377\1\376\376\376\226\377\377\377\11" \
-  "\363\363\36399;;;=::<;;=::<;;=::<\316\316\316\202\377\377\377\1\376\376" \
-  "\376\217\377\377\377\1kkm\206::<\1\316\316\316\304\377\377\377\1\316" \
-  "\316\316\206::<\1kkk\211\377\377\377\2\235\235\23599;\202;;=\6::<;;=" \
-  "::<kkm\377\377\377\376\376\376\203\377\377\377\1\376\376\376\224\377" \
-  "\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377\377\1kkm\206" \
-  "::<\237\377\377\377\1kkm\206::<\1\234\234\236\232\377\377\377\1\332\332" \
-  "\332\204::<\1;;=\202::<\4\266\266\270\376\376\376\377\377\377\376\376" \
-  "\376\240\377\377\377\1\376\376\376\204\377\377\377\2\363\363\363FFH\202" \
-  "::<\5;;=::<;;=::<SSS\217\377\377\377\2\235\235\23599;\205::<\11\316\316" \
-  "\316\377\377\377\376\376\376\377\377\377\363\363\363FFH::<;;=99;\203" \
-  ";;=\2::<\331\331\333\220\377\377\377\2\363\363\363FFH\202::<\6;;=::<" \
-  ";;=::<TTV\364\364\364\203\377\377\377\3\316\316\316<<>99;\202::<\3;;" \
-  "=::<\234\234\236\211\377\377\377\4\377\375\376\376\377\377\254\334\363" \
-  "Z\266\347\211[\267\350\6\\\266\350X\267\347\326\354\367\377\376\377\376" \
-  "\377\377\377\377\375\232\377\377\377\3\377\377\373\375\377\376\376\377" \
-  "\377\202\377\377\375\3\276\320\336\0>g\0>i\210\0=i\3\0>i\0=i\177\236" \
-  "\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377\1\234" \
-  "\234\236\206::<\1\234\234\236\223\377\377\377\1\235\235\237\204::<\4" \
-  "<<>::<;;=\363\363\363\206\377\377\377\1\376\376\376\222\377\377\377\2" \
-  "\234\234\234;;=\205::<\1SSU\204\377\377\377\1\376\376\376\216\377\377" \
-  "\377\1kkm\206::<\1\316\316\316\304\377\377\377\1\204\204\204\203::<\1" \
-  "99;\202::<\1\265\265\265\211\377\377\377\2\363\363\363FFH\205::<\2;;" \
-  "=\346\346\346\231\377\377\377\1\234\234\234\206::<\1\234\234\234\243" \
-  "\377\377\377\1kkm\206::<\237\377\377\377\1kkm\206::<\1\234\234\236\232" \
-  "\377\377\377\1\222\222\222\202::<\1;;=\202::<\3;;=FFH\362\362\364\251" \
-  "\377\377\377\1\235\235\235\203::<\7;;=::<;;=;;;\331\331\331\377\377\377" \
-  "\376\376\376\214\377\377\377\2\234\234\234;;=\205::<\1\316\316\316\202" \
-  "\377\377\377\3\376\376\376\377\377\377\301\301\301\205::<\4;;=::<__a" \
-  "\376\376\376\216\377\377\377\4\376\376\376yyy::<;;=\205::<\1\316\316" \
-  "\320\204\377\377\377\2\316\316\31699;\203::<\3""99;::<\234\234\236\207" \
-  "\377\377\377\2\376\377\377\376\376\374\202\377\376\377\3\254\332\362" \
-  "Y\267\352[\267\350\210Y\270\350\7[\267\350Y\267\352\326\356\370\376\376" \
-  "\377\377\376\377\377\375\377\376\377\377\231\377\377\377\10\377\377\375" \
-  "\376\377\377\377\377\377\377\376\377\377\377\375\276\317\331\1>j\0>j" \
-  "\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::<\1" \
-  "kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\220\377\377\377" \
-  "\1\376\376\376\202\377\377\377\4\363\363\365;;=::<;;=\204::<\1\234\234" \
-  "\234\231\377\377\377\1SSS\202::<\1;;=\203::<\1\265\265\267\223\377\377" \
-  "\377\1kkm\206::<\1\316\316\316\300\377\377\377\1\376\376\376\202\377" \
-  "\377\377\1\346\346\350\203::<\4;;=::<;;=SSU\213\377\377\377\1\204\204" \
-  "\204\203::<\1;;=\202::<\1\204\204\206\202\377\377\377\1\376\376\376\226" \
-  "\377\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377\377\1kkm" \
-  "\206::<\237\377\377\377\1kkm\206::<\1\234\234\236\227\377\377\377\1\376" \
-  "\376\376\202\377\377\377\3TTV::<;;=\203::<\2;;=\205\205\205\252\377\377" \
-  "\377\1\347\347\347\202::<\202;;=\203::<\1\235\235\237\204\377\377\377" \
-  "\1\376\376\376\211\377\377\377\1\234\234\234\206::<\1\316\316\316\205" \
-  "\377\377\377\1\205\205\205\202::<\6;;=::<;;=::<;;=\234\234\236\213\377" \
-  "\377\377\1\376\376\376\202\377\377\377\1\302\302\302\202;;=\203::<\3" \
-  ";;=::<\221\221\221\202\377\377\377\1\376\376\376\202\377\377\377\1\316" \
-  "\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350" \
-  "\211[\267\350\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276\317" \
-  "\331\0=i\0>i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316" \
-  "\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\224" \
-  "\377\377\377\4\204\204\204;;=::<;;=\203::<\1TTT\204\377\377\377\1\376" \
-  "\376\376\223\377\377\377\1\300\300\300\203::<\5;;=::<;;=FFF\363\363\363" \
-  "\223\377\377\377\1kkm\203::<\4;;=::<;;=\316\316\320\277\377\377\377\14" \
-  "\376\376\376\377\377\377\376\376\376\377\377\377\204\204\206::<;;=::" \
-  "<99;<<>99;\265\265\267\213\377\377\377\3\346\346\346::<;;=\202::<\1;" \
-  ";=\202::<\2\347\347\347\376\376\376\227\377\377\377\1\234\234\234\206" \
-  "::<\1\234\234\234\243\377\377\377\1kkm\206::<\237\377\377\377\1kkm\206" \
-  "::<\1\234\234\236\226\377\377\377\4\376\376\376\377\377\377\376\376\376" \
-  "\346\346\350\202;;=\203::<\3""99;<<>\301\301\301\253\377\377\377\1aa" \
-  "c\202::<\1;;=\202::<\2;;=jjl\205\377\377\377\1\376\376\376\210\377\377" \
-  "\377\1\234\234\234\206::<\1\316\316\316\202\377\377\377\1\376\376\376" \
-  "\202\377\377\377\3\362\362\362SSU;;=\205::<\2;;=\332\332\332\210\377" \
-  "\377\377\1\376\376\376\203\377\377\377\2\363\363\363FFH\202::<\202;;" \
-  "=\5::<;;=SSS\363\363\363\376\376\376\204\377\377\377\1\316\316\316\206" \
-  "::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211[\267\350" \
-  "\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276\317\331\0=i\0" \
-  ">i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::" \
-  "<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\224\377\377" \
-  "\377\1\332\332\332\207::<\1\301\301\301\227\377\377\377\1lll\204::<\3" \
-  ";;=::<\221\221\221\202\377\377\377\3\376\376\376\377\377\377\376\376" \
-  "\376\217\377\377\377\1kkm\204::<\3;;=99;\316\316\316\241\377\377\377" \
-  "\1\376\376\376\234\377\377\377\10\376\376\376\377\377\377\376\376\376" \
-  "\377\377\377\363\363\363FFH;;=::<\202;;=\3::<FFH\364\364\364\214\377" \
-  "\377\377\1xxz\204::<\3;;=::<\233\233\233\230\377\377\377\1\234\234\234" \
-  "\206::<\1\234\234\234\243\377\377\377\1kkm\206::<\237\377\377\377\1k" \
-  "km\206::<\1\234\234\236\224\377\377\377\1\376\376\376\204\377\377\377" \
-  "\4\266\266\270;;=::<;;=\203::<\1""99;\254\377\377\377\3\234\234\234:" \
-  ":<;;=\205::<\204\377\377\377\1\376\376\376\211\377\377\377\1\234\234" \
-  "\234\206::<\1\316\316\316\203\377\377\377\1\376\376\376\202\377\377\377" \
-  "\1\316\316\320\204::<\4;;=99;::<__a\205\377\377\377\1\376\376\376\206" \
-  "\377\377\377\4yy{;;=::<;;=\202::<\3;;=::<\316\316\316\206\377\377\377" \
-  "\1\316\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270" \
-  "\350\211[\267\350\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276" \
-  "\317\331\0=i\0>i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316" \
-  "\316\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236" \
-  "\225\377\377\377\1__a\204;;=\5""99;::<yy{\377\377\377\376\376\376\216" \
-  "\377\377\377\1\376\376\376\205\377\377\377\1\346\346\346\202::<\203;" \
-  ";=\202::<\1\346\346\346\224\377\377\377\1kkm\205::<\2;;=\316\316\316" \
-  "\235\377\377\377\1\376\376\376\244\377\377\377\1\234\234\234\202;;=\204" \
-  "::<\2\235\235\235\376\376\376\212\377\377\377\4\376\376\376\377\377\377" \
-  "\317\317\317::<\202;;=\202::<\3;;=GGI\362\362\362\202\377\377\377\1\376" \
-  "\376\376\224\377\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377" \
-  "\377\1kkm\206::<\237\377\377\377\1kkm\206::<\1\234\234\236\231\377\377" \
-  "\377\1\220\220\222\205::<\3;;=kkm\376\376\376\253\377\377\377\3\316\316" \
-  "\316<<>99;\202::<\4;;=::<;;=\331\331\331\215\377\377\377\1\234\234\234" \
-  "\206::<\1\316\316\316\207\377\377\377\1\222\222\224\202::<\3;;=99;<<" \
-  ">\202::<\4\234\234\236\376\376\376\377\377\377\376\376\376\203\377\377" \
-  "\377\1\376\376\376\203\377\377\377\6\302\302\304;;=99;;;=::<;;=\202:" \
-  ":<\1\234\234\234\202\377\377\377\1\376\376\376\204\377\377\377\1\316" \
-  "\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350" \
-  "\211[\267\350\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276\317" \
-  "\331\0=i\0>i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316" \
-  "\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\225" \
-  "\377\377\377\2\265\265\265;;=\202::<\2""99;;;=\202::<\2\347\347\347\376" \
-  "\376\376\215\377\377\377\3\376\376\376\377\377\377\376\376\376\204\377" \
-  "\377\377\3\221\221\223;;=99;\204::<\3xxz\377\377\377\376\376\376\202" \
-  "\377\377\377\202\376\376\376\217\377\377\377\1kkm\202::<\5;;=99;;;=9" \
-  "9;\317\317\317\233\377\377\377\1\376\376\376\237\377\377\377\1\376\376" \
-  "\376\204\377\377\377\3\376\376\376\377\377\377GGI\202::<\5;;=::<;;=:" \
-  ":<\346\346\346\213\377\377\377\1\376\376\376\202\377\377\377\2``b99;" \
-  "\202;;=\203::<\3\247\247\247\377\377\377\376\376\376\225\377\377\377" \
-  "\1\234\234\234\206::<\1\234\234\234\243\377\377\377\1kkm\206::<\237\377" \
-  "\377\377\1kkm\206::<\1\234\234\236\231\377\377\377\10kkm::<;;=::<;;=" \
-  "99;::<\235\235\237\255\377\377\377\202::<\1;;=\204::<\1\301\301\301\215" \
-  "\377\377\377\1\234\234\234\206::<\1\316\316\316\206\377\377\377\5\376" \
-  "\376\376\364\364\364TTV::<99;\202;;=\203::<\4\332\332\334\376\376\376" \
-  "\377\377\377\376\376\376\203\377\377\377\6\376\376\376\377\377\377\363" \
-  "\363\363FFH::<;;=\204::<\1__a\210\377\377\377\1\316\316\316\206::<\1" \
-  "\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211[\267\350\3Y\270" \
-  "\350[\267\350\326\354\371\242\377\377\377\3\276\317\331\0=i\0>i\210\0" \
-  "=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240" \
-  "\377\377\377\1\234\234\236\206::<\1\234\234\236\224\377\377\377\5\376" \
-  "\376\376\377\377\377GGI::<;;=\203::<\4;;=\220\220\222\377\377\377\376" \
-  "\376\376\214\377\377\377\1\376\376\376\203\377\377\377\10\376\376\376" \
-  "\377\377\377\363\363\363FFH::<;;=99;;;=\202::<\1\316\316\320\202\377" \
-  "\377\377\1\376\376\376\204\377\377\377\1\376\376\376\215\377\377\377" \
-  "\1kkm\206::<\1\316\316\316\277\377\377\377\3\376\376\376\377\377\377" \
-  "\265\265\267\204::<\3;;=::<\205\205\205\213\377\377\377\1\376\376\376" \
-  "\202\377\377\377\2\376\376\376\265\265\265\202::<\5""99;<<>::<;;=SSU" \
-  "\202\377\377\377\1\376\376\376\224\377\377\377\1\234\234\234\206::<\1" \
-  "\234\234\234\243\377\377\377\1kkm\206::<\237\377\377\377\1kkm\206::<" \
-  "\1\234\234\236\230\377\377\377\2\376\376\376SSU\204::<\3;;=::<\266\266" \
-  "\266\253\377\377\377\3\376\376\376\377\377\377^^`\206::<\1\234\234\234" \
-  "\202\377\377\377\1\376\376\376\212\377\377\377\1\234\234\234\206::<\1" \
-  "\316\316\316\205\377\377\377\6\376\376\376\377\377\377\376\376\376\315" \
-  "\315\317::<;;=\202::<\4;;=99;::<``b\210\377\377\377\4xxz99;<<>::<\202" \
-  ";;=\202::<\1\332\332\332\203\377\377\377\1\376\376\376\204\377\377\377" \
-  "\1\316\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270" \
-  "\350\211[\267\350\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276" \
-  "\317\331\0=i\0>i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316" \
-  "\316\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236" \
-  "\226\377\377\377\1\234\234\234\206::<\2FFH\376\376\376\214\377\377\377" \
-  "\1\376\376\376\202\377\377\377\1\376\376\376\203\377\377\377\3\265\265" \
-  "\265;;=99;\202;;=\202::<\1SSU\202\377\377\377\1\376\376\376\223\377\377" \
-  "\377\1kkm\203::<\4""99;::<;;=\316\316\320\275\377\377\377\202\376\376" \
-  "\376\4\377\377\377\376\376\376SSU;;=\202::<\4;;=::<;;=\332\332\332\215" \
-  "\377\377\377\5\376\376\376\377\377\377\376\376\376SSU;;=\204::<\2;;=" \
-  "\264\264\264\226\377\377\377\1\234\234\234\206::<\1\234\234\234\243\377" \
-  "\377\377\1kkm\206::<\237\377\377\377\1kkm\206::<\1\234\234\236\231\377" \
-  "\377\377\207::<\1\316\316\316\254\377\377\377\2\376\376\376lln\202::" \
-  "<\1;;=\202::<\4;;=\233\233\233\377\377\377\376\376\376\202\377\377\377" \
-  "\1\376\376\376\210\377\377\377\1\234\234\234\206::<\1\316\316\316\203" \
-  "\377\377\377\202\376\376\376\204\377\377\377\1\234\234\234\207::<\1\234" \
-  "\234\236\205\377\377\377\4\376\376\376\300\300\302::<;;=\205::<\2\234" \
-  "\234\234\376\376\376\202\377\377\377\1\376\376\376\205\377\377\377\1" \
-  "\316\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270" \
-  "\350\211[\267\350\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276" \
-  "\317\331\0=i\0>i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316" \
-  "\316\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236" \
-  "\226\377\377\377\1\347\347\347\204::<\5;;=99;;;=\265\265\265\376\376" \
-  "\376\222\377\377\377\2___99;\202::<\4;;=::<;;=\265\265\265\207\377\377" \
-  "\377\1\376\376\376\216\377\377\377\1kkm\203::<\1;;=\202::<\1;;=\233:" \
-  ":<\5""99;;;=::<:::\234\234\234\240\377\377\377\2\316\316\316;;=\204:" \
-  ":<\2;;=kkm\221\377\377\377\1\234\234\236\203::<\1;;=\202::<\3kkk\377" \
-  "\377\377\376\376\376\224\377\377\377\1\234\234\234\206::<\1\234\234\234" \
-  "\243\377\377\377\1kkm\206::<\237\377\377\377\1kkm\206::<\1\234\234\236" \
-  "\231\377\377\377\207::<\1\316\316\316\255\377\377\377\2\221\221\221;" \
-  ";=\205::<\1\204\204\204\203\377\377\377\1\376\376\376\211\377\377\377" \
-  "\1\234\234\234\206::<\1\316\316\316\210\377\377\377\3\376\376\376\377" \
-  "\377\377``b\202::<\7;;=::<;;=::<;;=\332\332\332\376\376\376\202\377\377" \
-  "\377\3\376\376\376\363\363\363GGI\203::<\4;;=::<;;=__a\206\377\377\377" \
-  "\1\376\376\376\203\377\377\377\1\316\316\316\206::<\1\234\234\236\213" \
-  "\377\377\377\2\255\333\363Y\270\350\211[\267\350\3Y\270\350[\267\350" \
-  "\326\354\371\242\377\377\377\3\276\317\331\0=i\0>i\210\0=i\3\0>i\0=i" \
-  "\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377" \
-  "\1\234\234\236\206::<\1\234\234\236\227\377\377\377\1\204\204\206\204" \
-  "::<\3;;=::<kkk\217\377\377\377\5\376\376\376\377\377\377\376\376\376" \
-  "\333\333\333:::\202::<\1;;=\202::<\2FFH\363\363\363\226\377\377\377\1" \
-  "kkm\204::<\1;;=\202::<\1;;=\234::<\4;;=::<\234\234\234\376\376\376\237" \
-  "\377\377\377\1kkm\206::<\1\316\316\316\221\377\377\377\2\363\363\363" \
-  "GGG\204::<\3;;=::<\315\315\315\225\377\377\377\1\234\234\234\206::<\1" \
-  "\234\234\234\237\377\377\377\1\376\376\376\203\377\377\377\1kkm\206:" \
-  ":<\237\377\377\377\1kkm\206::<\1\234\234\236\230\377\377\377\2\376\376" \
-  "\376;;=\203::<\1;;=\202::<\1\363\363\363\252\377\377\377\6\376\376\376" \
-  "\377\377\377\376\376\376\234\234\23699;;;=\204::<\1kkm\215\377\377\377" \
-  "\1\234\234\234\206::<\1\316\316\316\210\377\377\377\7\377\377\375\377" \
-  "\377\377\332\332\332::<;;=::<;;=\203::<\2``b\376\376\376\202\377\377" \
-  "\377\2\376\376\376xxz\206::<\2:::\332\332\332\212\377\377\377\1\316\316" \
-  "\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211" \
-  "[\267\350\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276\317\331" \
-  "\0=i\0>i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316" \
-  "\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\227\377" \
-  "\377\377\1\315\315\315\205::<\3;;=::<\332\332\334\221\377\377\377\1\204" \
-  "\204\206\205::<\2;;=\205\205\205\227\377\377\377\1kkm\203::<\3;;=::<" \
-  ";;=\234::<\1:9>\203::<\1\234\234\236\237\377\377\377\1\331\331\331\202" \
-  ";;=\204::<\1SSU\217\377\377\377\5\376\376\376\377\377\377\376\376\376" \
-  "\377\377\377\204\204\204\204::<\3;;=99;yyy\203\377\377\377\1\376\376" \
-  "\376\221\377\377\377\1\234\234\234\206::<\1\234\234\234\235\377\377\377" \
-  "\1\376\376\376\205\377\377\377\1kkm\206::<\237\377\377\377\1kkm\206:" \
-  ":<\1\234\234\236\231\377\377\377\203::<\1;;=\203::<\202\377\377\377\1" \
-  "\376\376\376\253\377\377\377\2\233\233\235;;=\205::<\3kkm\377\377\377" \
-  "\376\376\376\202\377\377\377\1\376\376\376\210\377\377\377\1\234\234" \
-  "\234\206::<\1\316\316\316\213\377\377\377\1\234\234\236\202;;=\1""99" \
-  ";\203::<\5;;=\235\235\235\377\377\377\376\376\376\302\302\302\207::<" \
-  "\1\251\251\251\213\377\377\377\1\316\316\316\206::<\1\234\234\236\213" \
-  "\377\377\377\2\255\333\363Y\270\350\211[\267\350\3Y\270\350[\267\350" \
-  "\326\354\371\242\377\377\377\3\276\317\331\0=i\0>i\210\0=i\3\0>i\0=i" \
-  "\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377" \
-  "\1\234\234\236\206::<\1\234\234\236\223\377\377\377\1\376\376\376\204" \
-  "\377\377\377\1^^`\202::<\202;;=\3::<<<>\204\204\206\213\377\377\377\1" \
-  "\376\376\376\204\377\377\377\1\363\363\363\205::<\3;;=::<\346\346\346" \
-  "\227\377\377\377\1kkm\204::<\3;;=::<;;=\234::<\1;;=\202::<\1\234\234" \
-  "\236\237\377\377\377\4\204\204\20499;::<;;=\203::<\3\266\266\270\377" \
-  "\377\377\376\376\376\221\377\377\377\5\346\346\346;;=::<;;=::<\202;;" \
-  "=\4::<\346\346\350\377\377\377\376\376\376\202\377\377\377\1\376\376" \
-  "\376\217\377\377\377\1\234\234\234\206::<\1\234\234\234\237\377\377\377" \
-  "\202\376\376\376\202\377\377\377\1kkm\206::<\237\377\377\377\1kkm\206" \
-  "::<\1\234\234\236\224\377\377\377\6\376\376\376\377\377\377\376\376\376" \
-  "\377\377\377\376\376\376;;=\206::<\1\331\331\331\255\377\377\377\1\234" \
-  "\234\236\202::<\1;;=\203::<\2kkm\376\376\376\202\377\377\377\1\376\376" \
-  "\376\211\377\377\377\1\234\234\234\206::<\1\316\316\316\212\377\377\377" \
-  "\3\376\376\376\377\377\377___\204::<\7;;=99;::<\332\332\332\363\363\365" \
-  "FFH;;=\204::<\3;;=kkm\376\376\376\213\377\377\377\1\316\316\316\206:" \
-  ":<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211[\267\350" \
-  "\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276\317\331\0=i\0" \
-  ">i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::" \
-  "<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\224\377\377" \
-  "\377\1\376\376\376\203\377\377\377\4\265\265\267::<;;=::<\202;;=\3::" \
-  "<FFH\363\363\363\213\377\377\377\1\376\376\376\203\377\377\377\2\251" \
-  "\251\251;;=\205::<\1lln\202\377\377\377\1\376\376\376\225\377\377\377" \
-  "\1kkm\202::<\2;;=99;\204::<\1;;=\234::<\2;;=\234\234\234\235\377\377" \
-  "\377\5\376\376\376\345\345\345;;=::<;;=\202::<\2;;=FFH\215\377\377\377" \
-  "\3\376\376\376\377\377\377\376\376\376\205\377\377\377\10xxz;;=::<;;" \
-  "=99;;;=::<\204\204\206\202\377\377\377\1\376\376\376\221\377\377\377" \
-  "\1\234\234\234\206::<\1\234\234\234\234\377\377\377\1\376\376\376\204" \
-  "\377\377\377\3\376\376\376\377\377\377kkm\206::<\237\377\377\377\1kk" \
-  "m\206::<\1\234\234\236\231\377\377\377\202::<\1;;=\204::<\1\316\316\316" \
-  "\253\377\377\377\3\376\376\376\377\377\377\220\220\222\202;;=\2::<;;" \
-  "=\202::<\1\222\222\224\215\377\377\377\1\234\234\234\206::<\1\316\316" \
-  "\316\213\377\377\377\3\376\376\376\332\332\332GGI\204::<\10;;=::<__a" \
-  "xxz::<;;=::<;;=\202::<\2FFH\346\346\346\214\377\377\377\1\316\316\316" \
-  "\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211[\267" \
-  "\350\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276\317\331\0" \
-  "=i\0>i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206" \
-  "::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\231\377\377" \
-  "\377\10FFH::<;;=99;;;=::<;;=\265\265\265\216\377\377\377\4\376\376\376" \
-  "TTV99;;;=\202::<\202;;=\1\301\301\301\230\377\377\377\1kkm\202::<\1;" \
-  ";=\204::<\3;;=::<;;=\232::<\5;;=::<\234\234\234\377\377\377\376\376\376" \
-  "\232\377\377\377\3\376\376\376\377\377\377\221\221\221\202::<\1""99;" \
-  "\203::<\5\234\234\236\377\377\377\376\376\376\377\377\377\376\376\376" \
-  "\216\377\377\377\1\376\376\376\202\377\377\377\2\316\316\320::<\202;" \
-  ";=\204::<\2\363\363\363\376\376\376\202\377\377\377\1\376\376\376\217" \
-  "\377\377\377\1\234\234\234\206::<\1\234\234\234\243\377\377\377\1kkm" \
-  "\206::<\237\377\377\377\1kkm\206::<\1\234\234\236\224\377\377\377\1\376" \
-  "\376\376\204\377\377\377\1""99;\202::<\1;;=\203::<\1\316\316\316\252" \
-  "\377\377\377\10\376\376\376\377\377\377\376\376\376kkm;;=::<;;=99;\202" \
-  "::<\1\234\234\236\215\377\377\377\1\234\234\234\206::<\1\316\316\316" \
-  "\215\377\377\377\5\247\247\247;;=99;::<;;=\210::<\5""99;::<\250\250\252" \
-  "\377\377\377\376\376\376\213\377\377\377\1\316\316\316\206::<\1\234\234" \
-  "\236\213\377\377\377\2\255\333\363Y\270\350\211[\267\350\3Y\270\350[" \
-  "\267\350\326\354\371\242\377\377\377\3\276\317\331\0=i\0>i\210\0=i\3" \
-  "\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377" \
-  "\377\377\1\234\234\236\206::<\1\234\234\236\223\377\377\377\3\376\376" \
-  "\376\377\377\377\376\376\376\203\377\377\377\1\234\234\236\202::<\1;" \
-  ";=\202::<\2""99;SSU\214\377\377\377\5\376\376\376\377\377\377\301\301" \
-  "\301;;=<<>\202::<\3;;=::<SSU\202\377\377\377\1\376\376\376\226\377\377" \
-  "\377\1kkm\203::<\1;;=\202::<\1\204\204\206\202\234\234\234\1\235\235" \
-  "\235\232\234\234\236\202\234\234\234\1\315\315\315\233\377\377\377\6" \
-  "\376\376\376\377\377\377\362\362\362HHJ99;;;=\204::<\2\364\364\364\376" \
-  "\376\376\220\377\377\377\1\376\376\376\204\377\377\377\1kkm\206::<\1" \
-  "\234\234\234\223\377\377\377\1\234\234\234\206::<\1\234\234\234\242\377" \
-  "\377\377\2\376\376\376lln\206::<\237\377\377\377\1kkm\206::<\1\234\234" \
-  "\236\231\377\377\377\2TTV99;\202::<\5;;=::<;;=\250\250\250\376\376\376" \
-  "\254\377\377\377\1``b\203::<\202;;=\3::<\235\235\237\376\376\376\202" \
-  "\377\377\377\1\376\376\376\211\377\377\377\1\234\234\234\206::<\1\316" \
-  "\316\316\216\377\377\377\2kkm;;=\203::<\5;;=::<;;=99;;;=\202::<\2;;=" \
-  "jjl\216\377\377\377\1\316\316\316\206::<\1\234\234\236\213\377\377\377" \
-  "\2\255\333\363Y\270\350\211[\267\350\3Y\270\350[\267\350\326\354\371" \
-  "\242\377\377\377\3\276\317\331\0=i\0>i\210\0=i\3\0>i\0=i\177\236\263" \
-  "\232\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377\1\234\234" \
-  "\236\206::<\1\234\234\236\224\377\377\377\1\376\376\376\204\377\377\377" \
-  "\2\346\346\34699;\202::<\2;;=::<\202;;=\1\315\315\315\212\377\377\377" \
-  "\1\376\376\376\202\377\377\377\1yy{\203::<\4;;=99;;;=\250\250\250\202" \
-  "\377\377\377\1\376\376\376\226\377\377\377\1kkm\206::<\1\317\317\317" \
-  "\240\377\377\377\1\376\376\376\234\377\377\377\1\234\234\234\202::<\2" \
-  "99;;;=\202::<\1\204\204\206\203\377\377\377\1\376\376\376\220\377\377" \
-  "\377\1\376\376\376\202\377\377\377\2\264\264\264::<\202;;=\203::<\3G" \
-  "GI\364\364\364\376\376\376\202\377\377\377\1\376\376\376\216\377\377" \
-  "\377\1\234\234\234\206::<\1\234\234\234\241\377\377\377\3\376\376\376" \
-  "\377\377\377kkm\206::<\237\377\377\377\1kkm\206::<\1\234\234\236\225" \
-  "\377\377\377\202\376\376\376\202\377\377\377\12kkm::<;;=99;::<;;=::<" \
-  "\204\204\204\377\377\377\376\376\376\251\377\377\377\4\376\376\376\377" \
-  "\377\377::<99;\202;;=\203::<\1\316\316\320\215\377\377\377\1\234\234" \
-  "\234\206::<\1\316\316\316\216\377\377\377\5\346\346\350GGI;;=::<;;=\202" \
-  "::<\2""99;;;=\202::<\3;;=GGI\346\346\350\216\377\377\377\1\316\316\316" \
-  "\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211[\267" \
-  "\350\3Y\270\350[\267\350\326\354\371\242\377\377\377\3\276\317\331\0" \
-  "=i\0>i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206" \
-  "::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\231\377\377" \
-  "\377\2\376\376\376\205\205\205\202::<\5""99;;;=::<;;=\205\205\207\213" \
-  "\377\377\377\12\376\376\376\346\346\346::<;;=99;::<99;;;=FFH\363\363" \
-  "\363\231\377\377\377\1kkm\202::<\2;;=::<\202;;=\3\316\316\316\377\377" \
-  "\377\376\376\376\234\377\377\377\1\376\376\376\236\377\377\377\1SSS\204" \
-  "::<\3;;=99;\347\347\351\204\377\377\377\1\376\376\376\215\377\377\377" \
-  "\1\376\376\376\205\377\377\377\1SSU\203::<\4;;=99;::<\265\265\265\202" \
-  "\377\377\377\1\376\376\376\217\377\377\377\1\234\234\234\206::<\1\234" \
-  "\234\234\242\377\377\377\2\376\376\376SSU\206::<\237\377\377\377\1kk" \
-  "m\206::<\1\234\234\236\231\377\377\377\4\221\221\223;;=::<;;=\202::<" \
-  "\3;;=___\376\376\376\253\377\377\377\1\332\332\332\204::<\1;;=\202::" \
-  "<\1\346\346\350\203\377\377\377\1\376\376\376\211\377\377\377\1\234\234" \
-  "\234\206::<\1\316\316\316\217\377\377\377\1\250\250\252\204::<\202;;" \
-  "=\2::<;;=\202::<\1\265\265\267\217\377\377\377\1\316\316\316\206::<\1" \
-  "\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211[\267\350\3Y\270" \
-  "\350[\267\350\326\354\371\242\377\377\377\3\276\317\331\0=i\0>i\210\0" \
-  "=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240" \
-  "\377\377\377\1\234\234\236\206::<\1\234\234\236\232\377\377\377\1\316" \
-  "\316\316\203::<\2""99;<<>\202::<\1\346\346\350\213\377\377\377\4\221" \
-  "\221\223;;=::<;;=\203::<\1\204\204\206\232\377\377\377\1kkm\203::<\1" \
-  ";;=\202::<\1\316\316\316\274\377\377\377\2\265\265\267;;=\205::<\1xx" \
-  "x\231\377\377\377\1\250\250\250\206::<\1TTV\222\377\377\377\1\234\234" \
-  "\234\204::<\3;;=::<\235\235\235\203\377\377\377\1\376\376\376\237\377" \
-  "\377\377\202;;=\203::<\3;;=::<\376\376\376\236\377\377\377\1kkm\206:" \
-  ":<\1\234\234\236\225\377\377\377\1\376\376\376\203\377\377\377\1\265" \
-  "\265\267\204::<\1;;=\202::<\1\363\363\363\253\377\377\377\1\250\250\250" \
-  "\204::<\3;;=::<GGI\216\377\377\377\1\234\234\234\206::<\1\316\316\316" \
-  "\220\377\377\377\4kkm;;=::<;;=\204::<\3;;=xxx\376\376\376\217\377\377" \
-  "\377\1\316\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363" \
-  "Y\270\350\212[\267\350\2X\266\351\326\356\370\202\377\377\377\3\377\377" \
-  "\375\377\377\377\376\377\375\234\377\377\377\4\377\377\375\276\317\327" \
-  "\0\77j\1>j\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316" \
-  "\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\233\377" \
-  "\377\377\1``b\205::<\2;;=\235\235\237\210\377\377\377\1\376\376\376\202" \
-  "\377\377\377\2FFH;;=\205::<\1\346\346\346\202\377\377\377\1\376\376\376" \
-  "\227\377\377\377\1kkm\206::<\1\316\316\316\266\377\377\377\1\376\376" \
-  "\376\205\377\377\377\5__a::<;;=::<;;=\202::<\1SSU\202kkm\1lln\203kkm" \
-  "\1lln\222kkm\4__a;;=99;;;=\204::<\3\301\301\301\377\377\377\376\376\376" \
-  "\215\377\377\377\202\376\376\376\1\235\235\235\204::<\3""99;;;=\221\221" \
-  "\221\243\377\377\377\203::<\1;;=\202::<\1""99;\237\377\377\377\1kkm\206" \
-  "::<\1\234\234\236\231\377\377\377\1\332\332\332\202::<\3;;=::<99;\202" \
-  ";;=\1\264\264\264\210\377\377\377\1\376\376\376\232\377\377\377\1\376" \
-  "\376\376\206\377\377\377\2\376\376\376xxx\202::<\1;;=\203::<\1xxz\216" \
-  "\377\377\377\1\234\234\234\206::<\1\316\316\316\220\377\377\377\3\363" \
-  "\363\365FFH;;=\202::<\1;;=\202::<\2FFH\363\363\363\220\377\377\377\1" \
-  "\316\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270" \
-  "\350\211[\267\350\10X\267\347Y\267\352\326\354\371\377\377\377\376\376" \
-  "\376\377\376\377\377\377\377\377\376\377\234\377\377\377\2\376\376\374" \
-  "\277\320\330\212\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316" \
-  "\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\233" \
-  "\377\377\377\1\265\265\267\203::<\4""99;;;=::<SSU\207\377\377\377\6\376" \
-  "\376\376\377\377\377\376\376\376\265\265\265;;=99;\202;;=\4""99;;;=k" \
-  "km\377\377\377\202\376\376\376\230\377\377\377\1kkm\206::<\1\316\316" \
-  "\316\267\377\377\377\1\376\376\376\203\377\377\377\7\316\316\320<<>9" \
-  "9;::<;;=::<99;\203::<\2;;=99;\202::<\1;;=\224::<\1;;=\202::<\1;;=\203" \
-  "::<\1kkm\203\377\377\377\1\376\376\376\215\377\377\377\1\300\300\300" \
-  "\202::<\11;;=::<99;;;=jjl\377\377\377\376\376\376\377\377\377\376\376" \
-  "\376\236\377\377\377\1\346\346\350\206::<\1__a\237\377\377\377\1kkm\206" \
-  "::<\1\234\234\236\231\377\377\377\2\376\376\376SSU\206::<\2yy{\376\376" \
-  "\376\206\377\377\377\1\376\376\376\234\377\377\377\1\376\376\376\205" \
-  "\377\377\377\4\363\363\363::<<<>99;\202::<\3;;=::<\265\265\267\203\377" \
-  "\377\377\3\376\376\376\377\377\377\376\376\376\210\377\377\377\1\234" \
-  "\234\234\206::<\1\316\316\316\221\377\377\377\4\301\301\30199;::<;;=" \
-  "\202::<\6;;=\301\301\301\377\377\377\376\376\376\377\377\377\376\376" \
-  "\376\215\377\377\377\1\316\316\316\206::<\1\234\234\236\213\377\377\377" \
-  "\2\255\333\363Y\270\350\211[\267\350\6Y\270\350Y\267\352\325\353\370" \
-  "\377\377\377\376\377\375\377\375\377\234\377\377\377\5\376\376\376\377" \
-  "\377\377\377\377\375\276\317\327\2\77k\211\0=i\3\0>i\0=i\177\236\263" \
-  "\232\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377\1\234\234" \
-  "\236\206::<\1\234\234\236\234\377\377\377\1GGI\203::<\1;;=\202::<\2\301" \
-  "\301\301\376\376\376\204\377\377\377\1\376\376\376\203\377\377\377\3" \
-  "lln::<;;=\202::<\202;;=\4\301\301\303\376\376\376\377\377\377\376\376" \
-  "\376\230\377\377\377\1kkm\206::<\1\316\316\316\265\377\377\377\1\376" \
-  "\376\376\205\377\377\377\3kkm::<;;=\202::<\2""99;<<>\202::<\3;;=::<;" \
-  ";=\202::<\1;;=\222::<\4""99;;;=::<;;=\203::<\1;;=\202::<\3\316\316\316" \
-  "\377\377\377\376\376\376\215\377\377\377\3\376\376\376\316\316\316;;" \
-  "=\203::<\3;;=::<FFH\234\377\377\377\202\376\376\376\202\377\377\377\3" \
-  "\376\376\376\377\377\377\316\316\320\203::<\4;;=::<;;=kkm\237\377\377" \
-  "\377\1kkm\206::<\1\234\234\236\226\377\377\377\7\376\376\376\377\377" \
-  "\377\376\376\376\377\377\377\204\204\204::<;;=\204::<\2;;=\346\346\346" \
-  "\241\377\377\377\1\376\376\376\202\377\377\377\3\376\376\376\377\377" \
-  "\377\376\376\376\202\377\377\377\1\250\250\250\202::<\1<<>\204::<\3\346" \
-  "\346\346\377\377\377\376\376\376\202\377\377\377\1\376\376\376\211\377" \
-  "\377\377\1\234\234\234\206::<\1\316\316\316\220\377\377\377\14\376\376" \
-  "\376\377\377\377yy{::<99;;;=::<xxz\377\377\377\376\376\376\377\377\377" \
-  "\376\376\376\203\377\377\377\1\376\376\376\212\377\377\377\1\316\316" \
-  "\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211" \
-  "[\267\350\10X\267\347Z\266\351\326\356\370\376\377\377\377\377\375\377" \
-  "\377\377\377\376\377\376\377\377\234\377\377\377\4\376\376\374\277\320" \
-  "\330\0=i\1>j\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316" \
-  "\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\234" \
-  "\377\377\377\1\234\234\234\206::<\3jjj\377\377\377\376\376\376\204\377" \
-  "\377\377\4\376\376\376\377\377\377\332\332\33299;\203::<\3;;=::<SSU\202" \
-  "\377\377\377\1\376\376\376\231\377\377\377\1kkm\206::<\1\316\316\316" \
-  "\267\377\377\377\5\376\376\376\377\377\377\376\376\376\346\346\350;;" \
-  "=\203::<\1;;=\202::<\202;;=\202::<\3""99;::<;;=\222::<\202;;=\3""99;" \
-  "::<;;=\202::<\1;;=\203::<\2\204\204\206\376\376\376\217\377\377\377\1" \
-  "\363\363\363\203::<\6;;=::<;;=::<\347\347\347\376\376\376\234\377\377" \
-  "\377\202\376\376\376\5\377\377\377\376\376\376\234\234\236::<;;=\202" \
-  "::<\3;;=::<\234\234\236\237\377\377\377\1kkm\206::<\1\234\234\236\231" \
-  "\377\377\377\5\376\376\376\316\316\316;;=99;;;=\204::<\1\222\222\224" \
-  "\204\377\377\377\1\376\376\376\235\377\377\377\1\376\376\376\202\377" \
-  "\377\377\1\376\376\376\203\377\377\377\5SSU;;=::<99;;;=\202::<\3kkk\377" \
-  "\377\377\376\376\376\203\377\377\377\1\376\376\376\211\377\377\377\1" \
-  "\234\234\234\206::<\1\316\316\316\222\377\377\377\6\363\363\363GGI::" \
-  "<;;=FFH\363\363\363\205\377\377\377\1\376\376\376\214\377\377\377\1\316" \
-  "\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350" \
-  "\212[\267\350\3Y\267\352\330\354\363\376\377\377\203\377\377\377\1\377" \
-  "\377\375\235\377\377\377\3\276\317\331\0=i\1>j\210\0=i\3\0>i\0=i\177" \
-  "\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377\1" \
-  "\234\234\236\206::<\1\234\234\236\233\377\377\377\2\376\376\376\347\347" \
-  "\347\202::<\2;;=::<\203;;=\1\346\346\346\207\377\377\377\5\204\204\204" \
-  "<<>99;::<;;=\202::<\2\251\251\251\376\376\376\205\377\377\377\1\376\376" \
-  "\376\225\377\377\377\1kkm\206::<\1\316\316\316\264\377\377\377\1\376" \
-  "\376\376\205\377\377\377\3\204\204\206::<;;=\203::<\1;;=\205::<\1;;=" \
-  "\225::<\3;;=::<;;=\202::<\1;;=\202::<\1;;=\202::<\1\347\347\347\220\377" \
-  "\377\377\2SSU;;=\203::<\3;;=::<\265\265\265\237\377\377\377\7\376\376" \
-  "\376\377\377\377lln99;::<;;=99;\202::<\1\265\265\267\237\377\377\377" \
-  "\1kkm\206::<\1\234\234\236\225\377\377\377\1\376\376\376\204\377\377" \
-  "\377\3\376\376\376SSU;;=\204::<\3;;=FFH\346\346\346\202\377\377\377\1" \
-  "\376\376\376\237\377\377\377\1\376\376\376\204\377\377\377\2\265\265" \
-  "\267;;=\202::<\1;;=\203::<\1\265\265\265\217\377\377\377\1\234\234\234" \
-  "\206::<\1\316\316\316\223\377\377\377\4\301\301\301::<:::\302\302\302" \
-  "\223\377\377\377\1\316\316\316\206::<\1\234\234\236\213\377\377\377\2" \
-  "\255\333\363Y\270\350\212[\267\350\2Y\270\350\332\354\370\202\377\377" \
-  "\377\3\376\376\376\376\377\377\377\376\373\235\377\377\377\1\276\317" \
-  "\331\202\0>i\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316" \
-  "\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236\235" \
-  "\377\377\377\1\204\204\204\206::<\1\221\221\223\206\377\377\377\2\363" \
-  "\363\363GGI\202::<\5""99;;;=::<GGI\363\363\363\204\377\377\377\202\376" \
-  "\376\376\226\377\377\377\1kkm\206::<\1\316\316\316\266\377\377\377\1" \
-  "\376\376\376\202\377\377\377\3\346\346\350::<;;=\204::<\5""99;;;=:::" \
-  "99;;;=\203::<\3;;=99;;;=\220::<\5;;=::<;;=::<;;=\202::<\6;;=::<99;;;" \
-  "=::<\204\204\206\220\377\377\377\5yy{99;::<99;;;=\202::<\1xxz\236\377" \
-  "\377\377\10\376\376\376\377\377\377\363\363\36399;::<;;=99;;;=\202::" \
-  "<\2\346\346\350\376\376\376\236\377\377\377\1kkm\206::<\1\234\234\236" \
-  "\231\377\377\377\3\376\376\376\377\377\377\233\233\235\202::<\7;;=::" \
-  "<;;=99;;;=\204\204\204\376\376\376\245\377\377\377\2\363\363\363SSU\205" \
-  "::<\2;;=FFH\205\377\377\377\3\376\376\376\377\377\377\376\376\376\210" \
-  "\377\377\377\1\234\234\234\206::<\1\316\316\316\224\377\377\377\3\205" \
-  "\205\205\221\221\221\376\376\376\204\377\377\377\202\376\376\376\215" \
-  "\377\377\377\1\316\316\316\206::<\1\234\234\236\213\377\377\377\2\255" \
-  "\333\363Y\270\350\212[\267\350\7Y\270\350\321\356\376\377\376\377\377" \
-  "\377\377\377\377\375\376\377\375\377\376\377\232\377\377\377\1\377\377" \
-  "\375\202\377\377\377\3\275\317\333\0\77k\0>i\210\0=i\3\0>i\0=i\177\236" \
-  "\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377\1\234" \
-  "\234\236\206::<\1\234\234\236\235\377\377\377\1\316\316\316\206::<\1" \
-  "FFH\203\377\377\377\1\376\376\376\202\377\377\377\1\250\250\250\203:" \
-  ":<\1;;=\202::<\1\204\204\206\203\377\377\377\1\376\376\376\231\377\377" \
-  "\377\1kkm\206::<\1\316\316\316\271\377\377\377\1\234\234\236\204::<\4" \
-  ";;=::<kkm\234\234\236\202\234\234\234\1\233\233\233\202\234\234\234\3" \
-  "\235\235\235\234\234\234\235\235\235\224\234\234\234\202\234\234\236" \
-  "\1\204\204\206\206::<\2FFH\363\363\363\217\377\377\377\2\250\250\252" \
-  ";;=\206::<\1\364\364\364\237\377\377\377\2\265\265\265;;=\205::<\1TT" \
-  "V\240\377\377\377\1kkm\206::<\1\234\234\236\224\377\377\377\3\376\376" \
-  "\376\377\377\377\376\376\376\204\377\377\377\3\364\364\366FFH;;=\203" \
-  "::<\4;;=::<:::\316\316\316\245\377\377\377\1\221\221\221\202::<\2;;=" \
-  "::<\202;;=\2::<\234\234\236\220\377\377\377\1\234\234\234\206::<\1\316" \
-  "\316\316\224\377\377\377\1\376\376\376\225\377\377\377\1\316\316\316" \
-  "\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350\212[\267" \
-  "\350\4[\267\346\265\340\361\377\376\377\376\376\377\202\377\377\375\1" \
-  "\374\377\377\230\377\377\377\3\376\376\376\377\377\377\377\377\375\202" \
-  "\377\377\377\3\243\265\301\0>j\0>i\210\0=i\3\0>i\0=i\177\236\263\232" \
-  "\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377\1\234\234\236" \
-  "\206::<\1\234\234\236\236\377\377\377\2__a;;=\204::<\5;;=\265\265\265" \
-  "\376\376\376\377\377\377\376\376\376\202\377\377\377\1SSU\204::<\3;;" \
-  "=::<\346\346\350\235\377\377\377\1kkm\206::<\1\316\316\316\270\377\377" \
-  "\377\2\363\363\365GGI\205::<\3;;=\333\333\333\376\376\376\237\377\377" \
-  "\377\10FFH::<;;=::<;;=99;;;=\233\233\235\217\377\377\377\5\346\346\346" \
-  "::<;;=::<;;=\203::<\1\234\234\234\210\377\377\377\1\376\376\376\217\377" \
-  "\377\377\1\376\376\376\206\377\377\377\1TTT\205::<\3;;=\221\221\221\376" \
-  "\376\376\237\377\377\377\1kkm\206::<\1\234\234\236\234\377\377\377\12" \
-  "\233\233\233::<;;=::<;;=::<;;=::<SSU\363\363\363\212\377\377\377\3\376" \
-  "\376\376\377\377\377\376\376\376\221\377\377\377\1\376\376\376\204\377" \
-  "\377\377\1\315\315\317\203::<\1;;=\203::<\2FFH\363\363\365\220\377\377" \
-  "\377\1\234\234\234\206::<\1\316\316\316\252\377\377\377\1\316\316\316" \
-  "\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211[\267" \
-  "\350\6Y\270\350[\267\346\227\324\363\377\375\376\377\377\377\376\377" \
-  "\375\213\377\377\377\6\376\376\376\377\377\377\373\377\376\377\377\377" \
-  "\377\376\377\376\377\377\211\377\377\377\10\377\376\377\374\377\377\377" \
-  "\377\375\377\377\377\377\376\377_\207\240\0>l\0\77j\210\0=i\3\0>i\0=" \
-  "i\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377" \
-  "\1\234\234\236\206::<\1\234\234\236\236\377\377\377\1\265\265\265\204" \
-  "::<\3;;=::<__a\204\377\377\377\1\317\317\321\206::<\1kkk\236\377\377" \
-  "\377\1kkm\206::<\1\316\316\316\267\377\377\377\3\376\376\376\250\250" \
-  "\25299;\202;;=\203::<\1kkm\233\377\377\377\1\376\376\376\205\377\377" \
-  "\377\10\234\234\236;;=::<;;=::<;;=99;GGI\204\377\377\377\3\376\376\376" \
-  "\377\377\377\376\376\376\210\377\377\377\5\376\376\376__a::<;;=99;\203" \
-  ";;=\2FFH\363\363\363\204\377\377\377\3\376\376\376\377\377\377\376\376" \
-  "\376\224\377\377\377\5\376\376\376\377\377\377\301\301\301:::;;=\202" \
-  "::<\202;;=\4::<\332\332\332\377\377\377\376\376\376\236\377\377\377\1" \
-  "kkm\206::<\1\234\234\236\233\377\377\377\3\376\376\376\364\364\364FF" \
-  "H\205::<\4;;=99;xxx\376\376\376\203\377\377\377\1\376\376\376\203\377" \
-  "\377\377\1\376\376\376\202\377\377\377\1\376\376\376\224\377\377\377" \
-  "\4\376\376\376\377\377\377\362\362\362GGI\202::<\6;;=::<;;=::<99;\250" \
-  "\250\252\221\377\377\377\1\234\234\234\206::<\1\316\316\316\252\377\377" \
-  "\377\1\316\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363" \
-  "Y\270\350\211[\267\350\7Y\267\352X\267\347[\266\353\301\344\367\377\377" \
-  "\377\376\376\376\376\377\377\211\377\377\377\6\377\376\377\377\377\377" \
-  "\377\375\376\377\377\377\377\377\375\377\376\377\202\377\377\377\210" \
-  "\377\376\377\10\377\377\375\376\377\377\377\377\377\376\377\375\237\266" \
-  "\306\0=i\2=g\0>e\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316" \
-  "\316\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234\236" \
-  "\237\377\377\377\1EEG\202::<\202;;=\11""99;;;=\332\332\332\377\377\377" \
-  "\376\376\376\377\377\377xxz::<;;=\204::<\1\302\302\302\236\377\377\377" \
-  "\1kkm\206::<\1\316\316\316\266\377\377\377\4\376\376\376\377\377\377" \
-  "SSU;;=\202::<\1;;=\202::<\1\316\316\320\235\377\377\377\15\376\376\376" \
-  "\377\377\377\376\376\376\377\377\377\363\363\365::<;;=99;;;=::<;;=::" \
-  "<\265\265\265\215\377\377\377\3\376\376\376\377\377\377\266\266\270\202" \
-  "::<\1;;=\203::<\2;;=\204\204\206\205\377\377\377\3\376\376\376\377\377" \
-  "\377\376\376\376\213\377\377\377\1\376\376\376\205\377\377\377\1\376" \
-  "\376\376\202\377\377\377\2\363\363\363SSU\203::<\4;;=99;;;=SSU\241\377" \
-  "\377\377\1kkm\206::<\1\234\234\236\235\377\377\377\3\265\265\265;;=9" \
-  "9;\202::<\1;;=\203::<\1\204\204\206\206\377\377\377\1\376\376\376\216" \
-  "\377\377\377\3\376\376\376\377\377\377\376\376\376\206\377\377\377\6" \
-  "\376\376\376\377\377\377\362\362\364``b::<;;=\202::<\1;;=\202::<\2aa" \
-  "c\376\376\376\221\377\377\377\1\234\234\234\206::<\1\316\316\316\252" \
-  "\377\377\377\1\316\316\316\206::<\1\234\234\236\213\377\377\377\2\255" \
-  "\333\363Y\270\350\211[\267\350\10X\267\347[\267\346[\265\347[\267\346" \
-  "\230\320\361\327\360\367\325\356\365\331\355\370\210\326\354\371\10\325" \
-  "\355\367\323\355\372\366\373\377\377\376\374\376\377\375\276\320\332" \
-  "\277\320\330\301\317\330\210\276\317\331\10\276\317\327\276\320\334\301" \
-  "\316\327_\207\241\0>i\0=l\0\77k\0>i\210\0=i\3\0>i\0=i\177\236\263\232" \
-  "\377\377\377\1\316\316\316\206::<\1kkm\240\377\377\377\1\234\234\236" \
-  "\206::<\1\234\234\236\237\377\377\377\3\222\222\224::<;;=\202::<\3;;" \
-  "=99;\205\205\207\202\377\377\377\2\346\346\346;;=\202::<\1;;=\202::<" \
-  "\1SSU\237\377\377\377\1kkm\206::<\1\316\316\316\267\377\377\377\5\265" \
-  "\265\26799;;;=::<;;=\202::<\1TTV\243\377\377\377\1\204\204\206\205::" \
-  "<\2;;=SSU\206\377\377\377\1\376\376\376\210\377\377\377\3\376\376\376" \
-  "GGI;;=\202::<\5;;=::<;;=::<\301\301\303\203\377\377\377\1\376\376\376" \
-  "\214\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\202\377" \
-  "\377\377\1\376\376\376\204\377\377\377\3\204\204\206;;=::<\202;;=\203" \
-  "::<\1\265\265\265\241\377\377\377\1kkm\206::<\1\234\234\236\236\377\377" \
-  "\377\12kkk::<99;;;=::<99;;;=::<;;=\204\204\206\210\377\377\377\202\376" \
-  "\376\376\213\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376" \
-  "\202\377\377\377\1\376\376\376\202\377\377\377\2\364\364\366__a\206:" \
-  ":<\3;;=::<\332\332\332\222\377\377\377\1\234\234\234\206::<\1\316\316" \
-  "\316\252\377\377\377\1\316\316\316\206::<\1\234\234\236\213\377\377\377" \
-  "\2\255\333\363Y\270\350\211[\267\350\3\\\266\350X\270\352\\\266\352\202" \
-  "[\267\350\3X\267\347Y\270\350Z\266\347\210Y\270\350\10[\267\350[\265" \
-  "\351\327\355\372\376\377\377\377\377\375\0>j\0>i\1\77h\210\0>i\10\0\77" \
-  "k\0>g\2=g\0=i\0\77j\0<h\0\77h\1>j\210\0=i\3\0>i\0=i\177\236\263\232\377" \
-  "\377\377\1\316\316\316\206::<\1kkm\240\377\377\377\1\234\234\236\206" \
-  "::<\1\234\234\236\236\377\377\377\2\376\376\376\346\346\346\202::<\10" \
-  ";;=::<99;;;=::<\363\363\363\377\377\377\234\234\236\202::<\6;;=::<;;" \
-  "=::<\250\250\250\376\376\376\236\377\377\377\1kkm\206::<\1\316\316\316" \
-  "\267\377\377\377\10kkm;;=::<;;=99;::<;;=\264\264\266\236\377\377\377" \
-  "\1\376\376\376\204\377\377\377\2\346\346\346;;=\202::<\202;;=\202::<" \
-  "\2\316\316\320\376\376\376\203\377\377\377\1\376\376\376\205\377\377" \
-  "\377\3\376\376\376\377\377\377\376\376\376\202\377\377\377\3\234\234" \
-  "\234::<;;=\202::<\6;;=::<;;=GGI\332\332\332\376\376\376\224\377\377\377" \
-  "\1\376\376\376\203\377\377\377\2\266\266\266;;=\202::<\6;;=::<;;=::<" \
-  "SSU\376\376\376\241\377\377\377\1kkm\206::<\1\234\234\236\236\377\377" \
-  "\377\2\363\363\363GGI\203::<\1;;=\203::<\3""99;\204\204\204\363\363\363" \
-  "\225\377\377\377\1\376\376\376\204\377\377\377\4\376\376\376\346\346" \
-  "\346``b::<\202;;=\3::<99;<<>\202::<\1\250\250\250\223\377\377\377\1\234" \
-  "\234\234\206::<\1\316\316\316\252\377\377\377\1\316\316\316\206::<\1" \
-  "\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211[\267\350\10Y" \
-  "\270\350X\270\353Y\267\352X\266\351X\271\346[\267\350\\\266\353[\267" \
-  "\350\210Y\270\350\7X\267\345]\267\351\323\355\372\377\376\377\376\377" \
-  "\377\4=h\0>g\211\0=i\10\2=i\0@j\0>i\1>j\0>i\1\77h\0>g\0>j\210\0=i\3\0" \
-  ">i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377" \
-  "\377\377\1\234\234\236\206::<\1\234\234\236\237\377\377\377\6\376\376" \
-  "\376yy{::<;;=::<;;=\202::<\4\251\251\251\376\376\376SSU;;=\203::<\3;" \
-  ";=FFH\363\363\363\237\377\377\377\1kkm\206::<\1\316\316\316\264\377\377" \
-  "\377\5\376\376\376\377\377\377\315\315\317::<;;=\204::<\2FFH\376\376" \
-  "\376\237\377\377\377\1\376\376\376\203\377\377\377\3\376\376\376kkm;" \
-  ";=\204::<\6""99;lln\377\377\377\376\376\376\377\377\377\376\376\376\202" \
-  "\377\377\377\3\376\376\376\377\377\377\376\376\376\205\377\377\377\10" \
-  "\376\376\376\377\377\377SSU::<99;;;=99;;;=\202::<\2FFF\332\332\332\203" \
-  "\377\377\377\1\376\376\376\212\377\377\377\1\376\376\376\210\377\377" \
-  "\377\1\265\265\265\206::<\3""99;::<\265\265\265\203\377\377\377\1\376" \
-  "\376\376\236\377\377\377\1kkm\206::<\1\234\234\236\233\377\377\377\1" \
-  "\376\376\376\203\377\377\377\1\331\331\331\204::<\3""99;;;=99;\202;;" \
-  "=\2^^^\332\332\332\202\377\377\377\1\376\376\376\216\377\377\377\1\376" \
-  "\376\376\206\377\377\377\5\376\376\376\316\316\316FFH::<;;=\204::<\7" \
-  "99;::<\204\204\204\377\377\377\376\376\376\377\377\377\376\376\376\220" \
-  "\377\377\377\1\234\234\234\206::<\1\316\316\316\252\377\377\377\1\316" \
-  "\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363Y\270\350" \
-  "\213[\267\350\6Y\270\350[\266\353[\267\350]\267\351X\266\351X\270\350" \
-  "\210[\267\350\10X\266\351Z\266\351\326\354\367\377\376\377\376\377\372" \
-  "\0>j\0>i\1>j\210\0=i\10\1\77h\0=h\0>i\1\77h\0>j\0=i\0>i\1>j\210\0=i\3" \
-  "\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm\240\377" \
-  "\377\377\1\234\234\236\206::<\1\234\234\236\237\377\377\377\2\376\376" \
-  "\376\316\316\316\203::<\1;;=\202::<\4SSU\265\265\267;;=99;\202::<\5;" \
-  ";=99;\204\204\204\377\377\377\376\376\376\236\377\377\377\1kkm\206::" \
-  "<\1\316\316\316\263\377\377\377\1\376\376\376\202\377\377\377\1xxz\202" \
-  "::<\1;;=\202::<\3""99;\234\234\236\376\376\376\236\377\377\377\1\375" \
-  "\375\375\202\377\377\377\1\376\376\376\202\377\377\377\5\317\317\317" \
-  "99;::<;;=::<\202;;=\2::<\332\332\332\210\377\377\377\3\376\376\376\377" \
-  "\377\377\376\376\376\204\377\377\377\2\316\316\316;;=\206::<\3;;=::<" \
-  "\250\250\252\217\377\377\377\1\376\376\376\204\377\377\377\2\363\363" \
-  "\363\222\222\224\202::<\2;;=::<\202;;=\3""99;;;=kkm\205\377\377\377\1" \
-  "\376\376\376\235\377\377\377\1kkm\206::<\1\234\234\236\235\377\377\377" \
-  "\1\376\376\376\202\377\377\377\2\266\266\26699;\202::<\3;;=::<;;=\202" \
-  "::<\3;;=FFH\234\234\234\202\377\377\377\1\376\376\376\223\377\377\377" \
-  "\2\364\364\364\204\204\206\202::<\1;;=\202::<\1;;=\202::<\3""99;``b\376" \
-  "\376\376\224\377\377\377\1\234\234\234\206::<\1\316\316\316\252\377\377" \
-  "\377\1\316\316\316\206::<\1\234\234\236\213\377\377\377\2\255\333\363" \
-  "Y\270\350\211[\267\350\10Y\271\353Z\266\347\\\267\344[\267\346X\267\347" \
-  "[\267\350X\270\353Z\266\347\210Y\270\350\10Y\267\352\\\267\346\325\355" \
-  "\371\377\377\377\376\377\377\0>g\0\77k\0>i\210\0\77j\10\0>i\3>h\0=i\0" \
-  "\77i\0=j\0>g\0=j\0=f\210\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1" \
-  "\316\316\316\206::<\1kkm\240\377\377\377\1\234\234\236\206::<\1\234\234" \
-  "\236\234\377\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377" \
-  "\377\2SSU;;=\202::<\202;;=\3::<SSU::<\202;;=\203::<\1\332\332\332\240" \
-  "\377\377\377\1kkm\206::<\1\316\316\316\265\377\377\377\1\346\346\346" \
-  "\203::<\1;;=\202::<\2;;=\363\363\365\235\377\377\377\1\376\376\376\210" \
-  "\377\377\377\1SSU\202;;=\204::<\1\204\204\204\202\377\377\377\202\376" \
-  "\376\376\214\377\377\377\1\221\221\221\205::<\202;;=\4::<;;=kkm\316\316" \
-  "\316\221\377\377\377\2\301\301\301SSS\210::<\2FFH\363\363\365\243\377" \
-  "\377\377\1kkm\206::<\1\234\234\236\241\377\377\377\1\266\266\270\203" \
-  "::<\1;;=\205::<\3:::RRR\265\265\265\222\377\377\377\3\363\363\363\234" \
-  "\234\234FFF\202::<\1;;=\206::<\2``b\363\363\363\225\377\377\377\1\234" \
-  "\234\234\206::<\1\316\316\316\252\377\377\377\1\316\316\316\206::<\1" \
-  "\234\234\236\213\377\377\377\2\255\333\363Y\270\350\211[\267\350\10Z" \
-  "\266\347[\267\346Z\265\352X\266\351\\\270\351[\267\346X\267\347[\265" \
-  "\347\210[\267\350\10Y\267\352[\266\345\325\355\367\376\375\377\377\377" \
-  "\375\3>j\0=i\1>j\210\0>i\10\0\77j\1\77h\0>j\0>g\3>j\0\77i\0=j\0>i\210" \
-  "\0=i\3\0>i\0=i\177\236\263\232\377\377\377\1\316\316\316\206::<\1kkm" \
-  "\240\377\377\377\1\234\234\236\206::<\1\234\234\236\241\377\377\377\6" \
-  "\266\266\270::<;;=::<99;::<\202;;=\205::<\2kkm\376\376\376\240\377\377" \
-  "\377\1kkm\206::<\1\316\316\316\265\377\377\377\4\205\205\205;;=::<;;" \
-  "=\203::<\3\204\204\206\377\377\377\376\376\376\245\377\377\377\1\265" \
-  "\265\267\207::<\2\346\346\346\376\376\376\216\377\377\377\4\376\376\376" \
-  "lll::<;;=\202::<\13;;=::<;;=::<;;=::<kkm\264\264\266\363\363\365\377" \
-  "\377\377\376\376\376\202\377\377\377\1\376\376\376\206\377\377\377\3" \
-  "\346\346\350\250\250\252TTV\204::<\3;;=::<;;=\202::<\2;;=\333\333\333" \
-  "\202\377\377\377\1\376\376\376\237\377\377\377\3\376\376\376\377\377" \
-  "\377kkm\203::<\1;;=\202::<\1\235\235\237\242\377\377\377\1\265\265\265" \
-  "\203::<\1;;=\207::<\4GGI\220\220\222\332\332\334\376\376\376\206\377" \
-  "\377\377\1\376\376\376\204\377\377\377\5\376\376\376\302\302\302\204" \
-  "\204\206::<;;=\202::<\11""99;;;=::<;;=::<;;=::<```\363\363\363\226\377" \
-  "\377\377\1\234\234\234\202::<\1;;=\202::<\2;;=\316\316\316\252\377\377" \
-  "\377\4\316\316\316::<;;=99;\203::<\3\234\234\234\377\377\377\376\376" \
-  "\376\204\377\377\377\7\373\377\376\377\376\377\377\377\377\376\377\377" \
-  "\377\376\377\253\333\362[\265\351\203[\267\352\6Y\267\352[\267\350X\267" \
-  "\345Y\270\346Y\270\350Y\267\352\220[\267\350\5X\267\347Y\270\350\325" \
-  "\355\371\377\376\377\377\377\377\202\0>g\1\1>k\220\0=i\15\0>g\1>j\0>" \
-  "i\0\77j\1>j\0=i\0\77j\0>j\0=i\1<h}\237\270\376\377\377\377\376\374\226" \
-  "\377\377\377\3\376\376\376\377\377\377\316\316\316\204::<\3""99;;;=l" \
-  "ln\240\377\377\377\5\234\234\234::<;;=::<;;=\202::<\1\235\235\237\241" \
-  "\377\377\377\10\363\363\363FFF::<;;=::<;;=::<;;=\203::<\3;;=::<\265\265" \
-  "\265\237\377\377\377\3\376\376\376\377\377\377kkm\202::<\1;;=\202::<" \
-  "\4;;=\316\316\316\377\377\377\376\376\376\250\377\377\377\1\376\376\376" \
-  "\202\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\203\377" \
-  "\377\377\6\364\364\364::<99;;;=::<;;=\202::<\1\347\347\351\203\377\377" \
-  "\377\1\376\376\376\244\377\377\377\4FFH;;=::<99;\203::<\1\220\220\222" \
-  "\220\377\377\377\2\363\363\363``b\202::<\1;;=\203::<\1;;=\205::<\5__" \
-  "_\222\222\222\234\234\234\316\316\316\317\317\317\202\316\316\316\7\301" \
-  "\301\301\234\234\236\204\204\206__a;;=99;;;=\203::<\2;;=99;\203;;=\2" \
-  "::<\265\265\265\204\377\377\377\1\376\376\376\235\377\377\377\5\376\376" \
-  "\376\377\377\377\376\376\376kkm::<\202;;=\6::<;;=::<\234\234\236\377" \
-  "\377\377\376\376\376\236\377\377\377\1\376\376\376\202\377\377\377\5" \
-  "\301\301\303GGI;;=::<;;=\206::<\7;;=::<99;GGIwwy\235\235\235\300\300" \
-  "\300\202\316\316\316\10\315\315\315\317\317\317\315\315\315\265\265\265" \
-  "\234\234\234jjj<<>99;\203::<\1;;=\202::<\2""99;;;=\203::<\1\204\204\206" \
-  "\206\377\377\377\1\376\376\376\221\377\377\377\10\234\234\234;;=::<9" \
-  "9;;;=::<99;\316\316\316\252\377\377\377\4\317\317\317;;=88:;;=\202::" \
-  "<\3;;=\234\234\234\376\376\376\205\377\377\377\1\377\375\377\202\377" \
-  "\377\375\6\377\376\377\377\377\375\253\333\362Y\270\350X\267\347Z\266" \
-  "\347\202Y\270\350\1[\267\350\202Z\266\347\2[\267\350Z\266\347\220[\267" \
-  "\350\5[\267\352Z\266\351\327\355\372\377\375\376\377\376\377\202\1>j" \
-  "\1\1>k\220\0>i\202\0=i\14\0\77k\0>i\0=i\1>j\0=i\0=j\0\77k\0=i\177\236" \
-  "\263\377\377\377\376\377\377\375\376\377\224\377\377\377\1\376\376\376" \
-  "\202\377\377\377\1\316\316\316\203::<\202;;=\3""99;kkm\376\376\376\234" \
-  "\377\377\377\1\376\376\376\202\377\377\377\1\233\233\233\202::<\7;;=" \
-  "::<;;=::<\234\234\236\377\377\377\376\376\376\233\377\377\377\3\376\376" \
-  "\376\377\377\377\376\376\376\202\377\377\377\4\221\221\221;;=99;;;=\202" \
-  "::<\202;;=\203::<\1SSU\203\377\377\377\1\376\376\376\233\377\377\377" \
-  "\10\376\376\376\377\377\377\376\376\376kkm::<;;=::<;;=\202::<\1;;=\202" \
-  "::<\1;;=\240::<\1kkk\207\377\377\377\1\376\376\376\203\377\377\377\3" \
-  "\375\375\375\377\377\377\376\376\376\202\377\377\377\2\233\233\235::" \
-  "<\202;;=\203::<\1xxz\251\377\377\377\1\235\235\237\202::<\1;;=\203::" \
-  "<\3GGI\363\363\363\376\376\376\217\377\377\377\2\363\363\363yyy\204:" \
-  ":<\1;;=\203::<\1;;=\206::<\1""99;\203::<\1;;=\203::<\6;;=99;;;=::<;;" \
-  "=99;\202;;=\3""99;GGI\301\301\301\206\377\377\377\1\376\376\376\232\377" \
-  "\377\377\1\376\376\376\204\377\377\377\1lln\202::<\1;;=\202::<\2;;=\234" \
-  "\234\236\241\377\377\377\1\376\376\376\202\377\377\377\2\332\332\334" \
-  "__a\211::<\1;;=\205::<\1;;=\202::<\1;;=\202::<\4;;=::<99;;;=\202::<\1" \
-  ";;=\202::<\1;;=\203::<\2FFH\265\265\267\206\377\377\377\3\376\376\376" \
-  "\377\377\377\376\376\376\220\377\377\377\3\234\234\236::<;;=\203::<\2" \
-  ";;=\316\316\316\252\377\377\377\2\315\315\31599;\203::<\5;;=::<\234\234" \
-  "\234\377\377\377\376\376\376\205\377\377\377\7\377\377\375\375\377\376" \
-  "\377\377\377\375\376\377\255\333\365Z\266\345[\267\350\202Y\270\350\1" \
-  "X\267\347\202Y\267\352\3Z\266\351Z\266\347Y\270\350\221[\267\350\2[\267" \
-  "\352\323\355\372\202\376\377\377\1\0=j\222\0=i\204\0>i\14\1\77h\0>g\0" \
-  "=f\1>j\0\77i\0>i\177\237\266\377\377\375\377\376\375\377\377\377\376" \
-  "\377\377\377\376\377\225\377\377\377\2\316\316\316::<\202;;=\202::<\4" \
-  ";;=kkm\377\377\377\376\376\376\235\377\377\377\2\376\376\376\235\235" \
-  "\235\202::<\1;;=\202::<\2;;=\234\234\236\242\377\377\377\3\346\346\346" \
-  "::<;;=\210::<\2\235\235\237\376\376\376\234\377\377\377\1\376\376\376" \
-  "\204\377\377\377\1lln\202::<\3;;=::<;;=\203::<\2;;=99;\240::<\1kkk\210" \
-  "\377\377\377\11\376\376\376\377\377\377\376\376\376\377\377\377\376\376" \
-  "\376\377\377\377\376\376\376\364\364\366GGI\205::<\6;;=\316\316\316\377" \
-  "\377\377\376\376\376\377\377\377\376\376\376\245\377\377\377\11\345\345" \
-  "\345;;=::<;;=::<;;=::<;;=\234\234\236\222\377\377\377\7\234\234\234;" \
-  ";=::<;;=99;;;=99;\203::<\1;;=\202::<\203;;=\2::<;;=\202::<\1;;=\202:" \
-  ":<\1;;=\202::<\12;;=::<;;=99;::<``b\332\332\332\376\376\376\377\377\377" \
-  "\376\376\376\202\377\377\377\5\376\376\376\377\377\377\376\376\376\377" \
-  "\377\377\376\376\376\232\377\377\377\5\376\376\376\377\377\377\376\376" \
-  "\376kkm;;=\202::<\1;;=\202::<\1\234\234\236\236\377\377\377\1\376\376" \
-  "\376\207\377\377\377\2\234\234\236;;=\202::<\1;;=\204::<\1;;=\211::<" \
-  "\1;;=\202::<\1;;=\202::<\1;;=\202::<\1;;=\203::<\3;;=kkm\346\346\346" \
-  "\203\377\377\377\1\376\376\376\204\377\377\377\1\376\376\376\221\377" \
-  "\377\377\2\234\234\236;;=\202::<\1;;=\202::<\1\316\316\316\252\377\377" \
-  "\377\4\316\316\316;;=99;;;=\203::<\1\234\234\234\210\377\377\377\7\376" \
-  "\377\377\377\375\376\377\377\375\256\332\363Y\270\350Y\267\352[\267\352" \
-  "\202[\267\350\5X\270\350X\270\352Y\267\352Y\270\350X\267\347\220[\267" \
-  "\350\5X\267\347[\267\350\325\355\367\377\377\373\377\377\375\202\0\77" \
-  "j\1\0>g\220\0>i\1\0\77j\203\0>i\202\0=i\6\1>j\0>i\0\77h\0>g\177\236\263" \
-  "\377\377\375\203\377\377\377\1\377\376\377\222\377\377\377\1\376\376" \
-  "\376\202\377\377\377\1\316\316\316\203::<\1;;=\202::<\2kkm\376\376\376" \
-  "\233\377\377\377\1\376\376\376\203\377\377\377\5\234\234\234::<;;=::" \
-  "<;;=\202::<\1\234\234\236\235\377\377\377\202\376\376\376\202\377\377" \
-  "\377\5\376\376\376\377\377\377xxz99;;;=\204::<\4;;=::<;;=\362\362\362" \
-  "\237\377\377\377\5\376\376\376\377\377\377\376\376\376kkm;;=\207::<\2" \
-  "99;;;=\240::<\1lll\205\377\377\377\1\376\376\376\203\377\377\377\1\376" \
-  "\376\376\202\377\377\377\1\376\376\376\202\377\377\377\4\265\265\267" \
-  ";;=::<;;=\202::<\2;;=__a\205\377\377\377\1\376\376\376\245\377\377\377" \
-  "\3\204\204\206::<;;=\204::<\2SSU\376\376\376\215\377\377\377\1\376\376" \
-  "\376\204\377\377\377\2\316\316\316__a\206::<\1;;=\214::<\5;;=::<;;=:" \
-  ":<;;=\203::<\2\234\234\234\363\363\363\204\377\377\377\1\376\376\376" \
-  "\243\377\377\377\1lln\206::<\2\233\233\235\376\376\376\233\377\377\377" \
-  "\1\376\376\376\202\377\377\377\1\376\376\376\207\377\377\377\3\345\345" \
-  "\345lln;;=\204::<\5;;=99;::<99;;;=\205::<\1;;=\203::<\3""99;;;=99;\206" \
-  "::<\2TTV\265\265\265\234\377\377\377\10\234\234\234;;=::<;;=::<;;=::" \
-  "<\316\316\316\252\377\377\377\1\315\315\315\206::<\4\235\235\235\376" \
-  "\376\376\377\377\377\376\376\376\205\377\377\377\12\377\377\373\377\377" \
-  "\377\377\377\375\267\340\366[\270\344Z\266\351[\267\352Z\266\351[\265" \
-  "\347[\267\350\202Y\270\350\2\\\270\351Z\266\347\220[\267\350\10X\267" \
-  "\347X\266\351\325\355\371\377\376\377\377\377\377\0\77k\0=h\3>j\220\0" \
-  "\77j\16\1>j\0=i\1>j\0=i\0\77j\0>i\0=h\0\77j\0\77h\1<f\177\236\263\377" \
-  "\377\375\376\376\377\376\377\377\225\377\377\377\202\376\376\376\2\317" \
-  "\317\317::<\202;;=\1::<\202;;=\1kkm\235\377\377\377\1\376\376\376\202" \
-  "\377\377\377\2\234\234\234;;=\205::<\2\233\233\235\376\376\376\232\377" \
-  "\377\377\1\376\376\376\204\377\377\377\1\376\376\376\202\377\377\377" \
-  "\1\316\316\316\203::<\1;;=\204::<\3\204\204\206\377\377\377\376\376\376" \
-  "\241\377\377\377\1lln\203::<\202;;=\203::<\1;;=\241::<\1kkk\206\377\377" \
-  "\377\3\376\376\376\377\377\377\376\376\376\206\377\377\377\1TTV\203:" \
-  ":<\4""99;;;=99;\265\265\267\253\377\377\377\3\331\331\331;;=99;\204:" \
-  ":<\2;;=\264\264\264\217\377\377\377\1\376\376\376\204\377\377\377\2\264" \
-  "\264\266SSU\202::<\2""99;;;=\203::<\3;;=::<;;=\206::<\5;;=99;;;=::<;" \
-  ";=\20299;\6\204\204\206\346\346\346\377\377\377\376\376\376\377\377\377" \
-  "\376\376\376\203\377\377\377\202\376\376\376\202\377\377\377\1\376\376" \
-  "\376\231\377\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377" \
-  "\377\12lll::<;;=::<99;::<;;=\234\234\236\377\377\377\376\376\376\233" \
-  "\377\377\377\1\375\375\375\213\377\377\377\4\316\316\316xxx;;=99;\204" \
-  "::<\1;;=\202::<\1;;=\204::<\4;;=::<;;=99;\203::<\1;;=\202::<\2SSS\265" \
-  "\265\265\210\377\377\377\3\376\376\376\377\377\377\376\376\376\223\377" \
-  "\377\377\1\234\234\234\206::<\1\316\316\316\250\377\377\377\3\376\376" \
-  "\376\377\377\377\315\315\315\202::<\7;;=::<;;=::<\234\234\234\377\377" \
-  "\377\376\376\376\202\377\377\377\21\376\376\376\377\377\377\376\377\373" \
-  "\377\377\377\376\377\377\376\377\375\377\376\377\353\366\374X\266\351" \
-  "X\270\350W\267\347X\270\350X\267\347Z\266\347\\\270\347X\267\345Y\270" \
-  "\350\221[\267\350\7Z\266\347[\267\350\327\355\372\377\375\377\377\377" \
-  "\377\0>g\0\77h\221\0=i\1\0>g\202\1\77h\1\0=i\202\0>i\11\0\77j\0>g\0>" \
-  "j\0\77m\336\347\354\376\377\377\377\376\377\376\377\377\377\377\375\222" \
-  "\377\377\377\1\376\376\376\203\377\377\377\1\316\316\316\202::<\1;;=" \
-  "\203::<\2kkm\376\376\376\233\377\377\377\1\376\376\376\202\377\377\377" \
-  "\3\376\376\376\234\234\234;;=\202::<\6""99;::<;;=\234\234\236\377\377" \
-  "\377\376\376\376\237\377\377\377\1\376\376\376\202\377\377\377\1SSS\202" \
-  ";;=\1""99;\204;;=\3\331\331\331\377\377\377\376\376\376\234\377\377\377" \
-  "\3\376\376\376\377\377\377\376\376\376\202\377\377\377\3lll::<;;=\202" \
-  "::<\202;;=\203::<\1;;=\240::<\1kkk\204\377\377\377\1\376\376\376\211" \
-  "\377\377\377\3\302\302\302;;;999\202::<\3;;=::<TTT\210\377\377\377\1" \
-  "\376\376\376\244\377\377\377\2kkk;;=\202::<\203:::\1TTT\226\377\377\377" \
-  "\3\301\301\301xxz;;=\202::<\1;;=\202::<\1;;=\202::<\5;;=::<;;=::<;;=" \
-  "\202::<\5;;=99;SSU\235\235\237\347\347\351\204\377\377\377\1\376\376" \
-  "\376\207\377\377\377\3\376\376\376\377\377\377\376\376\376\235\377\377" \
-  "\377\10kkk:::::<999;;;:::;;;\233\233\233\236\377\377\377\1\376\376\376" \
-  "\211\377\377\377\1\376\376\376\202\377\377\377\3\346\346\350\251\251" \
-  "\253``b\202::<\3;;=::<;;=\202::<\1;;=\205::<\1;;=\203::<\5;;=FFH\204" \
-  "\204\204\316\316\316\376\376\376\204\377\377\377\1\376\376\376\232\377" \
-  "\377\377\1\234\234\234\202::<\5""99;;;=99;;;;\315\315\315\252\377\377" \
-  "\377\3\316\316\316:::;;;\202:::\3;;;::<\234\234\234\206\377\377\377\1" \
-  "\377\377\375\203\377\376\377\11\377\377\377\377\377\375\303\344\367W" \
-  "\270\345^\266\344X\267\347Y\271\353Z\266\351\\\266\350\202Y\270\350\221" \
-  "[\267\352\3[\267\350[\265\347\325\355\371\202\376\377\377\3\2=e\0>g\0" \
-  "\77m\220\0=i\6\0\77j\0>i\0=h\0\77j\0=i\0\77j\202\0>g\2\1\77h\240\266" \
-  "\304\204\377\377\377\2\376\376\376\377\377\375\223\377\377\377\14\376" \
-  "\376\376\377\377\377\315\315\315;;=::<:::;;;:::;;;kkk\377\377\377\376" \
-  "\376\376\233\377\377\377\1\376\376\376\202\377\377\377\10\235\235\235" \
-  "99;::<999;;;:::;;;\233\233\233\234\377\377\377\1\376\376\376\207\377" \
-  "\377\377\1\265\265\265\202::<\1;;=\203::<\1kkk\203\377\377\377\1\376" \
-  "\376\376\240\377\377\377\2kkk:::\202::<\3;;=99;;;=\244::<\1kkk\205\377" \
-  "\377\377\1\376\376\376\210\377\377\377\1\346\346\346\206\316\316\316" \
-  "\3\332\332\332\377\377\377\377\377\375\253\377\377\377\2\346\346\346" \
-  "\316\316\316\202\316\316\320\203\316\316\316\1\315\315\315\225\377\377" \
-  "\377\202\376\376\376\202\377\377\377\4\316\316\320\234\234\236kkmSSU" \
-  "\205::<\1;;=\203::<\5kkm\204\204\206\264\264\266\346\346\350\376\376" \
-  "\376\214\377\377\377\1\376\376\376\202\377\377\377\202\376\376\376\231" \
-  "\377\377\377\1\376\376\376\203\377\377\377\2\331\331\331\317\317\317" \
-  "\205\316\316\316\1\347\347\347\243\377\377\377\1\376\376\376\211\377" \
-  "\377\377\5\376\376\377\347\347\351\265\265\267\204\204\206lln\212::<" \
-  "\4``bxxz\234\234\236\332\332\332\207\377\377\377\1\376\376\376\210\377" \
-  "\377\377\1\376\376\376\222\377\377\377\1\346\346\346\203\316\316\320" \
-  "\4\316\316\316\316\316\320\315\315\315\364\364\364\251\377\377\377\2" \
-  "\376\376\376\364\364\364\205\316\316\316\2\316\316\320\346\346\346\210" \
-  "\377\377\377\16\377\376\377\377\377\375\376\377\377\377\377\377\377\375" \
-  "\377\326\354\371\241\326\366\206\310\352\200\312\357\202\312\362\204" \
-  "\310\357\204\312\356\203\311\355\205\311\360\220\204\312\356\10\203\311" \
-  "\355\201\311\361\342\360\371\376\377\377\377\377\375>n\222Bm\215@n\220" \
-  "\220@n\217\3@l\217An\217Bo\220\202An\217\5@m\214Dm\213l\223\260\277\320" \
-  "\332\376\377\377\202\377\377\377\1\377\377\375\202\377\377\377\1\376" \
-  "\377\377\225\377\377\377\3\363\363\363\317\317\321\316\316\320\204\316" \
-  "\316\316\1\332\332\332\240\377\377\377\1\346\346\346\202\316\316\320" \
-  "\204\316\316\316\1\347\347\347\243\377\377\377\3\376\376\376\363\363" \
-  "\363lln\202kkm\1lln\202kkm\1\301\301\301\240\377\377\377\1\376\376\376" \
-  "\203\377\377\377\2\331\331\331\317\317\317\202\316\316\316\202\317\317" \
-  "\317\245\316\316\316\2\332\332\332\376\376\376\351\377\377\377\5\332" \
-  "\332\332\315\315\315\316\316\316\315\315\315\363\363\363\361\377\377" \
-  "\377\202\316\316\316\1\317\317\317\202\316\316\316\2\315\315\315\363" \
-  "\363\363\377\377\377\377\377\377\377\377\377\377\377\377\334\377\377" \
-  "\377\1\376\376\376\375\377\377\377\1\376\376\376\377\377\377\377\377" \
-  "\377\377\377\377\377\377\377\340\377\377\377\1\376\376\376\370\377\377" \
-  "\377\1\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377\342" \
-  "\377\377\377\1\376\376\376\377\377\377\377\377\377\377\377\377\377\377" \
-  "\377\377\377\377\377\334\377\377\377\1\376\376\376\362\377\377\377\1" \
-  "\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377\346\377" \
-  "\377\377\1\376\376\376\363\377\377\377\1\376\376\376\377\377\377\377" \
-  "\377\377\377\377\377\377\377\377\342\377\377\377\1\376\376\376\373\377" \
-  "\377\377\1\376\376\376\377\377\377\377\377\377\377\377\377\377\377\377" \
-  "\340\377\377\377\3\376\376\376\377\377\377\376\376\376\377\377\377\377" \
-  "\377\377\377\377\377\377\377\377\377\377\377\377\243\377\377\377\3\376" \
-  "\376\376\377\377\377\376\376\376\203\377\377\377\1\376\376\376\233\377" \
-  "\377\377\1\376\376\376\205\377\377\377\1\376\376\376\214\377\377\377" \
-  "\1\376\376\376\205\377\377\377\1\376\376\376\260\377\377\377\3\376\376" \
-  "\376\377\377\377\376\376\376\300\377\377\377\1\376\376\376\306\377\377" \
-  "\377\1\376\376\376\233\377\377\377\4\376\377\377\376\376\376\377\376" \
-  "\377\377\377\377\203\376\377\375\203\377\377\377\3\377\377\375\376\377" \
-  "\375\376\377\377\265\377\377\377\4\377\377\375\377\376\377\376\377\377" \
-  "\377\377\375\202\377\376\377\210\377\377\377\7\377\377\375\376\377\377" \
-  "\377\377\377\375\377\376\376\377\377\377\376\377\376\377\377\211\377" \
-  "\377\377\4\376\377\375\377\377\377\376\376\376\377\377\375\202\377\377" \
-  "\377\2\377\377\375\376\376\376\220\377\377\377\1\376\377\375\202\377" \
-  "\377\375\5\377\376\377\377\377\373\377\377\377\375\377\376\377\377\375" \
-  "\210\377\377\377\1\377\376\377\202\377\377\375\202\377\377\377\3\376" \
-  "\377\377\377\377\375\377\376\377\213\377\377\377\3\376\377\377\376\377" \
-  "\375\377\377\375\203\377\377\377\203\376\377\375\4\377\377\377\377\376" \
-  "\377\376\376\376\376\377\377\233\377\377\377\3\376\377\377\376\377\375" \
-  "\377\377\375\203\377\377\377\203\376\377\375\4\377\377\377\377\376\377" \
-  "\376\376\376\376\377\377\210\377\377\377\1\377\376\377\203\377\377\377" \
-  "\4\376\377\377\377\377\375\377\376\377\376\377\373\211\377\377\377\4" \
-  "\376\377\377\376\376\374\377\376\377\377\375\376\226\377\377\377\5\376" \
-  "\377\377\375\377\374\377\377\375\376\375\377\377\377\375\210\377\377" \
-  "\377\1\377\377\375\202\376\377\377\1\377\377\373\242\377\377\377\1\376" \
-  "\376\376\212\377\377\377\1\376\376\376\207\377\377\377\1\376\376\376" \
-  "\237\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\214\377" \
-  "\377\377\1\376\376\376\204\377\377\377\202\376\376\376\257\377\377\377" \
-  "\1\376\376\376\202\377\377\377\1\376\376\376\202\377\377\377\1\376\376" \
-  "\376\246\377\377\377\1\376\376\376\224\377\377\377\1\376\376\376\250" \
-  "\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\236\377\377" \
-  "\377\3\376\376\376\377\377\377\376\376\376\230\377\377\377\4\377\377" \
-  "\373\376\377\377\376\376\376\377\376\377\203\377\377\377\1\377\377\375" \
-  "\202\377\377\377\1\377\376\377\202\377\377\375\3\377\377\377\377\377" \
-  "\375\376\376\374\260\377\377\377\2\377\377\375\376\376\376\203\377\376" \
-  "\377\214\377\377\377\7\376\377\377\377\376\377\377\377\375\377\377\377" \
-  "\377\376\377\375\377\376\377\377\375\210\377\377\377\7\377\376\374\377" \
-  "\377\375\377\376\377\377\377\375\376\376\376\377\377\377\376\376\376" \
-  "\221\377\377\377\1\377\376\377\203\377\377\377\202\377\377\375\212\377" \
-  "\377\377\2\377\377\375\377\377\377\202\377\377\375\214\377\377\377\3" \
-  "\376\376\374\377\377\375\377\377\377\202\377\377\375\1\377\376\377\202" \
-  "\377\377\377\1\377\377\375\203\377\377\377\4\377\376\377\376\376\376" \
-  "\376\377\377\377\377\373\230\377\377\377\3\376\376\374\377\377\375\377" \
-  "\377\377\202\377\377\375\1\377\376\377\202\377\377\377\1\377\377\375" \
-  "\203\377\377\377\4\377\376\377\376\376\376\376\377\377\377\377\373\213" \
-  "\377\377\377\1\377\376\374\214\377\377\377\2\377\377\375\377\376\377" \
-  "\202\377\377\375\3\376\377\377\377\377\377\377\377\373\221\377\377\377" \
-  "\3\376\377\375\376\377\377\377\376\377\204\377\377\377\1\377\377\375" \
-  "\212\377\377\377\5\377\376\377\377\377\375\377\377\377\376\377\375\376" \
-  "\377\373\243\377\377\377\1\376\376\376\205\377\377\377\1\376\376\376" \
-  "\204\377\377\377\1\376\376\376\242\377\377\377\1\376\376\376\205\377" \
-  "\377\377\1\376\376\376\213\377\377\377\1\376\376\376\206\377\377\377" \
-  "\1\376\376\376\263\377\377\377\3\376\376\376\377\377\377\376\376\376" \
-  "\270\377\377\377\1\376\376\376\312\377\377\377\1\376\376\376\234\377" \
-  "\377\377\1\377\377\375\202\376\377\377\7\377\376\377\377\377\377\376" \
-  "\377\377\377\376\377\377\377\375\377\377\377\376\377\377\202\377\376" \
-  "\377\2\376\377\375\376\377\377\262\377\377\377\10\377\377\375\376\377" \
-  "\377\377\376\377\377\377\373\377\377\377\377\376\377\376\377\375\377" \
-  "\377\375\211\377\377\377\3\376\377\377\377\376\377\377\377\375\202\377" \
-  "\377\377\2\376\377\377\376\376\376\210\377\377\377\202\377\376\377\4" \
-  "\374\377\377\376\377\377\377\376\377\377\377\375\222\377\377\377\4\377" \
-  "\376\375\376\377\377\377\377\377\376\377\377\202\377\376\377\202\377" \
-  "\377\375\210\377\377\377\4\377\377\375\377\377\377\377\377\375\377\377" \
-  "\377\202\377\376\377\2\377\377\377\376\377\377\212\377\377\377\2\376" \
-  "\377\377\376\377\375\202\377\376\377\7\376\377\377\377\377\377\377\377" \
-  "\375\377\376\377\376\377\377\377\377\377\377\376\377\202\376\377\377" \
-  "\1\377\377\375\232\377\377\377\2\376\377\377\376\377\375\202\377\376" \
-  "\377\7\376\377\377\377\377\377\377\377\375\377\376\377\376\377\377\377" \
-  "\377\377\377\376\377\202\376\377\377\1\377\377\375\210\377\377\377\1" \
-  "\377\377\375\202\377\377\377\4\377\377\375\377\376\377\377\377\377\376" \
-  "\377\377\211\377\377\377\7\375\376\377\377\377\375\377\376\377\376\376" \
-  "\377\376\377\375\375\377\376\377\377\375\222\377\377\377\6\376\377\377" \
-  "\377\376\377\377\377\377\377\377\375\377\376\377\376\377\377\213\377" \
-  "\377\377\202\377\376\377\3\377\377\375\376\377\377\376\377\375\236\377" \
-  "\377\377\1\376\376\376\203\377\377\377\1\376\376\376\202\377\377\377" \
-  "\1\376\376\376\203\377\377\377\2\376\376\376\377\377\377\202\376\376" \
-  "\376\202\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\204" \
-  "\377\377\377\1\376\376\376\235\377\377\377\1\376\376\376\217\377\377" \
-  "\377\1\376\376\376\206\377\377\377\1\376\376\376\260\377\377\377\3\376" \
-  "\376\376\377\377\377\376\376\376\241\377\377\377\202\376\376\376\204" \
-  "\377\377\377\1\376\376\376\222\377\377\377\1\376\376\376\205\377\377" \
-  "\377\1\376\376\376\246\377\377\377\1\376\376\376\233\377\377\377\3\376" \
-  "\376\376\377\377\377\376\376\376\234\377\377\377\15\376\376\376\377\377" \
-  "\377\377\376\377\377\377\375\375\377\376\377\377\377\376\377\375\377" \
-  "\377\377\375\376\377\377\377\377\377\377\375\376\377\377\377\377\377" \
-  "\202\377\376\377\260\377\377\377\7\377\376\377\376\377\377\377\377\377" \
-  "\376\377\377\377\377\377\377\377\375\376\377\377\212\377\377\377\1\376" \
-  "\376\374\203\377\377\377\3\376\376\377\377\377\375\376\377\377\210\377" \
-  "\377\377\10\376\377\377\377\376\377\374\377\373\376\377\373\377\376\377" \
-  "\376\376\376\377\377\377\376\377\375\220\377\377\377\2\377\376\377\377" \
-  "\377\377\202\377\377\375\202\377\377\377\2\376\376\374\376\377\377\210" \
-  "\377\377\377\1\376\377\377\202\377\377\377\5\376\377\377\377\377\377" \
-  "\376\376\376\377\377\377\376\377\375\210\377\377\377\202\377\376\377" \
-  "\15\377\377\377\376\377\377\377\377\375\377\377\377\375\376\377\377\377" \
-  "\377\376\377\375\377\377\377\375\377\376\377\377\375\377\376\377\377" \
-  "\377\377\376\376\376\231\377\377\377\202\377\376\377\15\377\377\377\376" \
-  "\377\377\377\377\375\377\377\377\375\376\377\377\377\377\376\377\375" \
-  "\377\377\377\375\377\376\377\377\375\377\376\377\377\377\377\376\376" \
-  "\376\211\377\377\377\4\377\376\377\377\377\377\376\377\375\376\377\377" \
-  "\202\377\377\377\2\376\377\377\376\377\375\210\377\377\377\1\376\377" \
-  "\375\202\376\376\376\202\377\377\377\2\377\377\375\375\376\377\221\377" \
-  "\377\377\10\377\377\375\377\377\377\376\376\374\376\377\373\376\376\376" \
-  "\377\376\377\376\377\377\377\377\375\210\377\377\377\6\376\376\376\377" \
-  "\377\377\377\377\375\377\377\377\374\375\377\377\377\375\242\377\377" \
-  "\377\1\376\376\376\214\377\377\377\1\376\376\376\204\377\377\377\3\376" \
-  "\376\376\377\377\377\376\376\376\235\377\377\377\1\376\376\376\203\377" \
-  "\377\377\202\376\376\376\212\377\377\377\1\376\376\376\202\377\377\377" \
-  "\202\376\376\376\264\377\377\377\5\376\376\376\377\377\377\376\376\376" \
-  "\377\377\377\376\376\376\242\377\377\377\3\376\376\376\377\377\377\376" \
-  "\376\376\202\377\377\377\1\376\376\376\223\377\377\377\1\376\376\376" \
-  "\244\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\233\377" \
-  "\377\377\1\376\376\376\202\377\377\377\1\376\376\376\234\377\377\377" \
-  "\1\375\377\372\202\377\377\377\3\376\376\376\377\377\375\377\377\377" \
-  "\202\376\377\377\204\377\377\377\4\376\377\377\377\377\377\377\376\377" \
-  "\375\377\372\260\377\377\377\202\377\377\375\2\377\377\377\376\375\377" \
-  "\202\377\377\377\1\375\377\376\212\377\377\377\6\377\377\375\377\377" \
-  "\377\376\377\375\377\377\375\377\376\377\377\376\375\212\377\377\377" \
-  "\1\377\376\377\202\377\377\377\4\377\375\376\377\377\377\377\377\373" \
-  "\376\375\377\221\377\377\377\203\376\376\376\4\377\377\375\376\376\374" \
-  "\377\376\377\376\376\374\210\377\377\377\5\377\376\377\377\377\375\377" \
-  "\376\377\376\376\376\376\377\375\202\377\377\377\1\376\376\376\210\377" \
-  "\377\377\4\375\377\372\377\376\377\377\377\377\376\377\377\204\377\377" \
-  "\377\202\376\377\377\3\377\377\377\377\377\375\376\376\376\202\377\377" \
-  "\377\1\375\377\372\230\377\377\377\4\375\377\372\377\376\377\377\377" \
-  "\377\376\377\377\204\377\377\377\202\376\377\377\3\377\377\377\377\377" \
-  "\375\376\376\376\202\377\377\377\1\375\377\372\210\377\377\377\3\376" \
-  "\377\377\377\377\377\376\376\376\202\376\377\377\202\377\377\377\1\376" \
-  "\377\375\210\377\377\377\7\376\376\377\377\377\375\376\377\375\376\376" \
-  "\376\377\376\377\377\377\377\376\377\377\221\377\377\377\5\376\376\376" \
-  "\376\377\377\377\377\377\375\375\375\377\376\377\202\377\377\377\1\377" \
-  "\377\375\211\377\377\377\7\377\376\377\376\376\374\376\377\377\377\377" \
-  "\377\377\376\377\377\377\375\377\377\373\233\377\377\377\1\376\376\376" \
-  "\205\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\203\377" \
-  "\377\377\1\376\376\376\204\377\377\377\3\376\376\376\377\377\377\376" \
-  "\376\376\204\377\377\377\1\376\376\376\237\377\377\377\1\376\376\376" \
-  "\212\377\377\377\1\376\376\376\213\377\377\377\1\376\376\376\255\377" \
-  "\377\377\1\376\376\376\247\377\377\377\1\376\376\376\202\377\377\377" \
-  "\1\376\376\376\224\377\377\377\1\376\376\376\247\377\377\377\1\376\376" \
-  "\376\236\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\232" \
-  "\377\377\377\10\377\376\377\377\377\375\377\377\377\376\377\377\376\376" \
-  "\376\377\376\377\377\377\375\377\376\377\202\377\377\375\1\377\376\377" \
-  "\202\377\377\377\3\377\376\377\377\375\376\377\376\377\260\377\377\377" \
-  "\2\377\376\377\377\377\377\202\377\376\377\4\377\377\375\376\376\374" \
-  "\377\375\377\377\376\377\210\377\377\377\3\376\376\374\377\376\377\376" \
-  "\376\376\204\377\377\377\1\376\377\375\210\377\377\377\4\375\377\374" \
-  "\377\377\377\377\375\376\377\376\377\203\377\377\377\1\377\377\375\220" \
-  "\377\377\377\3\376\377\377\377\377\375\376\377\377\202\377\377\377\3" \
-  "\377\376\377\373\377\377\376\377\377\211\377\377\377\202\376\377\375" \
-  "\1\377\377\375\203\377\377\377\1\377\376\377\210\377\377\377\3\377\376" \
-  "\377\377\375\376\377\376\377\202\377\377\377\1\377\376\377\202\377\377" \
-  "\375\10\377\376\377\377\377\375\377\376\377\376\376\376\376\377\377\377" \
-  "\377\377\377\377\375\377\376\377\230\377\377\377\3\377\376\377\377\375" \
-  "\376\377\376\377\202\377\377\377\1\377\376\377\202\377\377\375\10\377" \
-  "\376\377\377\377\375\377\376\377\376\376\376\376\377\377\377\377\377" \
-  "\377\377\375\377\376\377\210\377\377\377\2\377\377\375\375\376\371\202" \
-  "\377\376\377\3\377\377\377\377\377\375\377\376\377\212\377\377\377\1" \
-  "\377\375\376\202\377\377\377\4\377\377\375\376\376\376\376\377\377\377" \
-  "\376\377\220\377\377\377\2\376\377\377\376\376\377\202\377\377\377\2" \
-  "\376\377\375\375\377\374\212\377\377\377\10\373\377\376\377\377\377\377" \
-  "\377\375\376\376\374\377\377\375\377\376\377\377\377\377\376\377\377" \
-  "\235\377\377\377\1\376\376\376\202\377\377\377\7\316\316\320\250\250" \
-  "\252\221\221\223llnjjlGGI99;\204::<\7TTVkkmyy{\234\234\236\265\265\267" \
-  "\332\332\332\376\376\376\237\377\377\377\3\376\376\376\377\377\377\376" \
-  "\376\376\222\377\377\377\1\376\376\376\205\377\377\377\3\376\376\376" \
-  "\377\377\377\376\376\376\255\377\377\377\1\376\376\376\246\377\377\377" \
-  "\1\376\376\376\227\377\377\377\1\376\376\376\252\377\377\377\1\376\376" \
-  "\376\233\377\377\377\1\376\376\376\236\377\377\377\17\305\344\240\303" \
-  "\342\237\304\343\240\304\343\237\307\342\237\303\342\236\305\342\240" \
-  "\303\342\236\305\342\237\304\343\240\304\343\237\304\341\237\304\343" \
-  "\237\323\352\266\376\377\375\250\377\377\377\210\305\342\240\10\305\342" \
-  "\237\303\342\234\304\343\237\306\341\236\304\343\240\322\352\270\376" \
-  "\377\377\375\377\376\211\377\377\377\5\377\376\377\376\376\376\377\376" \
-  "\377\360\371\350\305\342\237\202\304\341\236\210\305\342\240\5\304\341" \
-  "\236\327\356\302\376\377\377\377\377\373\376\377\375\202\377\377\375" \
-  "\1\377\376\377\220\377\377\377\202\377\377\375\2\376\377\377\377\377" \
-  "\377\202\377\377\375\2\304\343\237\306\341\236\210\305\342\240\5\307" \
-  "\342\237\303\342\236\304\341\236\341\357\314\377\377\375\213\377\377" \
-  "\377\17\376\377\375\323\352\266\304\343\237\304\341\237\304\343\237\304" \
-  "\343\240\305\342\237\303\342\236\305\342\240\303\342\236\307\342\237" \
-  "\304\343\237\304\343\240\303\342\237\305\344\240\231\377\377\377\17\376" \
-  "\377\375\323\352\266\304\343\237\304\341\237\304\343\237\304\343\240" \
-  "\305\342\237\303\342\236\305\342\240\303\342\236\307\342\237\304\343" \
-  "\237\304\343\240\303\342\237\305\344\240\211\377\377\377\10\360\367\347" \
-  "\306\343\241\303\342\237\307\342\237\303\342\237\304\343\235\307\341" \
-  "\240\304\343\240\210\305\342\240\7\315\347\252\376\377\375\377\375\376" \
-  "\376\377\375\377\377\377\377\377\373\376\377\377\221\377\377\377\10\377" \
-  "\377\375\376\377\375\323\352\266\307\341\240\307\342\237\305\342\240" \
-  "\307\340\236\306\341\236\210\305\342\240\4\304\343\237\311\335\236\377" \
-  "\377\377\377\376\377\203\377\377\377\1\376\377\377\230\377\377\377\1" \
-  "\376\376\376\203\377\377\377\3\346\346\346\251\251\251jjl\202;;=\210" \
-  "::<\1;;=\202::<\2;;=99;\203::<\5FFHxxx\265\265\265\363\363\363\376\376" \
-  "\376\234\377\377\377\2\376\376\376\346\346\346\214\234\234\234\1\235" \
-  "\235\235\203\234\234\234\3\235\235\235\234\234\234\250\250\250\203\316" \
-  "\316\316\1\346\346\346\263\377\377\377\202\250\250\250\245\377\377\377" \
-  "\1\316\316\316\222\234\234\234\1\302\302\302\203\316\316\316\1\363\363" \
-  "\363\247\377\377\377\3\316\316\316\234\234\234\235\235\235\240\234\234" \
-  "\234\1\316\316\316\231\377\377\377\6\215\305>\216\306A\215\305@\213\310" \
-  "=\215\305>\212\307>\202\214\305@\6\214\306>\212\306@\214\306<\215\304" \
-  "B\214\306>\252\323m\251\377\377\377\210\214\306>\10\215\305@\215\307" \
-  "\77\212\307>\217\304@\214\305@\251\323m\377\377\377\377\377\375\213\377" \
-  "\377\377\5\377\375\377\341\363\315\215\305>\212\307>\215\305@\210\214" \
-  "\306>\6\215\306A\220\305\77\350\365\333\377\377\377\376\377\377\377\376" \
-  "\377\202\376\377\377\225\377\377\377\3\377\376\377\214\306>\215\306A" \
-  "\210\214\306>\6\215\305>\212\310\77\215\305@\307\341\240\376\377\377" \
-  "\377\376\377\213\377\377\377\6\252\323m\214\306>\215\304B\214\306<\212" \
-  "\306@\214\306>\202\214\305@\6\212\307>\215\305>\213\310=\215\305@\216" \
-  "\306A\215\305>\232\377\377\377\6\252\323m\214\306>\215\304B\214\306<" \
-  "\212\306@\214\306>\202\214\305@\6\212\307>\215\305>\213\310=\215\305" \
-  "@\216\306A\215\305>\211\377\377\377\4\376\377\377\242\321a\213\307A\215" \
-  "\305>\202\214\306>\2\215\305@\215\307\77\210\214\306>\7\215\305<\332" \
-  "\354\304\377\377\377\376\377\375\376\376\376\377\376\377\376\376\376" \
-  "\221\377\377\377\10\377\376\377\342\362\316\215\305>\213\310\77\212\305" \
-  "D\212\307<\216\306\77\211\307>\211\214\306>\4\304\343\240\373\377\376" \
-  "\377\377\377\375\377\376\202\377\377\377\1\377\377\375\225\377\377\377" \
-  "\1\376\376\376\204\377\377\377\6\265\265\267__a99;;;=::<;;=\202::<\1" \
-  ";;=\202::<\1;;=\202::<\1;;=\203::<\1;;=\203::<\3;;=::<99;\202::<\2xx" \
-  "z\301\301\301\202\377\377\377\1\376\376\376\202\377\377\377\1\376\376" \
-  "\376\206\377\377\377\1\376\376\376\217\377\377\377\1\316\316\316\205" \
-  "::<\202;;=\221::<\4TTVwwy\250\250\252\346\346\350\255\377\377\377\1\316" \
-  "\316\320\202::<\1\316\316\316\244\377\377\377\1\234\234\236\204::<\1" \
-  ";;=\205::<\3;;=::<;;=\206::<\1;;=\204::<\6SSUkkm\204\204\206\250\250" \
-  "\250\316\316\316\376\376\376\206\377\377\377\1\376\376\376\231\377\377" \
-  "\377\1\234\234\234\206::<\3;;=::<;;=\222::<\1;;=\204::<\3;;=::<\234\234" \
-  "\236\231\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214" \
-  "\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250\325" \
-  "p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\210\214\306>" \
-  "\15\212\306@\215\307\77\233\316W\365\374\364\377\376\375\376\377\377" \
-  "\377\376\377\377\377\375\377\377\377\377\377\375\376\376\376\377\377" \
-  "\377\376\376\374\202\377\377\377\1\376\376\376\216\377\377\377\213\214" \
-  "\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p\214" \
-  "\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\232" \
-  "\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214" \
-  "\305@\214\306>\214\305@\212\377\377\377\7\350\364\334\215\305>\212\307" \
-  "<\214\305@\215\304B\215\305@\213\310\77\210\214\306>\10\214\305@\225" \
-  "\311J\370\373\362\377\376\377\376\377\377\377\377\375\377\377\377\376" \
-  "\377\377\210\377\377\377\40\376\377\377\376\377\375\377\376\377\377\377" \
-  "\377\375\376\377\377\377\375\377\376\377\376\377\377\370\373\364\233" \
-  "\314W\215\307\77\214\304=\212\306@\215\307\77\213\305=\215\307\77\214" \
-  "\306>\217\304@\215\306A\212\307>\214\306<\215\306A\214\306>\211\307@" \
-  "\242\321a\377\377\377\377\376\377\376\377\377\377\376\377\377\377\377" \
-  "\376\377\377\377\376\377\223\377\377\377\7\376\376\376\377\377\377\376" \
-  "\376\376\377\377\377\363\363\365\234\234\236FFH\202::<\10;;=99;;;=::" \
-  "<;;=::<99;;;=\203::<\1;;=\203::<\2;;=99;\204::<\11""99;;;=::<;;=::<;" \
-  ";=TTV\265\265\265\363\363\363\203\377\377\377\1\376\376\376\207\377\377" \
-  "\377\1\376\376\376\215\377\377\377\1\316\316\316\205::<\3;;=::<;;=\202" \
-  "::<\1;;=\214::<\3;;=99;;;=\202::<\4lln\316\316\316\376\376\376\377\377" \
-  "\377\202\376\376\376\246\377\377\377\2\376\376\376xxz\202::<\2xxx\376" \
-  "\376\376\243\377\377\377\1\234\234\236\204::<\202;;=\205::<\1;;=\204" \
-  "::<\1;;=\202::<\1""99;\206::<\1;;=\202::<\6;;=kkk\250\250\250\346\346" \
-  "\346\377\377\377\376\376\376\205\377\377\377\1\376\376\376\225\377\377" \
-  "\377\1\234\234\234\204::<\1;;=\202::<\4;;=::<99;;;=\225::<\3;;=::<\234" \
-  "\234\236\231\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4" \
-  "\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250" \
-  "\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\210\214\306" \
-  ">\4\215\306A\213\304\77\215\305@\262\327x\202\377\377\377\1\376\377\375" \
-  "\203\377\377\375\204\377\377\377\1\376\376\376\217\377\377\377\213\214" \
-  "\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p\214" \
-  "\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\232" \
-  "\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214" \
-  "\305@\214\306>\214\305@\212\377\377\377\7\376\376\376\305\342\237\212" \
-  "\307>\214\306>\212\307<\214\306>\212\307>\210\214\306>\3\214\306<\215" \
-  "\306A\300\337\221\202\377\377\377\3\377\376\377\376\376\376\377\377\375" \
-  "\210\377\377\377\1\377\375\377\202\377\377\377\2\376\376\377\376\377" \
-  "\375\202\377\376\377\30\377\377\377\277\340\221\215\306A\213\305=\215" \
-  "\305>\212\306B\214\306>\216\306\77\214\306<\212\307>\215\307=\213\305" \
-  ";\215\307\77\216\305C\214\306>\214\305@\216\306\77\347\365\333\377\376" \
-  "\377\377\377\375\376\377\377\377\376\374\377\377\377\377\377\375\222" \
-  "\377\377\377\1\376\376\376\204\377\377\377\12\265\265\267FFH;;=::<;;" \
-  "=99;::<;;=::<;;=\202::<\4<<>99;::<;;=\202::<\1;;=\203::<\1<<>\204::<" \
-  "\5<<>99;;;=99;;;=\202::<\4:::SSS\266\266\266\376\376\376\203\377\377" \
-  "\377\1\376\376\376\204\377\377\377\1\376\376\376\216\377\377\377\1\316" \
-  "\316\316\204::<\3;;=::<;;=\204::<\1;;=\214::<\1;;=\202::<\1;;=\202::" \
-  "<\2yyy\363\363\363\202\377\377\377\1\376\376\376\245\377\377\377\3\346" \
-  "\346\346::<;;=\202::<\1\347\347\347\202\377\377\377\1\376\376\376\240" \
-  "\377\377\377\1\234\234\236\203::<\4;;=99;::<;;=\202::<\7;;=::<;;=99;" \
-  ";;=::<;;=\203::<\202;;=\210::<\1""99;\202::<\4;;=xxz\317\317\317\376" \
-  "\376\376\202\377\377\377\1\376\376\376\227\377\377\377\1\234\234\234" \
-  "\204::<\1""99;\203;;=\224::<\1;;=\204::<\2<<>\234\234\236\231\377\377" \
-  "\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214" \
-  "\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377" \
-  "\1\342\361\320\202\214\306>\1\214\305@\210\214\306>\10\215\305>\214\306" \
-  ">\213\307A\214\306>\315\345\253\377\377\375\377\376\377\376\377\377\226" \
-  "\377\377\377\213\214\306>\3\215\305>\214\306>\305\342\240\215\377\377" \
-  "\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214" \
-  "\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@" \
-  "\207\214\306>\3\214\305@\214\306>\214\305@\211\377\377\377\7\377\377" \
-  "\375\377\376\377\376\376\376\241\321a\212\307>\211\305\77\215\306A\211" \
-  "\214\306>\4\213\310\77\214\305@\213\305=\342\361\320\202\377\376\377" \
-  "\2\377\377\375\377\376\377\210\377\377\377\1\377\376\377\202\377\377" \
-  "\377\30\377\377\375\376\377\377\377\377\375\376\377\377\351\366\334\214" \
-  "\305B\211\306;\215\307\77\214\306>\212\306@\215\305>\215\305@\212\307" \
-  ">\214\305@\212\306B\214\306>\213\305=\213\310\77\215\305>\215\307\77" \
-  "\314\345\253\377\375\377\377\376\374\376\377\377\203\377\377\377\1\377" \
-  "\376\374\225\377\377\377\2\345\345\345kkm\205::<\202;;=\203::<\1;;=\203" \
-  "::<\1;;=\202::<\202;;=\202::<\1;;=\210::<\2;;=99;\205::<\2```\331\331" \
-  "\331\211\377\377\377\1\376\376\376\214\377\377\377\1\316\316\316\206" \
-  "::<\5""99;::<;;=::<99;\212::<\1;;=\202::<\1;;=\204::<\4;;=::<FFF\316" \
-  "\316\316\247\377\377\377\3\205\205\207;;=99;\202::<\1\204\204\206\203" \
-  "\377\377\377\1\376\376\376\237\377\377\377\1\234\234\236\205::<\1;;=" \
-  "\204::<\1""99;\202;;=\202::<\3;;=::<;;=\203::<\1;;=\202::<\1;;=\204:" \
-  ":<\1;;=\205::<\2jjl\316\316\316\203\377\377\377\1\376\376\376\225\377" \
-  "\377\377\1\234\234\234\204::<\1;;=\202::<\3;;=::<;;=\222::<\7;;=::<;" \
-  ";=::<;;=::<\234\234\236\231\377\377\377\3\214\305@\214\306>\214\305@" \
-  "\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215" \
-  "\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214" \
-  "\305@\210\214\306>\10\215\305@\212\307>\214\305@\215\306A\214\305@\352" \
-  "\364\334\376\376\377\377\377\373\202\377\377\377\3\376\376\376\377\377" \
-  "\377\377\377\375\202\377\377\377\1\376\376\374\216\377\377\377\213\214" \
-  "\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p\214" \
-  "\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\232" \
-  "\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214" \
-  "\305@\214\306>\214\305@\211\377\377\377\1\376\377\377\202\377\377\375" \
-  "\5\347\364\332\215\307\77\215\306C\214\307;\216\306\77\210\214\306>\10" \
-  "\214\305@\214\305D\215\307\77\233\314V\371\374\363\376\377\377\377\377" \
-  "\377\377\377\375\210\377\377\377\20\375\377\374\377\376\377\376\376\377" \
-  "\376\377\377\377\376\377\376\377\375\376\377\377\244\317d\212\307>\215" \
-  "\306A\215\305@\214\305@\211\306=\215\307=\215\306A\214\305@\204\214\306" \
-  ">\14\211\305A\212\307>\251\324k\377\376\377\377\375\376\376\377\377\377" \
-  "\377\377\377\377\375\377\377\377\377\377\375\377\377\377\377\377\375" \
-  "\217\377\377\377\1\376\376\376\203\377\377\377\2\265\265\267FFH\205:" \
-  ":<\1;;=\203::<\202;;=\7:::TTT\203\203\203\235\235\235\316\316\316\332" \
-  "\332\332\377\377\377\202\376\376\376\202\377\377\377\5\316\316\316\317" \
-  "\317\317\234\234\234yyyFFF\202::<\1;;=\202::<\3""99;;;=99;\204::<\2;" \
-  ";=\233\233\233\206\377\377\377\1\376\376\376\216\377\377\377\1\316\316" \
-  "\316\204::<\1;;=\205::<\1;;=\212::<\3""99;::<;;=\202::<\2;;=99;\204:" \
-  ":<\2;;=\265\265\265\245\377\377\377\4\346\346\346::<99;;;=\202::<\4""9" \
-  "9;\347\347\347\377\377\377\376\376\376\240\377\377\377\1\234\234\236" \
-  "\205::<\1;;=\203::<\202;;=\1""99;\203;;=\2::<;;=\203::<\1;;=\202::<\2" \
-  ";;=::<\202;;=\7::<;;=99;::<;;=99;;;=\202::<\3;;=xxx\362\362\362\227\377" \
-  "\377\377\1\234\234\234\205::<\202;;=\4::<;;=::<;;=\223::<\2;;=99;\202" \
-  ";;=\1\234\234\236\231\377\377\377\3\214\305@\214\306>\214\305@\207\214" \
-  "\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306" \
-  ">\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\210" \
-  "\214\306>\12\212\307>\215\306A\214\305@\215\307\77\213\306:\226\312N" \
-  "\372\374\361\375\376\377\377\377\375\377\377\373\224\377\377\377\213" \
-  "\214\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p" \
-  "\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305" \
-  "@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>" \
-  "\3\214\305@\214\306>\214\305@\211\377\377\377\10\376\377\377\376\376" \
-  "\377\376\377\377\377\375\376\307\342\237\214\306<\215\306A\214\305@\210" \
-  "\214\306>\5\215\307\77\213\305=\216\306A\213\310\77\277\337\223\202\377" \
-  "\377\375\1\377\376\377\210\377\377\377\14\376\377\375\376\376\376\377" \
-  "\376\377\377\377\375\377\376\377\377\377\377\303\342\236\215\307\77\216" \
-  "\306A\215\305>\214\306<\215\306A\203\214\306>\20\215\307\77\212\307>" \
-  "\215\305@\216\306\77\214\305@\216\307<\223\312K\356\372\346\377\377\377" \
-  "\376\377\377\375\377\376\377\377\377\377\376\377\377\377\375\377\377" \
-  "\377\377\377\375\216\377\377\377\1\376\376\376\203\377\377\377\2\375" \
-  "\375\375\205\205\207\202::<\202;;=\3::<;;=::<\202;;=\6::<:::SSS\250\250" \
-  "\250\346\346\346\376\376\376\216\377\377\377\3\332\332\332\220\220\220" \
-  "SSS\202::<\4;;=99;::<;;=\202::<\1""99;\202;;=\2__a\332\332\334\223\377" \
-  "\377\377\1\316\316\316\204::<\6;;=RRT\235\235\237\235\235\235\233\233" \
-  "\233\234\234\234\212\234\234\236\5xxzkkm__a99;;;=\204::<\202;;=\1""9" \
-  "9;\202::<\1\316\316\316\244\377\377\377\4\204\204\206;;=::<;;=\202::" \
-  "<\2;;=\220\220\222\203\377\377\377\1\376\376\376\236\377\377\377\1\234" \
-  "\234\236\203::<\3;;=::<kkm\203\234\234\236\3\233\233\235\234\234\236" \
-  "\235\235\237\204\234\234\236\2xxzlln\202kkm\1FFH\202;;=\2""99;;;=\202" \
-  "::<\3""99;::<;;=\202::<\1;;=\205::<\3GGI\301\301\301\376\376\376\225" \
-  "\377\377\377\1\234\234\234\205::<\5lln\234\234\236\233\233\233\235\235" \
-  "\235\234\234\234\224\234\234\236\5\234\234\234\235\235\235\233\233\233" \
-  "\234\234\234\316\316\316\231\377\377\377\3\214\305@\214\306>\214\305" \
-  "@\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377" \
-  "\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1" \
-  "\214\305@\210\214\306>\7\212\306@\214\306<\217\307@\214\304\77\214\311" \
-  ">\214\306>\251\323m\202\376\377\377\4\376\376\374\377\377\375\377\377" \
-  "\377\376\376\376\202\377\377\377\1\376\376\376\216\377\377\377\213\214" \
-  "\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p\214" \
-  "\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\232" \
-  "\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214" \
-  "\305@\214\306>\214\305@\212\377\377\377\7\377\377\375\377\376\377\376" \
-  "\377\377\377\376\377\251\323o\211\307>\214\305@\210\214\306>\7\212\307" \
-  ">\215\305>\214\305@\214\306>\215\307\77\347\365\334\377\376\377\211\377" \
-  "\377\377\2\377\376\377\375\377\374\203\377\376\377\15\352\364\333\212" \
-  "\306@\215\306A\214\306>\215\307\77\213\310\77\214\306>\216\306A\215\306" \
-  "A\214\306<\212\307>\213\310=\212\307>\202\214\305@\4\214\306>\314\345" \
-  "\253\377\376\377\376\377\377\202\377\377\375\6\377\376\377\375\376\377" \
-  "\377\377\377\377\376\377\376\377\375\377\376\377\217\377\377\377\3\376" \
-  "\376\376\362\362\362lln\20299;\1;;=\204::<\202;;=\6::<\204\204\204\317" \
-  "\317\317\376\376\376\377\377\377\376\376\376\206\377\377\377\1\376\376" \
-  "\376\213\377\377\377\2\301\301\301kkm\211::<\6;;=FFH\301\301\301\376" \
-  "\376\376\377\377\377\376\376\376\217\377\377\377\1\316\316\316\204::" \
-  "<\3;;=kkm\376\376\376\221\377\377\377\3\316\316\316\204\204\204FFF\202" \
-  "::<\1;;=\202::<\202;;=\2FFH\363\363\363\242\377\377\377\5\364\364\364" \
-  "::<;;=99;;;=\203::<\3GGI\363\363\363\376\376\376\240\377\377\377\1\234" \
-  "\234\236\205::<\1\234\234\236\210\377\377\377\1\376\376\376\204\377\377" \
-  "\377\1\376\376\376\202\377\377\377\6\362\362\362\316\316\316\265\265" \
-  "\265\234\234\234kkmFFH\202::<\2;;=99;\205::<\1;;=\202::<\1\221\221\221" \
-  "\225\377\377\377\1\234\234\234\205::<\1\234\234\236\202\377\377\377\1" \
-  "\376\376\376\225\377\377\377\1\375\375\375\235\377\377\377\3\214\305" \
-  "@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214\306>\252\324" \
-  "p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320" \
-  "\202\214\306>\1\214\305@\210\214\306>\4\215\307\77\214\306>\214\304\77" \
-  "\214\306>\202\214\305@\6\215\307\77\307\341\240\376\377\375\376\377\377" \
-  "\376\376\374\377\377\373\202\377\377\377\202\377\377\375\216\377\377" \
-  "\377\213\214\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252" \
-  "\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214" \
-  "\305@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306" \
-  ">\3\214\305@\214\306>\214\305@\212\377\377\377\7\377\376\377\376\376" \
-  "\377\377\377\377\376\376\377\361\372\347\222\312K\215\305>\210\214\306" \
-  ">\10\214\305@\215\306A\214\305@\214\306<\213\304A\243\322b\376\376\374" \
-  "\376\377\375\211\377\377\377\24\377\377\373\377\377\377\376\377\377\377" \
-  "\377\375\242\320c\215\307=\214\306>\213\310\77\213\304A\212\306@\215" \
-  "\307\77\215\305@\214\306>\215\307\77\212\306@\215\305>\215\307\77\213" \
-  "\310\77\213\306:\253\325q\202\377\377\377\11\377\377\375\377\376\377" \
-  "\377\377\377\377\377\375\376\377\375\377\377\375\377\375\377\376\377" \
-  "\377\377\377\375\214\377\377\377\7\376\376\376\377\377\377\376\376\376" \
-  "\363\363\363__a::<;;=\203::<\202;;=\202::<\4xxz\347\347\351\377\377\377" \
-  "\376\376\376\210\377\377\377\1\376\376\376\204\377\377\377\2\376\376" \
-  "\376\377\377\377\203\376\376\376\205\377\377\377\2\316\316\320kkm\202" \
-  "::<\3;;=::<;;=\202::<\202;;=\2:::\250\250\250\202\377\377\377\1\376\376" \
-  "\376\216\377\377\377\1\316\316\316\205::<\1kkm\203\377\377\377\1\376" \
-  "\376\376\215\377\377\377\1\376\376\376\202\377\377\377\3\363\363\363" \
-  "xxx::<\202;;=\203::<\2;;=xxz\242\377\377\377\1\234\234\234\202::<\1;" \
-  ";=\202::<\1;;=\202::<\1\234\234\234\241\377\377\377\1\234\234\236\202" \
-  "::<\10;;=::<;;=\234\234\236\377\377\377\376\376\376\377\377\377\376\376" \
-  "\376\216\377\377\377\1\376\376\376\203\377\377\377\3\332\332\332\221" \
-  "\221\223FFH\205::<\2;;=::<\202;;=\2::<\204\204\204\224\377\377\377\1" \
-  "\234\234\234\205::<\3\234\234\236\377\377\377\376\376\376\264\377\377" \
-  "\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214" \
-  "\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377" \
-  "\1\342\361\320\202\214\306>\1\214\305@\210\214\306>\5\216\306\77\212" \
-  "\307>\215\307=\212\306@\214\306>\202\215\305>\5\215\305@\345\356\317" \
-  "\376\377\375\376\377\377\377\377\375\202\377\377\377\1\377\377\375\217" \
-  "\377\377\377\213\214\306>\3\215\305>\214\306>\305\342\240\215\377\377" \
-  "\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214" \
-  "\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@" \
-  "\207\214\306>\3\214\305@\214\306>\214\305@\211\377\377\377\4\376\377" \
-  "\377\377\377\377\377\377\375\376\377\377\202\377\377\377\2\315\347\252" \
-  "\212\306@\210\214\306>\10\216\306A\212\306@\212\307>\215\305<\213\310" \
-  "\77\215\305>\307\341\240\376\377\377\212\377\377\377\10\375\377\374\377" \
-  "\377\377\305\342\237\215\305@\212\306@\216\306\77\215\307=\215\305>\202" \
-  "\214\306>\24\213\307A\213\310=\215\304B\214\306>\212\306@\215\304B\212" \
-  "\307>\225\311K\370\373\362\377\377\377\376\377\375\377\377\375\377\377" \
-  "\377\374\377\375\376\376\376\377\377\377\377\377\375\377\376\377\376" \
-  "\377\377\377\377\375\211\377\377\377\1\376\376\376\205\377\377\377\1" \
-  "___\204::<\1;;=\203::<\2SSS\316\316\316\235\377\377\377\2\317\317\317" \
-  "``b\207::<\3;;=::<\204\204\206\220\377\377\377\1\316\316\316\205::<\1" \
-  "kkm\226\377\377\377\3\204\204\206::<;;=\205::<\1\316\316\316\232\377" \
-  "\377\377\1\376\376\376\205\377\377\377\2\364\364\364FFF\202;;=\202::" \
-  "<\6;;=99;;;=::<FFH\363\363\363\240\377\377\377\1\234\234\236\205::<\1" \
-  "\234\234\234\226\377\377\377\1\376\376\376\202\377\377\377\3\265\265" \
-  "\265RRR:::\202::<\1;;=\202::<\4;;=::<;;=\204\204\204\203\377\377\377" \
-  "\1\376\376\376\217\377\377\377\1\234\234\234\205::<\1\234\234\236\266" \
-  "\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215" \
-  "\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377" \
-  "\377\377\1\342\361\320\202\214\306>\1\214\305@\220\214\306>\2\222\313" \
-  "J\366\373\364\202\377\376\377\4\377\377\373\376\376\374\376\377\377\377" \
-  "\376\377\216\377\377\377\213\214\306>\3\215\305>\214\306>\305\342\240" \
-  "\215\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3" \
-  "\214\305@\214\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215\305" \
-  ">\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\211\377\377\377" \
-  "-\377\377\375\376\377\377\377\377\377\376\376\374\376\377\377\377\376" \
-  "\377\376\377\377\252\324p\212\306@\215\305>\212\307<\215\305@\215\305" \
-  "<\214\305B\215\305@\214\306<\212\307>\215\305>\214\306>\211\306=\215" \
-  "\305>\212\307>\214\306<\350\364\334\374\377\377\377\376\377\376\376\376" \
-  "\374\377\375\377\377\377\376\377\375\377\377\375\377\376\377\377\377" \
-  "\375\377\377\377\377\376\377\357\367\350\223\312K\213\310\77\215\305" \
-  ">\214\306>\215\305>\213\310\77\212\306@\214\306>\215\305@\202\214\306" \
-  ">\10\214\305@\216\306=\212\307>\215\305>\333\355\303\376\376\374\377" \
-  "\377\377\377\377\375\223\377\377\377\1\376\376\376\203\377\377\377\1" \
-  "\203\203\203\206::<\4;;=::<\204\204\206\363\363\363\230\377\377\377\1" \
-  "\376\376\376\207\377\377\377\1\235\235\237\202::<\1;;=\203::<\5;;=99" \
-  ";;;=\204\204\204\376\376\376\216\377\377\377\1\316\316\316\205::<\1k" \
-  "km\227\377\377\377\12\204\204\206::<;;=::<99;;;=::<\204\204\204\377\377" \
-  "\377\376\376\376\232\377\377\377\1\376\376\376\203\377\377\377\2\234" \
-  "\234\234;;=\203::<\1;;=\204::<\3<<>\250\250\250\376\376\376\237\377\377" \
-  "\377\1\234\234\236\205::<\1\234\234\234\231\377\377\377\10\376\376\376" \
-  "\377\377\377\265\265\265FFH::<;;=::<;;=\203::<\2;;=\204\204\204\222\377" \
-  "\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305" \
-  "@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214\306>\252\324" \
-  "p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320" \
-  "\202\214\306>\1\214\305@\220\214\306>\4\216\306\77\250\322n\376\377\375" \
-  "\376\377\373\222\377\377\377\213\214\306>\3\215\305>\214\306>\305\342" \
-  "\240\215\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306" \
-  ">\3\214\305@\214\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215" \
-  "\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\211\377\377" \
-  "\377\13\376\376\377\376\377\377\377\376\377\376\376\374\374\377\377\377" \
-  "\377\375\377\376\377\356\372\346\225\311K\214\306>\213\310=\203\214\306" \
-  ">\2\213\310\77\214\306>\202\214\305@\7\214\306<\213\307A\214\304\77\214" \
-  "\305B\212\307>\244\317d\377\376\377\202\377\377\377\1\377\375\377\202" \
-  "\377\377\377\25\376\377\377\377\376\377\377\377\377\374\377\375\376\376" \
-  "\374\253\324n\214\306<\215\307\77\215\305>\211\307@\216\305C\214\305" \
-  "@\215\307\77\214\305@\214\306<\212\307<\211\306=\214\306>\214\305@\213" \
-  "\307A\263\327}\202\376\377\377\3\377\377\377\377\375\376\377\377\375" \
-  "\221\377\377\377\1\376\376\376\203\377\377\377\1\250\250\250\204::<\1" \
-  ";;=\202::<\2;;=\264\264\264\202\377\377\377\1\376\376\376\232\377\377" \
-  "\377\1\376\376\376\205\377\377\377\2\332\332\332SSS\202::<\1;;=\204:" \
-  ":<\4xxx\364\364\364\377\377\377\376\376\376\214\377\377\377\1\316\316" \
-  "\316\205::<\1kkm\227\377\377\377\2\363\363\363SSU\202::<\4;;=99;::<;" \
-  ";;\202\377\377\377\1\376\376\376\226\377\377\377\1\376\376\376\204\377" \
-  "\377\377\11\376\376\376\363\363\363FFH99;;;=::<;;=99;;;=\203::<\4""9" \
-  "9;SSU\377\377\377\376\376\376\236\377\377\377\1\234\234\236\205::<\1" \
-  "\234\234\234\225\377\377\377\1\376\376\376\204\377\377\377\10\376\376" \
-  "\376\377\377\377\363\363\363yyy::<;;=99;;;=\204::<\1\266\266\266\221" \
-  "\377\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377\377\3\214" \
-  "\305@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214\306>\252" \
-  "\324p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361" \
-  "\320\202\214\306>\1\214\305@\220\214\306>\4\214\306<\213\307A\275\335" \
-  "\222\376\377\377\203\377\377\377\1\377\377\375\216\377\377\377\213\214" \
-  "\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p\214" \
-  "\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\232" \
-  "\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214" \
-  "\305@\214\306>\214\305@\211\377\377\377\4\377\376\377\376\376\377\377" \
-  "\377\377\377\377\375\202\376\377\377\5\377\375\376\377\376\377\315\346" \
-  "\255\212\307>\214\305@\202\215\306A\22\214\305@\212\307<\214\305B\214" \
-  "\306>\213\307A\214\306>\213\305=\214\306>\215\305>\213\307A\211\310<" \
-  "\313\347\254\377\377\375\377\375\377\376\377\377\376\377\373\376\377" \
-  "\377\377\376\377\202\376\377\377\10\377\377\377\315\346\254\212\307>" \
-  "\212\306@\215\306A\216\306A\212\307>\214\306<\202\215\306A\10\215\306" \
-  "C\214\305B\215\307\77\214\306<\214\305@\213\310<\222\310L\372\373\363" \
-  "\225\377\377\377\1\376\376\376\202\377\377\377\6\376\376\376\333\333" \
-  "\333::<;;=::<;;=\202::<\3;;=FFH\315\315\315\205\377\377\377\1\376\376" \
-  "\376\225\377\377\377\202\376\376\376\202\377\377\377\1\376\376\376\202" \
-  "\377\377\377\1\376\376\376\202\377\377\377\2\363\363\363xxx\204::<\2" \
-  ";;=\203\203\203\220\377\377\377\1\316\316\316\205::<\1kkm\230\377\377" \
-  "\377\3\266\266\27099;;;=\204::<\1\316\316\316\230\377\377\377\1\376\376" \
-  "\376\202\377\377\377\1\376\376\376\202\377\377\377\3\265\265\267::<;" \
-  ";=\204::<\202;;=\202::<\202;;=\1\265\265\265\237\377\377\377\1\234\234" \
-  "\236\205::<\1\234\234\234\236\377\377\377\5\234\234\234::<;;=::<;;=\202" \
-  "::<\3;;=FFH\332\332\332\220\377\377\377\1\234\234\234\205::<\1\234\234" \
-  "\236\266\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214" \
-  "\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250\325" \
-  "p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\220\214\306>" \
-  "\4\215\307\77\214\304\77\213\310\77\333\355\303\202\377\377\377\1\376" \
-  "\377\375\217\377\377\377\213\214\306>\3\215\305>\214\306>\305\342\240" \
-  "\215\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3" \
-  "\214\305@\214\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215\305" \
-  ">\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\213\377\377\377" \
-  "\5\377\377\373\377\376\377\377\377\377\375\377\374\376\377\377\202\376" \
-  "\376\376\22\260\331{\212\307>\214\306>\215\305>\215\305@\215\307\77\215" \
-  "\307=\214\305@\214\306>\215\306A\214\306>\213\307C\214\306>\214\304;" \
-  "\213\307A\222\312K\357\370\345\377\377\375\202\377\377\377\15\377\375" \
-  "\376\377\377\375\376\376\376\377\377\375\361\367\351\222\311J\213\310" \
-  "\77\214\305B\215\310<\213\305=\216\306\77\212\307<\214\305B\202\214\306" \
-  ">\6\216\306\77\215\305@\215\306A\214\305@\215\305<\333\356\301\202\377" \
-  "\376\377\3\377\377\375\377\377\377\377\376\377\225\377\377\377\1``b\202" \
-  "::<\6;;=::<;;=::<FFH\331\331\333\233\377\377\377\1\376\376\376\202\377" \
-  "\377\377\1\376\376\376\206\377\377\377\1\376\376\376\202\377\377\377" \
-  "\1\205\205\207\203::<\1\204\204\206\221\377\377\377\1\316\316\316\205" \
-  "::<\1kkm\231\377\377\377\1GGI\203;;=\202::<\3\235\235\237\377\377\377" \
-  "\376\376\376\233\377\377\377\2\376\376\376SSU\203::<\5;;=99;llnkkm::" \
-  "<\202;;=\202::<\1SSU\237\377\377\377\1\234\234\236\205::<\1\234\234\234" \
-  "\224\377\377\377\1\376\376\376\205\377\377\377\1\376\376\376\203\377" \
-  "\377\377\4\376\376\376\266\266\270::<;;=\203::<\5""99;::<__a\377\377" \
-  "\377\376\376\376\216\377\377\377\1\234\234\234\205::<\1\234\234\236\266" \
-  "\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215" \
-  "\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377" \
-  "\377\377\1\342\361\320\202\214\306>\1\214\305@\220\214\306>\10\216\306" \
-  "\77\215\306A\214\305@\224\310J\360\371\350\377\377\377\377\376\377\376" \
-  "\377\377\216\377\377\377\213\214\306>\3\215\305>\214\306>\305\342\240" \
-  "\215\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3" \
-  "\214\305@\214\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215\305" \
-  ">\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\212\377\377\377" \
-  "\1\377\377\375\202\377\377\377\2\377\376\377\377\377\377\202\376\377" \
-  "\377\25\377\377\375\370\373\362\223\312K\212\307>\215\305>\216\306A\212" \
-  "\307<\214\305B\215\307\77\214\305@\214\306>\214\305@\212\306@\215\307" \
-  "=\216\306A\215\305>\214\306<\252\324n\376\377\377\376\376\376\377\376" \
-  "\377\202\377\377\375\4\377\376\377\376\376\377\252\324n\215\306A\202" \
-  "\214\306>\21\214\305@\215\307\77\215\305>\212\307>\214\306<\213\304A" \
-  "\215\307=\214\304=\215\307\77\212\307>\214\306>\277\337\226\377\376\377" \
-  "\376\377\375\377\377\375\377\377\377\376\376\376\225\377\377\377\3\234" \
-  "\234\236::<;;=\204::<\4;;=\265\265\267\377\377\377\376\376\376\204\377" \
-  "\377\377\202\376\376\376\202\377\377\377\1\376\376\376\225\377\377\377" \
-  "\1\376\376\376\203\377\377\377\1\376\376\376\202\377\377\377\1\376\376" \
-  "\376\202\377\377\377\3\250\250\250::<\204\204\206\205\377\377\377\1\376" \
-  "\376\376\214\377\377\377\1\316\316\316\205::<\1kkm\226\377\377\377\1" \
-  "\376\376\376\202\377\377\377\2kkm99;\202::<\4;;=::<\204\204\206\376\376" \
-  "\376\202\377\377\377\1\376\376\376\224\377\377\377\1\376\376\376\203" \
-  "\377\377\377\2\376\376\376\265\265\265\202::<\1;;=\202::<\3;;=\316\316" \
-  "\320\316\316\316\204::<\3;;=::<\266\266\266\236\377\377\377\1\234\234" \
-  "\236\205::<\1\234\234\234\226\377\377\377\202\376\376\376\2\377\377\377" \
-  "\376\376\376\205\377\377\377\4\376\376\376\251\251\253;;=99;\202::<\4" \
-  "<<>99;::<\250\250\252\217\377\377\377\1\234\234\234\205::<\1\234\234" \
-  "\236\266\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214" \
-  "\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250\325" \
-  "p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\220\214\306>" \
-  "\202\214\305@\6\212\306@\215\307\77\243\321d\377\377\375\377\375\377" \
-  "\376\377\377\216\377\377\377\213\214\306>\3\215\305>\214\306>\305\342" \
-  "\240\215\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306" \
-  ">\3\214\305@\214\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215" \
-  "\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\211\377\377" \
-  "\377\2\376\377\377\377\377\375\202\377\377\377\1\376\376\376\202\377" \
-  "\377\377\6\376\377\372\376\377\377\377\376\377\331\357\301\213\304\77" \
-  "\215\307=\202\214\305@\25\214\305B\214\306<\215\305@\212\307<\214\306" \
-  ">\216\306=\212\307>\212\306B\214\305@\215\306E\212\306@\313\347\255\376" \
-  "\377\375\376\376\377\376\377\377\377\376\377\377\377\377\333\355\305" \
-  "\212\307>\216\306\77\215\307\77\202\214\306>\1\215\307\77\202\214\306" \
-  ">\13\215\305<\212\306@\212\307<\215\307\77\211\306=\213\307A\233\314" \
-  "V\370\373\362\377\377\375\377\377\377\376\377\377\202\377\377\375\2\374" \
-  "\377\377\377\375\376\222\377\377\377\3\363\363\363GGI::<\202;;=\202:" \
-  ":<\2;;=\234\234\234\214\377\377\377\1\376\376\376\221\377\377\377\1\376" \
-  "\376\376\202\377\377\377\3\376\376\376\377\377\377\376\376\376\206\377" \
-  "\377\377\3\376\376\376\377\377\377\316\316\316\203\377\377\377\1\376" \
-  "\376\376\203\377\377\377\1\376\376\376\213\377\377\377\1\316\316\316" \
-  "\205::<\1kkm\227\377\377\377\5\376\376\376\377\377\377\235\235\237::" \
-  "<;;=\203::<\2lln\376\376\376\203\377\377\377\1\376\376\376\224\377\377" \
-  "\377\13\376\376\376\377\377\377\376\376\376\377\377\377RRR::<99;::<;" \
-  ";=::<kkm\202\377\377\377\1__a\203;;=\202::<\1kkk\236\377\377\377\1\234" \
-  "\234\236\205::<\1\234\234\234\241\377\377\377\2\204\204\204;;=\202::" \
-  "<\5""99;::<;;=FFH\363\363\363\216\377\377\377\1\234\234\234\205::<\1" \
-  "\234\234\236\266\377\377\377\3\214\305@\214\306>\214\305@\207\214\306" \
-  ">\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306>" \
-  "\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\221" \
-  "\214\306>\5\213\307A\216\306\77\212\307<\214\306>\277\337\223\220\377" \
-  "\377\377\213\214\306>\3\215\305>\214\306>\305\342\240\215\377\377\377" \
-  "\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306" \
-  ">\214\305@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207" \
-  "\214\306>\3\214\305@\214\306>\214\305@\211\377\377\377\4\376\377\377" \
-  "\377\377\375\377\375\377\377\377\377\202\377\377\375\202\377\376\377" \
-  "\202\376\377\377\22\377\376\377\262\331~\213\304\77\213\310\77\216\306" \
-  "A\212\307<\215\306A\214\304=\213\310\77\214\305@\215\304B\214\305B\214" \
-  "\306<\212\307>\212\307<\216\306A\221\312I\370\373\362\203\377\377\377" \
-  "\13\370\373\364\226\310K\214\306>\212\307>\215\304B\214\306>\215\306" \
-  "A\213\304\77\215\306A\214\306>\215\305@\202\212\306@\13\215\307\77\213" \
-  "\310=\220\303@\336\362\315\377\376\377\377\377\377\374\377\377\377\376" \
-  "\377\377\377\377\376\376\374\376\377\375\223\377\377\377\1\204\204\206" \
-  "\203::<\4""99;;;=::<kkm\211\377\377\377\1\376\376\376\202\377\377\377" \
-  "\1\376\376\376\221\377\377\377\1\376\376\376\202\377\377\377\1\376\376" \
-  "\376\237\377\377\377\1\316\316\316\205::<\1kkm\231\377\377\377\4\234" \
-  "\234\236;;=::<;;=\202::<\3jjl\377\377\377\376\376\376\232\377\377\377" \
-  "\10\265\265\265:::::<;;=::<99;::<\316\316\316\202\377\377\377\1\265\265" \
-  "\267\204::<\3;;=::<\316\316\316\235\377\377\377\1\234\234\236\205::<" \
-  "\1\234\234\234\241\377\377\377\2\363\363\363__a\203::<\4;;=::<;;=\234" \
-  "\234\236\216\377\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377" \
-  "\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214" \
-  "\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377" \
-  "\1\342\361\320\202\214\306>\1\214\305@\220\214\306>\10\215\304B\214\306" \
-  "<\214\305@\215\305@\212\306@\215\305>\323\354\265\377\376\377\216\377" \
-  "\377\377\213\214\306>\3\215\305>\214\306>\305\342\240\215\377\377\377" \
-  "\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306" \
-  ">\214\305@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207" \
-  "\214\306>\3\214\305@\214\306>\214\305@\212\377\377\377\3\375\377\376" \
-  "\377\377\377\377\377\375\202\377\377\377\26\377\377\375\375\377\374\376" \
-  "\377\377\377\376\377\377\377\375\365\375\362\225\311K\212\306@\214\306" \
-  ">\214\305@\212\306@\216\306=\211\306;\215\306A\214\306>\215\307\77\217" \
-  "\304@\214\306>\212\307>\215\305@\214\305@\262\327z\203\377\377\377\13" \
-  "\260\331{\213\310\77\214\305B\214\305@\215\305@\215\307\77\212\307<\216" \
-  "\306A\213\305;\214\305@\215\305>\202\214\306>\11\215\305@\214\306<\276" \
-  "\340\224\377\376\375\377\377\375\376\377\377\377\376\375\376\377\375" \
-  "\377\376\377\202\377\377\377\1\376\377\375\221\377\377\377\1\346\346" \
-  "\346\206::<\2:::\346\346\346\202\377\377\377\1\376\376\376\276\377\377" \
-  "\377\1\316\316\316\205::<\1kkm\216\377\377\377\1\376\376\376\202\377" \
-  "\377\377\1\376\376\376\207\377\377\377\3\234\234\236::<;;=\203::<\1k" \
-  "km\226\377\377\377\1\376\376\376\204\377\377\377\2\376\376\376lln\205" \
-  "::<\1``b\204\377\377\377\1SSS\205::<\1kkm\235\377\377\377\1\234\234\236" \
-  "\205::<\1\234\234\234\242\377\377\377\2\316\316\316:::\202::<\5;;=::" \
-  "<;;=FFH\363\363\363\206\377\377\377\1\376\376\376\206\377\377\377\1\234" \
-  "\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306>\214" \
-  "\305@\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377" \
-  "\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306" \
-  ">\1\214\305@\210\214\306>\27\215\306A\212\307>\215\305>\215\305@\215" \
-  "\307=\217\304B\214\306<\214\305@\215\307\77\215\305@\215\307\77\214\305" \
-  "@\216\306\77\211\310<\226\312L\347\364\332\377\377\377\377\376\377\377" \
-  "\377\375\374\377\377\377\376\377\376\376\376\376\377\377\207\377\377" \
-  "\377\213\214\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252" \
-  "\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214" \
-  "\305@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306" \
-  ">\3\214\305@\214\306>\214\305@\221\377\377\377\1\377\377\375\203\377" \
-  "\377\377\5\333\355\303\214\306>\212\307<\216\306A\214\305@\202\214\306" \
-  ">\15\215\305@\214\306>\212\306@\213\310\77\215\305>\216\306A\211\306" \
-  "=\212\306@\212\307<\334\354\305\377\377\375\335\354\303\212\307>\210" \
-  "\214\306>\10\216\306A\212\307;\215\306A\216\306A\214\305@\241\321a\371" \
-  "\374\361\375\376\377\223\377\377\377\1\376\376\376\204\377\377\377\2" \
-  "\376\376\376\234\234\234\203::<\1""99;\202::<\1\234\234\234\302\377\377" \
-  "\377\1\316\316\316\205::<\1kkm\217\377\377\377\1\376\376\376\202\377" \
-  "\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377\377\3\376" \
-  "\376\376\377\377\377xxz\202::<\5""99;::<;;=xxz\376\376\377\232\377\377" \
-  "\377\3\317\317\31799;;;=\202::<\5;;=::<\265\265\265\377\377\377\376\376" \
-  "\376\202\377\377\377\2\265\265\265;;=\202::<\203;;=\1\332\332\332\203" \
-  "\377\377\377\1\376\376\376\230\377\377\377\1\234\234\236\205::<\1\234" \
-  "\234\234\242\377\377\377\4\376\376\376\204\204\204::<;;=\202::<\3;;=" \
-  "::<\266\266\266\207\377\377\377\1\376\376\376\205\377\377\377\1\234\234" \
-  "\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306>\214\305" \
-  "@\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377" \
-  "\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1" \
-  "\214\305@\211\214\306>\27\216\306A\214\306>\212\306@\214\306<\213\310" \
-  "\77\215\305@\215\307\77\213\305=\216\306\77\212\307;\212\306@\215\305" \
-  ">\215\306A\212\307>\245\320d\367\375\361\376\377\377\377\376\377\377" \
-  "\377\377\376\376\377\377\376\377\375\377\376\377\377\375\206\377\377" \
-  "\377\213\214\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252" \
-  "\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214" \
-  "\305@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306" \
-  ">\3\214\305@\214\306>\214\305@\221\377\377\377\6\376\376\376\377\376" \
-  "\377\377\377\377\375\377\376\376\377\377\270\333\207\203\214\306>\17" \
-  "\211\306=\212\307<\214\306<\214\305@\215\307\77\214\305@\216\305C\214" \
-  "\306>\212\310A\215\305@\216\306\77\223\312K\360\371\346\222\311I\214" \
-  "\305@\210\214\306>\10\214\305@\212\307>\214\305@\216\306A\215\307=\350" \
-  "\364\334\375\377\376\377\376\377\225\377\377\377\7\376\376\376\377\377" \
-  "\377\376\376\376\377\377\377SSS::<;;=\203::<\5FFH\364\364\364\376\376" \
-  "\376\377\377\377\376\376\376\277\377\377\377\1\316\316\316\205::<\1k" \
-  "km\222\377\377\377\1\376\376\376\204\377\377\377\3\376\376\376\377\377" \
-  "\377SSU\205::<\1\234\234\236\202\377\377\377\1\376\376\376\202\377\377" \
-  "\377\1\376\376\376\220\377\377\377\1\376\376\376\204\377\377\377\2kk" \
-  "m;;=\202::<\5;;=::<SSU\377\377\377\376\376\376\204\377\377\377\7SSU:" \
-  ":<;;=::<;;=::<\205\205\205\234\377\377\377\1\234\234\236\205::<\1\234" \
-  "\234\234\240\377\377\377\1\376\376\376\202\377\377\377\1\346\346\346" \
-  "\202::<\1;;=\202::<\2;;=__a\205\377\377\377\1\376\376\376\202\377\377" \
-  "\377\1\376\376\376\204\377\377\377\1\234\234\234\205::<\1\234\234\236" \
-  "\266\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305" \
-  "@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p" \
-  "\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306>\27" \
-  "\214\304=\215\305>\213\307A\212\306@\214\305B\215\305<\213\310=\215\307" \
-  "\77\215\304B\214\306<\213\307A\215\305>\216\306A\212\306@\212\307>\270" \
-  "\332\204\377\376\377\377\377\377\377\376\377\376\376\374\377\377\373" \
-  "\377\376\377\377\377\375\206\377\377\377\213\214\306>\3\215\305>\214" \
-  "\306>\305\342\240\215\377\377\377\4\252\324p\214\306>\215\305>\214\305" \
-  "@\207\214\306>\3\214\305@\214\306>\214\305@\232\377\377\377\4\252\324" \
-  "p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305" \
-  "@\223\377\377\377\1\377\377\375\202\377\377\377\2\371\372\364\232\315" \
-  "W\202\214\305@\4\214\306<\215\307\77\214\305B\215\306C\202\215\306A\1" \
-  "\214\306<\202\212\307>\6\215\305@\212\307>\215\305>\212\306B\216\306" \
-  "A\212\307>\210\214\306>\10\214\305B\215\307\77\214\306<\214\306>\304" \
-  "\341\237\377\377\377\377\376\377\377\377\375\220\377\377\377\1\376\376" \
-  "\376\203\377\377\377\1\376\376\376\203\377\377\377\10\301\301\301::<" \
-  ";;=99;;;=::<99;\234\234\236\207\377\377\377\1\376\376\376\273\377\377" \
-  "\377\1\316\316\316\205::<\1kkm\216\377\377\377\1\376\376\376\202\377" \
-  "\377\377\1\376\376\376\204\377\377\377\3\376\376\376\377\377\377\315" \
-  "\315\315\202;;=\203::<\6;;=\265\265\267\377\377\377\376\376\376\377\377" \
-  "\377\376\376\376\225\377\377\377\2\376\376\376\317\317\317\203::<\4;" \
-  ";=::<;;=\264\264\264\206\377\377\377\10\234\234\234;;=::<;;=99;;;=::" \
-  "<\346\346\346\233\377\377\377\1\234\234\236\205::<\1\234\234\234\237" \
-  "\377\377\377\1\376\376\376\204\377\377\377\1\204\204\206\202::<\6;;=" \
-  "99;;;=::<\346\346\346\376\376\376\204\377\377\377\3\376\376\376\377\377" \
-  "\377\376\376\376\204\377\377\377\1\234\234\234\205::<\1\234\234\236\266" \
-  "\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215" \
-  "\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377" \
-  "\377\377\1\342\361\320\202\214\306>\1\214\305@\210\214\306>\22\215\307" \
-  "\77\212\307>\216\306A\212\304<\215\307\77\215\305@\216\306\77\213\307" \
-  "A\214\306>\214\305@\215\307\77\213\310=\212\307>\214\306>\214\306<\214" \
-  "\306>\216\306\77\324\353\267\202\376\376\376\3\377\377\377\376\376\377" \
-  "\376\377\375\207\377\377\377\213\214\306>\3\215\305>\214\306>\305\342" \
-  "\240\215\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306" \
-  ">\3\214\305@\214\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215" \
-  "\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\221\377\377" \
-  "\377\3\376\377\377\377\377\377\376\377\375\202\377\377\377\7\377\376" \
-  "\377\341\363\315\215\305@\214\305@\215\306A\215\305@\216\306\77\202\214" \
-  "\306>\12\214\305B\212\307<\213\304A\213\310=\216\306A\211\306;\213\310" \
-  "=\214\305@\212\307>\215\305>\210\214\306>\10\215\307\77\214\304=\212" \
-  "\307>\243\322b\377\377\377\376\377\377\377\376\377\377\377\375\226\377" \
-  "\377\377\4\376\376\376\377\377\377\204\204\206;;=\203::<\3""99;;;=\364" \
-  "\364\364\205\377\377\377\1\376\376\376\275\377\377\377\1\316\316\316" \
-  "\205::<\1kkm\217\377\377\377\202\376\376\376\202\377\377\377\1\376\376" \
-  "\376\203\377\377\377\4\376\376\376xxz;;=99;\202;;=\4::<;;=\346\346\346" \
-  "\376\376\376\204\377\377\377\1\376\376\376\224\377\377\377\1xxz\203:" \
-  ":<\3;;=::<SSU\203\377\377\377\1\376\376\376\203\377\377\377\2\363\363" \
-  "\363FFH\202::<\4;;=99;::<\204\204\206\233\377\377\377\1\234\234\236\205" \
-  "::<\1\234\234\234\244\377\377\377\1\316\316\316\202;;=\5::<;;=99;;;=" \
-  "\250\250\252\203\377\377\377\1\376\376\376\210\377\377\377\1\234\234" \
-  "\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306>\214\305" \
-  "@\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377" \
-  "\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1" \
-  "\214\305@\210\214\306>\7\213\305=\214\306<\210\306\77\216\306\77\215" \
-  "\307=\214\306>\215\307\77\202\214\306>\14\215\307\77\214\305B\214\306" \
-  "<\212\307<\214\305@\216\306\77\215\305>\214\305@\224\313L\352\364\331" \
-  "\374\377\377\377\376\377\211\377\377\377\213\214\306>\3\215\305>\214" \
-  "\306>\305\342\240\215\377\377\377\4\252\324p\214\306>\215\305>\214\305" \
-  "@\207\214\306>\3\214\305@\214\306>\214\305@\232\377\377\377\4\252\324" \
-  "p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305" \
-  "@\222\377\377\377\1\376\377\377\202\377\377\377\24\376\376\374\376\377" \
-  "\375\377\375\377\277\337\224\214\306>\212\307>\215\307\77\214\304=\215" \
-  "\307=\213\304A\214\306<\212\307>\215\307\77\214\305@\213\304\77\215\307" \
-  "\77\215\305@\214\304=\215\305<\215\306A\210\214\306>\1\212\307>\202\215" \
-  "\306A\4\350\365\333\377\375\376\377\376\377\375\376\377\226\377\377\377" \
-  "\1\376\376\376\202\377\377\377\3TTV::<99;\202;;=\4::<\203\203\203\377" \
-  "\377\377\376\376\376\302\377\377\377\1\316\316\316\205::<\1kkm\222\377" \
-  "\377\377\1\376\376\376\204\377\377\377\3\300\300\302;;=::<\202;;=\202" \
-  "::<\2```\376\376\376\227\377\377\377\7\376\376\376\377\377\377\346\346" \
-  "\346;;=99;::<;;=\202::<\3\251\251\251\377\377\377\376\376\376\206\377" \
-  "\377\377\1\234\234\234\202::<\1;;=\202::<\2;;=\346\346\346\232\377\377" \
-  "\377\1\234\234\236\205::<\1\234\234\234\235\377\377\377\1\376\376\376" \
-  "\207\377\377\377\11SSU::<;;=99;<<>::<xxz\377\377\377\376\376\376\212" \
-  "\377\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377\377\3\214" \
-  "\305@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214\306>\252" \
-  "\324p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361" \
-  "\320\202\214\306>\1\214\305@\210\214\306>\25\213\307A\216\306A\232\315" \
-  "W\215\306C\212\306@\214\305@\212\307;\216\306A\215\305>\215\307\77\214" \
-  "\305@\215\307\77\214\306>\214\305@\212\306B\213\307C\214\306>\215\305" \
-  "@\232\315V\372\374\367\376\376\376\202\377\377\375\1\376\376\376\206" \
-  "\377\377\377\213\214\306>\3\215\305>\214\306>\305\342\240\215\377\377" \
-  "\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214" \
-  "\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@" \
-  "\207\214\306>\3\214\305@\214\306>\214\305@\221\377\377\377\5\377\376" \
-  "\377\376\377\377\377\375\376\377\376\377\376\377\377\202\377\377\377" \
-  "\10\370\373\362\233\314V\213\307A\211\306=\215\307\77\212\307<\212\306" \
-  "@\215\305<\202\214\306>\7\215\307=\215\306A\214\305@\212\307>\216\306" \
-  "A\212\306@\215\307=\210\214\306>\10\212\307>\212\307<\313\347\254\376" \
-  "\377\377\377\377\377\377\376\377\376\377\377\377\377\375\223\377\377" \
-  "\377\1\376\376\376\203\377\377\377\1\332\332\332\202::<\1;;=\203::<\1" \
-  "\302\302\302\203\377\377\377\5\376\376\376\377\377\377\376\376\376\377" \
-  "\377\377\376\376\376\274\377\377\377\1\316\316\316\205::<\1kkm\217\377" \
-  "\377\377\1\376\376\376\206\377\377\377\3\332\332\334FFH;;=\205::<\1\265" \
-  "\265\265\202\377\377\377\1\376\376\376\224\377\377\377\1\376\376\376" \
-  "\202\377\377\377\1\205\205\207\202::<\1;;=\202::<\2GGI\363\363\363\202" \
-  "\377\377\377\1\376\376\376\205\377\377\377\1\363\363\363\202::<\1;;=" \
-  "\202::<\2""99;\234\234\234\203\377\377\377\1\376\376\376\226\377\377" \
-  "\377\1\234\234\236\205::<\1\234\234\234\234\377\377\377\1\376\376\376" \
-  "\210\377\377\377\3\222\222\222::<99;\202;;=\5""99;GGI\376\376\376\377" \
-  "\377\377\376\376\376\211\377\377\377\1\234\234\234\205::<\1\234\234\236" \
-  "\266\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305" \
-  "@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p" \
-  "\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\210\214\306>\10" \
-  "\213\307A\214\306>\331\356\303\232\315W\215\305>\215\306A\214\305B\214" \
-  "\306>\202\214\305@\7\213\310=\214\306>\215\304B\215\306A\211\306;\213" \
-  "\310\77\214\305@\202\215\307\77\2\257\326{\376\377\373\202\377\377\377" \
-  "\1\377\377\375\206\377\377\377\213\214\306>\3\215\305>\214\306>\305\342" \
-  "\240\215\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306" \
-  ">\3\214\305@\214\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215" \
-  "\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\221\377\377" \
-  "\377\6\377\377\373\377\377\375\377\377\377\376\376\377\377\376\377\373" \
-  "\377\374\202\377\376\377\4\336\362\315\220\303@\213\310=\215\307\77\202" \
-  "\212\306@\1\215\305@\202\214\306>\7\213\305=\214\306>\213\305=\214\305" \
-  "@\213\310\77\212\306@\213\307A\210\214\306>\10\215\307\77\252\324p\377" \
-  "\377\375\376\377\377\377\377\375\377\377\377\377\376\377\377\377\375" \
-  "\220\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\202\377" \
-  "\377\377\1\265\265\265\204::<\5;;=::<\363\363\363\377\377\377\376\376" \
-  "\376\302\377\377\377\1\316\316\316\205::<\1kkm\225\377\377\377\2\317" \
-  "\317\317FFH\206::<\1SSU\204\377\377\377\1\376\376\376\225\377\377\377" \
-  "\2\346\346\346;;=\203::<\3;;=::<\234\234\236\202\377\377\377\1\376\376" \
-  "\376\207\377\377\377\2\204\204\206;;=\204::<\2FFF\362\362\362\231\377" \
-  "\377\377\1\234\234\236\205::<\1\234\234\234\245\377\377\377\1\301\301" \
-  "\301\202::<\6;;=::<;;=::<\347\347\347\376\376\376\212\377\377\377\1\234" \
-  "\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306>\214" \
-  "\305@\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377" \
-  "\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306" \
-  ">\1\214\305@\210\214\306>\27\214\305@\215\305<\342\362\315\353\365\334" \
-  "\223\312K\215\305<\212\306@\215\305<\212\307>\215\306A\214\306>\212\307" \
-  ">\215\307\77\215\304B\215\307\77\215\305@\214\306>\215\305>\214\305@" \
-  "\215\305<\315\345\253\377\377\375\376\377\377\207\377\377\377\213\214" \
-  "\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p\214" \
-  "\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\232" \
-  "\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214" \
-  "\305@\214\306>\214\305@\221\377\377\377\14\376\377\377\376\376\377\377" \
-  "\377\377\377\377\373\376\377\375\377\376\377\376\377\377\377\377\377" \
-  "\377\376\375\276\340\224\214\306<\215\305@\202\214\306>\12\215\305>\214" \
-  "\305@\215\305@\214\305@\213\310\77\214\306>\216\306\77\211\305\77\215" \
-  "\307=\214\305@\210\214\306>\4\223\312K\360\367\347\377\377\377\377\377" \
-  "\375\232\377\377\377\2\376\376\376\234\234\236\204::<\2;;=___\234\377" \
-  "\377\377\1\376\376\376\203\377\377\377\1\376\376\376\244\377\377\377" \
-  "\1\316\316\316\205::<\1kkm\202\377\377\377\1\376\376\376\216\377\377" \
-  "\377\4\376\376\376\377\377\377\347\347\347\204\204\204\203::<\6;;=::" \
-  "<;;=::<;;=\301\301\303\226\377\377\377\1\376\376\376\203\377\377\377" \
-  "\1\203\203\205\202;;=\5::<;;=::<GGG\363\363\363\206\377\377\377\1\376" \
-  "\376\376\203\377\377\377\3\347\347\34799;;;=\202::<\202;;=\1\234\234" \
-  "\236\231\377\377\377\1\234\234\236\205::<\1\234\234\234\245\377\377\377" \
-  "\1\363\363\363\202::<\1""99;\203::<\1\316\316\316\213\377\377\377\1\234" \
-  "\234\234\204::<\2;;=kkm\203\234\234\236\2\235\235\237\234\234\234\220" \
-  "\234\234\236\204\234\234\234\4\235\235\235\234\234\234\234\234\236\346" \
-  "\346\350\231\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4" \
-  "\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250" \
-  "\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\210\214\306" \
-  ">\40\213\307A\215\305>\341\360\317\377\375\376\324\353\267\215\304B\214" \
-  "\306>\215\307=\214\305@\212\307>\212\307<\215\305<\215\306A\214\306>" \
-  "\214\306<\212\306@\214\305@\215\307\77\216\306=\212\306B\214\306>\352" \
-  "\364\333\377\376\377\377\377\377\377\376\377\377\377\377\377\377\375" \
-  "\376\377\373\375\376\377\377\376\377\214\306>\215\307\77\211\214\306" \
-  ">\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p\214\306" \
-  ">\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\232\377" \
-  "\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305" \
-  "@\214\306>\214\305@\232\377\377\377\7\374\377\375\242\321a\216\306A\212" \
-  "\307>\214\306>\215\307\77\212\307<\210\214\306>\16\215\307\77\214\307" \
-  ";\213\304\77\216\306A\214\305B\215\307\77\215\305>\212\307>\320\345\254" \
-  "\374\377\377\377\376\377\377\377\375\377\376\377\375\377\372\223\377" \
-  "\377\377\1\376\376\376\203\377\377\377\3\376\376\376\377\377\377kkm\203" \
-  "::<\3<<>::<\221\221\221\305\377\377\377\1\316\316\316\204::<\2;;=jjl" \
-  "\217\377\377\377\16\316\316\316\300\300\300\234\234\234__a::<;;=::<;" \
-  ";=::<99;;;=::<;;=\204\204\206\232\377\377\377\1\362\362\362\202;;=\202" \
-  "::<\3""99;::<\235\235\235\212\377\377\377\12\376\376\376\377\377\377" \
-  "\205\205\20799;;;=::<;;=::<GGI\376\376\376\230\377\377\377\1\234\234" \
-  "\236\205::<\1\234\234\234\246\377\377\377\10EEG::<;;=::<99;;;=\234\234" \
-  "\234\377\377\377\202\376\376\376\202\377\377\377\1\376\376\376\205\377" \
-  "\377\377\1\234\234\234\205::<\2;;=99;\202;;=\2""99;;;=\221::<\1""99;" \
-  "\203::<\3;;=::<\316\316\316\231\377\377\377\3\214\305@\214\306>\214\305" \
-  "@\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377" \
-  "\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1" \
-  "\214\305@\210\214\306>\202\214\306<\32\342\361\322\377\377\377\377\377" \
-  "\375\266\334\205\212\306B\215\307\77\212\306@\220\306=\214\306>\215\307" \
-  "\77\214\305B\213\305=\216\306\77\215\307\77\215\305<\212\306B\215\306" \
-  "A\215\305@\216\306=\232\315V\371\373\360\377\377\375\377\377\377\375" \
-  "\376\377\377\375\377\376\376\377\202\377\377\377\2\214\305@\212\307>" \
-  "\211\214\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324" \
-  "p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305" \
-  "@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>" \
-  "\3\214\305@\214\306>\214\305@\233\377\377\377\5\347\365\334\211\306=" \
-  "\215\305>\216\306=\214\305@\211\214\306>\2\215\304B\212\307>\202\214" \
-  "\306>\14\215\306A\214\306<\215\305@\252\324p\374\377\377\377\377\377" \
-  "\377\375\376\377\376\377\376\376\377\377\377\375\377\377\377\377\375" \
-  "\377\222\377\377\377\1\376\376\376\203\377\377\377\4\376\376\376lln:" \
-  ":<;;=\203::<\2\235\235\235\376\376\376\304\377\377\377\1\316\316\316" \
-  "\205::<\202;;=\2::<;;=\202::<\1;;=\211::<\202;;=\204::<\1""99;\202::" \
-  "<\5;;=::<;;=__a\376\376\376\224\377\377\377\1\376\376\376\205\377\377" \
-  "\377\1\235\235\235\206::<\3\346\346\346\377\377\377\376\376\376\207\377" \
-  "\377\377\5\376\376\376\377\377\377\376\376\376\346\346\350;;=\203::<" \
-  "\3;;=::<\265\265\265\230\377\377\377\1\234\234\236\205::<\1\234\234\234" \
-  "\246\377\377\377\1lln\202::<\4""99;;;=99;\234\234\234\213\377\377\377" \
-  "\1\234\234\234\203::<\7;;=::<;;=::<;;=::<;;=\222::<\7;;=99;;;=::<;;=" \
-  "::<\316\316\316\231\377\377\377\3\214\305@\214\306>\214\305@\207\214" \
-  "\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306" \
-  ">\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\210" \
-  "\214\306>\13\216\306A\213\310\77\343\361\320\377\377\375\375\377\376" \
-  "\371\374\361\242\320c\213\310\77\216\306\77\214\306>\215\306A\202\214" \
-  "\305@\2\216\306A\213\305=\204\214\306>\11\213\307A\216\306A\212\307>" \
-  "\260\331y\377\376\377\376\377\375\377\377\373\376\377\377\377\377\377" \
-  "\202\377\376\377\2\212\311=\215\306A\211\214\306>\3\215\305>\214\306" \
-  ">\305\342\240\215\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207" \
-  "\214\306>\3\214\305@\214\306>\214\305@\232\377\377\377\4\252\324p\214" \
-  "\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\231" \
-  "\377\377\377\6\377\376\377\377\377\373\377\376\377\305\342\240\212\310" \
-  "\77\214\304=\202\215\305@\210\214\306>\4\215\305>\213\305=\212\306@\215" \
-  "\306A\202\214\306>\10\222\312M\370\373\362\377\376\377\377\375\376\377" \
-  "\376\377\377\377\377\376\377\375\377\377\377\202\377\376\377\221\377" \
-  "\377\377\1\376\376\376\205\377\377\377\2::<;;=\202::<\202;;=\3\300\300" \
-  "\300\377\377\377\376\376\376\235\377\377\377\1\376\376\376\245\377\377" \
-  "\377\1\316\316\316\207::<\5;;=::<;;=::<;;=\210::<\202;;=\2""99;;;=\202" \
-  "::<\3;;=::<;;=\202::<\3;;=xxz\363\363\363\225\377\377\377\3\376\376\376" \
-  "\377\377\377\376\376\376\202\377\377\377\3\363\363\363FFH::<\202;;=\202" \
-  "::<\1\204\204\206\205\377\377\377\1\376\376\376\205\377\377\377\1\376" \
-  "\376\376\202\377\377\377\1kkm\202::<\1;;=\202::<\1SSU\230\377\377\377" \
-  "\1\234\234\236\205::<\1\234\234\234\244\377\377\377\3\376\376\376\377" \
-  "\377\377xxz\202::<\1;;=\202::<\3xxx\377\377\377\376\376\376\211\377\377" \
-  "\377\1\234\234\234\203::<\1;;=\202::<\1;;=\224::<\5;;=99;;;=::<;;=\202" \
-  "::<\1\316\316\316\231\377\377\377\3\214\305@\214\306>\214\305@\207\214" \
-  "\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306" \
-  ">\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\210" \
-  "\214\306>\3\214\305@\214\306<\343\361\316\202\377\377\377\26\377\376" \
-  "\374\353\365\335\223\312K\211\305\77\215\307=\215\306C\211\306;\214\306" \
-  ">\215\305@\215\307\77\214\305@\213\307A\214\306>\212\307<\216\306\77" \
-  "\212\306B\215\305>\212\306@\304\341\236\377\376\377\375\377\376\377\377" \
-  "\375\203\377\377\377\2\212\306@\214\306<\211\214\306>\3\215\305>\214" \
-  "\306>\305\342\240\215\377\377\377\4\252\324p\214\306>\215\305>\214\305" \
-  "@\207\214\306>\3\214\305@\214\306>\214\305@\232\377\377\377\4\252\324" \
-  "p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305" \
-  "@\231\377\377\377\2\377\377\373\376\377\377\202\377\377\377\4\241\321" \
-  "c\215\306A\215\305>\213\310\77\210\214\306>\20\215\305@\215\307=\213" \
-  "\310\77\214\304;\216\306\77\213\310\77\333\355\303\377\375\376\377\377" \
-  "\375\377\376\377\377\377\377\375\377\374\376\377\377\377\377\377\377" \
-  "\377\375\376\376\376\222\377\377\377\1\376\376\376\204\377\377\377\206" \
-  "::<\2\316\316\316\376\376\376\234\377\377\377\1\376\376\376\247\377\377" \
-  "\377\1\316\316\316\204::<\1;;=\205::<\1;;=\212::<\4""99;;;=::<;;=\203" \
-  "::<\1;;=\202::<\1\233\233\233\234\377\377\377\3\235\235\23799;;;=\203" \
-  "::<\2;;=\346\346\346\203\377\377\377\1\376\376\376\204\377\377\377\3" \
-  "\376\376\376\377\377\377\376\376\376\203\377\377\377\4\316\316\320;;" \
-  "=::<;;=\202::<\2;;=\264\264\264\227\377\377\377\1\234\234\236\205::<" \
-  "\1\234\234\234\246\377\377\377\2\234\234\236;;=\203::<\2;;=kkk\213\377" \
-  "\377\377\1\234\234\234\204::<\3;;=::<;;=\225::<\2;;=99;\202::<\3;;=:" \
-  "::\316\316\316\231\377\377\377\3\214\305@\214\306>\214\305@\207\214\306" \
-  ">\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214\306>" \
-  "\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\210" \
-  "\214\306>\14\215\307\77\215\305@\340\361\315\376\376\376\377\376\377" \
-  "\377\377\375\377\377\377\323\353\267\212\307>\215\305@\214\305@\214\311" \
-  "@\202\214\306>\22\212\307>\215\305@\214\306>\212\306@\214\305@\215\305" \
-  ">\215\307=\214\306>\214\304=\215\307\77\341\362\316\377\376\377\377\377" \
-  "\377\376\376\376\377\377\375\375\376\377\217\307@\212\306@\211\214\306" \
-  ">\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p\214\306" \
-  ">\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\232\377" \
-  "\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305" \
-  "@\214\306>\214\305@\232\377\377\377\7\377\376\377\376\377\377\377\377" \
-  "\377\352\364\331\212\307<\215\307=\212\307>\211\214\306>\13\212\306@" \
-  "\214\306<\216\306A\214\305@\252\322q\376\376\377\376\377\373\377\376" \
-  "\377\376\376\377\377\377\375\376\377\377\203\377\377\377\1\376\377\375" \
-  "\227\377\377\377\202::<\202;;=\3::<;;=\316\316\316\233\377\377\377\1" \
-  "\375\375\375\251\377\377\377\1\316\316\316\211::<\1;;=\213::<\3;;=::" \
-  "<;;=\204::<\3""99;\205\205\207\346\346\346\233\377\377\377\4\376\376" \
-  "\376\364\364\364FFH;;=\202::<\202;;=\1\204\204\204\215\377\377\377\1" \
-  "\376\376\376\202\377\377\377\7kkm::<99;::<;;=99;TTV\227\377\377\377\1" \
-  "\234\234\236\205::<\1\234\234\234\246\377\377\377\1\234\234\236\202:" \
-  ":<\202;;=\2::<kkk\202\377\377\377\3\376\376\376\377\377\377\376\376\376" \
-  "\206\377\377\377\1\234\234\234\203::<\1;;=\202::<\2;;=::<\202;;=\223" \
-  "::<\2""99;;;=\202::<\2;;;\316\316\316\231\377\377\377\3\214\305@\214" \
-  "\306>\214\305@\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251" \
-  "\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202" \
-  "\214\306>\1\214\305@\210\214\306>\202\214\305@\15\341\362\316\377\377" \
-  "\375\376\377\375\377\377\377\373\377\374\377\376\377\271\332\211\212" \
-  "\307>\212\307<\214\305B\214\305@\216\306\77\212\307>\202\215\307\77\11" \
-  "\214\305B\215\306A\212\311=\214\303A\214\306>\215\306A\212\307>\225\311" \
-  "K\371\372\362\202\377\377\375\202\377\377\377\2\214\305@\215\306A\211" \
-  "\214\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p" \
-  "\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305" \
-  "@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>" \
-  "\3\214\305@\214\306>\214\305@\231\377\377\377\10\376\377\377\377\376" \
-  "\377\377\377\375\377\375\376\331\356\303\214\306>\214\305B\215\307\77" \
-  "\210\214\306>\12\215\305>\212\306B\215\304B\214\306>\215\307=\224\310" \
-  "J\364\370\351\376\376\374\375\377\372\377\377\375\203\377\377\377\3\377" \
-  "\376\377\377\377\377\376\377\375\221\377\377\377\3\376\376\376\377\377" \
-  "\377\376\376\376\203\377\377\377\7::<;;=99;::<;;=::<\315\315\315\232" \
-  "\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\246\377\377" \
-  "\377\1\316\316\316\204::<\1;;=\202::<\1;;=\203::<\1;;=\210::<\1;;=\202" \
-  "::<\1;;=\202::<\4``b\233\233\235\347\347\351\376\376\376\235\377\377" \
-  "\377\2\265\265\265;;=\202::<\1;;=\202::<\1\332\332\332\216\377\377\377" \
-  "\3\376\376\376\377\377\377\302\302\302\206::<\1\315\315\315\226\377\377" \
-  "\377\1\234\234\236\205::<\1\234\234\234\245\377\377\377\2\376\376\376" \
-  "\235\235\237\205::<\1jjj\203\377\377\377\3\376\376\376\377\377\377\376" \
-  "\376\376\205\377\377\377\1\234\234\234\204::<\2;;=kkm\202\234\234\236" \
-  "\1\233\233\235\223\234\234\234\202\235\235\235\1\233\233\233\203\234" \
-  "\234\234\1\346\346\346\231\377\377\377\3\214\305@\214\306>\214\305@\207" \
-  "\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214" \
-  "\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305" \
-  "@\210\214\306>\17\212\307>\216\306A\342\360\315\376\377\377\376\376\374" \
-  "\375\377\376\377\376\377\377\376\374\377\377\375\242\320d\215\307=\214" \
-  "\306>\214\305@\215\305@\212\306@\202\214\305@\17\215\305@\212\307>\215" \
-  "\307\77\214\306<\215\306A\213\304\77\215\306A\215\307\77\252\324n\377" \
-  "\377\377\375\377\376\377\376\377\377\377\375\212\307<\215\305@\211\214" \
-  "\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\4\252\324p\214" \
-  "\306>\215\305>\214\305@\207\214\306>\3\214\305@\214\306>\214\305@\232" \
-  "\377\377\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214" \
-  "\305@\214\306>\214\305@\232\377\377\377\6\376\377\375\377\375\377\367" \
-  "\375\363\223\312H\216\306\77\215\305>\212\214\306>\2\215\305@\214\306" \
-  ">\202\212\307>\3\214\305@\247\324o\377\376\377\202\377\377\377\2\377" \
-  "\376\377\377\377\375\233\377\377\377\2::<;;=\204::<\2\316\316\316\376" \
-  "\376\376\236\377\377\377\3\316\316\316;;;:::\230::<\213\377\377\377\1" \
-  "\316\316\316\224::<\6kkmlln\205\205\207\234\234\236\301\301\303\363\363" \
-  "\363\202\377\377\377\1\376\376\376\202\377\377\377\3\376\376\376\377" \
-  "\377\377\376\376\376\231\377\377\377\1SSS\204::<\2;;=lln\213\377\377" \
-  "\377\1\376\376\376\205\377\377\377\2\376\376\376TTV\205::<\1lll\226\377" \
-  "\377\377\1\234\234\236\205::<\1\234\234\234\246\377\377\377\2\233\233" \
-  "\235;;=\204::<\2kkk\376\376\376\203\377\377\377\1\376\376\376\206\377" \
-  "\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305" \
-  "@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214\306>\252\324" \
-  "p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320" \
-  "\202\214\306>\1\214\305@\210\214\306>\3\212\307>\215\305>\342\362\315" \
-  "\202\377\377\377\22\377\376\377\376\377\377\377\377\375\376\377\377\363" \
-  "\367\346\225\311K\211\307@\216\306\77\212\307>\215\305@\214\306<\212" \
-  "\307>\214\305@\214\306>\212\306@\215\306C\214\304\77\215\307\77\202\214" \
-  "\306>\7\212\306@\307\341\240\377\376\377\376\377\372\377\377\377\212" \
-  "\307>\215\305>\211\214\306>\3\215\305>\214\306>\305\342\240\215\377\377" \
-  "\377\4\252\324p\214\306>\215\305>\214\305@\207\214\306>\3\214\305@\214" \
-  "\306>\214\305@\232\377\377\377\4\252\324p\214\306>\215\305>\214\305@" \
-  "\207\214\306>\3\214\305@\214\306>\214\305@\231\377\377\377\4\377\376" \
-  "\377\376\377\375\376\377\377\257\330z\202\214\305@\1\215\307\77\211\214" \
-  "\306>\14\212\307>\215\307\77\214\305@\215\305@\212\307>\215\307=\214" \
-  "\305B\313\347\252\377\377\377\377\375\377\377\376\377\376\376\376\202" \
-  "\376\377\375\231\377\377\377\4GGI;;=::<;;=\202::<\1\233\233\235\237\377" \
-  "\377\377\3\316\316\316::<;;=\230::<\213\377\377\377\1\316\316\316\205" \
-  "::<\1kkm\202\377\377\377\2\376\376\376\250\250\250\206::<\2FFH\346\346" \
-  "\346\210\377\377\377\1\376\376\376\237\377\377\377\1\264\264\266\203" \
-  ";;=\4::<;;=;;;\316\316\316\222\377\377\377\1\265\265\265\204::<\3;;=" \
-  "::<\316\316\316\203\377\377\377\1\376\376\376\221\377\377\377\1\234\234" \
-  "\236\205::<\1\234\234\234\245\377\377\377\2\376\376\376\235\235\237\205" \
-  "::<\1lll\213\377\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377" \
-  "\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214" \
-  "\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377" \
-  "\1\342\361\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343\361" \
-  "\316\205\377\377\377\10\376\377\375\377\377\377\333\355\303\215\305@" \
-  "\214\306>\214\306<\214\305@\215\305>\202\214\305@\207\214\306>\6\212" \
-  "\306@\214\307;\330\355\304\377\376\377\377\377\377\215\305>\212\214\306" \
-  ">\3\215\305>\214\306>\305\342\240\215\377\377\377\17\251\323q\214\306" \
-  ">\215\307\77\214\305B\215\307\77\213\305=\215\307\77\214\305@\212\307" \
-  ">\215\305@\213\310\77\214\305@\215\305<\214\306>\376\377\377\230\377" \
-  "\377\377\6\376\377\377\253\323p\215\305@\213\307A\214\306<\212\306B\202" \
-  "\214\306>\4\214\305@\214\306>\212\307>\214\305@\202\214\306>\2\214\305" \
-  "@\376\377\375\220\377\377\377\1\377\377\375\202\377\377\377\16\376\377" \
-  "\375\377\376\377\377\375\376\374\377\377\377\377\375\376\377\375\377" \
-  "\377\377\336\355\304\214\306>\215\306A\214\306>\215\306A\212\306@\216" \
-  "\306A\202\214\305@\4\215\307\77\214\306>\215\307\77\214\306>\202\214" \
-  "\305@\16\214\306>\215\307\77\214\306>\215\307\77\214\305@\214\305B\222" \
-  "\313H\361\370\346\376\377\377\377\377\377\377\376\377\377\377\377\374" \
-  "\377\377\377\376\377\230\377\377\377\1kkm\202::<\1""99;\202::<\1\235" \
-  "\235\237\233\377\377\377\1\376\376\376\203\377\377\377\1\316\316\316" \
-  "\224::<\1;;=\205::<\213\377\377\377\1\316\316\316\205::<\1kkm\204\377" \
-  "\377\377\3wwy::<;;=\202::<\4""99;;;=``b\363\363\363\206\377\377\377\1" \
-  "\376\376\376\235\377\377\377\4\376\376\376\377\377\377\376\376\376TT" \
-  "V\205::<\1lln\223\377\377\377\10\376\376\376SSU;;=::<;;=99;::<lll\205" \
-  "\377\377\377\1\376\376\376\217\377\377\377\1\234\234\236\205::<\1\234" \
-  "\234\234\246\377\377\377\1\204\204\206\202::<\1;;=\202::<\3xxx\377\377" \
-  "\377\376\376\376\211\377\377\377\1\234\234\234\205::<\1\234\234\236\266" \
-  "\377\377\377\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215" \
-  "\305>\214\306>\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377" \
-  "\377\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306>\2\214\305" \
-  "@\343\361\316\205\377\377\377\7\377\375\377\377\377\375\376\377\377\276" \
-  "\337\220\213\310\77\213\304A\216\306=\207\214\306>\3\215\307\77\214\306" \
-  ">\212\307>\202\215\305>\5\223\312J\361\371\344\377\375\377\212\307<\214" \
-  "\305@\211\214\306>\3\215\305>\214\306>\305\342\240\214\377\377\377\14" \
-  "\376\376\374\252\324n\214\306>\213\305=\215\307\77\214\305@\215\306A" \
-  "\214\306>\215\307\77\213\310\77\215\305@\212\307>\202\214\306>\1\214" \
-  "\305@\232\377\377\377\3\247\324m\215\305>\214\305@\202\214\306>\1\215" \
-  "\307=\202\214\305@\6\214\306<\215\307=\214\305B\215\307\77\214\306>\214" \
-  "\305@\224\377\377\377\15\377\377\375\376\376\376\377\377\377\377\376" \
-  "\377\376\377\375\377\377\375\372\373\366\222\312M\216\306A\215\305<\214" \
-  "\306>\212\307>\215\305<\202\214\306>\2\215\307\77\213\305=\204\214\306" \
-  ">\1\214\305@\203\214\306>\14\215\307\77\214\305@\213\304\77\214\305B" \
-  "\253\324n\376\376\377\376\377\377\377\376\377\377\377\377\376\377\375" \
-  "\377\377\375\376\377\375\227\377\377\377\3lln::<;;=\203::<\2kkm\376\376" \
-  "\376\236\377\377\377\2\316\316\316;;=\226::<\3;;=::<kkm\213\377\377\377" \
-  "\1\316\316\316\204::<\2;;=kkm\204\377\377\377\3\363\363\363__a;;=\203" \
-  "::<\4;;=99;\205\205\207\376\376\376\202\377\377\377\1\376\376\376\203" \
-  "\377\377\377\1\376\376\376\236\377\377\377\1\301\301\301\204::<\4;;=" \
-  "::<wwy\235\235\237\223\234\234\236\1kkm\204::<\5;;=99;\345\345\345\377" \
-  "\377\377\376\376\376\222\377\377\377\1\234\234\236\205::<\1\234\234\234" \
-  "\246\377\377\377\1kkm\204::<\2;;=\234\234\234\213\377\377\377\1\234\234" \
-  "\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306>\214\305" \
-  "@\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377" \
-  "\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1" \
-  "\214\305@\211\214\306>\2\214\305@\343\361\316\205\377\377\377\2\377\377" \
-  "\375\377\375\377\202\377\377\377\1\242\322b\202\214\305@\2\214\305B\215" \
-  "\307\77\205\214\306>\12\215\307\77\214\306>\215\306A\214\306>\212\306" \
-  "@\215\307=\241\321c\377\377\377\215\304B\212\307>\211\214\306>\3\215" \
-  "\305>\214\306>\305\342\240\214\377\377\377\5\376\377\375\251\323o\215" \
-  "\307\77\214\306>\215\307\77\202\214\305@\2\214\306>\215\307\77\202\214" \
-  "\306>\5\213\310\77\215\305>\214\305@\214\306>\377\376\377\230\377\377" \
-  "\377\12\377\376\377\247\326p\213\304\77\215\307\77\214\305B\214\306<" \
-  "\214\306>\215\307\77\214\305@\214\306>\202\215\307\77\3\214\306>\215" \
-  "\306A\216\306\77\223\377\377\377\5\376\377\372\377\377\375\376\376\376" \
-  "\377\377\377\377\377\375\202\377\376\377\4\250\325p\212\307<\214\305" \
-  "@\215\307\77\202\214\305@\3\214\307;\215\307=\214\306>\202\214\305@\202" \
-  "\214\306>\1\215\307\77\207\214\306>\202\214\305@\5\212\307>\307\341\240" \
-  "\376\376\374\377\377\377\377\376\377\202\377\377\377\1\376\376\374\227" \
-  "\377\377\377\7\234\234\236;;=99;<<>99;::<;;=\237\377\377\377\1\316\316" \
-  "\316\223::<\7;;=99;;;=99;::<;;=kkm\213\377\377\377\1\316\316\316\205" \
-  "::<\2mmo\376\376\377\204\377\377\377\12\332\332\332FFH;;=::<;;=99;<<" \
-  ">::<\266\266\270\376\376\376\203\377\377\377\1\376\376\376\202\377\377" \
-  "\377\1\376\376\376\230\377\377\377\3\376\376\376\377\377\377\376\376" \
-  "\376\202\377\377\377\1kkm\205::<\202;;=\224::<\10;;=::<;;=::<;;=88:;" \
-  ";=\205\205\205\224\377\377\377\1\234\234\236\205::<\1\234\234\234\246" \
-  "\377\377\377\3SSU;;=::<\203;;=\1\234\234\234\206\377\377\377\1\376\376" \
-  "\376\204\377\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377\377" \
-  "\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214\306" \
-  ">\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1" \
-  "\342\361\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343\361" \
-  "\316\205\377\377\377\10\376\376\374\376\377\375\377\375\377\377\377\377" \
-  "\367\372\357\224\313L\214\305B\215\305<\203\214\306>\202\215\307\77\204" \
-  "\214\306>\6\215\306A\213\307A\214\306>\212\306@\277\337\223\215\305>" \
-  "\212\214\306>\3\215\305>\214\306>\305\342\240\214\377\377\377\2\376\377" \
-  "\377\251\322r\202\215\307\77\1\214\305B\202\214\306>\202\215\307\77\7" \
-  "\214\306>\215\307\77\214\306>\214\304\77\212\306@\215\307\77\377\376" \
-  "\377\230\377\377\377\7\377\377\375\215\305@\214\306>\214\305@\214\306" \
-  ">\216\306\77\214\306<\203\214\305@\6\215\306C\215\307=\214\305@\215\306" \
-  "A\233\314V\377\377\375\220\377\377\377\5\376\376\376\377\377\377\377" \
-  "\376\377\377\375\377\377\377\375\202\376\377\377\21\377\376\377\314\346" \
-  "\251\212\306B\215\307=\212\307>\216\306\77\215\306C\212\307>\215\306" \
-  "C\214\305@\215\307\77\213\304\77\215\306A\214\306>\214\305@\215\307\77" \
-  "\215\306A\203\214\306>\1\215\307\77\202\214\306>\202\215\307\77\10\214" \
-  "\306>\214\305@\350\364\334\377\377\375\377\376\377\377\377\377\376\376" \
-  "\376\377\376\377\222\377\377\377\1\376\376\376\204\377\377\377\1\301" \
-  "\301\301\202::<\2""99;;;=\202::<\1\316\316\316\233\377\377\377\1\376" \
-  "\376\376\202\377\377\377\2\316\316\316;;;\222::<\7""99;;;=::<;;=::<9" \
-  "9;\204\204\206\213\377\377\377\1\316\316\316\205::<\1jjl\202\377\377" \
-  "\377\202\376\376\376\202\377\377\377\1\265\265\267\202::<\202;;=\202" \
-  "::<\2FFH\332\332\332\205\377\377\377\1\376\376\376\234\377\377\377\2" \
-  "\376\376\376\317\317\317\202::<\1;;=\204::<\3;;=::<;;=\222::<\2""99;" \
-  ";;=\202::<\1;;=\203::<\3\346\346\346\377\377\377\376\376\376\221\377" \
-  "\377\377\1\234\234\236\205::<\1\234\234\234\246\377\377\377\1;;=\203" \
-  "::<\4;;=::<\316\316\316\376\376\376\203\377\377\377\1\376\376\376\206" \
-  "\377\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377\377\3\214" \
-  "\305@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214\306>\252" \
-  "\324p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361" \
-  "\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343\361\316\205" \
-  "\377\377\377\203\376\377\377\202\377\376\377\2\341\361\315\214\305@\203" \
-  "\215\307\77\202\214\306>\1\215\307\77\203\214\306>\10\214\305@\215\307" \
-  "\77\214\306>\212\307>\216\306A\213\305;\214\305@\215\305<\211\214\306" \
-  ">\3\215\305>\214\306>\305\342\240\214\377\377\377\2\376\377\377\252\324" \
-  "p\202\214\306>\3\214\305B\214\306<\215\307\77\203\214\306>\6\214\306" \
-  "<\214\307;\217\307@\212\307>\214\305@\376\377\377\231\377\377\377\10" \
-  "\215\307=\214\305B\213\304A\216\310@\214\304\77\215\307=\214\305@\215" \
-  "\307\77\203\214\306>\3\215\307\77\214\306>\247\324o\222\377\377\377\3" \
-  "\377\377\375\377\377\377\377\375\376\203\377\377\377\20\360\371\346\223" \
-  "\312K\216\306\77\213\304A\215\306A\213\305=\215\305@\212\307>\215\305" \
-  "<\214\305B\214\305@\214\306>\214\306<\214\306>\215\307\77\213\305=\204" \
-  "\214\306>\202\215\307\77\203\214\306>\10\215\306A\212\307<\243\321d\377" \
-  "\377\373\375\377\376\377\376\377\377\377\377\376\376\374\223\377\377" \
-  "\377\5\375\375\375\377\377\377\376\376\376\377\377\377\346\346\346\202" \
-  "::<\1;;=\203::<\1\221\221\221\235\377\377\377\3\376\376\376\377\377\377" \
-  "\376\376\376\222\377\377\377\1__a\204::<\2;;=\234\234\234\213\377\377" \
-  "\377\1\316\316\316\205::<\3jjl\377\377\377\376\376\376\205\377\377\377" \
-  "\2\204\204\206;;=\204::<\3;;=RRT\363\363\363\237\377\377\377\1\376\376" \
-  "\376\202\377\377\377\2jjl;;=\206::<\4;;=::<99;;;=\223::<\1;;=\205::<" \
-  "\1\204\204\206\203\377\377\377\1\376\376\376\217\377\377\377\1\234\234" \
-  "\236\205::<\1\234\234\234\245\377\377\377\3\315\315\315;;=99;\202::<" \
-  "\5""99;;;=\346\346\346\377\377\377\376\376\376\211\377\377\377\1\234" \
-  "\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306>\214" \
-  "\305@\207\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377" \
-  "\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306" \
-  ">\1\214\305@\211\214\306>\2\214\305@\343\361\316\207\377\377\377\202" \
-  "\377\377\375\4\376\377\377\377\377\375\303\342\237\212\306@\202\214\305" \
-  "@\206\214\306>\7\216\306\77\213\305;\214\305@\216\306A\214\306>\215\307" \
-  "\77\213\307A\212\214\306>\3\215\305>\214\306>\305\342\240\215\377\377" \
-  "\377\17\252\323k\215\306A\214\306>\215\307\77\214\306>\215\307\77\214" \
-  "\305@\214\306>\213\304A\215\306C\214\305@\213\304A\213\310=\214\306<" \
-  "\342\357\321\230\377\377\377\6\360\371\346\214\305B\212\307<\215\307" \
-  "=\213\305=\215\307\77\202\214\305@\7\215\306A\214\306>\214\306<\214\305" \
-  "@\214\306>\214\305@\252\324p\222\377\377\377\11\377\376\377\376\377\377" \
-  "\377\377\377\377\377\375\376\376\374\377\377\377\253\323p\215\307\77" \
-  "\211\306;\202\215\306A\6\214\306>\214\306<\215\305>\216\305C\215\307" \
-  "\77\213\304\77\202\215\307\77\2\215\307=\213\305;\202\215\307\77\2\214" \
-  "\306>\215\307\77\205\214\306>\5\215\307\77\212\306@\214\306>\215\307" \
-  "\77\304\341\236\202\377\377\377\2\376\376\377\374\377\377\230\377\377" \
-  "\377\7SSU;;=99;::<;;=::<FFH\232\377\377\377\1\376\376\376\205\377\377" \
-  "\377\1\376\376\376\220\377\377\377\2\376\376\376;;=\202::<\1;;=\202:" \
-  ":<\1\316\316\316\213\377\377\377\1\316\316\316\205::<\1kkm\210\377\377" \
-  "\377\2__a;;=\204::<\2;;=xxz\202\377\377\377\1\376\376\376\233\377\377" \
-  "\377\1\376\376\376\202\377\377\377\2\315\315\315;;=\206::<\2;;=99;\203" \
-  ";;=\223::<\1;;=\205::<\6FFH\363\363\363\377\377\377\376\376\376\377\377" \
-  "\377\376\376\376\216\377\377\377\1\234\234\236\205::<\1\234\234\234\244" \
-  "\377\377\377\4\376\376\376\223\223\22399;;;=\202::<\4;;=EEG\377\377\377" \
-  "\376\376\376\202\377\377\377\1\376\376\376\202\377\377\377\1\376\376" \
-  "\376\204\377\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377\377" \
-  "\3\214\305@\214\306>\214\305@\207\214\306>\4\214\305@\215\305>\214\306" \
-  ">\252\324p\251\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1" \
-  "\342\361\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343\361" \
-  "\316\206\377\377\377\13\377\376\377\377\377\377\376\377\375\377\377\377" \
-  "\377\376\377\376\377\377\253\324l\214\305B\213\304\77\214\305@\215\307" \
-  "\77\203\214\306>\11\214\305@\214\306<\216\306=\214\306>\212\306@\215" \
-  "\306C\214\304;\212\307>\214\305@\211\214\306>\3\215\305>\214\306>\305" \
-  "\342\240\215\377\377\377\1\261\330\177\202\214\306>\2\214\306<\215\306" \
-  "A\203\214\306>\7\215\307\77\214\306>\214\306<\215\307=\214\306>\215\306" \
-  "C\323\353\267\230\377\377\377\4\340\361\315\215\305@\215\306A\214\305" \
-  "@\202\214\306>\2\213\305=\215\306A\202\214\305@\5\214\306>\215\307\77" \
-  "\214\306>\214\305@\260\330x\221\377\377\377\3\376\376\376\377\377\373" \
-  "\375\377\376\202\377\377\377\25\376\377\377\314\345\253\214\305@\213" \
-  "\304\77\216\306\77\212\307>\215\305@\214\306>\214\305@\215\305>\214\305" \
-  "@\214\306>\214\306<\214\305@\215\306A\214\305@\215\306C\214\306>\214" \
-  "\305@\214\306>\215\307\77\207\214\306>\7\212\306@\220\306=\215\306C\350" \
-  "\364\336\376\377\373\377\377\375\376\377\377\230\377\377\377\1\221\221" \
-  "\223\203::<\1;;=\202::<\1\265\265\265\230\377\377\377\1\376\376\376\227" \
-  "\377\377\377\1\316\316\316\202::<\1;;=\203::<\1\363\363\363\213\377\377" \
-  "\377\1\316\316\316\205::<\1kkm\204\377\377\377\1\376\376\376\203\377" \
-  "\377\377\2\346\346\346FFH\206::<\2\234\234\236\376\376\376\237\377\377" \
-  "\377\1\205\205\205\206::<\3;;=::<;;=\223::<\1;;=\203::<\202;;=\204::" \
-  "<\2\234\234\234\376\376\376\221\377\377\377\1\234\234\236\205::<\1\234" \
-  "\234\234\245\377\377\377\1RRR\204::<\2""99;yy{\203\377\377\377\1\376" \
-  "\376\376\202\377\377\377\202\376\376\376\204\377\377\377\1\234\234\234" \
-  "\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306>\214\305@\207" \
-  "\214\306>\4\214\305@\215\305>\214\306>\252\324p\251\377\377\377\215\214" \
-  "\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305" \
-  "@\211\214\306>\2\214\305@\343\361\316\205\377\377\377\30\377\377\375" \
-  "\377\377\377\375\377\376\377\377\377\377\376\377\377\377\377\376\377" \
-  "\377\371\372\365\222\313H\214\305B\214\305@\215\307\77\214\306>\215\307" \
-  "\77\214\306>\214\305@\212\306B\214\305@\212\307>\216\306\77\212\307>" \
-  "\215\307\77\214\306<\214\305@\211\214\306>\3\215\305>\214\306>\305\342" \
-  "\240\214\377\377\377\20\377\376\377\301\345\237\215\305>\215\306A\213" \
-  "\304\77\215\306C\214\306>\214\306<\216\306\77\214\306>\214\305B\215\307" \
-  "\77\214\306>\215\307\77\214\305@\271\332\211\230\377\377\377\10\307\341" \
-  "\240\215\305>\214\305@\214\306>\215\305<\212\307>\214\305B\214\306<\202" \
-  "\214\306>\5\215\305<\214\305B\215\307\77\214\306>\303\344\235\222\377" \
-  "\377\377\6\376\376\377\377\377\375\376\377\377\377\376\377\352\364\333" \
-  "\215\305@\202\215\307\77\16\214\306>\215\307\77\214\306>\215\307\77\214" \
-  "\306<\216\306A\213\310\77\214\305D\215\3108\214\305@\215\305>\223\312" \
-  "K\236\323a\215\307\77\207\214\306>\202\214\305@\10\214\306>\215\307\77" \
-  "\212\307>\212\307<\241\321c\377\376\377\377\375\376\377\375\377\230\377" \
-  "\377\377\3\332\332\332:::;;=\204::<\1SSU\203\377\377\377\1\376\376\376" \
-  "\247\377\377\377\1\376\376\376\204\377\377\377\1\221\221\221\202::<\1" \
-  ";:\77\202::<\1RRT\214\377\377\377\1\316\316\316\205::<\1kkm\211\377\377" \
-  "\377\2\316\316\316;;=\202::<\5;;=::<;;=::<\316\316\316\210\377\377\377" \
-  "\1\376\376\376\215\377\377\377\1\376\376\376\207\377\377\377\2\346\346" \
-  "\350::<\202;;=\202::<\2:::xxx\230\234\234\234\3\235\235\235\234\234\234" \
-  "kkm\203::<\4;;=::<FFH\364\364\364\203\377\377\377\1\376\376\376\215\377" \
-  "\377\377\1\234\234\236\205::<\1\234\234\234\241\377\377\377\1\376\376" \
-  "\376\202\377\377\377\1\332\332\334\206::<\1\250\250\252\214\377\377\377" \
-  "\1\234\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306" \
-  ">\214\305@\204\214\306>\2\213\307A\213\310\77\204\214\306>\1\252\324" \
-  "p\232\377\377\377\1\377\377\375\216\377\377\377\215\214\306>\1\250\325" \
-  "p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306>" \
-  "\2\214\305@\343\361\316\215\377\377\377\10\352\363\336\214\306>\212\306" \
-  "B\215\307\77\212\307<\215\305>\214\305@\215\307\77\221\214\306>\3\215" \
-  "\305>\214\306>\305\342\240\214\377\377\377\30\377\376\377\313\347\254" \
-  "\215\307\77\214\304=\215\307\77\212\306@\215\307\77\215\306A\214\305" \
-  "@\214\306>\215\307\77\214\306>\215\307\77\214\305@\214\305B\222\313H" \
-  "\377\376\377\377\375\376\377\376\377\377\377\377\377\376\377\377\377" \
-  "\373\376\377\377\377\376\377\211\377\377\377\26\377\377\375\377\376\377" \
-  "\377\377\377\376\377\377\377\377\375\376\377\375\377\377\377\241\323" \
-  "b\215\304D\214\307;\215\307\77\214\305B\215\307\77\214\306<\215\306A" \
-  "\212\307>\215\305@\214\306>\213\310=\215\305@\215\306A\323\352\264\221" \
-  "\377\377\377\11\376\377\377\376\376\374\376\377\377\377\376\374\377\376" \
-  "\377\242\320c\215\307\77\215\306A\214\306>\202\214\305@\203\214\306>" \
-  "\25\214\305@\215\306A\214\305@\215\307\77\214\306>\215\307=\315\345\253" \
-  "\361\370\346\215\307\77\214\306>\212\306@\216\306A\214\306>\215\305>" \
-  "\215\305@\214\305@\212\307>\215\305@\212\306@\215\305<\215\305@\202\214" \
-  "\306>\12\277\337\223\377\377\377\376\377\375\377\376\377\377\377\375" \
-  "\376\377\377\377\377\377\376\376\376\377\377\377\377\377\375\222\377" \
-  "\377\377\1___\202::<\202;;=\202::<\1\266\266\266\250\377\377\377\1\376" \
-  "\376\376\202\377\377\377\1\376\376\376\203\377\377\377\1SSU\203::<\3" \
-  ";;=::<\221\221\223\214\377\377\377\1\316\316\316\205::<\1kkm\210\377" \
-  "\377\377\3\376\376\376\377\377\377\233\233\233\203::<\5;;=::<;;=FFH\364" \
-  "\364\364\210\377\377\377\1\376\376\376\213\377\377\377\2\376\376\376" \
-  "\377\377\377\202\376\376\376\205\377\377\377\1\204\204\206\202::<\1;" \
-  ";=\202::<\3FFF\363\363\363\376\376\376\231\377\377\377\3\346\346\346" \
-  "::<;;=\204::<\3\234\234\234\377\377\377\376\376\376\217\377\377\377\1" \
-  "\234\234\236\205::<\1\234\234\234\234\377\377\377\1\376\376\376\207\377" \
-  "\377\377\3\205\205\207::<;;=\204::<\1\346\346\350\214\377\377\377\1\234" \
-  "\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306>\214" \
-  "\305@\205\214\306>\7\214\306<\214\306>\215\307\77\214\305@\214\306>\252" \
-  "\324p\376\377\375\230\377\377\377\203\377\376\377\203\377\377\377\1\376" \
-  "\376\377\211\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342" \
-  "\361\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343\361\316" \
-  "\215\377\377\377\2\376\377\375\313\347\254\203\214\306>\3\214\305@\216" \
-  "\306\77\211\306=\221\214\306>\3\215\305>\214\306>\305\342\240\214\377" \
-  "\377\377\11\375\376\377\343\361\316\215\305>\215\307\77\213\304A\215" \
-  "\307\77\215\305>\214\306<\214\305@\203\214\306>\14\215\307\77\214\305" \
-  "@\213\304\77\214\305B\322\353\264\377\377\377\377\377\375\377\377\377" \
-  "\377\376\377\376\377\377\377\377\377\376\377\377\210\377\377\377\13\377" \
-  "\377\375\377\377\377\376\377\375\377\376\377\376\376\374\377\377\375" \
-  "\377\377\377\350\364\334\215\304D\215\305>\215\307\77\202\214\305@\202" \
-  "\214\306>\10\214\305@\215\306A\214\306<\215\306C\214\304=\215\307=\212" \
-  "\307<\351\366\332\222\377\377\377\14\377\377\375\377\377\377\377\377" \
-  "\375\304\343\237\214\306>\212\307>\217\307@\214\305@\215\307\77\214\306" \
-  ">\214\305@\215\306A\202\214\306>\5\214\306<\215\305>\211\307>\216\306" \
-  "=\251\323o\202\376\377\377\31\304\341\241\212\306@\215\306A\212\307>" \
-  "\215\307\77\214\306<\216\305C\212\307<\216\306A\214\306<\215\307\77\215" \
-  "\305>\212\307>\216\306A\214\305@\216\306A\341\361\315\377\376\377\377" \
-  "\377\375\376\377\377\377\376\377\376\376\376\377\377\377\377\376\377" \
-  "\376\377\375\222\377\377\377\1\265\265\265\202;;=\204::<\2SSU\364\364" \
-  "\364\203\377\377\377\1\376\376\376\245\377\377\377\1\376\376\376\203" \
-  "\377\377\377\1\316\316\316\203::<\1;;=\202::<\1\302\302\302\214\377\377" \
-  "\377\1\316\316\316\205::<\1kkm\213\377\377\377\1lln\204::<\3;;=::<__" \
-  "a\202\377\377\377\1\376\376\376\206\377\377\377\1\376\376\376\213\377" \
-  "\377\377\1\376\376\376\202\377\377\377\1\376\376\376\203\377\377\377" \
-  "\3\346\346\346::<;;=\204::<\1\234\234\234\234\377\377\377\1\204\204\206" \
-  "\202;;=\202::<\2;;=SSU\221\377\377\377\1\234\234\236\205::<\1\234\234" \
-  "\234\235\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\202" \
-  "\377\377\377\2\346\346\346::<\202;;=\4""99;;;=::<kkm\215\377\377\377" \
-  "\1\234\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306" \
-  ">\214\305@\204\214\306>\10\214\305@\215\306A\215\305@\213\305=\214\306" \
-  ">\215\307\77\252\324p\376\377\377\230\377\377\377\1\376\376\376\205\377" \
-  "\377\377\2\376\377\377\376\377\375\210\377\377\377\215\214\306>\1\250" \
-  "\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306" \
-  ">\2\214\305@\343\361\316\215\377\377\377\10\377\377\375\377\375\376\262" \
-  "\331|\214\305@\215\306A\214\306>\214\305B\215\307\77\221\214\306>\3\215" \
-  "\305>\214\306>\305\342\240\214\377\377\377\10\376\377\375\377\377\377" \
-  "\214\304\77\212\307>\216\306A\214\306>\215\305@\215\307\77\206\214\306" \
-  ">\202\214\305@\3\233\316X\376\376\377\376\377\373\202\377\377\377\3\377" \
-  "\375\376\377\377\375\377\376\377\210\377\377\377\12\377\376\377\376\377" \
-  "\375\377\375\376\376\376\374\377\377\377\377\377\375\377\377\377\257" \
-  "\330x\214\307;\215\307\77\202\214\305@\2\215\307\77\213\305=\202\214" \
-  "\306>\1\215\305>\202\214\306>\5\216\306\77\215\306A\215\305@\376\377" \
-  "\375\377\376\377\220\377\377\377\11\377\377\375\377\377\377\376\377\377" \
-  "\350\364\334\212\307>\213\310\77\216\306\77\212\307>\214\305@\202\214" \
-  "\306>%\215\306A\214\306>\213\305=\214\306>\215\307\77\215\305@\211\307" \
-  ">\223\311M\363\367\350\376\377\375\377\377\377\377\377\375\242\320d\212" \
-  "\307<\215\306A\214\305@\212\306@\215\306A\214\306>\212\307>\215\307\77" \
-  "\217\304@\211\310<\215\305>\213\310\77\212\307>\214\306>\234\315W\367" \
-  "\372\363\376\377\377\377\376\377\377\377\375\377\377\377\376\376\376" \
-  "\377\377\375\377\377\377\376\377\375\222\377\377\377\1RRR\202::<\203" \
-  ";;=\2::<\234\234\236\204\377\377\377\1\376\376\376\246\377\377\377\3" \
-  "\376\376\376\377\377\377kkk\202::<\4;;=99;;;=FFH\215\377\377\377\1\316" \
-  "\316\316\205::<\1kkm\211\377\377\377\5\376\376\376\377\377\377\363\363" \
-  "\363SSU;;=\202::<\202;;=\2""99;\222\222\222\207\377\377\377\3\376\376" \
-  "\376\377\377\377\376\376\376\214\377\377\377\1\376\376\376\204\377\377" \
-  "\377\3\204\204\204;;=99;\202;;=\3::<FFH\363\363\363\230\377\377\377\1" \
-  "\376\376\376\202\377\377\377\2\376\376\376\317\317\317\203::<\4;;=::" \
-  "<;;=\266\266\266\220\377\377\377\1\234\234\236\205::<\1\234\234\234\243" \
-  "\377\377\377\2\204\204\204;;=\204::<\2""99;\264\264\264\215\377\377\377" \
-  "\1\234\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306" \
-  ">\214\305@\204\214\306>\2\214\305@\214\306>\203\215\306A\2\215\307\77" \
-  "\251\323q\231\377\377\377\203\377\377\375\202\377\377\377\1\377\375\376" \
-  "\202\377\376\377\210\377\377\377\215\214\306>\1\250\325p\216\377\377" \
-  "\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343" \
-  "\361\316\215\377\377\377\7\376\376\376\377\377\375\366\373\364\233\316" \
-  "X\215\305@\215\307=\215\305>\222\214\306>\3\215\305>\214\306>\305\342" \
-  "\240\216\377\377\377\6\243\322b\214\306>\215\305@\215\307\77\215\305" \
-  "@\215\306A\203\214\306>\1\215\307\77\202\214\306>\202\215\307\77\2\214" \
-  "\306>\315\346\254\202\377\377\377\4\377\376\375\376\377\375\376\376\377" \
-  "\377\376\377\212\377\377\377\7\377\377\375\377\376\377\377\377\373\377" \
-  "\377\375\327\356\304\214\306>\215\307\77\202\214\305@\203\214\306>\12" \
-  "\215\307\77\214\306>\214\305@\216\306\77\214\306<\214\304\77\212\307" \
-  ">\260\331{\376\377\375\377\376\377\220\377\377\377\13\376\377\377\377" \
-  "\377\375\370\373\362\233\315Z\216\306A\214\305@\212\307>\215\306A\214" \
-  "\306>\214\305@\215\306A\202\214\306>\6\215\307\77\214\305@\214\305B\214" \
-  "\306>\215\307=\313\347\254\202\377\377\377\23\377\376\377\377\377\375" \
-  "\350\364\334\212\307>\220\306=\214\305@\216\306=\214\306>\214\305@\214" \
-  "\306>\212\306@\215\305>\212\306@\215\307\77\212\307>\215\307\77\214\305" \
-  "@\212\306@\277\340\221\202\377\377\377\1\377\377\375\203\377\377\377" \
-  "\2\377\376\377\377\377\375\220\377\377\377\4\376\376\376\377\377\377" \
-  "\265\265\265::<\202;;=\5""99;::<;;=99;\317\317\317\250\377\377\377\1" \
-  "\376\376\376\202\377\377\377\2\316\316\31699;\202::<\202;;=\2::<\221" \
-  "\221\223\215\377\377\377\1\316\316\316\205::<\1kkm\207\377\377\377\1" \
-  "\376\376\376\204\377\377\377\1\332\332\334\203::<\5;;=::<;;=99;\302\302" \
-  "\302\202\377\377\377\1\376\376\376\216\377\377\377\1\376\376\376\202" \
-  "\377\377\377\1\376\376\376\204\377\377\377\4\362\362\362FFH::<;;=\202" \
-  "::<\2;;=\221\221\223\204\377\377\377\202\376\376\376\224\377\377\377" \
-  "\1\376\376\376\203\377\377\377\1kkm\202;;=\203::<\1SSU\220\377\377\377" \
-  "\1\234\234\236\205::<\1\234\234\234\240\377\377\377\3\376\376\376\377" \
-  "\377\377\315\315\315\203::<\1;;=\202::<\1SSU\216\377\377\377\1\234\234" \
-  "\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306>\214\305" \
-  "@\204\214\306>\3\215\306A\214\306<\215\307=\202\214\305@\3\214\306>\253" \
-  "\324n\377\377\375\230\377\377\377\2\375\376\377\376\376\376\203\377\377" \
-  "\377\1\377\377\375\212\377\377\377\215\214\306>\1\250\325p\216\377\377" \
-  "\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343" \
-  "\361\316\220\377\377\377\5\350\365\333\214\306>\214\305@\214\306>\215" \
-  "\306A\221\214\306>\3\215\305>\214\306>\305\342\240\215\377\377\377\7" \
-  "\377\377\375\277\337\224\212\306@\215\305@\212\307>\215\306A\215\307" \
-  "\77\203\214\306>\202\215\307\77\203\214\306>\3\214\306<\214\306>\351" \
-  "\363\330\202\377\377\377\3\376\376\376\374\377\377\376\377\377\211\377" \
-  "\377\377\1\376\377\377\202\377\377\377\7\375\376\377\351\365\337\223" \
-  "\311M\215\307=\214\305B\214\305@\215\307\77\202\214\306>\12\215\306A" \
-  "\214\305@\214\306>\212\307>\215\306A\214\306>\215\307=\213\310\77\316" \
-  "\345\255\376\377\377\221\377\377\377\7\376\377\377\377\377\375\300\337" \
-  "\223\216\306A\213\305=\215\307=\215\305>\202\214\306>\1\215\307\77\203" \
-  "\214\306>\202\214\305@\5\215\307\77\213\307A\251\322r\377\377\377\377" \
-  "\377\375\202\377\377\377\14\377\376\377\377\377\377\305\342\237\212\307" \
-  "<\220\305\77\214\306>\212\306@\215\306A\214\306<\214\305@\214\306<\216" \
-  "\305C\202\214\306>\7\215\305<\214\306>\215\305>\214\305@\342\362\316" \
-  "\377\377\377\377\377\375\202\377\377\377\3\376\377\377\377\376\377\376" \
-  "\376\376\221\377\377\377\3\376\376\376\377\377\377___\205::<\4;;=FFH" \
-  "\363\363\363\377\377\377\202\376\376\376\246\377\377\377\3\363\363\363" \
-  "SSU;;=\204::<\4;;=\345\345\345\377\377\377\376\376\376\213\377\377\377" \
-  "\1\316\316\316\205::<\1kkm\211\377\377\377\1\376\376\376\203\377\377" \
-  "\377\4\264\264\266;;=99;::<\202;;=\3::<GGI\332\332\332\206\377\377\377" \
-  "\1\376\376\376\215\377\377\377\1\376\376\376\203\377\377\377\3\234\234" \
-  "\236::<;;=\204::<\2\346\346\346\376\376\376\202\377\377\377\1\376\376" \
-  "\376\202\377\377\377\202\376\376\376\220\377\377\377\1\376\376\376\204" \
-  "\377\377\377\2\376\376\376\317\317\317\204::<\3;;=::<\265\265\265\217" \
-  "\377\377\377\1\234\234\236\205::<\1\234\234\234\235\377\377\377\1\376" \
-  "\376\376\203\377\377\377\2\363\363\363TTV\203::<\5;;=99;::<\235\235\235" \
-  "\376\376\376\215\377\377\377\1\234\234\234\205::<\1\234\234\236\266\377" \
-  "\377\377\3\214\305@\214\306>\214\305@\204\214\306>\2\212\306@\213\310" \
-  "\77\202\214\305@\3\215\307\77\214\306<\251\323o\231\377\377\377\4\377" \
-  "\376\377\377\377\375\377\377\377\376\376\377\214\377\377\377\215\214" \
-  "\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305" \
-  "@\211\214\306>\2\214\305@\343\361\316\215\377\377\377\1\377\377\375\203" \
-  "\377\377\377\4\323\353\267\212\307<\214\306<\212\306B\221\214\306>\3" \
-  "\215\305>\214\306>\305\342\240\214\377\377\377\7\376\377\377\377\376" \
-  "\377\350\365\331\215\307\77\215\305>\214\306>\212\307>\202\214\306>\1" \
-  "\215\307\77\205\214\306>\11\215\307\77\213\304A\212\307>\222\312M\343" \
-  "\361\316\376\376\377\377\376\377\377\377\377\377\375\377\210\377\377" \
-  "\377\1\377\376\377\202\377\377\375\12\377\376\377\350\364\334\220\313" \
-  "K\216\306=\215\305<\215\307\77\214\306>\213\305=\214\306>\215\306A\202" \
-  "\214\306>\1\214\305@\202\212\307>\6\214\305@\215\306C\215\305>\360\370" \
-  "\351\377\377\373\376\377\377\221\377\377\377\7\345\360\322\215\305@\214" \
-  "\305@\215\307=\214\304=\213\310=\215\305>\202\214\306>\2\213\305=\215" \
-  "\307\77\202\214\305@\7\215\307\77\214\307;\214\305@\363\367\346\376\377" \
-  "\377\377\377\373\377\376\377\202\377\377\377\30\376\377\375\377\376\377" \
-  "\241\321a\216\306\77\212\306@\213\310=\215\305@\213\307A\217\304>\215" \
-  "\305@\214\306<\216\306A\215\306A\212\307>\214\306<\214\306>\212\307<" \
-  "\233\314W\366\373\365\377\377\375\377\377\377\377\376\377\373\377\377" \
-  "\377\376\377\224\377\377\377\1\317\317\317\205::<\4;;=::<``b\362\362" \
-  "\362\247\377\377\377\2\376\376\376\221\221\221\206::<\3\204\204\206\377" \
-  "\377\377\376\376\376\214\377\377\377\1\316\316\316\205::<\1kkm\212\377" \
-  "\377\377\6\376\376\376\377\377\377\376\376\376\377\377\377\203\203\203" \
-  ";;=\205::<\3``b\363\363\363\376\376\376\216\377\377\377\1\376\376\376" \
-  "\206\377\377\377\3\363\363\363FFH;;=\203::<\2;;=\203\203\203\203\377" \
-  "\377\377\3\376\376\376\377\377\377\376\376\376\225\377\377\377\1\376" \
-  "\376\376\204\377\377\377\3kkk::<<<>\202::<\2;;=kkm\217\377\377\377\1" \
-  "\234\234\236\205::<\1\234\234\234\236\377\377\377\4\376\376\376\377\377" \
-  "\377\376\376\376kkk\202::<\5;;=::<99;;;=TTV\202\377\377\377\1\376\376" \
-  "\376\214\377\377\377\1\234\234\234\205::<\1\234\234\236\266\377\377\377" \
-  "\3\214\305@\214\306>\214\305@\204\214\306>\10\214\306<\214\306>\214\305" \
-  "@\214\306>\215\307\77\214\306>\252\324r\376\377\377\230\377\377\377\1" \
-  "\377\377\375\202\377\377\377\2\377\377\375\376\376\374\203\377\376\377" \
-  "\210\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320" \
-  "\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343\361\316\215\377" \
-  "\377\377\10\375\377\374\377\376\377\375\377\376\376\376\377\377\377\377" \
-  "\270\333\207\214\305@\215\307\77\221\214\306>\3\215\305>\214\306>\305" \
-  "\342\240\214\377\377\377\12\375\376\377\377\376\377\376\377\377\234\313" \
-  "Y\215\306A\214\305@\212\307>\214\305@\214\306>\215\307\77\206\214\306" \
-  ">\7\215\307\77\214\306>\215\305@\213\310\77\304\343\240\371\372\364\376" \
-  "\377\377\212\377\377\377\10\376\377\377\377\376\377\315\345\251\223\311" \
-  "M\214\306>\216\306\77\214\305B\214\306<\202\214\306>\15\215\306A\214" \
-  "\305@\214\306>\215\307\77\214\305@\214\306<\214\305@\215\307\77\213\304" \
-  "A\263\330{\377\377\377\376\376\376\377\377\375\220\377\377\377\7\370" \
-  "\373\364\232\315V\216\306=\212\311=\214\306>\216\306A\213\307A\202\214" \
-  "\305@\202\214\306>\202\214\305@\10\215\307\77\215\305>\215\304D\304\341" \
-  "\237\376\377\377\377\376\377\376\376\377\377\377\375\202\377\376\377" \
-  "\24\376\377\377\377\377\373\350\365\333\215\305>\214\306<\214\306>\212" \
-  "\306@\215\307\77\213\305=\215\305@\215\307\77\214\306>\215\305>\215\306" \
-  "A\211\305A\215\305@\214\305B\213\310=\262\327z\374\377\377\202\377\377" \
-  "\377\2\377\377\375\373\377\376\225\377\377\377\1\221\221\223\203::<\6" \
-  ";;=99;;;=::<``b\362\362\362\246\377\377\377\2\265\265\265:::\202::<\1" \
-  ";;=\203::<\1\346\346\350\216\377\377\377\1\316\316\316\205::<\1kkm\216" \
-  "\377\377\377\6\363\363\363__a::<;;=::<;;=\202::<\1\204\204\204\204\377" \
-  "\377\377\1\376\376\376\221\377\377\377\1\234\234\234\204::<\3;;=::<\347" \
-  "\347\347\202\377\377\377\1\376\376\376\205\377\377\377\1\376\376\376" \
-  "\225\377\377\377\3\376\376\376\377\377\377\265\265\265\202::<\202;;=" \
-  "\3::<;;=\316\316\316\216\377\377\377\1\234\234\236\205::<\1\234\234\234" \
-  "\240\377\377\377\2\204\204\204:::\206::<\1\301\301\303\217\377\377\377" \
-  "\1\234\234\234\205::<\1\234\234\236\266\377\377\377\3\214\305@\214\306" \
-  ">\214\305@\205\214\306>\7\214\305@\216\306A\215\307=\213\304\77\213\307" \
-  "A\242\321a\345\356\317\230\342\362\316\7\341\361\315\342\361\322\342" \
-  "\361\320\343\361\315\345\360\322\365\373\357\376\377\377\211\377\377" \
-  "\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214\306" \
-  ">\1\214\305@\211\214\306>\2\214\305@\343\361\316\216\377\377\377\7\376" \
-  "\377\375\377\377\375\377\377\377\377\376\377\371\374\365\242\322d\215" \
-  "\306A\221\214\306>\3\215\305>\214\306>\305\342\240\214\377\377\377\10" \
-  "\377\377\375\377\377\377\377\377\373\312\346\253\215\307=\212\307>\214" \
-  "\305B\216\306=\206\214\306>\202\214\305@\10\214\306>\212\307>\216\306" \
-  "\77\214\306>\212\307>\233\316W\306\340\237\361\370\346\210\377\377\377" \
-  "\12\361\370\350\314\345\253\233\314W\214\306>\213\310\77\215\305<\214" \
-  "\305@\212\307<\215\306A\214\305@\203\214\306>\202\214\305@\202\214\306" \
-  ">\4\216\306A\212\306@\213\310\77\333\356\301\202\377\377\377\1\377\377" \
-  "\375\220\377\377\377\26\270\332\204\215\306A\212\306B\214\306>\213\307" \
-  "A\215\305@\214\306<\214\306>\215\306A\214\306<\215\307\77\214\305B\215" \
-  "\307\77\214\307;\215\304D\241\323b\377\377\375\376\377\377\377\377\377" \
-  "\377\377\373\377\377\377\376\377\377\202\377\377\375\16\377\377\377\376" \
-  "\377\377\277\337\224\214\305@\215\306A\214\306>\215\305>\212\310\77\214" \
-  "\305@\215\307\77\212\307>\214\305B\216\306=\215\306A\202\214\306<\6\214" \
-  "\306>\213\307C\331\356\305\377\376\377\377\377\373\376\376\376\227\377" \
-  "\377\377\3__a::<;:\77\205::<\2__a\363\363\363\203\377\377\377\1\376\376" \
-  "\376\213\377\377\377\1\376\376\376\203\377\377\377\3\376\376\376\377" \
-  "\377\377\376\376\376\213\377\377\377\1\376\376\376\202\377\377\377\1" \
-  "\265\265\267\205::<\3;;=:::\234\234\234\217\377\377\377\1\316\316\316" \
-  "\205::<\1kkm\217\377\377\377\4\332\332\332GGI::<;;=\204::<\1\250\250" \
-  "\252\225\377\377\377\1FFH\205::<\1\204\204\204\242\377\377\377\1TTV\205" \
-  "::<\4lln\376\376\376\377\377\377\376\376\376\203\377\377\377\1\376\376" \
-  "\376\207\377\377\377\1\234\234\236\205::<\1\235\235\237\221\377\377\377" \
-  "\1\376\376\376\202\377\377\377\1\376\376\376\202\377\377\377\202\376" \
-  "\376\376\205\377\377\377\3\363\363\365\204\204\206;;=\204::<\3;;=:::" \
-  "xxx\220\377\377\377\1\234\234\234\203::<\3;;=::<\234\234\234\204\377" \
-  "\377\377\1\376\376\376\261\377\377\377\3\214\305@\214\306>\214\305@\250" \
-  "\214\306>\2\215\307\77\342\362\316\212\377\377\377\215\214\306>\1\250" \
-  "\325p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306" \
-  ">\2\214\305@\343\361\316\216\377\377\377\11\375\376\377\377\376\377\377" \
-  "\377\375\376\377\377\377\376\377\351\365\335\223\311M\212\307<\214\306" \
-  ">\202\216\306A\4\212\307<\215\306A\215\305>\215\307\77\211\214\306>\3" \
-  "\215\305>\214\306>\305\342\240\214\377\377\377\20\377\376\377\377\377" \
-  "\375\377\376\377\365\374\364\223\312J\217\304>\215\307\77\212\307;\215" \
-  "\306A\214\305B\214\305@\215\307\77\214\306<\213\310\77\214\305@\215\305" \
-  ">\210\214\306>\10\234\315Z\257\327~\304\343\235\306\340\237\307\341\240" \
-  "\304\343\237\257\327\177\241\321a\210\214\306>\20\217\304>\215\306A\212" \
-  "\306@\212\307>\213\305;\216\306A\213\305=\215\306C\211\310<\216\306A" \
-  "\214\306>\234\314V\377\377\377\375\377\374\376\377\377\377\376\377\211" \
-  "\377\377\377\7\377\376\377\376\377\375\376\377\377\376\377\375\377\376" \
-  "\377\377\377\377\333\355\303\210\214\306>\10\215\306A\214\305@\216\306" \
-  "=\214\306>\215\307\77\214\305@\215\307\77\352\364\334\211\377\377\377" \
-  "\6\377\376\377\367\375\363\232\315V\215\307\77\214\306>\214\305@\212" \
-  "\214\306>\6\212\307>\223\311M\366\373\364\377\376\377\377\377\377\376" \
-  "\377\373\221\377\377\377\1\376\376\376\204\377\377\377\2\346\346\346" \
-  "FFH\203::<\1""99;\203::<\2__a\332\332\332\211\377\377\377\1\376\376\376" \
-  "\203\377\377\377\1\376\376\376\205\377\377\377\1\376\376\376\206\377" \
-  "\377\377\1\376\376\376\207\377\377\377\1\265\265\267\202::<\1;;=\204" \
-  "::<\2```\376\376\376\217\377\377\377\1\316\316\316\205::<\1kkm\216\377" \
-  "\377\377\4\376\376\376\377\377\377\301\301\301;;=\205::<\2;;=\331\331" \
-  "\331\202\377\377\377\3\376\376\376\377\377\377\376\376\376\216\377\377" \
-  "\377\1\265\265\267\205::<\3;;=\332\332\332\376\376\376\241\377\377\377" \
-  "\1\266\266\270\205::<\2""99;\316\316\320\215\377\377\377\1\234\234\236" \
-  "\203::<\5;;=::<\234\234\234\377\377\377\376\376\376\220\377\377\377\1" \
-  "\376\376\376\206\377\377\377\1\376\376\376\203\377\377\377\2\346\346" \
-  "\346``b\202::<\2""99;;;=\203::<\4FFF\363\363\363\377\377\377\376\376" \
-  "\376\216\377\377\377\1\234\234\234\204::<\3;;=\234\234\234\376\376\376" \
-  "\265\377\377\377\3\214\305@\214\306>\214\305@\250\214\306>\2\215\307" \
-  "\77\342\362\316\212\377\377\377\215\214\306>\1\250\325p\216\377\377\377" \
-  "\1\342\361\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343\361" \
-  "\316\215\377\377\377\16\377\376\377\376\377\377\377\376\377\377\377\377" \
-  "\376\377\377\377\376\377\375\377\374\323\353\267\215\305<\215\306C\215" \
-  "\305<\213\306:\213\310\77\212\306@\202\214\305@\211\214\306>\3\215\305" \
-  ">\214\306>\305\342\240\215\377\377\377\4\376\377\377\377\377\375\377" \
-  "\376\377\305\342\242\202\214\305@\5\216\306A\214\306>\215\307=\215\307" \
-  "\77\213\304A\202\214\305@\2\214\306>\212\306@\210\214\306>\7\214\306" \
-  "<\215\307=\215\307\77\213\305=\214\306>\215\307\77\213\305=\211\214\306" \
-  ">\11\215\306A\215\305>\212\307;\213\304\77\215\306A\211\306=\215\306" \
-  "A\212\307<\216\306A\202\215\307\77\4\343\361\320\376\377\375\377\377" \
-  "\375\376\376\377\212\377\377\377\1\377\376\377\202\377\377\377\4\377" \
-  "\376\377\376\377\377\367\375\363\225\311J\210\214\306>\10\215\307=\213" \
-  "\310\77\214\305@\216\306\77\214\305@\212\307>\307\341\240\376\377\375" \
-  "\210\377\377\377\5\377\376\377\374\377\375\377\376\377\343\361\320\212" \
-  "\306@\202\214\306>\1\213\310\77\210\214\306>\10\215\306A\215\305>\214" \
-  "\305@\260\327z\377\376\374\374\377\377\377\377\377\377\376\377\226\377" \
-  "\377\377\1\332\332\332\210::<\2GGI\250\250\250\223\377\377\377\3\376" \
-  "\376\376\377\377\377\376\376\376\202\377\377\377\1\376\376\376\202\377" \
-  "\377\377\1\376\376\376\204\377\377\377\2\250\250\252;;=\204::<\202;;" \
-  "=\2EEG\331\331\331\220\377\377\377\1\316\316\316\205::<\1kkm\221\377" \
-  "\377\377\5\222\222\224::<;;=::<;;=\202::<\5SSU\364\364\364\376\376\376" \
-  "\377\377\377\376\376\376\216\377\377\377\2\376\376\376TTV\203::<\4;;" \
-  "=99;lln\376\376\376\243\377\377\377\1TTV\204::<\5;;=\204\204\206\376" \
-  "\376\376\377\377\377\376\376\376\212\377\377\377\1\234\234\236\202::" \
-  "<\1;;=\202::<\1\234\234\234\215\377\377\377\1\376\376\376\202\377\377" \
-  "\377\1\376\376\376\212\377\377\377\6\376\376\376\250\250\252FFH99;::" \
-  "<;;=\205::<\1\316\316\316\221\377\377\377\1\234\234\234\203::<\3;;=:" \
-  ":<\234\234\236\266\377\377\377\3\214\305@\214\306>\214\305@\250\214\306" \
-  ">\2\215\307\77\342\362\316\212\377\377\377\215\214\306>\1\250\325p\216" \
-  "\377\377\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306>\2\214" \
-  "\305@\343\361\316\215\377\377\377\3\377\376\377\376\377\375\376\377\377" \
-  "\202\377\377\377\13\377\377\375\377\376\377\376\376\374\271\332\211\215" \
-  "\306A\211\306;\216\306A\212\307>\213\307A\215\306A\212\307>\211\214\306" \
-  ">\3\215\305>\214\306>\305\342\240\214\377\377\377\20\376\377\375\377" \
-  "\377\377\377\377\375\377\377\377\371\370\364\233\316U\214\306>\214\305" \
-  "@\215\306A\214\306>\214\305@\215\307=\214\306>\215\305@\215\304B\213" \
-  "\310=\210\214\306>\3\215\305@\214\306>\213\305=\202\213\310\77\3\214" \
-  "\306>\215\307\77\215\305@\210\214\306>\20\212\306@\212\307;\216\306\77" \
-  "\215\307\77\212\306@\214\306<\215\305>\215\307\77\220\305\77\211\307" \
-  ">\263\330{\377\376\377\377\377\375\376\377\377\377\377\377\376\376\376" \
-  "\211\377\377\377\7\377\377\373\377\377\377\377\375\376\377\377\377\377" \
-  "\377\375\257\330|\213\310\77\211\214\306>\6\215\306C\211\306=\214\305" \
-  "@\214\306>\242\322e\377\377\375\212\377\377\377\7\376\377\377\377\377" \
-  "\375\377\375\376\277\337\224\216\307B\212\307>\214\305@\210\214\306>" \
-  "\2\214\305@\216\306\77\202\212\307>\4\332\360\302\376\376\374\376\376" \
-  "\376\377\376\377\227\377\377\377\1\266\266\266\202::<\1;;=\202::<\2;" \
-  ";=::<\202;;=\2kkm\346\346\350\202\377\377\377\1\376\376\376\207\377\377" \
-  "\377\1\376\376\376\203\377\377\377\5\376\376\376\377\377\377\376\376" \
-  "\376\377\377\377\376\376\376\202\377\377\377\3\376\376\376\377\377\377" \
-  "\376\376\376\204\377\377\377\2\364\364\364yy{\203::<\2;;=99;\203::<\3" \
-  "\265\265\267\377\377\377\376\376\376\217\377\377\377\1\316\316\316\205" \
-  "::<\1kkm\222\377\377\377\1kkm\203::<\1;;=\202::<\5kkm\377\377\377\376" \
-  "\376\376\377\377\377\376\376\376\212\377\377\377\5\376\376\376\377\377" \
-  "\377\376\376\376\265\265\267;;=\204::<\2;;=\315\315\315\244\377\377\377" \
-  "\11\234\234\234::<99;;;=::<;;=::<\347\347\347\376\376\376\213\377\377" \
-  "\377\1\234\234\236\204::<\2;;=\233\233\233\217\377\377\377\1\376\376" \
-  "\376\206\377\377\377\6\376\376\376\377\377\377\376\376\376\377\377\377" \
-  "\265\265\265TTT\202::<\202;;=\203::<\3;;=::<\266\266\270\202\377\377" \
-  "\377\1\376\376\376\217\377\377\377\1\234\234\234\204::<\4;;=\235\235" \
-  "\237\377\377\377\376\376\376\224\377\377\377\1\376\376\376\203\377\377" \
-  "\377\1\376\376\376\233\377\377\377\3\214\305@\214\306>\214\305@\250\214" \
-  "\306>\2\215\307\77\342\362\316\212\377\377\377\215\214\306>\1\250\325" \
-  "p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306>" \
-  "\2\214\305@\343\361\316\215\377\377\377\202\377\377\375\16\377\377\377" \
-  "\377\377\375\377\377\377\376\377\375\376\376\374\377\376\377\375\377" \
-  "\376\241\322_\215\306A\212\306B\215\305>\215\307\77\214\306<\214\305" \
-  "B\211\214\306>\3\215\305>\214\306>\305\342\240\214\377\377\377\1\377" \
-  "\376\377\202\377\377\375\15\376\377\377\377\375\376\340\361\317\214\306" \
-  ">\212\307>\214\306>\215\307\77\214\306>\212\307<\215\307\77\215\305>" \
-  "\216\306=\213\305=\210\214\306>\1\212\307>\202\214\305@\202\214\306>" \
-  "\3\214\305@\215\306A\212\307>\210\214\306>\20\212\307>\213\304\77\214" \
-  "\306>\211\310<\214\306>\216\306A\212\306@\215\305@\214\306>\223\313N" \
-  "\367\372\363\376\377\377\377\377\377\377\376\377\376\377\373\377\376" \
-  "\377\212\377\377\377\202\376\377\377\3\377\375\376\324\353\265\215\306" \
-  "A\211\214\306>\7\215\305>\213\305=\215\307\77\215\306A\212\307>\351\363" \
-  "\333\377\377\375\211\377\377\377\10\377\376\377\375\377\376\376\377\377" \
-  "\377\376\377\370\373\362\233\314W\215\307\77\215\305<\210\214\306>\1" \
-  "\215\307\77\202\214\306>\4\214\306<\225\310O\360\366\350\377\376\377" \
-  "\221\377\377\377\3\376\376\376\377\377\377\376\376\376\205\377\377\377" \
-  "\1\266\266\266\202::<\4;;=99;::<;;=\202::<\4;;=::<\204\204\206\346\346" \
-  "\350\207\377\377\377\1\376\376\376\206\377\377\377\202\376\376\376\202" \
-  "\377\377\377\1\376\376\376\203\377\377\377\1\376\376\376\202\377\377" \
-  "\377\3\251\251\251FFF99;\202::<\1""99;\202::<\5;;=::<\234\234\236\377" \
-  "\377\377\376\376\376\220\377\377\377\1\316\316\316\205::<\1kkm\222\377" \
-  "\377\377\11\363\363\363GGI99;::<99;;;=::<;;=\234\234\234\214\377\377" \
-  "\377\1\376\376\376\203\377\377\377\1SSU\202::<\1;;=\202::<\1kkm\245\377" \
-  "\377\377\5\362\362\362GGI;;=::<;;=\202::<\1\204\204\206\206\377\377\377" \
-  "\1\376\376\376\205\377\377\377\1\234\234\236\203::<\3""99;::<\234\234" \
-  "\234\223\377\377\377\1\376\376\376\203\377\377\377\3\331\331\331\222" \
-  "\222\222SSU\203::<\2;;=::<\202;;=\4::<;;=::<\265\265\267\202\377\377" \
-  "\377\1\376\376\376\203\377\377\377\1\376\376\376\214\377\377\377\1\234" \
-  "\234\234\205::<\1\234\234\236\203\377\377\377\1\376\376\376\223\377\377" \
-  "\377\1\376\376\376\236\377\377\377\3\214\305@\214\306>\214\305@\250\214" \
-  "\306>\2\215\307\77\342\362\316\212\377\377\377\215\214\306>\1\250\325" \
-  "p\216\377\377\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306>" \
-  "\2\214\305@\343\361\316\216\377\377\377\17\377\376\377\377\377\377\376" \
-  "\376\376\377\376\377\377\377\375\376\377\377\375\377\376\377\377\377" \
-  "\363\367\350\222\312K\214\305@\213\310\77\214\304\77\215\307\77\216\306" \
-  "A\211\214\306>\3\215\305>\214\306>\305\342\240\214\377\377\377\14\377" \
-  "\376\377\376\377\375\376\377\377\377\376\377\376\377\377\376\377\375" \
-  "\307\342\237\214\305@\214\306<\215\304D\214\306>\214\305D\202\212\307" \
-  "<\2\212\307>\213\307A\210\214\306>\3\215\307\77\214\306>\215\307\77\202" \
-  "\214\305@\213\214\306>\12\213\305;\215\306A\212\306@\214\306>\213\307" \
-  "C\212\307>\215\305>\212\307>\215\305>\333\356\301\202\377\377\377\3\377" \
-  "\377\375\377\377\377\377\376\377\211\377\377\377\10\376\377\375\377\377" \
-  "\375\376\377\375\374\377\375\362\371\347\225\311M\215\307\77\215\305" \
-  "<\210\214\306>\2\214\305@\216\306=\202\212\306@\2\305\342\237\377\375" \
-  "\376\212\377\377\377\1\376\376\374\203\377\377\377\4\376\376\376\337" \
-  "\363\316\215\306C\215\305<\211\214\306>\1\215\307\77\202\214\305@\4\214" \
-  "\306<\253\324n\375\377\374\377\377\375\224\377\377\377\1\376\376\376" \
-  "\204\377\377\377\2\301\301\301FFH\202::<\2;;=99;\202;;=\2::<;;=\202:" \
-  ":<\2\204\204\206\316\316\320\207\377\377\377\1\376\376\376\203\377\377" \
-  "\377\1\376\376\376\206\377\377\377\6\376\376\376\377\377\377\364\364" \
-  "\364\265\265\267SSU::<\202;;=\202::<\5;;=::<;;=::<\204\204\204\223\377" \
-  "\377\377\1\316\316\316\205::<\1kkm\223\377\377\377\11\315\315\315;;=" \
-  "::<;;=::<;;=::<99;\302\302\302\216\377\377\377\5\301\301\303::<;;=::" \
-  "<;;=\202::<\2\316\316\316\377\377\377\202\376\376\376\241\377\377\377" \
-  "\14\376\376\376\377\377\377\234\234\234;;=::<;;=::<;;=::<\347\347\351" \
-  "\377\377\377\376\376\376\211\377\377\377\1\234\234\236\203::<\3;;=::" \
-  "<\234\234\236\216\377\377\377\202\376\376\376\1\377\377\377\202\316\316" \
-  "\316\6\250\250\250\234\234\234jjjFFF;;=99;\202;;=\2::<;;=\202::<\5<<" \
-  ">99;;;=::<\265\265\267\204\377\377\377\1\376\376\376\217\377\377\377" \
-  "\1\234\234\234\204::<\2;;=\234\234\236\202\377\377\377\1\376\376\376" \
-  "\223\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\234\377" \
-  "\377\377\3\214\305@\214\306>\214\305@\250\214\306>\2\215\307\77\342\362" \
-  "\316\212\377\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361" \
-  "\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343\361\316\215" \
-  "\377\377\377\202\377\376\377\16\377\377\375\376\377\377\377\377\377\377" \
-  "\377\375\377\376\377\376\376\376\377\376\377\377\377\377\333\354\302" \
-  "\212\307>\213\310\77\214\306<\213\310=\215\305@\211\214\306>\3\215\305" \
-  ">\214\306>\305\342\240\214\377\377\377\1\377\376\377\202\376\377\377" \
-  "\202\377\377\375\13\376\377\377\377\375\376\271\333\205\215\305>\214" \
-  "\306>\212\307>\214\306>\215\306A\214\306>\212\306@\214\305@\210\214\306" \
-  ">\3\214\305@\215\307\77\214\306>\202\212\307>\3\214\306>\215\307\77\215" \
-  "\306A\210\214\306>\4\216\306A\211\306=\214\306<\216\306A\202\212\307" \
-  ">\202\215\306A\10\322\352\270\377\377\375\376\376\374\377\377\377\376" \
-  "\377\377\377\376\377\377\377\375\376\377\377\210\377\377\377\10\377\377" \
-  "\375\377\377\377\377\376\377\374\376\373\250\325n\216\306\77\212\307" \
-  ">\214\305B\210\214\306>\202\212\307>\6\214\305@\242\322d\376\376\374" \
-  "\377\377\375\375\377\376\377\376\377\210\377\377\377\10\376\377\377\377" \
-  "\377\375\377\375\376\377\377\375\375\376\377\376\377\375\270\333\207" \
-  "\211\310<\210\214\306>\10\214\304=\216\307B\214\306>\212\307>\216\306" \
-  "A\215\307\77\313\350\250\376\376\377\221\377\377\377\1\376\376\376\203" \
-  "\377\377\377\1\376\376\376\204\377\377\377\7\332\332\332RRT;;=::<;;=" \
-  "::<;;=\202::<\1;;=\203::<\3RRT\221\221\223\317\317\321\214\377\377\377" \
-  "\11\376\376\376\377\377\377\364\364\364\301\301\301\204\204\206EEG;;" \
-  "=99;;;=\204::<\1""99;\202::<\1\251\251\251\207\377\377\377\1\376\376" \
-  "\376\214\377\377\377\1\316\316\316\205::<\1kkm\224\377\377\377\1\247" \
-  "\247\247\203::<\5;;=::<;;=FFH\345\345\345\214\377\377\377\2\376\376\376" \
-  "kkm\205::<\1SSU\202\377\377\377\1\376\376\376\244\377\377\377\2\363\363" \
-  "\363FFH\204::<\2;;=\221\221\223\213\377\377\377\1\234\234\236\204::<" \
-  "\4;;=SSUkkmlln\213kkm\5;;=::<;;=::<;;=\204::<\2;;=99;\202;;=\2::<;;=" \
-  "\202::<\7;;=99;::<FFH\301\301\301\377\377\377\376\376\376\223\377\377" \
-  "\377\1\234\234\234\205::<\1SSU\202kkm\1lln\223kkm\1lln\205kkm\1\332\332" \
-  "\334\231\377\377\377\3\214\305@\214\306>\214\305@\250\214\306>\2\215" \
-  "\307\77\342\362\316\212\377\377\377\215\214\306>\1\250\325p\216\377\377" \
-  "\377\1\342\361\320\202\214\306>\1\214\305@\211\214\306>\2\214\305@\343" \
-  "\361\316\215\377\377\377\1\377\376\377\202\377\377\375\202\377\377\377" \
-  "\202\377\376\377\11\377\377\375\377\377\377\376\377\377\377\376\377\276" \
-  "\336\223\214\306<\213\310\77\214\304=\215\306A\211\214\306>\3\215\305" \
-  ">\214\306>\305\342\240\214\377\377\377\20\377\377\375\376\377\375\376" \
-  "\376\376\377\376\377\375\377\376\377\375\377\376\377\377\376\377\375" \
-  "\270\333\207\217\305<\212\307>\214\305@\216\306\77\213\305=\214\305@" \
-  "\216\306=\211\214\306>\2\215\306A\215\305@\202\216\306\77\3\215\305@" \
-  "\214\305@\215\307\77\210\214\306>\13\213\305=\215\306A\215\305>\212\306" \
-  "@\215\305>\215\306A\220\305A\323\352\266\376\377\375\377\376\377\377" \
-  "\377\375\202\377\377\377\3\376\377\377\377\375\377\376\377\375\213\377" \
-  "\377\377\5\316\347\256\212\307>\213\305;\216\306A\212\307<\210\214\306" \
-  ">\10\212\307>\216\306\77\215\305>\350\364\336\377\376\377\376\376\374" \
-  "\377\377\377\377\376\377\210\377\377\377\1\377\376\377\202\377\377\377" \
-  "\5\377\376\377\376\377\375\377\376\377\370\373\360\225\311K\210\214\306" \
-  ">\10\216\306=\214\305@\215\310<\212\307>\214\306>\214\305@\223\312J\356" \
-  "\371\350\231\377\377\377\4\376\376\376\377\377\377\363\363\363xxz\202" \
-  "::<\1""99;\202::<\1;;=\203::<\202;;=\203::<\4__a\205\205\205\234\234" \
-  "\234\250\250\250\205\316\316\316\4\250\250\250\234\234\234xxx___\202" \
-  "::<\3""99;;;=99;\203::<\1;;=\203::<\2FFH\265\265\265\205\377\377\377" \
-  "\1\376\376\376\217\377\377\377\1\316\316\316\205::<\1kkm\225\377\377" \
-  "\377\3xxx::<;;=\204::<\1```\213\377\377\377\4\376\376\376\317\317\317" \
-  "::<;;=\204::<\1\266\266\270\203\377\377\377\1\376\376\376\241\377\377" \
-  "\377\1\377\377\375\202\377\377\377\1\204\204\206\202::<\1;;=\202::<\2" \
-  "GGI\363\363\363\212\377\377\377\1\234\234\236\203::<\1;;=\202::<\1;;" \
-  "=\221::<\1;;=\207::<\1;;=\202::<\1;;=\202::<\2``b\346\346\350\210\377" \
-  "\377\377\1\376\376\376\215\377\377\377\1\234\234\234\207::<\3;;=::<;" \
-  ";=\221::<\1;;=\203::<\1;;=\202::<\1\316\316\320\231\377\377\377\3\214" \
-  "\305@\214\306>\214\305@\250\214\306>\2\215\307\77\342\362\316\212\377" \
-  "\377\377\215\214\306>\1\250\325p\216\377\377\377\1\342\361\320\202\214" \
-  "\306>\1\214\305@\211\214\306>\2\214\305@\343\361\316\215\377\377\377" \
-  "\7\377\377\375\376\377\375\377\377\377\377\376\377\376\376\374\376\377" \
-  "\377\377\377\377\202\376\377\377\202\377\377\375\4\377\377\377\242\320" \
-  "d\211\306=\215\305@\212\214\306>\3\215\305>\214\306>\305\342\240\214" \
-  "\377\377\377\6\377\376\377\377\377\377\377\377\375\377\375\377\376\377" \
-  "\372\375\376\377\202\377\377\377\10\376\377\377\304\343\240\215\305@" \
-  "\214\306>\216\306A\215\307\77\212\307>\215\307\77\212\214\306>\3\215" \
-  "\307\77\214\306>\214\305@\202\215\307\77\211\214\306>\12\215\306C\212" \
-  "\307<\215\307\77\215\305@\213\310\77\215\306A\323\352\266\377\376\377" \
-  "\377\377\377\376\377\377\204\377\377\377\2\377\377\375\377\376\377\210" \
-  "\377\377\377\10\376\377\377\377\376\377\361\370\346\225\311K\212\307" \
-  ">\215\306A\214\305@\215\305>\210\214\306>\3\214\305@\214\306>\307\341" \
-  "\240\203\376\377\377\2\377\377\375\376\377\377\210\377\377\377\5\376" \
-  "\377\377\377\376\372\376\377\375\376\376\376\377\377\377\202\377\376" \
-  "\377\1\334\355\301\210\214\306>\10\215\306A\213\310\77\215\305@\214\306" \
-  ">\214\306<\215\306A\214\306>\254\322o\232\377\377\377\6\376\376\376\377" \
-  "\377\377\376\376\376\302\302\302FFH;;=\206::<\1;;=\202::<\202;;=\203" \
-  "::<\1;;=\204::<\3;;=::<;;=\202::<\1;;=\202::<\1;;=\203::<\2;;=::<\202" \
-  ";;=\2__a\332\332\332\226\377\377\377\3\316\316\316::<;;=\203::<\1kkm" \
-  "\222\377\377\377\7\376\376\376\377\377\377\376\376\376\363\363\363__" \
-  "a::<;;=\204::<\1\203\203\203\202\377\377\377\2\376\376\376\377\377\377" \
-  "\202\376\376\376\205\377\377\377\1kkm\202::<\1;;=\202::<\5TTV\377\377" \
-  "\377\376\376\376\377\377\377\376\376\376\245\377\377\377\2\347\347\347" \
-  "99;\202::<\1;;=\202::<\1\235\235\237\206\377\377\377\1\376\376\376\202" \
-  "\377\377\377\2\376\376\376\234\234\234\224::<\1;;=\202::<\3""99;::<;" \
-  ";=\204::<\1;;=\204::<\3;;=GGI\250\250\252\230\377\377\377\2\234\234\236" \
-  ";;=\232::<\10;;=99;;;=::<;;=::<:::\316\316\316\230\377\377\377\10\377" \
-  "\376\377\212\306@\214\305@\213\310=\214\306<\215\306A\214\307;\215\306" \
-  "A\240\214\306>\10\214\305@\212\307<\214\306<\214\305@\212\306@\342\360" \
-  "\315\376\377\377\377\376\377\210\377\377\377\212\214\306>\4\216\306\77" \
-  "\212\306B\214\306>\250\325n\202\377\376\377\210\377\377\377\1\377\376" \
-  "\377\202\377\377\377\5\376\377\375\342\362\316\214\305B\215\305@\214" \
-  "\306<\210\214\306>\202\212\307>\5\343\361\320\377\377\377\377\377\375" \
-  "\376\377\377\377\376\377\223\377\377\377\6\377\376\377\377\377\375\371" \
-  "\372\364\223\312J\212\306@\215\305@\210\214\306>\10\214\305@\215\305" \
-  ">\212\307>\304\343\240\377\377\375\377\377\377\377\377\375\377\376\377" \
-  "\220\377\377\377\11\376\377\377\377\377\377\333\355\303\226\310K\213" \
-  "\310\77\214\306>\215\305@\215\306A\214\305@\203\214\306>\7\215\305>\215" \
-  "\305@\214\305@\212\307>\215\305>\215\307\77\215\306A\202\214\306<\5\215" \
-  "\306A\213\305=\215\305@\215\307\77\213\305;\202\215\305@\13\215\307\77" \
-  "\213\310\77\214\305@\215\307\77\212\307>\215\305>\214\306>\212\306@\235" \
-  "\315U\347\365\334\377\376\377\220\377\377\377\15\376\376\376\377\377" \
-  "\375\377\377\377\244\317c\213\307A\214\306<\213\307A\215\305>\215\305" \
-  "<\215\307\77\214\306<\215\307\77\214\305@\202\215\307\77\12\214\305@" \
-  "\215\306A\215\305@\234\315W\367\375\363\377\376\377\376\377\377\377\377" \
-  "\375\376\377\377\377\376\377\220\377\377\377\10\260\331{\215\307=\212" \
-  "\307>\213\307A\214\306>\215\305@\215\307\77\215\305>\210\214\306>\3\314" \
-  "\345\253\377\377\377\376\377\375\202\377\376\377\2\377\377\377\376\377" \
-  "\377\222\377\377\377\3\376\376\376\377\377\377\376\376\376\202\377\377" \
-  "\377\3\364\364\364\220\220\220;;=\211::<\2;;=::<\202;;=\2::<;;=\202:" \
-  ":<\4;;=::<;;=99;\203::<\2;;=99;\206::<\2GGI\247\247\251\203\377\377\377" \
-  "\1\376\376\376\222\377\377\377\6\376\376\376\377\377\377\316\316\316" \
-  ";;=99;;;=\202::<\2lln\376\376\376\202\377\377\377\1\376\376\376\221\377" \
-  "\377\377\4\376\376\376\333\333\333FFH;;=\202::<\1;;=\202::<\1\265\265" \
-  "\265\202\377\377\377\1\376\376\376\202\377\377\377\5\376\376\376\377" \
-  "\377\377\376\376\376\377\377\377\316\316\320\202::<\2;;=99;\202;;=\1" \
-  "\264\264\266\202\377\377\377\1\376\376\376\244\377\377\377\1\376\376" \
-  "\376\202\377\377\377\1\205\205\207\204::<\3;;=FFH\363\363\363\206\377" \
-  "\377\377\1\376\376\376\202\377\377\377\3\233\233\233::<;;=\220::<\3""9" \
-  "9;;;=99;\202::<\1;;=\203::<\1;;=\204::<\7;;=::<SSU\250\250\252\362\362" \
-  "\364\377\377\377\376\376\376\225\377\377\377\3\376\376\376\377\377\377" \
-  "\235\235\237\202::<\1;;=\231::<\2;;=99;\204::<\1\316\316\316\230\377" \
-  "\377\377\10\377\377\373\212\311=\212\306@\216\306A\215\305>\215\307\77" \
-  "\214\306>\215\306A\240\214\306>\7\214\306<\214\306>\216\306\77\214\306" \
-  ">\214\305@\343\361\320\377\377\375\211\377\377\377\210\214\306>\10\213" \
-  "\307A\212\306@\215\305@\212\307<\215\307\77\247\324o\375\377\376\376" \
-  "\377\377\211\377\377\377\7\376\377\375\377\377\377\377\377\375\342\360" \
-  "\315\214\305@\213\305=\215\307\77\210\214\306>\10\215\305>\215\307\77" \
-  "\343\361\316\376\376\376\377\376\377\376\377\377\377\377\375\376\377" \
-  "\372\220\377\377\377\10\376\377\377\377\376\377\377\377\375\377\376\374" \
-  "\376\377\375\343\362\321\212\307>\214\307;\210\214\306>\4\215\307=\215" \
-  "\304B\213\307A\305\342\240\203\377\377\377\1\376\377\377\222\377\377" \
-  "\377\21\377\376\377\367\374\365\267\332\206\215\306A\212\306@\214\306" \
-  "<\214\306>\215\306A\215\307\77\214\306>\214\305@\212\306B\212\306@\212" \
-  "\307<\215\307\77\214\306>\214\305@\202\215\305@\5\214\305@\214\306>\214" \
-  "\305@\212\307>\215\306A\202\214\305@\11\214\307;\214\306>\215\306A\214" \
-  "\305@\215\305>\212\306@\222\311I\306\343\240\366\373\364\224\377\377" \
-  "\377\6\303\342\237\217\304@\214\306<\214\306>\215\306C\212\306B\204\214" \
-  "\305@\1\215\306A\202\214\305@\11\215\306A\214\306<\214\306>\341\361\314" \
-  "\377\377\377\376\377\375\377\377\377\377\375\377\377\377\375\221\377" \
-  "\377\377\10\370\373\364\224\307N\215\305@\215\305>\212\307<\215\306A" \
-  "\212\307<\215\306A\210\214\306>\10\215\307=\346\364\332\376\377\375\376" \
-  "\377\373\377\377\377\376\376\377\377\376\377\377\377\375\230\377\377" \
-  "\377\5\346\346\350\204\204\206GGI::<;;=\202::<\5;;=::<;;=::<;;=\202:" \
-  ":<\3;;=::<;;=\202::<\5;;=99;;;=::<;;=\207::<\3FFH\234\234\234\363\363" \
-  "\363\203\377\377\377\1\376\376\376\222\377\377\377\1\376\376\376\202" \
-  "\377\377\377\4\316\316\316::<;;=99;\202;;=\1kkm\202\377\377\377\1\376" \
-  "\376\376\220\377\377\377\1\376\376\376\202\377\377\377\5\376\376\376" \
-  "\266\266\26699;;;=::<\202;;=\3::<GGG\332\332\332\207\377\377\377\2\376" \
-  "\376\376\204\204\206\202;;=\4::<;;=::<SSU\252\377\377\377\2\376\376\376" \
-  "\346\346\350\202::<\5;;=::<99;;;;\266\266\266\203\377\377\377\1\376\376" \
-  "\376\205\377\377\377\3\235\235\235::<99;\220::<\1;;=\205::<\203;;=\1" \
-  "99;\203::<\3SSS\221\221\221\316\316\316\205\377\377\377\1\376\376\376" \
-  "\222\377\377\377\1\376\376\376\203\377\377\377\3\234\234\236::<;;=\232" \
-  "::<\7""99;::<;:\77::<;;=99;\317\317\321\230\377\377\377\7\377\375\377" \
-  "\214\306<\213\307A\215\305>\215\307\77\212\307>\216\306\77\241\214\306" \
-  ">\1\215\306C\202\215\305@\5\212\306@\215\307=\343\361\320\377\377\377" \
-  "\377\376\377\210\377\377\377\210\214\306>\10\215\305<\215\307\77\216" \
-  "\306\77\214\306>\216\305C\252\324r\377\377\377\377\377\373\211\377\377" \
-  "\377\7\375\377\376\377\377\377\377\375\376\343\361\316\215\307=\212\307" \
-  ">\215\305>\210\214\306>\10\214\305@\215\305<\342\362\316\377\377\375" \
-  "\377\376\377\375\377\374\376\376\377\376\377\377\222\377\377\377\1\375" \
-  "\377\372\202\377\377\377\3\377\376\377\304\341\237\215\307\77\210\214" \
-  "\306>\10\212\307;\215\307\77\213\305=\305\342\240\377\377\377\377\376" \
-  "\374\377\377\375\376\377\377\221\377\377\377\22\377\376\377\377\377\375" \
-  "\376\377\377\377\375\376\361\367\351\270\334\204\214\306>\215\307\77" \
-  "\214\305@\212\306@\213\307A\212\306@\213\310\77\214\306>\215\304B\214" \
-  "\306>\212\307<\214\306>\202\216\306A\6\214\306>\213\310\77\214\305@\215" \
-  "\305<\215\305>\215\307=\202\213\310\77\10\215\306A\214\306>\215\306A" \
-  "\222\311I\300\336\226\361\370\346\376\376\376\377\377\377\202\377\376" \
-  "\377\1\376\377\373\217\377\377\377\10\377\377\375\347\365\333\214\307" \
-  ";\211\305A\213\304\77\215\307\77\215\305<\213\310\77\202\214\306>\1\215" \
-  "\307\77\203\214\306>\4\215\307\77\214\306>\215\306A\275\337\223\202\377" \
-  "\377\377\5\377\376\377\377\377\377\376\377\375\377\376\377\376\377\377" \
-  "\220\377\377\377\10\375\377\376\331\357\301\215\307\77\215\305>\216\305" \
-  "C\211\306=\220\305A\211\307@\210\214\306>\10\214\305@\246\321e\377\377" \
-  "\377\377\376\377\376\377\377\377\377\375\376\377\377\377\376\377\227" \
-  "\377\377\377\1\376\376\376\202\377\377\377\3\363\363\363\266\266\270" \
-  "__a\207::<\202;;=\203::<\2;;=99;\202;;=\2""99;::<\202;;=\1::<\203;;=" \
-  "\3^^^\250\250\250\363\363\363\203\377\377\377\1\376\376\376\202\377\377" \
-  "\377\1\376\376\376\224\377\377\377\4\316\316\316999::<;;=\202::<\1ll" \
-  "l\205\377\377\377\1\376\376\376\217\377\377\377\6\376\376\376\377\377" \
-  "\377\376\376\376\204\204\204::<;;=\203::<\3:::TTT\363\363\363\206\377" \
-  "\377\377\10\347\347\347;;;99;::<;;=::<:::\234\234\236\253\377\377\377" \
-  "\3\376\376\376lln;;=\202::<\3;;=999SSS\202\377\377\377\1\376\376\376" \
-  "\203\377\377\377\4\376\376\376\377\377\377\376\376\376\234\234\234\223" \
-  "::<\1""99;\202::<\1;;=\203::<\5kkmxxz\235\235\237\301\301\301\346\346" \
-  "\346\207\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\221" \
-  "\377\377\377\1\376\376\376\202\377\377\377\3\235\235\235::<;;=\232::" \
-  "<\2;;=99;\202::<\3;;=::<\316\316\316\230\377\377\377\10\373\377\376\216" \
-  "\306A\214\306<\213\304A\212\306@\214\305@\214\304\77\215\307\77\240\214" \
-  "\306>\6\214\306<\215\306A\215\305@\216\310@\217\304@\341\361\314\212" \
-  "\377\377\377\210\214\306>\7\215\307\77\213\310\77\213\305=\215\307\77" \
-  "\214\304\77\253\323r\374\377\373\211\377\377\377\1\377\376\377\203\377" \
-  "\377\377\3\342\362\315\215\305@\215\307=\211\214\306>\10\214\306<\215" \
-  "\304B\341\363\313\374\377\375\376\376\377\377\377\377\377\375\376\377" \
-  "\377\375\221\377\377\377\7\376\377\375\376\376\377\377\377\377\375\377" \
-  "\374\377\377\377\377\377\375\253\323p\210\214\306>\5\215\307\77\215\305" \
-  ">\217\304@\305\342\237\376\377\375\202\377\377\377\1\377\377\375\220" \
-  "\377\377\377\1\376\377\377\202\377\376\377\202\376\377\375\202\377\377" \
-  "\377\5\360\370\351\311\347\247\245\320e\215\305>\212\307>\202\214\306" \
-  ">\5\215\306A\212\307>\215\305@\214\306>\214\306<\202\214\306>\2\214\306" \
-  "<\214\306>\202\216\306A\14\214\306>\215\306A\215\305<\214\306>\213\305" \
-  "=\255\331x\323\353\267\366\374\362\377\377\377\377\377\375\377\377\377" \
-  "\376\377\377\217\377\377\377\2\376\376\376\377\377\377\202\377\377\375" \
-  "\11\244\317d\214\306>\213\307A\214\306>\214\305@\214\306>\215\306A\214" \
-  "\306<\215\307\77\202\214\306>\202\214\305@\13\215\305<\215\305@\230\316" \
-  "V\370\373\360\376\377\375\377\377\377\377\376\377\376\376\376\377\377" \
-  "\375\377\376\377\376\377\377\220\377\377\377\10\376\376\376\377\376\377" \
-  "\262\327x\214\306>\216\306A\215\307=\215\305<\215\306A\211\214\306>\6" \
-  "\215\306C\307\341\240\376\377\373\376\377\377\376\377\375\376\376\374" \
-  "\236\377\377\377\4\346\346\350\266\266\270\204\204\206SSU\202::<\1;;" \
-  "=\202::<\1;;=\202::<\202;;=\3""99;::<;;=\203::<\4GGIxxz\247\247\247\347" \
-  "\347\347\212\377\377\377\1\376\376\376\223\377\377\377\1\364\364\364" \
-  "\205\316\316\316\1\332\332\332\203\377\377\377\202\376\376\376\221\377" \
-  "\377\377\1\376\376\376\202\377\377\377\202\316\316\316\203\316\316\320" \
-  "\3\316\316\316\317\317\317\346\346\346\206\377\377\377\5\346\346\346" \
-  "\316\316\316\317\317\317\316\316\316\315\315\315\202\316\316\316\1\363" \
-  "\363\363\250\377\377\377\1\376\376\376\203\377\377\377\3\346\346\346" \
-  "\315\315\315\317\317\317\202\316\316\320\3\317\317\317\315\315\315\363" \
-  "\363\363\202\377\377\377\202\376\376\376\204\377\377\377\3\346\346\346" \
-  "\316\316\316\316\316\320\224\316\316\316\1\315\315\315\203\377\377\377" \
-  "\1\376\376\376\215\377\377\377\1\376\376\376\225\377\377\377\2\346\346" \
-  "\346\317\317\317\232\316\316\316\1\317\317\317\203\316\316\316\4\317" \
-  "\317\317\315\315\315\316\316\316\363\363\363\231\377\377\377\3\340\361" \
-  "\317\342\360\317\342\362\316\202\343\361\316\2\342\360\315\343\361\316" \
-  "\240\342\361\320\10\342\362\316\342\361\320\343\363\317\341\360\317\342" \
-  "\361\320\370\373\364\376\377\375\376\377\377\210\377\377\377\210\342" \
-  "\361\320\7\341\360\317\342\362\316\343\361\316\342\360\314\342\361\320" \
-  "\350\364\336\377\376\374\211\377\377\377\10\377\376\377\377\377\375\377" \
-  "\377\377\377\377\375\370\373\362\341\360\321\340\357\316\342\362\316" \
-  "\210\342\361\320\3\342\362\316\342\361\320\371\373\360\203\377\377\377" \
-  "\202\377\376\377\220\377\377\377\4\377\377\375\376\376\376\377\376\377" \
-  "\376\377\375\203\377\377\377\1\365\375\362\210\342\361\320\4\341\360" \
-  "\321\342\361\322\343\363\317\360\367\345\224\377\377\377\7\376\377\377" \
-  "\376\377\375\377\377\375\377\376\377\377\377\375\377\375\376\377\376" \
-  "\377\202\377\377\377\30\376\376\377\364\370\351\333\354\277\277\337\224" \
-  "\247\324k\224\313K\214\305@\214\306>\212\306@\214\306>\214\305B\215\306" \
-  "C\215\307\77\212\306@\214\306>\215\307\77\241\321c\257\330|\304\342\242" \
-  "\341\361\315\377\377\377\377\376\377\376\377\373\377\377\377\202\377" \
-  "\377\375\1\377\376\377\203\377\377\377\1\376\377\377\212\377\377\377" \
-  "\1\376\376\376\203\377\377\377\13\376\376\374\372\372\370\342\361\320" \
-  "\343\361\316\342\362\316\341\360\317\342\361\320\341\360\317\342\362" \
-  "\316\342\361\322\342\361\320\202\341\361\315\6\342\361\320\341\360\317" \
-  "\343\361\315\343\361\320\356\371\350\377\376\377\203\377\377\377\1\376" \
-  "\377\375\202\377\377\377\1\376\377\375\222\377\377\377\6\366\373\364" \
-  "\342\361\320\342\362\316\342\360\317\341\362\316\343\361\320\210\342" \
-  "\361\320\10\341\362\316\341\361\315\352\364\334\377\377\377\377\376\377" \
-  "\377\377\377\376\377\377\376\377\375\222\377\377\377\202\376\376\376" \
-  "\202\377\377\377\1\376\376\376\202\377\377\377\1\376\376\376\202\377" \
-  "\377\377\3\376\376\376\377\377\377\375\375\375\202\377\377\377\5\363" \
-  "\363\363\316\316\316\264\264\264\235\235\235\233\233\233\202kkk\202k" \
-  "km\3llnkkmyy{\202\234\234\236\6\316\316\320\346\346\346\377\377\377\376" \
-  "\376\376\377\377\377\376\376\376\204\377\377\377\1\376\376\376\204\377" \
-  "\377\377\1\376\376\376\240\377\377\377\1\376\376\376\231\377\377\377" \
-  "\1\375\375\375\203\377\377\377\1\376\376\376\214\377\377\377\1\376\376" \
-  "\376\202\377\377\377\1\376\376\376\242\377\377\377\1\376\376\376\206" \
-  "\377\377\377\3\376\376\376\377\377\377\376\376\376\204\377\377\377\1" \
-  "\376\376\376\202\377\377\377\202\376\376\376\225\377\377\377\3\376\376" \
-  "\376\377\377\377\376\376\376\202\377\377\377\3\376\376\376\377\377\377" \
-  "\376\376\376\214\377\377\377\3\376\376\376\377\377\377\376\376\376\265" \
-  "\377\377\377\1\375\375\375\234\377\377\377\7\376\377\377\377\376\377" \
-  "\376\377\377\376\376\374\377\376\377\377\377\377\377\377\375\240\377" \
-  "\377\377\1\377\377\375\202\377\377\377\5\377\376\377\376\376\376\377" \
-  "\376\377\376\376\377\377\377\375\221\377\377\377\7\375\376\377\377\377" \
-  "\377\377\376\377\377\377\375\376\377\377\377\377\373\377\376\377\210" \
-  "\377\377\377\5\377\376\377\377\377\377\376\376\374\376\377\377\377\377" \
-  "\377\202\377\377\375\1\376\377\377\210\377\377\377\6\376\377\377\375" \
-  "\376\377\377\376\377\377\377\377\376\377\377\377\377\377\202\377\377" \
-  "\375\224\377\377\377\202\377\376\377\2\374\377\377\377\376\377\210\377" \
-  "\377\377\3\376\377\377\376\376\376\376\377\377\202\377\377\377\3\375" \
-  "\377\376\377\377\377\377\376\377\220\377\377\377\202\377\376\377\2\376" \
-  "\377\377\375\376\377\202\377\377\377\4\377\377\375\377\376\377\377\377" \
-  "\377\377\377\375\202\376\377\377\7\377\377\377\377\376\377\377\377\377" \
-  "\376\377\375\370\373\364\344\357\315\342\361\320\202\342\362\315\14\340" \
-  "\357\316\345\360\316\376\377\373\376\376\376\377\377\377\377\375\376" \
-  "\377\377\375\377\377\377\375\377\376\377\377\377\377\376\377\377\377" \
-  "\375\202\376\377\375\5\376\377\377\377\377\377\377\377\375\376\376\376" \
-  "\377\376\377\214\377\377\377\1\376\376\376\202\377\377\377\5\377\377" \
-  "\375\376\375\377\377\377\377\376\376\377\377\377\375\204\377\377\377" \
-  "\1\377\377\375\205\377\377\377\202\377\376\377\2\377\377\377\377\377" \
-  "\375\202\377\377\377\202\376\377\377\222\377\377\377\5\377\377\375\377" \
-  "\377\377\377\377\375\377\377\377\377\377\375\202\377\377\377\1\377\376" \
-  "\372\212\377\377\377\1\377\375\377\202\377\377\377\3\377\376\377\377" \
-  "\377\377\377\377\375\225\377\377\377\1\376\376\376\211\377\377\377\1" \
-  "\376\376\376\204\377\377\377\1\376\376\376\205\377\377\377\1\376\376" \
-  "\376\206\377\377\377\3\376\376\376\377\377\377\376\376\376\206\377\377" \
-  "\377\1\376\376\376\233\377\377\377\1\376\376\376\203\377\377\377\5\376" \
-  "\376\376\377\377\377\376\376\376\377\377\377\376\376\376\223\377\377" \
-  "\377\3\376\376\376\377\377\377\376\376\376\205\377\377\377\3\376\376" \
-  "\376\377\377\377\376\376\376\203\377\377\377\3\376\376\376\377\377\377" \
-  "\376\376\376\203\377\377\377\1\376\376\376\205\377\377\377\1\376\376" \
-  "\376\246\377\377\377\3\376\376\376\377\377\377\376\376\376\220\377\377" \
-  "\377\1\376\376\376\246\377\377\377\1\376\376\376\225\377\377\377\1\376" \
-  "\376\376\202\377\377\377\1\376\376\376\240\377\377\377\1\376\376\376" \
-  "\230\377\377\377\6\377\377\375\377\377\377\377\376\377\376\377\375\374" \
-  "\377\377\376\375\377\242\377\377\377\202\377\376\377\6\376\376\376\375" \
-  "\376\377\377\377\377\377\377\375\377\377\377\376\377\375\220\377\377" \
-  "\377\7\377\377\375\377\377\377\377\377\375\377\375\376\376\377\375\376" \
-  "\377\377\376\376\376\212\377\377\377\4\377\376\377\377\377\375\377\377" \
-  "\377\377\377\375\203\377\376\377\210\377\377\377\5\377\377\375\377\377" \
-  "\377\377\375\376\377\376\377\377\377\375\202\377\377\377\1\376\377\377" \
-  "\221\377\377\377\1\375\376\377\203\377\377\375\2\376\377\375\377\375" \
-  "\376\211\377\377\377\204\377\376\377\4\377\377\377\376\377\375\377\377" \
-  "\375\377\376\377\221\377\377\377\5\376\377\377\376\376\376\377\377\373" \
-  "\376\376\377\376\377\377\202\377\377\377\2\377\376\377\377\377\375\202" \
-  "\377\377\377\7\377\377\375\377\376\377\376\376\377\377\377\377\376\377" \
-  "\377\376\377\375\376\377\377\202\377\377\377\203\376\377\377\2\377\377" \
-  "\377\376\376\374\202\377\376\377\13\376\376\376\377\377\375\377\377\377" \
-  "\377\375\376\376\377\377\377\377\377\376\376\377\377\376\377\376\376" \
-  "\374\376\377\377\377\377\375\221\377\377\377\203\377\377\375\4\377\377" \
-  "\377\377\377\375\377\376\377\376\376\376\210\377\377\377\1\377\377\373" \
-  "\203\377\377\377\1\377\377\375\202\376\377\377\222\377\377\377\1\377" \
-  "\377\375\202\377\376\377\3\377\377\377\377\376\377\377\376\374\202\376" \
-  "\377\377\210\377\377\377\4\377\377\375\377\377\377\376\377\375\377\375" \
-  "\377\202\376\377\377\1\377\376\375\227\377\377\377\1\376\376\376\207" \
-  "\377\377\377\1\376\376\376\217\377\377\377\1\376\376\376\205\377\377" \
-  "\377\1\376\376\376\204\377\377\377\1\376\376\376\233\377\377\377\1\376" \
-  "\376\376\211\377\377\377\1\376\376\376\222\377\377\377\1\376\376\376" \
-  "\206\377\377\377\1\376\376\376\207\377\377\377\1\376\376\376\262\377" \
-  "\377\377\1\376\376\376\212\377\377\377\1\376\376\376\202\377\377\377" \
-  "\1\376\376\376\202\377\377\377\1\376\376\376\225\377\377\377\1\376\376" \
-  "\376\306\377\377\377\1\376\376\376\235\377\377\377\7\377\376\377\376" \
-  "\377\377\377\377\377\377\377\375\376\375\377\377\377\375\377\376\377" \
-  "\241\377\377\377\1\376\377\377\203\377\377\377\3\377\377\375\377\375" \
-  "\376\377\376\377\221\377\377\377\202\376\377\377\5\377\377\377\377\377" \
-  "\375\377\377\377\377\376\377\377\377\375\211\377\377\377\203\377\377" \
-  "\375\202\377\377\377\202\376\377\377\1\377\377\375\212\377\377\377\202" \
-  "\376\377\375\3\376\377\377\377\377\375\377\376\377\223\377\377\377\6" \
-  "\377\377\375\377\376\377\374\377\377\377\377\377\377\376\377\376\377" \
-  "\375\210\377\377\377\3\377\377\375\376\377\377\377\377\375\202\377\377" \
-  "\377\1\377\377\375\223\377\377\377\4\376\376\376\377\377\375\376\376" \
-  "\376\377\376\377\202\377\377\375\1\376\376\376\206\377\377\377\1\377" \
-  "\377\375\215\377\377\377\1\377\377\375\202\377\377\377\5\376\377\377" \
-  "\377\377\377\376\376\374\377\377\377\377\376\377\202\377\377\377\1\376" \
-  "\376\376\221\377\377\377\7\376\377\375\377\375\377\377\377\377\376\377" \
-  "\377\377\377\377\377\377\373\377\376\377\202\377\377\377\1\377\377\375" \
-  "\202\377\377\377\1\377\377\375\204\377\377\377\6\376\376\377\377\377" \
-  "\375\376\377\377\377\377\375\377\376\377\375\377\374\222\377\377\377" \
-  "\3\376\377\375\377\377\377\376\377\375\203\376\377\377\1\377\376\377" \
-  "\211\377\377\377\7\377\377\373\377\376\377\377\377\375\377\377\377\377" \
-  "\376\377\376\376\376\376\377\377")
-
-
diff --git a/meta-agl-profile-core/recipes-core/psplash/psplash_git.bbappend b/meta-agl-profile-core/recipes-core/psplash/psplash_git.bbappend
deleted file mode 100644 (file)
index 5a82fc8..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-SRC_URI += "file://psplash-colors.h"
-
-SPLASH_IMAGES="file://psplash-poky-img.h;outsuffix=default"
-
-do_configure_append () {
-       cp -f ${WORKDIR}/psplash-colors.h ${S}
-}
diff --git a/meta-agl-profile-core/recipes-devtools/gdb/.appends.core b/meta-agl-profile-core/recipes-devtools/gdb/.appends.core
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/meta-agl-profile-core/recipes-devtools/json-c/json-c_%.bbappend b/meta-agl-profile-core/recipes-devtools/json-c/json-c_%.bbappend
deleted file mode 100644 (file)
index 43807bd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-EXTRA_OECONF += "--enable-threading"
diff --git a/meta-agl-profile-core/recipes-devtools/low-level-can-generator/low-level-can-generator_git.bb b/meta-agl-profile-core/recipes-devtools/low-level-can-generator/low-level-can-generator_git.bb
deleted file mode 100644 (file)
index 4c0bda0..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY     = "Low level CAN generator"
-DESCRIPTION = "Generator used to customize low level CAN service with customs signals"
-SECTION     = "devel"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-inherit cmake pkgconfig
-BBCLASSEXTEND = "nativesdk"
-DEPENDS = " cmake-apps-module"
-
-SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/src/low-level-can-generator;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "0a3e354c3d81866e1a755367ab5592b3ced868bb"
-
-PV = "${AGLVERSION}"
-S  = "${WORKDIR}/git"
-
diff --git a/meta-agl-profile-core/recipes-devtools/packagegroups/nativesdk-packagegroup-sdk-host.bbappend b/meta-agl-profile-core/recipes-devtools/packagegroups/nativesdk-packagegroup-sdk-host.bbappend
deleted file mode 100644 (file)
index 18621db..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-RDEPENDS_${PN} += "nativesdk-low-level-can-generator \
-               nativesdk-cmake-apps-module \
-               nativesdk-cmake-apps-module-doc \
-"
diff --git a/meta-agl-profile-core/recipes-devtools/python/python3-asyncssh_2.3.0.bb b/meta-agl-profile-core/recipes-devtools/python/python3-asyncssh_2.3.0.bb
deleted file mode 100644 (file)
index ab7e8af..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-DESCRIPTION = "\
-AsyncSSH is a Python package which provides an asynchronous client and \
-server implementation of the SSHv2 protocol on top of the Python \
-asyncio framework."
-HOMEPAGE = "https://github.com/ronf/asyncssh"
-LICENSE = "EPL-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=d9fc0efef5228704e7f5b37f27192723"
-
-SRC_URI[sha256sum] = "44bda34c7123f00c3df95d24e2dc8d43c4d17b456fbb8c434ef4f4a7ebb5265e"
-
-inherit pypi setuptools3
-
-RDEPENDS_${PN} += "${PYTHON_PN}-asyncio ${PYTHON_PN}-cryptography"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-agl-profile-core/recipes-devtools/python/python3-pytest-dependency_0.5.1.bb b/meta-agl-profile-core/recipes-devtools/python/python3-pytest-dependency_0.5.1.bb
deleted file mode 100644 (file)
index 5ff2d4e..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-DESCRIPTION = "pytest-dependency manages dependencies of tests."
-HOMEPAGE = "https://github.com/RKrahl/pytest-dependency"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://README.rst;md5=35b9938ae48d25e6b8306232e98463dd"
-
-SRC_URI[sha256sum] = "c2a892906192663f85030a6ab91304e508e546cddfe557d692d61ec57a1d946b"
-
-inherit pypi setuptools3
-
-DEPENDS += "${PYTHON_PN}-pytest-native"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-agl-profile-core/recipes-devtools/python/python3-pytest-reverse_1.0.1.bb b/meta-agl-profile-core/recipes-devtools/python/python3-pytest-reverse_1.0.1.bb
deleted file mode 100644 (file)
index 5ed9b1d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-DESCRIPTION = "pytest-reverse is a pytest plugin to reverse test order"
-HOMEPAGE = "https://github.com/adamchainz/pytest-reverse"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=caf1f407ae86ecd57ab721dff94079b7"
-
-SRC_URI[sha256sum] = "40cbc47df8a262fed778e500f4d0b17d2d08ef8b9fbf899c0bab9488be192aac"
-
-inherit pypi setuptools3
-
-DEPENDS += "${PYTHON_PN}-pytest-native"
-
-BBCLASSEXTEND = "native"
diff --git a/meta-agl-profile-core/recipes-devtools/qemu/qemu_%.bbappend b/meta-agl-profile-core/recipes-devtools/qemu/qemu_%.bbappend
deleted file mode 100644 (file)
index 1a6a98b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-QEMU_TARGETS_class-target_aglegvirt = " aarch64 x86_64"
diff --git a/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts b/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts
deleted file mode 100755 (executable)
index 1d1a5a0..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/sh
-#
-# Copyright 2017 IoT.bzh.
-
-# Author: Ronan Le Martret <ronan.lemartret@iot.bzh>
-#
-
-# The following script will run all the scriptlets found in #SYSCONFDIR#/agl-postinsts.
-
-agl_pi_dir="#SYSCONFDIR#/agl-postinsts"
-
-POSTINST_LOGGING=1
-LOGFILE=/var/log/agl-postinstall.log
-
-[ -e $LOGFILE ] && mv ${LOGFILE} ${LOGFILE}.old.$(date +%F--%H%M.%S)
-
-append_log=">>$LOGFILE 2>&1"
-
-exec_postinst_scriptlets() {
-    for i in `ls $agl_pi_dir`; do
-        i=$agl_pi_dir/$i
-        echo "Running postinst $i..."
-        [ "$POSTINST_LOGGING" = "1" ] && eval echo "Running postinst $i..." $append_log
-        if [ -x $i ]; then
-            eval sh -c $i $append_log
-            if [ $? -eq 0 ]; then
-                rm $i
-            else
-                echo "ERROR: postinst $i failed."
-                [ "$POSTINST_LOGGING" = "1" ] && eval echo "ERROR: postinst $i failed." $append_log
-                remove_agl_pi_dir=0
-            fi
-        else
-            echo "ERROR: postinst $i do not exists or do not have execute permission."
-            [ "$POSTINST_LOGGING" = "1" ] && eval echo "ERROR: postinst $i do not exists or do not have execute permission." $append_log
-            remove_agl_pi_dir=0
-        fi
-    done
-}
-
-remove_agl_pi_dir=1
-exec_postinst_scriptlets
-systemctl daemon-reload
-
-# since all postinstalls executed successfully, remove the postinstalls directory
-if [ $remove_agl_pi_dir = 1 ]; then
-    rm -rf $agl_pi_dir
-fi
diff --git a/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts.service b/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts.service
deleted file mode 100644 (file)
index 8f8667d..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-[Unit]
-Description=Run pending agl postinsts
-DefaultDependencies=no
-After=#SYSTEMD_SERVICE_AFTER#
-Before=#SYSTEMD_SERVICE_BEFORE#
-ConditionPathExists=#SYSCONFDIR#/agl-postinsts
-
-[Service]
-Type=oneshot
-StandardOutput=journal+console
-ExecStart=#SBINDIR#/run-agl-postinsts
-ExecStartPost=#BASE_BINDIR#/systemctl disable run-agl-postinsts.service
-RemainAfterExit=No
-TimeoutSec=0
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts_1.0.bb b/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts_1.0.bb
deleted file mode 100644 (file)
index 38bc66d..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-SUMMARY = "Runs AGL postinstall scripts on first boot of the target device"
-SECTION = "devel"
-
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-
-SRC_URI = "file://run-agl-postinsts \
-           file://run-agl-postinsts.service"
-
-S = "${WORKDIR}"
-
-inherit allarch systemd
-
-SYSTEMD_SERVICE_${PN} = "run-agl-postinsts.service"
-
-SYSTEMD_SERVICE_AFTER ?= "dbus.service cynagora.service"
-
-SYSTEMD_SERVICE_BEFORE ?= "systemd-user-sessions.service"
-
-do_configure() {
-    :
-}
-
-do_compile () {
-    :
-}
-
-do_install() {
-    install -d ${D}${sbindir}
-    install -m 0755 ${WORKDIR}/run-agl-postinsts ${D}${sbindir}/
-
-    install -d ${D}${systemd_unitdir}/system/
-    install -m 0644 ${WORKDIR}/run-agl-postinsts.service ${D}${systemd_unitdir}/system/
-
-    sed -i -e 's:#SYSCONFDIR#:${sysconfdir}:g' \
-               -e 's:#SBINDIR#:${sbindir}:g' \
-               -e 's:#BASE_BINDIR#:${base_bindir}:g' \
-               -e 's:#LOCALSTATEDIR#:${localstatedir}:g' \
-               ${D}${sbindir}/run-agl-postinsts \
-               ${D}${systemd_unitdir}/system/run-agl-postinsts.service
-    sed -i -e 's:#SYSTEMD_SERVICE_AFTER#:${SYSTEMD_SERVICE_AFTER}:g' \
-               -e 's:#SYSTEMD_SERVICE_BEFORE#:${SYSTEMD_SERVICE_BEFORE}:g' \
-               ${D}${systemd_unitdir}/system/run-agl-postinsts.service
-}
-
diff --git a/meta-agl-profile-core/recipes-extended/gperf/.appends.core b/meta-agl-profile-core/recipes-extended/gperf/.appends.core
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0002-src-most-add-auto-conf-feature.patch b/meta-agl-profile-core/recipes-kernel/most/files/0002-src-most-add-auto-conf-feature.patch
deleted file mode 100644 (file)
index dd811c8..0000000
+++ /dev/null
@@ -1,472 +0,0 @@
-From 9cb7cb85f59509ac445116e9458c502cf6cb74e6 Mon Sep 17 00:00:00 2001
-From: Christian Gromm <christian.gromm@microchip.com>
-Date: Thu, 9 Nov 2017 13:20:23 +0100
-Subject: [PATCH 2/2] src: most: add auto conf feature
-
-This patch adds the auto configuration feature to the driver
-sources. It is needed to have the driver configured automatically
-upon start up w/o the need for userspace to set up sysfs.
-
-Signed-off-by: Christian Gromm <christian.gromm@microchip.com>
----
- driver/Makefile           |   3 +
- driver/default_conf.c     | 162 ++++++++++++++++++++++++++++++++++++++++++++++
- driver/include/mostcore.h |  64 ++++++++++++++++++
- driver/mostcore/core.c    | 120 ++++++++++++++++++++++++++++------
- 4 files changed, 331 insertions(+), 18 deletions(-)
- create mode 100644 driver/default_conf.c
-
-diff --git a/Makefile b/Makefile
-index e77a4b6..6d74ebe 100644
---- a/Makefile
-+++ b/Makefile
-@@ -6,6 +6,9 @@ obj-m := mostcore.o
- mostcore-y := mostcore/core.o
- CFLAGS_core.o := -I$(src)/include/
-+obj-m += default_conf.o
-+CFLAGL_default_conf.o := -I$(src)/include
-+
- obj-m += aim_cdev.o
- aim_cdev-y := aim-cdev/cdev.o
- CFLAGS_cdev.o := -I$(src)/include/
-diff --git a/default_conf.c b/default_conf.c
-new file mode 100644
-index 0000000..adb1786
---- /dev/null
-+++ b/default_conf.c
-@@ -0,0 +1,162 @@
-+/*
-+ * default_conf.c - Default configuration for the MOST channels.
-+ *
-+ * Copyright (C) 2017, Microchip Technology Germany II GmbH & Co. KG
-+ *
-+ * 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.
-+ *
-+ * This file is licensed under GPLv2.
-+ */
-+
-+#include "include/mostcore.h"
-+#include <linux/module.h>
-+
-+static struct most_config_probe config_probes[] = {
-+
-+      /* OS81118 Control */
-+      {
-+              .ch_name = "ep8f",
-+              .cfg = {
-+                      .direction = MOST_CH_RX,
-+                      .data_type = MOST_CH_CONTROL,
-+                      .num_buffers = 16,
-+                      .buffer_size = 64,
-+              },
-+              .aim_name = "cdev",
-+              .aim_param = "inic-usb-crx",
-+      },
-+      {
-+              .ch_name = "ep0f",
-+              .cfg = {
-+                      .direction = MOST_CH_TX,
-+                      .data_type = MOST_CH_CONTROL,
-+                      .num_buffers = 16,
-+                      .buffer_size = 64,
-+              },
-+              .aim_name = "cdev",
-+              .aim_param = "inic-usb-ctx",
-+      },
-+      /* OS81118 Async */
-+      {
-+              .ch_name = "ep8e",
-+              .cfg = {
-+                      .direction = MOST_CH_RX,
-+                      .data_type = MOST_CH_ASYNC,
-+                      .num_buffers = 20,
-+                      .buffer_size = 1522,
-+              },
-+              .aim_name = "networking",
-+              .aim_param = "inic-usb-arx",
-+      },
-+      {
-+              .ch_name = "ep0e",
-+              .cfg = {
-+                      .direction = MOST_CH_TX,
-+                      .data_type = MOST_CH_ASYNC,
-+                      .num_buffers = 20,
-+                      .buffer_size = 1522,
-+              },
-+              .aim_name = "networking",
-+              .aim_param = "inic-usb-atx",
-+      },
-+      /* OS81210 Control */
-+      {
-+              .ch_name = "ep87",
-+              .cfg = {
-+                      .direction = MOST_CH_RX,
-+                      .data_type = MOST_CH_CONTROL,
-+                      .num_buffers = 16,
-+                      .buffer_size = 64,
-+              },
-+              .aim_name = "cdev",
-+              .aim_param = "inic-usb-crx",
-+      },
-+      {
-+              .ch_name = "ep07",
-+              .cfg = {
-+                      .direction = MOST_CH_TX,
-+                      .data_type = MOST_CH_CONTROL,
-+                      .num_buffers = 16,
-+                      .buffer_size = 64,
-+              },
-+              .aim_name = "cdev",
-+              .aim_param = "inic-usb-ctx",
-+      },
-+      /* OS81210 Async */
-+      {
-+              .ch_name = "ep86",
-+              .cfg = {
-+                      .direction = MOST_CH_RX,
-+                      .data_type = MOST_CH_ASYNC,
-+                      .num_buffers = 20,
-+                      .buffer_size = 1522,
-+              },
-+              .aim_name = "networking",
-+              .aim_param = "inic-usb-arx",
-+      },
-+      {
-+              .ch_name = "ep06",
-+              .cfg = {
-+                      .direction = MOST_CH_TX,
-+                      .data_type = MOST_CH_ASYNC,
-+                      .num_buffers = 20,
-+                      .buffer_size = 1522,
-+              },
-+              .aim_name = "networking",
-+              .aim_param = "inic-usb-atx",
-+      },
-+      /* Streaming channels (common for all INICs) */
-+      {
-+              .ch_name = "ep01",
-+              .cfg = {
-+                      .direction = MOST_CH_TX,
-+                      .data_type = MOST_CH_SYNC,
-+                      .num_buffers = 8,
-+                      .buffer_size = 2 * 12 * 42,
-+                      .subbuffer_size = 12,
-+                      .packets_per_xact = 42,
-+              },
-+              .aim_name = "sound",
-+              .aim_param = "ep01-6ch.6x16",
-+      },
-+      {
-+              .ch_name = "ep02",
-+              .cfg = {
-+                      .direction = MOST_CH_TX,
-+                      .data_type = MOST_CH_ISOC,
-+                      .num_buffers = 8,
-+                      .buffer_size = 40 * 188,
-+                      .subbuffer_size = 188,
-+                      .packets_per_xact = 2,
-+              },
-+              .aim_name = "cdev",
-+              .aim_param = "inic-usb-itx1",
-+      },
-+      
-+      /* sentinel */
-+      {}
-+};
-+
-+static struct most_config_set config_set = {
-+      .probes = config_probes
-+};
-+
-+static int __init mod_init(void)
-+{
-+      most_register_config_set(&config_set);
-+      return 0;
-+}
-+
-+static void __exit mod_exit(void)
-+{
-+      most_deregister_config_set(&config_set);
-+}
-+
-+module_init(mod_init);
-+module_exit(mod_exit);
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Andrey Shvetsov <andrey.shvetsov@k2l.de>");
-+MODULE_DESCRIPTION("Default configuration for the MOST channels");
-diff --git a/include/mostcore.h b/include/mostcore.h
-index dc87121..3c00efb 100644
---- a/include/mostcore.h
-+++ b/include/mostcore.h
-@@ -145,6 +145,39 @@ struct most_channel_config {
-       u16 dbr_size;
- };
-+/**
-+ * struct most_config_probe - matching rule, channel configuration and
-+ *     the optional AIM name used for the automatic configuration and linking
-+ *     of the channel
-+ * @dev_name: optional matching device id
-+ *     ("usb_device 1-1:1.0," "dim2-12345678", etc.)
-+ * @ch_name: matching channel name ("ep8f", "ca2", etc.)
-+ * @cfg: configuration that will be applied for the found channel
-+ * @aim_name: optional name of the AIM that will be linked to the channel
-+ *     ("cdev", "networking", "v4l", "sound")
-+ * @aim_param: AIM dependent parameter (it is the character device name
-+ *     for the cdev AIM, PCM format for the audio AIM, etc.)
-+ */
-+struct most_config_probe {
-+      const char *dev_name;
-+      const char *ch_name;
-+      struct most_channel_config cfg;
-+      const char *aim_name;
-+      const char *aim_param;
-+};
-+
-+/**
-+ * struct most_config_set - the configuration set containing
-+ *     several automatic configurations for the different channels
-+ * @probes: list of the matching rules and the configurations,
-+ *     that must be ended with the empty structure
-+ * @list: list head used by the MostCore
-+ */
-+struct most_config_set {
-+      const struct most_config_probe *probes;
-+      struct list_head list;
-+};
-+
- /*
-  * struct mbo - MOST Buffer Object.
-  * @context: context for core completion handler
-@@ -285,6 +318,37 @@ struct most_aim {
- };
- /**
-+ * most_register_config_set - registers the configuration set
-+ *
-+ * @cfg_set: configuration set to be registered for the future probes
-+ *
-+ * The function registers the given configuration set.
-+ *
-+ * It is possible to register or deregister several configuration sets
-+ * independently.  Different configuration sets may contain the
-+ * overlapped matching rules but later registered configuration set has
-+ * the higher priority over the prior registered set.
-+ *
-+ * The only the first matched configuration is applied for each
-+ * channel.
-+ *
-+ * The configuration for the channel is applied at the time of
-+ * registration of the parent most_interface.
-+ */
-+void most_register_config_set(struct most_config_set *cfg_set);
-+
-+/**
-+ * most_deregister_config_set - deregisters the prior registered
-+ *     configuration set
-+ *
-+ * @cfg_set: configuration set to be deregistered
-+ *
-+ * The calling of this function does not change the current
-+ * configuration of the channels.
-+ */
-+void most_deregister_config_set(struct most_config_set *cfg_set);
-+
-+/**
-  * most_register_interface - Registers instance of the interface.
-  * @iface: Pointer to the interface instance description.
-  *
-diff --git a/mostcore/core.c b/mostcore/core.c
-index 9e0a352..6035cf0 100644
---- a/mostcore/core.c
-+++ b/mostcore/core.c
-@@ -36,6 +36,8 @@ static struct class *most_class;
- static struct device *core_dev;
- static struct ida mdev_id;
- static int dummy_num_buffers;
-+static struct list_head config_probes;
-+struct mutex config_probes_mt; /* config_probes */
- struct most_c_aim_obj {
-       struct most_aim *ptr;
-@@ -918,6 +920,30 @@ most_c_obj *get_channel_by_name(char *mdev, char *mdev_ch)
-       return c;
- }
-+static int link_channel_to_aim(struct most_c_obj *c, struct most_aim *aim,
-+                             char *aim_param)
-+{
-+      int ret;
-+      struct most_aim **aim_ptr;
-+
-+      if (!c->aim0.ptr)
-+              aim_ptr = &c->aim0.ptr;
-+      else if (!c->aim1.ptr)
-+              aim_ptr = &c->aim1.ptr;
-+      else
-+              return -ENOSPC;
-+
-+      *aim_ptr = aim;
-+      ret = aim->probe_channel(c->iface, c->channel_id,
-+                               &c->cfg, &c->kobj, aim_param);
-+      if (ret) {
-+              *aim_ptr = NULL;
-+              return ret;
-+      }
-+
-+      return 0;
-+}
-+
- /**
-  * add_link_store - store() function for add_link attribute
-  * @aim_obj: pointer to AIM object
-@@ -946,45 +972,33 @@ static ssize_t add_link_store(struct most_aim_obj *aim_obj,
-                             size_t len)
- {
-       struct most_c_obj *c;
--      struct most_aim **aim_ptr;
-       char buffer[STRING_SIZE];
-       char *mdev;
-       char *mdev_ch;
--      char *mdev_devnod;
-+      char *aim_param;
-       char devnod_buf[STRING_SIZE];
-       int ret;
-       size_t max_len = min_t(size_t, len + 1, STRING_SIZE);
-       strlcpy(buffer, buf, max_len);
--      ret = split_string(buffer, &mdev, &mdev_ch, &mdev_devnod);
-+      ret = split_string(buffer, &mdev, &mdev_ch, &aim_param);
-       if (ret)
-               return ret;
--      if (!mdev_devnod || *mdev_devnod == 0) {
-+      if (!aim_param || *aim_param == 0) {
-               snprintf(devnod_buf, sizeof(devnod_buf), "%s-%s", mdev,
-                        mdev_ch);
--              mdev_devnod = devnod_buf;
-+              aim_param = devnod_buf;
-       }
-       c = get_channel_by_name(mdev, mdev_ch);
-       if (IS_ERR(c))
-               return -ENODEV;
--      if (!c->aim0.ptr)
--              aim_ptr = &c->aim0.ptr;
--      else if (!c->aim1.ptr)
--              aim_ptr = &c->aim1.ptr;
--      else
--              return -ENOSPC;
--
--      *aim_ptr = aim_obj->driver;
--      ret = aim_obj->driver->probe_channel(c->iface, c->channel_id,
--                                           &c->cfg, &c->kobj, mdev_devnod);
--      if (ret) {
--              *aim_ptr = NULL;
-+      ret = link_channel_to_aim(c, aim_obj->driver, aim_param);
-+      if (ret)
-               return ret;
--      }
-       return len;
- }
-@@ -1679,6 +1693,73 @@ int most_deregister_aim(struct most_aim *aim)
- }
- EXPORT_SYMBOL_GPL(most_deregister_aim);
-+void most_register_config_set(struct most_config_set *cfg_set)
-+{
-+      mutex_lock(&config_probes_mt);
-+      list_add(&cfg_set->list, &config_probes);
-+      mutex_unlock(&config_probes_mt);
-+}
-+EXPORT_SYMBOL(most_register_config_set);
-+
-+void most_deregister_config_set(struct most_config_set *cfg_set)
-+{
-+      mutex_lock(&config_probes_mt);
-+      list_del(&cfg_set->list);
-+      mutex_unlock(&config_probes_mt);
-+}
-+EXPORT_SYMBOL(most_deregister_config_set);
-+
-+static int probe_aim(struct most_c_obj *c,
-+                   const char *aim_name, const char *aim_param)
-+{
-+      struct most_aim_obj *aim_obj;
-+      char buf[STRING_SIZE];
-+
-+      list_for_each_entry(aim_obj, &aim_list, list) {
-+              if (!strcmp(aim_obj->driver->name, aim_name)) {
-+                      strlcpy(buf, aim_param ? aim_param : "", sizeof(buf));
-+                      return link_channel_to_aim(c, aim_obj->driver, buf);
-+              }
-+      }
-+      return 0;
-+}
-+
-+static bool probe_config_set(struct most_c_obj *c,
-+                           const char *dev_name, const char *ch_name,
-+                           const struct most_config_probe *p)
-+{
-+      int err;
-+
-+      for (; p->ch_name; p++) {
-+              if ((p->dev_name && strcmp(dev_name, p->dev_name)) ||
-+                  strcmp(ch_name, p->ch_name))
-+                      continue;
-+
-+              c->cfg = p->cfg;
-+              if (p->aim_name) {
-+                      err = probe_aim(c, p->aim_name, p->aim_param);
-+                      if (err)
-+                              pr_err("failed to autolink %s to %s: %d\n",
-+                                     ch_name, p->aim_name, err);
-+              }
-+              return true;
-+      }
-+      return false;
-+}
-+
-+static void find_configuration(struct most_c_obj *c, const char *dev_name,
-+                             const char *ch_name)
-+{
-+      struct most_config_set *plist;
-+
-+      mutex_lock(&config_probes_mt);
-+      list_for_each_entry(plist, &config_probes, list) {
-+              if (probe_config_set(c, dev_name, ch_name, plist->probes))
-+                      break;
-+      }
-+      mutex_unlock(&config_probes_mt);
-+}
-+
- /**
-  * most_register_interface - registers an interface with core
-  * @iface: pointer to the instance of the interface description.
-@@ -1777,6 +1858,7 @@ struct kobject *most_register_interface(struct most_interface *iface)
-               mutex_init(&c->start_mutex);
-               mutex_init(&c->nq_mutex);
-               list_add_tail(&c->list, &inst->channel_list);
-+              find_configuration(c, iface->description, channel_name);
-       }
-       pr_info("registered new MOST device mdev%d (%s)\n",
-               inst->dev_id, iface->description);
-@@ -1880,6 +1962,8 @@ static int __init most_init(void)
-       pr_info("init()\n");
-       INIT_LIST_HEAD(&instance_list);
-       INIT_LIST_HEAD(&aim_list);
-+      INIT_LIST_HEAD(&config_probes);
-+      mutex_init(&config_probes_mt);
-       ida_init(&mdev_id);
-       err = bus_register(&most_bus);
--- 
-2.7.4
-
diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0003-core-remove-kernel-log-for-MBO-status.patch b/meta-agl-profile-core/recipes-kernel/most/files/0003-core-remove-kernel-log-for-MBO-status.patch
deleted file mode 100644 (file)
index 4703844..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-From b269994be937cbb31c0d73ecc899ca8a545a6a4a Mon Sep 17 00:00:00 2001
-From: Christian Gromm <christian.gromm@microchip.com>
-Date: Mon, 4 Sep 2017 11:09:17 +0200
-Subject: [PATCH 3/5] core: remove kernel log for MBO status
-
-Signed-off-by: Christian Gromm <christian.gromm@microchip.com>
----
- driver/mostcore/core.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/mostcore/core.c b/mostcore/core.c
-index 931efb9..595becc 100644
---- a/mostcore/core.c
-+++ b/mostcore/core.c
-@@ -1348,8 +1348,6 @@ static void most_write_completion(struct mbo *mbo)
-       BUG_ON((!mbo) || (!mbo->context));
-       c = mbo->context;
--      if (mbo->status == MBO_E_INVAL)
--              pr_info("WARN: Tx MBO status: invalid\n");
-       if (unlikely(c->is_poisoned || (mbo->status == MBO_E_CLOSE)))
-               trash_mbo(mbo);
-       else
--- 
-2.7.4
-
diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0004-most-video-set-device_caps.patch b/meta-agl-profile-core/recipes-kernel/most/files/0004-most-video-set-device_caps.patch
deleted file mode 100644 (file)
index 010d4b0..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-From a5fd2ae8d4a3b2a8f7a33a4ea469ea7ee0d946ef Mon Sep 17 00:00:00 2001
-From: Christian Gromm <christian.gromm@microchip.com>
-Date: Mon, 4 Sep 2017 15:36:38 +0200
-Subject: [PATCH 4/5] most: video: set device_caps
-
-Signed-off-by: Christian Gromm <christian.gromm@microchip.com>
----
- driver/aim-v4l2/video.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/aim-v4l2/video.c b/aim-v4l2/video.c
-index e074841..6405a03 100644
---- a/aim-v4l2/video.c
-+++ b/aim-v4l2/video.c
-@@ -263,6 +263,7 @@ static int vidioc_querycap(struct file *file, void *priv,
-       snprintf(cap->bus_info, sizeof(cap->bus_info),
-                "%s", mdev->iface->description);
-+      cap->device_caps =
-       cap->capabilities =
-               V4L2_CAP_READWRITE |
-               V4L2_CAP_TUNER |
--- 
-2.7.4
-
diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0005-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch b/meta-agl-profile-core/recipes-kernel/most/files/0005-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch
deleted file mode 100644 (file)
index ebaee9e..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-From 7518453386ad3e82008186a6c9ca86ed8c136801 Mon Sep 17 00:00:00 2001
-From: Christian Gromm <christian.gromm@microchip.com>
-Date: Mon, 4 Sep 2017 16:08:38 +0200
-Subject: [PATCH 5/5] most: video: set V4L2_CAP_DEVICE_CAPS flag
-
-Signed-off-by: Christian Gromm <christian.gromm@microchip.com>
----
- driver/aim-v4l2/video.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/aim-v4l2/video.c b/aim-v4l2/video.c
-index 6405a03..db75d4d 100644
---- a/aim-v4l2/video.c
-+++ b/aim-v4l2/video.c
-@@ -265,6 +265,7 @@ static int vidioc_querycap(struct file *file, void *priv,
-       cap->device_caps =
-       cap->capabilities =
-+              V4L2_CAP_DEVICE_CAPS |
-               V4L2_CAP_READWRITE |
-               V4L2_CAP_TUNER |
-               V4L2_CAP_VIDEO_CAPTURE;
--- 
-2.7.4
-
diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0006-dim2-fix-startup-sequence.patch b/meta-agl-profile-core/recipes-kernel/most/files/0006-dim2-fix-startup-sequence.patch
deleted file mode 100644 (file)
index 59c6ae6..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-From 63bcd9b421ae7927948bffec9566db47f40ea290 Mon Sep 17 00:00:00 2001
-From: Andrey Shvetsov <andrey.shvetsov@k2l.de>
-Date: Tue, 30 Jan 2018 17:34:09 +0100
-Subject: [PATCH] staging: most: dim2: fix startup sequence
-
-Platform specific initializations (pdata->init) must be done before DIM2
-IP module startup (dim_startup).
-
-Signed-off-by: Andrey Shvetsov <andrey.shvetsov@k2l.de>
----
- hdm-dim2/dim2_hdm.c | 90 +++++++++++++++++++++++++++++++++++++++---------------------------------------------------
- 1 file changed, 39 insertions(+), 51 deletions(-)
-
-diff --git a/hdm-dim2/dim2_hdm.c b/hdm-dim2/dim2_hdm.c
-index 893b8e4..e4629a5 100644
---- a/hdm-dim2/dim2_hdm.c
-+++ b/hdm-dim2/dim2_hdm.c
-@@ -155,38 +155,6 @@ void dimcb_on_error(u8 error_id, const char *error_message)
- }
-
- /**
-- * startup_dim - initialize the dim2 interface
-- * @pdev: platform device
-- */
--static int startup_dim(struct platform_device *pdev)
--{
--      struct dim2_hdm *dev = platform_get_drvdata(pdev);
--      struct dim2_platform_data *pdata = pdev->dev.platform_data;
--      u8 hal_ret;
--      int ret;
--
--      if (!pdata) {
--              pr_err("missing platform data\n");
--              return -EINVAL;
--      }
--
--      ret = pdata->init ? pdata->init(pdata, dev->io_base) : 0;
--      if (ret)
--              return ret;
--
--      pr_info("sync: num of frames per sub-buffer: %u\n", fcnt);
--      hal_ret = dim_startup(dev->io_base, pdata->clk_speed, fcnt);
--      if (hal_ret != DIM_NO_ERROR) {
--              pr_err("dim_startup failed: %d\n", hal_ret);
--              if (pdata && pdata->destroy)
--                      pdata->destroy(pdata);
--              return -ENODEV;
--      }
--
--      return 0;
--}
--
--/**
-  * try_start_dim_transfer - try to transfer a buffer on a channel
-  * @hdm_ch: channel specific data
-  *
-@@ -727,10 +695,12 @@ static void dma_free(struct mbo *mbo, u32 size)
-  */
- static int dim2_probe(struct platform_device *pdev)
- {
-+      struct dim2_platform_data *pdata = pdev->dev.platform_data;
-       struct dim2_hdm *dev;
-       struct resource *res;
-       int ret, i;
-       struct kobject *kobj;
-+      u8 hal_ret;
-       int irq;
-
-       dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL);
-@@ -745,38 +715,59 @@ static int dim2_probe(struct platform_device *pdev)
-       if (IS_ERR(dev->io_base))
-               return PTR_ERR(dev->io_base);
-
-+      if (!pdata) {
-+              dev_err(&pdev->dev, "missing platform data\n");
-+              return -EINVAL;
-+      }
-+
-+      ret = pdata->init ? pdata->init(pdata, dev->io_base) : 0;
-+      if (ret)
-+              return ret;
-+
-+      dev_info(&pdev->dev, "sync: num of frames per sub-buffer: %u\n", fcnt);
-+      hal_ret = dim_startup(dev->io_base, pdata->clk_speed, fcnt);
-+      if (hal_ret != DIM_NO_ERROR) {
-+              dev_err(&pdev->dev, "dim_startup failed: %d\n", hal_ret);
-+              ret = -ENODEV;
-+              goto err_bsp_destroy;
-+      }
-+
-       irq = platform_get_irq(pdev, 0);
-       if (irq < 0) {
-               dev_err(&pdev->dev, "failed to get ahb0_int irq: %d\n", irq);
--              return irq;
-+              ret = irq;
-+              goto err_shutdown_dim;
-       }
-
-       ret = devm_request_irq(&pdev->dev, irq, dim2_ahb_isr, 0,
-                              "dim2_ahb0_int", dev);
-       if (ret) {
-               dev_err(&pdev->dev, "failed to request ahb0_int irq %d\n", irq);
--              return ret;
-+              goto err_shutdown_dim;
-       }
-
-       irq = platform_get_irq(pdev, 1);
-       if (irq < 0) {
-               dev_err(&pdev->dev, "failed to get mlb_int irq: %d\n", irq);
--              return irq;
-+              ret = irq;
-+              goto err_shutdown_dim;
-       }
-
-       ret = devm_request_irq(&pdev->dev, irq, dim2_mlb_isr, 0,
-                              "dim2_mlb_int", dev);
-       if (ret) {
-               dev_err(&pdev->dev, "failed to request mlb_int irq %d\n", irq);
--              return ret;
-+              goto err_shutdown_dim;
-       }
-
-       init_waitqueue_head(&dev->netinfo_waitq);
-       dev->deliver_netinfo = 0;
--      dev->netinfo_task = kthread_run(&deliver_netinfo_thread, (void *)dev,
-+      dev->netinfo_task = kthread_run(&deliver_netinfo_thread, dev,
-                                       "dim2_netinfo");
--      if (IS_ERR(dev->netinfo_task))
--              return PTR_ERR(dev->netinfo_task);
-+      if (IS_ERR(dev->netinfo_task)) {
-+              ret = PTR_ERR(dev->netinfo_task);
-+              goto err_shutdown_dim;
-+      }
-
-       for (i = 0; i < DMA_CHANNELS; i++) {
-               struct most_channel_capability *cap = dev->capabilities + i;
-@@ -833,20 +824,17 @@ static int dim2_probe(struct platform_device *pdev)
-       if (ret)
-               goto err_unreg_iface;
-
--      ret = startup_dim(pdev);
--      if (ret) {
--              dev_err(&pdev->dev, "failed to initialize DIM2\n");
--              goto err_destroy_bus;
--      }
--
-       return 0;
-
--err_destroy_bus:
--      dim2_sysfs_destroy(&dev->bus);
- err_unreg_iface:
-       most_deregister_interface(&dev->most_iface);
- err_stop_thread:
-       kthread_stop(dev->netinfo_task);
-+err_shutdown_dim:
-+      dim_shutdown();
-+err_bsp_destroy:
-+      if (pdata && pdata->destroy)
-+              pdata->destroy(pdata);
-
-       return ret;
- }
-@@ -863,6 +851,10 @@ static int dim2_remove(struct platform_device *pdev)
-       struct dim2_platform_data *pdata = pdev->dev.platform_data;
-       unsigned long flags;
-
-+      dim2_sysfs_destroy(&dev->bus);
-+      most_deregister_interface(&dev->most_iface);
-+      kthread_stop(dev->netinfo_task);
-+
-       spin_lock_irqsave(&dim_lock, flags);
-       dim_shutdown();
-       spin_unlock_irqrestore(&dim_lock, flags);
-@@ -870,10 +862,6 @@ static int dim2_remove(struct platform_device *pdev)
-       if (pdata && pdata->destroy)
-               pdata->destroy(pdata);
-
--      dim2_sysfs_destroy(&dev->bus);
--      most_deregister_interface(&dev->most_iface);
--      kthread_stop(dev->netinfo_task);
--
-       /*
-        * break link to local platform_device_id struct
-        * to prevent crash by unload platform device module
---
-libgit2 0.26.0
diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0007-dim2-use-device-tree.patch b/meta-agl-profile-core/recipes-kernel/most/files/0007-dim2-use-device-tree.patch
deleted file mode 100644 (file)
index 679fab7..0000000
+++ /dev/null
@@ -1,378 +0,0 @@
-From 8e16207392cd715ea88f6780981a3d55ab005588 Mon Sep 17 00:00:00 2001
-From: Andrey Shvetsov <andrey.shvetsov@k2l.de>
-Date: Mon, 12 Feb 2018 12:23:37 +0100
-Subject: [PATCH] staging: most: dim2: use device tree
-
-Current dim2 driver expects the existence of a platform driver that
-implements the platform specific initialization and delivery of the irq
-numbers.
-
-This patch integrates the device tree activity and platform specific
-code into the driver.
-
-Signed-off-by: Andrey Shvetsov <andrey.shvetsov@k2l.de>
----
- hdm-dim2/dim2_hdm.c                 | 222 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------
- hdm-dim2/dim2_hdm.h                 |  28 ----------------------------
- hdm-dim2/platform/dim2_arwen_mlb3.c | 165 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------
- hdm-dim2/platform/dim2_arwen_mlb6.c | 169 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- hdm-dim2/platform/dim2_h2_dt.c      | 227 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- hdm-dim2/platform/dim2_mx6q.c       | 192 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- hdm-dim2/platform/dim2_mx6q_dt.c    | 224 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- 7 files changed, 193 insertions(+), 1034 deletions(-)
- delete mode 100644 hdm-dim2/dim2_hdm.h
- delete mode 100644 hdm-dim2/platform/dim2_arwen_mlb3.c
- delete mode 100644 hdm-dim2/platform/dim2_arwen_mlb6.c
- delete mode 100644 hdm-dim2/platform/dim2_h2_dt.c
- delete mode 100644 hdm-dim2/platform/dim2_mx6q.c
- delete mode 100644 hdm-dim2/platform/dim2_mx6q_dt.c
-
-diff --git a/hdm-dim2/dim2_hdm.c b/hdm-dim2/dim2_hdm.c
-index e4629a5..2dba917 100644
---- a/hdm-dim2/dim2_hdm.c
-+++ b/hdm-dim2/dim2_hdm.c
-@@ -14,6 +14,7 @@
- #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
-
- #include <linux/module.h>
-+#include <linux/of_platform.h>
- #include <linux/printk.h>
- #include <linux/kernel.h>
- #include <linux/init.h>
-@@ -21,13 +22,13 @@
- #include <linux/interrupt.h>
- #include <linux/slab.h>
- #include <linux/io.h>
-+#include <linux/clk.h>
- #include <linux/dma-mapping.h>
- #include <linux/sched.h>
- #include <linux/kthread.h>
-
- #include <mostcore.h>
- #include "dim2_hal.h"
--#include "dim2_hdm.h"
- #include "dim2_errors.h"
- #include "dim2_sysfs.h"
-
-@@ -93,6 +94,9 @@ struct dim2_hdm {
-       struct most_interface most_iface;
-       char name[16 + sizeof "dim2-"];
-       void __iomem *io_base;
-+      u8 clk_speed;
-+      struct clk *clk;
-+      struct clk *clk_pll;
-       struct task_struct *netinfo_task;
-       wait_queue_head_t netinfo_waitq;
-       int deliver_netinfo;
-@@ -102,6 +106,12 @@ struct dim2_hdm {
-       struct medialb_bus bus;
-       void (*on_netinfo)(struct most_interface *,
-                          unsigned char, unsigned char *);
-+      void (*disable_platform)(struct platform_device *);
-+};
-+
-+struct dim2_platform_data {
-+      int (*enable)(struct platform_device *);
-+      void (*disable)(struct platform_device *);
- };
-
- #define iface_to_hdm(iface) container_of(iface, struct dim2_hdm, most_iface)
-@@ -686,6 +696,8 @@ static void dma_free(struct mbo *mbo, u32 size)
-       dma_free_coherent(NULL, size, mbo->virt_address, mbo->bus_address);
- }
-
-+static const struct of_device_id dim2_of_match[];
-+
- /*
-  * dim2_probe - dim2 probe handler
-  * @pdev: platform device structure
-@@ -695,7 +707,7 @@ static void dma_free(struct mbo *mbo, u32 size)
-  */
- static int dim2_probe(struct platform_device *pdev)
- {
--      struct dim2_platform_data *pdata = pdev->dev.platform_data;
-+      const struct dim2_platform_data *pdata;
-       struct dim2_hdm *dev;
-       struct resource *res;
-       int ret, i;
-@@ -703,6 +715,8 @@ static int dim2_probe(struct platform_device *pdev)
-       u8 hal_ret;
-       int irq;
-
-+      enum { MLB_INT_IDX, AHB0_INT_IDX };
-+
-       dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL);
-       if (!dev)
-               return -ENOMEM;
-@@ -710,29 +724,30 @@ static int dim2_probe(struct platform_device *pdev)
-       dev->atx_idx = -1;
-
-       platform_set_drvdata(pdev, dev);
-+
-+      dev->clk_speed = CLK_4096FS;
-+
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       dev->io_base = devm_ioremap_resource(&pdev->dev, res);
-       if (IS_ERR(dev->io_base))
-               return PTR_ERR(dev->io_base);
-
--      if (!pdata) {
--              dev_err(&pdev->dev, "missing platform data\n");
--              return -EINVAL;
--      }
--
--      ret = pdata->init ? pdata->init(pdata, dev->io_base) : 0;
-+      pdata = of_match_node(dim2_of_match, pdev->dev.of_node)->data;
-+      ret = pdata && pdata->enable ? pdata->enable(pdev) : 0;
-       if (ret)
-               return ret;
-
-+      dev->disable_platform = pdata ? pdata->disable : 0;
-+
-       dev_info(&pdev->dev, "sync: num of frames per sub-buffer: %u\n", fcnt);
--      hal_ret = dim_startup(dev->io_base, pdata->clk_speed, fcnt);
-+      hal_ret = dim_startup(dev->io_base, dev->clk_speed, fcnt);
-       if (hal_ret != DIM_NO_ERROR) {
-               dev_err(&pdev->dev, "dim_startup failed: %d\n", hal_ret);
-               ret = -ENODEV;
--              goto err_bsp_destroy;
-+              goto err_disable_platform;
-       }
-
--      irq = platform_get_irq(pdev, 0);
-+      irq = platform_get_irq(pdev, AHB0_INT_IDX);
-       if (irq < 0) {
-               dev_err(&pdev->dev, "failed to get ahb0_int irq: %d\n", irq);
-               ret = irq;
-@@ -746,7 +761,7 @@ static int dim2_probe(struct platform_device *pdev)
-               goto err_shutdown_dim;
-       }
-
--      irq = platform_get_irq(pdev, 1);
-+      irq = platform_get_irq(pdev, MLB_INT_IDX);
-       if (irq < 0) {
-               dev_err(&pdev->dev, "failed to get mlb_int irq: %d\n", irq);
-               ret = irq;
-@@ -832,9 +847,9 @@ static int dim2_probe(struct platform_device *pdev)
-       kthread_stop(dev->netinfo_task);
- err_shutdown_dim:
-       dim_shutdown();
--err_bsp_destroy:
--      if (pdata && pdata->destroy)
--              pdata->destroy(pdata);
-+err_disable_platform:
-+      if (dev->disable_platform)
-+              dev->disable_platform(pdev);
-
-       return ret;
- }
-@@ -848,7 +863,6 @@ static int dim2_probe(struct platform_device *pdev)
- static int dim2_remove(struct platform_device *pdev)
- {
-       struct dim2_hdm *dev = platform_get_drvdata(pdev);
--      struct dim2_platform_data *pdata = pdev->dev.platform_data;
-       unsigned long flags;
-
-       dim2_sysfs_destroy(&dev->bus);
-@@ -859,37 +873,187 @@ static int dim2_remove(struct platform_device *pdev)
-       dim_shutdown();
-       spin_unlock_irqrestore(&dim_lock, flags);
-
--      if (pdata && pdata->destroy)
--              pdata->destroy(pdata);
-+      if (dev->disable_platform)
-+              dev->disable_platform(pdev);
-+
-+      return 0;
-+}
-+
-+/* platform specific functions [[ */
-+
-+static int fsl_mx6_enable(struct platform_device *pdev)
-+{
-+      struct dim2_hdm *dev = platform_get_drvdata(pdev);
-+      int ret;
-+
-+      dev->clk = devm_clk_get(&pdev->dev, "mlb");
-+      if (IS_ERR_OR_NULL(dev->clk)) {
-+              dev_err(&pdev->dev, "unable to get mlb clock\n");
-+              return -EFAULT;
-+      }
-+
-+      ret = clk_prepare_enable(dev->clk);
-+      if (ret) {
-+              dev_err(&pdev->dev, "%s\n", "clk_prepare_enable failed");
-+              return ret;
-+      }
-+
-+      if (dev->clk_speed >= CLK_2048FS) {
-+              /* enable pll */
-+              dev->clk_pll = devm_clk_get(&pdev->dev, "pll8_mlb");
-+              if (IS_ERR_OR_NULL(dev->clk_pll)) {
-+                      dev_err(&pdev->dev, "unable to get mlb pll clock\n");
-+                      clk_disable_unprepare(dev->clk);
-+                      return -EFAULT;
-+              }
-+
-+              writel(0x888, dev->io_base + 0x38);
-+              clk_prepare_enable(dev->clk_pll);
-+      }
-+
-+      return 0;
-+}
-+
-+static void fsl_mx6_disable(struct platform_device *pdev)
-+{
-+      struct dim2_hdm *dev = platform_get_drvdata(pdev);
-+
-+      if (dev->clk_speed >= CLK_2048FS)
-+              clk_disable_unprepare(dev->clk_pll);
-+
-+      clk_disable_unprepare(dev->clk);
-+}
-+
-+static int rcar_h2_enable(struct platform_device *pdev)
-+{
-+      struct dim2_hdm *dev = platform_get_drvdata(pdev);
-+      int ret;
-+
-+      dev->clk = devm_clk_get(&pdev->dev, NULL);
-+      if (IS_ERR(dev->clk)) {
-+              dev_err(&pdev->dev, "cannot get clock\n");
-+              return PTR_ERR(dev->clk);
-+      }
-+
-+      ret = clk_prepare_enable(dev->clk);
-+      if (ret) {
-+              dev_err(&pdev->dev, "%s\n", "clk_prepare_enable failed");
-+              return ret;
-+      }
-+
-+      if (dev->clk_speed >= CLK_2048FS) {
-+              /* enable MLP pll and LVDS drivers */
-+              writel(0x03, dev->io_base + 0x600);
-+              /* set bias */
-+              writel(0x888, dev->io_base + 0x38);
-+      } else {
-+              /* PLL */
-+              writel(0x04, dev->io_base + 0x600);
-+      }
-+
-
--      /*
--       * break link to local platform_device_id struct
--       * to prevent crash by unload platform device module
--       */
--      pdev->id_entry = NULL;
-+      /* BBCR = 0b11 */
-+      writel(0x03, dev->io_base + 0x500);
-+      writel(0x0002FF02, dev->io_base + 0x508);
-
-       return 0;
- }
-
--static const struct platform_device_id dim2_id[] = {
--      { "medialb_dim2" },
--      { }, /* Terminating entry */
-+static void rcar_h2_disable(struct platform_device *pdev)
-+{
-+      struct dim2_hdm *dev = platform_get_drvdata(pdev);
-+
-+      clk_disable_unprepare(dev->clk);
-+
-+      /* disable PLLs and LVDS drivers */
-+      writel(0x0, dev->io_base + 0x600);
-+}
-+
-+static int rcar_m3_enable(struct platform_device *pdev)
-+{
-+      struct dim2_hdm *dev = platform_get_drvdata(pdev);
-+      u32 enable_512fs = dev->clk_speed == CLK_512FS;
-+      int ret;
-+
-+      dev->clk = devm_clk_get(&pdev->dev, NULL);
-+      if (IS_ERR(dev->clk)) {
-+              dev_err(&pdev->dev, "cannot get clock\n");
-+              return PTR_ERR(dev->clk);
-+      }
-+
-+      ret = clk_prepare_enable(dev->clk);
-+      if (ret) {
-+              dev_err(&pdev->dev, "%s\n", "clk_prepare_enable failed");
-+              return ret;
-+      }
-+
-+      /* PLL */
-+      writel(0x04, dev->io_base + 0x600);
-+
-+      writel(enable_512fs, dev->io_base + 0x604);
-+
-+      /* BBCR = 0b11 */
-+      writel(0x03, dev->io_base + 0x500);
-+      writel(0x0002FF02, dev->io_base + 0x508);
-+
-+      return 0;
-+}
-+
-+static void rcar_m3_disable(struct platform_device *pdev)
-+{
-+      struct dim2_hdm *dev = platform_get_drvdata(pdev);
-+
-+      clk_disable_unprepare(dev->clk);
-+
-+      /* disable PLLs and LVDS drivers */
-+      writel(0x0, dev->io_base + 0x600);
-+}
-+
-+/* ]] platform specific functions */
-+
-+enum dim2_platforms { FSL_MX6, RCAR_H2, RCAR_M3 };
-+
-+static struct dim2_platform_data plat_data[] = {
-+      [FSL_MX6] = { .enable = fsl_mx6_enable, .disable = fsl_mx6_disable },
-+      [RCAR_H2] = { .enable = rcar_h2_enable, .disable = rcar_h2_disable },
-+      [RCAR_M3] = { .enable = rcar_m3_enable, .disable = rcar_m3_disable },
-+};
-+
-+static const struct of_device_id dim2_of_match[] = {
-+      {
-+              .compatible = "fsl,imx6q-mlb150",
-+              .data = plat_data + FSL_MX6
-+      },
-+      {
-+              .compatible = "renesas,mlp",
-+              .data = plat_data + RCAR_H2
-+      },
-+      {
-+              .compatible = "rcar,medialb-dim2",
-+              .data = plat_data + RCAR_M3
-+      },
-+      {
-+              .compatible = "xlnx,axi4-os62420_3pin-1.00.a",
-+      },
-+      {
-+              .compatible = "xlnx,axi4-os62420_6pin-1.00.a",
-+      },
-+      {},
- };
-
--MODULE_DEVICE_TABLE(platform, dim2_id);
-+MODULE_DEVICE_TABLE(of, dim2_of_match);
-
- static struct platform_driver dim2_driver = {
-       .probe = dim2_probe,
-       .remove = dim2_remove,
--      .id_table = dim2_id,
-       .driver = {
-               .name = "hdm_dim2",
-+              .of_match_table = dim2_of_match,
-       },
- };
-
- module_platform_driver(dim2_driver);
-
--MODULE_AUTHOR("Jain Roy Ambi <JainRoy.Ambi@microchip.com>");
- MODULE_AUTHOR("Andrey Shvetsov <andrey.shvetsov@k2l.de>");
- MODULE_DESCRIPTION("MediaLB DIM2 Hardware Dependent Module");
- MODULE_LICENSE("GPL");
-libgit2 0.26.0
diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0008-dim2-read-clock-speed-from-the-device-tree.patch b/meta-agl-profile-core/recipes-kernel/most/files/0008-dim2-read-clock-speed-from-the-device-tree.patch
deleted file mode 100644 (file)
index 1b01fb1..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-From 839ad403a2d8081a6c15f6fc2836b01919338f3c Mon Sep 17 00:00:00 2001
-From: Andrey Shvetsov <andrey.shvetsov@k2l.de>
-Date: Mon, 12 Feb 2018 12:24:37 +0100
-Subject: [PATCH] staging: most: dim2: read clock speed from the device tree
-
-This implements reading of the clock speed parameter from the device
-tree.
-
-Signed-off-by: Andrey Shvetsov <andrey.shvetsov@k2l.de>
----
- Documentation/devicetree/bindings/inic/microchip,inic-dim2.txt | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- hdm-dim2/dim2_hdm.c                       | 50 +++++++++++++++++++++++++++++++++++++++++++++++++-
- 2 files changed, 113 insertions(+), 1 deletion(-)
- create mode 100644 Documentation/devicetree/bindings/inic/microchip,inic-dim2.txt
-
-diff --git a/hdm-dim2/dim2_hdm.c b/hdm-dim2/dim2_hdm.c
-index 2dba917..05e1896 100644
---- a/hdm-dim2/dim2_hdm.c
-+++ b/hdm-dim2/dim2_hdm.c
-@@ -698,6 +698,42 @@ static void dma_free(struct mbo *mbo, u32 size)
-
- static const struct of_device_id dim2_of_match[];
-
-+static struct {
-+      const char *clock_speed;
-+      u8 clk_speed;
-+} clk_mt[] = {
-+      { "256fs", CLK_256FS },
-+      { "512fs", CLK_512FS },
-+      { "1024fs", CLK_1024FS },
-+      { "2048fs", CLK_2048FS },
-+      { "3072fs", CLK_3072FS },
-+      { "4096fs", CLK_4096FS },
-+      { "6144fs", CLK_6144FS },
-+      { "8192fs", CLK_8192FS },
-+};
-+
-+/**
-+ * get_dim2_clk_speed - converts string to DIM2 clock speed value
-+ *
-+ * @clock_speed: string in the format "{NUMBER}fs"
-+ * @val: pointer to get one of the CLK_{NUMBER}FS values
-+ *
-+ * By success stores one of the CLK_{NUMBER}FS in the *val and returns 0,
-+ * otherwise returns -EINVAL.
-+ */
-+static int get_dim2_clk_speed(const char *clock_speed, u8 *val)
-+{
-+      int i;
-+
-+      for (i = 0; i < ARRAY_SIZE(clk_mt); i++) {
-+              if (!strcmp(clock_speed, clk_mt[i].clock_speed)) {
-+                      *val = clk_mt[i].clk_speed;
-+                      return 0;
-+              }
-+      }
-+      return -EINVAL;
-+}
-+
- /*
-  * dim2_probe - dim2 probe handler
-  * @pdev: platform device structure
-@@ -708,6 +744,7 @@ static const struct of_device_id dim2_of_match[];
- static int dim2_probe(struct platform_device *pdev)
- {
-       const struct dim2_platform_data *pdata;
-+      const char *clock_speed;
-       struct dim2_hdm *dev;
-       struct resource *res;
-       int ret, i;
-@@ -725,7 +762,18 @@ static int dim2_probe(struct platform_device *pdev)
-
-       platform_set_drvdata(pdev, dev);
-
--      dev->clk_speed = CLK_4096FS;
-+      ret = of_property_read_string(pdev->dev.of_node,
-+                                    "microchip,clock-speed", &clock_speed);
-+      if (ret) {
-+              dev_err(&pdev->dev, "missing dt property clock-speed\n");
-+              return ret;
-+      }
-+
-+      ret = get_dim2_clk_speed(clock_speed, &dev->clk_speed);
-+      if (ret) {
-+              dev_err(&pdev->dev, "bad dt property clock-speed\n");
-+              return ret;
-+      }
-
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       dev->io_base = devm_ioremap_resource(&pdev->dev, res);
---
-libgit2 0.26.0
diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0009-dim2-use-device-for-coherent-memory-allocation.patch b/meta-agl-profile-core/recipes-kernel/most/files/0009-dim2-use-device-for-coherent-memory-allocation.patch
deleted file mode 100644 (file)
index 08cd6f9..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-From 756f2f1f90524c2620ed7951e436d13bdb929a6b Mon Sep 17 00:00:00 2001
-From: Andrey Shvetsov <andrey.shvetsov@k2l.de>
-Date: Mon, 12 Feb 2018 12:25:37 +0100
-Subject: [PATCH] staging: most: dim2: use device for coherent memory allocation
-
-On several modern architectures the allocation of coherent memory needs
-a device that has the dma_ops properly set.  This patch enables use of
-the DIM2 platform device for the allocation process.
-
-Signed-off-by: Andrey Shvetsov <andrey.shvetsov@k2l.de>
----
- hdm-dim2/dim2_hdm.c |  9 +++++++--
- 1 file changed, 7 insertions(+), 2 deletions(-)
-
-diff --git a/hdm-dim2/dim2_hdm.c b/hdm-dim2/dim2_hdm.c
-index 05e1896..1847091 100644
---- a/hdm-dim2/dim2_hdm.c
-+++ b/hdm-dim2/dim2_hdm.c
-@@ -688,12 +688,16 @@ static int poison_channel(struct most_interface *most_iface, int ch_idx)
-
- static void *dma_alloc(struct mbo *mbo, u32 size)
- {
--      return dma_alloc_coherent(NULL, size, &mbo->bus_address, GFP_KERNEL);
-+      struct device *dev = mbo->ifp->dev;
-+
-+      return dma_alloc_coherent(dev, size, &mbo->bus_address, GFP_KERNEL);
- }
-
- static void dma_free(struct mbo *mbo, u32 size)
- {
--      dma_free_coherent(NULL, size, mbo->virt_address, mbo->bus_address);
-+      struct device *dev = mbo->ifp->dev;
-+
-+      dma_free_coherent(dev, size, mbo->virt_address, mbo->bus_address);
- }
-
- static const struct of_device_id dim2_of_match[];
-@@ -875,6 +879,7 @@ static int dim2_probe(struct platform_device *pdev)
-       dev->most_iface.poison_channel = poison_channel;
-       dev->most_iface.request_netinfo = request_netinfo;
-       dev->most_iface.extra_attrs = DBR_ATTRS;
-+      dev->most_iface.dev = &pdev->dev;
-
-       kobj = most_register_interface(&dev->most_iface);
-       if (IS_ERR(kobj)) {
---
-libgit2 0.26.0
diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0010-backport-usb-setup-timer.patch b/meta-agl-profile-core/recipes-kernel/most/files/0010-backport-usb-setup-timer.patch
deleted file mode 100644 (file)
index ff21b21..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-From 8eaec876f732c7e4b238ada5f9304c6da2380eb1 Mon Sep 17 00:00:00 2001
-From: Andrey Shvetsov <andrey.shvetsov@k2l.de>
-Date: Fri, 8 Feb 2019 22:44:32 +0000
-Subject: [PATCH] backport: usb: setup_timer
-
----
- driver/hdm-usb/hdm_usb.c | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/hdm-usb/hdm_usb.c b/hdm-usb/hdm_usb.c
-index 5b0af88..9896835 100644
---- a/hdm-usb/hdm_usb.c
-+++ b/hdm-usb/hdm_usb.c
-@@ -760,9 +760,9 @@ static void hdm_request_netinfo(struct most_interface *iface, int channel,
-  * The handler runs in interrupt context. That's why we need to defer the
-  * tasks to a work queue.
-  */
--static void link_stat_timer_handler(unsigned long data)
-+static void link_stat_timer_handler(struct timer_list *t)
- {
--      struct most_dev *mdev = (struct most_dev *)data;
-+      struct most_dev *mdev = from_timer(mdev, t, link_stat_timer);
-       schedule_work(&mdev->poll_work_obj);
-       mdev->link_stat_timer.expires = jiffies + (2 * HZ);
-@@ -1154,8 +1154,7 @@ hdm_probe(struct usb_interface *interface, const struct usb_device_id *id)
-       num_endpoints = usb_iface_desc->desc.bNumEndpoints;
-       mutex_init(&mdev->io_mutex);
-       INIT_WORK(&mdev->poll_work_obj, wq_netinfo);
--      setup_timer(&mdev->link_stat_timer, link_stat_timer_handler,
--                  (unsigned long)mdev);
-+      timer_setup(&mdev->link_stat_timer, link_stat_timer_handler, 0);
-       mdev->usb_device = usb_dev;
-       mdev->link_stat_timer.expires = jiffies + (2 * HZ);
diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0011-handle-snd_pcm_lib_mmap_vmalloc-removal.patch b/meta-agl-profile-core/recipes-kernel/most/files/0011-handle-snd_pcm_lib_mmap_vmalloc-removal.patch
deleted file mode 100644 (file)
index d4383c4..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-Handle snd_pcm_lib_mmap_vmalloc removal in 4.19
-
-Add .mmap field back to pcm_ops for kernels older than 4.19.
-
-Upstream-Status: Inappropriate
-
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-
-diff --git a/aim-sound/sound.c b/aim-sound/sound.c
-index 4b3329b..c0a26be 100644
---- a/aim-sound/sound.c
-+++ b/aim-sound/sound.c
-@@ -17,6 +17,7 @@
- #include <linux/printk.h>
- #include <linux/kernel.h>
- #include <linux/init.h>
-+#include <linux/version.h>
- #include <sound/core.h>
- #include <sound/pcm.h>
- #include <sound/pcm_params.h>
-@@ -463,6 +464,9 @@ static const struct snd_pcm_ops pcm_ops = {
-       .trigger    = pcm_trigger,
-       .pointer    = pcm_pointer,
-       .page       = snd_pcm_lib_get_vmalloc_page,
-+#if LINUX_VERSION_CODE <  KERNEL_VERSION(4,19,0)
-+      .mmap       = snd_pcm_lib_mmap_vmalloc,
-+#endif
- };
- static int split_arg_list(char *buf, char **card_name, u16 *ch_num,
diff --git a/meta-agl-profile-core/recipes-kernel/most/files/0012-Fix-build-with-5.4-kernel.patch b/meta-agl-profile-core/recipes-kernel/most/files/0012-Fix-build-with-5.4-kernel.patch
deleted file mode 100644 (file)
index 02eca27..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-From 877d7475413bb787deb07aa83bafac03efa399fa Mon Sep 17 00:00:00 2001
-From: Paul Barker <paul.barker@sancloud.co.uk>
-Date: Mon, 24 Feb 2020 14:58:52 +0000
-Subject: [PATCH] Fix build with 5.4 kernel
-
-Signed-off-by: Paul Barker <paul.barker@sancloud.co.uk>
----
- driver/Makefile | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/Makefile b/Makefile
-index 281241d..609e692 100644
---- a/Makefile
-+++ b/Makefile
-@@ -5,6 +5,7 @@ SRC := $(shell pwd)
- obj-m := mostcore.o
- mostcore-y := mostcore/core.o
- CFLAGS_core.o := -I$(src)/include/
-+CFLAGS_mostcore/core.o := -I$(src)/include/
- obj-m += default_conf.o
- CFLAGL_default_conf.o := -I$(src)/include
-@@ -12,33 +13,41 @@ CFLAGL_default_conf.o := -I$(src)/include
- obj-m += aim_cdev.o
- aim_cdev-y := aim-cdev/cdev.o
- CFLAGS_cdev.o := -I$(src)/include/
-+CFLAGS_aim-cdev/cdev.o := -I$(src)/include/
- obj-m += aim_network.o
- aim_network-y := aim-network/networking.o
- CFLAGS_networking.o := -I$(src)/include/
-+CFLAGS_aim-network/networking.o := -I$(src)/include/
- obj-m += aim_sound.o
- aim_sound-y := aim-sound/sound.o
- CFLAGS_sound.o := -I$(src)/include/
-+CFLAGS_aim-sound/sound.o := -I$(src)/include/
- obj-m += aim_v4l2.o
- aim_v4l2-y := aim-v4l2/video.o
- CFLAGS_video.o := -Idrivers/media/video -I$(src)/include/
-+CFLAGS_aim-v4l2/video.o := -Idrivers/media/video -I$(src)/include/
- obj-m += hdm_i2c.o
- hdm_i2c-y := hdm-i2c/hdm_i2c.o
- CFLAGS_hdm_i2c.o := -I$(src)/include/
-+CFLAGS_hdm-i2c/hdm_i2c.o := -I$(src)/include/
- ifdef CONFIG_OF
- obj-m += hdm_dim2.o
- hdm_dim2-y := hdm-dim2/dim2_hdm.o hdm-dim2/dim2_hal.o hdm-dim2/dim2_sysfs.o
- CFLAGS_dim2_hdm.o := -I$(src)/include/
-+CFLAGS_hdm-dim2/dim2_hdm.o := -I$(src)/include/
-+CFLAGS_hdm-dim2/dim2_hal.o := -I$(src)/include/
-+CFLAGS_hdm-dim2/dim2_sysfs.o := -I$(src)/include/
- endif
- obj-m += hdm_usb.o
- hdm_usb-y := hdm-usb/hdm_usb.o
- CFLAGS_hdm_usb.o := -I$(src)/include/
--
-+CFLAGS_hdm-usb/hdm_usb.o := -I$(src)/include/
- all:
-       $(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules
--- 
-2.20.1
-
diff --git a/meta-agl-profile-core/recipes-kernel/most/most.bb b/meta-agl-profile-core/recipes-kernel/most/most.bb
deleted file mode 100644 (file)
index 48959a6..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-DESCRIPTION = "Build MOST driver"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
-
-inherit module
-
-PV = "0.1"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/most;protocol=https;branch=${AGL_BRANCH}"
-
-S = "${WORKDIR}/git/driver"
-SRCREV = "e4dbbaf9e7652efaed0df3e0aab4464f5f228573"
-
-KERNEL_MODULE_AUTOLOAD += "aim_cdev aim_sound aim_network aim_v4l2 hdm_i2c hdm_dim2 hdm_usb mostcore"
diff --git a/meta-agl-profile-core/recipes-kernel/most/most.bbappend b/meta-agl-profile-core/recipes-kernel/most/most.bbappend
deleted file mode 100644 (file)
index ad422eb..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-SRC_URI_append = " \
-        file://0002-src-most-add-auto-conf-feature.patch \
-        file://0003-core-remove-kernel-log-for-MBO-status.patch \
-        file://0004-most-video-set-device_caps.patch \
-        file://0005-most-video-set-V4L2_CAP_DEVICE_CAPS-flag.patch \
-        file://0006-dim2-fix-startup-sequence.patch \
-        file://0007-dim2-use-device-tree.patch \
-        file://0008-dim2-read-clock-speed-from-the-device-tree.patch \
-        file://0009-dim2-use-device-for-coherent-memory-allocation.patch \
-        file://0010-backport-usb-setup-timer.patch \
-        file://0011-handle-snd_pcm_lib_mmap_vmalloc-removal.patch \
-        file://0012-Fix-build-with-5.4-kernel.patch \
-"
diff --git a/meta-agl-profile-core/recipes-multimedia/libmp4v2/files/0001-add-a-configure-option-to-disable-build-of-man-pages.patch b/meta-agl-profile-core/recipes-multimedia/libmp4v2/files/0001-add-a-configure-option-to-disable-build-of-man-pages.patch
deleted file mode 100644 (file)
index 51896e8..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-From 530a31e3eb24b2f1ed7b30859ed62a2d1b24bd91 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@googlemail.com>
-Date: Tue, 7 Feb 2017 11:51:58 +0100
-Subject: [PATCH] add a configure option to disable build of man-pages
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Upstream-Status: Pending
-
-Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
----
- configure.ac | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 8316c67..099fc0c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -67,6 +67,8 @@ AC_ARG_ENABLE([largefile],
-     [AS_HELP_STRING([--disable-largefile],[disable LFS (large file support)])])
- AC_ARG_ENABLE([util],
-     [AS_HELP_STRING([--disable-util],[disable build of command-line utilities])])
-+AC_ARG_ENABLE([man],
-+    [AS_HELP_STRING([--disable-man],[disable build of man-pages])])
- AC_ARG_ENABLE([bi],
-     [AS_HELP_STRING([--enable-bi=ARCH],[enable -mARCH for bi-arch compilation])])
- AC_ARG_ENABLE([ub],
-@@ -395,7 +397,7 @@ AM_CONDITIONAL([ADD_PLATFORM_POSIX],[test "$X_PLATFORM" = "posix"])
- AM_CONDITIONAL([ADD_PLATFORM_WIN32],[test "$X_PLATFORM" = "win32"])
- AM_CONDITIONAL([ADD_UTIL],[test "$enable_util" != "no"])
--AM_CONDITIONAL([ADD_MANS],[test "$X_PLATFORM" != "win32"])
-+AM_CONDITIONAL([ADD_MANS],[test "$enable_man" != "no"])
- ###############################################################################
- # declare common substitutions
--- 
-2.9.3
-
diff --git a/meta-agl-profile-core/recipes-multimedia/libmp4v2/libmp4v2_git.bb b/meta-agl-profile-core/recipes-multimedia/libmp4v2/libmp4v2_git.bb
deleted file mode 100644 (file)
index dd1b347..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "The MP4v2 library provides an API to create and modify mp4 files"
-HOMEPAGE = "https://github.com/sergiomb2/libmp4v2/wiki"
-LICENSE = "MPLv1.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=eb3014b036b6d2151d944aef6a84c36f"
-
-inherit autotools-brokensep pkgconfig
-
-SRC_URI = " \
-    git://github.com/sergiomb2/${BPN}.git \
-    file://0001-add-a-configure-option-to-disable-build-of-man-pages.patch \
-"
-SRCREV = "855e9674232808ff3be7191b697dfb56917db21f"
-S = "${WORKDIR}/git"
-PV = "2.1.0+git${SRCPV}"
-
-
-SECURITY_CFLAGS = "${SECURITY_NO_PIE_CFLAGS}"
-EXTRA_OECONF = "--disable-man"
diff --git a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/.appends.meta-efl b/meta-agl-profile-core/recipes-multimedia/lightmediascanner/.appends.meta-efl
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/0001-Define-comparison_fn_t-for-non-glibc-systems.patch b/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/0001-Define-comparison_fn_t-for-non-glibc-systems.patch
deleted file mode 100644 (file)
index 15d4b3f..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-From 5bc5b8c5dad3edec6736fd7e7ce61250c4ce3725 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Wed, 12 Jul 2017 17:13:19 -0700
-Subject: [PATCH] Define comparison_fn_t for non-glibc systems
-
-lightmediascanner.c:324:12: error: 'comparison_fn_t' undeclared (first use in this function)
-           (comparison_fn_t)_plugin_sort);
-            ^~~~~~~~~~~~~~~
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/lib/lightmediascanner.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/lib/lightmediascanner.c b/src/lib/lightmediascanner.c
-index 344b247..b866883 100644
---- a/src/lib/lightmediascanner.c
-+++ b/src/lib/lightmediascanner.c
-@@ -37,6 +37,11 @@
- #define DEFAULT_SLAVE_TIMEOUT 1000
- #define DEFAULT_COMMIT_INTERVAL 100
-+#if !defined(__GLIBC__)
-+typedef int (*__compar_fn_t) (const void*, const void*);
-+typedef __compar_fn_t comparison_fn_t;
-+#endif
-+
- #ifdef HAVE_MAGIC_H
- static magic_t _magic_handle;
--- 
-2.13.2
-
diff --git a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/0002-switch-from-G_BUS_TYPE_SESSION-to-G_BUS_TYPE_SYSTEM.patch b/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/0002-switch-from-G_BUS_TYPE_SESSION-to-G_BUS_TYPE_SYSTEM.patch
deleted file mode 100644 (file)
index 5abb980..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-From 5a618b444e424483c3a9d34dd9b196796cac8e3f Mon Sep 17 00:00:00 2001
-From: Matt Ranostay <matt.ranostay@konsulko.com>
-Date: Mon, 22 Jul 2019 13:29:52 -0700
-Subject: [PATCH] switch from G_BUS_TYPE_SESSION to G_BUS_TYPE_SYSTEM
-
-Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
----
- src/bin/lightmediascannerctl.c | 4 ++--
- src/bin/lightmediascannerd.c   | 2 +-
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/bin/lightmediascannerctl.c b/src/bin/lightmediascannerctl.c
-index 5764bc0..1d4d844 100644
---- a/src/bin/lightmediascannerctl.c
-+++ b/src/bin/lightmediascannerctl.c
-@@ -11,7 +11,7 @@ start_service_by_name(void)
-     GVariant *var;
-     GDBusConnection *conn;
--    conn = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &error);
-+    conn = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
-     if (error) {
-         fprintf(stderr, "Could not get session bus connection: %s\n",
-                 error->message);
-@@ -526,7 +526,7 @@ main(int argc, char *argv[])
-     app.timer = NULL;
-     app.loop = g_main_loop_new(NULL, FALSE);
--    app.proxy = g_dbus_proxy_new_for_bus_sync(G_BUS_TYPE_SESSION,
-+    app.proxy = g_dbus_proxy_new_for_bus_sync(G_BUS_TYPE_SYSTEM,
-                                               G_DBUS_PROXY_FLAGS_NONE,
-                                               NULL,
-                                               "org.lightmediascanner",
-diff --git a/src/bin/lightmediascannerd.c b/src/bin/lightmediascannerd.c
-index 319db42..6db81cc 100644
---- a/src/bin/lightmediascannerd.c
-+++ b/src/bin/lightmediascannerd.c
-@@ -1721,7 +1721,7 @@ main(int argc, char *argv[])
-     introspection_data = g_dbus_node_info_new_for_xml(introspection_xml, NULL);
-     g_assert(introspection_xml != NULL);
--    id = g_bus_own_name(G_BUS_TYPE_SESSION, "org.lightmediascanner",
-+    id = g_bus_own_name(G_BUS_TYPE_SYSTEM, "org.lightmediascanner",
-                         G_BUS_NAME_OWNER_FLAGS_NONE,
-                         NULL, on_name_acquired, NULL, NULL, NULL);
--- 
-2.20.1
-
diff --git a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/dbus-lightmediascanner.conf b/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/dbus-lightmediascanner.conf
deleted file mode 100644 (file)
index 8a9e35b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0"?> <!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<busconfig>
-    <policy user="root">
-        <allow own="org.lightmediascanner"/>
-        <allow send_destination="org.lightmediascanner"/>
-        <allow receive_type="signal" receive_sender="org.lightmediascanner" receive_interface="org.freedesktop.DBus.Properties"/>
-    </policy>
-
-    <policy at_console="true">
-        <allow send_destination="org.lightmediascanner"/>
-    </policy>
-</busconfig>
diff --git a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/id3-plugin-support-out-of-tree-build.patch b/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/id3-plugin-support-out-of-tree-build.patch
deleted file mode 100644 (file)
index 9528bec..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/src/plugins/Makefile.am  2015-10-25 16:12:29.331415823 +0000
-+++ b/src/plugins/Makefile.am  2015-10-25 16:14:37.593415808 +0000
-@@ -93,7 +93,7 @@
- id3_id3_la_SOURCES = id3/id3.c id3/id3v1_genres.c
- id3_id3_la_LIBADD = $(PLUGINS_LIBADD)
--id3/id3v1_genres.c: $(srcdir)/id3/id3v1_genres.def $(srcdir)/id3/id3v1_genres_gen.awk
-+$(srcdir)/id3/id3v1_genres.c: $(srcdir)/id3/id3v1_genres.def $(srcdir)/id3/id3v1_genres_gen.awk
-       $(AWK) -f $(srcdir)/id3/id3v1_genres_gen.awk $(srcdir)/id3/id3v1_genres.def > $@
- EXTRA_DIST += id3/id3v1_genres.def id3/id3v1_genres_gen.awk
diff --git a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/lightmediascanner.service b/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/lightmediascanner.service
deleted file mode 100644 (file)
index 63b48eb..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-[Unit]
-Description=Lightmediascanner (LMS)
-After=run-agl-postinsts.service systemd-remount-fs.service systemd-tmpfiles-setup.service tmp.mount
-ConditionPathIsReadWrite=/var/volatile/tmp
-
-[Service]
-Type=dbus
-Restart=on-failure
-RestartSec=0
-BusName=org.lightmediascanner
-SmackProcessLabel=User::App::agl-service-mediascanner
-ExecStart=/usr/bin/lightmediascannerd --startup-scan --db-path=/var/volatile/tmp/lightmediascannerd.db --directory=/media
-
-[Install]
-WantedBy=multi-user.target
-Alias=dbus-org.lightmediascanner.service
diff --git a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/plugin-ogg-fix-chucksize-issue.patch b/meta-agl-profile-core/recipes-multimedia/lightmediascanner/files/plugin-ogg-fix-chucksize-issue.patch
deleted file mode 100644 (file)
index 6a0b8ff..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-From 3e66b97221440b17a184feb48692dce7e0561cac Mon Sep 17 00:00:00 2001
-From: Matt Ranostay <matt.ranostay@konsulko.com>
-Date: Wed, 8 Mar 2017 16:30:01 -0800
-Subject: [PATCH] plugin: ogg: fix chucksize issue
-
-There are some OGG files that have metadata chucks that go over the
-hardcoded 10 * 4096 size due to album art. This patchset just parses
-each chuck and continues till it runs out of valid chunks.
-
-Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
----
- src/plugins/ogg/ogg.c | 11 ++---------
- 1 file changed, 2 insertions(+), 9 deletions(-)
-
-diff --git a/src/plugins/ogg/ogg.c b/src/plugins/ogg/ogg.c
-index 1c0818e..c94dc38 100644
---- a/src/plugins/ogg/ogg.c
-+++ b/src/plugins/ogg/ogg.c
-@@ -47,8 +47,6 @@
- int CHUNKSIZE = 4096;
- #endif
--#define MAX_CHUNKS_PER_PAGE 10
--
- struct stream {
-     struct lms_stream base;
-     int serial;
-@@ -122,10 +120,8 @@ _set_lms_info(struct lms_string_size *info, const char *tag)
- static bool _ogg_read_page(FILE *fp, ogg_sync_state *osync, ogg_page *page)
- {
--    int i;
--
--    for (i = 0; i < MAX_CHUNKS_PER_PAGE && ogg_sync_pageout(osync, page) != 1;
--         i++) {
-+    while(ogg_sync_pageout(osync, page) != 1)
-+    {
-         lms_ogg_buffer_t buffer = lms_get_ogg_sync_buffer(osync, CHUNKSIZE);
-         int bytes = fread(buffer, 1, CHUNKSIZE, fp);
-@@ -136,9 +132,6 @@ static bool _ogg_read_page(FILE *fp, ogg_sync_state *osync, ogg_page *page)
-         ogg_sync_wrote(osync, bytes);
-     }
--    if (i > MAX_CHUNKS_PER_PAGE)
--        return false;
--
-     return true;
- }
--- 
-2.7.4
-
diff --git a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/lightmediascanner_%.bbappend b/meta-agl-profile-core/recipes-multimedia/lightmediascanner/lightmediascanner_%.bbappend
deleted file mode 100644 (file)
index b47b279..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-# Disable everything but the roygalty-free formats
-PACKAGECONFIG = "ogg flac wave m3u pls jpeg png"
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-SRC_URI += "file://lightmediascanner.service \
-            file://plugin-ogg-fix-chucksize-issue.patch \
-            file://0002-switch-from-G_BUS_TYPE_SESSION-to-G_BUS_TYPE_SYSTEM.patch \
-            file://dbus-lightmediascanner.conf \
-           "
-
-CFLAGS_append = " -D_FILE_OFFSET_BITS=64"
-
-inherit systemd
-
-SYSTEMD_PACKAGES = "${PN}"
-SYSTEMD_SERVICE_${PN} = "lightmediascanner.service"
-SYSTEMD_AUTO_ENABLE_${PN} = "enable"
-
-do_install_append() {
-       # Install LMS systemd service
-       if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-              install -d ${D}${systemd_system_unitdir}
-              install -m 644 -p -D ${WORKDIR}/lightmediascanner.service ${D}${systemd_system_unitdir}/lightmediascanner.service
-       fi
-
-       install -d ${D}/etc/dbus-1/system.d
-       install -m 0644 ${WORKDIR}/dbus-lightmediascanner.conf ${D}/etc/dbus-1/system.d/org.lightmediascanner.conf
-}
-
-FILES_${PN} += " \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_system_unitdir}/lightmediascanner.service', '', d)} \
-    "
-
-EXTRA_OECONF = "--enable-static --with-dbus-services=${datadir}/dbus-1/system-services"
-PACKAGECONFIG[mp4] = "--enable-mp4,--disable-mp4,libmp4v2"
-
-# add support MP3 because of the format of music files for AGL CES/ALS2017 Demo
-PACKAGECONFIG_append = " id3 mp4"
-
-# add required character sets for id3 tag scanning
-RDEPENDS_${PN}_append = " glibc-gconv-utf-16 glibc-gconv-iso8859-1"
diff --git a/meta-agl-profile-core/recipes-multimedia/lightmediascanner/lightmediascanner_0.5.1.bb b/meta-agl-profile-core/recipes-multimedia/lightmediascanner/lightmediascanner_0.5.1.bb
deleted file mode 100644 (file)
index f215876..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-SUMMARY = "Lightweight media scanner"
-DESCRIPTION = "Lightweight media scanner meant to be used in not-so-powerful devices, like embedded systems or old machines."
-SECTION = "libs/multimedia"
-
-LICENSE = "LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
-                    file://src/lib/lightmediascanner.c;endline=21;md5=6d8889bccb4c6c27e8b786342a3eb267"
-
-DEPENDS = "file gawk glib-2.0 sqlite3"
-
-PV = "0.5.1+git${SRCPV}"
-SRCREV = "adfddb3486276a5ed2f5008c9e43a811e1271cc9"
-SRC_URI = "git://github.com/profusion/lightmediascanner.git \
-           file://id3-plugin-support-out-of-tree-build.patch \
-           file://0001-Define-comparison_fn_t-for-non-glibc-systems.patch \
-          "
-
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig
-
-EXTRA_OECONF = "--enable-static --disable-mp4"
-
-PACKAGECONFIG ??= "ogg flac wave id3 m3u pls asf rm jpeg png"
-PACKAGECONFIG[generic] = "--enable-generic,--disable-generic,libav"
-PACKAGECONFIG[ogg] = "--enable-ogg,--disable-ogg,libogg libvorbis libtheora"
-PACKAGECONFIG[flac] = "--enable-flac,--disable-flac,flac"
-PACKAGECONFIG[wave] = "--enable-wave,--disable-wave"
-PACKAGECONFIG[id3] = "--enable-id3,--disable-id3"
-PACKAGECONFIG[m3u] = "--enable-m3u,--disable-m3u"
-PACKAGECONFIG[pls] = "--enable-pls,--disable-pls"
-PACKAGECONFIG[asf] = "--enable-asf,--disable-asf"
-PACKAGECONFIG[rm] = "--enable-rm,--disable-rm"
-PACKAGECONFIG[jpeg] = "--enable-jpeg,--disable-jpeg"
-PACKAGECONFIG[png] = "--enable-png,--disable-png"
-
-do_install_append() {
-       # Install "test" binary for corresponding package
-       install -d ${D}/${bindir}
-       install -m 755 ${B}/src/bin/.libs/test ${D}/${bindir}/test-lms
-       # Remove .la files for loadable modules
-       rm -f ${D}/${libdir}/${PN}/plugins/*.la
-}
-
-FILES_${PN} += "${datadir}/dbus-1"
-FILES_${PN}-dbg += "${libdir}/${PN}/plugins/.debug"
-
-PACKAGES_prepend = "${PN}-test "
-FILES_${PN}-test_prepend = "${bindir}/test-lms "
-
-PACKAGES += "${PN}-meta"
-ALLOW_EMPTY_${PN}-meta = "1"
-
-PACKAGES_DYNAMIC = "${PN}-plugin-*"
-
-python populate_packages_prepend () {
-    lms_libdir = d.expand('${libdir}/${PN}')
-    pkgs = []
-
-    pkgs += do_split_packages(d, oe.path.join(lms_libdir, "plugins"), '^(.*)\.so$', d.expand('${PN}-plugin-%s'), 'LightMediaScanner plugin for %s', prepend=True, extra_depends=d.expand('${PN}'))
-    metapkg = d.getVar('PN') + '-meta'
-    d.setVar('RDEPENDS_' + metapkg, ' '.join(pkgs))
-}
diff --git a/meta-agl-profile-core/recipes-navigation/geoclue/files/org.freedesktop.GeoClue2.Client.conf b/meta-agl-profile-core/recipes-navigation/geoclue/files/org.freedesktop.GeoClue2.Client.conf
deleted file mode 100644 (file)
index a7486d0..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE busconfig PUBLIC
- "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
- "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
-<busconfig>
-  <policy user="root">
-    <allow receive_type="signal" receive_interface="org.freedesktop.GeoClue2.Client" />
-  </policy>
-</busconfig>
diff --git a/meta-agl-profile-core/recipes-navigation/geoclue/geoclue_%.bbappend b/meta-agl-profile-core/recipes-navigation/geoclue/geoclue_%.bbappend
deleted file mode 100644 (file)
index 40a3b46..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-inherit gobject-introspection
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-SRC_URI_append = "file://org.freedesktop.GeoClue2.Client.conf"
-
-PACKAGECONFIG = "nmea lib"
-
-do_install_append() {
-    install -d ${D}/etc/dbus-1/system.d
-    install -m 0644 ${WORKDIR}/org.freedesktop.GeoClue2.Client.conf ${D}/etc/dbus-1/system.d/org.freedesktop.GeoClue2.Client.conf
-}
diff --git a/meta-agl-profile-core/recipes-navigation/gpsd/gpsd_%.bbappend b/meta-agl-profile-core/recipes-navigation/gpsd/gpsd_%.bbappend
deleted file mode 100644 (file)
index da434e0..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-SYSTEMD_SERVICE_${PN} += " gpsdctl@.service"
-
-RPROVIDES_${PN}-conf += "virtual/gpsd-conf"
-
-do_install_append() {
-    # use the systemd compatible gpsd.rules
-    install -d ${D}/${sysconfdir}/udev/rules.d
-    install -m 0644 ${S}/gpsd.rules ${D}/${sysconfdir}/udev/rules.d/60-gpsd.rules
-
-    #support for systemd
-    install -d ${D}${systemd_unitdir}/system/
-    install -m 0644 ${S}/systemd/gpsdctl@.service ${D}${systemd_unitdir}/system
-
-    #autoprobe usb gps devices
-    echo 'USBAUTO="true"' >> ${D}${sysconfdir}/default/gpsd.default
-}
diff --git a/meta-agl-profile-core/recipes-platform/images/agl-image-minimal-crosssdk.inc b/meta-agl-profile-core/recipes-platform/images/agl-image-minimal-crosssdk.inc
deleted file mode 100644 (file)
index 7181294..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-IMAGE_FEATURES_append = " dev-pkgs"
-IMAGE_INSTALL_append = " kernel-dev kernel-devsrc"
-
-# Always include the test widgets
-IMAGE_FEATURES_append = " agl-test-wgt"
-
-# Required dependencies for app and test builds
-TOOLCHAIN_HOST_TASK += " \
-    nativesdk-lua \
-    "
-
-# Required dependencies for app and test builds
-TOOLCHAIN_TARGET_TASK += " \
-    lua-dev \
-    lua-staticdev \
-    libafb-helpers-staticdev \
-    libappcontroller-staticdev \
-    "
diff --git a/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-services.bb b/meta-agl-profile-core/recipes-platform/packagegroups/packagegroup-agl-core-services.bb
deleted file mode 100644 (file)
index 2fd31d1..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-DESCRIPTION = "The minimal set of packages for AGL core Connectivity Subsystem"
-LICENSE = "MIT"
-
-inherit packagegroup
-
-PACKAGES = "\
-    packagegroup-agl-core-services \
-    "
-
-RDEPENDS_${PN} += "\
-    agl-service-data-persistence \
-    agl-service-network \
-    agl-service-platform-info \
-    "
diff --git a/meta-agl-profile-core/recipes-support/curl/curl_%.bbappend b/meta-agl-profile-core/recipes-support/curl/curl_%.bbappend
deleted file mode 100644 (file)
index fc24cea..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-# Cannot just append to PACKAGECONFIG, as nghttp2's dependencies do not build
-# for native/nativesdk, and appending class-target does not work because of
-# the weak definition of PACKAGECONFIG in the recipe, so need to copy the
-# definition to add nghttp2...
-PACKAGECONFIG = "${@bb.utils.filter('DISTRO_FEATURES', 'ipv6', d)} gnutls libidn proxy threaded-resolver verbose zlib nghttp2"
diff --git a/meta-agl-profile-core/recipes-support/opencv/opencv_4.%.bbappend b/meta-agl-profile-core/recipes-support/opencv/opencv_4.%.bbappend
deleted file mode 100644 (file)
index 8656abf..0000000
+++ /dev/null
@@ -1 +0,0 @@
-PACKAGECONFIG ?= "jpeg png v4l libv4l gstreamer"
diff --git a/meta-agl-profile-core/recipes-support/udisks/files/99-udisks2.rules b/meta-agl-profile-core/recipes-support/udisks/files/99-udisks2.rules
deleted file mode 100644 (file)
index 996e434..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-# UDISKS_FILESYSTEM_SHARED
-# ==1: mount filesystem to a shared directory (/media/VolumeName)
-# ==0: mount filesystem to a private directory (/run/media/$USER/VolumeName)
-# See udisks(8)
-ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{UDISKS_FILESYSTEM_SHARED}="1"
diff --git a/meta-agl-profile-core/recipes-support/udisks/files/automount.service b/meta-agl-profile-core/recipes-support/udisks/files/automount.service
deleted file mode 100644 (file)
index b165151..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-[Unit]
-Description=Automount Disk Manager
-After=udisks2.service
-
-[Service]
-ExecStart=/usr/libexec/automount.sh
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta-agl-profile-core/recipes-support/udisks/files/automount.sh b/meta-agl-profile-core/recipes-support/udisks/files/automount.sh
deleted file mode 100644 (file)
index 2367919..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/bin/sh
-
-MOUNT_OPTIONS_DEFAULT="ro,noexec"
-MOUNT_OPTIONS_VFAT="umask=0022"
-MOUNT_OPTIONS_EXT=""
-MOUNT_OPTIONS_NTFS=""
-MOUNT_OPTIONS_ISO9660=""
-
-VERBOSE=false
-
-# Source a configuration file that can override mount options if exists
-[ -f /etc/automount.conf ] && . /etc/automount.conf
-
-mount_device() {
-       MOUNT_OPTIONS=""
-       FSTYPE="$( udevadm info "${1}" "${2}" | awk -v FS== '/ID_FS_TYPE/ {print $2}' )"
-       DEVNAME="$( udevadm info "${1}" "${2}" | awk -v FS== '/DEVNAME/ {print $2}' )"
-       case $FSTYPE in
-               vfat)
-                       MOUNT_OPTIONS="${MOUNT_OPTIONS_VFAT}"
-                       ;;
-               ext[2-4])
-                       MOUNT_OPTIONS="${MOUNT_OPTIONS_EXT}"
-                       ;;
-               ntfs)
-                       MOUNT_OPTIONS="${MOUNT_OPTIONS_NTFS}"
-                       ;;
-               iso9660)
-                       MOUNT_OPTIONS="${MOUNT_OPTIONS_ISO9660}"
-                       ;;
-               "")
-                       if $VERBOSE; then
-                               echo "[INFO][${DEVNAME}] Not a partition with a filesystem!"
-                       fi
-                       return
-                       ;;
-               *)
-                       echo "[WARNING][${DEVNAME}] The filesystem '${FSTYPE}' is not supported!"
-                       return
-                       ;;
-       esac
-
-       if [ -n "${MOUNT_OPTIONS_DEFAULT}" ]; then
-               if [ -z "${MOUNT_OPTIONS}" ]; then
-                       MOUNT_OPTIONS="${MOUNT_OPTIONS_DEFAULT}"
-               else
-                       MOUNT_OPTIONS="${MOUNT_OPTIONS_DEFAULT},${MOUNT_OPTIONS}"
-               fi
-       fi
-       if $VERBOSE; then
-               echo "[INFO][${DEVNAME}] Mounting a ${FSTYPE}'s filesystem with options: ${MOUNT_OPTIONS}"
-       fi
-
-       if command -v udisksctl > /dev/null 2>&1; then
-               if [ -n "${MOUNT_OPTIONS}" ]; then
-                       MOUNT_OPTIONS="-o ${MOUNT_OPTIONS}"
-               fi
-               udisksctl mount -t "${FSTYPE}" -b "${DEVNAME}" ${MOUNT_OPTIONS}
-       elif command -v udisks >/dev/null 2>&1; then
-               if [ -n "${MOUNT_OPTIONS}" ]; then
-                       MOUNT_OPTIONS="--mount-options ${MOUNT_OPTIONS}"
-               fi
-               udisks --mount-fstype "${FSTYPE}" --mount "${DEVNAME}" ${MOUNT_OPTIONS}
-       else
-               echo "[ERROR] Unable to find binary for mounting ${DEVNAME}" >&2
-               return
-       fi
-       if [ "$?" -ne "0" ]; then
-               echo "[ERROR] Failed to mount the device ${DEVNAME} of type ${FSTYPE} with options ${MOUNT_OPTIONS}" >&2
-       fi
-}
-
-# At startup, remove empty directories that may exists
-rmdir /media/* > /dev/null 2>&1
-
-# Mount already plugged devices
-for DEVICE in $( lsblk -dn | cut -d' ' -f1 ); do
-       REMOVABLE=$( cat "/sys/block/${DEVICE}/removable" )
-       if [ "${REMOVABLE}" -eq "1" ]; then
-               for PART in "/dev/${DEVICE}"*; do
-                       mount_device -n "${PART}"
-               done
-       fi
-done
-
-# Wait for plug events and mount devices
-stdbuf -oL -- udevadm monitor --udev -s block |
-while read -r -- _ _ EVENT DEVPATH _
-do
-       if [ "${EVENT}" = "add" ]; then
-               mount_device -p "/sys/${DEVPATH}"
-       fi
-done
diff --git a/meta-agl-profile-core/recipes-support/udisks/udisks2_%.bbappend b/meta-agl-profile-core/recipes-support/udisks/udisks2_%.bbappend
deleted file mode 100644 (file)
index 34756f4..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-SRC_URI += "file://automount.service \
-            file://automount.sh \
-            file://99-udisks2.rules \
-"
-
-SYSTEMD_AUTO_ENABLE = "enable"
-SYSTEMD_SERVICE_${PN} += "automount.service"
-
-do_install_append () {
-    sed -i 's/^WantedBy=.*/WantedBy=multi-user.target/' ${D}${systemd_unitdir}/system/udisks2.service
-
-    install -d ${D}${base_libdir}/systemd/system
-    install -m 0644 ${WORKDIR}/automount.service ${D}${systemd_unitdir}/system
-
-    install -d ${D}${libexecdir}
-    install -m 0755 ${WORKDIR}/automount.sh ${D}${libexecdir}/automount.sh
-
-    install -d ${D}${sysconfdir}/udev/rules.d
-    install -m 0644 ${WORKDIR}/99-udisks2.rules ${D}${sysconfdir}/udev/rules.d
-}
-
-FILES_${PN} += "${base_libdir}/systemd/system/automount.service \
-                ${libexecdir}/automount.sh \
-"
diff --git a/meta-agl-profile-core/recipes-test/gcovr-wrapper/gcovr-wrapper/gcovr-wrapper b/meta-agl-profile-core/recipes-test/gcovr-wrapper/gcovr-wrapper/gcovr-wrapper
deleted file mode 100644 (file)
index 1258023..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-#!/bin/bash
-#
-# Copyright (C) 2020 Konsulko Group
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#
-# gcovr wrapper for generating coverage reports against AGL bindings
-# on target.  With a given binding name or coverage widget file, the
-# coverage version will be installed, and the pyagl tests for the
-# binding run before generating a report with gcovr.  The afm-test
-# test widget or a user-supplied command may be run instead of the
-# pyagl tests, see usage below, or run with "--help".
-#
-
-usage() {
-    cat <<-EOF
-       Usage:
-         $(basename $0) [options] <binding name | widget file>
-
-       Options:
-         -h, --help
-           Print this help and exit
-
-         -k, --keep
-           Do not remove temporary files/directories
-
-         -o, --gcovr-options
-           Additional gcovr options, multiple options should be quoted
-
-         -w, --workdir
-           gcov/gcovr temporary working directory, defaults to /tmp/gcov
-           The directory will be removed after running without --keep if it
-           is empty, use caution if specifying existing system directories!
-
-         --pyagl
-           Run pyagl tests for binding, enabled by default
-
-         --afm-test
-           Run afm-test test widget tests for binding.
-           If specified, disables pyagl tests; note that the last argument in
-           the command-line will take precedence.
-
-         -c, --command
-           Test command to use in place of pyagl or afm-test, should be quote
-           If specified, disables pyagl and afm-test tests.
-
-       EOF
-}
-
-# Helper to validate widget install dir
-check_wgt_install() {
-    if [ ! \( -d $1 -o -f $1/config.xml \) ]; then
-        echo "ERROR: No widget install at $1"
-        exit 1
-    elif [ ! -d $1/src ]; then
-        echo "ERROR: No source in $1/src"
-        exit 1
-    fi
-}
-
-# Helper to run gcovr inside mount namespace environment
-gcovr_runner() {
-    wgt_install_dir=/var/local/lib/afm/applications/$1
-    check_wgt_install ${wgt_install_dir}
-
-    if [ ! -d $workdir/$1 ]; then
-        echo "ERROR: No coverage data in $workdir/$1"
-        exit 1
-    fi
-
-    # Get original source path
-    gcno=$(cd $workdir/$1 && find -name '*.gcno' | head -n 1 | cut -d/ -f2-)
-    if [ -z "$gcno" ]; then
-        echo "ERROR: no gcno file found in $workdir/$1"
-        exit 1
-    fi
-    srcfile=$(strings $workdir/$1/${gcno} | grep "$(basename ${gcno%.gcno})$" | uniq)
-    srcdir=$(echo $srcfile | sed "s|/${gcno%%/*}/.*$||")
-
-    # Set up mounts for chroot to run gcovr in
-    # NOTE: We do not unmount these later, as we assume we are in a
-    #       private mount namespace and they will go away on exit from
-    #       it.
-    echo "Setting up mounts"
-    tmpdir=$(mktemp -d)
-    echo $tmpdir > $workdir/.runner_tmpdir
-    mkdir -p $tmpdir/{lower,upper,work,merged}
-    # NOTE: Could potentially use rbind here, but explicitly mounting
-    #        just what we need seems safer
-    mount --bind / $tmpdir/lower
-    mount -t overlay -o lowerdir=$tmpdir/lower,upperdir=$tmpdir/upper,workdir=$tmpdir/work overlay $tmpdir/merged
-    mount --bind /proc $tmpdir/merged/proc
-    mount --bind /sys $tmpdir/merged/sys
-    mount --bind /dev $tmpdir/merged/dev
-    mount --bind /tmp $tmpdir/merged/tmp
-    # Bind in the data files
-    # NOTE: $workdir is bound instead of specifically just $workdir/$1,
-    #       so that e.g. html output to another directory in /tmp will
-    #       work as expected.  A determined user may be able to shoot
-    #       themselves in the foot, but for now the trade off seems
-    #       acceptable.
-    mkdir -p $tmpdir/merged/$workdir
-    mount --bind $workdir $tmpdir/merged/$workdir
-    # Bind the source files to their expected location
-    mkdir -p $tmpdir/merged/$srcdir
-    mount --bind ${wgt_install_dir}/src $tmpdir/merged/$srcdir
-
-    echo "Entering chroot"
-    echo
-    exec chroot $tmpdir/merged \
-        /usr/bin/gcovr -r $srcdir --object-directory $workdir/$1 --gcov-filter-source-errors -s ${GCOV_RUNNER_GCOVR_OPTIONS}
-}
-
-# Helper to clean up after runner
-gcovr_runner_cleanup() {
-    rm -rf $workdir/$1
-    if [ -f $workdir/.runner_tmpdir ]; then
-        tmpdir=$(cat $workdir/.runner_tmpdir)
-        rm -rf $tmpdir
-        rm -f $workdir/.runner_tmpdir
-    fi
-    if [ "$workdir" != "/tmp" ]; then
-        rmdir $workdir 2>/dev/null || true
-    fi
-}
-
-# Parse arguments
-OPTS=$(getopt -o +hko:pw:c: --longoptions gcovr-runner,afm-test,command:,help,keep,gcovr-options:,pyagl,workdir: -n "$(basename $0)" -- "$@")
-if [ $? -ne 0 ]; then
-    exit 1
-fi
-eval set -- "$OPTS"
-
-runner=false
-keep=false
-wgt=""
-cmd=""
-options=""
-afmtest=false
-pyagl=true
-workdir="/tmp/gcov"
-
-while true; do
-    case "$1" in
-        --gcovr-runner) runner=true; shift;;
-        --afm-test) afmtest=true; pyagl=false; shift;;
-        -c|--command) cmd="$2"; shift; shift;;
-        -h|--help) usage; exit 0;;
-        -k|--keep) keep=true; shift;;
-        -o|--gcovr-options) options="$2"; shift; shift;;
-        -p|--pyagl) pyagl=true; afmtest=false; shift;;
-        -w|--workdir) workdir="$2"; shift; shift;;
-        --) shift; break;;
-        *) break;;
-    esac
-done
-
-# Encode the assumption that a specified command means it runs instead
-# of any other tests.
-if [ -s "$cmd" ]; then
-    pyagl=false
-    afmtest=false
-fi
-
-if [ $# -ne 1 ]; then
-    # Always expect widget name as single non-option argument
-    usage
-    exit 1
-fi
-
-# Rationalize workdir just in case
-workdir=$(realpath "$workdir")
-
-if [ "$runner" = "true" ]; then
-    if [ "${GCOV_RUNNER_READY}" != "true" ]; then
-        echo "ERROR: gcovr environment not ready!"
-        exit 1
-    fi
-    gcovr_runner $1
-    # If we get here, it'd be an error, so return 1
-    exit 1
-fi
-
-binding=$1
-if [ "${1%.wgt}" != "$1" ]; then
-    # User has specified path to a widget file
-    wgt=$(realpath $1)
-    binding=$(basename "${1%-coverage.wgt}")
-else
-    wgt=/usr/AGL/apps/coverage/${binding}-coverage.wgt
-fi
-if [ ! -f $wgt ]; then
-    echo "ERROR: No widget $wgt"
-    exit 1
-elif [ "$afmtest" = "true" -a ! -f /usr/AGL/apps/test/${binding}-test.wgt ]; then
-    echo "ERROR: No test widget for $binding"
-    exit 1
-fi
-
-# Determine starting systemd unit name
-service=$(systemctl --all |grep afm-service-$binding |sed 's/^[ *] \([^ ]*\).*/\1/')
-if [ -z "$service" ]; then
-    echo "ERROR: Could not determine systemd service unit for $binding"
-    exit 1
-fi
-
-# Install coverage widget
-echo "Removing $binding widget"
-systemctl stop $service
-afm-util remove $binding
-echo
-echo "Installing $binding coverage widget"
-afm-util install $wgt
-echo
-
-wgt_install_dir=/var/local/lib/afm/applications/$binding
-check_wgt_install ${wgt_install_dir}
-gcov_src=${wgt_install_dir}/coverage
-if [ ! -d ${gcov_src} ]; then
-       echo "ERROR: No coverage information in ${gcov_src}"
-       exit 1
-elif [ ! -f ${gcov_src}/gcov.env ]; then
-       echo "ERROR: No gcov environment file at ${gcov_src}/gcov.env"
-       exit 1
-fi
-
-#
-# NOTE: In theory, the coverage data collection could be done inside
-#       the mount namespace / chroot, but the potential for issues
-#       when doing that seems higher than just running gcovr there,
-#       so a conservative approach is taken.
-#
-
-# Set up things for the binary to write out gcda data files
-#
-# Having the matching build directory hierarchy in place and
-# writeable by the target binary before any restart and testing is
-# key to things working.
-#
-# As well, the environment file with the GCOV_PREFIX and
-# GCOV_PREFIX_STRIP values needs to be present before running so the
-# gcda files will get written into the relocated build hierarchy.
-#
-echo "Installing coverage information for $binding"
-mkdir -p $workdir
-rm -rf $workdir/$binding
-cp -dr ${gcov_src} $workdir/$binding
-chsmack -r -a System::Log $workdir
-chmod -R go+w $workdir
-
-# Install the gcov environment file
-mkdir -p /etc/afm/widget.env.d/$binding
-if [ "${workdir}" = "/tmp/gcov" ]; then
-    cp ${gcov_src}/gcov.env /etc/afm/widget.env.d/$binding/gcov
-else
-    # Update GCOV_PREFIX to point into workdir
-    sed "s|^GCOV_PREFIX=.*|GCOV_PREFIX=${workdir}/$binding|" ${gcov_src}/gcov.env > /etc/afm/widget.env.d/$binding/gcov
-fi
-chsmack -r -a _ /etc/afm/widget.env.d/$binding
-
-# Determine new systemd unit name (version may now be different)
-service=$(systemctl --all |grep afm-service-$binding |sed 's/^[ *] \([^ ]*\).*/\1/')
-if [ -z "$service" ]; then
-    echo "ERROR: Could not determine systemd service unit for $binding"
-    exit 1
-fi
-
-# Restart the binding
-systemctl start $service
-echo
-
-# Run tests or given command
-if [ -n "$cmd" ]; then
-    echo "Running command: $cmd"
-    export AGL_AVAILABLE_INTERFACES=${AGL_AVAILABLE_INTERFACES:-ethernet}
-    eval $cmd
-elif [ "$pyagl" = "true" ]; then
-    echo "Running $binding pyagl tests"
-    export AGL_AVAILABLE_INTERFACES=${AGL_AVAILABLE_INTERFACES:-ethernet}
-    pytest -k "${binding#agl-service-} and not hwrequired" /usr/lib/python3.?/site-packages/pyagl
-else
-    echo "Running $binding test widget"
-    # NOTE: su to agl-driver is required here to avoid fallout from
-    #       the "afm-util run" in afm-test seemingly triggering the
-    #       start of other per-user bindings for the root user.
-    su -l -c "/usr/bin/afm-test /usr/AGL/apps/test/${binding}-test.wgt" agl-driver
-fi
-
-# Restart again to trigger data file writing
-systemctl restart $service
-echo
-
-# Run ourselves in gcovr runner mode inside a private mount namespace
-export GCOV_RUNNER_READY=true
-# NOTE: Passing gcovr options in the environment to avoid quoting hassles
-export GCOV_RUNNER_GCOVR_OPTIONS="$options"
-runner_options="--workdir ${workdir}"
-unshare -m $0 --gcovr-runner ${runner_options} $binding
-rc=$?
-
-if [ "$keep" != "true" ]; then
-    # Clean up after ourselves
-    gcovr_runner_cleanup $1
-    rm -f /etc/afm/widget.env.d/$1/gcov
-    rmdir /etc/afm/widget.env.d/$1 2>/dev/null || true
-fi
-
-exit $rc
-
diff --git a/meta-agl-profile-core/recipes-test/gcovr-wrapper/gcovr-wrapper_1.0.bb b/meta-agl-profile-core/recipes-test/gcovr-wrapper/gcovr-wrapper_1.0.bb
deleted file mode 100644 (file)
index 2ff39b2..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "AGL gcovr wrapper"
-DESCRIPTION = "This wrapper script enables running gcovr against a \
-AGL binding to generate a coverage report of running pyagl tests, \
-the afm-test test widget, or a user-supplied command."
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-SRC_URI += "file://gcovr-wrapper"
-
-inherit allarch
-
-do_install() {
-    install -D -m 0755 ${WORKDIR}/gcovr-wrapper ${D}${bindir}/gcovr-wrapper
-}
-
-RDEPENDS_${PN} = "bash gcovr"
diff --git a/meta-agl-profile-core/recipes-test/gcovr/gcovr/0001-add-gcov-filter-source-errors-option.patch b/meta-agl-profile-core/recipes-test/gcovr/gcovr/0001-add-gcov-filter-source-errors-option.patch
deleted file mode 100644 (file)
index be1dcf8..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-Add option to filter gcov source errors
-
-Add "--gcov-filter-source-errors" to apply filters to the source
-files in the errors from gcov.  If all source files in the errors
-are filtered, then the error is ignored so that the file will be
-processed.  This enables the usecase of running on a target where
-only the source tree for a binary is available, but not all of the
-external source headers are.
-
-Upstream-Status: pending
-
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-
-diff --git a/gcovr/configuration.py b/gcovr/configuration.py
-index 1356097..083532c 100644
---- a/gcovr/configuration.py
-+++ b/gcovr/configuration.py
-@@ -915,6 +915,14 @@ GCOVR_CONFIG_OPTIONS = [
-              "Default: {default!s}.",
-         action="store_true",
-     ),
-+    GcovrConfigOption(
-+        "gcov_filter_source_errors", ['--gcov-filter-source-errors'],
-+        group="gcov_options",
-+        help="Apply filters to missing source file errors in GCOV files "
-+             "instead of exiting with an error. "
-+             "Default: {default!s}.",
-+        action="store_true",
-+    ),
-     GcovrConfigOption(
-         "objdir", ['--object-directory'],
-         group="gcov_options",
-diff --git a/gcovr/gcov.py b/gcovr/gcov.py
-index de79215..171d68d 100644
---- a/gcovr/gcov.py
-+++ b/gcovr/gcov.py
-@@ -667,11 +667,27 @@ def run_gcov_and_process_files(
-             chdir=chdir,
-             tempdir=tempdir)
-+    skip = False
-     if source_re.search(err):
--        # gcov tossed errors: try the next potential_wd
--        error(err)
--        done = False
--    else:
-+        ignore = False
-+        if options.gcov_filter_source_errors:
-+            # Check if errors are all from source that is filtered
-+            ignore = True
-+            for line in err.splitlines():
-+                src_fname = line.split()[-1]
-+                filtered, excluded = apply_filter_include_exclude(
-+                    src_fname, options.filter, options.exclude)
-+                if not (filtered or excluded):
-+                    ignore = False
-+                    break
-+
-+        if not ignore:
-+            # gcov tossed errors: try the next potential_wd
-+            error(err)
-+            skip = True
-+
-+    done = False
-+    if not skip:
-         # Process *.gcov files
-         for fname in active_gcov_files:
-             process_gcov_data(fname, covdata, abs_filename, options)
diff --git a/meta-agl-profile-core/recipes-test/gcovr/gcovr_%.bbappend b/meta-agl-profile-core/recipes-test/gcovr/gcovr_%.bbappend
deleted file mode 100644 (file)
index 699aea2..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-# Add not yet upstreamed patch that enables on target gcov usage
-SRC_URI += "file://0001-add-gcov-filter-source-errors-option.patch"
diff --git a/meta-agl-profile-core/recipes-test/gcovr/gcovr_git.bb b/meta-agl-profile-core/recipes-test/gcovr/gcovr_git.bb
deleted file mode 100644 (file)
index 6da04cc..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Generate GCC code coverage reports"
-DESCRIPTION = "Gcovr provides a utility for managing the use of the GNU gcov \
-utility and generating summarized code coverage results."
-HOMEPAGE = "https://gcovr.com"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=221e634a1ceafe02ef74462cbff2fb16"
-
-PV = "4.2+git${SRCPV}"
-SRC_URI = "git://github.com/gcovr/gcovr.git;protocol=https"
-SRCREV = "1bc72e3bb59b9296e962b350691732ddafbd3195"
-
-S = "${WORKDIR}/git"
-
-inherit setuptools3
-
-RDEPENDS_${PN} += " \
-    python3-compression \
-    python3-core \
-    python3-crypt \
-    python3-datetime \
-    python3-difflib \
-    python3-io \
-    python3-jinja2 \
-    python3-json \
-    python3-lxml \
-    python3-multiprocessing \
-    python3-pygments \
-    python3-pytest \
-    python3-shell \
-    python3-threading \
-    python3-typing \
-"
diff --git a/meta-agl-profile-core/recipes-test/pyagl/pyagl_git.bb b/meta-agl-profile-core/recipes-test/pyagl/pyagl_git.bb
deleted file mode 100644 (file)
index 821a1de..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-SUMMARY = "Python bindings and tests for Automotive Grade Linux services"
-HOMEPAGE = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/src/pyagl"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/pyagl;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "dcc2f91e5ab3b70202e78ec7164a8e9d7501d70c"
-PV = "${AGL_BRANCH}+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-inherit setuptools3
-
-do_install_append() {
-    install -D -m 0755 ${S}/pyagl/scripts/pyagl ${D}${bindir}/pyagl
-}
-
-RDEPENDS_${PN} += " \
-    python3-asyncio \
-    python3-asyncssh \
-    python3-core \
-    python3-json \
-    python3-logging \
-    python3-math \
-    python3-parse \
-    python3-pprint \
-    python3-pytest \
-    python3-pytest-asyncio \
-    python3-pytest-dependency \
-    python3-pytest-reverse \
-    python3-typing \
-    python3-websockets \
-"
diff --git a/meta-agl-profile-graphical-html5/conf/layer.conf b/meta-agl-profile-graphical-html5/conf/layer.conf
deleted file mode 100644 (file)
index d499dd1..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# We have a conf and classes directory, add to BBPATH
-BBPATH .= ":${LAYERDIR}"
-
-# We have recipes-* directories, add to BBFILES
-BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
-       ${LAYERDIR}/recipes-*/*/*.bbappend"
-
-BBFILE_COLLECTIONS += "html5-framework"
-BBFILE_PATTERN_html5-framework = "^${LAYERDIR}/"
-BBFILE_PRIORITY_html5-framework = "80"
-
-LAYERSERIES_COMPAT_html5-framework = "dunfell"
diff --git a/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf.bbappend b/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf.bbappend
deleted file mode 100644 (file)
index 2c5201a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
-SRC_URI_remove = " \
-        file://hdmi-a-1-270.cfg \
-        file://hdmi-a-1-90.cfg \
-        file://virtual.cfg \
-"
-
-SRC_URI += " \
-        file://hdmi-a-1-180.cfg \
-        file://virtual-landscape.cfg \
-"
diff --git a/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-180.cfg b/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/hdmi-a-1-180.cfg
deleted file mode 100644 (file)
index 59e2c2d..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-# A display is connected to HDMI-A-1
-[output]
-name=HDMI-A-1
-transform=0
diff --git a/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/virtual-landscape.cfg b/meta-agl-profile-graphical-html5/recipes-graphics/wayland/weston-ini-conf/virtual-landscape.cfg
deleted file mode 100644 (file)
index d692536..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-[output]
-name=Virtual-1
-mode=1920x1080
diff --git a/meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.bb b/meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.bb
deleted file mode 100644 (file)
index 0ec6829..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-SUMMARY = "An image containing all packages required to run web applications"
-
-require agl-image-graphical-html5.inc
-
-LICENSE = "MIT"
-
-IMAGE_INSTALL_append = "\
-    packagegroup-agl-profile-graphical-html5 \
-    "
-
diff --git a/meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.inc b/meta-agl-profile-graphical-html5/recipes-platform/images/agl-image-graphical-html5.inc
deleted file mode 100644 (file)
index e943b99..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-require recipes-platform/images/agl-image-minimal.inc
-
-IMAGE_FEATURES += "splash"
-
-IMAGE_FEATURES += "${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'ssh-server-dropbear' , '', d)}"
-
-inherit features_check
-
-REQUIRED_DISTRO_FEATURES = "wayland"
diff --git a/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-appfw-html5.bb b/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-appfw-html5.bb
deleted file mode 100644 (file)
index cc9ed3d..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "AGL web runtime packages"
-DESCRIPTION = "Specific packages for the AGL web runtime (minus profile-graphical)"
-
-LICENSE = "MIT"
-
-inherit packagegroup
-
-PACKAGES = "\
-    packagegroup-agl-appfw-html5 \
-    "
-
-ALLOW_EMPTY_${PN} = "1"
-
-# add packages for WAM
-RDEPENDS_${PN} += " \
-    chromium-browser-service \
-    wam \
-    "
diff --git a/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-html5.bb b/meta-agl-profile-graphical-html5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-html5.bb
deleted file mode 100644 (file)
index 2027501..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "AGL web runtime profile"
-DESCRIPTION = "The full set of packages required for AGL web runtime"
-LICENSE = "MIT"
-
-inherit packagegroup
-
-PACKAGES = "\
-    packagegroup-agl-profile-graphical-html5 \
-    profile-graphical-html5 \
-    "
-
-ALLOW_EMPTY_${PN} = "1"
-
-RDEPENDS_${PN} += "\
-    packagegroup-agl-profile-graphical \
-    packagegroup-agl-appfw-html5 \
-"
-
-RDEPENDS_${PN} += "\
-    agl-login-manager \
-    "
-
-RDEPENDS_profile-graphical-html5 = "${PN}"
diff --git a/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium-browser-service.bb b/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium-browser-service.bb
deleted file mode 100644 (file)
index 90242d7..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY = "Chromium browser widget"
-DESCRIPTION = "Wgt packaging for running chromium installed browser"
-HOMEPAGE = "https://webosose.org"
-SECTION = "apps"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/chromium;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S = "${WORKDIR}/git"
-
-#build-time dependencies
-DEPENDS += "af-binder af-main-native chromium68"
-
-inherit cmake aglwgt
-
-RDEPENDS_${PN} += "chromium68-browser"
diff --git a/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68/v8-qemu-wrapper.patch b/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68/v8-qemu-wrapper.patch
deleted file mode 100644 (file)
index 485766b..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-Upstream-Status: Inappropriate [embedder specific]
-
-The patch below makes the V8 binaries run during the build be invoked through
-QEMU, as they are built for the target.
-
-Signed-off-by: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-Signed-off-by: Maksim Sisov <msisov@igalia.com>
-
-Index: git/src/tools/v8_context_snapshot/BUILD.gn
-===================================================================
---- git.orig/src/tools/v8_context_snapshot/BUILD.gn
-+++ git/src/tools/v8_context_snapshot/BUILD.gn
-@@ -62,6 +62,7 @@ if (use_v8_context_snapshot) {
-     output_path = rebase_path(output_file, root_build_dir)
-     args = [
-+      "./v8-qemu-wrapper.sh",
-       "./" + rebase_path(
-               get_label_info(
-                       ":v8_context_snapshot_generator($v8_snapshot_toolchain)",
-Index: git/src/v8/BUILD.gn
-===================================================================
---- git.orig/src/v8/BUILD.gn
-+++ git/src/v8/BUILD.gn
-@@ -900,6 +900,7 @@ action("run_torque") {
-   }
-   args = [
-+    "./v8-qemu-wrapper.sh",
-     "./" + rebase_path(get_label_info(":torque($v8_torque_toolchain)",
-                                       "root_out_dir") + "/torque",
-                        root_build_dir),
-@@ -977,6 +978,7 @@ template("run_mksnapshot") {
-     data = []
-     args = [
-+      "./v8-qemu-wrapper.sh",
-       "./" + rebase_path(get_label_info(":mksnapshot($v8_snapshot_toolchain)",
-                                         "root_out_dir") + "/mksnapshot",
-                          root_build_dir),
diff --git a/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68_git.bb b/meta-agl-profile-graphical-html5/recipes-wam/chromium/chromium68_git.bb
deleted file mode 100644 (file)
index 4f545c1..0000000
+++ /dev/null
@@ -1,404 +0,0 @@
-# Copyright (c) 2018 LG Electronics, Inc.
-
-SUMMARY = "Chromium webruntime for webOS"
-AUTHOR = "Lokesh Kumar Goel <lokeshkumar.goel@lge.com>"
-SECTION = "webos/apps"
-LICENSE = "Apache-2.0 & BSD-3-Clause & LGPL-2.0 & LGPL-2.1"
-LIC_FILES_CHKSUM = "\
-    file://src/LICENSE;md5=0fca02217a5d49a14dfe2d11837bb34d \
-    file://src/third_party/blink/renderer/core/LICENSE-LGPL-2;md5=36357ffde2b64ae177b2494445b79d21 \
-    file://src/third_party/blink/renderer/core/LICENSE-LGPL-2.1;md5=a778a33ef338abbaf8b8a7c36b6eec80 \
-"
-
-require gn-utils.inc
-
-inherit gettext qemu pythonnative
-
-DEPENDS = "virtual/gettext wayland wayland-native pixman freetype glib-2.0 fontconfig openssl pango cairo icu libxkbcommon libexif dbus pciutils udev libcap alsa-lib virtual/egl elfutils-native libdrm atk gperf-native gconf nss nss-native nspr nspr-native bison-native qemu-native"
-
-PROVIDES = "${BROWSER_APPLICATION}"
-
-SRC_URI = "\
-    git://github.com/igalia/${BPN};branch=WIP@39.agl.compositor;protocol=https;rev=${SRCREV_chromium68};name=chromium68 \
-    git://github.com/webosose/v8;destsuffix=git/src/v8;rev=${SRCREV_v8};name=v8 \
-    file://v8-qemu-wrapper.patch \
-"
-SRCREV_chromium68 = "61e96d1ee5dfc2461697457d287bf922d8a03d9a"
-SRCREV_v8 = "1e3af71f1ff3735e8a5b639c48dfca63a7b8a647"
-
-# we don't include SRCPV in PV, so we have to manually include SRCREVs in do_fetch vardeps
-do_fetch[vardeps] += "SRCREV_v8"
-SRCREV_FORMAT = "main_v8"
-
-S = "${WORKDIR}/git"
-
-SRC_DIR = "${S}/src"
-OUT_DIR = "${WORKDIR}/build"
-BUILD_TYPE = "Release"
-
-B = "${OUT_DIR}/${BUILD_TYPE}"
-
-WEBRUNTIME_BUILD_TARGET = "webos:weboswebruntime"
-BROWSER_APP_BUILD_TARGET = "chrome"
-BROWSER_APPLICATION = "chromium68-browser"
-BROWSER_APPLICATION_DIR = "/opt/chromium68"
-
-TARGET = "${WEBRUNTIME_BUILD_TARGET} ${BROWSER_APP_BUILD_TARGET}"
-
-# Skip do_install_append of webos_system_bus. It is not compatible with this component.
-WEBOS_SYSTEM_BUS_FILES_LOCATION = "${S}/files/sysbus"
-
-PACKAGECONFIG ?= "jumbo use-upstream-wayland"
-
-# Options to enable debug-webcore build.
-# Add the following line to local.conf (or local.dev.inc) to enable them:
-#   PACKAGECONFIG_append_pn-chromium68 = " debug-webcore"
-# Other debug options are controlled by sections later in this file
-PACKAGECONFIG[debug-webcore] = "remove_webcore_debug_symbols=false,remove_webcore_debug_symbols=true"
-
-# Set a default value for jumbo file merge of 8. This should be good for build
-# servers and workstations with a big number of cores. In case build is
-# happening in a machine with less cores but still enough RAM a good value could
-# be 50.
-JUMBO_FILE_MERGE_LIMIT="8"
-PACKAGECONFIG[jumbo] = "use_jumbo_build=true jumbo_file_merge_limit=${JUMBO_FILE_MERGE_LIMIT}, use_jumbo_build=false"
-
-PACKAGECONFIG[lttng] = "use_lttng=true,use_lttng=false,lttng-ust,lttng-tools lttng-modules babeltrace"
-
-# Chromium can use v4l2 device for hardware accelerated video decoding on such boards as Renesas R-car M3, for example.
-# In case of R-car m3, additional patches are required for gstreamer and v4l2apps.
-# See https://github.com/igel-oss/meta-browser-hwdecode/tree/igalia-chromium71.
-PACKAGECONFIG[use-linux-v4l2] = "use_v4l2_codec=true use_v4lplugin=true use_linux_v4l2_only=true"
-
-PACKAGECONFIG[use-upstream-wayland] = " \
-        ozone_platform_wayland_external=false ozone_platform_wayland=true \
-        use_system_minigbm=true, \
-        ozone_platform_wayland_external=true ozone_platform_wayland=false \
-"
-
-GN_ARGS = "\
-    enable_memorymanager_webapi=false\
-    ffmpeg_branding=\"Chrome\"\
-    host_os=\"linux\"\
-    ozone_auto_platforms=false\
-    proprietary_codecs=true\
-    target_os=\"linux\"\
-    treat_warnings_as_errors=false\
-    is_agl=true\
-    use_cbe=true\
-    is_chrome_cbe=true\
-    use_cups=false\
-    use_custom_libcxx=false\
-    use_kerberos=false\
-    use_neva_media=false\
-    use_ozone=true\
-    use_xkbcommon=true\
-    use_pmlog=false\
-    use_system_debugger_abort=true\
-    use_webos_gpu_info_collector=false\
-    ${PACKAGECONFIG_CONFARGS}\
-"
-
-# From Chromium's BUILDCONFIG.gn:
-# Set to enable the official build level of optimization. This has nothing
-# to do with branding, but enables an additional level of optimization above
-# release (!is_debug). This might be better expressed as a tri-state
-# (debug, release, official) but for historical reasons there are two
-# separate flags.
-# See also: https://groups.google.com/a/chromium.org/d/msg/chromium-dev/hkcb6AOX5gE/PPT1ukWoBwAJ
-GN_ARGS += "is_debug=false is_official_build=true"
-
-# is_cfi default value is true for x86-64 builds with is_official_build=true.
-# As of M63, we explicitly need to set it to false, otherwise we fail the
-# following assertion in //build/config/sanitizers/sanitizers.gni:
-#   assert(!is_cfi || is_clang,
-#          "is_cfi requires setting is_clang = true in 'gn args'")
-GN_ARGS += "is_cfi=false"
-
-# By default, passing is_official_build=true to GN causes its symbol_level
-# variable to be set to "2". This means the compiler will be passed "-g2" and
-# we will end up with a very large chrome binary (around 5Gb as of M58)
-# regardless of whether DEBUG_BUILD has been set or not. In addition, binutils,
-# file and other utilities are unable to read a 32-bit binary this size, which
-# causes it not to be stripped.
-# The solution is two-fold:
-# 1. Make sure -g is not passed on 32-bit architectures via DEBUG_FLAGS. -g is
-#    the same as -g2. -g1 generates an 800MB binary, which is a lot more
-#    manageable.
-# 2. Explicitly pass symbol_level=0 to GN. This causes -g0 to be passed
-#    instead, so that if DEBUG_BUILD is not set GN will not create a huge debug
-#    binary anyway. Since our compiler flags are passed after GN's, -g0 does
-#    not cause any issues if DEBUG_BUILD is set, as -g1 will be passed later.
-DEBUG_FLAGS_remove_arm = "-g"
-DEBUG_FLAGS_append_arm = "-g1"
-DEBUG_FLAGS_remove_x86 = "-g"
-DEBUG_FLAGS_append_x86 = "-g1"
-GN_ARGS += "symbol_level=0"
-
-# We do not want to use Chromium's own Debian-based sysroots, it is easier to
-# just let Chromium's build system assume we are not using a sysroot at all and
-# let Yocto handle everything.
-GN_ARGS += "use_sysroot=false"
-
-# Toolchains we will use for the build. We need to point to the toolchain file
-# we've created, set the right target architecture and make sure we are not
-# using Chromium's toolchain (bundled clang, bundled binutils etc).
-GN_ARGS += "\
-        custom_toolchain=\"//build/toolchain/yocto:yocto_target\" \
-        gold_path=\"\" \
-        host_toolchain=\"//build/toolchain/yocto:yocto_native\" \
-        is_clang=${@is_default_cc_clang(d)} \
-        clang_base_path=\"${@clang_install_path(d)}\" \
-        clang_use_chrome_plugins=false \
-        linux_use_bundled_binutils=false \
-        target_cpu=\"${@gn_target_arch_name(d)}\" \
-        v8_snapshot_toolchain=\"//build/toolchain/yocto:yocto_target\" \
-"
-
-# ARM builds need special additional flags (see ${S}/build/config/arm.gni).
-# If we do not pass |arm_arch| and friends to GN, it will deduce a value that
-# will then conflict with TUNE_CCARGS and CC.
-# Note that as of M61 in some corner cases parts of the build system disable
-# the "compiler_arm_fpu" GN config, whereas -mfpu is always passed via ${CC}.
-# We might want to rework that if there are issues in the future.
-def get_compiler_flag(params, param_name, d):
-    """Given a sequence of compiler arguments in |params|, returns the value of
-    an option |param_name| or an empty string if the option is not present."""
-    for param in params:
-      if param.startswith(param_name):
-        return param.split('=')[1]
-    return ''
-
-ARM_FLOAT_ABI = "${@bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hard', 'softfp', d)}"
-ARM_FPU = "${@get_compiler_flag(d.getVar('TUNE_CCARGS').split(), '-mfpu', d)}"
-ARM_TUNE = "${@get_compiler_flag(d.getVar('TUNE_CCARGS').split(), '-mcpu', d)}"
-ARM_VERSION_aarch64 = "8"
-ARM_VERSION_armv7a = "7"
-ARM_VERSION_armv7ve = "7"
-ARM_VERSION_armv6 = "6"
-
-# GN computes and defaults to it automatically where needed
-# forcing it from cmdline breaks build on places where it ends up
-# overriding what GN wants
-TUNE_CCARGS_remove = "-mthumb"
-
-GN_ARGS_append_arm = " \
-        arm_float_abi=\"${ARM_FLOAT_ABI}\" \
-        arm_fpu=\"${ARM_FPU}\" \
-        arm_tune=\"${ARM_TUNE}\" \
-        arm_version=${ARM_VERSION} \
-"
-# tcmalloc's atomicops-internals-arm-v6plus.h uses the "dmb" instruction that
-# is not available on (some?) ARMv6 models, which causes the build to fail.
-GN_ARGS_append_armv6 += 'use_allocator="none"'
-# The WebRTC code fails to build on ARMv6 when NEON is enabled.
-# https://bugs.chromium.org/p/webrtc/issues/detail?id=6574
-GN_ARGS_append_armv6 += 'arm_use_neon=false'
-
-# Disable glibc shims on musl
-# tcmalloc does not play well with musl as of M62 (and possibly earlier).
-# https://github.com/gperftools/gperftools/issues/693
-GN_ARGS_append_libc-musl = ' use_allocator_shim=false'
-
-# V8's JIT infrastructure requires binaries such as mksnapshot and
-# mkpeephole to be run in the host during the build. However, these
-# binaries must have the same bit-width as the target (e.g. a x86_64
-# host targeting ARMv6 needs to produce a 32-bit binary). Instead of
-# depending on a third Yocto toolchain, we just build those binaries
-# for the target and run them on the host with QEMU.
-python do_create_v8_qemu_wrapper () {
-    """Creates a small wrapper that invokes QEMU to run some target V8 binaries
-    on the host."""
-    qemu_libdirs = [d.expand('${STAGING_DIR_HOST}${libdir}'),
-                    d.expand('${STAGING_DIR_HOST}${base_libdir}')]
-    qemu_cmd = qemu_wrapper_cmdline(d, d.getVar('STAGING_DIR_HOST', True),
-                                    qemu_libdirs)
-    wrapper_path = d.expand('${B}/v8-qemu-wrapper.sh')
-    with open(wrapper_path, 'w') as wrapper_file:
-        wrapper_file.write("""#!/bin/sh
-
-# This file has been generated automatically.
-# It invokes QEMU to run binaries built for the target in the host during the
-# build process.
-
-%s "$@"
-""" % qemu_cmd)
-    os.chmod(wrapper_path, 0o755)
-}
-do_create_v8_qemu_wrapper[dirs] = "${B}"
-addtask create_v8_qemu_wrapper after do_patch before do_configure
-
-python do_write_toolchain_file () {
-    """Writes a BUILD.gn file for Yocto detailing its toolchains."""
-    toolchain_dir = d.expand("${S}/src/build/toolchain/yocto")
-    bb.utils.mkdirhier(toolchain_dir)
-    toolchain_file = os.path.join(toolchain_dir, "BUILD.gn")
-    write_toolchain_file(d, toolchain_file)
-}
-addtask write_toolchain_file after do_patch before do_configure
-
-# More options to speed up the build
-GN_ARGS += "\
-    enable_nacl=false\
-    disable_ftp_support=true\
-    enable_print_preview=false\
-    enable_remoting=false\
-    use_glib=true\
-    use_gnome_keyring=false\
-    use_pulseaudio=false\
-"
-
-# Respect ld-is-gold in DISTRO_FEATURES when enabling gold
-# Similar patch applied in meta-browser
-# http://patchwork.openembedded.org/patch/77755/
-EXTRA_OEGN_GOLD = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', 'use_gold=true', 'use_gold=false', d)}"
-GN_ARGS += "${EXTRA_OEGN_GOLD}"
-
-# Doesn't build for armv[45]*
-COMPATIBLE_MACHINE = "(-)"
-COMPATIBLE_MACHINE_aarch64 = "(.*)"
-COMPATIBLE_MACHINE_armv6 = "(.*)"
-COMPATIBLE_MACHINE_armv7a = "(.*)"
-COMPATIBLE_MACHINE_armv7ve = "(.*)"
-COMPATIBLE_MACHINE_x86 = "(.*)"
-COMPATIBLE_MACHINE_x86-64 = "(.*)"
-
-#CHROMIUM_PLUGINS_PATH = "${libdir}"
-CBE_DATA_PATH = "${libdir}/cbe"
-CBE_DATA_LOCALES_PATH = "${CBE_DATA_PATH}/locales"
-
-# The text relocations are intentional -- see comments in [GF-52468]
-# TODO: check if we need INSANE_SKIP on ldflags
-INSANE_SKIP_${PN} = "textrel ldflags"
-
-
-do_compile[progress] = "outof:^\[(\d+)/(\d+)\]\s+"
-do_compile() {
-    if [ ! -f ${OUT_DIR}/${BUILD_TYPE}/build.ninja ]; then
-         do_configure
-    fi
-
-    export PATH="${S}/depot_tools:$PATH"
-    ${S}/depot_tools/ninja -v -C ${OUT_DIR}/${BUILD_TYPE} ${TARGET}
-}
-
-do_configure() {
-    configure_env
-}
-
-configure_env() {
-    export GYP_CHROMIUM_NO_ACTION=1
-    export PATH="${S}/depot_tools:$PATH"
-
-    GN_ARGS="${GN_ARGS}"
-    echo GN_ARGS is ${GN_ARGS}
-    echo BUILD_TARGETS are ${TARGET}
-    cd ${SRC_DIR}
-    gn gen ${OUT_DIR}/${BUILD_TYPE} --args="${GN_ARGS}"
-}
-
-WINDOW_SIZE ?= "1920,1080"
-
-configure_browser_settings() {
-    USER_AGENT="Mozilla/5.0 (Linux; NetCast; U) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/${CHROMIUM_VERSION} Safari/537.31"
-    echo "${USER_AGENT}" > ${D_DIR}/user_agent_conf
-    #We can replace below WINDOW_SIZE values from build configuration if available
-    #echo "${WINDOW_SIZE}" > ${D_DIR}/window_size_conf
-}
-
-install_chromium_browser() {
-    D_DIR=${D}${BROWSER_APPLICATION_DIR}
-    install -d ${D_DIR}
-
-    # Install browser files
-     if [ -e "${SRC_DIR}/webos/install" ]; then
-         cd ${OUT_DIR}/${BUILD_TYPE}
-         xargs --arg-file=${SRC_DIR}/webos/install/default_browser/binary.list cp -R --no-dereference --preserve=mode,links -v --target-directory=${D_DIR}
-         cd ${SRC_DIR}
-         xargs --arg-file=${SRC_DIR}/webos/install/default_browser/runtime.list cp -R --no-dereference --preserve=mode,links -v --target-directory=${D_DIR}
-     fi
-
-    # AGL does not have PMLOG
-    sed -i.bak s/PmLogCtl.*// ${D_DIR}/run_webbrowser
-
-    # To execute chromium in JAILER, Security Part needs permissions change
-    # run_webbrowser: Script file for launching chromium
-    chmod -v 755 ${D_DIR}/chrome
-    chmod -v 755 ${D_DIR}/kill_webbrowser
-    chmod -v 755 ${D_DIR}/run_webbrowser
-
-    configure_browser_settings
-}
-
-install_webruntime() {
-    install -d ${D}${libdir}
-    install -d ${D}${includedir}/${BPN}
-    install -d ${D}${CBE_DATA_PATH}
-    install -d ${D}${CBE_DATA_LOCALES_PATH}
-
-    # Install webos webview files
-    if [ -e "${SRC_DIR}/webos/install" ]; then
-        cd ${SRC_DIR}
-        xargs --arg-file=${SRC_DIR}/webos/install/weboswebruntime/staging_inc.list cp --parents --target-directory=${D}${includedir}/${BPN}
-
-        cd ${OUT_DIR}/${BUILD_TYPE}
-
-        cp libcbe.so ${D}${libdir}/
-        if [ "${WEBOS_LTTNG_ENABLED}" = "1" ]; then
-          # use bindir if building non-cbe
-          cp libchromium_lttng_provider.so ${D}${libdir}/
-        fi
-        xargs --arg-file=${SRC_DIR}/webos/install/weboswebruntime/binary.list cp --parents --target-directory=${D}${CBE_DATA_PATH}
-        cat ${SRC_DIR}/webos/install/weboswebruntime/data_locales.list | xargs -I{} install -m 755 -p {} ${D}${CBE_DATA_LOCALES_PATH}
-    fi
-
-    # move this to separate mksnapshot-cross recipe once we figure out how to build just cross mksnapshot from chromium repository
-    install -d ${D}${bindir_cross}
-    gzip -c ${OUT_DIR}/${BUILD_TYPE}/${MKSNAPSHOT_PATH}mksnapshot > ${D}${bindir_cross}/${HOST_SYS}-mksnapshot.gz
-}
-
-do_install() {
-    install_webruntime
-    install_chromium_browser
-}
-
-WEBOS_SYSTEM_BUS_DIRS_LEGACY_BROWSER_APPLICATION = " \
-    ${webos_sysbus_prvservicesdir}/${BROWSER_APPLICATION}.service \
-    ${webos_sysbus_pubservicesdir}/${BROWSER_APPLICATION}.service \
-    ${webos_sysbus_prvrolesdir}/${BROWSER_APPLICATION}.json \
-    ${webos_sysbus_pubrolesdir}/${BROWSER_APPLICATION}.json \
-"
-
-SYSROOT_DIRS_append = " ${bindir_cross}"
-
-PACKAGES_prepend = " \
-    ${PN}-cross-mksnapshot \
-    ${BROWSER_APPLICATION} \
-"
-
-FILES_${BROWSER_APPLICATION} += " \
-    ${BROWSER_APPLICATION_DIR} \
-    ${WEBOS_SYSTEM_BUS_DIRS_LEGACY_BROWSER_APPLICATION} \
-"
-
-RDEPENDS_${BROWSER_APPLICATION} += "${PN}"
-
-VIRTUAL-RUNTIME_gpu-libs ?= ""
-RDEPENDS_${PN} += "${VIRTUAL-RUNTIME_gpu-libs}"
-
-# The text relocations are intentional -- see comments in [GF-52468]
-# TODO: check if we need INSANE_SKIP on ldflags
-INSANE_SKIP_${BROWSER_APPLICATION} += "libdir ldflags textrel"
-
-FILES_${PN} = " \
-    ${libdir}/*.so \
-    ${CBE_DATA_PATH}/* \
-    ${libdir}/${BPN}/*.so \
-    ${WEBOS_SYSTEM_BUS_DIRS} \
-"
-
-FILES_${PN}-dev = " \
-    ${includedir} \
-"
-
-FILES_${PN}-cross-mksnapshot = "${bindir_cross}/${HOST_SYS}-mksnapshot.gz"
diff --git a/meta-agl-profile-graphical-html5/recipes-wam/chromium/gn-utils.inc b/meta-agl-profile-graphical-html5/recipes-wam/chromium/gn-utils.inc
deleted file mode 100644 (file)
index 0fd55a6..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-# GN host architecture helpers.
-#
-# BUILD_ARCH's value corresponds to what uname returns as the machine name.
-# The mapping in gn_host_arch_name() tries to match several possible values
-# returned by the Linux kernel in uname(2) into the corresponding values GN
-# understands.
-def gn_host_arch_name(d):
-    """Returns a GN architecture name corresponding to the build host's machine
-    architecture."""
-    import re
-    arch_translations = {
-        r'aarch64.*': 'arm64',
-        r'arm.*': 'arm',
-        r'i[3456]86$': 'x86',
-        r'x86_64$': 'x64',
-    }
-    build_arch = d.getVar("BUILD_ARCH")
-    for arch_regexp, gn_arch_name in arch_translations.items():
-        if re.match(arch_regexp, build_arch):
-            return gn_arch_name
-    bb.fatal('Unsuported BUILD_ARCH value: "%s"' % build_arch)
-
-# GN target architecture helpers.
-#
-# Determining the target architecture is more difficult, as there are many
-# different values we can use on the Yocto side (e.g. TUNE_ARCH, TARGET_ARCH,
-# MACHINEOVERRIDES etc). What we do is define the mapping with regular,
-# non-Python variables with overrides that are generic enough (i.e. "x86"
-# instead of "i586") and then use gn_target_arch_name() to return the right
-# value with some validation.
-GN_TARGET_ARCH_NAME_aarch64 = "arm64"
-GN_TARGET_ARCH_NAME_arm = "arm"
-GN_TARGET_ARCH_NAME_x86 = "x86"
-GN_TARGET_ARCH_NAME_x86-64 = "x64"
-
-BUILD_CC_toolchain-clang = "clang"
-BUILD_CXX_toolchain-clang = "clang++"
-BUILD_LD_toolchain-clang = "clang"
-
-# knob for clang, when using meta-clang to provide clang and case where
-# clang happens to be default compiler for OE we should let it use clang
-def is_default_cc_clang(d):
-    """Return true if clang is default cross compiler."""
-    toolchain = d.getVar("TOOLCHAIN")
-    overrides = d.getVar("OVERRIDES")
-    if toolchain == "clang" and "toolchain-clang" in overrides.split(":"):
-        return "true"
-    return "false"
-
-def clang_install_path(d):
-    """Return clang compiler install path."""
-    return d.getVar("STAGING_BINDIR_NATIVE")
-
-def gn_target_arch_name(d):
-    """Returns a GN architecture name corresponding to the target machine's
-    architecture."""
-    name = d.getVar("GN_TARGET_ARCH_NAME")
-    if name is None:
-        bb.fatal('Unsupported target architecture. A valid override for the '
-                 'GN_TARGET_ARCH_NAME variable could not be found.')
-    return name
-
-def write_toolchain_file(d, file_path):
-    """Creates a complete GN toolchain file in |file_path|."""
-    import string
-    gcc_toolchain_tmpl = string.Template(
-        'gcc_toolchain("${toolchain_name}") {\n'
-        '  cc = "${cc}"\n'
-        '  cxx = "${cxx}"\n'
-        '  ar = "${ar}"\n'
-        '  ld = cxx  # GN expects a compiler, not a linker.\n'
-        '  nm = "${nm}"\n'
-        '  readelf = "${readelf}"\n'
-        '  extra_cflags = "${extra_cflags}"\n'
-        '  extra_cppflags = "${extra_cppflags}"\n'
-        '  extra_cxxflags = "${extra_cxxflags}"\n'
-        '  extra_ldflags = "${extra_ldflags}"\n'
-        '  toolchain_args = {\n'
-        '    current_cpu = "${current_cpu}"\n'
-        '    current_os = "linux"\n'
-        '    is_clang = false\n'
-        '  }\n'
-        '}\n'
-    )
-    clang_toolchain_tmpl = string.Template(
-        'clang_toolchain("clang_${toolchain_name}") {\n'
-        '  extra_cflags = "${extra_cflags}"\n'
-        '  extra_cppflags = "${extra_cppflags}"\n'
-        '  extra_cxxflags = "${extra_cxxflags}"\n'
-        '  extra_ldflags = "${extra_ldflags}"\n'
-        '  toolchain_args = {\n'
-        '    current_cpu = "${current_cpu}"\n'
-        '    current_os = "linux"\n'
-        '    is_clang = true\n'
-        '    use_gold = true\n'
-        '  }\n'
-        '}\n'
-    )
-
-    native_toolchain = {
-        'toolchain_name': 'yocto_native',
-        'current_cpu': gn_host_arch_name(d),
-        'cc': d.expand('${BUILD_CC}'),
-        'cxx': d.expand('${BUILD_CXX}'),
-        'ar': d.expand('${BUILD_AR}'),
-        'nm': d.expand('${BUILD_NM}'),
-        'readelf': d.expand('${BUILD_PREFIX}readelf'),
-        'extra_cflags': d.expand('${BUILD_CFLAGS}'),
-        'extra_cppflags': d.expand('${BUILD_CPPFLAGS}'),
-        'extra_cxxflags': d.expand('${BUILD_CXXFLAGS}'),
-        'extra_ldflags': d.expand('${BUILD_LDFLAGS}'),
-    }
-    target_toolchain = {
-        'toolchain_name': 'yocto_target',
-        'current_cpu': gn_target_arch_name(d),
-        'cc': d.expand('${CC}'),
-        'cxx': d.expand('${CXX}'),
-        'ar': d.expand('${AR}'),
-        'nm': d.expand('${NM}'),
-        'readelf': d.expand('${TARGET_PREFIX}readelf'),
-        'extra_cflags': d.expand('${TARGET_CFLAGS}'),
-        'extra_cppflags': d.expand('${TARGET_CPPFLAGS}'),
-        'extra_cxxflags': d.expand('${TARGET_CXXFLAGS}'),
-        'extra_ldflags': d.expand('${TARGET_LDFLAGS}'),
-        'strip': '',
-    }
-
-    with open(file_path, 'w') as toolchain_file:
-        toolchain_file.write(
-            '# This file has been generated automatically.\n'
-            '\n'
-            'import("//build/config/sysroot.gni")\n'
-            'import("//build/toolchain/gcc_toolchain.gni")\n'
-            '\n'
-        )
-        toolchain_file.write(gcc_toolchain_tmpl.substitute(native_toolchain))
-        toolchain_file.write(gcc_toolchain_tmpl.substitute(target_toolchain))
-        toolchain_file.write(clang_toolchain_tmpl.substitute(native_toolchain))
-        toolchain_file.write(clang_toolchain_tmpl.substitute(target_toolchain))
diff --git a/meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr.env b/meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr.env
deleted file mode 100644 (file)
index c8ddc51..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-##### AGL: not set in WebAppMgr@.service
-#XDG_SESSION_ID="c2"
-
-##### AGL: set by WebAppMgr@.service (depends on user)
-#XDG_RUNTIME_DIR="/run/user/%i"
-
-# Set wam executable file path
-HOOK_SEGV=NO
-WAM_EXE_PATH="/usr/bin/WebAppMgr"
-
-# Set wam name for user-agent
-WAM_NAME="WebAppManager"
-
-# Only allow UTF8 encoding for luna-service messages.
-LS_ENABLE_UTF8=1
-
-# Set effective userid and groupid
-#WAM_UID="wam"
-#WAM_GID="compositor"
-
-# Set location of error page (will follow localization rules based on this path)
-#WAM_ERROR_PAGE="file:///usr/share/localization/wam/loaderror.html"
-
-# suspending javascript execution delay for page visibility
-WAM_SUSPEND_DELAY_IN_MS=250
-
-#if [ -e "etc/wam/make_shm.sh" ] ; then
-#    /etc/wam/make_shm.sh
-#fi
-
-# Set user data directory for WebAppMgr
-##### AGL: set by WebAppMgr@.service (depends on user)
-#WAM_DATA_PATH="/home/%i/wamdata"
-
-# ensure that wam data directories exist
-#mkdir -p ${WAM_DATA_PATH}
-
-# set directories permission
-#chown ${WAM_UID}:${WAM_GID} ${WAM_DATA_PATH}
-
-# setup 50 Mb maximum for ApplicationCache
-WAM_APPCACHE_MAXSIZE=52428800
-
-# setup 10 Mb maximum for ApplicationCache per domain
-WAM_APPCACHE_DOMAINLIMIT=10485760
-
-# setup 50 Mb maximum for DiskCache
-WAM_DISKCACHE_MAXSIZE=52428800
-
-# setup 256 Kb maximum for resource buffer allocation
-WAM_RESOURCE_BUFFER_MAX_ALLOC_SIZE=262144
-
-# setup 1 Mb for resource buffer
-WAM_RESOURCE_BUFFER_SIZE=1048576
-
-# setup 200 seconds for watchdog timeout of render process
-WATCHDOG_RENDER_TIMEOUT=200
-
-# setup nubmer of raster threads to 1
-BLINK_NUM_RASTER_THREADS=2
-
-# use default tile width if not sed by recipe
-#if [ "$BLINK_NUM_RASTER_THREADS" = "WEBOS${BLINK_NUM_RASTER_THREADS#WEBOS}" ]; then
-BLINK_NUM_RASTER_THREADS=1
-#fi
-
-# setup 6 Mb maximum for the program GPU cache
-GPU_PROGRAM_CACHE_SIZE=6144
-
-# disable using enyo system app specfic optimization
-# currently used optimizations : inline caching off
-#USE_SYSTEM_APP_OPTIMIZATION="0"
-
-# Set location of NaCl modules
-#CHROMIUM_PATH="/usr/palm/applications/com.lge.app.chromium"
-#NACL_PLUGIN=${CHROMIUM_PATH}"/libppGoogleNaClPluginChrome.so"
-#NACL_IRT_LIBRARY=${CHROMIUM_PATH}"/nacl_irt_arm.nexe"
-#NACL_HELPER=${CHROMIUM_PATH}"/nacl_helper"
-#NACL_HELPER_BOOTSTRAP=${CHROMIUM_PATH}"/nacl_helper_bootstrap"
-
-# Set location of NPAPI plugins for all Apps including default Apps
-# This is for the flash plugin of Signage, webOS TV doesn't use it.
-#PRIVILEGED_PLUGIN_PATH=""
-
-# Set location of NPAPI plugins for NetCast Apps
-# NetCast Apps should access only the plugins in this path
-#NETCAST_PLUGIN_PATH="/usr/lib/BrowserPlugins"
-
-# Set location of NPAPI plugins for HbbTV app.
-#HBBTV_PLUGIN_PATH="/usr/lib/HbbtvPlugins"
-
-# Set InetTV player stored path
-#INETTV_HTML_PLAYER_PATH="/usr/share/inettv/inettv_player/index.html"
-
-# Set location of extra libraries
-#CDM_LIB_PATH="/usr/lib"
-
-# Set location of all NPAPI plugins
-NPAPI_PLUGIN_PATH=${HBBTV_PLUGIN_PATH}":"${NETCAST_PLUGIN_PATH}":"${PRIVILEGED_PLUGIN_PATH}
-
-#if [ -e "etc/wam/make_shm.sh" ] ; then
-#    /etc/wam/make_shm.sh
-#fi
-
-# setup 8 Mb minimum codecache capacity
-JSC_minGlobalCodeCacheCapacity=8388608
-
-# Enable more explicit logging of timing with regards to rendering
-# export WAM2_ENABLE_DEBUG_RENDER_TIMING=1
-
-# enable Web Inspector and Tellurium if in developer mode
-TELLURIUM_NUB_PATH=/usr/palm/tellurium/telluriumnub.js
-ENABLE_INSPECTOR=1
-
-# Enable cursor by default
-ENABLE_CURSOR_BY_DEFAULT=1
-
-# Enable launch optimization
-ENABLE_LAUNCH_OPTIMIZATION=1
-
-# Set the duration(seconds) passed from last network activity (e.g. FMP Detector)
-# If set to a positive value, adjust a custom timeout for a network stable timer in FMPDetector
-NETWORK_STABLE_TIMEOUT=3
-
-# please keep it in alphabetical order
-#WAM_EXTRA_FLAGS=""
-#WAM_JS_FLAGS=""
-#WAM_COMMON_SWITCHES=" \
-#    --application-cache-domain-limit=$WAM_APPCACHE_DOMAINLIMIT \
-#    --application-cache-size=$WAM_APPCACHE_MAXSIZE \
-#    --browser-subprocess-path=$WAM_EXE_PATH \
-#    --disable-direct-npapi-requests \
-#    --disable-extensions \
-#    --disable-low-res-tiling \
-#    --disable-new-video-renderer \
-#    --disk-cache-size=$WAM_DISKCACHE_MAXSIZE \
-#    --enable-aggressive-release-policy \
-#    --enable-accelerated-plugin-rendering \
-#    --accelerated-plugin-rendering-blacklist=device;drmAgent;sound;service \
-#    --enable-gpu-rasterization \
-#    --disable-gpu-rasterization-for-first-frame \
-#    --enable-key-event-throttling \
-#    --enable-threaded-compositing \
-#    --enable-watchdog \
-#    --hide-selection-handles \
-#    --ignore-gpu-blacklist \
-#    --ignore-netif=p2p \
-#    --in-process-gpu \
-#    --max-unused-resource-memory-usage-percentage=0 \
-#    --network-stable-timeout=$NETWORK_STABLE_TIMEOUT \
-#    --noerrdialogs \
-#    --num-raster-threads=$BLINK_NUM_RASTER_THREADS \
-#    --ozone-platform=wayland \
-#    --remote-debugging-port=9998 \
-#    --resource-buffer-max-allocation-size=$WAM_RESOURCE_BUFFER_MAX_ALLOC_SIZE \
-#    --resource-buffer-size=$WAM_RESOURCE_BUFFER_SIZE \
-#    --touch-events=disabled \
-#    --ui-disable-opaque-shader-program \
-#    --user-agent-suffix=SmartTV \
-#    --user-data-dir=$WAM_DATA_PATH \
-#    --enable-devtools-experiments \
-#    --webos-wam \ "
-
-#WAM_LITE_SWITCHES=" --in-process-zygote "
-
-#export WAM_WEBOS_LITE=NO
-#if [ "${WAM_WEBOS_LITE}" = "YES" ] ; then
-#    export WAM_SWITCHES=${WAM_COMMON_SWITCHES}${WAM_LITE_SWITCHES}
-#    export SKIA_FONT_CACHE_SIZE=1
-#    export SKIA_IMAGE_CACHE_SIZE=40
-#    export SKIA_BACKGROUND_FONT_CACHE_SIZE=0
-#else
-#    export WAM_SWITCHES=${WAM_COMMON_SWITCHES}
-#    export SKIA_FONT_CACHE_SIZE=8
-#    export SKIA_IMAGE_CACHE_SIZE=80
-#    export SKIA_BACKGROUND_FONT_CACHE_SIZE=512
-#fi
-
-#export WAM_EXTRA_SKIA_CACHE_SWITCHES=" \
-#    --skia-font-cache-size-mb=$SKIA_FONT_CACHE_SIZE \
-#    --skia-image-cache-size-mb=$SKIA_IMAGE_CACHE_SIZE \
-#    --skia-background-font-cache-size-kb=$SKIA_BACKGROUND_FONT_CACHE_SIZE \
-#    "
-
-#export WAM_EXTRA_GPU_TUNING_SWITCHES=" \
-#    --gpu-program-cache-size-kb=$GPU_PROGRAM_CACHE_SIZE \
-#    "
-#export WAM_WATCHDOG_RENDER_TIMEOUT_SWITCHES=" \
-#    --watchdog-render-timeout=$WATCHDOG_RENDER_TIMEOUT \
-#    "
-
-#WEBOS_LOAD_ACCESSIBILITY_PLUGIN=1
-
-#WAM_V8_CODE_CACHE_SWITCHES=" --enable-local-resource-code-cache --disallow-code-cache-from-file-uris-with-query-string "
-
-# Load any special configuration from plugins
-#if [ -e "/etc/wam/plugins/conf.sh" ] ; then
-#    . /etc/wam/plugins/conf.sh || true
-#fi
-
-#exec $WAM_EXE_PATH $WAM_SWITCHES $WAM_EXTRA_SKIA_CACHE_SWITCHES $WAM_EXTRA_GPU_TUNING_SWITCHES $WAM_WATCHDOG_RENDER_TIMEOUT_SWITCHES $WAM_EXTRA_FLAGS $WAM_V8_CODE_CACHE_SWITCHES --js-flags="$WAM_JS_FLAGS"
-
diff --git a/meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr@.service b/meta-agl-profile-graphical-html5/recipes-wam/wam/files/WebAppMgr@.service
deleted file mode 100644 (file)
index a855bf9..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-# @@@LICENSE
-#
-# Copyright (c) 2017-2018 LG Electronics, Inc.
-#
-# Confidential computer software. Valid license from LG required for
-# possession, use or copying. Consistent with FAR 12.211 and 12.212,
-# Commercial Computer Software, Computer Software Documentation, and
-# Technical Data for Commercial Items are licensed to the U.S. Government
-# under vendor's standard commercial license.
-#
-# LICENSE@@@
-
-[Unit]
-Description="WebAppMgr is responsible for running web apps and manage their lifecycle"
-After=afm-service-homescreen-service--0.1--main@%i.service weston@display.service
-Wants=afm-service-homescreen-service--0.1--main@%i.service
-BindsTo=weston@display.service
-
-[Service]
-Type=simple
-User=%i
-Slice=user-%i.slice
-SmackProcessLabel=System
-SupplementaryGroups=audio display
-UMask=0077
-CapabilityBoundingSet=
-OOMScoreAdjust=-1000
-EnvironmentFile=-/etc/default/WebAppMgr.env
-Environment=XDG_RUNTIME_DIR=/run/user/%i
-Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%i/bus
-Environment=WAM_DATA_PATH="/home/%i/wamdata"
-ExecStart=/usr/bin/WebAppMgr --no-sandbox --in-process-gpu --remote-debugging-port=9998 --user-data-dir="/home/%i/wamdata" --webos-wam
-Restart=on-failure
-RestartSec=50
-
-[Install]
-WantedBy=default.target
diff --git a/meta-agl-profile-graphical-html5/recipes-wam/wam/files/trunc-webapp-roles.patch b/meta-agl-profile-graphical-html5/recipes-wam/wam/files/trunc-webapp-roles.patch
deleted file mode 100644 (file)
index 829abe0..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-From f31e93261f34abaa3dcdc4959963f5b5a8983002 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jan-Simon=20M=C3=B6ller?= <jsmoeller@linuxfoundation.org>
-Date: Thu, 25 Jun 2020 19:47:24 +0200
-Subject: [PATCH] Set webapp roles that are max 12 characters long.
-
-From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= <jaragunde@igalia.com>
-
-This is a workaround for SPEC-3127. To prevent repeated roles as much
-as possible, I'm using the appid as a basis instead of "Webapp-" +
-host + port, which has many chances to be redundant in the first 12
-chars.
-
-Bug-AGL: SPEC-3127
-
----
- src/agl/WebRuntimeAGL.cpp | 10 +++-------
- 1 file changed, 3 insertions(+), 7 deletions(-)
-
-diff --git a/src/agl/WebRuntimeAGL.cpp b/src/agl/WebRuntimeAGL.cpp
-index aed928b..efd2ee4 100644
---- a/src/agl/WebRuntimeAGL.cpp
-+++ b/src/agl/WebRuntimeAGL.cpp
-@@ -274,7 +274,6 @@ int WebAppLauncherRuntime::run(int argc, const char** argv) {
-   m_id = getAppId(args);
-   m_url = getAppUrl(args);
--  m_role = "WebApp";
-   setup_signals();
-@@ -326,15 +325,9 @@ bool WebAppLauncherRuntime::init() {
-       if (n != std::string::npos) {
-         std::string sport = authority.substr(n+1);
-         m_host = authority.substr(0, n);
--        m_role.push_back('-');
--        m_role.append(m_host);
--        m_role.push_back('-');
--        m_role.append(sport);
-         m_port = stringTo<int>(sport);
-       } else {
-         m_host = authority;
--        m_role.push_back('-');
--        m_role.append(m_host);
-       }
-     }
-@@ -375,6 +368,9 @@ bool WebAppLauncherRuntime::init() {
-       m_role = "homescreen";
-     else if (m_id.rfind("webapps-homescreen", 0) == 0)
-       m_role = "homescreen";
-+    else {
-+      m_role = m_id.substr(0,12);
-+    }
-     LOG_DEBUG("id=[%s], name=[%s], role=[%s], url=[%s], host=[%s], port=%d, token=[%s], width=[%s], height[%s], surface_type[%d], panel_type[%d]",
-             m_id.c_str(), m_name.c_str(), m_role.c_str(), m_url.c_str(),
diff --git a/meta-agl-profile-graphical-html5/recipes-wam/wam/wam_git.bb b/meta-agl-profile-graphical-html5/recipes-wam/wam/wam_git.bb
deleted file mode 100644 (file)
index d50a14f..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-SUMMARY = "WAM"
-AUTHOR = "Jani Hautakangas <jani.hautakangas@lge.com>"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-inherit cmake
-
-DEPENDS = "glib-2.0 jsoncpp boost chromium68 wayland-ivi-extension libhomescreen"
-
-EXTRA_OECMAKE = "\
-    -DCMAKE_BUILD_TYPE=Release \
-    -DCMAKE_INSTALL_PREFIX=${prefix} \
-    -DPLATFORM_NAME=${@'${DISTRO}'.upper().replace('-', '_')} \
-    -DCHROMIUM_SRC_DIR=${STAGING_INCDIR}/chromium68"
-
-PR="r0"
-
-PROVIDES += "virtual/webruntime"
-RPROVIDES_${PN} += "virtual/webruntime"
-
-SRC_URI = "\
-    git://github.com/igalia/${BPN}.git;branch=WIP@6.agl.compositor;protocol=https \
-    file://WebAppMgr@.service \
-    file://WebAppMgr.env \
-    file://trunc-webapp-roles.patch \
-"
-S = "${WORKDIR}/git"
-SRCREV = "bd650046b688eb1593ae68c16ba3912837507d08"
-
-do_install_append() {
-    install -d ${D}${sysconfdir}/wam
-    install -v -m 644 ${S}/files/launch/security_policy.conf ${D}${sysconfdir}/wam/security_policy.conf
-    install -d ${D}${systemd_system_unitdir}
-    install -v -m 644 ${WORKDIR}/WebAppMgr@.service ${D}${systemd_system_unitdir}/WebAppMgr@.service
-    install -d ${D}${sysconfdir}/default/
-    install -v -m 644 ${WORKDIR}/WebAppMgr.env ${D}${sysconfdir}/default/WebAppMgr.env
-    ln -snf WebAppMgr ${D}${bindir}/web-runtime
-    install -d ${D}${systemd_system_unitdir}/afm-user-session@.target.wants
-    ln -sf ../WebAppMgr@.service ${D}${systemd_system_unitdir}/afm-user-session@.target.wants/
-}
-
-FILES_${PN} += "${sysconfdir}/init ${sysconfdir}/wam ${libdir}/webappmanager/plugins/*.so ${systemd_system_unitdir}"
-
-CXXFLAGS_append_agl-devel = " -DAGL_DEVEL"
-
-do_install_append_agl-devel() {
-    # Enable remote inspector and dev mode
-    install -d ${D}${localstatedir}/agl-devel/preferences
-    touch ${D}${localstatedir}/agl-devel/preferences/debug_system_apps
-    touch ${D}${localstatedir}/agl-devel/preferences/devmode_enabled
-}
diff --git a/meta-agl-profile-graphical-qt5/LICENSE b/meta-agl-profile-graphical-qt5/LICENSE
deleted file mode 100644 (file)
index e8758f8..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Different components of the AGL layers are under different licenses (a mix
-of MIT and GPLv2). See LICENSE.GPL-2.0-only and LICENSE.MIT for further
-details of the individual licenses.
-
-All metadata (e.g. .bb, .bbappend, .bbclass, .inc, templates/* and similar)
-is MIT licensed unless otherwise stated.
-Source code included in tree for individual recipes (e.g. patches) are under
-the LICENSE stated in the associated recipe (.bb file) unless otherwise stated.
-
-License information for any other files (scripts) is either explicitly stated
-or defaults to GPL version 2 only.
-
-Individual files can contain the following style tags instead of the full
-license text to identify their license:
-
-    SPDX-License-Identifier: GPL-2.0-only
-    SPDX-License-Identifier: MIT
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-graphical-qt5/LICENSE.GPL-2.0-only b/meta-agl-profile-graphical-qt5/LICENSE.GPL-2.0-only
deleted file mode 100644 (file)
index 5db3c0a..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                           NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-
-Note:
-Individual files contain the following tag instead of the full license text.
-
-    SPDX-License-Identifier: GPL-2.0-only
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-graphical-qt5/LICENSE.MIT b/meta-agl-profile-graphical-qt5/LICENSE.MIT
deleted file mode 100644 (file)
index a6919eb..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-Note:
-Individual files contain the following tag instead of the full license text.
-
-    SPDX-License-Identifier: MIT
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-graphical-qt5/conf/layer.conf b/meta-agl-profile-graphical-qt5/conf/layer.conf
deleted file mode 100644 (file)
index ef39630..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# We have a conf and classes directory, add to BBPATH
-BBPATH =. "${LAYERDIR}:"
-
-# We have recipes-* directories, add to BBFILES
-BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
-            ${LAYERDIR}/recipes-*/*/*.bbappend"
-
-BBFILE_COLLECTIONS += "aglprofilegraphicalqt5"
-BBFILE_PATTERN_aglprofilegraphicalqt5 = "^${LAYERDIR}/"
-BBFILE_PRIORITY_aglprofilegraphicalqt5 = "70"
-
-LAYERSERIES_COMPAT_aglprofilegraphicalqt5 = "dunfell"
diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5-crosssdk.bb b/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5-crosssdk.bb
deleted file mode 100755 (executable)
index 5147ea4..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY = "Cross SDK of Full AGL Distribution for IVI profile"
-
-DESCRIPTION = "SDK image for full AGL Distribution for IVI profile. \
-It includes the full meta-toolchain, plus developement headers and libraries \
-to form a standalone cross SDK."
-
-require agl-image-graphical-qt5.bb
-
-LICENSE = "MIT"
-
-require agl-image-graphical-qt5-crosssdk.inc
-
-inherit populate_sdk populate_sdk_qt5
-
-# Task do_populate_sdk and do_rootfs can't be exec simultaneously.
-# Both exec "createrepo" on the same directory, and so one of them
-# can failed (randomly).
-addtask do_populate_sdk after do_rootfs
diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5-crosssdk.inc b/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5-crosssdk.inc
deleted file mode 100644 (file)
index f43bb07..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-require recipes-platform/images/agl-image-minimal-crosssdk.inc
-
-TOOLCHAIN_TARGET_TASK += "libafb-helpers-qt-staticdev"
-
-# Add wayland-scanner to SDK (SPEC-945)
-# Use TOOLCHAIN_HOST_TASK instead of adding to the packagegroup
-# wayland-scanner is in nativesdk-wayland-dev !
-# option: add also nativesdk-qtwayland-tools
-TOOLCHAIN_HOST_TASK_append = " nativesdk-wayland nativesdk-wayland-dev"
-
-TOOLCHAIN_HOST_TASK_append = " nativesdk-perl-modules "
-
-# Add qtwaylandscanner to the SDK
-TOOLCHAIN_HOST_TASK_append = " nativesdk-qtwayland-tools "
diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.bb b/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.bb
deleted file mode 100644 (file)
index bcfd724..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-SUMMARY = "A very basic Wayland image with a terminal"
-
-require agl-image-graphical-qt5.inc
-
-LICENSE = "MIT"
diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.inc b/meta-agl-profile-graphical-qt5/recipes-platform/images/agl-image-graphical-qt5.inc
deleted file mode 100644 (file)
index 114d06a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-require recipes-platform/images/agl-image-weston.inc
diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-appfw-native-qt5.bb b/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-appfw-native-qt5.bb
deleted file mode 100644 (file)
index a05d69f..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "Qt5 for native GUI framework of AGL IVI profile"
-DESCRIPTION = "A set of Qt5 packages which required by Native App Fw Subsystem"
-
-LICENSE = "MIT"
-
-inherit packagegroup
-
-PACKAGES = "\
-    packagegroup-agl-appfw-native-qt5 \
-    "
-
-ALLOW_EMPTY_${PN} = "1"
-
-RDEPENDS_${PN} += "\
-    qtbase \
-    qtbase-dev \
-    qtbase-plugins \
-    qtbase-staticdev \
-    qtbase-tools \
-    qtdeclarative \
-    qtdeclarative-qmlplugins \
-    qtdeclarative-tools \
-    qtcharts \
-    qtwayland \
-    qtwayland-plugins \
-    qtwayland-tools \
-    qtgraphicaleffects-qmlplugins \
-    qtvirtualkeyboard \
-    "
diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-demo-qt-examples.bb b/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-demo-qt-examples.bb
deleted file mode 100644 (file)
index adebabe..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "The examples to test Qt5 on AGL Demo Platform"
-DESCRIPTION = "A set of packages which contains Qt5 examples"
-
-LICENSE = "MIT"
-
-inherit packagegroup
-
-PACKAGES = "\
-    packagegroup-agl-demo-qt-examples \
-    "
-
-ALLOW_EMPTY_${PN} = "1"
-
-RDEPENDS_${PN} += "\
-    qt3d-examples \
-    qtbase-examples \
-    qtconnectivity-examples \
-    qtdeclarative-examples \
-    qtlocation-examples \
-    qtmultimedia-examples \
-    qtsensors-examples \
-    qtsystems-examples \
-    qttools-examples \
-    qtwayland-examples \
-    qtxmlpatterns-examples \
-    "
diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-qt5.bb b/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-agl-profile-graphical-qt5.bb
deleted file mode 100644 (file)
index 74b35f7..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "The middlewares for AGL IVI profile"
-DESCRIPTION = "The set of packages required for AGL Distribution"
-LICENSE = "MIT"
-
-inherit packagegroup
-
-PACKAGES = "\
-    packagegroup-agl-profile-graphical-qt5 \
-    profile-graphical-qt5 \
-    "
-
-ALLOW_EMPTY_${PN} = "1"
-
-RDEPENDS_${PN} += "\
-    packagegroup-agl-profile-graphical \
-    packagegroup-agl-appfw-native-qt5 \
-"
-
-RDEPENDS_${PN} += "\
-    agl-login-manager \
-    "
-
-RDEPENDS_profile-graphical-qt5 = "${PN}"
diff --git a/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-qt5-toolchain-target.bbappend b/meta-agl-profile-graphical-qt5/recipes-platform/packagegroups/packagegroup-qt5-toolchain-target.bbappend
deleted file mode 100644 (file)
index 08afa6c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-# add missing dependencies for SDK
-
-RDEPENDS_${PN} += " \
-       qttools-plugins \
-       qtquickcontrols-dev \
-       qtquickcontrols-qmlplugins \
-       qtquickcontrols2-dev \
-       qtquickcontrols2-mkspecs \
-       qtquickcontrols2-qmlplugins \
-"
-
-# remove dependency on qtwebkit (still added to SDK by packagegroup-qt5-toolchain-target)
-# see SPEC-1159
-RDEPENDS_${PN}_remove = " \
-    qtwebkit-dev \
-    qtwebkit-mkspecs \
-    qtwebkit-qmlplugins \
-"
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qlibhomescreen/qlibhomescreen_git.bb b/meta-agl-profile-graphical-qt5/recipes-qt/qlibhomescreen/qlibhomescreen_git.bb
deleted file mode 100644 (file)
index 09a262e..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-SUMMARY     = "A wrapper library of libhomescreen for Qt Application in AGL"
-SECTION     = "libs"
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
-
-DEPENDS = "qtbase libhomescreen"
-RDEPENDS_${PN} = "libhomescreen"
-
-inherit qmake5
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/libqthomescreen.git;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "b218476402bceda7eb42d41064552a7261ff3205"
-S = "${WORKDIR}/git"
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qml-execscript-plugin/qml-execscript-plugin_1.0.bb b/meta-agl-profile-graphical-qt5/recipes-qt/qml-execscript-plugin/qml-execscript-plugin_1.0.bb
deleted file mode 100644 (file)
index dbeda2d..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "Execute Script QML plugin"
-DESCRIPTION = "This provides a simple QML plugin able to execute script file."
-
-LICENSE = "CLOSED"
-
-DEPENDS = "qtbase-native qtdeclarative"
-
-SRC_URI = "git://github.com/ntanibata/qml-execscript-plugin.git;protocol=git;"
-SRCREV = "1f05c44cccd8aef485d8df8206c8df4e5ad6f310"
-S = "${WORKDIR}/git"
-
-inherit qmake5
-
-EXTRA_OECONF = "--with-moc-dir=${STAGING_BINDIR_NATIVE}/qt5"
-QML_LIBDIR = "${libdir}/qt5/qml"
-
-do_install() {
-    install -d ${D}${libdir}/qt5/qml/execScript/
-    install -m 0755 execScript/*.so ${D}${libdir}/qt5/qml/execScript/
-    install -m 0644 ../git/execScript/qmldir ${D}${libdir}/qt5/qml/execScript/
-}
-
-FILES_${PN} += "${QML_LIBDIR}/execScript/libexecscriptplugin.so"
-FILES_${PN} += "${QML_LIBDIR}/execScript/qmldir"
-FILES_${PN}-dbg += "${QML_LIBDIR}/execScript/.debug"
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase-native_git.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase-native_git.bbappend
deleted file mode 100644 (file)
index b7cfe8d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# Backport this fix from meta-qt5:
-# https://github.com/meta-qt5/meta-qt5/commit/bf7cdd963008f2d61bc4c324fff2bfafe511fb5f
-SRC_URI_remove = "file://0012-qdbuscpp2xml.pro-do-not-build-with-bootstrapped-depe.patch"
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase/0001-Force-qdbus-to-make-introspect-for-every-findMetaObj.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase/0001-Force-qdbus-to-make-introspect-for-every-findMetaObj.patch
deleted file mode 100644 (file)
index 10a1ddd..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-From a4943bb5c7fdf5eb297223d2c3bb02d2271bea48 Mon Sep 17 00:00:00 2001
-From: Risto Avila <risto.avila@theqtcompany.com>
-Date: Thu, 17 Dec 2015 04:22:53 +0200
-Subject: [PATCH] Force qdbus to make introspect for every findMetaObject
-
----
- src/dbus/qdbusintegrator.cpp | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
-index cce8b9c..ae2a9dc 100644
---- a/src/dbus/qdbusintegrator.cpp
-+++ b/src/dbus/qdbusintegrator.cpp
-@@ -2512,8 +2512,11 @@ QDBusConnectionPrivate::findMetaObject(const QString &service, const QString &pa
-     if (!interface.isEmpty()) {
-         QDBusReadLocker locker(FindMetaObject1Action, this);
-         QDBusMetaObject *mo = cachedMetaObjects.value(interface, 0);
--        if (mo)
--            return mo;
-+        if (mo) {
-+            // service is not unique. Remove cached object to force introspect
-+            cachedMetaObjects.remove(interface);
-+            delete mo;
-+        }
-     }
-     // introspect the target object
--- 
-1.9.1
-
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase_%.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtbase_%.bbappend
deleted file mode 100644 (file)
index e939fa3..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
-PACKAGECONFIG_WAYLAND = "${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)}"
-PACKAGECONFIG_GL = "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2', '', d)}"
-PACKAGECONFIG_append = " ${PACKAGECONFIG_WAYLAND} icu accessibility"
-PACKAGECONFIG_append = " fontconfig"
-PACKAGECONFIG_append = " sql-sqlite"
-
-EXTRA_OECONF_append = ""
-
-# '-qpa wayland-egl' set wayland-egl as default of platform plagins
-PACKAGECONFIG[wayland]="-qpa wayland-egl -no-qpa-platform-guard"
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtlocation/0001-mapbox-update-API-url-to-match-new-schema.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtlocation/0001-mapbox-update-API-url-to-match-new-schema.patch
deleted file mode 100644 (file)
index ba8a991..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-From 58197439eade86e7efc6fe98116c0092ea429d29 Mon Sep 17 00:00:00 2001
-From: Matt Ranostay <matt.ranostay@konsulko.com>
-Date: Tue, 10 Mar 2020 13:59:58 -0700
-Subject: [PATCH] mapbox: update API url to match new schema
-
----
- src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp | 7 ++++---
- src/plugins/geoservices/mapbox/qmapboxcommon.h           | 2 +-
- 2 files changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp b/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp
-index 0b128556..bd2be6b6 100644
---- a/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp
-+++ b/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp
-@@ -88,12 +88,13 @@ QGeoTiledMapReply *QGeoTileFetcherMapbox::getTileImage(const QGeoTileSpec &spec)
-     request.setRawHeader("User-Agent", m_userAgent);
-     request.setUrl(QUrl(mapboxTilesApiPath +
--                        ((spec.mapId() >= m_mapIds.size()) ? QStringLiteral("mapbox.streets") : m_mapIds[spec.mapId() - 1]) + QLatin1Char('/') +
-+                        m_mapIds[m_mapIds.size() - 1] +
-+                        QStringLiteral("/tiles/256/") +
-                         QString::number(spec.zoom()) + QLatin1Char('/') +
-                         QString::number(spec.x()) + QLatin1Char('/') +
-                         QString::number(spec.y()) +
--                        ((m_scaleFactor > 1) ? (QLatin1Char('@') + QString::number(m_scaleFactor) + QLatin1String("x.")) : QLatin1String(".")) +
--                        m_format + QLatin1Char('?') +
-+                        ((m_scaleFactor > 1) ? (QLatin1Char('@') + QString::number(m_scaleFactor) + QLatin1String("x")) : QLatin1String("")) +
-+                        QLatin1Char('?') +
-                         QStringLiteral("access_token=") + m_accessToken));
-     QNetworkReply *reply = m_networkManager->get(request);
-diff --git a/src/plugins/geoservices/mapbox/qmapboxcommon.h b/src/plugins/geoservices/mapbox/qmapboxcommon.h
-index e60c4e83..4b2ea98d 100644
---- a/src/plugins/geoservices/mapbox/qmapboxcommon.h
-+++ b/src/plugins/geoservices/mapbox/qmapboxcommon.h
-@@ -46,7 +46,7 @@
- QT_BEGIN_NAMESPACE
--static const QString mapboxTilesApiPath = QStringLiteral("http://api.tiles.mapbox.com/v4/");
-+static const QString mapboxTilesApiPath = QStringLiteral("https://api.mapbox.com/");
- // https://www.mapbox.com/api-documentation/#geocoding
- static const QString mapboxGeocodingApiPath = QStringLiteral("https://api.mapbox.com/geocoding/v5/mapbox.places/");
--- 
-2.25.0
-
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtlocation_%.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtlocation_%.bbappend
deleted file mode 100644 (file)
index bcda6a1..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
-SRC_URI += "\
-    file://0001-mapbox-update-API-url-to-match-new-schema.patch \
-    "
-
-# Need to explicitly enable the various plugins
-PACKAGECONFIG += " \
-       geoservices_osm \
-       geoservices_here \
-       geoservices_itemsoverlay \
-       geoservices_mapbox \
-       geoservices_mapboxgl \
-"
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia/0001-metadata-image-support-with-the-data-URL-scheme-for-.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia/0001-metadata-image-support-with-the-data-URL-scheme-for-.patch
deleted file mode 100644 (file)
index 007e467..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-From ed61f1d932c5c6d38458fcd2e1d5d154383f017e Mon Sep 17 00:00:00 2001
-From: Tasuku Suzuki <tasuku.suzuki@qt.io>
-Date: Mon, 12 Dec 2016 16:32:47 +0900
-Subject: [PATCH] metadata image support with the "data" URL scheme for QtQuick
-
-add posterImage, coverArtImage and thumbnailImage to metadata
-
-Change-Id: I10b9bae10c219ffa41506d6e6b345020790217a6
----
- .../multimedia/qdeclarativemediametadata_p.h       | 33 ++++++++++++++++++++++
- 1 file changed, 33 insertions(+)
-
-diff --git a/src/imports/multimedia/qdeclarativemediametadata_p.h b/src/imports/multimedia/qdeclarativemediametadata_p.h
-index ede7f87..6a6a815 100644
---- a/src/imports/multimedia/qdeclarativemediametadata_p.h
-+++ b/src/imports/multimedia/qdeclarativemediametadata_p.h
-@@ -51,6 +51,9 @@
- // We mean it.
- //
-+#include <QtCore/QBuffer>
-+#include <QtGui/QImage>
-+#include <QtGui/QImageWriter>
- #include <QtQml/qqml.h>
- #include <QtMultimedia/qmediametadata.h>
- #include <QtMultimedia/qmediaservice.h>
-@@ -153,6 +156,9 @@ class QDeclarativeMediaMetaData : public QObject
-     Q_PROPERTY(QVariant gpsProcessingMethod READ gpsProcessingMethod WRITE setGPSProcessingMethod NOTIFY metaDataChanged)
-     Q_PROPERTY(QVariant gpsAreaInformation READ gpsAreaInformation WRITE setGPSAreaInformation NOTIFY metaDataChanged)
-+    Q_PROPERTY(QVariant posterImage READ posterImage NOTIFY metaDataChanged)
-+    Q_PROPERTY(QVariant coverArtImage READ coverArtImage NOTIFY metaDataChanged)
-+    Q_PROPERTY(QVariant thumbnailImage READ thumbnailImage NOTIFY metaDataChanged)
- public:
-     QDeclarativeMediaMetaData(QMediaObject *player, QObject *parent = 0)
-         : QObject(parent)
-@@ -425,6 +431,16 @@ QT_WARNING_POP
-     void setGPSAreaInformation(const QVariant &information) {
-         setMetaData(QMediaMetaData::GPSAreaInformation, information); }
-+    QVariant posterImage() const {
-+        return convertImageToUrl(m_mediaObject->metaData(QMediaMetaData::PosterImage));
-+    }
-+    QVariant coverArtImage() const {
-+        return convertImageToUrl(m_mediaObject->metaData(QMediaMetaData::CoverArtImage));
-+    }
-+    QVariant thumbnailImage() const {
-+        return convertImageToUrl(m_mediaObject->metaData(QMediaMetaData::ThumbnailImage));
-+    }
-+
- Q_SIGNALS:
-     void metaDataChanged();
-@@ -440,6 +456,23 @@ private:
-             m_writerControl->setMetaData(key, value);
-     }
-+    QUrl convertImageToUrl(const QVariant &variant) const
-+    {
-+        if (variant.type() != QVariant::Image)
-+            return QUrl();
-+
-+        QImage image = variant.value<QImage>();
-+        QByteArray data;
-+        QBuffer buffer(&data);
-+        buffer.open(QBuffer::WriteOnly);
-+        QImageWriter png(&buffer, "png");
-+        if (!png.write(image)) {
-+            return QUrl();
-+        }
-+        buffer.close();
-+        return QUrl(QStringLiteral("data:image/png;base64,") + data.toBase64());
-+    }
-+
-     QMediaObject *m_mediaObject;
-     QMetaDataWriterControl *m_writerControl;
-     bool m_requestedWriterControl;
--- 
-2.7.4
-
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia_%.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtmultimedia_%.bbappend
deleted file mode 100644 (file)
index a06ac2d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-FILESEXTRAPATHS_append := ":${THISDIR}/${PN}"
-
-PACKAGECONFIG_append = " gstreamer"
-
-SRC_URI_append = " \
-    file://0001-metadata-image-support-with-the-data-URL-scheme-for-.patch \
-    "
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtsystems_%.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtsystems_%.bbappend
deleted file mode 100644 (file)
index 550c58d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-DEPENDS_remove = "bluez4"
-# currently Qt5 does not support bluez5 "Nothing PROVIDES 'gconfbluez5'"
-#DEPENDS_append = "bluez5"
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland-config/qtwayland b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland-config/qtwayland
deleted file mode 100644 (file)
index a371c6c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-QT_WAYLAND_SHELL_INTEGRATION=@QT_WAYLAND_DEFAULT_SHELL@
-# The following might be necessary when multiple/split surfaces are created.
-# Without this, QtWayland will sometimes maintain the same/old size even if the
-# split surface is destroyed.
-# We keep it disabled by default as it causes an additional repaint of the
-# surface until the compositor sends a configure event to scale the window to
-# the actual area. Typical windows will, by default, have an initial size set
-# by qtwayland when starting-up (without an explicit size specified by the
-# application).
-# Note that QtWayland will only test the presence of the environment variable
-# so it will be enabled even if set to 0
-# QT_WAYLAND_RESIZE_AFTER_SWAP=1
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland-config_1.0.0.bb b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland-config_1.0.0.bb
deleted file mode 100644 (file)
index ae7c956..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY     = "QtWayland config file."
-DESCRIPTION = "Config file for qtwayland."
-SECTION     = "apps"
-LICENSE     = "MIT"
-
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
-
-SRC_URI = "file://qtwayland"
-
-inherit allarch
-
-QTWAYLAND_DEFAULT_SHELL ?= "xdg-shell"
-
-do_compile[noexec] = "1"
-
-do_install () {
-    install -D -m 644 ${WORKDIR}/qtwayland ${D}${sysconfdir}/afm/unit.env.d/qtwayland
-    sed -i -e 's/@QT_WAYLAND_DEFAULT_SHELL@/${QTWAYLAND_DEFAULT_SHELL}/' ${D}${sysconfdir}/afm/unit.env.d/qtwayland
-}
-
-RPROVIDES_${PN} += "virtual/qtwayland-config"
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0001-protocol-update-3rd-party-ivi-application-protocol.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0001-protocol-update-3rd-party-ivi-application-protocol.patch
deleted file mode 100644 (file)
index c91e117..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-From 8caaf802a8b42e9bb1d74fc335a571882c75d73e Mon Sep 17 00:00:00 2001
-From: Holger Behrens <holger.behrens@windriver.com>
-Date: Tue, 3 Feb 2015 09:52:52 +0100
-Subject: [meta-ivi-demo][PATCH 1/2] protocol: update 3rd party ivi-application
- protocol
-
-Signed-off-by: Holger Behrens <holger.behrens@windriver.com>
----
- src/3rdparty/protocol/ivi-application.xml | 31 +++----------------------------
- 1 file changed, 3 insertions(+), 28 deletions(-)
-
-diff --git a/src/3rdparty/protocol/ivi-application.xml b/src/3rdparty/protocol/ivi-application.xml
-index 833fd38..b06ae6c 100644
---- a/src/3rdparty/protocol/ivi-application.xml
-+++ b/src/3rdparty/protocol/ivi-application.xml
-@@ -42,34 +42,9 @@
-             <arg name="visibility" type="int"/>
-         </event>
--        <enum name="warning_code">
--            <description summary="possible warning codes returned by ivi compositor">
--                These define all possible warning codes returned by ivi compositor on server-side warnings.
--                invalid_wl_surface:
--                    - wl_surface already has a another role.
--                  - wl_surface is destroyed before the ivi_surface is destroyed.
--                ivi_id_in_use: ivi_id is already assigned by another application.
--            </description>
--            <entry name="invalid_wl_surface" value="1" summary="wl_surface is invalid"/>
--            <entry name="ivi_id_in_use" value="2" summary="ivi_id is in use and can not be shared"/>
--        </enum>
--
--        <event name="warning">
--            <description summary="server-side warning detected">
--                The ivi compositor encountered warning while processing a request by this
--                application. The warning is defined by argument warning_code and optional
--                warning_text. If the warning is detected, client shall destroy the ivi_surface
--                object.
--
--              When a warning event is sent, the compositor turns the ivi_surface object inert.
--              The ivi_surface will not deliver further events, all requests on it are ignored
--              except 'destroy', and the association to the ivi_id is removed. The client
--              should destroy the ivi_surface object. If an inert ivi_surface object is used as
--              an argument to any other object's request, that request will [produce a fatal
--              error / produce a warning / be ignored].
--            </description>
--            <arg name="warning_code" type="int"/>
--            <arg name="warning_text" type="string" allow-null="true"/>
-+        <event name="configure">
-+            <arg name="width" type="int"/>
-+            <arg name="height" type="int"/>
-         </event>
-     </interface>
--- 
-2.2.1
-
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch
deleted file mode 100644 (file)
index 591ef71..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-From 31c60aedf415fd06b5c1aa16fdcef1504b67b96d Mon Sep 17 00:00:00 2001
-From: Holger Behrens <holger.behrens@windriver.com>
-Date: Tue, 3 Feb 2015 09:53:43 +0100
-Subject: [meta-ivi-demo][PATCH 2/2] qwaylandwindow: add support for
- IVI-Surface-ID property
-
-Signed-off-by: Holger Behrens <holger.behrens@windriver.com>
----
- src/client/qwaylandwindow.cpp | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
-index 45a58f2..781081a 100644
---- a/src/client/qwaylandwindow.cpp
-+++ b/src/client/qwaylandwindow.cpp
-@@ -100,7 +100,14 @@ QWaylandWindow::QWaylandWindow(QWindow *window)
-     if (!(window->flags() & Qt::BypassWindowManagerHint)) {
-         if (mDisplay->shellIvi()) {
--                mShellSurface = new QWaylandIviSurface(mDisplay->shellIvi()->surface_create(IVI_SURFACE_ID + getpid(), object()), this);
-+                unsigned int id = 0;
-+                QVariant value = window->property("IVI-Surface-ID");
-+                if (value.isValid()) {
-+                    id = value.toUInt();
-+                } else {
-+                    id = IVI_SURFACE_ID + getpid();
-+                }
-+                mShellSurface = new QWaylandIviSurface(mDisplay->shellIvi()->surface_create(id, object()), this);
-         } else if (mDisplay->shellXdg()) {
-            if (window->type() & Qt::Window) {
-                 mShellSurface = new QWaylandXdgSurface(mDisplay->shellXdg()->get_xdg_surface(object()), this);
--- 
-2.2.1
-
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0010-Added-manifest-file-according-to-smack-3-domain-mode.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0010-Added-manifest-file-according-to-smack-3-domain-mode.patch
deleted file mode 100644 (file)
index 39296c7..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-Add qt5wayland.manifest. Removed specfile change from patch.
-
-Adapted from:
-
-From 424c23191d81b072255bd7f178ad0ee2c2ea091a Mon Sep 17 00:00:00 2001
-From: Tomasz Olszak <olszak.tomasz@gmail.com>
-Date: Fri, 25 Apr 2014 14:32:22 +0200
-Subject: [PATCH 10/21] Added manifest file according to smack 3-domain model.
-
-Bug-Tizen:TIVI-2416
-
-Change-Id: I414e245a5c8847bec32ef6a97569d0f06221e1db
-Signed-off-by: Tomasz Olszak <olszak.tomasz@gmail.com>
----
- packaging/qt5-qtwayland.manifest | 5 +++++
- packaging/qt5-qtwayland.spec     | 4 ++++
- 2 files changed, 9 insertions(+)
- create mode 100644 packaging/qt5-qtwayland.manifest
-
-diff --git a/packaging/qt5-qtwayland.manifest b/packaging/qt5-qtwayland.manifest
-new file mode 100644
-index 0000000..75b0fa5
---- /dev/null
-+++ b/packaging/qt5-qtwayland.manifest
-@@ -0,0 +1,5 @@
-+<manifest>
-+    <request>
-+        <domain name="_"/>
-+    </request>
-+</manifest>
--- 
-1.9.1
-
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0016-xdg-shell-Add-xdg-shell-protocol-file-version-1.4.0.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0016-xdg-shell-Add-xdg-shell-protocol-file-version-1.4.0.patch
deleted file mode 100644 (file)
index 6bea626..0000000
+++ /dev/null
@@ -1,468 +0,0 @@
-From 5cd43dc7519f54f9786fb6c686a2ce1e682d4366 Mon Sep 17 00:00:00 2001
-From: Philippe Coval <philippe.coval@open.eurogiciel.org>
-Date: Fri, 25 Apr 2014 10:31:42 +0200
-Subject: [PATCH 16/21] xdg-shell: Add xdg-shell protocol file version 1.4.0
-
-Source: http://cgit.freedesktop.org/wayland/weston/plain/protocol/xdg-shell.xml?id=1.4.0
-
-This file will need to be refreshed on protocol update
-until xdg-shell land in wayland's public headers
-
-Task-number: QTBUG-38633/part/1of2
-Change-Id: I397d863dcfc2223ac6eb234c37dbcd7449ecffff
-Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
-Origin: https://www.qt.gitorious.org/qt/qtwayland/commit/c2a22eea6716e073875474adf624d8463eba836c
-Bug-Tizen: TIVI-3113/part
-Signed-off-by: Philippe Coval <philippe.coval@open.eurogiciel.org>
----
- src/3rdparty/protocol/xdg-shell.xml | 438 ++++++++++++++++++++++++++++++++++++
- 1 file changed, 438 insertions(+)
- create mode 100644 src/3rdparty/protocol/xdg-shell.xml
-
-diff --git a/src/3rdparty/protocol/xdg-shell.xml b/src/3rdparty/protocol/xdg-shell.xml
-new file mode 100644
-index 0000000..4e5cff8
---- /dev/null
-+++ b/src/3rdparty/protocol/xdg-shell.xml
-@@ -0,0 +1,438 @@
-+<?xml version="1.0" encoding="UTF-8"?>
-+<protocol name="xdg_shell">
-+
-+  <copyright>
-+    Copyright © 2008-2013 Kristian Høgsberg
-+    Copyright © 2013      Rafael Antognolli
-+    Copyright © 2013      Jasper St. Pierre
-+    Copyright © 2010-2013 Intel Corporation
-+
-+    Permission to use, copy, modify, distribute, and sell this
-+    software and its documentation for any purpose is hereby granted
-+    without fee, provided that the above copyright notice appear in
-+    all copies and that both that copyright notice and this permission
-+    notice appear in supporting documentation, and that the name of
-+    the copyright holders not be used in advertising or publicity
-+    pertaining to distribution of the software without specific,
-+    written prior permission.  The copyright holders make no
-+    representations about the suitability of this software for any
-+    purpose.  It is provided "as is" without express or implied
-+    warranty.
-+
-+    THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-+    SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-+    FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+    SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-+    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
-+    AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-+    ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
-+    THIS SOFTWARE.
-+  </copyright>
-+
-+  <interface name="xdg_shell" version="1">
-+    <description summary="create desktop-style surfaces">
-+      This interface is implemented by servers that provide
-+      desktop-style user interfaces.
-+
-+      It allows clients to associate a xdg_surface with
-+      a basic surface.
-+    </description>
-+
-+    <enum name="version">
-+      <description summary="latest protocol version">
-+      Use this enum to check the protocol version, and it will be updated
-+      automatically.
-+      </description>
-+      <entry name="current" value="1" summary="Always the latest version"/>
-+    </enum>
-+
-+
-+    <request name="use_unstable_version">
-+      <description summary="enable use of this unstable version">
-+      Use this request in order to enable use of this interface.
-+
-+      Understand and agree that one is using an unstable interface,
-+      that will likely change in the future, breaking the API.
-+      </description>
-+      <arg name="version" type="int"/>
-+    </request>
-+
-+    <request name="get_xdg_surface">
-+      <description summary="create a shell surface from a surface">
-+      Create a shell surface for an existing surface.
-+
-+      Only one shell or popup surface can be associated with a given
-+      surface.
-+      </description>
-+      <arg name="id" type="new_id" interface="xdg_surface"/>
-+      <arg name="surface" type="object" interface="wl_surface"/>
-+    </request>
-+
-+    <request name="get_xdg_popup">
-+      <description summary="create a shell surface from a surface">
-+      Create a popup surface for an existing surface.
-+
-+      Only one shell or popup surface can be associated with a given
-+      surface.
-+      </description>
-+      <arg name="id" type="new_id" interface="xdg_popup"/>
-+      <arg name="surface" type="object" interface="wl_surface"/>
-+      <arg name="parent" type="object" interface="wl_surface"/>
-+      <arg name="seat" type="object" interface="wl_seat" summary="the wl_seat whose pointer is used"/>
-+      <arg name="serial" type="uint" summary="serial of the implicit grab on the pointer"/>
-+      <arg name="x" type="int"/>
-+      <arg name="y" type="int"/>
-+      <arg name="flags" type="uint"/>
-+    </request>
-+  </interface>
-+
-+  <interface name="xdg_surface" version="1">
-+
-+    <description summary="desktop-style metadata interface">
-+      An interface that may be implemented by a wl_surface, for
-+      implementations that provide a desktop-style user interface.
-+
-+      It provides requests to treat surfaces like windows, allowing to set
-+      properties like maximized, fullscreen, minimized, and to move and resize
-+      them, and associate metadata like title and app id.
-+
-+      On the server side the object is automatically destroyed when
-+      the related wl_surface is destroyed.  On client side,
-+      xdg_surface.destroy() must be called before destroying
-+      the wl_surface object.
-+    </description>
-+
-+    <request name="destroy" type="destructor">
-+      <description summary="remove xdg_surface interface">
-+      The xdg_surface interface is removed from the wl_surface object
-+      that was turned into a xdg_surface with
-+      xdg_shell.get_xdg_surface request. The xdg_surface properties,
-+      like maximized and fullscreen, are lost. The wl_surface loses
-+      its role as a xdg_surface. The wl_surface is unmapped.
-+      </description>
-+    </request>
-+
-+    <request name="set_transient_for">
-+      <description summary="surface is a child of another surface">
-+      Setting a surface as transient of another means that it is child
-+      of another surface.
-+
-+      Child surfaces are stacked above their parents, and will be
-+      unmapped if the parent is unmapped too. They should not appear
-+      on task bars and alt+tab.
-+      </description>
-+      <arg name="parent" type="object" interface="wl_surface" allow-null="true"/>
-+    </request>
-+
-+    <request name="set_title">
-+      <description summary="set surface title">
-+      Set a short title for the surface.
-+
-+      This string may be used to identify the surface in a task bar,
-+      window list, or other user interface elements provided by the
-+      compositor.
-+
-+      The string must be encoded in UTF-8.
-+      </description>
-+      <arg name="title" type="string"/>
-+    </request>
-+
-+    <request name="set_app_id">
-+      <description summary="set surface class">
-+      Set an id for the surface.
-+
-+      The app id identifies the general class of applications to which
-+      the surface belongs.
-+
-+      It should be the ID that appears in the new desktop entry
-+      specification, the interface name.
-+      </description>
-+      <arg name="app_id" type="string"/>
-+    </request>
-+
-+    <request name="pong">
-+      <description summary="respond to a ping event">
-+      A client must respond to a ping event with a pong request or
-+      the client may be deemed unresponsive.
-+      </description>
-+      <arg name="serial" type="uint" summary="serial of the ping event"/>
-+    </request>
-+
-+    <event name="ping">
-+      <description summary="ping client">
-+      Ping a client to check if it is receiving events and sending
-+      requests. A client is expected to reply with a pong request.
-+      </description>
-+      <arg name="serial" type="uint"/>
-+    </event>
-+
-+    <request name="move">
-+      <description summary="start an interactive move">
-+      Start a pointer-driven move of the surface.
-+
-+      This request must be used in response to a button press event.
-+      The server may ignore move requests depending on the state of
-+      the surface (e.g. fullscreen or maximized).
-+      </description>
-+      <arg name="seat" type="object" interface="wl_seat" summary="the wl_seat whose pointer is used"/>
-+      <arg name="serial" type="uint" summary="serial of the implicit grab on the pointer"/>
-+    </request>
-+
-+    <enum name="resize_edge">
-+      <description summary="edge values for resizing">
-+      These values are used to indicate which edge of a surface
-+      is being dragged in a resize operation. The server may
-+      use this information to adapt its behavior, e.g. choose
-+      an appropriate cursor image.
-+      </description>
-+      <entry name="none" value="0"/>
-+      <entry name="top" value="1"/>
-+      <entry name="bottom" value="2"/>
-+      <entry name="left" value="4"/>
-+      <entry name="top_left" value="5"/>
-+      <entry name="bottom_left" value="6"/>
-+      <entry name="right" value="8"/>
-+      <entry name="top_right" value="9"/>
-+      <entry name="bottom_right" value="10"/>
-+    </enum>
-+
-+    <request name="resize">
-+      <description summary="start an interactive resize">
-+      Start a pointer-driven resizing of the surface.
-+
-+      This request must be used in response to a button press event.
-+      The server may ignore resize requests depending on the state of
-+      the surface (e.g. fullscreen or maximized).
-+      </description>
-+      <arg name="seat" type="object" interface="wl_seat" summary="the wl_seat whose pointer is used"/>
-+      <arg name="serial" type="uint" summary="serial of the implicit grab on the pointer"/>
-+      <arg name="edges" type="uint" summary="which edge or corner is being dragged"/>
-+    </request>
-+
-+    <event name="configure">
-+      <description summary="suggest resize">
-+      The configure event asks the client to resize its surface.
-+
-+      The size is a hint, in the sense that the client is free to
-+      ignore it if it doesn't resize, pick a smaller size (to
-+      satisfy aspect ratio or resize in steps of NxM pixels).
-+
-+      The edges parameter provides a hint about how the surface
-+      was resized. The client may use this information to decide
-+      how to adjust its content to the new size (e.g. a scrolling
-+      area might adjust its content position to leave the viewable
-+      content unmoved). Valid edge values are from resize_edge enum.
-+
-+      The client is free to dismiss all but the last configure
-+      event it received.
-+
-+      The width and height arguments specify the size of the window
-+      in surface local coordinates.
-+      </description>
-+
-+      <arg name="edges" type="uint"/>
-+      <arg name="width" type="int"/>
-+      <arg name="height" type="int"/>
-+    </event>
-+
-+    <request name="set_output">
-+      <description summary="set the default output used by this surface">
-+      Set the default output used by this surface when it is first mapped.
-+
-+      If this value is NULL (default), it's up to the compositor to choose
-+      which display will be used to map this surface.
-+
-+      When fullscreen or maximized state are set on this surface, and it
-+      wasn't mapped yet, the output set with this method will be used.
-+      Otherwise, the output where the surface is currently mapped will be
-+      used.
-+      </description>
-+      <arg name="output" type="object" interface="wl_output" allow-null="true"/>
-+    </request>
-+
-+    <event name="request_set_fullscreen">
-+      <description summary="server requests that the client set fullscreen">
-+      Event sent from the compositor to the client requesting that the client
-+      goes to a fullscreen state. It's the client job to call set_fullscreen
-+      and really trigger the fullscreen state.
-+      </description>
-+    </event>
-+
-+    <event name="request_unset_fullscreen">
-+      <description summary="server requests that the client unset fullscreen">
-+      Event sent from the compositor to the client requesting that the client
-+      leaves the fullscreen state. It's the client job to call
-+      unset_fullscreen and really leave the fullscreen state.
-+      </description>
-+    </event>
-+
-+    <request name="set_fullscreen">
-+      <description summary="set the surface state as fullscreen">
-+      Set the surface as fullscreen.
-+
-+      After this request, the compositor should send a configure event
-+      informing the output size.
-+
-+      This request informs the compositor that the next attached buffer
-+      committed will be in a fullscreen state. The buffer size should be the
-+      same size as the size informed in the configure event, if the client
-+      doesn't want to leave any empty area.
-+
-+      In other words: the next attached buffer after set_maximized is the new
-+      maximized buffer. And the surface will be positioned at the maximized
-+      position on commit.
-+
-+      A simple way to synchronize and wait for the correct configure event is
-+      to use a wl_display.sync request right after the set_fullscreen
-+      request. When the sync callback returns, the last configure event
-+      received just before it will be the correct one, and should contain the
-+      right size for the surface to maximize.
-+
-+      Setting one state won't unset another state. Use
-+      xdg_surface.unset_fullscreen for unsetting it.
-+      </description>
-+    </request>
-+
-+    <request name="unset_fullscreen">
-+      <description summary="unset the surface state as fullscreen">
-+      Unset the surface fullscreen state.
-+
-+      Same negotiation as set_fullscreen must be used.
-+      </description>
-+    </request>
-+
-+    <event name="request_set_maximized">
-+      <description summary="server requests that the client set maximized">
-+      Event sent from the compositor to the client requesting that the client
-+      goes to a maximized state. It's the client job to call set_maximized
-+      and really trigger the maximized state.
-+      </description>
-+    </event>
-+
-+    <event name="request_unset_maximized">
-+      <description summary="server requests that the client unset maximized">
-+      Event sent from the compositor to the client requesting that the client
-+      leaves the maximized state. It's the client job to call unset_maximized
-+      and really leave the maximized state.
-+      </description>
-+    </event>
-+
-+    <request name="set_maximized">
-+      <description summary="set the surface state as maximized">
-+      Set the surface as maximized.
-+
-+      After this request, the compositor will send a configure event
-+      informing the output size minus panel and other MW decorations.
-+
-+      This request informs the compositor that the next attached buffer
-+      committed will be in a maximized state. The buffer size should be the
-+      same size as the size informed in the configure event, if the client
-+      doesn't want to leave any empty area.
-+
-+      In other words: the next attached buffer after set_maximized is the new
-+      maximized buffer. And the surface will be positioned at the maximized
-+      position on commit.
-+
-+      A simple way to synchronize and wait for the correct configure event is
-+      to use a wl_display.sync request right after the set_maximized request.
-+      When the sync callback returns, the last configure event received just
-+      before it will be the correct one, and should contain the right size
-+      for the surface to maximize.
-+
-+      Setting one state won't unset another state. Use
-+      xdg_surface.unset_maximized for unsetting it.
-+      </description>
-+    </request>
-+
-+    <request name="unset_maximized">
-+      <description summary="unset the surface state as maximized">
-+      Unset the surface maximized state.
-+
-+      Same negotiation as set_maximized must be used.
-+      </description>
-+    </request>
-+
-+    <request name="set_minimized">
-+      <description summary="set the surface state as minimized">
-+      Set the surface minimized state.
-+
-+      Setting one state won't unset another state.
-+      </description>
-+    </request>
-+
-+    <event name="focused_set">
-+      <description summary="surface was focused">
-+      The focused_set event is sent when this surface has been
-+      activated. Window decorations should be updated accordingly.
-+      </description>
-+    </event>
-+
-+    <event name="focused_unset">
-+      <description summary="surface was unfocused">
-+      The focused_unset event is sent when this surface has been
-+      deactivated, because another surface has been activated. Window
-+      decorations should be updated accordingly.
-+      </description>
-+    </event>
-+  </interface>
-+
-+  <interface name="xdg_popup" version="1">
-+    <description summary="desktop-style metadata interface">
-+      An interface that may be implemented by a wl_surface, for
-+      implementations that provide a desktop-style popups/menus. A popup
-+      surface is a transient surface with an added pointer grab.
-+
-+      An existing implicit grab will be changed to owner-events mode,
-+      and the popup grab will continue after the implicit grab ends
-+      (i.e. releasing the mouse button does not cause the popup to be
-+      unmapped).
-+
-+      The popup grab continues until the window is destroyed or a mouse
-+      button is pressed in any other clients window. A click in any of
-+      the clients surfaces is reported as normal, however, clicks in
-+      other clients surfaces will be discarded and trigger the callback.
-+
-+      The x and y arguments specify the locations of the upper left
-+      corner of the surface relative to the upper left corner of the
-+      parent surface, in surface local coordinates.
-+
-+      xdg_popup surfaces are always transient for another surface.
-+    </description>
-+
-+    <request name="destroy" type="destructor">
-+      <description summary="remove xdg_surface interface">
-+      The xdg_surface interface is removed from the wl_surface object
-+      that was turned into a xdg_surface with
-+      xdg_shell.get_xdg_surface request. The xdg_surface properties,
-+      like maximized and fullscreen, are lost. The wl_surface loses
-+      its role as a xdg_surface. The wl_surface is unmapped.
-+      </description>
-+    </request>
-+
-+    <request name="pong">
-+      <description summary="respond to a ping event">
-+      A client must respond to a ping event with a pong request or
-+      the client may be deemed unresponsive.
-+      </description>
-+      <arg name="serial" type="uint" summary="serial of the ping event"/>
-+    </request>
-+
-+    <event name="ping">
-+      <description summary="ping client">
-+      Ping a client to check if it is receiving events and sending
-+      requests. A client is expected to reply with a pong request.
-+      </description>
-+      <arg name="serial" type="uint"/>
-+    </event>
-+
-+    <event name="popup_done">
-+      <description summary="popup interaction is done">
-+      The popup_done event is sent out when a popup grab is broken,
-+      that is, when the users clicks a surface that doesn't belong
-+      to the client owning the popup surface.
-+      </description>
-+      <arg name="serial" type="uint" summary="serial of the implicit grab on the pointer"/>
-+    </event>
-+
-+  </interface>
-+</protocol>
--- 
-1.9.1
-
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0017-xdg-shell-Add-minimize-feature-to-QWindow-using-wayl.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0017-xdg-shell-Add-minimize-feature-to-QWindow-using-wayl.patch
deleted file mode 100644 (file)
index fe1bb50..0000000
+++ /dev/null
@@ -1,1029 +0,0 @@
-From 0edba039247ce888dbb7ff0a93c7b9ec01bac46e Mon Sep 17 00:00:00 2001
-From: Philippe Coval <philippe.coval@open.eurogiciel.org>
-Date: Wed, 26 Mar 2014 10:16:01 +0100
-Subject: [PATCH 17/21] xdg-shell: Add minimize feature to QWindow using
- wayland's xdg-shell
-
-The feature is disabled by default,
-and can be enabled at runtime
-by exporting QT_WAYLAND_USE_XDG_SHELL env variable.
-
-This patch relies on presence of protocol file
-which has been imported from weston-1.4.0 sources,
-until the xdg-shell is merge into wayland itself.
-
-Because xdg-shell is experimental,
-code fallback to WaylandShell if no XdgShell
-but keep in mind those shells are exclusive.
-
-Since xdg-shell and wayland-shell share most of the API,
-some factorization is done by an (empty) abstraction class
-to keep the code more readable.
-
-Despite xdg-shell introduces new popups concept,
-they're not used on this change for maitainance purpose.
-
-Notes:
-
-* This change depends on presence of xdg-shell protocol file.
-
-* You can check a demo video
-  (qt-tizen-cinematic-experience-20140430-rzr)
-  of the test case at :
-  https://www.youtube.com/watch?v=pY_XXvKc_0E#
-
-* Use Super+Tab to show window again if hidden
-
-Task-number: QTBUG-38633/part/2of2
-Change-Id: I2d7ed85bea1847d82439fdfc893a3dbb2581ffff
-Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
-Origin: https://www.qt.gitorious.org/qt/qtwayland/commit/768484daaa64bea965bef981a16f59be8db0c190
-Bug-Tizen: TIVI-3113/part
-Signed-off-by: Philippe Coval <philippe.coval@open.eurogiciel.org>
----
- src/client/client.pro                 |   5 +
- src/client/qwaylanddisplay.cpp        |   5 +
- src/client/qwaylanddisplay_p.h        |   4 +
- src/client/qwaylandshellsurface.cpp   | 134 ------------------------
- src/client/qwaylandshellsurface_p.h   |  40 +++-----
- src/client/qwaylandwindow.cpp         |  40 ++++++--
- src/client/qwaylandwlshellsurface.cpp | 186 ++++++++++++++++++++++++++++++++++
- src/client/qwaylandwlshellsurface_p.h | 101 ++++++++++++++++++
- src/client/qwaylandxdgsurface.cpp     | 173 +++++++++++++++++++++++++++++++
- src/client/qwaylandxdgsurface_p.h     | 105 +++++++++++++++++++
- 10 files changed, 625 insertions(+), 168 deletions(-)
- create mode 100644 src/client/qwaylandwlshellsurface.cpp
- create mode 100644 src/client/qwaylandwlshellsurface_p.h
- create mode 100644 src/client/qwaylandxdgsurface.cpp
- create mode 100644 src/client/qwaylandxdgsurface_p.h
-
-diff --git a/src/client/client.pro b/src/client/client.pro
-index 10cbd31..9ecf82f 100644
---- a/src/client/client.pro
-+++ b/src/client/client.pro
-@@ -41,6 +41,7 @@ WAYLANDCLIENTSOURCES += \
-             ../extensions/qtkey-extension.xml \
-             ../extensions/windowmanager.xml \
-             ../3rdparty/protocol/text.xml \
-+            ../3rdparty/protocol/xdg-shell.xml \
- SOURCES +=  qwaylandintegration.cpp \
-             qwaylandnativeinterface.cpp \
-@@ -57,6 +58,8 @@ SOURCES +=  qwaylandintegration.cpp \
-             qwaylanddatadevicemanager.cpp \
-             qwaylanddatasource.cpp \
-             qwaylandshellsurface.cpp \
-+            qwaylandwlshellsurface.cpp \
-+            qwaylandxdgsurface.cpp \
-             qwaylandextendedoutput.cpp \
-             qwaylandextendedsurface.cpp \
-             qwaylandsubsurface.cpp \
-@@ -85,6 +88,8 @@ HEADERS +=  qwaylandintegration_p.h \
-             qwaylanddatadevicemanager_p.h \
-             qwaylanddatasource_p.h \
-             qwaylandshellsurface_p.h \
-+            qwaylandwlshellsurface_p.h \
-+            qwaylandxdgsurface_p.h \
-             qwaylandextendedoutput_p.h \
-             qwaylandextendedsurface_p.h \
-             qwaylandsubsurface_p.h \
-diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
-index 0b715c0..7f953ad 100644
---- a/src/client/qwaylanddisplay.cpp
-+++ b/src/client/qwaylanddisplay.cpp
-@@ -61,6 +61,7 @@
- #include "qwaylandqtkey_p.h"
- #include <QtWaylandClient/private/qwayland-text.h>
-+#include <QtWaylandClient/private/qwayland-xdg-shell.h>
- #include <QtCore/QAbstractEventDispatcher>
- #include <QtGui/private/qguiapplication_p.h>
-@@ -206,6 +207,10 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin
-         mCompositor.init(registry, id);
-     } else if (interface == QStringLiteral("wl_shm")) {
-         mShm = static_cast<struct wl_shm *>(wl_registry_bind(registry, id, &wl_shm_interface,1));
-+    } else if (interface == QStringLiteral("xdg_shell")
-+               && qEnvironmentVariableIsSet("QT_WAYLAND_USE_XDG_SHELL")) {
-+        mShellXdg.reset(new QtWayland::xdg_shell(registry, id));
-+        mShellXdg->use_unstable_version(QtWayland::xdg_shell::version_current);
-     } else if (interface == QStringLiteral("wl_shell")){
-         mShell.reset(new QtWayland::wl_shell(registry, id));
-     } else if (interface == QStringLiteral("wl_seat")) {
-diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h
-index 40cb2b2..cf5dfc2 100644
---- a/src/client/qwaylanddisplay_p.h
-+++ b/src/client/qwaylanddisplay_p.h
-@@ -51,6 +51,7 @@
- #include <QtWaylandClient/private/qwayland-wayland.h>
- #include <QtWaylandClient/private/qwaylandclientexport_p.h>
-+#include <QtWaylandClient/private/qwayland-xdg-shell.h>
- struct wl_cursor_image;
-@@ -78,6 +79,7 @@ namespace QtWayland {
-     class qt_sub_surface_extension;
-     class qt_surface_extension;
-     class wl_text_input_manager;
-+    class xdg_shell;
- }
- typedef void (*RegistryListener)(void *data,
-@@ -113,6 +115,7 @@ public:
-     QtWayland::wl_compositor *compositor() { return &mCompositor; }
-     QtWayland::wl_shell *shell() { return mShell.data(); }
-+    QtWayland::xdg_shell *shellXdg() { return mShellXdg.data(); }
-     QList<QWaylandInputDevice *> inputDevices() const { return mInputDevices; }
-     QWaylandInputDevice *defaultInputDevice() const;
-@@ -168,6 +171,7 @@ private:
-     QThread *mEventThread;
-     QWaylandEventThread *mEventThreadObject;
-     QScopedPointer<QtWayland::wl_shell> mShell;
-+    QScopedPointer<QtWayland::xdg_shell> mShellXdg;
-     QList<QPlatformScreen *> mScreens;
-     QList<QWaylandInputDevice *> mInputDevices;
-     QList<Listener> mRegistryListeners;
-diff --git a/src/client/qwaylandshellsurface.cpp b/src/client/qwaylandshellsurface.cpp
-index b7a819f..80e509b 100644
---- a/src/client/qwaylandshellsurface.cpp
-+++ b/src/client/qwaylandshellsurface.cpp
-@@ -40,137 +40,3 @@
- ****************************************************************************/
- #include "qwaylandshellsurface_p.h"
--
--#include "qwaylanddisplay_p.h"
--#include "qwaylandwindow_p.h"
--#include "qwaylandinputdevice_p.h"
--#include "qwaylanddecoration_p.h"
--#include "qwaylandscreen_p.h"
--
--#include <QtCore/QDebug>
--
--QT_BEGIN_NAMESPACE
--
--QWaylandShellSurface::QWaylandShellSurface(struct ::wl_shell_surface *shell_surface, QWaylandWindow *window)
--    : QtWayland::wl_shell_surface(shell_surface)
--    , m_window(window)
--    , m_maximized(false)
--    , m_fullscreen(false)
--{
--}
--
--QWaylandShellSurface::~QWaylandShellSurface()
--{
--    wl_shell_surface_destroy(object());
--}
--
--void QWaylandShellSurface::resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges)
--{
--    resize(inputDevice->wl_seat(),
--           inputDevice->serial(),
--           edges);
--}
--
--void QWaylandShellSurface::move(QWaylandInputDevice *inputDevice)
--{
--    move(inputDevice->wl_seat(),
--         inputDevice->serial());
--}
--
--void QWaylandShellSurface::setMaximized()
--{
--    m_maximized = true;
--    m_size = m_window->window()->geometry().size();
--    set_maximized(0);
--}
--
--void QWaylandShellSurface::setFullscreen()
--{
--    m_fullscreen = true;
--    m_size = m_window->window()->geometry().size();
--    set_fullscreen(WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT, 0, 0);
--}
--
--void QWaylandShellSurface::setNormal()
--{
--    if (m_fullscreen || m_maximized) {
--        m_fullscreen = m_maximized = false;
--        setTopLevel();
--        QMargins m = m_window->frameMargins();
--        m_window->configure(0, m_size.width() + m.left() + m.right(), m_size.height() + m.top() + m.bottom());
--    }
--}
--
--void QWaylandShellSurface::setMinimized()
--{
--    // TODO: There's no wl_shell_surface API for this
--}
--
--void QWaylandShellSurface::setTopLevel()
--{
--    set_toplevel();
--}
--
--void QWaylandShellSurface::updateTransientParent(QWindow *parent)
--{
--    QWaylandWindow *parent_wayland_window = static_cast<QWaylandWindow *>(parent->handle());
--    if (!parent_wayland_window)
--        return;
--
--    // set_transient expects a position relative to the parent
--    QPoint transientPos = m_window->geometry().topLeft(); // this is absolute
--    QWindow *parentWin = m_window->window()->transientParent();
--    transientPos -= parentWin->geometry().topLeft();
--    if (parent_wayland_window->decoration()) {
--        transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left());
--        transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top());
--    }
--
--    uint32_t flags = 0;
--    Qt::WindowFlags wf = m_window->window()->flags();
--    if (wf.testFlag(Qt::ToolTip)
--            || wf.testFlag(Qt::WindowTransparentForInput))
--        flags |= WL_SHELL_SURFACE_TRANSIENT_INACTIVE;
--
--    set_transient(parent_wayland_window->object(),
--                  transientPos.x(),
--                  transientPos.y(),
--                  flags);
--}
--
--void QWaylandShellSurface::setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial)
--{
--    QWaylandWindow *parent_wayland_window = parent;
--    if (!parent_wayland_window)
--        return;
--
--    // set_popup expects a position relative to the parent
--    QPoint transientPos = m_window->geometry().topLeft(); // this is absolute
--    transientPos -= parent_wayland_window->geometry().topLeft();
--    if (parent_wayland_window->decoration()) {
--        transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left());
--        transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top());
--    }
--
--    set_popup(device->wl_seat(), serial, parent_wayland_window->object(),
--              transientPos.x(), transientPos.y(), 0);
--}
--
--void QWaylandShellSurface::shell_surface_ping(uint32_t serial)
--{
--    pong(serial);
--}
--
--void QWaylandShellSurface::shell_surface_configure(uint32_t edges,
--                                                   int32_t width,
--                                                   int32_t height)
--{
--    m_window->configure(edges, width, height);
--}
--
--void QWaylandShellSurface::shell_surface_popup_done()
--{
--    QCoreApplication::postEvent(m_window->window(), new QCloseEvent());
--}
--
--QT_END_NAMESPACE
-diff --git a/src/client/qwaylandshellsurface_p.h b/src/client/qwaylandshellsurface_p.h
-index 2477c3f..2f59f60 100644
---- a/src/client/qwaylandshellsurface_p.h
-+++ b/src/client/qwaylandshellsurface_p.h
-@@ -55,39 +55,25 @@ class QWaylandWindow;
- class QWaylandInputDevice;
- class QWindow;
--class Q_WAYLAND_CLIENT_EXPORT QWaylandShellSurface : public QtWayland::wl_shell_surface
-+class Q_WAYLAND_CLIENT_EXPORT QWaylandShellSurface
- {
- public:
--    QWaylandShellSurface(struct ::wl_shell_surface *shell_surface, QWaylandWindow *window);
--    ~QWaylandShellSurface();
-+    virtual ~QWaylandShellSurface() {}
-+    virtual void resize(QWaylandInputDevice * /*inputDevice*/, enum wl_shell_surface_resize /*edges*/)
-+    {}
--    using QtWayland::wl_shell_surface::resize;
--    void resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges);
--
--    using QtWayland::wl_shell_surface::move;
--    void move(QWaylandInputDevice *inputDevice);
-+    virtual void move(QWaylandInputDevice * /*inputDevice*/) {}
-+    virtual void setTitle(const QString & /*title*/) {}
-+    virtual void setAppId(const QString & /*appId*/) {}
- private:
--    void setMaximized();
--    void setFullscreen();
--    void setNormal();
--    void setMinimized();
--
--    void setTopLevel();
--    void updateTransientParent(QWindow *parent);
--    void setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial);
--
--    QWaylandWindow *m_window;
--    bool m_maximized;
--    bool m_fullscreen;
--    QSize m_size;
--
--    void shell_surface_ping(uint32_t serial) Q_DECL_OVERRIDE;
--    void shell_surface_configure(uint32_t edges,
--                                 int32_t width,
--                                 int32_t height) Q_DECL_OVERRIDE;
--    void shell_surface_popup_done() Q_DECL_OVERRIDE;
-+    virtual void setMaximized() {}
-+    virtual void setFullscreen() {}
-+    virtual void setNormal() {}
-+    virtual void setMinimized() {}
-+    virtual void setTopLevel() {}
-+    virtual void updateTransientParent(QWindow * /*parent*/) {}
-     friend class QWaylandWindow;
- };
-diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
-index 920c977..3fb3a49 100644
---- a/src/client/qwaylandwindow.cpp
-+++ b/src/client/qwaylandwindow.cpp
-@@ -46,6 +46,8 @@
- #include "qwaylandinputdevice_p.h"
- #include "qwaylandscreen_p.h"
- #include "qwaylandshellsurface_p.h"
-+#include "qwaylandwlshellsurface_p.h"
-+#include "qwaylandxdgsurface_p.h"
- #include "qwaylandextendedsurface_p.h"
- #include "qwaylandsubsurface_p.h"
- #include "qwaylanddecoration_p.h"
-@@ -92,8 +94,16 @@ QWaylandWindow::QWaylandWindow(QWindow *window)
-     static WId id = 1;
-     mWindowId = id++;
--    if (mDisplay->shell() && window->type() & Qt::Window && !(window->flags() & Qt::BypassWindowManagerHint))
--        mShellSurface = new QWaylandShellSurface(mDisplay->shell()->get_shell_surface(object()), this);
-+    if (!(window->flags() & Qt::BypassWindowManagerHint)) {
-+        if (mDisplay->shellXdg()) {
-+           if (window->type() & Qt::Window) {
-+                mShellSurface = new QWaylandXdgSurface(mDisplay->shellXdg()->get_xdg_surface(object()), this);
-+            }
-+        } else if (mDisplay->shell() && window->type() & Qt::Window) {
-+            mShellSurface = new QWaylandWlShellSurface(mDisplay->shell()->get_shell_surface(object()), this);
-+        }
-+    }
-+
-     if (mDisplay->windowExtension())
-         mExtendedWindow = new QWaylandExtendedSurface(this, mDisplay->windowExtension()->get_extended_surface(object()));
-     if (mDisplay->subSurfaceExtension())
-@@ -101,12 +111,12 @@ QWaylandWindow::QWaylandWindow(QWindow *window)
-     if (mShellSurface) {
-         // Set initial surface title
--        mShellSurface->set_title(window->title());
-+        mShellSurface->setTitle(window->title());
-         // Set surface class to the .desktop file name (obtained from executable name)
-         QFileInfo exeFileInfo(qApp->applicationFilePath());
-         QString className = exeFileInfo.baseName() + QLatin1String(".desktop");
--        mShellSurface->set_class(className);
-+        mShellSurface->setAppId(className);
-     }
-     if (QPlatformWindow::parent() && mSubSurfaceWindow) {
-@@ -170,7 +180,7 @@ void QWaylandWindow::setParent(const QPlatformWindow *parent)
- void QWaylandWindow::setWindowTitle(const QString &title)
- {
-     if (mShellSurface) {
--        mShellSurface->set_title(title);
-+        mShellSurface->setTitle(title);
-     }
-     if (mWindowDecoration && window()->isVisible())
-@@ -212,8 +222,10 @@ void QWaylandWindow::setVisible(bool visible)
-             mMouseDevice = parent->mMouseDevice;
-             mMouseSerial = parent->mMouseSerial;
--            if (mMouseDevice)
--                mShellSurface->setPopup(transientParent(), mMouseDevice, mMouseSerial);
-+            QWaylandWlShellSurface *wlshellSurface = dynamic_cast<QWaylandWlShellSurface*>(mShellSurface);
-+            if (mMouseDevice && wlshellSurface) {
-+                wlshellSurface->setPopup(transientParent(), mMouseDevice, mMouseSerial);
-+            }
-         }
-         if (!mSentInitialResize) {
-@@ -428,6 +440,20 @@ void QWaylandWindow::setWindowFlags(Qt::WindowFlags flags)
- bool QWaylandWindow::createDecoration()
- {
-+    // so far only xdg-shell support this "unminimize" trick, may be moved elsewhere
-+    if (mState == Qt::WindowMinimized) {
-+        QWaylandXdgSurface *xdgSurface = dynamic_cast<QWaylandXdgSurface *>(mShellSurface);
-+        if ( xdgSurface ) {
-+            if (xdgSurface->isFullscreen()) {
-+                setWindowStateInternal(Qt::WindowFullScreen);
-+            } else if (xdgSurface->isMaximized()) {
-+                setWindowStateInternal(Qt::WindowMaximized);
-+            } else {
-+                setWindowStateInternal(Qt::WindowNoState);
-+            }
-+        }
-+    }
-+
-     static bool disableWaylandDecorations = !qgetenv("QT_WAYLAND_DISABLE_WINDOWDECORATION").isEmpty();
-     if (disableWaylandDecorations)
-         return false;
-diff --git a/src/client/qwaylandwlshellsurface.cpp b/src/client/qwaylandwlshellsurface.cpp
-new file mode 100644
-index 0000000..4b73ec2
---- /dev/null
-+++ b/src/client/qwaylandwlshellsurface.cpp
-@@ -0,0 +1,186 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
-+** Contact: http://www.qt-project.org/legal
-+**
-+** This file is part of the config.tests of the Qt Toolkit.
-+**
-+** $QT_BEGIN_LICENSE:LGPL$
-+** Commercial License Usage
-+** Licensees holding valid commercial Qt licenses may use this file in
-+** accordance with the commercial license agreement provided with the
-+** Software or, alternatively, in accordance with the terms contained in
-+** a written agreement between you and Digia.  For licensing terms and
-+** conditions see http://qt.digia.com/licensing.  For further information
-+** use the contact form at http://qt.digia.com/contact-us.
-+**
-+** GNU Lesser General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU Lesser
-+** General Public License version 2.1 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.LGPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU Lesser General Public License version 2.1 requirements
-+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-+**
-+** In addition, as a special exception, Digia gives you certain additional
-+** rights.  These rights are described in the Digia Qt LGPL Exception
-+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-+**
-+** GNU General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU
-+** General Public License version 3.0 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.GPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU General Public License version 3.0 requirements will be
-+** met: http://www.gnu.org/copyleft/gpl.html.
-+**
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#include "qwaylandwlshellsurface_p.h"
-+
-+#include "qwaylanddisplay_p.h"
-+#include "qwaylandwindow_p.h"
-+#include "qwaylandinputdevice_p.h"
-+#include "qwaylanddecoration_p.h"
-+#include "qwaylandscreen_p.h"
-+
-+#include <QtCore/QDebug>
-+
-+QT_BEGIN_NAMESPACE
-+
-+QWaylandWlShellSurface::QWaylandWlShellSurface(struct ::wl_shell_surface *shell_surface, QWaylandWindow *window)
-+    : QtWayland::wl_shell_surface(shell_surface)
-+    , m_window(window)
-+    , m_maximized(false)
-+    , m_fullscreen(false)
-+{
-+}
-+
-+QWaylandWlShellSurface::~QWaylandWlShellSurface()
-+{
-+    wl_shell_surface_destroy(object());
-+}
-+
-+void QWaylandWlShellSurface::resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges)
-+{
-+    resize(inputDevice->wl_seat(),
-+           inputDevice->serial(),
-+           edges);
-+}
-+
-+void QWaylandWlShellSurface::move(QWaylandInputDevice *inputDevice)
-+{
-+    move(inputDevice->wl_seat(),
-+         inputDevice->serial());
-+}
-+
-+void QWaylandWlShellSurface::setTitle(const QString & title)
-+{
-+    return QtWayland::wl_shell_surface::set_title(title);
-+}
-+
-+void QWaylandWlShellSurface::setAppId(const QString & appId)
-+{
-+    return QtWayland::wl_shell_surface::set_class(appId);
-+}
-+
-+void QWaylandWlShellSurface::setMaximized()
-+{
-+    m_maximized = true;
-+    m_size = m_window->window()->geometry().size();
-+    set_maximized(0);
-+}
-+
-+void QWaylandWlShellSurface::setFullscreen()
-+{
-+    m_fullscreen = true;
-+    m_size = m_window->window()->geometry().size();
-+    set_fullscreen(WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT, 0, 0);
-+}
-+
-+void QWaylandWlShellSurface::setNormal()
-+{
-+    if (m_fullscreen || m_maximized) {
-+        m_fullscreen = m_maximized = false;
-+        setTopLevel();
-+        QMargins m = m_window->frameMargins();
-+        m_window->configure(0, m_size.width() + m.left() + m.right(), m_size.height() + m.top() + m.bottom());
-+    }
-+}
-+
-+void QWaylandWlShellSurface::setMinimized()
-+{
-+    // TODO: There's no wl_shell_surface API for this
-+}
-+
-+void QWaylandWlShellSurface::setTopLevel()
-+{
-+    set_toplevel();
-+}
-+
-+void QWaylandWlShellSurface::updateTransientParent(QWindow *parent)
-+{
-+    QWaylandWindow *parent_wayland_window = static_cast<QWaylandWindow *>(parent->handle());
-+    if (!parent_wayland_window)
-+        return;
-+
-+    // set_transient expects a position relative to the parent
-+    QPoint transientPos = m_window->geometry().topLeft(); // this is absolute
-+    QWindow *parentWin = m_window->window()->transientParent();
-+    transientPos -= parentWin->geometry().topLeft();
-+    if (parent_wayland_window->decoration()) {
-+        transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left());
-+        transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top());
-+    }
-+
-+    uint32_t flags = 0;
-+    Qt::WindowFlags wf = m_window->window()->flags();
-+    if (wf.testFlag(Qt::ToolTip)
-+            || wf.testFlag(Qt::WindowTransparentForInput))
-+        flags |= WL_SHELL_SURFACE_TRANSIENT_INACTIVE;
-+
-+    set_transient(parent_wayland_window->object(),
-+                  transientPos.x(),
-+                  transientPos.y(),
-+                  flags);
-+}
-+
-+void QWaylandWlShellSurface::setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial)
-+{
-+    QWaylandWindow *parent_wayland_window = parent;
-+    if (!parent_wayland_window)
-+        return;
-+
-+    // set_popup expects a position relative to the parent
-+    QPoint transientPos = m_window->geometry().topLeft(); // this is absolute
-+    transientPos -= parent_wayland_window->geometry().topLeft();
-+    if (parent_wayland_window->decoration()) {
-+        transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left());
-+        transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top());
-+    }
-+
-+    set_popup(device->wl_seat(), serial, parent_wayland_window->object(),
-+              transientPos.x(), transientPos.y(), 0);
-+}
-+
-+void QWaylandWlShellSurface::shell_surface_ping(uint32_t serial)
-+{
-+    pong(serial);
-+}
-+
-+void QWaylandWlShellSurface::shell_surface_configure(uint32_t edges,
-+                                                     int32_t width,
-+                                                     int32_t height)
-+{
-+    m_window->configure(edges, width, height);
-+}
-+
-+void QWaylandWlShellSurface::shell_surface_popup_done()
-+{
-+    QCoreApplication::postEvent(m_window->window(), new QCloseEvent());
-+}
-+
-+QT_END_NAMESPACE
-diff --git a/src/client/qwaylandwlshellsurface_p.h b/src/client/qwaylandwlshellsurface_p.h
-new file mode 100644
-index 0000000..d02bb7b
---- /dev/null
-+++ b/src/client/qwaylandwlshellsurface_p.h
-@@ -0,0 +1,101 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
-+** Contact: http://www.qt-project.org/legal
-+**
-+** This file is part of the config.tests of the Qt Toolkit.
-+**
-+** $QT_BEGIN_LICENSE:LGPL$
-+** Commercial License Usage
-+** Licensees holding valid commercial Qt licenses may use this file in
-+** accordance with the commercial license agreement provided with the
-+** Software or, alternatively, in accordance with the terms contained in
-+** a written agreement between you and Digia.  For licensing terms and
-+** conditions see http://qt.digia.com/licensing.  For further information
-+** use the contact form at http://qt.digia.com/contact-us.
-+**
-+** GNU Lesser General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU Lesser
-+** General Public License version 2.1 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.LGPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU Lesser General Public License version 2.1 requirements
-+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-+**
-+** In addition, as a special exception, Digia gives you certain additional
-+** rights.  These rights are described in the Digia Qt LGPL Exception
-+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-+**
-+** GNU General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU
-+** General Public License version 3.0 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.GPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU General Public License version 3.0 requirements will be
-+** met: http://www.gnu.org/copyleft/gpl.html.
-+**
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#ifndef QWAYLANDWLSHELLSURFACE_H
-+#define QWAYLANDWLSHELLSURFACE_H
-+
-+#include <QtCore/QSize>
-+
-+#include <wayland-client.h>
-+
-+#include <QtWaylandClient/private/qwayland-wayland.h>
-+#include <QtWaylandClient/private/qwaylandclientexport_p.h>
-+#include "qwaylandshellsurface_p.h"
-+
-+QT_BEGIN_NAMESPACE
-+
-+class QWaylandWindow;
-+class QWaylandInputDevice;
-+class QWindow;
-+
-+class Q_WAYLAND_CLIENT_EXPORT QWaylandWlShellSurface : public QtWayland::wl_shell_surface
-+        , public QWaylandShellSurface
-+{
-+public:
-+    QWaylandWlShellSurface(struct ::wl_shell_surface *shell_surface, QWaylandWindow *window);
-+    virtual ~QWaylandWlShellSurface();
-+
-+    using QtWayland::wl_shell_surface::resize;
-+    void resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) Q_DECL_OVERRIDE;
-+
-+    using QtWayland::wl_shell_surface::move;
-+    void move(QWaylandInputDevice *inputDevice) Q_DECL_OVERRIDE;
-+
-+    void setTitle(const QString & title) Q_DECL_OVERRIDE;
-+    void setAppId(const QString &appId) Q_DECL_OVERRIDE;
-+
-+private:
-+    void setMaximized() Q_DECL_OVERRIDE;
-+    void setFullscreen() Q_DECL_OVERRIDE;
-+    void setNormal() Q_DECL_OVERRIDE;
-+    void setMinimized() Q_DECL_OVERRIDE;
-+
-+    void setTopLevel() Q_DECL_OVERRIDE;
-+    void updateTransientParent(QWindow *parent) Q_DECL_OVERRIDE;
-+    void setPopup(QWaylandWindow *parent, QWaylandInputDevice *device, int serial);
-+
-+    QWaylandWindow *m_window;
-+    bool m_maximized;
-+    bool m_fullscreen;
-+    QSize m_size;
-+
-+    void shell_surface_ping(uint32_t serial) Q_DECL_OVERRIDE;
-+    void shell_surface_configure(uint32_t edges,
-+                                 int32_t width,
-+                                 int32_t height) Q_DECL_OVERRIDE;
-+    void shell_surface_popup_done() Q_DECL_OVERRIDE;
-+
-+    friend class QWaylandWindow;
-+};
-+
-+QT_END_NAMESPACE
-+
-+#endif // QWAYLANDSHELLSURFACE_H
-diff --git a/src/client/qwaylandxdgsurface.cpp b/src/client/qwaylandxdgsurface.cpp
-new file mode 100644
-index 0000000..1b8affa
---- /dev/null
-+++ b/src/client/qwaylandxdgsurface.cpp
-@@ -0,0 +1,173 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
-+** Contact: http://www.qt-project.org/legal
-+**
-+** This file is part of the config.tests of the Qt Toolkit.
-+**
-+** $QT_BEGIN_LICENSE:LGPL$
-+** Commercial License Usage
-+** Licensees holding valid commercial Qt licenses may use this file in
-+** accordance with the commercial license agreement provided with the
-+** Software or, alternatively, in accordance with the terms contained in
-+** a written agreement between you and Digia.  For licensing terms and
-+** conditions see http://qt.digia.com/licensing.  For further information
-+** use the contact form at http://qt.digia.com/contact-us.
-+**
-+** GNU Lesser General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU Lesser
-+** General Public License version 2.1 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.LGPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU Lesser General Public License version 2.1 requirements
-+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-+**
-+** In addition, as a special exception, Digia gives you certain additional
-+** rights.  These rights are described in the Digia Qt LGPL Exception
-+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-+**
-+** GNU General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU
-+** General Public License version 3.0 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.GPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU General Public License version 3.0 requirements will be
-+** met: http://www.gnu.org/copyleft/gpl.html.
-+**
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#include "qwaylandxdgsurface_p.h"
-+
-+#include "qwaylanddisplay_p.h"
-+#include "qwaylandwindow_p.h"
-+#include "qwaylandinputdevice_p.h"
-+#include "qwaylanddecoration_p.h"
-+#include "qwaylandscreen_p.h"
-+
-+#include <QtCore/QDebug>
-+
-+QT_BEGIN_NAMESPACE
-+
-+QWaylandXdgSurface::QWaylandXdgSurface(struct ::xdg_surface *xdg_surface, QWaylandWindow *window)
-+    : QtWayland::xdg_surface(xdg_surface)
-+    , m_window(window)
-+    , m_maximized(false)
-+    , m_minimized(false)
-+    , m_fullscreen(false)
-+{
-+}
-+
-+QWaylandXdgSurface::~QWaylandXdgSurface()
-+{
-+    xdg_surface_destroy(object());
-+}
-+
-+void QWaylandXdgSurface::resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges)
-+{
-+    // May need some conversion if types get incompatibles, ATM they're identical
-+    enum resize_edge const * const arg = reinterpret_cast<enum resize_edge const * const>(&edges);
-+    resize(inputDevice, *arg);
-+}
-+
-+void QWaylandXdgSurface::resize(QWaylandInputDevice *inputDevice, enum resize_edge edges)
-+{
-+    resize(inputDevice->wl_seat(),
-+           inputDevice->serial(),
-+           edges);
-+}
-+
-+void QWaylandXdgSurface::move(QWaylandInputDevice *inputDevice)
-+{
-+    move(inputDevice->wl_seat(),
-+         inputDevice->serial());
-+}
-+
-+void QWaylandXdgSurface::setMaximized()
-+{
-+    m_maximized = true;
-+    m_size = m_window->window()->geometry().size();
-+    set_maximized();
-+}
-+
-+void QWaylandXdgSurface::setFullscreen()
-+{
-+    m_fullscreen = true;
-+    m_size = m_window->window()->geometry().size();
-+    set_fullscreen();
-+}
-+
-+void QWaylandXdgSurface::setNormal()
-+{
-+    if (m_fullscreen || m_maximized  || m_minimized) {
-+        if (m_maximized) { unset_maximized(); }
-+        if (m_fullscreen) { unset_fullscreen(); }
-+
-+        m_fullscreen = m_maximized = m_minimized = false;
-+        setTopLevel();
-+        QMargins m = m_window->frameMargins();
-+        m_window->configure(0, m_size.width() + m.left() + m.right(), m_size.height() + m.top() + m.bottom());
-+    }
-+}
-+
-+void QWaylandXdgSurface::setMinimized()
-+{
-+    m_minimized = true;
-+    m_size = m_window->window()->geometry().size();
-+    set_minimized();
-+}
-+
-+void QWaylandXdgSurface::setTopLevel()
-+{
-+    // There's no xdg_shell_surface API for this, ignoring
-+}
-+
-+void QWaylandXdgSurface::updateTransientParent(QWindow *parent)
-+{
-+    QWaylandWindow *parent_wayland_window = static_cast<QWaylandWindow *>(parent->handle());
-+    if (!parent_wayland_window)
-+        return;
-+
-+    // set_transient expects a position relative to the parent
-+    QPoint transientPos = m_window->geometry().topLeft(); // this is absolute
-+    QWindow *parentWin = m_window->window()->transientParent();
-+    transientPos -= parentWin->geometry().topLeft();
-+    if (parent_wayland_window->decoration()) {
-+        transientPos.setX(transientPos.x() + parent_wayland_window->decoration()->margins().left());
-+        transientPos.setY(transientPos.y() + parent_wayland_window->decoration()->margins().top());
-+    }
-+
-+    uint32_t flags = 0;
-+    Qt::WindowFlags wf = m_window->window()->flags();
-+    if (wf.testFlag(Qt::ToolTip)
-+            || wf.testFlag(Qt::WindowTransparentForInput))
-+        flags |= XDG_SURFACE_SET_TRANSIENT_FOR;
-+
-+    set_transient_for(parent_wayland_window->object());
-+}
-+
-+void QWaylandXdgSurface::setTitle(const QString & title)
-+{
-+    return QtWayland::xdg_surface::set_title(title);
-+}
-+
-+void QWaylandXdgSurface::setAppId(const QString & appId)
-+{
-+    return QtWayland::xdg_surface::set_app_id(appId);
-+}
-+
-+void QWaylandXdgSurface::xdg_surface_ping(uint32_t serial)
-+{
-+    pong(serial);
-+}
-+
-+void QWaylandXdgSurface::xdg_surface_configure(uint32_t edges, int32_t width,
-+                                               int32_t height)
-+{
-+    m_window->configure(edges, width, height);
-+}
-+
-+
-+QT_END_NAMESPACE
-diff --git a/src/client/qwaylandxdgsurface_p.h b/src/client/qwaylandxdgsurface_p.h
-new file mode 100644
-index 0000000..744d3f3
---- /dev/null
-+++ b/src/client/qwaylandxdgsurface_p.h
-@@ -0,0 +1,105 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
-+** Contact: http://www.qt-project.org/legal
-+**
-+** This file is part of the config.tests of the Qt Toolkit.
-+**
-+** $QT_BEGIN_LICENSE:LGPL$
-+** Commercial License Usage
-+** Licensees holding valid commercial Qt licenses may use this file in
-+** accordance with the commercial license agreement provided with the
-+** Software or, alternatively, in accordance with the terms contained in
-+** a written agreement between you and Digia.  For licensing terms and
-+** conditions see http://qt.digia.com/licensing.  For further information
-+** use the contact form at http://qt.digia.com/contact-us.
-+**
-+** GNU Lesser General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU Lesser
-+** General Public License version 2.1 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.LGPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU Lesser General Public License version 2.1 requirements
-+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-+**
-+** In addition, as a special exception, Digia gives you certain additional
-+** rights.  These rights are described in the Digia Qt LGPL Exception
-+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-+**
-+** GNU General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU
-+** General Public License version 3.0 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.GPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU General Public License version 3.0 requirements will be
-+** met: http://www.gnu.org/copyleft/gpl.html.
-+**
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#ifndef QWAYLANDXDGSURFACE_H
-+#define QWAYLANDXDGSURFACE_H
-+
-+#include <QtCore/QSize>
-+
-+#include <wayland-client.h>
-+
-+#include <QtWaylandClient/private/qwayland-xdg-shell.h>
-+#include <QtWaylandClient/private/qwaylandclientexport_p.h>
-+#include "qwaylandshellsurface_p.h"
-+
-+QT_BEGIN_NAMESPACE
-+
-+class QWaylandWindow;
-+class QWaylandInputDevice;
-+class QWindow;
-+
-+class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgSurface : public QtWayland::xdg_surface
-+        , public QWaylandShellSurface
-+{
-+public:
-+    QWaylandXdgSurface(struct ::xdg_surface *shell_surface, QWaylandWindow *window);
-+    virtual ~QWaylandXdgSurface();
-+
-+    using QtWayland::xdg_surface::resize;
-+    void resize(QWaylandInputDevice *inputDevice, enum resize_edge edges);
-+
-+    void resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) Q_DECL_OVERRIDE;
-+
-+    using QtWayland::xdg_surface::move;
-+    void move(QWaylandInputDevice *inputDevice) Q_DECL_OVERRIDE;
-+
-+    void setTitle(const QString &title) Q_DECL_OVERRIDE;
-+    void setAppId(const QString &appId) Q_DECL_OVERRIDE;
-+
-+    bool isFullscreen() const { return m_fullscreen; }
-+    bool isMaximized() const { return m_maximized; }
-+
-+private:
-+    void setMaximized() Q_DECL_OVERRIDE;
-+    void setFullscreen() Q_DECL_OVERRIDE;
-+    void setNormal() Q_DECL_OVERRIDE;
-+    void setMinimized() Q_DECL_OVERRIDE;
-+
-+    void setTopLevel() Q_DECL_OVERRIDE;
-+    void updateTransientParent(QWindow *parent) Q_DECL_OVERRIDE;
-+
-+private:
-+    QWaylandWindow *m_window;
-+    bool m_maximized;
-+    bool m_minimized;
-+    bool m_fullscreen;
-+    QSize m_size;
-+
-+    void xdg_surface_ping(uint32_t serial) Q_DECL_OVERRIDE;
-+    void xdg_surface_configure(uint32_t edges,
-+                               int32_t width,
-+                               int32_t height) Q_DECL_OVERRIDE;
-+    friend class QWaylandWindow;
-+};
-+
-+QT_END_NAMESPACE
-+
-+#endif // QWAYLANDXDGSURFACE_H
--- 
-1.9.1
-
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0019-xdg-shell-upgrade-to-support-current-version-weston-.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0019-xdg-shell-upgrade-to-support-current-version-weston-.patch
deleted file mode 100644 (file)
index 8f0425a..0000000
+++ /dev/null
@@ -1,772 +0,0 @@
-From c4219cca0febd7119e0bec776fdc2877b3448e0b Mon Sep 17 00:00:00 2001
-From: Philippe Coval <philippe.coval@open.eurogiciel.org>
-Date: Tue, 10 Jun 2014 16:22:17 +0200
-Subject: [PATCH 19/21] xdg-shell: upgrade to support current version
- (weston-1.5.0)
-
-The protocol file is a raw copy of
-
-Source: http://cgit.freedesktop.org/wayland/weston/plain/protocol/xdg-shell.xml?id=1.5.0
-
-Task-number: QTBUG-38633/related
-Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
-Reviewed-by: Philippe Coval <rzr@gna.org>
-Origin: https://www.qt.gitorious.org/qt/qtwayland/commit/4bac130b97fbaa565aa9883eb302557ef0185d50
-Change-Id: I41ca2f89c09a8b6348ce2fbf6d59f44b4c81ffff
----
- src/3rdparty/protocol/xdg-shell.xml | 288 ++++++++++++++++++------------------
- src/client/client.pro               |   2 +
- src/client/qwaylanddisplay.cpp      |  10 +-
- src/client/qwaylanddisplay_p.h      |   5 +-
- src/client/qwaylandxdgshell.cpp     |  77 ++++++++++
- src/client/qwaylandxdgshell_p.h     |  73 +++++++++
- src/client/qwaylandxdgsurface.cpp   |  60 ++++++--
- src/client/qwaylandxdgsurface_p.h   |  11 +-
- 8 files changed, 364 insertions(+), 162 deletions(-)
- create mode 100644 src/client/qwaylandxdgshell.cpp
- create mode 100644 src/client/qwaylandxdgshell_p.h
-
-diff --git a/src/3rdparty/protocol/xdg-shell.xml b/src/3rdparty/protocol/xdg-shell.xml
-index 4e5cff8..79a2831 100644
---- a/src/3rdparty/protocol/xdg-shell.xml
-+++ b/src/3rdparty/protocol/xdg-shell.xml
-@@ -40,19 +40,22 @@
-     <enum name="version">
-       <description summary="latest protocol version">
--      Use this enum to check the protocol version, and it will be updated
--      automatically.
-+      The 'current' member of this enum gives the version of the
-+      protocol.  Implementations can compare this to the version
-+      they implement using static_assert to ensure the protocol and
-+      implementation versions match.
-       </description>
--      <entry name="current" value="1" summary="Always the latest version"/>
-+      <entry name="current" value="3" summary="Always the latest version"/>
-     </enum>
-     <request name="use_unstable_version">
-       <description summary="enable use of this unstable version">
--      Use this request in order to enable use of this interface.
--
--      Understand and agree that one is using an unstable interface,
--      that will likely change in the future, breaking the API.
-+      Negotiate the unstable version of the interface.  This
-+      mechanism is in place to ensure client and server agree on the
-+      unstable versions of the protocol that they speak or exit
-+      cleanly if they don't agree.  This request will go away once
-+      the xdg-shell protocol is stable.
-       </description>
-       <arg name="version" type="int"/>
-     </request>
-@@ -84,6 +87,28 @@
-       <arg name="y" type="int"/>
-       <arg name="flags" type="uint"/>
-     </request>
-+
-+    <event name="ping">
-+      <description summary="check if the client is alive">
-+        The ping event asks the client if it's still alive. Pass the
-+        serial specified in the event back to the compositor by sending
-+        a "pong" request back with the specified serial.
-+
-+        Compositors can use this to determine if the client is still
-+        alive. It's unspecified what will happen if the client doesn't
-+        respond to the ping request, or in what timeframe. Clients should
-+        try to respond in a reasonable amount of time.
-+      </description>
-+      <arg name="serial" type="uint" summary="pass this to the callback"/>
-+    </event>
-+
-+    <request name="pong">
-+      <description summary="respond to a ping event">
-+      A client must respond to a ping event with a pong request or
-+      the client may be deemed unresponsive.
-+      </description>
-+      <arg name="serial" type="uint" summary="serial of the ping event"/>
-+    </request>
-   </interface>
-   <interface name="xdg_surface" version="1">
-@@ -124,6 +149,32 @@
-       <arg name="parent" type="object" interface="wl_surface" allow-null="true"/>
-     </request>
-+    <request name="set_margin">
-+      <description summary="set the visible frame boundaries">
-+        This tells the compositor what the visible size of the window
-+        should be, so it can use it to determine what borders to use for
-+        constrainment and alignment.
-+
-+        CSD often has invisible areas for decoration purposes, like drop
-+        shadows. These "shadow" drawings need to be subtracted out of the
-+        normal boundaries of the window when computing where to place
-+        windows (e.g. to set this window so it's centered on top of another,
-+        or to put it to the left or right of the screen.)
-+
-+        This value should change as little as possible at runtime, to
-+        prevent flicker.
-+
-+        This value is also ignored when the window is maximized or
-+        fullscreen, and assumed to be 0.
-+
-+        If never called, this value is assumed to be 0.
-+      </description>
-+      <arg name="left_margin" type="int"/>
-+      <arg name="right_margin" type="int"/>
-+      <arg name="top_margin" type="int"/>
-+      <arg name="bottom_margin" type="int"/>
-+    </request>
-+
-     <request name="set_title">
-       <description summary="set surface title">
-       Set a short title for the surface.
-@@ -150,22 +201,6 @@
-       <arg name="app_id" type="string"/>
-     </request>
--    <request name="pong">
--      <description summary="respond to a ping event">
--      A client must respond to a ping event with a pong request or
--      the client may be deemed unresponsive.
--      </description>
--      <arg name="serial" type="uint" summary="serial of the ping event"/>
--    </request>
--
--    <event name="ping">
--      <description summary="ping client">
--      Ping a client to check if it is receiving events and sending
--      requests. A client is expected to reply with a pong request.
--      </description>
--      <arg name="serial" type="uint"/>
--    </event>
--
-     <request name="move">
-       <description summary="start an interactive move">
-       Start a pointer-driven move of the surface.
-@@ -217,12 +252,6 @@
-       ignore it if it doesn't resize, pick a smaller size (to
-       satisfy aspect ratio or resize in steps of NxM pixels).
--      The edges parameter provides a hint about how the surface
--      was resized. The client may use this information to decide
--      how to adjust its content to the new size (e.g. a scrolling
--      area might adjust its content position to leave the viewable
--      content unmoved). Valid edge values are from resize_edge enum.
--
-       The client is free to dismiss all but the last configure
-       event it received.
-@@ -230,7 +259,6 @@
-       in surface local coordinates.
-       </description>
--      <arg name="edges" type="uint"/>
-       <arg name="width" type="int"/>
-       <arg name="height" type="int"/>
-     </event>
-@@ -250,128 +278,122 @@
-       <arg name="output" type="object" interface="wl_output" allow-null="true"/>
-     </request>
--    <event name="request_set_fullscreen">
--      <description summary="server requests that the client set fullscreen">
--      Event sent from the compositor to the client requesting that the client
--      goes to a fullscreen state. It's the client job to call set_fullscreen
--      and really trigger the fullscreen state.
--      </description>
--    </event>
--
--    <event name="request_unset_fullscreen">
--      <description summary="server requests that the client unset fullscreen">
--      Event sent from the compositor to the client requesting that the client
--      leaves the fullscreen state. It's the client job to call
--      unset_fullscreen and really leave the fullscreen state.
--      </description>
--    </event>
-+    <enum name="state">
-+      <description summary="types of state on the surface">
-+        The different state values used on the surface. This is designed for
-+        state values like maximized, fullscreen. It is paired with the
-+        request_change_state event to ensure that both the client and the
-+        compositor setting the state can be synchronized.
--    <request name="set_fullscreen">
--      <description summary="set the surface state as fullscreen">
--      Set the surface as fullscreen.
-+        States set in this way are double-buffered. They will get applied on
-+        the next commit.
--      After this request, the compositor should send a configure event
--      informing the output size.
-+        Desktop environments may extend this enum by taking up a range of
-+        values and documenting the range they chose in this description.
-+        They are not required to document the values for the range that they
-+        chose. Ideally, any good extensions from a desktop environment should
-+        make its way into standardization into this enum.
--      This request informs the compositor that the next attached buffer
--      committed will be in a fullscreen state. The buffer size should be the
--      same size as the size informed in the configure event, if the client
--      doesn't want to leave any empty area.
-+        The current reserved ranges are:
--      In other words: the next attached buffer after set_maximized is the new
--      maximized buffer. And the surface will be positioned at the maximized
--      position on commit.
--
--      A simple way to synchronize and wait for the correct configure event is
--      to use a wl_display.sync request right after the set_fullscreen
--      request. When the sync callback returns, the last configure event
--      received just before it will be the correct one, and should contain the
--      right size for the surface to maximize.
--
--      Setting one state won't unset another state. Use
--      xdg_surface.unset_fullscreen for unsetting it.
-+        0x0000 - 0x0FFF: xdg-shell core values, documented below.
-+        0x1000 - 0x1FFF: GNOME
-       </description>
--    </request>
-+      <entry name="maximized" value="1" summary="the surface is maximized">
-+        A non-zero value indicates the surface is maximized. Otherwise,
-+        the surface is unmaximized.
-+      </entry>
-+      <entry name="fullscreen" value="2" summary="the surface is fullscreen">
-+        A non-zero value indicates the surface is fullscreen. Otherwise,
-+        the surface is not fullscreen.
-+      </entry>
-+    </enum>
--    <request name="unset_fullscreen">
--      <description summary="unset the surface state as fullscreen">
--      Unset the surface fullscreen state.
-+    <request name="request_change_state">
-+      <description summary="client requests to change a surface's state">
-+        This asks the compositor to change the state. If the compositor wants
-+        to change the state, it will send a change_state event with the same
-+        state_type, value, and serial, and the event flow continues as if it
-+        it was initiated by the compositor.
--      Same negotiation as set_fullscreen must be used.
-+        If the compositor does not want to change the state, it will send a
-+        change_state to the client with the old value of the state.
-       </description>
-+      <arg name="state_type" type="uint" summary="the state to set"/>
-+      <arg name="value" type="uint" summary="the value to change the state to"/>
-+      <arg name="serial" type="uint" summary="an event serial">
-+        This serial is so the client can know which change_state event corresponds
-+        to which request_change_state request it sent out.
-+      </arg>
-     </request>
--    <event name="request_set_maximized">
--      <description summary="server requests that the client set maximized">
--      Event sent from the compositor to the client requesting that the client
--      goes to a maximized state. It's the client job to call set_maximized
--      and really trigger the maximized state.
-+    <event name="change_state">
-+      <description summary="compositor wants to change a surface's state">
-+        This event tells the client to change a surface's state. The client
-+        should respond with an ack_change_state request to the compositor to
-+        guarantee that the compositor knows that the client has seen it.
-       </description>
--    </event>
--    <event name="request_unset_maximized">
--      <description summary="server requests that the client unset maximized">
--      Event sent from the compositor to the client requesting that the client
--      leaves the maximized state. It's the client job to call unset_maximized
--      and really leave the maximized state.
--      </description>
-+      <arg name="state_type" type="uint" summary="the state to set"/>
-+      <arg name="value" type="uint" summary="the value to change the state to"/>
-+      <arg name="serial" type="uint" summary="a serial for the compositor's own tracking"/>
-     </event>
--    <request name="set_maximized">
--      <description summary="set the surface state as maximized">
--      Set the surface as maximized.
--
--      After this request, the compositor will send a configure event
--      informing the output size minus panel and other MW decorations.
--
--      This request informs the compositor that the next attached buffer
--      committed will be in a maximized state. The buffer size should be the
--      same size as the size informed in the configure event, if the client
--      doesn't want to leave any empty area.
-+    <request name="ack_change_state">
-+      <description summary="ack a change_state event">
-+        When a change_state event is received, a client should then ack it
-+        using the ack_change_state request to ensure that the compositor
-+        knows the client has seen the event.
--      In other words: the next attached buffer after set_maximized is the new
--      maximized buffer. And the surface will be positioned at the maximized
--      position on commit.
-+        By this point, the state is confirmed, and the next attach should
-+        contain the buffer drawn for the new state value.
--      A simple way to synchronize and wait for the correct configure event is
--      to use a wl_display.sync request right after the set_maximized request.
--      When the sync callback returns, the last configure event received just
--      before it will be the correct one, and should contain the right size
--      for the surface to maximize.
--
--      Setting one state won't unset another state. Use
--      xdg_surface.unset_maximized for unsetting it.
-+        The values here need to be the same as the values in the cooresponding
-+        change_state event.
-       </description>
-+      <arg name="state_type" type="uint" summary="the state to set"/>
-+      <arg name="value" type="uint" summary="the value to change the state to"/>
-+      <arg name="serial" type="uint" summary="a serial to pass to change_state"/>
-     </request>
--    <request name="unset_maximized">
--      <description summary="unset the surface state as maximized">
--      Unset the surface maximized state.
--
--      Same negotiation as set_maximized must be used.
-+    <request name="set_minimized">
-+      <description summary="minimize the surface">
-+        Minimize the surface.
-       </description>
-     </request>
--    <request name="set_minimized">
--      <description summary="set the surface state as minimized">
--      Set the surface minimized state.
--
--      Setting one state won't unset another state.
-+    <event name="activated">
-+      <description summary="surface was activated">
-+      The activated_set event is sent when this surface has been
-+      activated, which means that the surface has user attention.
-+        Window decorations should be updated accordingly. You should
-+        not use this event for anything but the style of decorations
-+        you display, use wl_keyboard.enter and wl_keyboard.leave for
-+        determining keyboard focus.
-       </description>
--    </request>
-+    </event>
--    <event name="focused_set">
--      <description summary="surface was focused">
--      The focused_set event is sent when this surface has been
--      activated. Window decorations should be updated accordingly.
-+    <event name="deactivated">
-+      <description summary="surface was deactivated">
-+      The deactivate event is sent when this surface has been
-+        deactivated, which means that the surface lost user attention.
-+        Window decorations should be updated accordingly. You should
-+        not use this event for anything but the style of decorations
-+        you display, use wl_keyboard.enter and wl_keyboard.leave for
-+        determining keyboard focus.
-       </description>
-     </event>
--    <event name="focused_unset">
--      <description summary="surface was unfocused">
--      The focused_unset event is sent when this surface has been
--      deactivated, because another surface has been activated. Window
--      decorations should be updated accordingly.
-+    <event name="close">
-+      <description summary="surface wants to be closed">
-+        The close event is sent by the compositor when the user
-+        wants the surface to be closed. This should be equivalent to
-+        the user clicking the close button in client-side decorations,
-+        if your application has any...
-+
-+        This is only a request that the user intends to close your
-+        window. The client may choose to ignore this request, or show
-+        a dialog to ask the user to save their data...
-       </description>
-     </event>
-   </interface>
-@@ -409,22 +431,6 @@
-       </description>
-     </request>
--    <request name="pong">
--      <description summary="respond to a ping event">
--      A client must respond to a ping event with a pong request or
--      the client may be deemed unresponsive.
--      </description>
--      <arg name="serial" type="uint" summary="serial of the ping event"/>
--    </request>
--
--    <event name="ping">
--      <description summary="ping client">
--      Ping a client to check if it is receiving events and sending
--      requests. A client is expected to reply with a pong request.
--      </description>
--      <arg name="serial" type="uint"/>
--    </event>
--
-     <event name="popup_done">
-       <description summary="popup interaction is done">
-       The popup_done event is sent out when a popup grab is broken,
-diff --git a/src/client/client.pro b/src/client/client.pro
-index 9ecf82f..73e3b7f 100644
---- a/src/client/client.pro
-+++ b/src/client/client.pro
-@@ -59,6 +59,7 @@ SOURCES +=  qwaylandintegration.cpp \
-             qwaylanddatasource.cpp \
-             qwaylandshellsurface.cpp \
-             qwaylandwlshellsurface.cpp \
-+            qwaylandxdgshell.cpp \
-             qwaylandxdgsurface.cpp \
-             qwaylandextendedoutput.cpp \
-             qwaylandextendedsurface.cpp \
-@@ -89,6 +90,7 @@ HEADERS +=  qwaylandintegration_p.h \
-             qwaylanddatasource_p.h \
-             qwaylandshellsurface_p.h \
-             qwaylandwlshellsurface_p.h \
-+            qwaylandxdgshell_p.h \
-             qwaylandxdgsurface_p.h \
-             qwaylandextendedoutput_p.h \
-             qwaylandextendedsurface_p.h \
-diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
-index 7f953ad..2e25672 100644
---- a/src/client/qwaylanddisplay.cpp
-+++ b/src/client/qwaylanddisplay.cpp
-@@ -50,7 +50,7 @@
- #include "qwaylandclipboard_p.h"
- #include "qwaylanddatadevicemanager_p.h"
- #include "qwaylandhardwareintegration_p.h"
--
-+#include "qwaylandxdgshell_p.h"
- #include "qwaylandwindowmanagerintegration_p.h"
-@@ -209,8 +209,7 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin
-         mShm = static_cast<struct wl_shm *>(wl_registry_bind(registry, id, &wl_shm_interface,1));
-     } else if (interface == QStringLiteral("xdg_shell")
-                && qEnvironmentVariableIsSet("QT_WAYLAND_USE_XDG_SHELL")) {
--        mShellXdg.reset(new QtWayland::xdg_shell(registry, id));
--        mShellXdg->use_unstable_version(QtWayland::xdg_shell::version_current);
-+        mShellXdg.reset(new QWaylandXdgShell(registry,id));
-     } else if (interface == QStringLiteral("wl_shell")){
-         mShell.reset(new QtWayland::wl_shell(registry, id));
-     } else if (interface == QStringLiteral("wl_seat")) {
-@@ -275,4 +274,9 @@ void QWaylandDisplay::forceRoundTrip()
-     wl_display_roundtrip(mDisplay);
- }
-+QtWayland::xdg_shell *QWaylandDisplay::shellXdg()
-+{
-+    return mShellXdg.data();
-+}
-+
- QT_END_NAMESPACE
-diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h
-index cf5dfc2..f1b35a7 100644
---- a/src/client/qwaylanddisplay_p.h
-+++ b/src/client/qwaylanddisplay_p.h
-@@ -72,6 +72,7 @@ class QWaylandWindow;
- class QWaylandEventThread;
- class QWaylandIntegration;
- class QWaylandHardwareIntegration;
-+class QWaylandXdgShell;
- namespace QtWayland {
-     class qt_output_extension;
-@@ -115,7 +116,7 @@ public:
-     QtWayland::wl_compositor *compositor() { return &mCompositor; }
-     QtWayland::wl_shell *shell() { return mShell.data(); }
--    QtWayland::xdg_shell *shellXdg() { return mShellXdg.data(); }
-+    QtWayland::xdg_shell *shellXdg();
-     QList<QWaylandInputDevice *> inputDevices() const { return mInputDevices; }
-     QWaylandInputDevice *defaultInputDevice() const;
-@@ -171,7 +172,7 @@ private:
-     QThread *mEventThread;
-     QWaylandEventThread *mEventThreadObject;
-     QScopedPointer<QtWayland::wl_shell> mShell;
--    QScopedPointer<QtWayland::xdg_shell> mShellXdg;
-+    QScopedPointer<QWaylandXdgShell> mShellXdg;
-     QList<QPlatformScreen *> mScreens;
-     QList<QWaylandInputDevice *> mInputDevices;
-     QList<Listener> mRegistryListeners;
-diff --git a/src/client/qwaylandxdgshell.cpp b/src/client/qwaylandxdgshell.cpp
-new file mode 100644
-index 0000000..eb9f91c
---- /dev/null
-+++ b/src/client/qwaylandxdgshell.cpp
-@@ -0,0 +1,77 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2014 Eurogiciel, author: <philippe.coval@eurogiciel.fr>
-+** Contact: http://www.qt-project.org/legal
-+**
-+** This file is part of the config.tests of the Qt Toolkit.
-+**
-+** $QT_BEGIN_LICENSE:LGPL$
-+** Commercial License Usage
-+** Licensees holding valid commercial Qt licenses may use this file in
-+** accordance with the commercial license agreement provided with the
-+** Software or, alternatively, in accordance with the terms contained in
-+** a written agreement between you and Digia.  For licensing terms and
-+** conditions see http://qt.digia.com/licensing.  For further information
-+** use the contact form at http://qt.digia.com/contact-us.
-+**
-+** GNU Lesser General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU Lesser
-+** General Public License version 2.1 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.LGPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU Lesser General Public License version 2.1 requirements
-+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-+**
-+** In addition, as a special exception, Digia gives you certain additional
-+** rights.  These rights are described in the Digia Qt LGPL Exception
-+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-+**
-+** GNU General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU
-+** General Public License version 3.0 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.GPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU General Public License version 3.0 requirements will be
-+** met: http://www.gnu.org/copyleft/gpl.html.
-+**
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#include "qwaylandxdgshell_p.h"
-+
-+#include "qwaylanddisplay_p.h"
-+#include "qwaylandwindow_p.h"
-+#include "qwaylandinputdevice_p.h"
-+#include "qwaylanddecoration_p.h"
-+#include "qwaylandscreen_p.h"
-+
-+#include <QtCore/QDebug>
-+
-+QT_BEGIN_NAMESPACE
-+
-+QWaylandXdgShell::QWaylandXdgShell(struct ::xdg_shell *shell)
-+    : QtWayland::xdg_shell(shell)
-+{
-+}
-+
-+QWaylandXdgShell::QWaylandXdgShell(struct ::wl_registry *registry, uint32_t id)
-+    : QtWayland::xdg_shell(registry, id)
-+{
-+    use_unstable_version(QtWayland::xdg_shell::version_current);
-+}
-+
-+QWaylandXdgShell::~QWaylandXdgShell()
-+{
-+    xdg_shell_destroy(object());
-+}
-+
-+
-+void QWaylandXdgShell::xdg_shell_ping(uint32_t serial)
-+{
-+    pong(serial);
-+}
-+
-+
-+QT_END_NAMESPACE
-diff --git a/src/client/qwaylandxdgshell_p.h b/src/client/qwaylandxdgshell_p.h
-new file mode 100644
-index 0000000..6a396bd
---- /dev/null
-+++ b/src/client/qwaylandxdgshell_p.h
-@@ -0,0 +1,73 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2014 Eurogiciel, author: <philippe.coval@eurogiciel.fr>
-+** Contact: http://www.qt-project.org/legal
-+**
-+** This file is part of the config.tests of the Qt Toolkit.
-+**
-+** $QT_BEGIN_LICENSE:LGPL$
-+** Commercial License Usage
-+** Licensees holding valid commercial Qt licenses may use this file in
-+** accordance with the commercial license agreement provided with the
-+** Software or, alternatively, in accordance with the terms contained in
-+** a written agreement between you and Digia.  For licensing terms and
-+** conditions see http://qt.digia.com/licensing.  For further information
-+** use the contact form at http://qt.digia.com/contact-us.
-+**
-+** GNU Lesser General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU Lesser
-+** General Public License version 2.1 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.LGPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU Lesser General Public License version 2.1 requirements
-+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-+**
-+** In addition, as a special exception, Digia gives you certain additional
-+** rights.  These rights are described in the Digia Qt LGPL Exception
-+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-+**
-+** GNU General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU
-+** General Public License version 3.0 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.GPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU General Public License version 3.0 requirements will be
-+** met: http://www.gnu.org/copyleft/gpl.html.
-+**
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#ifndef QWAYLANDXDGSHELL_H
-+#define QWAYLANDXDGSHELL_H
-+
-+#include <QtCore/QSize>
-+
-+#include <wayland-client.h>
-+
-+#include <QtWaylandClient/private/qwayland-xdg-shell.h>
-+#include <QtWaylandClient/private/qwaylandclientexport_p.h>
-+#include "qwaylandshellsurface_p.h"
-+
-+QT_BEGIN_NAMESPACE
-+
-+class QWaylandWindow;
-+class QWaylandInputDevice;
-+class QWindow;
-+
-+class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgShell : public QtWayland::xdg_shell
-+{
-+public:
-+    QWaylandXdgShell(struct ::xdg_shell *shell);
-+    QWaylandXdgShell(struct ::wl_registry *registry, uint32_t id);
-+
-+    virtual ~QWaylandXdgShell();
-+
-+private:
-+    void xdg_shell_ping(uint32_t serial) Q_DECL_OVERRIDE;
-+};
-+
-+QT_END_NAMESPACE
-+
-+#endif // QWAYLANDXDGSHELL_H
-diff --git a/src/client/qwaylandxdgsurface.cpp b/src/client/qwaylandxdgsurface.cpp
-index 1b8affa..5fb74d2 100644
---- a/src/client/qwaylandxdgsurface.cpp
-+++ b/src/client/qwaylandxdgsurface.cpp
-@@ -87,23 +87,25 @@ void QWaylandXdgSurface::move(QWaylandInputDevice *inputDevice)
- void QWaylandXdgSurface::setMaximized()
- {
--    m_maximized = true;
--    m_size = m_window->window()->geometry().size();
--    set_maximized();
-+    if (!m_maximized)
-+        request_change_state(XDG_SURFACE_STATE_MAXIMIZED, true, 0);
- }
- void QWaylandXdgSurface::setFullscreen()
- {
--    m_fullscreen = true;
--    m_size = m_window->window()->geometry().size();
--    set_fullscreen();
-+    if (!m_fullscreen)
-+        request_change_state(XDG_SURFACE_STATE_FULLSCREEN, true, 0);
- }
- void QWaylandXdgSurface::setNormal()
- {
-     if (m_fullscreen || m_maximized  || m_minimized) {
--        if (m_maximized) { unset_maximized(); }
--        if (m_fullscreen) { unset_fullscreen(); }
-+        if (m_maximized) {
-+            request_change_state(XDG_SURFACE_STATE_MAXIMIZED, false, 0);
-+        }
-+        if (m_fullscreen) {
-+            request_change_state(XDG_SURFACE_STATE_FULLSCREEN, false, 0);
-+        }
-         m_fullscreen = m_maximized = m_minimized = false;
-         setTopLevel();
-@@ -158,16 +160,48 @@ void QWaylandXdgSurface::setAppId(const QString & appId)
-     return QtWayland::xdg_surface::set_app_id(appId);
- }
--void QWaylandXdgSurface::xdg_surface_ping(uint32_t serial)
-+void QWaylandXdgSurface::xdg_surface_configure(int32_t width, int32_t height)
- {
--    pong(serial);
-+    m_window->configure(0 , width, height);
- }
--void QWaylandXdgSurface::xdg_surface_configure(uint32_t edges, int32_t width,
--                                               int32_t height)
-+void QWaylandXdgSurface::xdg_surface_change_state(uint32_t state,
-+                                                  uint32_t value,
-+                                                  uint32_t serial)
- {
--    m_window->configure(edges, width, height);
-+
-+    if (state == XDG_SURFACE_STATE_MAXIMIZED
-+            || state == XDG_SURFACE_STATE_FULLSCREEN) {
-+        if (value) {
-+            m_size = m_window->window()->geometry().size();
-+        } else {
-+            QMargins m = m_window->frameMargins();
-+            m_window->configure(0, m_size.width() + m.left() + m.right(), m_size.height() + m.top() + m.bottom());
-+        }
-+    }
-+
-+    switch (state) {
-+    case XDG_SURFACE_STATE_MAXIMIZED:
-+        m_maximized = value;
-+        break;
-+    case XDG_SURFACE_STATE_FULLSCREEN:
-+        m_fullscreen = value;
-+        break;
-+    }
-+
-+    xdg_surface_ack_change_state(object(), state, value, serial);
- }
-+void QWaylandXdgSurface::xdg_surface_activated()
-+{
-+}
-+
-+void QWaylandXdgSurface::xdg_surface_deactivated()
-+{
-+}
-+
-+void QWaylandXdgSurface::xdg_surface_close()
-+{
-+}
- QT_END_NAMESPACE
-diff --git a/src/client/qwaylandxdgsurface_p.h b/src/client/qwaylandxdgsurface_p.h
-index 744d3f3..d2a154e 100644
---- a/src/client/qwaylandxdgsurface_p.h
-+++ b/src/client/qwaylandxdgsurface_p.h
-@@ -93,10 +93,15 @@ private:
-     bool m_fullscreen;
-     QSize m_size;
--    void xdg_surface_ping(uint32_t serial) Q_DECL_OVERRIDE;
--    void xdg_surface_configure(uint32_t edges,
--                               int32_t width,
-+    void xdg_surface_configure(int32_t width,
-                                int32_t height) Q_DECL_OVERRIDE;
-+    void xdg_surface_change_state(uint32_t state,
-+                                  uint32_t value,
-+                                  uint32_t serial) Q_DECL_OVERRIDE;
-+    void xdg_surface_activated() Q_DECL_OVERRIDE;
-+    void xdg_surface_deactivated() Q_DECL_OVERRIDE;
-+    void xdg_surface_close() Q_DECL_OVERRIDE;
-+
-     friend class QWaylandWindow;
- };
--- 
-1.9.1
-
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch
deleted file mode 100644 (file)
index 413459f..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-From b4f032b13338ad6c21024177b031c75063ef7493 Mon Sep 17 00:00:00 2001
-From: Manuel Bachmann <manuel.bachmann@open.eurogiciel.org>
-Date: Sun, 7 Sep 2014 08:19:30 +0200
-Subject: [PATCH 20/21] Add IVI-Shell protocol file version patch v6
-
-Source : http://lists.freedesktop.org/archives/wayland-devel/2014-June/015617.html
-
-This file comes from the last proposed definition of the IVI-Shell protocol,
-and will need to be refreshed on protocol update.
-
-Task-number: QTBUG-XXXXX/part/1of2
-
-Signed-off-by: Manuel Bachmann <manuel.bachmann@open.eurogiciel.org>
----
- src/3rdparty/protocol/ivi-application.xml | 101 ++++++++++++++++++++++++++++++
- 1 file changed, 101 insertions(+)
- create mode 100644 src/3rdparty/protocol/ivi-application.xml
-
-diff --git a/src/3rdparty/protocol/ivi-application.xml b/src/3rdparty/protocol/ivi-application.xml
-new file mode 100644
-index 0000000..833fd38
---- /dev/null
-+++ b/src/3rdparty/protocol/ivi-application.xml
-@@ -0,0 +1,101 @@
-+<?xml version="1.0" encoding="UTF-8"?>
-+<protocol name="ivi_application">
-+
-+    <copyright>
-+    Copyright (C) 2013 DENSO CORPORATION
-+    Copyright (c) 2013 BMW Car IT GmbH
-+
-+    Permission is hereby granted, free of charge, to any person obtaining a copy
-+    of this software and associated documentation files (the "Software"), to deal
-+    in the Software without restriction, including without limitation the rights
-+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-+    copies of the Software, and to permit persons to whom the Software is
-+    furnished to do so, subject to the following conditions:
-+
-+    The above copyright notice and this permission notice shall be included in
-+    all copies or substantial portions of the Software.
-+
-+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+    THE SOFTWARE.
-+    </copyright>
-+
-+    <interface name="ivi_surface" version="1">
-+        <description summary="application interface to surface in ivi compositor"/>
-+
-+        <request name="destroy" type="destructor">
-+            <description summary="destroy ivi_surface">
-+                This removes link from ivi_id to wl_surface and destroys ivi_surface.
-+            </description>
-+        </request>
-+
-+        <event name="visibility">
-+            <description summary="visibility of surface in ivi compositor has changed">
-+                The new visibility state is provided in argument visibility.
-+                If visibility is 0, the surface has become invisible.
-+                If visibility is not 0, the surface has become visible.
-+            </description>
-+            <arg name="visibility" type="int"/>
-+        </event>
-+
-+        <enum name="warning_code">
-+            <description summary="possible warning codes returned by ivi compositor">
-+                These define all possible warning codes returned by ivi compositor on server-side warnings.
-+                invalid_wl_surface:
-+                    - wl_surface already has a another role.
-+                  - wl_surface is destroyed before the ivi_surface is destroyed.
-+                ivi_id_in_use: ivi_id is already assigned by another application.
-+            </description>
-+            <entry name="invalid_wl_surface" value="1" summary="wl_surface is invalid"/>
-+            <entry name="ivi_id_in_use" value="2" summary="ivi_id is in use and can not be shared"/>
-+        </enum>
-+
-+        <event name="warning">
-+            <description summary="server-side warning detected">
-+                The ivi compositor encountered warning while processing a request by this
-+                application. The warning is defined by argument warning_code and optional
-+                warning_text. If the warning is detected, client shall destroy the ivi_surface
-+                object.
-+
-+              When a warning event is sent, the compositor turns the ivi_surface object inert.
-+              The ivi_surface will not deliver further events, all requests on it are ignored
-+              except 'destroy', and the association to the ivi_id is removed. The client
-+              should destroy the ivi_surface object. If an inert ivi_surface object is used as
-+              an argument to any other object's request, that request will [produce a fatal
-+              error / produce a warning / be ignored].
-+            </description>
-+            <arg name="warning_code" type="int"/>
-+            <arg name="warning_text" type="string" allow-null="true"/>
-+        </event>
-+
-+    </interface>
-+
-+    <interface name="ivi_application" version="1">
-+        <description summary="create ivi-style surfaces">
-+          This interface is implemented by servers that provide desktop-style user interfaces.
-+          It allows clients to associate a ivi_surface with a basic surface.
-+      </description>
-+
-+        <request name="surface_create">
-+            <description summary="create ivi_surface with numeric ID in ivi compositor">
-+                surface_create will create a interface:ivi_surface with numeric ID; ivi_id in
-+                ivi compositor. These ivi_ids are defined as unique in the system to identify
-+                it inside of ivi compositor. The ivi compositor implements business logic how to
-+                set properties of the surface with ivi_id according to status of the system.
-+                E.g. a unique ID for Car Navigation application is used for implementing special
-+                logic of the application about where it shall be located.
-+              if a wl_surface which already has another role is set, the server regards this as
-+              error and disconnects the client.
-+            </description>
-+            <arg name="ivi_id" type="uint"/>
-+            <arg name="surface" type="object" interface="wl_surface"/>
-+            <arg name="id" type="new_id" interface="ivi_surface"/>
-+        </request>
-+
-+    </interface>
-+
-+</protocol>
--- 
-1.9.1
-
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0021-Implement-initial-IVI-Shell-support.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0021-Implement-initial-IVI-Shell-support.patch
deleted file mode 100644 (file)
index 8723def..0000000
+++ /dev/null
@@ -1,539 +0,0 @@
-From 1ddfa43692cabae0f552351cfbc09377e479471e Mon Sep 17 00:00:00 2001
-From: Manuel Bachmann <manuel.bachmann@open.eurogiciel.org>
-Date: Mon, 8 Sep 2014 11:38:01 +0200
-Subject: [PATCH 21/21] Implement initial IVI-Shell support
-
-IVI-Shell provides a shell interface for Weston, which maps the GENIVI API (http://www.genivi.org) for In-Vehicle Infotainment.
-
-This patch enables detecting the IVI-Shell interface at runtime, and creating compatible surfaces if found.
-
-Task-number: QTBUG-XXXXX/part/2of2
-
-Change-Id: I1f6c11bf56b727a54fb48faab9c076b61d635440
-Signed-off-by: Manuel Bachmann <manuel.bachmann@open.eurogiciel.org>
----
- src/client/client.pro             |   5 ++
- src/client/qwaylanddisplay.cpp    |   9 ++++
- src/client/qwaylanddisplay_p.h    |   5 ++
- src/client/qwaylandivishell.cpp   |  69 +++++++++++++++++++++++++
- src/client/qwaylandivishell_p.h   |  70 +++++++++++++++++++++++++
- src/client/qwaylandivisurface.cpp | 105 ++++++++++++++++++++++++++++++++++++++
- src/client/qwaylandivisurface_p.h |  90 ++++++++++++++++++++++++++++++++
- src/client/qwaylandwindow.cpp     |   8 ++-
- 8 files changed, 360 insertions(+), 1 deletion(-)
- create mode 100644 src/client/qwaylandivishell.cpp
- create mode 100644 src/client/qwaylandivishell_p.h
- create mode 100644 src/client/qwaylandivisurface.cpp
- create mode 100644 src/client/qwaylandivisurface_p.h
-
-diff --git a/src/client/client.pro b/src/client/client.pro
-index 73e3b7f..adb526d 100644
---- a/src/client/client.pro
-+++ b/src/client/client.pro
-@@ -42,6 +42,7 @@ WAYLANDCLIENTSOURCES += \
-             ../extensions/windowmanager.xml \
-             ../3rdparty/protocol/text.xml \
-             ../3rdparty/protocol/xdg-shell.xml \
-+            ../3rdparty/protocol/ivi-application.xml \
- SOURCES +=  qwaylandintegration.cpp \
-             qwaylandnativeinterface.cpp \
-@@ -61,6 +62,8 @@ SOURCES +=  qwaylandintegration.cpp \
-             qwaylandwlshellsurface.cpp \
-             qwaylandxdgshell.cpp \
-             qwaylandxdgsurface.cpp \
-+            qwaylandivishell.cpp \
-+            qwaylandivisurface.cpp \
-             qwaylandextendedoutput.cpp \
-             qwaylandextendedsurface.cpp \
-             qwaylandsubsurface.cpp \
-@@ -92,6 +95,8 @@ HEADERS +=  qwaylandintegration_p.h \
-             qwaylandwlshellsurface_p.h \
-             qwaylandxdgshell_p.h \
-             qwaylandxdgsurface_p.h \
-+            qwaylandivishell_p.h \
-+            qwaylandivisurface_p.h \
-             qwaylandextendedoutput_p.h \
-             qwaylandextendedsurface_p.h \
-             qwaylandsubsurface_p.h \
-diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
-index 2e25672..2a93db7 100644
---- a/src/client/qwaylanddisplay.cpp
-+++ b/src/client/qwaylanddisplay.cpp
-@@ -51,6 +51,7 @@
- #include "qwaylanddatadevicemanager_p.h"
- #include "qwaylandhardwareintegration_p.h"
- #include "qwaylandxdgshell_p.h"
-+#include "qwaylandivishell_p.h"
- #include "qwaylandwindowmanagerintegration_p.h"
-@@ -62,6 +63,7 @@
- #include <QtWaylandClient/private/qwayland-text.h>
- #include <QtWaylandClient/private/qwayland-xdg-shell.h>
-+#include <QtWaylandClient/private/qwayland-ivi-application.h>
- #include <QtCore/QAbstractEventDispatcher>
- #include <QtGui/private/qguiapplication_p.h>
-@@ -207,6 +209,8 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin
-         mCompositor.init(registry, id);
-     } else if (interface == QStringLiteral("wl_shm")) {
-         mShm = static_cast<struct wl_shm *>(wl_registry_bind(registry, id, &wl_shm_interface,1));
-+    } else if (interface == QStringLiteral("ivi_application")) {
-+        mShellIvi.reset(new QWaylandIviShell(registry,id));
-     } else if (interface == QStringLiteral("xdg_shell")
-                && qEnvironmentVariableIsSet("QT_WAYLAND_USE_XDG_SHELL")) {
-         mShellXdg.reset(new QWaylandXdgShell(registry,id));
-@@ -279,4 +283,9 @@ QtWayland::xdg_shell *QWaylandDisplay::shellXdg()
-     return mShellXdg.data();
- }
-+QtWayland::ivi_application *QWaylandDisplay::shellIvi()
-+{
-+    return mShellIvi.data();
-+}
-+
- QT_END_NAMESPACE
-diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h
-index f1b35a7..b9c686c 100644
---- a/src/client/qwaylanddisplay_p.h
-+++ b/src/client/qwaylanddisplay_p.h
-@@ -52,6 +52,7 @@
- #include <QtWaylandClient/private/qwayland-wayland.h>
- #include <QtWaylandClient/private/qwaylandclientexport_p.h>
- #include <QtWaylandClient/private/qwayland-xdg-shell.h>
-+#include <QtWaylandClient/private/qwayland-ivi-application.h>
- struct wl_cursor_image;
-@@ -72,6 +73,7 @@ class QWaylandWindow;
- class QWaylandEventThread;
- class QWaylandIntegration;
- class QWaylandHardwareIntegration;
-+class QWaylandIviShell;
- class QWaylandXdgShell;
- namespace QtWayland {
-@@ -81,6 +83,7 @@ namespace QtWayland {
-     class qt_surface_extension;
-     class wl_text_input_manager;
-     class xdg_shell;
-+    class ivi_application;
- }
- typedef void (*RegistryListener)(void *data,
-@@ -117,6 +120,7 @@ public:
-     QtWayland::wl_shell *shell() { return mShell.data(); }
-     QtWayland::xdg_shell *shellXdg();
-+    QtWayland::ivi_application *shellIvi();
-     QList<QWaylandInputDevice *> inputDevices() const { return mInputDevices; }
-     QWaylandInputDevice *defaultInputDevice() const;
-@@ -173,6 +177,7 @@ private:
-     QWaylandEventThread *mEventThreadObject;
-     QScopedPointer<QtWayland::wl_shell> mShell;
-     QScopedPointer<QWaylandXdgShell> mShellXdg;
-+    QScopedPointer<QWaylandIviShell> mShellIvi;
-     QList<QPlatformScreen *> mScreens;
-     QList<QWaylandInputDevice *> mInputDevices;
-     QList<Listener> mRegistryListeners;
-diff --git a/src/client/qwaylandivishell.cpp b/src/client/qwaylandivishell.cpp
-new file mode 100644
-index 0000000..9d63d0d
---- /dev/null
-+++ b/src/client/qwaylandivishell.cpp
-@@ -0,0 +1,69 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2014 Eurogiciel, author: <manuel.bachmann@open.eurogiciel.org>
-+** Contact: http://www.qt-project.org/legal
-+**
-+** This file is part of the config.tests of the Qt Toolkit.
-+**
-+** $QT_BEGIN_LICENSE:LGPL$
-+** Commercial License Usage
-+** Licensees holding valid commercial Qt licenses may use this file in
-+** accordance with the commercial license agreement provided with the
-+** Software or, alternatively, in accordance with the terms contained in
-+** a written agreement between you and Digia.  For licensing terms and
-+** conditions see http://qt.digia.com/licensing.  For further information
-+** use the contact form at http://qt.digia.com/contact-us.
-+**
-+** GNU Lesser General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU Lesser
-+** General Public License version 2.1 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.LGPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU Lesser General Public License version 2.1 requirements
-+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-+**
-+** In addition, as a special exception, Digia gives you certain additional
-+** rights.  These rights are described in the Digia Qt LGPL Exception
-+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-+**
-+** GNU General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU
-+** General Public License version 3.0 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.GPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU General Public License version 3.0 requirements will be
-+** met: http://www.gnu.org/copyleft/gpl.html.
-+**
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#include "qwaylandivishell_p.h"
-+
-+#include "qwaylanddisplay_p.h"
-+#include "qwaylandwindow_p.h"
-+#include "qwaylandinputdevice_p.h"
-+#include "qwaylanddecoration_p.h"
-+#include "qwaylandscreen_p.h"
-+
-+#include <QtCore/QDebug>
-+
-+QT_BEGIN_NAMESPACE
-+
-+QWaylandIviShell::QWaylandIviShell(struct ::ivi_application *shell)
-+    : QtWayland::ivi_application(shell)
-+{
-+}
-+
-+QWaylandIviShell::QWaylandIviShell(struct ::wl_registry *registry, uint32_t id)
-+    : QtWayland::ivi_application(registry, id)
-+{
-+}
-+
-+QWaylandIviShell::~QWaylandIviShell()
-+{
-+    ivi_application_destroy(object());
-+}
-+
-+QT_END_NAMESPACE
-diff --git a/src/client/qwaylandivishell_p.h b/src/client/qwaylandivishell_p.h
-new file mode 100644
-index 0000000..f9f6983
---- /dev/null
-+++ b/src/client/qwaylandivishell_p.h
-@@ -0,0 +1,70 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2014 Eurogiciel, author: <manuel.bachmann@open.eurogiciel.org>
-+** Contact: http://www.qt-project.org/legal
-+**
-+** This file is part of the config.tests of the Qt Toolkit.
-+**
-+** $QT_BEGIN_LICENSE:LGPL$
-+** Commercial License Usage
-+** Licensees holding valid commercial Qt licenses may use this file in
-+** accordance with the commercial license agreement provided with the
-+** Software or, alternatively, in accordance with the terms contained in
-+** a written agreement between you and Digia.  For licensing terms and
-+** conditions see http://qt.digia.com/licensing.  For further information
-+** use the contact form at http://qt.digia.com/contact-us.
-+**
-+** GNU Lesser General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU Lesser
-+** General Public License version 2.1 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.LGPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU Lesser General Public License version 2.1 requirements
-+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-+**
-+** In addition, as a special exception, Digia gives you certain additional
-+** rights.  These rights are described in the Digia Qt LGPL Exception
-+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-+**
-+** GNU General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU
-+** General Public License version 3.0 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.GPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU General Public License version 3.0 requirements will be
-+** met: http://www.gnu.org/copyleft/gpl.html.
-+**
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#ifndef QWAYLANDIVISHELL_H
-+#define QWAYLANDIVISHELL_H
-+
-+#include <QtCore/QSize>
-+
-+#include <wayland-client.h>
-+
-+#include <QtWaylandClient/private/qwayland-ivi-application.h>
-+#include <QtWaylandClient/private/qwaylandclientexport_p.h>
-+#include "qwaylandshellsurface_p.h"
-+
-+QT_BEGIN_NAMESPACE
-+
-+class QWaylandWindow;
-+class QWaylandInputDevice;
-+class QWindow;
-+
-+class Q_WAYLAND_CLIENT_EXPORT QWaylandIviShell : public QtWayland::ivi_application
-+{
-+public:
-+    QWaylandIviShell(struct ::ivi_application *shell);
-+    QWaylandIviShell(struct ::wl_registry *registry, uint32_t id);
-+
-+    virtual ~QWaylandIviShell();
-+};
-+
-+QT_END_NAMESPACE
-+
-+#endif // QWAYLANDIVISHELL_H
-diff --git a/src/client/qwaylandivisurface.cpp b/src/client/qwaylandivisurface.cpp
-new file mode 100644
-index 0000000..a12309e
---- /dev/null
-+++ b/src/client/qwaylandivisurface.cpp
-@@ -0,0 +1,105 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
-+** Contact: http://www.qt-project.org/legal
-+**
-+** This file is part of the config.tests of the Qt Toolkit.
-+**
-+** $QT_BEGIN_LICENSE:LGPL$
-+** Commercial License Usage
-+** Licensees holding valid commercial Qt licenses may use this file in
-+** accordance with the commercial license agreement provided with the
-+** Software or, alternatively, in accordance with the terms contained in
-+** a written agreement between you and Digia.  For licensing terms and
-+** conditions see http://qt.digia.com/licensing.  For further information
-+** use the contact form at http://qt.digia.com/contact-us.
-+**
-+** GNU Lesser General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU Lesser
-+** General Public License version 2.1 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.LGPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU Lesser General Public License version 2.1 requirements
-+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-+**
-+** In addition, as a special exception, Digia gives you certain additional
-+** rights.  These rights are described in the Digia Qt LGPL Exception
-+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-+**
-+** GNU General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU
-+** General Public License version 3.0 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.GPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU General Public License version 3.0 requirements will be
-+** met: http://www.gnu.org/copyleft/gpl.html.
-+**
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#include "qwaylandivisurface_p.h"
-+
-+#include "qwaylanddisplay_p.h"
-+#include "qwaylandwindow_p.h"
-+#include "qwaylandinputdevice_p.h"
-+#include "qwaylanddecoration_p.h"
-+#include "qwaylandscreen_p.h"
-+
-+#include <QtCore/QDebug>
-+
-+QT_BEGIN_NAMESPACE
-+
-+QWaylandIviSurface::QWaylandIviSurface(struct ::ivi_surface *ivi_surface, QWaylandWindow *window)
-+    : QtWayland::ivi_surface(ivi_surface)
-+    , m_window(window)
-+{
-+}
-+
-+QWaylandIviSurface::~QWaylandIviSurface()
-+{
-+    ivi_surface_destroy(object());
-+}
-+
-+void QWaylandIviSurface::resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges)
-+{
-+}
-+
-+void QWaylandIviSurface::move(QWaylandInputDevice *inputDevice)
-+{
-+}
-+
-+void QWaylandIviSurface::setMaximized()
-+{
-+}
-+
-+void QWaylandIviSurface::setFullscreen()
-+{
-+}
-+
-+void QWaylandIviSurface::setNormal()
-+{
-+}
-+
-+void QWaylandIviSurface::setMinimized()
-+{
-+}
-+
-+void QWaylandIviSurface::setTopLevel()
-+{
-+}
-+
-+void QWaylandIviSurface::updateTransientParent(QWindow *parent)
-+{
-+}
-+
-+void QWaylandIviSurface::setTitle(const QString & title)
-+{
-+}
-+
-+void QWaylandIviSurface::setAppId(const QString & appId)
-+{
-+}
-+
-+QT_END_NAMESPACE
-diff --git a/src/client/qwaylandivisurface_p.h b/src/client/qwaylandivisurface_p.h
-new file mode 100644
-index 0000000..c6a7ce6
---- /dev/null
-+++ b/src/client/qwaylandivisurface_p.h
-@@ -0,0 +1,90 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
-+** Contact: http://www.qt-project.org/legal
-+**
-+** This file is part of the config.tests of the Qt Toolkit.
-+**
-+** $QT_BEGIN_LICENSE:LGPL$
-+** Commercial License Usage
-+** Licensees holding valid commercial Qt licenses may use this file in
-+** accordance with the commercial license agreement provided with the
-+** Software or, alternatively, in accordance with the terms contained in
-+** a written agreement between you and Digia.  For licensing terms and
-+** conditions see http://qt.digia.com/licensing.  For further information
-+** use the contact form at http://qt.digia.com/contact-us.
-+**
-+** GNU Lesser General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU Lesser
-+** General Public License version 2.1 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.LGPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU Lesser General Public License version 2.1 requirements
-+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-+**
-+** In addition, as a special exception, Digia gives you certain additional
-+** rights.  These rights are described in the Digia Qt LGPL Exception
-+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-+**
-+** GNU General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU
-+** General Public License version 3.0 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.GPL included in the
-+** packaging of this file.  Please review the following information to
-+** ensure the GNU General Public License version 3.0 requirements will be
-+** met: http://www.gnu.org/copyleft/gpl.html.
-+**
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#ifndef QWAYLANDIVISURFACE_H
-+#define QWAYLANDIVISURFACE_H
-+
-+#include <QtCore/QSize>
-+
-+#include <wayland-client.h>
-+
-+#include <QtWaylandClient/private/qwayland-ivi-application.h>
-+#include <QtWaylandClient/private/qwaylandclientexport_p.h>
-+#include "qwaylandshellsurface_p.h"
-+
-+QT_BEGIN_NAMESPACE
-+
-+class QWaylandWindow;
-+class QWaylandInputDevice;
-+class QWindow;
-+class QWaylandExtendedSurface;
-+
-+class Q_WAYLAND_CLIENT_EXPORT QWaylandIviSurface : public QtWayland::ivi_surface
-+        , public QWaylandShellSurface
-+{
-+public:
-+    QWaylandIviSurface(struct ::ivi_surface *shell_surface, QWaylandWindow *window);
-+    virtual ~QWaylandIviSurface();
-+
-+    void resize(QWaylandInputDevice *inputDevice, enum wl_shell_surface_resize edges) Q_DECL_OVERRIDE;
-+    void move(QWaylandInputDevice *inputDevice) Q_DECL_OVERRIDE;
-+
-+    void setTitle(const QString &title) Q_DECL_OVERRIDE;
-+    void setAppId(const QString &appId) Q_DECL_OVERRIDE;
-+
-+private:
-+    void setMaximized() Q_DECL_OVERRIDE;
-+    void setFullscreen() Q_DECL_OVERRIDE;
-+    void setNormal() Q_DECL_OVERRIDE;
-+    void setMinimized() Q_DECL_OVERRIDE;
-+
-+    void setTopLevel() Q_DECL_OVERRIDE;
-+    void updateTransientParent(QWindow *parent) Q_DECL_OVERRIDE;
-+
-+private:
-+    QWaylandWindow *m_window;
-+
-+    friend class QWaylandWindow;
-+};
-+
-+QT_END_NAMESPACE
-+
-+#endif // QWAYLANDIVISURFACE_H
-diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
-index 3fb3a49..45a58f2 100644
---- a/src/client/qwaylandwindow.cpp
-+++ b/src/client/qwaylandwindow.cpp
-@@ -39,6 +39,8 @@
- **
- ****************************************************************************/
-+#include <unistd.h>
-+
- #include "qwaylandwindow_p.h"
- #include "qwaylandbuffer_p.h"
-@@ -48,10 +50,12 @@
- #include "qwaylandshellsurface_p.h"
- #include "qwaylandwlshellsurface_p.h"
- #include "qwaylandxdgsurface_p.h"
-+#include "qwaylandivisurface_p.h"
- #include "qwaylandextendedsurface_p.h"
- #include "qwaylandsubsurface_p.h"
- #include "qwaylanddecoration_p.h"
- #include "qwaylandwindowmanagerintegration_p.h"
-+#define IVI_SURFACE_ID 8000
- #include <QtCore/QFileInfo>
- #include <QtGui/QWindow>
-@@ -95,7 +99,9 @@ QWaylandWindow::QWaylandWindow(QWindow *window)
-     mWindowId = id++;
-     if (!(window->flags() & Qt::BypassWindowManagerHint)) {
--        if (mDisplay->shellXdg()) {
-+        if (mDisplay->shellIvi()) {
-+                mShellSurface = new QWaylandIviSurface(mDisplay->shellIvi()->surface_create(IVI_SURFACE_ID + getpid(), object()), this);
-+        } else if (mDisplay->shellXdg()) {
-            if (window->type() & Qt::Window) {
-                 mShellSurface = new QWaylandXdgSurface(mDisplay->shellXdg()->get_xdg_surface(object()), this);
-             }
--- 
-1.9.1
-
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0099_qtwayland_no_evdev.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/0099_qtwayland_no_evdev.patch
deleted file mode 100644 (file)
index 984ae81..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/tests/auto/compositor/compositor/compositor.pro b/tests/auto/compositor/compositor/compositor.pro
-index 2919fa4..d9acac3 100644
---- a/tests/auto/compositor/compositor/compositor.pro
-+++ b/tests/auto/compositor/compositor/compositor.pro
-@@ -7,9 +7,6 @@ QT += core-private gui-private waylandcompositor waylandcompositor-private
- QMAKE_USE += wayland-client wayland-server
--qtConfig(xkbcommon-evdev): \
--    QMAKE_USE += xkbcommon_evdev
--
- WAYLANDCLIENTSOURCES += \
-             ../../../../src/3rdparty/protocol/xdg-shell.xml \
-             ../../../../src/3rdparty/protocol/ivi-application.xml \
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/UNUSED_NEEDS_CHECK_YOCTO_0018-packaging-enable-xdg-shell-at-runtime.patch b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland/UNUSED_NEEDS_CHECK_YOCTO_0018-packaging-enable-xdg-shell-at-runtime.patch
deleted file mode 100644 (file)
index bca61b5..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-From 9617c349a212d5407087daf4f4a2386bce94ecc1 Mon Sep 17 00:00:00 2001
-From: Philippe Coval <philippe.coval@open.eurogiciel.org>
-Date: Thu, 12 Jun 2014 11:55:29 +0200
-Subject: [PATCH 18/21] packaging: enable xdg-shell at runtime
-
-Change-Id: Iffbae496f1e09c8fa44a28d4eb515678e3bbb297
-Bug-Tizen: TIVI-3113/part
-Signed-off-by: Philippe Coval <philippe.coval@open.eurogiciel.org>
----
- packaging/qt5-qtwayland.spec | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/packaging/qt5-qtwayland.spec b/packaging/qt5-qtwayland.spec
-index cba18e2..ff32185 100644
---- a/packaging/qt5-qtwayland.spec
-+++ b/packaging/qt5-qtwayland.spec
-@@ -97,6 +97,11 @@ rm -rf %{buildroot}
- %post
- /sbin/ldconfig
-+
-+f="/etc/profile.d/qt.sh"
-+grep QT_WAYLAND_USE_XDG_SHELL $f \
-+    || echo "QT_WAYLAND_USE_XDG_SHELL='defined'; export QT_WAYLAND_USE_XDG_SHELL"  >> $f
-+
- %postun
- /sbin/ldconfig
--- 
-1.9.1
-
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland_%.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwayland_%.bbappend
deleted file mode 100644 (file)
index 2f6072a..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-FILESEXTRAPATHS_append := ":${THISDIR}/${PN}"
-
-# QT_MODULE_BRANCH = "5.4"
-
-# TODO:
-#  These patches for IVI-SHELL are tempolary disabled because of issues. And new
-#  patches are proposed.
-#
-#    file://0020-Add-IVI-Shell-protocol-file-version-patch-v6.patch \
-#    file://0021-Implement-initial-IVI-Shell-support.patch \
-#    file://0001-protocol-update-3rd-party-ivi-application-protocol.patch \
-#    file://0002-qwaylandwindow-add-support-for-IVI-Surface-ID-proper.patch \
-#
-#  The xdg-shell merged into upstream, so we don't need these patch anymore.
-#  But xdg-shell doesn't work well in current AGL Distro because of
-#  mismatch of protocol versions between server(weston) and client(Qt Apps).
-#
-#    file://0016-xdg-shell-Add-xdg-shell-protocol-file-version-1.4.0.patch \
-#    file://0017-xdg-shell-Add-minimize-feature-to-QWindow-using-wayl.patch \
-#    file://0019-xdg-shell-upgrade-to-support-current-version-weston-.patch \
-#
-
-SRC_URI_append = "\
-    file://0010-Added-manifest-file-according-to-smack-3-domain-mode.patch \
-    "
-
diff --git a/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwebkit_%.bbappend b/meta-agl-profile-graphical-qt5/recipes-qt/qt5/qtwebkit_%.bbappend
deleted file mode 100644 (file)
index 0420578..0000000
+++ /dev/null
@@ -1 +0,0 @@
-PACKAGECONFIG = "gstreamer qtlocation qtmultimedia qtsensors"
diff --git a/meta-agl-profile-graphical/LICENSE b/meta-agl-profile-graphical/LICENSE
deleted file mode 100644 (file)
index e8758f8..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Different components of the AGL layers are under different licenses (a mix
-of MIT and GPLv2). See LICENSE.GPL-2.0-only and LICENSE.MIT for further
-details of the individual licenses.
-
-All metadata (e.g. .bb, .bbappend, .bbclass, .inc, templates/* and similar)
-is MIT licensed unless otherwise stated.
-Source code included in tree for individual recipes (e.g. patches) are under
-the LICENSE stated in the associated recipe (.bb file) unless otherwise stated.
-
-License information for any other files (scripts) is either explicitly stated
-or defaults to GPL version 2 only.
-
-Individual files can contain the following style tags instead of the full
-license text to identify their license:
-
-    SPDX-License-Identifier: GPL-2.0-only
-    SPDX-License-Identifier: MIT
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-graphical/LICENSE.GPL-2.0-only b/meta-agl-profile-graphical/LICENSE.GPL-2.0-only
deleted file mode 100644 (file)
index 5db3c0a..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                           NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-
-Note:
-Individual files contain the following tag instead of the full license text.
-
-    SPDX-License-Identifier: GPL-2.0-only
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-graphical/LICENSE.MIT b/meta-agl-profile-graphical/LICENSE.MIT
deleted file mode 100644 (file)
index a6919eb..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-Note:
-Individual files contain the following tag instead of the full license text.
-
-    SPDX-License-Identifier: MIT
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-graphical/classes/agl-graphical.bbclass b/meta-agl-profile-graphical/classes/agl-graphical.bbclass
deleted file mode 100644 (file)
index 65106db..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-WESTONUSER ??= "display"
-WESTONGROUP ??= "display"
-WESTONARGS ?= "--idle-time=0  --tty=7"
-WESTONLAUNCHARGS ??= "--tty /dev/tty7 --user ${WESTONUSER}"
-DISPLAY_XDG_RUNTIME_DIR ??= "/run/platform/${WESTONUSER}"
-
diff --git a/meta-agl-profile-graphical/conf/layer.conf b/meta-agl-profile-graphical/conf/layer.conf
deleted file mode 100644 (file)
index 0a6efea..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# We have a conf and classes directory, add to BBPATH
-BBPATH =. "${LAYERDIR}:"
-
-# We have recipes-* directories, add to BBFILES
-BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
-            ${LAYERDIR}/recipes-*/*/*.bbappend"
-
-BBFILE_COLLECTIONS += "aglprofilegraphical"
-BBFILE_PATTERN_aglprofilegraphical = "^${LAYERDIR}/"
-BBFILE_PRIORITY_aglprofilegraphical = "70"
-
-LAYERSERIES_COMPAT_aglprofilegraphical = "dunfell"
diff --git a/meta-agl-profile-graphical/recipes-apis/agl-service-homescreen/agl-service-homescreen_git.bb b/meta-agl-profile-graphical/recipes-apis/agl-service-homescreen/agl-service-homescreen_git.bb
deleted file mode 100644 (file)
index 7d2661b..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-SUMMARY     = "Homescreen binding and client library for application"
-DESCRIPTION = "agl-service-homescreen is the binding library"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/apps/agl-service-homescreen"
-SECTION     = "HMI"
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-DEPENDS = "dbus glib-2.0 af-binder json-c"
-
-inherit cmake aglwgt
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-homescreen;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-S = "${WORKDIR}/git"
diff --git a/meta-agl-profile-graphical/recipes-apis/agl-service-mediaplayer/agl-service-mediaplayer_git.bb b/meta-agl-profile-graphical/recipes-apis/agl-service-mediaplayer/agl-service-mediaplayer_git.bb
deleted file mode 100644 (file)
index 4f1757c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY     = "Mediaplayer Service Binding"
-DESCRIPTION = "AGL Mediaplayer Service Binding"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-mediaplayer"
-SECTION     = "apps"
-
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-SRC_URI = "gitsm://gerrit.automotivelinux.org/gerrit/apps/agl-service-mediaplayer;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-DEPENDS = "json-c gstreamer1.0 gstreamer1.0-plugins-base"
-RDEPENDS_${PN} = "agl-service-mediascanner agl-service-bluetooth gstreamer1.0-plugins-bad-waylandsink"
-
-inherit cmake aglwgt pkgconfig
diff --git a/meta-agl-profile-graphical/recipes-apis/agl-service-radio/agl-service-radio_git.bb b/meta-agl-profile-graphical/recipes-apis/agl-service-radio/agl-service-radio_git.bb
deleted file mode 100644 (file)
index a46ce12..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY     = "Radio Service Binding"
-DESCRIPTION = "AGL Radio Service Binding"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-radio"
-SECTION     = "apps"
-LICENSE     = "Apache-2.0 & GPLv2"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984 \
-                    file://LICENSE.GPL-2.0-only;md5=751419260aa954499f7abaabaa882bbe"
-
-PV = "1.0+git${SRCPV}"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-radio;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-S  = "${WORKDIR}/git"
-
-# build-time dependencies
-DEPENDS = "rtl-sdr glib-2.0 gstreamer1.0 libusb-compat"
-
-inherit cmake aglwgt pkgconfig
diff --git a/meta-agl-profile-graphical/recipes-apis/agl-service-taskmanager/agl-service-taskmanager.bb b/meta-agl-profile-graphical/recipes-apis/agl-service-taskmanager/agl-service-taskmanager.bb
deleted file mode 100644 (file)
index 6c5a181..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-SUMMARY     = "Task Manager Service Binding"
-DESCRIPTION = "AGL Task Manager Service Binding"
-HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/agl-service-taskmanager"
-SECTION     = "apps"
-
-LICENSE     = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/agl-service-taskmanager;protocol=https;branch=${AGL_BRANCH}"
-SRCREV  = "${AGL_APP_REVISION}"
-
-PV = "1.0+git${SRCPV}"
-S  = "${WORKDIR}/git"
-
-DEPENDS = "json-c procps"
-
-inherit cmake aglwgt pkgconfig
-
diff --git a/meta-agl-profile-graphical/recipes-graphics/hmi-debug/files/hmi-debug b/meta-agl-profile-graphical/recipes-graphics/hmi-debug/files/hmi-debug
deleted file mode 100644 (file)
index fee9573..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#You can select log level of HMI framework
-#1 ERROR
-#2 WARNING
-#3 NOTICE
-#4 INFO
-#5 DEBUG
-#If you want to output debug log about hmi-framework, please uncomment the following.
-#USE_HMI_DEBUG=5
diff --git a/meta-agl-profile-graphical/recipes-graphics/hmi-debug/hmi-debug_git.bb b/meta-agl-profile-graphical/recipes-graphics/hmi-debug/hmi-debug_git.bb
deleted file mode 100644 (file)
index 27fb60d..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-DESCRIPTION = "Configurations for HMI framework"
-
-SECTION = "HMI"
-LICENSE = "Apache-2.0"
-
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-SRC_URI = " \
-    file://hmi-debug \
-"
-
-FILES_${PN} = " \
-    ${sysconfdir}/afm/unit.env.d \
-"
-
-do_install() {
-    install -d ${D}${sysconfdir}/afm/unit.env.d
-    install -m 644 ${WORKDIR}/hmi-debug ${D}${sysconfdir}/afm/unit.env.d
-}
diff --git a/meta-agl-profile-graphical/recipes-graphics/libhomescreen/libhomescreen_git.bb b/meta-agl-profile-graphical/recipes-graphics/libhomescreen/libhomescreen_git.bb
deleted file mode 100644 (file)
index da511c8..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-SUMMARY     = "AGL Home Screen Library"
-DESCRIPTION = "libhomescreen"
-HOMEPAGE    = "http://docs.automotivelinux.org"
-LICENSE     = "Apache-2.0"
-SECTION     = "libs"
-
-BBCLASSEXTEND = " nativesdk"
-
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"
-
-DEPENDS = "af-binder json-c"
-
-inherit cmake
-
-SRC_URI = "git://gerrit.automotivelinux.org/gerrit/src/libhomescreen.git;protocol=https;branch=${AGL_BRANCH}"
-SRCREV = "0d65d54ba63508c0ef545d02e94d5702f9c8ecb3"
-S = "${WORKDIR}/git"
-
-RDEPENDS_${PN} = "agl-service-homescreen"
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0001-Added-ivi-id-agent-to-CMake.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0001-Added-ivi-id-agent-to-CMake.patch
deleted file mode 100644 (file)
index 7ea0b6e..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-From 48977cb77410247df547063d9d7bcd381fb13cde Mon Sep 17 00:00:00 2001
-From: Michael Teyfel <mteyfel@de.adit-jv.com>
-Date: Fri, 12 Oct 2018 17:12:24 +0200
-Subject: [PATCH 1/3] Added ivi-id-agent to CMake
-
-Reworked for wayland-ivi-extension 2.2.0 by Scott Murray.
-
-Signed-off-by: Michael Teyfel <mteyfel@de.adit-jv.com>
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 7d0044a..988fc89 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -40,6 +40,7 @@ add_subdirectory(ivi-layermanagement-api/test)
- add_subdirectory(ivi-layermanagement-examples)
- add_subdirectory(ivi-layermanagement-api/ilmInput)
- add_subdirectory(ivi-input-modules/ivi-input-controller)
-+add_subdirectory(ivi-id-agent-modules/ivi-id-agent)
- #=============================================================================================
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0002-add-LayerManagerControl-error-status.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0002-add-LayerManagerControl-error-status.patch
deleted file mode 100644 (file)
index 9f1ab47..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-LayerManagerControl: add error exit status
-
-Tweak to add a non-zero exit status on errors.  This is useful for
-scripting, and allows writing a simple loop to detect Weston readiness.
-
-Upstream-Status: Pending
-
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-
-diff --git a/ivi-layermanagement-examples/LayerManagerControl/src/main.cpp b/ivi-layermanagement-examples/LayerManagerControl/src/main.cpp
-index 8ee0546..210e21e 100644
---- a/ivi-layermanagement-examples/LayerManagerControl/src/main.cpp
-+++ b/ivi-layermanagement-examples/LayerManagerControl/src/main.cpp
-@@ -45,6 +45,7 @@ int main(int argc, char* argv[])
-     if (CommandSuccess != interpreter.interpretCommand(userCommand))
-     {
-         cerr << "Interpreter error: " << interpreter.getLastError() << endl;
-+        return 1;
-     }
-     return 0;
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0002-ivi-id-agent-added-ivi-id-agent.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0002-ivi-id-agent-added-ivi-id-agent.patch
deleted file mode 100644 (file)
index 0fe2abb..0000000
+++ /dev/null
@@ -1,530 +0,0 @@
-From 42fc715a430068cdb4484e2cb119418da8ac4e6f Mon Sep 17 00:00:00 2001
-From: Michael Teyfel <mteyfel@de.adit-jv.com>
-Date: Fri, 12 Oct 2018 16:46:57 +0200
-Subject: [PATCH 2/3] ivi-id-agent: added ivi-id-agent
-
-This is a reference implementation of an ivi-id-agent plugin. It
-creates surface-ids for desktop-surfaces depending on the configuration
-provided in "weston.ini". For more please refer to the reference
-implementation in this commit.
-
-The only public interface available is the "id_agent_module_init"
-function. It is responsible for initialization of structs and reading
-the configuration.
-
-In the reference "weston.ini" two types of configurations can be found:
-
-[desktop-app] is used to configure a particular application. Therefore
-the desired surface-id must be provided. Moreover "app-title" is the
-title that is provided by the desktop application (xdg-protocol).
-"app-id" behaves accordingly. Although both parameters can be set, it
-is not mandatory. Finally at least one has to be set.
-
-[desktop-app-default] enables the id-agent to generate generic
-surface-ids for unconfigured applications, e.g. for development. This
-tag is optional. To generate the id an interval starting from
-"default-surface-id" to "default-surface-id-max" is used. The id is
-incremented until the interval is exceeded.
-
-In the function "get_id" a surface-id is assigned by means of the
-configuration. It can be adjusted, if another behavior is desired.
-In this plugin the parameters, that are described above, are evaluated.
-
-To use these patches please also apply the dedicated patches for
-weston: https://github.com/mtey/weston/tree/xdg_support_ivi_id_agent
-Since libweston-desktop is used to introduce desktop-surface support,
-xdg-protocol is supported.
-
-Reworked for wayland-ivi-extension 2.2.0 by Scott Murray.
-
-Signed-off-by: Michael Teyfel <mteyfel@de.adit-jv.com>
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-
-diff --git a/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt b/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt
-new file mode 100644
-index 0000000..7354a7e
---- /dev/null
-+++ b/ivi-id-agent-modules/ivi-id-agent/CMakeLists.txt
-@@ -0,0 +1,69 @@
-+###############################################################################
-+#
-+# Copyright (C) 2017 Advanced Driver Information Technology Joint Venture GmbH
-+#
-+#
-+# Licensed under the Apache License, Version 2.0 (the "License");
-+# you may not use this file except in compliance with the License.
-+# You may obtain a copy of the License at
-+#
-+#      http://www.apache.org/licenses/LICENSE-2.0
-+#
-+# Unless required by applicable law or agreed to in writing, software
-+# distributed under the License is distributed on an "AS IS" BASIS,
-+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+# See the License for the specific language governing permissions and
-+# limitations under the License.
-+#
-+###############################################################################
-+
-+cmake_minimum_required (VERSION 2.6)
-+
-+project(ivi-id-agent)
-+
-+find_package(PkgConfig REQUIRED)
-+pkg_check_modules(WAYLAND_SERVER wayland-server REQUIRED)
-+pkg_check_modules(WESTON weston>=5.0.0 REQUIRED)
-+pkg_check_modules(PIXMAN pixman-1 REQUIRED)
-+pkg_check_modules(LIBWESTON_DESKTOP libweston-desktop-8 REQUIRED)
-+
-+find_package(Threads REQUIRED)
-+
-+include_directories(
-+    src
-+    ${WAYLAND_SERVER_INCLUDE_DIRS}
-+    ${WESTON_INCLUDE_DIRS}
-+    ${PIXMAN_INCLUDE_DIRS}
-+)
-+
-+link_directories(
-+    ${WAYLAND_SERVER_LIBRARY_DIRS}
-+    ${PIXMAN_LIBRARY_DIRS}
-+)
-+
-+
-+add_library(${PROJECT_NAME} MODULE
-+    src/ivi-id-agent.c
-+)
-+
-+set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "")
-+
-+add_dependencies(${PROJECT_NAME}
-+    ${WAYLAND_SERVER_LIBRARIES}
-+    ${PIXMAN_LIBRARIES}
-+)
-+
-+set(LIBS
-+    ${LIBS}
-+    ${WAYLAND_SERVER_LIBRARIES}
-+    ${LIBWESTON_DESKTOP_LIBRARIES}
-+)
-+
-+set(CMAKE_C_LDFLAGS "-module -avoid-version")
-+
-+target_link_libraries(${PROJECT_NAME} ${LIBS})
-+
-+install (
-+    TARGETS             ${PROJECT_NAME}
-+    LIBRARY DESTINATION lib${LIB_SUFFIX}/weston
-+)
-diff --git a/ivi-id-agent-modules/ivi-id-agent/src/ivi-id-agent.c b/ivi-id-agent-modules/ivi-id-agent/src/ivi-id-agent.c
-new file mode 100644
-index 0000000..9bc115d
---- /dev/null
-+++ b/ivi-id-agent-modules/ivi-id-agent/src/ivi-id-agent.c
-@@ -0,0 +1,381 @@
-+/*
-+ * Copyright (C) 2017 Advanced Driver Information Technology Joint Venture GmbH
-+ *
-+ * Permission to use, copy, modify, distribute, and sell this software and
-+ * its documentation for any purpose is hereby granted without fee, provided
-+ * that the above copyright notice appear in all copies and that both that
-+ * copyright notice and this permission notice appear in supporting
-+ * documentation, and that the name of the copyright holders not be used in
-+ * advertising or publicity pertaining to distribution of the software
-+ * without specific, written prior permission.  The copyright holders make
-+ * no representations about the suitability of this software for any
-+ * purpose.  It is provided "as is" without express or implied warranty.
-+ *
-+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
-+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
-+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
-+ * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
-+ * CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
-+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-+ */
-+
-+#include <stdlib.h>
-+#include <stdio.h>
-+#include <string.h>
-+#include <limits.h>
-+
-+#include <weston.h>
-+#include <libweston-desktop/libweston-desktop.h>
-+#include "libweston/config-parser.h"
-+#include <weston/ivi-layout-export.h>
-+
-+#ifndef INVALID_ID
-+#define INVALID_ID 0xFFFFFFFF
-+#endif
-+
-+struct db_elem
-+{
-+    struct wl_list link;
-+    uint32_t surface_id;
-+    char *cfg_app_id;
-+    char *cfg_title;
-+    struct ivi_layout_surface *layout_surface;
-+};
-+
-+struct ivi_id_agent
-+{
-+    uint32_t default_behavior_set;
-+    uint32_t default_surface_id;
-+    uint32_t default_surface_id_max;
-+    struct wl_list app_list;
-+    struct weston_compositor *compositor;
-+    const struct ivi_layout_interface *interface;
-+
-+    struct wl_listener desktop_surface_configured;
-+    struct wl_listener destroy_listener;
-+    struct wl_listener surface_removed;
-+};
-+
-+static int32_t
-+check_config_parameter(char *cfg_val, char *val)
-+{
-+    if (cfg_val == NULL)
-+        return IVI_SUCCEEDED;
-+    else if (val == NULL || strcmp(cfg_val, val) != 0)
-+        return IVI_FAILED;
-+
-+    return IVI_SUCCEEDED;
-+}
-+
-+static int32_t
-+get_id_from_config(struct ivi_id_agent *ida, struct ivi_layout_surface
-+        *layout_surface) {
-+    struct db_elem *db_elem;
-+    char *temp_app_id = NULL;
-+    char *temp_title = NULL;
-+    int ret = IVI_FAILED;
-+
-+    struct weston_surface *weston_surface =
-+            ida->interface->surface_get_weston_surface(layout_surface);
-+
-+    /* Get app id and title */
-+    struct weston_desktop_surface *wds = weston_surface_get_desktop_surface(
-+            weston_surface);
-+
-+    if (weston_desktop_surface_get_app_id(wds) != NULL)
-+        temp_app_id = strdup(weston_desktop_surface_get_app_id(wds));
-+
-+    if (weston_desktop_surface_get_title(wds) != NULL)
-+        temp_title = strdup(weston_desktop_surface_get_title(wds));
-+
-+    /*
-+     * Check for every config parameter to be fulfilled. This part must be
-+     * extended, if additional attributes are desired to be checked.
-+     */
-+    wl_list_for_each(db_elem, &ida->app_list, link)
-+    {
-+        if (check_config_parameter(db_elem->cfg_app_id, temp_app_id) == 0) {
-+            if (check_config_parameter(db_elem->cfg_title, temp_title) == 0) {
-+                /* Found configuration for application. */
-+                int res = ida->interface->surface_set_id(layout_surface,
-+                        db_elem->surface_id);
-+                if (res)
-+                    continue;
-+
-+                db_elem->layout_surface = layout_surface;
-+                ret = IVI_SUCCEEDED;
-+
-+                break;
-+            }
-+        }
-+    }
-+
-+    free(temp_app_id);
-+    free(temp_title);
-+
-+    return ret;
-+}
-+
-+/*
-+ * This function generates the id of a surface in regard to the desired
-+ * parameters. For implementation of different behavior in id generation please
-+ * adjust this function.
-+ * In this implementation the app_id and/or title of the application is used for
-+ * identification. It is also possible to use the pid, uid or gid for example.
-+ */
-+static int32_t
-+get_id(struct ivi_id_agent *ida, struct ivi_layout_surface *layout_surface)
-+{
-+    if (get_id_from_config(ida, layout_surface) == IVI_SUCCEEDED)
-+        return IVI_SUCCEEDED;
-+
-+    /* No default layer available */
-+    if (ida->default_behavior_set == 0) {
-+        weston_log("ivi-id-agent: Could not find configuration for application\n");
-+        goto ivi_failed;
-+
-+    /* Default behavior for unknown applications */
-+    } else if (ida->default_surface_id < ida->default_surface_id_max) {
-+        weston_log("ivi-id-agent: No configuration for application adding to "
-+                "default layer\n");
-+
-+        /*
-+         * Check if ivi-shell application already created an application with
-+         * desired surface_id
-+         */
-+        struct ivi_layout_surface *temp_layout_surf =
-+                ida->interface->get_surface_from_id(
-+                        ida->default_surface_id);
-+        if ((temp_layout_surf != NULL) && (temp_layout_surf != layout_surface)) {
-+            weston_log("ivi-id-agent: surface_id already used by an ivi-shell "
-+                                "application\n");
-+            goto ivi_failed;
-+        }
-+
-+        ida->interface->surface_set_id(layout_surface,
-+                                              ida->default_surface_id);
-+        ida->default_surface_id++;
-+
-+    } else {
-+        weston_log("ivi-id-agent: Interval for default surface_id generation "
-+                "exceeded\n");
-+        goto ivi_failed;
-+    }
-+
-+    return IVI_SUCCEEDED;
-+
-+ivi_failed:
-+    return IVI_FAILED;
-+}
-+
-+static void
-+desktop_surface_event_configure(struct wl_listener *listener,
-+        void *data)
-+{
-+    struct ivi_id_agent *ida = wl_container_of(listener, ida,
-+            desktop_surface_configured);
-+
-+    struct ivi_layout_surface *layout_surface =
-+            (struct ivi_layout_surface *) data;
-+
-+    if (get_id(ida, layout_surface) == IVI_FAILED)
-+        weston_log("ivi-id-agent: Could not create surface_id for application\n");
-+}
-+
-+static void
-+surface_event_remove(struct wl_listener *listener, void *data) {
-+    struct ivi_id_agent *ida = wl_container_of(listener, ida,
-+                surface_removed);
-+    struct ivi_layout_surface *layout_surface =
-+                (struct ivi_layout_surface *) data;
-+    struct db_elem *db_elem = NULL;
-+
-+    wl_list_for_each(db_elem, &ida->app_list, link)
-+    {
-+        if(db_elem->layout_surface == layout_surface) {
-+            db_elem->layout_surface = NULL;
-+            break;
-+        }
-+    }
-+}
-+
-+static int32_t deinit(struct ivi_id_agent *ida);
-+
-+static void
-+id_agent_module_deinit(struct wl_listener *listener, void *data) {
-+    (void)data;
-+    struct ivi_id_agent *ida = wl_container_of(listener, ida, destroy_listener);
-+
-+    deinit(ida);
-+}
-+
-+static int32_t
-+check_config(struct db_elem *curr_db_elem, struct ivi_id_agent *ida)
-+{
-+    struct db_elem *db_elem;
-+
-+    if (ida->default_surface_id <= curr_db_elem->surface_id
-+            && curr_db_elem->surface_id <= ida->default_surface_id_max) {
-+        weston_log("ivi-id-agent: surface_id: %d in default id interval "
-+                "[%d, %d] (CONFIG ERROR)\n", curr_db_elem->surface_id,
-+                ida->default_surface_id, ida->default_surface_id_max);
-+        goto ivi_failed;
-+    }
-+
-+    wl_list_for_each(db_elem, &ida->app_list, link)
-+    {
-+        if(curr_db_elem == db_elem)
-+            continue;
-+
-+        if (db_elem->surface_id == curr_db_elem->surface_id) {
-+            weston_log("ivi-id-agent: Duplicate surface_id: %d (CONFIG ERROR)\n",
-+                    curr_db_elem->surface_id);
-+            goto ivi_failed;
-+        }
-+    }
-+
-+    return IVI_SUCCEEDED;
-+
-+ivi_failed:
-+    return IVI_FAILED;
-+}
-+
-+static int32_t
-+read_config(struct ivi_id_agent *ida)
-+{
-+    struct weston_config *config = NULL;
-+    struct weston_config_section *section = NULL;
-+    const char *name = NULL;
-+
-+    config = wet_get_config(ida->compositor);
-+    if (!config)
-+        goto ivi_failed;
-+
-+    section = weston_config_get_section(config, "desktop-app-default", NULL,
-+            NULL);
-+
-+    if (section) {
-+        weston_log("ivi-id-agent: Default behavior for unknown applications is "
-+                "set\n");
-+        ida->default_behavior_set = 1;
-+
-+        weston_config_section_get_uint(section, "default-surface-id",
-+                &ida->default_surface_id, INVALID_ID);
-+        weston_config_section_get_uint(section, "default-surface-id-max",
-+                &ida->default_surface_id_max, INVALID_ID);
-+
-+        if (ida->default_surface_id == INVALID_ID ||
-+                ida->default_surface_id_max == INVALID_ID) {
-+            weston_log("ivi-id-agent: Missing configuration for default "
-+                    "behavior\n");
-+            ida->default_behavior_set = 0;
-+        }
-+    } else {
-+        ida->default_behavior_set = 0;
-+    }
-+
-+    section = NULL;
-+    while (weston_config_next_section(config, &section, &name)) {
-+        struct db_elem *db_elem = NULL;
-+
-+        if (strcmp(name, "desktop-app") != 0)
-+            continue;
-+
-+        db_elem = calloc(1, sizeof *db_elem);
-+        if (db_elem == NULL) {
-+            weston_log("ivi-id-agent: No memory to allocate\n");
-+            goto ivi_failed;
-+        }
-+
-+        wl_list_insert(&ida->app_list, &db_elem->link);
-+
-+        weston_config_section_get_uint(section, "surface-id",
-+                         &db_elem->surface_id, INVALID_ID);
-+
-+        if (db_elem->surface_id == INVALID_ID) {
-+            weston_log("ivi-id-agent: surface-id is not set in configuration\n");
-+            goto ivi_failed;
-+        }
-+
-+        weston_config_section_get_string(section, "app-id",
-+                         &db_elem->cfg_app_id, NULL);
-+        weston_config_section_get_string(section, "app-title",
-+                         &db_elem->cfg_title, NULL);
-+
-+        if (db_elem->cfg_app_id == NULL && db_elem->cfg_title == NULL) {
-+            weston_log("ivi-id-agent: Every parameter is NULL in app "
-+                    "configuration\n");
-+            goto ivi_failed;
-+        }
-+
-+        if (check_config(db_elem, ida) == IVI_FAILED) {
-+            weston_log("ivi-id-agent: No valid config found, deinit...\n");
-+            goto ivi_failed;
-+        }
-+    }
-+
-+    if(ida->default_behavior_set == 0 && wl_list_empty(&ida->app_list)) {
-+        weston_log("ivi-id-agent: No valid config found, deinit...\n");
-+        goto ivi_failed;
-+    }
-+
-+    return IVI_SUCCEEDED;
-+
-+ivi_failed:
-+    return IVI_FAILED;
-+}
-+
-+WL_EXPORT int32_t
-+id_agent_module_init(struct weston_compositor *compositor,
-+        const struct ivi_layout_interface *interface)
-+{
-+    struct ivi_id_agent *ida = NULL;
-+
-+    ida = calloc(1, sizeof *ida);
-+    if (ida == NULL) {
-+        weston_log("failed to allocate ivi_id_agent\n");
-+        goto ivi_failed;
-+    }
-+
-+    ida->compositor = compositor;
-+    ida->interface = interface;
-+    ida->desktop_surface_configured.notify = desktop_surface_event_configure;
-+    ida->destroy_listener.notify = id_agent_module_deinit;
-+    ida->surface_removed.notify = surface_event_remove;
-+
-+    wl_signal_add(&compositor->destroy_signal, &ida->destroy_listener);
-+    ida->interface->add_listener_configure_desktop_surface(
-+            &ida->desktop_surface_configured);
-+    interface->add_listener_remove_surface(&ida->surface_removed);
-+
-+    wl_list_init(&ida->app_list);
-+    if(read_config(ida) != 0) {
-+        weston_log("ivi-id-agent: Read config failed\n");
-+        deinit(ida);
-+        goto ivi_failed;
-+    }
-+
-+    return IVI_SUCCEEDED;
-+
-+ivi_failed:
-+    return IVI_FAILED;
-+}
-+
-+static int32_t
-+deinit(struct ivi_id_agent *ida)
-+{
-+    struct db_elem *db_elem;
-+    wl_list_for_each(db_elem, &ida->app_list, link) {
-+        free(db_elem->cfg_app_id);
-+        free(db_elem->cfg_title);
-+        free(db_elem);
-+    }
-+
-+    wl_list_remove(&ida->desktop_surface_configured.link);
-+    wl_list_remove(&ida->destroy_listener.link);
-+    wl_list_remove(&ida->surface_removed.link);
-+    free(ida);
-+
-+    return IVI_SUCCEEDED;
-+}
-diff --git a/ivi-id-agent-modules/ivi-id-agent/weston.ini.in b/ivi-id-agent-modules/ivi-id-agent/weston.ini.in
-new file mode 100644
-index 0000000..48a196c
---- /dev/null
-+++ b/ivi-id-agent-modules/ivi-id-agent/weston.ini.in
-@@ -0,0 +1,20 @@
-+[core]
-+shell=ivi-shell.so
-+require-input=false
-+
-+[ivi-shell]
-+ivi-module=ivi-controller.so
-+ivi-input-module=ivi-input-controller.so
-+ivi-id-agent-module=ivi-id-agent.so
-+
-+[desktop-app]
-+surface-id=111
-+app-title=Flower
-+
-+[desktop-app]
-+surface-id=251
-+app-title=Flower
-+
-+[desktop-app-default]
-+default-surface-id=2000000
-+default-surface-id-max=2001000
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0003-ivi-controller-load-id-agent-module.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0003-ivi-controller-load-id-agent-module.patch
deleted file mode 100644 (file)
index 8985879..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-From 5fed5c51ca8c1574804362bfdea4930c16457d34 Mon Sep 17 00:00:00 2001
-From: Michael Teyfel <mteyfel@de.adit-jv.com>
-Date: Fri, 12 Oct 2018 16:57:24 +0200
-Subject: [PATCH 3/3] ivi-controller: load id-agent module
-
-Reworked for wayland-ivi-extension 2.2.0 by Scott Murray.
-
-Signed-off-by: Michael Teyfel <mteyfel@de.adit-jv.com>
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-
-diff --git a/weston-ivi-shell/src/ivi-controller.c b/weston-ivi-shell/src/ivi-controller.c
-index 8faec2a..8fa51f4 100644
---- a/weston-ivi-shell/src/ivi-controller.c
-+++ b/weston-ivi-shell/src/ivi-controller.c
-@@ -2154,6 +2154,41 @@ load_input_module(struct ivishell *shell)
-     return 0;
- }
-+static int load_id_agent_module(struct ivishell *shell)
-+{
-+    struct weston_config *config = wet_get_config(shell->compositor);
-+    struct weston_config_section *section;
-+    char *id_agent_module = NULL;
-+
-+    int (*id_agent_module_init)(struct weston_compositor *compositor,
-+            const struct ivi_layout_interface *interface);
-+
-+    section = weston_config_get_section(config, "ivi-shell", NULL, NULL);
-+
-+    if (weston_config_section_get_string(section, "ivi-id-agent-module",
-+                                         &id_agent_module, NULL) < 0) {
-+        /* input events are handled by weston's default grabs */
-+        weston_log("ivi-controller: No ivi-id-agent-module set\n");
-+        return 0;
-+    }
-+
-+    id_agent_module_init = wet_load_module_entrypoint(id_agent_module, "id_agent_module_init");
-+    if (!id_agent_module_init) {
-+        free(id_agent_module);
-+        return -1;
-+    }
-+
-+    if (id_agent_module_init(shell->compositor, shell->interface) != 0) {
-+        weston_log("ivi-controller: Initialization of id-agent module failed\n");
-+      free(id_agent_module);
-+        return -1;
-+    }
-+
-+    free(id_agent_module);
-+
-+    return 0;
-+}
-+
- static void
- launch_client_process(void *data)
- {
-@@ -2221,6 +2256,10 @@ wet_module_init(struct weston_compositor *compositor,
-     shell->destroy_listener.notify = ivi_shell_destroy;
-     wl_signal_add(&compositor->destroy_signal, &shell->destroy_listener);
-+    if (load_id_agent_module(shell) < 0) {
-+        weston_log("ivi-controller: id-agent module not loaded\n");
-+    }
-+
-     if (shell->bkgnd_surface_id && shell->ivi_client_name) {
-         loop = wl_display_get_event_loop(compositor->wl_display);
-         wl_event_loop_add_idle(loop, launch_client_process, shell);
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0004-ivi-ilmcontrol-added-focus-notification.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0004-ivi-ilmcontrol-added-focus-notification.patch
deleted file mode 100644 (file)
index 05d1cc2..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-diff --git a/ivi-layermanagement-api/ilmCommon/include/ilm_types.h b/ivi-layermanagement-api/ilmCommon/include/ilm_types.h
-index a88f2b0..12a2017 100644
---- a/ivi-layermanagement-api/ilmCommon/include/ilm_types.h
-+++ b/ivi-layermanagement-api/ilmCommon/include/ilm_types.h
-@@ -245,6 +245,7 @@ typedef enum
-     ILM_NOTIFICATION_CONTENT_AVAILABLE = ILM_BIT(6),
-     ILM_NOTIFICATION_CONTENT_REMOVED = ILM_BIT(7),
-     ILM_NOTIFICATION_CONFIGURED = ILM_BIT(8),
-+    ILM_NOTIFICATION_FOCUS = ILM_BIT(9),
-     ILM_NOTIFICATION_ALL = 0xffff
- } t_ilm_notification_mask;
-diff --git a/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c b/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c
-index a912e50..5166839 100644
---- a/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c
-+++ b/ivi-layermanagement-api/ilmControl/src/ilm_control_wayland_platform.c
-@@ -819,6 +819,12 @@ input_listener_input_focus(void *data,
-             surf_ctx->prop.focus |= device;
-         else
-             surf_ctx->prop.focus &= ~device;
-+
-+        if (surf_ctx->notification != NULL) {
-+            surf_ctx->notification(surf_ctx->id_surface,
-+                                    &surf_ctx->prop,
-+                                    ILM_NOTIFICATION_FOCUS);
-+        }
-     }
- }
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0005-disable-EGLWLMockNavigation-example-build.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0005-disable-EGLWLMockNavigation-example-build.patch
deleted file mode 100644 (file)
index 21028d5..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-Disable EGLWLMockNavigation example build
-
-The EGLWLMockNavigation example code has build issues on TI platforms.
-To avoid needing to patch it just for those platforms, just disable
-building it since there are no known users inside AGL.
-
-Upstream-Status: Inappropriate [disable feature]
-
-Signed-off-by: Scott Murray <scott.murray@konsulko.com>
-
-diff --git a/ivi-layermanagement-examples/CMakeLists.txt b/ivi-layermanagement-examples/CMakeLists.txt
-index 1eab8e9..48bdffd 100644
---- a/ivi-layermanagement-examples/CMakeLists.txt
-+++ b/ivi-layermanagement-examples/CMakeLists.txt
-@@ -24,7 +24,6 @@ project (ivi-layermanagement-examples)
- # cmake configuration
- #===========================================================================================================
- add_subdirectory(LayerManagerControl)
--add_subdirectory(EGLWLMockNavigation)
- add_subdirectory(EGLWLInputEventExample)
- add_subdirectory(layer-add-surfaces)
- add_subdirectory(multi-touch-viewer)
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0006-fix-plugin-registry-include.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/0006-fix-plugin-registry-include.patch
deleted file mode 100644 (file)
index dddbfd3..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c b/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c
-index a0bfc48..257a1dc 100644
---- a/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c
-+++ b/ivi-input-modules/ivi-input-controller/src/ivi-input-controller.c
-@@ -31,7 +31,7 @@
- #include <fcntl.h>
- #include <unistd.h>
--#include "plugin-registry.h"
-+#include <libweston/plugin-registry.h>
- #include "ilm_types.h"
- #include "ivi-input-server-protocol.h"
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/wandboard_fix_build.patch b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension/wandboard_fix_build.patch
deleted file mode 100644 (file)
index 86b448b..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 3610fa9..8b4614d 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -34,7 +34,7 @@ add_subdirectory(ivi-layermanagement-api/ilmCommon)
- add_subdirectory(ivi-layermanagement-api/ilmClient)
- add_subdirectory(ivi-layermanagement-api/ilmControl)
- add_subdirectory(ivi-layermanagement-api/test)
--add_subdirectory(ivi-layermanagement-examples)
-+#add_subdirectory(ivi-layermanagement-examples)
- if(WITH_ILM_INPUT)
-     add_subdirectory(ivi-input-api/ilmInput)
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension_git.bb b/meta-agl-profile-graphical/recipes-graphics/wayland/wayland-ivi-extension_git.bb
deleted file mode 100644 (file)
index 68fc694..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "Wayland IVI Extension"
-DESCRIPTION = "GENIVI Layer Management API based on Wayland IVI Extension"
-HOMEPAGE = "http://projects.genivi.org/wayland-ivi-extension"
-BUGTRACKER = "http://bugs.genivi.org/enter_bug.cgi?product=Wayland%20IVI%20Extension"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=1f1a56bb2dadf5f2be8eb342acf4ed79"
-
-SRC_URI = "git://github.com/GENIVI/${BPN}.git;protocol=http \
-           file://0001-Added-ivi-id-agent-to-CMake.patch \
-           file://0002-ivi-id-agent-added-ivi-id-agent.patch \
-           file://0003-ivi-controller-load-id-agent-module.patch \
-           file://0002-add-LayerManagerControl-error-status.patch \
-           file://0004-ivi-ilmcontrol-added-focus-notification.patch \
-           file://0005-disable-EGLWLMockNavigation-example-build.patch \
-           file://0006-fix-plugin-registry-include.patch \
-"
-SRC_URI_append_wandboard = " file://wandboard_fix_build.patch"
-SRCREV = "736fb654ac81230cf4f9e51a5772d3a02d7639bf"
-
-PV = "2.2.0+git${SRCPV}"
-S = "${WORKDIR}/git"
-
-DEPENDS = "weston virtual/libgles2 pixman wayland-native"
-
-FILESEXTRAPATHS_prepend := ":${THISDIR}/wayland-ivi-extension:"
-
-inherit cmake
-
-EXTRA_OECMAKE := "-DWITH_ILM_INPUT=1"
-
-FILES_${PN} += "${libdir}/weston/*"
-FILES_${PN} += "${datadir}/wayland-protocols/stable/ivi-application/*"
-
-FILES_${PN}-dbg += "${libdir}/weston/.debug/*"
-
-EXTRA_OECMAKE += "-DLIB_SUFFIX=${@d.getVar('baselib', True).replace('lib', '')}"
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init.bbappend
deleted file mode 100644 (file)
index b3fecec..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
-inherit agl-graphical
-
-AGL_DEFAULT_WESTONSTART ??= "/usr/bin/agl-compositor --config ${sysconfdir}/xdg/weston/weston.ini"
-
-WESTONSTART ??= "${AGL_DEFAULT_WESTONSTART} ${WESTONARGS}"
-WESTONSTART_append = " ${@bb.utils.contains("IMAGE_FEATURES", "debug-tweaks", " --log=${DISPLAY_XDG_RUNTIME_DIR}/compositor.log", "",d)}"
-
-# Systemd name of DRM device to have weston/agl-compositor startup depend
-# upon, if required.  Currently only x86-64 seems to need a dependency to
-# avoid failures due to racing with i915 driver init on e.g. UpSquared.
-# It seems safer for now to only apply it there rather than doing a blanket
-# default everywhere that might then need to be over-ridden for vendor BSPs.
-WESTON_DRM_DEVICE ?= ""
-
-WIFILES = " \
-    file://weston.conf.in \
-    file://weston-dep.conf.in \
-    file://tmpfiles.conf.in \
-    file://zz-dri.rules.in \
-    file://zz-input.rules.in \
-    file://zz-tty.rules.in \
-"
-
-WIFILES_append_imx = " \
-    file://zz-dri-imx.rules.in \
-"
-
-SRC_URI_append = " ${WIFILES}"
-
-do_install_append() {
-    # Remove upstream weston.ini to avoid conflict with weston-ini-conf package
-    rm -f ${D}${sysconfdir}/xdg/weston/weston.ini
-
-    # Remove upstream weston udev rules just to be safe
-    rm -f ${D}${sysconfdir}/udev/rules.d/71-weston-drm.rules
-
-    # Process ".in" files
-    files=$(echo ${WIFILES} | sed s,file://,,g)
-    for f in ${files}; do
-        g=${f%.in}
-        if [ "${f}" != "${g}" ]; then
-            sed -e "s,@WESTONUSER@,${WESTONUSER},g" \
-                -e "s,@WESTONGROUP@,${WESTONGROUP},g" \
-                -e "s,@XDG_RUNTIME_DIR@,${DISPLAY_XDG_RUNTIME_DIR},g" \
-                -e "s,@WESTONSTART@,${WESTONSTART},g" \
-                -e "s,@WESTON_DRM_DEVICE@,${WESTON_DRM_DEVICE},g" \
-                    ${WORKDIR}/${f} > ${WORKDIR}/${g}
-        fi
-    done
-
-    # Install weston drop-in
-    install -d ${D}${systemd_system_unitdir}/weston@.service.d
-    install -m644 ${WORKDIR}/weston.conf ${D}/${systemd_system_unitdir}/weston@.service.d/weston-init.conf
-
-    # Install weston DRM device dependency drop-in if required
-    if [ -n "${WESTON_DRM_DEVICE}" ]; then
-        install -m 0644 ${WORKDIR}/weston-dep.conf ${D}/${systemd_system_unitdir}/weston@.service.d/
-    fi
-
-    # Install tmpfiles drop-in
-    install -d ${D}${libdir}/tmpfiles.d
-    install -m644 ${WORKDIR}/tmpfiles.conf ${D}${libdir}/tmpfiles.d/weston-init.conf
-
-    # Install udev rules
-    install -d ${D}${sysconfdir}/udev/rules.d
-    for f in ${files}; do
-        g=${f%.in}
-        h=${g%.rules}
-        if [ "${g}" != "${h}" ]; then
-            install -m644 ${WORKDIR}/${g} ${D}${sysconfdir}/udev/rules.d
-        fi
-    done
-}
-
-FILES_${PN} += " \
-    ${libdir}/tmpfiles.d/ \
-    ${systemd_system_unitdir}/weston@.service.d/ \
-"
-
-SYSTEMD_AUTO_ENABLE = "enable"
-
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/tmpfiles.conf.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/tmpfiles.conf.in
deleted file mode 100644 (file)
index c4b302f..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-# This file is distributed to create weston XDG_RUNTIME_DIR (/run/deamon/@WESTONUSER@)
-#
-# See tmpfiles.d(5) for details
-
-d /run/platform/ 0775 root root -
-d /run/platform/@WESTONUSER@ 0770 @WESTONUSER@ @WESTONGROUP@ -
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston-dep.conf.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston-dep.conf.in
deleted file mode 100644 (file)
index 2b81020..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-[Unit]
-Requires=@WESTON_DRM_DEVICE@
-After=@WESTON_DRM_DEVICE@
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.conf.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/weston.conf.in
deleted file mode 100644 (file)
index 9c3df05..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[Service]
-Type=notify
-Environment="XDG_RUNTIME_DIR=@XDG_RUNTIME_DIR@"
-# Note that clearing PAMName (thus not having PAMName=login) disables
-# logind support for the session, which allows setting XDG_RUNTIME_DIR
-# to something other than /run/user/% (as is done above).
-# Without systemd-logind support, weston needs to be patched to allow
-# its direct launcher to work for non-root users in this scenario.
-PAMName=
-ExecStart=
-ExecStart=@WESTONSTART@
-SmackProcessLabel=System::Weston
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri-imx.rules.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri-imx.rules.in
deleted file mode 100644 (file)
index 585db6b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-SUBSYSTEM=="gpu_class", MODE="0660", GROUP="@WESTONGROUP@", SECLABEL{smack}="*"
-
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri.rules.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-dri.rules.in
deleted file mode 100644 (file)
index 51c68c3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-SUBSYSTEM=="drm", MODE="0660", GROUP="@WESTONGROUP@", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston@@WESTONUSER@.service"
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-input.rules.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-input.rules.in
deleted file mode 100644 (file)
index fb3e677..0000000
+++ /dev/null
@@ -1 +0,0 @@
-SUBSYSTEM=="input", MODE="0660", GROUP="input", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston@@WESTONUSER@.service"
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-tty.rules.in b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-init/zz-tty.rules.in
deleted file mode 100644 (file)
index e5ce4b5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-SUBSYSTEM=="tty", KERNEL=="tty7", OWNER="@WESTONUSER@", SECLABEL{smack}="*", TAG+="systemd", ENV{SYSTEMD_WANTS}="weston@@WESTONUSER@.service"
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ready/weston-ready b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ready/weston-ready
deleted file mode 100644 (file)
index c7cba30..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2018, Konsulko Group
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#    http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-#
-# Simple script to check if Weston+IVI shell is ready by calling
-# LayerManagerControl, optionally waiting for a specified timeout.
-#
-
-usage="Usage: weston-ready [-t timeout]" 
-timeout=0
-
-function info() { echo "$@" >&2; }
-
-if [ $# -eq 2 ]; then
-       if [ $1 = "-t" ]; then
-               timeout=$(($2 * 10))
-       else
-               echo $usage
-               exit 1
-       fi
-fi
-
-info "using timeout $timeout"
-
-time=0
-rc=1
-while true; do
-       if [ $time -gt $timeout ]; then
-               info "Timeout reached"
-               break
-       elif LayerManagerControl get screens >/dev/null 2>&1; then
-               info "Weston is now ready"
-               rc=0
-               break
-       fi
-       info "waiting..."
-       if [ $timeout -gt 0 ]; then
-               usleep 500000
-       fi
-       time=$(($time + 5))
-done
-exit $rc
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ready/weston-ready.service b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ready/weston-ready.service
deleted file mode 100644 (file)
index 82490fe..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=Wait for Weston readiness
-Requires=weston@display.service
-After=weston@display.service
-
-[Service]
-SupplementaryGroups=display
-Environment="XDG_RUNTIME_DIR=/run/platform/display"
-ExecStart=/usr/bin/weston-ready -t 10
-Type=oneshot
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ready_1.0.bb b/meta-agl-profile-graphical/recipes-graphics/wayland/weston-ready_1.0.bb
deleted file mode 100644 (file)
index a3d0bb2..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-SUMMARY = "Weston readiness checker" 
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" 
-
-inherit systemd
-SRC_URI = "file://weston-ready \
-           file://weston-ready.service \
-"
-do_install() { 
-    install -D -m 0755 ${WORKDIR}/weston-ready ${D}${bindir}/weston-ready
-
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-        install -D -m 0644 ${WORKDIR}/weston-ready.service ${D}${systemd_system_unitdir}/weston-ready.service
-    fi
-} 
-
-SYSTEMD_SERVICE_${PN} = "weston-ready.service"
-
-RDEPENDS_${PN} += "weston bash"
diff --git a/meta-agl-profile-graphical/recipes-graphics/wayland/weston_8.0.%.bbappend b/meta-agl-profile-graphical/recipes-graphics/wayland/weston_8.0.%.bbappend
deleted file mode 100644 (file)
index d681aa1..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-FILESEXTRAPATHS_append := ":${THISDIR}/${PN}"
-
-SRC_URI_append = "\
-    file://0001-Allow-regular-users-to-launch-Weston_7.0.0.patch \
-    file://0001-libweston-Expose-weston_output_damage-in-libweston.patch \
-    file://0001-libweston-Migrate-weston_seat_init-release-to-public.patch \
-    file://0005-correctly-tear-down-drm-backend.patch \
-    file://smack-weston \
-    "
-
-EXTRA_OEMESON_append = " -Denable-user-start=true"
-
-# Workaround for incorrect upstream definition
-PACKAGECONFIG[remoting] = "-Dremoting=true,-Dremoting=false,gstreamer1.0 gstreamer1.0-plugins-base"
-PACKAGECONFIG_append = "${@bb.utils.contains('DISTRO_FEATURES', 'weston-remoting', ' remoting', '', d)}"
-
-do_install_append() {
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'smack', 'true', 'false', d)}; then
-        # Install SMACK rules
-        install -D -m 0644 ${WORKDIR}/smack-weston ${D}${sysconfdir}/smack/accesses.d/weston
-    fi
-}
-
-FILES_${PN} += "\
-    ${sysconfdir}/smack/accesses.d/* \
-"
diff --git a/meta-agl-profile-graphical/recipes-multimedia/gstreamer1.0-plugins-bad/gstreamer1.0-plugins-bad/0001-gst-wayland-Install-wayland-header-from-gstwayland-l.patch b/meta-agl-profile-graphical/recipes-multimedia/gstreamer1.0-plugins-bad/gstreamer1.0-plugins-bad/0001-gst-wayland-Install-wayland-header-from-gstwayland-l.patch
deleted file mode 100644 (file)
index 443e7db..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-From 03e502084633838badfcc2b91a1aca1651c18544 Mon Sep 17 00:00:00 2001
-From: Marius Vlad <marius.vlad@collabora.com>
-Date: Wed, 24 Jun 2020 19:44:35 +0300
-Subject: [PATCH] gst/wayland/: Install wayland header from gstwayland library
-
-Necessary for cluster-receiver to pass out the wl_surface.
-
-Bug-AGL: SPEC-3382
-
-Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
----
- gst-libs/gst/wayland/meson.build | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/gst-libs/gst/wayland/meson.build b/gst-libs/gst/wayland/meson.build
-index b1ede41f1..8957381d2 100644
---- a/gst-libs/gst/wayland/meson.build
-+++ b/gst-libs/gst/wayland/meson.build
-@@ -21,4 +21,6 @@ if use_wayland
-   gstwayland_dep = declare_dependency(link_with : gstwayland,
-     include_directories : [libsinc],
-     dependencies : [gst_dep, gstvideo_dep])
-+
-+  install_headers('wayland.h', subdir: 'gst/wayland')
- endif
--- 
-2.26.2
-
diff --git a/meta-agl-profile-graphical/recipes-multimedia/gstreamer1.0-plugins-bad/gstreamer1.0-plugins-bad_1.16.%.bbappend b/meta-agl-profile-graphical/recipes-multimedia/gstreamer1.0-plugins-bad/gstreamer1.0-plugins-bad_1.16.%.bbappend
deleted file mode 100644 (file)
index a74fb62..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-SRC_URI_append=" file://0001-gst-wayland-Install-wayland-header-from-gstwayland-l.patch"
diff --git a/meta-agl-profile-graphical/recipes-multimedia/gstreamer1.0-plugins-good/gstreamer1.0-plugins-good_%.bbappend b/meta-agl-profile-graphical/recipes-multimedia/gstreamer1.0-plugins-good/gstreamer1.0-plugins-good_%.bbappend
deleted file mode 100644 (file)
index 86a181f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-# libv4l2 is useful for making more efficient use of cameras via v4l2src.
-PACKAGECONFIG_append = " libv4l2"
diff --git a/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-multimedia.bbappend b/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-multimedia.bbappend
deleted file mode 100644 (file)
index 4a98a23..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-RDEPENDS_${PN}_append_ulcb     = "\
-       ${@bb.utils.contains('MACHINE_FEATURES','multimedia','packagegroup-multimedia-kernel-modules','',d)} \
-       ${@bb.utils.contains('MACHINE_FEATURES','multimedia','packagegroup-multimedia-libs','',d)} \
-       ${@bb.utils.contains('MACHINE_FEATURES','multimedia','packagegroup-gstreamer1.0-plugins','',d)} \
-"
diff --git a/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-services.bb b/meta-agl-profile-graphical/recipes-platform/packagegroups/packagegroup-agl-graphical-services.bb
deleted file mode 100644 (file)
index e587ab2..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-DESCRIPTION = "The minimal set of packages for Connectivity Subsystem"
-LICENSE = "MIT"
-
-inherit packagegroup
-
-PACKAGES = "\
-    packagegroup-agl-graphical-services \
-    "
-
-ALLOW_EMPTY_${PN} = "1"
-
-RDEPENDS_${PN} = "\
-    ${@bb.utils.contains('DISTRO_FEATURES', 'pipewire', 'agl-service-mediaplayer', '', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'pipewire', 'agl-service-radio', '', d)} \
-    "
diff --git a/meta-agl-profile-hud/LICENSE b/meta-agl-profile-hud/LICENSE
deleted file mode 100644 (file)
index e8758f8..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Different components of the AGL layers are under different licenses (a mix
-of MIT and GPLv2). See LICENSE.GPL-2.0-only and LICENSE.MIT for further
-details of the individual licenses.
-
-All metadata (e.g. .bb, .bbappend, .bbclass, .inc, templates/* and similar)
-is MIT licensed unless otherwise stated.
-Source code included in tree for individual recipes (e.g. patches) are under
-the LICENSE stated in the associated recipe (.bb file) unless otherwise stated.
-
-License information for any other files (scripts) is either explicitly stated
-or defaults to GPL version 2 only.
-
-Individual files can contain the following style tags instead of the full
-license text to identify their license:
-
-    SPDX-License-Identifier: GPL-2.0-only
-    SPDX-License-Identifier: MIT
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-hud/LICENSE.GPL-2.0-only b/meta-agl-profile-hud/LICENSE.GPL-2.0-only
deleted file mode 100644 (file)
index 5db3c0a..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                           NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-
-Note:
-Individual files contain the following tag instead of the full license text.
-
-    SPDX-License-Identifier: GPL-2.0-only
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-hud/LICENSE.MIT b/meta-agl-profile-hud/LICENSE.MIT
deleted file mode 100644 (file)
index a6919eb..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-Note:
-Individual files contain the following tag instead of the full license text.
-
-    SPDX-License-Identifier: MIT
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-hud/conf/layer.conf b/meta-agl-profile-hud/conf/layer.conf
deleted file mode 100644 (file)
index f8f18cd..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# We have a conf and classes directory, add to BBPATH
-BBPATH =. "${LAYERDIR}:"
-
-# We have recipes-* directories, add to BBFILES
-BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
-            ${LAYERDIR}/recipes-*/*/*.bbappend"
-
-BBFILE_COLLECTIONS += "aglprofilehud"
-BBFILE_PATTERN_aglprofilehud = "^${LAYERDIR}/"
-BBFILE_PRIORITY_aglprofilehud = "70"
-
-LAYERSERIES_COMPAT_aglprofilehud = "dunfell"
diff --git a/meta-agl-profile-telematics/LICENSE b/meta-agl-profile-telematics/LICENSE
deleted file mode 100644 (file)
index e8758f8..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Different components of the AGL layers are under different licenses (a mix
-of MIT and GPLv2). See LICENSE.GPL-2.0-only and LICENSE.MIT for further
-details of the individual licenses.
-
-All metadata (e.g. .bb, .bbappend, .bbclass, .inc, templates/* and similar)
-is MIT licensed unless otherwise stated.
-Source code included in tree for individual recipes (e.g. patches) are under
-the LICENSE stated in the associated recipe (.bb file) unless otherwise stated.
-
-License information for any other files (scripts) is either explicitly stated
-or defaults to GPL version 2 only.
-
-Individual files can contain the following style tags instead of the full
-license text to identify their license:
-
-    SPDX-License-Identifier: GPL-2.0-only
-    SPDX-License-Identifier: MIT
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-telematics/LICENSE.GPL-2.0-only b/meta-agl-profile-telematics/LICENSE.GPL-2.0-only
deleted file mode 100644 (file)
index 5db3c0a..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                           NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-
-Note:
-Individual files contain the following tag instead of the full license text.
-
-    SPDX-License-Identifier: GPL-2.0-only
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-telematics/LICENSE.MIT b/meta-agl-profile-telematics/LICENSE.MIT
deleted file mode 100644 (file)
index a6919eb..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
-Note:
-Individual files contain the following tag instead of the full license text.
-
-    SPDX-License-Identifier: MIT
-
-This enables machine processing of license information based on the SPDX
-License Identifiers that are here available: http://spdx.org/licenses/
diff --git a/meta-agl-profile-telematics/conf/layer.conf b/meta-agl-profile-telematics/conf/layer.conf
deleted file mode 100644 (file)
index f9ef2e3..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# We have a conf and classes directory, add to BBPATH
-BBPATH =. "${LAYERDIR}:"
-
-# We have recipes-* directories, add to BBFILES
-BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
-            ${LAYERDIR}/recipes-*/*/*.bbappend"
-
-BBFILE_COLLECTIONS += "aglprofiletelematics"
-BBFILE_PATTERN_aglprofiletelematics = "^${LAYERDIR}/"
-BBFILE_PRIORITY_aglprofiletelematics = "70"
-
-LAYERSERIES_COMPAT_aglprofiletelematics = "dunfell"
diff --git a/meta-agl-profile-telematics/recipes-platform/images/agl-image-telematics.bb b/meta-agl-profile-telematics/recipes-platform/images/agl-image-telematics.bb
deleted file mode 100644 (file)
index ad6ef98..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY = "A basic telematics image"
-
-require agl-image-telematics.inc
-
-LICENSE = "MIT"
-
-IMAGE_INSTALL_append = "\
-    profile-telematics \
-    "
diff --git a/meta-agl-profile-telematics/recipes-platform/images/agl-image-telematics.inc b/meta-agl-profile-telematics/recipes-platform/images/agl-image-telematics.inc
deleted file mode 100644 (file)
index 3e95155..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-require recipes-platform/images/agl-image-boot.inc
-
-inherit features_check
-
-REQUIRED_DISTRO_FEATURES = "3g"
diff --git a/meta-agl-profile-telematics/recipes-platform/packagegroups/packagegroup-agl-profile-telematics.bb b/meta-agl-profile-telematics/recipes-platform/packagegroups/packagegroup-agl-profile-telematics.bb
deleted file mode 100644 (file)
index 66fc0f7..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "The middleware for AGL telematics profile"
-DESCRIPTION = "The set of packages required for AGL Telematics Distribution"
-LICENSE = "MIT"
-
-inherit packagegroup
-
-PACKAGES = "\
-    packagegroup-agl-profile-telematics \
-    profile-telematics \
-    "
-
-ALLOW_EMPTY_${PN} = "1"
-
-RDEPENDS_${PN} += "\
-    packagegroup-agl-image-boot \
-    packagegroup-agl-core-security \
-    ${@bb.utils.contains('VIRTUAL-RUNTIME_net_manager','connman','connman connman-client','',d)} \
-    ${@bb.utils.contains("DISTRO_FEATURES", "3g", "libqmi", "", d)} \
-    agl-login-manager \
-    agl-service-can-low-level \
-    agl-service-network \
-    can-utils \
-"
-
-RDEPENDS_profile-telematics = "${PN}"
index 6c3427c..565eff5 100755 (executable)
@@ -7,9 +7,6 @@ You use this layer as the minimal core on which to build AGL profiles.
 **NOTE:** The `meta-agl` layer does not include a reference UI.
   The reference UI is included as part of the
   [`meta-agl-demo`](./meta-agl-demo.html) layer.
-  Furthermore, `meta-agl` does not include additional components, such
-  as security, which are part of the
-  `meta-agl-extra` layer.
 
 ## Sub-Layers
 
@@ -17,59 +14,45 @@ The `meta-agl` layer itself contains many sub-layers and files.
 Following is a "tree" look at the layer:
 
 ```
-.
-├── docs
-├── meta-agl
-├── meta-agl-bsp
-├── meta-agl-distro
-├── meta-agl-profile-cluster
-├── meta-agl-profile-cluster-qt5
-├── meta-agl-profile-core
-├── meta-agl-profile-graphical
-├── meta-agl-profile-graphical-html5
-├── meta-agl-profile-graphical-qt5
-├── meta-agl-profile-hud
-├── meta-agl-profile-telematics
-├── meta-app-framework
-├── meta-netboot
-├── meta-security
-├── README-AGL.md
-├── README.md
-├── scripts
-├── templates
+|-- LICENSE
+|-- LICENSE.GPL-2.0-only
+|-- LICENSE.MIT
+|-- README-AGL.md
+|-- README.md -> meta-agl.md
+|-- agl-layers-overview.md
+|-- docs
+|-- meta-agl-bsp
+|-- meta-agl-core
+|-- meta-agl-core-test
+|-- meta-agl-ic
+|-- meta-agl-ivi
+|-- meta-agl.md
+|-- meta-app-framework
+|-- meta-netboot
+|-- meta-pipewire
+|-- scripts
+`-- templates
 ```
 
 This list provides some overview information on the files and sub-layers
 in `meta-agl`:
 
+* LICENSE* : licenses of the various components. 
+* README* : RTFM
+* agl-layers-overview.md: references to the various layers that make up AGL
 * `docs`: Contains files that support AGL documentation.
-* `meta-agl`: Contains layer configuration for the `meta-agl` layer.
 * `meta-agl-bsp`: Contains adaptations for recipes and required packages
   to boot an AGL distribution on targeted hardware and emulation (i.e. QEMU).
-* `meta-agl-distro`: Contains distro configuration and supporting scripts.
-* `meta-agl-profile-cluster`: The middleware for the AGL cluster profile.
-  The set of packages required for AGL Cluster Distribution.
-  Profiles include support for Wayland images.
-* `meta-agl-profile-cluster-qt5`: The middleware for the AGL Qt5-based cluster profile.
-  The set of packages required for AGL Qt5-based Cluster Distribution.
-  Profiles include support for Wayland images with Qt5.
-* `meta-agl-profile-core`: Configuration and recipes for the AGL core profiles.
-* `meta-agl-profile-graphical`: Configuration and recipes supporting graphical user
-  interfaces.
-* `meta-agl-profile-graphical-html5`: Configuration and recipes supporting profiles
-  with HTML user interface support.
-* `meta-agl-profile-graphical-qt5`: Configuration and recipes supporting profiles
-  with Qt5-based user interface support.
-* `meta-agl-profile-hud`: Configuration and recipes supporting profiles with
-  Head-Up-Display (HUD) support.
-* `meta-agl-profile-telematics`: Configuration and recipes supporting profiles with
-  telematics support.
+* `meta-agl-core`: This is the core layer with essential recieps and the distro.
+* `meta-agl-core-test`: recipes supporting qa images (separate layer due to external dependencies)
+* `meta-agl-ic`: Instrument Cluster platform
+* `meta-agl-ivi`: IVI platform
 * `meta-app-framework`: Configuration and recipes supporting the AGL Application
   Framework.
 * `meta-netboot`: Contains recipes and configuration adjustments to allow network
   boot through network block device (NBD) since network file system (NFS) does not
   support security labels.
-* `meta-security`: Configuration and recipes supporting security applications.
+* `meta-pipewire`: Configuration and recipes supporting pipewire as audio manager
 * `scripts`: AGL development setup and support scripts.
 * `templates`: Base, feature, and machine templates used in the AGL development
   environment.
@@ -80,41 +63,40 @@ This section describes the AGL
 [packagegroup](https://yoctoproject.org/docs/2.4.4/dev-manual/dev-manual.html#usingpoky-extend-customimage-customtasks)
 design:
 
-* packagegroup-agl-image-minimal
+### core non-ui packagegroups:
+meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-connectivity.bb
+meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-devel.bb
+meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-security.bb
+meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-os-commonlibs.bb
 
-        packagegroup-agl-core-automotive.bb
-        packagegroup-agl-core-connectivity.bb
-        packagegroup-agl-core-graphics.bb
-        packagegroup-agl-core-kernel.bb
-        packagegroup-agl-core-multimedia.bb
-        packagegroup-agl-core-navi-lbs.bb
-        packagegroup-agl-core-os-commonlibs.bb
-        packagegroup-agl-core-security.bb
-        packagegroup-agl-core-speech-services.bb
+### graphical subsystem
+meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-profile-graphical.bb
+meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-graphical-multimedia.bb
+meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-graphical-weston.bb
 
-  The previous list of Packagegroups are used to create the `agl-image-minimal` image,
-  which is a small image just capable of allowing a device to boot.
+### image-related packagegroups
+meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-boot.bb
+meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-boot.bb
+meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bb
 
-  Subsystem should maintain packagegroup-agl-core-[subsystem].bb which should
-  hold sufficient packages to build `agl-image-minimal`.
+### QA/Test related packagegroups
+meta-agl-core-test/recipes-test/packagegroups
+meta-agl-core-test/recipes-test/packagegroups/packagegroup-agl-test.bb
 
-* packagegroup-agl-image-ivi
+## Images
 
-        packagegroup-agl-ivi-automotive.bb
-        packagegroup-agl-ivi-connectivity.bb
-        packagegroup-agl-ivi-graphics.bb
-        packagegroup-agl-ivi-kernel.bb
-        packagegroup-agl-ivi-multimedia.bb
-        packagegroup-agl-ivi-navi-lbs.bb
-        packagegroup-agl-ivi-os-commonlibs.bb
-        packagegroup-agl-ivi-security.bb
-        packagegroup-agl-ivi-speech-services.bb
+### (Barely) bootable image
+meta-agl-core/recipes-platform/images/agl-image-boot.bb
 
-  The previous list of Packagegroups are used to create the `agl-image-ivi`
-  image, which is a baseline image (i.e. Service Layer and Operating System
-  Layer defined in AGL Spec v1.0) for the AGL profiles.
+### minimal image and SDK (console)
+meta-agl-core/recipes-platform/images/agl-image-minimal.bb
+meta-agl-core/recipes-platform/images/agl-image-minimal-crosssdk.bb
 
-* packagegroup-agl-test.bb
+### weston-based image for re-use
+meta-agl-core/recipes-platform/images/agl-image-weston.bb
 
-  Additional tools used in QA tests (for agl-image*-qa).
+### image for use in the YP autobuilder
+meta-agl-core/recipes-platform/images/agl-image-core-autobuilder.bb
 
+### image with extra QA tooling (e.g. to run LTP)
+meta-agl-core-test/images/agl-image-minimal-qa.bb
diff --git a/meta-agl/conf/layer.conf b/meta-agl/conf/layer.conf
deleted file mode 100644 (file)
index 6f431e6..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# We have a conf and classes directory, add to BBPATH
-BBPATH =. "${LAYERDIR}:"
-
-# We have recipes-* directories, add to BBFILES
-BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
-            ${LAYERDIR}/recipes-*/*/*.bbappend"
-
-BBFILE_COLLECTIONS += "agl"
-BBFILE_PATTERN_agl = "^${LAYERDIR}/"
-BBFILE_PRIORITY_agl = "70"
-
-LAYERSERIES_COMPAT_agl = "dunfell"
index 1397224..831368a 100644 (file)
@@ -3,6 +3,8 @@ OVERRIDES .= ":with-lsm-smack"
 DISTRO_FEATURES_append = " smack xattr"
 DISTRO_FEATURES_NATIVE_append = " smack xattr"
 
+APPFW_ENABLED = "1"
+
 # use tar-native to support SMACK extended attributes independently of host config
 IMAGE_CMD_TAR = "tar --xattrs --xattrs-include='*'"
 do_image_tar[depends] += "tar-replacement-native:do_populate_sysroot"
@@ -17,3 +19,6 @@ PACKAGECONFIG_append_pn-shadow-native = " attr"
 
 # set the home directory for root
 ROOT_HOME = "/home/0"
+
+# include devel wgts in images
+IMAGE_FEATURES_append = " agl-devel-wgt"
@@ -1,3 +1,3 @@
 # allows insertion of code or items specific to developement
 OVERRIDES .= ":agl-sign-wgts"
-DISTRO_FEATURES_append = " agl-sign-wgts"
+AGL_FEATURES_append = " agl-sign-wgts"
index 21b8ee5..77701bb 100644 (file)
@@ -10,3 +10,24 @@ BBFILE_PATTERN_app-framework = "^${LAYERDIR}/"
 BBFILE_PRIORITY_app-framework = "70"
 
 LAYERSERIES_COMPAT_app-framework = "dunfell"
+
+# dependency: meta-oe
+LAYERDEPENDS_app-framework  = "openembedded-layer"
+# dependency: meta-security
+LAYERDEPENDS_app-framework += "security"
+
+# AGL core layer is an optional requirement
+LAYERRECOMMENDS_app-framework += "aglcore"
+LAYERRECOMMENDS_app-framework += "qt5-layer"
+
+BBFILES_DYNAMIC += " \
+    qt5-layer:${LAYERDIR}/dynamic-layers/meta-qt5/*/*/*.bb \
+    qt5-layer:${LAYERDIR}/dynamic-layers/meta-qt5/*/*/*.bbappend \
+    aglcore:${LAYERDIR}/dynamic-layers/meta-agl-core/*/*/*.bb \
+    aglcore:${LAYERDIR}/dynamic-layers/meta-agl-core/*/*/*.bbappend \
+"
+
+
+# bug in meta-security
+BBMASK += "packagegroup-core-security-ptest\.bb"
+#BBMASK += "meta-security/recipes-mac/smack/smack-test_1.0.bb
diff --git a/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-security.bbappend b/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-core-security.bbappend
new file mode 100644 (file)
index 0000000..048154e
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('APPFW_ENABLED', '1', '${PN}_appfw.inc', '', d)}
diff --git a/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-boot.bbappend b/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-boot.bbappend
new file mode 100644 (file)
index 0000000..514dde7
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'packagegroup-agl-image-boot_appfw.inc', '', d)}
diff --git a/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bbappend b/meta-app-framework/dynamic-layers/meta-agl-core/recipes-platform/packagegroups/packagegroup-agl-image-minimal.bbappend
new file mode 100644 (file)
index 0000000..5f890bf
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'packagegroup-agl-image-minimal_appfw.inc', '', d)}
diff --git a/meta-app-framework/recipes-connectivity/bluez5/bluez5_%.bbappend b/meta-app-framework/recipes-connectivity/bluez5/bluez5_%.bbappend
new file mode 100644 (file)
index 0000000..20d2a68
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'bluez5_appfw.inc', '', d)}
@@ -48,7 +48,7 @@ SRC_URI_append_with-lsm-smack = "\
   file://bluetooth.service.conf \
 "
 
-FILES_${PN} += "${systemd_unitdir}"
+FILES_${PN}_append = " ${systemd_unitdir}"
 
 do_install_append_with-lsm-smack() {
   install -Dm0644 ${WORKDIR}/bluetooth.service.conf ${D}${systemd_unitdir}/system/bluetooth.service.d/smack.conf
diff --git a/meta-app-framework/recipes-connectivity/connman/connman_%.bbappend b/meta-app-framework/recipes-connectivity/connman/connman_%.bbappend
new file mode 100644 (file)
index 0000000..72aa9f2
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'connman_appfw.inc', '', d)}
@@ -27,7 +27,7 @@ SRC_URI_append_with-lsm-smack = "\
 
 RDEPENDS_${PN}_append_with-lsm-smack = " smack"
 
-FILES_${PN} += "${systemd_unitdir}"
+FILES_${PN}_append = " ${systemd_unitdir}"
 
 do_install_append_with-lsm-smack() {
   install -Dm0644 ${WORKDIR}/connman.service.conf ${D}${systemd_unitdir}/system/connman.service.d/smack.conf
index 1dddcd6..28b08fa 100644 (file)
@@ -1,32 +1 @@
-RDEPENDS_${PN}_append_with-lsm-smack = " smack"
-PACKAGE_WRITE_DEPS_append_with-lsm-smack = " smack-native"
-
-do_install_append() {
-    install -m 0700 -d ${D}/${sysconfdir}/skel
-    chmod -R 0700 ${D}/${sysconfdir}/skel
-    install -m 0700 -d ${D}/${sysconfdir}/skel/app-data
-    install -m 0700 -d ${D}/${sysconfdir}/skel/.config
-    install -m 0755 -d ${D}/var
-    if [ -d ${D}/usr/local ]; then
-        mv ${D}/usr/local ${D}/var
-    else
-        install -m 0755 -d ${D}/var/local
-    fi
-    ln -s ../var/local ${D}/usr/local
-}
-
-do_install_append_with-lsm-smack () {
-    install -d ${D}/${sysconfdir}/smack/accesses.d
-    cat > ${D}/${sysconfdir}/smack/accesses.d/default-access-domains-no-user <<EOF
-System User::App-Shared rwxat
-System User::Home       rwxat
-EOF
-    chmod 0644 ${D}/${sysconfdir}/smack/accesses.d/default-access-domains-no-user
-}
-
-pkg_postinst_${PN}_append_with-lsm-smack() {
-    chsmack -r -a 'User::Home' -t -D $D/${sysconfdir}/skel
-    chsmack -a 'User::App-Shared' -D $D/${sysconfdir}/skel/app-data
-    cp -rTf --preserve=all $D/${sysconfdir}/skel $D/${ROOT_HOME}
-}
-
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'base-files_appfw.inc', '', d)}
@@ -1,3 +1,37 @@
+RDEPENDS_${PN}_append_with-lsm-smack = " smack"
+PACKAGE_WRITE_DEPS_append_with-lsm-smack = " smack-native"
+
+do_install_append() {
+    install -m 0700 -d ${D}/${sysconfdir}/skel
+    chmod -R 0700 ${D}/${sysconfdir}/skel
+    install -m 0700 -d ${D}/${sysconfdir}/skel/app-data
+    install -m 0700 -d ${D}/${sysconfdir}/skel/.config
+    install -m 0755 -d ${D}/var
+    if [ -d ${D}/usr/local ]; then
+        mv ${D}/usr/local ${D}/var
+    else
+        install -m 0755 -d ${D}/var/local
+    fi
+    ln -s ../var/local ${D}/usr/local
+}
+
+do_install_append_with-lsm-smack () {
+    install -d ${D}/${sysconfdir}/smack/accesses.d
+    cat > ${D}/${sysconfdir}/smack/accesses.d/default-access-domains-no-user <<EOF
+System User::App-Shared rwxat
+System User::Home       rwxat
+EOF
+    chmod 0644 ${D}/${sysconfdir}/smack/accesses.d/default-access-domains-no-user
+}
+
+pkg_postinst_${PN}_append_with-lsm-smack() {
+    chsmack -r -a 'User::Home' -t -D $D/${sysconfdir}/skel
+    chsmack -a 'User::App-Shared' -D $D/${sysconfdir}/skel/app-data
+    cp -rTf --preserve=all $D/${sysconfdir}/skel $D/${ROOT_HOME}
+}
+
+
+
 # Install default Smack rules, copied from a running Tizen IVI 3.0.
 # Corresponds to manifest file from default-access-domains in Tizen:
 # https://review.tizen.org/git?p=platform/core/security/default-ac-domains.git;a=blob;f=packaging/default-ac-domains.manifest
diff --git a/meta-app-framework/recipes-core/coreutils/coreutils_%.bbappend b/meta-app-framework/recipes-core/coreutils/coreutils_%.bbappend
new file mode 100644 (file)
index 0000000..b7bf9ff
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'coreutils_appfw.inc', '', d)}
diff --git a/meta-app-framework/recipes-core/dbus-cynagora/dbus_1.12.16.bbappend b/meta-app-framework/recipes-core/dbus-cynagora/dbus_1.12.16.bbappend
new file mode 100644 (file)
index 0000000..028c734
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'dbus_appfw.inc', '', d)}
diff --git a/meta-app-framework/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend b/meta-app-framework/recipes-core/packagegroups/nativesdk-packagegroup-sdk-host.bbappend
deleted file mode 100644 (file)
index fc73e8f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-RDEPENDS_${PN} =+ "nativesdk-af-main-tools nativesdk-af-binder-devtools"
-
diff --git a/meta-app-framework/recipes-core/security-manager/security-manager_%.bbappend b/meta-app-framework/recipes-core/security-manager/security-manager_%.bbappend
deleted file mode 100644 (file)
index 3306d4c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/security-manager:"
-
-EXTRA_OECMAKE =+ " -DGLOBALUSER=afm"
-SRC_URI += " \
-   file://0001-Adapt-rules-to-AGL.patch \
-"
-
index 4f594d4..70a0c3c 100644 (file)
@@ -1,6 +1,3 @@
-
-do_install_append() {
-       sed -i '/^UMASK/s:^.*$:UMASK 077:' ${D}${sysconfdir}/login.defs
-}
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'shadow_appfw.inc', '', d)}
 
 
diff --git a/meta-app-framework/recipes-core/shadow/shadow_appfw.inc b/meta-app-framework/recipes-core/shadow/shadow_appfw.inc
new file mode 100644 (file)
index 0000000..472ffef
--- /dev/null
@@ -0,0 +1,3 @@
+do_install_append() {
+       sed -i '/^UMASK/s:^.*$:UMASK 077:' ${D}${sysconfdir}/login.defs
+}
diff --git a/meta-app-framework/recipes-core/systemd-sync/systemd-agl-sync_1.0.bb b/meta-app-framework/recipes-core/systemd-sync/systemd-agl-sync_1.0.bb
deleted file mode 100644 (file)
index 389ab24..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-SUMMARY = "Systemd synchronization script"
-DESCRIPTION = "\
-Systemd synchronization script \
-reload daemon at the first boot. \
-"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
-
-#This script should be the last to be execute at the first boot
-POST_INSTALL_LEVEL = "X0"
-POST_INSTALL_SCRIPT ?= "${POST_INSTALL_LEVEL}-${PN}.sh"
-
-do_install() {
-    install -d ${D}/${sysconfdir}/agl-postinsts
-    cat > ${D}/${sysconfdir}/agl-postinsts/${POST_INSTALL_SCRIPT} <<EOF
-#!/bin/sh -e
-echo "restart daemon ..."
-result=0
-systemctl daemon-reload
-if [ \$? -ne 0 ]; then
-    result=1
-fi
-systemctl restart sockets.target
-if [ \$? -ne 0 ]; then
-    result=1
-fi
-
-if [ \$result -eq 0 ]; then
-    echo "restart daemon OK"
-    exit \$result
-else
-    echo "restart daemon failed"
-    exit \$result
-fi
-EOF
-    chmod a+x ${D}/${sysconfdir}/agl-postinsts/${POST_INSTALL_SCRIPT}
-}
-
-FILES_${PN} = "${sysconfdir}/agl-postinsts/${POST_INSTALL_SCRIPT}"
diff --git a/meta-app-framework/recipes-core/systemd/systemd_2%.bbappend b/meta-app-framework/recipes-core/systemd/systemd_2%.bbappend
new file mode 100644 (file)
index 0000000..11b1df9
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'systemd_appfw.inc', '', d)}
@@ -1,4 +1,4 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+FILESEXTRAPATHS_prepend := "${THISDIR}/systemd:"
 
 # Ensures systemd runs with label "System"
 EXTRA_OEMESON_append_with-lsm-smack = " -Dsmack-run-label=System"
diff --git a/meta-app-framework/recipes-core/util-linux/util-linux_%.bbappend b/meta-app-framework/recipes-core/util-linux/util-linux_%.bbappend
new file mode 100644 (file)
index 0000000..3894f57
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'util-linux_appfw.inc', '', d)}
diff --git a/meta-app-framework/recipes-devtools/json-c/json-c_%.bbappend b/meta-app-framework/recipes-devtools/json-c/json-c_%.bbappend
new file mode 100644 (file)
index 0000000..051f66a
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'json-c_appfw.inc', '', d)}
diff --git a/meta-app-framework/recipes-devtools/json-c/json-c_appfw.inc b/meta-app-framework/recipes-devtools/json-c/json-c_appfw.inc
new file mode 100644 (file)
index 0000000..f1547e1
--- /dev/null
@@ -0,0 +1 @@
+EXTRA_OECONF_append = " --enable-threading"
diff --git a/meta-app-framework/recipes-devtools/packagegroups/nativesdk-packagegroup-sdk-host.bbappend b/meta-app-framework/recipes-devtools/packagegroups/nativesdk-packagegroup-sdk-host.bbappend
new file mode 100644 (file)
index 0000000..837b853
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'nativesdk-packagegroup-sdk-host_appfw.inc', '', d)}
diff --git a/meta-app-framework/recipes-devtools/packagegroups/nativesdk-packagegroup-sdk-host_appfw.inc b/meta-app-framework/recipes-devtools/packagegroups/nativesdk-packagegroup-sdk-host_appfw.inc
new file mode 100644 (file)
index 0000000..8d6ffb5
--- /dev/null
@@ -0,0 +1,5 @@
+RDEPENDS_${PN}_append = " \
+               nativesdk-af-main-tools \
+               nativesdk-af-binder-devtools \
+               nativesdk-cmake-apps-module \
+"
diff --git a/meta-app-framework/recipes-devtools/run-agl-postinsts/run-agl-postinsts_1.0.bbappend b/meta-app-framework/recipes-devtools/run-agl-postinsts/run-agl-postinsts_1.0.bbappend
deleted file mode 100644 (file)
index 590ab70..0000000
+++ /dev/null
@@ -1 +0,0 @@
-SYSTEMD_SERVICE_AFTER_append = " afm-system-daemon.service"
diff --git a/meta-app-framework/recipes-devtools/run-postinsts/run-postinsts_%.bbappend b/meta-app-framework/recipes-devtools/run-postinsts/run-postinsts_%.bbappend
new file mode 100644 (file)
index 0000000..6b9025d
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'run-postinsts_appfw.inc', '', d)}
@@ -1,6 +1,6 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+FILESEXTRAPATHS_prepend := "${THISDIR}/run-postinsts:"
 
-SRC_URI += "file://ldconfig-wait.conf"
+SRC_URI_append = " file://ldconfig-wait.conf"
 
 do_configure_append() {
        if ! grep -q StandardOutput= ${WORKDIR}/run-postinsts.service; then
diff --git a/meta-app-framework/recipes-graphics/wayland/wayland_%.bbappend b/meta-app-framework/recipes-graphics/wayland/wayland_%.bbappend
new file mode 100644 (file)
index 0000000..50cad03
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'wayland_appfw.inc', '', d)}
@@ -1,4 +1,4 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+FILESEXTRAPATHS_prepend := "${THISDIR}/wayland:"
 
 SRC_URI_append = "\
     file://0001-Change-socket-mode-add-rw-for-group.patch \
diff --git a/meta-app-framework/recipes-graphics/wayland/weston_8.0.%.bbappend b/meta-app-framework/recipes-graphics/wayland/weston_8.0.%.bbappend
new file mode 100644 (file)
index 0000000..00bb510
--- /dev/null
@@ -0,0 +1 @@
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'weston_8.0_appfw.inc', '', d)}
diff --git a/meta-app-framework/recipes-graphics/wayland/weston_8.0_appfw.inc b/meta-app-framework/recipes-graphics/wayland/weston_8.0_appfw.inc
new file mode 100644 (file)
index 0000000..219ed1a
--- /dev/null
@@ -0,0 +1,19 @@
+FILESEXTRAPATHS_append := ":${THISDIR}/weston"
+
+SRC_URI_append = "\
+    file://0001-Allow-regular-users-to-launch-Weston_7.0.0.patch \
+    file://smack-weston \
+    "
+
+EXTRA_OEMESON_append = " -Denable-user-start=true"
+
+do_install_append() {
+    if ${@bb.utils.contains('DISTRO_FEATURES', 'smack', 'true', 'false', d)}; then
+        # Install SMACK rules
+        install -D -m 0644 ${WORKDIR}/smack-weston ${D}${sysconfdir}/smack/accesses.d/weston
+    fi
+}
+
+FILES_${PN}_append = "\
+    ${sysconfdir}/smack/accesses.d/* \
+"
index fba5bf1..acce6cc 100644 (file)
@@ -1,3 +1,2 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/linux:"
-SRC_URI_append_with-lsm-smack = " file://audit.cfg"
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'linux-appfw.inc', '', d)}
 
@@ -9,9 +9,13 @@ SMACK_KERNEL_SRC_URI_yes += "file://smack.cfg"
 
 # When added, set Smack as the default LSM.
 SMACK_DEFAULT_SECURITY_CFG = "file://smack-default-lsm.cfg"
-
 # Add it by default, can be overridden by changing this variable here.
 SMACK_DEFAULT_SECURITY ??= "${SMACK_DEFAULT_SECURITY_CFG}"
 SMACK_KERNEL_SRC_URI_yes += " ${SMACK_DEFAULT_SECURITY}"
 
+# add audit.cfg
+SMACK_KERNEL_SRC_URI_yes += " file://audit.cfg"
+
+
 SRC_URI_append_with-lsm-smack = "${SMACK_KERNEL_SRC_URI_${IS_KERNEL_RECIPE}}"
+
@@ -4,17 +4,16 @@ LICENSE = "MIT"
 
 inherit packagegroup
 
-PACKAGES = "\
+PACKAGES_${PN} = "\
     packagegroup-agl-app-framework \
     "
 
 ALLOW_EMPTY_${PN} = "1"
 
-RDEPENDS_${PN} += "\
+RDEPENDS_${PN} = "\
        af-binder \
        libafbwsc \
        af-main \
        nss-localuser \
-       systemd-agl-sync \
        af-platform-setup \
        "
@@ -1,3 +1,10 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/security-manager:"
+
+EXTRA_OECMAKE =+ " -DGLOBALUSER=afm"
+
+SRC_URI += " \
+   file://0001-Adapt-rules-to-AGL.patch \
+"
 
 do_install_append() {
    # Needed for wayland-0 socket access and memfd usage
index 09820be..afbc16c 100644 (file)
@@ -1,4 +1 @@
-# Disable nss to avoid build issues on native
-PACKAGECONFIG = "gnutls libgcrypt openssl des"
-
-BBCLASSEXTEND = "native nativesdk"
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'xmlsec1_appfw.inc', '', d)}
diff --git a/meta-app-framework/recipes-security/xmlsec1/xmlsec1_appfw.inc b/meta-app-framework/recipes-security/xmlsec1/xmlsec1_appfw.inc
new file mode 100644 (file)
index 0000000..09820be
--- /dev/null
@@ -0,0 +1,4 @@
+# Disable nss to avoid build issues on native
+PACKAGECONFIG = "gnutls libgcrypt openssl des"
+
+BBCLASSEXTEND = "native nativesdk"
index ac909a6..6107ee7 100644 (file)
@@ -1,3 +1 @@
-FILESEXTRAPATHS_append_class-native := ":${THISDIR}/${PN}"
-# FIXME: It needs to be determined if this is still required
-#SRC_URI_append_class-native = " file://removing-capability-enforcement.patch"
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'libcap_appfw.inc', '', d)}
diff --git a/meta-app-framework/recipes-support/libcap/libcap_appfw.inc b/meta-app-framework/recipes-support/libcap/libcap_appfw.inc
new file mode 100644 (file)
index 0000000..9ece5ce
--- /dev/null
@@ -0,0 +1,3 @@
+FILESEXTRAPATHS_append_class-native := ":${THISDIR}/libcap"
+# FIXME: It needs to be determined if this is still required
+#SRC_URI_append_class-native = " file://removing-capability-enforcement.patch"
index 5174650..d559c2f 100644 (file)
@@ -1 +1 @@
-BBCLASSEXTEND += "native nativesdk"
+require ${@bb.utils.contains('APPFW_ENABLED', '1', 'libzip_appfw.inc', '', d)}
diff --git a/meta-app-framework/recipes-support/libzip/libzip_appfw.inc b/meta-app-framework/recipes-support/libzip/libzip_appfw.inc
new file mode 100644 (file)
index 0000000..5174650
--- /dev/null
@@ -0,0 +1 @@
+BBCLASSEXTEND += "native nativesdk"
diff --git a/meta-app-framework/scripts/run-yocto-check-layer-enabled-flags.sh b/meta-app-framework/scripts/run-yocto-check-layer-enabled-flags.sh
new file mode 100755 (executable)
index 0000000..37d2f56
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/bash
+set -x
+SCRIPTPATH="$( cd $(dirname $0) >/dev/null 2>&1 ; pwd -P )"
+echo $SCRIPTPATH
+AGLROOT="$SCRIPTPATH/../../.."
+POKYDIR="$AGLROOT/external/poky"
+TMPROOT="/tmp"
+
+rm -rf ${TMPROOT}/testbuild-ycl || true
+mkdir -p ${TMPROOT}/testbuild-ycl
+cd ${TMPROOT}/testbuild-ycl
+
+source $POKYDIR/oe-init-build-env .
+
+cat << EOF >> conf/local.conf
+# just define defaults
+AGL_FEATURES ?= ""
+AGL_EXTRA_IMAGE_FSTYPES ?= ""
+
+# important settings imported from poky-agl.conf
+# we do not import 
+DISTRO_FEATURES_append = " systemd smack"
+DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " sysvinit"
+VIRTUAL-RUNTIME_init_manager = "systemd"
+
+# skip unnecessary in yocto-check-layer - aka FIXME upstream
+BBMASK += "meta-security/recipes-mac/smack/smack-test_1.0.bb"
+BBMASK += "packagegroup-core-security-ptest.bb"
+
+# missing in upstream recipes ... aka FIXME upstream
+BBCLASSEXTEND_pn-libzip = "native nativesdk"
+BBCLASSEXTEND_pn-xmlsec1 = "native nativesdk"
+
+DISTRO_FEATURES_append = " appfw smack "
+
+EOF
+
+
+yocto-check-layer \
+  --dependency $AGLROOT/external/meta-openembedded/meta-oe \
+               $AGLROOT/external/meta-security \
+               $AGLROOT/external/meta-openembedded/meta-python \
+               $AGLROOT/external/meta-openembedded/meta-networking \
+               $AGLROOT/external/meta-openembedded/meta-perl \
+               $AGLROOT/external/meta-qt5/ \
+               -- \
+               $AGLROOT/meta-agl/meta-app-framework/ 
+
+[ $? = 0 ] && rm -rf ${TMPROOT}/testbuild-ycl
+
+
diff --git a/meta-app-framework/scripts/run-yocto-check-layer.sh b/meta-app-framework/scripts/run-yocto-check-layer.sh
new file mode 100755 (executable)
index 0000000..3b19cd0
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/bash
+set -x
+SCRIPTPATH="$( cd $(dirname $0) >/dev/null 2>&1 ; pwd -P )"
+echo $SCRIPTPATH
+AGLROOT="$SCRIPTPATH/../../.."
+POKYDIR="$AGLROOT/external/poky"
+TMPROOT="/tmp"
+
+rm -rf ${TMPROOT}/testbuild-ycl || true
+mkdir -p ${TMPROOT}/testbuild-ycl
+cd ${TMPROOT}/testbuild-ycl
+
+source $POKYDIR/oe-init-build-env .
+
+cat << EOF >> conf/local.conf
+# just define defaults
+AGL_FEATURES ?= ""
+AGL_EXTRA_IMAGE_FSTYPES ?= ""
+
+# important settings imported from poky-agl.conf
+# we do not import 
+DISTRO_FEATURES_append = " systemd smack"
+DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " sysvinit"
+VIRTUAL-RUNTIME_init_manager = "systemd"
+
+# skip unnecessary in yocto-check-layer - aka FIXME upstream
+BBMASK += "meta-security/recipes-mac/smack/smack-test_1.0.bb"
+BBMASK += "packagegroup-core-security-ptest.bb"
+
+# missing in upstream recipes ... aka FIXME upstream
+BBCLASSEXTEND_pn-libzip = "native nativesdk"
+BBCLASSEXTEND_pn-xmlsec1 = "native nativesdk"
+
+EOF
+
+
+yocto-check-layer \
+  --dependency $AGLROOT/external/meta-openembedded/meta-oe \
+               $AGLROOT/external/meta-security \
+               $AGLROOT/external/meta-openembedded/meta-python \
+               $AGLROOT/external/meta-openembedded/meta-networking \
+               $AGLROOT/external/meta-openembedded/meta-perl \
+               $AGLROOT/external/meta-qt5/ \
+               -- \
+               $AGLROOT/meta-agl/meta-app-framework/ 
+
+[ $? = 0 ] && rm -rf ${TMPROOT}/testbuild-ycl
+
+
diff --git a/meta-netboot/README.renesas-gen3 b/meta-netboot/README.renesas-gen3
deleted file mode 100644 (file)
index 496141e..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-Below are the environment variables that can be set in the u-boot console to boot the Renesas Gen3 ULCB boards.
-
-Adjust board type with the following identifiers:
-
-* 'm3ulcb' for Renesas Gen3 Starter Kit Pro
-* 'h3ulcb' for Renesas Gen3 Starter Kit Premium
-
-################## Common options #####################
-# these options are common to all configurations:
-
-##### board info
-
-# choose board
-setenv board m3ulcb
-setenv soc r8a7796
-# or
-setenv board h3ulcb
-setenv soc r8a7795
-
-##### boot mode
-# choose bootmode:
-# netboot
-setenv bootmode net
-# or sdcard
-setenv bootmode sd
-# or sdcard with initrd
-setenv bootmode sdi
-
-##### sdcard options
-# which sdcard slot to use
-setenv bootmmc '0:1'
-
-##### netboot options
-# replace <IP> and <NUM> by appropriate addresses
-setenv ipaddr '<board_IP>'
-setenv serverip '<server_IP>'
-setenv ethact ravb
-setenv ethaddr DE:AD:C0:FF:EE:<NUM>
-
-################## Internal variables #####################
-
-# kernel file
-setenv set_bootkfile 'setenv bootkfile Image'
-setenv bootkaddr 0x48080000
-
-# dtb file
-setenv set_bootdfile 'setenv bootdfile Image-${soc}-${board}.dtb'
-setenv bootdaddr 0x48000000
-
-# initrd
-setenv set_bootifile 'setenv bootifile initramfs-netboot-image-${board}.ext4.gz'
-setenv bootiaddr 0x5C3F9520
-setenv bootisize 3A6AB6
-
-# kernel args
-setenv bootargs_console 'console=ttySC0,115200 ignore_loglevel'
-setenv bootargs_video 'vmalloc=384M video=HDMI-A-1:1920x1080-32@60'
-setenv bootargs_extra 'rw rootfstype=ext4 rootwait rootdelay=2'
-
-# final boot command
-setenv bootcmd 'run bootcmd_${bootmode}'
-
-################ Boot on MMC (SDcard) #################
-
-setenv bootkload_sd 'ext4load mmc ${bootmmc} ${bootkaddr} boot/${bootkfile}'
-setenv bootiload_sd 'ext4load mmc ${bootmmc} ${bootiaddr} boot/${bootifile}'
-setenv bootdload_sd 'ext4load mmc ${bootmmc} ${bootdaddr} boot/${bootdfile}'
-
-# without initrd
-setenv bootargs_root_sd 'root=/dev/mmcblk1p1'
-setenv bootload_sd 'run set_bootkfile; run bootkload_sd; run set_bootdfile; run bootdload_sd'
-setenv bootcmd_sd 'setenv bootargs ${bootargs_console} ${bootargs_video} ${bootargs_root_sd} ${bootargs_extra}; run bootload_sd; booti ${bootkaddr} - ${bootdaddr}'
-
-# with initrd
-setenv bootargs_root_sdi 'root=/dev/ram0 ramdisk_size=16384'
-setenv bootload_sdi 'run set_bootkfile; run bootkload_sd; run set_bootdfile; run bootdload_sd; run set_bootifile; run bootiload_sd'
-setenv bootcmd_sdi 'setenv bootargs ${bootargs_console} ${bootargs_video} ${bootargs_root_sdi} ${bootargs_extra}; run bootload_sdi; booti ${bootkaddr} ${bootiaddr}:${bootisize} ${bootdaddr}'
-
-################ Netboot through TFTP+NBD ##################
-
-setenv bootkload_net 'tftp ${bootkaddr} ${board}/${bootkfile}'
-setenv bootdload_net 'tftp ${bootdaddr} ${board}/${bootdfile}'
-setenv bootiload_net 'tftp ${bootiaddr} ${board}/${bootifile}'
-
-setenv bootargs_root_net 'root=/dev/ram0 ramdisk_size=16384 ip=dhcp'
-setenv bootload_net 'run set_bootkfile; run bootkload_net; run set_bootdfile; run bootdload_net; run set_bootifile; run bootiload_net'
-
-setenv bootcmd_net 'setenv bootargs ${bootargs_console} ${bootargs_video} ${bootargs_root_net} ${bootargs_extra} nbd.server=${serverip}; run bootload_net; booti ${bootkaddr} ${bootiaddr}:${bootisize} ${bootdaddr}'
-
-
index 6336928..a18d64f 100644 (file)
@@ -1,5 +1,10 @@
 # Enable network bootable image and initrd/initramfs
 
+OVERRIDES .= ":netboot"
+# add 512MB of extra space in ext4 output image
+IMAGE_ROOTFS_EXTRA_SPACE = "524288"
+NETBOOT_ENABLED ??= "1"
+
 python () {
     if (bb.utils.contains("IMAGE_FSTYPES","live",True,False,d)):
         # typical case for Minnowboard Max
index fcff8c3..ca6d9df 100644 (file)
@@ -1,5 +1,2 @@
 INHERIT += "netboot"
-OVERRIDES .= ":netboot"
 
-# add 512MB of extra space in ext4 output image
-IMAGE_ROOTFS_EXTRA_SPACE = "524288"
index 50def90..2af7528 100644 (file)
@@ -1,6 +1,3 @@
-# Added for futur conditionnals tests
-DISTRO_FEATURES_append = " netboot"
-
 # We have a conf and classes directory, add to BBPATH
 BBPATH .= ":${LAYERDIR}"
 
@@ -13,3 +10,4 @@ BBFILE_PATTERN_meta-netboot = "^${LAYERDIR}/"
 BBFILE_PRIORITY_meta-netboot = "60"
 
 LAYERSERIES_COMPAT_meta-netboot = "dunfell"
+LAYERDEPENDS_meta-netboot = "core networking-layer"
index 3589134..fcf6acf 100644 (file)
@@ -1,6 +1 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-SRC_URI += " \
-            file://enable_nbd.cfg \
-           "
-
+require ${@bb.utils.contains('NETBOOT_ENABLED', '1', 'busybox_netboot.inc', '', d)}
diff --git a/meta-netboot/recipes-core/busybox/busybox_netboot.inc b/meta-netboot/recipes-core/busybox/busybox_netboot.inc
new file mode 100644 (file)
index 0000000..0bcd5af
--- /dev/null
@@ -0,0 +1,6 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+
+SRC_URI_append = " \
+            file://enable_nbd.cfg \
+           "
+
index 965a0bd..b5610f3 100644 (file)
@@ -1,23 +1,2 @@
-# Netboot initramfs image.
-DESCRIPTION = "Netboot initrd image"
-
-PACKAGE_INSTALL = "initramfs-netboot busybox base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}"
-
-# Do not pollute the initrd image with rootfs features
-IMAGE_FEATURES = ""
-
-export IMAGE_BASENAME = "initramfs-netboot-image"
-IMAGE_LINGUAS = ""
-
 LICENSE = "MIT"
-
-IMAGE_FSTYPES := "${NETBOOT_FSTYPES}"
-inherit core-image
-
-# hotfix for dragonboard (which uses _append in the bsp) 
-IMAGE_FSTYPES_remove += "wic.gz"
-
-IMAGE_ROOTFS_SIZE = "8192"
-IMAGE_ROOTFS_EXTRA_SPACE = "256"
-
-BAD_RECOMMENDATIONS += "busybox-syslog"
+require ${@bb.utils.contains('NETBOOT_ENABLED', '1', 'initramfs-netboot-image_netboot.inc', '', d)}
diff --git a/meta-netboot/recipes-core/images/initramfs-netboot-image_netboot.inc b/meta-netboot/recipes-core/images/initramfs-netboot-image_netboot.inc
new file mode 100644 (file)
index 0000000..0c97b0f
--- /dev/null
@@ -0,0 +1,23 @@
+# Netboot initramfs image.
+DESCRIPTION = "Netboot initrd image"
+
+PACKAGE_INSTALL = "initramfs-netboot busybox base-passwd ${ROOTFS_BOOTSTRAP_INSTALL}"
+
+# Do not pollute the initrd image with rootfs features
+IMAGE_FEATURES = ""
+
+export IMAGE_BASENAME = "initramfs-netboot-image"
+IMAGE_LINGUAS = ""
+
+LICENSE = "MIT"
+
+IMAGE_FSTYPES := "${NETBOOT_FSTYPES}"
+inherit core-image
+
+# hotfix for dragonboard (which uses _append in the bsp) 
+IMAGE_FSTYPES_remove = "wic.gz"
+
+IMAGE_ROOTFS_SIZE = "8192"
+IMAGE_ROOTFS_EXTRA_SPACE = "256"
+
+BAD_RECOMMENDATIONS += "busybox-syslog"
index fb11ef9..e67e591 100644 (file)
@@ -1,6 +1 @@
-
-do_install_append() {
-       mv ${D}/${sbindir}/${BPN}-client ${D}/${sbindir}/${BPN}3-client
-}
-
-FILES_${PN}-client = "${sbindir}/${BPN}3-client"
+require ${@bb.utils.contains('NETBOOT_ENABLED', '1', 'nbd_netboot.inc', '', d)}
diff --git a/meta-netboot/recipes-support/nbd/nbd_netboot.inc b/meta-netboot/recipes-support/nbd/nbd_netboot.inc
new file mode 100644 (file)
index 0000000..f228661
--- /dev/null
@@ -0,0 +1,5 @@
+do_install_append() {
+       mv ${D}/${sbindir}/nbd-client ${D}/${sbindir}/nbd3-client
+}
+
+FILES_${PN}-client_append = " ${sbindir}/nbd3-client"
diff --git a/meta-netboot/scripts/run-yocto-check-layer-flags-enabled.sh b/meta-netboot/scripts/run-yocto-check-layer-flags-enabled.sh
new file mode 100755 (executable)
index 0000000..c64afa7
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/bash
+#set -x
+
+SCRIPTPATH="$( cd $(dirname $0) >/dev/null 2>&1 ; pwd -P )"
+echo $SCRIPTPATH
+AGLROOT="$SCRIPTPATH/../../.."
+POKYDIR="$AGLROOT/external/poky"
+TMPROOT=`mktemp -d`
+
+rm -rf ${TMPROOT}/testbuild-ycl || true
+mkdir -p ${TMPROOT}/testbuild-ycl
+cd ${TMPROOT}/testbuild-ycl
+
+source $POKYDIR/oe-init-build-env .
+
+cat << EOF >> conf/local.conf
+# just define defaults
+AGL_FEATURES ?= ""
+AGL_EXTRA_IMAGE_FSTYPES ?= ""
+
+# important settings imported from poky-agl.conf
+# we do not import 
+DISTRO_FEATURES_append = " systemd smack"
+DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " sysvinit"
+VIRTUAL-RUNTIME_init_manager = "systemd"
+
+# workaround
+# ERROR: Nothing PROVIDES 'smack' (but meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.3.bb DEPENDS on or otherwise requires it)
+BBMASK += "meta-oe/recipes-extended/ostree/ostree_2020.3.bb"
+
+NETBOOT_ENABLED = "1"
+NETBOOT_FSTYPES ??= "ext4.gz"
+
+EOF
+
+
+yocto-check-layer \
+       --dependency \
+           $AGLROOT/external/meta-openembedded/meta-oe \
+           $AGLROOT/external/meta-openembedded/meta-python \
+           $AGLROOT/external/meta-openembedded/meta-networking \
+       -- \
+       $AGLROOT/meta-agl/meta-netboot/
+
+
+[ $? = 0 ] && rm -rf ${TMPROOT}/testbuild-ycl
diff --git a/meta-netboot/scripts/run-yocto-check-layer.sh b/meta-netboot/scripts/run-yocto-check-layer.sh
new file mode 100755 (executable)
index 0000000..b3b8e08
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/bash
+#set -x
+
+SCRIPTPATH="$( cd $(dirname $0) >/dev/null 2>&1 ; pwd -P )"
+echo $SCRIPTPATH
+AGLROOT="$SCRIPTPATH/../../.."
+POKYDIR="$AGLROOT/external/poky"
+TMPROOT=`mktemp -d`
+
+rm -rf ${TMPROOT}/testbuild-ycl || true
+mkdir -p ${TMPROOT}/testbuild-ycl
+cd ${TMPROOT}/testbuild-ycl
+
+source $POKYDIR/oe-init-build-env .
+
+cat << EOF >> conf/local.conf
+# just define defaults
+AGL_FEATURES ?= ""
+AGL_EXTRA_IMAGE_FSTYPES ?= ""
+
+# important settings imported from poky-agl.conf
+# we do not import 
+DISTRO_FEATURES_append = " systemd smack"
+DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " sysvinit"
+VIRTUAL-RUNTIME_init_manager = "systemd"
+
+# workaround
+# ERROR: Nothing PROVIDES 'smack' (but meta-openembedded/meta-oe/recipes-extended/ostree/ostree_2020.3.bb DEPENDS on or otherwise requires it)
+BBMASK += "meta-oe/recipes-extended/ostree/ostree_2020.3.bb"
+
+
+EOF
+
+
+yocto-check-layer \
+       --dependency \
+           $AGLROOT/external/meta-openembedded/meta-oe \
+           $AGLROOT/external/meta-openembedded/meta-python \
+           $AGLROOT/external/meta-openembedded/meta-networking \
+       -- \
+       $AGLROOT/meta-agl/meta-netboot/
+
+
+[ $? = 0 ] && rm -rf ${TMPROOT}/testbuild-ycl
index 6811322..5fe2ee2 100644 (file)
@@ -10,3 +10,8 @@ BBFILE_PATTERN_meta-pipewire = "^${LAYERDIR}/"
 BBFILE_PRIORITY_meta-pipewire = "71"
 
 LAYERSERIES_COMPAT_meta-pipewire = "dunfell"
+
+BBFILES_DYNAMIC += " \
+    app-framework:${LAYERDIR}/dynamic-layers/meta-app-framework/*/*/*.bb \
+    app-framework:${LAYERDIR}/dynamic-layers/meta-app-framework/*/*/*.bbappend \
+"
diff --git a/meta-pipewire/dynamic-layers/meta-app-framework/recipes-core/packagegroups/packagegroup-pipewire.bbappend b/meta-pipewire/dynamic-layers/meta-app-framework/recipes-core/packagegroups/packagegroup-pipewire.bbappend
new file mode 100644 (file)
index 0000000..d87bd58
--- /dev/null
@@ -0,0 +1,4 @@
+RDEPENDS_${PN} += " \
+    agl-service-audiomixer \
+    bluez-alsa-pipewire \
+    "
@@ -1,4 +1,6 @@
-SRC_URI += "\
+FILESEXTRAPATHS_prepend := "${THISDIR}/pipewire:"
+
+SRC_URI_append= "\
     file://pipewire@.service \
     file://pipewire@.socket \
     file://smack-pipewire \
@@ -24,7 +26,7 @@ do_install_append() {
     fi
 }
 
-FILES_${PN} += "\
+FILES_${PN}_append = "\
     ${systemd_system_unitdir}/* \
     ${sysconfdir}/smack/accesses.d/* \
 "
diff --git a/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/0001-utils-add-a-gstreamer-helper-application-for-interco.patch b/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/0001-utils-add-a-gstreamer-helper-application-for-interco.patch
deleted file mode 100644 (file)
index 6c9a388..0000000
+++ /dev/null
@@ -1,517 +0,0 @@
-From f2e6a0a324106b40195f88953e55a355875d2b1b Mon Sep 17 00:00:00 2001
-From: George Kiagiadakis <george.kiagiadakis@collabora.com>
-Date: Fri, 4 Oct 2019 20:51:24 +0300
-Subject: [PATCH] utils: add a gstreamer helper application for interconnection
- with pipewire
-
-Unfortunately, the bluez-alsa PCM plugin does not work correctly
-when it is used through pipewire (or gstreamer, or anywhere really...).
-
-Thanfully, the bluez-alsa PCM plugin is only a simple client that
-reads/writes on a file descriptor that was opened by bluealsa.
-This allows us to use bluealsa without the PCM plugin, just like it
-is done in the aplay.c util.
-
-This one uses GStreamer to implement the plumbing between pipewire
-and the file descriptor. On the reading side we are also doing some
-tricks to ensure a smooth stream, which is not the case for the
-stream that is coming out of bluealsa.
-
-This helper is implemented as a patch to bluez-alsa so that it can
-use its internal private API. In the future this needs some re-thinking.
-
-Upstream-Status: Inappropriate
----
- configure.ac       |   7 +
- utils/Makefile.am  |  20 +++
- utils/gst-helper.c | 432 +++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 459 insertions(+)
- create mode 100644 utils/gst-helper.c
-
-diff --git a/configure.ac b/configure.ac
-index 4825afa..9125871 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -141,6 +141,13 @@ AM_COND_IF([ENABLE_HCITOP], [
-       PKG_CHECK_MODULES([NCURSES], [ncurses])
- ])
-+AC_ARG_ENABLE([gsthelper],
-+      [AS_HELP_STRING([--enable-gsthelper], [enable building of gsthelper tool])])
-+AM_CONDITIONAL([ENABLE_GSTHELPER], [test "x$enable_gsthelper" = "xyes"])
-+AM_COND_IF([ENABLE_GSTHELPER], [
-+      PKG_CHECK_MODULES([GST], [gstreamer-1.0 glib-2.0])
-+])
-+
- AC_ARG_ENABLE([test],
-       [AS_HELP_STRING([--enable-test], [enable unit test])])
- AM_CONDITIONAL([ENABLE_TEST], [test "x$enable_test" = "xyes"])
-diff --git a/utils/Makefile.am b/utils/Makefile.am
-index 9057f2c..9790474 100644
---- a/utils/Makefile.am
-+++ b/utils/Makefile.am
-@@ -47,3 +47,23 @@ hcitop_LDADD = \
-       @LIBBSD_LIBS@ \
-       @NCURSES_LIBS@
- endif
-+
-+if ENABLE_GSTHELPER
-+bin_PROGRAMS += bluealsa-gst-helper
-+bluealsa_gst_helper_SOURCES = \
-+      ../src/shared/dbus-client.c \
-+      ../src/shared/ffb.c \
-+      ../src/shared/log.c \
-+      gst-helper.c
-+bluealsa_gst_helper_CFLAGS = \
-+      -I$(top_srcdir)/src \
-+      @ALSA_CFLAGS@ \
-+      @BLUEZ_CFLAGS@ \
-+      @DBUS1_CFLAGS@ \
-+      @GST_CFLAGS@
-+bluealsa_gst_helper_LDADD = \
-+      @ALSA_LIBS@ \
-+      @BLUEZ_LIBS@ \
-+      @DBUS1_LIBS@ \
-+      @GST_LIBS@
-+endif
-diff --git a/utils/gst-helper.c b/utils/gst-helper.c
-new file mode 100644
-index 0000000..de1d47c
---- /dev/null
-+++ b/utils/gst-helper.c
-@@ -0,0 +1,432 @@
-+/* Bluez-Alsa PipeWire integration GStreamer helper
-+ *
-+ * Copyright © 2016-2019 Arkadiusz Bokowy
-+ * Copyright © 2019 Collabora Ltd.
-+ *    @author George Kiagiadakis <george.kiagiadakis@collabora.com>
-+ *
-+ * SPDX-License-Identifier: MIT
-+ */
-+
-+#if HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <errno.h>
-+#include <getopt.h>
-+#include <poll.h>
-+#include <pthread.h>
-+#include <signal.h>
-+#include <stdbool.h>
-+#include <stdint.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <unistd.h>
-+
-+#include <bluetooth/bluetooth.h>
-+#include <dbus/dbus.h>
-+#include <gst/gst.h>
-+
-+#include "shared/dbus-client.h"
-+#include "shared/defs.h"
-+#include "shared/ffb.h"
-+#include "shared/log.h"
-+
-+struct worker {
-+      /* used BlueALSA PCM device */
-+      struct ba_pcm ba_pcm;
-+      /* file descriptor of PCM FIFO */
-+      int ba_pcm_fd;
-+      /* file descriptor of PCM control */
-+      int ba_pcm_ctrl_fd;
-+      /* the gstreamer pipelines (sink & source) */
-+      GstElement *pipeline[2];
-+      /* the queue & pwaudiosink of the sink pipeline */
-+      GstElement *queue;
-+      GstElement *pwelem;
-+};
-+
-+static struct ba_dbus_ctx dbus_ctx;
-+static GHashTable *workers;
-+static bool main_loop_on = true;
-+
-+static void
-+main_loop_stop(int sig)
-+{
-+      /* Call to this handler restores the default action, so on the
-+       * second call the program will be forcefully terminated. */
-+
-+      struct sigaction sigact = { .sa_handler = SIG_DFL };
-+      sigaction(sig, &sigact, NULL);
-+
-+      main_loop_on = false;
-+}
-+
-+static GstBusSyncReply
-+bus_sync_handler(GstBus *bus, GstMessage *message, gpointer user_data)
-+{
-+      struct worker *w = user_data;
-+      GstState s;
-+
-+      switch (GST_MESSAGE_TYPE (message)) {
-+      case GST_MESSAGE_REQUEST_STATE:
-+              gst_message_parse_request_state (message, &s);
-+
-+              debug ("corked: %d", (s == GST_STATE_PAUSED));
-+
-+              /* drop queue data when corked */
-+              g_object_set (w->queue,
-+                      "leaky", (s == GST_STATE_PAUSED) ? 2 /* downstream */ : 0 /* no */,
-+                      NULL);
-+              gst_element_set_state (w->pwelem, s);
-+
-+              /* flush the queue when resuming */
-+              if (s == GST_STATE_PLAYING) {
-+                      gst_element_send_event (w->queue, gst_event_new_flush_start ());
-+                      gst_element_send_event (w->queue, gst_event_new_flush_stop (FALSE));
-+              }
-+              break;
-+      default:
-+              break;
-+      }
-+
-+      gst_message_unref (message);
-+      return GST_BUS_DROP;
-+}
-+
-+static int
-+worker_start_pipeline(struct worker *w, int id, int mode, int profile)
-+{
-+      GError *gerr = NULL;
-+      DBusError err = DBUS_ERROR_INIT;
-+      const gchar * role = NULL;
-+
-+      if (w->pipeline[id])
-+              return 0;
-+
-+      if (!bluealsa_dbus_pcm_open(&dbus_ctx, w->ba_pcm.pcm_path, mode,
-+                              &w->ba_pcm_fd, &w->ba_pcm_ctrl_fd, &err)) {
-+              error("Couldn't open PCM: %s", err.message);
-+              dbus_error_free(&err);
-+              goto fail;
-+      }
-+
-+      if (mode == BA_PCM_FLAG_SINK) {
-+              debug("sink start");
-+              w->pipeline[id] = gst_parse_launch(
-+                      /* add a silent live source to ensure a perfect live stream on the
-+                         output, even when the bt device is not sending or has gaps;
-+                         this also effectively changes the clock to be the system clock,
-+                         which is the same clock used by bluez-alsa on the sending side */
-+                      "audiotestsrc is-live=true wave=silence ! capsfilter name=capsf "
-+                      "! audiomixer name=m "
-+                      /* mix the input from bluez-alsa using fdsrc; rawaudioparse
-+                         is necessary to convert bytes to time and align the buffers */
-+                      "fdsrc name=fdelem do-timestamp=true ! capsfilter name=capsf2 "
-+                      "! rawaudioparse use-sink-caps=true ! m. "
-+                      /* take the mixer output, convert and push to pipewire */
-+                      "m.src ! capsfilter name=capsf3 ! audioconvert ! audioresample "
-+                      "! audio/x-raw,format=F32LE,rate=48000 ! identity sync=true "
-+                      "! queue name=queue leaky=no max-size-time=0 max-size-buffers=0 max-size-bytes=192000 "
-+                      "! pwaudiosink name=pwelem",
-+                      &gerr);
-+
-+              /* a2dp is for music, sco is for calls */
-+              role = (profile == BA_PCM_FLAG_PROFILE_A2DP) ? "Multimedia" : "Communication";
-+      }
-+      else if (mode == BA_PCM_FLAG_SOURCE && profile == BA_PCM_FLAG_PROFILE_SCO) {
-+              debug("source start");
-+              w->pipeline[id] = gst_parse_launch(
-+                      /* read from pipewire and put the buffers on a leaky queue, which
-+                         will essentially allow pwaudiosrc to continue working while
-+                         the fdsink is blocked (when there is no phone call in progress).
-+                         9600 bytes = 50ms @ F32LE/1ch/48000
-+                      */
-+                      "pwaudiosrc name=pwelem ! audio/x-raw,format=F32LE,rate=48000 "
-+                      "! queue name=queue leaky=downstream max-size-time=0 max-size-buffers=0 max-size-bytes=9600 "
-+                      "! audioconvert ! audioresample ! capsfilter name=capsf "
-+                      "! fdsink name=fdelem", &gerr);
-+
-+              role = "Communication";
-+      }
-+
-+      if (gerr) {
-+              error("Failed to start pipeline: %s", gerr->message);
-+              g_error_free(gerr);
-+              goto fail;
-+      }
-+
-+      if (w->pipeline[id]) {
-+              g_autofree gchar *capsstr = NULL;
-+              g_autoptr (GstElement) fdelem = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "fdelem");
-+              g_autoptr (GstElement) pwelem = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "pwelem");
-+              g_autoptr (GstElement) queue = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "queue");
-+              g_autoptr (GstElement) capsf = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "capsf");
-+              g_autoptr (GstElement) capsf2 = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "capsf2");
-+              g_autoptr (GstElement) capsf3 = gst_bin_get_by_name(GST_BIN(w->pipeline[id]), "capsf3");
-+              g_autoptr (GstCaps) caps = gst_caps_new_simple("audio/x-raw",
-+                              "format", G_TYPE_STRING, "S16LE",
-+                              "layout", G_TYPE_STRING, "interleaved",
-+                              "channels", G_TYPE_INT, w->ba_pcm.channels,
-+                              "rate", G_TYPE_INT, w->ba_pcm.sampling,
-+                              NULL);
-+              g_autoptr (GstStructure) stream_props = gst_structure_new("props",
-+                              "media.role", G_TYPE_STRING, role,
-+                              "bluealsa.profile", G_TYPE_STRING,
-+                                      (profile == BA_PCM_FLAG_PROFILE_SCO) ? "sco" : "a2dp",
-+                              NULL);
-+
-+              g_object_set(capsf, "caps", caps, NULL);
-+              if (capsf2)
-+                      g_object_set(capsf2, "caps", caps, NULL);
-+              if (capsf3)
-+                      g_object_set(capsf3, "caps", caps, NULL);
-+
-+              capsstr = gst_caps_to_string (caps);
-+              debug("  caps: %s", capsstr);
-+
-+              g_object_set(fdelem, "fd", w->ba_pcm_fd, NULL);
-+              g_object_set(pwelem, "stream-properties", stream_props, NULL);
-+
-+              if (mode == BA_PCM_FLAG_SINK) {
-+                      g_autoptr (GstBus) bus = gst_pipeline_get_bus(GST_PIPELINE(w->pipeline[id]));
-+                      gst_bus_set_sync_handler(bus, bus_sync_handler, w, NULL);
-+                      w->queue = queue;
-+                      w->pwelem = pwelem;
-+              }
-+
-+              gst_element_set_state(w->pipeline[id], GST_STATE_PLAYING);
-+      }
-+
-+      return 0;
-+fail:
-+      g_clear_object(&w->pipeline[id]);
-+      return -1;
-+}
-+
-+static int
-+worker_start(struct worker *w)
-+{
-+      int mode = w->ba_pcm.flags & (BA_PCM_FLAG_SOURCE | BA_PCM_FLAG_SINK);
-+      int profile = w->ba_pcm.flags & (BA_PCM_FLAG_PROFILE_A2DP | BA_PCM_FLAG_PROFILE_SCO);
-+      /* human-readable BT address */
-+      char addr[18];
-+
-+      g_return_val_if_fail (profile != 0 && profile != (BA_PCM_FLAG_PROFILE_A2DP | BA_PCM_FLAG_PROFILE_SCO), -1);
-+
-+      ba2str(&w->ba_pcm.addr, addr);
-+      debug("%p: worker start addr:%s, mode:0x%x, profile:0x%x", w, addr, mode, profile);
-+
-+      if (mode & BA_PCM_FLAG_SINK)
-+              worker_start_pipeline(w, 0, BA_PCM_FLAG_SINK, profile);
-+      if (mode & BA_PCM_FLAG_SOURCE)
-+              worker_start_pipeline(w, 1, BA_PCM_FLAG_SOURCE, profile);
-+}
-+
-+static int
-+worker_stop(struct worker *w)
-+{
-+      debug("stop worker %p", w);
-+      if (w->pipeline[0]) {
-+              gst_element_set_state(w->pipeline[0], GST_STATE_NULL);
-+              g_clear_object(&w->pipeline[0]);
-+      }
-+      if (w->pipeline[1]) {
-+              gst_element_set_state(w->pipeline[1], GST_STATE_NULL);
-+              g_clear_object(&w->pipeline[1]);
-+      }
-+      if (w->ba_pcm_fd != -1) {
-+              close(w->ba_pcm_fd);
-+              w->ba_pcm_fd = -1;
-+      }
-+      if (w->ba_pcm_ctrl_fd != -1) {
-+              close(w->ba_pcm_ctrl_fd);
-+              w->ba_pcm_ctrl_fd = -1;
-+      }
-+      return 0;
-+}
-+
-+static int
-+supervise_pcm_worker(struct worker *worker)
-+{
-+      if (worker == NULL)
-+              return -1;
-+
-+      /* no mode? */
-+      if (worker->ba_pcm.flags & (BA_PCM_FLAG_SOURCE | BA_PCM_FLAG_SINK) == 0)
-+              goto stop;
-+
-+      /* no profile? */
-+      if (worker->ba_pcm.flags & (BA_PCM_FLAG_PROFILE_A2DP | BA_PCM_FLAG_PROFILE_SCO) == 0)
-+              goto stop;
-+
-+      /* check whether SCO has selected codec */
-+      if (worker->ba_pcm.flags & BA_PCM_FLAG_PROFILE_SCO &&
-+                      worker->ba_pcm.codec == 0) {
-+              debug("Skipping SCO with codec not selected");
-+              goto stop;
-+      }
-+
-+start:
-+      return worker_start(worker);
-+stop:
-+      return worker_stop(worker);
-+}
-+
-+static void
-+worker_new(struct ba_pcm *pcm)
-+{
-+      struct worker *w = g_slice_new0 (struct worker);
-+      memcpy(&w->ba_pcm, pcm, sizeof(struct ba_pcm));
-+      w->ba_pcm_fd = -1;
-+      w->ba_pcm_ctrl_fd = -1;
-+      g_hash_table_insert(workers, w->ba_pcm.pcm_path, w);
-+      supervise_pcm_worker(w);
-+}
-+
-+static DBusHandlerResult
-+dbus_signal_handler(DBusConnection *conn, DBusMessage *message, void *data)
-+{
-+      (void)conn;
-+      (void)data;
-+
-+      const char *path = dbus_message_get_path(message);
-+      const char *interface = dbus_message_get_interface(message);
-+      const char *signal = dbus_message_get_member(message);
-+
-+      DBusMessageIter iter;
-+      struct worker *worker;
-+
-+      if (strcmp(interface, BLUEALSA_INTERFACE_MANAGER) == 0) {
-+
-+              if (strcmp(signal, "PCMAdded") == 0) {
-+                      struct ba_pcm pcm;
-+                      if (!dbus_message_iter_init(message, &iter) ||
-+                                      !bluealsa_dbus_message_iter_get_pcm(&iter, NULL, &pcm)) {
-+                              error("Couldn't add new PCM: %s", "Invalid signal signature");
-+                              goto fail;
-+                      }
-+                      worker_new(&pcm);
-+                      return DBUS_HANDLER_RESULT_HANDLED;
-+              }
-+
-+              if (strcmp(signal, "PCMRemoved") == 0) {
-+                      if (!dbus_message_iter_init(message, &iter) ||
-+                                      dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_OBJECT_PATH) {
-+                              error("Couldn't remove PCM: %s", "Invalid signal signature");
-+                              goto fail;
-+                      }
-+                      dbus_message_iter_get_basic(&iter, &path);
-+                      g_hash_table_remove(workers, path);
-+                      return DBUS_HANDLER_RESULT_HANDLED;
-+              }
-+
-+      }
-+
-+      if (strcmp(interface, DBUS_INTERFACE_PROPERTIES) == 0) {
-+              worker = g_hash_table_lookup(workers, path);
-+              if (!worker)
-+                      goto fail;
-+              if (!dbus_message_iter_init(message, &iter) ||
-+                              dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING) {
-+                      error("Couldn't update PCM: %s", "Invalid signal signature");
-+                      goto fail;
-+              }
-+              dbus_message_iter_get_basic(&iter, &interface);
-+              dbus_message_iter_next(&iter);
-+              if (!bluealsa_dbus_message_iter_get_pcm_props(&iter, NULL, &worker->ba_pcm))
-+                      goto fail;
-+              supervise_pcm_worker(worker);
-+              return DBUS_HANDLER_RESULT_HANDLED;
-+      }
-+
-+fail:
-+      return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
-+}
-+
-+static void
-+destroy_worker(void *worker)
-+{
-+      struct worker *w = worker;
-+      worker_stop(w);
-+      g_slice_free(struct worker, w);
-+}
-+
-+int
-+main(int argc, char *argv[])
-+{
-+      int ret = EXIT_SUCCESS;
-+
-+      log_open(argv[0], false, false);
-+      gst_init(&argc, &argv);
-+      dbus_threads_init_default();
-+
-+      DBusError err = DBUS_ERROR_INIT;
-+      if (!bluealsa_dbus_connection_ctx_init(&dbus_ctx, BLUEALSA_SERVICE, &err)) {
-+              error("Couldn't initialize D-Bus context: %s", err.message);
-+              return EXIT_FAILURE;
-+      }
-+
-+      bluealsa_dbus_connection_signal_match_add(&dbus_ctx,
-+                      BLUEALSA_SERVICE, NULL, BLUEALSA_INTERFACE_MANAGER, "PCMAdded", NULL);
-+      bluealsa_dbus_connection_signal_match_add(&dbus_ctx,
-+                      BLUEALSA_SERVICE, NULL, BLUEALSA_INTERFACE_MANAGER, "PCMRemoved", NULL);
-+      bluealsa_dbus_connection_signal_match_add(&dbus_ctx,
-+                      BLUEALSA_SERVICE, NULL, DBUS_INTERFACE_PROPERTIES, "PropertiesChanged",
-+                      "arg0='"BLUEALSA_INTERFACE_PCM"'");
-+
-+      if (!dbus_connection_add_filter(dbus_ctx.conn, dbus_signal_handler, NULL, NULL)) {
-+              error("Couldn't add D-Bus filter: %s", err.message);
-+              return EXIT_FAILURE;
-+      }
-+
-+      workers = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, destroy_worker);
-+
-+      {
-+              struct ba_pcm *pcms = NULL;
-+              size_t pcms_count = 0, i;
-+
-+              if (!bluealsa_dbus_get_pcms(&dbus_ctx, &pcms, &pcms_count, &err))
-+                      warn("Couldn't get BlueALSA PCM list: %s", err.message);
-+
-+              for (i = 0; i < pcms_count; i++) {
-+                      worker_new(&pcms[i]);
-+              }
-+
-+              free(pcms);
-+      }
-+
-+      struct sigaction sigact = { .sa_handler = main_loop_stop };
-+      sigaction(SIGTERM, &sigact, NULL);
-+      sigaction(SIGINT, &sigact, NULL);
-+
-+      /* Ignore SIGPIPE, which may be received when writing to the bluealsa
-+         socket when it is closed on the remote end */
-+      signal(SIGPIPE, SIG_IGN);
-+
-+      debug("Starting main loop");
-+      while (main_loop_on) {
-+
-+              struct pollfd pfds[10];
-+              nfds_t pfds_len = ARRAYSIZE(pfds);
-+
-+              if (!bluealsa_dbus_connection_poll_fds(&dbus_ctx, pfds, &pfds_len)) {
-+                      error("Couldn't get D-Bus connection file descriptors");
-+                      ret = EXIT_FAILURE;
-+                      goto out;
-+              }
-+
-+              if (poll(pfds, pfds_len, -1) == -1 &&
-+                              errno == EINTR)
-+                      continue;
-+
-+              if (bluealsa_dbus_connection_poll_dispatch(&dbus_ctx, pfds, pfds_len))
-+                      while (dbus_connection_dispatch(dbus_ctx.conn) == DBUS_DISPATCH_DATA_REMAINS)
-+                              continue;
-+
-+      }
-+
-+out:
-+      g_hash_table_unref(workers);
-+      return ret;
-+}
--- 
-2.24.0
-
diff --git a/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/bluealsa-gst-helper@.service b/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa/bluealsa-gst-helper@.service
deleted file mode 100644 (file)
index 495ab62..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-[Unit]
-Description=Bluetooth audio helper for user %i
-Requires=pipewire@%i.socket bluez-alsa.service
-After=pipewire@%i.socket bluez-alsa.service
-
-[Service]
-Type=simple
-Restart=on-failure
-ExecStart=/usr/bin/bluealsa-gst-helper
-
-Environment=XDG_RUNTIME_DIR=/run/user/%i
-Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%i/bus
-
-User=%i
-Slice=user-%i.slice
-SupplementaryGroups=audio
-UMask=0077
-CapabilityBoundingSet=
diff --git a/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa_git.bbappend b/meta-pipewire/recipes-connectivity/bluez-alsa/bluez-alsa_git.bbappend
deleted file mode 100644 (file)
index 2f9699a..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
-SRC_URI += "\
-    file://0001-utils-add-a-gstreamer-helper-application-for-interco.patch \
-    file://bluealsa-gst-helper@.service \
-    "
-
-PACKAGECONFIG += "gsthelper"
-PACKAGECONFIG[gsthelper] = "--enable-gsthelper, --disable-gsthelper, gstreamer1.0"
-
-do_install_append() {
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-        # install the service file
-        mkdir -p ${D}${systemd_system_unitdir}/
-        install -m 0644 ${WORKDIR}/bluealsa-gst-helper@.service ${D}${systemd_system_unitdir}/bluealsa-gst-helper@.service
-
-        # enable the helper to start together with afm-user-session
-        mkdir -p ${D}${systemd_system_unitdir}/afm-user-session@.target.wants
-        ln -sf ../bluealsa-gst-helper@.service ${D}${systemd_system_unitdir}/afm-user-session@.target.wants/bluealsa-gst-helper@.service
-    fi
-}
-
-PACKAGES =+ "${PN}-pipewire"
-
-FILES_${PN}-pipewire = "\
-    ${bindir}/bluealsa-gst-helper \
-    ${systemd_system_unitdir}/bluealsa-gst-helper@.service \
-    ${systemd_system_unitdir}/afm-user-session@.target.wants/bluealsa-gst-helper@.service \
-    "
-RDEPENDS_${PN}-pipewire += "\
-    bluez-alsa \
-    pipewire \
-    gstreamer1.0-plugins-base \
-    gstreamer1.0-pipewire \
-    "
index 4020f1e..a20f8a4 100644 (file)
@@ -9,9 +9,7 @@ PACKAGES = "\
     "
 
 RDEPENDS_${PN} += "\
-    agl-service-audiomixer \
     pipewire \
     pipewire-alsa \
     gstreamer1.0-pipewire \
-    bluez-alsa-pipewire \
 "
index 4405f7b..afc4303 100644 (file)
@@ -3,7 +3,6 @@ priority = 30
 properties = [
   { name = "media.class", value = "Audio/Sink" },
   { name = "api.alsa.card.id", value = "ak4613" },
-  { name = "api.alsa.pcm.device", value = "0" },
 ]
 
 [endpoint]
index 0c7b208..53f9d0d 100644 (file)
@@ -3,7 +3,6 @@ priority = 30
 properties = [
   { name = "media.class", value = "Audio/Sink" },
   { name = "api.alsa.card.id", value = "rcarsound" },
-  { name = "api.alsa.pcm.device", value = "0" },
 ]
 
 [endpoint]
diff --git a/meta-pipewire/scripts/run-yocto-check-layer.sh b/meta-pipewire/scripts/run-yocto-check-layer.sh
new file mode 100755 (executable)
index 0000000..15b4de0
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/bash
+#set -x
+
+SCRIPTPATH="$( cd $(dirname $0) >/dev/null 2>&1 ; pwd -P )"
+echo $SCRIPTPATH
+AGLROOT="$SCRIPTPATH/../../.."
+POKYDIR="$AGLROOT/external/poky"
+TMPROOT=`mktemp -d`
+
+rm -rf ${TMPROOT}/testbuild-ycl || true
+mkdir -p ${TMPROOT}/testbuild-ycl
+cd ${TMPROOT}/testbuild-ycl
+
+source $POKYDIR/oe-init-build-env .
+
+cat << EOF >> conf/local.conf
+# just define defaults
+AGL_FEATURES ?= ""
+AGL_EXTRA_IMAGE_FSTYPES ?= ""
+
+# important settings imported from poky-agl.conf
+# we do not import 
+DISTRO_FEATURES_append = " systemd smack"
+DISTRO_FEATURES_BACKFILL_CONSIDERED_append = " sysvinit"
+VIRTUAL-RUNTIME_init_manager = "systemd"
+
+EOF
+
+
+yocto-check-layer \
+       -- \
+       $AGLROOT/meta-agl/meta-pipewire
+
+
+[ $? = 0 ] && rm -rf ${TMPROOT}/testbuild-ycl
diff --git a/meta-security/COPYING.MIT b/meta-security/COPYING.MIT
deleted file mode 100644 (file)
index 89de354..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/meta-security/README.md b/meta-security/README.md
deleted file mode 100644 (file)
index 6a8024b..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-This README file contains information on the contents of the
-meta-security layer.
-
-Please see the corresponding sections below for details.
-
-
-Dependencies
-============
-
-This layer depends on:
-
-    URI: git://git.openembedded.org/bitbake
-    branch: master
-
-    URI: git://git.openembedded.org/openembedded-core
-    layers: meta
-    branch: master
-
-    URI: git://git.yoctoproject.org/meta-security
-    branch: master
-
-
-Patches
-=======
-
-Please submit any patches against the meta-security layer via gerrit
-reviews.
-
-For discussion use the discussion mailing list
-https://lists.automotivelinux.org/g/agl-dev-community
-
diff --git a/meta-security/conf/layer.conf b/meta-security/conf/layer.conf
deleted file mode 100644 (file)
index 6024d28..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# We have a conf and classes directory, add to BBPATH
-BBPATH =. "${LAYERDIR}:"
-
-# We have a packages directory, add to BBFILES
-BBFILES += " ${LAYERDIR}/recipes-*/*/*.bb \
-             ${LAYERDIR}/recipes-*/*/*.bbappend \
-           "
-
-# Must prioritize our rpm recipe over the default ones.
-BBFILE_COLLECTIONS += "security-smack"
-BBFILE_PATTERN_security-smack := "^${LAYERDIR}/"
-BBFILE_PRIORITY_security-smack = "60"
-
-LAYERSERIES_COMPAT_security-smack = "dunfell"
diff --git a/meta-security/recipes-kernel/linux/linux/audit.cfg b/meta-security/recipes-kernel/linux/linux/audit.cfg
deleted file mode 100644 (file)
index 214dbe3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-CONFIG_AUDIT=y
-CONFIG_AUDITSYSCALL=y
diff --git a/meta-security/recipes-security/smacknet/files/smacknet b/meta-security/recipes-security/smacknet/files/smacknet
deleted file mode 100644 (file)
index 3818d30..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-#!/usr/bin/python
-# Copyright (c) 2012, 2013, Intel Corporation 
-# Copyright (c) 2009 David Wolinsky <davidiw@ufl.edu), University of Florida
-# All rights reserved.
-# 
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. The name of the author may not be used to endorse or promote products
-#    derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import socket,fcntl, struct, thread
-import os.path
-import sys
-
-SMACKFS_LOAD="/sys/fs/smackfs/load2"
-SMACKFS_NETLABEL="/sys/fs/smackfs/netlabel"
-SIOCGIFADDR = 0x8915
-SIOCGIFNETMASK = 0x891b
-
-def get_ip_address(ifname):
-    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-    return fcntl.ioctl(s.fileno(), SIOCGIFADDR, 
-                       struct.pack('256s', ifname.encode("utf-8")))[20:24]
-
-def get_netmask(ifname):
-   s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-   return fcntl.ioctl(s.fileno(), SIOCGIFNETMASK, 
-                       struct.pack('256s', ifname.encode("utf-8")))[20:24]
-
-def applynetlabeltags(interface, addr):
-       if not interface.startswith("lo"):
-               bmask = get_netmask(interface.encode("utf-8"))
-               prefix = bin(struct.unpack(">L", bmask)[0]).count("1")
-               tags = [
-                       addr+"/"+str(prefix)+" Network::Local\n", 
-                       "0.0.0.0/0 Network::Cloud\n",
-                       "127.0.0.1/8 -CIPSO\n"]
-               smackfs_netlabel(tags)
-       
-def loadnetlabelrules():
-       rulesSystem = [
-               "System Network::Cloud w\n",
-               "System Network::Local w\n",
-               "Network::Cloud System w\n",
-               "Network::Local System w\n"]
-       smackfs_load2(rulesSystem)
-
-def smackfs_load2 (rules):
-       with open(SMACKFS_LOAD, "w") as load2:
-               for rule in rules:
-                       load2.write(rule)
-
-def smackfs_netlabel (tags):
-       for tag in tags:
-               with open(SMACKFS_NETLABEL, "w") as netlabel:
-                       netlabel.write(tag)
-
-""" 
-    Source of: Class ip monitor, and other functions named bellow.
-    Original author: David Wolinsky <davidiw@ufl.edu
-    Copied from: https://github.com/davidiw/Grid-Appliance/blob/master/scripts/ip_monitor.py
-    
-"""
-
-"""4 byte alignment"""
-
-def align(inc):
-       diff = inc % 4
-       return inc + ((4 - diff) % 4)
-
-class ifaddr:
-  """Parse an ifaddr packet"""
-  LOCAL = 2
-  LABEL = 3
-
-  def __init__(self, packet):
-    self.family, self.prefixlen, self.flags, self.scope, self.index = \
-        struct.unpack("BBBBI", packet[:8])
-
-class rtattr:
-  """Parse a rtattr packet"""
-  GRP_IPV4_IFADDR = 0x10
-
-  NEWADDR = 20
-  DELADDR = 21
-  GETADDR = 22
-
-  def __init__(self, packet):
-    self.len, self.type = struct.unpack("HH", packet[:4])
-    if self.type == ifaddr.LOCAL:
-      addr = struct.unpack("BBBB", packet[4:self.len])
-      self.payload = "%s.%s.%s.%s" % (addr[0], addr[1], addr[2], addr[3])
-    elif self.type == ifaddr.LABEL:
-      self.payload = packet[4:self.len].strip("\0")
-    else:
-      self.payload = packet[4:self.len]
-
-class netlink:
-  """Parse a netlink packet"""
-  REQUEST = 1
-  ROOT = 0x100
-  MATCH = 0x200
-  DONE = 3
-
-  def __init__(self, packet):
-    self.msglen, self.msgtype, self.flags, self.seq, self.pid = \
-        struct.unpack("IHHII", packet[:16])
-    self.ifa = None
-    try:
-      self.ifa = ifaddr(packet[16:24])
-    except:
-      return
-
-    self.rtas = {}
-    pos = 24
-    while pos < self.msglen:
-      try:
-        rta = rtattr(packet[pos:])
-      except:
-        break
-      pos += align(rta.len)
-      self.rtas[rta.type] = rta.payload
-
-class ip_monitor:
-  def __init__(self, callback = None):
-    if callback == None:
-      callback = self.print_cb
-    self._callback = callback
-
-  def print_cb(self, label, addr):
-    print (label + " => " + addr)
-
-  def request_addrs(self, sock):
-    sock.send(struct.pack("IHHIIBBBBI", 24, rtattr.GETADDR, \
-      netlink.REQUEST | netlink.ROOT | netlink.MATCH, 0, sock.getsockname()[0], \
-      socket.AF_INET, 0, 0, 0, 0))
-
-  def start_thread(self):
-    thread.start_new_thread(self.run, ())
-
-  def run(self):
-    sock = socket.socket(socket.AF_NETLINK, socket.SOCK_RAW, socket.NETLINK_ROUTE)
-    sock.bind((0, rtattr.GRP_IPV4_IFADDR))
-    self.request_addrs(sock)
-
-    while True:
-      data = sock.recv(4096)
-      pos = 0
-      while pos < len(data):
-        nl = netlink(data[pos:])
-        if nl.msgtype == netlink.DONE:
-          break
-        pos += align(nl.msglen)
-        if nl.msgtype != rtattr.NEWADDR:
-          continue
-        self._callback(nl.rtas[ifaddr.LABEL], nl.rtas[ifaddr.LOCAL])
-
-def main():
-       if not os.path.isfile(SMACKFS_LOAD):
-               print ("Smack not found.")
-               return -1
-       loadnetlabelrules()
-       
-       ip_monitor(applynetlabeltags).run()
-
-if __name__ == "__main__":
-    main()
diff --git a/meta-security/recipes-security/smacknet/files/smacknet.service b/meta-security/recipes-security/smacknet/files/smacknet.service
deleted file mode 100644 (file)
index 218d8b8..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=netlabels configuration for SMACK
-Wants=network.target network-online.target
-After=network.target network-online.target
-
-[Service]
-TimeoutStartSec=0
-ExecStart=@BINDIR@/smacknet
-
-[Install]
-WantedBy=multi-user.target
diff --git a/meta-security/recipes-security/smacknet/smacknet.bb b/meta-security/recipes-security/smacknet/smacknet.bb
deleted file mode 100644 (file)
index 250cdb1..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#SMACKNET Description
-SUMMARY = "Smack network labels configuration"
-DESCRIPTION = "Provide service that will be labeling the network rules"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
-RDEPENDS_${PN} = "python"
-
-SRC_URI += "file://smacknet \
-        file://smacknet.service \
-       "
-S = "${WORKDIR}"
-
-inherit systemd
-
-inherit features_check
-REQUIRED_DISTRO_FEATURES = "smack"
-
-#netlabel configuration service
-SYSTEMD_SERVICE_${PN} = "smacknet.service"
-SYSTEMD_AUTO_ENABLE = "enable"
-do_install(){
-        install -d ${D}${bindir}
-        install -m 0551 ${WORKDIR}/smacknet ${D}${bindir}
-
-        install -d -m 755 ${D}${systemd_unitdir}/system
-        install -m 644 ${WORKDIR}/smacknet.service ${D}${systemd_unitdir}/system
-        sed -i -e 's,@BINDIR@,${bindir},g' ${D}${systemd_unitdir}/system/smacknet.service
-}
-   
diff --git a/scripts/README-mkefi-agl.md b/scripts/README-mkefi-agl.md
deleted file mode 100644 (file)
index 2262fb1..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-# Introduction
-
-This script will install the AGL distribution on a removable device to boot on Intel UEFI-based computer.
-
-In particular it can create a USB or SD bootable support for [MinnowBoard](www.minnowboard.org).
-
-Usage: mkefi-agl.sh [-v] IDSK_IMAGE REMOVABLE_DEVICE
-       -v: Verbose debug
-       HDDIMG: The DISK_IMAGE file generated by Yocto the efi disk from
-               Supported formats are .hddimg, .wic .wic.xz
-       REMOVABLE_DEVICE: The block device to write the image to, e.g. /dev/sdh
-ex:
-   mkefi-agl.sh   agl-demo-platform-intel-corei7-64.hddimg /dev/sdd
-   mkefi-agl.sh   agl-demo-platform-intel-corei7-64.wic.xz /dev/sdd
-
-## Documentation
-
-[Additional documentation](https://wiki.automotivelinux.org/agl-distro/developer_resources_intel)
index b49c44d..d55cbef 100644 (file)
@@ -6,6 +6,3 @@ DISTRO = "poky-agl"
 
 #see meta-agl/meta-agl-profile-core/conf/include/base-agl.inc
 require conf/include/base-agl.inc
-
-#see meta-agl/meta-app-framework/conf/include/agl-appfw-smack.inc
-require conf/include/agl-appfw-smack.inc
index c4f4399..bbf1b2a 100644 (file)
@@ -4,7 +4,7 @@
 
 # ARM 32bit 'medium' compiler (armv7thf instead of armv7ve)
 # (only use for CPUs <= cortex-a9 / w/o virt extension - e.g. cortex-a8)
-# DISTRO_FEATURES_append = " agl-medium-arm-compiler"
+# AGL_FEATURES_append = " agl-medium-arm-compiler"
 
 
 ######################
index 653f6db..0dd28da 100644 (file)
@@ -24,27 +24,15 @@ YOCTO_LAYERS = " \
 #   with some automotive tools/libraries
 #-----------------------------------------------------
 AGL_CORE_LAYERS = " \
-  ${METADIR}/meta-agl/meta-agl-profile-core \
-  ${METADIR}/meta-agl/meta-agl-distro \
+  ${METADIR}/meta-agl/meta-agl-core \
+  ${METADIR}/meta-agl/meta-agl-core-test \
   ${METADIR}/meta-agl/meta-agl-bsp \
   "
 
-AGL_APPFW_LAYERS = " \
-  ${METADIR}/external/meta-security \
-  ${METADIR}/external/meta-openembedded/meta-perl \
-  ${METADIR}/meta-agl/meta-security \
-  ${METADIR}/meta-agl/meta-app-framework \
-    "
-
-
 # These are the direct dependencies of the AGL CORE Layers
 #---------------------------------------------------------
 AGL_CORE_DEPENDENCY_LAYERS = " \
   ${METADIR}/external/meta-openembedded/meta-oe \
-  ${METADIR}/external/meta-openembedded/meta-multimedia \
-  ${METADIR}/external/meta-openembedded/meta-networking \
-  ${METADIR}/external/meta-openembedded/meta-python \
-  ${METADIR}/external/meta-openembedded/meta-filesystems \
   "
 
 ####################
@@ -52,15 +40,13 @@ AGL_CORE_DEPENDENCY_LAYERS = " \
 BBLAYERS ?= " \
   ${AGL_CORE_DEPENDENCY_LAYERS} \
   ${AGL_CORE_LAYERS} \
-  ${AGL_APPFW_LAYERS} \
   ${YOCTO_LAYERS} \
   "
 
 BBLAYERS_NON_REMOVABLE ?= " \
   ${METADIR}/external/poky/meta \
   ${METADIR}/external/poky/meta-poky \
-  ${METADIR}/meta-agl/meta-agl-profile-core \
-  ${METADIR}/meta-agl/meta-agl-distro \
+  ${METADIR}/meta-agl/meta-agl-core \
   "
 
 
diff --git a/templates/feature/agl-appfw-smack/50_bblayers.conf.inc b/templates/feature/agl-appfw-smack/50_bblayers.conf.inc
new file mode 100644 (file)
index 0000000..5f6847a
--- /dev/null
@@ -0,0 +1,9 @@
+AGL_APPFW_LAYERS = " \
+  ${METADIR}/external/meta-security \
+  ${METADIR}/external/meta-openembedded/meta-python \
+  ${METADIR}/external/meta-openembedded/meta-networking \
+  ${METADIR}/external/meta-openembedded/meta-perl \
+  ${METADIR}/meta-agl/meta-app-framework \
+    "
+
+BBLAYERS =+ "${AGL_APPFW_LAYERS}"
\ No newline at end of file
index d251e18..21fdf3a 100644 (file)
@@ -1,4 +1,4 @@
 # In order to enable the hmi-framework features ,
 # enables the following line:
 #
-DISTRO_FEATURES_append = " agl-hmi-framework"
+AGL_FEATURES_append = " agl-hmi-framework"
diff --git a/templates/feature/agl-localdev/80_bblayers.conf.inc b/templates/feature/agl-localdev/80_bblayers.conf.inc
new file mode 100644 (file)
index 0000000..d9bb9d0
--- /dev/null
@@ -0,0 +1,3 @@
+# Local derivations during development, just add a layer in the folder meta-localdev
+BBLAYERS =+ "${@'${METADIR}/meta-localdev' if os.path.exists('${METADIR}/meta-localdev') else ''}"
+
diff --git a/templates/feature/agl-localdev/80_local.conf.inc b/templates/feature/agl-localdev/80_local.conf.inc
new file mode 100644 (file)
index 0000000..6c92135
--- /dev/null
@@ -0,0 +1,2 @@
+# (weak) include userspecific local.dev.inc
+include local.dev.inc
diff --git a/templates/feature/agl-localdev/README_feature_agl-localdev.md b/templates/feature/agl-localdev/README_feature_agl-localdev.md
new file mode 100644 (file)
index 0000000..111ae4e
--- /dev/null
@@ -0,0 +1,9 @@
+---
+description: enable local layer for development purposes
+authors: Stéphane Desneux <stephane.desneux@iot.bzh>
+---
+       
+### Feature agl-localdev
+        
+Adds a local layer named "meta-localdev" in meta directory and a local.dev.inc conf file if present.
+
index 3d2ed64..80ace82 100644 (file)
@@ -1 +1,2 @@
-BBLAYERS =+ "${METADIR}/meta-agl/meta-netboot"
+BBLAYERS =+ " ${METADIR}/meta-agl/meta-netboot \
+            "
diff --git a/templates/feature/agl-profile-cluster-qt5/50_bblayers.conf.inc b/templates/feature/agl-profile-cluster-qt5/50_bblayers.conf.inc
deleted file mode 100644 (file)
index f1aef07..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-BBLAYERS =+ " \
-  ${METADIR}/meta-agl/meta-agl-profile-cluster-qt5 \
-"
diff --git a/templates/feature/agl-profile-cluster-qt5/README_feature_agl-profile-cluster-qt5.md b/templates/feature/agl-profile-cluster-qt5/README_feature_agl-profile-cluster-qt5.md
deleted file mode 100644 (file)
index 095a8db..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
----
-description: Feature agl-profile-cluster-qt5
-authors: Scott Murray <scott.murray@konsulko.com>
----
-       
-### Feature agl-profile-cluster-qt5
-        
-*Description is missing - please complete file meta-agl/templates/feature/agl-profile-cluster-qt5/README_feature_agl-profile-cluster-qt5.md*
-
-#### Dependent features pulled by agl-profile-cluster-qt5
-
-The following features are pulled:
-
-* agl-profile-graphical-qt5
-
diff --git a/templates/feature/agl-profile-cluster-qt5/included.dep b/templates/feature/agl-profile-cluster-qt5/included.dep
deleted file mode 100644 (file)
index 21b1fa6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-agl-profile-graphical-qt5
diff --git a/templates/feature/agl-profile-cluster/50_bblayers.conf.inc b/templates/feature/agl-profile-cluster/50_bblayers.conf.inc
deleted file mode 100644 (file)
index b430dc7..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-BBLAYERS =+ " \
-  ${METADIR}/meta-agl/meta-agl-profile-cluster \
-"
diff --git a/templates/feature/agl-profile-cluster/README_feature_agl-profile-cluster.md b/templates/feature/agl-profile-cluster/README_feature_agl-profile-cluster.md
deleted file mode 100644 (file)
index 544dc7c..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
----
-description: Feature agl-profile-cluster
-authors: Scott Murray <scott.murray@konsulko.com>
----
-       
-### Feature agl-profile-cluster
-        
-*Description is missing - please complete file meta-agl/templates/feature/agl-profile-cluster/README_feature_agl-profile-cluster.md*
-
-#### Dependent features pulled by agl-profile-cluster
-
-The following features are pulled:
-
-* agl-profile-graphical
-
diff --git a/templates/feature/agl-profile-cluster/included.dep b/templates/feature/agl-profile-cluster/included.dep
deleted file mode 100644 (file)
index 032609b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-agl-profile-graphical
diff --git a/templates/feature/agl-profile-graphical-html5/50_bblayers.conf.inc b/templates/feature/agl-profile-graphical-html5/50_bblayers.conf.inc
deleted file mode 100644 (file)
index a35f93f..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-BBLAYERS =+ " \
-       ${METADIR}/meta-agl/meta-agl-profile-graphical-html5 \
-       ${METADIR}/external/meta-python2 \
-       "
-
diff --git a/templates/feature/agl-profile-graphical-html5/50_local.conf.inc b/templates/feature/agl-profile-graphical-html5/50_local.conf.inc
deleted file mode 100644 (file)
index 0b2d700..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-
-IMAGE_INSTALL_append = " packagegroup-agl-profile-graphical-html5"
-
diff --git a/templates/feature/agl-profile-graphical-html5/README_feature_agl-profile-graphical-html5.md b/templates/feature/agl-profile-graphical-html5/README_feature_agl-profile-graphical-html5.md
deleted file mode 100644 (file)
index dc00f94..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
----
-description: Feature agl-profile-graphical-html5
-authors: Jacobo Aragunde Pérez <jaragunde@igalia.com>
----
-
-### Feature agl-profile-graphical-html5
-
-Packages required to run web applications in AGL. The provided image agl-image-graphical-html5 includes the minimum set of packages required for this purpose.
diff --git a/templates/feature/agl-profile-graphical-html5/included.dep b/templates/feature/agl-profile-graphical-html5/included.dep
deleted file mode 100644 (file)
index 032609b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-agl-profile-graphical
diff --git a/templates/feature/agl-profile-graphical-qt5/50_bblayers.conf.inc b/templates/feature/agl-profile-graphical-qt5/50_bblayers.conf.inc
deleted file mode 100644 (file)
index 9602679..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-BBLAYERS =+ " \
-  ${METADIR}/meta-agl/meta-agl-profile-graphical-qt5 \
-"
-
-# These are the dependencies
-#---------------------------
-BBLAYERS =+ " \
-   ${METADIR}/external/meta-qt5 \
-"
diff --git a/templates/feature/agl-profile-graphical-qt5/README_feature_agl-profile-graphical-qt5.md b/templates/feature/agl-profile-graphical-qt5/README_feature_agl-profile-graphical-qt5.md
deleted file mode 100644 (file)
index 387de2c..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
----
-description: Feature agl-profile-graphical-qt5
-authors: Jan-Simon Möller <jsmoeller@linuxfoundation.org>
----
-       
-### Feature agl-profile-graphical-qt5
-        
-*Description is missing - please complete file meta-agl/templates/feature/agl-profile-graphical-qt5/README_feature_agl-profile-graphical-qt5.md*
-
-#### Dependent features pulled by agl-profile-graphical-qt5
-
-The following features are pulled:
-
-* agl-profile-graphical
-
diff --git a/templates/feature/agl-profile-graphical-qt5/included.dep b/templates/feature/agl-profile-graphical-qt5/included.dep
deleted file mode 100644 (file)
index 5b54430..0000000
+++ /dev/null
@@ -1 +0,0 @@
-agl-profile-graphical 
\ No newline at end of file
diff --git a/templates/feature/agl-profile-graphical/50_bblayers.conf.inc b/templates/feature/agl-profile-graphical/50_bblayers.conf.inc
deleted file mode 100644 (file)
index 44b0885..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-BBLAYERS =+ " \
-  ${METADIR}/meta-agl/meta-agl-profile-graphical \
-"
diff --git a/templates/feature/agl-profile-graphical/README_feature_agl-profile-graphical.md b/templates/feature/agl-profile-graphical/README_feature_agl-profile-graphical.md
deleted file mode 100644 (file)
index 594d047..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
----
-description: Feature agl-profile-graphical
-authors: Jan-Simon Möller <jsmoeller@linuxfoundation.org>
----
-       
-### Feature agl-profile-graphical
-        
-*Description is missing - please complete file meta-agl/templates/feature/agl-profile-graphical/README_feature_agl-profile-graphical.md*
-
diff --git a/templates/feature/agl-profile-hud/50_bblayers.conf.inc b/templates/feature/agl-profile-hud/50_bblayers.conf.inc
deleted file mode 100644 (file)
index 0473837..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-BBLAYERS =+ " \
-  ${METADIR}/meta-agl/meta-agl-profile-hud \
-"
diff --git a/templates/feature/agl-profile-hud/README_feature_agl-profile-hud.md b/templates/feature/agl-profile-hud/README_feature_agl-profile-hud.md
deleted file mode 100644 (file)
index b4387c1..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
----
-description: Feature agl-profile-hud
-authors: Jan-Simon Möller <jsmoeller@linuxfoundation.org>
----
-       
-### Feature agl-profile-hud
-        
-*Description is missing - please complete file meta-agl/templates/feature/agl-profile-hud/README_feature_agl-profile-hud.md*
-
diff --git a/templates/feature/agl-profile-telematics/50_bblayers.conf.inc b/templates/feature/agl-profile-telematics/50_bblayers.conf.inc
deleted file mode 100644 (file)
index 874b438..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-BBLAYERS =+ " \
-  ${METADIR}/meta-agl/meta-agl-profile-telematics \
-"
diff --git a/templates/feature/agl-profile-telematics/README_feature_agl-profile-telematics.md b/templates/feature/agl-profile-telematics/README_feature_agl-profile-telematics.md
deleted file mode 100644 (file)
index 6abcd5d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
----
-description: Feature agl-profile-telematics
-authors: Jan-Simon Möller <jsmoeller@linuxfoundation.org>
----
-       
-### Feature agl-profile-telematics
-        
-*Description is missing - please complete file meta-agl/templates/feature/agl-profile-telematics/README_feature_agl-profile-telematics.md*
-