text:
require linux.inc

DESCRIPTION = "Linux kernel"
KERNEL_IMAGETYPE = "uImage"

COMPATIBLE_MACHINE = "(beaglebone)"

# The main PR is now using MACHINE_KERNEL_PR, for omap3 see conf/machine/include/omap3.inc
MACHINE_KERNEL_PR_append = "a"

FILESPATH =. "${FILE_DIRNAME}/linux-mainline-3.7:${FILE_DIRNAME}/linux-mainline-3.7/${MACHINE}:"

S = "${WORKDIR}/git"

PV = "3.7.0"

SRCREV_pn-${PN} = "29594404d7fe73cd80eaa4ee8c43dcc53970c60e"

SRC_URI = " \
	git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git;branch=master \
	file://dma/0001-video-st7735fb-add-st7735-framebuffer-driver.patch \
	file://dma/0002-regulator-tps65910-fix-BUG_ON-shown-with-vrtc-regula.patch \
	file://dma/0003-dmaengine-add-helper-function-to-request-a-slave-DMA.patch \
	file://dma/0004-of-Add-generic-device-tree-DMA-helpers.patch \
	file://dma/0005-of-dma-fix-build-break-for-CONFIG_OF.patch \
	file://dma/0006-of-dma-fix-typos-in-generic-dma-binding-definition.patch \
	file://dma/0007-dmaengine-fix-build-failure-due-to-missing-semi-colo.patch \
	file://dma/0008-dmaengine-edma-fix-slave-config-dependency-on-direct.patch \
	file://dma/0009-ARM-davinci-move-private-EDMA-API-to-arm-common.patch \
	file://dma/0010-ARM-edma-remove-unused-transfer-controller-handlers.patch \
	file://dma/0011-ARM-edma-add-DT-and-runtime-PM-support-for-AM33XX.patch \
	file://dma/0012-ARM-edma-add-AM33XX-crossbar-event-support.patch \
	file://dma/0013-dmaengine-edma-enable-build-for-AM33XX.patch \
	file://dma/0014-dmaengine-edma-Add-TI-EDMA-device-tree-binding.patch \
	file://dma/0015-ARM-dts-add-AM33XX-EDMA-support.patch \
	file://dma/0016-dmaengine-add-dma_request_slave_channel_compat.patch \
	file://dma/0017-mmc-omap_hsmmc-convert-to-dma_request_slave_channel_.patch \
	file://dma/0018-mmc-omap_hsmmc-limit-max_segs-with-the-EDMA-DMAC.patch \
	file://dma/0019-mmc-omap_hsmmc-add-generic-DMA-request-support-to-th.patch \
	file://dma/0020-ARM-dts-add-AM33XX-MMC-support.patch \
	file://dma/0021-spi-omap2-mcspi-convert-to-dma_request_slave_channel.patch \
	file://dma/0022-spi-omap2-mcspi-add-generic-DMA-request-support-to-t.patch \
	file://dma/0023-ARM-dts-add-AM33XX-SPI-support.patch \
	file://dma/0024-Documentation-bindings-add-spansion.patch \
	file://dma/0025-ARM-dts-add-BeagleBone-Adafruit-1.8-LCD-support.patch \
	file://dma/0026-misc-add-gpevt-driver.patch \
	file://dma/0027-ARM-dts-add-BeagleBone-gpevt-support.patch \
	file://dma/0028-ARM-configs-working-AM33XX-edma-dmaengine-defconfig.patch \
	file://dma/0029-ARM-configs-working-da850-edma-dmaengine-defconfig.patch \
	file://dma/0030-misc-gpevt-null-terminate-the-of_match_table.patch \
	file://dma/0031-proposed-probe-fix-works-for-me-on-evm.patch \
	file://cpsw/0001-ARM-OMAP3-hwmod-Add-AM33XX-HWMOD-data-for-davinci_md.patch \
	file://cpsw/0002-net-davinci_mdio-Fix-type-mistake-in-calling-runtime.patch \
	file://cpsw/0003-net-cpsw-Add-parent-child-relation-support-between-c.patch \
	file://cpsw/0004-arm-dts-am33xx-Add-cpsw-and-mdio-module-nodes-for-AM.patch \
	file://pinctrl/0001-i2c-pinctrl-ify-i2c-omap.c.patch \
	file://pinctrl/0002-arm-dts-AM33XX-Configure-pinmuxs-for-user-leds-contr.patch \
	file://pinctrl/0003-beaglebone-DT-set-default-triggers-for-LEDS.patch \
	file://pinctrl/0004-beaglebone-add-a-cpu-led-trigger.patch \
	file://cpufreq/0001-arm-dts-AM33XX-Add-device-tree-OPP-table.patch \
	file://cpufreq/0002-am33xx-DT-add-commented-out-OPP-values-for-ES2.0.patch \
	file://adc/0001-input-TSC-ti_tscadc-Correct-register-usage.patch \
	file://adc/0002-input-TSC-ti_tscadc-Add-Step-configuration-as-platfo.patch \
	file://adc/0003-input-TSC-ti_tscadc-set-FIFO0-threshold-Interrupt.patch \
	file://adc/0004-input-TSC-ti_tscadc-Remove-definition-of-End-Of-Inte.patch \
	file://adc/0005-input-TSC-ti_tscadc-Rename-the-existing-touchscreen-.patch \
	file://adc/0006-MFD-ti_tscadc-Add-support-for-TI-s-TSC-ADC-MFDevice.patch \
	file://adc/0007-input-TSC-ti_tsc-Convert-TSC-into-a-MFDevice.patch \
	file://adc/0008-IIO-ADC-tiadc-Add-support-of-TI-s-ADC-driver.patch \
	file://adc/0009-input-ti_am335x_tsc-Make-steps-enable-configurable.patch \
	file://adc/0010-input-ti_am335x_tsc-Order-of-TSC-wires-connect-made-.patch \
	file://adc/0011-input-ti_am335x_tsc-Add-variance-filters.patch \
	file://adc/0012-ti_tscadc-Update-with-IIO-map-interface-deal-with-pa.patch \
	file://adc/0013-ti_tscadc-Match-mfd-sub-devices-to-regmap-interface.patch \
	file://pwm/0001-ARM-OMAP3-hwmod-Corrects-resource-data-for-PWM-devic.patch \
	file://pwm/0002-pwm_backlight-Add-device-tree-support-for-Low-Thresh.patch \
	file://pwm/0003-pwm-pwm-tiecap-Add-device-tree-binding-support-in-AP.patch \
	file://pwm/0004-Control-module-EHRPWM-clk-enabling.patch \
	file://pwm/0005-pwm-pwm-tiecap-Enable-clock-gating.patch \
	file://pwm/0006-PWM-ti-ehrpwm-fix-up-merge-conflict.patch \
	file://pwm/0007-pwm-pwm_test-Driver-support-for-PWM-module-testing.patch \
	file://pwm/0008-arm-dts-DT-support-for-EHRPWM-and-ECAP-device.patch \
	file://pwm/0009-pwm-pwm-tiehrpwm-Add-device-tree-binding-support-EHR.patch \
	file://pwm/0010-ARM-OMAP2-PWM-limit-am33xx_register_ehrpwm-to-soc_is.patch \
	file://i2c/0001-pinctrl-pinctrl-single-must-be-initialized-early.patch \
	file://i2c/0002-Bone-DTS-working-i2c2-i2c3-in-the-tree.patch \
	file://i2c/0003-am33xx-Convert-I2C-from-omap-to-am33xx-names.patch \
	file://i2c/0004-beaglebone-fix-backlight-entry-in-DT.patch \
	file://usb/0001-Shut-up-musb.patch \
	file://usb/0002-musb-Fix-crashes-and-other-weirdness.patch \
	file://usb/0003-musb-revert-parts-of-032ec49f.patch \
	file://usb/0004-usb-musb-dsps-get-the-PHY-using-phandle-api.patch \
	file://usb/0005-drivers-usb-otg-add-device-tree-support-to-otg-libra.patch \
	file://usb/0006-usb-otg-nop-add-dt-support.patch \
	file://usb/0007-usb-musb-dsps-add-phy-control-logic-to-glue.patch \
	file://usb/0008-usb-musb-dsps-enable-phy-control-for-am335x.patch \
	file://usb/0009-ARM-am33xx-fix-mem-regions-in-USB-hwmod.patch \
	file://da8xx-fb/0001-omap2-clk-Add-missing-lcdc-clock-definition.patch \
	file://da8xx-fb/0002-da8xx-Allow-use-by-am33xx-based-devices.patch \
	file://da8xx-fb/0003-da8xx-Fix-revision-check-on-the-da8xx-driver.patch \
	file://da8xx-fb/0004-da8xx-De-constify-members-in-the-platform-config.patch \
	file://da8xx-fb/0005-da8xx-Add-standard-panel-definition.patch \
	file://da8xx-fb/0006-da8xx-Add-CDTech_S035Q01-panel-used-by-LCD3-bone-cap.patch \
	file://da8xx-fb/0007-da8xx-fb-add-panel-definition-for-beaglebone-LCD7-ca.patch \
	file://da8xx-fb/0008-video-da8xx-fb-fb_check_var-enhancement.patch \
	file://da8xx-fb/0009-video-da8xx-fb-clk_get-on-connection-id-fck.patch \
	file://mmc/0001-mmc-omap_hsmmc-Enable-HSPE-bit-for-high-speed-cards.patch \
	file://mmc/0002-am33xx.dtsi-enable-MMC-HSPE-bit-for-all-3-controller.patch \
	file://mmc/0003-omap-hsmmc-Correct-usage-of-of_find_node_by_name.patch \
	file://fixes/0001-ARM-AM33XX-hwmod-Remove-wrong-INIT_NO_RESET-IDLE-fla.patch \
	file://f2fs/0001-f2fs-add-document.patch \
	file://f2fs/0002-f2fs-add-on-disk-layout.patch \
	file://f2fs/0003-f2fs-add-superblock-and-major-in-memory-structure.patch \
	file://f2fs/0004-f2fs-add-super-block-operations.patch \
	file://f2fs/0005-f2fs-add-checkpoint-operations.patch \
	file://f2fs/0006-f2fs-add-node-operations.patch \
	file://f2fs/0007-f2fs-add-segment-operations.patch \
	file://f2fs/0008-f2fs-add-file-operations.patch \
	file://f2fs/0009-f2fs-add-address-space-operations-for-data.patch \
	file://f2fs/0010-f2fs-add-core-inode-operations.patch \
	file://f2fs/0011-f2fs-add-inode-operations-for-special-inodes.patch \
	file://f2fs/0012-f2fs-add-core-directory-operations.patch \
	file://f2fs/0013-f2fs-add-xattr-and-acl-functionalities.patch \
	file://f2fs/0014-f2fs-add-garbage-collection-functions.patch \
	file://f2fs/0015-f2fs-add-recovery-routines-for-roll-forward.patch \
	file://f2fs/0016-f2fs-update-Kconfig-and-Makefile.patch \
	file://f2fs/0017-f2fs-gc.h-make-should_do_checkpoint-inline.patch \
	file://f2fs/0018-f2fs-move-statistics-code-into-one-file.patch \
	file://f2fs/0019-f2fs-move-proc-files-to-debugfs.patch \
	file://f2fs/0020-f2fs-compile-fix.patch \
	file://6lowpan/0001-6lowpan-lowpan_is_iid_16_bit_compressable-does-not-d.patch \
	file://6lowpan/0002-6lowpan-next-header-is-not-properly-set-upon-decompr.patch \
	file://6lowpan/0003-6lowpan-always-enable-link-layer-acknowledgments.patch \
	file://6lowpan/0004-mac802154-turn-on-ACK-when-enabled-by-the-upper-laye.patch \
	file://6lowpan/0005-6lowpan-use-short-IEEE-802.15.4-addresses-for-broadc.patch \
	file://6lowpan/0006-6lowpan-fix-first-fragment-FRAG1-handling.patch \
	file://6lowpan/0007-6lowpan-store-fragment-tag-values-per-device-instead.patch \
	file://6lowpan/0008-6lowpan-obtain-IEEE802.15.4-sequence-number-from-the.patch \
	file://6lowpan/0009-6lowpan-add-a-new-parameter-in-sysfs-to-turn-on-off-.patch \
	file://6lowpan/0010-6lowpan-use-the-PANID-provided-by-the-device-instead.patch \
	file://6lowpan/0011-6lowpan-modify-udp-compression-uncompression-to-matc.patch \
	file://6lowpan/0012-6lowpan-make-memory-allocation-atomic-during-6lowpan.patch \
	file://6lowpan/0013-mac802154-make-mem-alloc-ATOMIC-to-prevent-schedulin.patch \
	file://6lowpan/0014-mac802154-remove-unnecessary-spinlocks.patch \
	file://6lowpan/0015-mac802154-re-introduce-MAC-primitives-required-to-se.patch \
	file://6lowpan/0016-serial-initial-import-of-the-IEEE-802.15.4-serial-dr.patch \
	file://capebus/0001-i2c-EEPROM-Export-memory-accessor.patch \
	file://capebus/0002-omap-Export-omap_hwmod_lookup-omap_device_build-omap.patch \
	file://capebus/0003-gpio-keys-Pinctrl-fy.patch \
	file://capebus/0004-tps65217-Allow-placement-elsewhere-than-parent-mfd-d.patch \
	file://capebus/0005-pwm-export-of_pwm_request.patch \
	file://capebus/0006-i2c-Export-capability-to-probe-devices.patch \
	file://capebus/0007-pwm-backlight-Pinctrl-fy.patch \
	file://capebus/0008-spi-Export-OF-interfaces-for-capebus-use.patch \
	file://capebus/0009-w1-gpio-Pinctrl-fy.patch \
	file://capebus/0010-w1-gpio-Simplify-get-rid-of-defines.patch \
	file://capebus/0011-arm-dt-Enable-DT-proc-updates.patch \
	file://capebus/0012-ARM-CUSTOM-Build-a-uImage-with-dtb-already-appended.patch \
	file://capebus/0013-beaglebone-create-a-shared-dtsi-for-beaglebone-based.patch \
	file://capebus/0014-beaglebone-enable-emmc-for-bonelt.patch \
	file://capebus/0015-da8xx-dt-Create-da8xx-DT-adapter-device.patch \
	file://capebus/0016-ti-tscadc-dt-Create-ti-tscadc-dt-DT-adapter-device.patch \
	file://capebus/0017-capebus-Core-capebus-support.patch \
	file://capebus/0018-capebus-Add-beaglebone-board-support.patch \
	file://capebus/0019-capebus-Beaglebone-generic-cape-support.patch \
	file://capebus/0020-capebus-Beaglebone-geiger-cape-support.patch \
	file://capebus/0021-capebus-Beaglebone-capebus-DT-update.patch \
	file://capebus/0022-capebus-Document-DT-bindings.patch \
	file://capebus/0023-capebus-Documentation-capebus-summary.patch \
	file://capebus/0024-beaglebone-Update-default-config-for-capebus.patch \
	file://capebus/0025-capebus-Geiger-Cape-config-bugfixs.patch \
	file://capebus/0026-am335x-bone-Add-spi0-pins-defines.patch \
	file://capebus/0027-Allow-more-than-one-instance-of-generic-devices.patch \
	file://capebus/0028-Mark-the-device-as-PRIVATE.patch \
	file://capebus/0029-DT-overlay.patch \
	file://capebus/0030-Bug-fixes-pinctl-gpio-reset.patch \
	file://capebus/0031-ARM-HSMMC-fix-error-path-when-no-gpio_reset.patch \
	file://capebus/0032-capebus-Add-PRUSS-DT-bindings.patch \
	file://hdmi/0001-Import-working-HDMI-driver-from-3.2-kernel.patch \
	file://hdmi/0002-Added-DT-binding-to-NXP-driver.patch \
	file://hdmi/0003-da8xx-fb-Add-timings-for-720x480-60.patch \
	file://hdmi/0004-Add-capebus-override-and-pinmux-for-da8xx-dt.patch \
	file://hdmi/0005-video-Kconfig-Makefile-Add-new-Kconfig-for-old-drive.patch \
	file://hdmi/0006-am335x-bonelt-dts-Add-DT-node-to-probe-NXP-driver.patch \
	file://hdmi/0007-tda-driver-enable-1280x720.patch \
	file://hdmi/0008-Makefile-Disable-CEC.patch \
	file://pruss/0001-uio-uio_pruss-port-to-AM33xx.patch \
	file://pruss/0002-ARM-omap-add-DT-support-for-deasserting-hardware-res.patch \
	file://pruss/0003-ARM-dts-AM33xx-PRUSS-support.patch \
	file://arm/0001-kbuild-deb-pkg-set-host-machine-after-dpkg-gencontro.patch \
	file://arm/0002-arm-add-definition-of-strstr-to-decompress.c.patch \
	file://omap/0001-mach-omap2-board-igep0020.c-Fix-reboot-problem.patch \
	file://omap_sakoman/0001-OMAP-DSS2-add-bootarg-for-selecting-svideo.patch \
	file://omap_sakoman/0002-video-add-timings-for-hd720.patch \
	file://omap_beagle_expansion/0001-Beagle-expansion-add-buddy-param-for-expansionboard-.patch \
	file://omap_beagle_expansion/0002-Beagle-expansion-add-zippy.patch \
	file://omap_beagle_expansion/0003-Beagle-expansion-add-zippy2.patch \
	file://omap_beagle_expansion/0004-Beagle-expansion-add-trainer.patch \
	file://omap_beagle_expansion/0005-Beagle-expansion-add-CircuitCo-ulcd-Support.patch \
	file://omap_beagle_expansion/0006-Beagle-expansion-add-wifi.patch \
	file://omap_beagle_expansion/0007-Beagle-expansion-add-beaglefpga.patch \
	file://omap_beagle_expansion/0008-Beagle-expansion-add-spidev.patch \
	file://omap_beagle_expansion/0009-Beagle-expansion-add-Aptina-li5m03-camera.patch \
	file://omap_beagle_expansion/0010-Beagle-expansion-add-LSR-COM6L-Adapter-Board.patch \
	file://omap_beagle/0001-meego-modedb-add-Toshiba-LTA070B220F-800x480-support.patch \
	file://omap_beagle/0002-backlight-Add-TLC59108-backlight-control-driver.patch \
	file://omap_beagle/0003-tlc59108-adjust-for-beagleboard-uLCD7.patch \
	file://omap_beagle/0004-zeroMAP-Open-your-eyes.patch \
	file://omap_beagle/0005-TEMP-Beagle-xM-cpufreq-disable-800Mhz-opp.patch \
	file://omap_beagle/0006-ARM-OMAP-Beagle-C4-fix-reboot-problem.patch \
	file://omap_panda/0001-panda-fix-wl12xx-regulator.patch \
	file://omap_panda/0002-ti-st-st-kim-fixing-firmware-path.patch \
	file://omap_sgx/0001-Revert-drm-kill-drm_sman.patch \
	file://omap_fixes/0001-omap3-Increase-limit-on-bootarg-mpurate.patch \
	file://omap_thermal/0001-staging-omap-thermal-fix-compilation.patch \
	file://omap_thermal/0002-staging-omap-thermal-remove-platform-data-nomenclatu.patch \
	file://omap_thermal/0003-staging-omap-thermal-remove-freq_clip-table.patch \
	file://omap_thermal/0004-staging-omap-thermal-add-IRQ-debugging-messaging.patch \
	file://omap_thermal/0005-staging-omap-thermal-fix-context-restore-function.patch \
	file://net/0001-Attempted-SMC911x-BQL-patch.patch \
	file://spi/0001-spi-spidev-Add-device-tree-bindings.patch \
	file://defconfig \
"

repository: JackDoan/meta-beagleboard

repo_name: JackDoan/meta-beagleboard

gha_license_id: MIT

extension: bb


text:
SUMMARY = "GStreamer VSP filter plugin"
SECTION = "multimedia"
LICENSE = "LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c"

COMPATIBLE_MACHINE = "(salvator-x|ulcb|ebisu)"

RENESAS_VSPFILTER_URL ?= "gitsm://github.com/renesas-rcar/gst-plugin-vspfilter.git;branch=RCAR-GEN3e/1.0.2;protocol=https"

SRC_URI = " \
    ${RENESAS_VSPFILTER_URL} \
"

SRCREV = "351d87c80ed57ce8e1b77bee3e97a3ec4b154eca"

S = "${WORKDIR}/git"

inherit autotools pkgconfig

DEPENDS += "gstreamer1.0 gstreamer1.0-plugins-base pkgconfig"

EXTRA_AUTORECONF_append = " -I ${STAGING_DATADIR}/aclocal"

FILES_${PN} = " \
    ${libdir}/gstreamer-1.0/libgstvspfilter.so \
"

FILES_${PN}-dev = "${libdir}/gstreamer-1.0/libgstvspfilter.la"

FILES_${PN}-staticdev = "${libdir}/gstreamer-1.0/libgstvspfilter.a"

FILES_${PN}-dbg = " \
    ${libdir}/gstreamer-1.0/.debug \
    ${prefix}/src \
"

RDEPENDS_${PN} = "kernel-module-vsp2driver gstreamer1.0-plugin-vspfilter-config"

license: MIT

repository: renesas-rcar/meta-renesas

license_type: permissive

repo_name: renesas-rcar/meta-renesas

branch_name: refs/heads/dunfell

gha_language: BitBake


text:
DESCRIPTION = "iguanaIR"
SECTION = "console/network"
PRIORITY = "optional"
HOMEPAGE = "http://iguanaworks.net"
LICENSE = "GPL"
DEPENDS = "popt"
DEPENDS += "virtual/libusb0"
RDEPENDS = ""

SRC_URI = http://iguanaworks.net/downloads/iguanaIR-${PV}.tar.bz2

S = "${WORKDIR}/iguanaIR-${PV}"

inherit autotools module-base
# inherit autotools module-base update-rc.d

#INITSCRIPT_PACKAGES = "lirc lirc-exec"
#INITSCRIPT_NAME = "lircd"
#INITSCRIPT_PARAMS = "defaults 20"
#INITSCRIPT_NAME_lirc-exec = "lircexec"
#INITSCRIPT_PARAMS_lirc-exec = "defaults 21"

# require lirc-config.inc

EXTRA_OECONF = "--disable-python"
# EXTRA_OEMAKE = 'SUBDIRS="daemons tools"'

do_stage() {
    oe_libinstall -so -C tools liblirc_client ${STAGING_LIBDIR}
	install -d ${STAGING_INCDIR}/iguanaIR/
	# install -m 0644 tools/lirc_client.h ${STAGING_INCDIR}/lirc/
}

do_configure() {
  export ac_cv_func_malloc_0_nonnull=yes
  export ac_cv_func_realloc_0_nonnull=yes
  oe_runconf
}

do_install_append() {
	install -d ${D}${sysconfdir}/init.d
	#install ${WORKDIR}/lircd.init ${D}${sysconfdir}/init.d/lircd
	#install ${WORKDIR}/lircexec.init ${D}${sysconfdir}/init.d/lircexec
        #install -d ${D}${datadir}/lirc/
     #   cp -pPR ${S}/remotes ${D}${datadir}/lirc/
	#rm -rf ${D}/dev
}

#FILES_${PN}-dbg += "${bindir}/.debug ${sbindir}/.debug"
FILES_${PN} = "${bindir}"
#FILES_lirc-x = "${bindir}/irxevent ${bindir}/xmode2"
#FILES_lirc-exec = "${bindir}/irexec ${sysconfdir}/init.d/lircexec"
#FILES_lirc-remotes = "${datadir}/lirc/remotes"

repository: JrCs/opendreambox

repo_name: JrCs/opendreambox

branch_name: HEAD


text:
@manuel{106,
    author={TU Dortmund},
    title={Versuchsanleitung zu Versuch-Nr. 106 - Gekoppelte Pendel},
    date={2016-12-27},
    url={http://129.217.224.2/HOMEPAGE/MEDPHYS/BACHELOR/AP/SKRIPT/GekoppeltePendel.pdf}
    }

@manuel{frankfurt,
    author={uni-frankfurt.de},
    date={2016-12-29},
    url={https://elearning.physik.uni-frankfurt.de/data/FB13-PhysikOnline/lm_data/lm_281/modul_2/teil_6/node50.html}
    }

@manuel{darmstadt,
    author={tu-darmstadt.de},
    date={2016-12-29},
    url={ftp://download.mmag.hrz.tu-darmstadt.de/pub/HRZ/elc/OpenLearnWare/Bauingenieurwesen/2004_Lerneinheiten_Lange/kurse/kurs_02_stabi/06a.html}
    }

branch_name: refs/heads/master

gha_language: TeX

extension: bib


text:
DESCRIPTION = "Linux kernel for HP iPAQ h6300 series OMAP1510 based phones."
SECTION = "kernel"
LICENSE = "GPL"

SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.16.tar.bz2 \
	   http://www.muru.com/linux/omap/patches/patch-2.6.16-omap2.bz2;patch=1 \
           file://linux-2.6.16.16.patch;patch=1 \
           file://linux-h6300-omap2-2.6.16.16.patch;patch=1 \
           file://defconfig"

S = "${WORKDIR}/linux-2.6.16"

inherit kernel

COMPATIBLE_MACHINE = "h6300"

do_configure_prepend() {
	install -m 0644 ${WORKDIR}/defconfig ${S}/.config
        oe_runmake oldconfig
}


text:
# (C) Copyright 2019
# Lukasz Majewski, DENX Software Engineering, lukma@denx.de.
#

# Linux kernel recipe to use vexpress-v2p-ca15-tc1 as a QEMU test
# board.
# This is the arm kernel without 64 bit time syscalls

require kernel-common.inc

SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git;branch=linux-4.19.y"

LINUX_VERSION = "4.19"
LINUX_VERSION_EXTENSION = "-n2038-${SRCREV}"

SRCREV = "4d552acf337038028f7e2f63a927afb7adf65fc1"

KMETA_BRANCH = "yocto-4.19"
SRCREV_meta = "9bda6190bfc9e7858c2f7588109a0ec966f37a09"


text:
SUMMARY = "phodav is a WebDav server implementation using libsoup (RFC 4918)."
LICENSE = "LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"

DEPENDS = " \
    glib-2.0 \
    libsoup \
"

GNOMEBASEBUILDCLASS = "meson"
GTKDOC_MESON_OPTION = 'gtk_doc'
GTKDOC_MESON_ENABLE_FLAG = 'enabled'
GTKDOC_MESON_DISABLE_FLAG = 'disabled'

PACKAGECONFIG ??= "avahi"
PACKAGECONFIG[avahi] = "-Davahi=enabled,-Davahi=disabled,avahi"

inherit pkgconfig gnomebase gettext gtk-doc

SRC_URI = "https://download.gnome.org/sources/phodav/3.0/phodav-${PV}.tar.xz;name=archive"
SRC_URI[archive.sha256sum] = "392ec2d06d50300dcff1ef269a2a985304e29bce3520002fca29f2edc1d138d1"

FILES:${PN} += "${libdir}"

repository: YoeDistro/meta-openembedded

repo_name: YoeDistro/meta-openembedded


text:
SECTION = "devel/chicken"
DESCRIPTION = "Bloom Filter"
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://bloom-filter.meta;md5=1a29fd574d888ccde2a4fc8a3da5442b"
DEPENDS_append_class-cross = " chicken-egg-setup-helper-cross chicken-egg-iset-cross chicken-egg-message-digest-cross chicken-egg-hashes-cross chicken-egg-check-errors-cross chicken-egg-record-variants-cross"
DEPENDS_append_class-crosssdk = " chicken-egg-setup-helper-crosssdk chicken-egg-iset-crosssdk chicken-egg-message-digest-crosssdk chicken-egg-hashes-crosssdk chicken-egg-check-errors-crosssdk chicken-egg-record-variants-crosssdk"
DEPENDS_append_class-nativesdk = " nativesdk-chicken-egg-setup-helper nativesdk-chicken-egg-iset nativesdk-chicken-egg-message-digest nativesdk-chicken-egg-hashes nativesdk-chicken-egg-check-errors nativesdk-chicken-egg-record-variants chicken-egg-setup-helper-crosssdk chicken-egg-iset-crosssdk chicken-egg-message-digest-crosssdk chicken-egg-hashes-crosssdk chicken-egg-check-errors-crosssdk chicken-egg-record-variants-crosssdk"
DEPENDS = " chicken-egg-setup-helper chicken-egg-iset chicken-egg-message-digest chicken-egg-hashes chicken-egg-check-errors chicken-egg-record-variants chicken-egg-setup-helper-cross chicken-egg-iset-cross chicken-egg-message-digest-cross chicken-egg-hashes-cross chicken-egg-check-errors-cross chicken-egg-record-variants-cross"
RDEPENDS_${PN} = " chicken-egg-setup-helper chicken-egg-iset chicken-egg-message-digest chicken-egg-hashes chicken-egg-check-errors chicken-egg-record-variants"

SRC_URI = "http://code.call-cc.org/egg-tarballs/4/bloom-filter/bloom-filter-${PV}.tar.gz"

SRC_URI[md5sum] = "5321d0a689de1baec425d87a83312b7d"
SRC_URI[sha256sum] = "6f4e95821dda1a87c7a391717b4c7fd82dd2dedb2e45ea157e29c5ad63fb8225"

S = "${WORKDIR}/bloom-filter-${PV}"

inherit chicken_install

BBCLASSEXTEND = "cross crosssdk nativesdk"

repository: OSSystems/meta-chicken

repo_name: OSSystems/meta-chicken


text:
DESCRPTION = "ansi2html - Convert text with ANSI color codes to HTML or to LaTeX"
HOMEPAGE = "https://github.com/ralphbean/ansi2html"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3000208d539ec061b899bce1d9ce9404"
LICENSE = "GPLv3"

PYPI_PACKAGE = "ansi2html"

SRC_URI[md5sum] = "52d6085ad1c5970082ea5305a26af981"
SRC_URI[sha256sum] = "96ae85ae7b26b7da674d87de2870ba4d1964bca733ae4614587080b6358c3ba9"

inherit pypi setuptools3

RDEPENDS_${PN} = "${PYTHON_PN}-six"


text:
@inproceedings{ayachi2018strided,
  title        = {Strided convolution instead of max pooling for memory efficiency of convolutional neural networks},
  author       = {Ayachi, Riadh and Afif, Mouna and Said, Yahia and Atri, Mohamed},
  booktitle    = {International conference on the Sciences of Electronics, Technologies of Information and Telecommunications},
  pages        = {234--243},
  year         = {2018},
  organization = {Springer}
}

@inproceedings{dai2016r,
  title     = {R-fcn: Object detection via region-based fully convolutional networks},
  author    = {Dai, Jifeng and Li, Yi and He, Kaiming and Sun, Jian},
  booktitle = {Advances in neural information processing systems},
  pages     = {379--387},
  year      = {2016}
}

@article{detection,
  author  = {Arcos-García, Álvaro and Alvarez-Garcia, Juan and Soria Morillo, Luis},
  year    = {2018},
  month   = {08},
  pages   = {},
  title   = {Evaluation of Deep Neural Networks for traffic sign detection systems},
  volume  = {316},
  journal = {Neurocomputing},
  doi     = {10.1016/j.neucom.2018.08.009}
}

@techreport{Digit,
  author      = {Maji, Subhransu and Malik, Jitendra},
  title       = {Fast and Accurate Digit Classification},
  institution = {EECS Department, University of California, Berkeley},
  year        = {2009},
  month       = {Nov},
  url         = {http://www2.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-159.html},
  number      = {UCB/EECS-2009-159}
}

@article{garcia2017few,
  title   = {Few-shot learning with graph neural networks},
  author  = {Garcia, Victor and Bruna, Joan},
  journal = {arXiv preprint arXiv:1711.04043},
  year    = {2017}
}

@article{GTSRB,
  author  = {Stallkamp, Johannes and Schlipsing, Marc and Salmen, Jan and Igel, Christian},
  year    = {2012},
  month   = {02},
  pages   = {323-32},
  title   = {Man vs. computer: Benchmarking machine learning algorithms for traffic sign recognition},
  volume  = {32},
  journal = {Neural networks : the official journal of the International Neural Network Society},
  doi     = {10.1016/j.neunet.2012.02.016}
}

@article{he2015proceedings,
  title     = {Proceedings of the IEEE international conference on computer vision},
  author    = {He, K and Zhang, X and Ren, S and Sun, J},
  year      = {2015},
  publisher = {IEEE}
}

@inproceedings{HOG-SURF,
  author = {Madan, Rishabh and Agrawal, Deepank and Kowshik, Shreyas and Maheshwari, Harsh and Agarwal, Siddhant and Chakravarty, Debashish},
  year   = {2019},
  month  = {01},
  pages  = {613-620},
  title  = {Traffic Sign Classification using Hybrid HOG-SURF Features and Convolutional Neural Networks},
  doi    = {10.5220/0007392506130620}
}

@inproceedings{koch2015siamese,
  title        = {Siamese neural networks for one-shot image recognition},
  author       = {Koch, Gregory and Zemel, Richard and Salakhutdinov, Ruslan},
  booktitle    = {ICML deep learning workshop},
  volume       = {2},
  year         = {2015},
  organization = {Lille}
}

@inproceedings{lindner2004robust,
  title        = {Robust recognition of traffic signals},
  author       = {Lindner, Frank and Kressel, Ulrich and Kaelberer, Stephan},
  booktitle    = {IEEE Intelligent Vehicles Symposium, 2004},
  pages        = {49--53},
  year         = {2004},
  organization = {IEEE}
}

@inproceedings{Mathias,
  author = {Mathias, Markus and Timofte, Radu and Benenson, Rodrigo and Van Gool, Luc},
  year   = {2013},
  month  = {08},
  pages  = {1-8},
  title  = {Traffic sign recognition — How far are we from the solution?},
  isbn   = {978-1-4673-6128-6},
  doi    = {10.1109/IJCNN.2013.6707049}
}

@article{MCDNN,
  title    = {Multi-column deep neural network for traffic sign classification},
  journal  = {Neural Networks},
  volume   = {32},
  pages    = {333 - 338},
  year     = {2012},
  note     = {Selected Papers from IJCNN 2011},
  issn     = {0893-6080},
  doi      = {https://doi.org/10.1016/j.neunet.2012.02.023},
  url      = {http://www.sciencedirect.com/science/article/pii/S0893608012000524},
  author   = {Dan CireÅŸan and Ueli Meier and Jonathan Masci and JÃ¼rgen Schmidhuber},
  keywords = {Deep neural networks, Image classification, Traffic signs, Image preprocessing},
  abstract = {We describe the approach that won the final phase of the German traffic sign recognition benchmark. Our method is the only one that achieved a better-than-human recognition rate of 99.46%. We use a fast, fully parameterizable GPU implementation of a Deep Neural Network (DNN) that does not require careful design of pre-wired feature extractors, which are rather learned in a supervised way. Combining various DNNs trained on differently preprocessed data into a Multi-Column DNN (MCDNN) further boosts recognition performance, making the system insensitive also to variations in contrast and illumination.}
}

@article{mogelmose2012vision-based,
  title   = {Vision-Based Traffic Sign Detection and Analysis for Intelligent Driver Assistance Systems: Perspectives and Survey},
  author  = {Mogelmose, Andreas and Trivedi, Mohan M and Moeslund, Thomas B},
  journal = {IEEE Transactions on Intelligent Transportation Systems},
  volume  = {13},
  number  = {4},
  pages   = {1484--1497},
  year    = {2012}
}

@article{MTCNN,
  author  = {H. {Luo} and Y. {Yang} and B. {Tong} and F. {Wu} and B. {Fan}},
  journal = {IEEE Transactions on Intelligent Transportation Systems},
  title   = {Traffic Sign Recognition Using a Multi-Task Convolutional Neural Network},
  year    = {2018},
  volume  = {19},
  number  = {4},
  pages   = {1100-1111}
}

@incollection{NIPS2016_6385,
  title     = {Matching Networks for One Shot Learning},
  author    = {Vinyals, Oriol and Blundell, Charles and Lillicrap, Timothy and kavukcuoglu, koray and Wierstra, Daan},
  booktitle = {Advances in Neural Information Processing Systems 29},
  editor    = {D. D. Lee and M. Sugiyama and U. V. Luxburg and I. Guyon and R. Garnett},
  pages     = {3630--3638},
  year      = {2016},
  publisher = {Curran Associates, Inc.},
  url       = {http://papers.nips.cc/paper/6385-matching-networks-for-one-shot-learning.pdf}
}

@inproceedings{omachi2009traffic,
  title        = {Traffic light detection with color and edge information},
  author       = {Omachi, Masako and Omachi, Shinichiro},
  booktitle    = {2009 2nd IEEE International Conference on Computer Science and Information Technology},
  pages        = {284--287},
  year         = {2009},
  organization = {IEEE}
}

@inproceedings{ren2015faster,
  title     = {Faster r-cnn: Towards real-time object detection with region proposal networks},
  author    = {Ren, Shaoqing and He, Kaiming and Girshick, Ross and Sun, Jian},
  booktitle = {Advances in neural information processing systems},
  pages     = {91--99},
  year      = {2015}
}

@article{saxena2015study,
  title   = {A study on automatic detection and recognition techniques for road signs},
  author  = {Saxena, Purwi and Gupta, Neha and Laskar, Sabana Yasmin and Borah, Pranjal Protim},
  journal = {Int. J. Comput. Eng. Res},
  volume  = {5},
  number  = {12},
  pages   = {24--28},
  year    = {2015}
}

@inproceedings{snell2017prototypical,
  title     = {Prototypical networks for few-shot learning},
  author    = {Snell, Jake and Swersky, Kevin and Zemel, Richard},
  booktitle = {Advances in neural information processing systems},
  pages     = {4077--4087},
  year      = {2017}
}

@inproceedings{Stallkamp-IJCNN-2011,
  author    = {Johannes Stallkamp and Marc Schlipsing and Jan Salmen and Christian Igel},
  booktitle = {IEEE International Joint Conference on Neural Networks},
  title     = {The {G}erman {T}raffic {S}ign {R}ecognition {B}enchmark: A multi-class classification competition},
  year      = {2011},
  pages     = {1453--1460}
}

@article{STN,
  author  = {Jaderberg, Max and Simonyan, Karen and Zisserman, Andrew and Kavukcuoglu, Koray},
  year    = {2015},
  month   = {06},
  pages   = {},
  title   = {Spatial Transformer Networks},
  journal = {Advances in Neural Information Processing Systems 28 (NIPS 2015)}
}

@article{STN-CNN,
  author  = {Arcos-Garcia, Alvaro and Alvarez-Garcia, Juan and Soria Morillo, Luis},
  year    = {2018},
  month   = {01},
  pages   = {},
  title   = {Deep neural network for traffic sign recognition systems: An analysis of spatial transformers and stochastic optimisation methods},
  volume  = {99},
  journal = {Neural Networks},
  doi     = {10.1016/j.neunet.2018.01.005}
}

@misc{vinyals2015order,
  title         = {Order Matters: Sequence to sequence for sets},
  author        = {Oriol Vinyals and Samy Bengio and Manjunath Kudlur},
  year          = {2015},
  eprint        = {1511.06391},
  archiveprefix = {arXiv},
  primaryclass  = {stat.ML}
}

@article{yin2015fast,
  title     = {Fast traffic sign recognition with a rotation invariant binary pattern based feature},
  author    = {Yin, Shouyi and Ouyang, Peng and Liu, Leibo and Guo, Yike and Wei, Shaojun},
  journal   = {Sensors},
  volume    = {15},
  number    = {1},
  pages     = {2161--2180},
  year      = {2015},
  publisher = {Multidisciplinary Digital Publishing Institute}
}

gha_language: Python


text:
add_library(Qt5::QOffscreenIntegrationPlugin MODULE IMPORTED)

_populate_Gui_plugin_properties(QOffscreenIntegrationPlugin RELEASE "platforms/qoffscreen.dll")
_populate_Gui_plugin_properties(QOffscreenIntegrationPlugin DEBUG "platforms/qoffscreend.dll")

list(APPEND Qt5Gui_PLUGINS Qt5::QOffscreenIntegrationPlugin)

repository: timi-liuliang/echo

repo_name: timi-liuliang/echo

extension: cmake


text:
SECTION = "devel/chicken"
DESCRIPTION = "SRFI-69-like library for alists"
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://alist-lib.meta;md5=a21a46a0e34cd04e56e03b0f201761f2"
DEPENDS_append_class-cross = " chicken-egg-hahn-cross chicken-egg-matchable-cross chicken-egg-setup-helper-cross"
DEPENDS_append_class-crosssdk = " chicken-egg-hahn-crosssdk chicken-egg-matchable-crosssdk chicken-egg-setup-helper-crosssdk"
DEPENDS_append_class-nativesdk = " nativesdk-chicken-egg-hahn nativesdk-chicken-egg-matchable nativesdk-chicken-egg-setup-helper chicken-egg-hahn-crosssdk chicken-egg-matchable-crosssdk chicken-egg-setup-helper-crosssdk"
DEPENDS = " chicken-egg-hahn chicken-egg-matchable chicken-egg-setup-helper chicken-egg-hahn-cross chicken-egg-matchable-cross chicken-egg-setup-helper-cross"
RDEPENDS_${PN} = " chicken-egg-hahn chicken-egg-matchable chicken-egg-setup-helper"

SRC_URI = "http://code.call-cc.org/egg-tarballs/4/alist-lib/alist-lib-${PV}.tar.gz"

SRC_URI[md5sum] = "457553925b5bed87c6c5c9d5ff6cd3c0"
SRC_URI[sha256sum] = "125a305512d04af9f4a8f5edccfa742bd9c8f1497133972aba0f45729287ce44"

S = "${WORKDIR}/alist-lib-${PV}"

inherit chicken_install

BBCLASSEXTEND = "cross crosssdk nativesdk"


text:
include gsl.inc

SRC_URI = "${GNU_MIRROR}/gsl/gsl-${PV}.tar.gz"

SRC_URI[md5sum] = "3ec101903c8157756fa1352161bd4c39"
SRC_URI[sha256sum] = "22019188d24c769acafc250ddc247105eb9cab099529b627078cbd8012c7b7b9"

repository: overo/overo-oe-natty

repo_name: overo/overo-oe-natty


text:
SUMMARY = "Astronomical application which displays the night sky"
HOMEPAGE    = "http://projects.openmoko.org/projects/orrery/"
SECTION = "x11/scientific"
LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://orrery.c;endline=25;md5=d792bdf2b591972da175aecc38d88cfe"
DEPENDS = "gtk+"

inherit features_check autotools-brokensep pkgconfig

REQUIRED_DISTRO_FEATURES = "x11"

SRC_URI = "http://projects.openmoko.org/frs/download.php/923/orrery_2.7_clean.tar.gz \
           file://orrery.png \
           file://use.GdkPixbuf.patch \
           file://0001-orrery-Fix-sprintf-format.patch \
           file://0001-Append-cflags-instead-of-overriding-in-Makefile.am.patch \
           "

SRC_URI[md5sum]    = "bd62a33e7554ee1030313dfcdefcda8b"
SRC_URI[sha256sum] = "645166a5e05b2064ab630534a514697fc47b681951e7fe1d635c259cbdf7a5e6"

S = "${WORKDIR}/${BPN}"

do_configure:prepend() {
    # fix DSO issue with binutils-2.22
    sed -i 's/ -lrt$/ -lrt -lm/g' ${S}/Makefile.am
}
do_install:append() {
    install -d ${D}${datadir}/orrery
    cp -R --no-dereference --preserve=mode,links -v ${S}/data/* ${D}${datadir}/orrery
    chown -R root:root ${D}${datadir}/orrery
    install -d ${D}${datadir}/icons
    install -m 0755 ${WORKDIR}/orrery.png ${D}${datadir}/icons
    rm -rf ${D}${datadir}/orrery/Makefile*
}

FILES:${PN} += "${datadir}/icons/orrery.png"

repository: openembedded/meta-openembedded

repo_name: openembedded/meta-openembedded


text:
import React, { Component } from 'react';
import { connect } from 'react-redux';
import classNames from 'classnames';
import PropTypes from 'prop-types';
import FileStatusIcon from 'components/FileStatusIcon/FileStatusIcon';
import Link from 'components/Link/Link';

class Breadcrumb extends Component {
  /**
   * @returns {Object|false}
   */
  getLastCrumb() {
    return this.props.crumbs && this.props.crumbs[this.props.crumbs.length - 1];
  }

  /**
   * @returns {*}
   */
  renderBreadcrumbs() {
    if (!this.props.crumbs) {
      return null;
    }

    return this.props.crumbs.slice(0, -1).map((crumb) => (

        <Link
          className="breadcrumb__item-title"
          href={crumb.href}
          onClick={crumb.onClick}
        >
          {crumb.text}
        </Link>

    ));
  }

  /**
   * @returns {*}
   */
  renderLastCrumb() {
    const crumb = this.getLastCrumb();
    if (!crumb) {
      return null;
    }
    return (

          {crumb.text}
          {crumb.icon && this.renderIcons([crumb.icon])}
          {crumb.icons && this.renderIcons(crumb.icons)}

    );
  }

  /**
   * @param {Array} icon
   * @returns {*}
   */
  renderIcons(icons) {
    return icons.map((icon, i) => {
      const { nodeName, className, hasRestrictedAccess, ...other } = icon;
      // reassign with let so linter won't suggest 'const' above for unmodified nodeName/className
      let attrs = { ...other };
      const extraClassName = classNames(['breadcrumb__icon', className]);
      attrs = { tabIndex: '0', ...attrs };
      if (attrs.hasOwnProperty('onClick')) {
        attrs = { role: 'button', ...attrs };
      }
      attrs.key = `breadcrumb-icon-${i}`;
      if (nodeName === 'FileStatusIcon') {
        attrs.fileID = 0;
        attrs.hasRestrictedAccess = hasRestrictedAccess;
        attrs.extraClassName = extraClassName;
        return <FileStatusIcon {...attrs} />;
      }
      attrs.className = extraClassName;
      return ;
    });
  }

  /**
   * @returns {*}
   */
  render() {
    return (

        { this.props.crumbs && this.props.crumbs.length > 1 &&

              {this.renderBreadcrumbs()}

        }
        {this.renderLastCrumb()}

    );
  }
}

Breadcrumb.propTypes = {
  crumbs: PropTypes.arrayOf(PropTypes.shape({
    onClick: PropTypes.func,
    text: PropTypes.string,
    // pass in a single icon (retain backwards compatibility)
    icon: PropTypes.shape({
      nodeName: PropTypes.string,
      className: PropTypes.string,
      onClick: PropTypes.func,
      action: (props) => { if (props.action) { throw new Error('action: no longer used'); } },
    }),
    // pass in an array multiple icons (use this going forward)
    icons: PropTypes.arrayOf(PropTypes.shape({
      nodeName: PropTypes.string,
      className: PropTypes.string,
      onClick: PropTypes.func,
    }))
  })),
};

function mapStateToProps(state) {
  return {
    crumbs: state.breadcrumbs,
  };
}

export { Breadcrumb as Component };

export default connect(mapStateToProps)(Breadcrumb);

repository: silverstripe/silverstripe-admin

repo_name: silverstripe/silverstripe-admin

gha_language: JavaScript

extension: js


text:
.modal-title{
	margin-left: 8.9em;
	margin-right: 7.3em;
}

.modal-body-style{
	margin-bottom: -7px;
	margin-top: 7px;
}

repository: elvishuges/aprendAqui

repo_name: elvishuges/aprendAqui

gha_language: PHP

extension: css


text:
# cdrtools-native OE build file
# Copyright (C) 2004-2006, Advanced Micro Devices, Inc.  All Rights Reserved
# Released under the MIT license (see packages/COPYING)

LICENSE="GPL"
DESCRIPTION="A set of tools for CD recording, including cdrecord"
MAINTAINER = "Raymond Danks <info-linux@geode.amd.com>"
HOMEPAGE="http://cdrecord.berlios.de/old/private/cdrecord.html"

SRC_URI="ftp://ftp.berlios.de/pub/cdrecord/cdrtools-${PV}.tar.bz2"

S="${WORKDIR}/cdrtools-${PV}"

inherit native

STAGE_TEMP=${WORKDIR}/stage_temp

do_stage() {
	install -d ${STAGE_TEMP}
	make install INS_BASE=${STAGE_TEMP}

	install -d ${STAGING_BINDIR}
	install ${STAGE_TEMP}/bin/* ${STAGING_BINDIR}
}


text:
require greenisland.inc

inherit cmake-lib cmake-auto-align-paths

DEPENDS += " \
    ${BPN}-native \
    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
    wayland \
    qtwayland \
    libkscreen \
    virtual/egl \
    libinput \
"
SRC_URI = " \
    git://github.com/greenisland/${BPN}.git;protocol=git;branch=master \
    file://0001-find-native-greenisland-wayland-scanner.patch \
    file://0002-RaspberryPi-Don-t-suggest-closed-source-gles-driver-.patch \
"

# we don't have wayland-protocols yet - revisit
EXTRA_OECMAKE += "-DUSE_LOCAL_WAYLAND_PROTOCOLS=ON"

do_compile_append() {
    for f in `find ${B} -name 'GreenIsland*.cmake'` ; do
        sed -i 's:${STAGING_INCDIR}:${includedir}:g' "$f"
        sed -i 's:${STAGING_LIBDIR}:${libdir}:g' "$f"
    done
}

PACKAGECONFIG ??= " \
    ${@bb.utils.contains("DISTRO_FEATURES", "x11", "xwayland", "",d)} \
"
PACKAGECONFIG[xwayland] = "-DENABLE_XWAYLAND=ON,-DENABLE_XWAYLAND=OFF,libxcb"

# cross libs / headers
CMAKE_ALIGN_SYSROOT[1] = "GreenIsland, -S${libdir}/lib, -S${STAGING_LIBDIR}/lib"
CMAKE_ALIGN_SYSROOT[2] = "GreenIsland, -S${includedir}, -S${STAGING_INCDIR}"

FILES_${PN} += " \
    ${OE_QMAKE_PATH_PLUGINS} \
    ${OE_QMAKE_PATH_QML}/GreenIsland \
"

FILES_${PN}-dbg += " \
    ${OE_QMAKE_PATH_PLUGINS}/.debug \
    ${OE_QMAKE_PATH_QML}/GreenIsland/.debug \
"

FILES_${PN}-dev += " \
    ${libdir}/cmake \
    ${OE_QMAKE_PATH_QT_ARCHDATA}/mkspecs \
"


text:
---
---
@INPROCEEDINGS{yang2021matrix,
bibtex_show={true},
abbr={TMC},
author = {Jungang Yang and Liyao Xiang and Jiahao Yu and Xinbing Wang and Bin Guo and Zhetao Li and Baochun Li},
booktitle = {IEEE Transactions on Mobile Computing},
title = {Matrix Gaussian Mechanisms for Differentially-Private Learning},
year = {2021},
pdf = {https://ieeexplore.ieee.org/document/9475590},
abstract={The wide deployment of machine learning algorithms has become a severe threat to user data privacy. As the learning data is of high dimensionality and high orders, preserving its privacy is intrinsically hard. Conventional differential privacy mechanisms often incur significant utility decline as they are designed for scalar values from the start. We recognize that it is because conventional approaches do not take the data structural information into account, and fail to provide sufficient privacy or utility. As the main novelty of this work, we propose Matrix Gaussian Mechanism (MGM), a new (, δ)-differential privacy mechanism for preserving learning data privacy. By imposing the unimodal distributions on the noise, we introduce two mechanisms based on MGM with an improved utility. We further show that with the utility space available, the proposed mechanisms can be instantiated with optimized utility, and has a closed-form solution scalable to large-scale problems. We experimentally show that our mechanisms, applied to privacy-preserving federated learning, are superior than the state-of-the-art differential privacy mechanisms in utility.}
}

@inproceedings{xu2021speedup,
  abbr={CIKM},
  bibtex_show={false},
  title={Speedup robust graph structure learning with low-rank information},
  author={Xu, Hui and Xiang, Liyao and Yu, Jiahao and Cao, Anqi and Wang, Xinbing},
  booktitle={Proceedings of the 30th ACM International Conference on Information \& Knowledge Management},
  pages={2241--2250},
  pdf={https://dl.acm.org/doi/pdf/10.1145/3459637.3482299},
  year={2021}
}

@inproceedings{zhang2020voiceprint,
  abbr={INFOCOM},
  bibtex_show={true},
  title={Voiceprint mimicry attack towards speaker verification system in smart home},
  author={Zhang, Lei and Meng, Yan and Yu, Jiahao and Xiang, Chong and Falk, Brandon and Zhu, Haojin},
  booktitle={Proceedings of IEEE INFOCOM},
  pages={377--386},
  year={2020},
  organization={IEEE},
  abstract={The advancement of voice controllable systems (VC-Ses) has dramatically affected our daily lifestyle and catalyzed the smart home's deployment. Currently, most VCSes exploit automatic speaker verification (ASV) to prevent various voice attacks (e.g., replay attack). In this study, we present VMask, a novel and practical voiceprint mimicry attack that could fool ASV in smart home and inject the malicious voice command disguised as a legitimate user. The key observation behind VMask is that the deep learning models utilized by ASV are vulnerable to the subtle perturbations in the voice input space. To generate these subtle perturbations, VMask leverages the idea of adversarial examples. Then by adding the subtle perturbations to the recordings from an arbitrary speaker, VMask can mislead the ASV into classifying the crafted speech samples, which mirror the former speaker for human, as the targeted victim. Moreover, psychoacoustic masking is employed to manipulate the adversarial perturbations under human perception threshold, thus making victim unaware of ongoing attacks. We validate the effectiveness of VMask by performing comprehensive experiments on both grey box (VGGVox) and black box (Microsoft Azure Speaker Verification) ASVs. Additionally, a real-world case study on Apple HomeKit proves the VMask's practicability on smart home platforms.},
  pdf = {https://ieeexplore.ieee.org/document/9155483}
}

@inproceedings{li2019invisible,
  abbr={arXiv},
  title={Invisible backdoor attacks against deep neural networks},
  author={Li, Shaofeng and Zhao, Benjamin Zi Hao and Yu, Jiahao and Xue, Minhui and Kaafar, Dali and Zhu, Haojin},
  journal={arXiv preprint arXiv:1909.02742v1},
  year={2019},
  pdf = {https://arxiv.org/pdf/1909.02742v1.pdf}
}

@INPROCEEDINGS{airs2023,
  abbr={USENIX},
  title={AIRS Explanation for Deep Reinforcement Learning based Security Applications},
  author={Jiahao Yu and  Wenbo Guo and  Qi Qin and Gang Wang and Ting Wang and Xinyu Xing},
  booktitle = {Proceedings of the 2023 USENIX Security},
  abstract = {Recently, we have witnessed the success of deep reinforcement learning (DRL) in many security applications, ranging from malware mutation to selfish blockchain mining. Like all other machine learning methods, the lack of explainability has been limiting its broad adoption as users have difficulty establishing trust in DRL models’ decisions. Over the past years, different methods have been proposed to explain DRL models but unfortunately, they are often not suitable for security applications, in which explanation fidelity, efficiency, and the capability of model debugging are largely lacking. In this work, we propose AIRS, a general framework to explain deep reinforcement learning-based security applications. Unlike previous works that pinpoint important features to the agent’s current action, our explanation is at the step level. It models the relationship between the final reward and the key steps that a DRL agent takes, and thus outputs the steps that are most critical towards the final reward the agent has gathered. Using four representative security-critical applications, we evaluate AIRS from the perspectives of explainability, fidelity, stability, and efficiency. We show that AIRS could outperform alternative explainable DRL methods. We also showcase AIRS’s utility, demonstrating that our explanation could facilitate the DRL model’s failure offset, help users establish trust in a model decision, and even assist the identification of inappropriate reward designs.},
  year = {2023},
  pdf = {airs.pdf},
  selected = {true}
}


text:
@BOOK{Makilov91,
  author       = {Меликов, А. З. and Пономаренко, Л. А.
                  and Рюмшин, П. А.},
  title        = {Математические модели многопотоковых
                  систем обслуживания},
  address      = {К.},
  publisher    = {Техніка},
  year         = {1991},
  pagetotal    = {265},
  language     = {russian},
}


text:
@Inbook{Winikoff2005,
	author="Winikoff, Michael",
	editor="Bordini, Rafael H.
	and Dastani, Mehdi
	and Dix, J{\"u}rgen
	and El Fallah Seghrouchni, Amal",
	title="Jack{\texttrademark} Intelligent Agents: An Industrial Strength Platform",
	bookTitle="Multi-Agent Programming: Languages, Platforms and Applications",
	year="2005",
	publisher="Springer US",
	address="Boston, MA",
	pages="175--193",
	abstract="Software agents offer a range of benefits to the development of complex software systems. However, before these benefits can be realised by the computing industry there is a need for an agent platform that can be accepted by industry. In this paper we describe the JACK agent platform: a mature and robust commercial product. We argue that JACK meets requirements such as familiarity, scalability and integratibility which make it suitable for adoption by industry. We also describe interesting features of JACK such as the use of capabilities for structuring agents, and JACK's approach to teamwork which allows hierarchical team structures.",
	isbn="978-0-387-26350-2",
	doi="10.1007/0-387-26350-0_7",
	url="https://doi.org/10.1007/0-387-26350-0_7"
}

@InProceedings{10.1007/3-540-49057-4_1,
	author="Georgeff, Michael
	and Pell, Barney
	and Pollack, Martha
	and Tambe, Milind
	and Wooldridge, Michael",
	editor="M{\"u}ller, J{\"o}rg P.
	and Rao, Anand S.
	and Singh, Munindar P.",
	title="The Belief-Desire-Intention Model of Agency",
	booktitle="Intelligent Agents V: Agents Theories, Architectures, and Languages",
	year="1999",
	publisher="Springer Berlin Heidelberg",
	address="Berlin, Heidelberg",
	pages="1--10",
	abstract="Within the ATAL community, the belief-desire-intention (BDI) model has come to be possibly the best known and best studied model of practical reasoning agents. There are several reasons for its success, but perhaps the most compelling are that the BDI model combines a respectable philosophical model of human practical reasoning, (originally developed by Michael Bratman [1]), a number of implementations (in the IRMA architecture [2] and the various PRS-like systems currently available [7]), several successful applications (including the now-famous fault diagnosis system for the space shuttle, as well as factory process control systems and business process management [8]), and finally, an elegant abstract logical semantics, which have been taken up and elaborated upon widely within the agent research community [14, 16].",
	isbn="978-3-540-49057-9"
}

@InProceedings{10.1007/978-3-319-09767-1_7,
	author="Bevacqua, Elisabetta
	and Stankovi{\'{c}}, Igor
	and Maatallaoui, Ayoub
	and N{\'e}d{\'e}lec, Alexis
	and De Loor, Pierre",
	editor="Bickmore, Timothy
	and Marsella, Stacy
	and Sidner, Candace",
	title="Effects of Coupling in Human-Virtual Agent Body Interaction",
	booktitle="Intelligent Virtual Agents",
	year="2014",
	publisher="Springer International Publishing",
	address="Cham",
	pages="54--63",
	abstract="This paper presents a study of the dynamic coupling between a user and a virtual character during body interaction. Coupling is directly linked with other dimensions, such as co-presence, engagement, and believability, and was measured in an experiment that allowed users to describe their subjective feelings about those dimensions of interest. The experiment was based on a theatrical game involving the imitation of slow upper-body movements and the proposal of new movements by the user and virtual agent. The agent's behaviour varied in autonomy: the agent could limit itself to imitating the user's movements only, initiate new movements, or combine both behaviours. After the game, each participant completed a questionnaire regarding their engagement in the interaction, their subjective feeling about the co-presence of the agent, etc. Based on four main dimensions of interest, we tested several hypotheses against our experimental results, which are discussed here.",
	isbn="978-3-319-09767-1"
}

@InProceedings{10.1007/978-3-540-39396-2_5,
	author="Jung, Bernhard
	and Kopp, Stefan",
	editor="Rist, Thomas
	and Aylett, Ruth S.
	and Ballin, Daniel
	and Rickel, Jeff",
	title="FlurMax: An Interactive Virtual Agent for Entertaining Visitors in a Hallway",
	booktitle="Intelligent Virtual Agents",
	year="2003",
	publisher="Springer Berlin Heidelberg",
	address="Berlin, Heidelberg",
	pages="23--26",
	abstract="FlurMax, a virtual agent, inhabits a hallway at the University of Bielefeld. He resides in a wide-screen panel equipped with a video camera to track and interact with visitors using speech, gesture, and emotional facial expression. For example, FlurMax will detect the presence of visitors and greet them with a friendly wave, saying ''Hello, I am Max''. FlurMax also recognizes simple gesturing of the by-passer, such as waving, and produces natural multimodal behaviors in response. FlurMax's behavior selection is controlled by a simple emotional/motivational system which gradually changes his mood between states like happy, bored, surprised, and neutral.",
	isbn="978-3-540-39396-2"
}

@InProceedings{10.1007/978-3-540-39396-2_39,
	author="Cavazza, Marc
	and Martin, Olivier
	and Charles, Fred
	and Mead, Steven J.
	and Marichal, Xavier",
	editor="Rist, Thomas
	and Aylett, Ruth S.
	and Ballin, Daniel
	and Rickel, Jeff",
	title="Interacting with Virtual Agents in Mixed Reality Interactive Storytelling",
	booktitle="Intelligent Virtual Agents",
	year="2003",
	publisher="Springer Berlin Heidelberg",
	address="Berlin, Heidelberg",
	pages="231--235",
	abstract="User interaction with virtual agents generally takes place in virtual environments in which there is clear separation between the virtual actors and the user, due to the fact that in most cases, the user is in some way external to the virtual world. In Mixed-Reality Interactive Storytelling, the user's video image is captured in real time and inserted into a virtual world populated by autonomous synthetic actors with which the user interacts. The user in turn watches the composite world projected on a large screen, following a ''magic mirror'' metaphor. This context leads to re-investigating the techniques by which the user interacts with virtual actors, as well as exploring specific research problems. In this paper, we discuss some specificities of user interaction with virtual actors in Mixed Reality Interactive Storytelling. After a brief introduction to our system's architecture and the example scenario supporting our experiments, we describe various techniques supporting multi-modal interaction with virtual actors.",
	isbn="978-3-540-39396-2"
}

@InProceedings{10.1007/11944577_1,
	author="Riedl, Mark O.
	and Stern, Andrew",
	editor="G{\"o}bel, Stefan
	and Malkewitz, Rainer
	and Iurgel, Ido",
	title="Believable Agents and Intelligent Story Adaptation for Interactive Storytelling",
	booktitle="Technologies for Interactive Digital Storytelling and Entertainment",
	year="2006",
	publisher="Springer Berlin Heidelberg",
	address="Berlin, Heidelberg",
	pages="1--12",
	abstract="Interactive Narrative is an approach to interactive entertainment that enables the player to make decisions that directly affect the direction and/or outcome of the narrative experience being delivered by the computer system. Interactive narrative requires two seemingly conflicting requirements: coherent narrative and user agency. We present an interactive narrative system that uses a combination of narrative control and autonomous believable character agents to augment a story world simulation in which the user has a high degree of agency with narrative plot control. A drama manager called the Automated Story Director gives plot-based guidance to believable agents. The believable agents are endowed with the autonomy necessary to carry out directives in the most believable fashion possible. Agents also handle interaction with the user. When the user performs actions that change the world in such a way that the Automated Story Director can no longer drive the intended narrative forward, it is able to adapt the plot to incorporate the user's changes and still achieve dramatic goals.",
	isbn="978-3-540-49935-0"
}

@Article{Barringer1995,
	author="Barringer, H.
	and Fisher, M.
	and Gabbay, D.
	and Gough, G.
	and Owens, R.",
	title="MetateM: An introduction",
	journal="Formal Aspects of Computing",
	year="1995",
	month="Sep",
	day="01",
	volume="7",
	number="5",
	pages="533--549",
	abstract="In this paper a methodology for the use of temporal logic as an executable imperative language is introduced. The approach, which provides a concrete framework, calledMetateM, for executing temporal formulae, is motivated and illustrated through examples. In addition, this introduction provides references to further, more detailed, work relating to theMetateM approach to executable logics.",
	issn="1433-299X",
	doi="10.1007/BF01211631",
	url="https://doi.org/10.1007/BF01211631"
}

@InProceedings{10.1007/BFb0031845,
	author="Rao, Anand S.",
	editor="Van de Velde, Walter
	and Perram, John W.",
	title="AgentSpeak(L): BDI agents speak out in a logical computable language",
	booktitle="Agents Breaking Away",
	year="1996",
	publisher="Springer Berlin Heidelberg",
	address="Berlin, Heidelberg",
	pages="42--55",
	abstract="Belief-Desire-Intention (BDI) agents have been investigated by many researchers from both a theoretical specification perspective and a practical design perspective. However, there still remains a large gap between theory and practice. The main reason for this has been the complexity of theorem-proving or model-checking in these expressive specification logics. Hence, the implemented BDI systems have tended to use the three major attitudes as data structures, rather than as modal operators. In this paper, we provide an alternative formalization of BDI agents by providing an operational and proof-theoretic semantics of a language AgentSpeak(L). This language can be viewed as an abstraction of one of the implemented BDI systems (i.e., PRS) and allows agent programs to be written and interpreted in a manner similar to that of horn-clause logic programs. We show how to perform derivations in this logic using a simple example. These derivations can then be used to prove the properties satisfied by BDI agents.",
	isbn="978-3-540-49621-2"
}

@book{Bordini:2007:PMS:1197104,
	author = {Bordini, Rafael H. and H\"{u}bner, Jomi Fred and Wooldridge, Michael},
	title = {Programming Multi-Agent Systems in AgentSpeak Using Jason (Wiley Series in Agent Technology)},
	year = {2007},
	isbn = {0470029005},
	publisher = {John Wiley \&\#38; Sons, Inc.},
	address = {USA},
}

@inproceedings{bevacqua2014effects,
	title={Effects of coupling in human-virtual agent body interaction},
	author={Bevacqua, Elisabetta and Stankovi{\'c}, Igor and Maatallaoui, Ayoub and N{\'e}d{\'e}lec, Alexis and De Loor, Pierre},
	booktitle={International Conference on Intelligent Virtual Agents},
	pages={54--63},
	year={2014},
	organization={Springer}
}

@inproceedings{bevacqua2015gestural,
	title={Gestural coupling between humans and virtual characters in an artistic context of imitation},
	author={Bevacqua, Elisabetta and Jost, C{\'e}line and N{\'e}d{\'e}lec, Alexis and De Loor, Pierre},
	booktitle={International Conference on Intelligent Virtual Agents},
	pages={194--197},
	year={2015},
	organization={Springer}
}

@article{bogdanovych2010authentic,
	title={Authentic interactive reenactment of cultural heritage with 3D virtual worlds and artificial intelligence},
	author={Bogdanovych, Anton and Rodr{\'\i}guez-Aguilar, Juan A and Simoff, Simeon and Cohen, Alex},
	journal={Applied Artificial Intelligence},
	volume={24},
	number={6},
	pages={617--647},
	year={2010},
	publisher={Taylor \& Francis}
}

@article{boissier2013multi,
	title={Multi-agent oriented programming with JaCaMo},
	author={Boissier, Olivier and Bordini, Rafael H and H{\"u}bner, Jomi F and Ricci, Alessandro and Santi, Andrea},
	journal={Science of Computer Programming},
	volume={78},
	number={6},
	pages={747--761},
	year={2013},
	publisher={Elsevier}
}

@article{bordini2004jason,
	title={Jason--a java-based agentspeak interpreter used with saci for multi-agent distribution over the net},
	author={Bordini, Rafael H and H{\"u}bner, Jomi F and others},
	journal={On-line at http://jason. sourceforge. net},
	year={2004}
}

@inproceedings{brenner2010creating,
	title={Creating Dynamic Story Plots with Continual Multiagent Planning.},
	author={Brenner, Michael},
	booktitle={AAAI},
	year={2010}
}

@book{ferber1999multi,
	title={Multi-agent systems: an introduction to distributed artificial intelligence},
	author={Ferber, Jacques and Weiss, Gerhard},
	volume={1},
	year={1999},
	publisher={Addison-Wesley Reading}
}

@inproceedings{pugliese2011framework,
	title={A framework for motion based bodily enaction with virtual characters},
	author={Pugliese, Roberto and Lehtonen, Klaus},
	booktitle={International Workshop on Intelligent Virtual Agents},
	pages={162--168},
	year={2011},
	organization={Springer}
}

@article{grand1998creatures,
	title={Creatures: Entertainment software agents with artificial life},
	author={Grand, Stephen and Cliff, Dave},
	journal={Autonomous Agents and Multi-Agent Systems},
	volume={1},
	number={1},
	pages={39--57},
	year={1998},
	publisher={Springer}
}

@article{gratch2002creating,
	title={Creating interactive virtual humans: Some assembly required},
	author={Gratch, Jonathan and Rickel, Jeff and Andr{\'e}, Elisabeth and Cassell, Justine and Petajan, Eric and Badler, Norman},
	journal={IEEE Intelligent systems},
	number={4},
	pages={54--63},
	year={2002},
	publisher={IEEE}
}

@inproceedings{jia2007entertainment,
	title={Entertainment oriented intelligent virtual environment with agent and neural networks},
	author={Jia, Li and Zhenjiang, Miao},
	booktitle={Haptic, Audio and Visual Environments and Games, 2007. HAVE 2007. IEEE International Workshop on},
	pages={90--95},
	year={2007},
	organization={IEEE}
}

@inproceedings{bellifemine1999jade,
	title={JADE--A FIPA-compliant agent framework},
	author={Bellifemine, Fabio and Poggi, Agostino and Rimassa, Giovanni},
	booktitle={Proceedings of PAAM},
	volume={99},
	number={97-108},
	pages={33},
	year={1999},
	organization={London}
}

@article{maes1995artificial,
	title={Artificial life meets entertainment: lifelike autonomous agents},
	author={Maes, Pattie},
	journal={Communications of the ACM},
	volume={38},
	number={11},
	pages={108--114},
	year={1995},
	publisher={ACM}
}

@article{mcdonnell2012render,
	title={Render me real?: investigating the effect of render style on the perception of animated virtual humans},
	author={McDonnell, Rachel and Breidt, Martin and B{\"u}lthoff, Heinrich H},
	journal={ACM Transactions on Graphics (TOG)},
	volume={31},
	number={4},
	pages={91},
	year={2012},
	publisher={ACM}
}

@article{moeslund2006survey,
	title={A survey of advances in vision-based human motion capture and analysis},
	author={Moeslund, Thomas B and Hilton, Adrian and Kr{\"u}ger, Volker},
	journal={Computer vision and image understanding},
	volume={104},
	number={2-3},
	pages={90--126},
	year={2006},
	publisher={Elsevier}
}

@inproceedings{tisue2004netlogo,
	title={NetLogo: Design and implementation of a multi-agent modeling environment},
	author={Tisue, Seth and Wilensky, Uri},
	booktitle={Proceedings of agent},
	volume={2004},
	pages={7--9},
	year={2004}
}

@article{oliveira1999multi,
	title={Multi-agent systems: which research for which applications},
	author={Oliveira, Eugenio and Fischer, Klaus and Stepankova, Olga},
	journal={Robotics and Autonomous Systems},
	volume={27},
	number={1-2},
	pages={91--106},
	year={1999},
	publisher={Elsevier}
}

@inproceedings{pereira2014improving,
	title={Improving social presence in human-agent interaction},
	author={Pereira, Andre and Prada, Rui and Paiva, Ana},
	booktitle={Proceedings of the SIGCHI Conference on Human Factors in Computing Systems},
	pages={1449--1458},
	year={2014},
	organization={ACM}
}

@inproceedings{pugliese2011framework,
	title={A framework for motion based bodily enaction with virtual characters},
	author={Pugliese, Roberto and Lehtonen, Klaus},
	booktitle={International Workshop on Intelligent Virtual Agents},
	pages={162--168},
	year={2011},
	organization={Springer}
}

@inproceedings{rao1996agentspeak,
	title={AgentSpeak (L): BDI agents speak out in a logical computable language},
	author={Rao, Anand S},
	booktitle={European Workshop on Modelling Autonomous Agents in a Multi-Agent World},
	pages={42--55},
	year={1996},
	organization={Springer}
}

@inproceedings{ricci2006cartago,
	title={CArtAgO: A framework for prototyping artifact-based environments in MAS},
	author={Ricci, Alessandro and Viroli, Mirko and Omicini, Andrea},
	booktitle={International Workshop on Environments for Multi-Agent Systems},
	pages={67--86},
	year={2006},
	organization={Springer}
}

@article{ricci2011environment,
	title={Environment programming in multi-agent systems: an artifact-based perspective},
	author={Ricci, Alessandro and Piunti, Michele and Viroli, Mirko},
	journal={Autonomous Agents and Multi-Agent Systems},
	volume={23},
	number={2},
	pages={158--192},
	year={2011},
	publisher={Springer}
}

@article{riedl2012interactive,
	title={Interactive narrative: An intelligent systems approach},
	author={Riedl, Mark Owen and Bulitko, Vadim},
	journal={Ai Magazine},
	volume={34},
	number={1},
	pages={67},
	year={2012}
}

@book{russell2016artificial,
	title={Artificial intelligence: a modern approach},
	author={Russell, Stuart J and Norvig, Peter},
	year={2016},
	publisher={Malaysia; Pearson Education Limited,}
}

@article{salichs2012new,
	title={A new approach to modeling emotions and their use on a decision-making system for artificial agents},
	author={Salichs, Miguel A and Malfaz, Maria},
	journal={IEEE Transactions on affective computing},
	volume={3},
	number={1},
	pages={56--68},
	year={2012},
	publisher={IEEE}
}

@article{stenzel2012humanoid,
	title={When humanoid robots become human-like interaction partners: corepresentation of robotic actions.},
	author={Stenzel, Anna and Chinellato, Eris and Bou, Maria A Tirado and del Pobil, {\'A}ngel P and Lappe, Markus and Liepelt, Roman},
	journal={Journal of Experimental Psychology: Human Perception and Performance},
	volume={38},
	number={5},
	pages={1073},
	year={2012},
	publisher={American Psychological Association}
}

@article{kravari2015survey,
	title={A survey of agent platforms},
	author={Kravari, Kalliopi and Bassiliades, Nick},
	journal={Journal of Artificial Societies and Social Simulation},
	volume={18},
	number={1},
	pages={11},
	year={2015}
}

@inproceedings{suzuki1998intelligent,
	title={Intelligent agent system for human-robot interaction through artificial emotion},
	author={Suzuki, Kenji and Camurri, Antonio and Ferrentino, Pasqualino and Hashimoto, Shuji},
	booktitle={Systems, Man, and Cybernetics, 1998. 1998 IEEE International Conference on},
	volume={2},
	pages={1055--1060},
	year={1998},
	organization={IEEE}
}

@article{wachs2011vision,
	title={Vision-based hand-gesture applications},
	author={Wachs, Juan Pablo and K{\"o}lsch, Mathias and Stern, Helman and Edan, Yael},
	journal={Communications of the ACM},
	volume={54},
	number={2},
	pages={60--71},
	year={2011},
	publisher={ACM}
}

@misc{intraspaceAbout,
	title = {INTRA SPACE - ABOUT},
	author = {Jauernik, Christina and Simon Oberhammer},
	howpublished = {\url{https://intraspace.akbild.ac.at/imprint/}},
	note = {Accessed: 2018-11-28}
}

@misc{fubi,
	title = {FUBI - Full Body Interaction Framework},
	author = {Kistler, Felix},
	howpublished = {\url{https://www.informatik.uni-augsburg.de/en/chairs/hcm/projects/tools/fubi/}},
	note = {Accessed: 2018-11-28}
}

@misc{capturyLive,
	title = {Captury Live - human motion in real-time},
	howpublished = {\url{http://thecaptury.com/captury-live/}},
	note = {Accessed: 2018-11-28}
}

@inproceedings{llorach2017say,
	title={Say Hi to Eliza},
	author={Llorach, Gerard and Blat, Josep},
	booktitle={International Conference on Intelligent Virtual Agents},
	pages={255--258},
	year={2017},
	organization={Springer}
}

@inproceedings{ranathunga2011interfacing,
	title={Interfacing a cognitive agent platform with Second Life},
	author={Ranathunga, Surangika and Cranefield, Stephen and Purvis, Martin},
	booktitle={International Workshop on Agents for Educational Games and Simulations},
	pages={1--21},
	year={2011},
	organization={Springer}
}

repository: YenR/bac-thesis

repo_name: YenR/bac-thesis


text:
const Discord = require('discord.js')
var hive = require('@hiveio/hive-js')
var fs = require("fs")
var moment = require("moment")
var whitelistjs = require("./whitelist.js")
var api = require("./api")
var helper = require("./helper.js")

var config = {}
var whitelist = []
var times = {}
var messagesToUser = {}

api.start()

var token = config["discordToken"]
var prefix = config["prefix"]
var botCommandRoleName = config["botCommandRole"]
var version = config["version"]
var hiveAccount = config["hiveAccount"]
var minTimeWhitelisted = config["minTimeWhitelisted"]
var maxTimeWhitelisted = config["maxTimeWhitelisted"]
var minTimeNotWhitelisted = config["minTimeNotWhitelisted"]
var maxTimeNotWhitelisted = config["maxTimeNotWhitelisted"]
var minimumPowerToVote = config["minimumPowerToVote"]
var extraMessage = config["extraMessage"]
var voteWhiteListed = config["voteWhiteListed"]
var voteNonWhiteListed = config["voteNonWhiteListed"]
var allowComments = config["allowComments"]
var leaveComment = config["leaveComment"]
var blacklistedTags = config["blacklistedTags"]
var whitelistOnlyMode = config["whitelistOnlyMode"]

loadConfig()
loadWhitelist()
loadTimes()
updateMessagesToUser()

hive.api.setOptions({url: 'https://anyx.io'})

const bot = new Discord.Client();

bot.on('ready', () => {
    console.log('Bot has started');
    bot.user.setActivity(prefix + "help", {
        type: 'PLAYING'
    });
});

bot.on('message', message => {
    if (message.author.bot) return;
    loadConfig()
    loadWhitelist()
    loadTimes()
    updateMessagesToUser()

    var botCommandId = -1
    try {
        botCommandId = message.guild.roles.find("name", botCommandRoleName).id
    } catch (err) {
        console.log("ROLE DOESN't EXIST")
    }

    var isBotCommander = false
    try {
        isBotCommander = message.member.roles.has(botCommandId)
    } catch (err) {
        console.log("Bot Commander Role Failed Somehow")
    }

    if (message.content.indexOf(prefix) === 0) {
        console.log(message.content)
        var afterPrefix = message.content.split(prefix).pop()
        var splitMessage = afterPrefix.split(" ")
        var command = splitMessage[0]
        console.log(command)

        if (command == "help") {
            var messageToSend = replaceVariabledInTextWithValue(messagesToUser.help, message.author.id)
            message.channel.send(messageToSend)
        }

        if (command == "version" || command == "v") {
            var messageToSend = replaceVariabledInTextWithValue(messagesToUser.version, message.author.id)
            message.channel.send(messageToSend)
        }

        if (command == "upvote") {
            hive.api.getAccounts([hiveAccount], function(err, response) {
                var secondsago = (new Date - new Date(response[0].last_vote_time + "Z")) / 1000;
                var vpow = response[0].voting_power + (10000 * secondsago / 432000);
                var vp = Math.min(vpow / 100, 100).toFixed(2);
                if (vp >= minimumPowerToVote) {
                    var link = splitMessage[1]
                    var whole = link.split("@").pop()
                    whole = whole.split("/")
                    console.log(whole)
                    let wif = config["privatePostingKey"]
                    let voter = hiveAccount
                    let author = whole[0].toLowerCase()
                    var permlink = whole[1]
                    try {
                        permlink = permlink.toLowerCase()
                    } catch (err) {
                        console.log(err)
                        message.channel.send("<@" + message.author.id + "> Error. Please try again." + extraMessage)
                        return
                    }

                    loadTimes()
                    let authorLastVoteDate = times[author]

                    let currentUTC = moment.utc()
                    var differenceVoted = currentUTC.diff(authorLastVoteDate, 'minutes')

                    if (authorLastVoteDate == null) {
                        differenceVoted = 1441
                    }
                    if (differenceVoted >= 1440) {
                        hive.api.getContent(author, permlink, function(err, result) {

                            if (err == null) {
                                var jsonMetadata = JSON.parse(result.json_metadata)
                                var tagsOnPost = jsonMetadata.tags
                                tagsOnPost.push(result.category)
                                blacklistedTags = blacklistedTags.replace(/\s/g, '')
                                blacklistedTags = blacklistedTags
                                var blacklistedTagsArray = blacklistedTags.split(",")
                                var containsMatchingBlacklistedTags = helper.shareAnElement(tagsOnPost, blacklistedTagsArray)

                                var isComment = true

                                if (result.parent_author == "") {
                                    isComment = false
                                }

                                if (!allowComments && isComment) {
                                    message.channel.send("<@" + message.author.id + "> We don't allow comments.")
                                    return
                                }

                                if (containsMatchingBlacklistedTags) {
                                    var messageToSend = replaceVariabledInTextWithValue(messagesToUser.postContaintsBlacklistedTags, message.author.id)
                                    message.channel.send(messageToSend)
                                    return
                                }

                                var time = result["created"]
                                var createdTime = moment.utc(time)
                                var now = moment.utc()
                                var difference = now.diff(createdTime, 'minutes')

                                if (whitelist.includes(author)) {
                                    if (helper.isInRangeInclusinve(minTimeWhitelisted, maxTimeWhitelisted, difference)) {
                                        voteNow(wif, voter, author, permlink, voteWhiteListed * 100, message, true);
                                    } else {
                                        message.channel.send("<@" + message.author.id + "> Posts can only be voted between " + minTimeWhitelisted + " minutes and " + (maxTimeWhitelisted / 1440) + " days for whitelisted authors. This post doesn't meet that requirement." + extraMessage)
                                    }
                                } else {
                                    if (!whitelistOnlyMode) {
                                        if (helper.isInRangeInclusinve(minTimeNotWhitelisted, maxTimeNotWhitelisted, difference)) {
                                            voteNow(wif, voter, author, permlink, voteNonWhiteListed * 100, message, false);
                                        } else {
                                            message.channel.send("<@" + message.author.id + "> Posts can only be voted between " + minTimeNotWhitelisted + " minutes and " + (maxTimeNotWhitelisted / 1440) + " days for non-whitelisted authors. This post doesn't meet that requirement." + extraMessage)
                                        }
                                    } else {
                                        message.channel.send("<@" + message.author.id + "> The bot is in whitelist only mode. Please get whitelisted to use it.")
                                    }
                                }

                            } else {
                                message.channel.send("<@" + message.author.id + "> We couldn't find your post, do you have the right link?")
                            }
                        })
                    } else {
                        var timeLeft = moment.duration(1440 - differenceVoted, "minutes")._data
                        if (timeLeft.days == 0) {
                            message.channel.send("<@" + message.author.id + "> You tried to get a vote too early. Try again later. Minimum 1 day in between votes. Try again in " + timeLeft.hours + " hours and " + timeLeft.minutes + " minutes." + extraMessage)
                        } else {
                            message.channel.send("<@" + message.author.id + "> You tried to get a vote too early. Try again later. Minimum 1 day in between votes. Try again in " + timeLeft.days + "day(s)." + extraMessage)
                        }
                    }

                } else {
                    message.channel.send("<@" + message.author.id + "> " + hiveAccount + " has " + vp + "% voting power left. " + hiveAccount + " only votes when it has at least " + minimumPowerToVote + "% vp. Please try again once that has been reached. To get the current voting power, use " + prefix + "power." + extraMessage)
                }
            })
        }

        if (command == "power") {
            helper.getVPOfAccount(hiveAccount, function(vp) {
                message.channel.send("<@" + message.author.id + "> " + hiveAccount + " has " + vp + "% voting power left.")

            })
        }

        if (command == "value") {
            var weight = parseFloat(splitMessage[1])
            if (isNaN(weight) || weight > 100 || 0 > weight) {
                message.channel.send("<@" + message.author.id + "> The proper waay to use this command is `" + prefix + "value {Vote Weight(Between 0.01 and 100)}`. Please try again.")
                return
            }
            hive.api.getRewardFund('post', function(errFunds, responseFunds) {
                var rewardBalance = responseFunds.reward_balance.split(" ")[0]
                var recentClaims = responseFunds.recent_claims
                hive.api.getAccounts([hiveAccount], function(errAccount, responseAccount) {
                    var secondsago = (new Date - new Date(responseAccount[0].last_vote_time + "Z")) / 1000;
                    var vpow = responseAccount[0].voting_power + (10000 * secondsago / 432000);
                    var vp = Math.min(vpow / 100, 100).toFixed(2);
                    var shares = parseFloat(responseAccount[0].vesting_shares.split(" ")[0])
                    var recievedShares = parseFloat(responseAccount[0].received_vesting_shares.split(" ")[0])
                    var sentShares = parseFloat(responseAccount[0].delegated_vesting_shares.split(" ")[0])
                    var totalVestingShares = shares + recievedShares
                    totalVestingShares = totalVestingShares - sentShares
                    hive.api.getCurrentMedianHistoryPrice(function(errHistory, resultHistory) {
                        var final_vest = totalVestingShares * 1e6
                        var power = (parseFloat(vp) * parseFloat(weight) / 10000) / 50
                        var rshares = power * final_vest / 10000
                        var estimate = null
                        estimate = (rshares / parseFloat(recentClaims) * parseFloat(rewardBalance) * parseFloat(resultHistory.base.split(" ")[0] / resultHistory.quote.split(" ")[0])) * 10000
                        if (estimate != null) {
                            message.channel.send("<@" + message.author.id + "> " + hiveAccount + "'s vote value at " + weight + "% vote weight is estimated to be $" + (Math.round(estimate * 1000) / 1000) + ".")
                        } else {
                            message.channel.send("<@" + message.author.id + "> The proper way to use this command is `" + prefix + "value {Vote Weight(Between 0.01 and 100)}`. Please try again.")
                        }
                    })
                })
            })
        }

        if (command == "add") {
            if (isBotCommander) {
                whitelistjs.addToWhitelist(splitMessage[1].toLowerCase(), message)
            } else {
                message.channel.send("<@" + message.author.id + "> Only the people allowed can add to the whitelist.")
            }
        }

        if (command == "remove") {
            if (isBotCommander) {
                whitelistjs.removeFromWhitelist(splitMessage[1].toLowerCase(), message)
            } else {
                message.channel.send("<@" + message.author.id + "> Only the people allowed can remove from the whitelist.")
            }
        }

        if (command == "change") {
            if (isBotCommander) {
                var toChange = splitMessage[1]
                var changeTo = splitMessage[2]

                if (config[toChange] != null) {
                    var type = typeof(config[toChange]).toString()
                    if (type == "string") {
                        config[toChange] = changeTo.toString()
                        writeConfig()
                    }
                    if (type == "boolean") {
                        if (changeTo == "true") {
                            config[toChange] = true
                            writeConfig()
                        } else if (changeTo == "false") {
                            config[changeTo] = false
                            writeConfig()
                        } else {
                            message.channel.send("<@" + message.author.id + "> This can only be changed to `true` or `false`.")
                        }
                    }
                    if (type == "number") {
                        config[toChange] = parseFloat(number)
                        writeConfig()
                    }
                    console.log(config)

                } else {
                    message.channel.send("<@" + message.author.id + "> That doesn't exist. You sure you have the right name?")
                }
            } else {
                message.channel.send("<@" + message.author.id + "> Only " + botCommandRoleName + " can change configs.")
            }
        }
    }
})

function voteNow(wif, voter, author, permlink, weight, message, member) {
    hive.broadcast.vote(wif, voter, author, permlink, weight, function (err, result) {
        if (err){
            var errorMessage = error.message
            message.channel.send("<@" + message.author.id + "> There was an error with message: " + errorMessage + extraMessage)
            return
        }
        var user = message.author.username

        if (leaveComment) {
            var comment = config["comment"]
            comment = comment.replace(/\{user\}/g, user)
            makeComment(wif, author, permlink, voter, permlink, comment)
        }

        times[author] = moment.utc()
        writeTimes()

        if (member) {
            message.channel.send("<@" + message.author.id + "> Sucessfully voted on your post." + extraMessage)
        } else {
            message.channel.send("<@" + message.author.id + "> Sucessfully voted on your post. You aren't whitelisted." + extraMessage)
        }
    })
}

function makeComment(wif, author, permlink, voter, permlink, comment) {
    hive.broadcast.comment(wif, author, permlink, voter, "re-" + permlink, "title", comment, JSON.stringify({
        app: 'Discord'
    }), function(err, result) {
        console.log("Left comment on : " + author + " " + permlink)
    });
}

function replaceVariabledInTextWithValue(text, tag){
    var editedText = text
    editedText = editedText.replace(/\{hiveAccount\}/g, hiveAccount)
    editedText = editedText.replace(/\{prefix\}/g, prefix)
    editedText = editedText.replace(/\{botCommandRoleName\}/g, botCommandRoleName)
    editedText = editedText.replace(/\{userToTag\}/g, tag)
    editedText = editedText.replace(/\{version\}/g, version)
    return editedText
}

function loadConfig() {
    config = JSON.parse(fs.readFileSync("config.json"));
    token = config["discordToken"]
    prefix = config["prefix"]
    botCommandRoleName = config["botCommandRole"]
    version = config["version"]
    hiveAccount = config["hiveAccount"]
    minTimeWhitelisted = config["minTimeWhitelisted"]
    maxTimeWhitelisted = config["maxTimeWhitelisted"]
    minTimeNotWhitelisted = config["minTimeNotWhitelisted"]
    maxTimeNotWhitelisted = config["maxTimeNotWhitelisted"]
    minimumPowerToVote = config["minimumPowerToVote"]
    extraMessage = config["extraMessage"]
    voteWhiteListed = config["voteWhiteListed"]
    voteNonWhiteListed = config["voteNonWhiteListed"]
    allowComments = config["allowComments"]
    leaveComment = config["leaveComment"]
    blacklistedTags = config["blacklistedTags"]
    whitelistOnlyMode = config["whitelistOnlyMode"]

}

function updateMessagesToUser() {
    messagesToUser = JSON.parse(fs.readFileSync("messages.json"));
}

function writeConfig() {
    fs.writeFile('config.json', JSON.stringify(config, null, 2), function(err) {})
}

function loadWhitelist() {
    whitelist = JSON.parse(fs.readFileSync("whitelist.json"));
}

function loadTimes() {
    times = JSON.parse(fs.readFileSync("times.json"));
}

function writeTimes() {
    fs.writeFile('times.json', JSON.stringify(times, null, 2), function(err) {})
}

bot.on('error', e => {
    console.log(e)
})

bot.login(token);


text:
require dbus.inc
PR = "${INC_PR}.3"
RRECOMMENDS_${PN} = ""
RDEPENDS_${PN} = ""
inherit native

EXTRA_OECONF_X = "--without-x"

DEPENDS = "glib-2.0-native libxml2-native expat-native"
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/dbus-${PV}"

SRC_URI = "\
  http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \
  file://cross.patch \
  file://tmpdir.patch \
  file://fix-install-daemon.patch \
  file://dbus-1.init \
"

do_install_append() {
	# for dbus-glib-native introspection generation
	install -d ${D}${datadir}/dbus
	install -m 0644 bus/session.conf ${D}${datadir}/dbus/session.conf
}

NATIVE_INSTALL_WORKS = "1"

SRC_URI[md5sum] = "b57aa1ba0834cbbb1e7502dc2cbfacc2"
SRC_URI[sha256sum] = "8016540602189e1dca6aca6b7c0735706387e4f85ced75217c6a874980fd0e86"


text:
%%% -*-BibTeX-*-
@inproceedings{CVPR12b,
    author      = {Sakrapee Paisitkriangkrai and Chunhua Shen  and Anton {van den Hengel}},
    title       = {Sharing Features in Multi-class Boosting via Group Sparsity},
    year        = {2012},
    month       = {},
    booktitle   = {IEEE  Conference on Computer Vision and Pattern Recognition (CVPR'12)},
    address     = {},
    venue       = {CVPR},
    pages       = {2128--2135},
    volume      = {},
    publisher   = {},
    note        = {},
    eprint      = {},
    pdf         = {http://hdl.handle.net/2440/69851},
}


text:
/**
 * @hack 替换pixi的_renderWebGL用来支持 softClip
 */
/**
 * Renders the object using the WebGL renderer
 *
 * @method _renderWebGL
 * @param renderSession {RenderSession}
 * @private
 */
PIXI.DisplayObjectContainer.prototype._renderWebGL = function(renderSession)
{
    if (!this.visible || this.alpha <= 0) return;

    if (this._cacheAsBitmap)
    {
        this._renderCachedSprite(renderSession);
        return;
    }

    var i;

    if (this.softClip) {
        SoftClipManager.getManager(renderSession).pushPolygon(this.softClip);
    }
    var skipRenderChildren = false;
    if (this._graphicsFilter || this._mask || this._filters)
    {
        if (this._graphicsFilter) {
            renderSession.spriteBatch.flush();
            renderSession.filterManager.pushFilter(this._graphicsFilter);
        }

        // push filter first as we need to ensure the stencil buffer is correct for any masking
        if (this._filters && !this.filterSelf)
        {
            renderSession.spriteBatch.flush();
            renderSession.filterManager.pushFilter(this._filterBlock);
        }

        if (this._mask)
        {
            renderSession.spriteBatch.stop();
            renderSession.maskManager.pushMask(this.mask, renderSession);
            renderSession.spriteBatch.start();
        }

        if (this._renderSelfWebGL) {
            skipRenderChildren = this._renderSelfWebGL(renderSession);
        }

        // simple render children!
        if (!skipRenderChildren) {
            for (i = 0; i < this.children.length; i++)
            {
                this.children[i]._renderWebGL(renderSession);
            }
        }

        renderSession.spriteBatch.stop();

        if (this._mask) renderSession.maskManager.popMask(this._mask, renderSession);
        if (this._filters && !this.filterSelf) renderSession.filterManager.popFilter();
        if (this._graphicsFilter) renderSession.filterManager.popFilter();
        renderSession.spriteBatch.start();
    }
    else
    {
        if (this._renderSelfWebGL) {
            skipRenderChildren = this._renderSelfWebGL(renderSession);
        }

        // simple render children!
        if (!skipRenderChildren) {
            for (i = 0; i < this.children.length; i++)
            {
                this.children[i]._renderWebGL(renderSession);
            }
        }
    }
    if (this.softClip) {
        SoftClipManager.getManager(renderSession).popPolygon();
    }
};

/**
* Renders the object using the Canvas renderer
*
* @method _renderCanvas
* @param renderSession {RenderSession}
* @private
*/
PIXI.DisplayObjectContainer.prototype._renderCanvas = function(renderSession)
{
    if (this.visible === false || this.alpha === 0) return;

    if (this._cacheAsBitmap)
    {
        this._renderCachedSprite(renderSession);
        return;
    }
    var skipRenderChildren = false;
    if (this._mask)
    {
        renderSession.maskManager.pushMask(this._mask, renderSession);
    }

    if (this._renderSelfCanvas) {
        skipRenderChildren = this._renderSelfCanvas(renderSession);
    }

    if (!skipRenderChildren) {
        for (var i = 0; i < this.children.length; i++)
        {
            this.children[i]._renderCanvas(renderSession);
        }
    }

    if (this._mask)
    {
        renderSession.maskManager.popMask(renderSession);
    }
};

PIXI.DisplayObjectContainer.prototype.addChildAt = function(child, index)
{
    if(index >= 0 && index <= this.children.length)
    {
        if(child.parent)
        {
            child.parent.removeChild(child);
        }

        child.parent = this;

        this.children.splice(index, 0, child);
        this._qc && this._qc._dispatchChildrenChanged('add', [child._qc]);
        if(this.stage)child.setStageReference(this.stage);

        return child;
    }
    else
    {
        throw new Error(child + 'addChildAt: The index '+ index +' supplied is out of bounds ' + this.children.length);
    }
};

/**
 * Swaps the position of 2 Display Objects within this container.
 *
 * @method swapChildren
 * @param child {DisplayObject}
 * @param child2 {DisplayObject}
 */
PIXI.DisplayObjectContainer.prototype.swapChildren = function(child, child2)
{
    if(child === child2) {
        return;
    }

    var index1 = this.getChildIndex(child);
    var index2 = this.getChildIndex(child2);

    if(index1 < 0 || index2 < 0) {
        throw new Error('swapChildren: Both the supplied DisplayObjects must be a child of the caller.');
    }

    this.children[index1] = child2;
    this.children[index2] = child;
    this._qc && this._qc._dispatchChildrenChanged('order', [child._qc, child2._qc]);
    child.displayChanged(qc.DisplayChangeStatus.ORDER);
    child2.displayChanged(qc.DisplayChangeStatus.ORDER);
};

/**
 * Changes the position of an existing child in the display object container
 *
 * @method setChildIndex
 * @param child {DisplayObject} The child DisplayObject instance for which you want to change the index number
 * @param index {Number} The resulting index number for the child display object
 */
PIXI.DisplayObjectContainer.prototype.setChildIndex = function(child, index)
{
    if (index < 0 || index >= this.children.length)
    {
        throw new Error('The supplied index is out of bounds');
    }
    var currentIndex = this.getChildIndex(child);
    this.children.splice(currentIndex, 1); //remove from old position
    this.children.splice(index, 0, child); //add at new position
    this._qc && this._qc._dispatchChildrenChanged('order', [child._qc]);
    child.displayChanged(qc.DisplayChangeStatus.ORDER);
};

/**
 * Removes a child from the specified index position.
 *
 * @method removeChildAt
 * @param index {Number} The index to get the child from
 * @return {DisplayObject} The child that was removed.
 */
PIXI.DisplayObjectContainer.prototype.removeChildAt = function(index)
{
    var child = this.getChildAt( index );
    child.maybeOutWorld();
    if(this.stage)
        child.removeStageReference();

    child.parent = undefined;
    this.children.splice( index, 1 );
    this._qc && this._qc._dispatchChildrenChanged('remove', [child._qc]);

    return child;
};

/**
 * 提供 remove 方法，这样节点移除的时候就不需要判断 if remove then remove else removeChild
 */
PIXI.DisplayObjectContainer.prototype.remove = function(child)
{
    return this.removeChild(child);
};

/**
 * Removes all children from this container that are within the begin and end indexes.
 *
 * @method removeChildren
 * @param beginIndex {Number} The beginning position. Default value is 0.
 * @param endIndex {Number} The ending position. Default value is size of the container.
 */
PIXI.DisplayObjectContainer.prototype.removeChildren = function(beginIndex, endIndex)
{
    var begin = beginIndex || 0;
    var end = typeof endIndex === 'number' ? endIndex : this.children.length;
    var range = end - begin;

    if (range > 0 && range <= end)
    {
        var removed = this.children.splice(begin, range);
        var removedQCNode = [];
        for (var i = 0; i < removed.length; i++) {
            var child = removed[i];
            child.maybeOutWorld();
            if(this.stage)
                child.removeStageReference();
            child.parent = undefined;
            if (child._qc) {
                removedQCNode.push(child._qc);
            }
        }
        this._qc && this._qc._dispatchChildrenChanged('remove', removedQCNode);
        return removed;
    }
    else if (range === 0 && this.children.length === 0)
    {
        this._qc && this._qc._dispatchChildrenChanged('remove', []);
        return [];
    }
    else
    {
        throw new Error( 'removeChildren: Range Error, numeric values are outside the acceptable range' );
    }
};

/**
 * 获取本地节点范围
 * @returns {Rectangle}
 */
PIXI.DisplayObjectContainer.prototype.getLocalBounds = function()
{
    var matrixCache = this.worldTransform;
    this._isSubNeedCalcTransform = true;
    this.worldTransform = PIXI.identityMatrix;

    for(var i=0,j=this.children.length; i<j; i++)
    {
        this.children[i].updateTransform();
    }

    var bounds = this.getBounds();

    this.worldTransform = matrixCache;
    this._isSubNeedCalcTransform = true;
    this._isNotNeedCalcTransform = false;
    return bounds;
};

PIXI.DisplayObjectContainer.prototype.displayMaybeOutWorld = PIXI.DisplayObject.prototype.maybeOutWorld;

/**
 * 可能被移出世界，并不在进入世界显示时
 */
PIXI.DisplayObjectContainer.prototype.maybeOutWorld = function() {
    this.displayMaybeOutWorld();
    var children = this.children;
    for(var i=0,j=children.length; i<j; i++)
    {
        children[i].maybeOutWorld();
    }
};

repository: quinsmpang/qiciengine-core

repo_name: quinsmpang/qiciengine-core