All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jim C. Brown" <jma5@umd.edu>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] vde-inject 0.0.1
Date: Thu, 9 Feb 2006 00:39:53 -0500	[thread overview]
Message-ID: <20060209053953.GA13800@jbrown.mylinuxbox.org> (raw)
In-Reply-To: <20060208231325.GA28610@jbrown.mylinuxbox.org>

[-- Attachment #1: Type: text/plain, Size: 918 bytes --]

Ok, I managed to fix my VDE issues and get this to work on eth0. Working sources
for vde-inject and vde_pcap_inject attached.

It will cause duplicate packets to occur, but otherwise appears stable.

You need libpcap installed. (According to my pcap.h, I have pcap 2.4 installed.)

Compile vde_pcap_inject with this command:

gcc -o vde_pcap_inject vde_pcap_inject.c -lpcap

Extract the bz2ball, cd into vde-inject and type 'make'. This will build the
module, which you can load via 'insmod vdeinject.ko'

Then load up the VDE network as so (running as root):

vde_switch -hub -daemon
chmod 666 /tmp/vde.ctl
./vde_pcap_inject eth0 /tmp/vde.ctl

This step will connect the VDE to eth0, creating a vmware like bridge.

You can now just run qemu apps with vdeq/vdeqemu normally, and they'll appear
to be running on your LAN.

-- 
Infinite complexity begets infinite beauty.
Infinite precision begets infinite perfection.

[-- Attachment #2: vde_pcap_inject.c --]
[-- Type: text/plain, Size: 5947 bytes --]

/* Copyright (C) 2005-2006 Jim Brown
 * Copyright (C) 2005 Henrik Nordstrom
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
 *
 * The VDE connection setup (open_vde) is loosely based on a similar
 * functions in vdeq.c by Renzo Davoli
 */

#include <sys/socket.h>
#include <netpacket/packet.h>
#include <net/ethernet.h>       /* the L2 protocols */
#include <sys/ioctl.h>
#include <fcntl.h>
#include <net/if.h>
#include <net/if_arp.h>
#include <sys/un.h>
#include <errno.h>
#include <signal.h>

#include <linux/if_tun.h>

#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <stdlib.h>

#include <pcap.h>

#define SWITCH_MAGIC 0xfeedface
#define BUFSIZE 2048
#define ETH_ALEN 6
#define PCAP_READ_TIMEOUT 1

enum request_type {
    REQ_NEW_CONTROL
};

struct request_v3 {
    uint32_t magic;
    uint32_t version;
    enum request_type type;
    struct sockaddr_un sock;
};

static int
open_vde(char *name, int intno, int group)
{
    int pid = getpid();
    struct request_v3 req;
    int fdctl;
    int fddata;
    struct sockaddr_un sock;

    if ((fdctl = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) {
	perror("socket");
	exit(1);
    }
    sock.sun_family = AF_UNIX;
    snprintf(sock.sun_path, sizeof(sock.sun_path), "%s", name);
    if (connect(fdctl, (struct sockaddr *) &sock, sizeof(sock))) {
	perror("connect");
	exit(1);
    }
    memset(&req, 0, sizeof(req));
    req.magic = SWITCH_MAGIC;
    req.version = 3;
    // req.type = REQ_NEW_CONTROL + ((group > 0) ? ((geteuid() << 8) + group) << 8 : 0);
    // req.type = REQ_NEW_CONTROL + (port << 8);
    req.type = REQ_NEW_CONTROL + (10 << 8);
    req.sock.sun_family = AF_UNIX;
    sprintf(&req.sock.sun_path[1], "%5d-%2d", pid, intno);

    if ((fddata = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0) {
	perror("socket");
	exit(1);
    }
    if (bind(fddata, (struct sockaddr *) &req.sock, sizeof(req.sock)) < 0) {
	perror("bind");
	exit(1);
    }
    if (send(fdctl, &req, sizeof(req), 0) < 0) {
	perror("send");
	exit(1);
    }
    if (recv(fdctl, &sock, sizeof(struct sockaddr_un), 0) < 0) {
	perror("recv");
	exit(1);
    }
    if (connect(fddata, (struct sockaddr *) &sock, sizeof(struct sockaddr_un)) < 0) {
	perror("connect");
	exit(1);
    }
    /* note: fdctl is intentionally leaked. Closed on exit by the OS. */
    return fddata;
}

void
set_nonblocking(int fd)
{
    int fl = fcntl(fd, F_GETFL);
    fcntl(fd, F_SETFL, (fl | O_NONBLOCK));
}

void
pcap_relay(u_char *args, const struct pcap_pkthdr *header, const u_char * packet)
{
    int * vde_socket = (int *)args;
    send(*vde_socket, packet, header->len, 0);
}

static void
wrap_dispatch(fd_set * rfd, pcap_t * handle, int vde_socket)
{
    int n;

    if (FD_ISSET(pcap_get_selectable_fd(handle), rfd)) {
	n = pcap_dispatch(handle, -1, pcap_relay, (u_char *)&vde_socket);
    }
}

int pcap_sendpacket(pcap_t * handle, const u_char * packet, int len, const char * dev)
{
   struct sockaddr_ll sa1;
   struct ifreq ifr;

   strncpy (ifr.ifr_name, dev, sizeof(ifr.ifr_name) - 1);
   ifr.ifr_name[sizeof(ifr.ifr_name)-1] = '\0';
   if (ioctl(pcap_fileno(handle), SIOCGIFINDEX, &ifr) == -1)
      return -1;

   memset(&sa1, 0, sizeof (sa1));
   sa1.sll_family = AF_PACKET;
   sa1.sll_ifindex = ifr.ifr_ifindex;
   sa1.sll_protocol = htons(ETH_P_ALL);

   if (sendto(pcap_fileno(handle), packet, len, 0, (struct sockaddr *)&sa1, sizeof(sa1)) == len)
   {
	return 0;
   }
   else
   {
	return -1;
   }
}

int vde_inject_fd = -1;

static void
relay(fd_set * rfd, int vde_socket, pcap_t * handle, const char * dev)
{
    int n;
    char packet[65536];
    union {
	struct sockaddr_ll ll;
	struct sockaddr_un un;
    } sa;
    socklen_t sa_len = sizeof(sa);

    if (FD_ISSET(vde_socket, rfd)) {
	n = recvfrom(vde_socket, packet, sizeof(packet), 0, (struct sockaddr *)&sa, &sa_len);
	if (n > 0)
	{
	    pcap_sendpacket(handle, packet, n, dev);
	    vde_inject_fd = open("/proc/vdeinject", O_WRONLY);
	    if (vde_inject_fd != -1)
	    {
	    	write(vde_inject_fd, packet, n);
	    	close(vde_inject_fd);
	    }
	}
	else if (n == 0)
	    exit(1);
	else if (errno != EINTR) {
	    perror("recv:");
	    exit(1);
	}
    }
}

pcap_t * a;
void handle_cl(int signal)
{       
        printf("Caught signal %d, cleaning up ...\n", signal);
        pcap_close(a);
        exit(0);
}

int
main(int argc, char **argv)
{
    int vde_socket;
    pcap_t * handle;
    char errbuf[PCAP_ERRBUF_SIZE];
    const u_char * packet;
    fd_set rfd;
    int fds;

    if (argc != 3) {
	printf("Usage: %s interface vde_socket\n", argv[0]);
	exit(1);
    }
    handle = pcap_open_live(argv[1], BUFSIZ, 1, PCAP_READ_TIMEOUT, errbuf);
    if (handle == NULL)
    {
    	printf("%s\n", errbuf);
	exit(1);
    }
    vde_socket = open_vde(argv[2], 0, 0);
    set_nonblocking(vde_socket);

    a = handle;
    signal(SIGINT, handle_cl);

    fds = pcap_get_selectable_fd(handle);
    if (vde_socket > fds)
	fds = vde_socket;
    fds += 1;
    FD_ZERO(&rfd);
    int i;
    for (;;) {
	int n;
	FD_SET(pcap_get_selectable_fd(handle), &rfd);
	FD_SET(vde_socket, &rfd);

	n = select(fds, &rfd, NULL, NULL, NULL);
	if (n > 0) {
	    wrap_dispatch(&rfd, handle, vde_socket);
	    relay(&rfd, vde_socket, handle, argv[1]);
	} else if (n < 0 && errno != EINTR) {
	    perror("select:");
	}
    }
}

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: vde-inject.tbz --]
[-- Type: text/plain; charset=unknown-8bit, Size: 13427 bytes --]

BZh91AY&SY_äéí\0`ºÿÿÿÿÿÿÿÿÿÿÿÿÿïÿÿÿÿÿþLWüL_LMôUá\ýyïà@\0ú/d²¬V®³¾]›Öbç&e\x1dW\x03\0\r\x14\0\0\0®çj\x1cÚµ”\0 éTb(\x11B9\r\0\r\x03S°
\0\x15UAQ(£E@(\0\x19QB\x02(SL¨RRD\x04RR)P\x12P
BH%#\x11 \x03\x10i
"€u \x1d±À1ð”&Bf‚i©´™\x18CQ™\r4È&Òb'‰´G© jm5=M¤ÑšM24ô4ÓI“LLM\x01é¨4ѧ¢10&	é\x18ÔÓCh\x06§ M\x02\x10$Ó$ÚQú§¨zžSCõFPh\04\0\0\0\x01 \r\x01 \0\0\0\0\0\0\0\0\0\0€\x03@4h\x06†š4d\x01“A \x1a\x1a4È\x19\0\0\x19\x064\0d\0\x1ah2\x1ad12\r4h\x01£@\x19\0\0I¤‘\x10&B`ƒJlOÒ˜Œ€õ\x06\x06Ôd\r\04õ\r\x01£@Ñ h\x06€È\0\x03@\0\0\0\0\0\x03!\x15OSÔ~¨\x1a\0\x06@\0\x03CA \0\0\0\0\x1a\x03@\f#!„\0\0\0\0\0\0\0\0\0\0\x12"\b\x04\x02\x1a\x13\x12a\x011\x11”Ÿ©èSòd›\x157¤µ5=GꞣFOIé¨4Ð0£@\0\0\0\x01¦€\x03@\0\x03A§?HX\x18Ô\x1c°.\x1fÀ6æÔÂ5E`”,—Ƥ l\x12½¢çg\0ùò†
ÅM"…ýøú«®lH¼ÊI,®G¤õž1ì|\x1c©‚™) \x02Š(§+Èâ^[¿;¸íÌ"t­ÐÍÏà÷Þ\x0f‘yü¹ž¯:á¼äסtDXf`‚±ô\x10€ê®˜)Žb¬s\x1dn$Ý\x06nNÃb챘¼Ÿ%:ê†ý\x04ñ	÷*\x04{ÓÃð<PlÁÌAŽ@R?îàŸ¡UI¼;Ïç¢]Ì¿bÖ§ä\x03ˆÔ\x19ЬH‰Q	Š?\x05!í¼c¦t@\x1aCÊïuÚíG—Áû}¯^[3;³§c…©èx\x1c\x13QÒɁŽnN…ò5{®\v»;õçŸìû|ß…ÝÝñ\x12¨\x17™üÁ^Ózÿ'LÍ\ax‡¤,ù‚״Š:\b'£ÏÛK{­Ûm‰Ì5I‘@@áòúìiB)¬\ÜOµûÅa\0ØÚügº\ûƒù\x06jƒ\x0f/_á‡\x18`€o±û3Ԕ׆yß\x19¢iÆNð.Rûý©:FK¯£=\vΣ¢ œÅ\x19DXyIÑ™=BôõŒ¡ÂK?Ú\x02bŸ\x1c~!G*
\bÊ‚/ Í<¡Ãò\x14\x1eé\x02aϺA\x11\x10dòʝÒÔ ˆÔ ‰[(R¢6ˆ5l\x01ie\x066Z«K-–Â\bˆ€dqY\x10@}s\x02\x19?q‘\0ÄîØAedeàê\x19ÔF?L\x05†i¤KlHø>ˆ>£Bü¿–\bŽ?ÖÑI\x7fáÈ#ó?\x1c)M#y†\x10qãP\x7fÊ…[@i¤\x06¹B\\x7fB\x177øý°ZQ;m\x048ýå—q\x12Ы6L\vV¤µi£ÇãÕ¬èSY•73Â\bã\r²€R0gÞd\x01Î\x02\0ðj\x1fm#~ûþm\x16YgÉÐ\x0e>\x13\b˜5ªTy¨’M6¶\x10ÃĘD´*!\x18Ï;ñúš—Ž"!칩àxÆ\fìP'c¤¡2d–\0\x1a\x18I\x181„%)d;xøXdti”\f-„-FXBXŒ•‚ \a`ož4`\x18ÁAë[wG€Š ;\x02	8 þ‡'(n“n¾\x01"áÌ…tA\x10ˆE'.Y\x1fEù'О¿ç‡mõÛ>°Í{3	Ë\x1ep§RFñˆO†øã\x11\x04\rÔ¶»ë|\fœñš¼\x04\x16\x10™äë Î^ÍòÒ³\x13Ò°¨$g\x0e\x14™–«\x01E0^[\vLn)Óös7š\x1f¿9ޱÒù!b»m\x01ýøÑTVGrÔ\x1eÁë\a­–\x0fØ,ïhŠ\x02\x04\ap´`h(Å5•Þ_	E†F¤ye\x01Ò¹H‹\x03\x064Ï醶àe7sò&Ü"‚‡jÀ÷A'øˆ\a„4î]4éBIï‰ó"b\x12)6\vÛÂB{\x0f?㆞fŽó÷ý\x7fmJMN¿gãËʾäå^[³dZ\x11+ØQÖ"ˆ\x1eY¥ø42ix±Œc\x18ê¿?¤\x11G\x1cx\r´4°9Þ 0„!
˜2\x15\x06O\x0e0–fGg\x05Ðh\b0²\0~\x107"\f"\x13"ò‘@DË\x0fÌ|d\x10á\x1e7«\x04>\x174<¿CËÖ;»½nƒW™ 4\x1d÷™<\vÜ÷xA询҄\r\x16Î"\aþ\x15\x04.ï\x11‘U<‘A\x16=ƒD/ÕûÇ×\x04¤Av˜Û\x03\x06’;\x03øgGûXW\x0en‘6KÀZ§‘\x19!‘ß±"N
•\v"!î\x14&èp=/záˆ~\aÞÉHô\x18B\x1a\x05¿ø^è• Ä\x1dÍ 4\x18MСß<Ã!ÿÌ<~ÿ6³@\aŠ{gÇ\x11\x14\x19÷Þ‡© 袠ªˆ|§6	ìyæ!é%㪮G„·³Ì\x12²\x04‡†½[{E/\x13–*\x1c¤GTcת›H'·	—p¬Jʱõ\x18ó•\x10úüHEÿ¶\x1fÙŸÇ-ÉŠš¸®0\x11û']öleíþk/ÌÍ!!Nö@à΃+vÙi˜@éë~‡R-âé_c¸RM¾‰Ö\x0f®§ŸÐSþWÒû<èÛyp¶\7›®R—ì
\a/NÐÙ/F›\x10ýJ–Ü\x11\x11\x03\x1eå\x11ñÕÄÀ"¢*h­¶
†\x1d¢{\x13Å\a}&½öŠQûoV5z‰³zºg)KL»]’£XX\x12õ§°Z§ÃŹg\x16—?;Æí\x11Õ\x11<pæÖ>R1\x1c©Z®,»‡„Ÿaœa,æÜ4šXE–²Ë\f³óù¯\x17Œ\x1f?ŒI-LçÐ\\x02À¿\x06\x06\v9\x16>‡-€õÜ&g^[ú*Ý™}\x11TØ"?$•ážx;ÕÝ9…`šž@y²^[v(YCM­6c‡îÅd5\x1e’\a8ƒ
¼CSîÊ\x7f¨ž|OaÖ±K%E@õrg`gb{]`\v\x03õN'A0ôÌ'\x13r‰MaO“\x12zsi®gÍ4ƒ\0i\x7fs$Ú‡Ü\x1a™¿ó`wæe®\a\x1f¯œ’&\x18œƒô‹ð\0\x12\x0f‘	 I#îÌH\x12ûãMˆÈ@ò¼ã+åhó\x03Ñ›ž„Ô=@„ødÞ\x1eŠÑH)\x0efQŠžÌkªSÚ¡$ú^«ô‡?¾ëZ\x05ÊfE\a×`曨÷p¾K\f\x1a\0ÕT¼¥˜]¢ˆlY6K\fÅ,òE‰}ÆuÙÐ×û¨$	MÀ¦q\®o\x0eˆšyII	\v3\x12”ˆ)½³ûŠy/w¼|\f\x18Úõw\x12|É\x1ePÙÀ>$‡<
\a>Í«É][“°j\x17'3Ê1x5dXD\x179Oüù_îï{{©\x1c[…2B|ôÏú[Øo·ÆõÔn紐³.L¤¾Ö«Ü¡/Ò]>e\x0fi3Ä18Ðú8ù¾?4?œùsúýmÕé…½‰µ\x11ümÖ¤sÏ—»EÖ.ŽHUí‚§=¥\x1cè¾72æöåê)’òáǏ-ò÷\x1e«>8¬=P\x10Û²|>y÷\x1c2_`ˁ»wCÝÈ\x1a^[\x1a;\x1a\x12\x02\x0eDtÏ\x1e\aíÓèz4zwŸ’¥Â†Ãþ$ã——!9á\x01ÝT\x18òÓ\x04ºäXähЃýï•"þÜ£m°Ÿ\x1fYogF{0Ð\x03ÏK‰CÓYnèP rdeïOcr–ø¡¬xˆ\x1e"\x10Ëº\f7g\¤³Î\x1d¹ú~§‘šÏ\x1ff´`úâ}–ÛlN0H‚°Q#\x11H¢D\x14A\x02#ç©VH,F(,Uˆ"0DH£\x12(Æ,H‰Û\x10¡\x05F\x04c\x14ˆ ‘\x16\x03\x04\bŒˆFADdF
1F9e\x11\x14@`Š+\x18\x02\fY\x04\x18Ec ‘\x10dRmâmÚàúCÉðf* ™Ëy¾Éä參`Ó.=±•öÔø\f‘R"ÕÆ™}ÆŸs\x1có\x17Ã?Œé[M”¬‹\x05\x15@½<k>Ÿ#ê­:å)ͧ{î!UkéSÓ\fÇ©\x154È\f‹Mjîiߍ²ú=ûaq	 Ñ\x12¯ztìäÕ«\x06•\M­XÙ+g\x0e\x15‚#a`Äâ\x11šŠh¿uÐYÑãBµTIG¯.1,\x19ÛcœU6mŠ\x1cõ…ÑÚ˜4ƒDw³Õ–Ó6ÕÍôoÀò
\x1fk×tH×4Mð:,\x15)”\x14BŸwá£\x01\x0eD\x05@yvêŠí\x02æóU#\f»UÚUoßGÅ\x02\x12\r	\x18ìè¥\x1aížÇ|XŠÐ”Y¥×½s\m×|†Ã­Ùzj‰i5‚täUh„YFŸ`©Û›-\x0f9åÎð;µ6\x108ŽSÑ\rín\x0eف«!Öüîöçv›êÇtF­Q”XML\x11¥\x12Œ»p”›Î)¹x$]\x05\x16Ï›¤e\x0f{7¿;Ó‰\x1cÚëNaˆÓnëVšr¼lb†è–uŠŸšo*(ˆ9¬ã=Ñ®>tŠhû^ýÐ\x0f\rŽ|D?OIkÈÞ\x04?Ž q\x0e\x14sÒ¨/wwR„¯z\x02ÚÃÊQ¿4ŽðõaeŬBã¹R\x02\x1e¢µ»\f¬%ŽÃkÔm5\vxJÅ\x12ý};®#•¤`œæÕ&
\aƒ\x01еmaß\x14\0\x04¤$&!$e;ë\x15×\x0f^[RÑÒdÛÔý™…\a« ÍFIJ7VB‰˜UÓ ªH
\x0fj¨\x15\b
\x16ER\Ъ\x10]6”\x0eýýuLF:W@¥2ÎÊŠÉS¹Öö‹Áݳ«ç\x06Ì…Ô\r³­ü®ˆÖ-Î\x14·
%G}S~cMŠ¥Œ\r\x194Â6Á\b\x04Ò²Þ^Á¹[\x18®²5†¤fPZÁ5ÝÂ,!\x12¸e°¥Ýr{ñ¡DÚ»Íë.\x18¯k\fîˆç’rcÁÞî\x11I\x14ël\a:<oK‘dl\v²£\x1a*”BîÎh®CåQIF¢«§7ª`0jB1T *Ž2ì^˹V²ú«+”®ÐÛÄh‹^[ÒŒ\x18ó4f\x14\x15–:nd\x18da1>„¥Òr\b‡«s4vev‚°EU–
‹£)\x1aò…É:ÖA4ÍÝ›³6q\x1d­u¨Q´ i噚të«ê¦ášù\x01\x06MTg\x04°úEbŒ<8qq€ƒ\x11Ú®jp©UXcuåØùy®ûÁ^`©\x17ŽhÜ'Jºâ÷*K÷KÔÄ70Hhñ(fDdAÓ¥TpF(\fMa¤Žm‘:x ‚hC:„
ñ¥:®*÷»cÁÃD„Õ…œ-¹©Øah\x10Ò‘d \x1d)ÉÊÍp\x02åYsÂò¨Y¶ÛV÷Ú\x12˜GÔlû%fèM(	°7UTë)¶"\viPÞÝ¥\x14‰žú¢¶ÔÃ_­«Íùp&\x11!EÍ\rRê&ì¤X£ 1ºµ÷³\x1aÕ\x02›cr2\x18¶kyØ\x1dªÕË ΂`4á\x1dó^[:»DÚ·¬5¤C‰»V\x10æºkÞ0Ènšƒ‹£fq’(êîvÀ;\\fÑûwźŠÕMö¾†,è\x12²£î¢
JË\r_+JÄc7â\x1f	­m«Ý©kJ\x10»ª]ÑAͰ%ÄfÕy‚] œ˜~,Ó{qZIz4*èË07\v.\x18\x13áÚ·-)§m•®8ET}¹.×~{•;«\x05Ë.3‘X{B\x17Mƒ \x10Œl	qQÊwê:L\x02yŽÏ\x0e…Z›Ó06˜Ï\x03\b.\aféy«W”"akÑÐ)\x06"Zp\x10“ÑêÉ©´;ƒ°H¼{\x12Uù¹Û\x04ï¸Ƹ³€ÖŽeË88l^ä^[Ö¼xã…'GÆ,ˆ2GMáv@•\x19Ø¿\b\x1c‹«\x13Z̦Üë7±§m®´©4ŒÌY–x¹RÙ„ˆf^[<ý¿¦,,j见]j—to]¯®ÂK`¾c=\x0f7)Ö׎ú£¹åÑ\x05“ÀÔ\x16"
zœ“Ö°ø€ÈÀó\0è?L¤¢\x01Ç“ÍæÎU~k’BBrŸ!‘\0¿Pg°d
§­žŒÿÈ„®eý9ÿ˜^½>cÕèÛ-2ÿ\x05q%s²'.¤>\x01bmw\rK£Ó¥êb£hÔD~¸ÇDR\vN\x1c¦€Î­|/b¡\x13žÖîÂ\x0fºË˜$$.ϸ\x1f1ùùkP¸Ì8åþ³t\vš–¶\x16\f\x18C5\x10D\x12î\x15úXÎÕ»cXÀl
(LIJúúÒŽ³è‰Lõ/×\x19a·m$e\7,F\x10¡~3\x14Òå\x05,YÖÛƒ>\x19\bg3ÀBb¸¡‘Y†ë„$2îÔ/ïn>’¾­i~[8žíHgn1ñfη£ê·™\x1akrŽØö÷zhS,UcOT§óJkjçÙi<\x1em}\x05òy­çz^\x15%¢|6çâÌŒšÏ¼S,¶_\x06_c8"/_\x14m‘x—¤¯©\x01\x03¶ˆË8\x12=M¼.•í7ÄgÝæ	\x12x\'ƒ{:[\vÙND‘GÏ<«W_ÈWïžg?”¾žaÌõBÑ80L™Jª¹\x1aÅMš fŠ!\¸a\x10't0\x1cy\b\f\b;|\x03¼HÔ\x18]\b.o\x03û(JFÓ\x06A8Åè@ئ!AȨÃ_„•¤Ê\,\bŠÙpJªYXÂõ’¦•;aÑB"YÜ‘çiDš2|1»ò†;21¯\x1aE\a·ÙUU H£b_äåÝéò›O—4ºúVoì\%*\x05R˜\x14Ä\a)Œ\0ʆÁ»Eä³ÕŒm¿\x15)zú›þc¯_Î0>OÕ×ë\x1a¯ÐßP¥I&m¼ ¿qRÅ ÚUÜêxŸPŠ&j\x06"iG\x1caÜŠ…\x01«(¬9$G)\x10QJ¥\x04††ã#æ.o33211<Š\x12ZóiÞ\±™õJš\x18\x05\x03S™Èex\x18\x152,n:\x1d†FǨÀÇS!šùoÝ‘…¬kZfS\x1eدaSB\x0eÓ§gw•Ët#°:\x14êÊnkÐ|
\x1cŠ^[Ž]I'q̱R0,r&¦\a*™\x15¦<ý(S\x03´í7T‚c[\x1dú\x16ªƒ\x0eéìàXí*p\x19àhAs#©Øy–48\x18\x1cÄ˝匸/¡Pêw\x1cÍk>\x04
Á̶YãÓ 3â7“­Ì\x15³‰Ýðfs*2¦:˜\x18ð>\x02O*pægö‡aä\f©žF˜A§i±[êÍor\x0e$\x19×\fgF_Ï\éðU\x1d©€{\x17²·Pllcm¶Æ8Hô\x06–&\v˜\x19[ó\x04E¾çâŒÁœKˆ÷›‚˜åé\x1cÁrÉ*\x16åFÆ\v‡YL{8ó<Ê\b\0Ã!0AŸ¥\x16E\x0eòNö|ô0\x13\x19î"\faàZ‰\x19$$-$­Šž¢„™ŒÂµªG”ÚK\x17‹U\eJE‚H
8(\x11F|abÅK\x15=$‰¼©\x1a]~¸Ï\a÷˜0õ\x11\x01\x15\f†c b\x1eàj¼\b‡¥¡3v\x04Í"…,\x02’
BÙÈÁŒc\v^[ƒZb3\x04… š0ßy"	MŠD\x106íhÁ0Dðo褨ÆlÄi†\x04ˆ®0ˆ\x1c5\a´j\x063¿"ˆÈ\x05\x05nd^	1’I2 cp¤ÈŠnd\x05\x10Ï\x01KÑe9Í‹”µ‚RœD¦\x1d¼8àSE\x1dd’H\x183\x12d(1”>\x12 \M.Iqä<\x150à0¦^[\x14(ι©DØÑO$¦‰‚nÉ\x18Ê”ëÀ¡QêT•%Í\v\x12_˜XÌ\x05Š\ÚA+,\x19!º”BR`‘öþñ_wwÌÄ/ ì!
\x01„\x12ÀóšÈxU$\x17i ìI\aó?Zˆ\fR1?¯Y®Ìë\x0f@êòrs+€P	iTnÕ\b%¢Æl\x04\x04€"O\x12H¢DáH„°D6ÄÓl4Q\x15fY\x03wœ\x18ÁU"Á—¥4ãÕD) ™‚\x02L=“l׃Ë\x15\0¨PÝC0YQ²\r‘!Ñ|1]u\x0få	qÔáúã?Œ1\x18-»‰>ùàfŽÿÚGce\x0eþgÎysê\x1dà0ÆU\x19å¾ èuÕ©Hg/
ª×""¹œÈ4°Ã`€€¨\aå…p\x060]ínÛhV˜­\r\x14±¦KZœE4\x13/X(eeÝ©l³zh³o\x16âa¥*öm¢5\x10ºtí¿S\x0e띇w³©¦[±Á#v£½žÂÌÏêýÉ1;\x0f®`…¼hYåɃî+üŽ`C\x03y€	°\vÀ6™¼Ó­\x11<J‘(æ«;Å—ø»müBÚ#/©³\fw\x10|¾è\x0f´33 „
ŒFþt8úãY¬ïæ!bnHäIUÁÀ<}SŽß0Ã\x1c\x16!\aîËs\x03‘¼Ü…¿v>y\x14g …]\x11-Ñ\x18uõkð†¦žFÐ\x1cŒŒ‰(z$

!~á¨,i\f\vè‹=l\x02œæI‚_\ahMƒ^j•MÁ´¼ÚjMÏJ6ü#F—é—¨+%17j—T\x17~6ÕL50JìHcãpÔ£éI%\r\x11R¼lGêb\x13=wÒ’ÊþùÀ9\x01|y‡zÞpçÀhÑ\x14f„\x7fxOá>êˆ\x1aC^[m…\x7fWês=EW\x02‡Ü9ž¸\x1dÍ‚€ÑÕ‰˜(ª"…uRépí\x02\x19iª\x19“µä‰Õ\x18äKføÇ¶ª;h/@oâ>{J\vÔËÜ<°áŒ¼\0:Ù \aV”Ði\x13Š@F\x03ên\x10•\x04¯\aØ6'¾5B‘Eš,\x035R´ÉØ
ƒ–\x1886•\b
oPqÅD,ˆa¸Ç\x01^[P¬.^!—Z\aü•Ôæk6³R\x1f¤ÅßR¦šFÅ—©GŽØ\v4Ó\x1e‘Ù+Ì\f\x06&0gòO\x03ûc,/ÞA¦¨ü†èz•}þ³±x\x1ezcâ+¤tÉ\x12kÜzÊ\fþù®é\x19Ï}«â¨\x01W³¹\x1cÚ\x15yBcÌ(5.\x01×/\x06¼SìŠQ8^àÔžÑÐóToì¥äŽ—å‘óSÒ—\x1a= bvï<ÅÓ"\x1az®<ÊRrfg`ŠtK+óÞÉ‚¹–×YÙ\x14C=Ù+¸ò<\x05«D–íE1‘°Ç-f­*;¸hQ`Oà\x19ø¿m—’xìJlÜ\x1fY}“âÞƒ\f.¶``\x18Ÿo¯AµX\0÷4\x0e\x14w3™&\x18AŒ.Ûc‡\x02‡©žÆ\x182•\x1ag\x1d)Ý'\x1el$1\x02‹1&\x02Ší…\x1c^ŽÍjÆ\x13=\x15ã

—¦\x0f×^\x13 oå‰Bý
š²¥NeNHÏÿS>c\x06Òö„@7Ü\x0fÔ?Sìf‡s/\x1cßA¥\Ohͬژ\x14\x1d…G休\aŠ}¶KÙ(•z˜hà¼\x18C\aqaC	\x0f\x15l¨ª˜†Ð\x1a´¿~qŸ£@?D›\x12¼99í7U\x19ß]Œ\f\x0e+ î\x0e¥L=÷Àݔ|\x1eÂ4¡¥†c Â\2*aL•\x17‰JÕ\vbqe• ^[0\x18ÛFi*
\x05ŠQeÙ‘èÂ\x13ó|O\x0f4,\x121A‚õ_xx&;4sŒÆ›o±’åá\x15ñ6\rH™,\x18|\x01\x0f_'UÀ_Œé"àŽÈ]‹c™‰§aô]\x12ÆÞ]$'Ç4S§Ô,oh»\x01z2\x06’l%â]àÚˆ¬ÈS!¹\x06¢ð•G\x11.qÒÝÙQð¶}çhúͽ¥·1,\x127\x16\x15)³JDÇ¿¾g°ã3ÚV.3\x15DQ\b"ÁÖ¡`„­„+°L±,<¨\x01¤!¡\x17xRÇœ,\x1c°âÀc;˜{ކÉcâfA“Ü>7Ø¡Vâ¯^„DøjHÀ2†¡²’a¢n\vÓ>Ê\x16ˆ/½«è¨Xf1\x0485ãq`ÆÓ^[|:)%\x1fI¸À\x06Òuÿ»MÃ3S؇¼¿¬\fEÀ0Ó¶ùfP-ls\x18íHüG¼óÜ\x179ó3éN\x1e'¾¿–l@¸\fíÆ\x05Ô÷\x10©\x02ÀÑl¼NLø êKײI5ˆa²ÔÕÀ᪀´˜PڝÁ\\x1d\x04D\0×ÍÖà)Ñ\x1eA„S/H\x1d0êŸÇ!+ìÚlà—\x03·Àf×"W¯äßOøK,Îãï,J-ÅíÄ^[”)ˆ¢\x0e**¿:yP¦pz\0ᢐíPí«$\b8J»Î˜`4Š\ag\x11ÔÞ¹ƒHˆª+¡PG—>!1Á=g<4põø\x06Ū´knNX\x1f;\x0e^ˆv!Éš\x03õ¶¾@ðA¸°ÆÆÛyêRò\x14\x17>\x02ü‘C^‡\x0e†ó%%ºßÅ\x18º¡U@6$xi	C
0LûuÔlhþ”\bð;Î;Íç\x0e®áø7Â\x0f\x1dëƒ*~ö\x14ŸŽ\x0fÐYîÞÖ£#@÷=H9\a¨\f  \x1fs(3\aQÆrÑŠõ\r"K=ž!k	ÙXïãI7ø\x101•\x1e8 |5'€(L‘BƐ-ƒ´i\b>ëVÙ¤q#¤8õµ#\a(ÃÖzþÈÖ§Ú8\x1d­&ÍL·0œ¯SóOYï±Rc¸·\`g\x0eZß\x0eøG¾¨@mp^\x02`‰ôÖïä^[d3Üӝ\x12´Gš—;§Š\vÚ«\x11Dƒs_žÒ!¡/m\v™q%¹RÅíxúÅ¡®Ap☽\x10Ìš	
\x1dZX&\x06ސ
\r–+\b3/23¼.‹°3BØØÕBx‹«-‘šBBºôÔ,ÐHÈM6††ÆØŽ\x04†eÈĨ\x18g&ŒcHmvîRDv9ÌÑ%“Xú\0v’j^[Á\0jjqƒL\x03\x02\x13`ši!÷lŒ6\x11¡³Œx²œ)¢\vZ„MÀ¢¼ç¸ŸÀf\x12pT—}$n4æRoG0)\x19
Ö܍½\x03™SŠïEw”¯ÀŒÕÂç\ak9$žñð1\x1a–…Ü·6y£öŸ»A\v\x06ŒÉ\bêƒ\x13âøëËùÛ¥Íñ^[É\x05ÕfAÈ`6½\x1aäž ´\x1d÷IHœE©‚=lSŽ
ìM ¡P\x061j§^[âF¥\x11€J
²ÿÕˆ\x14‘_Ü)2ÄêhuÜ\x1eÍ0'RÈ2öÓ¤	\x194À8@Ø\v ç\aÆ\x14‚\x06<É8^[\x14H¨À²©‘•\f\x05ì
©\b$\fQ94Y*\vÛnP•&Ç`ò°»\x1e¯ÑÂAn\x0fcR¥g°Jb(U!!AZ …ì\x05㘺Hü\x1cCÝm§EÁ2a-”ïh«’š
2`j\x0e\x0eµº
«\0\a\v¦§CÅÖÎíÖ.¶*™É\rëKQAj– y'0srÂŒ;Ì6K‰É(°Ö¢­\x1f\x15†ºµ\r\x14Ý2Þ¸¢È^[M1°ˆ$¶	‰®ï“mP€Øoªþ\x02¡î0\x16öƒtxH]c\x19‚1½9ÊP\fiK\x02\x0f& %¡wœ\bRé\x12H…ÓÔ(_#E\3/=T®\x14vbo´1\x16i\x190ýs\x03ïš\x18jÇ2´ÿ(¹~ð:\x10ﬥ§‹q”\x18`™×(\x042$4jÈ\rš„ØüóZ’ŠÏ\x02\x1c†óÇmh•7’a\vá©8ö¼G™šˆ7T
—ÈêÖ„4„ °D•»¤¸YÂBB;êÍ5\x14»ØC\x1dé¼p]«jÆ:j±Š¤\x11•º¥ž\r\a“ë¶ÅU᪠f¼ý¡rÞâ÷'æ D˜£°‚çìvãE¢f\x06\fÈ\x0663·B‡5ÙK\x03>\x1aˆîìHHX˜Œ:{\x15$ä¢\x18ÛAg£„\x06h„€\bÇ8\x02È€Ä\x1dO|ø÷žðöa\x19\x19¤’eòn°{\bàzN>ñ²É_Œ!?4‰ÄT¹‰)G±ñkûR¦–§¾!ö_2#ž‚:j»\x19Ä\x11Ž$\x05ª>‘q3<#\x05\v1ï
‹Dª•-l\x0e¤&8ËÉÂC—£AÆk›çƒ:x™\bц\x01j†e\x05+\x16ªàa\x06Q°\x02ûgÇäw-\x1c¹`6xîß·¯àì¾ë•º’“|/ie0€¦\x11\x15‚}× ®\fÆ/SÐÏ~e\x04Nx¥\x06CB\x05\0Yl3«ÔDå‘/—`îªV©ê\x01\x02_eÙõ\x01¼´£8½ÆŽw—¥\x04ajÒ쀖u\a½ª\fd¼\x10УaMf\0¸¦\x05V/¢öT\fôg)tLFÎ\x18E‘j\x10‚\x10ln\ÌUi\x1aœëdªÄ¶Ï;\vd¬„˜U\x03'kh9£n—ÉQz‘Œº‘ÂZᦐÁ›I\x16Q¬2%rEÈEu-dQN\b\aÉ…±¾X-#\x12¼"\x02D‘L"\x1c4ÁQDCm·¾a\x199t¦*LF\x032{¶’ô¸±eE!\x11wek)|DG\x04ël=\x1dtõ®2ØÀ­ÆÍ‚a\x11Ч	g5\x05ƉÑl\x18c­,ËÓæÞÃ.è%9\x11.\x1d\x10A$;\x14\x18X\x1d@iŠ
\0Ã\x02áÜɱ\x16ªËRÐE
Á\#‹ÌÕW1˜\v#a˜”$“"NF¤X`K\v½ \x04\x12,;‡p°±¸­ê'³úP\x17\x15\x06•\x107ä’HF¢\x13HI\x15\x19#¥\r‹\x147àaðÔ­ëLÙª ˜7˜ÆÛCOaq\x14\x18çލ¨d%g›Ñf\x1f;\x19$\r#Ðø`Ð\x13ýMâ„\x1dÜ´³((ØúAeœn\x18€OóÇšl\bM\x14®\a2h^[%\x02‹ªBo^[S“ÙН+±…ðT“\x05\rU>uÈL\x17ªÕ0eq\ò‡…æÖŒrŠV`œ[Š\x19SEq˜,K%Ì*Š’–ö\x05^ø„‰yP„\x01ƒb;¼³XPÏM˜HÐÀí(^”Õ‘s	\x1c\x10iB\x06’J¦\x1eÆ7É\x01®u\b\x10„\x13ç\x0e–œ\x06\x01#ŠÀîK¶kK0‘\0I\x04:\x037ÀÁŒ"’l3n} ál\x01¥÷M2Á\x05ˆÏÜ9Ö\x1d\x14V!KmP=5cª8\x19âoþM\x12¯Þ\x05Á\b;7\x1cD’â¶½_'ÝX
\x14"W\x1dñ½’2	$•]Ù›\x01°o@g¦\x1aC\x18ã\x1dƹFâ¹ÜÄb|ƒy¼Í\ae X¥¦\x16D-8\x05º¾€Ï,ŒiF<\E¦v\x16L«†\x1c\x1eTBÂ$j&T[\x17KÐß\x05¯Bß•Ì
\x1c°È¦6-\bn\x05P\x16IJ5BÖQ%üLj+…?2\x02æ.	Ú1WÉ (\TºLª\x06…àÖäsÂO›ý~ÞÍ\x11\0W|íÆvýÓ@·½CyUrˆ§<9g\x16­p†Î±\x13î\b1´#\x1eQz®Èf7óµ,í\`yžá•\x18Yc°l‘â(L\x15\fE\x036àä}ü	Cð\{˜Å\b\x1eA²Ä“5©\vã;WÍý!$O\x05éÞaeãý{¸_ AlÍĝ;Îix'É%ÈÀŒÕ*\x11ÛîP\x15\x02¿ƒ\fѨX÷16\x03æ~SRf‡Á\x1eo¼þôÏÑ|%±‡ßÉ1í0ÙÄù'\x12fÛdÁ4ŠT*\bÅ€,4†L\x10QÝpfÆÇl¥PZŸSËíÒìE~ÏqÀK$`[ëæ`Y2Í\x03^,úÌÛÅé àò&+S
yƒ'\x11"x²I	®PÝM÷)Öp–< .…@ 
’VW„‘¹ú\x15¹r‰CWhî\x13!èb@\fÒ\x16\x11ÀËê^´+.MÅÎ0\x18\x18–\x01ÔÁ¤\x7f`{Œ\x01ȡĒF'¼Š=ómbÒ\x02(’I\x14ˆÉ\x04\x14`‘\x18f\x12d^[\a “°Ï\b\x14Bo{‡2CH’d–_r0\f\0c\x04Ærõ•³V\x17Ù>-Æ&P-R\x02\x10` \a€ Ób\x10\x1eŰV‡D  u7N=m¦tùE\x16\x1e\x1a—2\x17gÚØø—¨$D\fÙ¥\fŠ,î+˜¡F6Ü-ÍHHM\x18G¤¦ÄáMˆd‡A’M¦å\a5!àb‚‹$K']›ÅÔ'¤H \x11I"†öÈi…d\x01d\x0e\x12bj a˜RpQó)I	¡-ÝÀ¢#\f5dÜèìm!œNI)¼Æ“,8¢‚Â
 ŒRNƒf^[†ü¥“€\x13\fÞ\a\x11œ\x1dÔw\a\x01\x18l3†HndÉ&Ã\bšœl\bµœ\x13ë\x06\…LœŒ¯`b\x17áéò\x18\x1a#©îG’£„\x1aù³ð’PB^#\x19\0ž
\x1cÏ:z\x14'Š‚\x18	Œa…ñˆ3ÔŃÃêía°}ÙÂ6Whll\x11\x14Q`\b (q7\rsHhåá\x03n^½L’“ÈdžÝ{«P§ƒ4\x11•1Få.’ˆoX˜pˆ9º¦M*5¾·ß£è\x10\vGóö­\x10}‹ŸÌ\x13\x02\x1f/·	\vR”hêÆR\râI\vqȺ\\0\b\v\r%BJ÷ž gÄV¾ÕNÎî©	\v\x11T\x15\x10@x*"\x1aÔ±8\x1e :&2\bÑÌNït]¦©X"wm\x1d!\x10ÛG»«è\x1fºÝÙÈf|\x05Òdx\b‘"F B^#I"ƒ\x16æ^[ø>¦“¢ö6o\x18Ë®]>Ͳg\x01®©ê<:Vós{7¢E;[‹;Œ³\x17.mLám¥–š(\fµ”Vzð>&¹®‹Ÿ‚I\x1eô `\x1aä\aËšºÙã\x04u\x18ó{Ê´¥TJ\x03\x14\b\x13õàU•…¼ï(U"€Æ\x11Db±U\x01bªÈ0E€¡\x15H‚7¸tvC\x0eÙJaàˆœ\x11\a\x03¿+\x16\b“B\a…Ê\x1d!\x11•öc\x18$‚‡a•\bÁäK\x11"\x03\x03hrÎáÃs)†”*íÞ\x18Øï\x0e5H\x15»O€©tD@±Æ\x13i¶Î]+XcTiAØ4JÔº\x03Òm¸\x03°Lß¶;`•ÒË\x19\x1f*VLÃ\x13&F@H\fÂCÔSVØÈ!\x10¤pLŠ´¥&3ŽAcÀ€âlá=Œ'p	Ä\rA"! ‰ "\x14ìõv¹Æ31,™V( ¢R\f‘ž\f\EN+ È‘ f(=¯7„P&T\x1dèýZ`êmb\x06\x17^ho:J3dGÝJ{Ñò\x1c§MN·_A26ÔcˆV
b\x19Þ¾q|=·»nØaÚ\x13\x10lO"šÈÍR6$]\x0fƒî\rxo\x15Ï2çží³3;jé:ï(k¸Àò×^[sC\x19’\x12\x13‰JÈw…ä.³€Ídªl%v12èÑ1ÐjÙ4ÎA:IÈusór\x05\x12"=
±ŽDžöoÌÁ+²^[c[uÅ\x1f`Ñ(o\x03€{AçËa+\x12¡“\x1eGø\x1f\x05D[žJ\x03<	*Œ2ƒÂB|×X0	ìX\x02É\x14"„\x11\x05\x02)\b AaÈDÝ\x12ǐgf”æ²™q‚Ðb+*]fBb1ìøt\x10äŽ\x1doRPÒ&‹‹â8ðY,Ë\vŒê­Pý\x1a'cp¦É–\0H\v†T ÝLT÷¿	׎›èÕ‰³/XSC"Ö©úgMÛ‘ípæ33«E0Öœ7va7´›±w& Ý1Ë
Éw¦¹\bK\raå0ÛE\x12óÓ4&\x0f\x02à”\fI\a2ã$bc<Ì&‚Å…C§{\fTŒ"Ìñ`7‘ë*µ_'2\f\x0e\x06¦¤š\x12`A™£@Ú²Úæ6\x0eÕÁª¥fŒ˜ø\r1Š\0Pm–lX§Æ4@hµ(ód\x1d¤\x17ÏBí9(øHdANòZ\f ‘ITªQbL,\x18@¿\bÏ1d\fG\x1a^[þÌ\0E\x02‚RÂÉ\rP‚F›62•˜Ã;JPŽÑŒcíP,\0b(]o”œÁ\v´‘\x1d…iÄ(Àq\x04·1\x1f8éL\vŒäf]lXeöAp$]~Ïí~ƒ]øäȦâ\x01ƒE\x18¶ïfMý+I±YtÆ­1´m1 ¸%¥\v™„©»SLFI¬.,p¦\ÌÛ\baRŒ\x16*ëÚIÇ j2\x1dtÝ›ˆ"%D
eU¥\bÄO°/ÛÀ÷Ñ\x1cɲ»Ú0	\x19²gG<c«9æ£p! \x15–HM+=\x03²D&\x02š,•„J˜m1lÁ\x14BéÔTÙÒ\b]q³Fg`ôF7Àk/w\x1c\v\x14±hþ	Úxþà_5…ùe\x18ØÕ\x14ÜhÑ$µBÈaAːQdX\0Ä'A\x05bª\x15<ƒ\x1e¢M‚Bkõ”\x01Tq(¬ŒC‰Ä?8f\x1fWÖe
\x06jÛ\x12âĽK2\x05Áö¼¾žX¯r“•N9^[\x03\x1e¬\x14
•‘V¸õ$9 HÄ6¡¨Ù”6Q²V#20*´²®†HÝC4`\x18\x10ÄՐÂO>mf\x06Ói–`C\x14QŒ\aÍ,\x03E@¸„
ð/\x16	]­ú¾‹\x13=\x04ž;\x0eÖ”uÊ\x18\x17G\x04Ý"ì \x15ø&Tï¾\x04˜‘vNÜÆÍoFÙ0Þ›0™hn%oˆUe{\x14É«\x14\x061›ØÔ}EùÃo£;ºöÔ˜XšbÈ\bD:(D\x13¥9'[Ë	7\x0eð\rÄö@
	\x1fG·3\x01h’[4ƐÚB1\x1a\f
Ÿ…1¤ÒD!\x01ME\x1d>„¾„yo©ÝBÂŨ\x15kÜ\x12,%\x06ɱó\ro€\v\x18e
âPDrP’[¹ßqÌ”Q\x03\x04ÐÐØ\fb\x13K‹\bC^[h^[27ÀK\x03ˆÐKâË>*\x129àþL¡}óuÈ.’H[¨-÷G=‘e€Á-âåõGÚwgj>š@\x1c8ä-*”\x06Ê–\x04´\x06‘8³±¸‹\x1f&Êzd®\x16‡§e\x06\x0e&Œ
Áz•¥lQbc
wyvÅÝ\rž)¹IÍØ›C›~’\x0f5K•¹^\x03ó\0,\x1a¦\x17¸Û\x1eA‰Ä™ï…\x03o¡\x02­ÚÄýbä\b\x0e‘ï"SF^[KHlä\x02}G6‚rðœáÖ<8\x1e´E„\x15‚ª²#$՝Xøï‚"(¸ìv\b¨\x18,ZÙ¡t\x12"‹=xtÔ¥–h²_J0UD«-›\x7f·h\x01Œ”ÕD…ó²7kÛ´|ÆðÐù9@ÃÂåÜ”\x17eBj\rP¿\x1e}ãb„T'\x12€Ïq+ä² ñrá…ØCgÈ\x1a\a&\x19-`ï8¦-ƒ-03ÝlE)\x11q\x12*"‡_SR\x18Ôª2F\0b" N¤T\x1d
´ŒO±\x10ŸX‘b­I7\fÚðì,–#,¦ê’2Á¿v»#æh0\v$îA\f{žA‹W•ü\x13‘ô³í˜…NÙe \x14\v!ÈŠ\x02Åž\x105Ó\x0f^[´Xs‡D·&™ÚÑ\x1e”QÈlv4'¹\x04X\b\x1a;\x0fL(\x17-‘‚B8\x16îK÷#GĤ†¯ò^[\f07ÀRҏ6S\x0f\x0e\x12½‹1Ðë	‰&\bå*b[`(\x16–«‰QÙ²b\x1aÊÊP´Q¬²¶‚¡ˆQ„Hˆ$­2•b«É×/\fÞlj@O\x14¤Ó&é:ã²l\b%p¨P³W©‹F6;%\x11üè…ä$–"r\fUÝq\x13W˜\x13\v?hNV\x1dò‹ÂŠA‰ ‘E@¢¬\x0eCgR\x12\x11š	¡Â\x14dY*^[\fÆ#
̦9ŒÒV\x18X^Øw\x03»Ôsaž›\x0eô
k‘¥Rîbå±C‹ ‚‰aï9ƒ\x01¡rC\x11ž( í/)øA\x19Ì[¡Cé
j7ü#qçç\x1c0c¸h»_M\x05eSÔVò·3 ÉE]WP$9\0”¤\x04B\x0f\x04†¡{\x02Ì\x06ÓA‹ñ
•ÀÃHŒf¡Ø5a\az9ûPŽß\x03!q\x16ó`\x02XlBP†1 U‘'@\x0f4’wC¢ÎÑ""\fU‚*¨Å"+\x10XYÓ!JÀè@ñ'/\x1e¾¡å… -ü½,]n9#Ðb q\x01ª*¨H˜†ÆâbKBL¹JËšë\x12†¶d.ÒÊè'\x13¶žÙ¼;Äìž\x1cE€(‚\x1c@äPf׃C”J\aß;÷›Ûmì~Èâ\d`æ_Ç?ÐM
é'RÅIh\x166RäˆPc{L…g¥k4c˜YL7ؽ\x14;7zc269¢3vvÆe,r…ƒY<5€¢ciÕ\aº†µ\x16ˆ¤ÔÙØË]C-F\fPaa˜! S\x0e®ôµVÄ%âÁ¬qT‘T›JÙ
3\x16Ó+1\x05\x16évet5º00…Ò¬¶,hKºÌ3Z!{¡Y×PÒ³[׋\fÊNL¡­¯ÞP¬\x10EÕdžFÆgçVåÈ¿™Ct¸‹[S‡«:õvÝ‘<AȲ8rJ\x0fß\x1e\x1c†·4p\x0e;%ãŠ*n\aSÔmɝŽÃ—&¢ƒ!\x14¤\x02bq¹•»M3Z3\x1dbi—,Ùé{©³	MÉ ”h,òbùÓ5 ­žì\x16%\x122¤ª&XÜsì$`Ã]7¦I‚À
QÎ-P|\x03S&*\!n1!Ê?z˜×À¯‰–FÚPÄX±OåS‹$ªânä·4C4$†Èi6•ù\x06g¬ÀXÀ\r„þäõžúÁÐM\x11Qbš×G 	AÀ·scm\x0eÔ\v\x1cÊ¡\x1c[hÀÆä”idá®" A#® G^[#\x13 ævª\bÐåp™f\x011,¸²-\x12à‡\x0eiAÔù\x11šò-¡s²rBÌ.\x11°oò+ X607 ¥\âT£:…D\vqô^[# êÏitû·æÍ÷?ô;ê"¬î\x7f\ahŧ\x03¡'xùx\x1c\x17\0¡pƒFw\x19ŸI\x0e\v\a\x10ý±ß6ï\b^[…íåCÎ\x06÷Uó
“%ÌL;ïP·©!B-Q/Bi$=« (ó\x15+&
µ^ZJ;ÅAuJ»¸AêÃ(T¡"ð¢­d­®Œ\x1d"*%Ô\x06hWË(\x034Ô<„r\x03;•Tˆ¹ˆ¥”I\x19/…¯ŠÂ¤+ÚT8ŒèˆEšY2\v¿Ù\x0fÑ?`ÀÀY1·¬fåé\x06'ÄP¥0vT ÙÌ¡¸±¾q¡q癉‚ÈÞIZ\x18{K\x150ÔÊâ\x11A•ÌÅœ†P\x12Šö\x1f1Qpaa\x18¦ØŒÑ¨Ñ’5NèùAŒð8\bÔðÐ.½NJðhàÄ\x17LFåœ)\x10\x11\x1eƒFªXË—\bmQM$.¥(i;Ê¢%\x04\x16*ˆTÇ“ßKÑÆÑ«‹ÐµÖ¥²A{°é`ª¬Bc^@L›\x17I$ÞD\bÈA\x10«Á£ß”ÞsC©¤ØIĝô\x16,€,;ì*@¨\x15’A@Y\b°\x05\x147Ó×o
,\x16[,á”\b›K8Sƒ1#®\’i\x04bÀ\x14å;Àñ;\x104ŽÉÊw‰f!ÈC\x17\bfh9PÀaT^[V\x12\x13‚Êë#!\x16ax;\x1c—Žqëï¹¾É[VÞW\x14S
©ÚÛ\f\x14¹†h±™LÛ2r‰b&ÚLh¦Z8»Z¸\x19Ædã@Ö*«\x16É\x15\x0e\a„f\x166Z¢!°Ù¶„pˆ@{˜Q€^[´55 ¨TÞ,ŠÚ\x18\vbMÅì\x10cÀY\x05g´Ö¸à\x02à†Yˆj¤%\x01¤ 1‘#S·‘-Ãr\rNŒ¹Z\r\x0eS¨óN“GTt"‘\x03i^[ܐ\fÌ\x146ûd%Pà.Fa\x01þ	"û'i\b\x15Ø\bàxƒ\x062Rsc\x0f\x1fôú ®@Äÿ6¤\x01\x0f‚E8	!\x01ö™Î\x17ÕWk‘©ê\f†’Äc\x1a\x0eó€ ©¾#\x05;\x19Oqá€\x1c\x04"Mèé×\x06˜Æ.ÀÞ5¿*‰œºä\x06€\x1fŠCϾ\x05\r/Ò|ÁŒÁlíG€\x1cLè[`›Ù~›M¤º1#yëÁ2àÒâL•\x0e\x16Žâó\x05ÍÇM›ïa\x0f,jJï\x188P\Ç›±¼°v ü¤+äx\x10ï\x0e>Ī$÷Ð\x10l‘!iH +$åê\x02\x02_\x15¹1~A\x10[\x12+\ai7P|[8s×äþŸ4\f\x1aý»>ëKâi}ï½ÌüAù•‘‹ë2\x06‚\x06¹vÂ$z5ð4¶”Dí\x1e#\x15\x17Ã(Ò¢=ê\x1eyÖ•4²$U\x06˜\f\x1a\x19(²øHXä\þÓô.
Ÿ=MJ\x11#',ÏÞ2\x17Ãéð”àÒÜ‹g¿)µî¢ì-~\x03>7¶\x06	ِ“\x18Q0Ÿ“#\x12¦\f•ð¤\x04\b³÷´°^[M\x1fbùÊ4`6‚\x1aP˜^[…e¸”‹4\x12’\x16D êĵ\x1a^[^[\x05Ì<!^[±\x16\r-ãâá¶$1¯®\x13È6	B\x01r;ÏÉ\x03\x16ÈK\x10Ç\x10¦#gs;\x06\x124^[ê@˜Àþh¸\x1fG_›ÁÆÄÖhÓí“÷\x03&·¹©-:åL]ªL}\x10a\x05Õ\x1d’´[Å•!(\x12–T\x152\x03ÔT\x12<È•zÐ5’¸ŠaÃ4ñG3‚oµ˜ò^&^[;pC\a˜Ò-Z¢0½]\²…/…íx\‚ã(\x11…	Lbƒ³èëú>tÇfð^\bß\ÍìÉ\x02òhm$y4”\f7\b;òIn9\x1a%A¡pAžþÐõ\x1e$š3R\x19ëH¨°\x05NÀŠ!\x02\x1aÔ껣Š8A?‰¯\x1a	~t…CÆ\x1cÚŸ9xC‡F)Æ$\x18`s¯\x12\x04‚œâ#Ÿ°½7c–‚Q$5\x03\x05!E;‘D¼$\vOª\x14íÎèˆ@ÐTM¹Ï\x1cû#„|([§`ºhÉI¸‚¡Ì\x16\a¼y$\x0f„¾,\x18£…qm‚§ª^
6ôØ›C–wÄ€vGÐp  âjK…cè\x14tˆW\x18º\\x14ñJ¦òŒ#\x06žðþåÂ\x1ei攂áQC|Uc\x18baMyda'>a‰\x05\x1cE\x14=²ÑÞ\x0eY8Ã\bœáB\x06”dð\x05O„ ç9¢’
|Ç$Ô\x10C`V\x18ˆ‘\x10\x11:çˆ%ž0Ðö…\x0e‚{cãÌÜCÆ=‘Î\x19á\x1f¶Y²\x01=¹\0ç)íÏq0\x05&\b\x1eàBOŸ\x10\x0få\x10ŸÔ$\x0fŽ?pöà\x1fh$žpœâhÿ\x17rE8P_äéí

  reply	other threads:[~2006-02-09  5:49 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-02-08 23:13 [Qemu-devel] vde-inject 0.0.0 Jim C. Brown
2006-02-09  5:39 ` Jim C. Brown [this message]
2006-02-09 18:23   ` Re: [Qemu-devel] vde-inject 0.0.1 Mulyadi Santosa
2006-02-10  5:34   ` Mulyadi Santosa
2006-02-10 17:09     ` Jim C. Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060209053953.GA13800@jbrown.mylinuxbox.org \
    --to=jma5@umd.edu \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.