From a437be72574480c1aedb04a776cc369e323fba4a Mon Sep 17 00:00:00 2001 From: jhb Date: Mon, 26 Aug 2013 18:16:05 +0000 Subject: Remove most of the remaining sysctl name list macros. They were only ever intended for use in sysctl(8) and it has not used them for many years. Reviewed by: bde Tested by: exp-run by bdrewery --- sys/fs/nfs/nfs.h | 5 -- sys/net/if_pfsync.h | 5 -- sys/netinet/icmp_var.h | 7 --- sys/netinet/igmp_var.h | 4 -- sys/netinet/in.h | 18 ------- sys/netinet/pim_var.h | 5 -- sys/netinet/tcp_var.h | 18 ------- sys/netinet/udp_var.h | 9 ---- sys/netinet6/pim6_var.h | 4 -- sys/netipsec/ipsec.h | 34 ------------- sys/netipsec/key_var.h | 16 ------ sys/sys/socket.h | 46 ----------------- sys/sys/sysctl.h | 129 ------------------------------------------------ 13 files changed, 300 deletions(-) diff --git a/sys/fs/nfs/nfs.h b/sys/fs/nfs/nfs.h index aaa7fb1..5976934 100644 --- a/sys/fs/nfs/nfs.h +++ b/sys/fs/nfs/nfs.h @@ -335,11 +335,6 @@ struct nfsreferral { */ #define NFS_NFSSTATS 1 /* struct: struct nfsstats */ -#define FS_NFS_NAMES { \ - { 0, 0 }, \ - { "nfsstats", CTLTYPE_STRUCT }, \ -} - /* * Here is the definition of the attribute bits array and macros that * manipulate it. diff --git a/sys/net/if_pfsync.h b/sys/net/if_pfsync.h index 29d4b23..7a72bbb 100644 --- a/sys/net/if_pfsync.h +++ b/sys/net/if_pfsync.h @@ -211,11 +211,6 @@ struct pfsync_tdb { #define PFSYNCCTL_STATS 1 /* PFSYNC stats */ #define PFSYNCCTL_MAXID 2 -#define PFSYNCCTL_NAMES { \ - { 0, 0 }, \ - { "stats", CTLTYPE_STRUCT }, \ -} - struct pfsyncstats { u_int64_t pfsyncs_ipackets; /* total input packets, IPv4 */ u_int64_t pfsyncs_ipackets6; /* total input packets, IPv6 */ diff --git a/sys/netinet/icmp_var.h b/sys/netinet/icmp_var.h index 809879d..ae869e6 100644 --- a/sys/netinet/icmp_var.h +++ b/sys/netinet/icmp_var.h @@ -85,13 +85,6 @@ void kmod_icmpstat_inc(int statnum); #define ICMPCTL_ICMPLIM 3 #define ICMPCTL_MAXID 4 -#define ICMPCTL_NAMES { \ - { 0, 0 }, \ - { "maskrepl", CTLTYPE_INT }, \ - { "stats", CTLTYPE_STRUCT }, \ - { "icmplim", CTLTYPE_INT }, \ -} - #ifdef _KERNEL SYSCTL_DECL(_net_inet_icmp); diff --git a/sys/netinet/igmp_var.h b/sys/netinet/igmp_var.h index ca17158..cd10d7f 100644 --- a/sys/netinet/igmp_var.h +++ b/sys/netinet/igmp_var.h @@ -218,8 +218,4 @@ SYSCTL_DECL(_net_inet_igmp); #define IGMPCTL_STATS 1 /* statistics (read-only) */ #define IGMPCTL_MAXID 2 -#define IGMPCTL_NAMES { \ - { 0, 0 }, \ - { "stats", CTLTYPE_STRUCT } \ -} #endif diff --git a/sys/netinet/in.h b/sys/netinet/in.h index 9f3b294..db9a590 100644 --- a/sys/netinet/in.h +++ b/sys/netinet/in.h @@ -699,24 +699,6 @@ int getsourcefilter(int, uint32_t, struct sockaddr *, socklen_t, #define IPCTL_GIF_TTL 16 /* default TTL for gif encap packet */ #define IPCTL_MAXID 17 -#define IPCTL_NAMES { \ - { 0, 0 }, \ - { "forwarding", CTLTYPE_INT }, \ - { "redirect", CTLTYPE_INT }, \ - { "ttl", CTLTYPE_INT }, \ - { "mtu", CTLTYPE_INT }, \ - { "rtexpire", CTLTYPE_INT }, \ - { "rtminexpire", CTLTYPE_INT }, \ - { "rtmaxcache", CTLTYPE_INT }, \ - { "sourceroute", CTLTYPE_INT }, \ - { "directed-broadcast", CTLTYPE_INT }, \ - { "intr-queue-maxlen", CTLTYPE_INT }, \ - { "intr-queue-drops", CTLTYPE_INT }, \ - { "stats", CTLTYPE_STRUCT }, \ - { "accept_sourceroute", CTLTYPE_INT }, \ - { "fastforwarding", CTLTYPE_INT }, \ -} - #endif /* __BSD_VISIBLE */ #ifdef _KERNEL diff --git a/sys/netinet/pim_var.h b/sys/netinet/pim_var.h index 1fdfb10..d082d9a 100644 --- a/sys/netinet/pim_var.h +++ b/sys/netinet/pim_var.h @@ -71,11 +71,6 @@ struct pimstat { #define PIMCTL_STATS 1 /* statistics (read-only) */ #define PIMCTL_MAXID 2 -#define PIMCTL_NAMES { \ - { 0, 0 }, \ - { "stats", CTLTYPE_STRUCT }, \ -} - #ifdef _KERNEL void pim_input(struct mbuf *, int); diff --git a/sys/netinet/tcp_var.h b/sys/netinet/tcp_var.h index b22713f..aaaa4a4 100644 --- a/sys/netinet/tcp_var.h +++ b/sys/netinet/tcp_var.h @@ -593,24 +593,6 @@ struct xtcpcb { #define TCPCTL_MAXID 16 #define TCPCTL_FINWAIT2_TIMEOUT 17 -#define TCPCTL_NAMES { \ - { 0, 0 }, \ - { "rfc1323", CTLTYPE_INT }, \ - { "mssdflt", CTLTYPE_INT }, \ - { "stats", CTLTYPE_STRUCT }, \ - { "rttdflt", CTLTYPE_INT }, \ - { "keepidle", CTLTYPE_INT }, \ - { "keepintvl", CTLTYPE_INT }, \ - { "sendspace", CTLTYPE_INT }, \ - { "recvspace", CTLTYPE_INT }, \ - { "keepinit", CTLTYPE_INT }, \ - { "pcblist", CTLTYPE_STRUCT }, \ - { "delacktime", CTLTYPE_INT }, \ - { "v6mssdflt", CTLTYPE_INT }, \ - { "maxid", CTLTYPE_INT }, \ -} - - #ifdef _KERNEL #ifdef SYSCTL_DECL SYSCTL_DECL(_net_inet_tcp); diff --git a/sys/netinet/udp_var.h b/sys/netinet/udp_var.h index 461c986..91a98f6 100644 --- a/sys/netinet/udp_var.h +++ b/sys/netinet/udp_var.h @@ -124,15 +124,6 @@ void kmod_udpstat_inc(int statnum); #define UDPCTL_PCBLIST 5 /* list of PCBs for UDP sockets */ #define UDPCTL_MAXID 6 -#define UDPCTL_NAMES { \ - { 0, 0 }, \ - { "checksum", CTLTYPE_INT }, \ - { "stats", CTLTYPE_STRUCT }, \ - { "maxdgram", CTLTYPE_INT }, \ - { "recvspace", CTLTYPE_INT }, \ - { "pcblist", CTLTYPE_STRUCT }, \ -} - #ifdef _KERNEL SYSCTL_DECL(_net_inet_udp); diff --git a/sys/netinet6/pim6_var.h b/sys/netinet6/pim6_var.h index 4157e84..4842208 100644 --- a/sys/netinet6/pim6_var.h +++ b/sys/netinet6/pim6_var.h @@ -61,8 +61,4 @@ int pim6_input(struct mbuf **, int*, int); #define PIM6CTL_STATS 1 /* statistics (read-only) */ #define PIM6CTL_MAXID 2 -#define PIM6CTL_NAMES { \ - { 0, 0 }, \ - { 0, 0 }, \ -} #endif /* _NETINET6_PIM6_VAR_H_ */ diff --git a/sys/netipsec/ipsec.h b/sys/netipsec/ipsec.h index 0b92876..240083a 100644 --- a/sys/netipsec/ipsec.h +++ b/sys/netipsec/ipsec.h @@ -264,40 +264,6 @@ struct ipsecstat { #define IPSECCTL_ESP_RANDPAD 13 #define IPSECCTL_MAXID 14 -#define IPSECCTL_NAMES { \ - { 0, 0 }, \ - { 0, 0 }, \ - { "def_policy", CTLTYPE_INT }, \ - { "esp_trans_deflev", CTLTYPE_INT }, \ - { "esp_net_deflev", CTLTYPE_INT }, \ - { "ah_trans_deflev", CTLTYPE_INT }, \ - { "ah_net_deflev", CTLTYPE_INT }, \ - { 0, 0 }, \ - { "ah_cleartos", CTLTYPE_INT }, \ - { "ah_offsetmask", CTLTYPE_INT }, \ - { "dfbit", CTLTYPE_INT }, \ - { "ecn", CTLTYPE_INT }, \ - { "debug", CTLTYPE_INT }, \ - { "esp_randpad", CTLTYPE_INT }, \ -} - -#define IPSEC6CTL_NAMES { \ - { 0, 0 }, \ - { 0, 0 }, \ - { "def_policy", CTLTYPE_INT }, \ - { "esp_trans_deflev", CTLTYPE_INT }, \ - { "esp_net_deflev", CTLTYPE_INT }, \ - { "ah_trans_deflev", CTLTYPE_INT }, \ - { "ah_net_deflev", CTLTYPE_INT }, \ - { 0, 0 }, \ - { 0, 0 }, \ - { 0, 0 }, \ - { 0, 0 }, \ - { "ecn", CTLTYPE_INT }, \ - { "debug", CTLTYPE_INT }, \ - { "esp_randpad", CTLTYPE_INT }, \ -} - #ifdef _KERNEL #include diff --git a/sys/netipsec/key_var.h b/sys/netipsec/key_var.h index edf232d..2601ece 100644 --- a/sys/netipsec/key_var.h +++ b/sys/netipsec/key_var.h @@ -48,22 +48,6 @@ #define KEYCTL_PREFERED_OLDSA 12 #define KEYCTL_MAXID 13 -#define KEYCTL_NAMES { \ - { 0, 0 }, \ - { "debug", CTLTYPE_INT }, \ - { "spi_try", CTLTYPE_INT }, \ - { "spi_min_value", CTLTYPE_INT }, \ - { "spi_max_value", CTLTYPE_INT }, \ - { "random_int", CTLTYPE_INT }, \ - { "larval_lifetime", CTLTYPE_INT }, \ - { "blockacq_count", CTLTYPE_INT }, \ - { "blockacq_lifetime", CTLTYPE_INT }, \ - { "esp_keymin", CTLTYPE_INT }, \ - { "esp_auth", CTLTYPE_INT }, \ - { "ah_keymin", CTLTYPE_INT }, \ - { "prefered_oldsa", CTLTYPE_INT }, \ -} - #ifdef _KERNEL #define _ARRAYLEN(p) (sizeof(p)/sizeof(p[0])) #define _KEYLEN(key) ((u_int)((key)->bits >> 3)) diff --git a/sys/sys/socket.h b/sys/sys/socket.h index 014c916..952454a 100644 --- a/sys/sys/socket.h +++ b/sys/sys/socket.h @@ -370,44 +370,6 @@ struct sockproto { */ #define NET_MAXID AF_MAX -#define CTL_NET_NAMES { \ - { 0, 0 }, \ - { "unix", CTLTYPE_NODE }, \ - { "inet", CTLTYPE_NODE }, \ - { "implink", CTLTYPE_NODE }, \ - { "pup", CTLTYPE_NODE }, \ - { "chaos", CTLTYPE_NODE }, \ - { "xerox_ns", CTLTYPE_NODE }, \ - { "iso", CTLTYPE_NODE }, \ - { "emca", CTLTYPE_NODE }, \ - { "datakit", CTLTYPE_NODE }, \ - { "ccitt", CTLTYPE_NODE }, \ - { "ibm_sna", CTLTYPE_NODE }, \ - { "decnet", CTLTYPE_NODE }, \ - { "dec_dli", CTLTYPE_NODE }, \ - { "lat", CTLTYPE_NODE }, \ - { "hylink", CTLTYPE_NODE }, \ - { "appletalk", CTLTYPE_NODE }, \ - { "route", CTLTYPE_NODE }, \ - { "link_layer", CTLTYPE_NODE }, \ - { "xtp", CTLTYPE_NODE }, \ - { "coip", CTLTYPE_NODE }, \ - { "cnt", CTLTYPE_NODE }, \ - { "rtip", CTLTYPE_NODE }, \ - { "ipx", CTLTYPE_NODE }, \ - { "sip", CTLTYPE_NODE }, \ - { "pip", CTLTYPE_NODE }, \ - { "isdn", CTLTYPE_NODE }, \ - { "key", CTLTYPE_NODE }, \ - { "inet6", CTLTYPE_NODE }, \ - { "natm", CTLTYPE_NODE }, \ - { "atm", CTLTYPE_NODE }, \ - { "hdrcomplete", CTLTYPE_NODE }, \ - { "netgraph", CTLTYPE_NODE }, \ - { "snp", CTLTYPE_NODE }, \ - { "scp", CTLTYPE_NODE }, \ -} - /* * PF_ROUTE - Routing table * @@ -424,14 +386,6 @@ struct sockproto { * versions of msghdr structs. */ #define NET_RT_MAXID 6 -#define CTL_NET_RT_NAMES { \ - { 0, 0 }, \ - { "dump", CTLTYPE_STRUCT }, \ - { "flags", CTLTYPE_STRUCT }, \ - { "iflist", CTLTYPE_STRUCT }, \ - { "ifmalist", CTLTYPE_STRUCT }, \ - { "iflistl", CTLTYPE_STRUCT }, \ -} #endif /* __BSD_VISIBLE */ /* diff --git a/sys/sys/sysctl.h b/sys/sys/sysctl.h index 2fdeed2..8b13719 100644 --- a/sys/sys/sysctl.h +++ b/sys/sys/sysctl.h @@ -447,19 +447,6 @@ SYSCTL_ALLOWED_TYPES(UINT64, uint64_t *a; unsigned long long *b; ); #define CTL_P1003_1B 9 /* POSIX 1003.1B */ #define CTL_MAXID 10 /* number of valid top-level ids */ -#define CTL_NAMES { \ - { 0, 0 }, \ - { "kern", CTLTYPE_NODE }, \ - { "vm", CTLTYPE_NODE }, \ - { "vfs", CTLTYPE_NODE }, \ - { "net", CTLTYPE_NODE }, \ - { "debug", CTLTYPE_NODE }, \ - { "hw", CTLTYPE_NODE }, \ - { "machdep", CTLTYPE_NODE }, \ - { "user", CTLTYPE_NODE }, \ - { "p1003_1b", CTLTYPE_NODE }, \ -} - /* * CTL_KERN identifiers */ @@ -502,53 +489,6 @@ SYSCTL_ALLOWED_TYPES(UINT64, uint64_t *a; unsigned long long *b; ); #define KERN_ARND 37 /* int: from arc4rand() */ #define KERN_MAXID 38 /* number of valid kern ids */ -#define CTL_KERN_NAMES { \ - { 0, 0 }, \ - { "ostype", CTLTYPE_STRING }, \ - { "osrelease", CTLTYPE_STRING }, \ - { "osrevision", CTLTYPE_INT }, \ - { "version", CTLTYPE_STRING }, \ - { "maxvnodes", CTLTYPE_INT }, \ - { "maxproc", CTLTYPE_INT }, \ - { "maxfiles", CTLTYPE_INT }, \ - { "argmax", CTLTYPE_INT }, \ - { "securelevel", CTLTYPE_INT }, \ - { "hostname", CTLTYPE_STRING }, \ - { "hostid", CTLTYPE_UINT }, \ - { "clockrate", CTLTYPE_STRUCT }, \ - { "vnode", CTLTYPE_STRUCT }, \ - { "proc", CTLTYPE_STRUCT }, \ - { "file", CTLTYPE_STRUCT }, \ - { "profiling", CTLTYPE_NODE }, \ - { "posix1version", CTLTYPE_INT }, \ - { "ngroups", CTLTYPE_INT }, \ - { "job_control", CTLTYPE_INT }, \ - { "saved_ids", CTLTYPE_INT }, \ - { "boottime", CTLTYPE_STRUCT }, \ - { "nisdomainname", CTLTYPE_STRING }, \ - { "update", CTLTYPE_INT }, \ - { "osreldate", CTLTYPE_INT }, \ - { "ntp_pll", CTLTYPE_NODE }, \ - { "bootfile", CTLTYPE_STRING }, \ - { "maxfilesperproc", CTLTYPE_INT }, \ - { "maxprocperuid", CTLTYPE_INT }, \ - { "ipc", CTLTYPE_NODE }, \ - { "dummy", CTLTYPE_INT }, \ - { "ps_strings", CTLTYPE_INT }, \ - { "usrstack", CTLTYPE_INT }, \ - { "logsigexit", CTLTYPE_INT }, \ - { "iov_max", CTLTYPE_INT }, \ - { "hostuuid", CTLTYPE_STRING }, \ - { "arc4rand", CTLTYPE_OPAQUE }, \ -} - -/* - * CTL_VFS identifiers - */ -#define CTL_VFS_NAMES { \ - { "vfsconf", CTLTYPE_STRUCT }, \ -} - /* * KERN_PROC subtypes */ @@ -611,22 +551,6 @@ SYSCTL_ALLOWED_TYPES(UINT64, uint64_t *a; unsigned long long *b; ); #define HW_REALMEM 12 /* int: 'real' memory */ #define HW_MAXID 13 /* number of valid hw ids */ -#define CTL_HW_NAMES { \ - { 0, 0 }, \ - { "machine", CTLTYPE_STRING }, \ - { "model", CTLTYPE_STRING }, \ - { "ncpu", CTLTYPE_INT }, \ - { "byteorder", CTLTYPE_INT }, \ - { "physmem", CTLTYPE_ULONG }, \ - { "usermem", CTLTYPE_ULONG }, \ - { "pagesize", CTLTYPE_INT }, \ - { "disknames", CTLTYPE_STRUCT }, \ - { "diskstats", CTLTYPE_STRUCT }, \ - { "floatingpoint", CTLTYPE_INT }, \ - { "machine_arch", CTLTYPE_STRING }, \ - { "realmem", CTLTYPE_ULONG }, \ -} - /* * CTL_USER definitions */ @@ -652,30 +576,6 @@ SYSCTL_ALLOWED_TYPES(UINT64, uint64_t *a; unsigned long long *b; ); #define USER_TZNAME_MAX 20 /* int: POSIX2_TZNAME_MAX */ #define USER_MAXID 21 /* number of valid user ids */ -#define CTL_USER_NAMES { \ - { 0, 0 }, \ - { "cs_path", CTLTYPE_STRING }, \ - { "bc_base_max", CTLTYPE_INT }, \ - { "bc_dim_max", CTLTYPE_INT }, \ - { "bc_scale_max", CTLTYPE_INT }, \ - { "bc_string_max", CTLTYPE_INT }, \ - { "coll_weights_max", CTLTYPE_INT }, \ - { "expr_nest_max", CTLTYPE_INT }, \ - { "line_max", CTLTYPE_INT }, \ - { "re_dup_max", CTLTYPE_INT }, \ - { "posix2_version", CTLTYPE_INT }, \ - { "posix2_c_bind", CTLTYPE_INT }, \ - { "posix2_c_dev", CTLTYPE_INT }, \ - { "posix2_char_term", CTLTYPE_INT }, \ - { "posix2_fort_dev", CTLTYPE_INT }, \ - { "posix2_fort_run", CTLTYPE_INT }, \ - { "posix2_localedef", CTLTYPE_INT }, \ - { "posix2_sw_dev", CTLTYPE_INT }, \ - { "posix2_upe", CTLTYPE_INT }, \ - { "stream_max", CTLTYPE_INT }, \ - { "tzname_max", CTLTYPE_INT }, \ -} - #define CTL_P1003_1B_ASYNCHRONOUS_IO 1 /* boolean */ #define CTL_P1003_1B_MAPPED_FILES 2 /* boolean */ #define CTL_P1003_1B_MEMLOCK 3 /* boolean */ @@ -704,35 +604,6 @@ SYSCTL_ALLOWED_TYPES(UINT64, uint64_t *a; unsigned long long *b; ); #define CTL_P1003_1B_MAXID 26 -#define CTL_P1003_1B_NAMES { \ - { 0, 0 }, \ - { "asynchronous_io", CTLTYPE_INT }, \ - { "mapped_files", CTLTYPE_INT }, \ - { "memlock", CTLTYPE_INT }, \ - { "memlock_range", CTLTYPE_INT }, \ - { "memory_protection", CTLTYPE_INT }, \ - { "message_passing", CTLTYPE_INT }, \ - { "prioritized_io", CTLTYPE_INT }, \ - { "priority_scheduling", CTLTYPE_INT }, \ - { "realtime_signals", CTLTYPE_INT }, \ - { "semaphores", CTLTYPE_INT }, \ - { "fsync", CTLTYPE_INT }, \ - { "shared_memory_objects", CTLTYPE_INT }, \ - { "synchronized_io", CTLTYPE_INT }, \ - { "timers", CTLTYPE_INT }, \ - { "aio_listio_max", CTLTYPE_INT }, \ - { "aio_max", CTLTYPE_INT }, \ - { "aio_prio_delta_max", CTLTYPE_INT }, \ - { "delaytimer_max", CTLTYPE_INT }, \ - { "mq_open_max", CTLTYPE_INT }, \ - { "pagesize", CTLTYPE_INT }, \ - { "rtsig_max", CTLTYPE_INT }, \ - { "nsems_max", CTLTYPE_INT }, \ - { "sem_value_max", CTLTYPE_INT }, \ - { "sigqueue_max", CTLTYPE_INT }, \ - { "timer_max", CTLTYPE_INT }, \ -} - #ifdef _KERNEL /* -- cgit v1.1 From 2b420a482af685825f3962e1cd7bf7742f3fddfb Mon Sep 17 00:00:00 2001 From: jmg Date: Mon, 26 Aug 2013 18:47:10 +0000 Subject: none of the drivers in the tree support CDIOCCAPABILITY or CDIOCPITCH.. remove the documentation so people won't get confused and think they are supported... --- share/man/man4/cd.4 | 81 ----------------------------------------------------- 1 file changed, 81 deletions(-) diff --git a/share/man/man4/cd.4 b/share/man/man4/cd.4 index 5c67b0c..f3a6fc2 100644 --- a/share/man/man4/cd.4 +++ b/share/man/man4/cd.4 @@ -113,69 +113,6 @@ read from the scsi inquiry commands, and should be the same as the information printed at boot. This structure is defined in the header file .In sys/disklabel.h . -.It Dv CDIOCCAPABILITY -.Pq Li "struct ioc_capability" -Retrieve information from the drive on what features it supports. -The information is returned in the following structure: -.Bd -literal -offset indent -struct ioc_capability { - u_long play_function; -#define CDDOPLAYTRK 0x00000001 - /* Can play tracks/index */ -#define CDDOPLAYMSF 0x00000002 - /* Can play msf to msf */ -#define CDDOPLAYBLOCKS 0x00000004 - /* Can play range of blocks */ -#define CDDOPAUSE 0x00000100 - /* Output can be paused */ -#define CDDORESUME 0x00000200 - /* Output can be resumed */ -#define CDDORESET 0x00000400 - /* Drive can be completely reset */ -#define CDDOSTART 0x00000800 - /* Audio can be started */ -#define CDDOSTOP 0x00001000 - /* Audio can be stopped */ -#define CDDOPITCH 0x00002000 - /* Audio pitch can be changed */ - - u_long routing_function; -#define CDREADVOLUME 0x00000001 - /* Volume settings can be read */ -#define CDSETVOLUME 0x00000002 - /* Volume settings can be set */ -#define CDSETMONO 0x00000100 - /* Output can be set to mono */ -#define CDSETSTEREO 0x00000200 - /* Output can be set to stereo (def) */ -#define CDSETLEFT 0x00000400 - /* Output can be set to left only */ -#define CDSETRIGHT 0x00000800 - /* Output can be set to right only */ -#define CDSETMUTE 0x00001000 - /* Output can be muted */ -#define CDSETPATCH 0x00008000 - /* Direct routing control allowed */ - - u_long special_function; -#define CDDOEJECT 0x00000001 - /* The tray can be opened */ -#define CDDOCLOSE 0x00000002 - /* The tray can be closed */ -#define CDDOLOCK 0x00000004 - /* The tray can be locked */ -#define CDREADHEADER 0x00000100 - /* Can read Table of Contents */ -#define CDREADENTRIES 0x00000200 - /* Can read TOC Entries */ -#define CDREADSUBQ 0x00000200 - /* Can read Subchannel info */ -#define CDREADRW 0x00000400 - /* Can read subcodes R-W */ -#define CDHASDEBUG 0x00004000 - /* The tray has dynamic debugging */ -}; -.Ed .It Dv CDIOCPLAYTRACKS .Pq Li "struct ioc_play_track" Start audio playback given a track address and length. @@ -320,24 +257,6 @@ Eject the .It Dv CDIOCCLOSE Tell the drive to close its door and load the media. Not all drives support this feature. -.It Dv CDIOCPITCH -.Pq Li "struct ioc_pitch" -For drives that support it, this command instructs the drive to play -the audio at a faster or slower rate than normal. -Values of -.Li speed -between -32767 and -1 result in slower playback; a zero value -indicates normal speed; and values from 1 to 32767 give faster -playback. -Drives with less than 16 bits of resolution will silently -ignore less-significant bits. -The structure is defined thusly: -.Bd -literal -offset indent -struct ioc_pitch -{ - short speed; -}; -.Ed .El .Sh NOTES When a -- cgit v1.1 From 69eeeef690011109e83b6e98e0bfe32bca22a860 Mon Sep 17 00:00:00 2001 From: jmg Date: Mon, 26 Aug 2013 18:50:40 +0000 Subject: fix up my copyright.. --- share/man/man4/sysmouse.4 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/share/man/man4/sysmouse.4 b/share/man/man4/sysmouse.4 index e3972fe..0fee7f3 100644 --- a/share/man/man4/sysmouse.4 +++ b/share/man/man4/sysmouse.4 @@ -1,5 +1,4 @@ -.\" Copyright (c) 1997 -.\" John-Mark Gurney. All rights reserved. +.\" Copyright 1997 John-Mark Gurney. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions -- cgit v1.1 From a1c1d2c61c522628f1e95d76192be2ec6857fc5d Mon Sep 17 00:00:00 2001 From: jmg Date: Mon, 26 Aug 2013 18:51:48 +0000 Subject: fix up my copyright and remove third clause.. --- usr.bin/brandelf/brandelf.1 | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/usr.bin/brandelf/brandelf.1 b/usr.bin/brandelf/brandelf.1 index 689f0cc..2b3ea7e 100644 --- a/usr.bin/brandelf/brandelf.1 +++ b/usr.bin/brandelf/brandelf.1 @@ -1,5 +1,4 @@ -.\" Copyright (c) 1997 -.\" John-Mark Gurney. All rights reserved. +.\" Copyright 1997 John-Mark Gurney. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -9,9 +8,6 @@ .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of the author nor the names of any co-contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY John-Mark Gurney AND CONTRIBUTORS ``AS IS'' .\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- cgit v1.1 From f4ae1f5e6daa555fb4a08d25e96e4a9ffee80a24 Mon Sep 17 00:00:00 2001 From: jmg Date: Mon, 26 Aug 2013 18:53:19 +0000 Subject: fix up some comments and a white space issue... MFC after: 3 days --- sys/kern/kern_event.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c index d75ba22..dfd1c46 100644 --- a/sys/kern/kern_event.c +++ b/sys/kern/kern_event.c @@ -565,7 +565,7 @@ filt_timerattach(struct knote *kn) memory_order_relaxed)); kn->kn_flags |= EV_CLEAR; /* automatically set */ - kn->kn_status &= ~KN_DETACHED; /* knlist_add usually sets it */ + kn->kn_status &= ~KN_DETACHED; /* knlist_add clears it */ calloutp = malloc(sizeof(*calloutp), M_KQUEUE, M_WAITOK); callout_init(calloutp, CALLOUT_MPSAFE); kn->kn_hook = calloutp; @@ -587,7 +587,7 @@ filt_timerdetach(struct knote *kn) free(calloutp, M_KQUEUE); old = atomic_fetch_sub_explicit(&kq_ncallouts, 1, memory_order_relaxed); KASSERT(old > 0, ("Number of callouts cannot become negative")); - kn->kn_status |= KN_DETACHED; /* knlist_remove usually clears it */ + kn->kn_status |= KN_DETACHED; /* knlist_remove sets it */ } static int @@ -1467,7 +1467,7 @@ retry: *kevp = kn->kn_kevent; KQ_LOCK(kq); KQ_GLOBAL_UNLOCK(&kq_global, haskqglobal); - if (kn->kn_flags & (EV_CLEAR | EV_DISPATCH)) { + if (kn->kn_flags & (EV_CLEAR | EV_DISPATCH)) { /* * Manually clear knotes who weren't * 'touch'ed. @@ -1859,7 +1859,7 @@ knlist_remove_kq(struct knlist *knl, struct knote *kn, int knlislocked, int kqis } /* - * remove all knotes from a specified klist + * remove knote from the specified knlist */ void knlist_remove(struct knlist *knl, struct knote *kn, int islocked) @@ -1869,7 +1869,7 @@ knlist_remove(struct knlist *knl, struct knote *kn, int islocked) } /* - * remove knote from a specified klist while in f_event handler. + * remove knote from the specified knlist while in f_event handler. */ void knlist_remove_inevent(struct knlist *knl, struct knote *kn) @@ -2002,7 +2002,7 @@ knlist_destroy(struct knlist *knl) #ifdef INVARIANTS /* * if we run across this error, we need to find the offending - * driver and have it call knlist_clear. + * driver and have it call knlist_clear or knlist_delete. */ if (!SLIST_EMPTY(&knl->kl_list)) printf("WARNING: destroying knlist w/ knotes on it!\n"); -- cgit v1.1 From 9cfbf27301135107cddbe24645b9e1c841e26fa0 Mon Sep 17 00:00:00 2001 From: np Date: Mon, 26 Aug 2013 19:02:52 +0000 Subject: Use correct mailbox and PCIe PF number when querying RDMA parameters. --- sys/dev/cxgbe/t4_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c index a16b32f..db4637d 100644 --- a/sys/dev/cxgbe/t4_main.c +++ b/sys/dev/cxgbe/t4_main.c @@ -2492,7 +2492,7 @@ get_params__post_init(struct adapter *sc) param[3] = FW_PARAM_PFVF(CQ_END); param[4] = FW_PARAM_PFVF(OCQ_START); param[5] = FW_PARAM_PFVF(OCQ_END); - rc = -t4_query_params(sc, 0, 0, 0, 6, param, val); + rc = -t4_query_params(sc, sc->mbox, sc->pf, 0, 6, param, val); if (rc != 0) { device_printf(sc->dev, "failed to query RDMA parameters(2): %d.\n", rc); -- cgit v1.1 From 3380a03b00ada5d1f650ccbabd9a494a1fb65781 Mon Sep 17 00:00:00 2001 From: mav Date: Mon, 26 Aug 2013 20:39:02 +0000 Subject: MFprojects/camlock r254895: Add unmapped BIO support to GEOM ZERO if kern.geom.zero.clear is cleared. --- sys/geom/zero/g_zero.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/sys/geom/zero/g_zero.c b/sys/geom/zero/g_zero.c index 1c2c54f..311db54 100644 --- a/sys/geom/zero/g_zero.c +++ b/sys/geom/zero/g_zero.c @@ -41,16 +41,37 @@ __FBSDID("$FreeBSD$"); #define G_ZERO_CLASS_NAME "ZERO" +static int g_zero_clear_sysctl(SYSCTL_HANDLER_ARGS); + SYSCTL_DECL(_kern_geom); static SYSCTL_NODE(_kern_geom, OID_AUTO, zero, CTLFLAG_RW, 0, "GEOM_ZERO stuff"); static int g_zero_clear = 1; -SYSCTL_INT(_kern_geom_zero, OID_AUTO, clear, CTLFLAG_RW, &g_zero_clear, 0, - "Clear read data buffer"); +SYSCTL_PROC(_kern_geom_zero, OID_AUTO, clear, CTLTYPE_INT|CTLFLAG_RW, + &g_zero_clear, 0, g_zero_clear_sysctl, "I", "Clear read data buffer"); static int g_zero_byte = 0; SYSCTL_INT(_kern_geom_zero, OID_AUTO, byte, CTLFLAG_RW, &g_zero_byte, 0, "Byte (octet) value to clear the buffers with"); +static struct g_provider *gpp; + +static int +g_zero_clear_sysctl(SYSCTL_HANDLER_ARGS) +{ + int error; + + error = sysctl_handle_int(oidp, &g_zero_clear, 0, req); + if (error != 0 || req->newptr == NULL) + return (error); + if (gpp == NULL) + return (ENXIO); + if (g_zero_clear) + gpp->flags &= ~G_PF_ACCEPT_UNMAPPED; + else + gpp->flags |= G_PF_ACCEPT_UNMAPPED; + return (0); +} + static void g_zero_start(struct bio *bp) { @@ -58,7 +79,7 @@ g_zero_start(struct bio *bp) switch (bp->bio_cmd) { case BIO_READ: - if (g_zero_clear) + if (g_zero_clear && (bp->bio_flags & BIO_UNMAPPED) == 0) memset(bp->bio_data, g_zero_byte, bp->bio_length); /* FALLTHROUGH */ case BIO_DELETE: @@ -84,7 +105,9 @@ g_zero_init(struct g_class *mp) gp = g_new_geomf(mp, "gzero"); gp->start = g_zero_start; gp->access = g_std_access; - pp = g_new_providerf(gp, "%s", gp->name); + gpp = pp = g_new_providerf(gp, "%s", gp->name); + if (!g_zero_clear) + pp->flags |= G_PF_ACCEPT_UNMAPPED; pp->mediasize = 1152921504606846976LLU; pp->sectorsize = 512; g_error_provider(pp, 0); @@ -104,6 +127,7 @@ g_zero_destroy_geom(struct gctl_req *req __unused, struct g_class *mp __unused, return (0); if (pp->acr > 0 || pp->acw > 0 || pp->ace > 0) return (EBUSY); + gpp = NULL; g_wither_geom(gp, ENXIO); return (0); } -- cgit v1.1 From 26521ea118edfa2b87cb791942751f87286caf21 Mon Sep 17 00:00:00 2001 From: joerg Date: Mon, 26 Aug 2013 21:15:50 +0000 Subject: Reimplement the FDOPT_NOERROR feature that was kicked out in r134081. It is needed for fdread(1) in order to be able to recover from CRC errors in the data field of a floppy sector (by returning the sector data that failed CRC, rather than inventing dummy data). When closing the device, clear all transient device options. MFC after: 1 week --- sys/dev/fdc/fdc.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/sys/dev/fdc/fdc.c b/sys/dev/fdc/fdc.c index 4de5e81..9fe1e7e 100644 --- a/sys/dev/fdc/fdc.c +++ b/sys/dev/fdc/fdc.c @@ -761,10 +761,13 @@ fdc_worker(struct fdc_data *fdc) int i, nsect; int st0, st3, cyl, mfm, steptrac, cylinder, descyl, sec; int head; + int override_error; static int need_recal; struct fdc_readid *idp; struct fd_formb *finfo; + override_error = 0; + /* Have we exhausted our retries ? */ bp = fdc->bp; fd = fdc->fd; @@ -1090,7 +1093,10 @@ fdc_worker(struct fdc_data *fdc) fdc->status[3], fdc->status[4], fdc->status[5]); } retry_line = __LINE__; - return (1); + if (fd->options & FDOPT_NOERROR) + override_error = 1; + else + return (1); } /* All OK */ switch(bp->bio_cmd) { @@ -1111,10 +1117,16 @@ fdc_worker(struct fdc_data *fdc) bp->bio_resid -= fd->fd_iosize; bp->bio_completed += fd->fd_iosize; fd->fd_ioptr += fd->fd_iosize; - /* Since we managed to get something done, reset the retry */ - fdc->retry = 0; - if (bp->bio_resid > 0) - return (0); + if (override_error) { + if ((debugflags & 4)) + printf("FDOPT_NOERROR: returning bad data\n"); + } else { + /* Since we managed to get something done, + * reset the retry */ + fdc->retry = 0; + if (bp->bio_resid > 0) + return (0); + } break; case BIO_FMT: break; @@ -1406,6 +1418,7 @@ fd_access(struct g_provider *pp, int r, int w, int e) ae = e + pp->ace; if (ar == 0 && aw == 0 && ae == 0) { + fd->options &= ~(FDOPT_NORETRY | FDOPT_NOERRLOG | FDOPT_NOERROR); device_unbusy(fd->dev); return (0); } -- cgit v1.1 From 615f223c0707db4c367eaf4efdf917e46e1e3402 Mon Sep 17 00:00:00 2001 From: pfg Date: Mon, 26 Aug 2013 22:29:42 +0000 Subject: Merge various CTF fixes from illumos 2942 CTF tools need to handle files which legitimately lack data 2978 ctfconvert still needs to ignore legitimately dataless files on SPARC Illumos Revisions: 13745:6b3106b4250f 13754:7231b684c18b Reference: https://www.illumos.org/issues/2942 https://www.illumos.org/issues/2978 MFC after: 3 weeks --- cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c | 70 ++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 5 deletions(-) diff --git a/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c b/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c index c7f785e..0738dd0 100644 --- a/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c +++ b/cddl/contrib/opensolaris/tools/ctf/cvt/dwarf.c @@ -23,8 +23,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* * DWARF to tdata conversion * @@ -1796,6 +1794,59 @@ die_resolve(dwarf_t *dw) } while (dw->dw_nunres != 0); } +/* + * Any object containing a function or object symbol at any scope should also + * contain DWARF data. + */ +static boolean_t +should_have_dwarf(Elf *elf) +{ + Elf_Scn *scn = NULL; + Elf_Data *data = NULL; + GElf_Shdr shdr; + GElf_Sym sym; + uint32_t symdx = 0; + size_t nsyms = 0; + boolean_t found = B_FALSE; + + while ((scn = elf_nextscn(elf, scn)) != NULL) { + gelf_getshdr(scn, &shdr); + + if (shdr.sh_type == SHT_SYMTAB) { + found = B_TRUE; + break; + } + } + + if (!found) + terminate("cannot convert stripped objects\n"); + + data = elf_getdata(scn, NULL); + nsyms = shdr.sh_size / shdr.sh_entsize; + + for (symdx = 0; symdx < nsyms; symdx++) { + gelf_getsym(data, symdx, &sym); + + if ((GELF_ST_TYPE(sym.st_info) == STT_FUNC) || + (GELF_ST_TYPE(sym.st_info) == STT_TLS) || + (GELF_ST_TYPE(sym.st_info) == STT_OBJECT)) { + char *name; + + name = elf_strptr(elf, shdr.sh_link, sym.st_name); + + /* Studio emits these local symbols regardless */ + if ((strcmp(name, "Bbss.bss") != 0) && + (strcmp(name, "Ttbss.bss") != 0) && + (strcmp(name, "Ddata.data") != 0) && + (strcmp(name, "Ttdata.data") != 0) && + (strcmp(name, "Drodata.rodata") != 0)) + return (B_TRUE); + } + } + + return (B_FALSE); +} + /*ARGSUSED*/ int dw_read(tdata_t *td, Elf *elf, char *filename __unused) @@ -1820,8 +1871,12 @@ dw_read(tdata_t *td, Elf *elf, char *filename __unused) if ((rc = dwarf_elf_init(elf, DW_DLC_READ, &dw.dw_dw, &dw.dw_err)) == DW_DLV_NO_ENTRY) { - errno = ENOENT; - return (-1); + if (should_have_dwarf(elf)) { + errno = ENOENT; + return (-1); + } else { + return (0); + } } else if (rc != DW_DLV_OK) { if (dwarf_errno(&dw.dw_err) == DW_DLE_DEBUG_INFO_NULL) { /* @@ -1839,9 +1894,14 @@ dw_read(tdata_t *td, Elf *elf, char *filename __unused) &addrsz, &nxthdr, &dw.dw_err)) != DW_DLV_OK) terminate("rc = %d %s\n", rc, dwarf_errmsg(&dw.dw_err)); - if ((cu = die_sibling(&dw, NULL)) == NULL) + if ((cu = die_sibling(&dw, NULL)) == NULL || + (((child = die_child(&dw, cu)) == NULL) && + should_have_dwarf(elf))) { terminate("file does not contain dwarf type data " "(try compiling with -g)\n"); + } else if (child == NULL) { + return (0); + } dw.dw_maxoff = nxthdr - 1; -- cgit v1.1 From fe9638e56d5327851fc0bb1330797ef34ad22cb5 Mon Sep 17 00:00:00 2001 From: dteske Date: Mon, 26 Aug 2013 23:37:11 +0000 Subject: Building upon SVN r254237, disable automated activation of alternate layouts and add support for default underride to $loader_version, acting as a way to name a release. Release text is not displayed for the aforementioned feature of alternate display layout (introduced in r254237); however, for all other layouts (incl. default), the release name is displayed at lower-right. See version.4th(8) for additional information and/or historical details. NOTE: Also a minor edit to version.4th(8) while we're here. --- sys/boot/forth/beastie.4th | 20 ++++---------------- sys/boot/forth/version.4th | 31 +++++++++++++++++++++++++++++-- sys/boot/forth/version.4th.8 | 2 +- 3 files changed, 34 insertions(+), 19 deletions(-) diff --git a/sys/boot/forth/beastie.4th b/sys/boot/forth/beastie.4th index 3c8f29d..240730c 100644 --- a/sys/boot/forth/beastie.4th +++ b/sys/boot/forth/beastie.4th @@ -205,21 +205,9 @@ variable logoY s" loader_logo" getenv dup -1 = if logoX @ logoY @ loader_color? if - s" tribute-logo" - sfind if - execute - else - drop - orb-logo - then + orb-logo else - s" tributebw-logo" - sfind if - execute - else - drop - orbbw-logo - then + orbbw-logo then drop exit then @@ -249,7 +237,7 @@ variable logoY s" tribute-logo" sfind if execute else - orb-logo + drop orb-logo then 2drop exit then @@ -258,7 +246,7 @@ variable logoY s" tributebw-logo" sfind if execute else - orbbw-logo + drop orbbw-logo then 2drop exit then diff --git a/sys/boot/forth/version.4th b/sys/boot/forth/version.4th index 358b6b1..16795dc 100644 --- a/sys/boot/forth/version.4th +++ b/sys/boot/forth/version.4th @@ -29,6 +29,9 @@ marker task-version.4th variable versionX variable versionY +\ Default $loader_version value if not overridden or using tribute screen +: str_loader_version ( -- C-ADDR/U|-1 ) -1 ; + \ Initialize text placement to defaults 80 versionX ! \ NOTE: this is the ending column (text is right-justified) 24 versionY ! @@ -43,9 +46,33 @@ variable versionY ?number drop versionY ! -1 then drop - \ Exit if a version was not set + \ Default version if none was set s" loader_version" getenv dup -1 = if - drop exit + drop + \ Default version if no logo is requested + s" loader_logo" getenv dup -1 = if + drop str_loader_version + else + 2dup s" tribute" compare-insensitive 0= if + 2drop + s" tribute-logo" sfind if + drop exit \ see beastie tribute-text + else + drop str_loader_version + then + else 2dup s" tributebw" compare-insensitive 0= if + 2drop + s" tributebw-logo" sfind if + drop exit \ see beastie tribute-text + else + drop str_loader_version + then + else + 2drop str_loader_version + then then + then + then dup -1 = if + drop exit \ default version (above) is disabled then \ Right justify the text diff --git a/sys/boot/forth/version.4th.8 b/sys/boot/forth/version.4th.8 index efa6aa6..fe8b618 100644 --- a/sys/boot/forth/version.4th.8 +++ b/sys/boot/forth/version.4th.8 @@ -91,7 +91,7 @@ causes the version to be printed without color .Pq default is ANSI Cyan . .El .Sh FILES -.Bl -tag -width /boot/loader.4th -compact +.Bl -tag -width /boot/version.4th -compact .It Pa /boot/loader The .Xr loader 8 . -- cgit v1.1 From a52b9ca1d3093315714bdb9c80d6cc06215837a0 Mon Sep 17 00:00:00 2001 From: will Date: Mon, 26 Aug 2013 23:48:21 +0000 Subject: Add the ability to display the default FIB number for a process to the ps(1) utility, e.g. "ps -O fib". bin/ps/keyword.c: Add the "fib" keyword and default its column name to "FIB". bin/ps/ps.1: Add "fib" as a supported keyword. sys/compat/freebsd32/freebsd32.h: sys/kern/kern_proc.c: sys/sys/user.h: Add the default fib number for a process (p->p_fibnum) to the user land accessible process data of struct kinfo_proc. Submitted by: Oliver Fromme , gibbs --- bin/ps/keyword.c | 1 + bin/ps/ps.1 | 3 +++ sys/compat/freebsd32/freebsd32.h | 1 + sys/kern/kern_proc.c | 2 ++ sys/sys/user.h | 3 ++- 5 files changed, 9 insertions(+), 1 deletion(-) diff --git a/bin/ps/keyword.c b/bin/ps/keyword.c index 5861129..21e6791 100644 --- a/bin/ps/keyword.c +++ b/bin/ps/keyword.c @@ -87,6 +87,7 @@ static VAR var[] = { {"etimes", "ELAPSED", NULL, USER, elapseds, 0, CHAR, NULL, 0}, {"euid", "", "uid", 0, NULL, 0, CHAR, NULL, 0}, {"f", "F", NULL, 0, kvar, KOFF(ki_flag), INT, "x", 0}, + {"fib", "FIB", NULL, 0, kvar, KOFF(ki_fibnum), INT, "d", 0}, {"flags", "", "f", 0, NULL, 0, CHAR, NULL, 0}, {"gid", "GID", NULL, 0, kvar, KOFF(ki_groups), UINT, UIDFMT, 0}, {"group", "GROUP", NULL, LJUST, egroupname, 0, CHAR, NULL, 0}, diff --git a/bin/ps/ps.1 b/bin/ps/ps.1 index 1a364f5..81a1f6d 100644 --- a/bin/ps/ps.1 +++ b/bin/ps/ps.1 @@ -512,6 +512,9 @@ elapsed running time, format minutes:seconds. .It Cm etimes elapsed running time, in decimal integer seconds +.It Cm fib +default FIB number, see +.Xr setfib 1 .It Cm flags the process flags, in hexadecimal (alias .Cm f ) diff --git a/sys/compat/freebsd32/freebsd32.h b/sys/compat/freebsd32/freebsd32.h index 9b04965..aa08432 100644 --- a/sys/compat/freebsd32/freebsd32.h +++ b/sys/compat/freebsd32/freebsd32.h @@ -342,6 +342,7 @@ struct kinfo_proc32 { char ki_loginclass[LOGINCLASSLEN+1]; char ki_sparestrings[50]; int ki_spareints[KI_NSPARE_INT]; + int ki_fibnum; u_int ki_cr_flags; int ki_jid; int ki_numthreads; diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c index 45920c4..3fa7a7f 100644 --- a/sys/kern/kern_proc.c +++ b/sys/kern/kern_proc.c @@ -862,6 +862,7 @@ fill_kinfo_proc_only(struct proc *p, struct kinfo_proc *kp) kp->ki_swtime = (ticks - p->p_swtick) / hz; kp->ki_pid = p->p_pid; kp->ki_nice = p->p_nice; + kp->ki_fibnum = p->p_fibnum; kp->ki_start = p->p_stats->p_start; timevaladd(&kp->ki_start, &boottime); PROC_SLOCK(p); @@ -1160,6 +1161,7 @@ freebsd32_kinfo_proc_out(const struct kinfo_proc *ki, struct kinfo_proc32 *ki32) bcopy(ki->ki_comm, ki32->ki_comm, COMMLEN + 1); bcopy(ki->ki_emul, ki32->ki_emul, KI_EMULNAMELEN + 1); bcopy(ki->ki_loginclass, ki32->ki_loginclass, LOGINCLASSLEN + 1); + CP(*ki, *ki32, ki_fibnum); CP(*ki, *ki32, ki_cr_flags); CP(*ki, *ki32, ki_jid); CP(*ki, *ki32, ki_numthreads); diff --git a/sys/sys/user.h b/sys/sys/user.h index aa81dc9..9389e55 100644 --- a/sys/sys/user.h +++ b/sys/sys/user.h @@ -83,7 +83,7 @@ * it in two places: function fill_kinfo_proc in sys/kern/kern_proc.c and * function kvm_proclist in lib/libkvm/kvm_proc.c . */ -#define KI_NSPARE_INT 9 +#define KI_NSPARE_INT 8 #define KI_NSPARE_LONG 12 #define KI_NSPARE_PTR 6 @@ -186,6 +186,7 @@ struct kinfo_proc { */ char ki_sparestrings[50]; /* spare string space */ int ki_spareints[KI_NSPARE_INT]; /* spare room for growth */ + int ki_fibnum; /* Default FIB number */ u_int ki_cr_flags; /* Credential flags */ int ki_jid; /* Process jail ID */ int ki_numthreads; /* XXXKSE number of threads in total */ -- cgit v1.1 From 5f8ac855694c0f2266dab9f85530b4a331b47ed2 Mon Sep 17 00:00:00 2001 From: gonzo Date: Tue, 27 Aug 2013 01:08:55 +0000 Subject: - Initialize freq variable so we will not end up with random value if there is no YAMON present --- sys/mips/malta/yamon.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/mips/malta/yamon.c b/sys/mips/malta/yamon.c index 4e167cb..e669bfe 100644 --- a/sys/mips/malta/yamon.c +++ b/sys/mips/malta/yamon.c @@ -56,6 +56,7 @@ yamon_getcpufreq(void) uint32_t freq; int ret; + freq = 0; ret = YAMON_SYSCON_READ(SYSCON_BOARD_CPU_CLOCK_FREQ_ID, &freq, sizeof(freq)); if (ret != 0) -- cgit v1.1 From 9426e190e7d41951c9bafa9b1c8e6756607e475c Mon Sep 17 00:00:00 2001 From: kib Date: Tue, 27 Aug 2013 01:31:12 +0000 Subject: When allocating a pbuf for the cluster write, do not sleep waiting for the available pbuf when passed vnode is backing md(4). Other i/o directed to the same md device might already hold pbufs, and then we could deadlock since only our progress can free a pbuf needed for wakeup. Obtained from: projects/vm6 Reminded and tested by: pho MFC after: 1 week --- sys/kern/vfs_cluster.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/kern/vfs_cluster.c b/sys/kern/vfs_cluster.c index c98db81..9601082 100644 --- a/sys/kern/vfs_cluster.c +++ b/sys/kern/vfs_cluster.c @@ -837,7 +837,9 @@ cluster_wbuild(struct vnode *vp, long size, daddr_t start_lbn, int len, (tbp->b_bcount != tbp->b_bufsize) || (tbp->b_bcount != size) || (len == 1) || - ((bp = getpbuf(&cluster_pbuf_freecnt)) == NULL)) { + ((bp = (vp->v_vflag & VV_MD) != 0 ? + trypbuf(&cluster_pbuf_freecnt) : + getpbuf(&cluster_pbuf_freecnt)) == NULL)) { totalwritten += tbp->b_bufsize; bawrite(tbp); ++start_lbn; -- cgit v1.1 From 762d4fc307d076e9321cbb08a98305da44dbc545 Mon Sep 17 00:00:00 2001 From: gonzo Date: Tue, 27 Aug 2013 01:40:13 +0000 Subject: Fixes for compatibility with QEMU: - Route PCI interrupt for NIC - Make "no mapping" warning more user-friendly: add device name and mention that it's IRQ mapping - Do not overlap ICUs' IO window with PCI devices' IO windows by starting IO rman at offset 0x100 --- sys/mips/malta/gt_pci.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/sys/mips/malta/gt_pci.c b/sys/mips/malta/gt_pci.c index 0e2012e..37407b2 100644 --- a/sys/mips/malta/gt_pci.c +++ b/sys/mips/malta/gt_pci.c @@ -266,8 +266,12 @@ gt_pci_attach(device_t dev) sc->sc_io = MIPS_PHYS_TO_KSEG1(MALTA_PCI0_IO_BASE); sc->sc_io_rman.rm_type = RMAN_ARRAY; sc->sc_io_rman.rm_descr = "GT64120 PCI I/O Ports"; + /* + * First 256 bytes are ISA's registers: e.g. i8259's + * So do not use them for general purpose PCI I/O window + */ if (rman_init(&sc->sc_io_rman) != 0 || - rman_manage_region(&sc->sc_io_rman, 0, 0xffff) != 0) { + rman_manage_region(&sc->sc_io_rman, 0x100, 0xffff) != 0) { panic("gt_pci_attach: failed to set up I/O rman"); } @@ -568,8 +572,10 @@ gt_pci_route_interrupt(device_t pcib, device_t dev, int pin) * PIIX4 IDE adapter. HW IRQ0 */ return 0; + case 11: /* Ethernet */ + return 10; default: - printf("No mapping for %d/%d/%d/%d\n", bus, device, func, pin); + device_printf(pcib, "no IRQ mapping for %d/%d/%d/%d\n", bus, device, func, pin); } return (0); -- cgit v1.1 From 68734fc2a72e2d1ce0edd0118db8fd449e3f801c Mon Sep 17 00:00:00 2001 From: grehan Date: Tue, 27 Aug 2013 03:49:47 +0000 Subject: Fix off-by-1 error in assert. Submitted by: Tycho Nightingale (tycho.nightingale@pluribusnetworks.com) --- usr.sbin/bhyve/pci_virtio_block.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.sbin/bhyve/pci_virtio_block.c b/usr.sbin/bhyve/pci_virtio_block.c index 4395410..76f681b 100644 --- a/usr.sbin/bhyve/pci_virtio_block.c +++ b/usr.sbin/bhyve/pci_virtio_block.c @@ -156,7 +156,7 @@ pci_vtblk_proc(struct pci_vtblk_softc *sc, struct vqueue_info *vq) * XXX - note - this fails on crash dump, which does a * VIRTIO_BLK_T_FLUSH with a zero transfer length */ - assert (n >= 3 && n < VTBLK_MAXSEGS + 2); + assert (n >= 3 && n <= VTBLK_MAXSEGS + 2); assert((flags[0] & VRING_DESC_F_WRITE) == 0); assert(iov[0].iov_len == sizeof(struct virtio_blk_hdr)); -- cgit v1.1 From 1b508b8cc86a59427c841ab4ffbf912887462b37 Mon Sep 17 00:00:00 2001 From: will Date: Tue, 27 Aug 2013 04:01:31 +0000 Subject: Build all ZFS testing & debugging tools with -g. These programs and everything using libzpool rely on the embedded asserts to verify the correctness of operations. Given that, the core dumps would be useless without debug symbols. --- cddl/lib/libzpool/Makefile | 6 ++++-- cddl/usr.bin/ztest/Makefile | 5 +++-- cddl/usr.sbin/zdb/Makefile | 5 +++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/cddl/lib/libzpool/Makefile b/cddl/lib/libzpool/Makefile index b159d3a..848325a 100644 --- a/cddl/lib/libzpool/Makefile +++ b/cddl/lib/libzpool/Makefile @@ -64,7 +64,9 @@ NO_PROFILE= CSTD= c99 -CFLAGS+= -DDEBUG=1 -#DEBUG_FLAGS+= -g +# Since there are many asserts in this library, it makes no sense to compile +# it without debugging. + +CFLAGS+= -g -DDEBUG=1 .include diff --git a/cddl/usr.bin/ztest/Makefile b/cddl/usr.bin/ztest/Makefile index 965300e..370eacb5 100644 --- a/cddl/usr.bin/ztest/Makefile +++ b/cddl/usr.bin/ztest/Makefile @@ -25,7 +25,8 @@ LDADD= -lgeom -lm -lnvpair -lumem -lzpool -lpthread -lavl -lzfs_core -lzfs \ CSTD= c99 -CFLAGS+= -DDEBUG=1 -#DEBUG_FLAGS+= -g +# Since there are many asserts in this program, it makes no sense to compile +# it without debugging. +CFLAGS+= -g -DDEBUG=1 .include diff --git a/cddl/usr.sbin/zdb/Makefile b/cddl/usr.sbin/zdb/Makefile index 8068385..fa9ab98 100644 --- a/cddl/usr.sbin/zdb/Makefile +++ b/cddl/usr.sbin/zdb/Makefile @@ -27,7 +27,8 @@ DPADD= ${LIBGEOM} ${LIBM} ${LIBNVPAIR} ${LIBPTHREAD} ${LIBUMEM} \ ${LIBUUTIL} ${LIBZFS_CORE} ${LIBZFS} ${LIBZPOOL} LDADD= -lgeom -lm -lnvpair -lpthread -lumem -luutil -lzfs_core -lzfs -lzpool -CFLAGS+= -DDEBUG=1 -#DEBUG_FLAGS+= -g +# Since there are many asserts in this program, it makes no sense to compile +# it without debugging. +CFLAGS+= -g -DDEBUG=1 .include -- cgit v1.1 From 9de02e3e3b0539991deeb5e39f0685e62d404315 Mon Sep 17 00:00:00 2001 From: bryanv Date: Tue, 27 Aug 2013 04:05:18 +0000 Subject: Couple minor if_vmx tweaks - Use queue size fields from the Tx/Rx queues in various places instead of (currently the same values) from the softc. - Fix potential crash in detach if the attached failed to alloc queue memory. - Move the VMXNET3_MAX_RX_SEGS define to a better spot. - Tweak frame size calculation w.r.t. ETHER_ALIGN. This could be tweaked some more, or removed since it probably doesn't matter much for x86 (and the x86 class of machines this driver will be used on). --- sys/dev/vmware/vmxnet3/if_vmx.c | 48 ++++++++++++++++++++------------------ sys/dev/vmware/vmxnet3/if_vmxvar.h | 14 +++++------ 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/sys/dev/vmware/vmxnet3/if_vmx.c b/sys/dev/vmware/vmxnet3/if_vmx.c index c9168d4..80707ff 100644 --- a/sys/dev/vmware/vmxnet3/if_vmx.c +++ b/sys/dev/vmware/vmxnet3/if_vmx.c @@ -437,15 +437,15 @@ vmxnet3_check_version(struct vmxnet3_softc *sc) device_printf(dev, "unsupported hardware version %#x\n", version); return (ENOTSUP); - } else - vmxnet3_write_bar1(sc, VMXNET3_BAR1_VRRS, 1); + } + vmxnet3_write_bar1(sc, VMXNET3_BAR1_VRRS, 1); version = vmxnet3_read_bar1(sc, VMXNET3_BAR1_UVRS); if ((version & 0x01) == 0) { device_printf(dev, "unsupported UPT version %#x\n", version); return (ENOTSUP); - } else - vmxnet3_write_bar1(sc, VMXNET3_BAR1_UVRS, 1); + } + vmxnet3_write_bar1(sc, VMXNET3_BAR1_UVRS, 1); return (0); } @@ -781,10 +781,9 @@ vmxnet3_init_rxq(struct vmxnet3_softc *sc, int q) sizeof(struct vmxnet3_rxbuf), M_DEVBUF, M_NOWAIT | M_ZERO); if (rxr->vxrxr_rxbuf == NULL) return (ENOMEM); - } - rxq->vxrxq_comp_ring.vxcr_ndesc = - sc->vmx_nrxdescs * VMXNET3_RXRINGS_PERQ; + rxq->vxrxq_comp_ring.vxcr_ndesc += sc->vmx_nrxdescs; + } return (0); } @@ -1240,8 +1239,11 @@ static void vmxnet3_free_queue_data(struct vmxnet3_softc *sc) { - vmxnet3_free_rxq_data(sc); - vmxnet3_free_txq_data(sc); + if (sc->vmx_rxq != NULL) + vmxnet3_free_rxq_data(sc); + + if (sc->vmx_txq != NULL) + vmxnet3_free_txq_data(sc); } static int @@ -1325,9 +1327,9 @@ vmxnet3_init_shared_data(struct vmxnet3_softc *sc) txs = txq->vxtxq_ts; txs->cmd_ring = txq->vxtxq_cmd_ring.vxtxr_dma.dma_paddr; - txs->cmd_ring_len = sc->vmx_ntxdescs; + txs->cmd_ring_len = txq->vxtxq_cmd_ring.vxtxr_ndesc; txs->comp_ring = txq->vxtxq_comp_ring.vxcr_dma.dma_paddr; - txs->comp_ring_len = sc->vmx_ntxdescs; + txs->comp_ring_len = txq->vxtxq_comp_ring.vxcr_ndesc; txs->driver_data = vtophys(txq); txs->driver_data_len = sizeof(struct vmxnet3_txqueue); } @@ -1342,8 +1344,7 @@ vmxnet3_init_shared_data(struct vmxnet3_softc *sc) rxs->cmd_ring[1] = rxq->vxrxq_cmd_ring[1].vxrxr_dma.dma_paddr; rxs->cmd_ring_len[1] = rxq->vxrxq_cmd_ring[1].vxrxr_ndesc; rxs->comp_ring = rxq->vxrxq_comp_ring.vxcr_dma.dma_paddr; - rxs->comp_ring_len = rxq->vxrxq_cmd_ring[0].vxrxr_ndesc + - rxq->vxrxq_cmd_ring[1].vxrxr_ndesc; + rxs->comp_ring_len = rxq->vxrxq_comp_ring.vxcr_ndesc; rxs->driver_data = vtophys(rxq); rxs->driver_data_len = sizeof(struct vmxnet3_rxqueue); } @@ -1558,6 +1559,7 @@ vmxnet3_txq_eof(struct vmxnet3_txqueue *txq) txcd = &txc->vxcr_u.txcd[txc->vxcr_next]; if (txcd->gen != txc->vxcr_gen) break; + vmxnet3_barrier(sc, VMXNET3_BARRIER_RD); if (++txc->vxcr_next == txc->vxcr_ndesc) { txc->vxcr_next = 0; @@ -1647,7 +1649,7 @@ vmxnet3_newbuf(struct vmxnet3_softc *sc, struct vmxnet3_rxring *rxr) BUS_DMA_NOWAIT); if (error) { m_freem(m); - sc->vmx_stats.vmst_mbuf_load_failed++;; + sc->vmx_stats.vmst_mbuf_load_failed++; return (error); } KASSERT(nsegs == 1, @@ -2119,19 +2121,19 @@ vmxnet3_rxinit(struct vmxnet3_softc *sc, struct vmxnet3_rxqueue *rxq) int i, populate, idx, frame_size, error; ifp = sc->vmx_ifp; - frame_size = ifp->if_mtu + sizeof(struct ether_vlan_header); + frame_size = ETHER_ALIGN + sizeof(struct ether_vlan_header) + + ifp->if_mtu; /* - * If the MTU causes us to exceed what a regular sized cluster - * can handle, we allocate a second MJUMPAGESIZE cluster after - * it in ring 0. If in use, ring 1 always contains MJUMPAGESIZE - * clusters. + * If the MTU causes us to exceed what a regular sized cluster can + * handle, we allocate a second MJUMPAGESIZE cluster after it in + * ring 0. If in use, ring 1 always contains MJUMPAGESIZE clusters. * - * Keep rx_max_chain a divisor of the maximum Rx ring size to - * to make our life easier. We do not support changing the ring - * size after the attach. + * Keep rx_max_chain a divisor of the maximum Rx ring size to make + * our life easier. We do not support changing the ring size after + * the attach. */ - if (frame_size <= MCLBYTES - ETHER_ALIGN) + if (frame_size <= MCLBYTES) sc->vmx_rx_max_chain = 1; else sc->vmx_rx_max_chain = 2; diff --git a/sys/dev/vmware/vmxnet3/if_vmxvar.h b/sys/dev/vmware/vmxnet3/if_vmxvar.h index 90fe761..f2dd52b 100644 --- a/sys/dev/vmware/vmxnet3/if_vmxvar.h +++ b/sys/dev/vmware/vmxnet3/if_vmxvar.h @@ -50,13 +50,6 @@ struct vmxnet3_dma_alloc { #define VMXNET3_MAX_RX_NCOMPDESC \ (VMXNET3_MAX_RX_NDESC * VMXNET3_RXRINGS_PERQ) -/* - * The maximum number of Rx segments we accept. When LRO is enabled, - * this allows us to receive the maximum sized frame with one MCLBYTES - * cluster followed by 16 MJUMPAGESIZE clusters. - */ -#define VMXNET3_MAX_RX_SEGS 17 - struct vmxnet3_txbuf { bus_dmamap_t vtxb_dmamap; struct mbuf *vtxb_m; @@ -272,6 +265,13 @@ struct vmxnet3_softc { #define VMXNET3_TX_MAXSEGSIZE (1 << 14) /* + * The maximum number of Rx segments we accept. When LRO is enabled, + * this allows us to receive the maximum sized frame with one MCLBYTES + * cluster followed by 16 MJUMPAGESIZE clusters. + */ +#define VMXNET3_MAX_RX_SEGS 17 + +/* * Predetermined size of the multicast MACs filter table. If the * number of multicast addresses exceeds this size, then the * ALL_MULTI mode is use instead. -- cgit v1.1 From 710718d2fadebbec7e852b67c689050387a34169 Mon Sep 17 00:00:00 2001 From: will Date: Tue, 27 Aug 2013 04:42:42 +0000 Subject: Fix 'make release' on older hosts: use buildworld legacy utilities. Newer FreeBSD installs require an install(1) that supports the new flags. This adds ${MAKEOBJDIRPREFIX}${.CURDIR}/tmp/legacy/{bin,usr/{bin,sbin}} to the PATH while generating an mtree database for 'make release'. Note that the problem only exists here because mm-mtree.sh generates its own object tree to avoid mucking with the existing one, which results in a PATH containing legacy utility dirs that are empty. --- release/scripts/mm-mtree.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/release/scripts/mm-mtree.sh b/release/scripts/mm-mtree.sh index d132a34..644f309 100755 --- a/release/scripts/mm-mtree.sh +++ b/release/scripts/mm-mtree.sh @@ -81,6 +81,11 @@ if [ ! -f ${SOURCEDIR}/Makefile.inc1 -a \ fi # Setup make to use system files from SOURCEDIR +objp=${MAKEOBJDIRPREFIX} +[ -z "${objp}" ] && objp=/usr/obj +legacydir=${objp}${SOURCEDIR}/tmp/legacy +legacypath=${legacydir}/usr/sbin:${legacydir}/usr/bin:${legacydir}/bin +MM_MAKE_ARGS="${MM_MAKE_ARGS} PATH=${legacypath}:${PATH}" MM_MAKE="make ${ARCHSTRING} ${MM_MAKE_ARGS} -m ${SOURCEDIR}/share/mk" delete_temproot () { -- cgit v1.1 From 5790a5b093d8bbd36e9dac4c0d6e54587e3422e6 Mon Sep 17 00:00:00 2001 From: dteske Date: Tue, 27 Aug 2013 06:09:28 +0000 Subject: Update copyright. --- sys/boot/forth/version.4th | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/boot/forth/version.4th b/sys/boot/forth/version.4th index 16795dc..6e0255b 100644 --- a/sys/boot/forth/version.4th +++ b/sys/boot/forth/version.4th @@ -1,4 +1,4 @@ -\ Copyright (c) 2006-2011 Devin Teske +\ Copyright (c) 2006-2013 Devin Teske \ All rights reserved. \ \ Redistribution and use in source and binary forms, with or without -- cgit v1.1 From dfd07d8821f7b5e2045ff827d8650c7c266e014c Mon Sep 17 00:00:00 2001 From: mav Date: Tue, 27 Aug 2013 06:50:46 +0000 Subject: Add missing newlines to Fibre Channel attributes output. --- sbin/camcontrol/camcontrol.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sbin/camcontrol/camcontrol.c b/sbin/camcontrol/camcontrol.c index 35826c5..76b3939 100644 --- a/sbin/camcontrol/camcontrol.c +++ b/sbin/camcontrol/camcontrol.c @@ -4488,13 +4488,13 @@ cts_print(struct cam_device *device, struct ccb_trans_settings *cts) &cts->xport_specific.fc; if (fc->valid & CTS_FC_VALID_WWNN) - fprintf(stdout, "%sWWNN: 0x%llx", pathstr, + fprintf(stdout, "%sWWNN: 0x%llx\n", pathstr, (long long) fc->wwnn); if (fc->valid & CTS_FC_VALID_WWPN) - fprintf(stdout, "%sWWPN: 0x%llx", pathstr, + fprintf(stdout, "%sWWPN: 0x%llx\n", pathstr, (long long) fc->wwpn); if (fc->valid & CTS_FC_VALID_PORT) - fprintf(stdout, "%sPortID: 0x%x", pathstr, fc->port); + fprintf(stdout, "%sPortID: 0x%x\n", pathstr, fc->port); if (fc->valid & CTS_FC_VALID_SPEED) fprintf(stdout, "%stransfer speed: %d.%03dMB/s\n", pathstr, fc->bitrate / 1000, fc->bitrate % 1000); -- cgit v1.1 From 9a7e8d3357b941e823ab05a1bf8cfc06c76faa7a Mon Sep 17 00:00:00 2001 From: hrs Date: Tue, 27 Aug 2013 11:50:33 +0000 Subject: Fix a crash when reloading the configuration file. Spotted by: des --- usr.sbin/rtadvd/config.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/usr.sbin/rtadvd/config.c b/usr.sbin/rtadvd/config.c index 02a241d..f0e11a3 100644 --- a/usr.sbin/rtadvd/config.c +++ b/usr.sbin/rtadvd/config.c @@ -296,10 +296,8 @@ rm_rainfo(struct rainfo *rai) if (rai->rai_ra_data != NULL) free(rai->rai_ra_data); - while ((pfx = TAILQ_FIRST(&rai->rai_prefix)) != NULL) { - TAILQ_REMOVE(&rai->rai_prefix, pfx, pfx_next); - free(pfx); - } + while ((pfx = TAILQ_FIRST(&rai->rai_prefix)) != NULL) + delete_prefix(pfx); while ((sol = TAILQ_FIRST(&rai->rai_soliciter)) != NULL) { TAILQ_REMOVE(&rai->rai_soliciter, sol, sol_next); free(sol); -- cgit v1.1 From d3ddbbbab853cf18073803b2efc196bec0016cf8 Mon Sep 17 00:00:00 2001 From: adrian Date: Tue, 27 Aug 2013 14:37:13 +0000 Subject: Create a new function to complete 802.11 mbuf transmission. The aim of this function is to eventually be the completion entry point for all 802.11 encapsulated mbufs. All the wifi drivers end up doing what is in this function so it's an easy win to turn it into a net80211 method and abstract out this code. Ideally the drivers will all eventually be modified to queue up completed mbufs and call this function with all the driver locks not held. This will allow for some much more interesting software queue handling in the future (like net80211 based A-MSDU, fast-frames, A-MPDU aggregation and retransmission.) Tested: * ath(4), iwn(4) --- sys/net80211/ieee80211_output.c | 31 +++++++++++++++++++++++++++++++ sys/net80211/ieee80211_proto.h | 2 ++ 2 files changed, 33 insertions(+) diff --git a/sys/net80211/ieee80211_output.c b/sys/net80211/ieee80211_output.c index 96bf0ec..a7aa7d9 100644 --- a/sys/net80211/ieee80211_output.c +++ b/sys/net80211/ieee80211_output.c @@ -3353,3 +3353,34 @@ ieee80211_ff_encap1(struct ieee80211vap *vap, struct mbuf *m, mtod(m, struct ether_header *)->ether_type = htons(payload); return m; } + +/* + * Complete an mbuf transmission. + * + * For now, this simply processes a completed frame after the + * driver has completed it's transmission and/or retransmission. + * It assumes the frame is an 802.11 encapsulated frame. + * + * Later on it will grow to become the exit path for a given frame + * from the driver and, depending upon how it's been encapsulated + * and already transmitted, it may end up doing A-MPDU retransmission, + * power save requeuing, etc. + * + * In order for the above to work, the driver entry point to this + * must not hold any driver locks. Thus, the driver needs to delay + * any actual mbuf completion until it can release said locks. + * + * This frees the mbuf and if the mbuf has a node reference, + * the node reference will be freed. + */ +void +ieee80211_tx_complete(struct ieee80211_node *ni, struct mbuf *m, int status) +{ + + if (ni != NULL) { + if (m->m_flags & M_TXCB) + ieee80211_process_callback(ni, m, status); + ieee80211_free_node(ni); + } + m_freem(m); +} diff --git a/sys/net80211/ieee80211_proto.h b/sys/net80211/ieee80211_proto.h index b8f25da..5ec8459 100644 --- a/sys/net80211/ieee80211_proto.h +++ b/sys/net80211/ieee80211_proto.h @@ -127,6 +127,8 @@ int ieee80211_send_probereq(struct ieee80211_node *ni, const uint8_t *ssid, size_t ssidlen); struct mbuf * ieee80211_ff_encap1(struct ieee80211vap *, struct mbuf *, const struct ether_header *); +void ieee80211_tx_complete(struct ieee80211_node *, + struct mbuf *, int); /* * The formation of ProbeResponse frames requires guidance to -- cgit v1.1 From f4c59de78e81414eace3fb309ad131fa30688ead Mon Sep 17 00:00:00 2001 From: adrian Date: Tue, 27 Aug 2013 14:39:37 +0000 Subject: Use the new ieee80211_tx_complete() function. --- sys/dev/ath/if_ath.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/sys/dev/ath/if_ath.c b/sys/dev/ath/if_ath.c index 3c47585..b4df1d6 100644 --- a/sys/dev/ath/if_ath.c +++ b/sys/dev/ath/if_ath.c @@ -4581,17 +4581,8 @@ ath_tx_freebuf(struct ath_softc *sc, struct ath_buf *bf, int status) /* Free the buffer, it's not needed any longer */ ath_freebuf(sc, bf); - if (ni != NULL) { - /* - * Do any callback and reclaim the node reference. - */ - if (m0->m_flags & M_TXCB) - ieee80211_process_callback(ni, m0, status); - ieee80211_free_node(ni); - } - - /* Finally, we don't need this mbuf any longer */ - m_freem(m0); + /* Pass the buffer back to net80211 - completing it */ + ieee80211_tx_complete(ni, m0, status); } static struct ath_buf * -- cgit v1.1 From 26cf485d21abe7841c23a42a55eae7aa505c0bb2 Mon Sep 17 00:00:00 2001 From: dteske Date: Tue, 27 Aug 2013 14:48:01 +0000 Subject: It was brought to my attention that SVN r252862 was incomplete. It needed to also make this change, to completely deprecate WITH_BSDCONFIG. --- share/mk/bsd.own.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/share/mk/bsd.own.mk b/share/mk/bsd.own.mk index c553d61..82c9a65a0 100644 --- a/share/mk/bsd.own.mk +++ b/share/mk/bsd.own.mk @@ -369,7 +369,6 @@ __DEFAULT_NO_OPTIONS = \ BIND_LIBS \ BIND_SIGCHASE \ BIND_XML \ - BSDCONFIG \ BSD_GREP \ CLANG_EXTRAS \ CTF \ -- cgit v1.1 From 3cb1daa96e571ed827820b4d87f32f1145ff53c1 Mon Sep 17 00:00:00 2001 From: gavin Date: Tue, 27 Aug 2013 15:06:39 +0000 Subject: Allow more space for interface names. MFC after: 1 week --- usr.sbin/crashinfo/crashinfo.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/usr.sbin/crashinfo/crashinfo.sh b/usr.sbin/crashinfo/crashinfo.sh index b1bfc06..cf60a62 100755 --- a/usr.sbin/crashinfo/crashinfo.sh +++ b/usr.sbin/crashinfo/crashinfo.sh @@ -268,9 +268,9 @@ netstat -M $VMCORE -N $KERNEL -m echo echo "------------------------------------------------------------------------" -echo "netstat -id" +echo "netstat -idW" echo -netstat -M $VMCORE -N $KERNEL -id +netstat -M $VMCORE -N $KERNEL -idW echo echo "------------------------------------------------------------------------" -- cgit v1.1 From 7c6cb741cf1bbc1e6c4eca2bd651b938d4fed6c0 Mon Sep 17 00:00:00 2001 From: will Date: Tue, 27 Aug 2013 15:50:26 +0000 Subject: Make the PAM password strength checking module WARNS=2 safe. lib/libpam/modules/pam_passwdqc/Makefile: Bump WARNS to 2. contrib/pam_modules/pam_passwdqc/pam_passwdqc.c: Bump _XOPEN_SOURCE and _XOPEN_VERSION from 500 to 600 so that vsnprint() is declared. Use the two new union types (pam_conv_item_t and pam_text_item_t) to resolve strict aliasing violations caused by casts to comply with the pam_get_item() API taking a "const void **" for all item types. Warnings are generated for casts that create "type puns" (pointers of conflicting sized types that are set to access the same memory location) since these pointers may be used in ways that violate C's strict aliasing rules. Casts to a new type must be performed through a union in order to be compliant, and access must be performed through only one of the union's data types during the lifetime of the union instance. Handle strict-aliasing warnings through pointer assignments, which drastically simplifies this change. Correct a CLANG "printf-like function with more arguments than format" error. Submitted by: gibbs Sponsored by: Spectra Logic --- contrib/pam_modules/pam_passwdqc/pam_passwdqc.c | 41 +++++++++++++++---------- lib/libpam/modules/pam_passwdqc/Makefile | 2 +- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/contrib/pam_modules/pam_passwdqc/pam_passwdqc.c b/contrib/pam_modules/pam_passwdqc/pam_passwdqc.c index 7c39731..e12d0b4 100644 --- a/contrib/pam_modules/pam_passwdqc/pam_passwdqc.c +++ b/contrib/pam_modules/pam_passwdqc/pam_passwdqc.c @@ -2,9 +2,9 @@ * Copyright (c) 2000-2002 by Solar Designer. See LICENSE. */ -#define _XOPEN_SOURCE 500 +#define _XOPEN_SOURCE 600 #define _XOPEN_SOURCE_EXTENDED -#define _XOPEN_VERSION 500 +#define _XOPEN_VERSION 600 #include #include #include @@ -132,17 +132,19 @@ static params_t defaults = { static int converse(pam_handle_t *pamh, int style, lo_const char *text, struct pam_response **resp) { - struct pam_conv *conv; + pam_item_t item; + lo_const struct pam_conv *conv; struct pam_message msg, *pmsg; int status; - status = pam_get_item(pamh, PAM_CONV, (pam_item_t *)&conv); + status = pam_get_item(pamh, PAM_CONV, &item); if (status != PAM_SUCCESS) return status; + conv = item; pmsg = &msg; msg.msg_style = style; - msg.msg = text; + msg.msg = (char *)text; *resp = NULL; return conv->conv(1, (lo_const struct pam_message **)&pmsg, resp, @@ -294,8 +296,11 @@ static int parse(params_t *params, pam_handle_t *pamh, } if (argc) { - say(pamh, PAM_ERROR_MSG, getuid() != 0 ? - MESSAGE_MISCONFIGURED : MESSAGE_INVALID_OPTION, *argv); + if (getuid() != 0) { + say(pamh, PAM_ERROR_MSG, MESSAGE_MISCONFIGURED); + } else { + say(pamh, PAM_ERROR_MSG, MESSAGE_INVALID_OPTION, *argv); + } return PAM_ABORT; } @@ -311,7 +316,9 @@ PAM_EXTERN int pam_sm_chauthtok(pam_handle_t *pamh, int flags, #ifdef HAVE_SHADOW struct spwd *spw; #endif - char *user, *oldpass, *newpass, *randompass; + pam_item_t item; + lo_const char *user, *oldpass, *curpass; + char *newpass, *randompass; const char *reason; int ask_oldauthtok; int randomonly, enforce, retries_left, retry_wanted; @@ -353,17 +360,19 @@ PAM_EXTERN int pam_sm_chauthtok(pam_handle_t *pamh, int flags, if (flags & PAM_PRELIM_CHECK) return status; - status = pam_get_item(pamh, PAM_USER, (pam_item_t *)&user); + status = pam_get_item(pamh, PAM_USER, &item); if (status != PAM_SUCCESS) return status; + user = item; - status = pam_get_item(pamh, PAM_OLDAUTHTOK, (pam_item_t *)&oldpass); + status = pam_get_item(pamh, PAM_OLDAUTHTOK, &item); if (status != PAM_SUCCESS) return status; + oldpass = item; if (params.flags & F_NON_UNIX) { pw = &fake_pw; - pw->pw_name = user; + pw->pw_name = (char *)user; pw->pw_gecos = ""; } else { pw = getpwnam(user); @@ -405,13 +414,13 @@ PAM_EXTERN int pam_sm_chauthtok(pam_handle_t *pamh, int flags, enforce = params.flags & F_ENFORCE_ROOT; if (params.flags & F_USE_AUTHTOK) { - status = pam_get_item(pamh, PAM_AUTHTOK, - (pam_item_t *)&newpass); + status = pam_get_item(pamh, PAM_AUTHTOK, &item); if (status != PAM_SUCCESS) return status; - if (!newpass || (check_max(¶ms, pamh, newpass) && enforce)) + curpass = item; + if (!curpass || (check_max(¶ms, pamh, curpass) && enforce)) return PAM_AUTHTOK_ERR; - reason = _passwdqc_check(¶ms.qc, newpass, oldpass, pw); + reason = _passwdqc_check(¶ms.qc, curpass, oldpass, pw); if (reason) { say(pamh, PAM_ERROR_MSG, MESSAGE_WEAKPASS, reason); if (enforce) @@ -487,7 +496,7 @@ retry: if (!newpass) { if (randompass) _pam_overwrite(randompass); - return PAM_AUTHTOK_ERR; + return status; } if (check_max(¶ms, pamh, newpass) && enforce) { diff --git a/lib/libpam/modules/pam_passwdqc/Makefile b/lib/libpam/modules/pam_passwdqc/Makefile index 905afe1..c9cc30e 100644 --- a/lib/libpam/modules/pam_passwdqc/Makefile +++ b/lib/libpam/modules/pam_passwdqc/Makefile @@ -7,7 +7,7 @@ LIB= pam_passwdqc SRCS= pam_passwdqc.c passwdqc_check.c passwdqc_random.c wordset_4k.c MAN= pam_passwdqc.8 -WARNS?= 0 +WARNS?= 2 CFLAGS+= -I${SRCDIR} DPADD= ${LIBCRYPT} -- cgit v1.1 From c4075658e3a011db15680c21ee392b30b4061f8e Mon Sep 17 00:00:00 2001 From: dteske Date: Tue, 27 Aug 2013 16:10:44 +0000 Subject: Add note/reminder about dialog(1) regression in HEAD/10.0-C so that we don't forget about it in the multi-month run of things to fix prior to 10.0-R. --- UPDATING | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/UPDATING b/UPDATING index c0f23b4..aafbcf8 100644 --- a/UPDATING +++ b/UPDATING @@ -31,6 +31,19 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10.x IS SLOW: disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20130827: + Thomas Dickey (vendor author thereof) reports that dialog(1) since + 2011/10/18 has a bug in handling --hline. Testers and I noticed the + --hline is not ignored but displayed as a NULL string, regardless of + value. This will cause confusion in some bsdconfig dialogs where the + --hline is used to inform users which keybindings to use. This will + likewise affect any other persons relying on --hline. It also looks + rather strange seeing "[]" at the bottom of dialog(1) widgets when + passing --hline "anything". Thomas said he will have a look in a few + weeks. NOTE: The "[]" brackets appear with the left-edge where it + would normally appear given the width of text to display, but the + displayed text is not there (part of the bug). + 20130821: The PADLOCK_RNG and RDRAND_RNG kernel options are now devices. Thus "device padlock_rng" and "device rdrand_rng" should be -- cgit v1.1 From 3be453d800494de4d3782b4e435a0796d124decf Mon Sep 17 00:00:00 2001 From: dteske Date: Tue, 27 Aug 2013 16:30:50 +0000 Subject: Formally remove WITH_BSDCONFIG build option and re-generate src.conf.5 NOTE: Should have been inline with revisions 252862 and 254958. --- share/man/man5/src.conf.5 | 8 ++++---- tools/build/options/WITH_BSDCONFIG | 2 -- 2 files changed, 4 insertions(+), 6 deletions(-) delete mode 100644 tools/build/options/WITH_BSDCONFIG diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5 index 56ab227..07acdd6 100644 --- a/share/man/man5/src.conf.5 +++ b/share/man/man5/src.conf.5 @@ -1,7 +1,7 @@ .\" DO NOT EDIT-- this file is automatically generated. .\" from FreeBSD: head/tools/build/options/makeman 253304 2013-07-12 23:08:44Z bapt .\" $FreeBSD$ -.Dd August 26, 2013 +.Dd August 27, 2013 .Dt SRC.CONF 5 .Os .Sh NAME @@ -704,9 +704,9 @@ and On amd64, set to not build 32-bit library set and a .Nm ld-elf32.so.1 runtime linker. -.It Va WITHOUT_LIBCPLUSPLUS -.\" from FreeBSD: head/tools/build/options/WITHOUT_LIBCPLUSPLUS 246262 2013-02-02 22:42:46Z dim -Set to avoid building libcxxrt and libc++. +.It Va WITH_LIBCPLUSPLUS +.\" from FreeBSD: head/tools/build/options/WITH_LIBCPLUSPLUS 228082 2011-11-28 17:56:46Z dim +Set to build libcxxrt and libc++. .It Va WITH_LIBICONV_COMPAT .\" from FreeBSD: head/tools/build/options/WITH_LIBICONV_COMPAT 254919 2013-08-26 17:15:56Z antoine Set to build libiconv API and link time compatibility. diff --git a/tools/build/options/WITH_BSDCONFIG b/tools/build/options/WITH_BSDCONFIG deleted file mode 100644 index f3e6e25..0000000 --- a/tools/build/options/WITH_BSDCONFIG +++ /dev/null @@ -1,2 +0,0 @@ -.\" $FreeBSD$ -Set to install bsdconfig(8), a BSD-licensed configuration/management utility. -- cgit v1.1 From 14b16775515537edf64104960d90f55cdcb5bc99 Mon Sep 17 00:00:00 2001 From: alfred Date: Tue, 27 Aug 2013 16:45:00 +0000 Subject: Remove include opt_ofed.h since OFED is unifdef'd. Pointed out by: glebius --- sys/net/if_llatbl.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/sys/net/if_llatbl.h b/sys/net/if_llatbl.h index aa3c400..4f21fde 100644 --- a/sys/net/if_llatbl.h +++ b/sys/net/if_llatbl.h @@ -30,8 +30,6 @@ __FBSDID("$FreeBSD$"); #ifndef _NET_IF_LLATBL_H_ #define _NET_IF_LLATBL_H_ -#include "opt_ofed.h" - #include #include -- cgit v1.1 From 99ab2bf08eb4c6c6bab630a6a655ca024838e010 Mon Sep 17 00:00:00 2001 From: neel Date: Tue, 27 Aug 2013 16:49:20 +0000 Subject: Add support for emulating the byte move instruction "mov r/m8, r8". This emulation is required when dumping MMIO space via the ddb "examine" command. --- sys/amd64/vmm/vmm_instruction_emul.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/sys/amd64/vmm/vmm_instruction_emul.c b/sys/amd64/vmm/vmm_instruction_emul.c index f90443e..4af22d4 100644 --- a/sys/amd64/vmm/vmm_instruction_emul.c +++ b/sys/amd64/vmm/vmm_instruction_emul.c @@ -77,6 +77,10 @@ static const struct vie_op one_byte_opcodes[256] = { .op_byte = 0x89, .op_type = VIE_OP_TYPE_MOV, }, + [0x8A] = { + .op_byte = 0x8A, + .op_type = VIE_OP_TYPE_MOV, + }, [0x8B] = { .op_byte = 0x8B, .op_type = VIE_OP_TYPE_MOV, @@ -268,13 +272,18 @@ emulate_mov(void *vm, int vcpuid, uint64_t gpa, struct vie *vie, error = memwrite(vm, vcpuid, gpa, val, size, arg); } break; + case 0x8A: case 0x8B: /* * MOV from mem (ModRM:r/m) to reg (ModRM:reg) + * 8A/r: mov r/m8, r8 + * REX + 8A/r: mov r/m8, r8 * 8B/r: mov r32, r/m32 * REX.W 8B/r: mov r64, r/m64 */ - if (vie->rex_w) + if (vie->op.op_byte == 0x8A) + size = 1; + else if (vie->rex_w) size = 8; error = memread(vm, vcpuid, gpa, &val, size, arg); if (error == 0) { @@ -688,7 +697,6 @@ decode_modrm(struct vie *vie) vie->base_register = VM_REG_GUEST_RIP; else vie->base_register = VM_REG_LAST; - } break; } -- cgit v1.1 From 236964c12d6e45e32a2c5c66673acc605ed2e73e Mon Sep 17 00:00:00 2001 From: neel Date: Tue, 27 Aug 2013 16:50:48 +0000 Subject: Allow single byte reads of the emulated MSI-X tables. This is not required by the PCI specification but needed to dump MMIO space from "ddb" in the guest. --- usr.sbin/bhyve/pci_emul.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/usr.sbin/bhyve/pci_emul.c b/usr.sbin/bhyve/pci_emul.c index 005e8b1..626dfdf 100644 --- a/usr.sbin/bhyve/pci_emul.c +++ b/usr.sbin/bhyve/pci_emul.c @@ -245,8 +245,12 @@ pci_emul_msix_tread(struct pci_devinst *pi, uint64_t offset, int size) int tab_index; uint64_t retval = ~0; - /* support only 4 or 8 byte reads */ - if (size != 4 && size != 8) + /* + * The PCI standard only allows 4 and 8 byte accesses to the MSI-X + * table but we also allow 1 byte access to accomodate reads from + * ddb. + */ + if (size != 1 && size != 4 && size != 8) return (retval); msix_entry_offset = offset % MSIX_TABLE_ENTRY_SIZE; @@ -263,7 +267,9 @@ pci_emul_msix_tread(struct pci_devinst *pi, uint64_t offset, int size) dest = (char *)(pi->pi_msix.table + tab_index); dest += msix_entry_offset; - if (size == 4) + if (size == 1) + retval = *((uint8_t *)dest); + else if (size == 4) retval = *((uint32_t *)dest); else retval = *((uint64_t *)dest); -- cgit v1.1 From 451762afe771b1efde25841c58131b6782cb9520 Mon Sep 17 00:00:00 2001 From: rdivacky Date: Tue, 27 Aug 2013 18:35:04 +0000 Subject: Assemble linux32_locore.s and ia32_sigtramp.S with clang integrated assembler. Support for .code32 and .code64 in llvm was implemented more than 2 years ago. Tested by: Dan McGregor --- sys/conf/Makefile.amd64 | 2 -- sys/modules/linux/Makefile | 4 ---- 2 files changed, 6 deletions(-) diff --git a/sys/conf/Makefile.amd64 b/sys/conf/Makefile.amd64 index 7b1c164..97f4d3c 100644 --- a/sys/conf/Makefile.amd64 +++ b/sys/conf/Makefile.amd64 @@ -41,8 +41,6 @@ MKMODULESENV+= MACHINE=amd64 # XXX: clang integrated-as doesn't grok .codeNN directives yet ASM_CFLAGS.acpi_wakecode.S= ${CLANG_NO_IAS} -ASM_CFLAGS.ia32_sigtramp.S= ${CLANG_NO_IAS} -ASM_CFLAGS.linux32_locore.s= ${CLANG_NO_IAS} ASM_CFLAGS.mpboot.S= ${CLANG_NO_IAS} ASM_CFLAGS+= ${ASM_CFLAGS.${.IMPSRC:T}} diff --git a/sys/modules/linux/Makefile b/sys/modules/linux/Makefile index 9d8dcf9..7ed6e98 100644 --- a/sys/modules/linux/Makefile +++ b/sys/modules/linux/Makefile @@ -64,7 +64,3 @@ CFLAGS+= -DKTR .endif .include - -# XXX: clang integrated-as doesn't grok .codeNN directives yet -CFLAGS.linux32_locore.s= ${CLANG_NO_IAS} -CFLAGS+= ${CFLAGS.${.IMPSRC:T}} -- cgit v1.1 From f949b936bd5b1d5e6211bfe915da4e2f6796c659 Mon Sep 17 00:00:00 2001 From: cperciva Date: Tue, 27 Aug 2013 19:10:36 +0000 Subject: Remove duplicate dev.xbd.*.max_requests sysctl added in r252260. Approved by: gibbs --- sys/dev/xen/blkfront/blkfront.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sys/dev/xen/blkfront/blkfront.c b/sys/dev/xen/blkfront/blkfront.c index 9f1b082..969c3d8 100644 --- a/sys/dev/xen/blkfront/blkfront.c +++ b/sys/dev/xen/blkfront/blkfront.c @@ -878,10 +878,6 @@ xbd_setup_sysctl(struct xbd_softc *xbd) "maximum outstanding requests (negotiated)"); SYSCTL_ADD_UINT(sysctl_ctx, children, OID_AUTO, - "max_requests", CTLFLAG_RD, &xbd->xbd_max_requests, -1, - "maximum outstanding requests (negotiated)"); - - SYSCTL_ADD_UINT(sysctl_ctx, children, OID_AUTO, "max_request_segments", CTLFLAG_RD, &xbd->xbd_max_request_segments, 0, "maximum number of pages per requests (negotiated)"); -- cgit v1.1 From 71c97bf245a6c72a4b719e88a4fdaca4b91a8571 Mon Sep 17 00:00:00 2001 From: kargl Date: Tue, 27 Aug 2013 19:46:56 +0000 Subject: * s_erf.c: . Use integer literal constants instead of double literal constants. * s_erff.c: . Use integer literal constants instead of casting double literal constants to float. . Update the threshold values from those carried over from erf() to values appropriate for float. . New sets of polynomial coefficients for the rational approximations. These coefficients have little, but positive, effect on the maximum error in ULP in the four intervals, but do improve the overall speed of execution. . Remove redundant GET_FLOAT_WORD(ix,x) as hx already contained the contents that is packed into ix. . Update the mask that is used to zero-out lower-order bits in x in the intervals [1.25, 2.857143] and [2.857143, 12]. In tests on amd64, this change improves the maximum error in ULP from 6.27739 and 63.8095 to 3.16774 and 2.92095 on these intervals for erffc(). Reviewed by: bde --- lib/msun/src/s_erf.c | 2 +- lib/msun/src/s_erff.c | 168 +++++++++++++++++++++----------------------------- 2 files changed, 71 insertions(+), 99 deletions(-) diff --git a/lib/msun/src/s_erf.c b/lib/msun/src/s_erf.c index 0886e5e..a4e91a3 100644 --- a/lib/msun/src/s_erf.c +++ b/lib/msun/src/s_erf.c @@ -201,7 +201,7 @@ erf(double x) if(ix < 0x3feb0000) { /* |x|<0.84375 */ if(ix < 0x3e300000) { /* |x|<2**-28 */ if (ix < 0x00800000) - return 0.125*(8.0*x+efx8*x); /*avoid underflow */ + return (8*x+efx8*x)/8; /* avoid spurious underflow */ return x + efx*x; } z = x*x; diff --git a/lib/msun/src/s_erff.c b/lib/msun/src/s_erff.c index a44e135..b97ca1d 100644 --- a/lib/msun/src/s_erff.c +++ b/lib/msun/src/s_erff.c @@ -24,75 +24,59 @@ tiny = 1e-30, half= 5.0000000000e-01, /* 0x3F000000 */ one = 1.0000000000e+00, /* 0x3F800000 */ two = 2.0000000000e+00, /* 0x40000000 */ - /* c = (subfloat)0.84506291151 */ -erx = 8.4506291151e-01, /* 0x3f58560b */ /* - * Coefficients for approximation to erf on [0,0.84375] + * Coefficients for approximation to erf on [0,0.84375] */ efx = 1.2837916613e-01, /* 0x3e0375d4 */ efx8= 1.0270333290e+00, /* 0x3f8375d4 */ -pp0 = 1.2837916613e-01, /* 0x3e0375d4 */ -pp1 = -3.2504209876e-01, /* 0xbea66beb */ -pp2 = -2.8481749818e-02, /* 0xbce9528f */ -pp3 = -5.7702702470e-03, /* 0xbbbd1489 */ -pp4 = -2.3763017452e-05, /* 0xb7c756b1 */ -qq1 = 3.9791721106e-01, /* 0x3ecbbbce */ -qq2 = 6.5022252500e-02, /* 0x3d852a63 */ -qq3 = 5.0813062117e-03, /* 0x3ba68116 */ -qq4 = 1.3249473704e-04, /* 0x390aee49 */ -qq5 = -3.9602282413e-06, /* 0xb684e21a */ /* - * Coefficients for approximation to erf in [0.84375,1.25] + * Domain [0, 0.84375], range ~[-5.4446e-10,5.5197e-10]: + * |(erf(x) - x)/x - p(x)/q(x)| < 2**-31. */ -pa0 = -2.3621185683e-03, /* 0xbb1acdc6 */ -pa1 = 4.1485610604e-01, /* 0x3ed46805 */ -pa2 = -3.7220788002e-01, /* 0xbebe9208 */ -pa3 = 3.1834661961e-01, /* 0x3ea2fe54 */ -pa4 = -1.1089469492e-01, /* 0xbde31cc2 */ -pa5 = 3.5478305072e-02, /* 0x3d1151b3 */ -pa6 = -2.1663755178e-03, /* 0xbb0df9c0 */ -qa1 = 1.0642088205e-01, /* 0x3dd9f331 */ -qa2 = 5.4039794207e-01, /* 0x3f0a5785 */ -qa3 = 7.1828655899e-02, /* 0x3d931ae7 */ -qa4 = 1.2617121637e-01, /* 0x3e013307 */ -qa5 = 1.3637083583e-02, /* 0x3c5f6e13 */ -qa6 = 1.1984500103e-02, /* 0x3c445aa3 */ +pp0 = 1.28379166e-01F, /* 0x1.06eba8p-3 */ +pp1 = -3.36030394e-01F, /* -0x1.58185ap-2 */ +pp2 = -1.86260219e-03F, /* -0x1.e8451ep-10 */ +qq1 = 3.12324286e-01F, /* 0x1.3fd1f0p-2 */ +qq2 = 2.16070302e-02F, /* 0x1.620274p-6 */ +qq3 = -1.98859419e-03F, /* -0x1.04a626p-9 */ /* - * Coefficients for approximation to erfc in [1.25,1/0.35] + * Domain [0.84375, 1.25], range ~[-1.953e-11,1.940e-11]: + * |(erf(x) - erx) - p(x)/q(x)| < 2**-36. */ -ra0 = -9.8649440333e-03, /* 0xbc21a093 */ -ra1 = -6.9385856390e-01, /* 0xbf31a0b7 */ -ra2 = -1.0558626175e+01, /* 0xc128f022 */ -ra3 = -6.2375331879e+01, /* 0xc2798057 */ -ra4 = -1.6239666748e+02, /* 0xc322658c */ -ra5 = -1.8460508728e+02, /* 0xc3389ae7 */ -ra6 = -8.1287437439e+01, /* 0xc2a2932b */ -ra7 = -9.8143291473e+00, /* 0xc11d077e */ -sa1 = 1.9651271820e+01, /* 0x419d35ce */ -sa2 = 1.3765776062e+02, /* 0x4309a863 */ -sa3 = 4.3456588745e+02, /* 0x43d9486f */ -sa4 = 6.4538726807e+02, /* 0x442158c9 */ -sa5 = 4.2900814819e+02, /* 0x43d6810b */ -sa6 = 1.0863500214e+02, /* 0x42d9451f */ -sa7 = 6.5702495575e+00, /* 0x40d23f7c */ -sa8 = -6.0424413532e-02, /* 0xbd777f97 */ +erx = 8.42697144e-01F, /* 0x1.af7600p-1. erf(1) rounded to 16 bits. */ +pa0 = 3.64939137e-06F, /* 0x1.e9d022p-19 */ +pa1 = 4.15109694e-01F, /* 0x1.a91284p-2 */ +pa2 = -1.65179938e-01F, /* -0x1.5249dcp-3 */ +pa3 = 1.10914491e-01F, /* 0x1.c64e46p-4 */ +qa1 = 6.02074385e-01F, /* 0x1.344318p-1 */ +qa2 = 5.35934687e-01F, /* 0x1.126608p-1 */ +qa3 = 1.68576106e-01F, /* 0x1.593e6ep-3 */ +qa4 = 5.62181212e-02F, /* 0x1.cc89f2p-5 */ /* - * Coefficients for approximation to erfc in [1/.35,28] + * Domain [1.25,1/0.35], range ~[-7.043e-10,7.457e-10]: + * |log(x*erfc(x)) + x**2 + 0.5625 - r(x)/s(x)| < 2**-30 */ -rb0 = -9.8649431020e-03, /* 0xbc21a092 */ -rb1 = -7.9928326607e-01, /* 0xbf4c9dd4 */ -rb2 = -1.7757955551e+01, /* 0xc18e104b */ -rb3 = -1.6063638306e+02, /* 0xc320a2ea */ -rb4 = -6.3756646729e+02, /* 0xc41f6441 */ -rb5 = -1.0250950928e+03, /* 0xc480230b */ -rb6 = -4.8351919556e+02, /* 0xc3f1c275 */ -sb1 = 3.0338060379e+01, /* 0x41f2b459 */ -sb2 = 3.2579251099e+02, /* 0x43a2e571 */ -sb3 = 1.5367296143e+03, /* 0x44c01759 */ -sb4 = 3.1998581543e+03, /* 0x4547fdbb */ -sb5 = 2.5530502930e+03, /* 0x451f90ce */ -sb6 = 4.7452853394e+02, /* 0x43ed43a7 */ -sb7 = -2.2440952301e+01; /* 0xc1b38712 */ +ra0 = -9.87132732e-03F, /* -0x1.4376b2p-7 */ +ra1 = -5.53605914e-01F, /* -0x1.1b723cp-1 */ +ra2 = -2.17589188e+00F, /* -0x1.1683a0p+1 */ +ra3 = -1.43268085e+00F, /* -0x1.6ec42cp+0 */ +sa1 = 5.45995426e+00F, /* 0x1.5d6fe4p+2 */ +sa2 = 6.69798088e+00F, /* 0x1.acabb8p+2 */ +sa3 = 1.43113089e+00F, /* 0x1.6e5e98p+0 */ +sa4 = -5.77397496e-02F, /* -0x1.d90108p-5 */ +/* + * Domain [1/0.35, 11], range ~[-2.264e-13,2.336e-13]: + * |log(x*erfc(x)) + x**2 + 0.5625 - r(x)/s(x)| < 2**-42 + */ +rb0 = -9.86494310e-03F, /* -0x1.434124p-7 */ +rb1 = -6.25171244e-01F, /* -0x1.401672p-1 */ +rb2 = -6.16498327e+00F, /* -0x1.8a8f16p+2 */ +rb3 = -1.66696873e+01F, /* -0x1.0ab70ap+4 */ +rb4 = -9.53764343e+00F, /* -0x1.313460p+3 */ +sb1 = 1.26884899e+01F, /* 0x1.96081cp+3 */ +sb2 = 4.51839523e+01F, /* 0x1.6978bcp+5 */ +sb3 = 4.72810211e+01F, /* 0x1.7a3f88p+5 */ +sb4 = 8.93033314e+00F; /* 0x1.1dc54ap+3 */ float erff(float x) @@ -107,43 +91,37 @@ erff(float x) } if(ix < 0x3f580000) { /* |x|<0.84375 */ - if(ix < 0x31800000) { /* |x|<2**-28 */ - if (ix < 0x04000000) - /*avoid underflow */ - return (float)0.125*((float)8.0*x+efx8*x); + if(ix < 0x38800000) { /* |x|<2**-14 */ + if (ix < 0x04000000) /* |x|<0x1p-119 */ + return (8*x+efx8*x)/8; /* avoid spurious underflow */ return x + efx*x; } z = x*x; - r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); - s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); + r = pp0+z*(pp1+z*pp2); + s = one+z*(qq1+z*(qq2+z*qq3)); y = r/s; return x + x*y; } if(ix < 0x3fa00000) { /* 0.84375 <= |x| < 1.25 */ s = fabsf(x)-one; - P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6))))); - Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6))))); + P = pa0+s*(pa1+s*(pa2+s*pa3)); + Q = one+s*(qa1+s*(qa2+s*(qa3+s*qa4))); if(hx>=0) return erx + P/Q; else return -erx - P/Q; } - if (ix >= 0x40c00000) { /* inf>|x|>=6 */ + if (ix >= 0x40800000) { /* inf>|x|>=4 */ if(hx>=0) return one-tiny; else return tiny-one; } x = fabsf(x); s = one/(x*x); if(ix< 0x4036DB6E) { /* |x| < 1/0.35 */ - R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*( - ra5+s*(ra6+s*ra7)))))); - S=one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*( - sa5+s*(sa6+s*(sa7+s*sa8))))))); + R=ra0+s*(ra1+s*(ra2+s*ra3)); + S=one+s*(sa1+s*(sa2+s*(sa3+s*sa4))); } else { /* |x| >= 1/0.35 */ - R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*( - rb5+s*rb6))))); - S=one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*( - sb5+s*(sb6+s*sb7)))))); + R=rb0+s*(rb1+s*(rb2+s*(rb3+s*rb4))); + S=one+s*(sb1+s*(sb2+s*(sb3+s*sb4))); } - GET_FLOAT_WORD(ix,x); - SET_FLOAT_WORD(z,ix&0xfffff000); - r = __ieee754_expf(-z*z-(float)0.5625)*__ieee754_expf((z-x)*(z+x)+R/S); + SET_FLOAT_WORD(z,hx&0xffffe000); + r = expf(-z*z-0.5625F)*expf((z-x)*(z+x)+R/S); if(hx>=0) return one-r/x; else return r/x-one; } @@ -160,11 +138,11 @@ erfcf(float x) } if(ix < 0x3f580000) { /* |x|<0.84375 */ - if(ix < 0x23800000) /* |x|<2**-56 */ + if(ix < 0x33800000) /* |x|<2**-24 */ return one-x; z = x*x; - r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4))); - s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5)))); + r = pp0+z*(pp1+z*pp2); + s = one+z*(qq1+z*(qq2+z*qq3)); y = r/s; if(hx < 0x3e800000) { /* x<1/4 */ return one-(x+x*y); @@ -176,33 +154,27 @@ erfcf(float x) } if(ix < 0x3fa00000) { /* 0.84375 <= |x| < 1.25 */ s = fabsf(x)-one; - P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6))))); - Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6))))); + P = pa0+s*(pa1+s*(pa2+s*pa3)); + Q = one+s*(qa1+s*(qa2+s*(qa3+s*qa4))); if(hx>=0) { z = one-erx; return z - P/Q; } else { z = erx+P/Q; return one+z; } } - if (ix < 0x41e00000) { /* |x|<28 */ + if (ix < 0x41300000) { /* |x|<11 */ x = fabsf(x); s = one/(x*x); if(ix< 0x4036DB6D) { /* |x| < 1/.35 ~ 2.857143*/ - R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*( - ra5+s*(ra6+s*ra7)))))); - S=one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*( - sa5+s*(sa6+s*(sa7+s*sa8))))))); + R=ra0+s*(ra1+s*(ra2+s*ra3)); + S=one+s*(sa1+s*(sa2+s*(sa3+s*sa4))); } else { /* |x| >= 1/.35 ~ 2.857143 */ - if(hx<0&&ix>=0x40c00000) return two-tiny;/* x < -6 */ - R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*( - rb5+s*rb6))))); - S=one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*( - sb5+s*(sb6+s*sb7)))))); + if(hx<0&&ix>=0x40a00000) return two-tiny;/* x < -5 */ + R=rb0+s*(rb1+s*(rb2+s*(rb3+s*rb4))); + S=one+s*(sb1+s*(sb2+s*(sb3+s*sb4))); } - GET_FLOAT_WORD(ix,x); - SET_FLOAT_WORD(z,ix&0xfffff000); - r = __ieee754_expf(-z*z-(float)0.5625)* - __ieee754_expf((z-x)*(z+x)+R/S); + SET_FLOAT_WORD(z,hx&0xffffe000); + r = expf(-z*z-0.5625F)*expf((z-x)*(z+x)+R/S); if(hx>0) return r/x; else return two-r/x; } else { if(hx>0) return tiny*tiny; else return two-tiny; -- cgit v1.1 From 6c5aea24dd45d3738833a1a7eea28c964eb00d66 Mon Sep 17 00:00:00 2001 From: ken Date: Tue, 27 Aug 2013 19:47:03 +0000 Subject: If a drive returns ASC/ASCQ 0x04,0x11 "Logical unit not ready, notify (enable spinup) required", instead of doing the normal retries, poll for a change in status. We will poll every half second for a minute for the status to change. Hitachi drives (and likely other SAS drives) return that ASC/ASCQ when they are waiting to spin up. What it means is that they are waiting for the SAS expander to send them the SAS NOTIFY (ENABLE SPINUP) primitive. That primitive is the mechanism expanders/enclosures use to sequence drive spinup to avoid overloading power supplies. Sponsored by: Spectra Logic MFC after: 3 days --- sys/cam/scsi/scsi_all.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/cam/scsi/scsi_all.c b/sys/cam/scsi/scsi_all.c index 324dc9a..6530266 100644 --- a/sys/cam/scsi/scsi_all.c +++ b/sys/cam/scsi/scsi_all.c @@ -1118,7 +1118,7 @@ static struct asc_table_entry asc_table[] = { { SST(0x04, 0x10, SS_RDEF, /* XXX TBD */ "Logical unit not ready, auxiliary memory not accessible") }, /* DT WRO AEB VF */ - { SST(0x04, 0x11, SS_RDEF, /* XXX TBD */ + { SST(0x04, 0x11, SS_TUR | SSQ_MANY | SSQ_DECREMENT_COUNT | EBUSY, "Logical unit not ready, notify (enable spinup) required") }, /* M V */ { SST(0x04, 0x12, SS_RDEF, /* XXX TBD */ -- cgit v1.1 From 73f239a63e71d117bcfaca20d9b5bf28b434d9fd Mon Sep 17 00:00:00 2001 From: andre Date: Tue, 27 Aug 2013 20:52:02 +0000 Subject: Pad m_hdr on 32bit architectures to to prevent alignment and padding problems with the way MLEN, MHLEN, and struct mbuf are set up. CTASSERT's are provided to detect such issues at compile time in the future. The #define MLEN and MHLEN calculation do not take actual compiler- induced alignment and padding inside the complete struct mbuf into account. Accordingly appropriate attention is required when changing members of struct mbuf. Ideally one would calculate MLEN as (MSIZE - sizeof(((struct mbuf *)0)->m_hdr) but that doesn't work as the compiler refuses to operate on an as of yet incomplete structure. In particular ARM 32bit has more strict alignment requirements which caused 4 bytes of padding between m_hdr and pkthdr in struct mbuf because of the 64bit members in pkthdr. This wasn't picked up by MLEN and MHLEN causing an overflow of the mbuf provided data storage by overestimating its size. I386 didn't show this problem because it handles unaligned access just fine, albeit at a small performance penalty. On 64bit architectures the struct mbuf layout is 64bit aligned in all places. Reported by: Thomas Skibo Tested by: tuexen, ian, Thomas Skibo (extended patch) Sponsored by: The FreeBSD Foundation --- sys/kern/uipc_mbuf.c | 8 ++++++++ sys/sys/mbuf.h | 9 ++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/sys/kern/uipc_mbuf.c b/sys/kern/uipc_mbuf.c index 98ec889..8e278a4 100644 --- a/sys/kern/uipc_mbuf.c +++ b/sys/kern/uipc_mbuf.c @@ -85,6 +85,14 @@ SYSCTL_INT(_kern_ipc, OID_AUTO, m_defragrandomfailures, CTLFLAG_RW, #endif /* + * Ensure the correct size of various mbuf parameters. It could be off due + * to compiler-induced padding and alignment artifacts. + */ +CTASSERT(sizeof(struct mbuf) == MSIZE); +CTASSERT(MSIZE - offsetof(struct mbuf, m_dat) == MLEN); +CTASSERT(MSIZE - offsetof(struct mbuf, m_pktdat) == MHLEN); + +/* * m_get2() allocates minimum mbuf that would fit "size" argument. */ struct mbuf * diff --git a/sys/sys/mbuf.h b/sys/sys/mbuf.h index ce19715..7e8f427 100644 --- a/sys/sys/mbuf.h +++ b/sys/sys/mbuf.h @@ -53,6 +53,10 @@ * externally and attach it to the mbuf in a way similar to that of mbuf * clusters. * + * NB: These calculation do not take actual compiler-induced alignment and + * padding inside the complete struct mbuf into account. Appropriate + * attention is required when changing members of struct mbuf. + * * MLEN is data length in a normal mbuf. * MHLEN is data length in an mbuf with pktheader. * MINCLSIZE is a smallest amount of data that should be put into cluster. @@ -84,7 +88,7 @@ struct mb_args { /* * Header present at the beginning of every mbuf. - * Size ILP32: 20 + * Size ILP32: 24 * LP64: 32 */ struct m_hdr { @@ -94,6 +98,9 @@ struct m_hdr { int32_t mh_len; /* amount of data in this mbuf */ uint32_t mh_type:8, /* type of data in this mbuf */ mh_flags:24; /* flags; see below */ +#if !defined(__LP64__) + uint32_t mh_pad; /* pad for 64bit alignment */ +#endif }; /* -- cgit v1.1 From 2194a6603d76d977fda661e9938aebfe18cf3375 Mon Sep 17 00:00:00 2001 From: jlh Date: Tue, 27 Aug 2013 21:20:28 +0000 Subject: Make the period of each periodic security script configurable. There are now six additional variables weekly_status_security_enable weekly_status_security_inline weekly_status_security_output monthly_status_security_enable monthly_status_security_inline monthly_status_security_output alongside their existing daily counterparts. They all have the same default values. All other "daily_status_security_${scriptname}_${whatever}" variables have been renamed to "security_status_${name}_${whatever}". A compatibility shim has been introduced for the old variable names, which we will be able to remove in 11.0-RELEASE. "security_status_${name}_enable" is still a boolean but a new "security_status_${name}_period" allows to define the period of each script. The value is one of "daily" (the default for backward compatibility), "weekly", "monthly" and "NO". Note that when the security periodic scripts are run directly from crontab(5) (as opposed to being called by daily or weekly periodic scripts), they will run unless the test is explicitely disabled with a "NO", either for in the "_enable" or the "_period" variable. When the security output is not inlined, the mail subject has been changed from "$host $arg run output" to "$host $arg $period run output". For instance: myfbsd security run output -> myfbsd security daily run output I don't think this is considered as a stable API, but feel free to correct me if I'm wrong. Finally, I will rearrange periodic.conf(5) and default/periodic.conf to put the security options in their own section. I left them in place for this commit to make reviewing easier. Reviewed by: hackers@ --- etc/defaults/periodic.conf | 147 +++++++++++++++++++++----- etc/periodic/monthly/450.status-security | 41 ++++++++ etc/periodic/security/100.chksetuid | 12 +-- etc/periodic/security/110.neggrpperm | 9 +- etc/periodic/security/200.chkmounts | 17 +-- etc/periodic/security/300.chkuid0 | 13 ++- etc/periodic/security/400.passwdless | 13 ++- etc/periodic/security/410.logincheck | 13 ++- etc/periodic/security/460.chkportsum | 12 +-- etc/periodic/security/500.ipfwdenied | 11 +- etc/periodic/security/510.ipfdenied | 11 +- etc/periodic/security/520.pfdenied | 11 +- etc/periodic/security/550.ipfwlimit | 11 +- etc/periodic/security/610.ipf6denied | 11 +- etc/periodic/security/700.kernelmsg | 11 +- etc/periodic/security/800.loginfail | 16 +-- etc/periodic/security/900.tcpwrap | 16 +-- etc/periodic/security/security.functions | 12 ++- etc/periodic/weekly/450.status-security | 41 ++++++++ etc/periodic/weekly/Makefile | 1 + share/man/man5/periodic.conf.5 | 172 +++++++++++++++++++++++++++---- 21 files changed, 476 insertions(+), 125 deletions(-) create mode 100755 etc/periodic/monthly/450.status-security create mode 100755 etc/periodic/weekly/450.status-security diff --git a/etc/defaults/periodic.conf b/etc/defaults/periodic.conf index 4dc2478..5dd7fa9 100644 --- a/etc/defaults/periodic.conf +++ b/etc/defaults/periodic.conf @@ -128,7 +128,9 @@ daily_status_include_submit_mailq="YES" # Also submit queue # 450.status-security daily_status_security_enable="YES" # Security check -# See "Security options" below for more options +# See also "Security options" below for more options +daily_status_security_inline="NO" # Run inline ? +daily_status_security_output="root" # user or /file # 460.status-mail-rejects daily_status_mail_rejects_enable="YES" # Check mail rejects @@ -163,59 +165,78 @@ daily_local="/etc/daily.local" # Local scripts # Security options # These options are used by the security periodic(8) scripts spawned in -# 450.status-security above. -daily_status_security_inline="NO" # Run inline ? -daily_status_security_output="root" # user or /file -daily_status_security_logdir="/var/log" # Directory for logs -daily_status_security_diff_flags="-b -u" # flags for diff output +# daily and weekly 450.status-security. +security_status_logdir="/var/log" # Directory for logs +security_status_diff_flags="-b -u" # flags for diff output + +# Each of the security_status_*_enable options below can have one of the +# following values: +# - NO +# - daily: only run during the daily security status +# - weekly: only run during the weekly security status # 100.chksetuid -daily_status_security_chksetuid_enable="YES" +security_status_chksetuid_enable="YES" +security_status_chksetuid_period="daily" # 110.neggrpperm -daily_status_security_neggrpperm_enable="YES" +security_status_neggrpperm_enable="YES" +security_status_neggrpperm_period="daily" # 200.chkmounts -daily_status_security_chkmounts_enable="YES" -#daily_status_security_chkmounts_ignore="^amd:" # Don't check matching +security_status_chkmounts_enable="YES" +security_status_chkmounts_period="daily" +#security_status_chkmounts_ignore="^amd:" # Don't check matching # FS types -daily_status_security_noamd="NO" # Don't check amd mounts +security_status_noamd="NO" # Don't check amd mounts # 300.chkuid0 -daily_status_security_chkuid0_enable="YES" +security_status_chkuid0_enable="YES" +security_status_chkuid0_period="daily" # 400.passwdless -daily_status_security_passwdless_enable="YES" +security_status_passwdless_enable="YES" +security_status_passwdless_period="daily" # 410.logincheck -daily_status_security_logincheck_enable="YES" +security_status_logincheck_enable="YES" +security_status_logincheck_period="daily" # 460.chkportsum -daily_status_security_chkportsum_enable="NO" # Check ports w/ wrong checksum +security_status_chkportsum_enable="NO" # Check ports w/ wrong checksum +security_status_chkportsum_period="daily" # 500.ipfwdenied -daily_status_security_ipfwdenied_enable="YES" +security_status_ipfwdenied_enable="YES" +security_status_ipfwdenied_period="daily" # 510.ipfdenied -daily_status_security_ipfdenied_enable="YES" +security_status_ipfdenied_enable="YES" +security_status_ipfdenied_period="daily" # 520.pfdenied -daily_status_security_pfdenied_enable="YES" +security_status_pfdenied_enable="YES" +security_status_pfdenied_period="daily" # 550.ipfwlimit -daily_status_security_ipfwlimit_enable="YES" +security_status_ipfwlimit_enable="YES" +security_status_ipfwlimit_period="daily" # 610.ipf6denied -daily_status_security_ipf6denied_enable="YES" +security_status_ipf6denied_enable="YES" +security_status_ipf6denied_period="daily" # 700.kernelmsg -daily_status_security_kernelmsg_enable="YES" +security_status_kernelmsg_enable="YES" +security_status_kernelmsg_period="daily" # 800.loginfail -daily_status_security_loginfail_enable="YES" +security_status_loginfail_enable="YES" +security_status_loginfail_period="daily" # 900.tcpwrap -daily_status_security_tcpwrap_enable="YES" +security_status_tcpwrap_enable="YES" +security_status_tcpwrap_period="daily" # Weekly options @@ -248,6 +269,12 @@ weekly_status_pkg_enable="NO" # Find out-of-date pkgs pkg_version=pkg_version # Use this program pkg_version_index=/usr/ports/INDEX-10 # Use this index file +# 450.status-security +weekly_status_security_enable="YES" # Security check +# See also "Security options" above for more options +weekly_status_security_inline="NO" # Run inline ? +weekly_status_security_output="root" # user or /file + # 999.local weekly_local="/etc/weekly.local" # Local scripts @@ -267,6 +294,12 @@ monthly_show_badconfig="NO" # scripts returning 2 # 200.accounting monthly_accounting_enable="YES" # Login accounting +# 450.status-security +monthly_status_security_enable="YES" # Security check +# See also "Security options" above for more options +monthly_status_security_inline="NO" # Run inline ? +monthly_status_security_output="root" # user or /file + # 999.local monthly_local="/etc/monthly.local" # Local scripts @@ -276,6 +309,74 @@ monthly_local="/etc/monthly.local" # Local scripts if [ -z "${source_periodic_confs_defined}" ]; then source_periodic_confs_defined=yes + + # Compatibility with old daily variable names. + # They can be removed in stable/11. + security_daily_compat_var() { + local var=$1 dailyvar value + + dailyvar=daily_status_security${#status_security} + periodvar=${var%enable}period + eval value=\"\$$dailyvar\" + [ -z "$value" ] && return + echo "Warning: Variable \$$dailyvar is deprecated," \ + "use \$$var instead." >&2 + case "$value" in + [Yy][Ee][Ss]) + $var=YES + $periodvar=daily + ;; + *) + $var="$value" + ;; + esac + } + + check_yesno_period() { + local var="$1" periodvar value period + + eval value=\"\$$var\" + case "$value" in + [Yy][Ee][Ss]) ;; + *) return 1 ;; + esac + + periodvar=${var%enable}period + eval period=\"\$$periodvar\" + case "$PERIODIC" in + "security daily") + case "$period" in + [Dd][Aa][Ii][Ll][Yy]) return 0 ;; + *) return 1 ;; + esac + ;; + "security weekly") + case "$period" in + [Ww][Ee][Ee][Kk][Ll][Yy]) return 0 ;; + *) return 1 ;; + esac + ;; + "security monthly") + case "$period" in + [Mm][Oo][Nn][Tt][Hh][Ll][Yy]) return 0 ;; + *) return 1 ;; + esac + ;; + security) + # Run directly from crontab(5). + case "$period" in + [Nn][Oo]) return 1 ;; + *) return 0 ;; + esac + ;; + *) + echo "ASSERTION FAILED: Unexpected value for " \ + "\$PERIODIC: '$PERIODIC'" >&2 + exit 127 + ;; + esac + } + source_periodic_confs() { local i sourced_files diff --git a/etc/periodic/monthly/450.status-security b/etc/periodic/monthly/450.status-security new file mode 100755 index 0000000..027c896 --- /dev/null +++ b/etc/periodic/monthly/450.status-security @@ -0,0 +1,41 @@ +#!/bin/sh +# +# $FreeBSD$ +# + +# If there is a global system configuration file, suck it in. +# +if [ -r /etc/defaults/periodic.conf ] +then + . /etc/defaults/periodic.conf + source_periodic_confs +fi + +case "$monthly_status_security_enable" in + [Yy][Ee][Ss]) + echo "" + echo "Security check:" + + case "$monthly_status_security_inline" in + [Yy][Ee][Ss]) + monthly_status_security_output="";; + esac + + export security_output="${monthly_status_security_output}" + case "${monthly_status_security_output}" in + "") + rc=3;; + /*) + echo " (output logged separately)" + rc=0;; + *) + echo " (output mailed separately)" + rc=0;; + esac + + periodic security || rc=3;; + + *) rc=0;; +esac + +exit $rc diff --git a/etc/periodic/security/100.chksetuid b/etc/periodic/security/100.chksetuid index 5b93b20..95920a6 100755 --- a/etc/periodic/security/100.chksetuid +++ b/etc/periodic/security/100.chksetuid @@ -37,10 +37,12 @@ fi . /etc/periodic/security/security.functions +security_daily_compat_var security_status_chksetuid_enable + rc=0 -case "$daily_status_security_chksetuid_enable" in - [Yy][Ee][Ss]) +if check_yesno_period security_status_chksetuid_enable +then echo "" echo 'Checking setuid files and devices:' MP=`mount -t ufs,zfs | awk '$0 !~ /no(suid|exec)/ { print $3 }'` @@ -49,10 +51,6 @@ case "$daily_status_security_chksetuid_enable" in \( -perm -u+s -or -perm -g+s \) -exec ls -liTd \{\} \+ | check_diff setuid - "${host} setuid diffs:" rc=$? - ;; - *) - rc=0 - ;; -esac +fi exit $rc diff --git a/etc/periodic/security/110.neggrpperm b/etc/periodic/security/110.neggrpperm index 68d1e7b..1d545ac 100755 --- a/etc/periodic/security/110.neggrpperm +++ b/etc/periodic/security/110.neggrpperm @@ -35,10 +35,12 @@ then source_periodic_confs fi +security_daily_compat_var security_status_neggrpperm_enable + rc=0 -case "$daily_status_security_neggrpperm_enable" in - [Yy][Ee][Ss]) +if check_yesno_period security_status_neggrpperm_enable +then echo "" echo 'Checking negative group permissions:' MP=`mount -t ufs,zfs | awk '$0 !~ /no(suid|exec)/ { print $3 }'` @@ -48,7 +50,6 @@ case "$daily_status_security_neggrpperm_enable" in \( ! -perm +040 -and -perm +004 \) \) \ -exec ls -liTd \{\} \+ | tee /dev/stderr | wc -l) [ $n -gt 0 ] && rc=1 || rc=0 - ;; -esac +fi exit $rc diff --git a/etc/periodic/security/200.chkmounts b/etc/periodic/security/200.chkmounts index 17b114e..7b14866 100755 --- a/etc/periodic/security/200.chkmounts +++ b/etc/periodic/security/200.chkmounts @@ -40,12 +40,16 @@ fi . /etc/periodic/security/security.functions -ignore="${daily_status_security_chkmounts_ignore}" +security_daily_compat_var security_status_chkmounts_enable +security_daily_compat_var security_status_chkmounts_ignore +security_daily_compat_var security_status_noamd + +ignore="${security_status_chkmounts_ignore}" rc=0 -case "$daily_status_security_chkmounts_enable" in - [Yy][Ee][Ss]) - case "$daily_status_security_noamd" in +if check_yesno_period security_status_chkmounts_enable +then + case "$security_status_noamd" in [Yy][Ee][Ss]) ignore="${ignore}|^amd:" esac @@ -55,8 +59,7 @@ case "$daily_status_security_chkmounts_enable" in fi mount -p | sort | ${cmd} | check_diff mount - "${host} changes in mounted filesystems:" - rc=$?;; - *) rc=0;; -esac + rc=$? +fi exit "$rc" diff --git a/etc/periodic/security/300.chkuid0 b/etc/periodic/security/300.chkuid0 index 32cc16c..73578e2 100755 --- a/etc/periodic/security/300.chkuid0 +++ b/etc/periodic/security/300.chkuid0 @@ -36,16 +36,19 @@ then source_periodic_confs fi -case "$daily_status_security_chkuid0_enable" in - [Yy][Ee][Ss]) +security_daily_compat_var security_status_chkuid0_enable + +rc=0 + +if check_yesno_period security_status_chkuid0_enable +then echo "" echo 'Checking for uids of 0:' n=$(awk -F: '/^#/ {next} $3==0 {print $1,$3}' /etc/master.passwd | tee /dev/stderr | sed -e '/^root 0$/d' -e '/^toor 0$/d' | wc -l) - [ $n -gt 0 ] && rc=1 || rc=0;; - *) rc=0;; -esac + [ $n -gt 0 ] && rc=1 || rc=0 +fi exit "$rc" diff --git a/etc/periodic/security/400.passwdless b/etc/periodic/security/400.passwdless index 42ece04..5e851ac 100755 --- a/etc/periodic/security/400.passwdless +++ b/etc/periodic/security/400.passwdless @@ -35,14 +35,17 @@ then source_periodic_confs fi -case "$daily_status_security_passwdless_enable" in - [Yy][Ee][Ss]) +security_daily_compat_var security_status_passwdless_enable + +rc=0 + +if check_yesno_period security_status_passwdless_enable +then echo "" echo 'Checking for passwordless accounts:' n=$(awk -F: 'NF > 1 && $1 !~ /^[#+-]/ && $2=="" {print $0}' /etc/master.passwd | tee /dev/stderr | wc -l) - [ $n -gt 0 ] && rc=1 || rc=0;; - *) rc=0;; -esac + [ $n -gt 0 ] && rc=1 || rc=0 +fi exit "$rc" diff --git a/etc/periodic/security/410.logincheck b/etc/periodic/security/410.logincheck index f6cf405..41e7f65 100755 --- a/etc/periodic/security/410.logincheck +++ b/etc/periodic/security/410.logincheck @@ -35,8 +35,12 @@ then source_periodic_confs fi -case "$daily_status_security_logincheck_enable" in - [Yy][Ee][Ss]) +security_daily_compat_var security_status_logincheck_enable + +rc=0 + +if check_yesno_period security_status_logincheck_enable +then echo "" echo 'Checking login.conf permissions:' if [ -G /etc/login.conf -a -O /etc/login.conf ]; then @@ -45,8 +49,7 @@ case "$daily_status_security_logincheck_enable" in echo "Bad ownership of /etc/login.conf" n=1 fi - [ $n -gt 0 ] && rc=1 || rc=0;; - *) rc=0;; -esac + [ $n -gt 0 ] && rc=1 || rc=0 +fi exit "$rc" diff --git a/etc/periodic/security/460.chkportsum b/etc/periodic/security/460.chkportsum index 3a39c84..18a12ec 100755 --- a/etc/periodic/security/460.chkportsum +++ b/etc/periodic/security/460.chkportsum @@ -35,13 +35,15 @@ fi . /etc/periodic/security/security.functions +security_daily_compat_var security_status_chkportsum_enable + rc=0 echo "" echo 'Checking for ports with mismatched checksums:' -case "${daily_status_security_chkportsum_enable}" in - [Yy][Ee][Ss]) +if check_yesno_period security_status_chkportsum_enable +then set -f pkg_info -ga 2>/dev/null | \ while IFS= read -r line; do @@ -59,10 +61,6 @@ case "${daily_status_security_chkportsum_enable}" in ;; esac done - ;; - *) - rc=0 - ;; -esac +fi exit $rc diff --git a/etc/periodic/security/500.ipfwdenied b/etc/periodic/security/500.ipfwdenied index 6a6fb8b4..f39ca0e 100755 --- a/etc/periodic/security/500.ipfwdenied +++ b/etc/periodic/security/500.ipfwdenied @@ -37,17 +37,18 @@ fi . /etc/periodic/security/security.functions +security_daily_compat_var security_status_ipfwdenied_enable + rc=0 -case "$daily_status_security_ipfwdenied_enable" in - [Yy][Ee][Ss]) +if check_yesno_period security_status_ipfwdenied_enable +then TMP=`mktemp -t security` if ipfw -a list 2>/dev/null | egrep "deny|reset|unreach" > ${TMP}; then check_diff new_only ipfw ${TMP} "${host} ipfw denied packets:" fi rc=$? - rm -f ${TMP};; - *) rc=0;; -esac + rm -f ${TMP} +fi exit $rc diff --git a/etc/periodic/security/510.ipfdenied b/etc/periodic/security/510.ipfdenied index 2058d2b..bed75e6 100755 --- a/etc/periodic/security/510.ipfdenied +++ b/etc/periodic/security/510.ipfdenied @@ -37,17 +37,18 @@ fi . /etc/periodic/security/security.functions +security_daily_compat_var security_status_ipfdenied_enable + rc=0 -case "$daily_status_security_ipfdenied_enable" in - [Yy][Ee][Ss]) +if check_yesno_period security_status_ipfdenied_enable +then TMP=`mktemp -t security` if ipfstat -nhio 2>/dev/null | grep block > ${TMP}; then check_diff new_only ipf ${TMP} "${host} ipf denied packets:" fi rc=$? - rm -f ${TMP};; - *) rc=0;; -esac + rm -f ${TMP} +fi exit $rc diff --git a/etc/periodic/security/520.pfdenied b/etc/periodic/security/520.pfdenied index 5e51393..7a32bf2 100755 --- a/etc/periodic/security/520.pfdenied +++ b/etc/periodic/security/520.pfdenied @@ -37,17 +37,18 @@ fi . /etc/periodic/security/security.functions +security_daily_compat_var security_status_pfdenied_enable + rc=0 -case "$daily_status_security_pfdenied_enable" in - [Yy][Ee][Ss]) +if check_yesno_period security_status_pfdenied_enable +then TMP=`mktemp -t security` if pfctl -sr -v 2>/dev/null | nawk '{if (/^block/) {buf=$0; getline; gsub(" +"," ",$0); print buf$0;} }' > ${TMP}; then check_diff new_only pf ${TMP} "${host} pf denied packets:" fi rc=$? - rm -f ${TMP};; - *) rc=0;; -esac + rm -f ${TMP} +fi exit $rc diff --git a/etc/periodic/security/550.ipfwlimit b/etc/periodic/security/550.ipfwlimit index daa0f86..86932c6 100755 --- a/etc/periodic/security/550.ipfwlimit +++ b/etc/periodic/security/550.ipfwlimit @@ -38,10 +38,12 @@ then source_periodic_confs fi +security_daily_compat_var security_status_ipfwlimit_enable + rc=0 -case "$daily_status_security_ipfwlimit_enable" in - [Yy][Ee][Ss]) +if check_yesno_period security_status_ipfwlimit_enable +then IPFW_VERBOSE=`sysctl -n net.inet.ip.fw.verbose 2> /dev/null` if [ $? -ne 0 ] || [ "$IPFW_VERBOSE" -eq 0 ]; then exit 0 @@ -61,8 +63,7 @@ case "$daily_status_security_ipfwlimit_enable" in echo 'ipfw log limit reached:' cat ${TMP} fi - rm -f ${TMP};; - *) rc=0;; -esac + rm -f ${TMP} +fi exit $rc diff --git a/etc/periodic/security/610.ipf6denied b/etc/periodic/security/610.ipf6denied index 6c64d92..7e02cfc 100755 --- a/etc/periodic/security/610.ipf6denied +++ b/etc/periodic/security/610.ipf6denied @@ -37,17 +37,18 @@ fi . /etc/periodic/security/security.functions +security_daily_compat_var security_status_ipf6denied_enable + rc=0 -case "$daily_status_security_ipf6denied_enable" in - [Yy][Ee][Ss]) +if check_yesno_period security_status_ipf6denied_enable +then TMP=`mktemp ${TMPDIR:-/tmp}/security.XXXXXXXXXX` if ipfstat -nhio6 2>/dev/null | grep block > ${TMP}; then check_diff new_only ipf6 ${TMP} "${host} ipf6 denied packets:" fi rc=$? - rm -f ${TMP};; - *) rc=0;; -esac + rm -f ${TMP} +fi exit $rc diff --git a/etc/periodic/security/700.kernelmsg b/etc/periodic/security/700.kernelmsg index fb5ed63..8bf6491 100755 --- a/etc/periodic/security/700.kernelmsg +++ b/etc/periodic/security/700.kernelmsg @@ -40,14 +40,15 @@ fi . /etc/periodic/security/security.functions +security_daily_compat_var security_status_kernelmsg_enable + rc=0 -case "$daily_status_security_kernelmsg_enable" in - [Yy][Ee][Ss]) +if check_yesno_period security_status_kernelmsg_enable +then dmesg 2>/dev/null | check_diff new_only dmesg - "${host} kernel log messages:" - rc=$?;; - *) rc=0;; -esac + rc=$? +fi exit $rc diff --git a/etc/periodic/security/800.loginfail b/etc/periodic/security/800.loginfail index 767b959..a0de96d 100755 --- a/etc/periodic/security/800.loginfail +++ b/etc/periodic/security/800.loginfail @@ -38,7 +38,10 @@ then source_periodic_confs fi -LOG="${daily_status_security_logdir}" +security_daily_compat_var security_status_logdir +security_daily_compat_var security_status_loginfail_enable + +LOG="${security_status_logdir}" yesterday=`date -v-1d "+%b %e "` @@ -55,14 +58,15 @@ catmsgs() { [ -f ${LOG}/auth.log ] && cat $LOG/auth.log } -case "$daily_status_security_loginfail_enable" in - [Yy][Ee][Ss]) +rc=0 + +if check_yesno_period security_status_loginfail_enable +then echo "" echo "${host} login failures:" n=$(catmsgs | egrep -ia "^$yesterday.*: .*(fail|invalid|bad|illegal)" | tee /dev/stderr | wc -l) - [ $n -gt 0 ] && rc=1 || rc=0;; - *) rc=0;; -esac + [ $n -gt 0 ] && rc=1 || rc=0 +fi exit $rc diff --git a/etc/periodic/security/900.tcpwrap b/etc/periodic/security/900.tcpwrap index 55f7709..10b02e9 100755 --- a/etc/periodic/security/900.tcpwrap +++ b/etc/periodic/security/900.tcpwrap @@ -38,7 +38,10 @@ then source_periodic_confs fi -LOG="${daily_status_security_logdir}" +security_daily_compat_var security_status_logdir +security_daily_compat_var security_status_tcpwrap_enable + +LOG="${security_status_logdir}" yesterday=`date -v-1d "+%b %e "` @@ -55,14 +58,15 @@ catmsgs() { [ -f ${LOG}/messages ] && cat $LOG/messages } -case "$daily_status_security_tcpwrap_enable" in - [Yy][Ee][Ss]) +rc=0 + +if check_yesno_period security_status_tcpwrap_enable +then echo "" echo "${host} refused connections:" n=$(catmsgs | grep -i "^$yesterday.*refused connect" | tee /dev/stderr | wc -l) - [ $n -gt 0 ] && rc=1 || rc=0;; - *) rc=0;; -esac + [ $n -gt 0 ] && rc=1 || rc=0 +fi exit $rc diff --git a/etc/periodic/security/security.functions b/etc/periodic/security/security.functions index f5b8dcd..bc2bcba 100644 --- a/etc/periodic/security/security.functions +++ b/etc/periodic/security/security.functions @@ -27,11 +27,19 @@ # $FreeBSD$ # +# This is a library file, so we only try to do something when sourced. +case "$0" in +*/security.functions) exit 0 ;; +esac + +security_daily_compat_var security_status_logdir +security_daily_compat_var security_status_diff_flags + # # Show differences in the output of an audit command # -LOG="${daily_status_security_logdir}" +LOG="${security_status_logdir}" rc=0 # Usage: COMMAND | check_diff [new_only] LABEL - MSG @@ -67,7 +75,7 @@ check_diff() { [ $rc -lt 1 ] && rc=1 echo "" echo "${msg}" - diff ${daily_status_security_diff_flags} ${LOG}/${label}.today \ + diff ${security_status_diff_flags} ${LOG}/${label}.today \ ${tmpf} | eval "${filter}" mv ${LOG}/${label}.today ${LOG}/${label}.yesterday || rc=3 mv ${tmpf} ${LOG}/${label}.today || rc=3 diff --git a/etc/periodic/weekly/450.status-security b/etc/periodic/weekly/450.status-security new file mode 100755 index 0000000..513fbda --- /dev/null +++ b/etc/periodic/weekly/450.status-security @@ -0,0 +1,41 @@ +#!/bin/sh +# +# $FreeBSD$ +# + +# If there is a global system configuration file, suck it in. +# +if [ -r /etc/defaults/periodic.conf ] +then + . /etc/defaults/periodic.conf + source_periodic_confs +fi + +case "$weekly_status_security_enable" in + [Yy][Ee][Ss]) + echo "" + echo "Security check:" + + case "$weekly_status_security_inline" in + [Yy][Ee][Ss]) + weekly_status_security_output="";; + esac + + export security_output="${weekly_status_security_output}" + case "${weekly_status_security_output}" in + "") + rc=3;; + /*) + echo " (output logged separately)" + rc=0;; + *) + echo " (output mailed separately)" + rc=0;; + esac + + periodic security || rc=3;; + + *) rc=0;; +esac + +exit $rc diff --git a/etc/periodic/weekly/Makefile b/etc/periodic/weekly/Makefile index 7f2eae2..057653d 100644 --- a/etc/periodic/weekly/Makefile +++ b/etc/periodic/weekly/Makefile @@ -3,6 +3,7 @@ .include FILES= 340.noid \ + 450.status-security \ 999.local # NB: keep these sorted by MK_* knobs diff --git a/share/man/man5/periodic.conf.5 b/share/man/man5/periodic.conf.5 index 4543532..e9acec0 100644 --- a/share/man/man5/periodic.conf.5 +++ b/share/man/man5/periodic.conf.5 @@ -1,4 +1,4 @@ -.\"- +\"- .\" Copyright (c) 2000 Brian Somers .\" All rights reserved. .\" @@ -482,26 +482,42 @@ This variable behaves in the same way as the .Va *_output variables above, namely it can be set either to one or more email addresses or to an absolute file name. -.It Va daily_status_security_diff_flags +.It Va security_status_diff_flags .Pq Vt str Set to the arguments to pass to the .Xr diff 1 utility when generating differences. The default is .Fl b u . -.It Va daily_status_security_chksetuid_enable +.It Va security_status_chksetuid_enable .Pq Vt bool Set to .Dq Li YES to compare the modes and modification times of setuid executables with the previous day's values. -.It Va daily_status_security_chkportsum_enable +.It Va security_status_chksetuid_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_chkportsum_enable .Pq Vt bool Set to .Dq Li YES to verify checksums of all installed packages against the known checksums in .Pa /var/db/pkg . -.It Va daily_status_security_neggrpperm_enable +.It Va security_status_chkportsum_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_neggrpperm_enable .Pq Vt bool Set to .Dq Li YES @@ -509,35 +525,67 @@ to check for files where the group of a file has less permissions than the world at large. When users are in more than 14 supplemental groups these negative permissions may not be enforced via NFS shares. -.It Va daily_status_security_chkmounts_enable +.It Va security_status_neggrpperm_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_chkmounts_enable .Pq Vt bool Set to .Dq Li YES to check for changes mounted file systems to the previous day's values. -.It Va daily_status_security_noamd +.It Va security_status_chkmounts_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_noamd .Pq Vt bool Set to .Dq Li YES if you want to ignore .Xr amd 8 mounts when comparing against yesterday's file system mounts in the -.Va daily_status_security_chkmounts_enable +.Va security_status_chkmounts_enable check. -.It Va daily_status_security_chkuid0_enable +.It Va security_status_chkuid0_enable .Pq Vt bool Set to .Dq Li YES to check .Pa /etc/master.passwd for accounts with UID 0. -.It Va daily_status_security_passwdless_enable +.It Va security_status_chkuid0_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_passwdless_enable .Pq Vt bool Set to .Dq Li YES to check .Pa /etc/master.passwd for accounts with empty passwords. -.It Va daily_status_security_logincheck_enable +.It Va security_status_passwdless_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_logincheck_enable .Pq Vt bool Set to .Dq Li YES @@ -546,49 +594,105 @@ to check ownership, see .Xr login.conf 5 for more information. -.It Va daily_status_security_ipfwdenied_enable +.It Va security_status_logincheck_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_ipfwdenied_enable .Pq Vt bool Set to .Dq Li YES to show log entries for packets denied by .Xr ipfw 8 since yesterday's check. -.It Va daily_status_security_ipfdenied_enable +.It Va security_status_ipfwdenied_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_ipfdenied_enable .Pq Vt bool Set to .Dq Li YES to show log entries for packets denied by .Xr ipf 8 since yesterday's check. -.It Va daily_status_security_pfdenied_enable +.It Va security_status_ipfdenied_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_pfdenied_enable .Pq Vt bool Set to .Dq Li YES to show log entries for packets denied by .Xr pf 4 since yesterday's check. -.It Va daily_status_security_ipfwlimit_enable +.It Va security_status_pfdenied_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_ipfwlimit_enable .Pq Vt bool Set to .Dq Li YES to display .Xr ipfw 8 rules that have reached their verbosity limit. -.It Va daily_status_security_kernelmsg_enable +.It Va security_status_ipfwlimit_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_kernelmsg_enable .Pq Vt bool Set to .Dq Li YES to show new .Xr dmesg 8 entries since yesterday's check. -.It Va daily_status_security_loginfail_enable +.It Va security_status_kernelmsg_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_loginfail_enable .Pq Vt bool Set to .Dq Li YES to display failed logins from .Pa /var/log/messages in the previous day. -.It Va daily_status_security_tcpwrap_enable +.It Va security_status_loginfail_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . +.It Va security_status_tcpwrap_enable .Pq Vt bool Set to .Dq Li YES @@ -597,6 +701,14 @@ to display connections denied by tcpwrappers (see from .Pa /var/log/messages during the previous day. +.It Va security_status_tcpwrap_period +.Pq Vt str +Set to either +.Dq Li daily , +.Dq Li weekly , +.Dq Li monthly +or +.Dq Li NO . .It Va daily_status_mail_rejects_enable .Pq Vt bool Set to @@ -709,6 +821,18 @@ An orphaned file is one with an invalid owner or group. A list of directories under which orphaned files are searched for. This would usually be set to .Pa / . +.It Va weekly_status_security_enable +.Pq Vt bool +Weekly counterpart of +.Va daily_status_securiy_enable . +.It Va weekly_status_security_inline +.Pq Vt bool +Weekly counterpart of +.Va daily_status_securiy_inline . +.It Va weekly_status_security_output +.Pq Vt str +Weekly counterpart of +.Va daily_status_securiy_output . .It Va weekly_status_pkg_enable .Pq Vt bool Set to @@ -776,6 +900,18 @@ Set to if you want to do login accounting using the .Xr ac 8 command. +.It Va monthly_status_security_enable +.Pq Vt bool +Monthly counterpart of +.Va daily_status_securiy_enable . +.It Va monthly_status_security_inline +.Pq Vt bool +Monthly counterpart of +.Va daily_status_securiy_inline . +.It Va monthly_status_security_output +.Pq Vt str +Monthly counterpart of +.Va daily_status_securiy_output . .It Va monthly_local .Pq Vt str Set to a list of extra scripts that should be run after all other -- cgit v1.1 From 976074d43e046c7be4a8f1855ef3005150d23eb3 Mon Sep 17 00:00:00 2001 From: jlh Date: Tue, 27 Aug 2013 21:28:12 +0000 Subject: Install 450.status-security. --- etc/periodic/monthly/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/etc/periodic/monthly/Makefile b/etc/periodic/monthly/Makefile index 77c1d66..b7fb6e4 100644 --- a/etc/periodic/monthly/Makefile +++ b/etc/periodic/monthly/Makefile @@ -2,7 +2,8 @@ .include -FILES= 999.local +FILES= 450.status-security \ + 999.LOCAL # NB: keep these sorted by MK_* knobs -- cgit v1.1 From 2b254c93081ca42c7b0fd38416fca970ae42fa66 Mon Sep 17 00:00:00 2001 From: davidcs Date: Tue, 27 Aug 2013 21:29:21 +0000 Subject: Fix bug in Flash access code Submitted by: David C Somayajulu --- sys/dev/qlxgbe/ql_misc.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sys/dev/qlxgbe/ql_misc.c b/sys/dev/qlxgbe/ql_misc.c index 6c7292f..ef0f4a7 100644 --- a/sys/dev/qlxgbe/ql_misc.c +++ b/sys/dev/qlxgbe/ql_misc.c @@ -321,7 +321,7 @@ qla_get_fdt(qla_host_t *ha) } while ((count < 10000) && (data32 != 0x6)); - if (count == 0 && data32 != 0x6) { + if (data32 != 0x6) { qla_sem_unlock(ha, Q8_FLASH_UNLOCK); device_printf(ha->pci_dev, "%s: Poll Q8_FLASH_STATUS failed\n", @@ -401,7 +401,7 @@ qla_flash_write_enable(qla_host_t *ha, int enable) } while ((count < 10000) && (data32 != 0x6)); - if (count == 0 && data32 != 0x6) { + if (data32 != 0x6) { device_printf(ha->pci_dev, "%s: Poll Q8_FLASH_STATUS failed\n", __func__); @@ -432,7 +432,7 @@ qla_erase_flash_sector(qla_host_t *ha, uint32_t start) } while (((count++) < 1000) && (data32 != 0x6)); - if (count == 0 && data32 != 0x6) { + if (data32 != 0x6) { device_printf(ha->pci_dev, "%s: Poll Q8_FLASH_STATUS failed\n", __func__); @@ -479,7 +479,7 @@ qla_erase_flash_sector(qla_host_t *ha, uint32_t start) } while (((count++) < 1000) && (data32 != 0x6)); - if (count == 0 && data32 != 0x6) { + if (data32 != 0x6) { device_printf(ha->pci_dev, "%s: Poll Q8_FLASH_STATUS failed\n", __func__); @@ -575,7 +575,7 @@ qla_wr_flash32(qla_host_t *ha, uint32_t off, uint32_t *data) } while ((count < 10000) && (data32 != 0x6)); - if (count == 0 && data32 != 0x6) { + if (data32 != 0x6) { device_printf(ha->pci_dev, "%s: Poll Q8_FLASH_STATUS failed\n", __func__); -- cgit v1.1 From d4eb6863876c5d0e32187cc05757e22f06c2c1e8 Mon Sep 17 00:00:00 2001 From: jilles Date: Tue, 27 Aug 2013 21:47:01 +0000 Subject: wordexp(): Avoid leaking the pipe file descriptors to a parallel fork/exec. This uses the new pipe2() system call added on May 1 (r250159). --- lib/libc/gen/wordexp.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/libc/gen/wordexp.c b/lib/libc/gen/wordexp.c index c361980..377caff 100644 --- a/lib/libc/gen/wordexp.c +++ b/lib/libc/gen/wordexp.c @@ -121,7 +121,7 @@ we_askshell(const char *words, wordexp_t *we, int flags) serrno = errno; - if (pipe(pdes) < 0) + if (pipe2(pdes, O_CLOEXEC) < 0) return (WRDE_NOSPACE); /* XXX */ (void)sigemptyset(&newsigblock); (void)sigaddset(&newsigblock, SIGCHLD); @@ -140,10 +140,10 @@ we_askshell(const char *words, wordexp_t *we, int flags) * builtin on `words'. */ (void)_sigprocmask(SIG_SETMASK, &oldsigblock, NULL); - _close(pdes[0]); - if (_dup2(pdes[1], STDOUT_FILENO) < 0) + if ((pdes[1] != STDOUT_FILENO ? + _dup2(pdes[1], STDOUT_FILENO) : + _fcntl(pdes[1], F_SETFD, 0)) < 0) _exit(1); - _close(pdes[1]); execl(_PATH_BSHELL, "sh", flags & WRDE_UNDEF ? "-u" : "+u", "-c", "eval \"$1\";eval \"wordexp $2\"", "", flags & WRDE_SHOWERR ? "" : "exec 2>/dev/null", words, -- cgit v1.1 From d0a699d53c2a04569b291206089fe531b5e57b82 Mon Sep 17 00:00:00 2001 From: jkim Date: Tue, 27 Aug 2013 22:37:29 +0000 Subject: Fix a typo introduced in r254975. --- etc/periodic/monthly/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/periodic/monthly/Makefile b/etc/periodic/monthly/Makefile index b7fb6e4..d9e4969 100644 --- a/etc/periodic/monthly/Makefile +++ b/etc/periodic/monthly/Makefile @@ -3,7 +3,7 @@ .include FILES= 450.status-security \ - 999.LOCAL + 999.local # NB: keep these sorted by MK_* knobs -- cgit v1.1 From 142ae774787196df15d7965d81632504d56cd76d Mon Sep 17 00:00:00 2001 From: sjg Date: Tue, 27 Aug 2013 23:09:34 +0000 Subject: Use .SHELL to tell bmake to use 'set -e' when running scripts since most FreeBSD makefiles it is in effect. Move the other bmake compatability knobs out of the POSIX block. Reviewed by: obrien --- share/mk/sys.mk | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/share/mk/sys.mk b/share/mk/sys.mk index cdab3d6..eb9f2ca 100644 --- a/share/mk/sys.mk +++ b/share/mk/sys.mk @@ -332,12 +332,6 @@ SHELL= ${__MAKE_SHELL} .SHELL: path=${__MAKE_SHELL} .endif -# Tell bmake to expand -V VAR by default -.MAKE.EXPAND_VARIABLES= yes - -# Tell bmake the makefile preference -.MAKE.MAKEFILE_PREFERENCE= BSDmakefile makefile Makefile - .if !defined(.PARSEDIR) # We are not bmake, which is more aggressive about searching .PATH # It is sometime necessary to curb its enthusiasm with .NOPATH @@ -351,4 +345,24 @@ SHELL= ${__MAKE_SHELL} .endif +.if defined(.PARSEDIR) +# Tell bmake to expand -V VAR by default +.MAKE.EXPAND_VARIABLES= yes + +# Tell bmake the makefile preference +.MAKE.MAKEFILE_PREFERENCE= BSDmakefile makefile Makefile + +# By default bmake does *not* use set -e +# when running target scripts, this is a problem for many makefiles here. +# So define a shell that will do what FreeBSD expects. +.ifndef WITHOUT_SHELL_ERRCTL +.SHELL: name=sh \ + quiet="set -" echo="set -v" filter="set -" \ + hasErrCtl=yes check="set -e" ignore="set +e" \ + echoFlag=v errFlag=e \ + path=${__MAKE_SHELL:U/bin/sh} +.endif + +.endif + .include -- cgit v1.1 From 1d2edd950568843a7238654f4985ce930d827ceb Mon Sep 17 00:00:00 2001 From: zeising Date: Tue, 27 Aug 2013 23:30:02 +0000 Subject: Really regen after r254962. This removes the WITH_BSDCONFIG description alltogether, since this option is removed. At the same time, fix the WITHOUT_LIBCPLUSPLUS option that had gotten inverted. --- share/man/man5/src.conf.5 | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5 index 07acdd6..fbdb6da 100644 --- a/share/man/man5/src.conf.5 +++ b/share/man/man5/src.conf.5 @@ -1,7 +1,7 @@ .\" DO NOT EDIT-- this file is automatically generated. .\" from FreeBSD: head/tools/build/options/makeman 253304 2013-07-12 23:08:44Z bapt .\" $FreeBSD$ -.Dd August 27, 2013 +.Dd August 28, 2013 .Dt SRC.CONF 5 .Os .Sh NAME @@ -235,9 +235,6 @@ This option will be removed in due time. .It Va WITHOUT_BOOT .\" from FreeBSD: head/tools/build/options/WITHOUT_BOOT 156932 2006-03-21 07:50:50Z ru Set to not build the boot blocks and loader. -.It Va WITH_BSDCONFIG -.\" from FreeBSD: head/tools/build/options/WITH_BSDCONFIG 238448 2012-07-14 10:17:47Z zeising -Set to install bsdconfig(8), a BSD-licensed configuration/management utility. .It Va WITHOUT_BSD_CPIO .\" from FreeBSD: head/tools/build/options/WITHOUT_BSD_CPIO 179813 2008-06-16 05:48:15Z dougb Set to not build the BSD licensed version of cpio based on @@ -704,9 +701,9 @@ and On amd64, set to not build 32-bit library set and a .Nm ld-elf32.so.1 runtime linker. -.It Va WITH_LIBCPLUSPLUS -.\" from FreeBSD: head/tools/build/options/WITH_LIBCPLUSPLUS 228082 2011-11-28 17:56:46Z dim -Set to build libcxxrt and libc++. +.It Va WITHOUT_LIBCPLUSPLUS +.\" from FreeBSD: head/tools/build/options/WITHOUT_LIBCPLUSPLUS 246262 2013-02-02 22:42:46Z dim +Set to avoid building libcxxrt and libc++. .It Va WITH_LIBICONV_COMPAT .\" from FreeBSD: head/tools/build/options/WITH_LIBICONV_COMPAT 254919 2013-08-26 17:15:56Z antoine Set to build libiconv API and link time compatibility. -- cgit v1.1 From f30d83113718ef96a9eb0fcbdb4ac60b47dda665 Mon Sep 17 00:00:00 2001 From: delphij Date: Wed, 28 Aug 2013 00:39:47 +0000 Subject: Previously, both zfs_rename and zfs_link does a check on whether the passed vnode belongs to the same mount point (v_vfsp or also known as v_mount in FreeBSD). This check prevents the code from proceeding further on vnodes that do not belong to ZFS, for instance, on UFS or NULLFS. The recent change (merged as r254585) on upstream changes the check of v_vfsp to instead check the znode's z_zfsvfs. On Illumos this would work because when the vnode comes from lofs, the VOP_REALVP() would give the right vnode, this is not true on FreeBSD where our VOP_REALVP is a no-op, and as such tdvp is not guaranteed to be a ZFS vnode, and will later trigger a failed assertion when verifying the vnode. This changeset modifies our local shims (zfs_freebsd_rename and zfs_freebsd_link) to check if v_mount matches before proceeding further. Reported by: many Diagnostic work by: avg --- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c index a23dd0d..2716c25 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c @@ -6250,8 +6250,11 @@ zfs_freebsd_rename(ap) ASSERT(ap->a_fcnp->cn_flags & (SAVENAME|SAVESTART)); ASSERT(ap->a_tcnp->cn_flags & (SAVENAME|SAVESTART)); - error = zfs_rename(fdvp, ap->a_fcnp->cn_nameptr, tdvp, - ap->a_tcnp->cn_nameptr, ap->a_fcnp->cn_cred, NULL, 0); + if (fdvp->v_mount == tdvp->v_mount) + error = zfs_rename(fdvp, ap->a_fcnp->cn_nameptr, tdvp, + ap->a_tcnp->cn_nameptr, ap->a_fcnp->cn_cred, NULL, 0); + else + error = EXDEV; if (tdvp == tvp) VN_RELE(tdvp); @@ -6308,10 +6311,15 @@ zfs_freebsd_link(ap) } */ *ap; { struct componentname *cnp = ap->a_cnp; + vnode_t *vp = ap->a_vp; + vnode_t *tdvp = ap->a_tdvp; + + if (tdvp->v_mount != vp->v_mount) + return (EXDEV); ASSERT(cnp->cn_flags & SAVENAME); - return (zfs_link(ap->a_tdvp, ap->a_vp, cnp->cn_nameptr, cnp->cn_cred, NULL, 0)); + return (zfs_link(tdvp, vp, cnp->cn_nameptr, cnp->cn_cred, NULL, 0)); } static int -- cgit v1.1 From 0dc62eee9d4434460a6c0bec88c1990d8285e5aa Mon Sep 17 00:00:00 2001 From: gonzo Date: Wed, 28 Aug 2013 01:10:51 +0000 Subject: Fix GT PCI controller driver on big-endian hardware --- sys/mips/malta/gt_pci.c | 53 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/sys/mips/malta/gt_pci.c b/sys/mips/malta/gt_pci.c index 37407b2..47c3f6f 100644 --- a/sys/mips/malta/gt_pci.c +++ b/sys/mips/malta/gt_pci.c @@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -91,6 +92,14 @@ __FBSDID("$FreeBSD$"); #define OCW3_POLL_IRQ(x) ((x) & 0x7f) #define OCW3_POLL_PENDING (1U << 7) +/* + * Galileo controller's registers are LE so convert to then + * to/from native byte order. We rely on boot loader or emulator + * to set "swap bytes" configuration correctly for us + */ +#define GT_PCI_DATA(v) htole32((v)) +#define GT_HOST_DATA(v) le32toh((v)) + struct gt_pci_softc; struct gt_pci_intr_cookie { @@ -437,20 +446,20 @@ gt_pci_read_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, return (uint32_t)(-1); /* Clear cause register bits. */ - GT_REGVAL(GT_INTR_CAUSE) = 0; - - GT_REGVAL(GT_PCI0_CFG_ADDR) = (1 << 31) | addr; - data = GT_REGVAL(GT_PCI0_CFG_DATA); + GT_REGVAL(GT_INTR_CAUSE) = GT_PCI_DATA(0); + GT_REGVAL(GT_PCI0_CFG_ADDR) = GT_PCI_DATA((1 << 31) | addr); + /* + * Galileo system controller is special + */ + if ((bus == 0) && (slot == 0)) + data = GT_PCI_DATA(GT_REGVAL(GT_PCI0_CFG_DATA)); + else + data = GT_REGVAL(GT_PCI0_CFG_DATA); /* Check for master abort. */ - if (GT_REGVAL(GT_INTR_CAUSE) & (GTIC_MASABORT0 | GTIC_TARABORT0)) + if (GT_HOST_DATA(GT_REGVAL(GT_INTR_CAUSE)) & (GTIC_MASABORT0 | GTIC_TARABORT0)) data = (uint32_t) -1; - /* - * XXX: We assume that words readed from GT chip are BE. - * Should we set the mode explicitly during chip - * Initialization? - */ switch(reg % 4) { case 3: @@ -507,11 +516,6 @@ gt_pci_write_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, { reg_data = gt_pci_read_config(dev, bus, slot, func, reg, 4); - /* - * XXX: We assume that words readed from GT chip are BE. - * Should we set the mode explicitly during chip - * Initialization? - */ shift = 8 * (reg & 3); switch(bytes) @@ -548,10 +552,23 @@ gt_pci_write_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, return; /* Clear cause register bits. */ - GT_REGVAL(GT_INTR_CAUSE) = 0; + GT_REGVAL(GT_INTR_CAUSE) = GT_PCI_DATA(0); + + GT_REGVAL(GT_PCI0_CFG_ADDR) = GT_PCI_DATA((1 << 31) | addr); + + /* + * Galileo system controller is special + */ + if ((bus == 0) && (slot == 0)) + GT_REGVAL(GT_PCI0_CFG_DATA) = GT_PCI_DATA(data); + else + GT_REGVAL(GT_PCI0_CFG_DATA) = data; + +#if 0 + printf("PCICONF_WRITE(%02x:%02x.%02x[%04x] -> %02x(%d)\n", + bus, slot, func, reg, data, bytes); +#endif - GT_REGVAL(GT_PCI0_CFG_ADDR) = (1 << 31) | addr; - GT_REGVAL(GT_PCI0_CFG_DATA) = data; } static int -- cgit v1.1 From acad72bebe92da6921401c865b00f0179c7108cc Mon Sep 17 00:00:00 2001 From: joel Date: Wed, 28 Aug 2013 05:12:29 +0000 Subject: mdoc fix --- share/man/man5/periodic.conf.5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/man/man5/periodic.conf.5 b/share/man/man5/periodic.conf.5 index e9acec0..b7f42e8 100644 --- a/share/man/man5/periodic.conf.5 +++ b/share/man/man5/periodic.conf.5 @@ -1,4 +1,4 @@ -\"- +.\"- .\" Copyright (c) 2000 Brian Somers .\" All rights reserved. .\" -- cgit v1.1 From b4bb9036fd1ee6033f8df3d8ebb9136adb907a91 Mon Sep 17 00:00:00 2001 From: uqs Date: Wed, 28 Aug 2013 07:48:44 +0000 Subject: Fix 'make depend' --- sys/modules/ip6_mroute_mod/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/modules/ip6_mroute_mod/Makefile b/sys/modules/ip6_mroute_mod/Makefile index 943f9ab..eb1c823 100644 --- a/sys/modules/ip6_mroute_mod/Makefile +++ b/sys/modules/ip6_mroute_mod/Makefile @@ -7,7 +7,7 @@ KMOD= ip6_mroute SRCS= ip6_mroute.c -SRCS+= opt_inet6.h opt_mrouting.h +SRCS+= opt_inet6.h opt_kdtrace.h opt_mrouting.h .if !defined(KERNBUILDDIR) opt_inet6.h: -- cgit v1.1 From ad95bec3c8287053a87374aa21dbb55a746cdc34 Mon Sep 17 00:00:00 2001 From: ivoras Date: Wed, 28 Aug 2013 10:06:20 +0000 Subject: Take a very small step toward the Century of the Anchovy by increasing the time dirhash entries stay in memory before being considered for eviction to 1 minute. --- sys/ufs/ufs/ufs_dirhash.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/ufs/ufs/ufs_dirhash.c b/sys/ufs/ufs/ufs_dirhash.c index b51fdff..5c29923 100644 --- a/sys/ufs/ufs/ufs_dirhash.c +++ b/sys/ufs/ufs/ufs_dirhash.c @@ -85,7 +85,7 @@ SYSCTL_INT(_vfs_ufs, OID_AUTO, dirhash_docheck, CTLFLAG_RW, &ufs_dirhashcheck, static int ufs_dirhashlowmemcount = 0; SYSCTL_INT(_vfs_ufs, OID_AUTO, dirhash_lowmemcount, CTLFLAG_RD, &ufs_dirhashlowmemcount, 0, "number of times low memory hook called"); -static int ufs_dirhashreclaimage = 5; +static int ufs_dirhashreclaimage = 60; SYSCTL_INT(_vfs_ufs, OID_AUTO, dirhash_reclaimage, CTLFLAG_RW, &ufs_dirhashreclaimage, 0, "max time in seconds of hash inactivity before deletion in low VM events"); -- cgit v1.1 From ce93c74acc44457342a988640521356e02758e8c Mon Sep 17 00:00:00 2001 From: gavin Date: Wed, 28 Aug 2013 14:29:33 +0000 Subject: Support the PCI-Express SSD in the new MacBook Air (model A1465) Submitted by: Johannes Lundberg MFC after: 3 days --- sys/dev/ahci/ahci.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/dev/ahci/ahci.c b/sys/dev/ahci/ahci.c index 7c29bf1..e45bc50 100644 --- a/sys/dev/ahci/ahci.c +++ b/sys/dev/ahci/ahci.c @@ -229,6 +229,7 @@ static struct { {0x91301b4b, 0x00, "Marvell 88SE9130", AHCI_Q_NOBSYRES|AHCI_Q_ALTSIG}, {0x91721b4b, 0x00, "Marvell 88SE9172", AHCI_Q_NOBSYRES}, {0x91821b4b, 0x00, "Marvell 88SE9182", AHCI_Q_NOBSYRES}, + {0x91831b4b, 0x00, "Marvell 88SS9183", AHCI_Q_NOBSYRES}, {0x91a01b4b, 0x00, "Marvell 88SE91Ax", AHCI_Q_NOBSYRES}, {0x92151b4b, 0x00, "Marvell 88SE9215", AHCI_Q_NOBSYRES}, {0x92201b4b, 0x00, "Marvell 88SE9220", AHCI_Q_NOBSYRES|AHCI_Q_ALTSIG}, -- cgit v1.1 From 975aacab92f859de9651ecb0d11aebfb1b52a4ad Mon Sep 17 00:00:00 2001 From: loos Date: Wed, 28 Aug 2013 14:39:24 +0000 Subject: Properly free gpiobus ivars when gpiobus_parse_pins() fails and also on gpiobus detachment. Suggested by: imp Approved by: adrian (mentor) --- sys/dev/gpio/gpiobus.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/sys/dev/gpio/gpiobus.c b/sys/dev/gpio/gpiobus.c index c4a62f7..d61f7aa 100644 --- a/sys/dev/gpio/gpiobus.c +++ b/sys/dev/gpio/gpiobus.c @@ -151,6 +151,7 @@ gpiobus_parse_pins(struct gpiobus_softc *sc, device_t child, int mask) if (i >= sc->sc_npins) { device_printf(child, "invalid pin %d, max: %d\n", i, sc->sc_npins - 1); + free(devi->pins, M_DEVBUF); return (EINVAL); } @@ -161,6 +162,7 @@ gpiobus_parse_pins(struct gpiobus_softc *sc, device_t child, int mask) if (sc->sc_pins_mapped[i]) { device_printf(child, "warning: pin %d is already mapped\n", i); + free(devi->pins, M_DEVBUF); return (EINVAL); } sc->sc_pins_mapped[i] = 1; @@ -218,9 +220,12 @@ gpiobus_attach(device_t dev) static int gpiobus_detach(device_t dev) { - struct gpiobus_softc *sc = GPIOBUS_SOFTC(dev); - int err; + struct gpiobus_softc *sc; + struct gpiobus_ivar *devi; + device_t *devlist; + int i, err, ndevs; + sc = GPIOBUS_SOFTC(dev); KASSERT(mtx_initialized(&sc->sc_mtx), ("gpiobus mutex not initialized")); GPIOBUS_LOCK_DESTROY(sc); @@ -228,8 +233,17 @@ gpiobus_detach(device_t dev) if ((err = bus_generic_detach(dev)) != 0) return (err); - /* detach and delete all children */ - device_delete_children(dev); + if ((err = device_get_children(dev, &devlist, &ndevs)) != 0) + return (err); + for (i = 0; i < ndevs; i++) { + device_delete_child(dev, devlist[i]); + devi = GPIOBUS_IVAR(devlist[i]); + if (devi->pins) { + free(devi->pins, M_DEVBUF); + devi->pins = NULL; + } + } + free(devlist, M_TEMP); if (sc->sc_pins_mapped) { free(sc->sc_pins_mapped, M_DEVBUF); -- cgit v1.1 From 0bca027965fc5b6f13992edc4293148be0b23ff3 Mon Sep 17 00:00:00 2001 From: loos Date: Wed, 28 Aug 2013 14:43:04 +0000 Subject: Add the default hints to make the GPIO pins, rf led and reset switch work out of the box on RouterStation. PR: 177832 Submitted by: Petko Bordjukov (bordjukov@gmail.com) Approved by: adrian (mentor) --- sys/mips/conf/ROUTERSTATION.hints | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/sys/mips/conf/ROUTERSTATION.hints b/sys/mips/conf/ROUTERSTATION.hints index be21280..7b35b22 100644 --- a/sys/mips/conf/ROUTERSTATION.hints +++ b/sys/mips/conf/ROUTERSTATION.hints @@ -23,6 +23,24 @@ hint.arge.1.mdio=mdioproxy1 # .. off of the switch mdiobus hint.ukswitch.0.at="mdio0" hint.ukswitch.0.phymask=0x30000 +# Don't flip on anything that isn't already enabled. +# This includes leaving the SPI CS1/CS2 pins as GPIO pins as they're +# not used here. +hint.gpio.0.function_set=0x00000000 +hint.gpio.0.function_clear=0x00000000 + +# These are the GPIO LEDs and buttons which can be software controlled. +hint.gpio.0.pinmask=0x000000ff + +# GPIO 0: Pin 1 +# GPIO 1: Pin 2 +# GPIO 2: RF LED +# GPIO 3: Pin 3 +# GPIO 4: Pin 4 +# GPIO 5: Pin 5 +# GPIO 6: Pin 6 +# GPIO 7: Pin 7 + # RF led hint.gpioled.0.at="gpiobus0" hint.gpioled.0.name="rf" -- cgit v1.1 From 80d315e21950f4c5ae17c3f8dda31d78c5bf73e4 Mon Sep 17 00:00:00 2001 From: loos Date: Wed, 28 Aug 2013 14:46:15 +0000 Subject: Make ar71xx_spi attach the next free unit of spibus and not only spibus0. Approved by: adrian (mentor) --- sys/mips/atheros/ar71xx_spi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/mips/atheros/ar71xx_spi.c b/sys/mips/atheros/ar71xx_spi.c index 92cc365..095f930 100644 --- a/sys/mips/atheros/ar71xx_spi.c +++ b/sys/mips/atheros/ar71xx_spi.c @@ -108,7 +108,7 @@ ar71xx_spi_attach(device_t dev) SPI_WRITE(sc, AR71XX_SPI_CTRL, 0x43); SPI_WRITE(sc, AR71XX_SPI_IO_CTRL, SPI_IO_CTRL_CSMASK); - device_add_child(dev, "spibus", 0); + device_add_child(dev, "spibus", -1); return (bus_generic_attach(dev)); } -- cgit v1.1 From 83cae05680206abe0b0cdb076aa4ff2e94fed7db Mon Sep 17 00:00:00 2001 From: loos Date: Wed, 28 Aug 2013 14:49:36 +0000 Subject: Fix a few typos for s25fl types. Approved by: adrian (mentor) --- sys/dev/flash/mx25l.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/dev/flash/mx25l.c b/sys/dev/flash/mx25l.c index 8956c30..24c9323 100644 --- a/sys/dev/flash/mx25l.c +++ b/sys/dev/flash/mx25l.c @@ -104,9 +104,9 @@ struct mx25l_flash_ident flash_devices[] = { { "mx25ll32", 0xc2, 0x2016, 64 * 1024, 64, FL_NONE }, { "mx25ll64", 0xc2, 0x2017, 64 * 1024, 128, FL_NONE }, { "mx25ll128", 0xc2, 0x2018, 64 * 1024, 256, FL_ERASE_4K | FL_ERASE_32K }, + { "s25fl032", 0x01, 0x0215, 64 * 1024, 64, FL_NONE }, + { "s25fl064", 0x01, 0x0216, 64 * 1024, 128, FL_NONE }, { "s25fl128", 0x01, 0x2018, 64 * 1024, 256, FL_NONE }, - { "s25s1032", 0x01, 0x0215, 64 * 1024, 64, FL_NONE }, - { "s25sl064a", 0x01, 0x0216, 64 * 1024, 128, FL_NONE }, { "SST25VF032B", 0xbf, 0x254a, 64 * 1024, 64, FL_ERASE_4K | FL_ERASE_32K }, /* Winbond -- w25x "blocks" are 64K, "sectors" are 4KiB */ -- cgit v1.1 From 3289affe76fc0e2203d4103c7e856aabd6f7aa32 Mon Sep 17 00:00:00 2001 From: gavin Date: Wed, 28 Aug 2013 15:12:15 +0000 Subject: After writing a kernel core dump into /var/crash, call sync(8). If we panic again shortly after boot (say, within 30 seconds), any core dump we wrote out may be lost on reboot. In this situation, we really want to keep that core file, as it may be the only way to have the issue resolved. Call sync(8) after writing out the core file and running crashinfo(8), in the hope that these will not be lost if we panic again. sync(8) is only called in the case where there is a core dump to be written out, so won't be called during normal boots. Discovered by: Trying to debug an IPSEC panic MFC after: 1 week --- etc/rc.d/savecore | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/rc.d/savecore b/etc/rc.d/savecore index a39d5ba..2176be9 100755 --- a/etc/rc.d/savecore +++ b/etc/rc.d/savecore @@ -70,6 +70,7 @@ savecore_start() if checkyesno crashinfo_enable; then ${crashinfo_program} -d ${dumpdir} fi + sync else check_startmsgs && echo 'No core dumps found.' fi -- cgit v1.1 From 9e645a26a0c32f9f20e689faf85b7ab9a1a84aa3 Mon Sep 17 00:00:00 2001 From: gnn Date: Wed, 28 Aug 2013 15:12:51 +0000 Subject: Add firmware for Centrino 2200-N wireless devices. Driver software for this firmware will be updated in a following commit. --- sys/contrib/dev/iwn/iwlwifi-2000-18.168.6.1.fw.uu | 12250 ++++++++++++++++++++ sys/modules/iwnfw/iwn2000/Makefile | 6 + 2 files changed, 12256 insertions(+) create mode 100644 sys/contrib/dev/iwn/iwlwifi-2000-18.168.6.1.fw.uu create mode 100644 sys/modules/iwnfw/iwn2000/Makefile diff --git a/sys/contrib/dev/iwn/iwlwifi-2000-18.168.6.1.fw.uu b/sys/contrib/dev/iwn/iwlwifi-2000-18.168.6.1.fw.uu new file mode 100644 index 0000000..d21522e --- /dev/null +++ b/sys/contrib/dev/iwn/iwlwifi-2000-18.168.6.1.fw.uu @@ -0,0 +1,12250 @@ +Copyright (c) 2006-2012, Intel Corporation. +All rights reserved. + +Redistribution. Redistribution and use in binary form, without +modification, are permitted provided that the following conditions are +met: + +* Redistributions must reproduce the above copyright notice and the + following disclaimer in the documentation and/or other materials + provided with the distribution. +* Neither the name of Intel Corporation nor the names of its suppliers + may be used to endorse or promote products derived from this software + without specific prior written permission. +* No reverse engineering, decompilation, or disassembly of this software + is permitted. + +Limited patent license. Intel Corporation grants a world-wide, +royalty-free, non-exclusive license under patents it now or hereafter +owns or controls to make, have made, use, import, offer to sell and +sell ("Utilize") this software, but solely to the extent that any +such patent is necessary to Utilize the software alone, or in +combination with an operating system licensed under an approved Open +Source license as listed by the Open Source Initiative at +http://opensource.org/licenses. The patent license shall not apply to +any other combinations which include this software. No hardware per +se is licensed hereunder. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. +begin-base64 644 iwlwifi-2000-18.168.6.1.fw +AAAAAElXTAoyMDAwIGZ3IHYxOC4xNjguNi4xIGJ1aWxkIDAKAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAQaoEgAAAAABAAAAAAAAAAEAAAAIgwIAICCADwAAQABpIAAAaSBAAGkg +AABpIEAAICCADwAA6ABpIAAAaSBAAGkgAABpIEAAICCADwEANAxpIAAAaSBAAGkgAABKIAAASiEA +AEoiAABKIwAASiQAAEolAABKJgAASicAAEogABBKIQAQSiIAEEojABBKJAAQSiUAEEomABBKJwAQ +SiAAIEohACBKIgAgSiMAIEokACBKJQAgSiYAIEonACBKIAAwSiEAMAokgD+BAABAQSycMEAsnDBC +JBw0CiKAP4AAIH8KIwA3sgzAB0omAHBpIEAASiYAcEomAHBKJgBwSiYAcAAWAHCAAMwqQHggIECH +AAAAAAAAAAAAAPwciLb8HEi2/BwItvwcyLX8HIi1/BxItfwcCLX8HMi0/ByItPwcSLT8HAi0/BzI +s/wciLP8HEiz4H7geATcON018OB4BNw03TPw4HgE3DDdMfDgeATcLN0v8OB4BNwo3S3w4HgE3CTd +K/DgeATcIN0p8OB4BNwc3Sfw4HgE3BjdJfDgeATcFN0j8OB4BNwQ3SHw4HgE3AzdH/DgeATcCN0c +8OB4BNwE3RnwNBQaMDAUGTAsFBgwKBQXMCQUFjAgFBUwHBQUMBgUEzAUFBIwEBQRMAwUEDACxwHG +sCRNM7AkHzPgfuB44HjgeOB44HjgeAokgPAFIEQA4CDBB0Qk/oBBKsQAhAACAC8kAvFCIQEBQiAD +AeggogQEEQQCBBEFAgQRBgIEEQcCBBsIAQQbSAEEG4gBBBvIASwAJQBEIj6BPAAiAEQi/IBAIcEA +4CDBB0AjwwCoIIABARGEAgEbCgEgIMAHBBEEAgQRBQIEGwgB1Afh/wQbSAFEIvyABBEEAskH7/8E +GwgBQiFBAEIgQwCoIIABARGEAgEbCgEgIMAHz3GgAKwvGIGauBihTQdgEwXY4HjPcaAArC8YgbO4 +urgYoTkHYBNk2AoiQIAA2e4AAQAvJgDwSiZAAE4ABgBPACAAiiX/D+B4CiJAgADZzgABAGwAJAAv +JgDwXAAFACsINQhKJkAACHEA2AIhvoDgIMUHQnkB4AIhvoDgIMUHQnnrB+//AeAvLQEAQCVFAAIm +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 +IAAA2gHYjrjPcQAA//+ODyAAANrPcAAAC9IA2X4PIAAA2s9wAAAN0gHZcg8gAADaz3AAABLSANli +DyAAANrPcAAAE9IA2VYPIAAA2s9wAAAU0gDZRg8gAADaANjRwOB+8cAyD0/8o8GLcQHdcg7gDKly +z3CAAFxwAIBBwATYCghgACzZDtgCCGAAANkhxrXY9g8gAMlxiiCEBu4PIADJcYogRgDiDyAAyXEA +wIDgzCCigMwg4oDMIGKBzCCigcwgIoLMIGKCzCDigsohQgMD9APZgeDMIKKAzCDigMwgooHMIOKB +zCAigswgooLMIOKCA/SCuS95hODMIGKBzCCigcwg4oHMICKCzCBigswgooLMIOKCA/SDuS95bg8g +AA/YANjdBm/8o8DxwOHFocGLca4N4AwB2s91gADspQAUBDDPcIAASBdAJQEfEtrqDSAAANsAFAQw +z3CAAEQXqXEB2tYNIAAC289wgABsFyRtHNreDSAAAMMA2I0Gb/yhwOB48cD2DW/8A9qjwbpwUg3g +DItxAcHPcIAA9BcA3/QgTgACwc9wgAAMGIDm9CBUAM9wgAA8COCg4aDMJqKQzCZikcwmopHKJcIT +AvQA3YHmzCbikMwm4pHMJiKSA/QB3YTmzCZikswmopLMJuKSAvQC3YYNz/+qcM9yrd7vvrYN4AHJ +cWIO7/+qcIPgdvIAwIDgzCCigVD0gObMJmKQzCYikUr0AsCA4Ej0z3CAAEgZtXhacOCgz3CAAFAZ +tXh6cOCgz3CAAGgZtXgacOCgz3CAAHAZtXg6cOCgz3CAAFgZtXjgoM9wgABgGbV44KCqcMlxz3Ot +3u++Pg3gAalyXgrv/6pwg+A48gDBABIAIIbhAdnAeQO5tXnHcYAAuLYAoQATACAEoQAQACAbeAih +ABEAIBt4DKGqcKlxyXIKJIAPrd7vvvIM4AGKc1YPr/+qcIPgEvIAwM9xgAA8CECBBL4GuNhgFSAA +BcdwgAD0tiGBQrAjsADY0QRv/KPA4HjxwKTBi3HeC+AMBNoAwAHBBLg1eM9xgACsFxBhbg0gAALB +AMABwQS4NXjPcYAAzBcQYVoNIAADwQDYpMDRwOB+8cChweoPIAKLcgDAocDRwOB+4HihweHF4ca4 +cM9wgADIvxAQBgDPcIAAmDoFgJhxgOChwYYk9w9z8s9wgACcagCA0HAN9M9wgACkagCAsHAH9M9w +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 +7/8A34DgHPJ3HtiTeB7Yk4Ae2JOBHtiTB4WGHhiQEJWHHhiQB4WKHhiQEJWLHhiQBYWIHhiQDJWJ +HhiQBYWEHhiQDJWFHhiQwdhQHhiQaQdP+OB44cUIccO4z3KAAECq9CIDAMm7cHHKJCJ0yiAiAOgg +IgL0Ig0Ayb2xcQLyAeDgf8HF8cDhxQh1z3GgAMQnGREAhgHagOAREQCGwHqA4gCl0SDhhwDYNvTP +cIAAzM8MgM9xoADIH2TgHqEQ2A6hAdgVGRiAIg/gCwvYUSEAxsogIgAb9FEgQMcT8s9xoADUCxaB +OIEk4DBwS/f6DuALA9hRIwDABfRRIIDEA/IY2ALwANiA4Mog4gTPcaAAkCM+gSClsQZP+PHANg5P ++M92gACgLBUmARBAgWmCuIpBK8AAwLgXuMdwAACAHOS7zyAiBuC7Tt/PIKIAyieCHwAATgGG5c8n +YRLluxb0z3WAAOgvGBUEEb6WkHUP9KGGxBUNFlElQJEI9KCGxBUNFlElQJED8oG4USMAgs8gogUb +ovyiQIHPcDoESnAdoqCBB9j2D2AACrgEIIAPBwAAADC4h+BWAA0AMyYAcIAAcG5AJ4FyFHkAeYog +BAAepRjwiiAQAB6lFPAA2Iu4HqUQ8ADYjLgepQzwANiNuB6lCPAD2Ay4HqUE8ADYjrgepYIgAQG1 +BW/4HqUKIcAP63KM2I24vtuLu0okAADFBa/5CiUAAfHAz3GAANBJF6HgeOB44HjgeOB44HjgeOB4 +4HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjRwOB+4HghgADaUyF+gAvyANqZulEhQIDK +IoIPAACDAMAqYgbPcaAAtEdMGYCAZpBIIwMDR5AQuwQjgw8PAAAAyLpFe0iQDLoEIoIPAAAA8GV6 +UBmAgECAg+Iq9GKAz3KfALj/faJFgFwZgIBGgGAZgIBHgHwZgIBIgGQZgIBJgGgZgIBKgIAZgIBL +gGwZgIBMgHAZgIBNgIQZgIBOgHQZgIBPgHgZgIBQgIgZgIBAgIjiE/RFgJwZgIBGgKAZgIBHgLwZ +gIBIgKQZgIBJgKgZgIAKgMAZAIDPcAAAVVXgfuB48cASDE/4CHYBgM91gADgKgClAobPd58AuP8B +pQDYAqXPcND+AADCDm//BKUA2B2nAIaH4M92oAC0Rxf0jgoAAM9wAz8CP5seGJDPcAk/Cz+cHhiQ +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 +1AsxoOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB4MaDPcIAAWKMZgIDgKAyCAZrlOgMC +AM9wgAAI8rIMIAQA3SsDAABuC2//KnAacACF7gov/ypxjgsv/wh3iOfMJ+KVyiXBEy3yTCAAoAvy +CgsgAIHACiUAkBz0Hgzv/wHAGPAD2c9woADUCzGg4HjgeOB44HjgeOB44HjgeOB44HjgeOB44Hjg +eOB44HgxoADdmucH9M9wgAAI8jYMAASA5aoCAgAyDQACz3CAAFDPH4DuuAjyAdnPcIAAjAYgoAnw +77gH8gHZz3CAAJAGIKARFgCWAN1RIICAQcAY9OYIr/mBwAolAJAS9AQUBTBRJYCADPQKIcAP63IK +2Iy4iiPHChkAb/OKJIMPgOVCAgIABNgTHhiQG9gWHhiQz3CAAFijGYCA4BALggEjAgAA4LjL8s92 +gABQzxKGhiA6AIwgBIKUDAUCz3GgAAwkPIEXhiJ4ZLgQeIoeBBBEIgBTiOAL9B+G8bgF9FElQNEB +2AX0ANgD8JIKT/+A4JweABAw8gYND/8KJQCQ4/QNzFEgwIER8h+GUSCAgQ3yLyCHCowgAoYH9M9x +gABQzx+BmLgfoaoJIACBwAolAJDJ9M92gABQzx+G8LgV8qgWARDU2LYMYAHJcoDgB/J6CIAFC/CC +Dg//tPDPcYAATEoegQHgHqEB389wgAD8KrQWARDgqAaBAeAGoR+G87j0C8L5D4aA4AALwvkfhu64 +CPIB2c9wgACMBiCgCfDvuAfyAdnPcIAAkAYgoADYz3GgAMgcB6Ew2AqhNgrv/wHAiiCEDS4Pr/kB +wR+G+LgS8hDYDBocMM9wgAAI8m4KAAQNyAAggQ+AAIjOH4bgqbi4H6YAloYg/ACMIAKAHPSiDE/5 +gOAY9APZz3CgANQLMaDgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeDGgAJZeCy/8NJZF +8FEgwIBBwBXfBPTpdSHwCNjPdqAAxCcTHhiQPgjP/5TgCHUV8gLYPB4AkCEWAZbPcIAA7LUhoBEW +AJZRIICA5vXCDm/5gcAKJQCQ4POV5R30z3CgAJAjHoAEFAQwUSCAgMohwQ/KIsEHyiBhAs8gIQPK +I4EPAADkBOAFIfPKJSEAxg6v/4hwCHWpcJUF7/GiwOB48cA6Dc/xocEIdgDYQMAApl4Ob/mLcAol +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 +AAAbJQ8bDyJwBoCB/wAbMgIAG0EAGxooAADAFgAAGyUCABtAAAAbcQEAZHAHAABhAQBjJAAAGyRS +BoCBAABAF0gGgIEAAEAW7Q8AYQIAZHAQAABhAgBjJAEAGyRSBoCBAABAF0oGgIEAAEAW5A8AYQQA +ZHAHAABhAgBjJAIAGyRSBoCBAABAF0wGgIEAAEAW2w8AYQAAHSQAAAAhAAIPbgkAAGFSBoCBAABA +FgAAGyVOBoCBABsaKAAAABYBABsmAAAAFw0AAGFoBoCBAABAFgIAGyYBEBtoAAAbJAAAQBdUBoCB +ABobKA8bDiJsBoCBAABAFgEAGyYAAEAX1ASAgQ8aGyIAABslAgAbQAAAG3EAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAKAADwAgAAAAAAAAAAA +ACgAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy1gAAMBgAADLWAAEjcAAAJDREUCg0TFxkZGRkJCQAA +JLCAABSAAAAMtYAAAAAAAAy1gAAAAAAAKNGAADyAAAAwgAAAAAAAADGAAACZuViFMoAAAADKmrgz +gAAAAFAAUDSAAAAAUAAANYAAAABQAFA2gAAAAFAAUDeAAAAAAABQOIAAAAAAAAA5gAAAAFAAUDqA +AAAAUABQO4AAAABQAFA8gAAAAFAAAD2AAACZyQpQPoAAAFW4iMk/gAAAAAAAgjCAAAAAAAAAMYAA +AJm5WIUygAAAAMqauDOAAAAAUABQNIAAAABQAAA1gAAAAFAAUDaAAAAAUABQN4AAAAAAAFA4gAAA +AAAAADmAAAAAUABQOoAAAABQAFA7gAAAAFAAUDyAAAAAUAAAPYAAAJnJClA+gAAAVbiIyT+AAAAA +AACCMIAAAAAAAAAxgAAAAAAAADKAAAAAAAAAM4AAAAAAAAA0gAAAmkUAADWAAACqyqrKNoAAAAAg +ACA3gAAAACAAIDiAAAAAIAAAOYAAAAAgACA6gAAAqsqqKjuAAAAAEJbKPIAAAAAAAAA9gAAAAAAA +AD6AAAAAAAAAP4AAAAAAAAAwgAAAAAAAADGAAAAAAAAAMoAAAAAAAAAzgAAAAAAAADSAAACaRQAA +NYAAAKrKqso2gAAAACAAIDeAAAAAIAAgOIAAAAAgAAA5gAAAACAAIDqAAACqyqoqO4AAAAAQlso8 +gAAAAAAAAD2AAAAAAAAAPoAAAAAAAAA/gAAAAAAAAP//AAClAQEAuQHfADsCLQCxABsAFgEbAK8A +GwAUARsAbACgANEAoABvAIMAcQCDAHMAMwDUAQYA0AEAAHgASQB5AGoA3gBqAKgAAAANAQAApgA/ +AKcAAQALAT8ADAEBAAQACACcAcwAnQHMANUBzADWAcwAtAAgABkBIACPAIgA9ACIAJAAIgD1ACIA +kQAEAPYABACFAAAAhgAAAIcAVQCIAAAAiQCqAIoAAACLAN0AjAAAAIUAAQCGAAEAhwBVAIgAAACJ +AKoAigAAAIsA3QCMAAAAhQACAIYAAwCHAFUAiAAAAIkAqgCKAAAAiwDdAIwAAACFAAMAhgAHAIcA +VQCIAAAAiQCqAIoAAACLAN0AjAAAAPv/AAD//wAAuQHfADsCLQCxABsAFgEbAK8AGwAUARsAbACg +ANEAoABvAIMAcQCDAHMAMwDUAQYA0AEAAHgASQB5AGoA3gBqAKgAAAANAQAApgA/AKcAAQALAT8A +DAEBAAQACACcAcwAnQHMANUBzADWAcwAtAAgABkBIACPAIgA9ACIAJAAIgD1ACIAkQAEAPYABACo +AAwADQEMAIUAAACGAAAAhwCZAIgAAACJAKoAigAAAIsA3QCMAAAAhQABAIYAAQCHAJkAiAAAAIkA +qgCKAAAAiwDdAIwAAACFAAIAhgADAIcAmQCIAAAAiQCqAIoAAACLAN0AjAAAAIUAAwCGAAcAhwCZ +AIgAAACJAKoAigAAAIsA3QCMAAAA+/8AAP//AAC5Ad8AsQAbABYBGwCvABsAFAEbAGwAoADRAKAA +bwCDAHEAgwB2AIMAcwAzAG4AMwBwADMAcgAzANcAMwDUAQYA0AEAAH4APADjADwAeABJAN0ASQB/ +AFoA5ABaAKoAPwCrAAEADwE/ABABAQB5AGoA3gBqAKgAAAANAQAApgA3AKcAAQALATcADAEBAAQA +CACcAcwAnQHMANUBzADWAcwAtAAgABkBIAAxAgwAMgIMADMCvQA2AgwANwIMADgCvQCgAIgABQGI +AKEA1QAGAdUAogAEAAcBBACPAIgA9ACIAJAAIgD1ACIAkQAEAPYABACfAAwA+wAMAJQAAACVAAAA +nACXAJ0A0ACaAI0AmAARAJYAMwCXAHcAlAABAJUAAQCcAJcAnQDQAJoAjQCYABEAlgAzAJcAdwCU +AAIAlQADAJwAlwCdANAAmgCNAJgAEQCWADMAlwB3AJQAAwCVAAcAnACXAJ0A0ACaAI0AmAARAJYA +MwCXAHcA+gAAAPkAAAACAZcAAwHQAAABjQD+ABEA/AAzAP0AdwD6AAEA+QABAAIBlwADAdAAAAGN +AP4AEQD8ADMA/QB3APoAAgD5AAMAAgGXAAMB0AAAAY0A/gARAPwAMwD9AHcA+gADAPkABwACAZcA +AwHQAAABjQD+ABEA/AAzAP0AdwCFAAAAhgAAAIcAVQCIAAAAiQCnAIoAAACLAN4AjAAAAIUAAQCG +AAEAhwBVAIgAAACJAKcAigAAAIsA3gCMAAAAhQACAIYAAwCHAFUAiAAAAIkApwCKAAAAiwDeAIwA +AACFAAMAhgAHAIcAVQCIAAAAiQCnAIoAAACLAN4AjAAAAOsAAADqAAAA7ABVAO0AAADuAKcA7wAA +APAA3gDxAAAA6wABAOoAAQDsAFUA7QAAAO4ApwDvAAAA8ADeAPEAAADrAAIA6gADAOwAVQDtAAAA +7gCnAO8AAADwAN4A8QAAAOsAAwDqAAcA7ABVAO0AAADuAKcA7wAAAPAA3gDxAAAApAGAAKEBQAD7 +/wAA//8AAKUBAQC5Ad8AsQAbABYBGwCvABsAFAEbAGwAoADRAKAAbwCDAHEAgwB2AIMAcwAzAG4A +MwBwADMAcgAzANcAMwDUAQYA0AEAAH4APADjADwAeABJAN0ASQB/AFoA5ABaAKoAPwCrAAEADwE/ +ABABAQB5AGoA3gBqAKgAAAANAQAApgA3AKcAAQALATcADAEBAAQACACcAcwAnQHMANUBzADWAcwA +tAAgABkBIAAxAgwAMgIMADMCvQA2AgwANwIMADgCvQCgAIgABQGIAKEA1QAGAdUAogAEAAcBBACP +AIgA9ACIAJAAIgD1ACIAkQAEAPYABACfAAwA+wAMAJQAAACVAAAAnACXAJ0A0ACaAI0AmAARAJYA +MwCXAHcAlAABAJUAAQCcAJcAnQDQAJoAjQCYABEAlgAzAJcAdwCUAAIAlQADAJwAlwCdANAAmgCN +AJgAEQCWADMAlwB3AJQAAwCVAAcAnACXAJ0A0ACaAI0AmAARAJYAMwCXAHcA+gAAAPkAAAACAZcA +AwHQAAABjQD+ABEA/AAzAP0AdwD6AAEA+QABAAIBlwADAdAAAAGNAP4AEQD8ADMA/QB3APoAAgD5 +AAMAAgGXAAMB0AAAAY0A/gARAPwAMwD9AHcA+gADAPkABwACAZcAAwHQAAABjQD+ABEA/AAzAP0A +dwCFAAAAhgAAAIcAVQCIAAAAiQCnAIoAAACLAN4AjAAAAIUAAQCGAAEAhwBVAIgAAACJAKcAigAA +AIsA3gCMAAAAhQACAIYAAwCHAFUAiAAAAIkApwCKAAAAiwDeAIwAAACFAAMAhgAHAIcAVQCIAAAA +iQCnAIoAAACLAN4AjAAAAOsAAADqAAAA7ABVAO0AAADuAKcA7wAAAPAA3gDxAAAA6wABAOoAAQDs +AFUA7QAAAO4ApwDvAAAA8ADeAPEAAADrAAIA6gADAOwAVQDtAAAA7gCnAO8AAADwAN4A8QAAAOsA +AwDqAAcA7ABVAO0AAADuAKcA7wAAAPAA3gDxAAAApAGAAKEBQAD7/wAA//8AALkBwQDUAQMA0AEE +AHgAPADdADwAeQBqAN4AagCoAAEADQEBAAQACACcAcwAnQHMANUBzADWAcwAtAAgABkBIACPAIgA +9ACIAJAAAAD1AAAAkQAGAPYABgCFAAQA6wAEAKQBgABdAjMASgIOAEwCDgBNAgEArQEHALMBBAC4 +AQAAuwFWAFACCwBRAgMAUgIBAFMCAABUAgsAVQIDAFYCAQBXAgAAZgIGAGgCBwBqAgcAbAIHAG4C +BQBwAgwAfQIGAH8CBwCBAgcAgwIHAIUCBQCHAgwAtQAhABoBIQBLAgEAoQFAALMAAAAYAQAAlAIL +AJUCAwCWAgEAlwIAAJgCCwCZAgMAmgIBAJsCAACyADAAFwEwAJwCDwChAg8AoAKIAJ8CiACeAogA +nQKIAKUCiACkAogAowKIAKICiAD7/wAA//8AALkBwQDUAQMA0AEAAHgAPADdADwAeQBqAN4AagCo +AAEADQEBAAQACACcAcwAnQHMANUBzADWAcwAtAAgABkBIACPAIgA9ACIAJAAAAD1AAAAkQAGAPYA +BgCFAAQA6wAEAKQBgABdAjYASgINAEwCDwBNAgEArQEGALMBBAC4AQAAuwFWAFACCwBRAgMAUgIB +AFMCAABUAgsAVQIDAFYCAQBXAgAAZgIGAGgCBwBqAgcAbAIHAG4CBQBwAgwAfQIGAH8CBwCBAgcA +gwIHAIUCBQCHAgwAtQAhABoBIQChAUAA+/8AAP//AAC5AcEA1AEDANABBAB4ADwA3QA8AHkAagDe +AGoAqAABAA0BAQAEAAgAnAHMAJ0BzADVAcwA1gHMALQAIAAZASAAjwCIAPQAiACQAAAA9QAAAJEA +BgD2AAYAhQAEAOsABACkAYAAXQIzAEoCDgBMAg4ATQIBAK0BBwCzAQQAuAEAALsBVgBQAgsAUQID +AFICAQBTAgAAVAILAFUCAwBWAgEAVwIAAJQCCwCVAgMAlgIBAJcCAACYAgsAmQIDAJoCAQCbAgAA +ZgIGAGgCBwBqAgYAbAIHAG4CBQBwAgwAfQIGAH8CBwCBAgYAgwIHAIUCBQCHAgwAsgAwABcBMACz +AAAAGAEAAJwCDwChAg8AoAKIAJ8CiACeAogAnQKIAKUCiACkAogAowKIAKICiAC1ACEAGgEhAKEB +QABLAgEA+/8AAP//AAC5AcEA1AEDANABAAB4ADwA3QA8AHkAagDeAGoAqAABAA0BAQAEAAgAnAHM +AJ0BzADVAcwA1gHMALQAIAAZASAAjwCIAPQAiACQAAAA9QAAAJEABgD2AAYAhQAEAOsABACkAYAA +XQI2AEoCDQBMAg8ATQIBAK0BBgCzAQQAuAEAALsBVgBQAgsAUQIDAFICAQBTAgAAVAILAFUCAwBW +AgEAVwIAAGYCBgBoAgcAagIGAGwCBwBuAgUAcAIMAH0CBgB/AgcAgQIGAIMCBwCFAgUAhwIMALUA +IQAaASEAoQFAAPv/AAAAAAAAAgAAAA3SEtIT0hTSDNIV0gvSAtIR0gRDABAUEAkQERABQBvSHNIA +0goACwAEAA4AtQAaAQ8AQgC8AMMAIQEoAbYAtwC4ALkAvQC+AL8AwAAbARwBHQEeASIBIwEkASUB +CgAAAAsAAAC2AAAAtwAAALgAAAC5AAAAGwEAABwBAAAdAQAAHgEAAL0AAAC+AAAAvwAAAMAAAAAi +AQAAIwEAACQBAAAlAQAAEtIAABPSAAAAAAEAAgADACwAZAB0AIAAjAChAAcAAAAAAAEAAgADAAAA +AAC3EyIAuBQjALkVJAC7FiUAvBcmAL0YJwDAGSgAxBopAAcbAAAIHAEACx0CAAweAwAQHwQAIiEF +ACQiBgAmIwcAKCQIAColCQAsJgoALicLADAoDAA0KQ0AOCoOADwrDwBALBAAZC4RAGgvEgBsMBMA +cDEUAHQyFQB4MxYAfDQXAIA1GACENhkAiDcaAIw4GwCROhwAlTsdAJk8HgCdPR8AoT4gAKU/IQAk +SQYCLEoKAjRLDQE8TA8BZE0RAWxOEwF0TxUBfFAXAYRRGQGVUh0BnVMfAQEEAAACBQEAAwYCAAQH +AwAFCAQABgkFAAcKBgAICwcACQwIAAoNCQALDgoADA8LAA0QDAAOEQ0AAUAABAJBAQQDQgIEBEMD +BAVEBAQGRQUEB0YGBAhHBwQJSAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAACGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhwCIAAQABQAGAAYABwAIAAgACQAJ +AAoACwAMAAwAJAAlACUAJgAnACgAKABEAEUARgBGAEcASABIAEkASgBKAEsATABoAGgAaQBqAGsA +bABtAG0AbgBvAG8AcABxAHEAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgBy +AAoAPwCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhwCIAAQABQAGAAYABwAIAAgACQAJAAoA +CwAMAAwAJAAlACUAJgAnACgAKABEAEUARgBGAEcASABIAEkASgBKAEsATABoAGgAaQBqAGsAbABt +AG0AbgBvAG8AcABxAHEAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAAoA +PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAEAcAABEHAAATBwAAMgbAADMGwAANAygAEAMoAAcHKAAQCCgACgkoABs +EKAAGCSgAHgkoAB8JKAAgCSgAIQkoABQEKAAVBCgAEgmoABgEKAATCagAGQQoABoEKAAXBCgAFgQ +oAAwEKAAPBCgADQQoAAsDKAAAIGkAAGBpAADgaQAiCSgAIwkoACQJKAAlCSgAJgkoACcJKAAoCSg +AKQkoAAAAAAAAAAAAAAAAAAAAAAAAQACAAIAAwAEAAQABQAGAAYABwAIAAgACQAKAAoACwAMAAwA +DQAOAA4ADwAmACcAKAApACoARgBGAEcASABIAEkASgBKAEsATABoAGkAagBqAGsAbABsAG0AbgBu +AG8AcABwAHEAcgByAHMAcwB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AAoA +PwAAAAAAAAAAAAAAAAAAAAAAAQABAAIAAwADAAQABQAFAAYABwAHAAgACQAJAAoACwALAAwADAAN +AA4AIwAkACUAJgAnACgAKQBEAEUARgBGAEcARwBIAEgASQBJAEoASwBoAGgAaQBqAGsAbABtAG0A +bgBvAG8AcABxAHEAcgByAHMAcwBzAHMAcwBzAHMAcwBzAHMAcwBzAHMAcwBzAHMAcwBzAAoAPwAA +AAAAAAAAAAAAAAAAAAAAAQACAAIAAwAEAAQABQAGAAYABwAIAAgACQAKAAoACwAMAAwADQAOAA4A +DwAmACcAKAApACoARgBGAEcASABIAEkASgBKAEsATABoAGkAagBqAGsAbABsAG0AbgBuAG8AcABw +AHEAcgByAHMAcwB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AAoAPwAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAgADAAMABAAFAAUABgAHAAcACAAJAAkACgAKAAsAJAAl +ACUAJgAnACgAKABEAEUARgBGAEcASABIAEkASgBKAEsATABoAGgAaQBqAGsAbABtAG0AbgBvAG8A +cABxAHEAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAAoAPwCAf4AAAAAA +ALIMLAH/////////AAH//wID////BP//////////////////////Bf8G/wf/CP8J/wr/C/8M//// +Df///w7///8P////EP//////////////////////////////////////////////Ef///xL///8T +////FP///xX///8W////F////xj///8Z////Gv///xv/////HP///x3///8e////H////yD///8h +//////////////////////8iIyT/JSYn//8o////Kf////////////////////////////////// +////////////////////////////////////////////AAEAAQEAAAAAAAAAAAEAAAAAAAAAAAAA +AAAAAAMAAAAAAAAAAQAAAAAAAAA4VgEAAAAAAGx2AAABAAAAZBgCAAIAAAC8FwIAAwAAADB7AgAE +AAAAOFYBAAUAAAAsPgEABgAAAKQKAQAHAAAAtD4BAAgAAAB8PgAACQAAAFRpAAAKAAAAoN4AAAsA +AABsNwAADAAAADR7AgANAAAAzP8AAA4AAACAAAEADwAAAFj/AAAQAAAAXAABABEAAACIZwEAEgAA +AFg8AgATAAAAKCgAABQAAADMlAEAFQAAAFB9AQAWAAAAVI0BABcAAADkFgIAGAAAALC/AQAZAAAA +1CsBABoAAAA0VgEAGwAAAAAUBQAAAAAAAAAAAAAAAAAAAAAA/wD/AAAAAAAABwAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAwogAAMKIAADCiAABsiAAAMKIAADCiAADQiAAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIA +ADCiAAAwogAAXJEAAKCQAACQkAAAuI8AAMiQAAB0jwAAMKIAADCiAAC4lwAAbJsAAIidAAAwogAA +MKIAADCiAACYoQAAvJYAAPSWAABglgAAMKIAADCiAAAwogAAVKEAADCiAABAlgAAMKIAADCiAAAw +ogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCi +AAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIA +ADCiAACUiQAAMKIAADCiAAAwogAAMKIAADCiAACkngAAMKIAADCiAAAwogAAMKIAADCiAADsjAAA +MKIAAPyMAAD4jAAA8IwAAPSMAAAQhgAAMKIAAMiFAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAw +ogAAMKIAAEyFAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAAPyK +AAB0igAAMKIAABiLAAAwogAAtIkAADiPAAAwogAAMKIAAHyRAAAwogAAMKIAADCiAAAwogAAMKIA +AACTAACskQAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAAjQAA +MKIAADCiAAAwogAASJ4AADCiAAAwogAAMKIAAOigAAAwogAATKEAAOSdAAAwogAAMKIAACyEAACk +nQAAMKIAADCiAADAjwAA2I8AADCiAAAwogAAqIwAAGCGAAAwogAAMKIAADCiAAD8lgAAXI8AADCi +AAAwogAAMKIAADCiAAAwogAAMKIAAJSOAAAwogAAFKMAAFSlAACIpAAAXKUAAICkAAB4pAAAZKUA +AFSiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAALCMAAAwogAAMKIAADCiAAAwogAA +MKIAADCiAAAwogAA+KUAAAynAAB0hAAAwIQAADCiAAAwogAAMKIAADCiAAAwogAAlIYAADCiAAAw +ogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCi +AAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAAAwogAAMKIAADCiAACYhgAAuIcA +ACiHAABspQAA2IQAAESIAADciAAAMKIAADCiAAAwogAAMKIAAMiIAADMiAAAMKIAADCiAABwiAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAzLQAAPiyAABEtgAAQLUAAFi3AAAAAAEA/////wAAAAD//////////wEA +AAAQDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAND+AAAAAAAAAAAAAAAAGCCg +ACAgoABAIaAASCGgABwgoAAkIKAARCGgAEwhoAAoIKAAMCCgAGghoABwIaAALCCgADQgoABsIaAA +dCGgADggoAA8IKAAeCGgAHwhoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQNAAAA/wMAZA4AAAD/BQAIDgAAAP8tAOQN +AAAA/z0AgA0AAAD/BACoDQAAAP8lAFziAAAA/90ALA4AABAQTAAAAAAAAAAAAAABAQA8PDw8PDw8 +PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PBUVFRU8PDw8FRUVFTw8PDwAAAAAAAAAAAAAAAAAAAAA +PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwVFRUVPDw8PBUVFRU8PDw8AAAAAAAAAAAA +AAAAAAAAADw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8FRUVFTw8PDwVFRUVPDw8PAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAP8AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAFgQAACwFwAA4BMAADwRAAB8GQAA8BQAAJgWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0B4AAtLWAABgAAAB0tYAA +AAAAAAAAAAAAAAAAAAAAAAQpAQDswwAAkCQAAOzDAADswwAA7MMAABAHAABMNAIAAPAAAOzDAADs +wwAAJCwAACQsAAAkLAAAJCwAACQsAAAkLAAAJCwAAOzDAADswwAA7MMAAOzDAAA0WgAA7MMAAOzD +AADswwAA7MMAAOzDAADk7wAA7MMAAOzDAACY4QAAAAAAAMAOAQDEDgEAtAIAAKACAABcZgEAAAAA +AHTTAAAM+gEAnNMAADz6AQDA0wAAbPoBAEBDgACgqoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAASCIAABAiAAC4toAAAAIAAAAAAACIHgEAWB4BALi4gABABQAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAjB4BAAxjAQBIv4AAVAAAAAAAAACIHgEA4GEBAPi9gABQAQAAAAAAAIgeAQDIWwEAhAeA +AAgAAAABAAAAiB4BAFQdAQAAAAAAUAEAAAAAAACIHgEAVFwBANg7gAACAAAAAAAAAIgeAQBgWwEA +gAeAAAQAAAAAAAAAkB4BAFgeAQCcv4AAKgAAAAAAAACIHgEAWB4BAPhKgAAIAAAAAAAAAAAAAABg +HgEAAAAAAAAAAAABAAAAAAAAAHQeAQAAAAAAAAAAAAAAAAAAAAAAXB4BAAAAAAAAAAAAAAAAAIge +AQDA/AEAAAAAAAAAAAAAAAAAiB4BAID8AQCMB4AABAAAAAAAAABuAG4AaQDAAKAAUACAAL4AUAF9 +AD4AAQABAAEAWAIoAOYBLQBVAzwA3AFjAAAAbgBuAGkAwACgAFAAgAC+AFABfQA+AAEAAQABAFgC +KADmAS0AVQM8ANwBYwAAAAAAAAABAQAA+CcBABXSAAAAAAAA/wMAAPgnAQAM0gAAAAAAAP8BAAD4 +JwEAFdIAAAoAAAAA/A8A+CcBAAzSAAAJAAAAAP4DAPgnAQAV0gAAFAAAAAAA8D/4JwEADNIAABIA +AAAAAPwH+CcBAAbSAAAAAAAA/wEAAPgnAQAH0gAAAAAAAP8DAAD4JwEABtIAAAkAAAAA/gMA+CcB +AAfSAAAKAAAAAPwPAPgnAQAG0gAAEgAAAAAA/Af4JwEAB9IAABQAAAAAAPA/AAAAAAAAAAAAAAAA +AQAAAAEAAAAKAAAABQAAAAUAAAAGAAAACgAAAAoAAAAGAAAABAAAAAUAAAAGAAAABQAAAAUAAAAG +AAAABgAAAAYAAAAGAAAABwAAAAcAAAAHAAAACAAAAAgAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAA +AAABAAAAAgAAAAEAAAACAAAAAQAAAAEAAAADAAAAAwAAAAIAAAABAAAABAAAAAAAAAAAAAAAAgAA +AAEAAAABAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA +AAAALAEAAF4BAAABAAAAAQAAAAEAAAABAAAAAwAAAAAAAAAAAAAAzDYBAHg8AQAkOwEA/DwBAHQ8 +AQBEOgEA+DwBADg4AQA0OAEAYOMWACDWEwAAAAAAEAAAAACAAAAAAKAAECcAAOgDAADoAwAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAEAAAABAAAAAgAAAAUAAAACAAAAAgAAAAUAAAAC +AAAAAgAAAAEAAAABAAAABQAAAAUAAAACAAAABQAAAAUAAAAAAAAABQAAAAIAAAACAAAAAAAAAAAA +AAAAAAAABQAAAAUAAAAAAAAABQAAAAIAAAACAAAABQAAAAUAAAAFAAAAAAAAAAUAAAACAAAABQAA +AAEAAAABAAAAAgAAAAIAAAACAAAABQAAAAUAAAACAAAABQAAAAEAAAABAAAAAgAAAAIAAAACAAAA +BQAAAAUAAAACAAAAAgAAAAUAAAABAAAAAgAAAAUAAAACAAAABQAAAAUAAAAEAAAABQAAAAUAAAAB +AAAABQAAAAUAAAAFAAAAAgAAAAIAAAAFAAAABQAAAAUAAAABAAAABQAAAAUAAAAFAAAAAgAAAAIA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAEQAAEAAAAC +gAABQgAGAhAAAiAAAAPAAAFDAAYDEAACwAAAA8AAAUMABgQQAAJAAAACgAABRAAGBREAAEAAAAPA +AAFFAAYGEQAA4AAAA8AAAUUABgcRAAEAAAACgAABRgAGCBEAAiAAAAPAAAFHAAYJEQACwAAAA8AA +AUcABgoRAAJAAAACgAABSAAGCxIAAEAAAAPAAAFJAAYMEgAA4AAAA8AAAUkABg0SAAEAAAACgAAB +SgAGDhIAAgAAAAKAAAFMAAYBeAAwAAAAUAAABLY8BgJ4AEQAAABQAAAEuTwGA3kACAAAAFAAAAS7 +PAYEeQAcAAAAUAAABL48BgV5ADAAAABQAAAEwDwGBnkARAAAAFAAAATDPAYHegAIAAAAUAAABMU8 +Bgh6ABwAAABQAAAEyDwGCXoAMAAAAFAAAATKPAYKegBEAAAAUAAABM08Bgt7AAgAAABQAAAEzzwG +DHsAHAAAAFAAAATSPAYNewAwAAAAUAAABNQ8Bg58ABAAAABQAAAE2j4GAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAQIBAQACAQABAgICAAEBAAIBAgECAAIAAQIDgICAgICAgIABgAKAgICAgMAAkADQAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAG4AAgBuAG4AbgACAGkAaQBu +AAEAwADAAOgAAQCgAKAANgEDAFAAUAD1AAEAgACAAOgAAQC+AL4AvgABAFABUAFQAQEAfQB9AK8A +AwA+AD4APgABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAFgCWAJYAgEAKAAoACgAAQDmAeYB5gEB +AC0ALQAtAAEAVQNVA1UDAQA8ADwAPAABANwB3AHcAQEAYwBjAGMAAQAAAAAAAAAAADIABQAyAAUA +AgAIAGQAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAAAjAqMCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAACAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoCYCABUAAAADAAAAUGmAAAAA +AAAAAAAAAAAAANQfAgAGAAAAAAAAAHBpgAAAAAAAAAAAAAAAAABEJgIABQAAAAMAAABQaYAAAAAA +AAAAAAAAAAAAOCYCAAoAAAADAAAAUGmAAAAAAAAAAAAAAAAAAAAjAgAEAAAAAAAAAHBpgAAAAAAA +AAAAAAAAAAAAIwIABAAAAAAAAABwaYAAAAAAAAAAAAAAAAAAACMCAAQAAAAAAAAAcGmAAAAAAAAA +AAAAAAAAAAAjAgAEAAAAAAAAAHBpgAAAAAAAAAAAAAAAAAAAIwIABAAAAAAAAABwaYAAAAAAAAAA +AAAAAAAA8CMCAAYAAAAAAAAAcGmAAAAAAAAAAAAAAAAAACgkAgAEAAAAAAAAAHBpgAAAAAAAAAAA +AAAAAAAoJAIABAAAAAAAAABwaYAAAAAAAAAAAAAAAAAAKCQCAAQAAAAAAAAAcGmAAAAAAAAAAAAA +AAAAACgkAgAEAAAAAAAAAHBpgAAAAAAAAAAAAAAAAADwIwIABgAAAAAAAABwaYAAAAAAAAAAAAAA +AAAA8CMCAAYAAAAAAAAAcGmAAAAAAAAAAAAAAAAAAPAjAgAGAAAAAAAAAHBpgAAAAAAAAAAAAAAA +AAAoJAIABAAAAAAAAABwaYAAAAAAAAAAAAAAAAAAKCQCAAQAAAAAAAAAcGmAAAAAAAAAAAAAAAAA +ABQhAgAKAAAAAAAAAHBpgAAAAAAAAAAAAAAAAAD8IgIACgAAAAAAAABwaYAAAAAAAAAAAAAAAAAA +/CICAAoAAAAAAAAAcGmAAAAAAAAAAAAAAAAAAPwiAgAKAAAAAAAAAHBpgAAAAAAAAAAAAAAAAAD8 +IgIACgAAAAAAAABwaYAAAAAAAAAAAAAAAAAA/CICAAoAAAAAAAAAcGmAAAAAAAAAAAAAAAAAAPwi +AgAKAAAAAAAAAHBpgAAAAAAAAAAAAAAAAAD8IgIACgAAAAAAAABwaYAAAAAAAAAAAAAAAAAA/CIC +AAoAAAAAAAAAcGmAAAAAAAAAAAAAAAAAAPwiAgAKAAAAAAAAAHBpgAAAAAAAAAAAAAAAAAD8IgIA +CgAAAAAAAABwaYAAAAAAAAAAAAAAAAAA/CICAAoAAAAAAAAAcGmAAAAAAAAAAAAAAAAAAPwiAgAK +AAAAAAAAAHBpgAAAAAAAAAAAAAAAAACMKAIABgAAAAAAAABwaYAAAAAAAAAAAAAAAAAA3CcCAAUA +AAADAAAAUGmAAAAAAAAAAAAAAAAAAAQgAgAKAAAAAAAAAHBpgAAAAAAAAAAAAAAAAACkIAIACgAA +AAAAAABwaYAAAAAAAAAAAAAAAAAA9DoCAAoAAAADAAAAUGmAAAAAAAAAAAAAAAAAAGAhAgAKAAAA +AAAAAHBpgAAAAAAAAAAAAAAAAABMIgIACgAAAAAAAABwaYAAAAAAAAAAAAAAAAAA5CQCAAoAAAAA +AAAAcGmAAAAAAAAAAAAAAAAAAKAlAgAKAAAAAAAAAHBpgAAAAAAAAAAAAAAAAACkJgIACgAAAAAA +AABwaYAAAAAAAAAAAAAAAAAASCcCAAoAAAAAAAAAcGmAAAAAAAAAAAAAAAAAAKAnAgAGAAAAAAAA +AHBpgAAAAAAAAAAAAAAAAACwJwIABgAAAAAAAABwaYAAAAAAAAAAAAAAAAAA1CcCAAEAAAAAAAAA +cGmAAAAAAAAAAAAAAAAAAMwpAgAKAAAAAQAAAJBpgAAAAAAAAAAAAAAAAABAKQIABQAAAAEAAACQ +aYAAAAAAAAAAAAAAAAAA5CwCAAYAAAABAAAAkGmAAAAAAAAAAAAAAAAAADgtAgAGAAAAAQAAAJBp +gAAAAAAAAAAAAAAAAABYMAIACgAAAAEAAACQaYAAAAAAAAAAAAAAAAAAAAAAAFBpgABQaYAAuCCg +AGwgoAAAgAEA/3/8/wAAAAAAAAAAcGmAAHBpgACkIKAAOCCgAAEAAAD8////AAAAAAAAAACQaYAA +kGmAAKggoAA8IKAAEAAAAMf///8AAAAAAAAAALBpgACwaYAArCCgAHghoABAAQAAP/7//wAAAAAA +AAAA0GmAANBpgACwIKAAfCGgAAAMAAD/8f//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWCECABUA +AAADAAAAUGmAAAAAAABQAAAAAAAAADQHgAC0tYAAGAAAAHS1gAAAAAAAAAAAADQHgAC0tYAAGAAA +AHS1gAAAAAAAAAAAAAAAAAA0B4AAtLWAABgAAAB0tYAAAAAAAAAAAAAAAAAAfwAAAAAAAAAAfwAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAA//8AAAEAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAABAgME +BAQEBAUGBwgICAgICQoLDA0AAG47aDtiO1w7bjpoOmI6XDpuOWg5YjlcOW4raCtiK1wrbipoKmIq +XCpuKWgpYilcKW4oaChiKFwobidoJ2InXCduJmgmYiZcJm4laCViJVwlbiRoJGIkXCRuI2gjYiNc +I24iaCJiIlwibiFoIWIhXCFuIGggYiBcIGITXBNuEmgSYhJcEm4RaBFiEVwRbhBoEGIQXBBuAmgC +YgJcAm4BaAFiAVwBbgBoAFQAAABuO2g7YjtcO246aDpiOlw6bjloOWI5XDluK2grYitcK24qaCpi +KlwqbiloKWIpXCluKGgoYihcKG4naCdiJ1wnbiZoJmImXCZuJWglYiVcJW4kaCRiJFwkbiNoI2Ij +XCNuImgiYiJcIm4haCFiIVwhbiBoIGIgXCBuEmgSYhJcEm4RaBFiEVwRbhBoEGIQXBBXEFIQTRBJ +EG4BaAFiAVwBbgBoAGIAXABUAAAAAAAAAAAAAAAdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +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 +CjMiNDo1UTZpN4A4ljmtOsM72TzvPQQ/GUAuQUJCVkNqRH1F////AP///wH/AgP///8EBf8J/wcK +BggLAAEBAgECAgMBAQEBAQEBAQICAgICAgICAwMDAwMDAwMEBAQEBAQEBAECAgICAgIDAwMDAwMD +AwMDAwMDAwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAMQ2AAAQOQAARDMAAEQyAADEMgAA5DcA +AAwyAAAMOAAAjDgAADoBAgHVAN8A2gCiAHUAfwCKBSoDOQGoAYoFygLZAEgBAQMPBwoUN25qARoB +2QDoAAoBugB5AIgAygFKAeIA+QDKAeoAggCZAHTRRRfooosuAAUHAQMEAAUBBQAAAAUGAAIEAAUA +BQAAAQIBAgMEAAAFBgcICQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAUN4AABThAAAk3AAAAQAAAAAAAAABAAAAAgAAAAMAAAAAAAAABAAA +AAIAAAAFAAAABwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcH +BwcHBwcHBwcHBgYGBgYFBQUFBQQEBAQEAwMDAwMCAgICAgEBAQEBAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAKAAwACwALAAoADwANABAADwA +jABsAFgASAD0ALAAf/8HDx8/AQMwAAAANgAAAAwAAAASAAAAGAAAACQAAAAGAAAACQAAAAUABwID +BAYGQAOABsAJAA2AEwAaQB2AIIAGAA2AEwAaACcANIA6AEHACYATQB0AJ4A6AE7AV4BhmQMzB9kK +cw6mFeYcgCAZJDMHcw6mFeYcWSvMOQBBM0jZCqYVgCBZKwBBplaAYVlsndiJnU7sxE40SIM0J3Zi +JxqkQRoTO7ETERiBEQ/8wA9O7MROJ3ZiJxqkQRoTO7ETDdIgDYmd2AkIjMAIB37gBzRIgzQapEEa +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 +QAAAAIAAAAAAAQAAAAIAAEAAAAAABAAAQAAAAEAAAAAA8GEAAAEBAgECAgMAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAABkAAAAKgAAAA4AAAAAAAEBAAAAAAAAAAAAAQEAAAAAAgABAAICAwMDZCYC +AHAmAgB8JgIAiCYCAJAmAgCYJgIAAQEAAQIBAQEAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA +AQAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAP////8A +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIANAAAAIAAAgA0AAIAN +AAAAIAAAgA0AAAAGAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +ABAAAAAkNQIAICCADwAAQABpIAAAaSBAAGkgAABpIEAAICCADwAA6ABpIAAAaSBAAGkgAABpIEAA +ICCADwAA7OlpIAAAaSBAAGkgAABKIAAASiEAAEoiAABKIwAASiQAAEolAABKJgAASicAAEogABBK +IQAQSiIAEEojABBKJAAQSiUAEEomABBKJwAQSiAAIEohACBKIgAgSiMAIEokACBKJQAgSiYAIEon +ACBKIAAwSiEAMAokgD+BAABAQSycMEAsnDBCJBw0CiKAP4AAIGMKIwA3Kg3ABkomAHBpIEAASiYA +cEomAHBKJgBwSiYAcAAWAHCAADwpQHggIECHAAAAAAAAAAAAAPwciLb8HEi2/BwItvwcyLX8HIi1 +/BxItfwcCLX8HMi0/ByItPwcSLT8HAi0/BzIs/wciLP8HEiz4H7geATcON018OB4BNw03TPw4HgE +3DDdMfDgeATcLN0v8OB4BNwo3S3w4HgE3CTdK/DgeATcIN0p8OB4BNwc3Sfw4HgE3BjdJfDgeATc +FN0j8OB4BNwQ3SHw4HgE3AzdH/DgeATcCN0c8OB4BNwE3RnwNBQaMDAUGTAsFBgwKBQXMCQUFjAg +FBUwHBQUMBgUEzAUFBIwEBQRMAwUEDACxwHGsCRNM7AkHzPgfuB44HjgeOB44HjgeAokgPAFIEQA +4CDBB0Qk/oBBKsQAhAACAC8kAvFCIQEBQiADAeggogQEEQQCBBEFAgQRBgIEEQcCBBsIAQQbSAEE +G4gBBBvIASwAJQBEIj6BPAAiAEQi/IBAIcEA4CDBB0AjwwCoIIABARGEAgEbCgEgIMAHBBEEAgQR +BQIEGwgB1Afh/wQbSAFEIvyABBEEAskH7/8EGwgBQiFBAEIgQwCoIIABARGEAgEbCgEgIMAHz3Gg +AKwvGIGauBihqQLgEAXY4HjPcaAArC8YgbO4urgYoZUC4BBk2AoiQIAA2e4AAQAvJgDwSiZAAE4A +BgBPACAAiiX/D+B4CiJAgADZzgABAGwAJAAvJgDwXAAFACsINQhKJkAACHEA2AIhvoDgIMUHQnkB +4AIhvoDgIMUHQnnrB+//AeAvLQEAQCVFAAImfPEAACAAAChAAeggYgMvIACALyFLAAIhvoDAIIYB +wiGGAOB+EQAgAEogABBKIEAQDiJCAC8gCxLOIEWAiiX/DwgABQAvLQEAQCVFAAImfPEAACAAAChA +AUomQADoICIDLyAAgC8hSwACIb6AwCCGAcIhhgBKJgAAQiD+kM4gggFEIH6QziGCAeB+CQAAAOB4 +CiYA8Iogvw/KIGQA4H8vIAMA4H+KIP8P/ByIsfwcSLH8HAix4cPhwuHB4cAHwBwcwDHhwOB/AcDx +wBYNz/8IdlpyAYlAiRC4GLoHegKJCLhHeEOJB3oAhuKGByCHAEWJBIkQuhi4R3hGiQi6R3hHiQd6 +AYajhgcgiAAIiUmJGLgQugd6CokIuAd6C4lHeE2JB38MiRC6GLhHeE6JCLoviUd4J3gHfUojQCFe +8IIMoAUA2Qh36nB6DKAFAdkHf+hwbgygBQLZB38JcGYMoAUD2SCG53gHIQcAQSsABlIMoAUA2Qhz +KXBKDKAFAdkHe0lwPgygBQLZB3tpcDYMoAUD2SGGZ3gHIQgAQS4AJiIMoAUA2QhzCnAaDKAFAdkH +eypwDgygBQLZB3uIcAYMoAUD2eKGZ3gHf0EtABb2C6AFANkIc4pw6gugBQHZB3vIcOILoAUC2Qd7 +qnDWC6AFA9mjhmd4B31BLwAGxgugBQDZCHNBLQAUD3i6C6AFAdkHe0EvABIPeKoLoAUC2Qd7LyAH +Ap4LoAUD2SSGZ3gHIQUAQSgAFo4LoAUA2QhzQS8ABA94fgugBQHZB3tBLQASD3hyC6AFAtkHe+94 +ZgugBQPZZ3hlhgd7QS8AFlYLoAUA2ZhwQSgAFA94SgugBQHZByQEAEEvAAIPeDoLoAUC2QckBACv +eC4LoAUD2SaGByAAAQchFgBBLQAWGgugBQDZCHVBLwAUD3gKC6AFAdkHfUEoABIPeP4KoAUC2Qd9 +LyDHAfIKoAUD2ad4p4ZCI1OgQS0JBEErEAQHfSDmQS0XFEEuACIvIMcQQS0KEi8jhxVBLQECLyRH +A0EuFCRBKwICLyVHIS8nxyUvJwcALyFHEi8ihxIvIAckLyFHIC8kByUvJocAQS0ABgT1igqgBQTZ +BCCPDwD/AADqcHoKoAUE2f/ZELkkeAd/6HBqCqAFBNn/2Qi5JHgHfwlwWgqgBQTZD3gghud4J3hB +KAEGABpCIEEoAQQBGkIgQSgBAgMaAiACGkIgQSsABioKoAUE2QQggw8A/wAAKXAaCqAFBNn/2RC5 +JHgHe0lwCgqgBQTZ/9kIuSR4B3tpcPoJoAUE2Q94IYZneCd4QSgBBgQaQiBBKAEEBRpCIEEoAQIH +GgIgBhpCIEEuACbOCaAFBNkEIIMPAP8AAApwvgmgBQTZ/9kQuSR4B3sqcK4JoAUE2f/ZCLkkeAd7 +iHCeCaAFBNkPeCKGZ3gneEEoAQYIGkIgQSgBBAkaQiBBKAECCxoCIAoaQiBBLQAWbgmgBQTZBCCD +DwD/AACKcF4JoAUE2f/ZELkkeAd7yHBOCaAFBNn/2Qi5JHgHe6pwPgmgBQTZD3gjhmd4J3hBKAEG +DBpCIEEoAQQNGkIgQSgBAg4aQiCBAe//DxoCIOB48cBOCc//ngkgAAh1ANko2BUlQhAVJQMQwIPg +gsCi4KPBg+GCwaLho8KD4oLCouKjw4PjggThZLjDotkJIoDjownbBIUQ5Ti4AgmgBQTZD3i+CKAF +ANkIdgCFMLgPeO4IoAUE2Q94qgigBQHZB34AhSi4D3jWCKAFBNkPeJIIoAUC2Qd+AI3GCKAFBNkP +eIIIoAUD2cd4AKUBhTi4rgigBQTZD3hqCKAFANkIdgGFMLgPeJoIoAUE2Q94VgigBQHZB34BhSi4 +D3iCCKAFBNkPeD4IoAUC2Qd+BI1yCKAFBNkPeC4IoAUD2cd4AaUChTi4WgigBQTZD3gWCKAFANkI +dgKFMLgPeEYIoAUE2Q94AgigBQHZB34ChSi4D3guCKAFBNkPeOoPYAUC2Qd+CI0eCKAFBNkPeNoP +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 +GIAD2s9woADUC1Gg4HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HhRoOS74SDCBxbYUhEA +huC44SDBB8og4QUJCF4ACQveAOB/EtgB2c9wgABoKc9ygABE17QSAwAgqAaDAeAGox+CDwieA89w +gAAABiCgB/APCN4Dz3CAAAQGIKAV2OB+4HjgfuB48cA2C4/zz3CAAETXMoAnCV4Cz3GAAPgqI4FI +EIIANIFEeVEhgIBI2soigQ8AAJAAAvAO2gDfz3GgAKggJ4GsEA0AWWGxccIlRRDKJeYSsHh+CO/6 +CtnPcIAAiDgAkM92oADEJwsIHgGMJQOSA/cA3RnwbgygAQDYz3CrAKD/+qBuC+/9ANgZFgCWBegC +2BAeGJDPcYAAyEAbgWq9uGAU3RuhGRYAlojoUSEAxogOYQTKIGEA6QKv86lw4HjgfuB44H7gePHA +4cXPcIAA4AYAkM9xgADgxajaAd2AIEQLEHhODO/6qXOA4MohwQ/KIsEHyiCBDwAAtRTKI4EPAADM +AMokIQAMBCH1yiUBARYKQADPcIAATDKZAq/ztKDxwMILoAEA2BIOD/dKDw/+igtP+74K7/0A2P/Z +z3CrAKD/OaA4oNHA4H7gePHA4cXPcYAA+CrwIQIASiRAAMMSAQYPeDIigg8AAB8DBCGDDwAGAACA +4wHbwHsEIY0PQAAAANd1QAAAAMIkAgGqDW/7wLkhAo/z4HjxwKYJj/MmDyACCHXPcYAARNcfgc92 +oADEJ7C4H6EZFgCWANkE6ALYEB4YkM9woADUCzegog4AAVYLIAMB2AXt3ghAAAXwvghAAE4Pj/oZ +FgCWBegC2BAeGJC5AY/z4HjxwOoKoAEB2ADZz3CAAExALqC+DS/2GdjRwOB+8cAeCY/zosGLdn4L +L/rJcAolAJAZ9M9wgABE189xoAAMJDuBV4AwcsolIhIghg0JHgQC2YwYRAAEJYJfAABwxz+ARXk/ +oIDlugMCAADA6bjW8s91gAAsMgCFiiEIAOSQz3agAMQnEx5YkM9xgABE1z+BOneGIfwjhQleBEEp +ASHDuc9ygADsXTZ6IIJAeQh1GRYAlgToAtgQHhiQz3AAAP9/Ex4YkBvYFh4YkAPZz3CgANQLMaDg +eOB44HjgeOB44HjgeOB44HjgeOB44HjgeOB44HjgeDGgz3CAAIyWGYCA4PQNQgGa5RoDAgDPcIEA +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 +AiWBHwAAAAwE8ChwQiUBFd4OgADPcIAATEUAJYEfAACIE84OgAAKcMm4z3GAAESaA6EGhoG40QOv +8Qam8cDhxc91gADcRDoOoACpcM9wgADUOCCAz3CAANg4AIAJIQEAz3CAAMzUCIAJIQIAz3CgACwg +MICpcHoOoABZYaEDj/HxwM9wgABEmgGADwhRAM9wgACIOAeAz3GAADBFIIFCIQGAyiFiAJDpz3GA +ADzVLIGK6c9xgAAk1coJb/cjgQoO7/8C2dHA4H7xwOIKj/HPcIAAbCkEgKCAz3CAAKREAIBCIACA +yiBiADa9h+jPcIAAwESODYAAz3CAACTVIYjPcIAA+ETPdoAARJqK6SCAQiEBgMohYgAE6SCGreli +DYAAz3CAABRFWg2AAAGGVglv9whxIYYPeB0JBQAKIcAP63KKIA0D19tKJAAAOQQv87hzz3GAADBF +IIFCIQGAyiFiAAbpHWUjhsm9Cw1AEFoN7/8A2aUCj/HgeOHF4carChAAQCLDAyS7w7oC8ADalQoV +BDMmgnCAALRKQCeNclR9IH3AiAEZkgMB4AEQggQBGZIAARCCBAEZkgABEIIEARmSAAEQggQBGZIA +ARCCBAEZkgABEIIEARmSAAEQggQBGZIAARCCBAEZkgABEIIEARmSAAEQggQBGZIAARCCBAEZkgAB +EIIEARmSAAEQggQBGZIAARCCBAEZkgABEIIEARmSAEIjQ4Cz9cHG4H/BxeHF4cYj6mNqIrvBugLw +ANo1ChUBMyaCcIAAoEpAJ41yVH0gfcCABBmQAwTgBBACBAQZkAAEEAIEBBmQAAQQAgQEGZAAQiND +gOP1wcbgf8HF4cXhxqsKEABAIsMDJLvDugLwANqVChUEMyaCcIAApEpAJ41yVH0gfcCQAhmUAwLg +AhACBQIZlAACEAIFAhmUAAIQAgUCGZQAAhACBQIZlAACEAIFAhmUAAIQAgUCGZQAAhACBQIZlAAC +EAIFAhmUAAIQAgUCGZQAAhACBQIZlAACEAIFAhmUAAIQAgUCGZQAAhACBQIZlAACEAIFAhmUAAIQ +AgUCGZQAQiNDgLP1wcbgf8HF8cB6CK/xUyFCAE4iDQHPcqAAFATJggDbDiaCHwAAAAZQccohxg/K +IsYHyiCGDwAAxiLKI4YPAACbAsokZgAUAibzyiXGAIDhyiRNcMoizQDoIC0CTmDPcaAAOAQB4sip +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 +9gAEAIUAAACGAAAAhwBVAIgAAACJAKoAigAAAIsA3QCMAAAAhQABAIYAAQCHAFUAiAAAAIkAqgCK +AAAAiwDdAIwAAACFAAIAhgADAIcAVQCIAAAAiQCqAIoAAACLAN0AjAAAAIUAAwCGAAcAhwBVAIgA +AACJAKoAigAAAIsA3QCMAAAA+/8AAP//AAC5Ad8AOwItALEAGwAWARsArwAbABQBGwBsAKAA0QCg +AG8AgwBxAIMAcwAzANQBBgDQAQAAeABJAHkAagDeAGoAqAAAAA0BAACmAD8ApwABAAsBPwAMAQEA +BAAIAJwBzACdAcwA1QHMANYBzAC0ACAAGQEgAI8AiAD0AIgAkAAiAPUAIgCRAAQA9gAEAKgADAAN +AQwAhQAAAIYAAACHAJkAiAAAAIkAqgCKAAAAiwDdAIwAAACFAAEAhgABAIcAmQCIAAAAiQCqAIoA +AACLAN0AjAAAAIUAAgCGAAMAhwCZAIgAAACJAKoAigAAAIsA3QCMAAAAhQADAIYABwCHAJkAiAAA +AIkAqgCKAAAAiwDdAIwAAAD7/wAA//8AALkB3wCxABsAFgEbAK8AGwAUARsAbACgANEAoABvAIMA +cQCDAHYAgwBzADMAbgAzAHAAMwByADMA1wAzANQBBgDQAQAAfgA8AOMAPAB4AEkA3QBJAH8AWgDk +AFoAqgA/AKsAAQAPAT8AEAEBAHkAagDeAGoAqAAAAA0BAACmADcApwABAAsBNwAMAQEABAAIAJwB +zACdAcwA1QHMANYBzAC0ACAAGQEgADECDAAyAgwAMwK9ADYCDAA3AgwAOAK9AKAAiAAFAYgAoQDV +AAYB1QCiAAQABwEEAI8AiAD0AIgAkAAiAPUAIgCRAAQA9gAEAJ8ADAD7AAwAlAAAAJUAAACcAJcA +nQDQAJoAjQCYABEAlgAzAJcAdwCUAAEAlQABAJwAlwCdANAAmgCNAJgAEQCWADMAlwB3AJQAAgCV +AAMAnACXAJ0A0ACaAI0AmAARAJYAMwCXAHcAlAADAJUABwCcAJcAnQDQAJoAjQCYABEAlgAzAJcA +dwD6AAAA+QAAAAIBlwADAdAAAAGNAP4AEQD8ADMA/QB3APoAAQD5AAEAAgGXAAMB0AAAAY0A/gAR +APwAMwD9AHcA+gACAPkAAwACAZcAAwHQAAABjQD+ABEA/AAzAP0AdwD6AAMA+QAHAAIBlwADAdAA +AAGNAP4AEQD8ADMA/QB3AIUAAACGAAAAhwBVAIgAAACJAKcAigAAAIsA3gCMAAAAhQABAIYAAQCH +AFUAiAAAAIkApwCKAAAAiwDeAIwAAACFAAIAhgADAIcAVQCIAAAAiQCnAIoAAACLAN4AjAAAAIUA +AwCGAAcAhwBVAIgAAACJAKcAigAAAIsA3gCMAAAA6wAAAOoAAADsAFUA7QAAAO4ApwDvAAAA8ADe +APEAAADrAAEA6gABAOwAVQDtAAAA7gCnAO8AAADwAN4A8QAAAOsAAgDqAAMA7ABVAO0AAADuAKcA +7wAAAPAA3gDxAAAA6wADAOoABwDsAFUA7QAAAO4ApwDvAAAA8ADeAPEAAACkAYAAoQFAAPv/AAD/ +/wAApQEBALkB3wCxABsAFgEbAK8AGwAUARsAbACgANEAoABvAIMAcQCDAHYAgwBzADMAbgAzAHAA +MwByADMA1wAzANQBBgDQAQAAfgA8AOMAPAB4AEkA3QBJAH8AWgDkAFoAqgA/AKsAAQAPAT8AEAEB +AHkAagDeAGoAqAAAAA0BAACmADcApwABAAsBNwAMAQEABAAIAJwBzACdAcwA1QHMANYBzAC0ACAA +GQEgADECDAAyAgwAMwK9ADYCDAA3AgwAOAK9AKAAiAAFAYgAoQDVAAYB1QCiAAQABwEEAI8AiAD0 +AIgAkAAiAPUAIgCRAAQA9gAEAJ8ADAD7AAwAlAAAAJUAAACcAJcAnQDQAJoAjQCYABEAlgAzAJcA +dwCUAAEAlQABAJwAlwCdANAAmgCNAJgAEQCWADMAlwB3AJQAAgCVAAMAnACXAJ0A0ACaAI0AmAAR +AJYAMwCXAHcAlAADAJUABwCcAJcAnQDQAJoAjQCYABEAlgAzAJcAdwD6AAAA+QAAAAIBlwADAdAA +AAGNAP4AEQD8ADMA/QB3APoAAQD5AAEAAgGXAAMB0AAAAY0A/gARAPwAMwD9AHcA+gACAPkAAwAC +AZcAAwHQAAABjQD+ABEA/AAzAP0AdwD6AAMA+QAHAAIBlwADAdAAAAGNAP4AEQD8ADMA/QB3AIUA +AACGAAAAhwBVAIgAAACJAKcAigAAAIsA3gCMAAAAhQABAIYAAQCHAFUAiAAAAIkApwCKAAAAiwDe +AIwAAACFAAIAhgADAIcAVQCIAAAAiQCnAIoAAACLAN4AjAAAAIUAAwCGAAcAhwBVAIgAAACJAKcA +igAAAIsA3gCMAAAA6wAAAOoAAADsAFUA7QAAAO4ApwDvAAAA8ADeAPEAAADrAAEA6gABAOwAVQDt +AAAA7gCnAO8AAADwAN4A8QAAAOsAAgDqAAMA7ABVAO0AAADuAKcA7wAAAPAA3gDxAAAA6wADAOoA +BwDsAFUA7QAAAO4ApwDvAAAA8ADeAPEAAACkAYAAoQFAAPv/AAD//wAAuQHBANQBAwDQAQQAeAA8 +AN0APAB5AGoA3gBqAKgAAQANAQEABAAIAJwBzACdAcwA1QHMANYBzAC0ACAAGQEgAI8AiAD0AIgA +kAAAAPUAAACRAAYA9gAGAIUABADrAAQApAGAAF0CMwBKAg4ATAIOAE0CAQCtAQcAswEEALgBAAC7 +AVYAUAILAFECAwBSAgEAUwIAAFQCCwBVAgMAVgIBAFcCAABmAgYAaAIHAGoCBwBsAgcAbgIFAHAC +DAB9AgYAfwIHAIECBwCDAgcAhQIFAIcCDAC1ACEAGgEhAEsCAQChAUAAswAAABgBAACUAgsAlQID +AJYCAQCXAgAAmAILAJkCAwCaAgEAmwIAALIAMAAXATAAnAIPAKECDwCgAogAnwKIAJ4CiACdAogA +pQKIAKQCiACjAogAogKIAPv/AAD//wAAuQHBANQBAwDQAQAAeAA8AN0APAB5AGoA3gBqAKgAAQAN +AQEABAAIAJwBzACdAcwA1QHMANYBzAC0ACAAGQEgAI8AiAD0AIgAkAAAAPUAAACRAAYA9gAGAIUA +BADrAAQApAGAAF0CNgBKAg0ATAIPAE0CAQCtAQYAswEEALgBAAC7AVYAUAILAFECAwBSAgEAUwIA +AFQCCwBVAgMAVgIBAFcCAABmAgYAaAIHAGoCBwBsAgcAbgIFAHACDAB9AgYAfwIHAIECBwCDAgcA +hQIFAIcCDAC1ACEAGgEhAKEBQAD7/wAA//8AALkBwQDUAQMA0AEEAHgAPADdADwAeQBqAN4AagCo +AAEADQEBAAQACACcAcwAnQHMANUBzADWAcwAtAAgABkBIACPAIgA9ACIAJAAAAD1AAAAkQAGAPYA +BgCFAAQA6wAEAKQBgABdAjMASgIOAEwCDgBNAgEArQEHALMBBAC4AQAAuwFWAFACCwBRAgMAUgIB +AFMCAABUAgsAVQIDAFYCAQBXAgAAlAILAJUCAwCWAgEAlwIAAJgCCwCZAgMAmgIBAJsCAABmAgYA +aAIHAGoCBgBsAgcAbgIFAHACDAB9AgYAfwIHAIECBgCDAgcAhQIFAIcCDACyADAAFwEwALMAAAAY +AQAAnAIPAKECDwCgAogAnwKIAJ4CiACdAogApQKIAKQCiACjAogAogKIALUAIQAaASEAoQFAAEsC +AQD7/wAA//8AALkBwQDUAQMA0AEAAHgAPADdADwAeQBqAN4AagCoAAEADQEBAAQACACcAcwAnQHM +ANUBzADWAcwAtAAgABkBIACPAIgA9ACIAJAAAAD1AAAAkQAGAPYABgCFAAQA6wAEAKQBgABdAjYA +SgINAEwCDwBNAgEArQEGALMBBAC4AQAAuwFWAFACCwBRAgMAUgIBAFMCAABUAgsAVQIDAFYCAQBX +AgAAZgIGAGgCBwBqAgYAbAIHAG4CBQBwAgwAfQIGAH8CBwCBAgYAgwIHAIUCBQCHAgwAtQAhABoB +IQChAUAA+/8AAAAAAAACAAAADdIS0hPSFNIM0hXSC9IC0hHSBEMAEBQQCRAREAFAG9Ic0gDSCgAL +AAQADgC1ABoBDwBCALwAwwAhASgBtgC3ALgAuQC9AL4AvwDAABsBHAEdAR4BIgEjASQBJQEKAAAA +CwAAALYAAAC3AAAAuAAAALkAAAAbAQAAHAEAAB0BAAAeAQAAvQAAAL4AAAC/AAAAwAAAACIBAAAj +AQAAJAEAACUBAAAS0gAAE9IAAAAAAQACAAMALABkAHQAgACMAKEABwAAAAAAAQACAAMAAAAAALcT +IgC4FCMAuRUkALsWJQC8FyYAvRgnAMAZKADEGikABxsAAAgcAQALHQIADB4DABAfBAAiIQUAJCIG +ACYjBwAoJAgAKiUJACwmCgAuJwsAMCgMADQpDQA4Kg4APCsPAEAsEABkLhEAaC8SAGwwEwBwMRQA +dDIVAHgzFgB8NBcAgDUYAIQ2GQCINxoAjDgbAJE6HACVOx0AmTweAJ09HwChPiAApT8hACRJBgIs +SgoCNEsNATxMDwFkTREBbE4TAXRPFQF8UBcBhFEZAZVSHQGdUx8BAQQAAAIFAQADBgIABAcDAAUI +BAAGCQUABwoGAAgLBwAJDAgACg0JAAsOCgAMDwsADRAMAA4RDQABQAAEAkEBBANCAgQEQwMEBUQE +BAZFBQQHRgYECEcHBAlICAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAACGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhwCIAAQABQAGAAYABwAIAAgACQAJ +AAoACwAMAAwAJAAlACUAJgAnACgAKABEAEUARgBGAEcASABIAEkASgBKAEsATABoAGgAaQBqAGsA +bABtAG0AbgBvAG8AcABxAHEAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgBy +AAoAPwCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhgCGAIYAhwCIAAQABQAGAAYABwAIAAgACQAJAAoA +CwAMAAwAJAAlACUAJgAnACgAKABEAEUARgBGAEcASABIAEkASgBKAEsATABoAGgAaQBqAGsAbABt +AG0AbgBvAG8AcABxAHEAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAAoA +PwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAIAAgADAAQABAAFAAYABgAHAAgACAAJ +AAoACgALAAwADAANAA4ADgAPACYAJwAoACkAKgBGAEYARwBIAEgASQBKAEoASwBMAGgAaQBqAGoA +awBsAGwAbQBuAG4AbwBwAHAAcQByAHIAcwBzAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0 +AHQAdAB0AHQACgA/AAAAAAAAAAAAAAAAAAAAAAABAAEAAgADAAMABAAFAAUABgAHAAcACAAJAAkA +CgALAAsADAAMAA0ADgAjACQAJQAmACcAKAApAEQARQBGAEYARwBHAEgASABJAEkASgBLAGgAaABp +AGoAawBsAG0AbQBuAG8AbwBwAHEAcQByAHIAcwBzAHMAcwBzAHMAcwBzAHMAcwBzAHMAcwBzAHMA +cwBzAHMACgA/AAAAAAAAAAAAAAAAAAAAAAABAAIAAgADAAQABAAFAAYABgAHAAgACAAJAAoACgAL +AAwADAANAA4ADgAPACYAJwAoACkAKgBGAEYARwBIAEgASQBKAEoASwBMAGgAaQBqAGoAawBsAGwA +bQBuAG4AbwBwAHAAcQByAHIAcwBzAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0 +AHQACgA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQACAAMAAwAEAAUABQAGAAcABwAIAAkA +CQAKAAoACwAkACUAJQAmACcAKAAoAEQARQBGAEYARwBIAEgASQBKAEoASwBMAGgAaABpAGoAawBs +AG0AbQBuAG8AbwBwAHEAcQByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIA +CgA/AIBjgAAAAAAAsgwsAf////////8AAf//AgP///8E//////////////////////8F/wb/B/8I +/wn/Cv8L/wz///8N////Dv///w////8Q//////////////////////////////////////////// +//8R////Ev///xP///8U////Ff///xb///8X////GP///xn///8a////G/////8c////Hf///x7/ +//8f////IP///yH//////////////////////yIjJP8lJif//yj///8p//////////////////// +//////////////////////////////////////////////////////////8AAAEAAQEAAAAAAAAA +AQAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAtAQAAAAAAPGsAAAEAAAB81wEAAgAAAPDW +AQADAAAAHCECAAQAAAAALQEABQAAACwTAQAGAAAAbOYAAAcAAAC0EwEACAAAAEQ+AAAJAAAAzF4A +AAoAAAAEwgAACwAAAFA4AAAMAAAAHCQCAA0AAACk3wAADgAAAOTfAAAPAAAAoN8AABAAAADg3wAA +EQAAANBBAQASAAAABO4BABMAAAAQMgAAFAAAAIBqAQAVAAAAxFYBABYAAAB8ZgEAFwAAAFzWAQAY +AAAA7I8BABkAAADsBQEAGgAAAPwsAQAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIjgAAiI4AAIiOAAB8eQAAiI4A +AIiOAADgeQAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAA/H8AAER/AAA0fwAA +rH4AAGx/AACUfgAAiI4AAIiOAADYhQAAqIgAAFSKAACIjgAAiI4AAIiOAADwjQAA8IQAACiFAACU +hAAAiI4AAIiOAACIjgAArI0AAIiOAAB0hAAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiO +AACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4A +AIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACgegAAiI4AAIiOAACIjgAA +iI4AAIiOAAAQiwAAiI4AAIiOAACIjgAAiI4AAIiOAAAEewAAiI4AAHB8AAAQfAAAoHsAAAB8AAA4 +dwAAiI4AAAx3AACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAJh2AACIjgAAiI4AAIiO +AACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4A +AFh+AACIjgAAiI4AAByAAACIjgAAiI4AAIiOAACIjgAAiI4AAGSBAABMgAAAiI4AAIiOAACIjgAA +iI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIfAAAiI4AAIiOAACIjgAAiI4AAIiOAACI +jgAAiI4AAESNAACIjgAApI0AALCKAACIjgAAiI4AADh1AABwigAAiI4AAIiOAAC0fgAAzH4AAIiO +AACIjgAAwHoAAHx3AACIjgAAiI4AAIiOAAAwhQAAfH4AAIiOAACIjgAAiI4AAIiOAACIjgAAiI4A +ALx9AACIjgAAsI4AADyPAAAcjwAAVI8AAOiOAADQjgAAXI8AAKyOAACIjgAAiI4AAIiOAACIjgAA +iI4AAIiOAACIjgAAiI4AAMh6AACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAACIjgAAiJEAAJSSAADA +dQAADHYAAIiOAACIjgAAiI4AAIiOAACIjgAArHcAAIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiO +AACIjgAAiI4AAIiOAACIjgAAiI4AAByQAABgjwAAzJAAALCQAADwjwAAeI8AAOSQAACYkAAAiI4A +AIiOAACIjgAAiI4AAIiOAACIjgAAiI4AAIiOAADgdwAAzHgAAGx4AAD8kAAAJHYAAFR5AADseQAA +iI4AAIiOAACIjgAAiI4AANh5AADceQAAiI4AAIiOAACAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARJ0AAIyb +AACongAAtJ0AALyfAAAAAAEA/////wAAAAD//////////wEAAAD4EwAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAIAAAAAAND+AAAAAAAAAAAYIKAAICCgAEAhoABIIaAAHCCgACQgoABEIaAA +TCGgACggoAAwIKAAaCGgAHAhoAAsIKAANCCgAGwhoAB0IaAAOCCgADwgoAB4IaAAfCGgAJgRAAAA +/wMAUBMAAAD/BQDcEQAAAP8tALgRAAAA/z0ANBEAAAD/BABcEQAAAP8lAJTEAAAA/90AbBIAABAQ +TAA4EwAAAP8iAAASAAAA/yYA2BIAAAD/KACkEgAAAP8gAITDAAAAIAAAyMIAAAD/MAAAAAAAAAAA +AAABAQA8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PBUVFRU8PDw8FRUVFTw8PDwAAAAA +AAAAAAAAAAAAAAAAPDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwVFRUVPDw8PBUVFRU8 +PDw8AAAAAAAAAAAAAAAAAAAAADw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8FRUVFTw8 +PDwVFRUVPDw8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAA0BAEAzKoAACwkAADMqgAAzKoAAMyqAACEDAAA +FOUBAGjRAADMqgAAzKoAACg1AAAoNQAAKDUAACg1AAAoNQAAKDUAACg1AADMqgAAzKoAAMyqAADM +qgAAVFYAAMyqAADMqgAAzKoAAMyqAADMqgAATNEAAMyqAADMqgAACMIAAAAAAAAc6wAAIOsAALQC +AACgAgAApEABAAAAAACEuAAArMMBAKy4AADUwwEA0LgAAPzDAQC0o4AA9DqAACCegAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAhAAC4IQAAoL6AAAACAAAAAAAAoPoAAHD6AACgwIAA +QAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKT6AACAPQEAMMeAAFQAAAAAAAAAoPoAAFQ8AQDg +xYAAUAEAAAAAAACg+gAAUDYBAMgGgAAIAAAAAQAAAKD6AABs+QAAAAAAAFABAAAAAAAAoPoAANw2 +AQCMM4AAAgAAAAAAAACg+gAA6DUBAMQGgAAEAAAAAAAAAKj6AABw+gAAhMeAACoAAAAAAAAAoPoA +AHD6AADwQYAACAAAAAAAAAAAAAAAePoAAAAAAAAAAAAAAQAAAAAAAACM+gAAAAAAAAAAAAAAAAAA +AAAAAHT6AAAAAAAAAAAAAAAAAACg+gAAIMYBAAAAAAAAAAAAAAAAAKD6AADgxQEA0AaAAAQAAAAA +AAAAbgBuAGkAwACgAFAAgAC+AFABfQA+AAEAAQABAFgCKADmAS0AVQM8ANwBYwAAAG4AbgBpAMAA +oABQAIAAvgBQAX0APgABAAEAAQBYAigA5gEtAFUDPADcAWMAAAAAAAAAAQEAAHwDAQAV0gAAAAAA +AP8DAAB8AwEADNIAAAAAAAD/AQAAfAMBABXSAAAKAAAAAPwPAHwDAQAM0gAACQAAAAD+AwB8AwEA +FdIAABQAAAAAAPA/fAMBAAzSAAASAAAAAAD8B3wDAQAG0gAAAAAAAP8BAAB8AwEAB9IAAAAAAAD/ +AwAAfAMBAAbSAAAJAAAAAP4DAHwDAQAH0gAACgAAAAD8DwB8AwEABtIAABIAAAAAAPwHfAMBAAfS +AAAUAAAAAADwPwAAAAAAAAAAAAAAAAEAAAABAAAACgAAAAUAAAAFAAAABgAAAAoAAAAKAAAABgAA +AAQAAAAFAAAABgAAAAUAAAAFAAAABgAAAAYAAAAGAAAABgAAAAcAAAAHAAAABwAAAAgAAAAIAAAA +CAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAABAAAAAgAAAAEAAAABAAAAAwAAAAMAAAAC +AAAAAQAAAAQAAAAAAAAAAAAAAAIAAAABAAAAAQAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAACwBAABeAQAAAQAAAAEAAAABAAAAAQAAAAMAAAAAAAAA +AAAAAFQNAQC4EQEAqBABACQSAQC0EQEA7A8BACASAQB8DgEAeA4BAGDjFgAg1hMAAAAAABAAAAAA +gAAAAACgABAnAADoAwAA6AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAABAAAAAQAA +AAIAAAAFAAAAAgAAAAIAAAAFAAAAAgAAAAIAAAABAAAAAQAAAAUAAAAFAAAAAgAAAAUAAAAFAAAA +AAAAAAUAAAACAAAAAgAAAAAAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAUAAAACAAAAAgAAAAUAAAAF +AAAABQAAAAAAAAAFAAAAAgAAAAUAAAABAAAAAQAAAAIAAAACAAAAAgAAAAUAAAAFAAAAAgAAAAUA +AAABAAAAAQAAAAIAAAACAAAAAgAAAAUAAAAFAAAAAgAAAAIAAAAFAAAAAQAAAAIAAAAFAAAAAgAA +AAUAAAAFAAAABAAAAAUAAAAFAAAAAQAAAAUAAAAFAAAABQAAAAIAAAACAAAABQAAAAUAAAAFAAAA +AQAAAAUAAAAFAAAABQAAAAIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAA +AAAAAAAAAAAAAAgAAAABEAABAAAAAoAAAUIABgIQAAIgAAADwAABQwAGAxAAAsAAAAPAAAFDAAYE +EAACQAAAAoAAAUQABgURAABAAAADwAABRQAGBhEAAOAAAAPAAAFFAAYHEQABAAAAAoAAAUYABggR +AAIgAAADwAABRwAGCREAAsAAAAPAAAFHAAYKEQACQAAAAoAAAUgABgsSAABAAAADwAABSQAGDBIA +AOAAAAPAAAFJAAYNEgABAAAAAoAAAUoABg4SAAIAAAACgAABTAAGAXgAMAAAAFAAAAS2PAYCeABE +AAAAUAAABLk8BgN5AAgAAABQAAAEuzwGBHkAHAAAAFAAAAS+PAYFeQAwAAAAUAAABMA8BgZ5AEQA +AABQAAAEwzwGB3oACAAAAFAAAATFPAYIegAcAAAAUAAABMg8Bgl6ADAAAABQAAAEyjwGCnoARAAA +AFAAAATNPAYLewAIAAAAUAAABM88Bgx7ABwAAABQAAAE0jwGDXsAMAAAAFAAAATUPAYOfAAQAAAA +UAAABNo+BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAABAgEBAAIBAAECAgIAAQEAAgECAQIAAgABAgOAgICAgICAgAGAAoCA +gICAwACQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABuAAAAbgAC +AG4AbgBuAAIAaQBpAG4AAQDAAMAA6AABAKAAoAA2AQMAUABQAPUAAQCAAIAA6AABAL4AvgC+AAEA +UAFQAVABAQB9AH0ArwADAD4APgA+AAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAWAJYAlgCAQAo +ACgAKAABAOYB5gHmAQEALQAtAC0AAQBVA1UDVQMBADwAPAA8AAEA3AHcAdwBAQBjAGMAYwABAAAA +AAAAAAAAMgAFADIABQACAAgAZACgAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACj1gAABAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAAAAAACMCowKAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAANDhAQAVAAAAAwAAAOhFgAAAAAAAAAAAAAAAAAAc4QEABQAAAAMAAADoRYAAAAAAAAAA +AAAAAAAAEOEBAAoAAAADAAAA6EWAAAAAAAAAAAAAAAAAANzeAQAKAAAAAwAAAOhFgAAAAAAAAAAA +AAAAAAAs4AEACgAAAAAAAAAIRoAAAAAAAAAAAAAAAAAALOABAAoAAAAAAAAACEaAAAAAAAAAAAAA +AAAAACzgAQAKAAAAAAAAAAhGgAAAAAAAAAAAAAAAAAAs4AEACgAAAAAAAAAIRoAAAAAAAAAAAAAA +AAAALOABAAoAAAAAAAAACEaAAAAAAAAAAAAAAAAAACzgAQAKAAAAAAAAAAhGgAAAAAAAAAAAAAAA +AAAs4AEACgAAAAAAAAAIRoAAAAAAAAAAAAAAAAAALOABAAoAAAAAAAAACEaAAAAAAAAAAAAAAAAA +ACzgAQAKAAAAAAAAAAhGgAAAAAAAAAAAAAAAAAAs4AEACgAAAAAAAAAIRoAAAAAAAAAAAAAAAAAA +LOABAAoAAAAAAAAACEaAAAAAAAAAAAAAAAAAACzgAQAKAAAAAAAAAAhGgAAAAAAAAAAAAAAAAAA8 +4QEACgAAAAMAAADoRYAAAAAAAAAAAAAAAAAAlOIBAAUAAAADAAAA6EWAAAAAAAAAAAAAAAAAADTe +AQAKAAAAAAAAAAhGgAAAAAAAAAAAAAAAAACk3gEACgAAAAAAAAAIRoAAAAAAAAAAAAAAAAAA1OwB +AAoAAAADAAAA6EWAAAAAAAAAAAAAAAAAAAjfAQAKAAAAAAAAAAhGgAAAAAAAAAAAAAAAAACw3wEA +CgAAAAAAAAAIRoAAAAAAAAAAAAAAAAAAMOABAAoAAAAAAAAACEaAAAAAAAAAAAAAAAAAALDgAQAK +AAAAAAAAAAhGgAAAAAAAAAAAAAAAAADU4QEACgAAAAAAAAAIRoAAAAAAAAAAAAAAAAAAROIBAAoA +AAAAAAAACEaAAAAAAAAAAAAAAAAAAHDiAQAGAAAAAAAAAAhGgAAAAAAAAAAAAAAAAACA4gEABgAA +AAAAAAAIRoAAAAAAAAAAAAAAAAAAAAAAAOhFgADoRYAAuCCgAGwgoAAAgAEA/3/8/wAAAAAAAAAA +CEaAAAhGgACkIKAAOCCgAAEAAAD8////AAAAAAAAAAAoRoAAKEaAAKggoAA8IKAAEAAAAMf///8A +AAAAAAAAAEhGgABIRoAArCCgAHghoABAAQAAP/7//wAAAAAAAAAAaEaAAGhGgACwIKAAfCGgAAAM +AAD/8f//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN8BABUAAAADAAAA6EWAAAAAAABQAAAAAAAA +AFQGgAB8p4AAGAAAADyngAAAAAAAAAAAAAAAAABUBoAAfKeAABgAAAA8p4AAAAAAAAAAAAAAAAAA +fwAAAAAAAAAAfwAAAAAAAAAAAAAAAAAAoImAAAAAAAAAAAAA//8AAAEAAAAAAAAABwAAAAAAAAAA +AAAAAAAAAAABAgMEBAQEBAUGBwgICAgICQoLDA0AAG47aDtiO1w7bjpoOmI6XDpuOWg5YjlcOW4r +aCtiK1wrbipoKmIqXCpuKWgpYilcKW4oaChiKFwobidoJ2InXCduJmgmYiZcJm4laCViJVwlbiRo +JGIkXCRuI2gjYiNcI24iaCJiIlwibiFoIWIhXCFuIGggYiBcIGITXBNuEmgSYhJcEm4RaBFiEVwR +bhBoEGIQXBBuAmgCYgJcAm4BaAFiAVwBbgBoAFQAAABuO2g7YjtcO246aDpiOlw6bjloOWI5XDlu +K2grYitcK24qaCpiKlwqbiloKWIpXCluKGgoYihcKG4naCdiJ1wnbiZoJmImXCZuJWglYiVcJW4k +aCRiJFwkbiNoI2IjXCNuImgiYiJcIm4haCFiIVwhbiBoIGIgXCBuEmgSYhJcEm4RaBFiEVwRbhBo +EGIQXBBXEFIQTRBJEG4BaAFiAVwBbgBoAGIAXABUAAAAAAAAAAAAAAAdAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKGEBAAgAAAADAAAA6EWAAMwHgABMCIAAzAiAAEwJgAAK +DREUCg0RFBkZGRkKCgAAAAAAAAYGBgYJCQkJAAYAAAAFBgcIDQ4PEBUWFxgZAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBSamhwkmpqa +mpqTmm6BPzUJiysAAAAyAAAAjwCMAIoAQwAPACBoNwAAABEAPjogEQAAAiUAAAwvAAACLzk5AAol +PLdHb4oABxQnYi4AAAIAFwAAFg4WFAAAAABCQhcABRAKIDBAAAAGBgoS9hX2BvYJ9gz2D/YA9gMA +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 +gA0AAAAGAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAFCUCACAggA8AAEAAaSAA +AGkgQABpIAAAaSBAACAggA8AAOgAaSAAAGkgQABpIAAAaSBAACAggA8AANjzaSAAAGkgQABpIAAA +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 +IAGKJIMPDw2eEQDYDNwnAs//z3aAAAjoFiZNEaeNoK/JdRYlTREApRQUADFGrcdxgADI5AK1AIkH +rQAZQgEAG0IBx/HxwIIJz/8IyM9yoADIHw4aGIAJyA8aGIAKyBAaGIALEgE2AsgkeBEaGIAMyM9x +gAA4Ry0aGIAAgQHgAKHDuFcIUQMLyH/ZCrkkeC8oAQBOIIIHANgPIIAABCEBgEIijQIZ8gsjQMAX +9M9woACIIPAgUAPPdoAAdEQAhs93gAB4RA0NARAAhxJwAAuBBqCmAB8AFFUBz//geJ/hzCDuh8wg +ToAG9wJ5QWkLChEIiiH/DwbwANkPIYEAYbkYeeB/KHDxwLII7/+KIA8KgiQCOppxenJac4h1qHcK +IYAhCiDAIcIJYACewYpwuglgAItxgsZqcLIJYADJcUpwqglgAITBqXCiCWAAhsGIxelwlglgAKlx +KnCOCWAAisEKcIYJYACMwalwisHODuAAkMKLcMlxwg7gAJLCyXCEwboO4ACUwobAqXGuDuAAlsKY +xpDAksHGDqAAyXKax5TAlsG6DqAA6XLJcOlxjg7gAJzCnMCewaYMIACOwp/F7gvgEARtjsBKCSAA +JG23CBAAhsCKwYIN7/9AJQITi3CEwXYN7/9AJQIVlMBAJQETbg6gAMlykMBAJQEVYg6gAOlyyXDp +cTYO4ACcwozAnMFODqAAyXJqDqAAyXDJcI7BPgwgAEAlAheSwEAlARMyDqAAyXKWwEAlARUmDqAA +6XLJcOlx9g3gAJzCjMCcwRIOoADJcslwjsEGDCAAQCUCGZYIYABAJQAXz3GAAFQIEKGGCGAAQCUA +Gc9xgABUCBGhB/AA2c9wgABUCDCgMaCBB6//gCQCOuB4z3GAAJx+4H8IYeB48cAqD6//2HAodkhx +iHUyDu//yXAId6lwJg7v/6hxCHEALoADBH8mfwArQAMkeGUHr//lePHAugvABc9xgADgKfAhAABA +eM9woADQG4DaUKDPcIAAaC4AgADZDwgeAs9wnwC4/z2g0cDgfuB4YIBAgQGAIYFQc8wgQYDhIMEH +yiAhADBwhvYE9gkKxQDgfwHYiiD/D+B+4HiA4cokTXDoIG0Cz3GgAFAMJYEBGFIA4H7xwHYOj//P +cIAA5C8DgBiIpcFKIAAgHQgRAQohwA/rcoogjA1k2wokAATZBOAAuHPPd4AAiC4khyCB/gjgBoog +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 +CNgQec9wgAC0EOYMj/YV8CCFYHkC2CCFDwhQAGB5AtgghRsIkQBgeQjYEHnPcIAArA2+DI/2B9iG +8Ot2YHkC2Lhwz3AAALsZCiHAD8lyiiNOBdED7/aKJIMPYHkB2O0IkQAghWB5AtiA4CCFCNgI9EB5 +EHnPcIAAeAsH8EB5EHnPcIAAkAxqDI/2XfBgeQLYkegghet3YHkB2LhwZ9gGuAohwA/pcoojjgx5 +A+/2iiSDD89wgACgOyCAYHkA2CCFTQgRA2B5CNgghQ8IkABgeQjYIIWR6GB5AtgghRsIUQBgeQjY +EHnPdYAABBUCDK/2qXCpcCXwYHkI2BB5z3WAAMAT7guv9qlwqXAb8GB5AtiB4CCFCNgM9EB5z3WA +ADAXEHnOC6/2qXCpcAvwQHnPdYAA7BUQeboLr/apcKlwOgyP9gHYPgtAAwYLz/2aCUAAzggAAK0E +j/UIcViJAYACoYjqWYmA4sIgogDAIKEAAqHgfuB48cDhxc9wgACgOyCAocFgeQTYjwhRAC4Mb/yK +IMwOgwhRAM91gACALgCFAeAApRcIUQAB2c9woADIHDGg+gtgBihwSiTAcKgggALPcQEAQmnPcKAA +7CcmoItxkgqv9oogRgkAhUIgQIAApQf0ANnPcKAAyBwxoAAUBTFMJUCAyiHCD8oiwgfKIIIPAACs +KMojgg8AAEcDGALi9sokIgABBK/1ocDgfuB48cB6C4/1z3aAAIAuAIYB4ACmFQhRAAHYz3GgAMgc +EaFuC0AGz3WAAKg7IIVgeQDY1wiRAMfYlLjPdaAA7CcGpc93AACCK89wAwCCKwalz3ADAMJEBqXP +cAMAAiwGpc9wAwBCRQalz3EAAMJ0z3ADAMJ0BqXPcAMAgm8Gpc9wAwCCbAalxtiQuAalJqUCC2AG +CtjPcAAAgmwGpfYKYAYK2M9wAAACLAal5gpgBgrYz3AAAEJFBqXaCmAGCtjPcAAAgm8GpcoKYAYK +2OalwgpgBgrYz3AAAMJEBqW2CmAGCtjPcBMAxgAGpaYKYAYy2ACGQiBAgACmB/TPcaAAyBwA2BGh +3QKP9SCFYHkA2GkI0QDH2JS4z3WgAOwnBqXPdwAAgmzPcAMAgmwGpc9wAwDCdAalz3ADAEKWBqXG +2JC4BqVOCmAGCtjmpUYKYAYK2M9wAADCdAalOgpgBgrYz3AFAEKWBqUqCmAGiiAHDc9wAABClrTx +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 +FocJphiCC6YZggymGoINps9wBQDGAwalxtiQuAalz3AsAAIBBqXPcFoAQgEGpYogiwAGpc9wQACH +DQalz3DRAMINBqXPcMAABw4Gpc9wgACALgCAz3KAAIAuQiBAgACiBvTPcqAAyBwA2BGiAdgIpwDY +DacOp89wUAD/AByhAdgXpwDYFqf82c9wqwCg/zigc9k5oBqAz3GrAKD/gbgaoc9wKgACDgali3A2 +DCAAgcEAwc9wgACUpTWmMqABwS+gz3AaAAIOBqWLcBYMIACBwQDBz3CAAJSlNqYzoAHBMKDPcCYA +Ag4GpYtw9gsgAIHBAMHPcIAAlKU0oDemAcExoM9wgACALgCAAeDPcYAAgC4AoRUIUQDPcaAAyBwB +2BGhughAAgGWELiFIIQABqUClhC4hSCFAAalA5YQuIUgiwAGpQSWELiFII8ABqUFlhC4BSCADwAA +gg0GpQaWELgFIIAPAADCDQalB5YQuAUggA8AAAIOBqXPcIAAgC4AgM9xgACALkIgQIAAoQf0z3Gg +AMgcANgRoQSGK4YIpwWGDacGhg6nCIYXpwmGFqfPcKsAoP84oCyGOaAthjqgMg6v+Q6Gz3CAAIAu +z3GAAIAuAIBCIECAAKEH9M9xoADIHADYEaFRAK/xosDxwOYPT/F+CAAAz3aAALBp9g2v9wCGCHUA +hhkNABBWCK/7qXDqCO/7oKYmCi/0EdgqCA/3z3CgACwgMIDPcIAAbAcRAK/xIKDxwLoP7/+hwc9w +gABQSgCABNli2h7bQMCLcLoKL/8Yu6HA0cDgfuB48cDaCO/zFtgA2NHA4H7gePHAYg9v8QfYUg6P ++Qh3z3CgALQP3IBCDi//ANjPcaAALCAwgfoJr/iKIJEFlg7P+891gABQSiIKL/wApUCFz3GAAARn +AKHPcYAAsEhKoX4I7/wLoQIOL//PeC4Nr/npcM9wgABQLgCIQwhRAECFiiBEBM91gABALiOFGmI4 +YBByAdjCIAUADOiKIBELkgmv+ADZ8ghv9QTYAIUG8NYIb/UE2AKFMgsgAgOlIQdP8eB48cDPcIAA +SEoAgJzokg/v+BbYmOjPcIAAoDsggGB5BNgQ6M9wgACQO2CAz3EBALzRC9hgewTaGgnv8xbY0cDg +fs9xgADkLwCBxBAABg8IXwEBgcQQAAYVCF4Bxggv9BPYvggv9BHY7PHq8eB48cDPcIAAzCkAgM9x +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 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAHAAAAAAAAAAcAAAAJDREUCg0TFxkZ +GRkJCQAArLeAANiCAACUvIAAAAAAAJS8gAAAAAAA3wAAABkBAABiAQAAvgEAADICAADDAgAAewMA +AGIEAACEBQAA8gYAAL4IAAACCwAAAQAAAAAAAAAwgAAAAAAAADGAAACZuViFMoAAAADKmrgzgAAA +AFAAUDSAAAAAUAAANYAAAABQAFA2gAAAAFAAUDeAAAAAAABQOIAAAAAAAAA5gAAAAFAAUDqAAAAA +UABQO4AAAABQAFA8gAAAAFAAAD2AAACZyQpQPoAAAFW4iMk/gAAAAAAAgjCAAAAAAAAAMYAAAJm5 +WIUygAAAAMqauDOAAAAAUABQNIAAAABQAAA1gAAAAFAAUDaAAAAAUABQN4AAAAAAAFA4gAAAAAAA +ADmAAAAAUABQOoAAAABQAFA7gAAAAFAAUDyAAAAAUAAAPYAAAJnJClA+gAAAVbiIyT+AAAAAAACC +MIAAAAAAAAAxgAAAAAAAADKAAAAAAAAAM4AAAAAAAAA0gAAAmkUAADWAAACqyqrKNoAAAAAgACA3 +gAAAACAAIDiAAAAAIAAAOYAAAAAgACA6gAAAqsqqKjuAAAAAEJbKPIAAAAAAAAA9gAAAAAAAAD6A +AAAAAAAAP4AAAAAAAAAwgAAAAAAAADGAAAAAAAAAMoAAAAAAAAAzgAAAAAAAADSAAACaRQAANYAA +AKrKqso2gAAAACAAIDeAAAAAIAAgOIAAAAAgAAA5gAAAACAAIDqAAACqyqoqO4AAAAAQlso8gAAA +AAAAAD2AAAAAAAAAPoAAAAAAAAA/gAAAAAAAAP//AAClAQEAuQHfADsCLQCxABsAFgEbAK8AGwAU +ARsAbACgANEAoABvAIMAcQCDAHMAMwDUAQYA0AEAAHgASQB5AGoA3gBqAKgAAAANAQAApgA/AKcA +AQALAT8ADAEBAAQACACcAcwAnQHMANUBzADWAcwAtAAgABkBIACPAIgA9ACIAJAAIgD1ACIAkQAE +APYABACFAAAAhgAAAIcAVQCIAAAAiQCqAIoAAACLAN0AjAAAAIUAAQCGAAEAhwBVAIgAAACJAKoA +igAAAIsA3QCMAAAAhQACAIYAAwCHAFUAiAAAAIkAqgCKAAAAiwDdAIwAAACFAAMAhgAHAIcAVQCI +AAAAiQCqAIoAAACLAN0AjAAAAPv/AAD//wAAuQHfADsCLQCxABsAFgEbAK8AGwAUARsAbACgANEA +oABvAIMAcQCDAHMAMwDUAQYA0AEAAHgASQB5AGoA3gBqAKgAAAANAQAApgA/AKcAAQALAT8ADAEB +AAQACACcAcwAnQHMANUBzADWAcwAtAAgABkBIACPAIgA9ACIAJAAIgD1ACIAkQAEAPYABACoAAwA +DQEMAIUAAACGAAAAhwCZAIgAAACJAKoAigAAAIsA3QCMAAAAhQABAIYAAQCHAJkAiAAAAIkAqgCK +AAAAiwDdAIwAAACFAAIAhgADAIcAmQCIAAAAiQCqAIoAAACLAN0AjAAAAIUAAwCGAAcAhwCZAIgA +AACJAKoAigAAAIsA3QCMAAAA+/8AAP//AAC5Ad8AsQAbABYBGwCvABsAFAEbAGwAoADRAKAAbwCD +AHEAgwB2AIMAcwAzAG4AMwBwADMAcgAzANcAMwDUAQYA0AEAAH4APADjADwAeABJAN0ASQB/AFoA +5ABaAKoAPwCrAAEADwE/ABABAQB5AGoA3gBqAKgAAAANAQAApgA3AKcAAQALATcADAEBAAQACACc +AcwAnQHMANUBzADWAcwAtAAgABkBIAAxAgwAMgIMADMCvQA2AgwANwIMADgCvQCgAIgABQGIAKEA +1QAGAdUAogAEAAcBBACPAIgA9ACIAJAAIgD1ACIAkQAEAPYABACfAAwA+wAMAJQAAACVAAAAnACX +AJ0A0ACaAI0AmAARAJYAMwCXAHcAlAABAJUAAQCcAJcAnQDQAJoAjQCYABEAlgAzAJcAdwCUAAIA +lQADAJwAlwCdANAAmgCNAJgAEQCWADMAlwB3AJQAAwCVAAcAnACXAJ0A0ACaAI0AmAARAJYAMwCX +AHcA+gAAAPkAAAACAZcAAwHQAAABjQD+ABEA/AAzAP0AdwD6AAEA+QABAAIBlwADAdAAAAGNAP4A +EQD8ADMA/QB3APoAAgD5AAMAAgGXAAMB0AAAAY0A/gARAPwAMwD9AHcA+gADAPkABwACAZcAAwHQ +AAABjQD+ABEA/AAzAP0AdwCFAAAAhgAAAIcAVQCIAAAAiQCnAIoAAACLAN4AjAAAAIUAAQCGAAEA +hwBVAIgAAACJAKcAigAAAIsA3gCMAAAAhQACAIYAAwCHAFUAiAAAAIkApwCKAAAAiwDeAIwAAACF +AAMAhgAHAIcAVQCIAAAAiQCnAIoAAACLAN4AjAAAAOsAAADqAAAA7ABVAO0AAADuAKcA7wAAAPAA +3gDxAAAA6wABAOoAAQDsAFUA7QAAAO4ApwDvAAAA8ADeAPEAAADrAAIA6gADAOwAVQDtAAAA7gCn +AO8AAADwAN4A8QAAAOsAAwDqAAcA7ABVAO0AAADuAKcA7wAAAPAA3gDxAAAApAGAAKEBQAD7/wAA +//8AAKUBAQC5Ad8AsQAbABYBGwCvABsAFAEbAGwAoADRAKAAbwCDAHEAgwB2AIMAcwAzAG4AMwBw +ADMAcgAzANcAMwDUAQYA0AEAAH4APADjADwAeABJAN0ASQB/AFoA5ABaAKoAPwCrAAEADwE/ABAB +AQB5AGoA3gBqAKgAAAANAQAApgA3AKcAAQALATcADAEBAAQACACcAcwAnQHMANUBzADWAcwAtAAg +ABkBIAAxAgwAMgIMADMCvQA2AgwANwIMADgCvQCgAIgABQGIAKEA1QAGAdUAogAEAAcBBACPAIgA +9ACIAJAAIgD1ACIAkQAEAPYABACfAAwA+wAMAJQAAACVAAAAnACXAJ0A0ACaAI0AmAARAJYAMwCX +AHcAlAABAJUAAQCcAJcAnQDQAJoAjQCYABEAlgAzAJcAdwCUAAIAlQADAJwAlwCdANAAmgCNAJgA +EQCWADMAlwB3AJQAAwCVAAcAnACXAJ0A0ACaAI0AmAARAJYAMwCXAHcA+gAAAPkAAAACAZcAAwHQ +AAABjQD+ABEA/AAzAP0AdwD6AAEA+QABAAIBlwADAdAAAAGNAP4AEQD8ADMA/QB3APoAAgD5AAMA +AgGXAAMB0AAAAY0A/gARAPwAMwD9AHcA+gADAPkABwACAZcAAwHQAAABjQD+ABEA/AAzAP0AdwCF +AAAAhgAAAIcAVQCIAAAAiQCnAIoAAACLAN4AjAAAAIUAAQCGAAEAhwBVAIgAAACJAKcAigAAAIsA +3gCMAAAAhQACAIYAAwCHAFUAiAAAAIkApwCKAAAAiwDeAIwAAACFAAMAhgAHAIcAVQCIAAAAiQCn +AIoAAACLAN4AjAAAAOsAAADqAAAA7ABVAO0AAADuAKcA7wAAAPAA3gDxAAAA6wABAOoAAQDsAFUA +7QAAAO4ApwDvAAAA8ADeAPEAAADrAAIA6gADAOwAVQDtAAAA7gCnAO8AAADwAN4A8QAAAOsAAwDq +AAcA7ABVAO0AAADuAKcA7wAAAPAA3gDxAAAApAGAAKEBQAD7/wAA//8AALkBwQDUAQMA0AEEAHgA +PADdADwAeQBqAN4AagCoAAEADQEBAAQACACcAcwAnQHMANUBzADWAcwAtAAgABkBIACPAIgA9ACI +AJAAAAD1AAAAkQAGAPYABgCFAAQA6wAEAKQBgABdAjMASgIOAEwCDgBNAgEArQEHALMBBAC4AQAA +uwFWAFACCwBRAgMAUgIBAFMCAABUAgsAVQIDAFYCAQBXAgAAZgIGAGgCBwBqAgcAbAIHAG4CBQBw +AgwAfQIGAH8CBwCBAgcAgwIHAIUCBQCHAgwAtQAhABoBIQBLAgEAoQFAALMAAAAYAQAAlAILAJUC +AwCWAgEAlwIAAJgCCwCZAgMAmgIBAJsCAACyADAAFwEwAJwCDwChAg8AoAKIAJ8CiACeAogAnQKI +AKUCiACkAogAowKIAKICiAD7/wAA//8AALkBwQDUAQMA0AEAAHgAPADdADwAeQBqAN4AagCoAAEA +DQEBAAQACACcAcwAnQHMANUBzADWAcwAtAAgABkBIACPAIgA9ACIAJAAAAD1AAAAkQAGAPYABgCF +AAQA6wAEAKQBgABdAjYASgINAEwCDwBNAgEArQEGALMBBAC4AQAAuwFWAFACCwBRAgMAUgIBAFMC +AABUAgsAVQIDAFYCAQBXAgAAZgIGAGgCBwBqAgcAbAIHAG4CBQBwAgwAfQIGAH8CBwCBAgcAgwIH +AIUCBQCHAgwAtQAhABoBIQChAUAA+/8AAP//AAC5AcEA1AEDANABBAB4ADwA3QA8AHkAagDeAGoA +qAABAA0BAQAEAAgAnAHMAJ0BzADVAcwA1gHMALQAIAAZASAAjwCIAPQAiACQAAAA9QAAAJEABgD2 +AAYAhQAEAOsABACkAYAAXQIzAEoCDgBMAg4ATQIBAK0BBwCzAQQAuAEAALsBVgBQAgsAUQIDAFIC +AQBTAgAAVAILAFUCAwBWAgEAVwIAAJQCCwCVAgMAlgIBAJcCAACYAgsAmQIDAJoCAQCbAgAAZgIG +AGgCBwBqAgYAbAIHAG4CBQBwAgwAfQIGAH8CBwCBAgYAgwIHAIUCBQCHAgwAsgAwABcBMACzAAAA +GAEAAJwCDwChAg8AoAKIAJ8CiACeAogAnQKIAKUCiACkAogAowKIAKICiAC1ACEAGgEhAKEBQABL +AgEA+/8AAP//AAC5AcEA1AEDANABAAB4ADwA3QA8AHkAagDeAGoAqAABAA0BAQAEAAgAnAHMAJ0B +zADVAcwA1gHMALQAIAAZASAAjwCIAPQAiACQAAAA9QAAAJEABgD2AAYAhQAEAOsABACkAYAAXQI2 +AEoCDQBMAg8ATQIBAK0BBgCzAQQAuAEAALsBVgBQAgsAUQIDAFICAQBTAgAAVAILAFUCAwBWAgEA +VwIAAGYCBgBoAgcAagIGAGwCBwBuAgUAcAIMAH0CBgB/AgcAgQIGAIMCBwCFAgUAhwIMALUAIQAa +ASEAoQFAAPv/AAAAAAAAAgAAAA3SEtIT0hTSDNIV0gvSAtIR0gRDABAUEAkQERABQBvSHNIA0goA +CwAEAA4AtQAaAQ8AQgC8AMMAIQEoAbYAtwC4ALkAvQC+AL8AwAAbARwBHQEeASIBIwEkASUBCgAA +AAsAAAC2AAAAtwAAALgAAAC5AAAAGwEAABwBAAAdAQAAHgEAAL0AAAC+AAAAvwAAAMAAAAAiAQAA +IwEAACQBAAAlAQAAEtIAABPSAAAAAAEAAgADACwAZAB0AIAAjAChAAcAAAAAAAEAAgADAAAAAAAA +AAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAHAAAAAAAAAAMA +AAAEAAAAAwAAAAAAAAD/AwAAAwAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAsAAEAAAAB +AAEAAQAAAAAAAAAAAAEAAQACAAIAAgADAAMABAAEAAUABQAGAAYABwAHAAgACAAJAAkACgAKAAsA +CwAMAAwADQANAA4ADgAPAAAAAQACAAAAC9IO0g3SCNIJ0grSEtIT0hTSEdIQ0gLSAdID0gCABdIE +QxvSHNIE0gBFMNIx0gAAtQAaAYEBBQAEAA8AEAAKAAsADABOAAAAAAABAAIAAAAN0hHSENIC0gHS +A9Ib0gvSAIAF0hLSE9IU0gRDCNIJ0grSHNIG0gfScNIAALUAGgGBAQQADwCDAOgATgGSAPcAXQEG +AAgACQAKAAsADAAFAAAAAAAAAAAACgAAAAEAAAAAAAAAAAAAAAAAAAADAAAABAAAAAMAAAAAAAAA +AwAAAAAAAAAAAAAAAAAAAAAAAAD/AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +ACwAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQAAAATSDdIR0hDSAtIB0gPSG9IAgAXSC9IS0hPS +FNIEQ3DSAAAAAAEAAAABAAAAAQAAAAEAAAADAAAAAgAAAAMAAAADAAAAAAAAAAEAAAAAAAAAAAAA +AAAAAAD/AwAAAAAAALUAGgGBAQQADwAGAAgACQAKAAsADAAAAAAAAAAAACwAAQAVABUAFQABAAEA +AQAAAAAAAQACAAAAHNIN0hHSENIC0gHSA9Ib0gvSAIAF0hLSE9IU0gRDBtIH0gTScNIAALUAGgGB +AQUABAAGAAgACQAKAAsADACDAJIA6AD3AE4BXQEPAAAAAAC3EyIAuBQjALkVJAC7FiUAvBcmAL0Y +JwDAGSgAxBopAAcbAAAIHAEACx0CAAweAwAQHwQAIiEFACQiBgAmIwcAKCQIAColCQAsJgoALicL +ADAoDAA0KQ0AOCoOADwrDwBALBAAZC4RAGgvEgBsMBMAcDEUAHQyFQB4MxYAfDQXAIA1GACENhkA +iDcaAIw4GwCROhwAlTsdAJk8HgCdPR8AoT4gAKU/IQAkSQYCLEoKAjRLDQE8TA8BZE0RAWxOEwF0 +TxUBfFAXAYRRGQGVUh0BnVMfAQEEAAACBQEAAwYCAAQHAwAFCAQABgkFAAcKBgAICwcACQwIAAoN +CQALDgoADA8LAA0QDAAOEQ0AAUAABAJBAQQDQgIEBEMDBAVEBAQGRQUEB0YGBAhHBwQJSAgEAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGAIYAhgCGAIYAhgCGAIYA +hgCGAIYAhgCGAIYAhwCIAAQABQAGAAYABwAIAAgACQAJAAoACwAMAAwAJAAlACUAJgAnACgAKABE +AEUARgBGAEcASABIAEkASgBKAEsATABoAGgAaQBqAGsAbABtAG0AbgBvAG8AcABxAHEAcgByAHIA +cgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAAoAPwCGAIYAhgCGAIYAhgCGAIYAhgCG +AIYAhgCGAIYAhwCIAAQABQAGAAYABwAIAAgACQAJAAoACwAMAAwAJAAlACUAJgAnACgAKABEAEUA +RgBGAEcASABIAEkASgBKAEsATABoAGgAaQBqAGsAbABtAG0AbgBvAG8AcABxAHEAcgByAHIAcgBy +AHIAcgByAHIAcgByAHIAcgByAHIAcgByAHIAcgByAAoAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAcAABEHAAA +TBwAAMgbAADMGwAANAygAEAMoAAcHKAAQCCgACgkoABsEKAAGCSgAHgkoAB8JKAAgCSgAIQkoABQ +EKAAVBCgAEgmoABgEKAATCagAGQQoABoEKAAXBCgAFgQoAAwEKAAPBCgADQQoAAsDKAAAIGkAAGB +pAADgaQAiCSgAIwkoACQJKAAlCSgAJgkoACcJKAAoCSgAKQkoAAAAAAAAAAAAAAAAAAAAAAAAQAC +AAIAAwAEAAQABQAGAAYABwAIAAgACQAKAAoACwAMAAwADQAOAA4ADwAmACcAKAApACoARgBGAEcA +SABIAEkASgBKAEsATABoAGkAagBqAGsAbABsAG0AbgBuAG8AcABwAHEAcgByAHMAcwB0AHQAdAB0 +AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AAoAPwAAAAAAAAAAAAAAAAAAAAAAAQABAAIA +AwADAAQABQAFAAYABwAHAAgACQAJAAoACwALAAwADAANAA4AIwAkACUAJgAnACgAKQBEAEUARgBG +AEcARwBIAEgASQBJAEoASwBoAGgAaQBqAGsAbABtAG0AbgBvAG8AcABxAHEAcgByAHMAcwBzAHMA +cwBzAHMAcwBzAHMAcwBzAHMAcwBzAHMAcwBzAAoAPwAAAAAAAAAAAAAAAAAAAAAAAQACAAIAAwAE +AAQABQAGAAYABwAIAAgACQAKAAoACwAMAAwADQAOAA4ADwAmACcAKAApACoARgBGAEcASABIAEkA +SgBKAEsATABoAGkAagBqAGsAbABsAG0AbgBuAG8AcABwAHEAcgByAHMAcwB0AHQAdAB0AHQAdAB0 +AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AAoAPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEA +AgADAAMABAAFAAUABgAHAAcACAAJAAkACgAKAAsAJAAlACUAJgAnACgAKABEAEUARgBGAEcASABI +AEkASgBKAEsATABoAGgAaQBqAGsAbABtAG0AbgBvAG8AcABxAHEAcgByAHIAcgByAHIAcgByAHIA +cgByAHIAcgByAHIAcgByAHIAcgByAAoAPwCAf4AAAAAAALIMLAH/////////AAH//wID////BP// +////////////////////Bf8G/wf/CP8J/wr/C/8M////Df///w7///8P////EP////////////// +////////////////////////////////Ef///xL///8T////FP///xX///8W////F////xj///8Z +////Gv///xv/////HP///x3///8e////H////yD///8h//////////////////////8iIyT/JSYn +//8o////Kf////////////////////////////////////////////////////////////////// +////////////AAEAAQEAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAQAAAAAAAABANAEA +AAAAAPR6AAABAAAA3M0BAAIAAAA0zQEAAwAAAGAdAgAEAAAAQDQBAAUAAABwIAEABgAAAEzyAAAH +AAAA+CABAAgAAADwMQAACQAAAKRUAAAKAAAANM8AAAsAAADILgAADAAAAGQdAgANAAAAfOkAAA4A +AAAo6gAADwAAAAjpAAAQAAAACOoAABEAAADAQQEAEgAAAGjmAQATAAAAnCYAABQAAAB0bAEAFQAA +AFxXAQAWAAAA9GYBABcAAABgzAEAGAAAAMiVAQAZAAAAhA4BABoAAAA8NAEAGwAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////wAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAATJ0AAEydAABMnQAATIkAAEydAABMnQAAsIkAAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEyd +AABMnQAATJ0AABiSAABgkQAAUJEAAICQAACIkQAAPJAAAEydAABMnQAALJQAAPyWAAAUmQAATJ0A +AEydAABMnQAAtJwAADCTAABokwAA1JIAAEydAABMnQAATJ0AAHCcAABMnQAAtJIAAEydAABMnQAA +TJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABM +nQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEyd +AABMnQAAdIoAAEydAABMnQAATJ0AAEydAABMnQAA1JkAAEydAABMnQAATJ0AAEydAABMnQAAwI0A +AEydAADQjQAAzI0AAMSNAADIjQAA/IYAAEydAAC0hgAATJ0AAEydAABMnQAATJ0AAEydAABMnQAA +TJ0AAEydAAA4hgAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAADY +iwAAUIsAAEydAAD0iwAATJ0AAJSKAAAAkAAATJ0AAEydAAA4kgAATJ0AAEydAABMnQAATJ0AAEyd +AACEkgAAaJIAAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAA1I0A +AEydAABMnQAATJ0AANCZAABMnQAATJ0AAEydAAAInAAATJ0AAGicAABwmQAATJ0AAEydAABIhQAA +MJkAAEydAABMnQAAiJAAAKCQAABMnQAATJ0AAHyNAABMhwAATJ0AAEydAABMnQAAcJMAACSQAABM +nQAATJ0AAEydAABMnQAATJ0AAEydAABkjwAATJ0AAHSdAAAAngAA4J0AABieAACsnQAAlJ0AACCe +AABwnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAACEjQAATJ0AAEydAABMnQAATJ0A +AEydAABMnQAATJ0AALCeAAC8nwAAYIUAAKyFAABMnQAATJ0AAEydAABMnQAATJ0AAHyHAABMnQAA +TJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABM +nQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAATJ0AAEydAABMnQAAgIcAAJyI +AAAMiAAAJJ4AAMSFAAAkiQAAvIkAAEydAABMnQAATJ0AAEydAACoiQAArIkAAEydAABMnQAAUIkA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAANCrAAD8qQAAPK0AAECsAABQrgAAAAABAP////8AAAAA//////////8B +AAAAeBEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAADQ/gAAAAAAAAAAAAAAABgg +oAAgIKAAQCGgAEghoAAcIKAAJCCgAEQhoABMIaAAKCCgADAgoABoIaAAcCGgACwgoAA0IKAAbCGg +AHQhoAA4IKAAPCCgAHghoAB8IaAAMBAAAAD/AwDQEAAAAP8FAHQQAAAA/y0AUBAAAAD/PQDsDwAA +AP8EABQQAAAA/yUA+M8AAAD/3QCYEAAAEBBMAAAAAAAAAAAAAAEBADw8PDw8PDw8PDw8PDw8PDw8 +PDw8PDw8PDw8PDw8PDw8FRUVFTw8PDwVFRUVPDw8PAAAAAAAAAAAAAAAAAAAAAA8PDw8PDw8PDw8 +PDw8PDw8PDw8PDw8PDw8PDw8PDw8PBUVFRU8PDw8FRUVFTw8PDwAAAAAAAAAAAAAAAAAAAAAPDw8 +PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDwVFRUVPDw8PBUVFRU8PDw8AAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAA/wAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0BIA +AAQaAABIFgAAsBMAAMQbAABQFwAA9BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwHgAA8vYAAGAAAAPy8gAAAAAAAAAAAAAAA +AAAAAAAAzAsBAIy6AAAIJAAAjLoAAIy6AACMugAAOAoAAGjeAQDc2QAAjLoAAIy6AAAYKgAAGCoA +ABgqAAAYKgAAGCoAABgqAAAYKgAAjLoAAIy6AACMugAAjLoAADBLAACMugAAjLoAAIy6AACMugAA +jLoAAMDZAACMugAAjLoAADjPAAAAAAAAwPUAAMT1AAC0AgAAoAIAAJRAAQBgxwAA+LgBAIjHAAAo +uQEArMcAAFi5AQCARIAAKLKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMIQAAlCEAAEDA +gAAAAgAAAAAAAJwDAQBsAwEAQMKAAEAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAwEAVD0B +ANDIgABUAAAAAAAAAJwDAQAoPAEAgMeAAFABAAAAAAAAnAMBAFA2AQCAB4AACAAAAAEAAACcAwEA +aAIBAAAAAABQAQAAAAAAAJwDAQDcNgEAGD2AAAIAAAAAAAAAnAMBAOg1AQB8B4AABAAAAAAAAACk +AwEAbAMBACTJgAAqAAAAAAAAAJwDAQBsAwEAVEqAAAgAAAAAAAAAAAAAAHQDAQAAAAAAAAAAAAEA +AAAAAAAAiAMBAAAAAAAAAAAAAAAAAAAAAABwAwEAAAAAAAAAAAAAAAAAnAMBABy7AQAAAAAAAAAA +AAAAAACcAwEA3LoBAIgHgAAEAAAAAAAAAG4AbgBpAMAAoABQAIAAvgBQAX0APgABAAEAAQBYAigA +5gEtAFUDPADcAWMAAABuAG4AaQDAAKAAUACAAL4AUAF9AD4AAQABAAEAWAIoAOYBLQBVAzwA3AFj +AAAAAAAAAAEBAADECgEAFdIAAAAAAAD/AwAAxAoBAAzSAAAAAAAA/wEAAMQKAQAV0gAACgAAAAD8 +DwDECgEADNIAAAkAAAAA/gMAxAoBABXSAAAUAAAAAADwP8QKAQAM0gAAEgAAAAAA/AfECgEABtIA +AAAAAAD/AQAAxAoBAAfSAAAAAAAA/wMAAMQKAQAG0gAACQAAAAD+AwDECgEAB9IAAAoAAAAA/A8A +xAoBAAbSAAASAAAAAAD8B8QKAQAH0gAAFAAAAAAA8D8AAAAAAAAAAAAAAAABAAAAAQAAAAoAAAAF +AAAABQAAAAYAAAAKAAAACgAAAAYAAAAEAAAABQAAAAYAAAAFAAAABQAAAAYAAAAGAAAABgAAAAYA +AAAHAAAABwAAAAcAAAAIAAAACAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAQAA +AAIAAAABAAAAAQAAAAMAAAADAAAAAgAAAAEAAAAEAAAAAAAAAAAAAAACAAAAAQAAAAEAAAAAAAAA +AAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAsAQAAXgEAAAEA +AAABAAAAAQAAAAEAAAADAAAAAAAAAAAAAAA4GQEAxB4BAHQdAQBIHwEAwB4BAKAcAQBEHwEAmBoB +AJQaAQBg4xYAINYTAAAAAAAQAAAAAIAAAAAAoAAQJwAA6AMAAOgDAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAIAAAACAAAAAQAAAAEAAAACAAAABQAAAAIAAAACAAAABQAAAAIAAAACAAAAAQAAAAEA +AAAFAAAABQAAAAIAAAAFAAAABQAAAAAAAAAFAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAFAAAABQAA +AAAAAAAFAAAAAgAAAAIAAAAFAAAABQAAAAUAAAAAAAAABQAAAAIAAAAFAAAAAQAAAAEAAAACAAAA +AgAAAAIAAAAFAAAABQAAAAIAAAAFAAAAAQAAAAEAAAACAAAAAgAAAAIAAAAFAAAABQAAAAIAAAAC +AAAABQAAAAEAAAACAAAABQAAAAIAAAAFAAAABQAAAAQAAAAFAAAABQAAAAEAAAAFAAAABQAAAAUA +AAACAAAAAgAAAAUAAAAFAAAABQAAAAEAAAAFAAAABQAAAAUAAAACAAAAAgAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAARAAAQAAAAKAAAFCAAYCEAACIAAA +A8AAAUMABgMQAALAAAADwAABQwAGBBAAAkAAAAKAAAFEAAYFEQAAQAAAA8AAAUUABgYRAADgAAAD +wAABRQAGBxEAAQAAAAKAAAFGAAYIEQACIAAAA8AAAUcABgkRAALAAAADwAABRwAGChEAAkAAAAKA +AAFIAAYLEgAAQAAAA8AAAUkABgwSAADgAAADwAABSQAGDRIAAQAAAAKAAAFKAAYOEgACAAAAAoAA +AUwABgF4ADAAAABQAAAEtjwGAngARAAAAFAAAAS5PAYDeQAIAAAAUAAABLs8BgR5ABwAAABQAAAE +vjwGBXkAMAAAAFAAAATAPAYGeQBEAAAAUAAABMM8Bgd6AAgAAABQAAAExTwGCHoAHAAAAFAAAATI +PAYJegAwAAAAUAAABMo8Bgp6AEQAAABQAAAEzTwGC3sACAAAAFAAAATPPAYMewAcAAAAUAAABNI8 +Bg17ADAAAABQAAAE1DwGDnwAEAAAAFAAAATaPgYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEBAAIBAAECAgIAAQEAAgECAQIA +AgABAgOAgICAgICAgAGAAoCAgICAwACQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAIwKjAoAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAQAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5NkBABUA +AAADAAAACGaAAAAAAAAAAAAAAAAAAIjZAQAFAAAAAwAAAAhmgAAAAAAAAAAAAAAAAAB82QEACgAA +AAMAAAAIZoAAAAAAAAAAAAAAAAAATNYBAAoAAAAAAAAAKGaAAAAAAAAAAAAAAAAAACTYAQAKAAAA +AAAAAChmgAAAAAAAAAAAAAAAAAAk2AEACgAAAAAAAAAoZoAAAAAAAAAAAAAAAAAAJNgBAAoAAAAA +AAAAKGaAAAAAAAAAAAAAAAAAACTYAQAKAAAAAAAAAChmgAAAAAAAAAAAAAAAAAAk2AEACgAAAAAA +AAAoZoAAAAAAAAAAAAAAAAAAJNgBAAoAAAAAAAAAKGaAAAAAAAAAAAAAAAAAACTYAQAKAAAAAAAA +AChmgAAAAAAAAAAAAAAAAAAk2AEACgAAAAAAAAAoZoAAAAAAAAAAAAAAAAAAJNgBAAoAAAAAAAAA +KGaAAAAAAAAAAAAAAAAAACTYAQAKAAAAAAAAAChmgAAAAAAAAAAAAAAAAAAk2AEACgAAAAAAAAAo +ZoAAAAAAAAAAAAAAAAAAJNgBAAoAAAAAAAAAKGaAAAAAAAAAAAAAAAAAAIzbAQAGAAAAAAAAAChm +gAAAAAAAAAAAAAAAAADg2gEABQAAAAMAAAAIZoAAAAAAAAAAAAAAAAAAPNUBAAoAAAAAAAAAKGaA +AAAAAAAAAAAAAAAAANzVAQAKAAAAAAAAAChmgAAAAAAAAAAAAAAAAAAI5QEACgAAAAMAAAAIZoAA +AAAAAAAAAAAAAAAAmNYBAAoAAAAAAAAAKGaAAAAAAAAAAAAAAAAAAHzXAQAKAAAAAAAAAChmgAAA +AAAAAAAAAAAAAAAo2AEACgAAAAAAAAAoZoAAAAAAAAAAAAAAAAAA5NgBAAoAAAAAAAAAKGaAAAAA +AAAAAAAAAAAAAOjZAQAKAAAAAAAAAChmgAAAAAAAAAAAAAAAAACI2gEACgAAAAAAAAAoZoAAAAAA +AAAAAAAAAAAAAAAAAAhmgAAIZoAAuCCgAGwgoAAAgAEA/3/8/wAAAAAAAAAAKGaAAChmgACkIKAA +OCCgAAEAAAD8////AAAAAAAAAABIZoAASGaAAKggoAA8IKAAEAAAAMf///8AAAAAAAAAAGhmgABo +ZoAArCCgAHghoABAAQAAP/7//wAAAAAAAAAAiGaAAIhmgACwIKAAfCGgAAAMAAD/8f//AAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAkNYBABUAAAADAAAACGaAAAAAAAAAAAAAAAAAACwHgAA8vYAAGAAA +APy8gAAAAAAAAAAAAAAAAAB/AAAAAAAAAAB/AAAAAAAAAAAAAAAAAAAAAAAAOAAAAGgAAAB0AAAA +gAAAAIwAAACdAAAABwAAAAAAAAD/////AAAAAC0BAADdAQAAWgIAALoCAAAKAwAATQMAAIcDAAC6 +AwAA6AMAABEEAAA3BAAAWQQAAHoEAACYBAAAtAQAAM4EAADnBAAA/gQAABUFAAAqBQAAPgUAAFEF +AABkBQAAdQUAAIYFAACXBQAApwUAALYFAADFBQAA0wUAAOEFAADuBQAA+wUAAAgGAAAUBgAAIAYA +ACsGAAA3BgAAQgYAAEwGAABXBgAAYQYAAGsGAAB1BgAAfgYAAIgGAACRBgAAmgYAAKIGAACrBgAA +tAYAALwGAADEBgAAzAYAANQGAADbBgAA4wYAAOoGAADyBgAA+QYAAAAHAAAHBwAADgcAABQHAAAb +BwAAIgcAACgHAAAuBwAANQcAADsHAABBBwAARwcAAE0HAABTBwAAWAcAAF4HAABkBwAAaQcAAG8H +AAB0BwAAeQcAAH8HAACEBwAAiQcAAI4HAACTBwAAmAcAAJ0HAACiBwAApwcAAKsHAACwBwAAtQcA +ALkHAAC+BwAAwgcAAMcHAADLBwAA0AcAANQHAADYBwAA3AcAAOEHAADlBwAA6QcAAO0HAADxBwAA +9QcAAPkHAAD9BwAAAQgAAAUIAAAICAAADAgAABAIAAAUCAAAFwgAABsIAAAfCAAAIggAACYIAAAp +CAAALQgAADAIAAA0CAAANwgAADsIAAA+CAAAQQgAAEUIAABICAAASwgAAE8IAABSCAAAVQgAAFgI +AABbCAAAXwgAAGIIAABlCAAAaAgAAGsIAABuCAAAcQgAAHQIAAB3CAAAeggAAH0IAACACAAAgggA +AIUIAACICAAAiwgAAI4IAACRCAAAkwgAAJYIAACZCAAAAAAAAAEAAAAAAAAABwAAAAAAAAAAAAAA +AAAAAAABAgMEBAQEBAUGBwgICAgICQoLDA0AAG47aDtiO1w7bjpoOmI6XDpuOWg5YjlcOW4raCti +K1wrbipoKmIqXCpuKWgpYilcKW4oaChiKFwobidoJ2InXCduJmgmYiZcJm4laCViJVwlbiRoJGIk +XCRuI2gjYiNcI24iaCJiIlwibiFoIWIhXCFuIGggYiBcIGITXBNuEmgSYhJcEm4RaBFiEVwRbhBo +EGIQXBBuAmgCYgJcAm4BaAFiAVwBbgBoAFQAAABuO2g7YjtcO246aDpiOlw6bjloOWI5XDluK2gr +YitcK24qaCpiKlwqbiloKWIpXCluKGgoYihcKG4naCdiJ1wnbiZoJmImXCZuJWglYiVcJW4kaCRi +JFwkbiNoI2IjXCNuImgiYiJcIm4haCFiIVwhbiBoIGIgXCBuEmgSYhJcEm4RaBFiEVwRbhBoEGIQ +XBBXEFIQTRBJEG4BaAFiAVwBbgBoAGIAXABUAAAAAAAAAAAAAAAdAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAgwAAAJIAAACDAAAAkgAAAOgAAAD3AAAA6AAAAPcAAAAAAAAACQAAAAAAAAAKAAAA +OAAAAGgAAAB0AAAAgAAAAIwAAACdAAAABwAAAAAAAAAHAAAABwAAAAcAAAAAAAAAAAAAAAAAAAAA +AAAAEGEBAAgAAAADAAAACGaAAHgJgAD4CYAAeAqAAPgKgAAKDREUCg0RFBkZGRkKCgAAAAAAAAYG +BgYJCQkJAAYAAAAFBgcIDQ4PEBUWFxgZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAPGqysJS+srKysrKWsfpFOQwybNgAAADcAmpKPSAAADwAgaDcAAAARAD46IBEAAAIlAAAMLwAA +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 +f/8HDx8/AQMwAAAANgAAAAwAAAASAAAAGAAAACQAAAAGAAAACQAAAAUABwIDBAYGQAOABsAJAA2A +EwAaQB2AIIAGAA2AEwAaACcANIA6AEHACYATQB0AJ4A6AE7AV4BhmQMzB9kKcw6mFeYcgCAZJDMH +cw6mFeYcWSvMOQBBM0jZCqYVgCBZKwBBplaAYVlsndiJnU7sxE40SIM0J3ZiJxqkQRoTO7ETERiB +EQ/8wA9O7MROJ3ZiJxqkQRoTO7ETDdIgDYmd2AkIjMAIB37gBzRIgzQapEEaERiBEQ3SIA0IjMAI +BmmQBrCy1QUFVEAFJ3ZiJxM7sRMN0iANiZ3YCQZpkAbETuwEBEZgBAM/8AOqqqqqGqRBGhM7sRMP +/MAPERiBEQ3SIA0KqIAKEzuxEw/8wA8P/MAPDdIgDQu0QAsLtEALiZ3YCQ3SIA0KqIAKCqiACgiM +wAgHeIAHB3iABwZpkAYP/MAPDdIgDQu0QAsN0iANC7RAC4md2AkIjMAIiZ3YCQiMwAgHfuAHB37g +B8EsKQcKqIAKCIzACAd4gAcIjMAIB3iABwZpkAawstUFBmmQBrCy1QUFVEAFBVRABdYdxgQBBw8f +P3///2bmAAAFBgECAwQAAFQAVABsAGAAXABUAIwAeAANDwUHCQsBAygAKAA0ADAALAAsAEQAPAAs +ACwAPAA0ADAALABUAEQAVVVVAUtoLwFVVVUF4ziOA6qqqgJxHMcBqqqqCsdxHAcABAAAZAAAAAAA +AAAPAD8AAQAAAA8APwABAAAADwA/AAEAAAAPAD8AAQAAAA8APwABAAAADwA/AAEAAAAPAD8AAgAA +AA8APwABAAAAIhYAAIAAAAMAAAFZAAAkFgABAAAAAwAAAVoAACYWAAIAAAAEAAABWgAAKBYAAgAA +AAMAAAFbAAAqFgACgAAAAwAAAVwAACwXAAAAAAAEAAABXAAALhcAAIAAAAMAAAFdAAAwFwABAAAA +AwAAAV4AADQXAAIAAAADAAABXwAANhcAAoAAAAMAAAFgAAA4GAAAAAAABAAAAWAAADwYAAEAAAAD +AAABYgAAPhgAAgAAAAQAAAFiAABAGAACAAAAAwAAAWMAAGQbAAIAAAADAAABbwABZhsAAoAAAAMA +AAFwAAFoHAAAAAAABAAAAXAAAWwcAAEAAAADAAABcgABbhwAAgAAAAQAAAFyAAFwHAACAAAAAwAA +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 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAYAAAAEAAAALAEAAAcAAAAAAAAAEgAAAAQAAAALAAAACAAAAAQAAACYS4AACQAA +AAQAAAAQGAAACgAAAAQAAAAES4AACwAAAAQAAAD0SoAADAAAAAQAAAAQGAAADQAAAAQAAABgSoAA +DgAAAAAAAAAPAAAABAAAABYAAAA= +==== diff --git a/sys/modules/iwnfw/iwn2000/Makefile b/sys/modules/iwnfw/iwn2000/Makefile new file mode 100644 index 0000000..920ae8d --- /dev/null +++ b/sys/modules/iwnfw/iwn2000/Makefile @@ -0,0 +1,6 @@ +# $FreeBSD$ + +KMOD= iwn2000fw +IMG= iwlwifi-2000-18.168.6.1 + +.include -- cgit v1.1 From 0c40bd77afdf5a783614e79c12a317267d9aa6e1 Mon Sep 17 00:00:00 2001 From: kargl Date: Wed, 28 Aug 2013 16:59:55 +0000 Subject: * Whitespace. --- lib/msun/src/s_erf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/msun/src/s_erf.c b/lib/msun/src/s_erf.c index a4e91a3..854767b 100644 --- a/lib/msun/src/s_erf.c +++ b/lib/msun/src/s_erf.c @@ -201,7 +201,7 @@ erf(double x) if(ix < 0x3feb0000) { /* |x|<0.84375 */ if(ix < 0x3e300000) { /* |x|<2**-28 */ if (ix < 0x00800000) - return (8*x+efx8*x)/8; /* avoid spurious underflow */ + return (8*x+efx8*x)/8; /* avoid spurious underflow */ return x + efx*x; } z = x*x; -- cgit v1.1 From 2ecfc284152b0f42d7d72d81c1aee8786a7a81c9 Mon Sep 17 00:00:00 2001 From: mckusick Date: Wed, 28 Aug 2013 17:38:05 +0000 Subject: A performance problem was reported in PR kern/181226: I have 25TB Dell PERC 6 RAID5 array. When it becomes almost full (10-20GB free), processes which write data to it start eating 100% CPU and write speed drops below 1MB/sec (normally to gives 400MB/sec). The revision at which it first became apparent was http://svnweb.freebsd.org/changeset/base/249782. The offending change reserved an area in each cylinder group to store metadata. The new algorithm attempts to save this area for metadata and allows its use for non-metadata only after all the data areas have been exhausted. The size of the reserved area defaults to half of minfree, so the filesystem reports full before the data area can completely fill. However, in this report, the filesystem has had minfree reduced to 1% thus forcing the metadata area to be used for data. As the filesystem approached full, it had only metadata areas left to allocate. The result was that every block allocation had to scan summary data for 30,000 cylinder groups before falling back to searching up to 30,000 metadata areas. The fix is to give up on saving the metadata areas once the free space reserve drops below 2%. The effect of this change is to use the old algorithm of just accepting the first available block that we find. Since most filesystems use the default 5% minfree, this will have no effect on their operation. For those that want to push to the limit, they will get their crappy block placements quickly. Submitted by: Dmitry Sivachenko Fix Tested by: Dmitry Sivachenko PR: kern/181226 MFC after: 2 weeks --- sys/ufs/ffs/ffs_alloc.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/sys/ufs/ffs/ffs_alloc.c b/sys/ufs/ffs/ffs_alloc.c index cf1d953..cb5d45c 100644 --- a/sys/ufs/ffs/ffs_alloc.c +++ b/sys/ufs/ffs/ffs_alloc.c @@ -516,7 +516,13 @@ ffs_reallocblks_ufs1(ap) ip = VTOI(vp); fs = ip->i_fs; ump = ip->i_ump; - if (fs->fs_contigsumsize <= 0) + /* + * If we are not tracking block clusters or if we have less than 2% + * free blocks left, then do not attempt to cluster. Running with + * less than 5% free block reserve is not recommended and those that + * choose to do so do not expect to have good file layout. + */ + if (fs->fs_contigsumsize <= 0 || freespace(fs, 2) < 0) return (ENOSPC); buflist = ap->a_buflist; len = buflist->bs_nchildren; @@ -737,7 +743,13 @@ ffs_reallocblks_ufs2(ap) ip = VTOI(vp); fs = ip->i_fs; ump = ip->i_ump; - if (fs->fs_contigsumsize <= 0) + /* + * If we are not tracking block clusters or if we have less than 2% + * free blocks left, then do not attempt to cluster. Running with + * less than 5% free block reserve is not recommended and those that + * choose to do so do not expect to have good file layout. + */ + if (fs->fs_contigsumsize <= 0 || freespace(fs, 2) < 0) return (ENOSPC); buflist = ap->a_buflist; len = buflist->bs_nchildren; -- cgit v1.1 From 2cba18824681bafe7c24ecda512ed142ee4d2507 Mon Sep 17 00:00:00 2001 From: mckusick Date: Wed, 28 Aug 2013 17:46:32 +0000 Subject: In looking at block layouts as part of fixing filesystem block allocations under low free-space conditions (-r254995), determine that old block-preference search order used before -r249782 worked a bit better. This change reverts to that block-preference search order. MFC after: 2 weeks --- sys/ufs/ffs/ffs_alloc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/ufs/ffs/ffs_alloc.c b/sys/ufs/ffs/ffs_alloc.c index cb5d45c..3063ade 100644 --- a/sys/ufs/ffs/ffs_alloc.c +++ b/sys/ufs/ffs/ffs_alloc.c @@ -1186,7 +1186,7 @@ ffs_dirpref(pip) if (fs->fs_contigdirs[cg] < maxcontigdirs) return ((ino_t)(fs->fs_ipg * cg)); } - for (cg = prefcg - 1; cg >= 0; cg--) + for (cg = 0; cg < prefcg; cg++) if (fs->fs_cs(fs, cg).cs_ndir < maxndir && fs->fs_cs(fs, cg).cs_nifree >= minifree && fs->fs_cs(fs, cg).cs_nbfree >= minbfree) { @@ -1199,7 +1199,7 @@ ffs_dirpref(pip) for (cg = prefcg; cg < fs->fs_ncg; cg++) if (fs->fs_cs(fs, cg).cs_nifree >= avgifree) return ((ino_t)(fs->fs_ipg * cg)); - for (cg = prefcg - 1; cg >= 0; cg--) + for (cg = 0; cg < prefcg; cg++) if (fs->fs_cs(fs, cg).cs_nifree >= avgifree) break; return ((ino_t)(fs->fs_ipg * cg)); -- cgit v1.1 From 77c4dc92ec8722e52cfa36ba7a5cdf6b4ae3f4d7 Mon Sep 17 00:00:00 2001 From: jkim Date: Wed, 28 Aug 2013 17:58:30 +0000 Subject: Avoid unnecessary signedness conversion. --- sys/dev/fb/vesa.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/dev/fb/vesa.c b/sys/dev/fb/vesa.c index 82fbeac..6d56193 100644 --- a/sys/dev/fb/vesa.c +++ b/sys/dev/fb/vesa.c @@ -83,7 +83,7 @@ static struct mtx vesa_lock; static int vesa_state; static void *vesa_state_buf; static uint32_t vesa_state_buf_offs; -static ssize_t vesa_state_buf_size; +static size_t vesa_state_buf_size; static u_char *vesa_palette; static uint32_t vesa_palette_offs; @@ -207,7 +207,7 @@ static int vesa_bios_load_palette2(int start, int colors, u_char *r, u_char *g, #define STATE_SIZE 0 #define STATE_SAVE 1 #define STATE_LOAD 2 -static ssize_t vesa_bios_state_buf_size(int); +static size_t vesa_bios_state_buf_size(int); static int vesa_bios_save_restore(int code, void *p); #ifdef MODE_TABLE_BROKEN static int vesa_bios_get_line_length(void); @@ -505,7 +505,7 @@ vesa_bios_load_palette2(int start, int colors, u_char *r, u_char *g, u_char *b, return (regs.R_AX != 0x004f); } -static ssize_t +static size_t vesa_bios_state_buf_size(int state) { x86regs_t regs; -- cgit v1.1 From 150b502476c182aeab4bb89205740ef0ecb1cbc8 Mon Sep 17 00:00:00 2001 From: jkim Date: Wed, 28 Aug 2013 18:13:37 +0000 Subject: Make sure to free stale buffer before allocating new one for safety. --- sys/dev/fb/vesa.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/dev/fb/vesa.c b/sys/dev/fb/vesa.c index 6d56193..1fa489c 100644 --- a/sys/dev/fb/vesa.c +++ b/sys/dev/fb/vesa.c @@ -1475,6 +1475,10 @@ vesa_save_state(video_adapter_t *adp, void *p, size_t size) if (vesa_state_buf_size > 0 && size < bsize) return (EINVAL); + if (vesa_vmem_buf != NULL) { + free(vesa_vmem_buf, M_DEVBUF); + vesa_vmem_buf = NULL; + } if (VESA_MODE(adp->va_mode) && adp->va_buffer != 0) { buf = adp->va_buffer; bsize = adp->va_buffer_size; @@ -1486,8 +1490,7 @@ vesa_save_state(video_adapter_t *adp, void *p, size_t size) vesa_vmem_buf = malloc(bsize, M_DEVBUF, M_NOWAIT); if (vesa_vmem_buf != NULL) bcopy((void *)buf, vesa_vmem_buf, bsize); - } else - vesa_vmem_buf = NULL; + } if (vesa_state_buf_size == 0) return ((*prevvidsw->save_state)(adp, p, size)); ((adp_state_t *)p)->sig = V_STATE_SIG; @@ -1524,6 +1527,7 @@ vesa_load_state(video_adapter_t *adp, void *p) bcopy(vesa_vmem_buf, (void *)buf, bsize); } free(vesa_vmem_buf, M_DEVBUF); + vesa_vmem_buf = NULL; } if (((adp_state_t *)p)->sig != V_STATE_SIG) return ((*prevvidsw->load_state)(adp, p)); -- cgit v1.1 From 1e9dff7acaa990a9dcb8101c26a5756f555eb4eb Mon Sep 17 00:00:00 2001 From: jkim Date: Wed, 28 Aug 2013 19:06:22 +0000 Subject: Do not save/restore video memory if we are not using linear frame buffer. Note this partially revert r233896. --- sys/dev/fb/vesa.c | 37 +++++++++++++++---------------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/sys/dev/fb/vesa.c b/sys/dev/fb/vesa.c index 1fa489c..c675a54 100644 --- a/sys/dev/fb/vesa.c +++ b/sys/dev/fb/vesa.c @@ -1,6 +1,6 @@ /*- * Copyright (c) 1998 Kazutaka YOKOTA and Michael Smith - * Copyright (c) 2009-2012 Jung-uk Kim + * Copyright (c) 2009-2013 Jung-uk Kim * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -1463,7 +1463,7 @@ vesa_set_border(video_adapter_t *adp, int color) static int vesa_save_state(video_adapter_t *adp, void *p, size_t size) { - vm_offset_t buf; + void *buf; size_t bsize; if (adp != vesa_adp || (size == 0 && vesa_state_buf_size == 0)) @@ -1479,17 +1479,14 @@ vesa_save_state(video_adapter_t *adp, void *p, size_t size) free(vesa_vmem_buf, M_DEVBUF); vesa_vmem_buf = NULL; } - if (VESA_MODE(adp->va_mode) && adp->va_buffer != 0) { - buf = adp->va_buffer; - bsize = adp->va_buffer_size; - } else { - buf = adp->va_window; - bsize = adp->va_window_size; - } - if (buf != 0) { - vesa_vmem_buf = malloc(bsize, M_DEVBUF, M_NOWAIT); - if (vesa_vmem_buf != NULL) - bcopy((void *)buf, vesa_vmem_buf, bsize); + if (VESA_MODE(adp->va_mode)) { + buf = (void *)adp->va_buffer; + if (buf != NULL) { + bsize = adp->va_buffer_size; + vesa_vmem_buf = malloc(bsize, M_DEVBUF, M_NOWAIT); + if (vesa_vmem_buf != NULL) + bcopy(buf, vesa_vmem_buf, bsize); + } } if (vesa_state_buf_size == 0) return ((*prevvidsw->save_state)(adp, p, size)); @@ -1500,7 +1497,7 @@ vesa_save_state(video_adapter_t *adp, void *p, size_t size) static int vesa_load_state(video_adapter_t *adp, void *p) { - vm_offset_t buf; + void *buf; size_t bsize; int error, mode; @@ -1515,16 +1512,12 @@ vesa_load_state(video_adapter_t *adp, void *p) error = vesa_set_mode(adp, mode); if (vesa_vmem_buf != NULL) { - if (error == 0) { - if (VESA_MODE(mode) && adp->va_buffer != 0) { - buf = adp->va_buffer; + if (error == 0 && VESA_MODE(mode)) { + buf = (void *)adp->va_buffer; + if (buf != NULL) { bsize = adp->va_buffer_size; - } else { - buf = adp->va_window; - bsize = adp->va_window_size; + bcopy(vesa_vmem_buf, buf, bsize); } - if (buf != 0) - bcopy(vesa_vmem_buf, (void *)buf, bsize); } free(vesa_vmem_buf, M_DEVBUF); vesa_vmem_buf = NULL; -- cgit v1.1 From a9feb8e8b996e9a105c5581728f136d650c732b3 Mon Sep 17 00:00:00 2001 From: rwatson Date: Wed, 28 Aug 2013 19:49:32 +0000 Subject: Add a simple procdesc(4) man page describing "options PROCDESC" and the high-level facility, supplementing pdfork(2) and friends. Update capsicum.4 to xref. Suggested by: sbruno MFC after: 3 days --- share/man/man4/Makefile | 1 + share/man/man4/capsicum.4 | 14 ++++--- share/man/man4/procdesc.4 | 93 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 103 insertions(+), 5 deletions(-) create mode 100644 share/man/man4/procdesc.4 diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile index 3a7da85..e51ad39 100644 --- a/share/man/man4/Makefile +++ b/share/man/man4/Makefile @@ -367,6 +367,7 @@ MAN= aac.4 \ ppbus.4 \ ppc.4 \ ppi.4 \ + procdesc.4 \ psm.4 \ pst.4 \ pt.4 \ diff --git a/share/man/man4/capsicum.4 b/share/man/man4/capsicum.4 index 39619f9..8f38dc4 100644 --- a/share/man/man4/capsicum.4 +++ b/share/man/man4/capsicum.4 @@ -1,5 +1,5 @@ .\" -.\" Copyright (c) 2011 Robert N. M. Watson +.\" Copyright (c) 2011, 2013 Robert N. M. Watson .\" Copyright (c) 2011 Jonathan Anderson .\" All rights reserved. .\" @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd September 20, 2011 +.Dd August 21, 2013 .Dt CAPSICUM 4 .Os .Sh NAME @@ -78,10 +78,13 @@ objects using capabilities rather than global namespaces: .Bl -tag -width indent .It process descriptors File descriptors representing processes, allowing parent processes to manage -child processes without requiring access to the PID namespace. +child processes without requiring access to the PID namespace; described in +greater detail in +.Xr procdesc 4 . .It anonymous shared memory An extension to the POSIX shared memory API to support anonymous swap objects -associated with file descriptors. +associated with file descriptors; described in greater detail in +.Xr shm_open 2 . .El .Sh SEE ALSO .Xr cap_enter 2 , @@ -96,7 +99,8 @@ associated with file descriptors. .Xr pdwait4 2 , .Xr read 2 , .Xr shm_open 2 , -.Xr write 2 +.Xr write 2 , +.Xr procdesc 4 , .Sh HISTORY .Nm first appeared in diff --git a/share/man/man4/procdesc.4 b/share/man/man4/procdesc.4 new file mode 100644 index 0000000..f7477da --- /dev/null +++ b/share/man/man4/procdesc.4 @@ -0,0 +1,93 @@ +.\" +.\" Copyright (c) 2013 Robert N. M. Watson +.\" All rights reserved. +.\" +.\" This software was developed by SRI International and the University of +.\" Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237) +.\" ("CTSRD"), as part of the DARPA CRASH research programme. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd August 21, 2013 +.Dt PROCDESC 4 +.Os +.Sh NAME +.Nm procdesc +.Nd process descriptor facility +.Sh SYNOPSIS +.Cd "options PROCDESC" +.Sh DESCRIPTION +.Nm +is a file-descriptor-oriented interface to process signalling and control, +which supplements historic +.Ux +.Xr fork 2 , +.Xr kill 2 , +and +.Xr wait4 2 +primitives with +new system calls such as +.Xr pdfork 2 , +.Xr pdkill 2 , +and +.Xr pdwait4 2 . +.Nm +is designed for use with +.Xr capsicum 4 , +replacing process identifiers with capability-oriented references. +However, it can also be used independently of +.Xr capsicum 4 , +displacing PIDs, which may otherwise suffer from race conditions. +Given a process descriptor, it is possible to query its conventional PID using +.Xr pdgetpid 2 . +.Sh SEE ALSO +.Xr fork 2 , +.Xr kill 2 , +.Xr wait4 2 , +.Xr pdfork 2 , +.Xr pdgetpid 2 , +.Xr pdkill 2 , +.Xr pdwait4 , +.Xr capsicum 4 +.Sh HISTORY +.Nm +first appeared in +.Fx 9.0 , +and was developed at the University of Cambridge. +.Sh AUTHORS +.Nm +was developed by +.An -nosplit +.An "Robert Watson" Aq rwatson@FreeBSD.org +and +.An "Jonathan Anderson" Aq jonathan@FreeBSD.org +at the University of Cambridge, and +.An "Ben Laurie" Aq benl@FreeBSD.org +and +.An "Kris Kennaway" Aq kris@FreeBSD.org +at Google, Inc. +.Sh BUGS +.Nm +is considered experimental in +.Fx . -- cgit v1.1 From 1dbe7f4b1088ab3386ca97086efe1af87ea6d9da Mon Sep 17 00:00:00 2001 From: rwatson Date: Wed, 28 Aug 2013 20:00:25 +0000 Subject: Xref capsicum(4) and procdesc(4) from pdfork(2). Suggested by: sbruno MFC after: 3 days --- lib/libc/sys/pdfork.2 | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/libc/sys/pdfork.2 b/lib/libc/sys/pdfork.2 index ad33566..26d0eb0 100644 --- a/lib/libc/sys/pdfork.2 +++ b/lib/libc/sys/pdfork.2 @@ -1,10 +1,14 @@ .\" -.\" Copyright (c) 2009-2010, 2012 Robert N. M. Watson +.\" Copyright (c) 2009-2010, 2012-2013 Robert N. M. Watson .\" All rights reserved. .\" .\" This software was developed at the University of Cambridge Computer .\" Laboratory with support from a grant from Google, Inc. .\" +.\" This software was developed by SRI International and the University of +.\" Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237) +.\" ("CTSRD"), as part of the DARPA CRASH research programme. +.\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: @@ -28,7 +32,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 25, 2012 +.Dd August 28, 2013 .Dt PDFORK 2 .Os .Sh NAME @@ -71,7 +75,9 @@ Instead of the default terminate-on-close behaviour, allow the process to live until it is explicitly killed with .Xr kill 2 . .Pp -This option is not permitted in Capsicum capability mode (see +This option is not permitted in +.Xr capsicum 4 +capability mode (see .Xr cap_enter 2 ) . .El .Pp @@ -119,6 +125,12 @@ is set; if the process is still alive and this is the last reference to the process descriptor, the process will be terminated with the signal .Dv SIGKILL . +.Pp +.Nm +and associated functions depend on +.Cd "options PROCDESC" +described in +.Xr procdesc 4 . .Sh RETURN VALUES .Fn pdfork returns a PID, 0 or -1, as @@ -156,7 +168,9 @@ for .Xr fstat 2 , .Xr kill 2 , .Xr poll 2 , -.Xr wait4 2 +.Xr wait4 2 , +.Xr capsicum 4 , +.Xr procdesc 4 .Sh HISTORY The .Fn pdfork , -- cgit v1.1 From 16f0aaff8816d1bca217ef3e759670f35e189f52 Mon Sep 17 00:00:00 2001 From: davidcs Date: Wed, 28 Aug 2013 20:07:00 +0000 Subject: ql_minidump() should be performed only by port 0. Submitted by: David C Somayajulu --- sys/dev/qlxgbe/ql_os.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/dev/qlxgbe/ql_os.c b/sys/dev/qlxgbe/ql_os.c index c6fcae3..700c4a8 100644 --- a/sys/dev/qlxgbe/ql_os.c +++ b/sys/dev/qlxgbe/ql_os.c @@ -1642,8 +1642,6 @@ qla_error_recovery(void *context, int pending) QLA_UNLOCK(ha, __func__); - ql_minidump(ha); - if ((ha->pci_func & 0x1) == 0) { if (!ha->msg_from_peer) { @@ -1656,6 +1654,8 @@ qla_error_recovery(void *context, int pending) ha->msg_from_peer = 0; + ql_minidump(ha); + (void) ql_init_hw(ha); qla_free_xmt_bufs(ha); qla_free_rcv_bufs(ha); -- cgit v1.1 From 8071801ca5dbd29cf20ba73e01f4748f7bbfb046 Mon Sep 17 00:00:00 2001 From: jkim Date: Wed, 28 Aug 2013 20:10:56 +0000 Subject: Reduce diff against stable/9 slightly. --- sys/dev/fb/vesa.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sys/dev/fb/vesa.c b/sys/dev/fb/vesa.c index c675a54..48067b6 100644 --- a/sys/dev/fb/vesa.c +++ b/sys/dev/fb/vesa.c @@ -1506,6 +1506,7 @@ vesa_load_state(video_adapter_t *adp, void *p) /* Try BIOS POST to restore a sane state. */ (void)vesa_bios_post(); + bsize = adp->va_buffer_size; mode = adp->va_mode; error = vesa_set_mode(adp, adp->va_initial_mode); if (mode != adp->va_initial_mode) @@ -1514,10 +1515,8 @@ vesa_load_state(video_adapter_t *adp, void *p) if (vesa_vmem_buf != NULL) { if (error == 0 && VESA_MODE(mode)) { buf = (void *)adp->va_buffer; - if (buf != NULL) { - bsize = adp->va_buffer_size; + if (buf != NULL) bcopy(vesa_vmem_buf, buf, bsize); - } } free(vesa_vmem_buf, M_DEVBUF); vesa_vmem_buf = NULL; -- cgit v1.1 From 5147205a55b3f9cfbf6fd2523986dd24e80d743a Mon Sep 17 00:00:00 2001 From: np Date: Wed, 28 Aug 2013 20:45:45 +0000 Subject: Add hooks in base cxgbe(4) for the iWARP upper-layer driver. Update a couple of assertions in the TOE driver as well. --- sys/dev/cxgbe/adapter.h | 1 + sys/dev/cxgbe/offload.h | 1 + sys/dev/cxgbe/osdep.h | 2 ++ sys/dev/cxgbe/t4_main.c | 1 - sys/dev/cxgbe/t4_sge.c | 18 +++++++++++++++++- sys/dev/cxgbe/tom/t4_cpl_io.c | 15 +++++++++------ 6 files changed, 30 insertions(+), 8 deletions(-) diff --git a/sys/dev/cxgbe/adapter.h b/sys/dev/cxgbe/adapter.h index 2d118c4..f121ec8 100644 --- a/sys/dev/cxgbe/adapter.h +++ b/sys/dev/cxgbe/adapter.h @@ -567,6 +567,7 @@ struct adapter { #ifdef TCP_OFFLOAD void *tom_softc; /* (struct tom_data *) */ struct tom_tunables tt; + void *iwarp_softc; /* (struct c4iw_dev *) */ #endif struct l2t_data *l2t; /* L2 table */ struct tid_info tids; diff --git a/sys/dev/cxgbe/offload.h b/sys/dev/cxgbe/offload.h index 7f4b38e..8d3cf66 100644 --- a/sys/dev/cxgbe/offload.h +++ b/sys/dev/cxgbe/offload.h @@ -123,6 +123,7 @@ struct t4_virt_res { /* virtualized HW resources */ #ifdef TCP_OFFLOAD enum { ULD_TOM = 1, + ULD_IWARP = 2, }; struct adapter; diff --git a/sys/dev/cxgbe/osdep.h b/sys/dev/cxgbe/osdep.h index 5575f61..403b535 100644 --- a/sys/dev/cxgbe/osdep.h +++ b/sys/dev/cxgbe/osdep.h @@ -45,6 +45,7 @@ #define CH_ALERT(adap, fmt, ...) log(LOG_ALERT, fmt, ##__VA_ARGS__) #define CH_WARN_RATELIMIT(adap, fmt, ...) log(LOG_WARNING, fmt, ##__VA_ARGS__) +#ifndef LINUX_TYPES_DEFINED typedef int8_t s8; typedef int16_t s16; typedef int32_t s32; @@ -156,5 +157,6 @@ strstrip(char *s) return (r); } +#endif /* LINUX_TYPES_DEFINED */ #endif diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c index db4637d..e185de7 100644 --- a/sys/dev/cxgbe/t4_main.c +++ b/sys/dev/cxgbe/t4_main.c @@ -600,7 +600,6 @@ t4_attach(device_t dev) t4_register_cpl_handler(sc, CPL_TRACE_PKT_T5, t5_trace_pkt); t4_init_sge_cpl_handlers(sc); - /* Prepare the adapter for operation */ rc = -t4_prep_adapter(sc); if (rc != 0) { diff --git a/sys/dev/cxgbe/t4_sge.c b/sys/dev/cxgbe/t4_sge.c index 2ab1810..c5aeff9 100644 --- a/sys/dev/cxgbe/t4_sge.c +++ b/sys/dev/cxgbe/t4_sge.c @@ -1069,6 +1069,17 @@ service_iq(struct sge_iq *iq, int budget) ("%s: budget %u, rsp_type %u", __func__, budget, rsp_type)); + /* + * There are 1K interrupt-capable queues (qids 0 + * through 1023). A response type indicating a + * forwarded interrupt with a qid >= 1K is an + * iWARP async notification. + */ + if (lq >= 1024) { + sc->an_handler(iq, ctrl); + break; + } + q = sc->sge.iqmap[lq - sc->sge.iq_start]; if (atomic_cmpset_int(&q->state, IQS_IDLE, IQS_BUSY)) { @@ -1083,7 +1094,12 @@ service_iq(struct sge_iq *iq, int budget) break; default: - sc->an_handler(iq, ctrl); + KASSERT(0, + ("%s: illegal response type %d on iq %p", + __func__, rsp_type, iq)); + log(LOG_ERR, + "%s: illegal response type %d on iq %p", + device_get_nameunit(sc->dev), rsp_type, iq); break; } diff --git a/sys/dev/cxgbe/tom/t4_cpl_io.c b/sys/dev/cxgbe/tom/t4_cpl_io.c index 8bb90f5..99e9db4 100644 --- a/sys/dev/cxgbe/tom/t4_cpl_io.c +++ b/sys/dev/cxgbe/tom/t4_cpl_io.c @@ -548,9 +548,10 @@ t4_push_frames(struct adapter *sc, struct toepcb *toep) KASSERT(toep->flags & TPF_FLOWC_WR_SENT, ("%s: flowc_wr not sent for tid %u.", __func__, toep->tid)); - if (__predict_false(toep->ulp_mode != ULP_MODE_NONE && - toep->ulp_mode != ULP_MODE_TCPDDP)) - CXGBE_UNIMPLEMENTED("ulp_mode"); + KASSERT(toep->ulp_mode == ULP_MODE_NONE || + toep->ulp_mode == ULP_MODE_TCPDDP || + toep->ulp_mode == ULP_MODE_RDMA, + ("%s: ulp_mode %u for toep %p", __func__, toep->ulp_mode, toep)); /* * This function doesn't resume by itself. Someone else must clear the @@ -843,9 +844,11 @@ do_peer_close(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m) } socantrcvmore_locked(so); /* unlocks the sockbuf */ - KASSERT(tp->rcv_nxt == be32toh(cpl->rcv_nxt), - ("%s: rcv_nxt mismatch: %u %u", __func__, tp->rcv_nxt, - be32toh(cpl->rcv_nxt))); + if (toep->ulp_mode != ULP_MODE_RDMA) { + KASSERT(tp->rcv_nxt == be32toh(cpl->rcv_nxt), + ("%s: rcv_nxt mismatch: %u %u", __func__, tp->rcv_nxt, + be32toh(cpl->rcv_nxt))); + } switch (tp->t_state) { case TCPS_SYN_RECEIVED: -- cgit v1.1 From 609f43ab7f3c398c0c3a4d8f093fe380c9e04b82 Mon Sep 17 00:00:00 2001 From: np Date: Wed, 28 Aug 2013 20:59:22 +0000 Subject: Change t4_list_lock and t4_uld_list_lock from mutexes to sx'es. - tom_uninit had to be reworked not to hold the adapter lock (a mutex) around t4_deactivate_uld, which acquires the uld_list_lock. - the ifc_match for the interface cloner that creates the tracer ifnet had to be reworked as the kernel calls ifc_match with the global if_cloners_mtx held. --- sys/dev/cxgbe/t4_main.c | 52 +++++++++++++++++++++++----------------------- sys/dev/cxgbe/t4_tracer.c | 13 ++++++------ sys/dev/cxgbe/tom/t4_tom.c | 4 ++-- 3 files changed, 34 insertions(+), 35 deletions(-) diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c index e185de7..f2d1986 100644 --- a/sys/dev/cxgbe/t4_main.c +++ b/sys/dev/cxgbe/t4_main.c @@ -160,10 +160,10 @@ MALLOC_DEFINE(M_CXGBE, "cxgbe", "Chelsio T4/T5 Ethernet driver and services"); * Correct lock order when you need to acquire multiple locks is t4_list_lock, * then ADAPTER_LOCK, then t4_uld_list_lock. */ -static struct mtx t4_list_lock; +static struct sx t4_list_lock; static SLIST_HEAD(, adapter) t4_list; #ifdef TCP_OFFLOAD -static struct mtx t4_uld_list_lock; +static struct sx t4_uld_list_lock; static SLIST_HEAD(, uld_info) t4_uld_list; #endif @@ -568,9 +568,9 @@ t4_attach(device_t dev) snprintf(sc->lockname, sizeof(sc->lockname), "%s", device_get_nameunit(dev)); mtx_init(&sc->sc_lock, sc->lockname, 0, MTX_DEF); - mtx_lock(&t4_list_lock); + sx_xlock(&t4_list_lock); SLIST_INSERT_HEAD(&t4_list, sc, link); - mtx_unlock(&t4_list_lock); + sx_xunlock(&t4_list_lock); mtx_init(&sc->sfl_lock, "starving freelists", 0, MTX_DEF); TAILQ_INIT(&sc->sfl); @@ -917,9 +917,9 @@ t4_detach(device_t dev) free(sc->tids.ftid_tab, M_CXGBE); t4_destroy_dma_tag(sc); if (mtx_initialized(&sc->sc_lock)) { - mtx_lock(&t4_list_lock); + sx_xlock(&t4_list_lock); SLIST_REMOVE(&t4_list, sc, adapter, link); - mtx_unlock(&t4_list_lock); + sx_xunlock(&t4_list_lock); mtx_destroy(&sc->sc_lock); } @@ -7341,7 +7341,7 @@ t4_iterate(void (*func)(struct adapter *, void *), void *arg) { struct adapter *sc; - mtx_lock(&t4_list_lock); + sx_slock(&t4_list_lock); SLIST_FOREACH(sc, &t4_list, link) { /* * func should not make any assumptions about what state sc is @@ -7349,7 +7349,7 @@ t4_iterate(void (*func)(struct adapter *, void *), void *arg) */ func(sc, arg); } - mtx_unlock(&t4_list_lock); + sx_sunlock(&t4_list_lock); } static int @@ -7577,7 +7577,7 @@ t4_register_uld(struct uld_info *ui) int rc = 0; struct uld_info *u; - mtx_lock(&t4_uld_list_lock); + sx_xlock(&t4_uld_list_lock); SLIST_FOREACH(u, &t4_uld_list, link) { if (u->uld_id == ui->uld_id) { rc = EEXIST; @@ -7588,7 +7588,7 @@ t4_register_uld(struct uld_info *ui) SLIST_INSERT_HEAD(&t4_uld_list, ui, link); ui->refcount = 0; done: - mtx_unlock(&t4_uld_list_lock); + sx_xunlock(&t4_uld_list_lock); return (rc); } @@ -7598,7 +7598,7 @@ t4_unregister_uld(struct uld_info *ui) int rc = EINVAL; struct uld_info *u; - mtx_lock(&t4_uld_list_lock); + sx_xlock(&t4_uld_list_lock); SLIST_FOREACH(u, &t4_uld_list, link) { if (u == ui) { @@ -7613,7 +7613,7 @@ t4_unregister_uld(struct uld_info *ui) } } done: - mtx_unlock(&t4_uld_list_lock); + sx_xunlock(&t4_uld_list_lock); return (rc); } @@ -7625,7 +7625,7 @@ t4_activate_uld(struct adapter *sc, int id) ASSERT_SYNCHRONIZED_OP(sc); - mtx_lock(&t4_uld_list_lock); + sx_slock(&t4_uld_list_lock); SLIST_FOREACH(ui, &t4_uld_list, link) { if (ui->uld_id == id) { @@ -7636,7 +7636,7 @@ t4_activate_uld(struct adapter *sc, int id) } } done: - mtx_unlock(&t4_uld_list_lock); + sx_sunlock(&t4_uld_list_lock); return (rc); } @@ -7649,7 +7649,7 @@ t4_deactivate_uld(struct adapter *sc, int id) ASSERT_SYNCHRONIZED_OP(sc); - mtx_lock(&t4_uld_list_lock); + sx_slock(&t4_uld_list_lock); SLIST_FOREACH(ui, &t4_uld_list, link) { if (ui->uld_id == id) { @@ -7660,7 +7660,7 @@ t4_deactivate_uld(struct adapter *sc, int id) } } done: - mtx_unlock(&t4_uld_list_lock); + sx_sunlock(&t4_uld_list_lock); return (rc); } @@ -7741,10 +7741,10 @@ mod_event(module_t mod, int cmd, void *arg) if (atomic_fetchadd_int(&loaded, 1)) break; t4_sge_modload(); - mtx_init(&t4_list_lock, "T4 adapters", 0, MTX_DEF); + sx_init(&t4_list_lock, "T4/T5 adapters"); SLIST_INIT(&t4_list); #ifdef TCP_OFFLOAD - mtx_init(&t4_uld_list_lock, "T4 ULDs", 0, MTX_DEF); + sx_init(&t4_uld_list_lock, "T4/T5 ULDs"); SLIST_INIT(&t4_uld_list); #endif t4_tracer_modload(); @@ -7756,23 +7756,23 @@ mod_event(module_t mod, int cmd, void *arg) break; t4_tracer_modunload(); #ifdef TCP_OFFLOAD - mtx_lock(&t4_uld_list_lock); + sx_slock(&t4_uld_list_lock); if (!SLIST_EMPTY(&t4_uld_list)) { rc = EBUSY; - mtx_unlock(&t4_uld_list_lock); + sx_sunlock(&t4_uld_list_lock); break; } - mtx_unlock(&t4_uld_list_lock); - mtx_destroy(&t4_uld_list_lock); + sx_sunlock(&t4_uld_list_lock); + sx_destroy(&t4_uld_list_lock); #endif - mtx_lock(&t4_list_lock); + sx_slock(&t4_list_lock); if (!SLIST_EMPTY(&t4_list)) { rc = EBUSY; - mtx_unlock(&t4_list_lock); + sx_sunlock(&t4_list_lock); break; } - mtx_unlock(&t4_list_lock); - mtx_destroy(&t4_list_lock); + sx_sunlock(&t4_list_lock); + sx_destroy(&t4_list_lock); break; } diff --git a/sys/dev/cxgbe/t4_tracer.c b/sys/dev/cxgbe/t4_tracer.c index 04f64e3..ff60a6b 100644 --- a/sys/dev/cxgbe/t4_tracer.c +++ b/sys/dev/cxgbe/t4_tracer.c @@ -121,14 +121,13 @@ match_name(struct adapter *sc, void *arg) static int t4_cloner_match(struct if_clone *ifc, const char *name) { - struct match_rr mrr; - mrr.name = name; - mrr.lock = 0; - mrr.sc = NULL; - t4_iterate(match_name, &mrr); - - return (mrr.sc != NULL); + if (strncmp(name, "t4nex", 5) != 0 && + strncmp(name, "t5nex", 5) != 0) + return (0); + if (name[5] < '0' || name[5] > '9') + return (0); + return (1); } static int diff --git a/sys/dev/cxgbe/tom/t4_tom.c b/sys/dev/cxgbe/tom/t4_tom.c index 671174d..c9f4baa 100644 --- a/sys/dev/cxgbe/tom/t4_tom.c +++ b/sys/dev/cxgbe/tom/t4_tom.c @@ -1064,14 +1064,14 @@ t4_tom_mod_load(void) static void tom_uninit(struct adapter *sc, void *arg __unused) { - if (begin_synchronized_op(sc, NULL, HOLD_LOCK, "t4tomun")) + if (begin_synchronized_op(sc, NULL, SLEEP_OK | INTR_OK, "t4tomun")) return; /* Try to free resources (works only if no port has IFCAP_TOE) */ if (sc->flags & TOM_INIT_DONE) t4_deactivate_uld(sc, ULD_TOM); - end_synchronized_op(sc, LOCK_HELD); + end_synchronized_op(sc, 0); } static int -- cgit v1.1 From baaacfdc28bae3ef25b6e173c058f66a64c7f18d Mon Sep 17 00:00:00 2001 From: jilles Date: Wed, 28 Aug 2013 21:10:37 +0000 Subject: libutil: Use O_CLOEXEC for internal file descriptors from open(). --- lib/libutil/login_auth.c | 2 +- lib/libutil/login_cap.c | 2 +- lib/libutil/pidfile.c | 2 +- lib/libutil/quotafile.c | 8 +++++--- lib/libutil/uucplock.c | 7 ++++--- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/lib/libutil/login_auth.c b/lib/libutil/login_auth.c index ce9a2e4..1fc7e73 100644 --- a/lib/libutil/login_auth.c +++ b/lib/libutil/login_auth.c @@ -98,7 +98,7 @@ auth_cat(const char *file) int fd, count; char buf[BUFSIZ]; - if ((fd = open(file, O_RDONLY)) < 0) + if ((fd = open(file, O_RDONLY | O_CLOEXEC)) < 0) return 0; while ((count = read(fd, buf, sizeof(buf))) > 0) (void)write(fileno(stdout), buf, count); diff --git a/lib/libutil/login_cap.c b/lib/libutil/login_cap.c index 8fee760..8915d0a 100644 --- a/lib/libutil/login_cap.c +++ b/lib/libutil/login_cap.c @@ -239,7 +239,7 @@ login_getclassbyname(char const *name, const struct passwd *pwd) break; /* Don't retry default on 'me' */ if (i == 0) r = -1; - else if ((r = open(login_dbarray[0], O_RDONLY)) >= 0) + else if ((r = open(login_dbarray[0], O_RDONLY | O_CLOEXEC)) >= 0) close(r); /* * If there's at least one login class database, diff --git a/lib/libutil/pidfile.c b/lib/libutil/pidfile.c index 7949e9e..3a5e512 100644 --- a/lib/libutil/pidfile.c +++ b/lib/libutil/pidfile.c @@ -73,7 +73,7 @@ pidfile_read(const char *path, pid_t *pidptr) char buf[16], *endptr; int error, fd, i; - fd = open(path, O_RDONLY); + fd = open(path, O_RDONLY | O_CLOEXEC); if (fd == -1) return (errno); diff --git a/lib/libutil/quotafile.c b/lib/libutil/quotafile.c index 03e3de4..6b5a44d 100644 --- a/lib/libutil/quotafile.c +++ b/lib/libutil/quotafile.c @@ -137,7 +137,7 @@ quota_open(struct fstab *fs, int quotatype, int openflags) goto error; } qf->accmode = openflags & O_ACCMODE; - if ((qf->fd = open(qf->qfname, qf->accmode)) < 0 && + if ((qf->fd = open(qf->qfname, qf->accmode|O_CLOEXEC)) < 0 && (openflags & O_CREAT) != O_CREAT) goto error; /* File open worked, so process it */ @@ -168,7 +168,8 @@ quota_open(struct fstab *fs, int quotatype, int openflags) /* not reached */ } /* open failed, but O_CREAT was specified, so create a new file */ - if ((qf->fd = open(qf->qfname, O_RDWR|O_CREAT|O_TRUNC, 0)) < 0) + if ((qf->fd = open(qf->qfname, O_RDWR|O_CREAT|O_TRUNC|O_CLOEXEC, 0)) < + 0) goto error; qf->wordsize = 64; memset(&dqh, 0, sizeof(dqh)); @@ -534,7 +535,8 @@ quota_convert(struct quotafile *qf, int wordsize) free(newqf); return (-1); } - if ((newqf->fd = open(qf->qfname, O_RDWR|O_CREAT|O_TRUNC, 0)) < 0) { + if ((newqf->fd = open(qf->qfname, O_RDWR|O_CREAT|O_TRUNC|O_CLOEXEC, + 0)) < 0) { serrno = errno; goto error; } diff --git a/lib/libutil/uucplock.c b/lib/libutil/uucplock.c index afbfaa4..424ac26 100644 --- a/lib/libutil/uucplock.c +++ b/lib/libutil/uucplock.c @@ -76,7 +76,8 @@ uu_lock(const char *tty_name) pid); (void)snprintf(lckname, sizeof(lckname), _PATH_UUCPLOCK LOCKFMT, tty_name); - if ((tmpfd = creat(lcktmpname, 0664)) < 0) + if ((tmpfd = open(lcktmpname, O_CREAT | O_TRUNC | O_WRONLY | O_CLOEXEC, + 0664)) < 0) GORET(0, UU_LOCK_CREAT_ERR); for (i = 0; i < MAXTRIES; i++) { @@ -88,7 +89,7 @@ uu_lock(const char *tty_name) * check to see if the process holding the lock * still exists */ - if ((fd = open(lckname, O_RDONLY)) < 0) + if ((fd = open(lckname, O_RDONLY | O_CLOEXEC)) < 0) GORET(1, UU_LOCK_OPEN_ERR); if ((pid_old = get_pid (fd, &err)) == -1) @@ -132,7 +133,7 @@ uu_lock_txfr(const char *tty_name, pid_t pid) snprintf(lckname, sizeof(lckname), _PATH_UUCPLOCK LOCKFMT, tty_name); - if ((fd = open(lckname, O_RDWR)) < 0) + if ((fd = open(lckname, O_RDWR | O_CLOEXEC)) < 0) return UU_LOCK_OWNER_ERR; if (get_pid(fd, &err) != getpid()) err = UU_LOCK_OWNER_ERR; -- cgit v1.1 From 0b320ea37ccd739f0e5da8571e54526816726956 Mon Sep 17 00:00:00 2001 From: ken Date: Wed, 28 Aug 2013 22:12:56 +0000 Subject: Support storing 7 additional file flags in tmpfs: UF_SYSTEM, UF_SPARSE, UF_OFFLINE, UF_REPARSE, UF_ARCHIVE, UF_READONLY, and UF_HIDDEN. Sort the file flags tmpfs supports alphabetically. tmpfs now supports the same flags as UFS, with the exception of SF_SNAPSHOT. Reported by: bdrewery, antoine Sponsored by: Spectra Logic --- sys/fs/tmpfs/tmpfs_subr.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sys/fs/tmpfs/tmpfs_subr.c b/sys/fs/tmpfs/tmpfs_subr.c index 94498ff..ec96936 100644 --- a/sys/fs/tmpfs/tmpfs_subr.c +++ b/sys/fs/tmpfs/tmpfs_subr.c @@ -1433,9 +1433,10 @@ tmpfs_chflags(struct vnode *vp, u_long flags, struct ucred *cred, node = VP_TO_TMPFS_NODE(vp); - if ((flags & ~(UF_NODUMP | UF_IMMUTABLE | UF_APPEND | UF_OPAQUE | - UF_NOUNLINK | SF_ARCHIVED | SF_IMMUTABLE | SF_APPEND | - SF_NOUNLINK)) != 0) + if ((flags & ~(SF_APPEND | SF_ARCHIVED | SF_IMMUTABLE | SF_NOUNLINK | + UF_APPEND | UF_ARCHIVE | UF_HIDDEN | UF_IMMUTABLE | UF_NODUMP | + UF_NOUNLINK | UF_OFFLINE | UF_OPAQUE | UF_READONLY | UF_REPARSE | + UF_SPARSE | UF_SYSTEM)) != 0) return (EOPNOTSUPP); /* Disallow this operation if the file system is mounted read-only. */ -- cgit v1.1 From 6731dd428d26602eb9428e8d6bf309b24bea5ad2 Mon Sep 17 00:00:00 2001 From: jkim Date: Wed, 28 Aug 2013 22:57:49 +0000 Subject: Fix a compiler warning. With this fix, a negative time can be converted to a struct timeval and back to the original nanoseconds correctly. --- sys/dev/drm2/drm_irq.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/drm2/drm_irq.c b/sys/dev/drm2/drm_irq.c index 130c20f..3a60fa9 100644 --- a/sys/dev/drm2/drm_irq.c +++ b/sys/dev/drm2/drm_irq.c @@ -210,7 +210,7 @@ struct timeval ns_to_timeval(const int64_t nsec) { struct timeval tv; - uint32_t rem; + long rem; if (nsec == 0) { tv.tv_sec = 0; -- cgit v1.1 From e9b6cb5ecce096a84afcbac4cbf86003db5d12fc Mon Sep 17 00:00:00 2001 From: np Date: Wed, 28 Aug 2013 23:00:34 +0000 Subject: Merge r254336 from user/np/cxl_tuning. Add a last-modified timestamp to each LRO entry and provide an interface to flush all inactive entries. Drivers decide when to flush and what the inactivity threshold should be. Network drivers that process an rx queue to completion can enter a livelock type situation when the rate at which packets are received reaches equilibrium with the rate at which the rx thread is processing them. When this happens the final LRO flush (normally when the rx routine is done) does not occur. Pure ACKs and segments with total payload < 64K can get stuck in an LRO entry. Symptoms are that TCP tx-mostly connections' performance falls off a cliff during heavy, unrelated rx on the interface. Flushing only inactive LRO entries works better than any of these alternates that I tried: - don't LRO pure ACKs - flush _all_ LRO entries periodically (every 'x' microseconds or every 'y' descriptors) - stop rx processing in the driver periodically and schedule remaining work for later. Reviewed by: andre --- sys/netinet/tcp_lro.c | 23 ++++++++++++++++++++++- sys/netinet/tcp_lro.h | 4 ++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/sys/netinet/tcp_lro.c b/sys/netinet/tcp_lro.c index 032d47c..63a6bba 100644 --- a/sys/netinet/tcp_lro.c +++ b/sys/netinet/tcp_lro.c @@ -194,6 +194,25 @@ tcp_lro_rx_csum_fixup(struct lro_entry *le, void *l3hdr, struct tcphdr *th, #endif void +tcp_lro_flush_inactive(struct lro_ctrl *lc, const struct timeval *timeout) +{ + struct lro_entry *le, *le_tmp; + struct timeval tv; + + if (SLIST_EMPTY(&lc->lro_active)) + return; + + getmicrotime(&tv); + timevalsub(&tv, timeout); + SLIST_FOREACH_SAFE(le, &lc->lro_active, next, le_tmp) { + if (timevalcmp(&tv, &le->mtime, >=)) { + SLIST_REMOVE(&lc->lro_active, le, lro_entry, next); + tcp_lro_flush(lc, le); + } + } +} + +void tcp_lro_flush(struct lro_ctrl *lc, struct lro_entry *le) { @@ -543,7 +562,8 @@ tcp_lro_rx(struct lro_ctrl *lc, struct mbuf *m, uint32_t csum) if (le->p_len > (65535 - lc->ifp->if_mtu)) { SLIST_REMOVE(&lc->lro_active, le, lro_entry, next); tcp_lro_flush(lc, le); - } + } else + getmicrotime(&le->mtime); return (0); } @@ -556,6 +576,7 @@ tcp_lro_rx(struct lro_ctrl *lc, struct mbuf *m, uint32_t csum) le = SLIST_FIRST(&lc->lro_free); SLIST_REMOVE_HEAD(&lc->lro_free, next); SLIST_INSERT_HEAD(&lc->lro_active, le, next); + getmicrotime(&le->mtime); /* Start filling in details. */ switch (eh_type) { diff --git a/sys/netinet/tcp_lro.h b/sys/netinet/tcp_lro.h index b3a5017..ab6d74a 100644 --- a/sys/netinet/tcp_lro.h +++ b/sys/netinet/tcp_lro.h @@ -30,6 +30,8 @@ #ifndef _TCP_LRO_H_ #define _TCP_LRO_H_ +#include + struct lro_entry { SLIST_ENTRY(lro_entry) next; @@ -59,6 +61,7 @@ struct lro_entry uint32_t tsecr; uint16_t window; uint16_t timestamp; /* flag, not a TCP hdr field. */ + struct timeval mtime; }; SLIST_HEAD(lro_head, lro_entry); @@ -83,6 +86,7 @@ struct lro_ctrl { int tcp_lro_init(struct lro_ctrl *); void tcp_lro_free(struct lro_ctrl *); +void tcp_lro_flush_inactive(struct lro_ctrl *, const struct timeval *); void tcp_lro_flush(struct lro_ctrl *, struct lro_entry *); int tcp_lro_rx(struct lro_ctrl *, struct mbuf *, uint32_t); -- cgit v1.1 From 749ce4a06c586ada645231fb04deec04b93aef33 Mon Sep 17 00:00:00 2001 From: np Date: Wed, 28 Aug 2013 23:15:05 +0000 Subject: Whitespace nit. --- sys/dev/cxgbe/t4_tracer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/cxgbe/t4_tracer.c b/sys/dev/cxgbe/t4_tracer.c index ff60a6b..e9727f5 100644 --- a/sys/dev/cxgbe/t4_tracer.c +++ b/sys/dev/cxgbe/t4_tracer.c @@ -465,7 +465,7 @@ tracer_ioctl(struct ifnet *ifp, unsigned long cmd, caddr_t data) switch (cmd) { case SIOCSIFMTU: case SIOCSIFFLAGS: - case SIOCADDMULTI: + case SIOCADDMULTI: case SIOCDELMULTI: case SIOCSIFCAP: break; -- cgit v1.1 From 28ab6fab8b32acdefcbcdd5450da8431df803bf3 Mon Sep 17 00:00:00 2001 From: jkim Date: Wed, 28 Aug 2013 23:43:28 +0000 Subject: Fix a compiler warning and add couple of VM map types. --- sys/dev/drm2/drm_sysctl.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/sys/dev/drm2/drm_sysctl.c b/sys/dev/drm2/drm_sysctl.c index 33048c7..a30c7ab 100644 --- a/sys/dev/drm2/drm_sysctl.c +++ b/sys/dev/drm2/drm_sysctl.c @@ -177,7 +177,15 @@ static int drm_vm_info DRM_SYSCTL_HANDLER_ARGS { struct drm_device *dev = arg1; drm_local_map_t *map, *tempmaps; - const char *types[] = { "FB", "REG", "SHM", "AGP", "SG" }; + const char *types[] = { + [_DRM_FRAME_BUFFER] = "FB", + [_DRM_REGISTERS] = "REG", + [_DRM_SHM] = "SHM", + [_DRM_AGP] = "AGP", + [_DRM_SCATTER_GATHER] = "SG", + [_DRM_CONSISTENT] = "CONS", + [_DRM_GEM] = "GEM" + }; const char *type, *yesno; int i, mapcount; char buf[128]; @@ -211,10 +219,20 @@ static int drm_vm_info DRM_SYSCTL_HANDLER_ARGS for (i = 0; i < mapcount; i++) { map = &tempmaps[i]; - if (map->type < 0 || map->type > 4) + switch(map->type) { + default: type = "??"; - else + break; + case _DRM_FRAME_BUFFER: + case _DRM_REGISTERS: + case _DRM_SHM: + case _DRM_AGP: + case _DRM_SCATTER_GATHER: + case _DRM_CONSISTENT: + case _DRM_GEM: type = types[map->type]; + break; + } if (!map->mtrr) yesno = "no"; -- cgit v1.1 From 4c745090116375b5d96509e9deb8b9662b8253d8 Mon Sep 17 00:00:00 2001 From: jkim Date: Wed, 28 Aug 2013 23:59:38 +0000 Subject: Correct atomic operations in i915. --- sys/dev/drm2/i915/i915_gem.c | 10 +++++----- sys/dev/drm2/i915/i915_gem_execbuffer.c | 2 +- sys/dev/drm2/i915/intel_display.c | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/sys/dev/drm2/i915/i915_gem.c b/sys/dev/drm2/i915/i915_gem.c index 7204778..5afea4e 100644 --- a/sys/dev/drm2/i915/i915_gem.c +++ b/sys/dev/drm2/i915/i915_gem.c @@ -141,7 +141,7 @@ i915_gem_wait_for_error(struct drm_device *dev) } mtx_unlock(&dev_priv->error_completion_lock); - if (atomic_read(&dev_priv->mm.wedged)) { + if (atomic_load_acq_int(&dev_priv->mm.wedged)) { mtx_lock(&dev_priv->error_completion_lock); dev_priv->error_completion++; mtx_unlock(&dev_priv->error_completion_lock); @@ -743,7 +743,7 @@ i915_gem_ring_throttle(struct drm_device *dev, struct drm_file *file) int ret; dev_priv = dev->dev_private; - if (atomic_read(&dev_priv->mm.wedged)) + if (atomic_load_acq_int(&dev_priv->mm.wedged)) return (-EIO); file_priv = file->driver_priv; @@ -768,15 +768,15 @@ i915_gem_ring_throttle(struct drm_device *dev, struct drm_file *file) if (ring->irq_get(ring)) { while (ret == 0 && !(i915_seqno_passed(ring->get_seqno(ring), seqno) || - atomic_read(&dev_priv->mm.wedged))) + atomic_load_acq_int(&dev_priv->mm.wedged))) ret = -msleep(ring, &ring->irq_lock, PCATCH, "915thr", 0); ring->irq_put(ring); - if (ret == 0 && atomic_read(&dev_priv->mm.wedged)) + if (ret == 0 && atomic_load_acq_int(&dev_priv->mm.wedged)) ret = -EIO; } else if (_intel_wait_for(dev, i915_seqno_passed(ring->get_seqno(ring), seqno) || - atomic_read(&dev_priv->mm.wedged), 3000, 0, "915rtr")) { + atomic_load_acq_int(&dev_priv->mm.wedged), 3000, 0, "915rtr")) { ret = -EBUSY; } } diff --git a/sys/dev/drm2/i915/i915_gem_execbuffer.c b/sys/dev/drm2/i915/i915_gem_execbuffer.c index dbd5c4e..21e331f 100644 --- a/sys/dev/drm2/i915/i915_gem_execbuffer.c +++ b/sys/dev/drm2/i915/i915_gem_execbuffer.c @@ -192,7 +192,7 @@ i915_gem_object_set_to_gpu_domain(struct drm_i915_gem_object *obj, i915_gem_clflush_object(obj); if (obj->base.pending_write_domain) - cd->flips |= atomic_read(&obj->pending_flip); + cd->flips |= atomic_load_acq_int(&obj->pending_flip); /* The actual obj->write_domain will be updated with * pending_write_domain after we emit the accumulated flush for all diff --git a/sys/dev/drm2/i915/intel_display.c b/sys/dev/drm2/i915/intel_display.c index 461d779..ccff1e4 100644 --- a/sys/dev/drm2/i915/intel_display.c +++ b/sys/dev/drm2/i915/intel_display.c @@ -2261,8 +2261,8 @@ intel_finish_fb(struct drm_framebuffer *old_fb) int ret; mtx_lock(&dev->event_lock); - while (!atomic_read(&dev_priv->mm.wedged) && - atomic_read(&obj->pending_flip) != 0) { + while (!atomic_load_acq_int(&dev_priv->mm.wedged) && + atomic_load_acq_int(&obj->pending_flip) != 0) { msleep(&obj->pending_flip, &dev->event_lock, 0, "915flp", 0); } @@ -2948,7 +2948,7 @@ static void intel_crtc_wait_for_pending_flips(struct drm_crtc *crtc) dev = crtc->dev; dev_priv = dev->dev_private; mtx_lock(&dev->event_lock); - while (atomic_read(&obj->pending_flip) != 0) + while (atomic_load_acq_int(&obj->pending_flip) != 0) msleep(&obj->pending_flip, &dev->event_lock, 0, "915wfl", 0); mtx_unlock(&dev->event_lock); } @@ -7333,7 +7333,7 @@ static void do_intel_finish_page_flip(struct drm_device *dev, obj = work->old_fb_obj; atomic_clear_int(&obj->pending_flip, 1 << intel_crtc->plane); - if (atomic_read(&obj->pending_flip) == 0) + if (atomic_load_acq_int(&obj->pending_flip) == 0) wakeup(&obj->pending_flip); mtx_unlock(&dev->event_lock); @@ -7640,7 +7640,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc, return 0; cleanup_pending: - atomic_sub(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip); + atomic_clear_int(&work->old_fb_obj->pending_flip, 1 << intel_crtc->plane); drm_gem_object_unreference(&work->old_fb_obj->base); drm_gem_object_unreference(&obj->base); DRM_UNLOCK(dev); -- cgit v1.1 From a90a8d62c1a18ef01246ea49cb31c8e20d5b52ff Mon Sep 17 00:00:00 2001 From: pfg Date: Thu, 29 Aug 2013 00:38:24 +0000 Subject: Drop build option switch for the older GNU patch. As promised, drop the option to make the older GNU patch the default. GNU patch is still being built but something drastic may happen to it to it before Release. --- gnu/usr.bin/patch/Makefile | 6 ------ share/mk/bsd.own.mk | 1 - tools/build/options/WITH_GNU_PATCH | 2 -- usr.bin/patch/Makefile | 10 ---------- 4 files changed, 19 deletions(-) delete mode 100644 tools/build/options/WITH_GNU_PATCH diff --git a/gnu/usr.bin/patch/Makefile b/gnu/usr.bin/patch/Makefile index 3f26cec..8d8cc7b 100644 --- a/gnu/usr.bin/patch/Makefile +++ b/gnu/usr.bin/patch/Makefile @@ -1,16 +1,10 @@ # $FreeBSD$ -.include - -.if ${MK_GNU_PATCH} == "yes" -PROG= patch -.else PROG= gnupatch CLEANFILES+= gnupatch.1 gnupatch.1: patch.1 cp ${.ALLSRC} ${.TARGET} -.endif SRCS= backupfile.c inp.c patch.c pch.c util.c version.c CFLAGS+=-DHAVE_CONFIG_H diff --git a/share/mk/bsd.own.mk b/share/mk/bsd.own.mk index 82c9a65a0..da758d5 100644 --- a/share/mk/bsd.own.mk +++ b/share/mk/bsd.own.mk @@ -373,7 +373,6 @@ __DEFAULT_NO_OPTIONS = \ CLANG_EXTRAS \ CTF \ DEBUG_FILES \ - GNU_PATCH \ GPL_DTC \ HESIOD \ LIBICONV_COMPAT \ diff --git a/tools/build/options/WITH_GNU_PATCH b/tools/build/options/WITH_GNU_PATCH deleted file mode 100644 index d2a751f..0000000 --- a/tools/build/options/WITH_GNU_PATCH +++ /dev/null @@ -1,2 +0,0 @@ -.\" $FreeBSD$ -Install GNU-licensed patch as 'patch' instead of BSD patch. diff --git a/usr.bin/patch/Makefile b/usr.bin/patch/Makefile index 18261f6..a5f15c7 100644 --- a/usr.bin/patch/Makefile +++ b/usr.bin/patch/Makefile @@ -1,17 +1,7 @@ # $OpenBSD: Makefile,v 1.4 2005/05/16 15:22:46 espie Exp $ # $FreeBSD$ -.include - -.if ${MK_GNU_PATCH} == "yes" -PROG= bsdpatch -CLEANFILES+= bsdpatch.1 - -bsdpatch.1: patch.1 - cp ${.ALLSRC} ${.TARGET} -.else PROG= patch -.endif SRCS= backupfile.c inp.c mkpath.c patch.c pch.c util.c -- cgit v1.1 From a52be00b7f7e336eb3883b40cdc6cf73571f0c4e Mon Sep 17 00:00:00 2001 From: np Date: Thu, 29 Aug 2013 06:26:22 +0000 Subject: Merge r254386 from user/np/cxl_tuning. Add an INET|INET6 check missing in said revision. r254386: Flush inactive LRO entries periodically. --- sys/dev/cxgbe/adapter.h | 1 + sys/dev/cxgbe/t4_main.c | 4 ++++ sys/dev/cxgbe/t4_sge.c | 12 ++++++++++++ 3 files changed, 17 insertions(+) diff --git a/sys/dev/cxgbe/adapter.h b/sys/dev/cxgbe/adapter.h index f121ec8..ba956c4 100644 --- a/sys/dev/cxgbe/adapter.h +++ b/sys/dev/cxgbe/adapter.h @@ -559,6 +559,7 @@ struct adapter { bus_dma_tag_t dmat; /* Parent DMA tag */ struct sge sge; + int lro_timeout; struct taskqueue *tq[NCHAN]; /* taskqueues that flush data out */ struct port_info *port[MAX_NPORTS]; diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c index f2d1986..d905cd5 100644 --- a/sys/dev/cxgbe/t4_main.c +++ b/sys/dev/cxgbe/t4_main.c @@ -4229,6 +4229,10 @@ t4_sysctls(struct adapter *sc) t4_sge_sysctls(sc, ctx, children); + sc->lro_timeout = 100; + SYSCTL_ADD_INT(ctx, children, OID_AUTO, "lro_timeout", CTLFLAG_RW, + &sc->lro_timeout, 0, "lro inactive-flush timeout (in us)"); + #ifdef SBUF_DRAIN /* * dev.t4nex.X.misc. Marked CTLFLAG_SKIP to avoid information overload. diff --git a/sys/dev/cxgbe/t4_sge.c b/sys/dev/cxgbe/t4_sge.c index c5aeff9..34bd27a 100644 --- a/sys/dev/cxgbe/t4_sge.c +++ b/sys/dev/cxgbe/t4_sge.c @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -1006,6 +1007,9 @@ service_iq(struct sge_iq *iq, int budget) uint32_t lq; struct mbuf *m0; STAILQ_HEAD(, sge_iq) iql = STAILQ_HEAD_INITIALIZER(iql); +#if defined(INET) || defined(INET6) + const struct timeval lro_timeout = {0, sc->lro_timeout}; +#endif limit = budget ? budget : iq->qsize / 8; @@ -1111,6 +1115,14 @@ service_iq(struct sge_iq *iq, int budget) V_SEINTARM(V_QINTR_TIMER_IDX(X_TIMERREG_UPDATE_CIDX))); ndescs = 0; +#if defined(INET) || defined(INET6) + if (iq->flags & IQ_LRO_ENABLED && + sc->lro_timeout != 0) { + tcp_lro_flush_inactive(&rxq->lro, + &lro_timeout); + } +#endif + if (fl_bufs_used > 0) { FL_LOCK(fl); fl->needed += fl_bufs_used; -- cgit v1.1 From af4b94562133edf0728e28f2a0ae95ebb8f3c2b5 Mon Sep 17 00:00:00 2001 From: np Date: Thu, 29 Aug 2013 08:07:35 +0000 Subject: Merge r254736 from user/np/cxl_tuning. Don't leak tags when M_NOFREE | M_PKTHDR mbufs are freed. Reviewed by: andre --- sys/sys/mbuf.h | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/sys/sys/mbuf.h b/sys/sys/mbuf.h index 7e8f427..930a322 100644 --- a/sys/sys/mbuf.h +++ b/sys/sys/mbuf.h @@ -646,18 +646,6 @@ m_getcl(int how, short type, int flags) return (uma_zalloc_arg(zone_pack, &args, how)); } -static __inline struct mbuf * -m_free(struct mbuf *m) -{ - struct mbuf *n = m->m_next; - - if (m->m_flags & M_EXT) - mb_free_ext(m); - else if ((m->m_flags & M_NOFREE) == 0) - uma_zfree(zone_mbuf, m); - return (n); -} - static __inline void m_clget(struct mbuf *m, int how) { @@ -1124,6 +1112,20 @@ m_tag_find(struct mbuf *m, int type, struct m_tag *start) m_tag_locate(m, MTAG_ABI_COMPAT, type, start)); } +static __inline struct mbuf * +m_free(struct mbuf *m) +{ + struct mbuf *n = m->m_next; + + if ((m->m_flags & (M_PKTHDR|M_NOFREE)) == (M_PKTHDR|M_NOFREE)) + m_tag_delete_chain(m, NULL); + if (m->m_flags & M_EXT) + mb_free_ext(m); + else if ((m->m_flags & M_NOFREE) == 0) + uma_zfree(zone_mbuf, m); + return (n); +} + static int inline rt_m_getfib(struct mbuf *m) { -- cgit v1.1 From 4cffb47bd399be6c827ca323e6b9072cd1aa6c45 Mon Sep 17 00:00:00 2001 From: andreast Date: Thu, 29 Aug 2013 11:40:45 +0000 Subject: Remove GNU_PATCH leftover. --- tools/build/mk/OptionalObsoleteFiles.inc | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tools/build/mk/OptionalObsoleteFiles.inc b/tools/build/mk/OptionalObsoleteFiles.inc index febe85a..633ead0 100644 --- a/tools/build/mk/OptionalObsoleteFiles.inc +++ b/tools/build/mk/OptionalObsoleteFiles.inc @@ -1600,11 +1600,6 @@ OLD_FILES+=usr/share/man/man1/gdbserver.1.gz OLD_FILES+=usr/share/man/man1/kgdb.1.gz .endif -.if ${MK_GNU_PATCH} == no -OLD_FILES+=usr/bin/bsdpatch -OLD_FILES+=usr/share/man/man1/bsdpatch.1.gz -.endif - .if ${MK_GPIB} == no OLD_FILES+=usr/include/dev/ieee488/ibfoo_int.h OLD_FILES+=usr/include/dev/ieee488/ugpib.h -- cgit v1.1 From fdc2e5ebcd41ab03ee8d2789bc226c759b52134e Mon Sep 17 00:00:00 2001 From: loos Date: Thu, 29 Aug 2013 12:48:12 +0000 Subject: Prevent the full restart cycle every time arge_start() is called. Only (re)start the interface when it is down. This change fix a race with BOOTP where the response packet is lost because the interface is being reset by a netmask change right after send the packet. PR: 178318 Approved by: adrian (mentor) --- sys/mips/atheros/if_arge.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/mips/atheros/if_arge.c b/sys/mips/atheros/if_arge.c index 6487ea4..21b945f 100644 --- a/sys/mips/atheros/if_arge.c +++ b/sys/mips/atheros/if_arge.c @@ -1019,7 +1019,8 @@ arge_init_locked(struct arge_softc *sc) ARGE_LOCK_ASSERT(sc); - arge_stop(sc); + if ((ifp->if_flags & IFF_UP) && (ifp->if_drv_flags & IFF_DRV_RUNNING)) + return; /* Init circular RX list. */ if (arge_rx_ring_init(sc) != 0) { -- cgit v1.1 From 41d7ccf6058970539d902fb65f9d959b871a3d8e Mon Sep 17 00:00:00 2001 From: adrian Date: Thu, 29 Aug 2013 13:52:51 +0000 Subject: Remove the duplicate LLC_MISS event and put it in the right order. --- sys/dev/hwpmc/pmc_events.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sys/dev/hwpmc/pmc_events.h b/sys/dev/hwpmc/pmc_events.h index e91b9c7..ac933fe 100644 --- a/sys/dev/hwpmc/pmc_events.h +++ b/sys/dev/hwpmc/pmc_events.h @@ -3547,13 +3547,12 @@ __PMC_EV_ALIAS("MEM_LOAD_UOPS_LLC_HIT_RETIRED.XSNP_NONE", \ IAP_EVENT_D2H_08H) \ __PMC_EV_ALIAS("MEM_LOAD_UOPS_LLC_HIT_RETIRED.ALL", \ IAP_EVENT_D2H_0FH) \ -__PMC_EV_ALIAS("MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS", \ - IAP_EVENT_D4H_02H) \ __PMC_EV_ALIAS("MEM_LOAD_UOPS_LLC_MISS_RETIRED.LOCAL_DRAM", \ IAP_EVENT_D3H_01H) \ __PMC_EV_ALIAS("MEM_LOAD_UOPS_LLC_MISS_RETIRED.REMOTE_DRAM", \ IAP_EVENT_D3H_04H) \ -__PMC_EV_ALIAS("MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS", IAP_EVENT_D4H_02H)\ +__PMC_EV_ALIAS("MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS", \ + IAP_EVENT_D4H_02H) \ __PMC_EV_ALIAS("BACLEARS.ANY", IAP_EVENT_E6H_01H) \ __PMC_EV_ALIAS("L2_TRANS.DEMAND_DATA_RD", IAP_EVENT_F0H_01H) \ __PMC_EV_ALIAS("L2_TRANS.RFO", IAP_EVENT_F0H_02H) \ -- cgit v1.1 From 4212d5ac38bc35cd7d1671a7a93ad65425dbdded Mon Sep 17 00:00:00 2001 From: adrian Date: Thu, 29 Aug 2013 13:56:44 +0000 Subject: Migrate iwn(4) to use the new ieee80211_tx_complete() API. Tested: * Intel 5100, STA mode --- sys/dev/iwn/if_iwn.c | 58 +++++++++++++++++++++------------------------------- 1 file changed, 23 insertions(+), 35 deletions(-) diff --git a/sys/dev/iwn/if_iwn.c b/sys/dev/iwn/if_iwn.c index 90a602a..14fb002 100644 --- a/sys/dev/iwn/if_iwn.c +++ b/sys/dev/iwn/if_iwn.c @@ -2668,11 +2668,7 @@ iwn_rx_compressed_ba(struct iwn_softc *sc, struct iwn_rx_desc *desc, KASSERT(ni != NULL, ("no node")); KASSERT(m != NULL, ("no mbuf")); - if (m->m_flags & M_TXCB) - ieee80211_process_callback(ni, m, 1); - - m_freem(m); - ieee80211_free_node(ni); + ieee80211_tx_complete(ni, m, 1); txq->queued--; txq->read = (txq->read + 1) % IWN_TX_RING_COUNT; @@ -2934,29 +2930,6 @@ iwn_tx_done(struct iwn_softc *sc, struct iwn_rx_desc *desc, int ackfailcnt, ni = data->ni, data->ni = NULL; vap = ni->ni_vap; - if (m->m_flags & M_TXCB) { - /* - * Channels marked for "radar" require traffic to be received - * to unlock before we can transmit. Until traffic is seen - * any attempt to transmit is returned immediately with status - * set to IWN_TX_FAIL_TX_LOCKED. Unfortunately this can easily - * happen on first authenticate after scanning. To workaround - * this we ignore a failure of this sort in AUTH state so the - * 802.11 layer will fall back to using a timeout to wait for - * the AUTH reply. This allows the firmware time to see - * traffic so a subsequent retry of AUTH succeeds. It's - * unclear why the firmware does not maintain state for - * channels recently visited as this would allow immediate - * use of the channel after a scan (where we see traffic). - */ - if (status == IWN_TX_FAIL_TX_LOCKED && - ni->ni_vap->iv_state == IEEE80211_S_AUTH) - ieee80211_process_callback(ni, m, 0); - else - ieee80211_process_callback(ni, m, - (status & IWN_TX_FAIL) != 0); - } - /* * Update rate control statistics for the node. */ @@ -2969,8 +2942,27 @@ iwn_tx_done(struct iwn_softc *sc, struct iwn_rx_desc *desc, int ackfailcnt, ieee80211_ratectl_tx_complete(vap, ni, IEEE80211_RATECTL_TX_SUCCESS, &ackfailcnt, NULL); } - m_freem(m); - ieee80211_free_node(ni); + + /* + * Channels marked for "radar" require traffic to be received + * to unlock before we can transmit. Until traffic is seen + * any attempt to transmit is returned immediately with status + * set to IWN_TX_FAIL_TX_LOCKED. Unfortunately this can easily + * happen on first authenticate after scanning. To workaround + * this we ignore a failure of this sort in AUTH state so the + * 802.11 layer will fall back to using a timeout to wait for + * the AUTH reply. This allows the firmware time to see + * traffic so a subsequent retry of AUTH succeeds. It's + * unclear why the firmware does not maintain state for + * channels recently visited as this would allow immediate + * use of the channel after a scan (where we see traffic). + */ + if (status == IWN_TX_FAIL_TX_LOCKED && + ni->ni_vap->iv_state == IEEE80211_S_AUTH) + ieee80211_tx_complete(ni, m, 0); + else + ieee80211_tx_complete(ni, m, + (status & IWN_TX_FAIL) != 0); sc->sc_tx_timer = 0; if (--ring->queued < IWN_TX_RING_LOMARK) { @@ -3091,11 +3083,7 @@ iwn_ampdu_tx_done(struct iwn_softc *sc, int qid, int idx, int nframes, KASSERT(ni != NULL, ("no node")); KASSERT(m != NULL, ("no mbuf")); - if (m->m_flags & M_TXCB) - ieee80211_process_callback(ni, m, 1); - - m_freem(m); - ieee80211_free_node(ni); + ieee80211_tx_complete(ni, m, 1); ring->queued--; ring->read = (ring->read + 1) % IWN_TX_RING_COUNT; -- cgit v1.1 From aa9a7bb9e6c374d0ee2f00489abd48f856d79aee Mon Sep 17 00:00:00 2001 From: alc Date: Thu, 29 Aug 2013 15:49:05 +0000 Subject: Significantly reduce the cost, i.e., run time, of calls to madvise(..., MADV_DONTNEED) and madvise(..., MADV_FREE). Specifically, introduce a new pmap function, pmap_advise(), that operates on a range of virtual addresses within the specified pmap, allowing for a more efficient implementation of MADV_DONTNEED and MADV_FREE. Previously, the implementation of MADV_DONTNEED and MADV_FREE relied on per-page pmap operations, such as pmap_clear_reference(). Intuitively, the problem with this implementation is that the pmap-level locks are acquired and released and the page table traversed repeatedly, once for each resident page in the range that was specified to madvise(2). A more subtle flaw with the previous implementation is that pmap_clear_reference() would clear the reference bit on all mappings to the specified page, not just the mapping in the range specified to madvise(2). Since our malloc(3) makes heavy use of madvise(2), this change can have a measureable impact. For example, the system time for completing a parallel "buildworld" on a 6-core amd64 machine was reduced by about 1.5% to 2.0%. Note: This change only contains pmap_advise() implementations for a subset of our supported architectures. I will commit implementations for the remaining architectures after further testing. For now, a stub function is sufficient because of the advisory nature of pmap_advise(). Discussed with: jeff, jhb, kib Tested by: pho (i386), marcel (ia64) Sponsored by: EMC / Isilon Storage Division --- sys/amd64/amd64/pmap.c | 122 ++++++++++++++++++++++++++++++++++++ sys/arm/arm/pmap-v6.c | 8 +++ sys/arm/arm/pmap.c | 8 +++ sys/i386/i386/pmap.c | 106 +++++++++++++++++++++++++++++++ sys/i386/xen/pmap.c | 66 +++++++++++++++++++ sys/ia64/ia64/pmap.c | 44 +++++++++++++ sys/mips/mips/pmap.c | 8 +++ sys/powerpc/powerpc/mmu_if.m | 19 ++++++ sys/powerpc/powerpc/pmap_dispatch.c | 9 +++ sys/sparc64/sparc64/pmap.c | 8 +++ sys/vm/pmap.h | 2 + sys/vm/vm_map.c | 21 ++++++- sys/vm/vm_page.c | 9 --- 13 files changed, 419 insertions(+), 11 deletions(-) diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index 7fb1277..851f92a 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -4967,6 +4967,128 @@ out: } /* + * Apply the given advice to the specified range of addresses within the + * given pmap. Depending on the advice, clear the referenced and/or + * modified flags in each mapping and set the mapped page's dirty field. + */ +void +pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, int advice) +{ + struct rwlock *lock; + pml4_entry_t *pml4e; + pdp_entry_t *pdpe; + pd_entry_t oldpde, *pde; + pt_entry_t *pte; + vm_offset_t va_next; + vm_page_t m; + boolean_t anychanged, pv_lists_locked; + + if (advice != MADV_DONTNEED && advice != MADV_FREE) + return; + pv_lists_locked = FALSE; +resume: + anychanged = FALSE; + PMAP_LOCK(pmap); + for (; sva < eva; sva = va_next) { + pml4e = pmap_pml4e(pmap, sva); + if ((*pml4e & PG_V) == 0) { + va_next = (sva + NBPML4) & ~PML4MASK; + if (va_next < sva) + va_next = eva; + continue; + } + pdpe = pmap_pml4e_to_pdpe(pml4e, sva); + if ((*pdpe & PG_V) == 0) { + va_next = (sva + NBPDP) & ~PDPMASK; + if (va_next < sva) + va_next = eva; + continue; + } + va_next = (sva + NBPDR) & ~PDRMASK; + if (va_next < sva) + va_next = eva; + pde = pmap_pdpe_to_pde(pdpe, sva); + oldpde = *pde; + if ((oldpde & PG_V) == 0) + continue; + else if ((oldpde & PG_PS) != 0) { + if ((oldpde & PG_MANAGED) == 0) + continue; + if (!pv_lists_locked) { + pv_lists_locked = TRUE; + if (!rw_try_rlock(&pvh_global_lock)) { + if (anychanged) + pmap_invalidate_all(pmap); + PMAP_UNLOCK(pmap); + rw_rlock(&pvh_global_lock); + goto resume; + } + } + lock = NULL; + if (!pmap_demote_pde_locked(pmap, pde, sva, &lock)) { + if (lock != NULL) + rw_wunlock(lock); + + /* + * The large page mapping was destroyed. + */ + continue; + } + + /* + * Unless the page mappings are wired, remove the + * mapping to a single page so that a subsequent + * access may repromote. Since the underlying page + * table page is fully populated, this removal never + * frees a page table page. + */ + if ((oldpde & PG_W) == 0) { + pte = pmap_pde_to_pte(pde, sva); + KASSERT((*pte & PG_V) != 0, + ("pmap_advise: invalid PTE")); + pmap_remove_pte(pmap, pte, sva, *pde, NULL, + &lock); + anychanged = TRUE; + } + if (lock != NULL) + rw_wunlock(lock); + } + if (va_next > eva) + va_next = eva; + for (pte = pmap_pde_to_pte(pde, sva); sva != va_next; pte++, + sva += PAGE_SIZE) { + if ((*pte & (PG_MANAGED | PG_V)) != (PG_MANAGED | + PG_V)) + continue; + else if ((*pte & (PG_M | PG_RW)) == (PG_M | PG_RW)) { + if (advice == MADV_DONTNEED) { + /* + * Future calls to pmap_is_modified() + * can be avoided by making the page + * dirty now. + */ + m = PHYS_TO_VM_PAGE(*pte & PG_FRAME); + vm_page_dirty(m); + } + atomic_clear_long(pte, PG_M | PG_A); + } else if ((*pte & PG_A) != 0) + atomic_clear_long(pte, PG_A); + else + continue; + if ((*pte & PG_G) != 0) + pmap_invalidate_page(pmap, sva); + else + anychanged = TRUE; + } + } + if (anychanged) + pmap_invalidate_all(pmap); + if (pv_lists_locked) + rw_runlock(&pvh_global_lock); + PMAP_UNLOCK(pmap); +} + +/* * Clear the modify bits on the specified physical page. */ void diff --git a/sys/arm/arm/pmap-v6.c b/sys/arm/arm/pmap-v6.c index 08763b8..b9447d3 100644 --- a/sys/arm/arm/pmap-v6.c +++ b/sys/arm/arm/pmap-v6.c @@ -4767,6 +4767,14 @@ pmap_is_modified(vm_page_t m) } /* + * This function is advisory. + */ +void +pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, int advice) +{ +} + +/* * Clear the modify bits on the specified physical page. */ void diff --git a/sys/arm/arm/pmap.c b/sys/arm/arm/pmap.c index f232b07..bc7912d 100644 --- a/sys/arm/arm/pmap.c +++ b/sys/arm/arm/pmap.c @@ -4516,6 +4516,14 @@ pmap_page_wired_mappings(vm_page_t m) } /* + * This function is advisory. + */ +void +pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, int advice) +{ +} + +/* * pmap_ts_referenced: * * Return the count of reference bits for a page, clearing all of them. diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c index 8fa9026..f09abee 100644 --- a/sys/i386/i386/pmap.c +++ b/sys/i386/i386/pmap.c @@ -4834,6 +4834,112 @@ out: } /* + * Apply the given advice to the specified range of addresses within the + * given pmap. Depending on the advice, clear the referenced and/or + * modified flags in each mapping and set the mapped page's dirty field. + */ +void +pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, int advice) +{ + pd_entry_t oldpde, *pde; + pt_entry_t *pte; + vm_offset_t pdnxt; + vm_page_t m; + boolean_t anychanged, pv_lists_locked; + + if (advice != MADV_DONTNEED && advice != MADV_FREE) + return; + if (pmap_is_current(pmap)) + pv_lists_locked = FALSE; + else { + pv_lists_locked = TRUE; +resume: + rw_wlock(&pvh_global_lock); + sched_pin(); + } + anychanged = FALSE; + PMAP_LOCK(pmap); + for (; sva < eva; sva = pdnxt) { + pdnxt = (sva + NBPDR) & ~PDRMASK; + if (pdnxt < sva) + pdnxt = eva; + pde = pmap_pde(pmap, sva); + oldpde = *pde; + if ((oldpde & PG_V) == 0) + continue; + else if ((oldpde & PG_PS) != 0) { + if ((oldpde & PG_MANAGED) == 0) + continue; + if (!pv_lists_locked) { + pv_lists_locked = TRUE; + if (!rw_try_wlock(&pvh_global_lock)) { + if (anychanged) + pmap_invalidate_all(pmap); + PMAP_UNLOCK(pmap); + goto resume; + } + sched_pin(); + } + if (!pmap_demote_pde(pmap, pde, sva)) { + /* + * The large page mapping was destroyed. + */ + continue; + } + + /* + * Unless the page mappings are wired, remove the + * mapping to a single page so that a subsequent + * access may repromote. Since the underlying page + * table page is fully populated, this removal never + * frees a page table page. + */ + if ((oldpde & PG_W) == 0) { + pte = pmap_pte_quick(pmap, sva); + KASSERT((*pte & PG_V) != 0, + ("pmap_advise: invalid PTE")); + pmap_remove_pte(pmap, pte, sva, NULL); + anychanged = TRUE; + } + } + if (pdnxt > eva) + pdnxt = eva; + for (pte = pmap_pte_quick(pmap, sva); sva != pdnxt; pte++, + sva += PAGE_SIZE) { + if ((*pte & (PG_MANAGED | PG_V)) != (PG_MANAGED | + PG_V)) + continue; + else if ((*pte & (PG_M | PG_RW)) == (PG_M | PG_RW)) { + if (advice == MADV_DONTNEED) { + /* + * Future calls to pmap_is_modified() + * can be avoided by making the page + * dirty now. + */ + m = PHYS_TO_VM_PAGE(*pte & PG_FRAME); + vm_page_dirty(m); + } + atomic_clear_int((u_int *)pte, PG_M | PG_A); + } else if ((*pte & PG_A) != 0) + atomic_clear_int((u_int *)pte, PG_A); + else + continue; + if ((*pte & PG_G) != 0) + pmap_invalidate_page(pmap, sva); + else + anychanged = TRUE; + } + } + if (anychanged) + pmap_invalidate_all(pmap); + if (pv_lists_locked) { + sched_unpin(); + rw_wunlock(&pvh_global_lock); + } + PMAP_UNLOCK(pmap); +} + +/* * Clear the modify bits on the specified physical page. */ void diff --git a/sys/i386/xen/pmap.c b/sys/i386/xen/pmap.c index c34fe29..3abe7ef 100644 --- a/sys/i386/xen/pmap.c +++ b/sys/i386/xen/pmap.c @@ -3914,6 +3914,72 @@ pmap_ts_referenced(vm_page_t m) } /* + * Apply the given advice to the specified range of addresses within the + * given pmap. Depending on the advice, clear the referenced and/or + * modified flags in each mapping and set the mapped page's dirty field. + */ +void +pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, int advice) +{ + pd_entry_t oldpde; + pt_entry_t *pte; + vm_offset_t pdnxt; + vm_page_t m; + boolean_t anychanged; + + if (advice != MADV_DONTNEED && advice != MADV_FREE) + return; + anychanged = FALSE; + rw_wlock(&pvh_global_lock); + sched_pin(); + PMAP_LOCK(pmap); + for (; sva < eva; sva = pdnxt) { + pdnxt = (sva + NBPDR) & ~PDRMASK; + if (pdnxt < sva) + pdnxt = eva; + oldpde = pmap->pm_pdir[sva >> PDRSHIFT]; + if ((oldpde & (PG_PS | PG_V)) != PG_V) + continue; + if (pdnxt > eva) + pdnxt = eva; + for (pte = pmap_pte_quick(pmap, sva); sva != pdnxt; pte++, + sva += PAGE_SIZE) { + if ((*pte & (PG_MANAGED | PG_V)) != (PG_MANAGED | + PG_V)) + continue; + else if ((*pte & (PG_M | PG_RW)) == (PG_M | PG_RW)) { + if (advice == MADV_DONTNEED) { + /* + * Future calls to pmap_is_modified() + * can be avoided by making the page + * dirty now. + */ + m = PHYS_TO_VM_PAGE(xpmap_mtop(*pte) & + PG_FRAME); + vm_page_dirty(m); + } + PT_SET_VA_MA(pte, *pte & ~(PG_M | PG_A), TRUE); + } else if ((*pte & PG_A) != 0) + PT_SET_VA_MA(pte, *pte & ~PG_A, TRUE); + else + continue; + if ((*pte & PG_G) != 0) + pmap_invalidate_page(pmap, sva); + else + anychanged = TRUE; + } + } + PT_UPDATES_FLUSH(); + if (*PMAP1) + PT_SET_VA_MA(PMAP1, 0, TRUE); + if (anychanged) + pmap_invalidate_all(pmap); + sched_unpin(); + rw_wunlock(&pvh_global_lock); + PMAP_UNLOCK(pmap); +} + +/* * Clear the modify bits on the specified physical page. */ void diff --git a/sys/ia64/ia64/pmap.c b/sys/ia64/ia64/pmap.c index b23c77c..442149f 100644 --- a/sys/ia64/ia64/pmap.c +++ b/sys/ia64/ia64/pmap.c @@ -2310,6 +2310,50 @@ pmap_is_referenced(vm_page_t m) } /* + * Apply the given advice to the specified range of addresses within the + * given pmap. Depending on the advice, clear the referenced and/or + * modified flags in each mapping and set the mapped page's dirty field. + */ +void +pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, int advice) +{ + struct ia64_lpte *pte; + pmap_t oldpmap; + vm_page_t m; + + PMAP_LOCK(pmap); + oldpmap = pmap_switch(pmap); + for (; sva < eva; sva += PAGE_SIZE) { + /* If page is invalid, skip this page. */ + pte = pmap_find_vhpt(sva); + if (pte == NULL) + continue; + + /* If it isn't managed, skip it too. */ + if (!pmap_managed(pte)) + continue; + + /* Clear its modified and referenced bits. */ + if (pmap_dirty(pte)) { + if (advice == MADV_DONTNEED) { + /* + * Future calls to pmap_is_modified() can be + * avoided by making the page dirty now. + */ + m = PHYS_TO_VM_PAGE(pmap_ppn(pte)); + vm_page_dirty(m); + } + pmap_clear_dirty(pte); + } else if (!pmap_accessed(pte)) + continue; + pmap_clear_accessed(pte); + pmap_invalidate_page(sva); + } + pmap_switch(oldpmap); + PMAP_UNLOCK(pmap); +} + +/* * Clear the modify bits on the specified physical page. */ void diff --git a/sys/mips/mips/pmap.c b/sys/mips/mips/pmap.c index fb22a89..90994cc 100644 --- a/sys/mips/mips/pmap.c +++ b/sys/mips/mips/pmap.c @@ -2914,6 +2914,14 @@ pmap_is_prefaultable(pmap_t pmap, vm_offset_t addr) } /* + * This function is advisory. + */ +void +pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, int advice) +{ +} + +/* * Clear the modify bits on the specified physical page. */ void diff --git a/sys/powerpc/powerpc/mmu_if.m b/sys/powerpc/powerpc/mmu_if.m index 0382bd8..f9f37cb 100644 --- a/sys/powerpc/powerpc/mmu_if.m +++ b/sys/powerpc/powerpc/mmu_if.m @@ -133,6 +133,25 @@ CODE { /** + * @brief Apply the given advice to the specified range of addresses within + * the given pmap. Depending on the advice, clear the referenced and/or + * modified flags in each mapping and set the mapped page's dirty field. + * + * @param _pmap physical map + * @param _start virtual range start + * @param _end virtual range end + * @param _advice advice to apply + */ +METHOD void advise { + mmu_t _mmu; + pmap_t _pmap; + vm_offset_t _start; + vm_offset_t _end; + int _advice; +}; + + +/** * @brief Change the wiring attribute for the page in the given physical * map and virtual address. * diff --git a/sys/powerpc/powerpc/pmap_dispatch.c b/sys/powerpc/powerpc/pmap_dispatch.c index 7fd98f4..24e6076 100644 --- a/sys/powerpc/powerpc/pmap_dispatch.c +++ b/sys/powerpc/powerpc/pmap_dispatch.c @@ -91,6 +91,15 @@ RB_GENERATE(pvo_tree, pvo_entry, pvo_plink, pvo_vaddr_compare); void +pmap_advise(pmap_t pmap, vm_offset_t start, vm_offset_t end, int advice) +{ + + CTR5(KTR_PMAP, "%s(%p, %#x, %#x, %d)", __func__, pmap, start, end, + advice); + MMU_ADVISE(mmu_obj, pmap, start, end, advice); +} + +void pmap_change_wiring(pmap_t pmap, vm_offset_t va, boolean_t wired) { diff --git a/sys/sparc64/sparc64/pmap.c b/sys/sparc64/sparc64/pmap.c index 47f2c49..a84e4c3 100644 --- a/sys/sparc64/sparc64/pmap.c +++ b/sys/sparc64/sparc64/pmap.c @@ -2126,6 +2126,14 @@ pmap_is_referenced(vm_page_t m) return (rv); } +/* + * This function is advisory. + */ +void +pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, int advice) +{ +} + void pmap_clear_modify(vm_page_t m) { diff --git a/sys/vm/pmap.h b/sys/vm/pmap.h index c0f80a7..911298f 100644 --- a/sys/vm/pmap.h +++ b/sys/vm/pmap.h @@ -98,6 +98,8 @@ struct thread; extern vm_offset_t kernel_vm_end; void pmap_activate(struct thread *td); +void pmap_advise(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, + int advice); void pmap_align_superpage(vm_object_t, vm_ooffset_t, vm_offset_t *, vm_size_t); void pmap_change_wiring(pmap_t, vm_offset_t, boolean_t); diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index 71c44ad..1be62af 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -2125,7 +2125,7 @@ vm_map_madvise( (current != &map->header) && (current->start < end); current = current->next ) { - vm_offset_t useStart; + vm_offset_t useEnd, useStart; if (current->eflags & MAP_ENTRY_IS_SUB_MAP) continue; @@ -2133,17 +2133,34 @@ vm_map_madvise( pstart = OFF_TO_IDX(current->offset); pend = pstart + atop(current->end - current->start); useStart = current->start; + useEnd = current->end; if (current->start < start) { pstart += atop(start - current->start); useStart = start; } - if (current->end > end) + if (current->end > end) { pend -= atop(current->end - end); + useEnd = end; + } if (pstart >= pend) continue; + /* + * Perform the pmap_advise() before clearing + * PGA_REFERENCED in vm_page_advise(). Otherwise, a + * concurrent pmap operation, such as pmap_remove(), + * could clear a reference in the pmap and set + * PGA_REFERENCED on the page before the pmap_advise() + * had completed. Consequently, the page would appear + * referenced based upon an old reference that + * occurred before this pmap_advise() ran. + */ + if (behav == MADV_DONTNEED || behav == MADV_FREE) + pmap_advise(map->pmap, useStart, useEnd, + behav); + vm_object_madvise(current->object.vm_object, pstart, pend, behav); if (behav == MADV_WILLNEED) { diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 7d8ecfa..7b4b57c 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -2634,7 +2634,6 @@ vm_page_advise(vm_page_t m, int advice) * But we do make the page is freeable as we can without * actually taking the step of unmapping it. */ - pmap_clear_modify(m); m->dirty = 0; m->act_count = 0; } else if (advice != MADV_DONTNEED) @@ -2654,15 +2653,7 @@ vm_page_advise(vm_page_t m, int advice) /* * Clear any references to the page. Otherwise, the page daemon will * immediately reactivate the page. - * - * Perform the pmap_clear_reference() first. Otherwise, a concurrent - * pmap operation, such as pmap_remove(), could clear a reference in - * the pmap and set PGA_REFERENCED on the page before the - * pmap_clear_reference() had completed. Consequently, the page would - * appear referenced based upon an old reference that occurred before - * this function ran. */ - pmap_clear_reference(m); vm_page_aflag_clear(m, PGA_REFERENCED); if (advice != MADV_FREE && m->dirty == 0 && pmap_is_modified(m)) -- cgit v1.1 From f31f23f6612c6105f7ac2b9c6f094d361565dfab Mon Sep 17 00:00:00 2001 From: antoine Date: Thu, 29 Aug 2013 15:58:20 +0000 Subject: Fix after r255014 --- ObsoleteFiles.inc | 3 +++ share/man/man5/src.conf.5 | 5 +---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index 070f634..7399a6e 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -38,6 +38,9 @@ # xargs -n1 | sort | uniq -d; # done +# 20130829: bsdpatch is patch unconditionally +OLD_FILES+=usr/bin/bsdpatch +OLD_FILES+=usr/share/man/man1/bsdpatch.1.gz # 20130822: bind 9.9.3-P2 import OLD_LIBS+=usr/lib/liblwres.so.80 # 20130814: vm_page_busy(9) diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5 index fbdb6da..4e89864 100644 --- a/share/man/man5/src.conf.5 +++ b/share/man/man5/src.conf.5 @@ -1,7 +1,7 @@ .\" DO NOT EDIT-- this file is automatically generated. .\" from FreeBSD: head/tools/build/options/makeman 253304 2013-07-12 23:08:44Z bapt .\" $FreeBSD$ -.Dd August 28, 2013 +.Dd August 29, 2013 .Dt SRC.CONF 5 .Os .Sh NAME @@ -500,9 +500,6 @@ When set, it also enforces the following options: .It .Va WITHOUT_GNU_SUPPORT .El -.It Va WITH_GNU_PATCH -.\" from FreeBSD: head/tools/build/options/WITH_GNU_PATCH 253689 2013-07-26 21:25:18Z pfg -Install GNU-licensed patch as 'patch' instead of BSD patch. .It Va WITHOUT_GNU_SUPPORT .\" from FreeBSD: head/tools/build/options/WITHOUT_GNU_SUPPORT 156932 2006-03-21 07:50:50Z ru Set to build some programs without optional GNU support. -- cgit v1.1 From 5875a10cf6729e642e46a8a454c9afbc33f05de8 Mon Sep 17 00:00:00 2001 From: jhb Date: Thu, 29 Aug 2013 15:59:05 +0000 Subject: Don't return an error for socket timeouts that are too large. Just cap them to INT_MAX ticks instead. PR: kern/181416 (r254699 really) Requested by: bde MFC after: 2 weeks --- sys/kern/uipc_socket.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index 4d0eac4..75fd04b 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -2698,17 +2698,12 @@ sosetopt(struct socket *so, struct sockopt *sopt) sizeof tv); if (error) goto bad; - - if (tv.tv_sec < 0 || tv.tv_sec > INT_MAX / hz || - tv.tv_usec < 0 || tv.tv_usec >= 1000000) { + if (tv.tv_sec < 0 || tv.tv_usec < 0 || + tv.tv_usec >= 1000000) { error = EDOM; goto bad; } val = tvtohz(&tv); - if (val == INT_MAX) { - error = EDOM; - goto bad; - } switch (sopt->sopt_name) { case SO_SNDTIMEO: -- cgit v1.1 From 16873ab749601d7393a28c989ec146e81ffc61b3 Mon Sep 17 00:00:00 2001 From: marcel Date: Thu, 29 Aug 2013 16:26:04 +0000 Subject: Work-around a timing problem with the ITE IT8513E now that the core calls ns8250_bus_ipend() almost immediately after ns8250_bus_attach(). As it appears, a line break condition is being signalled for almost all received characters due to this. A delay of 150ms seems enough to allow the H/W to settle and to avoid the problem. More analysis is needed, but for now a regression has been addressed. Reported by: kevlo@ Tested by: kevlo@ --- sys/dev/uart/uart_dev_ns8250.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/sys/dev/uart/uart_dev_ns8250.c b/sys/dev/uart/uart_dev_ns8250.c index 1c337ca..2fad76c 100644 --- a/sys/dev/uart/uart_dev_ns8250.c +++ b/sys/dev/uart/uart_dev_ns8250.c @@ -453,7 +453,19 @@ ns8250_bus_attach(struct uart_softc *sc) ns8250->ier |= ns8250->ier_rxbits; uart_setreg(bas, REG_IER, ns8250->ier); uart_barrier(bas); - + + /* + * Timing of the H/W access was changed with r253161 of uart_core.c + * It has been observed that an ITE IT8513E would signal a break + * condition with pretty much every character it received, unless + * it had enough time to settle between ns8250_bus_attach() and + * ns8250_bus_ipend() -- which it accidentally had before r253161. + * It's not understood why the UART chip behaves this way and it + * could very well be that the DELAY make the H/W work in the same + * accidental manner as before. More analysis is warranted, but + * at least now we fixed a known regression. + */ + DELAY(150); return (0); } -- cgit v1.1 From 6165f3098023c31d6f65bb00acacd972466dbe35 Mon Sep 17 00:00:00 2001 From: ken Date: Thu, 29 Aug 2013 16:41:40 +0000 Subject: Fix some issues in change 254760 pointed out by Bruce Evans: - Remove excessive parenthesis - Use KNF continuation indentation - Cut down on excessive continuation lines - More consistent style in messages - Use uprintf() instead of printf() Submitted by: bde --- sys/kern/kern_physio.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/sys/kern/kern_physio.c b/sys/kern/kern_physio.c index 4e818fc..b37b9f3 100644 --- a/sys/kern/kern_physio.c +++ b/sys/kern/kern_physio.c @@ -58,25 +58,22 @@ physio(struct cdev *dev, struct uio *uio, int ioflag) * If the driver does not want I/O to be split, that means that we * need to reject any requests that will not fit into one buffer. */ - if ((dev->si_flags & SI_NOSPLIT) && - ((uio->uio_resid > dev->si_iosize_max) || - (uio->uio_resid > MAXPHYS) || - (uio->uio_iovcnt > 1))) { + if (dev->si_flags & SI_NOSPLIT && + (uio->uio_resid > dev->si_iosize_max || uio->uio_resid > MAXPHYS || + uio->uio_iovcnt > 1)) { /* * Tell the user why his I/O was rejected. */ if (uio->uio_resid > dev->si_iosize_max) - printf("%s: request size %zd > si_iosize_max=%d, " + uprintf("%s: request size=%zd > si_iosize_max=%d; " "cannot split request\n", devtoname(dev), uio->uio_resid, dev->si_iosize_max); - if (uio->uio_resid > MAXPHYS) - printf("%s: request size %zd > MAXPHYS=%d, " + uprintf("%s: request size=%zd > MAXPHYS=%d; " "cannot split request\n", devtoname(dev), uio->uio_resid, MAXPHYS); - if (uio->uio_iovcnt > 1) - printf("%s: request vectors=%d > 1, " + uprintf("%s: request vectors=%d > 1; " "cannot split request\n", devtoname(dev), uio->uio_iovcnt); @@ -117,8 +114,8 @@ physio(struct cdev *dev, struct uio *uio, int ioflag) * This device does not want I/O to be split. */ if (dev->si_flags & SI_NOSPLIT) { - printf("%s: request ptr %p is not " - "on a page boundary, cannot split " + uprintf("%s: request ptr %p is not " + "on a page boundary; cannot split " "request\n", devtoname(dev), bp->b_data); error = EFBIG; -- cgit v1.1 From c5c787b7f208974a60413a18c9843a5e19ef895e Mon Sep 17 00:00:00 2001 From: emaste Date: Thu, 29 Aug 2013 16:57:55 +0000 Subject: Update to 2013-08-29 NetBSD libexecinfo snapshot This adds my patch to use the kern.proc.pathname sysctl instead of relying on procfs(5). --- contrib/libexecinfo/backtrace.3 | 8 +------- contrib/libexecinfo/backtrace.c | 26 +++++++++++++++++++++++--- contrib/libexecinfo/symtab.c | 6 +++--- 3 files changed, 27 insertions(+), 13 deletions(-) diff --git a/contrib/libexecinfo/backtrace.3 b/contrib/libexecinfo/backtrace.3 index b173dc3..fdd8cec 100644 --- a/contrib/libexecinfo/backtrace.3 +++ b/contrib/libexecinfo/backtrace.3 @@ -1,4 +1,4 @@ -.\" $NetBSD: backtrace.3,v 1.4 2012/06/10 00:24:36 christos Exp $ +.\" $NetBSD: backtrace.3,v 1.5 2013/08/22 17:08:43 christos Exp $ .\" $FreeBSD$ .\" .\" Copyright (c) 2012 The NetBSD Foundation, Inc. @@ -152,10 +152,4 @@ The Linux versions of the functions (there are no _fmt variants) use instead of .Ft size_t arguments. -.It -The -.Fn backtrace_symbols -functions currently rely on -.Xr procfs 5 -to locate the executable. .El diff --git a/contrib/libexecinfo/backtrace.c b/contrib/libexecinfo/backtrace.c index e51c666..756a982 100644 --- a/contrib/libexecinfo/backtrace.c +++ b/contrib/libexecinfo/backtrace.c @@ -1,4 +1,4 @@ -/* $NetBSD: backtrace.c,v 1.2 2012/07/09 03:11:59 christos Exp $ */ +/* $NetBSD: backtrace.c,v 1.3 2013/08/29 14:58:56 christos Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include -__RCSID("$NetBSD: backtrace.c,v 1.2 2012/07/09 03:11:59 christos Exp $"); +__RCSID("$NetBSD: backtrace.c,v 1.3 2013/08/29 14:58:56 christos Exp $"); #include #include @@ -51,9 +51,29 @@ __RCSID("$NetBSD: backtrace.c,v 1.2 2012/07/09 03:11:59 christos Exp $"); #ifdef __linux__ #define SELF "/proc/self/exe" #else +#include #define SELF "/proc/curproc/file" #endif +static int +open_self(int flags) +{ + const char *pathname = SELF; +#ifdef KERN_PROC_PATHNAME + static const int name[] = { + CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1, + }; + char path[MAXPATHLEN]; + size_t len; + + len = sizeof(path); + if (sysctl(name, 4, path, &len, NULL, 0) != -1) + pathname = path; +#endif + return open(pathname, flags); +} + + static int __printflike(4, 5) rasprintf(char **buf, size_t *bufsiz, size_t offs, const char *fmt, ...) { @@ -163,7 +183,7 @@ backtrace_symbols_fmt(void *const *trace, size_t len, const char *fmt) symtab_t *st; int fd; - if ((fd = open(SELF, O_RDONLY)) != -1) + if ((fd = open_self(O_RDONLY)) != -1) st = symtab_create(fd, -1, STT_FUNC); else st = NULL; diff --git a/contrib/libexecinfo/symtab.c b/contrib/libexecinfo/symtab.c index 737662e..92d92dc 100644 --- a/contrib/libexecinfo/symtab.c +++ b/contrib/libexecinfo/symtab.c @@ -1,4 +1,4 @@ -/* $NetBSD: symtab.c,v 1.1 2012/05/26 22:02:29 christos Exp $ */ +/* $NetBSD: symtab.c,v 1.2 2013/08/29 15:01:57 christos Exp $ */ /*- * Copyright (c) 2012 The NetBSD Foundation, Inc. @@ -29,12 +29,12 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include -__RCSID("$NetBSD: symtab.c,v 1.1 2012/05/26 22:02:29 christos Exp $"); +__RCSID("$NetBSD: symtab.c,v 1.2 2013/08/29 15:01:57 christos Exp $"); #include #include -#include #include +#include #include #include -- cgit v1.1 From a58112bf45ed15f61878fa7d68f2a492dacfdb85 Mon Sep 17 00:00:00 2001 From: delphij Date: Thu, 29 Aug 2013 17:40:03 +0000 Subject: Add a few missing language directories for /usr. --- etc/mtree/BSD.usr.dist | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/etc/mtree/BSD.usr.dist b/etc/mtree/BSD.usr.dist index 339ae55..62117f5 100644 --- a/etc/mtree/BSD.usr.dist +++ b/etc/mtree/BSD.usr.dist @@ -63,6 +63,8 @@ atf .. calendar + de_AT.ISO_8859-15 + .. de_DE.ISO8859-1 .. fr_FR.ISO8859-1 @@ -71,8 +73,14 @@ .. hu_HU.ISO8859-2 .. + pt_BR.ISO8859-1 + .. + pt_BR.UTF-8 + .. ru_RU.KOI8-R .. + ru_RU.UTF-8 + .. uk_UA.KOI8-U .. .. -- cgit v1.1 From 4d90834da43f660fc930f3946a35b5cb4e9b4e55 Mon Sep 17 00:00:00 2001 From: delphij Date: Thu, 29 Aug 2013 17:45:13 +0000 Subject: Add directories that is installed as part of bsdconfig. These are included unconditionally for now because bsdconfig is currently installed unconditionally. This fixes 'make -j 17 installworld' caused by a race condition. MFC candidate. --- etc/mtree/BSD.usr.dist | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/etc/mtree/BSD.usr.dist b/etc/mtree/BSD.usr.dist index 62117f5..636a5d2 100644 --- a/etc/mtree/BSD.usr.dist +++ b/etc/mtree/BSD.usr.dist @@ -42,6 +42,62 @@ .. .. libexec + bsdconfig + 020.docsinstall + include + .. + .. + 030.packages + include + .. + .. + 040.password + include + .. + .. + 050.diskmgmt + include + .. + .. + 070.usermgmt + include + .. + .. + 080.console + include + .. + .. + 090.timezone + include + .. + .. + 110.mouse + include + .. + .. + 120.networking + include + .. + .. + 130.security + include + .. + .. + 140.startup + include + .. + .. + 150.ttys + include + .. + .. + dot + include + .. + .. + include + .. + .. bsdinstall .. lpr @@ -62,6 +118,22 @@ share atf .. + bsdconfig + media + .. + networking + .. + packages + .. + password + .. + startup + .. + timezone + .. + usermgmt + .. + .. calendar de_AT.ISO_8859-15 .. @@ -229,6 +301,8 @@ .. bootforth .. + bsdconfig + .. csh .. cvsup -- cgit v1.1 From 674c9801f60ed25de2d6fa3d4fbf791a1d79cfa3 Mon Sep 17 00:00:00 2001 From: jkim Date: Thu, 29 Aug 2013 18:36:47 +0000 Subject: Fix atomic operations on context_flag without altering semantics. --- sys/dev/drm2/drm_context.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/dev/drm2/drm_context.c b/sys/dev/drm2/drm_context.c index c844a39..9ca941e 100644 --- a/sys/dev/drm2/drm_context.c +++ b/sys/dev/drm2/drm_context.c @@ -182,7 +182,7 @@ bad: int drm_context_switch(struct drm_device *dev, int old, int new) { - if (test_and_set_bit(0, &dev->context_flag)) { + if (atomic_xchg(&dev->context_flag, 1) != 0) { DRM_ERROR("Reentering -- FIXME\n"); return EBUSY; } @@ -190,7 +190,7 @@ int drm_context_switch(struct drm_device *dev, int old, int new) DRM_DEBUG("Context switch from %d to %d\n", old, new); if (new == dev->last_context) { - clear_bit(0, &dev->context_flag); + atomic_xchg(&dev->context_flag, 0); return 0; } @@ -208,7 +208,7 @@ int drm_context_switch_complete(struct drm_device *dev, int new) /* If a context switch is ever initiated when the kernel holds the lock, release that lock here. */ - clear_bit(0, &dev->context_flag); + atomic_xchg(&dev->context_flag, 0); return 0; } -- cgit v1.1 From 8f526008d42509877a0b1f0303be142898629693 Mon Sep 17 00:00:00 2001 From: adrian Date: Thu, 29 Aug 2013 19:35:14 +0000 Subject: Convert the if_lagg rwlock to an rmlock. We've been seeing lots of cache line contention (but not lock contention!) in our workloads between the various TX and RX threads going on. The write lock is only grabbed when configuration changes are made - which are infrequent. With this patch, the contention and cycles spent waiting for updates disappear. Sponsored by: Netflix, Inc. --- sys/net/if_lagg.c | 65 +++++++++++++++++++++++++++++++++++-------------------- sys/net/if_lagg.h | 24 ++++++++++++-------- 2 files changed, 56 insertions(+), 33 deletions(-) diff --git a/sys/net/if_lagg.c b/sys/net/if_lagg.c index a46e1f3..27bab87 100644 --- a/sys/net/if_lagg.c +++ b/sys/net/if_lagg.c @@ -37,7 +37,7 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include +#include #include #include @@ -233,16 +233,17 @@ lagg_register_vlan(void *arg, struct ifnet *ifp, u_int16_t vtag) { struct lagg_softc *sc = ifp->if_softc; struct lagg_port *lp; + struct rm_priotracker tracker; if (ifp->if_softc != arg) /* Not our event */ return; - LAGG_RLOCK(sc); + LAGG_RLOCK(sc, &tracker); if (!SLIST_EMPTY(&sc->sc_ports)) { SLIST_FOREACH(lp, &sc->sc_ports, lp_entries) EVENTHANDLER_INVOKE(vlan_config, lp->lp_ifp, vtag); } - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); } /* @@ -254,16 +255,17 @@ lagg_unregister_vlan(void *arg, struct ifnet *ifp, u_int16_t vtag) { struct lagg_softc *sc = ifp->if_softc; struct lagg_port *lp; + struct rm_priotracker tracker; if (ifp->if_softc != arg) /* Not our event */ return; - LAGG_RLOCK(sc); + LAGG_RLOCK(sc, &tracker); if (!SLIST_EMPTY(&sc->sc_ports)) { SLIST_FOREACH(lp, &sc->sc_ports, lp_entries) EVENTHANDLER_INVOKE(vlan_unconfig, lp->lp_ifp, vtag); } - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); } static int @@ -322,9 +324,15 @@ lagg_clone_create(struct if_clone *ifc, int unit, caddr_t params) } } LAGG_LOCK_INIT(sc); + LAGG_CALLOUT_LOCK_INIT(sc); SLIST_INIT(&sc->sc_ports); TASK_INIT(&sc->sc_lladdr_task, 0, lagg_port_setlladdr, sc); - callout_init_rw(&sc->sc_callout, &sc->sc_mtx, CALLOUT_SHAREDLOCK); + + /* + * This uses the callout lock rather than the rmlock; one can't + * hold said rmlock during SWI. + */ + callout_init_mtx(&sc->sc_callout, &sc->sc_call_mtx, 0); /* Initialise pseudo media types */ ifmedia_init(&sc->sc_media, 0, lagg_media_change, @@ -389,7 +397,10 @@ lagg_clone_destroy(struct ifnet *ifp) ether_ifdetach(ifp); if_free(ifp); + /* This grabs sc_callout_mtx, serialising it correctly */ callout_drain(&sc->sc_callout); + + /* At this point it's drained; we can free this */ counter_u64_free(sc->sc_ipackets); counter_u64_free(sc->sc_opackets); counter_u64_free(sc->sc_ibytes); @@ -401,6 +412,7 @@ lagg_clone_destroy(struct ifnet *ifp) taskqueue_drain(taskqueue_swi, &sc->sc_lladdr_task); LAGG_LOCK_DESTROY(sc); + LAGG_CALLOUT_LOCK_DESTROY(sc); free(sc, M_DEVBUF); } @@ -764,6 +776,7 @@ lagg_port_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) struct lagg_softc *sc; struct lagg_port *lp = NULL; int error = 0; + struct rm_priotracker tracker; /* Should be checked by the caller */ if (ifp->if_type != IFT_IEEE8023ADLAG || @@ -778,15 +791,15 @@ lagg_port_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) break; } - LAGG_RLOCK(sc); + LAGG_RLOCK(sc, &tracker); if ((lp = ifp->if_lagg) == NULL || lp->lp_softc != sc) { error = ENOENT; - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); break; } lagg_port2req(lp, rp); - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); break; case SIOCSIFCAP: @@ -955,21 +968,22 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) struct thread *td = curthread; char *buf, *outbuf; int count, buflen, len, error = 0; + struct rm_priotracker tracker; bzero(&rpbuf, sizeof(rpbuf)); switch (cmd) { case SIOCGLAGG: - LAGG_RLOCK(sc); + LAGG_RLOCK(sc, &tracker); count = 0; SLIST_FOREACH(lp, &sc->sc_ports, lp_entries) count++; buflen = count * sizeof(struct lagg_reqport); - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); outbuf = malloc(buflen, M_TEMP, M_WAITOK | M_ZERO); - LAGG_RLOCK(sc); + LAGG_RLOCK(sc, &tracker); ra->ra_proto = sc->sc_proto; if (sc->sc_req != NULL) (*sc->sc_req)(sc, (caddr_t)&ra->ra_psc); @@ -987,7 +1001,7 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) buf += sizeof(rpbuf); len -= sizeof(rpbuf); } - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); ra->ra_ports = count; ra->ra_size = count * sizeof(rpbuf); error = copyout(outbuf, ra->ra_port, ra->ra_size); @@ -1065,16 +1079,16 @@ lagg_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) break; } - LAGG_RLOCK(sc); + LAGG_RLOCK(sc, &tracker); if ((lp = (struct lagg_port *)tpif->if_lagg) == NULL || lp->lp_softc != sc) { error = ENOENT; - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); break; } lagg_port2req(lp, rp); - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); break; case SIOCSLAGGPORT: error = priv_check(td, PRIV_NET_LAGG); @@ -1280,14 +1294,15 @@ lagg_transmit(struct ifnet *ifp, struct mbuf *m) { struct lagg_softc *sc = (struct lagg_softc *)ifp->if_softc; int error, len, mcast; + struct rm_priotracker tracker; len = m->m_pkthdr.len; mcast = (m->m_flags & (M_MCAST | M_BCAST)) ? 1 : 0; - LAGG_RLOCK(sc); + LAGG_RLOCK(sc, &tracker); /* We need a Tx algorithm and at least one port */ if (sc->sc_proto == LAGG_PROTO_NONE || sc->sc_count == 0) { - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); m_freem(m); ifp->if_oerrors++; return (ENXIO); @@ -1296,7 +1311,7 @@ lagg_transmit(struct ifnet *ifp, struct mbuf *m) ETHER_BPF_MTAP(ifp, m); error = (*sc->sc_start)(sc, m); - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); if (error == 0) { counter_u64_add(sc->sc_opackets, 1); @@ -1322,12 +1337,13 @@ lagg_input(struct ifnet *ifp, struct mbuf *m) struct lagg_port *lp = ifp->if_lagg; struct lagg_softc *sc = lp->lp_softc; struct ifnet *scifp = sc->sc_ifp; + struct rm_priotracker tracker; - LAGG_RLOCK(sc); + LAGG_RLOCK(sc, &tracker); if ((scifp->if_drv_flags & IFF_DRV_RUNNING) == 0 || (lp->lp_flags & LAGG_PORT_DISABLED) || sc->sc_proto == LAGG_PROTO_NONE) { - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); m_freem(m); return (NULL); } @@ -1346,7 +1362,7 @@ lagg_input(struct ifnet *ifp, struct mbuf *m) } } - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); return (m); } @@ -1367,16 +1383,17 @@ lagg_media_status(struct ifnet *ifp, struct ifmediareq *imr) { struct lagg_softc *sc = (struct lagg_softc *)ifp->if_softc; struct lagg_port *lp; + struct rm_priotracker tracker; imr->ifm_status = IFM_AVALID; imr->ifm_active = IFM_ETHER | IFM_AUTO; - LAGG_RLOCK(sc); + LAGG_RLOCK(sc, &tracker); SLIST_FOREACH(lp, &sc->sc_ports, lp_entries) { if (LAGG_PORTACTIVE(lp)) imr->ifm_status |= IFM_ACTIVE; } - LAGG_RUNLOCK(sc); + LAGG_RUNLOCK(sc, &tracker); } static void diff --git a/sys/net/if_lagg.h b/sys/net/if_lagg.h index a851f44..0db8da8 100644 --- a/sys/net/if_lagg.h +++ b/sys/net/if_lagg.h @@ -187,7 +187,8 @@ struct lagg_llq { struct lagg_softc { struct ifnet *sc_ifp; /* virtual interface */ - struct rwlock sc_mtx; + struct rmlock sc_mtx; + struct mtx sc_call_mtx; int sc_proto; /* lagg protocol */ u_int sc_count; /* number of ports */ u_int sc_active; /* active port count */ @@ -255,14 +256,19 @@ struct lagg_port { SLIST_ENTRY(lagg_port) lp_entries; }; -#define LAGG_LOCK_INIT(_sc) rw_init(&(_sc)->sc_mtx, "if_lagg rwlock") -#define LAGG_LOCK_DESTROY(_sc) rw_destroy(&(_sc)->sc_mtx) -#define LAGG_RLOCK(_sc) rw_rlock(&(_sc)->sc_mtx) -#define LAGG_WLOCK(_sc) rw_wlock(&(_sc)->sc_mtx) -#define LAGG_RUNLOCK(_sc) rw_runlock(&(_sc)->sc_mtx) -#define LAGG_WUNLOCK(_sc) rw_wunlock(&(_sc)->sc_mtx) -#define LAGG_RLOCK_ASSERT(_sc) rw_assert(&(_sc)->sc_mtx, RA_RLOCKED) -#define LAGG_WLOCK_ASSERT(_sc) rw_assert(&(_sc)->sc_mtx, RA_WLOCKED) +#define LAGG_LOCK_INIT(_sc) rm_init(&(_sc)->sc_mtx, "if_lagg rmlock") +#define LAGG_LOCK_DESTROY(_sc) rm_destroy(&(_sc)->sc_mtx) +#define LAGG_RLOCK(_sc, _p) rm_rlock(&(_sc)->sc_mtx, (_p)) +#define LAGG_WLOCK(_sc) rm_wlock(&(_sc)->sc_mtx) +#define LAGG_RUNLOCK(_sc, _p) rm_runlock(&(_sc)->sc_mtx, (_p)) +#define LAGG_WUNLOCK(_sc) rm_wunlock(&(_sc)->sc_mtx) +#define LAGG_RLOCK_ASSERT(_sc) rm_assert(&(_sc)->sc_mtx, RA_RLOCKED) +#define LAGG_WLOCK_ASSERT(_sc) rm_assert(&(_sc)->sc_mtx, RA_WLOCKED) + +#define LAGG_CALLOUT_LOCK_INIT(_sc) \ + mtx_init(&(_sc)->sc_call_mtx, "if_lagg callout mutex", NULL,\ + MTX_DEF) +#define LAGG_CALLOUT_LOCK_DESTROY(_sc) mtx_destroy(&(_sc)->sc_call_mtx) extern struct mbuf *(*lagg_input_p)(struct ifnet *, struct mbuf *); extern void (*lagg_linkstate_p)(struct ifnet *, int ); -- cgit v1.1 From d60bb760ec3e7d8592b384e51bf1e6402f0e8700 Mon Sep 17 00:00:00 2001 From: jkim Date: Thu, 29 Aug 2013 19:47:52 +0000 Subject: - Remove test_and_set_bit() macro. It is unused since r255037. - Relax atomic_read() and atomic_set() macros. Linux does not require any memory barrier. Also, these macros may be even reordered or optimized away according to the API documentation: https://www.kernel.org/doc/Documentation/atomic_ops.txt --- sys/dev/drm2/drm_atomic.h | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/sys/dev/drm2/drm_atomic.h b/sys/dev/drm2/drm_atomic.h index b901341..b4ef0fb 100644 --- a/sys/dev/drm2/drm_atomic.h +++ b/sys/dev/drm2/drm_atomic.h @@ -37,8 +37,8 @@ typedef uint64_t atomic64_t; #define BITS_TO_LONGS(x) howmany(x, sizeof(long) * NBBY) -#define atomic_set(p, v) atomic_store_rel_int(p, v) -#define atomic_read(p) atomic_load_acq_int(p) +#define atomic_read(p) (*(volatile u_int *)(p)) +#define atomic_set(p, v) do { *(u_int *)(p) = (v); } while (0) #define atomic_add(v, p) atomic_add_int(p, v) #define atomic_sub(v, p) atomic_subtract_int(p, v) @@ -63,9 +63,7 @@ typedef uint64_t atomic64_t; #define set_bit(b, p) \ atomic_set_int((volatile u_int *)(p) + (b) / 32, 1 << (b) % 32) #define test_bit(b, p) \ - (atomic_load_acq_int((volatile u_int *)(p) + (b) / 32) & (1 << (b) % 32)) -#define test_and_set_bit(b, p) \ - atomic_testandset_int((volatile u_int *)(p) + (b) / 32, b) + ((atomic_read((volatile u_int *)(p) + (b) / 32) & (1 << (b) % 32)) != 0) static __inline int find_first_zero_bit(volatile void *p, int max) -- cgit v1.1 From fcdbf70fd9ffe66a2cd744ca6626d7f87b39e593 Mon Sep 17 00:00:00 2001 From: gibbs Date: Thu, 29 Aug 2013 19:52:18 +0000 Subject: Implement vector callback for PVHVM and unify event channel implementations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Re-structure Xen HVM support so that: - Xen is detected and hypercalls can be performed very early in system startup. - Xen interrupt services are implemented using FreeBSD's native interrupt delivery infrastructure. - the Xen interrupt service implementation is shared between PV and HVM guests. - Xen interrupt handlers can optionally use a filter handler in order to avoid the overhead of dispatch to an interrupt thread. - interrupt load can be distributed among all available CPUs. - the overhead of accessing the emulated local and I/O apics on HVM is removed for event channel port events. - a similar optimization can eventually, and fairly easily, be used to optimize MSI. Early Xen detection, HVM refactoring, PVHVM interrupt infrastructure, and misc Xen cleanups: Sponsored by: Spectra Logic Corporation Unification of PV & HVM interrupt infrastructure, bug fixes, and misc Xen cleanups: Submitted by: Roger Pau Monné Sponsored by: Citrix Systems R&D sys/x86/x86/local_apic.c: sys/amd64/include/apicvar.h: sys/i386/include/apicvar.h: sys/amd64/amd64/apic_vector.S: sys/i386/i386/apic_vector.s: sys/amd64/amd64/machdep.c: sys/i386/i386/machdep.c: sys/i386/xen/exception.s: sys/x86/include/segments.h: Reserve IDT vector 0x93 for the Xen event channel upcall interrupt handler. On Hypervisors that support the direct vector callback feature, we can request that this vector be called directly by an injected HVM interrupt event, instead of a simulated PCI interrupt on the Xen platform PCI device. This avoids all of the overhead of dealing with the emulated I/O APIC and local APIC. It also means that the Hypervisor can inject these events on any CPU, allowing upcalls for different ports to be handled in parallel. sys/amd64/amd64/mp_machdep.c: sys/i386/i386/mp_machdep.c: Map Xen per-vcpu area during AP startup. sys/amd64/include/intr_machdep.h: sys/i386/include/intr_machdep.h: Increase the FreeBSD IRQ vector table to include space for event channel interrupt sources. sys/amd64/include/pcpu.h: sys/i386/include/pcpu.h: Remove Xen HVM per-cpu variable data. These fields are now allocated via the dynamic per-cpu scheme. See xen_intr.c for details. sys/amd64/include/xen/hypercall.h: sys/dev/xen/blkback/blkback.c: sys/i386/include/xen/xenvar.h: sys/i386/xen/clock.c: sys/i386/xen/xen_machdep.c: sys/xen/gnttab.c: Prefer FreeBSD primatives to Linux ones in Xen support code. sys/amd64/include/xen/xen-os.h: sys/i386/include/xen/xen-os.h: sys/xen/xen-os.h: sys/dev/xen/balloon/balloon.c: sys/dev/xen/blkback/blkback.c: sys/dev/xen/blkfront/blkfront.c: sys/dev/xen/console/xencons_ring.c: sys/dev/xen/control/control.c: sys/dev/xen/netback/netback.c: sys/dev/xen/netfront/netfront.c: sys/dev/xen/xenpci/xenpci.c: sys/i386/i386/machdep.c: sys/i386/include/pmap.h: sys/i386/include/xen/xenfunc.h: sys/i386/isa/npx.c: sys/i386/xen/clock.c: sys/i386/xen/mp_machdep.c: sys/i386/xen/mptable.c: sys/i386/xen/xen_clock_util.c: sys/i386/xen/xen_machdep.c: sys/i386/xen/xen_rtc.c: sys/xen/evtchn/evtchn_dev.c: sys/xen/features.c: sys/xen/gnttab.c: sys/xen/gnttab.h: sys/xen/hvm.h: sys/xen/xenbus/xenbus.c: sys/xen/xenbus/xenbus_if.m: sys/xen/xenbus/xenbusb_front.c: sys/xen/xenbus/xenbusvar.h: sys/xen/xenstore/xenstore.c: sys/xen/xenstore/xenstore_dev.c: sys/xen/xenstore/xenstorevar.h: Pull common Xen OS support functions/settings into xen/xen-os.h. sys/amd64/include/xen/xen-os.h: sys/i386/include/xen/xen-os.h: sys/xen/xen-os.h: Remove constants, macros, and functions unused in FreeBSD's Xen support. sys/xen/xen-os.h: sys/i386/xen/xen_machdep.c: sys/x86/xen/hvm.c: Introduce new functions xen_domain(), xen_pv_domain(), and xen_hvm_domain(). These are used in favor of #ifdefs so that FreeBSD can dynamically detect and adapt to the presence of a hypervisor. The goal is to have an HVM optimized GENERIC, but more is necessary before this is possible. sys/amd64/amd64/machdep.c: sys/dev/xen/xenpci/xenpcivar.h: sys/dev/xen/xenpci/xenpci.c: sys/x86/xen/hvm.c: sys/sys/kernel.h: Refactor magic ioport, Hypercall table and Hypervisor shared information page setup, and move it to a dedicated HVM support module. HVM mode initialization is now triggered during the SI_SUB_HYPERVISOR phase of system startup. This currently occurs just after the kernel VM is fully setup which is just enough infrastructure to allow the hypercall table and shared info page to be properly mapped. sys/xen/hvm.h: sys/x86/xen/hvm.c: Add definitions and a method for configuring Hypervisor event delievery via a direct vector callback. sys/amd64/include/xen/xen-os.h: sys/x86/xen/hvm.c: sys/conf/files: sys/conf/files.amd64: sys/conf/files.i386: Adjust kernel build to reflect the refactoring of early Xen startup code and Xen interrupt services. sys/dev/xen/blkback/blkback.c: sys/dev/xen/blkfront/blkfront.c: sys/dev/xen/blkfront/block.h: sys/dev/xen/control/control.c: sys/dev/xen/evtchn/evtchn_dev.c: sys/dev/xen/netback/netback.c: sys/dev/xen/netfront/netfront.c: sys/xen/xenstore/xenstore.c: sys/xen/evtchn/evtchn_dev.c: sys/dev/xen/console/console.c: sys/dev/xen/console/xencons_ring.c Adjust drivers to use new xen_intr_*() API. sys/dev/xen/blkback/blkback.c: Since blkback defers all event handling to a taskqueue, convert this task queue to a "fast" taskqueue, and schedule it via an interrupt filter. This avoids an unnecessary ithread context switch. sys/xen/xenstore/xenstore.c: The xenstore driver is MPSAFE. Indicate as much when registering its interrupt handler. sys/xen/xenbus/xenbus.c: sys/xen/xenbus/xenbusvar.h: Remove unused event channel APIs. sys/xen/evtchn.h: Remove all kernel Xen interrupt service API definitions from this file. It is now only used for structure and ioctl definitions related to the event channel userland device driver. Update the definitions in this file to match those from NetBSD. Implementing this interface will be necessary for Dom0 support. sys/xen/evtchn/evtchnvar.h: Add a header file for implemenation internal APIs related to managing event channels event delivery. This is used to allow, for example, the event channel userland device driver to access low-level routines that typical kernel consumers of event channel services should never access. sys/xen/interface/event_channel.h: sys/xen/xen_intr.h: Standardize on the evtchn_port_t type for referring to an event channel port id. In order to prevent low-level event channel APIs from leaking to kernel consumers who should not have access to this data, the type is defined twice: Once in the Xen provided event_channel.h, and again in xen/xen_intr.h. The double declaration is protected by __XEN_EVTCHN_PORT_DEFINED__ to ensure it is never declared twice within a given compilation unit. sys/xen/xen_intr.h: sys/xen/evtchn/evtchn.c: sys/x86/xen/xen_intr.c: sys/dev/xen/xenpci/evtchn.c: sys/dev/xen/xenpci/xenpcivar.h: New implementation of Xen interrupt services. This is similar in many respects to the i386 PV implementation with the exception that events for bound to event channel ports (i.e. not IPI, virtual IRQ, or physical IRQ) are further optimized to avoid mask/unmask operations that aren't necessary for these edge triggered events. Stubs exist for supporting physical IRQ binding, but will need additional work before this implementation can be fully shared between PV and HVM. sys/amd64/amd64/mp_machdep.c: sys/i386/i386/mp_machdep.c: sys/i386/xen/mp_machdep.c sys/x86/xen/hvm.c: Add support for placing vcpu_info into an arbritary memory page instead of using HYPERVISOR_shared_info->vcpu_info. This allows the creation of domains with more than 32 vcpus. sys/i386/i386/machdep.c: sys/i386/xen/clock.c: sys/i386/xen/xen_machdep.c: sys/i386/xen/exception.s: Add support for new event channle implementation. --- sys/amd64/amd64/apic_vector.S | 16 + sys/amd64/amd64/machdep.c | 14 +- sys/amd64/amd64/mp_machdep.c | 9 + sys/amd64/include/apicvar.h | 1 + sys/amd64/include/intr_machdep.h | 18 +- sys/amd64/include/pcpu.h | 12 +- sys/amd64/include/xen/hypercall.h | 8 +- sys/amd64/include/xen/xen-os.h | 219 +------ sys/conf/files | 2 - sys/conf/files.amd64 | 2 + sys/conf/files.i386 | 2 + sys/dev/xen/balloon/balloon.c | 11 +- sys/dev/xen/blkback/blkback.c | 52 +- sys/dev/xen/blkfront/blkfront.c | 37 +- sys/dev/xen/blkfront/block.h | 2 +- sys/dev/xen/console/console.c | 18 +- sys/dev/xen/console/xencons_ring.c | 18 +- sys/dev/xen/control/control.c | 17 +- sys/dev/xen/netback/netback.c | 34 +- sys/dev/xen/netfront/netfront.c | 51 +- sys/dev/xen/xenpci/evtchn.c | 467 --------------- sys/dev/xen/xenpci/xenpci.c | 226 ++----- sys/dev/xen/xenpci/xenpcivar.h | 5 +- sys/i386/i386/apic_vector.s | 19 + sys/i386/i386/machdep.c | 17 +- sys/i386/i386/mp_machdep.c | 9 + sys/i386/include/apicvar.h | 1 + sys/i386/include/intr_machdep.h | 24 +- sys/i386/include/pcpu.h | 16 +- sys/i386/include/pmap.h | 4 +- sys/i386/include/xen/xen-os.h | 168 ++---- sys/i386/include/xen/xenfunc.h | 6 +- sys/i386/include/xen/xenvar.h | 3 +- sys/i386/isa/npx.c | 2 +- sys/i386/xen/clock.c | 58 +- sys/i386/xen/exception.s | 2 +- sys/i386/xen/mp_machdep.c | 89 +-- sys/i386/xen/mptable.c | 2 +- sys/i386/xen/xen_clock_util.c | 3 +- sys/i386/xen/xen_machdep.c | 48 +- sys/i386/xen/xen_rtc.c | 10 +- sys/sys/kernel.h | 5 + sys/x86/include/segments.h | 1 + sys/x86/x86/local_apic.c | 8 + sys/x86/xen/hvm.c | 256 ++++++++ sys/x86/xen/xen_intr.c | 1126 +++++++++++++++++++++++++++++++++++ sys/xen/evtchn.h | 135 ++--- sys/xen/evtchn/evtchn.c | 1141 ------------------------------------ sys/xen/evtchn/evtchn_dev.c | 57 +- sys/xen/evtchn/evtchnvar.h | 105 ++++ sys/xen/features.c | 2 +- sys/xen/gnttab.c | 12 +- sys/xen/gnttab.h | 7 +- sys/xen/hvm.h | 4 + sys/xen/interface/event_channel.h | 3 + sys/xen/xen-os.h | 95 +++ sys/xen/xen_intr.h | 295 +++++++--- sys/xen/xenbus/xenbus.c | 39 +- sys/xen/xenbus/xenbus_if.m | 3 +- sys/xen/xenbus/xenbusb_front.c | 2 +- sys/xen/xenbus/xenbusvar.h | 35 +- sys/xen/xenstore/xenstore.c | 30 +- sys/xen/xenstore/xenstore_dev.c | 2 +- sys/xen/xenstore/xenstorevar.h | 2 +- 64 files changed, 2433 insertions(+), 2654 deletions(-) delete mode 100644 sys/dev/xen/xenpci/evtchn.c create mode 100644 sys/x86/xen/hvm.c create mode 100644 sys/x86/xen/xen_intr.c delete mode 100644 sys/xen/evtchn/evtchn.c create mode 100644 sys/xen/evtchn/evtchnvar.h create mode 100644 sys/xen/xen-os.h diff --git a/sys/amd64/amd64/apic_vector.S b/sys/amd64/amd64/apic_vector.S index 6465247..7551cc5 100644 --- a/sys/amd64/amd64/apic_vector.S +++ b/sys/amd64/amd64/apic_vector.S @@ -128,6 +128,22 @@ IDTVEC(errorint) MEXITCOUNT jmp doreti +#ifdef XENHVM +/* + * Xen event channel upcall interrupt handler. + * Only used when the hypervisor supports direct vector callbacks. + */ + .text + SUPERALIGN_TEXT +IDTVEC(xen_intr_upcall) + PUSH_FRAME + FAKE_MCOUNT(TF_RIP(%rsp)) + movq %rsp, %rdi + call xen_intr_handle_upcall + MEXITCOUNT + jmp doreti +#endif + #ifdef SMP /* * Global address space TLB shootdown. diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c index 7a39ef8..7f7e54a 100644 --- a/sys/amd64/amd64/machdep.c +++ b/sys/amd64/amd64/machdep.c @@ -1204,6 +1204,9 @@ extern inthand_t #ifdef KDTRACE_HOOKS IDTVEC(dtrace_ret), #endif +#ifdef XENHVM + IDTVEC(xen_intr_upcall), +#endif IDTVEC(fast_syscall), IDTVEC(fast_syscall32); #ifdef DDB @@ -1787,6 +1790,9 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) #ifdef KDTRACE_HOOKS setidt(IDT_DTRACE_RET, &IDTVEC(dtrace_ret), SDT_SYSIGT, SEL_UPL, 0); #endif +#ifdef XENHVM + setidt(IDT_EVTCHN, &IDTVEC(xen_intr_upcall), SDT_SYSIGT, SEL_UPL, 0); +#endif r_idt.rd_limit = sizeof(idt0) - 1; r_idt.rd_base = (long) idt; @@ -1910,14 +1916,6 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) if (env != NULL) strlcpy(kernelname, env, sizeof(kernelname)); -#ifdef XENHVM - if (inw(0x10) == 0x49d2) { - if (bootverbose) - printf("Xen detected: disabling emulated block and network devices\n"); - outw(0x10, 3); - } -#endif - cpu_probe_amdc1e(); #ifdef FDT diff --git a/sys/amd64/amd64/mp_machdep.c b/sys/amd64/amd64/mp_machdep.c index 79aeb9c..267b933 100644 --- a/sys/amd64/amd64/mp_machdep.c +++ b/sys/amd64/amd64/mp_machdep.c @@ -70,6 +70,10 @@ __FBSDID("$FreeBSD$"); #include #include +#ifdef XENHVM +#include +#endif + #define WARMBOOT_TARGET 0 #define WARMBOOT_OFF (KERNBASE + 0x0467) #define WARMBOOT_SEG (KERNBASE + 0x0469) @@ -711,6 +715,11 @@ init_secondary(void) /* set up FPU state on the AP */ fpuinit(); +#ifdef XENHVM + /* register vcpu_info area */ + xen_hvm_init_cpu(); +#endif + /* A quick check from sanity claus */ cpuid = PCPU_GET(cpuid); if (PCPU_GET(apic_id) != lapic_id()) { diff --git a/sys/amd64/include/apicvar.h b/sys/amd64/include/apicvar.h index ae2f5b9..9cd4c95 100644 --- a/sys/amd64/include/apicvar.h +++ b/sys/amd64/include/apicvar.h @@ -227,6 +227,7 @@ int lapic_set_lvt_triggermode(u_int apic_id, u_int lvt, enum intr_trigger trigger); void lapic_set_tpr(u_int vector); void lapic_setup(int boot); +void xen_intr_handle_upcall(struct trapframe *frame); #endif /* !LOCORE */ #endif /* _MACHINE_APICVAR_H_ */ diff --git a/sys/amd64/include/intr_machdep.h b/sys/amd64/include/intr_machdep.h index 8671605..c8b454d 100644 --- a/sys/amd64/include/intr_machdep.h +++ b/sys/amd64/include/intr_machdep.h @@ -44,12 +44,24 @@ * allocate IDT vectors. * * The first 255 IRQs (0 - 254) are reserved for ISA IRQs and PCI intline IRQs. - * IRQ values beyond 256 are used by MSI. We leave 255 unused to avoid - * confusion since 255 is used in PCI to indicate an invalid IRQ. + * IRQ values from 256 to 767 are used by MSI. When running under the Xen + * Hypervisor, IRQ values from 768 to 4863 are available for binding to + * event channel events. We leave 255 unused to avoid confusion since 255 is + * used in PCI to indicate an invalid IRQ. */ #define NUM_MSI_INTS 512 #define FIRST_MSI_INT 256 -#define NUM_IO_INTS (FIRST_MSI_INT + NUM_MSI_INTS) +#ifdef XENHVM +#include +#define NUM_EVTCHN_INTS NR_EVENT_CHANNELS +#define FIRST_EVTCHN_INT \ + (FIRST_MSI_INT + NUM_MSI_INTS) +#define LAST_EVTCHN_INT \ + (FIRST_EVTCHN_INT + NUM_EVTCHN_INTS - 1) +#else +#define NUM_EVTCHN_INTS 0 +#endif +#define NUM_IO_INTS (FIRST_MSI_INT + NUM_MSI_INTS + NUM_EVTCHN_INTS) /* * Default base address for MSI messages on x86 platforms. diff --git a/sys/amd64/include/pcpu.h b/sys/amd64/include/pcpu.h index ba4c618..1c83c2a 100644 --- a/sys/amd64/include/pcpu.h +++ b/sys/amd64/include/pcpu.h @@ -42,15 +42,6 @@ #endif #endif -#ifdef XENHVM -#define PCPU_XEN_FIELDS \ - ; \ - unsigned int pc_last_processed_l1i; \ - unsigned int pc_last_processed_l2i -#else -#define PCPU_XEN_FIELDS -#endif - /* * The SMP parts are setup in pmap.c and locore.s for the BSP, and * mp_machdep.c sets up the data for the AP's to "see" when they awake. @@ -76,8 +67,7 @@ struct system_segment_descriptor *pc_ldt; \ /* Pointer to the CPU TSS descriptor */ \ struct system_segment_descriptor *pc_tss; \ - u_int pc_cmci_mask /* MCx banks for CMCI */ \ - PCPU_XEN_FIELDS; \ + u_int pc_cmci_mask; /* MCx banks for CMCI */ \ uint64_t pc_dbreg[16]; /* ddb debugging regs */ \ int pc_dbreg_cmd; /* ddb debugging reg cmd */ \ char __pad[161] /* be divisor of PAGE_SIZE \ diff --git a/sys/amd64/include/xen/hypercall.h b/sys/amd64/include/xen/hypercall.h index 50fa376..a1b2a5c 100644 --- a/sys/amd64/include/xen/hypercall.h +++ b/sys/amd64/include/xen/hypercall.h @@ -1,7 +1,7 @@ /****************************************************************************** * hypercall.h * - * Linux-specific hypervisor handling. + * FreeBSD-specific hypervisor handling. * * Copyright (c) 2002-2004, K A Fraser * @@ -32,6 +32,8 @@ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS * IN THE SOFTWARE. + * + * $FreeBSD$ */ #ifndef __MACHINE_XEN_HYPERCALL_H__ @@ -270,7 +272,7 @@ HYPERVISOR_event_channel_op( int rc = _hypercall2(int, event_channel_op, cmd, arg); #if CONFIG_XEN_COMPAT <= 0x030002 - if (unlikely(rc == -ENOXENSYS)) { + if (__predict_false(rc == -ENOXENSYS)) { struct evtchn_op op; op.cmd = cmd; memcpy(&op.u, arg, sizeof(op.u)); @@ -303,7 +305,7 @@ HYPERVISOR_physdev_op( int rc = _hypercall2(int, physdev_op, cmd, arg); #if CONFIG_XEN_COMPAT <= 0x030002 - if (unlikely(rc == -ENOXENSYS)) { + if (__predict_false(rc == -ENOXENSYS)) { struct physdev_op op; op.cmd = cmd; memcpy(&op.u, arg, sizeof(op.u)); diff --git a/sys/amd64/include/xen/xen-os.h b/sys/amd64/include/xen/xen-os.h index 8974323..ee498b9 100644 --- a/sys/amd64/include/xen/xen-os.h +++ b/sys/amd64/include/xen/xen-os.h @@ -1,40 +1,42 @@ /****************************************************************************** - * os.h + * amd64/xen/xen-os.h * - * random collection of macros and definition + * Random collection of macros and definition + * + * Copyright (c) 2003, 2004 Keir Fraser (on behalf of the Xen team) + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. * * $FreeBSD$ */ -#ifndef _XEN_OS_H_ -#define _XEN_OS_H_ +#ifndef _MACHINE_XEN_XEN_OS_H_ +#define _MACHINE_XEN_XEN_OS_H_ #ifdef PAE #define CONFIG_X86_PAE #endif -#ifdef LOCORE -#define __ASSEMBLY__ -#endif - -#if !defined(__XEN_INTERFACE_VERSION__) -#define __XEN_INTERFACE_VERSION__ 0x00030208 -#endif - -#define GRANT_REF_INVALID 0xffffffff - -#include - /* Everything below this point is not included by assembler (.S) files. */ #ifndef __ASSEMBLY__ -/* Force a proper event-channel callback from Xen. */ -void force_evtchn_callback(void); - -extern int gdtset; - -extern shared_info_t *HYPERVISOR_shared_info; - /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */ static inline void rep_nop(void) { @@ -42,161 +44,12 @@ static inline void rep_nop(void) } #define cpu_relax() rep_nop() -/* crude memory allocator for memory allocation early in - * boot - */ -void *bootmem_alloc(unsigned int size); -void bootmem_free(void *ptr, unsigned int size); - -void printk(const char *fmt, ...); - -/* some function prototypes */ -void trap_init(void); - -#define likely(x) __builtin_expect((x),1) -#define unlikely(x) __builtin_expect((x),0) - -#ifndef XENHVM - -/* - * STI/CLI equivalents. These basically set and clear the virtual - * event_enable flag in the shared_info structure. Note that when - * the enable bit is set, there may be pending events to be handled. - * We may therefore call into do_hypervisor_callback() directly. - */ - -#define __cli() \ -do { \ - vcpu_info_t *_vcpu; \ - _vcpu = &HYPERVISOR_shared_info->vcpu_info[PCPU_GET(cpuid)]; \ - _vcpu->evtchn_upcall_mask = 1; \ - barrier(); \ -} while (0) - -#define __sti() \ -do { \ - vcpu_info_t *_vcpu; \ - barrier(); \ - _vcpu = &HYPERVISOR_shared_info->vcpu_info[PCPU_GET(cpuid)]; \ - _vcpu->evtchn_upcall_mask = 0; \ - barrier(); /* unmask then check (avoid races) */ \ - if ( unlikely(_vcpu->evtchn_upcall_pending) ) \ - force_evtchn_callback(); \ -} while (0) - -#define __restore_flags(x) \ -do { \ - vcpu_info_t *_vcpu; \ - barrier(); \ - _vcpu = &HYPERVISOR_shared_info->vcpu_info[PCPU_GET(cpuid)]; \ - if ((_vcpu->evtchn_upcall_mask = (x)) == 0) { \ - barrier(); /* unmask then check (avoid races) */ \ - if ( unlikely(_vcpu->evtchn_upcall_pending) ) \ - force_evtchn_callback(); \ - } \ -} while (0) - -/* - * Add critical_{enter, exit}? - * - */ -#define __save_and_cli(x) \ -do { \ - vcpu_info_t *_vcpu; \ - _vcpu = &HYPERVISOR_shared_info->vcpu_info[PCPU_GET(cpuid)]; \ - (x) = _vcpu->evtchn_upcall_mask; \ - _vcpu->evtchn_upcall_mask = 1; \ - barrier(); \ -} while (0) - - -#define cli() __cli() -#define sti() __sti() -#define save_flags(x) __save_flags(x) -#define restore_flags(x) __restore_flags(x) -#define save_and_cli(x) __save_and_cli(x) - -#define local_irq_save(x) __save_and_cli(x) -#define local_irq_restore(x) __restore_flags(x) -#define local_irq_disable() __cli() -#define local_irq_enable() __sti() - -#define mtx_lock_irqsave(lock, x) {local_irq_save((x)); mtx_lock_spin((lock));} -#define mtx_unlock_irqrestore(lock, x) {mtx_unlock_spin((lock)); local_irq_restore((x)); } -#define spin_lock_irqsave mtx_lock_irqsave -#define spin_unlock_irqrestore mtx_unlock_irqrestore - -#else -#endif - -#ifndef xen_mb -#define xen_mb() mb() -#endif -#ifndef xen_rmb -#define xen_rmb() rmb() -#endif -#ifndef xen_wmb -#define xen_wmb() wmb() -#endif -#ifdef SMP -#define smp_mb() mb() -#define smp_rmb() rmb() -#define smp_wmb() wmb() -#define smp_read_barrier_depends() read_barrier_depends() -#define set_mb(var, value) do { xchg(&var, value); } while (0) -#else -#define smp_mb() barrier() -#define smp_rmb() barrier() -#define smp_wmb() barrier() -#define smp_read_barrier_depends() do { } while(0) -#define set_mb(var, value) do { var = value; barrier(); } while (0) -#endif - - /* This is a barrier for the compiler only, NOT the processor! */ #define barrier() __asm__ __volatile__("": : :"memory") #define LOCK_PREFIX "" #define LOCK "" #define ADDR (*(volatile long *) addr) -/* - * Make sure gcc doesn't try to be clever and move things around - * on us. We need to use _exactly_ the address the user gave us, - * not some alias that contains the same information. - */ -typedef struct { volatile int counter; } atomic_t; - - - -#define xen_xchg(ptr,v) \ - ((__typeof__(*(ptr)))__xchg((unsigned long)(v),(ptr),sizeof(*(ptr)))) -struct __xchg_dummy { unsigned long a[100]; }; -#define __xg(x) ((volatile struct __xchg_dummy *)(x)) -static __inline unsigned long __xchg(unsigned long x, volatile void * ptr, - int size) -{ - switch (size) { - case 1: - __asm__ __volatile__("xchgb %b0,%1" - :"=q" (x) - :"m" (*__xg(ptr)), "0" (x) - :"memory"); - break; - case 2: - __asm__ __volatile__("xchgw %w0,%1" - :"=r" (x) - :"m" (*__xg(ptr)), "0" (x) - :"memory"); - break; - case 4: - __asm__ __volatile__("xchgl %0,%1" - :"=r" (x) - :"m" (*__xg(ptr)), "0" (x) - :"memory"); - break; - } - return x; -} /** * test_and_clear_bit - Clear a bit and return its old value @@ -238,7 +91,6 @@ static __inline int variable_test_bit(int nr, volatile void * addr) constant_test_bit((nr),(addr)) : \ variable_test_bit((nr),(addr))) - /** * set_bit - Atomically set a bit in memory * @nr: the bit to set @@ -275,25 +127,6 @@ static __inline__ void clear_bit(int nr, volatile void * addr) :"Ir" (nr)); } -/** - * atomic_inc - increment atomic variable - * @v: pointer of type atomic_t - * - * Atomically increments @v by 1. Note that the guaranteed - * useful range of an atomic_t is only 24 bits. - */ -static __inline__ void atomic_inc(atomic_t *v) -{ - __asm__ __volatile__( - LOCK "incl %0" - :"=m" (v->counter) - :"m" (v->counter)); -} - - -#define rdtscll(val) \ - __asm__ __volatile__("rdtsc" : "=A" (val)) - #endif /* !__ASSEMBLY__ */ -#endif /* _OS_H_ */ +#endif /* _MACHINE_XEN_XEN_OS_H_ */ diff --git a/sys/conf/files b/sys/conf/files index ec59771..8fda477 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -2499,7 +2499,6 @@ dev/xen/control/control.c optional xen | xenhvm dev/xen/netback/netback.c optional xen | xenhvm dev/xen/netfront/netfront.c optional xen | xenhvm dev/xen/xenpci/xenpci.c optional xenpci -dev/xen/xenpci/evtchn.c optional xenpci dev/xl/if_xl.c optional xl pci dev/xl/xlphy.c optional xl pci fs/deadfs/dead_vnops.c standard @@ -3815,7 +3814,6 @@ vm/vm_zeroidle.c standard vm/vnode_pager.c standard xen/gnttab.c optional xen | xenhvm xen/features.c optional xen | xenhvm -xen/evtchn/evtchn.c optional xen xen/evtchn/evtchn_dev.c optional xen | xenhvm xen/xenbus/xenbus_if.m optional xen | xenhvm xen/xenbus/xenbus.c optional xen | xenhvm diff --git a/sys/conf/files.amd64 b/sys/conf/files.amd64 index 1d5fa76..6d35d1f 100644 --- a/sys/conf/files.amd64 +++ b/sys/conf/files.amd64 @@ -531,3 +531,5 @@ x86/x86/mptable_pci.c optional mptable pci x86/x86/msi.c optional pci x86/x86/nexus.c standard x86/x86/tsc.c standard +x86/xen/hvm.c optional xenhvm +x86/xen/xen_intr.c optional xen | xenhvm diff --git a/sys/conf/files.i386 b/sys/conf/files.i386 index 4f8f8ed..0613337 100644 --- a/sys/conf/files.i386 +++ b/sys/conf/files.i386 @@ -568,3 +568,5 @@ x86/x86/mptable_pci.c optional apic native pci x86/x86/msi.c optional apic pci x86/x86/nexus.c standard x86/x86/tsc.c standard +x86/xen/hvm.c optional xenhvm +x86/xen/xen_intr.c optional xen | xenhvm diff --git a/sys/dev/xen/balloon/balloon.c b/sys/dev/xen/balloon/balloon.c index d4f94ab..9021abb 100644 --- a/sys/dev/xen/balloon/balloon.c +++ b/sys/dev/xen/balloon/balloon.c @@ -40,14 +40,15 @@ __FBSDID("$FreeBSD$"); #include #include -#include -#include -#include +#include +#include + +#include #include +#include #include -#include -#include +#include static MALLOC_DEFINE(M_BALLOON, "Balloon", "Xen Balloon Driver"); diff --git a/sys/dev/xen/blkback/blkback.c b/sys/dev/xen/blkback/blkback.c index 4208702..33f6faf 100644 --- a/sys/dev/xen/blkback/blkback.c +++ b/sys/dev/xen/blkback/blkback.c @@ -70,14 +70,13 @@ __FBSDID("$FreeBSD$"); #include #include -#include #include #include #include +#include #include -#include #include #include @@ -682,7 +681,7 @@ struct xbb_softc { blkif_back_rings_t rings; /** IRQ mapping for the communication ring event channel. */ - int irq; + xen_intr_handle_t xen_intr_handle; /** * \brief Backend access mode flags (e.g. write, or read-only). @@ -1347,7 +1346,7 @@ xbb_send_response(struct xbb_softc *xbb, struct xbb_xen_req *req, int status) taskqueue_enqueue(xbb->io_taskqueue, &xbb->io_task); if (notify) - notify_remote_via_irq(xbb->irq); + xen_intr_signal(xbb->xen_intr_handle); } /** @@ -1616,8 +1615,8 @@ xbb_dispatch_io(struct xbb_softc *xbb, struct xbb_xen_reqlist *reqlist) sg = NULL; /* Check that number of segments is sane. */ - if (unlikely(nseg == 0) - || unlikely(nseg > xbb->max_request_segments)) { + if (__predict_false(nseg == 0) + || __predict_false(nseg > xbb->max_request_segments)) { DPRINTF("Bad number of segments in request (%d)\n", nseg); reqlist->status = BLKIF_RSP_ERROR; @@ -1734,7 +1733,7 @@ xbb_dispatch_io(struct xbb_softc *xbb, struct xbb_xen_reqlist *reqlist) for (seg_idx = 0, map = xbb->maps; seg_idx < reqlist->nr_segments; seg_idx++, map++){ - if (unlikely(map->status != 0)) { + if (__predict_false(map->status != 0)) { DPRINTF("invalid buffer -- could not remap " "it (%d)\n", map->status); DPRINTF("Mapping(%d): Host Addr 0x%lx, flags " @@ -2026,14 +2025,16 @@ xbb_run_queue(void *context, int pending) * \param arg Callback argument registerd during event channel * binding - the xbb_softc for this instance. */ -static void -xbb_intr(void *arg) +static int +xbb_filter(void *arg) { struct xbb_softc *xbb; - /* Defer to kernel thread. */ + /* Defer to taskqueue thread. */ xbb = (struct xbb_softc *)arg; taskqueue_enqueue(xbb->io_taskqueue, &xbb->io_task); + + return (FILTER_HANDLED); } SDT_PROVIDER_DEFINE(xbb); @@ -2081,7 +2082,7 @@ xbb_dispatch_dev(struct xbb_softc *xbb, struct xbb_xen_reqlist *reqlist, if (operation == BIO_FLUSH) { nreq = STAILQ_FIRST(&reqlist->contig_req_list); bio = g_new_bio(); - if (unlikely(bio == NULL)) { + if (__predict_false(bio == NULL)) { DPRINTF("Unable to allocate bio for BIO_FLUSH\n"); error = ENOMEM; return (error); @@ -2143,7 +2144,7 @@ xbb_dispatch_dev(struct xbb_softc *xbb, struct xbb_xen_reqlist *reqlist, } bio = bios[nbio++] = g_new_bio(); - if (unlikely(bio == NULL)) { + if (__predict_false(bio == NULL)) { error = ENOMEM; goto fail_free_bios; } @@ -2811,10 +2812,7 @@ xbb_disconnect(struct xbb_softc *xbb) if ((xbb->flags & XBBF_RING_CONNECTED) == 0) return (0); - if (xbb->irq != 0) { - unbind_from_irqhandler(xbb->irq); - xbb->irq = 0; - } + xen_intr_unbind(&xbb->xen_intr_handle); mtx_unlock(&xbb->lock); taskqueue_drain(xbb->io_taskqueue, &xbb->io_task); @@ -2966,13 +2964,14 @@ xbb_connect_ring(struct xbb_softc *xbb) xbb->flags |= XBBF_RING_CONNECTED; - error = - bind_interdomain_evtchn_to_irqhandler(xbb->otherend_id, - xbb->ring_config.evtchn, - device_get_nameunit(xbb->dev), - xbb_intr, /*arg*/xbb, - INTR_TYPE_BIO | INTR_MPSAFE, - &xbb->irq); + error = xen_intr_bind_remote_port(xbb->dev, + xbb->otherend_id, + xbb->ring_config.evtchn, + xbb_filter, + /*ithread_handler*/NULL, + /*arg*/xbb, + INTR_TYPE_BIO | INTR_MPSAFE, + &xbb->xen_intr_handle); if (error) { (void)xbb_disconnect(xbb); xenbus_dev_fatal(xbb->dev, error, "binding event channel"); @@ -3791,9 +3790,10 @@ xbb_attach(device_t dev) * Create a taskqueue for doing work that must occur from a * thread context. */ - xbb->io_taskqueue = taskqueue_create(device_get_nameunit(dev), M_NOWAIT, - taskqueue_thread_enqueue, - /*context*/&xbb->io_taskqueue); + xbb->io_taskqueue = taskqueue_create_fast(device_get_nameunit(dev), + M_NOWAIT, + taskqueue_thread_enqueue, + /*contxt*/&xbb->io_taskqueue); if (xbb->io_taskqueue == NULL) { xbb_attach_failed(xbb, error, "Unable to create taskqueue"); return (ENOMEM); diff --git a/sys/dev/xen/blkfront/blkfront.c b/sys/dev/xen/blkfront/blkfront.c index 969c3d8..7d70f42 100644 --- a/sys/dev/xen/blkfront/blkfront.c +++ b/sys/dev/xen/blkfront/blkfront.c @@ -51,19 +51,17 @@ __FBSDID("$FreeBSD$"); #include #include -#include -#include -#include -#include - +#include #include #include -#include #include #include #include #include +#include +#include + #include #include @@ -139,7 +137,7 @@ xbd_flush_requests(struct xbd_softc *sc) RING_PUSH_REQUESTS_AND_CHECK_NOTIFY(&sc->xbd_ring, notify); if (notify) - notify_remote_via_irq(sc->xbd_irq); + xen_intr_signal(sc->xen_intr_handle); } static void @@ -310,7 +308,7 @@ xbd_bio_command(struct xbd_softc *sc) struct xbd_command *cm; struct bio *bp; - if (unlikely(sc->xbd_state != XBD_STATE_CONNECTED)) + if (__predict_false(sc->xbd_state != XBD_STATE_CONNECTED)) return (NULL); bp = xbd_dequeue_bio(sc); @@ -437,7 +435,7 @@ xbd_bio_complete(struct xbd_softc *sc, struct xbd_command *cm) bp = cm->cm_bp; - if (unlikely(cm->cm_status != BLKIF_RSP_OKAY)) { + if (__predict_false(cm->cm_status != BLKIF_RSP_OKAY)) { disk_err(bp, "disk error" , -1, 0); printf(" status: %x\n", cm->cm_status); bp->bio_flags |= BIO_ERROR; @@ -470,7 +468,7 @@ xbd_int(void *xsc) mtx_lock(&sc->xbd_io_lock); - if (unlikely(sc->xbd_state == XBD_STATE_DISCONNECTED)) { + if (__predict_false(sc->xbd_state == XBD_STATE_DISCONNECTED)) { mtx_unlock(&sc->xbd_io_lock); return; } @@ -531,7 +529,7 @@ xbd_int(void *xsc) xbd_startio(sc); - if (unlikely(sc->xbd_state == XBD_STATE_SUSPENDED)) + if (__predict_false(sc->xbd_state == XBD_STATE_SUSPENDED)) wakeup(&sc->xbd_cm_q[XBD_Q_BUSY]); mtx_unlock(&sc->xbd_io_lock); @@ -782,13 +780,12 @@ xbd_alloc_ring(struct xbd_softc *sc) } } - error = bind_listening_port_to_irqhandler( - xenbus_get_otherend_id(sc->xbd_dev), - "xbd", (driver_intr_t *)xbd_int, sc, - INTR_TYPE_BIO | INTR_MPSAFE, &sc->xbd_irq); + error = xen_intr_alloc_and_bind_local_port(sc->xbd_dev, + xenbus_get_otherend_id(sc->xbd_dev), NULL, xbd_int, sc, + INTR_TYPE_BIO | INTR_MPSAFE, &sc->xen_intr_handle); if (error) { xenbus_dev_fatal(sc->xbd_dev, error, - "bind_evtchn_to_irqhandler failed"); + "xen_intr_alloc_and_bind_local_port failed"); return (error); } @@ -1042,10 +1039,8 @@ xbd_free(struct xbd_softc *sc) xbd_initq_cm(sc, XBD_Q_COMPLETE); } - if (sc->xbd_irq) { - unbind_from_irqhandler(sc->xbd_irq); - sc->xbd_irq = 0; - } + xen_intr_unbind(&sc->xen_intr_handle); + } /*--------------------------- State Change Handlers --------------------------*/ @@ -1277,7 +1272,7 @@ xbd_initialize(struct xbd_softc *sc) } error = xs_printf(XST_NIL, node_path, "event-channel", - "%u", irq_to_evtchn_port(sc->xbd_irq)); + "%u", xen_intr_port(sc->xen_intr_handle)); if (error) { xenbus_dev_fatal(sc->xbd_dev, error, "writing %s/event-channel", diff --git a/sys/dev/xen/blkfront/block.h b/sys/dev/xen/blkfront/block.h index 0f7d6cb..9c803bc 100644 --- a/sys/dev/xen/blkfront/block.h +++ b/sys/dev/xen/blkfront/block.h @@ -179,7 +179,7 @@ struct xbd_softc { uint32_t xbd_max_request_size; grant_ref_t xbd_ring_ref[XBD_MAX_RING_PAGES]; blkif_front_ring_t xbd_ring; - unsigned int xbd_irq; + xen_intr_handle_t xen_intr_handle; struct gnttab_free_callback xbd_callback; xbd_cm_q_t xbd_cm_q[XBD_Q_COUNT]; bus_dma_tag_t xbd_io_dmat; diff --git a/sys/dev/xen/console/console.c b/sys/dev/xen/console/console.c index 6281bf2..65a0e7d 100644 --- a/sys/dev/xen/console/console.c +++ b/sys/dev/xen/console/console.c @@ -15,7 +15,7 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include +#include #include #include #include @@ -71,6 +71,8 @@ static char rbuf[RBUF_SIZE]; static int rc, rp; static unsigned int cnsl_evt_reg; static unsigned int wc, wp; /* write_cons, write_prod */ +xen_intr_handle_t xen_intr_handle; +device_t xencons_dev; #ifdef KDB static int xc_altbrk; @@ -232,6 +234,7 @@ xc_attach(device_t dev) { int error; + xencons_dev = dev; xccons = tty_alloc(&xc_ttydevsw, NULL); tty_makedev(xccons, NULL, "xc%r", 0); @@ -243,15 +246,10 @@ xc_attach(device_t dev) callout_reset(&xc_callout, XC_POLLTIME, xc_timeout, xccons); if (xen_start_info->flags & SIF_INITDOMAIN) { - error = bind_virq_to_irqhandler( - VIRQ_CONSOLE, - 0, - "console", - NULL, - xencons_priv_interrupt, NULL, - INTR_TYPE_TTY, NULL); - - KASSERT(error >= 0, ("can't register console interrupt")); + error = xen_intr_bind_virq(dev, VIRQ_CONSOLE, 0, NULL, + xencons_priv_interrupt, NULL, + INTR_TYPE_TTY, &xen_intr_handle); + KASSERT(error >= 0, ("can't register console interrupt")); } /* register handler to flush console on shutdown */ diff --git a/sys/dev/xen/console/xencons_ring.c b/sys/dev/xen/console/xencons_ring.c index 077d286..3701551 100644 --- a/sys/dev/xen/console/xencons_ring.c +++ b/sys/dev/xen/console/xencons_ring.c @@ -16,7 +16,8 @@ __FBSDID("$FreeBSD$"); #include #include -#include + +#include #include #include #include @@ -30,9 +31,10 @@ __FBSDID("$FreeBSD$"); #include #define console_evtchn console.domU.evtchn -static unsigned int console_irq; +xen_intr_handle_t console_handle; extern char *console_page; extern struct mtx cn_mtx; +extern device_t xencons_dev; static inline struct xencons_interface * xencons_interface(void) @@ -74,7 +76,7 @@ xencons_ring_send(const char *data, unsigned len) wmb(); intf->out_prod = prod; - notify_remote_via_evtchn(xen_start_info->console_evtchn); + xen_intr_signal(console_handle); return sent; @@ -106,7 +108,7 @@ xencons_handle_input(void *unused) intf->in_cons = cons; CN_LOCK(cn_mtx); - notify_remote_via_evtchn(xen_start_info->console_evtchn); + xen_intr_signal(console_handle); xencons_tx(); CN_UNLOCK(cn_mtx); @@ -126,9 +128,9 @@ xencons_ring_init(void) if (!xen_start_info->console_evtchn) return 0; - err = bind_caller_port_to_irqhandler(xen_start_info->console_evtchn, - "xencons", xencons_handle_input, NULL, - INTR_TYPE_MISC | INTR_MPSAFE, &console_irq); + err = xen_intr_bind_local_port(xencons_dev, + xen_start_info->console_evtchn, NULL, xencons_handle_input, NULL, + INTR_TYPE_MISC | INTR_MPSAFE, &console_handle); if (err) { return err; } @@ -146,7 +148,7 @@ xencons_suspend(void) if (!xen_start_info->console_evtchn) return; - unbind_from_irqhandler(console_irq); + xen_intr_unbind(&console_handle); } void diff --git a/sys/dev/xen/control/control.c b/sys/dev/xen/control/control.c index 18f42bb..649f281 100644 --- a/sys/dev/xen/control/control.c +++ b/sys/dev/xen/control/control.c @@ -128,12 +128,13 @@ __FBSDID("$FreeBSD$"); #include #include -#include +#include #include #include #include +#include #include #include #include @@ -144,6 +145,9 @@ __FBSDID("$FreeBSD$"); #include +#include +#include + /*--------------------------- Forward Declarations --------------------------*/ /** Function signature for shutdown event handlers. */ typedef void (xctrl_shutdown_handler_t)(void); @@ -242,6 +246,7 @@ xctrl_suspend() xencons_suspend(); gnttab_suspend(); + intr_suspend(); max_pfn = HYPERVISOR_shared_info->arch.max_pfn; @@ -282,7 +287,7 @@ xctrl_suspend() HYPERVISOR_shared_info->arch.max_pfn = max_pfn; gnttab_resume(); - irq_resume(); + intr_resume(); local_irq_enable(); xencons_resume(); @@ -352,13 +357,11 @@ xctrl_suspend() * Prevent any races with evtchn_interrupt() handler. */ disable_intr(); - irq_suspend(); + intr_suspend(); suspend_cancelled = HYPERVISOR_suspend(0); - if (suspend_cancelled) - irq_resume(); - else - xenpci_resume(); + + intr_resume(); /* * Re-enable interrupts and put the scheduler back to normal. diff --git a/sys/dev/xen/netback/netback.c b/sys/dev/xen/netback/netback.c index 9463bad..8f0286c 100644 --- a/sys/dev/xen/netback/netback.c +++ b/sys/dev/xen/netback/netback.c @@ -79,14 +79,15 @@ __FBSDID("$FreeBSD$"); #include #include -#include -#include -#include +#include +#include #include #include #include +#include + /*--------------------------- Compile-time Tunables --------------------------*/ /*---------------------------------- Macros ----------------------------------*/ @@ -433,8 +434,8 @@ struct xnb_softc { /** Xen device handle.*/ long handle; - /** IRQ mapping for the communication ring event channel. */ - int irq; + /** Handle to the communication ring event channel. */ + xen_intr_handle_t xen_intr_handle; /** * \brief Cached value of the front-end's domain id. @@ -647,10 +648,7 @@ xnb_disconnect(struct xnb_softc *xnb) int error; int i; - if (xnb->irq != 0) { - unbind_from_irqhandler(xnb->irq); - xnb->irq = 0; - } + xen_intr_unbind(xnb->xen_intr_handle); /* * We may still have another thread currently processing requests. We @@ -773,13 +771,13 @@ xnb_connect_comms(struct xnb_softc *xnb) xnb->flags |= XNBF_RING_CONNECTED; - error = - bind_interdomain_evtchn_to_irqhandler(xnb->otherend_id, - xnb->evtchn, - device_get_nameunit(xnb->dev), - xnb_intr, /*arg*/xnb, - INTR_TYPE_BIO | INTR_MPSAFE, - &xnb->irq); + error = xen_intr_bind_remote_port(xnb->dev, + xnb->otherend_id, + xnb->evtchn, + /*filter*/NULL, + xnb_intr, /*arg*/xnb, + INTR_TYPE_BIO | INTR_MPSAFE, + &xnb->xen_intr_handle); if (error != 0) { (void)xnb_disconnect(xnb); xenbus_dev_fatal(xnb->dev, error, "binding event channel"); @@ -1448,7 +1446,7 @@ xnb_intr(void *arg) RING_PUSH_RESPONSES_AND_CHECK_NOTIFY(txb, notify); if (notify != 0) - notify_remote_via_irq(xnb->irq); + xen_intr_signal(xnb->xen_intr_handle); txb->sring->req_event = txb->req_cons + 1; xen_mb(); @@ -2361,7 +2359,7 @@ xnb_start_locked(struct ifnet *ifp) RING_PUSH_RESPONSES_AND_CHECK_NOTIFY(rxb, notify); if ((notify != 0) || (out_of_space != 0)) - notify_remote_via_irq(xnb->irq); + xen_intr_signal(xnb->xen_intr_handle); rxb->sring->req_event = req_prod_local + 1; xen_mb(); } while (rxb->sring->req_prod != req_prod_local) ; diff --git a/sys/dev/xen/netfront/netfront.c b/sys/dev/xen/netfront/netfront.c index 68b3bf9..f9c72e6 100644 --- a/sys/dev/xen/netfront/netfront.c +++ b/sys/dev/xen/netfront/netfront.c @@ -76,17 +76,16 @@ __FBSDID("$FreeBSD$"); #include -#include -#include -#include +#include #include #include -#include #include #include #include #include +#include + #include #include "xenbus_if.h" @@ -257,8 +256,7 @@ struct netfront_info { struct mtx rx_lock; struct mtx sc_lock; - u_int handle; - u_int irq; + xen_intr_handle_t xen_intr_handle; u_int copying_receiver; u_int carrier; u_int maxfrags; @@ -547,7 +545,8 @@ talk_to_backend(device_t dev, struct netfront_info *info) goto abort_transaction; } err = xs_printf(xst, node, - "event-channel", "%u", irq_to_evtchn_port(info->irq)); + "event-channel", "%u", + xen_intr_port(info->xen_intr_handle)); if (err) { message = "writing event-channel"; goto abort_transaction; @@ -609,7 +608,6 @@ setup_device(device_t dev, struct netfront_info *info) info->rx_ring_ref = GRANT_REF_INVALID; info->rx.sring = NULL; info->tx.sring = NULL; - info->irq = 0; txs = (netif_tx_sring_t *)malloc(PAGE_SIZE, M_DEVBUF, M_NOWAIT|M_ZERO); if (!txs) { @@ -636,12 +634,13 @@ setup_device(device_t dev, struct netfront_info *info) if (error) goto fail; - error = bind_listening_port_to_irqhandler(xenbus_get_otherend_id(dev), - "xn", xn_intr, info, INTR_TYPE_NET | INTR_MPSAFE, &info->irq); + error = xen_intr_alloc_and_bind_local_port(dev, + xenbus_get_otherend_id(dev), /*filter*/NULL, xn_intr, info, + INTR_TYPE_NET | INTR_MPSAFE | INTR_ENTROPY, &info->xen_intr_handle); if (error) { xenbus_dev_fatal(dev, error, - "bind_evtchn_to_irqhandler failed"); + "xen_intr_alloc_and_bind_local_port failed"); goto fail; } @@ -806,7 +805,7 @@ network_alloc_rx_buffers(struct netfront_info *sc) req_prod = sc->rx.req_prod_pvt; - if (unlikely(sc->carrier == 0)) + if (__predict_false(sc->carrier == 0)) return; /* @@ -946,7 +945,7 @@ refill: /* Zap PTEs and give away pages in one big multicall. */ (void)HYPERVISOR_multicall(sc->rx_mcl, i+1); - if (unlikely(sc->rx_mcl[i].result != i || + if (__predict_false(sc->rx_mcl[i].result != i || HYPERVISOR_memory_op(XENMEM_decrease_reservation, &reservation) != i)) panic("%s: unable to reduce memory " @@ -961,7 +960,7 @@ refill: push: RING_PUSH_REQUESTS_AND_CHECK_NOTIFY(&sc->rx, notify); if (notify) - notify_remote_via_irq(sc->irq); + xen_intr_signal(sc->xen_intr_handle); } static void @@ -1003,7 +1002,7 @@ xn_rxeof(struct netfront_info *np) err = xennet_get_responses(np, &rinfo, rp, &i, &m, &pages_flipped); - if (unlikely(err)) { + if (__predict_false(err)) { if (m) mbufq_tail(&errq, m); np->stats.rx_errors++; @@ -1151,7 +1150,7 @@ xn_txeof(struct netfront_info *np) */ if (!m->m_next) ifp->if_opackets++; - if (unlikely(gnttab_query_foreign_access( + if (__predict_false(gnttab_query_foreign_access( np->grant_tx_ref[id]) != 0)) { panic("%s: grant id %u still in use by the " "backend", __func__, id); @@ -1249,7 +1248,7 @@ xennet_get_extras(struct netfront_info *np, struct mbuf *m; grant_ref_t ref; - if (unlikely(*cons + 1 == rp)) { + if (__predict_false(*cons + 1 == rp)) { #if 0 if (net_ratelimit()) WPRINTK("Missing extra info\n"); @@ -1261,7 +1260,7 @@ xennet_get_extras(struct netfront_info *np, extra = (struct netif_extra_info *) RING_GET_RESPONSE(&np->rx, ++(*cons)); - if (unlikely(!extra->type || + if (__predict_false(!extra->type || extra->type >= XEN_NETIF_EXTRA_TYPE_MAX)) { #if 0 if (net_ratelimit()) @@ -1317,7 +1316,7 @@ xennet_get_responses(struct netfront_info *np, DPRINTK("rx->status=%hd rx->offset=%hu frags=%u\n", rx->status, rx->offset, frags); #endif - if (unlikely(rx->status < 0 || + if (__predict_false(rx->status < 0 || rx->offset + rx->status > PAGE_SIZE)) { #if 0 @@ -1679,7 +1678,7 @@ xn_start_locked(struct ifnet *ifp) RING_PUSH_REQUESTS_AND_CHECK_NOTIFY(&sc->tx, notify); if (notify) - notify_remote_via_irq(sc->irq); + xen_intr_signal(sc->xen_intr_handle); if (RING_FULL(&sc->tx)) { sc->tx_full = 1; @@ -1961,7 +1960,7 @@ network_connect(struct netfront_info *np) * packets. */ netfront_carrier_on(np); - notify_remote_via_irq(np->irq); + xen_intr_signal(np->xen_intr_handle); XN_TX_LOCK(np); xn_txeof(np); XN_TX_UNLOCK(np); @@ -2050,8 +2049,9 @@ xn_configure_features(struct netfront_info *np) return (err); } -/** Create a network device. - * @param handle device handle +/** + * Create a network device. + * @param dev Newbus device representing this virtual NIC. */ int create_netdev(device_t dev) @@ -2198,10 +2198,7 @@ netif_disconnect_backend(struct netfront_info *info) free_ring(&info->tx_ring_ref, &info->tx.sring); free_ring(&info->rx_ring_ref, &info->rx.sring); - if (info->irq) - unbind_from_irqhandler(info->irq); - - info->irq = 0; + xen_intr_unbind(&info->xen_intr_handle); } static void diff --git a/sys/dev/xen/xenpci/evtchn.c b/sys/dev/xen/xenpci/evtchn.c deleted file mode 100644 index 2d9dd6d..0000000 --- a/sys/dev/xen/xenpci/evtchn.c +++ /dev/null @@ -1,467 +0,0 @@ -/****************************************************************************** - * evtchn.c - * - * A simplified event channel for para-drivers in unmodified linux - * - * Copyright (c) 2002-2005, K A Fraser - * Copyright (c) 2005, Intel Corporation - * - * This file may be distributed separately from the Linux kernel, or - * incorporated into other software packages, subject to the following license: - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this source file (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, modify, - * merge, publish, distribute, sublicense, and/or sell copies of the Software, - * and to permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#include -__FBSDID("$FreeBSD$"); - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -#if defined(__i386__) -#define __ffs(word) (ffs(word) - 1) -#elif defined(__amd64__) -static inline unsigned long __ffs(unsigned long word) -{ - __asm__("bsfq %1,%0" - :"=r" (word) - :"rm" (word)); /* XXXRW: why no "cc"? */ - return word; -} -#else -#error "evtchn: unsupported architecture" -#endif - -#define is_valid_evtchn(x) ((x) != 0) -#define evtchn_from_irq(x) (irq_evtchn[irq].evtchn) - -static struct { - struct mtx lock; - driver_intr_t *handler; - void *arg; - int evtchn; - int close:1; /* close on unbind_from_irqhandler()? */ - int inuse:1; - int in_handler:1; - int mpsafe:1; -} irq_evtchn[256]; -static int evtchn_to_irq[NR_EVENT_CHANNELS] = { - [0 ... NR_EVENT_CHANNELS-1] = -1 }; - -static struct mtx irq_alloc_lock; -static device_t xenpci_device; - -#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) - -static unsigned int -alloc_xen_irq(void) -{ - static int warned; - unsigned int irq; - - mtx_lock(&irq_alloc_lock); - - for (irq = 1; irq < ARRAY_SIZE(irq_evtchn); irq++) { - if (irq_evtchn[irq].inuse) - continue; - irq_evtchn[irq].inuse = 1; - mtx_unlock(&irq_alloc_lock); - return irq; - } - - if (!warned) { - warned = 1; - printf("alloc_xen_irq: No available IRQ to bind to: " - "increase irq_evtchn[] size in evtchn.c.\n"); - } - - mtx_unlock(&irq_alloc_lock); - - return -ENOSPC; -} - -static void -free_xen_irq(int irq) -{ - - mtx_lock(&irq_alloc_lock); - irq_evtchn[irq].inuse = 0; - mtx_unlock(&irq_alloc_lock); -} - -int -irq_to_evtchn_port(int irq) -{ - - return irq_evtchn[irq].evtchn; -} - -void -mask_evtchn(int port) -{ - shared_info_t *s = HYPERVISOR_shared_info; - - synch_set_bit(port, &s->evtchn_mask[0]); -} - -void -unmask_evtchn(int port) -{ - evtchn_unmask_t op = { .port = port }; - - HYPERVISOR_event_channel_op(EVTCHNOP_unmask, &op); -} - -int -bind_listening_port_to_irqhandler(unsigned int remote_domain, - const char *devname, driver_intr_t handler, void *arg, - unsigned long irqflags, unsigned int *irqp) -{ - struct evtchn_alloc_unbound alloc_unbound; - unsigned int irq; - int error; - - irq = alloc_xen_irq(); - if (irq < 0) - return irq; - - mtx_lock(&irq_evtchn[irq].lock); - - alloc_unbound.dom = DOMID_SELF; - alloc_unbound.remote_dom = remote_domain; - error = HYPERVISOR_event_channel_op(EVTCHNOP_alloc_unbound, - &alloc_unbound); - if (error) { - mtx_unlock(&irq_evtchn[irq].lock); - free_xen_irq(irq); - return (-error); - } - - irq_evtchn[irq].handler = handler; - irq_evtchn[irq].arg = arg; - irq_evtchn[irq].evtchn = alloc_unbound.port; - irq_evtchn[irq].close = 1; - irq_evtchn[irq].mpsafe = (irqflags & INTR_MPSAFE) != 0; - - evtchn_to_irq[alloc_unbound.port] = irq; - - unmask_evtchn(alloc_unbound.port); - - mtx_unlock(&irq_evtchn[irq].lock); - - if (irqp) - *irqp = irq; - return (0); -} - -int -bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain, - unsigned int remote_port, const char *devname, driver_intr_t handler, - void *arg, unsigned long irqflags, unsigned int *irqp) -{ - struct evtchn_bind_interdomain bind_interdomain; - unsigned int irq; - int error; - - irq = alloc_xen_irq(); - if (irq < 0) - return irq; - - mtx_lock(&irq_evtchn[irq].lock); - - bind_interdomain.remote_dom = remote_domain; - bind_interdomain.remote_port = remote_port; - error = HYPERVISOR_event_channel_op(EVTCHNOP_bind_interdomain, - &bind_interdomain); - if (error) { - mtx_unlock(&irq_evtchn[irq].lock); - free_xen_irq(irq); - return (-error); - } - - irq_evtchn[irq].handler = handler; - irq_evtchn[irq].arg = arg; - irq_evtchn[irq].evtchn = bind_interdomain.local_port; - irq_evtchn[irq].close = 1; - irq_evtchn[irq].mpsafe = (irqflags & INTR_MPSAFE) != 0; - - evtchn_to_irq[bind_interdomain.local_port] = irq; - - unmask_evtchn(bind_interdomain.local_port); - - mtx_unlock(&irq_evtchn[irq].lock); - - if (irqp) - *irqp = irq; - return (0); -} - - -int -bind_caller_port_to_irqhandler(unsigned int caller_port, - const char *devname, driver_intr_t handler, void *arg, - unsigned long irqflags, unsigned int *irqp) -{ - unsigned int irq; - - irq = alloc_xen_irq(); - if (irq < 0) - return irq; - - mtx_lock(&irq_evtchn[irq].lock); - - irq_evtchn[irq].handler = handler; - irq_evtchn[irq].arg = arg; - irq_evtchn[irq].evtchn = caller_port; - irq_evtchn[irq].close = 0; - irq_evtchn[irq].mpsafe = (irqflags & INTR_MPSAFE) != 0; - - evtchn_to_irq[caller_port] = irq; - - unmask_evtchn(caller_port); - - mtx_unlock(&irq_evtchn[irq].lock); - - if (irqp) - *irqp = irq; - return (0); -} - -void -unbind_from_irqhandler(unsigned int irq) -{ - int evtchn; - - mtx_lock(&irq_evtchn[irq].lock); - - evtchn = evtchn_from_irq(irq); - - if (is_valid_evtchn(evtchn)) { - evtchn_to_irq[evtchn] = -1; - mask_evtchn(evtchn); - if (irq_evtchn[irq].close) { - struct evtchn_close close = { .port = evtchn }; - if (HYPERVISOR_event_channel_op(EVTCHNOP_close, &close)) - panic("EVTCHNOP_close failed"); - } - } - - irq_evtchn[irq].handler = NULL; - irq_evtchn[irq].evtchn = 0; - - mtx_unlock(&irq_evtchn[irq].lock); - - while (irq_evtchn[irq].in_handler) - cpu_relax(); - - free_xen_irq(irq); -} - -void notify_remote_via_irq(int irq) -{ - int evtchn; - - evtchn = evtchn_from_irq(irq); - if (is_valid_evtchn(evtchn)) - notify_remote_via_evtchn(evtchn); -} - -static inline unsigned long active_evtchns(unsigned int cpu, shared_info_t *sh, - unsigned int idx) -{ - return (sh->evtchn_pending[idx] & ~sh->evtchn_mask[idx]); -} - -static void -evtchn_interrupt(void *arg) -{ - unsigned int l1i, l2i, port; - unsigned long masked_l1, masked_l2; - /* XXX: All events are bound to vcpu0 but irq may be redirected. */ - int cpu = 0; /*smp_processor_id();*/ - driver_intr_t *handler; - void *handler_arg; - int irq, handler_mpsafe; - shared_info_t *s = HYPERVISOR_shared_info; - vcpu_info_t *v = &s->vcpu_info[cpu]; - struct pcpu *pc = pcpu_find(cpu); - unsigned long l1, l2; - - v->evtchn_upcall_pending = 0; - -#if 0 -#ifndef CONFIG_X86 /* No need for a barrier -- XCHG is a barrier on x86. */ - /* Clear master flag /before/ clearing selector flag. */ - wmb(); -#endif -#endif - - l1 = atomic_readandclear_long(&v->evtchn_pending_sel); - - l1i = pc->pc_last_processed_l1i; - l2i = pc->pc_last_processed_l2i; - - while (l1 != 0) { - - l1i = (l1i + 1) % LONG_BIT; - masked_l1 = l1 & ((~0UL) << l1i); - - if (masked_l1 == 0) { /* if we masked out all events, wrap around to the beginning */ - l1i = LONG_BIT - 1; - l2i = LONG_BIT - 1; - continue; - } - l1i = __ffs(masked_l1); - - do { - l2 = active_evtchns(cpu, s, l1i); - - l2i = (l2i + 1) % LONG_BIT; - masked_l2 = l2 & ((~0UL) << l2i); - - if (masked_l2 == 0) { /* if we masked out all events, move on */ - l2i = LONG_BIT - 1; - break; - } - l2i = __ffs(masked_l2); - - /* process port */ - port = (l1i * LONG_BIT) + l2i; - synch_clear_bit(port, &s->evtchn_pending[0]); - - irq = evtchn_to_irq[port]; - if (irq < 0) - continue; - - mtx_lock(&irq_evtchn[irq].lock); - handler = irq_evtchn[irq].handler; - handler_arg = irq_evtchn[irq].arg; - handler_mpsafe = irq_evtchn[irq].mpsafe; - if (unlikely(handler == NULL)) { - printf("Xen IRQ%d (port %d) has no handler!\n", - irq, port); - mtx_unlock(&irq_evtchn[irq].lock); - continue; - } - irq_evtchn[irq].in_handler = 1; - mtx_unlock(&irq_evtchn[irq].lock); - - //local_irq_enable(); - if (!handler_mpsafe) - mtx_lock(&Giant); - handler(handler_arg); - if (!handler_mpsafe) - mtx_unlock(&Giant); - //local_irq_disable(); - - mtx_lock(&irq_evtchn[irq].lock); - irq_evtchn[irq].in_handler = 0; - mtx_unlock(&irq_evtchn[irq].lock); - - /* if this is the final port processed, we'll pick up here+1 next time */ - pc->pc_last_processed_l1i = l1i; - pc->pc_last_processed_l2i = l2i; - - } while (l2i != LONG_BIT - 1); - - l2 = active_evtchns(cpu, s, l1i); - if (l2 == 0) /* we handled all ports, so we can clear the selector bit */ - l1 &= ~(1UL << l1i); - } -} - -void -irq_suspend(void) -{ - struct xenpci_softc *scp = device_get_softc(xenpci_device); - - /* - * Take our interrupt handler out of the list of handlers - * that can handle this irq. - */ - if (scp->intr_cookie != NULL) { - if (BUS_TEARDOWN_INTR(device_get_parent(xenpci_device), - xenpci_device, scp->res_irq, scp->intr_cookie) != 0) - printf("intr teardown failed.. continuing\n"); - scp->intr_cookie = NULL; - } -} - -void -irq_resume(void) -{ - struct xenpci_softc *scp = device_get_softc(xenpci_device); - int evtchn, irq; - - for (evtchn = 0; evtchn < NR_EVENT_CHANNELS; evtchn++) { - mask_evtchn(evtchn); - evtchn_to_irq[evtchn] = -1; - } - - for (irq = 0; irq < ARRAY_SIZE(irq_evtchn); irq++) - irq_evtchn[irq].evtchn = 0; - - BUS_SETUP_INTR(device_get_parent(xenpci_device), - xenpci_device, scp->res_irq, INTR_TYPE_MISC, - NULL, evtchn_interrupt, NULL, &scp->intr_cookie); -} - -int -xenpci_irq_init(device_t device, struct xenpci_softc *scp) -{ - int irq, cpu; - int error; - - mtx_init(&irq_alloc_lock, "xen-irq-lock", NULL, MTX_DEF); - - for (irq = 0; irq < ARRAY_SIZE(irq_evtchn); irq++) - mtx_init(&irq_evtchn[irq].lock, "irq-evtchn", NULL, MTX_DEF); - - for (cpu = 0; cpu < mp_ncpus; cpu++) { - pcpu_find(cpu)->pc_last_processed_l1i = LONG_BIT - 1; - pcpu_find(cpu)->pc_last_processed_l2i = LONG_BIT - 1; - } - - error = BUS_SETUP_INTR(device_get_parent(device), device, - scp->res_irq, INTR_MPSAFE|INTR_TYPE_MISC, NULL, evtchn_interrupt, - NULL, &scp->intr_cookie); - if (error) - return (error); - - xenpci_device = device; - - return (0); -} diff --git a/sys/dev/xen/xenpci/xenpci.c b/sys/dev/xen/xenpci/xenpci.c index 2d74676..0b1762d 100644 --- a/sys/dev/xen/xenpci/xenpci.c +++ b/sys/dev/xen/xenpci/xenpci.c @@ -32,40 +32,25 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include -#include -#include #include #include #include #include -#include + +#include #include #include -#include -#include -#include -#include +#include #include #include -#include -#include -#include -#include - #include -/* - * These variables are used by the rest of the kernel to access the - * hypervisor. - */ -char *hypercall_stubs; -shared_info_t *HYPERVISOR_shared_info; -static vm_paddr_t shared_info_pa; +extern void xen_intr_handle_upcall(struct trapframe *trap_frame); + static device_t nexus; /* @@ -73,103 +58,42 @@ static device_t nexus; */ static devclass_t xenpci_devclass; -/* - * Return the CPUID base address for Xen functions. - */ -static uint32_t -xenpci_cpuid_base(void) +static int +xenpci_intr_filter(void *trap_frame) { - uint32_t base, regs[4]; - - for (base = 0x40000000; base < 0x40010000; base += 0x100) { - do_cpuid(base, regs); - if (!memcmp("XenVMMXenVMM", ®s[1], 12) - && (regs[0] - base) >= 2) - return (base); - } - return (0); + xen_intr_handle_upcall(trap_frame); + return (FILTER_HANDLED); } -/* - * Allocate and fill in the hypcall page. - */ static int -xenpci_init_hypercall_stubs(device_t dev, struct xenpci_softc * scp) +xenpci_irq_init(device_t device, struct xenpci_softc *scp) { - uint32_t base, regs[4]; - int i; - - base = xenpci_cpuid_base(); - if (!base) { - device_printf(dev, "Xen platform device but not Xen VMM\n"); - return (EINVAL); - } + int error; - if (bootverbose) { - do_cpuid(base + 1, regs); - device_printf(dev, "Xen version %d.%d.\n", - regs[0] >> 16, regs[0] & 0xffff); - } + error = BUS_SETUP_INTR(device_get_parent(device), device, + scp->res_irq, INTR_MPSAFE|INTR_TYPE_MISC, + xenpci_intr_filter, NULL, /*trap_frame*/NULL, + &scp->intr_cookie); + if (error) + return error; /* - * Find the hypercall pages. + * When using the PCI event delivery callback we cannot assign + * events to specific vCPUs, so all events are delivered to vCPU#0 by + * Xen. Since the PCI interrupt can fire on any CPU by default, we + * need to bind it to vCPU#0 in order to ensure that + * xen_intr_handle_upcall always gets called on vCPU#0. */ - do_cpuid(base + 2, regs); - - hypercall_stubs = malloc(regs[0] * PAGE_SIZE, M_TEMP, M_WAITOK); - - for (i = 0; i < regs[0]; i++) { - wrmsr(regs[1], vtophys(hypercall_stubs + i * PAGE_SIZE) + i); - } + error = BUS_BIND_INTR(device_get_parent(device), device, + scp->res_irq, 0); + if (error) + return error; + xen_hvm_set_callback(device); return (0); } /* - * After a resume, re-initialise the hypercall page. - */ -static void -xenpci_resume_hypercall_stubs(device_t dev, struct xenpci_softc * scp) -{ - uint32_t base, regs[4]; - int i; - - base = xenpci_cpuid_base(); - - do_cpuid(base + 2, regs); - for (i = 0; i < regs[0]; i++) { - wrmsr(regs[1], vtophys(hypercall_stubs + i * PAGE_SIZE) + i); - } -} - -/* - * Tell the hypervisor how to contact us for event channel callbacks. - */ -static void -xenpci_set_callback(device_t dev) -{ - int irq; - uint64_t callback; - struct xen_hvm_param xhp; - - irq = pci_get_irq(dev); - if (irq < 16) { - callback = irq; - } else { - callback = (pci_get_intpin(dev) - 1) & 3; - callback |= pci_get_slot(dev) << 11; - callback |= 1ull << 56; - } - - xhp.domid = DOMID_SELF; - xhp.index = HVM_PARAM_CALLBACK_IRQ; - xhp.value = callback; - if (HYPERVISOR_hvm_op(HVMOP_set_param, &xhp)) - panic("Can't set evtchn callback"); -} - - -/* * Deallocate anything allocated by xenpci_allocate_resources. */ static int @@ -293,35 +217,6 @@ xenpci_deactivate_resource(device_t dev, device_t child, int type, } /* - * Called very early in the resume sequence - reinitialise the various - * bits of Xen machinery including the hypercall page and the shared - * info page. - */ -void -xenpci_resume() -{ - device_t dev = devclass_get_device(xenpci_devclass, 0); - struct xenpci_softc *scp = device_get_softc(dev); - struct xen_add_to_physmap xatp; - - xenpci_resume_hypercall_stubs(dev, scp); - - xatp.domid = DOMID_SELF; - xatp.idx = 0; - xatp.space = XENMAPSPACE_shared_info; - xatp.gpfn = shared_info_pa >> PAGE_SHIFT; - if (HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp)) - panic("HYPERVISOR_memory_op failed"); - - pmap_kenter((vm_offset_t) HYPERVISOR_shared_info, shared_info_pa); - - xenpci_set_callback(dev); - - gnttab_resume(); - irq_resume(); -} - -/* * Probe - just check device ID. */ static int @@ -341,11 +236,9 @@ xenpci_probe(device_t dev) static int xenpci_attach(device_t dev) { - int error; struct xenpci_softc *scp = device_get_softc(dev); - struct xen_add_to_physmap xatp; - vm_offset_t shared_va; devclass_t dc; + int error; /* * Find and record nexus0. Since we are not really on the @@ -365,33 +258,15 @@ xenpci_attach(device_t dev) goto errexit; } - error = xenpci_init_hypercall_stubs(dev, scp); - if (error) { - device_printf(dev, "xenpci_init_hypercall_stubs failed(%d).\n", - error); - goto errexit; - } - - setup_xen_features(); - - xenpci_alloc_space_int(scp, PAGE_SIZE, &shared_info_pa); - - xatp.domid = DOMID_SELF; - xatp.idx = 0; - xatp.space = XENMAPSPACE_shared_info; - xatp.gpfn = shared_info_pa >> PAGE_SHIFT; - if (HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp)) - panic("HYPERVISOR_memory_op failed"); - - shared_va = kva_alloc(PAGE_SIZE); - pmap_kenter(shared_va, shared_info_pa); - HYPERVISOR_shared_info = (void *) shared_va; - /* * Hook the irq up to evtchn */ - xenpci_irq_init(dev, scp); - xenpci_set_callback(dev); + error = xenpci_irq_init(dev, scp); + if (error) { + device_printf(dev, "xenpci_irq_init failed(%d).\n", + error); + goto errexit; + } return (bus_generic_attach(dev)); @@ -431,13 +306,42 @@ xenpci_detach(device_t dev) return (xenpci_deallocate_resources(dev)); } +static int +xenpci_suspend(device_t dev) +{ + struct xenpci_softc *scp = device_get_softc(dev); + device_t parent = device_get_parent(dev); + + if (scp->intr_cookie != NULL) { + if (BUS_TEARDOWN_INTR(parent, dev, scp->res_irq, + scp->intr_cookie) != 0) + printf("intr teardown failed.. continuing\n"); + scp->intr_cookie = NULL; + } + + return (bus_generic_suspend(dev)); +} + +static int +xenpci_resume(device_t dev) +{ + struct xenpci_softc *scp = device_get_softc(dev); + device_t parent = device_get_parent(dev); + + BUS_SETUP_INTR(parent, dev, scp->res_irq, + INTR_MPSAFE|INTR_TYPE_MISC, xenpci_intr_filter, NULL, + /*trap_frame*/NULL, &scp->intr_cookie); + xen_hvm_set_callback(dev); + return (bus_generic_resume(dev)); +} + static device_method_t xenpci_methods[] = { /* Device interface */ DEVMETHOD(device_probe, xenpci_probe), DEVMETHOD(device_attach, xenpci_attach), DEVMETHOD(device_detach, xenpci_detach), - DEVMETHOD(device_suspend, bus_generic_suspend), - DEVMETHOD(device_resume, bus_generic_resume), + DEVMETHOD(device_suspend, xenpci_suspend), + DEVMETHOD(device_resume, xenpci_resume), /* Bus interface */ DEVMETHOD(bus_add_child, bus_generic_add_child), diff --git a/sys/dev/xen/xenpci/xenpcivar.h b/sys/dev/xen/xenpci/xenpcivar.h index a57c080..527a291 100644 --- a/sys/dev/xen/xenpci/xenpcivar.h +++ b/sys/dev/xen/xenpci/xenpcivar.h @@ -22,6 +22,8 @@ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. + * + * $FreeBSD$ */ /* @@ -38,7 +40,4 @@ struct xenpci_softc { vm_paddr_t phys_next; /* next page from mem range */ }; -extern int xenpci_irq_init(device_t device, struct xenpci_softc *scp); extern int xenpci_alloc_space(size_t sz, vm_paddr_t *pa); -extern void xenpci_resume(void); -extern void xen_suspend(void); diff --git a/sys/i386/i386/apic_vector.s b/sys/i386/i386/apic_vector.s index 618436d..adedbc4 100644 --- a/sys/i386/i386/apic_vector.s +++ b/sys/i386/i386/apic_vector.s @@ -138,6 +138,25 @@ IDTVEC(errorint) MEXITCOUNT jmp doreti +#ifdef XENHVM +/* + * Xen event channel upcall interrupt handler. + * Only used when the hypervisor supports direct vector callbacks. + */ + .text + SUPERALIGN_TEXT +IDTVEC(xen_intr_upcall) + PUSH_FRAME + SET_KERNEL_SREGS + cld + FAKE_MCOUNT(TF_EIP(%esp)) + pushl %esp + call xen_intr_handle_upcall + add $4, %esp + MEXITCOUNT + jmp doreti +#endif + #ifdef SMP /* * Global address space TLB shootdown. diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c index 9a710e5..c430316 100644 --- a/sys/i386/i386/machdep.c +++ b/sys/i386/i386/machdep.c @@ -160,9 +160,8 @@ uint32_t arch_i386_xbox_memsize = 0; #ifdef XEN /* XEN includes */ -#include +#include #include -#include #include #include #include @@ -1216,6 +1215,13 @@ cpu_est_clockrate(int cpu_id, uint64_t *rate) #ifdef XEN +static void +idle_block(void) +{ + + HYPERVISOR_sched_op(SCHEDOP_block, 0); +} + void cpu_halt(void) { @@ -1960,6 +1966,9 @@ extern inthand_t #ifdef KDTRACE_HOOKS IDTVEC(dtrace_ret), #endif +#ifdef XENHVM + IDTVEC(xen_intr_upcall), +#endif IDTVEC(lcall_syscall), IDTVEC(int0x80_syscall); #ifdef DDB @@ -2948,6 +2957,10 @@ init386(first) setidt(IDT_DTRACE_RET, &IDTVEC(dtrace_ret), SDT_SYS386TGT, SEL_UPL, GSEL(GCODE_SEL, SEL_KPL)); #endif +#ifdef XENHVM + setidt(IDT_EVTCHN, &IDTVEC(xen_intr_upcall), SDT_SYS386IGT, SEL_UPL, + GSEL(GCODE_SEL, SEL_KPL)); +#endif r_idt.rd_limit = sizeof(idt0) - 1; r_idt.rd_base = (int) idt; diff --git a/sys/i386/i386/mp_machdep.c b/sys/i386/i386/mp_machdep.c index 19e67cf..479168b 100644 --- a/sys/i386/i386/mp_machdep.c +++ b/sys/i386/i386/mp_machdep.c @@ -82,6 +82,10 @@ __FBSDID("$FreeBSD$"); #include #include +#ifdef XENHVM +#include +#endif + #define WARMBOOT_TARGET 0 #define WARMBOOT_OFF (KERNBASE + 0x0467) #define WARMBOOT_SEG (KERNBASE + 0x0469) @@ -747,6 +751,11 @@ init_secondary(void) /* set up SSE registers */ enable_sse(); +#ifdef XENHVM + /* register vcpu_info area */ + xen_hvm_init_cpu(); +#endif + #ifdef PAE /* Enable the PTE no-execute bit. */ if ((amd_feature & AMDID_NX) != 0) { diff --git a/sys/i386/include/apicvar.h b/sys/i386/include/apicvar.h index a0e622e..5d1f522 100644 --- a/sys/i386/include/apicvar.h +++ b/sys/i386/include/apicvar.h @@ -226,6 +226,7 @@ int lapic_set_lvt_triggermode(u_int apic_id, u_int lvt, enum intr_trigger trigger); void lapic_set_tpr(u_int vector); void lapic_setup(int boot); +void xen_intr_handle_upcall(struct trapframe *frame); #endif /* !LOCORE */ #endif /* _MACHINE_APICVAR_H_ */ diff --git a/sys/i386/include/intr_machdep.h b/sys/i386/include/intr_machdep.h index b3dd122..6bbe378 100644 --- a/sys/i386/include/intr_machdep.h +++ b/sys/i386/include/intr_machdep.h @@ -44,12 +44,30 @@ * allocate IDT vectors. * * The first 255 IRQs (0 - 254) are reserved for ISA IRQs and PCI intline IRQs. - * IRQ values beyond 256 are used by MSI. We leave 255 unused to avoid - * confusion since 255 is used in PCI to indicate an invalid IRQ. + * IRQ values from 256 to 767 are used by MSI. When running under the Xen + * Hypervisor, IRQ values from 768 to 4863 are available for binding to + * event channel events. We leave 255 unused to avoid confusion since 255 is + * used in PCI to indicate an invalid IRQ. */ #define NUM_MSI_INTS 512 #define FIRST_MSI_INT 256 -#define NUM_IO_INTS (FIRST_MSI_INT + NUM_MSI_INTS) +#ifdef XENHVM +#include +#define NUM_EVTCHN_INTS NR_EVENT_CHANNELS +#define FIRST_EVTCHN_INT \ + (FIRST_MSI_INT + NUM_MSI_INTS) +#define LAST_EVTCHN_INT \ + (FIRST_EVTCHN_INT + NUM_EVTCHN_INTS - 1) +#elif defined(XEN) +#include +#define NUM_EVTCHN_INTS NR_EVENT_CHANNELS +#define FIRST_EVTCHN_INT 0 +#define LAST_EVTCHN_INT \ + (FIRST_EVTCHN_INT + NUM_EVTCHN_INTS - 1) +#else /* !XEN && !XENHVM */ +#define NUM_EVTCHN_INTS 0 +#endif +#define NUM_IO_INTS (FIRST_MSI_INT + NUM_MSI_INTS + NUM_EVTCHN_INTS) /* * Default base address for MSI messages on x86 platforms. diff --git a/sys/i386/include/pcpu.h b/sys/i386/include/pcpu.h index 3606d12..3a684bf 100644 --- a/sys/i386/include/pcpu.h +++ b/sys/i386/include/pcpu.h @@ -71,21 +71,9 @@ struct shadow_time_info { vm_paddr_t *pc_pdir_shadow; \ uint64_t pc_processed_system_time; \ struct shadow_time_info pc_shadow_time; \ - int pc_resched_irq; \ - int pc_callfunc_irq; \ - int pc_virq_to_irq[NR_VIRQS]; \ - int pc_ipi_to_irq[NR_IPIS]; \ - char __pad[77] + char __pad[189] -#elif defined(XENHVM) - -#define PCPU_XEN_FIELDS \ - ; \ - unsigned int pc_last_processed_l1i; \ - unsigned int pc_last_processed_l2i; \ - char __pad[229] - -#else /* !XEN && !XENHVM */ +#else /* !XEN */ #define PCPU_XEN_FIELDS \ ; \ diff --git a/sys/i386/include/pmap.h b/sys/i386/include/pmap.h index 94b63ca..0303c60 100644 --- a/sys/i386/include/pmap.h +++ b/sys/i386/include/pmap.h @@ -213,7 +213,9 @@ extern pd_entry_t *IdlePTD; /* physical address of "Idle" state directory */ #if defined(XEN) #include -#include + +#include + #include #include diff --git a/sys/i386/include/xen/xen-os.h b/sys/i386/include/xen/xen-os.h index 257202e..e15d668 100644 --- a/sys/i386/include/xen/xen-os.h +++ b/sys/i386/include/xen/xen-os.h @@ -1,52 +1,64 @@ -/****************************************************************************** - * os.h +/***************************************************************************** + * i386/xen/xen-os.h * - * random collection of macros and definition + * Random collection of macros and definition + * + * Copyright (c) 2003, 2004 Keir Fraser (on behalf of the Xen team) + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * $FreeBSD$ */ -#ifndef _XEN_OS_H_ -#define _XEN_OS_H_ -#include +#ifndef _MACHINE_XEN_XEN_OS_H_ +#define _MACHINE_XEN_XEN_OS_H_ #ifdef PAE #define CONFIG_X86_PAE #endif -#ifdef LOCORE -#define __ASSEMBLY__ -#endif - -#if !defined(__XEN_INTERFACE_VERSION__) -#define __XEN_INTERFACE_VERSION__ 0x00030208 -#endif - -#define GRANT_REF_INVALID 0xffffffff - -#include - /* Everything below this point is not included by assembler (.S) files. */ #ifndef __ASSEMBLY__ /* Force a proper event-channel callback from Xen. */ void force_evtchn_callback(void); -#define likely(x) __builtin_expect((x),1) -#define unlikely(x) __builtin_expect((x),0) +/* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */ +static inline void rep_nop(void) +{ + __asm__ __volatile__ ( "rep;nop" : : : "memory" ); +} +#define cpu_relax() rep_nop() -#ifndef vtophys -#include -#include -#include -#endif +#ifndef XENHVM +void xc_printf(const char *fmt, ...); -extern int gdtset; #ifdef SMP +extern int gdtset; + #include /* XXX for pcpu.h */ #include /* XXX for PCPU_GET */ static inline int smp_processor_id(void) { - if (likely(gdtset)) + if (__predict_true(gdtset)) return PCPU_GET(cpuid); return 0; } @@ -55,50 +67,16 @@ smp_processor_id(void) #define smp_processor_id() 0 #endif -#ifndef NULL -#define NULL (void *)0 -#endif - #ifndef PANIC_IF -#define PANIC_IF(exp) if (unlikely(exp)) {printk("panic - %s: %s:%d\n",#exp, __FILE__, __LINE__); panic("%s: %s:%d", #exp, __FILE__, __LINE__);} -#endif - -extern shared_info_t *HYPERVISOR_shared_info; - -/* Somewhere in the middle of the GCC 2.96 development cycle, we implemented - a mechanism by which the user can annotate likely branch directions and - expect the blocks to be reordered appropriately. Define __builtin_expect - to nothing for earlier compilers. */ - -/* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */ -static inline void rep_nop(void) -{ - __asm__ __volatile__ ( "rep;nop" : : : "memory" ); -} -#define cpu_relax() rep_nop() - - -#if __GNUC__ == 2 && __GNUC_MINOR__ < 96 -#define __builtin_expect(x, expected_value) (x) +#define PANIC_IF(exp) if (__predict_false(exp)) {printf("panic - %s: %s:%d\n",#exp, __FILE__, __LINE__); panic("%s: %s:%d", #exp, __FILE__, __LINE__);} #endif -#define per_cpu(var, cpu) (pcpu_find((cpu))->pc_ ## var) - -/* crude memory allocator for memory allocation early in - * boot +/* + * Crude memory allocator for memory allocation early in boot. */ void *bootmem_alloc(unsigned int size); void bootmem_free(void *ptr, unsigned int size); -#include - -void printk(const char *fmt, ...); - -/* some function prototypes */ -void trap_init(void); - -#ifndef XENHVM - /* * STI/CLI equivalents. These basically set and clear the virtual * event_enable flag in the shared_info structure. Note that when @@ -106,7 +84,6 @@ void trap_init(void); * We may therefore call into do_hypervisor_callback() directly. */ - #define __cli() \ do { \ vcpu_info_t *_vcpu; \ @@ -122,7 +99,7 @@ do { \ _vcpu = &HYPERVISOR_shared_info->vcpu_info[smp_processor_id()]; \ _vcpu->evtchn_upcall_mask = 0; \ barrier(); /* unmask then check (avoid races) */ \ - if ( unlikely(_vcpu->evtchn_upcall_pending) ) \ + if (__predict_false(_vcpu->evtchn_upcall_pending)) \ force_evtchn_callback(); \ } while (0) @@ -133,7 +110,7 @@ do { \ _vcpu = &HYPERVISOR_shared_info->vcpu_info[smp_processor_id()]; \ if ((_vcpu->evtchn_upcall_mask = (x)) == 0) { \ barrier(); /* unmask then check (avoid races) */ \ - if ( unlikely(_vcpu->evtchn_upcall_pending) ) \ + if (__predict_false(_vcpu->evtchn_upcall_pending)) \ force_evtchn_callback(); \ } \ } while (0) @@ -168,31 +145,7 @@ do { \ #define spin_lock_irqsave mtx_lock_irqsave #define spin_unlock_irqrestore mtx_unlock_irqrestore -#endif - -#ifndef xen_mb -#define xen_mb() mb() -#endif -#ifndef xen_rmb -#define xen_rmb() rmb() -#endif -#ifndef xen_wmb -#define xen_wmb() wmb() -#endif -#ifdef SMP -#define smp_mb() mb() -#define smp_rmb() rmb() -#define smp_wmb() wmb() -#define smp_read_barrier_depends() read_barrier_depends() -#define set_mb(var, value) do { xchg(&var, value); } while (0) -#else -#define smp_mb() barrier() -#define smp_rmb() barrier() -#define smp_wmb() barrier() -#define smp_read_barrier_depends() do { } while(0) -#define set_mb(var, value) do { var = value; barrier(); } while (0) -#endif - +#endif /* !XENHVM */ /* This is a barrier for the compiler only, NOT the processor! */ #define barrier() __asm__ __volatile__("": : :"memory") @@ -207,8 +160,6 @@ do { \ */ typedef struct { volatile int counter; } atomic_t; - - #define xen_xchg(ptr,v) \ ((__typeof__(*(ptr)))__xchg((unsigned long)(v),(ptr),sizeof(*(ptr)))) struct __xchg_dummy { unsigned long a[100]; }; @@ -335,33 +286,6 @@ static __inline__ void atomic_inc(atomic_t *v) #define rdtscll(val) \ __asm__ __volatile__("rdtsc" : "=A" (val)) - - -/* - * Kernel pointers have redundant information, so we can use a - * scheme where we can return either an error code or a dentry - * pointer with the same return value. - * - * This should be a per-architecture thing, to allow different - * error and pointer decisions. - */ -#define IS_ERR_VALUE(x) unlikely((x) > (unsigned long)-1000L) - -static inline void *ERR_PTR(long error) -{ - return (void *) error; -} - -static inline long PTR_ERR(const void *ptr) -{ - return (long) ptr; -} - -static inline long IS_ERR(const void *ptr) -{ - return IS_ERR_VALUE((unsigned long)ptr); -} - #endif /* !__ASSEMBLY__ */ -#endif /* _OS_H_ */ +#endif /* _MACHINE_XEN_XEN_OS_H_ */ diff --git a/sys/i386/include/xen/xenfunc.h b/sys/i386/include/xen/xenfunc.h index 47f0405..f02ee12 100644 --- a/sys/i386/include/xen/xenfunc.h +++ b/sys/i386/include/xen/xenfunc.h @@ -29,10 +29,14 @@ #ifndef _XEN_XENFUNC_H_ #define _XEN_XENFUNC_H_ -#include +#include #include + +#include + #include #include + #include #define BKPT __asm__("int3"); #define XPQ_CALL_DEPTH 5 diff --git a/sys/i386/include/xen/xenvar.h b/sys/i386/include/xen/xenvar.h index b1a0a4d..2742613 100644 --- a/sys/i386/include/xen/xenvar.h +++ b/sys/i386/include/xen/xenvar.h @@ -37,7 +37,8 @@ #define XPMAP 0x2 extern int xendebug_flags; #ifndef NOXENDEBUG -#define XENPRINTF printk +/* Print directly to the Xen console during debugging. */ +#define XENPRINTF xc_printf #else #define XENPRINTF printf #endif diff --git a/sys/i386/isa/npx.c b/sys/i386/isa/npx.c index 3b86d84..622e5b7 100644 --- a/sys/i386/isa/npx.c +++ b/sys/i386/isa/npx.c @@ -69,7 +69,7 @@ __FBSDID("$FreeBSD$"); #include #ifdef XEN -#include +#include #include #endif diff --git a/sys/i386/xen/clock.c b/sys/i386/xen/clock.c index a10b546..524fa14 100644 --- a/sys/i386/xen/clock.c +++ b/sys/i386/xen/clock.c @@ -84,7 +84,7 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include +#include #include #include #include @@ -133,6 +133,8 @@ static uint64_t processed_system_time; /* stime (ns) at last processing. */ static const u_char daysinmonth[] = {31,28,31,30,31,30,31,31,30,31,30,31}; +int ap_cpu_initclocks(int cpu); + SYSCTL_INT(_machdep, OID_AUTO, independent_wallclock, CTLFLAG_RW, &independent_wallclock, 0, ""); SYSCTL_INT(_machdep, OID_AUTO, xen_disable_rtc_set, @@ -257,9 +259,11 @@ static void __get_time_values_from_xen(void) struct vcpu_time_info *src; struct shadow_time_info *dst; uint32_t pre_version, post_version; + struct pcpu *pc; + pc = pcpu_find(smp_processor_id()); src = &s->vcpu_info[smp_processor_id()].time; - dst = &per_cpu(shadow_time, smp_processor_id()); + dst = &pc->pc_shadow_time; spinlock_enter(); do { @@ -283,9 +287,11 @@ static inline int time_values_up_to_date(int cpu) { struct vcpu_time_info *src; struct shadow_time_info *dst; + struct pcpu *pc; src = &HYPERVISOR_shared_info->vcpu_info[cpu].time; - dst = &per_cpu(shadow_time, cpu); + pc = pcpu_find(cpu); + dst = &pc->pc_shadow_time; rmb(); return (dst->version == src->version); @@ -320,7 +326,8 @@ clkintr(void *arg) { int64_t now; int cpu = smp_processor_id(); - struct shadow_time_info *shadow = &per_cpu(shadow_time, cpu); + struct pcpu *pc = pcpu_find(cpu); + struct shadow_time_info *shadow = &pc->pc_shadow_time; struct xen_et_state *state = DPCPU_PTR(et_state); do { @@ -364,8 +371,10 @@ getit(void) struct shadow_time_info *shadow; uint64_t time; uint32_t local_time_version; + struct pcpu *pc; - shadow = &per_cpu(shadow_time, smp_processor_id()); + pc = pcpu_find(smp_processor_id()); + shadow = &pc->pc_shadow_time; do { local_time_version = shadow->version; @@ -492,12 +501,14 @@ void timer_restore(void) { struct xen_et_state *state = DPCPU_PTR(et_state); + struct pcpu *pc; /* Get timebases for new environment. */ __get_time_values_from_xen(); /* Reset our own concept of passage of system time. */ - processed_system_time = per_cpu(shadow_time, 0).system_timestamp; + pc = pcpu_find(0); + processed_system_time = pc->pc_shadow_time.system_timestamp; state->next = processed_system_time; } @@ -508,10 +519,13 @@ startrtclock() uint64_t __cpu_khz; uint32_t cpu_khz; struct vcpu_time_info *info; + struct pcpu *pc; + + pc = pcpu_find(0); /* initialize xen values */ __get_time_values_from_xen(); - processed_system_time = per_cpu(shadow_time, 0).system_timestamp; + processed_system_time = pc->pc_shadow_time.system_timestamp; __cpu_khz = 1000000ULL << 32; info = &HYPERVISOR_shared_info->vcpu_info[0].time; @@ -594,8 +608,10 @@ domu_resettodr(void) int s; dom0_op_t op; struct shadow_time_info *shadow; + struct pcpu *pc; - shadow = &per_cpu(shadow_time, smp_processor_id()); + pc = pcpu_find(smp_processor_id()); + shadow = &pc->pc_shadow_time; if (xen_disable_rtc_set) return; @@ -773,6 +789,7 @@ xen_et_start(struct eventtimer *et, sbintime_t first, sbintime_t period) struct xen_et_state *state = DPCPU_PTR(et_state); struct shadow_time_info *shadow; int64_t fperiod; + struct pcpu *pc; __get_time_values_from_xen(); @@ -788,7 +805,8 @@ xen_et_start(struct eventtimer *et, sbintime_t first, sbintime_t period) else fperiod = state->period; - shadow = &per_cpu(shadow_time, smp_processor_id()); + pc = pcpu_find(smp_processor_id()); + shadow = &pc->pc_shadow_time; state->next = shadow->system_timestamp + get_nsec_offset(shadow); state->next += fperiod; HYPERVISOR_set_timer_op(state->next + 50000); @@ -811,11 +829,11 @@ xen_et_stop(struct eventtimer *et) void cpu_initclocks(void) { - unsigned int time_irq; + xen_intr_handle_t time_irq; int error; HYPERVISOR_vcpu_op(VCPUOP_stop_periodic_timer, 0, NULL); - error = bind_virq_to_irqhandler(VIRQ_TIMER, 0, "cpu0:timer", + error = xen_intr_bind_virq(root_bus, VIRQ_TIMER, 0, clkintr, NULL, NULL, INTR_TYPE_CLK, &time_irq); if (error) panic("failed to register clock interrupt\n"); @@ -840,13 +858,11 @@ cpu_initclocks(void) int ap_cpu_initclocks(int cpu) { - char buf[MAXCOMLEN + 1]; - unsigned int time_irq; + xen_intr_handle_t time_irq; int error; HYPERVISOR_vcpu_op(VCPUOP_stop_periodic_timer, cpu, NULL); - snprintf(buf, sizeof(buf), "cpu%d:timer", cpu); - error = bind_virq_to_irqhandler(VIRQ_TIMER, cpu, buf, + error = xen_intr_bind_virq(root_bus, VIRQ_TIMER, cpu, clkintr, NULL, NULL, INTR_TYPE_CLK, &time_irq); if (error) panic("failed to register clock interrupt\n"); @@ -859,7 +875,10 @@ xen_get_timecount(struct timecounter *tc) { uint64_t clk; struct shadow_time_info *shadow; - shadow = &per_cpu(shadow_time, smp_processor_id()); + struct pcpu *pc; + + pc = pcpu_find(smp_processor_id()); + shadow = &pc->pc_shadow_time; __get_time_values_from_xen(); @@ -876,13 +895,6 @@ get_system_time(int ticks) return processed_system_time + (ticks * NS_PER_TICK); } -void -idle_block(void) -{ - - HYPERVISOR_sched_op(SCHEDOP_block, 0); -} - int timer_spkr_acquire(void) { diff --git a/sys/i386/xen/exception.s b/sys/i386/xen/exception.s index e965ffd..95f1c0e 100644 --- a/sys/i386/xen/exception.s +++ b/sys/i386/xen/exception.s @@ -168,7 +168,7 @@ call_evtchn_upcall: jb critical_region_fixup 10: pushl %esp - call evtchn_do_upcall + call xen_intr_handle_upcall addl $4,%esp /* diff --git a/sys/i386/xen/mp_machdep.c b/sys/i386/xen/mp_machdep.c index 05531cb..407731a 100644 --- a/sys/i386/xen/mp_machdep.c +++ b/sys/i386/xen/mp_machdep.c @@ -87,7 +87,7 @@ __FBSDID("$FreeBSD$"); -#include +#include #include #include #include @@ -102,9 +102,6 @@ extern struct pcpu __pcpu[]; static int bootAP; static union descriptor *bootAPgdt; -static char resched_name[NR_CPUS][15]; -static char callfunc_name[NR_CPUS][15]; - /* Free these after use */ void *bootstacks[MAXCPU]; @@ -156,6 +153,10 @@ static cpuset_t hyperthreading_cpus_mask; extern void Xhypervisor_callback(void); extern void failsafe_callback(void); extern void pmap_lazyfix_action(void); +extern int ap_cpu_initclocks(int cpu); + +DPCPU_DEFINE(xen_intr_handle_t, ipi_port[NR_IPIS]); +DPCPU_DEFINE(struct vcpu_info *, vcpu_info); struct cpu_group * cpu_topo(void) @@ -461,49 +462,49 @@ cpu_mp_announce(void) } static int -xen_smp_intr_init(unsigned int cpu) +xen_smp_cpu_init(unsigned int cpu) { int rc; - unsigned int irq; - - per_cpu(resched_irq, cpu) = per_cpu(callfunc_irq, cpu) = -1; + xen_intr_handle_t irq_handle; - sprintf(resched_name[cpu], "resched%u", cpu); - rc = bind_ipi_to_irqhandler(RESCHEDULE_VECTOR, - cpu, - resched_name[cpu], - smp_reschedule_interrupt, - INTR_TYPE_TTY, &irq); + DPCPU_ID_SET(cpu, ipi_port[RESCHEDULE_VECTOR], NULL); + DPCPU_ID_SET(cpu, ipi_port[CALL_FUNCTION_VECTOR], NULL); - printf("[XEN] IPI cpu=%d irq=%d vector=RESCHEDULE_VECTOR (%d)\n", - cpu, irq, RESCHEDULE_VECTOR); - - per_cpu(resched_irq, cpu) = irq; - - sprintf(callfunc_name[cpu], "callfunc%u", cpu); - rc = bind_ipi_to_irqhandler(CALL_FUNCTION_VECTOR, - cpu, - callfunc_name[cpu], - smp_call_function_interrupt, - INTR_TYPE_TTY, &irq); + /* + * The PCPU variable pc_device is not initialized on i386 PV, + * so we have to use the root_bus device in order to setup + * the IPIs. + */ + rc = xen_intr_bind_ipi(root_bus, RESCHEDULE_VECTOR, + cpu, smp_reschedule_interrupt, INTR_TYPE_TTY, &irq_handle); if (rc < 0) goto fail; - per_cpu(callfunc_irq, cpu) = irq; + xen_intr_describe(irq_handle, "resched%u", cpu); + DPCPU_ID_SET(cpu, ipi_port[RESCHEDULE_VECTOR], irq_handle); - printf("[XEN] IPI cpu=%d irq=%d vector=CALL_FUNCTION_VECTOR (%d)\n", - cpu, irq, CALL_FUNCTION_VECTOR); + printf("[XEN] IPI cpu=%d port=%d vector=RESCHEDULE_VECTOR (%d)\n", + cpu, xen_intr_port(irq_handle), RESCHEDULE_VECTOR); + + rc = xen_intr_bind_ipi(root_bus, CALL_FUNCTION_VECTOR, + cpu, smp_call_function_interrupt, INTR_TYPE_TTY, &irq_handle); + if (rc < 0) + goto fail; + xen_intr_describe(irq_handle, "callfunc%u", cpu); + DPCPU_ID_SET(cpu, ipi_port[CALL_FUNCTION_VECTOR], irq_handle); + + printf("[XEN] IPI cpu=%d port=%d vector=CALL_FUNCTION_VECTOR (%d)\n", + cpu, xen_intr_port(irq_handle), CALL_FUNCTION_VECTOR); - if ((cpu != 0) && ((rc = ap_cpu_initclocks(cpu)) != 0)) goto fail; return 0; fail: - if (per_cpu(resched_irq, cpu) >= 0) - unbind_from_irqhandler(per_cpu(resched_irq, cpu)); - if (per_cpu(callfunc_irq, cpu) >= 0) - unbind_from_irqhandler(per_cpu(callfunc_irq, cpu)); + xen_intr_unbind(DPCPU_ID_GET(cpu, ipi_port[RESCHEDULE_VECTOR])); + DPCPU_ID_SET(cpu, ipi_port[RESCHEDULE_VECTOR], NULL); + xen_intr_unbind(DPCPU_ID_GET(cpu, ipi_port[CALL_FUNCTION_VECTOR])); + DPCPU_ID_SET(cpu, ipi_port[CALL_FUNCTION_VECTOR], NULL); return rc; } @@ -513,7 +514,17 @@ xen_smp_intr_init_cpus(void *unused) int i; for (i = 0; i < mp_ncpus; i++) - xen_smp_intr_init(i); + xen_smp_cpu_init(i); +} + +static void +xen_smp_intr_setup_cpus(void *unused) +{ + int i; + + for (i = 0; i < mp_ncpus; i++) + DPCPU_ID_SET(i, vcpu_info, + &HYPERVISOR_shared_info->vcpu_info[i]); } #define MTOPSIZE (1<<(14 + PAGE_SHIFT)) @@ -959,6 +970,13 @@ start_ap(int apic_id) return 0; /* return FAILURE */ } +static void +ipi_pcpu(int cpu, u_int ipi) +{ + KASSERT((ipi <= NR_IPIS), ("invalid IPI")); + xen_intr_signal(DPCPU_ID_GET(cpu, ipi_port[ipi])); +} + /* * send an IPI to a specific CPU. */ @@ -1246,5 +1264,6 @@ release_aps(void *dummy __unused) ia32_pause(); } SYSINIT(start_aps, SI_SUB_SMP, SI_ORDER_FIRST, release_aps, NULL); -SYSINIT(start_ipis, SI_SUB_INTR, SI_ORDER_ANY, xen_smp_intr_init_cpus, NULL); +SYSINIT(start_ipis, SI_SUB_SMP, SI_ORDER_ANY, xen_smp_intr_init_cpus, NULL); +SYSINIT(start_cpu, SI_SUB_INTR, SI_ORDER_ANY, xen_smp_intr_setup_cpus, NULL); diff --git a/sys/i386/xen/mptable.c b/sys/i386/xen/mptable.c index 0c1efe8..74cb9ab 100644 --- a/sys/i386/xen/mptable.c +++ b/sys/i386/xen/mptable.c @@ -40,7 +40,7 @@ __FBSDID("$FreeBSD$"); #include #include -#include +#include #include #include diff --git a/sys/i386/xen/xen_clock_util.c b/sys/i386/xen/xen_clock_util.c index c14a627..c124515 100644 --- a/sys/i386/xen/xen_clock_util.c +++ b/sys/i386/xen/xen_clock_util.c @@ -39,12 +39,13 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include + #include #include #include #include -#include #include #include #include diff --git a/sys/i386/xen/xen_machdep.c b/sys/i386/xen/xen_machdep.c index 9b5edd3..7049be6 100644 --- a/sys/i386/xen/xen_machdep.c +++ b/sys/i386/xen/xen_machdep.c @@ -47,7 +47,7 @@ __FBSDID("$FreeBSD$"); #include #include -#include +#include #include #include @@ -96,6 +96,8 @@ xen_pfn_t *xen_pfn_to_mfn_frame_list[16]; xen_pfn_t *xen_pfn_to_mfn_frame_list_list; int preemptable, init_first; extern unsigned int avail_space; +int xen_vector_callback_enabled = 0; +enum xen_domain_type xen_domain_type = XEN_PV_DOMAIN; void ni_cli(void); void ni_sti(void); @@ -129,6 +131,12 @@ ni_sti(void) ); } +void +force_evtchn_callback(void) +{ + (void)HYPERVISOR_xen_version(0, NULL); +} + /* * Modify the cmd_line by converting ',' to NULLs so that it is in a format * suitable for the static env vars. @@ -141,7 +149,7 @@ xen_setbootenv(char *cmd_line) /* Skip leading spaces */ for (; *cmd_line == ' '; cmd_line++); - printk("xen_setbootenv(): cmd_line='%s'\n", cmd_line); + xc_printf("xen_setbootenv(): cmd_line='%s'\n", cmd_line); for (cmd_line_next = cmd_line; strsep(&cmd_line_next, ",") != NULL;); return cmd_line; @@ -177,16 +185,16 @@ xen_boothowto(char *envp) return howto; } -#define PRINTK_BUFSIZE 1024 +#define XC_PRINTF_BUFSIZE 1024 void -printk(const char *fmt, ...) +xc_printf(const char *fmt, ...) { __va_list ap; int retval; - static char buf[PRINTK_BUFSIZE]; + static char buf[XC_PRINTF_BUFSIZE]; va_start(ap, fmt); - retval = vsnprintf(buf, PRINTK_BUFSIZE - 1, fmt, ap); + retval = vsnprintf(buf, XC_PRINTF_BUFSIZE - 1, fmt, ap); va_end(ap); buf[retval] = 0; (void)HYPERVISOR_console_write(buf, retval); @@ -239,9 +247,10 @@ xen_dump_queue(void) if (_xpq_idx <= 1) return; - printk("xen_dump_queue(): %u entries\n", _xpq_idx); + xc_printf("xen_dump_queue(): %u entries\n", _xpq_idx); for (i = 0; i < _xpq_idx; i++) { - printk(" val: %llx ptr: %llx\n", XPQ_QUEUE[i].val, XPQ_QUEUE[i].ptr); + xc_printf(" val: %llx ptr: %llx\n", XPQ_QUEUE[i].val, + XPQ_QUEUE[i].ptr); } } #endif @@ -955,9 +964,10 @@ initvalues(start_info_t *startinfo) cur_space = xen_start_info->pt_base + (l3_pages + l2_pages + l1_pages + 1)*PAGE_SIZE; - printk("initvalues(): wooh - availmem=%x,%x\n", avail_space, cur_space); + xc_printf("initvalues(): wooh - availmem=%x,%x\n", avail_space, + cur_space); - printk("KERNBASE=%x,pt_base=%x, VTOPFN(base)=%x, nr_pt_frames=%x\n", + xc_printf("KERNBASE=%x,pt_base=%x, VTOPFN(base)=%x, nr_pt_frames=%x\n", KERNBASE,xen_start_info->pt_base, VTOPFN(xen_start_info->pt_base), xen_start_info->nr_pt_frames); xendebug_flags = 0; /* 0xffffffff; */ @@ -1007,7 +1017,7 @@ initvalues(start_info_t *startinfo) /* Map proc0's KSTACK */ proc0kstack = cur_space; cur_space += (KSTACK_PAGES * PAGE_SIZE); - printk("proc0kstack=%u\n", proc0kstack); + xc_printf("proc0kstack=%u\n", proc0kstack); /* vm86/bios stack */ cur_space += PAGE_SIZE; @@ -1106,18 +1116,18 @@ initvalues(start_info_t *startinfo) shinfo = xen_start_info->shared_info; PT_SET_MA(HYPERVISOR_shared_info, shinfo | PG_KERNEL); - printk("#4\n"); + xc_printf("#4\n"); xen_store_ma = (((vm_paddr_t)xen_start_info->store_mfn) << PAGE_SHIFT); PT_SET_MA(xen_store, xen_store_ma | PG_KERNEL); console_page_ma = (((vm_paddr_t)xen_start_info->console.domU.mfn) << PAGE_SHIFT); PT_SET_MA(console_page, console_page_ma | PG_KERNEL); - printk("#5\n"); + xc_printf("#5\n"); set_iopl.iopl = 1; PANIC_IF(HYPERVISOR_physdev_op(PHYSDEVOP_SET_IOPL, &set_iopl)); - printk("#6\n"); + xc_printf("#6\n"); #if 0 /* add page table for KERNBASE */ xen_queue_pt_update(IdlePTDma + KPTDI*sizeof(vm_paddr_t), @@ -1132,7 +1142,7 @@ initvalues(start_info_t *startinfo) #endif xen_flush_queue(); cur_space += PAGE_SIZE; - printk("#6\n"); + xc_printf("#6\n"); #endif /* 0 */ #ifdef notyet if (xen_start_info->flags & SIF_INITDOMAIN) { @@ -1150,13 +1160,13 @@ initvalues(start_info_t *startinfo) i < (((vm_offset_t)&etext) & ~PAGE_MASK); i += PAGE_SIZE) PT_SET_MA(i, VTOM(i) | PG_V | PG_A); - printk("#7\n"); + xc_printf("#7\n"); physfree = VTOP(cur_space); init_first = physfree >> PAGE_SHIFT; IdlePTD = (pd_entry_t *)VTOP(IdlePTD); IdlePDPT = (pd_entry_t *)VTOP(IdlePDPT); setup_xen_features(); - printk("#8, proc0kstack=%u\n", proc0kstack); + xc_printf("#8, proc0kstack=%u\n", proc0kstack); } @@ -1200,9 +1210,9 @@ HYPERVISOR_multicall(struct multicall_entry * call_list, int nr_calls) /* Check the results of individual hypercalls. */ for (i = 0; i < nr_calls; i++) - if (unlikely(call_list[i].result < 0)) + if (__predict_false(call_list[i].result < 0)) ret++; - if (unlikely(ret > 0)) + if (__predict_false(ret > 0)) panic("%d multicall(s) failed: cpu %d\n", ret, smp_processor_id()); diff --git a/sys/i386/xen/xen_rtc.c b/sys/i386/xen/xen_rtc.c index 8e1e017..8dc3ecb 100644 --- a/sys/i386/xen/xen_rtc.c +++ b/sys/i386/xen/xen_rtc.c @@ -39,15 +39,17 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include +#include +#include +#include + #include #include + #include -#include -#include #include -#include -#include #include #include diff --git a/sys/sys/kernel.h b/sys/sys/kernel.h index 687b42c..68e0858 100644 --- a/sys/sys/kernel.h +++ b/sys/sys/kernel.h @@ -96,6 +96,11 @@ enum sysinit_sub_id { SI_SUB_VM = 0x1000000, /* virtual memory system init*/ SI_SUB_KMEM = 0x1800000, /* kernel memory*/ SI_SUB_KVM_RSRC = 0x1A00000, /* kvm operational limits*/ + SI_SUB_HYPERVISOR = 0x1A40000, /* + * Hypervisor detection and + * virtualization support + * setup. + */ SI_SUB_WITNESS = 0x1A80000, /* witness initialization */ SI_SUB_MTX_POOL_DYNAMIC = 0x1AC0000, /* dynamic mutex pool */ SI_SUB_LOCK = 0x1B00000, /* various locks */ diff --git a/sys/x86/include/segments.h b/sys/x86/include/segments.h index 74066ef..0d6a282 100644 --- a/sys/x86/include/segments.h +++ b/sys/x86/include/segments.h @@ -217,6 +217,7 @@ union descriptor { #define IDT_IO_INTS NRSVIDT /* Base of IDT entries for I/O interrupts. */ #define IDT_SYSCALL 0x80 /* System Call Interrupt Vector */ #define IDT_DTRACE_RET 0x92 /* DTrace pid provider Interrupt Vector */ +#define IDT_EVTCHN 0x93 /* Xen HVM Event Channel Interrupt Vector */ #if defined(__i386__) || defined(__ia64__) /* diff --git a/sys/x86/x86/local_apic.c b/sys/x86/x86/local_apic.c index 42ffa48..ac651cd 100644 --- a/sys/x86/x86/local_apic.c +++ b/sys/x86/x86/local_apic.c @@ -91,6 +91,7 @@ CTASSERT(IPI_STOP < APIC_SPURIOUS_INT); #define IRQ_TIMER (NUM_IO_INTS + 1) #define IRQ_SYSCALL (NUM_IO_INTS + 2) #define IRQ_DTRACE_RET (NUM_IO_INTS + 3) +#define IRQ_EVTCHN (NUM_IO_INTS + 4) /* * Support for local APICs. Local APICs manage interrupts on each @@ -313,6 +314,9 @@ lapic_create(u_int apic_id, int boot_cpu) lapics[apic_id].la_ioint_irqs[IDT_DTRACE_RET - APIC_IO_INTS] = IRQ_DTRACE_RET; #endif +#ifdef XENHVM + lapics[apic_id].la_ioint_irqs[IDT_EVTCHN - APIC_IO_INTS] = IRQ_EVTCHN; +#endif #ifdef SMP @@ -1137,6 +1141,10 @@ DB_SHOW_COMMAND(apic, db_show_apic) if (irq == IRQ_DTRACE_RET) continue; #endif +#ifdef XENHVM + if (irq == IRQ_EVTCHN) + continue; +#endif db_printf("vec 0x%2x -> ", i + APIC_IO_INTS); if (irq == IRQ_TIMER) db_printf("lapic timer\n"); diff --git a/sys/x86/xen/hvm.c b/sys/x86/xen/hvm.c new file mode 100644 index 0000000..0730d94 --- /dev/null +++ b/sys/x86/xen/hvm.c @@ -0,0 +1,256 @@ +/* + * Copyright (c) 2008 Citrix Systems, Inc. + * Copyright (c) 2012 Spectra Logic Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +static MALLOC_DEFINE(M_XENHVM, "xen_hvm", "Xen HVM PV Support"); + +DPCPU_DEFINE(struct vcpu_info, vcpu_local_info); +DPCPU_DEFINE(struct vcpu_info *, vcpu_info); + +/*-------------------------------- Global Data -------------------------------*/ +/** + * If non-zero, the hypervisor has been configured to use a direct + * IDT event callback for interrupt injection. + */ +int xen_vector_callback_enabled; + +/*------------------ Hypervisor Access Shared Memory Regions -----------------*/ +/** Hypercall table accessed via HYPERVISOR_*_op() methods. */ +char *hypercall_stubs; +shared_info_t *HYPERVISOR_shared_info; +enum xen_domain_type xen_domain_type = XEN_NATIVE; + +static uint32_t +xen_hvm_cpuid_base(void) +{ + uint32_t base, regs[4]; + + for (base = 0x40000000; base < 0x40010000; base += 0x100) { + do_cpuid(base, regs); + if (!memcmp("XenVMMXenVMM", ®s[1], 12) + && (regs[0] - base) >= 2) + return (base); + } + return (0); +} + +/* + * Allocate and fill in the hypcall page. + */ +static int +xen_hvm_init_hypercall_stubs(void) +{ + uint32_t base, regs[4]; + int i; + + base = xen_hvm_cpuid_base(); + if (!base) + return (ENXIO); + + if (hypercall_stubs == NULL) { + do_cpuid(base + 1, regs); + printf("XEN: Hypervisor version %d.%d detected.\n", + regs[0] >> 16, regs[0] & 0xffff); + } + + /* + * Find the hypercall pages. + */ + do_cpuid(base + 2, regs); + + if (hypercall_stubs == NULL) { + size_t call_region_size; + + call_region_size = regs[0] * PAGE_SIZE; + hypercall_stubs = malloc(call_region_size, M_XENHVM, M_NOWAIT); + if (hypercall_stubs == NULL) + panic("Unable to allocate Xen hypercall region"); + } + + for (i = 0; i < regs[0]; i++) + wrmsr(regs[1], vtophys(hypercall_stubs + i * PAGE_SIZE) + i); + + return (0); +} + +static void +xen_hvm_init_shared_info_page(void) +{ + struct xen_add_to_physmap xatp; + + if (HYPERVISOR_shared_info == NULL) { + HYPERVISOR_shared_info = malloc(PAGE_SIZE, M_XENHVM, M_NOWAIT); + if (HYPERVISOR_shared_info == NULL) + panic("Unable to allocate Xen shared info page"); + } + + xatp.domid = DOMID_SELF; + xatp.idx = 0; + xatp.space = XENMAPSPACE_shared_info; + xatp.gpfn = vtophys(HYPERVISOR_shared_info) >> PAGE_SHIFT; + if (HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp)) + panic("HYPERVISOR_memory_op failed"); +} + +/* + * Tell the hypervisor how to contact us for event channel callbacks. + */ +void +xen_hvm_set_callback(device_t dev) +{ + struct xen_hvm_param xhp; + int irq; + + xhp.domid = DOMID_SELF; + xhp.index = HVM_PARAM_CALLBACK_IRQ; + if (xen_feature(XENFEAT_hvm_callback_vector)) { + int error; + + xhp.value = HVM_CALLBACK_VECTOR(IDT_EVTCHN); + error = HYPERVISOR_hvm_op(HVMOP_set_param, &xhp); + if (error == 0) { + xen_vector_callback_enabled = 1; + return; + } + printf("Xen HVM callback vector registration failed (%d). " + "Falling back to emulated device interrupt\n", + error); + } + xen_vector_callback_enabled = 0; + if (dev == NULL) { + /* + * Called from early boot or resume. + * xenpci will invoke us again later. + */ + return; + } + + irq = pci_get_irq(dev); + if (irq < 16) { + xhp.value = HVM_CALLBACK_GSI(irq); + } else { + u_int slot; + u_int pin; + + slot = pci_get_slot(dev); + pin = pci_get_intpin(dev) - 1; + xhp.value = HVM_CALLBACK_PCI_INTX(slot, pin); + } + + if (HYPERVISOR_hvm_op(HVMOP_set_param, &xhp)) + panic("Can't set evtchn callback"); +} + +#define XEN_MAGIC_IOPORT 0x10 +enum { + XMI_MAGIC = 0x49d2, + XMI_UNPLUG_IDE_DISKS = 0x01, + XMI_UNPLUG_NICS = 0x02, + XMI_UNPLUG_IDE_EXCEPT_PRI_MASTER = 0x04 +}; + +static void +xen_hvm_disable_emulated_devices(void) +{ + if (inw(XEN_MAGIC_IOPORT) != XMI_MAGIC) + return; + + if (bootverbose) + printf("XEN: Disabling emulated block and network devices\n"); + outw(XEN_MAGIC_IOPORT, XMI_UNPLUG_IDE_DISKS|XMI_UNPLUG_NICS); +} + +void +xen_hvm_suspend(void) +{ +} + +void +xen_hvm_resume(void) +{ + xen_hvm_init_hypercall_stubs(); + xen_hvm_init_shared_info_page(); +} + +static void +xen_hvm_init(void *dummy __unused) +{ + if (xen_hvm_init_hypercall_stubs() != 0) + return; + + xen_domain_type = XEN_HVM_DOMAIN; + setup_xen_features(); + xen_hvm_init_shared_info_page(); + xen_hvm_set_callback(NULL); + xen_hvm_disable_emulated_devices(); +} + +void xen_hvm_init_cpu(void) +{ + int cpu = PCPU_GET(acpi_id); + struct vcpu_info *vcpu_info; + struct vcpu_register_vcpu_info info; + int rc; + + vcpu_info = DPCPU_PTR(vcpu_local_info); + info.mfn = vtophys(vcpu_info) >> PAGE_SHIFT; + info.offset = vtophys(vcpu_info) - trunc_page(vtophys(vcpu_info)); + + rc = HYPERVISOR_vcpu_op(VCPUOP_register_vcpu_info, cpu, &info); + if (rc) { + DPCPU_SET(vcpu_info, &HYPERVISOR_shared_info->vcpu_info[cpu]); + } else { + DPCPU_SET(vcpu_info, vcpu_info); + } +} + +SYSINIT(xen_hvm_init, SI_SUB_HYPERVISOR, SI_ORDER_FIRST, xen_hvm_init, NULL); +SYSINIT(xen_hvm_init_cpu, SI_SUB_INTR, SI_ORDER_FIRST, xen_hvm_init_cpu, NULL); diff --git a/sys/x86/xen/xen_intr.c b/sys/x86/xen/xen_intr.c new file mode 100644 index 0000000..83bf487 --- /dev/null +++ b/sys/x86/xen/xen_intr.c @@ -0,0 +1,1126 @@ +/****************************************************************************** + * xen_intr.c + * + * Xen event and interrupt services for x86 PV and HVM guests. + * + * Copyright (c) 2002-2005, K A Fraser + * Copyright (c) 2005, Intel Corporation + * Copyright (c) 2012, Spectra Logic Corporation + * + * This file may be distributed separately from the Linux kernel, or + * incorporated into other software packages, subject to the following license: + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this source file (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, modify, + * merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include + +static MALLOC_DEFINE(M_XENINTR, "xen_intr", "Xen Interrupt Services"); + +/** + * Per-cpu event channel processing state. + */ +struct xen_intr_pcpu_data { + /** + * The last event channel bitmap section (level one bit) processed. + * This is used to ensure we scan all ports before + * servicing an already servied port again. + */ + u_int last_processed_l1i; + + /** + * The last event channel processed within the event channel + * bitmap being scanned. + */ + u_int last_processed_l2i; + + /** Pointer to this CPU's interrupt statistic counter. */ + u_long *evtchn_intrcnt; + + /** + * A bitmap of ports that can be serviced from this CPU. + * A set bit means interrupt handling is enabled. + */ + u_long evtchn_enabled[sizeof(u_long) * 8]; +}; + +/* + * Start the scan at port 0 by initializing the last scanned + * location as the highest numbered event channel port. + */ +DPCPU_DEFINE(struct xen_intr_pcpu_data, xen_intr_pcpu) = { + .last_processed_l1i = LONG_BIT - 1, + .last_processed_l2i = LONG_BIT - 1 +}; + +DPCPU_DECLARE(struct vcpu_info *, vcpu_info); + +#define is_valid_evtchn(x) ((x) != 0) + +struct xenisrc { + struct intsrc xi_intsrc; + enum evtchn_type xi_type; + int xi_cpu; /* VCPU for delivery. */ + int xi_vector; /* Global isrc vector number. */ + evtchn_port_t xi_port; + int xi_pirq; + int xi_virq; + u_int xi_close:1; /* close on unbind? */ + u_int xi_needs_eoi:1; + u_int xi_shared:1; /* Shared with other domains. */ +}; + +#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) + +static void xen_intr_suspend(struct pic *); +static void xen_intr_resume(struct pic *); +static void xen_intr_enable_source(struct intsrc *isrc); +static void xen_intr_disable_source(struct intsrc *isrc, int eoi); +static void xen_intr_eoi_source(struct intsrc *isrc); +static void xen_intr_enable_intr(struct intsrc *isrc); +static void xen_intr_disable_intr(struct intsrc *isrc); +static int xen_intr_vector(struct intsrc *isrc); +static int xen_intr_source_pending(struct intsrc *isrc); +static int xen_intr_config_intr(struct intsrc *isrc, + enum intr_trigger trig, enum intr_polarity pol); +static int xen_intr_assign_cpu(struct intsrc *isrc, u_int apic_id); + +static void xen_intr_pirq_enable_source(struct intsrc *isrc); +static void xen_intr_pirq_disable_source(struct intsrc *isrc, int eoi); +static void xen_intr_pirq_eoi_source(struct intsrc *isrc); +static void xen_intr_pirq_enable_intr(struct intsrc *isrc); + +/** + * PIC interface for all event channel port types except physical IRQs. + */ +struct pic xen_intr_pic = { + .pic_enable_source = xen_intr_enable_source, + .pic_disable_source = xen_intr_disable_source, + .pic_eoi_source = xen_intr_eoi_source, + .pic_enable_intr = xen_intr_enable_intr, + .pic_disable_intr = xen_intr_disable_intr, + .pic_vector = xen_intr_vector, + .pic_source_pending = xen_intr_source_pending, + .pic_suspend = xen_intr_suspend, + .pic_resume = xen_intr_resume, + .pic_config_intr = xen_intr_config_intr, + .pic_assign_cpu = xen_intr_assign_cpu +}; + +/** + * PIC interface for all event channel representing + * physical interrupt sources. + */ +struct pic xen_intr_pirq_pic = { + .pic_enable_source = xen_intr_pirq_enable_source, + .pic_disable_source = xen_intr_pirq_disable_source, + .pic_eoi_source = xen_intr_pirq_eoi_source, + .pic_enable_intr = xen_intr_pirq_enable_intr, + .pic_disable_intr = xen_intr_disable_intr, + .pic_vector = xen_intr_vector, + .pic_source_pending = xen_intr_source_pending, + .pic_suspend = xen_intr_suspend, + .pic_resume = xen_intr_resume, + .pic_config_intr = xen_intr_config_intr, + .pic_assign_cpu = xen_intr_assign_cpu +}; + +static struct mtx xen_intr_isrc_lock; +static int xen_intr_isrc_count; +static struct xenisrc *xen_intr_port_to_isrc[NR_EVENT_CHANNELS]; + +/*------------------------- Private Functions --------------------------------*/ +/** + * Disable signal delivery for an event channel port on the + * specified CPU. + * + * \param port The event channel port to mask. + * + * This API is used to manage the port<=>CPU binding of event + * channel handlers. + * + * \note This operation does not preclude reception of an event + * for this event channel on another CPU. To mask the + * event channel globally, use evtchn_mask(). + */ +static inline void +evtchn_cpu_mask_port(u_int cpu, evtchn_port_t port) +{ + struct xen_intr_pcpu_data *pcpu; + + pcpu = DPCPU_ID_PTR(cpu, xen_intr_pcpu); + clear_bit(port, pcpu->evtchn_enabled); +} + +/** + * Enable signal delivery for an event channel port on the + * specified CPU. + * + * \param port The event channel port to unmask. + * + * This API is used to manage the port<=>CPU binding of event + * channel handlers. + * + * \note This operation does not guarantee that event delivery + * is enabled for this event channel port. The port must + * also be globally enabled. See evtchn_unmask(). + */ +static inline void +evtchn_cpu_unmask_port(u_int cpu, evtchn_port_t port) +{ + struct xen_intr_pcpu_data *pcpu; + + pcpu = DPCPU_ID_PTR(cpu, xen_intr_pcpu); + set_bit(port, pcpu->evtchn_enabled); +} + +/** + * Allocate and register a per-cpu Xen upcall interrupt counter. + * + * \param cpu The cpu for which to register this interrupt count. + */ +static void +xen_intr_intrcnt_add(u_int cpu) +{ + char buf[MAXCOMLEN + 1]; + struct xen_intr_pcpu_data *pcpu; + + pcpu = DPCPU_ID_PTR(cpu, xen_intr_pcpu); + if (pcpu->evtchn_intrcnt != NULL) + return; + + snprintf(buf, sizeof(buf), "cpu%d:xen", cpu); + intrcnt_add(buf, &pcpu->evtchn_intrcnt); +} + +/** + * Search for an already allocated but currently unused Xen interrupt + * source object. + * + * \param type Restrict the search to interrupt sources of the given + * type. + * + * \return A pointer to a free Xen interrupt source object or NULL. + */ +static struct xenisrc * +xen_intr_find_unused_isrc(enum evtchn_type type) +{ + int isrc_idx; + + KASSERT(mtx_owned(&xen_intr_isrc_lock), ("Evtchn isrc lock not held")); + + for (isrc_idx = 0; isrc_idx < xen_intr_isrc_count; isrc_idx ++) { + struct xenisrc *isrc; + u_int vector; + + vector = FIRST_EVTCHN_INT + isrc_idx; + isrc = (struct xenisrc *)intr_lookup_source(vector); + if (isrc != NULL + && isrc->xi_type == EVTCHN_TYPE_UNBOUND) { + KASSERT(isrc->xi_intsrc.is_handlers == 0, + ("Free evtchn still has handlers")); + isrc->xi_type = type; + return (isrc); + } + } + return (NULL); +} + +/** + * Allocate a Xen interrupt source object. + * + * \param type The type of interrupt source to create. + * + * \return A pointer to a newly allocated Xen interrupt source + * object or NULL. + */ +static struct xenisrc * +xen_intr_alloc_isrc(enum evtchn_type type) +{ + static int warned; + struct xenisrc *isrc; + int vector; + + KASSERT(mtx_owned(&xen_intr_isrc_lock), ("Evtchn alloc lock not held")); + + if (xen_intr_isrc_count > NR_EVENT_CHANNELS) { + if (!warned) { + warned = 1; + printf("xen_intr_alloc: Event channels exhausted.\n"); + } + return (NULL); + } + vector = FIRST_EVTCHN_INT + xen_intr_isrc_count; + xen_intr_isrc_count++; + + mtx_unlock(&xen_intr_isrc_lock); + isrc = malloc(sizeof(*isrc), M_XENINTR, M_WAITOK | M_ZERO); + isrc->xi_intsrc.is_pic = &xen_intr_pic; + isrc->xi_vector = vector; + isrc->xi_type = type; + intr_register_source(&isrc->xi_intsrc); + mtx_lock(&xen_intr_isrc_lock); + + return (isrc); +} + +/** + * Attempt to free an active Xen interrupt source object. + * + * \param isrc The interrupt source object to release. + * + * \returns EBUSY if the source is still in use, otherwise 0. + */ +static int +xen_intr_release_isrc(struct xenisrc *isrc) +{ + + mtx_lock(&xen_intr_isrc_lock); + if (isrc->xi_intsrc.is_handlers != 0) { + mtx_unlock(&xen_intr_isrc_lock); + return (EBUSY); + } + evtchn_mask_port(isrc->xi_port); + evtchn_clear_port(isrc->xi_port); + + /* Rebind port to CPU 0. */ + evtchn_cpu_mask_port(isrc->xi_cpu, isrc->xi_port); + evtchn_cpu_unmask_port(0, isrc->xi_port); + + if (isrc->xi_close != 0) { + struct evtchn_close close = { .port = isrc->xi_port }; + if (HYPERVISOR_event_channel_op(EVTCHNOP_close, &close)) + panic("EVTCHNOP_close failed"); + } + + xen_intr_port_to_isrc[isrc->xi_port] = NULL; + isrc->xi_cpu = 0; + isrc->xi_type = EVTCHN_TYPE_UNBOUND; + isrc->xi_port = 0; + mtx_unlock(&xen_intr_isrc_lock); + return (0); +} + +/** + * Associate an interrupt handler with an already allocated local Xen + * event channel port. + * + * \param isrcp The returned Xen interrupt object associated with + * the specified local port. + * \param local_port The event channel to bind. + * \param type The event channel type of local_port. + * \param intr_owner The device making this bind request. + * \param filter An interrupt filter handler. Specify NULL + * to always dispatch to the ithread handler. + * \param handler An interrupt ithread handler. Optional (can + * specify NULL) if all necessary event actions + * are performed by filter. + * \param arg Argument to present to both filter and handler. + * \param irqflags Interrupt handler flags. See sys/bus.h. + * \param handlep Pointer to an opaque handle used to manage this + * registration. + * + * \returns 0 on success, otherwise an errno. + */ +static int +xen_intr_bind_isrc(struct xenisrc **isrcp, evtchn_port_t local_port, + enum evtchn_type type, device_t intr_owner, driver_filter_t filter, + driver_intr_t handler, void *arg, enum intr_type flags, + xen_intr_handle_t *port_handlep) +{ + struct xenisrc *isrc; + int error; + + *isrcp = NULL; + if (port_handlep == NULL) { + device_printf(intr_owner, + "xen_intr_bind_isrc: Bad event handle\n"); + return (EINVAL); + } + + mtx_lock(&xen_intr_isrc_lock); + isrc = xen_intr_find_unused_isrc(type); + if (isrc == NULL) { + isrc = xen_intr_alloc_isrc(type); + if (isrc == NULL) { + mtx_unlock(&xen_intr_isrc_lock); + return (ENOSPC); + } + } + isrc->xi_port = local_port; + xen_intr_port_to_isrc[local_port] = isrc; + mtx_unlock(&xen_intr_isrc_lock); + + error = intr_add_handler(device_get_nameunit(intr_owner), + isrc->xi_vector, filter, handler, arg, + flags|INTR_EXCL, port_handlep); + if (error != 0) { + device_printf(intr_owner, + "xen_intr_bind_irq: intr_add_handler failed\n"); + xen_intr_release_isrc(isrc); + return (error); + } + *isrcp = isrc; + return (0); +} + +/** + * Lookup a Xen interrupt source object given an interrupt binding handle. + * + * \param handle A handle initialized by a previous call to + * xen_intr_bind_isrc(). + * + * \returns A pointer to the Xen interrupt source object associated + * with the given interrupt handle. NULL if no association + * currently exists. + */ +static struct xenisrc * +xen_intr_isrc(xen_intr_handle_t handle) +{ + struct intr_handler *ih; + + ih = handle; + if (ih == NULL || ih->ih_event == NULL) + return (NULL); + + return (ih->ih_event->ie_source); +} + +/** + * Determine the event channel ports at the given section of the + * event port bitmap which have pending events for the given cpu. + * + * \param pcpu The Xen interrupt pcpu data for the cpu being querried. + * \param sh The Xen shared info area. + * \param idx The index of the section of the event channel bitmap to + * inspect. + * + * \returns A u_long with bits set for every event channel with pending + * events. + */ +static inline u_long +xen_intr_active_ports(struct xen_intr_pcpu_data *pcpu, shared_info_t *sh, + u_int idx) +{ + return (sh->evtchn_pending[idx] + & ~sh->evtchn_mask[idx] + & pcpu->evtchn_enabled[idx]); +} + +/** + * Interrupt handler for processing all Xen event channel events. + * + * \param trap_frame The trap frame context for the current interrupt. + */ +void +xen_intr_handle_upcall(struct trapframe *trap_frame) +{ + u_int l1i, l2i, port, cpu; + u_long masked_l1, masked_l2; + struct xenisrc *isrc; + shared_info_t *s; + vcpu_info_t *v; + struct xen_intr_pcpu_data *pc; + u_long l1, l2; + + /* + * Disable preemption in order to always check and fire events + * on the right vCPU + */ + critical_enter(); + + cpu = PCPU_GET(cpuid); + pc = DPCPU_PTR(xen_intr_pcpu); + s = HYPERVISOR_shared_info; + v = DPCPU_GET(vcpu_info); + + if (xen_hvm_domain() && !xen_vector_callback_enabled) { + KASSERT((cpu == 0), ("Fired PCI event callback on wrong CPU")); + } + + v->evtchn_upcall_pending = 0; + +#if 0 +#ifndef CONFIG_X86 /* No need for a barrier -- XCHG is a barrier on x86. */ + /* Clear master flag /before/ clearing selector flag. */ + wmb(); +#endif +#endif + + l1 = atomic_readandclear_long(&v->evtchn_pending_sel); + + l1i = pc->last_processed_l1i; + l2i = pc->last_processed_l2i; + (*pc->evtchn_intrcnt)++; + + while (l1 != 0) { + + l1i = (l1i + 1) % LONG_BIT; + masked_l1 = l1 & ((~0UL) << l1i); + + if (masked_l1 == 0) { + /* + * if we masked out all events, wrap around + * to the beginning. + */ + l1i = LONG_BIT - 1; + l2i = LONG_BIT - 1; + continue; + } + l1i = ffsl(masked_l1) - 1; + + do { + l2 = xen_intr_active_ports(pc, s, l1i); + + l2i = (l2i + 1) % LONG_BIT; + masked_l2 = l2 & ((~0UL) << l2i); + + if (masked_l2 == 0) { + /* if we masked out all events, move on */ + l2i = LONG_BIT - 1; + break; + } + l2i = ffsl(masked_l2) - 1; + + /* process port */ + port = (l1i * LONG_BIT) + l2i; + synch_clear_bit(port, &s->evtchn_pending[0]); + + isrc = xen_intr_port_to_isrc[port]; + if (__predict_false(isrc == NULL)) + continue; + + /* Make sure we are firing on the right vCPU */ + KASSERT((isrc->xi_cpu == PCPU_GET(cpuid)), + ("Received unexpected event on vCPU#%d, event bound to vCPU#%d", + PCPU_GET(cpuid), isrc->xi_cpu)); + + intr_execute_handlers(&isrc->xi_intsrc, trap_frame); + + /* + * If this is the final port processed, + * we'll pick up here+1 next time. + */ + pc->last_processed_l1i = l1i; + pc->last_processed_l2i = l2i; + + } while (l2i != LONG_BIT - 1); + + l2 = xen_intr_active_ports(pc, s, l1i); + if (l2 == 0) { + /* + * We handled all ports, so we can clear the + * selector bit. + */ + l1 &= ~(1UL << l1i); + } + } + critical_exit(); +} + +static int +xen_intr_init(void *dummy __unused) +{ + struct xen_intr_pcpu_data *pcpu; + int i; + + mtx_init(&xen_intr_isrc_lock, "xen-irq-lock", NULL, MTX_DEF); + + /* + * Register interrupt count manually as we aren't + * guaranteed to see a call to xen_intr_assign_cpu() + * before our first interrupt. Also set the per-cpu + * mask of CPU#0 to enable all, since by default + * all event channels are bound to CPU#0. + */ + CPU_FOREACH(i) { + pcpu = DPCPU_ID_PTR(i, xen_intr_pcpu); + memset(pcpu->evtchn_enabled, i == 0 ? ~0 : 0, + sizeof(pcpu->evtchn_enabled)); + xen_intr_intrcnt_add(i); + } + + intr_register_pic(&xen_intr_pic); + + return (0); +} +SYSINIT(xen_intr_init, SI_SUB_INTR, SI_ORDER_MIDDLE, xen_intr_init, NULL); + +/*--------------------------- Common PIC Functions ---------------------------*/ +/** + * Prepare this PIC for system suspension. + */ +static void +xen_intr_suspend(struct pic *unused) +{ +} + +/** + * Return this PIC to service after being suspended. + */ +static void +xen_intr_resume(struct pic *unused) +{ + u_int port; + + /* + * Mask events for all ports. They will be unmasked after + * drivers have re-registered their handlers. + */ + for (port = 0; port < NR_EVENT_CHANNELS; port++) + evtchn_mask_port(port); +} + +/** + * Disable a Xen interrupt source. + * + * \param isrc The interrupt source to disable. + */ +static void +xen_intr_disable_intr(struct intsrc *base_isrc) +{ + struct xenisrc *isrc = (struct xenisrc *)base_isrc; + + evtchn_mask_port(isrc->xi_port); +} + +/** + * Determine the global interrupt vector number for + * a Xen interrupt source. + * + * \param isrc The interrupt source to query. + * + * \return The vector number corresponding to the given interrupt source. + */ +static int +xen_intr_vector(struct intsrc *base_isrc) +{ + struct xenisrc *isrc = (struct xenisrc *)base_isrc; + + return (isrc->xi_vector); +} + +/** + * Determine whether or not interrupt events are pending on the + * the given interrupt source. + * + * \param isrc The interrupt source to query. + * + * \returns 0 if no events are pending, otherwise non-zero. + */ +static int +xen_intr_source_pending(struct intsrc *isrc) +{ + /* + * EventChannels are edge triggered and never masked. + * There can be no pending events. + */ + return (0); +} + +/** + * Perform configuration of an interrupt source. + * + * \param isrc The interrupt source to configure. + * \param trig Edge or level. + * \param pol Active high or low. + * + * \returns 0 if no events are pending, otherwise non-zero. + */ +static int +xen_intr_config_intr(struct intsrc *isrc, enum intr_trigger trig, + enum intr_polarity pol) +{ + /* Configuration is only possible via the evtchn apis. */ + return (ENODEV); +} + +/** + * Configure CPU affinity for interrupt source event delivery. + * + * \param isrc The interrupt source to configure. + * \param apic_id The apic id of the CPU for handling future events. + * + * \returns 0 if successful, otherwise an errno. + */ +static int +xen_intr_assign_cpu(struct intsrc *base_isrc, u_int apic_id) +{ + struct evtchn_bind_vcpu bind_vcpu; + struct xenisrc *isrc; + u_int to_cpu, acpi_id; + int error; + +#ifdef XENHVM + if (xen_vector_callback_enabled == 0) + return (EOPNOTSUPP); +#endif + + to_cpu = apic_cpuid(apic_id); + acpi_id = pcpu_find(to_cpu)->pc_acpi_id; + xen_intr_intrcnt_add(to_cpu); + + mtx_lock(&xen_intr_isrc_lock); + isrc = (struct xenisrc *)base_isrc; + if (!is_valid_evtchn(isrc->xi_port)) { + mtx_unlock(&xen_intr_isrc_lock); + return (EINVAL); + } + + if ((isrc->xi_type == EVTCHN_TYPE_VIRQ) || + (isrc->xi_type == EVTCHN_TYPE_IPI)) { + /* + * Virtual IRQs are associated with a cpu by + * the Hypervisor at evtchn_bind_virq time, so + * all we need to do is update the per-CPU masks. + */ + evtchn_cpu_mask_port(isrc->xi_cpu, isrc->xi_port); + isrc->xi_cpu = to_cpu; + evtchn_cpu_unmask_port(isrc->xi_cpu, isrc->xi_port); + mtx_unlock(&xen_intr_isrc_lock); + return (0); + } + + bind_vcpu.port = isrc->xi_port; + bind_vcpu.vcpu = acpi_id; + + /* + * Allow interrupts to be fielded on the new VCPU before + * we ask the hypervisor to deliver them there. + */ + evtchn_cpu_unmask_port(to_cpu, isrc->xi_port); + error = HYPERVISOR_event_channel_op(EVTCHNOP_bind_vcpu, &bind_vcpu); + if (isrc->xi_cpu != to_cpu) { + if (error == 0) { + /* Commit to new binding by removing the old one. */ + evtchn_cpu_mask_port(isrc->xi_cpu, isrc->xi_port); + isrc->xi_cpu = to_cpu; + } else { + /* Roll-back to previous binding. */ + evtchn_cpu_mask_port(to_cpu, isrc->xi_port); + } + } + mtx_unlock(&xen_intr_isrc_lock); + return (0); +} + +/*------------------- Virtual Interrupt Source PIC Functions -----------------*/ +/* + * Mask a level triggered interrupt source. + * + * \param isrc The interrupt source to mask (if necessary). + * \param eoi If non-zero, perform any necessary end-of-interrupt + * acknowledgements. + */ +static void +xen_intr_disable_source(struct intsrc *isrc, int eoi) +{ +} + +/* + * Unmask a level triggered interrupt source. + * + * \param isrc The interrupt source to unmask (if necessary). + */ +static void +xen_intr_enable_source(struct intsrc *isrc) +{ +} + +/* + * Perform any necessary end-of-interrupt acknowledgements. + * + * \param isrc The interrupt source to EOI. + */ +static void +xen_intr_eoi_source(struct intsrc *isrc) +{ +} + +/* + * Enable and unmask the interrupt source. + * + * \param isrc The interrupt source to enable. + */ +static void +xen_intr_enable_intr(struct intsrc *base_isrc) +{ + struct xenisrc *isrc = (struct xenisrc *)base_isrc; + + evtchn_unmask_port(isrc->xi_port); +} + +/*------------------ Physical Interrupt Source PIC Functions -----------------*/ +/* + * Mask a level triggered interrupt source. + * + * \param isrc The interrupt source to mask (if necessary). + * \param eoi If non-zero, perform any necessary end-of-interrupt + * acknowledgements. + */ +static void +xen_intr_pirq_disable_source(struct intsrc *base_isrc, int eoi) +{ + struct xenisrc *isrc; + + isrc = (struct xenisrc *)base_isrc; + evtchn_mask_port(isrc->xi_port); +} + +/* + * Unmask a level triggered interrupt source. + * + * \param isrc The interrupt source to unmask (if necessary). + */ +static void +xen_intr_pirq_enable_source(struct intsrc *base_isrc) +{ + struct xenisrc *isrc; + + isrc = (struct xenisrc *)base_isrc; + evtchn_unmask_port(isrc->xi_port); +} + +/* + * Perform any necessary end-of-interrupt acknowledgements. + * + * \param isrc The interrupt source to EOI. + */ +static void +xen_intr_pirq_eoi_source(struct intsrc *base_isrc) +{ + struct xenisrc *isrc; + + /* XXX Use shared page of flags for this. */ + isrc = (struct xenisrc *)base_isrc; + if (isrc->xi_needs_eoi != 0) { + struct physdev_eoi eoi = { .irq = isrc->xi_pirq }; + + (void)HYPERVISOR_physdev_op(PHYSDEVOP_eoi, &eoi); + } +} + +/* + * Enable and unmask the interrupt source. + * + * \param isrc The interrupt source to enable. + */ +static void +xen_intr_pirq_enable_intr(struct intsrc *isrc) +{ +} + +/*--------------------------- Public Functions -------------------------------*/ +/*------- API comments for these methods can be found in xen/xenintr.h -------*/ +int +xen_intr_bind_local_port(device_t dev, evtchn_port_t local_port, + driver_filter_t filter, driver_intr_t handler, void *arg, + enum intr_type flags, xen_intr_handle_t *port_handlep) +{ + struct xenisrc *isrc; + int error; + + error = xen_intr_bind_isrc(&isrc, local_port, EVTCHN_TYPE_PORT, dev, + filter, handler, arg, flags, port_handlep); + if (error != 0) + return (error); + + /* + * The Event Channel API didn't open this port, so it is not + * responsible for closing it automatically on unbind. + */ + isrc->xi_close = 0; + return (0); +} + +int +xen_intr_alloc_and_bind_local_port(device_t dev, u_int remote_domain, + driver_filter_t filter, driver_intr_t handler, void *arg, + enum intr_type flags, xen_intr_handle_t *port_handlep) +{ + struct xenisrc *isrc; + struct evtchn_alloc_unbound alloc_unbound; + int error; + + alloc_unbound.dom = DOMID_SELF; + alloc_unbound.remote_dom = remote_domain; + error = HYPERVISOR_event_channel_op(EVTCHNOP_alloc_unbound, + &alloc_unbound); + if (error != 0) { + /* + * XXX Trap Hypercall error code Linuxisms in + * the HYPERCALL layer. + */ + return (-error); + } + + error = xen_intr_bind_isrc(&isrc, alloc_unbound.port, EVTCHN_TYPE_PORT, + dev, filter, handler, arg, flags, + port_handlep); + if (error != 0) { + evtchn_close_t close = { .port = alloc_unbound.port }; + if (HYPERVISOR_event_channel_op(EVTCHNOP_close, &close)) + panic("EVTCHNOP_close failed"); + return (error); + } + + isrc->xi_close = 1; + return (0); +} + +int +xen_intr_bind_remote_port(device_t dev, u_int remote_domain, + u_int remote_port, driver_filter_t filter, driver_intr_t handler, + void *arg, enum intr_type flags, xen_intr_handle_t *port_handlep) +{ + struct xenisrc *isrc; + struct evtchn_bind_interdomain bind_interdomain; + int error; + + bind_interdomain.remote_dom = remote_domain; + bind_interdomain.remote_port = remote_port; + error = HYPERVISOR_event_channel_op(EVTCHNOP_bind_interdomain, + &bind_interdomain); + if (error != 0) { + /* + * XXX Trap Hypercall error code Linuxisms in + * the HYPERCALL layer. + */ + return (-error); + } + + error = xen_intr_bind_isrc(&isrc, bind_interdomain.local_port, + EVTCHN_TYPE_PORT, dev, filter, handler, + arg, flags, port_handlep); + if (error) { + evtchn_close_t close = { .port = bind_interdomain.local_port }; + if (HYPERVISOR_event_channel_op(EVTCHNOP_close, &close)) + panic("EVTCHNOP_close failed"); + return (error); + } + + /* + * The Event Channel API opened this port, so it is + * responsible for closing it automatically on unbind. + */ + isrc->xi_close = 1; + return (0); +} + +int +xen_intr_bind_virq(device_t dev, u_int virq, u_int cpu, + driver_filter_t filter, driver_intr_t handler, void *arg, + enum intr_type flags, xen_intr_handle_t *port_handlep) +{ + int acpi_id = pcpu_find(cpu)->pc_acpi_id; + struct xenisrc *isrc; + struct evtchn_bind_virq bind_virq = { .virq = virq, .vcpu = acpi_id }; + int error; + + /* Ensure the target CPU is ready to handle evtchn interrupts. */ + xen_intr_intrcnt_add(cpu); + + isrc = NULL; + error = HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq, &bind_virq); + if (error != 0) { + /* + * XXX Trap Hypercall error code Linuxisms in + * the HYPERCALL layer. + */ + return (-error); + } + + error = xen_intr_bind_isrc(&isrc, bind_virq.port, EVTCHN_TYPE_VIRQ, dev, + filter, handler, arg, flags, port_handlep); + if (error == 0) + error = intr_event_bind(isrc->xi_intsrc.is_event, cpu); + + if (error != 0) { + evtchn_close_t close = { .port = bind_virq.port }; + + xen_intr_unbind(*port_handlep); + if (HYPERVISOR_event_channel_op(EVTCHNOP_close, &close)) + panic("EVTCHNOP_close failed"); + return (error); + } + + if (isrc->xi_cpu != cpu) { + /* + * Too early in the boot process for the generic interrupt + * code to perform the binding. Update our event channel + * masks manually so events can't fire on the wrong cpu + * during AP startup. + */ + xen_intr_assign_cpu(&isrc->xi_intsrc, cpu_apic_ids[cpu]); + } + + /* + * The Event Channel API opened this port, so it is + * responsible for closing it automatically on unbind. + */ + isrc->xi_close = 1; + return (0); +} + +int +xen_intr_bind_ipi(device_t dev, u_int ipi, u_int cpu, + driver_filter_t filter, enum intr_type flags, + xen_intr_handle_t *port_handlep) +{ + int acpi_id = pcpu_find(cpu)->pc_acpi_id; + struct xenisrc *isrc; + struct evtchn_bind_ipi bind_ipi = { .vcpu = acpi_id }; + int error; + + /* Ensure the target CPU is ready to handle evtchn interrupts. */ + xen_intr_intrcnt_add(cpu); + + isrc = NULL; + error = HYPERVISOR_event_channel_op(EVTCHNOP_bind_ipi, &bind_ipi); + if (error != 0) { + /* + * XXX Trap Hypercall error code Linuxisms in + * the HYPERCALL layer. + */ + return (-error); + } + + error = xen_intr_bind_isrc(&isrc, bind_ipi.port, EVTCHN_TYPE_IPI, + dev, filter, NULL, NULL, flags, + port_handlep); + if (error == 0) + error = intr_event_bind(isrc->xi_intsrc.is_event, cpu); + + if (error != 0) { + evtchn_close_t close = { .port = bind_ipi.port }; + + xen_intr_unbind(*port_handlep); + if (HYPERVISOR_event_channel_op(EVTCHNOP_close, &close)) + panic("EVTCHNOP_close failed"); + return (error); + } + + if (isrc->xi_cpu != cpu) { + /* + * Too early in the boot process for the generic interrupt + * code to perform the binding. Update our event channel + * masks manually so events can't fire on the wrong cpu + * during AP startup. + */ + xen_intr_assign_cpu(&isrc->xi_intsrc, cpu_apic_ids[cpu]); + } + + /* + * The Event Channel API opened this port, so it is + * responsible for closing it automatically on unbind. + */ + isrc->xi_close = 1; + return (0); +} + +int +xen_intr_describe(xen_intr_handle_t port_handle, const char *fmt, ...) +{ + char descr[MAXCOMLEN + 1]; + struct xenisrc *isrc; + va_list ap; + + isrc = xen_intr_isrc(port_handle); + if (isrc == NULL) + return (EINVAL); + + va_start(ap, fmt); + vsnprintf(descr, sizeof(descr), fmt, ap); + va_end(ap); + return (intr_describe(isrc->xi_vector, port_handle, descr)); +} + +void +xen_intr_unbind(xen_intr_handle_t *port_handlep) +{ + struct intr_handler *handler; + struct xenisrc *isrc; + + handler = *port_handlep; + *port_handlep = NULL; + isrc = xen_intr_isrc(handler); + if (isrc == NULL) + return; + + intr_remove_handler(handler); + xen_intr_release_isrc(isrc); +} + +void +xen_intr_signal(xen_intr_handle_t handle) +{ + struct xenisrc *isrc; + + isrc = xen_intr_isrc(handle); + if (isrc != NULL) { + KASSERT(isrc->xi_type == EVTCHN_TYPE_PORT || + isrc->xi_type == EVTCHN_TYPE_IPI, + ("evtchn_signal on something other than a local port")); + struct evtchn_send send = { .port = isrc->xi_port }; + (void)HYPERVISOR_event_channel_op(EVTCHNOP_send, &send); + } +} + +evtchn_port_t +xen_intr_port(xen_intr_handle_t handle) +{ + struct xenisrc *isrc; + + isrc = xen_intr_isrc(handle); + if (isrc == NULL) + return (0); + + return (isrc->xi_port); +} diff --git a/sys/xen/evtchn.h b/sys/xen/evtchn.h index 721742f..00fa67e 100644 --- a/sys/xen/evtchn.h +++ b/sys/xen/evtchn.h @@ -1,94 +1,87 @@ /****************************************************************************** * evtchn.h * - * Communication via Xen event channels. - * Also definitions for the device that demuxes notifications to userspace. + * Interface to /dev/xen/evtchn. * - * Copyright (c) 2004, K A Fraser + * Copyright (c) 2003-2005, K A Fraser + * + * This file may be distributed separately from the Linux kernel, or + * incorporated into other software packages, subject to the following license: + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this source file (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, modify, + * merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. * * $FreeBSD$ */ -#ifndef __ASM_EVTCHN_H__ -#define __ASM_EVTCHN_H__ -#include -#include -#include -#include +#ifndef __XEN_EVTCHN_H__ +#define __XEN_EVTCHN_H__ /* - * LOW-LEVEL DEFINITIONS + * Bind a fresh port to VIRQ @virq. */ +#define IOCTL_EVTCHN_BIND_VIRQ \ + _IOWR('E', 4, struct ioctl_evtchn_bind_virq) +struct ioctl_evtchn_bind_virq { + unsigned int virq; + unsigned int port; +}; /* - * Unlike notify_remote_via_evtchn(), this is safe to use across - * save/restore. Notifications on a broken connection are silently dropped. + * Bind a fresh port to remote <@remote_domain, @remote_port>. */ -void notify_remote_via_irq(int irq); - - -/* Entry point for notifications into Linux subsystems. */ -void evtchn_do_upcall(struct trapframe *frame); - -/* Entry point for notifications into the userland character device. */ -void evtchn_device_upcall(int port); - -void mask_evtchn(int port); - -void unmask_evtchn(int port); - -#ifdef SMP -void rebind_evtchn_to_cpu(int port, unsigned int cpu); -#else -#define rebind_evtchn_to_cpu(port, cpu) ((void)0) -#endif - -static inline -int test_and_set_evtchn_mask(int port) -{ - shared_info_t *s = HYPERVISOR_shared_info; - return synch_test_and_set_bit(port, s->evtchn_mask); -} - -static inline void -clear_evtchn(int port) -{ - shared_info_t *s = HYPERVISOR_shared_info; - synch_clear_bit(port, &s->evtchn_pending[0]); -} - -static inline void -notify_remote_via_evtchn(int port) -{ - struct evtchn_send send = { .port = port }; - (void)HYPERVISOR_event_channel_op(EVTCHNOP_send, &send); -} +#define IOCTL_EVTCHN_BIND_INTERDOMAIN \ + _IOWR('E', 5, struct ioctl_evtchn_bind_interdomain) +struct ioctl_evtchn_bind_interdomain { + unsigned int remote_domain, remote_port; + unsigned int port; +}; /* - * Use these to access the event channel underlying the IRQ handle returned - * by bind_*_to_irqhandler(). + * Allocate a fresh port for binding to @remote_domain. */ -int irq_to_evtchn_port(int irq); - -void ipi_pcpu(unsigned int cpu, int vector); +#define IOCTL_EVTCHN_BIND_UNBOUND_PORT \ + _IOWR('E', 6, struct ioctl_evtchn_bind_unbound_port) +struct ioctl_evtchn_bind_unbound_port { + unsigned int remote_domain; + unsigned int port; +}; /* - * CHARACTER-DEVICE DEFINITIONS + * Unbind previously allocated @port. */ +#define IOCTL_EVTCHN_UNBIND \ + _IOW('E', 7, struct ioctl_evtchn_unbind) +struct ioctl_evtchn_unbind { + unsigned int port; +}; -#define PORT_NORMAL 0x0000 -#define PORT_EXCEPTION 0x8000 -#define PORTIDX_MASK 0x7fff - -/* /dev/xen/evtchn resides at device number major=10, minor=200 */ -#define EVTCHN_MINOR 200 +/* + * Send event to previously allocated @port. + */ +#define IOCTL_EVTCHN_NOTIFY \ + _IOW('E', 8, struct ioctl_evtchn_notify) +struct ioctl_evtchn_notify { + unsigned int port; +}; -/* /dev/xen/evtchn ioctls: */ -/* EVTCHN_RESET: Clear and reinit the event buffer. Clear error condition. */ -#define EVTCHN_RESET _IO('E', 1) -/* EVTCHN_BIND: Bind to the specified event-channel port. */ -#define EVTCHN_BIND _IO('E', 2) -/* EVTCHN_UNBIND: Unbind from the specified event-channel port. */ -#define EVTCHN_UNBIND _IO('E', 3) +/* Clear and reinitialise the event buffer. Clear error condition. */ +#define IOCTL_EVTCHN_RESET \ + _IO('E', 9) -#endif /* __ASM_EVTCHN_H__ */ +#endif /* __XEN_EVTCHN_H__ */ diff --git a/sys/xen/evtchn/evtchn.c b/sys/xen/evtchn/evtchn.c deleted file mode 100644 index baff9aa..0000000 --- a/sys/xen/evtchn/evtchn.c +++ /dev/null @@ -1,1141 +0,0 @@ -/****************************************************************************** - * evtchn.c - * - * Communication via Xen event channels. - * - * Copyright (c) 2002-2005, K A Fraser - * Copyright (c) 2005-2006 Kip Macy - */ - -#include -__FBSDID("$FreeBSD$"); - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -static inline unsigned long __ffs(unsigned long word) -{ - __asm__("bsfl %1,%0" - :"=r" (word) - :"rm" (word)); - return word; -} - -/* - * irq_mapping_update_lock: in order to allow an interrupt to occur in a critical - * section, to set pcpu->ipending (etc...) properly, we - * must be able to get the icu lock, so it can't be - * under witness. - */ -static struct mtx irq_mapping_update_lock; -MTX_SYSINIT(irq_mapping_update_lock, &irq_mapping_update_lock, "xp", MTX_SPIN); - -static struct xenpic *xp; -struct xenpic_intsrc { - struct intsrc xp_intsrc; - void *xp_cookie; - uint8_t xp_vector; - boolean_t xp_masked; -}; - -struct xenpic { - struct pic *xp_dynirq_pic; - struct pic *xp_pirq_pic; - uint16_t xp_numintr; - struct xenpic_intsrc xp_pins[0]; -}; - -#define TODO printf("%s: not implemented!\n", __func__) - -/* IRQ <-> event-channel mappings. */ -static int evtchn_to_irq[NR_EVENT_CHANNELS]; - -/* Packed IRQ information: binding type, sub-type index, and event channel. */ -static uint32_t irq_info[NR_IRQS]; -/* Binding types. */ -enum { - IRQT_UNBOUND, - IRQT_PIRQ, - IRQT_VIRQ, - IRQT_IPI, - IRQT_LOCAL_PORT, - IRQT_CALLER_PORT, - _IRQT_COUNT - -}; - - -#define _IRQT_BITS 4 -#define _EVTCHN_BITS 12 -#define _INDEX_BITS (32 - _IRQT_BITS - _EVTCHN_BITS) - -/* Constructor for packed IRQ information. */ -static inline uint32_t -mk_irq_info(uint32_t type, uint32_t index, uint32_t evtchn) -{ - - return ((type << (32 - _IRQT_BITS)) | (index << _EVTCHN_BITS) | evtchn); -} - -/* Constructor for packed IRQ information. */ - -/* Convenient shorthand for packed representation of an unbound IRQ. */ -#define IRQ_UNBOUND mk_irq_info(IRQT_UNBOUND, 0, 0) - -/* - * Accessors for packed IRQ information. - */ - -static inline unsigned int evtchn_from_irq(int irq) -{ - return irq_info[irq] & ((1U << _EVTCHN_BITS) - 1); -} - -static inline unsigned int index_from_irq(int irq) -{ - return (irq_info[irq] >> _EVTCHN_BITS) & ((1U << _INDEX_BITS) - 1); -} - -static inline unsigned int type_from_irq(int irq) -{ - return irq_info[irq] >> (32 - _IRQT_BITS); -} - - -/* IRQ <-> VIRQ mapping. */ - -/* IRQ <-> IPI mapping. */ -#ifndef NR_IPIS -#ifdef SMP -#error "NR_IPIS not defined" -#endif -#define NR_IPIS 1 -#endif - -/* Bitmap indicating which PIRQs require Xen to be notified on unmask. */ -static unsigned long pirq_needs_unmask_notify[NR_PIRQS/sizeof(unsigned long)]; - -/* Reference counts for bindings to IRQs. */ -static int irq_bindcount[NR_IRQS]; - -#define VALID_EVTCHN(_chn) ((_chn) != 0) - -#ifdef SMP - -static uint8_t cpu_evtchn[NR_EVENT_CHANNELS]; -static unsigned long cpu_evtchn_mask[XEN_LEGACY_MAX_VCPUS][NR_EVENT_CHANNELS/LONG_BIT]; - -#define active_evtchns(cpu,sh,idx) \ - ((sh)->evtchn_pending[idx] & \ - cpu_evtchn_mask[cpu][idx] & \ - ~(sh)->evtchn_mask[idx]) - -static void bind_evtchn_to_cpu(unsigned int chn, unsigned int cpu) -{ - clear_bit(chn, (unsigned long *)cpu_evtchn_mask[cpu_evtchn[chn]]); - set_bit(chn, (unsigned long *)cpu_evtchn_mask[cpu]); - cpu_evtchn[chn] = cpu; -} - -static void init_evtchn_cpu_bindings(void) -{ - /* By default all event channels notify CPU#0. */ - memset(cpu_evtchn, 0, sizeof(cpu_evtchn)); - memset(cpu_evtchn_mask[0], ~0, sizeof(cpu_evtchn_mask[0])); -} - -#define cpu_from_evtchn(evtchn) (cpu_evtchn[evtchn]) - -#else - -#define active_evtchns(cpu,sh,idx) \ - ((sh)->evtchn_pending[idx] & \ - ~(sh)->evtchn_mask[idx]) -#define bind_evtchn_to_cpu(chn,cpu) ((void)0) -#define init_evtchn_cpu_bindings() ((void)0) -#define cpu_from_evtchn(evtchn) (0) - -#endif - - -/* - * Force a proper event-channel callback from Xen after clearing the - * callback mask. We do this in a very simple manner, by making a call - * down into Xen. The pending flag will be checked by Xen on return. - */ -void force_evtchn_callback(void) -{ - (void)HYPERVISOR_xen_version(0, NULL); -} - -void -evtchn_do_upcall(struct trapframe *frame) -{ - unsigned long l1, l2; - unsigned int l1i, l2i, port; - int irq, cpu; - shared_info_t *s; - vcpu_info_t *vcpu_info; - - cpu = PCPU_GET(cpuid); - s = HYPERVISOR_shared_info; - vcpu_info = &s->vcpu_info[cpu]; - - vcpu_info->evtchn_upcall_pending = 0; - - /* NB. No need for a barrier here -- XCHG is a barrier on x86. */ - l1 = xen_xchg(&vcpu_info->evtchn_pending_sel, 0); - - while (l1 != 0) { - l1i = __ffs(l1); - l1 &= ~(1 << l1i); - - while ((l2 = active_evtchns(cpu, s, l1i)) != 0) { - l2i = __ffs(l2); - - port = (l1i * LONG_BIT) + l2i; - if ((irq = evtchn_to_irq[port]) != -1) { - struct intsrc *isrc = intr_lookup_source(irq); - /* - * ack - */ - mask_evtchn(port); - clear_evtchn(port); - - intr_execute_handlers(isrc, frame); - } else { - evtchn_device_upcall(port); - } - } - } -} - -/* - * Send an IPI from the current CPU to the destination CPU. - */ -void -ipi_pcpu(unsigned int cpu, int vector) -{ - int irq; - - irq = pcpu_find(cpu)->pc_ipi_to_irq[vector]; - - notify_remote_via_irq(irq); -} - -static int -find_unbound_irq(void) -{ - int dynirq, irq; - - for (dynirq = 0; dynirq < NR_IRQS; dynirq++) { - irq = dynirq_to_irq(dynirq); - if (irq_bindcount[irq] == 0) - break; - } - - if (irq == NR_IRQS) - panic("No available IRQ to bind to: increase NR_IRQS!\n"); - - return (irq); -} - -static int -bind_caller_port_to_irq(unsigned int caller_port, int * port) -{ - int irq; - - mtx_lock_spin(&irq_mapping_update_lock); - - if ((irq = evtchn_to_irq[caller_port]) == -1) { - if ((irq = find_unbound_irq()) < 0) - goto out; - - evtchn_to_irq[caller_port] = irq; - irq_info[irq] = mk_irq_info(IRQT_CALLER_PORT, 0, caller_port); - } - - irq_bindcount[irq]++; - *port = caller_port; - - out: - mtx_unlock_spin(&irq_mapping_update_lock); - return irq; -} - -static int -bind_local_port_to_irq(unsigned int local_port, int * port) -{ - int irq; - - mtx_lock_spin(&irq_mapping_update_lock); - - KASSERT(evtchn_to_irq[local_port] == -1, - ("evtchn_to_irq inconsistent")); - - if ((irq = find_unbound_irq()) < 0) { - struct evtchn_close close = { .port = local_port }; - HYPERVISOR_event_channel_op(EVTCHNOP_close, &close); - - goto out; - } - - evtchn_to_irq[local_port] = irq; - irq_info[irq] = mk_irq_info(IRQT_LOCAL_PORT, 0, local_port); - irq_bindcount[irq]++; - *port = local_port; - - out: - mtx_unlock_spin(&irq_mapping_update_lock); - return irq; -} - -static int -bind_listening_port_to_irq(unsigned int remote_domain, int * port) -{ - struct evtchn_alloc_unbound alloc_unbound; - int err; - - alloc_unbound.dom = DOMID_SELF; - alloc_unbound.remote_dom = remote_domain; - - err = HYPERVISOR_event_channel_op(EVTCHNOP_alloc_unbound, - &alloc_unbound); - - return err ? : bind_local_port_to_irq(alloc_unbound.port, port); -} - -static int -bind_interdomain_evtchn_to_irq(unsigned int remote_domain, - unsigned int remote_port, int * port) -{ - struct evtchn_bind_interdomain bind_interdomain; - int err; - - bind_interdomain.remote_dom = remote_domain; - bind_interdomain.remote_port = remote_port; - - err = HYPERVISOR_event_channel_op(EVTCHNOP_bind_interdomain, - &bind_interdomain); - - return err ? : bind_local_port_to_irq(bind_interdomain.local_port, port); -} - -static int -bind_virq_to_irq(unsigned int virq, unsigned int cpu, int * port) -{ - struct evtchn_bind_virq bind_virq; - int evtchn = 0, irq; - - mtx_lock_spin(&irq_mapping_update_lock); - - if ((irq = pcpu_find(cpu)->pc_virq_to_irq[virq]) == -1) { - if ((irq = find_unbound_irq()) < 0) - goto out; - - bind_virq.virq = virq; - bind_virq.vcpu = cpu; - HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq, &bind_virq); - - evtchn = bind_virq.port; - - evtchn_to_irq[evtchn] = irq; - irq_info[irq] = mk_irq_info(IRQT_VIRQ, virq, evtchn); - - pcpu_find(cpu)->pc_virq_to_irq[virq] = irq; - - bind_evtchn_to_cpu(evtchn, cpu); - } - - irq_bindcount[irq]++; - *port = evtchn; -out: - mtx_unlock_spin(&irq_mapping_update_lock); - - return irq; -} - - -static int -bind_ipi_to_irq(unsigned int ipi, unsigned int cpu, int * port) -{ - struct evtchn_bind_ipi bind_ipi; - int irq; - int evtchn = 0; - - mtx_lock_spin(&irq_mapping_update_lock); - - if ((irq = pcpu_find(cpu)->pc_ipi_to_irq[ipi]) == -1) { - if ((irq = find_unbound_irq()) < 0) - goto out; - - bind_ipi.vcpu = cpu; - HYPERVISOR_event_channel_op(EVTCHNOP_bind_ipi, &bind_ipi); - evtchn = bind_ipi.port; - - evtchn_to_irq[evtchn] = irq; - irq_info[irq] = mk_irq_info(IRQT_IPI, ipi, evtchn); - - pcpu_find(cpu)->pc_ipi_to_irq[ipi] = irq; - - bind_evtchn_to_cpu(evtchn, cpu); - } - irq_bindcount[irq]++; - *port = evtchn; -out: - - mtx_unlock_spin(&irq_mapping_update_lock); - - return irq; -} - - -static void -unbind_from_irq(int irq) -{ - struct evtchn_close close; - int evtchn = evtchn_from_irq(irq); - int cpu; - - mtx_lock_spin(&irq_mapping_update_lock); - - if ((--irq_bindcount[irq] == 0) && VALID_EVTCHN(evtchn)) { - close.port = evtchn; - HYPERVISOR_event_channel_op(EVTCHNOP_close, &close); - - switch (type_from_irq(irq)) { - case IRQT_VIRQ: - cpu = cpu_from_evtchn(evtchn); - pcpu_find(cpu)->pc_virq_to_irq[index_from_irq(irq)] = -1; - break; - case IRQT_IPI: - cpu = cpu_from_evtchn(evtchn); - pcpu_find(cpu)->pc_ipi_to_irq[index_from_irq(irq)] = -1; - break; - default: - break; - } - - /* Closed ports are implicitly re-bound to VCPU0. */ - bind_evtchn_to_cpu(evtchn, 0); - - evtchn_to_irq[evtchn] = -1; - irq_info[irq] = IRQ_UNBOUND; - } - - mtx_unlock_spin(&irq_mapping_update_lock); -} - -int -bind_caller_port_to_irqhandler(unsigned int caller_port, - const char *devname, driver_intr_t handler, void *arg, - unsigned long irqflags, unsigned int *irqp) -{ - unsigned int irq; - int port = -1; - int error; - - irq = bind_caller_port_to_irq(caller_port, &port); - intr_register_source(&xp->xp_pins[irq].xp_intsrc); - error = intr_add_handler(devname, irq, NULL, handler, arg, irqflags, - &xp->xp_pins[irq].xp_cookie); - - if (error) { - unbind_from_irq(irq); - return (error); - } - if (port != -1) - unmask_evtchn(port); - - if (irqp) - *irqp = irq; - - return (0); -} - -int -bind_listening_port_to_irqhandler(unsigned int remote_domain, - const char *devname, driver_intr_t handler, void *arg, - unsigned long irqflags, unsigned int *irqp) -{ - unsigned int irq; - int port = -1; - int error; - - irq = bind_listening_port_to_irq(remote_domain, &port); - intr_register_source(&xp->xp_pins[irq].xp_intsrc); - error = intr_add_handler(devname, irq, NULL, handler, arg, irqflags, - &xp->xp_pins[irq].xp_cookie); - if (error) { - unbind_from_irq(irq); - return (error); - } - if (port != -1) - unmask_evtchn(port); - if (irqp) - *irqp = irq; - - return (0); -} - -int -bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain, - unsigned int remote_port, const char *devname, - driver_intr_t handler, void *arg, unsigned long irqflags, - unsigned int *irqp) -{ - unsigned int irq; - int port = -1; - int error; - - irq = bind_interdomain_evtchn_to_irq(remote_domain, remote_port, &port); - intr_register_source(&xp->xp_pins[irq].xp_intsrc); - error = intr_add_handler(devname, irq, NULL, handler, arg, - irqflags, &xp->xp_pins[irq].xp_cookie); - if (error) { - unbind_from_irq(irq); - return (error); - } - if (port != -1) - unmask_evtchn(port); - - if (irqp) - *irqp = irq; - return (0); -} - -int -bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu, - const char *devname, driver_filter_t filter, driver_intr_t handler, - void *arg, unsigned long irqflags, unsigned int *irqp) -{ - unsigned int irq; - int port = -1; - int error; - - irq = bind_virq_to_irq(virq, cpu, &port); - intr_register_source(&xp->xp_pins[irq].xp_intsrc); - error = intr_add_handler(devname, irq, filter, handler, - arg, irqflags, &xp->xp_pins[irq].xp_cookie); - if (error) { - unbind_from_irq(irq); - return (error); - } - if (port != -1) - unmask_evtchn(port); - - if (irqp) - *irqp = irq; - return (0); -} - -int -bind_ipi_to_irqhandler(unsigned int ipi, unsigned int cpu, - const char *devname, driver_filter_t filter, - unsigned long irqflags, unsigned int *irqp) -{ - unsigned int irq; - int port = -1; - int error; - - irq = bind_ipi_to_irq(ipi, cpu, &port); - intr_register_source(&xp->xp_pins[irq].xp_intsrc); - error = intr_add_handler(devname, irq, filter, NULL, - NULL, irqflags, &xp->xp_pins[irq].xp_cookie); - if (error) { - unbind_from_irq(irq); - return (error); - } - if (port != -1) - unmask_evtchn(port); - - if (irqp) - *irqp = irq; - return (0); -} - -void -unbind_from_irqhandler(unsigned int irq) -{ - intr_remove_handler(xp->xp_pins[irq].xp_cookie); - unbind_from_irq(irq); -} - -#if 0 -/* Rebind an evtchn so that it gets delivered to a specific cpu */ -static void -rebind_irq_to_cpu(unsigned irq, unsigned tcpu) -{ - evtchn_op_t op = { .cmd = EVTCHNOP_bind_vcpu }; - int evtchn; - - mtx_lock_spin(&irq_mapping_update_lock); - - evtchn = evtchn_from_irq(irq); - if (!VALID_EVTCHN(evtchn)) { - mtx_unlock_spin(&irq_mapping_update_lock); - return; - } - - /* Send future instances of this interrupt to other vcpu. */ - bind_vcpu.port = evtchn; - bind_vcpu.vcpu = tcpu; - - /* - * If this fails, it usually just indicates that we're dealing with a - * virq or IPI channel, which don't actually need to be rebound. Ignore - * it, but don't do the xenlinux-level rebind in that case. - */ - if (HYPERVISOR_event_channel_op(&op) >= 0) - bind_evtchn_to_cpu(evtchn, tcpu); - - mtx_unlock_spin(&irq_mapping_update_lock); - -} - -static void set_affinity_irq(unsigned irq, cpumask_t dest) -{ - unsigned tcpu = ffs(dest) - 1; - rebind_irq_to_cpu(irq, tcpu); -} -#endif - -/* - * Interface to generic handling in intr_machdep.c - */ - - -/*------------ interrupt handling --------------------------------------*/ -#define TODO printf("%s: not implemented!\n", __func__) - - -static void xenpic_dynirq_enable_source(struct intsrc *isrc); -static void xenpic_dynirq_disable_source(struct intsrc *isrc, int); -static void xenpic_dynirq_eoi_source(struct intsrc *isrc); -static void xenpic_dynirq_enable_intr(struct intsrc *isrc); -static void xenpic_dynirq_disable_intr(struct intsrc *isrc); - -static void xenpic_pirq_enable_source(struct intsrc *isrc); -static void xenpic_pirq_disable_source(struct intsrc *isrc, int); -static void xenpic_pirq_eoi_source(struct intsrc *isrc); -static void xenpic_pirq_enable_intr(struct intsrc *isrc); - - -static int xenpic_vector(struct intsrc *isrc); -static int xenpic_source_pending(struct intsrc *isrc); -static void xenpic_suspend(struct pic* pic); -static void xenpic_resume(struct pic* pic); -static int xenpic_assign_cpu(struct intsrc *, u_int apic_id); - - -struct pic xenpic_dynirq_template = { - .pic_enable_source = xenpic_dynirq_enable_source, - .pic_disable_source = xenpic_dynirq_disable_source, - .pic_eoi_source = xenpic_dynirq_eoi_source, - .pic_enable_intr = xenpic_dynirq_enable_intr, - .pic_disable_intr = xenpic_dynirq_disable_intr, - .pic_vector = xenpic_vector, - .pic_source_pending = xenpic_source_pending, - .pic_suspend = xenpic_suspend, - .pic_resume = xenpic_resume -}; - -struct pic xenpic_pirq_template = { - .pic_enable_source = xenpic_pirq_enable_source, - .pic_disable_source = xenpic_pirq_disable_source, - .pic_eoi_source = xenpic_pirq_eoi_source, - .pic_enable_intr = xenpic_pirq_enable_intr, - .pic_vector = xenpic_vector, - .pic_source_pending = xenpic_source_pending, - .pic_suspend = xenpic_suspend, - .pic_resume = xenpic_resume, - .pic_assign_cpu = xenpic_assign_cpu -}; - - - -void -xenpic_dynirq_enable_source(struct intsrc *isrc) -{ - unsigned int irq; - struct xenpic_intsrc *xp; - - xp = (struct xenpic_intsrc *)isrc; - - mtx_lock_spin(&irq_mapping_update_lock); - if (xp->xp_masked) { - irq = xenpic_vector(isrc); - unmask_evtchn(evtchn_from_irq(irq)); - xp->xp_masked = FALSE; - } - mtx_unlock_spin(&irq_mapping_update_lock); -} - -static void -xenpic_dynirq_disable_source(struct intsrc *isrc, int foo) -{ - unsigned int irq; - struct xenpic_intsrc *xp; - - xp = (struct xenpic_intsrc *)isrc; - - mtx_lock_spin(&irq_mapping_update_lock); - if (!xp->xp_masked) { - irq = xenpic_vector(isrc); - mask_evtchn(evtchn_from_irq(irq)); - xp->xp_masked = TRUE; - } - mtx_unlock_spin(&irq_mapping_update_lock); -} - -static void -xenpic_dynirq_enable_intr(struct intsrc *isrc) -{ - unsigned int irq; - struct xenpic_intsrc *xp; - - xp = (struct xenpic_intsrc *)isrc; - mtx_lock_spin(&irq_mapping_update_lock); - xp->xp_masked = 0; - irq = xenpic_vector(isrc); - unmask_evtchn(evtchn_from_irq(irq)); - mtx_unlock_spin(&irq_mapping_update_lock); -} - -static void -xenpic_dynirq_disable_intr(struct intsrc *isrc) -{ - unsigned int irq; - struct xenpic_intsrc *xp; - - xp = (struct xenpic_intsrc *)isrc; - mtx_lock_spin(&irq_mapping_update_lock); - irq = xenpic_vector(isrc); - mask_evtchn(evtchn_from_irq(irq)); - xp->xp_masked = 1; - mtx_unlock_spin(&irq_mapping_update_lock); -} - -static void -xenpic_dynirq_eoi_source(struct intsrc *isrc) -{ - unsigned int irq; - struct xenpic_intsrc *xp; - - xp = (struct xenpic_intsrc *)isrc; - mtx_lock_spin(&irq_mapping_update_lock); - xp->xp_masked = 0; - irq = xenpic_vector(isrc); - unmask_evtchn(evtchn_from_irq(irq)); - mtx_unlock_spin(&irq_mapping_update_lock); -} - -static int -xenpic_vector(struct intsrc *isrc) -{ - struct xenpic_intsrc *pin; - - pin = (struct xenpic_intsrc *)isrc; - //printf("xenpic_vector(): isrc=%p,vector=%u\n", pin, pin->xp_vector); - - return (pin->xp_vector); -} - -static int -xenpic_source_pending(struct intsrc *isrc) -{ - struct xenpic_intsrc *pin = (struct xenpic_intsrc *)isrc; - - /* XXXEN: TODO */ - printf("xenpic_source_pending(): vector=%x,masked=%x\n", - pin->xp_vector, pin->xp_masked); - -/* notify_remote_via_evtchn(pin->xp_vector); // XXX RS: Is this correct? */ - return 0; -} - -static void -xenpic_suspend(struct pic* pic) -{ - TODO; -} - -static void -xenpic_resume(struct pic* pic) -{ - TODO; -} - -static int -xenpic_assign_cpu(struct intsrc *isrc, u_int apic_id) -{ - TODO; - return (EOPNOTSUPP); -} - -void -notify_remote_via_irq(int irq) -{ - int evtchn = evtchn_from_irq(irq); - - if (VALID_EVTCHN(evtchn)) - notify_remote_via_evtchn(evtchn); - else - panic("invalid evtchn %d", irq); -} - -/* required for support of physical devices */ -static inline void -pirq_unmask_notify(int pirq) -{ - struct physdev_eoi eoi = { .irq = pirq }; - - if (unlikely(test_bit(pirq, &pirq_needs_unmask_notify[0]))) { - (void)HYPERVISOR_physdev_op(PHYSDEVOP_eoi, &eoi); - } -} - -static inline void -pirq_query_unmask(int pirq) -{ - struct physdev_irq_status_query irq_status_query; - - irq_status_query.irq = pirq; - (void)HYPERVISOR_physdev_op(PHYSDEVOP_IRQ_STATUS_QUERY, &irq_status_query); - clear_bit(pirq, &pirq_needs_unmask_notify[0]); - if ( irq_status_query.flags & PHYSDEVOP_IRQ_NEEDS_UNMASK_NOTIFY ) - set_bit(pirq, &pirq_needs_unmask_notify[0]); -} - -/* - * On startup, if there is no action associated with the IRQ then we are - * probing. In this case we should not share with others as it will confuse us. - */ -#define probing_irq(_irq) (intr_lookup_source(irq) == NULL) - -static void -xenpic_pirq_enable_intr(struct intsrc *isrc) -{ - struct evtchn_bind_pirq bind_pirq; - int evtchn; - unsigned int irq; - - mtx_lock_spin(&irq_mapping_update_lock); - irq = xenpic_vector(isrc); - evtchn = evtchn_from_irq(irq); - - if (VALID_EVTCHN(evtchn)) - goto out; - - bind_pirq.pirq = irq; - /* NB. We are happy to share unless we are probing. */ - bind_pirq.flags = probing_irq(irq) ? 0 : BIND_PIRQ__WILL_SHARE; - - if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_pirq, &bind_pirq) != 0) { -#ifndef XEN_PRIVILEGED_GUEST - panic("unexpected pirq call"); -#endif - if (!probing_irq(irq)) /* Some failures are expected when probing. */ - printf("Failed to obtain physical IRQ %d\n", irq); - mtx_unlock_spin(&irq_mapping_update_lock); - return; - } - evtchn = bind_pirq.port; - - pirq_query_unmask(irq_to_pirq(irq)); - - bind_evtchn_to_cpu(evtchn, 0); - evtchn_to_irq[evtchn] = irq; - irq_info[irq] = mk_irq_info(IRQT_PIRQ, irq, evtchn); - - out: - unmask_evtchn(evtchn); - pirq_unmask_notify(irq_to_pirq(irq)); - mtx_unlock_spin(&irq_mapping_update_lock); -} - -static void -xenpic_pirq_enable_source(struct intsrc *isrc) -{ - int evtchn; - unsigned int irq; - - mtx_lock_spin(&irq_mapping_update_lock); - irq = xenpic_vector(isrc); - evtchn = evtchn_from_irq(irq); - - if (!VALID_EVTCHN(evtchn)) - goto done; - - unmask_evtchn(evtchn); - pirq_unmask_notify(irq_to_pirq(irq)); - done: - mtx_unlock_spin(&irq_mapping_update_lock); -} - -static void -xenpic_pirq_disable_source(struct intsrc *isrc, int eoi) -{ - int evtchn; - unsigned int irq; - - mtx_lock_spin(&irq_mapping_update_lock); - irq = xenpic_vector(isrc); - evtchn = evtchn_from_irq(irq); - - if (!VALID_EVTCHN(evtchn)) - goto done; - - mask_evtchn(evtchn); - done: - mtx_unlock_spin(&irq_mapping_update_lock); -} - - -static void -xenpic_pirq_eoi_source(struct intsrc *isrc) -{ - int evtchn; - unsigned int irq; - - mtx_lock_spin(&irq_mapping_update_lock); - irq = xenpic_vector(isrc); - evtchn = evtchn_from_irq(irq); - - if (!VALID_EVTCHN(evtchn)) - goto done; - - unmask_evtchn(evtchn); - pirq_unmask_notify(irq_to_pirq(irq)); - done: - mtx_unlock_spin(&irq_mapping_update_lock); -} - -int -irq_to_evtchn_port(int irq) -{ - return evtchn_from_irq(irq); -} - -void -mask_evtchn(int port) -{ - shared_info_t *s = HYPERVISOR_shared_info; - synch_set_bit(port, &s->evtchn_mask[0]); -} - -void -unmask_evtchn(int port) -{ - shared_info_t *s = HYPERVISOR_shared_info; - unsigned int cpu = PCPU_GET(cpuid); - vcpu_info_t *vcpu_info = &s->vcpu_info[cpu]; - - /* Slow path (hypercall) if this is a non-local port. */ - if (unlikely(cpu != cpu_from_evtchn(port))) { - struct evtchn_unmask unmask = { .port = port }; - (void)HYPERVISOR_event_channel_op(EVTCHNOP_unmask, &unmask); - return; - } - - synch_clear_bit(port, &s->evtchn_mask); - - /* - * The following is basically the equivalent of 'hw_resend_irq'. Just - * like a real IO-APIC we 'lose the interrupt edge' if the channel is - * masked. - */ - if (synch_test_bit(port, &s->evtchn_pending) && - !synch_test_and_set_bit(port / LONG_BIT, - &vcpu_info->evtchn_pending_sel)) { - vcpu_info->evtchn_upcall_pending = 1; - if (!vcpu_info->evtchn_upcall_mask) - force_evtchn_callback(); - } -} - -void irq_resume(void) -{ - evtchn_op_t op; - int cpu, pirq, virq, ipi, irq, evtchn; - - struct evtchn_bind_virq bind_virq; - struct evtchn_bind_ipi bind_ipi; - - init_evtchn_cpu_bindings(); - - /* New event-channel space is not 'live' yet. */ - for (evtchn = 0; evtchn < NR_EVENT_CHANNELS; evtchn++) - mask_evtchn(evtchn); - - /* Check that no PIRQs are still bound. */ - for (pirq = 0; pirq < NR_PIRQS; pirq++) { - KASSERT(irq_info[pirq_to_irq(pirq)] == IRQ_UNBOUND, - ("pirq_to_irq inconsistent")); - } - - /* Secondary CPUs must have no VIRQ or IPI bindings. */ - for (cpu = 1; cpu < XEN_LEGACY_MAX_VCPUS; cpu++) { - for (virq = 0; virq < NR_VIRQS; virq++) { - KASSERT(pcpu_find(cpu)->pc_virq_to_irq[virq] == -1, - ("virq_to_irq inconsistent")); - } - for (ipi = 0; ipi < NR_IPIS; ipi++) { - KASSERT(pcpu_find(cpu)->pc_ipi_to_irq[ipi] == -1, - ("ipi_to_irq inconsistent")); - } - } - - /* No IRQ <-> event-channel mappings. */ - for (irq = 0; irq < NR_IRQS; irq++) - irq_info[irq] &= ~0xFFFF; /* zap event-channel binding */ - for (evtchn = 0; evtchn < NR_EVENT_CHANNELS; evtchn++) - evtchn_to_irq[evtchn] = -1; - - /* Primary CPU: rebind VIRQs automatically. */ - for (virq = 0; virq < NR_VIRQS; virq++) { - if ((irq = pcpu_find(0)->pc_virq_to_irq[virq]) == -1) - continue; - - KASSERT(irq_info[irq] == mk_irq_info(IRQT_VIRQ, virq, 0), - ("irq_info inconsistent")); - - /* Get a new binding from Xen. */ - bind_virq.virq = virq; - bind_virq.vcpu = 0; - HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq, &bind_virq); - evtchn = bind_virq.port; - - /* Record the new mapping. */ - evtchn_to_irq[evtchn] = irq; - irq_info[irq] = mk_irq_info(IRQT_VIRQ, virq, evtchn); - - /* Ready for use. */ - unmask_evtchn(evtchn); - } - - /* Primary CPU: rebind IPIs automatically. */ - for (ipi = 0; ipi < NR_IPIS; ipi++) { - if ((irq = pcpu_find(0)->pc_ipi_to_irq[ipi]) == -1) - continue; - - KASSERT(irq_info[irq] == mk_irq_info(IRQT_IPI, ipi, 0), - ("irq_info inconsistent")); - - /* Get a new binding from Xen. */ - memset(&op, 0, sizeof(op)); - bind_ipi.vcpu = 0; - HYPERVISOR_event_channel_op(EVTCHNOP_bind_ipi, &bind_ipi); - evtchn = bind_ipi.port; - - /* Record the new mapping. */ - evtchn_to_irq[evtchn] = irq; - irq_info[irq] = mk_irq_info(IRQT_IPI, ipi, evtchn); - - /* Ready for use. */ - unmask_evtchn(evtchn); - } -} - -static void -evtchn_init(void *dummy __unused) -{ - int i, cpu; - struct xenpic_intsrc *pin, *tpin; - - - init_evtchn_cpu_bindings(); - - /* No VIRQ or IPI bindings. */ - for (cpu = 0; cpu < mp_ncpus; cpu++) { - for (i = 0; i < NR_VIRQS; i++) - pcpu_find(cpu)->pc_virq_to_irq[i] = -1; - for (i = 0; i < NR_IPIS; i++) - pcpu_find(cpu)->pc_ipi_to_irq[i] = -1; - } - - /* No event-channel -> IRQ mappings. */ - for (i = 0; i < NR_EVENT_CHANNELS; i++) { - evtchn_to_irq[i] = -1; - mask_evtchn(i); /* No event channels are 'live' right now. */ - } - - /* No IRQ -> event-channel mappings. */ - for (i = 0; i < NR_IRQS; i++) - irq_info[i] = IRQ_UNBOUND; - - xp = malloc(sizeof(struct xenpic) + NR_IRQS*sizeof(struct xenpic_intsrc), - M_DEVBUF, M_WAITOK); - - xp->xp_dynirq_pic = &xenpic_dynirq_template; - xp->xp_pirq_pic = &xenpic_pirq_template; - xp->xp_numintr = NR_IRQS; - bzero(xp->xp_pins, sizeof(struct xenpic_intsrc) * NR_IRQS); - - - /* We need to register our PIC's beforehand */ - if (intr_register_pic(&xenpic_pirq_template)) - panic("XEN: intr_register_pic() failure"); - if (intr_register_pic(&xenpic_dynirq_template)) - panic("XEN: intr_register_pic() failure"); - - /* - * Initialize the dynamic IRQ's - we initialize the structures, but - * we do not bind them (bind_evtchn_to_irqhandle() does this) - */ - pin = xp->xp_pins; - for (i = 0; i < NR_DYNIRQS; i++) { - /* Dynamic IRQ space is currently unbound. Zero the refcnts. */ - irq_bindcount[dynirq_to_irq(i)] = 0; - - tpin = &pin[dynirq_to_irq(i)]; - tpin->xp_intsrc.is_pic = xp->xp_dynirq_pic; - tpin->xp_vector = dynirq_to_irq(i); - - } - /* - * Now, we go ahead and claim every PIRQ there is. - */ - pin = xp->xp_pins; - for (i = 0; i < NR_PIRQS; i++) { - /* Dynamic IRQ space is currently unbound. Zero the refcnts. */ - irq_bindcount[pirq_to_irq(i)] = 0; - -#ifdef RTC_IRQ - /* If not domain 0, force our RTC driver to fail its probe. */ - if ((i == RTC_IRQ) && - !(xen_start_info->flags & SIF_INITDOMAIN)) - continue; -#endif - tpin = &pin[pirq_to_irq(i)]; - tpin->xp_intsrc.is_pic = xp->xp_pirq_pic; - tpin->xp_vector = pirq_to_irq(i); - - } -} - -SYSINIT(evtchn_init, SI_SUB_INTR, SI_ORDER_MIDDLE, evtchn_init, NULL); - diff --git a/sys/xen/evtchn/evtchn_dev.c b/sys/xen/evtchn/evtchn_dev.c index ab3bd17..9da2642 100644 --- a/sys/xen/evtchn/evtchn_dev.c +++ b/sys/xen/evtchn/evtchn_dev.c @@ -22,28 +22,23 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include -#include +#include +#include #include + #include -#include #include #include -#include -#include +#include typedef struct evtchn_sotfc { struct selinfo ev_rsel; } evtchn_softc_t; - -#ifdef linuxcrap -/* NB. This must be shared amongst drivers if more things go in /dev/xen */ -static devfs_handle_t xen_dev_dir; -#endif - /* Only one process may open /dev/xen/evtchn at any time. */ static unsigned long evtchn_dev_inuse; @@ -72,12 +67,12 @@ static d_close_t evtchn_close; void -evtchn_device_upcall(int port) +evtchn_device_upcall(evtchn_port_t port) { mtx_lock(&upcall_lock); - mask_evtchn(port); - clear_evtchn(port); + evtchn_mask_port(port); + evtchn_clear_port(port); if ( ring != NULL ) { if ( (ring_prod - ring_cons) < EVTCHN_RING_SIZE ) { @@ -208,7 +203,7 @@ evtchn_write(struct cdev *dev, struct uio *uio, int ioflag) mtx_lock_spin(&lock); for ( i = 0; i < (count/2); i++ ) if ( test_bit(kbuf[i], &bound_ports[0]) ) - unmask_evtchn(kbuf[i]); + evtchn_unmask_port(kbuf[i]); mtx_unlock_spin(&lock); rc = count; @@ -224,6 +219,7 @@ evtchn_ioctl(struct cdev *dev, unsigned long cmd, caddr_t arg, { int rc = 0; +#ifdef NOTYET mtx_lock_spin(&lock); switch ( cmd ) @@ -249,6 +245,7 @@ evtchn_ioctl(struct cdev *dev, unsigned long cmd, caddr_t arg, } mtx_unlock_spin(&lock); +#endif return rc; } @@ -309,7 +306,7 @@ evtchn_close(struct cdev *dev, int flag, int otyp, struct thread *td __unused) mtx_lock_spin(&lock); for ( i = 0; i < NR_EVENT_CHANNELS; i++ ) if ( synch_test_and_clear_bit(i, &bound_ports[0]) ) - mask_evtchn(i); + evtchn_mask_port(i); mtx_unlock_spin(&lock); evtchn_dev_inuse = 0; @@ -352,34 +349,6 @@ evtchn_dev_init(void *dummy __unused) evtchn_dev->si_drv1 = malloc(sizeof(evtchn_softc_t), M_DEVBUF, M_WAITOK); bzero(evtchn_dev->si_drv1, sizeof(evtchn_softc_t)); - /* XXX I don't think we need any of this rubbish */ -#if 0 - if ( err != 0 ) - { - printk(KERN_ALERT "Could not register /dev/misc/evtchn\n"); - return err; - } - - /* (DEVFS) create directory '/dev/xen'. */ - xen_dev_dir = devfs_mk_dir(NULL, "xen", NULL); - - /* (DEVFS) &link_dest[pos] == '../misc/evtchn'. */ - pos = devfs_generate_path(evtchn_miscdev.devfs_handle, - &link_dest[3], - sizeof(link_dest) - 3); - if ( pos >= 0 ) - strncpy(&link_dest[pos], "../", 3); - /* (DEVFS) symlink '/dev/xen/evtchn' -> '../misc/evtchn'. */ - (void)devfs_mk_symlink(xen_dev_dir, - "evtchn", - DEVFS_FL_DEFAULT, - &link_dest[pos], - &symlink_handle, - NULL); - - /* (DEVFS) automatically destroy the symlink with its destination. */ - devfs_auto_unregister(evtchn_miscdev.devfs_handle, symlink_handle); -#endif if (bootverbose) printf("Event-channel device installed.\n"); @@ -387,5 +356,3 @@ evtchn_dev_init(void *dummy __unused) } SYSINIT(evtchn_dev_init, SI_SUB_DRIVERS, SI_ORDER_FIRST, evtchn_dev_init, NULL); - - diff --git a/sys/xen/evtchn/evtchnvar.h b/sys/xen/evtchn/evtchnvar.h new file mode 100644 index 0000000..8008d23 --- /dev/null +++ b/sys/xen/evtchn/evtchnvar.h @@ -0,0 +1,105 @@ +/****************************************************************************** + * evtchn.h + * + * Data structures and definitions private to the FreeBSD implementation + * of the Xen event channel API. + * + * Copyright (c) 2004, K A Fraser + * Copyright (c) 2012, Spectra Logic Corporation + * + * This file may be distributed separately from the Linux kernel, or + * incorporated into other software packages, subject to the following license: + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this source file (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, modify, + * merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef __XEN_EVTCHN_EVTCHNVAR_H__ +#define __XEN_EVTCHN_EVTCHNVAR_H__ + +#include +#include + +enum evtchn_type { + EVTCHN_TYPE_UNBOUND, + EVTCHN_TYPE_PIRQ, + EVTCHN_TYPE_VIRQ, + EVTCHN_TYPE_IPI, + EVTCHN_TYPE_PORT, + EVTCHN_TYPE_COUNT +}; + +/** Submit a port notification for delivery to a userland evtchn consumer */ +void evtchn_device_upcall(evtchn_port_t port); + +/** + * Disable signal delivery for an event channel port, returning its + * previous mask state. + * + * \param port The event channel port to query and mask. + * + * \returns 1 if event delivery was previously disabled. Otherwise 0. + */ +static inline int +evtchn_test_and_set_mask(evtchn_port_t port) +{ + shared_info_t *s = HYPERVISOR_shared_info; + return synch_test_and_set_bit(port, s->evtchn_mask); +} + +/** + * Clear any pending event for the given event channel port. + * + * \param port The event channel port to clear. + */ +static inline void +evtchn_clear_port(evtchn_port_t port) +{ + shared_info_t *s = HYPERVISOR_shared_info; + synch_clear_bit(port, &s->evtchn_pending[0]); +} + +/** + * Disable signal delivery for an event channel port. + * + * \param port The event channel port to mask. + */ +static inline void +evtchn_mask_port(evtchn_port_t port) +{ + shared_info_t *s = HYPERVISOR_shared_info; + + synch_set_bit(port, &s->evtchn_mask[0]); +} + +/** + * Enable signal delivery for an event channel port. + * + * \param port The event channel port to enable. + */ +static inline void +evtchn_unmask_port(evtchn_port_t port) +{ + evtchn_unmask_t op = { .port = port }; + + HYPERVISOR_event_channel_op(EVTCHNOP_unmask, &op); +} + +#endif /* __XEN_EVTCHN_EVTCHNVAR_H__ */ diff --git a/sys/xen/features.c b/sys/xen/features.c index f28fe04..bbb2896 100644 --- a/sys/xen/features.c +++ b/sys/xen/features.c @@ -4,7 +4,7 @@ __FBSDID("$FreeBSD$"); #include #include -#include +#include #include #include diff --git a/sys/xen/gnttab.c b/sys/xen/gnttab.c index d8eb381..03c32b7 100644 --- a/sys/xen/gnttab.c +++ b/sys/xen/gnttab.c @@ -26,7 +26,7 @@ __FBSDID("$FreeBSD$"); #include #include -#include +#include #include #include @@ -108,7 +108,7 @@ do_free_callbacks(void) static inline void check_free_callbacks(void) { - if (unlikely(gnttab_free_callback_list != NULL)) + if (__predict_false(gnttab_free_callback_list != NULL)) do_free_callbacks(); } @@ -136,7 +136,7 @@ gnttab_grant_foreign_access(domid_t domid, unsigned long frame, int readonly, error = get_free_entries(1, &ref); - if (unlikely(error)) + if (__predict_false(error)) return (error); shared[ref].frame = frame; @@ -248,7 +248,7 @@ gnttab_grant_foreign_transfer(domid_t domid, unsigned long pfn, int error, ref; error = get_free_entries(1, &ref); - if (unlikely(error)) + if (__predict_false(error)) return (error); gnttab_grant_foreign_transfer_ref(ref, domid, pfn); @@ -341,7 +341,7 @@ gnttab_alloc_grant_references(uint16_t count, grant_ref_t *head) int ref, error; error = get_free_entries(count, &ref); - if (unlikely(error)) + if (__predict_false(error)) return (error); *head = ref; @@ -360,7 +360,7 @@ gnttab_claim_grant_reference(grant_ref_t *private_head) { grant_ref_t g = *private_head; - if (unlikely(g == GNTTAB_LIST_END)) + if (__predict_false(g == GNTTAB_LIST_END)) return (g); *private_head = gnttab_entry(g); return (g); diff --git a/sys/xen/gnttab.h b/sys/xen/gnttab.h index 1741ec3..d81e965 100644 --- a/sys/xen/gnttab.h +++ b/sys/xen/gnttab.h @@ -36,13 +36,12 @@ #ifndef __ASM_GNTTAB_H__ -#include - +#include #include -#include -#include #include +#include + #define GNTTAB_LIST_END GRANT_REF_INVALID struct gnttab_free_callback { diff --git a/sys/xen/hvm.h b/sys/xen/hvm.h index 338a107..562aaf9 100644 --- a/sys/xen/hvm.h +++ b/sys/xen/hvm.h @@ -23,6 +23,9 @@ #ifndef __XEN_HVM_H__ #define __XEN_HVM_H__ +#include +#include + #include /** @@ -91,4 +94,5 @@ enum { void xen_hvm_set_callback(device_t); void xen_hvm_suspend(void); void xen_hvm_resume(void); +void xen_hvm_init_cpu(void); #endif /* __XEN_HVM_H__ */ diff --git a/sys/xen/interface/event_channel.h b/sys/xen/interface/event_channel.h index 07ff321..65d1911 100644 --- a/sys/xen/interface/event_channel.h +++ b/sys/xen/interface/event_channel.h @@ -73,8 +73,11 @@ #define EVTCHNOP_reset 10 /* ` } */ +#ifndef __XEN_EVTCHN_PORT_DEFINED__ typedef uint32_t evtchn_port_t; DEFINE_XEN_GUEST_HANDLE(evtchn_port_t); +#define __XEN_EVTCHN_PORT_DEFINED__ 1 +#endif /* * EVTCHNOP_alloc_unbound: Allocate a port in domain and mark as diff --git a/sys/xen/xen-os.h b/sys/xen/xen-os.h new file mode 100644 index 0000000..95e8c6a --- /dev/null +++ b/sys/xen/xen-os.h @@ -0,0 +1,95 @@ +/****************************************************************************** + * xen/xen-os.h + * + * Random collection of macros and definition + * + * Copyright (c) 2003, 2004 Keir Fraser (on behalf of the Xen team) + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * $FreeBSD$ + */ + +#ifndef _XEN_XEN_OS_H_ +#define _XEN_XEN_OS_H_ + +#if !defined(__XEN_INTERFACE_VERSION__) +#define __XEN_INTERFACE_VERSION__ 0x00030208 +#endif + +#define GRANT_REF_INVALID 0xffffffff + +#ifdef LOCORE +#define __ASSEMBLY__ +#endif + +#include + +#include + +/* Everything below this point is not included by assembler (.S) files. */ +#ifndef __ASSEMBLY__ + +/* Force a proper event-channel callback from Xen. */ +void force_evtchn_callback(void); + +extern int gdtset; + +extern shared_info_t *HYPERVISOR_shared_info; + +enum xen_domain_type { + XEN_NATIVE, /* running on bare hardware */ + XEN_PV_DOMAIN, /* running in a PV domain */ + XEN_HVM_DOMAIN, /* running in a Xen hvm domain */ +}; + +extern enum xen_domain_type xen_domain_type; + +static inline int +xen_domain(void) +{ + return (xen_domain_type != XEN_NATIVE); +} + +static inline int +xen_pv_domain(void) +{ + return (xen_domain_type == XEN_PV_DOMAIN); +} + +static inline int +xen_hvm_domain(void) +{ + return (xen_domain_type == XEN_HVM_DOMAIN); +} + +#ifndef xen_mb +#define xen_mb() mb() +#endif +#ifndef xen_rmb +#define xen_rmb() rmb() +#endif +#ifndef xen_wmb +#define xen_wmb() wmb() +#endif + +#endif /* !__ASSEMBLY__ */ + +#endif /* _XEN_XEN_OS_H_ */ diff --git a/sys/xen/xen_intr.h b/sys/xen/xen_intr.h index 2e753e6..109608f 100644 --- a/sys/xen/xen_intr.h +++ b/sys/xen/xen_intr.h @@ -1,103 +1,216 @@ -/* -*- Mode:C; c-basic-offset:4; tab-width:4 -*- */ +/****************************************************************************** + * xen_intr.h + * + * APIs for managing Xen event channel, virtual IRQ, and physical IRQ + * notifications. + * + * Copyright (c) 2004, K A Fraser + * Copyright (c) 2012, Spectra Logic Corporation + * + * This file may be distributed separately from the Linux kernel, or + * incorporated into other software packages, subject to the following license: + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this source file (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, modify, + * merge, publish, distribute, sublicense, and/or sell copies of the Software, + * and to permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * $FreeBSD$ + */ #ifndef _XEN_INTR_H_ #define _XEN_INTR_H_ -/* -* The flat IRQ space is divided into two regions: -* 1. A one-to-one mapping of real physical IRQs. This space is only used -* if we have physical device-access privilege. This region is at the -* start of the IRQ space so that existing device drivers do not need -* to be modified to translate physical IRQ numbers into our IRQ space. -* 3. A dynamic mapping of inter-domain and Xen-sourced virtual IRQs. These -* are bound using the provided bind/unbind functions. -* -* -* $FreeBSD$ -*/ - -#define PIRQ_BASE 0 -#define NR_PIRQS 128 - -#define DYNIRQ_BASE (PIRQ_BASE + NR_PIRQS) -#define NR_DYNIRQS 128 - -#define NR_IRQS (NR_PIRQS + NR_DYNIRQS) - -#define pirq_to_irq(_x) ((_x) + PIRQ_BASE) -#define irq_to_pirq(_x) ((_x) - PIRQ_BASE) - -#define dynirq_to_irq(_x) ((_x) + DYNIRQ_BASE) -#define irq_to_dynirq(_x) ((_x) - DYNIRQ_BASE) - -/* - * Dynamic binding of event channels and VIRQ sources to guest IRQ space. +#ifndef __XEN_EVTCHN_PORT_DEFINED__ +typedef uint32_t evtchn_port_t; +DEFINE_XEN_GUEST_HANDLE(evtchn_port_t); +#define __XEN_EVTCHN_PORT_DEFINED__ 1 +#endif + +/** Registered Xen interrupt callback handle. */ +typedef void * xen_intr_handle_t; + +/** If non-zero, the hypervisor has been configured to use a direct vector */ +extern int xen_vector_callback_enabled; + +/** + * Associate an already allocated local event channel port an interrupt + * handler. + * + * \param dev The device making this bind request. + * \param local_port The event channel to bind. + * \param filter An interrupt filter handler. Specify NULL + * to always dispatch to the ithread handler. + * \param handler An interrupt ithread handler. Optional (can + * specify NULL) if all necessary event actions + * are performed by filter. + * \param arg Argument to present to both filter and handler. + * \param irqflags Interrupt handler flags. See sys/bus.h. + * \param handlep Pointer to an opaque handle used to manage this + * registration. + * + * \returns 0 on success, otherwise an errno. */ - -/* - * Bind a caller port event channel to an interrupt handler. If - * successful, the guest IRQ number is returned in *irqp. Return zero - * on success or errno otherwise. +int xen_intr_bind_local_port(device_t dev, evtchn_port_t local_port, + driver_filter_t filter, driver_intr_t handler, void *arg, + enum intr_type irqflags, xen_intr_handle_t *handlep); + +/** + * Allocate a local event channel port, accessible by the specified + * remote/foreign domain and, if successful, associate the port with + * the specified interrupt handler. + * + * \param dev The device making this bind request. + * \param remote_domain Remote domain grant permission to signal the + * newly allocated local port. + * \param filter An interrupt filter handler. Specify NULL + * to always dispatch to the ithread handler. + * \param handler An interrupt ithread handler. Optional (can + * specify NULL) if all necessary event actions + * are performed by filter. + * \param arg Argument to present to both filter and handler. + * \param irqflags Interrupt handler flags. See sys/bus.h. + * \param handlep Pointer to an opaque handle used to manage this + * registration. + * + * \returns 0 on success, otherwise an errno. */ -extern int bind_caller_port_to_irqhandler(unsigned int caller_port, - const char *devname, driver_intr_t handler, void *arg, - unsigned long irqflags, unsigned int *irqp); - -/* - * Bind a listening port to an interrupt handler. If successful, the - * guest IRQ number is returned in *irqp. Return zero on success or - * errno otherwise. +int xen_intr_alloc_and_bind_local_port(device_t dev, + u_int remote_domain, driver_filter_t filter, driver_intr_t handler, + void *arg, enum intr_type irqflags, xen_intr_handle_t *handlep); + +/** + * Associate the specified interrupt handler with the remote event + * channel port specified by remote_domain and remote_port. + * + * \param dev The device making this bind request. + * \param remote_domain The domain peer for this event channel connection. + * \param remote_port Remote domain's local port number for this event + * channel port. + * \param filter An interrupt filter handler. Specify NULL + * to always dispatch to the ithread handler. + * \param handler An interrupt ithread handler. Optional (can + * specify NULL) if all necessary event actions + * are performed by filter. + * \param arg Argument to present to both filter and handler. + * \param irqflags Interrupt handler flags. See sys/bus.h. + * \param handlep Pointer to an opaque handle used to manage this + * registration. + * + * \returns 0 on success, otherwise an errno. */ -extern int bind_listening_port_to_irqhandler(unsigned int remote_domain, - const char *devname, driver_intr_t handler, void *arg, - unsigned long irqflags, unsigned int *irqp); - -/* - * Bind a VIRQ to an interrupt handler. If successful, the guest IRQ - * number is returned in *irqp. Return zero on success or errno - * otherwise. +int xen_intr_bind_remote_port(device_t dev, u_int remote_domain, + evtchn_port_t remote_port, driver_filter_t filter, + driver_intr_t handler, void *arg, enum intr_type irqflags, + xen_intr_handle_t *handlep); + +/** + * Associate the specified interrupt handler with the specified Xen + * virtual interrupt source. + * + * \param dev The device making this bind request. + * \param virq The Xen virtual IRQ number for the Xen interrupt + * source being hooked. + * \param cpu The cpu on which interrupt events should be delivered. + * \param filter An interrupt filter handler. Specify NULL + * to always dispatch to the ithread handler. + * \param handler An interrupt ithread handler. Optional (can + * specify NULL) if all necessary event actions + * are performed by filter. + * \param arg Argument to present to both filter and handler. + * \param irqflags Interrupt handler flags. See sys/bus.h. + * \param handlep Pointer to an opaque handle used to manage this + * registration. + * + * \returns 0 on success, otherwise an errno. */ -extern int bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu, - const char *devname, driver_filter_t filter, driver_intr_t handler, - void *arg, unsigned long irqflags, unsigned int *irqp); - -/* - * Bind an IPI to an interrupt handler. If successful, the guest - * IRQ number is returned in *irqp. Return zero on success or errno - * otherwise. +int xen_intr_bind_virq(device_t dev, u_int virq, u_int cpu, + driver_filter_t filter, driver_intr_t handler, + void *arg, enum intr_type irqflags, xen_intr_handle_t *handlep); + +/** + * Associate an interprocessor interrupt vector with an interrupt handler. + * + * \param dev The device making this bind request. + * \param ipi The interprocessor interrupt vector number of the + * interrupt source being hooked. + * \param cpu The cpu receiving the IPI. + * \param filter An interrupt filter handler. Specify NULL + * to always dispatch to the ithread handler. + * \param irqflags Interrupt handler flags. See sys/bus.h. + * \param handlep Pointer to an opaque handle used to manage this + * registration. + * + * \returns 0 on success, otherwise an errno. */ -extern int bind_ipi_to_irqhandler(unsigned int ipi, unsigned int cpu, - const char *devname, driver_filter_t filter, - unsigned long irqflags, unsigned int *irqp); - -/* - * Bind an interdomain event channel to an interrupt handler. If - * successful, the guest IRQ number is returned in *irqp. Return zero - * on success or errno otherwise. +int xen_intr_bind_ipi(device_t dev, u_int ipi, u_int cpu, + driver_filter_t filter, enum intr_type irqflags, + xen_intr_handle_t *handlep); + +/** + * Unbind an interrupt handler from its interrupt source. + * + * \param handlep A pointer to the opaque handle that was initialized + * at the time the interrupt source was bound. + * + * \returns 0 on success, otherwise an errno. + * + * \note The event channel, if any, that was allocated at bind time is + * closed upon successful return of this method. + * + * \note It is always safe to call xen_intr_unbind() on a handle that + * has been initilized to NULL. */ -extern int bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain, - unsigned int remote_port, const char *devname, - driver_intr_t handler, void *arg, - unsigned long irqflags, unsigned int *irqp); - -/* - * Unbind an interrupt handler using the guest IRQ number returned - * when it was bound. +void xen_intr_unbind(xen_intr_handle_t *handle); + +/** + * Add a description to an interrupt handler. + * + * \param handle The opaque handle that was initialized at the time + * the interrupt source was bound. + * + * \param fmt The sprintf compatible format string for the description, + * followed by optional sprintf arguments. + * + * \returns 0 on success, otherwise an errno. */ -extern void unbind_from_irqhandler(unsigned int irq); - -static __inline__ int irq_cannonicalize(unsigned int irq) -{ - return (irq == 2) ? 9 : irq; -} - -extern void disable_irq(unsigned int); -extern void disable_irq_nosync(unsigned int); -extern void enable_irq(unsigned int); - -extern void irq_suspend(void); -extern void irq_resume(void); - -extern void idle_block(void); -extern int ap_cpu_initclocks(int cpu); +int +xen_intr_describe(xen_intr_handle_t port_handle, const char *fmt, ...) + __attribute__((format(printf, 2, 3))); + +/** + * Signal the remote peer of an interrupt source associated with an + * event channel port. + * + * \param handle The opaque handle that was initialized at the time + * the interrupt source was bound. + * + * \note For xen interrupt sources other than event channel ports, + * this method takes no action. + */ +void xen_intr_signal(xen_intr_handle_t handle); + +/** + * Get the local event channel port number associated with this interrupt + * source. + * + * \param handle The opaque handle that was initialized at the time + * the interrupt source was bound. + * + * \returns 0 if the handle is invalid, otherwise positive port number. + */ +evtchn_port_t xen_intr_port(xen_intr_handle_t handle); #endif /* _XEN_INTR_H_ */ diff --git a/sys/xen/xenbus/xenbus.c b/sys/xen/xenbus/xenbus.c index 8887066..c59d4ae 100644 --- a/sys/xen/xenbus/xenbus.c +++ b/sys/xen/xenbus/xenbus.c @@ -50,11 +50,12 @@ __FBSDID("$FreeBSD$"); #include #include -#include +#include #include #include #include #include + #include MALLOC_DEFINE(M_XENBUS, "xenbus", "XenBus Support"); @@ -222,42 +223,6 @@ xenbus_grant_ring(device_t dev, unsigned long ring_mfn, grant_ref_t *refp) return (0); } -int -xenbus_alloc_evtchn(device_t dev, evtchn_port_t *port) -{ - struct evtchn_alloc_unbound alloc_unbound; - int err; - - alloc_unbound.dom = DOMID_SELF; - alloc_unbound.remote_dom = xenbus_get_otherend_id(dev); - - err = HYPERVISOR_event_channel_op(EVTCHNOP_alloc_unbound, - &alloc_unbound); - - if (err) { - xenbus_dev_fatal(dev, -err, "allocating event channel"); - return (-err); - } - *port = alloc_unbound.port; - return (0); -} - -int -xenbus_free_evtchn(device_t dev, evtchn_port_t port) -{ - struct evtchn_close close; - int err; - - close.port = port; - - err = HYPERVISOR_event_channel_op(EVTCHNOP_close, &close); - if (err) { - xenbus_dev_error(dev, -err, "freeing event channel %d", port); - return (-err); - } - return (0); -} - XenbusState xenbus_read_driver_state(const char *path) { diff --git a/sys/xen/xenbus/xenbus_if.m b/sys/xen/xenbus/xenbus_if.m index 87d7c7f..fd9ae51 100644 --- a/sys/xen/xenbus/xenbus_if.m +++ b/sys/xen/xenbus/xenbus_if.m @@ -29,7 +29,8 @@ #include #include -#include + +#include #include #include diff --git a/sys/xen/xenbus/xenbusb_front.c b/sys/xen/xenbus/xenbusb_front.c index 818e7f0..145d527 100644 --- a/sys/xen/xenbus/xenbusb_front.c +++ b/sys/xen/xenbus/xenbusb_front.c @@ -51,9 +51,9 @@ __FBSDID("$FreeBSD$"); #include #include -#include #include +#include #include #include #include diff --git a/sys/xen/xenbus/xenbusvar.h b/sys/xen/xenbus/xenbusvar.h index 1c730fb..ab5d01f 100644 --- a/sys/xen/xenbus/xenbusvar.h +++ b/sys/xen/xenbus/xenbusvar.h @@ -43,8 +43,8 @@ #include #include -#include +#include #include #include #include @@ -195,39 +195,6 @@ int xenbus_watch_path2(device_t dev, const char *path, int xenbus_grant_ring(device_t dev, unsigned long ring_mfn, grant_ref_t *refp); /** - * Allocate an event channel for the given XenBus device. - * - * \param dev The device for which to allocate the event channel. - * \param port[out] The port identifier for the allocated event channel. - * - * \return On success, 0. Otherwise an errno value indicating the - * type of failure. - * - * A successfully allocated event channel should be free'd using - * xenbus_free_evtchn(). - * - * \note On error, \a dev will be switched to the XenbusStateClosing - * state and the returned error is saved in the per-device error node - * for \a dev in the XenStore. - */ -int xenbus_alloc_evtchn(device_t dev, evtchn_port_t *port); - -/** - * Free an existing event channel. - * - * \param dev The device which allocated this event channel. - * \param port The port identifier for the event channel to free. - * - * \return On success, 0. Otherwise an errno value indicating the - * type of failure. - * - * \note On error, \a dev will be switched to the XenbusStateClosing - * state and the returned error is saved in the per-device error node - * for \a dev in the XenStore. - */ -int xenbus_free_evtchn(device_t dev, evtchn_port_t port); - -/** * Record the given errno, along with the given, printf-style, formatted * message in dev's device specific error node in the XenStore. * diff --git a/sys/xen/xenstore/xenstore.c b/sys/xen/xenstore/xenstore.c index a07a262..d404862 100644 --- a/sys/xen/xenstore/xenstore.c +++ b/sys/xen/xenstore/xenstore.c @@ -49,10 +49,9 @@ __FBSDID("$FreeBSD$"); #include #include -#include #include -#include +#include #include #include #include @@ -244,8 +243,8 @@ struct xs_softc { */ int evtchn; - /** Interrupt number for our event channel. */ - u_int irq; + /** Handle for XenStore interrupts. */ + xen_intr_handle_t xen_intr_handle; /** * Interrupt driven config hook allowing us to defer @@ -505,11 +504,10 @@ xs_write_store(const void *tdata, unsigned len) xen_store->req_prod += avail; /* - * notify_remote_via_evtchn implies mb(). The other side - * will see the change to req_prod at the time of the - * interrupt. + * xen_intr_signal() implies mb(). The other side will see + * the change to req_prod at the time of the interrupt. */ - notify_remote_via_evtchn(xs.evtchn); + xen_intr_signal(xs.xen_intr_handle); } return (0); @@ -597,11 +595,10 @@ xs_read_store(void *tdata, unsigned len) xen_store->rsp_cons += avail; /* - * notify_remote_via_evtchn implies mb(). The producer - * will see the updated consumer index when the event - * is delivered. + * xen_intr_signal() implies mb(). The producer will see + * the updated consumer index when the event is delivered. */ - notify_remote_via_evtchn(xs.evtchn); + xen_intr_signal(xs.xen_intr_handle); } return (0); @@ -1068,11 +1065,11 @@ xs_init_comms(void) xen_store->rsp_cons = xen_store->rsp_prod; } - if (xs.irq) - unbind_from_irqhandler(xs.irq); + xen_intr_unbind(&xs.xen_intr_handle); - error = bind_caller_port_to_irqhandler(xs.evtchn, "xenstore", - xs_intr, NULL, INTR_TYPE_NET, &xs.irq); + error = xen_intr_bind_local_port(xs.xs_dev, xs.evtchn, + /*filter*/NULL, xs_intr, /*arg*/NULL, INTR_TYPE_NET|INTR_MPSAFE, + &xs.xen_intr_handle); if (error) { log(LOG_WARNING, "XENSTORE request irq failed %i\n", error); return (error); @@ -1168,7 +1165,6 @@ xs_attach(device_t dev) sx_init(&xs.suspend_mutex, "xenstore suspend"); mtx_init(&xs.registered_watches_lock, "watches", NULL, MTX_DEF); mtx_init(&xs.watch_events_lock, "watch events", NULL, MTX_DEF); - xs.irq = 0; /* Initialize the shared memory rings to talk to xenstored */ error = xs_init_comms(); diff --git a/sys/xen/xenstore/xenstore_dev.c b/sys/xen/xenstore/xenstore_dev.c index 1fa4197..e1b40914 100644 --- a/sys/xen/xenstore/xenstore_dev.c +++ b/sys/xen/xenstore/xenstore_dev.c @@ -44,7 +44,7 @@ __FBSDID("$FreeBSD$"); #include #include -#include +#include #include #include diff --git a/sys/xen/xenstore/xenstorevar.h b/sys/xen/xenstore/xenstorevar.h index 4a1382d..208e5bf 100644 --- a/sys/xen/xenstore/xenstorevar.h +++ b/sys/xen/xenstore/xenstorevar.h @@ -41,8 +41,8 @@ #include #include -#include +#include #include #include #include -- cgit v1.1 From 6603a737409dde47b24e10b3389b8369f4a0d5e1 Mon Sep 17 00:00:00 2001 From: jkim Date: Thu, 29 Aug 2013 20:40:45 +0000 Subject: Clarify confusions between atomic_t and bitmap. Fix bitmap operations accordingly. --- sys/dev/drm2/drmP.h | 2 +- sys/dev/drm2/drm_atomic.h | 30 ++++++++++++++++++------------ 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/sys/dev/drm2/drmP.h b/sys/dev/drm2/drmP.h index c9997d7..624a316 100644 --- a/sys/dev/drm2/drmP.h +++ b/sys/dev/drm2/drmP.h @@ -961,7 +961,7 @@ struct drm_device { drm_agp_head_t *agp; drm_sg_mem_t *sg; /* Scatter gather memory */ - atomic_t *ctx_bitmap; + u_long *ctx_bitmap; void *dev_private; unsigned int agp_buffer_token; drm_local_map_t *agp_buffer_map; diff --git a/sys/dev/drm2/drm_atomic.h b/sys/dev/drm2/drm_atomic.h index b4ef0fb..e52d349 100644 --- a/sys/dev/drm2/drm_atomic.h +++ b/sys/dev/drm2/drm_atomic.h @@ -7,6 +7,7 @@ /*- * Copyright 2004 Eric Anholt + * Copyright 2013 Jung-uk Kim * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a @@ -32,10 +33,11 @@ #include __FBSDID("$FreeBSD$"); -typedef uint32_t atomic_t; +typedef u_int atomic_t; typedef uint64_t atomic64_t; -#define BITS_TO_LONGS(x) howmany(x, sizeof(long) * NBBY) +#define BITS_PER_LONG (sizeof(long) * NBBY) +#define BITS_TO_LONGS(x) howmany(x, BITS_PER_LONG) #define atomic_read(p) (*(volatile u_int *)(p)) #define atomic_set(p, v) do { *(u_int *)(p) = (v); } while (0) @@ -58,23 +60,27 @@ typedef uint64_t atomic64_t; #define atomic_xchg(p, v) atomic_swap_int(p, v) #define atomic64_xchg(p, v) atomic_swap_64(p, v) +#define __bit_word(b) ((b) / BITS_PER_LONG) +#define __bit_mask(b) (1UL << (b) % BITS_PER_LONG) +#define __bit_addr(p, b) ((volatile u_long *)(p) + __bit_word(b)) + #define clear_bit(b, p) \ - atomic_clear_int((volatile u_int *)(p) + (b) / 32, 1 << (b) % 32) + atomic_clear_long(__bit_addr(p, b), __bit_mask(b)) #define set_bit(b, p) \ - atomic_set_int((volatile u_int *)(p) + (b) / 32, 1 << (b) % 32) + atomic_set_long(__bit_addr(p, b), __bit_mask(b)) #define test_bit(b, p) \ - ((atomic_read((volatile u_int *)(p) + (b) / 32) & (1 << (b) % 32)) != 0) + ((atomic_read(__bit_addr(p, b)) & __bit_mask(b)) != 0) -static __inline int -find_first_zero_bit(volatile void *p, int max) +static __inline u_long +find_first_zero_bit(const u_long *p, u_long max) { - volatile int *np = p; - int i, n; + u_long i, n; - for (i = 0; i < max / (NBBY * sizeof(int)); i++) { - n = ~np[i]; + KASSERT(max % BITS_PER_LONG == 0, ("invalid bitmap size %lu", max)); + for (i = 0; i < max / BITS_PER_LONG; i++) { + n = ~p[i]; if (n != 0) - return (i * NBBY * sizeof(int) + ffs(n) - 1); + return (i * BITS_PER_LONG + ffsl(n) - 1); } return (max); } -- cgit v1.1 From 5fe5bcbff42dd16d0838c2b23b452c9faeefcbda Mon Sep 17 00:00:00 2001 From: jkim Date: Thu, 29 Aug 2013 20:51:12 +0000 Subject: Fix the incomplete conversion from atomic_t to long for test_bit(). --- sys/dev/drm2/drm_atomic.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/drm2/drm_atomic.h b/sys/dev/drm2/drm_atomic.h index e52d349..eb86373 100644 --- a/sys/dev/drm2/drm_atomic.h +++ b/sys/dev/drm2/drm_atomic.h @@ -69,7 +69,7 @@ typedef uint64_t atomic64_t; #define set_bit(b, p) \ atomic_set_long(__bit_addr(p, b), __bit_mask(b)) #define test_bit(b, p) \ - ((atomic_read(__bit_addr(p, b)) & __bit_mask(b)) != 0) + ((*__bit_addr(p, b) & __bit_mask(b)) != 0) static __inline u_long find_first_zero_bit(const u_long *p, u_long max) -- cgit v1.1 From 5a498aa69f24778cb7ca5c6f3808c104cef72f74 Mon Sep 17 00:00:00 2001 From: ken Date: Thu, 29 Aug 2013 21:25:27 +0000 Subject: Bump up the default timeouts for move commands in the ch(4) driver to 15 minutes, and 5 minutes for things like READ ELEMENT STATUS. This is needed to account for the worst case scenarios on at least some Spectra Logic tape libraries. Sponsored by: Spectra Logic MFC after: 3 days --- sys/cam/scsi/scsi_ch.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sys/cam/scsi/scsi_ch.c b/sys/cam/scsi/scsi_ch.c index 2aad04c..fdfb97f 100644 --- a/sys/cam/scsi/scsi_ch.c +++ b/sys/cam/scsi/scsi_ch.c @@ -99,10 +99,10 @@ __FBSDID("$FreeBSD$"); */ static const u_int32_t CH_TIMEOUT_MODE_SENSE = 6000; -static const u_int32_t CH_TIMEOUT_MOVE_MEDIUM = 100000; -static const u_int32_t CH_TIMEOUT_EXCHANGE_MEDIUM = 100000; -static const u_int32_t CH_TIMEOUT_POSITION_TO_ELEMENT = 100000; -static const u_int32_t CH_TIMEOUT_READ_ELEMENT_STATUS = 60000; +static const u_int32_t CH_TIMEOUT_MOVE_MEDIUM = 15 * 60 * 1000; +static const u_int32_t CH_TIMEOUT_EXCHANGE_MEDIUM = 15 * 60 * 1000; +static const u_int32_t CH_TIMEOUT_POSITION_TO_ELEMENT = 15 * 60 * 1000; +static const u_int32_t CH_TIMEOUT_READ_ELEMENT_STATUS = 5 * 60 * 1000; static const u_int32_t CH_TIMEOUT_SEND_VOLTAG = 10000; static const u_int32_t CH_TIMEOUT_INITIALIZE_ELEMENT_STATUS = 500000; -- cgit v1.1 From 8fcf363f032b0b2595dd377d8363ee2a9300571c Mon Sep 17 00:00:00 2001 From: jkim Date: Thu, 29 Aug 2013 22:46:21 +0000 Subject: Partially revert r254880. The bitmap operations actually use long type now. --- sys/dev/drm2/ttm/ttm_bo.c | 7 +++---- sys/dev/drm2/ttm/ttm_bo_util.c | 3 +-- sys/dev/drm2/ttm/ttm_bo_vm.c | 3 +-- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/sys/dev/drm2/ttm/ttm_bo.c b/sys/dev/drm2/ttm/ttm_bo.c index f598748..3b13540 100644 --- a/sys/dev/drm2/ttm/ttm_bo.c +++ b/sys/dev/drm2/ttm/ttm_bo.c @@ -1723,8 +1723,7 @@ int ttm_bo_wait(struct ttm_buffer_object *bo, if (driver->sync_obj_signaled(bo->sync_obj)) { void *tmp_obj = bo->sync_obj; bo->sync_obj = NULL; - atomic_clear_long(&bo->priv_flags, - 1UL << TTM_BO_PRIV_FLAG_MOVING); + clear_bit(TTM_BO_PRIV_FLAG_MOVING, &bo->priv_flags); mtx_unlock(&bdev->fence_lock); driver->sync_obj_unref(&tmp_obj); mtx_lock(&bdev->fence_lock); @@ -1747,8 +1746,8 @@ int ttm_bo_wait(struct ttm_buffer_object *bo, if (likely(bo->sync_obj == sync_obj)) { void *tmp_obj = bo->sync_obj; bo->sync_obj = NULL; - atomic_clear_long(&bo->priv_flags, - 1UL << TTM_BO_PRIV_FLAG_MOVING); + clear_bit(TTM_BO_PRIV_FLAG_MOVING, + &bo->priv_flags); mtx_unlock(&bdev->fence_lock); driver->sync_obj_unref(&sync_obj); driver->sync_obj_unref(&tmp_obj); diff --git a/sys/dev/drm2/ttm/ttm_bo_util.c b/sys/dev/drm2/ttm/ttm_bo_util.c index 15b4d48..aed8e0e 100644 --- a/sys/dev/drm2/ttm/ttm_bo_util.c +++ b/sys/dev/drm2/ttm/ttm_bo_util.c @@ -637,8 +637,7 @@ int ttm_bo_move_accel_cleanup(struct ttm_buffer_object *bo, * operation has completed. */ - atomic_set_long(&bo->priv_flags, - 1UL << TTM_BO_PRIV_FLAG_MOVING); + set_bit(TTM_BO_PRIV_FLAG_MOVING, &bo->priv_flags); mtx_unlock(&bdev->fence_lock); if (tmp_obj) driver->sync_obj_unref(&tmp_obj); diff --git a/sys/dev/drm2/ttm/ttm_bo_vm.c b/sys/dev/drm2/ttm/ttm_bo_vm.c index 8c64181..b87380c 100644 --- a/sys/dev/drm2/ttm/ttm_bo_vm.c +++ b/sys/dev/drm2/ttm/ttm_bo_vm.c @@ -153,8 +153,7 @@ reserve: */ mtx_lock(&bdev->fence_lock); - if ((atomic_load_acq_long(&bo->priv_flags) & - (1UL << TTM_BO_PRIV_FLAG_MOVING)) != 0) { + if (test_bit(TTM_BO_PRIV_FLAG_MOVING, &bo->priv_flags)) { /* * Here, the behavior differs between Linux and FreeBSD. * -- cgit v1.1 From 76248c6467c383919f68dde031fabc532f64d2f0 Mon Sep 17 00:00:00 2001 From: jkim Date: Thu, 29 Aug 2013 23:09:34 +0000 Subject: 'u_long' is consistently spelled 'unsigned long' in this file. Fix it. --- sys/dev/drm2/drmP.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/dev/drm2/drmP.h b/sys/dev/drm2/drmP.h index 624a316..25765c4 100644 --- a/sys/dev/drm2/drmP.h +++ b/sys/dev/drm2/drmP.h @@ -961,7 +961,7 @@ struct drm_device { drm_agp_head_t *agp; drm_sg_mem_t *sg; /* Scatter gather memory */ - u_long *ctx_bitmap; + unsigned long *ctx_bitmap; void *dev_private; unsigned int agp_buffer_token; drm_local_map_t *agp_buffer_map; -- cgit v1.1 From f5ff33730e4d7c8ed7baf90dfb75a20ee45fdfd0 Mon Sep 17 00:00:00 2001 From: gibbs Date: Thu, 29 Aug 2013 23:11:58 +0000 Subject: Introduce a new, HVM compatible, paravirtualized timer driver for Xen. Use this new driver for both PV and HVM instances. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This driver requires a Xen hypervisor that supports vector callbacks, VCPUOP hypercalls, and reports that it has a "safe PV clock". New timer driver: Submitted by: will Sponsored by: Spectra Logic Corporation PV port to new driver, and bug fixes: Submitted by: Roger Pau Monné Sponsored by: Citrix Systems R&D sys/dev/xen/timer/timer.c: - Register a PV timer device driver which (currently) implements device_{identify,probe,attach} and stubs device_detach. The detach routine requires functionality not provided by timecounters(4). The suspend and resume routines need additional work (due to Xen requiring that the hypercalls be executed on the target VCPU), and aren't needed for our purposes. - Make sure there can only be one device instance of this driver, and that it only registers one eventtimers(4) and one timecounters(4) device interface. Make both interfaces use PCPU data as needed. - Match, with a few style cleanups & API differences, the Xen versions of the "fetch time" functions. - Document the magic scale_delta() better for the i386 version. - When registering the event timer, bind a separate event channel for the timer VIRQ to the device's event timer interrupt handler for each active VCPU. Describe each interrupt as "xen_et:c%d", so they can be identified per CPU in "vmstat -i" or "show intrcnt" in KDB. - When scheduling a timer into the hypervisor, try up to 60 times if the hypervisor rejects the time as being in the past. In the common case, this retry shouldn't happen, and if it does, it should only happen once. This is because the event timer advertises a minimum period of 100usec, which is only less than the usual hypercall round trip time about 1 out of every 100 tries. (Unlike other similar drivers, this one actually checks whether the hypervisor accepted the singleshot timer set hypercall.) - Implement a RTC PV clock based on the hypervisor wallclock. sys/conf/files: - Add dev/xen/timer/timer.c if the kernel configuration includes either the XEN or XENHVM options. sys/conf/files.i386: sys/i386/include/xen/xen_clock_util.h: sys/i386/xen/clock.c: sys/i386/xen/xen_clock_util.c: sys/i386/xen/mp_machdep.c: sys/i386/xen/xen_rtc.c: - Remove previous PV timer used in i386 XEN PV kernels, the new timer introduced in this change is used instead (so we share the same code between PVHVM and PV). MFC after: 2 weeks --- sys/conf/files | 1 + sys/conf/files.i386 | 2 - sys/dev/xen/timer/timer.c | 608 ++++++++++++++++++++++++++++++++++ sys/i386/include/xen/xen_clock_util.h | 36 -- sys/i386/xen/clock.c | 358 +------------------- sys/i386/xen/mp_machdep.c | 4 - sys/i386/xen/xen_clock_util.c | 102 ------ sys/i386/xen/xen_rtc.c | 146 -------- 8 files changed, 615 insertions(+), 642 deletions(-) create mode 100644 sys/dev/xen/timer/timer.c delete mode 100644 sys/i386/include/xen/xen_clock_util.h delete mode 100644 sys/i386/xen/xen_clock_util.c delete mode 100644 sys/i386/xen/xen_rtc.c diff --git a/sys/conf/files b/sys/conf/files index 8fda477..f02944f 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -2499,6 +2499,7 @@ dev/xen/control/control.c optional xen | xenhvm dev/xen/netback/netback.c optional xen | xenhvm dev/xen/netfront/netfront.c optional xen | xenhvm dev/xen/xenpci/xenpci.c optional xenpci +dev/xen/timer/timer.c optional xen | xenhvm dev/xl/if_xl.c optional xl pci dev/xl/xlphy.c optional xl pci fs/deadfs/dead_vnops.c standard diff --git a/sys/conf/files.i386 b/sys/conf/files.i386 index 0613337..2ac0b61 100644 --- a/sys/conf/files.i386 +++ b/sys/conf/files.i386 @@ -483,8 +483,6 @@ i386/ibcs2/ibcs2_xenix.c optional ibcs2 i386/ibcs2/ibcs2_xenix_sysent.c optional ibcs2 i386/ibcs2/imgact_coff.c optional ibcs2 i386/xen/clock.c optional xen -i386/xen/xen_clock_util.c optional xen -i386/xen/xen_rtc.c optional xen i386/isa/elink.c optional ep | ie i386/isa/npx.c optional npx i386/isa/pmtimer.c optional pmtimer diff --git a/sys/dev/xen/timer/timer.c b/sys/dev/xen/timer/timer.c new file mode 100644 index 0000000..9c8db59 --- /dev/null +++ b/sys/dev/xen/timer/timer.c @@ -0,0 +1,608 @@ +/** + * Copyright (c) 2009 Adrian Chadd + * Copyright (c) 2012 Spectra Logic Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +/** + * \file dev/xen/timer/timer.c + * \brief A timer driver for the Xen hypervisor's PV clock. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "clock_if.h" + +static devclass_t xentimer_devclass; + +#define NSEC_IN_SEC 1000000000ULL +#define NSEC_IN_USEC 1000ULL +/* 18446744073 = int(2^64 / NSEC_IN_SC) = 1 ns in 64-bit fractions */ +#define FRAC_IN_NSEC 18446744073LL + +/* Xen timers may fire up to 100us off */ +#define XENTIMER_MIN_PERIOD_IN_NSEC 100*NSEC_IN_USEC +#define XENCLOCK_RESOLUTION 10000000 + +#define ETIME 62 /* Xen "bad time" error */ + +#define XENTIMER_QUALITY 950 + +struct xentimer_pcpu_data { + uint64_t timer; + uint64_t last_processed; + void *irq_handle; +}; + +DPCPU_DEFINE(struct xentimer_pcpu_data, xentimer_pcpu); + +DPCPU_DECLARE(struct vcpu_info *, vcpu_info); + +struct xentimer_softc { + device_t dev; + struct timecounter tc; + struct eventtimer et; +}; + +/* Last time; this guarantees a monotonically increasing clock. */ +volatile uint64_t xen_timer_last_time = 0; + +static void +xentimer_identify(driver_t *driver, device_t parent) +{ + if (!xen_domain()) + return; + + /* Handle all Xen PV timers in one device instance. */ + if (devclass_get_device(xentimer_devclass, 0)) + return; + + BUS_ADD_CHILD(parent, 0, "xen_et", 0); +} + +static int +xentimer_probe(device_t dev) +{ + KASSERT((xen_domain()), ("Trying to use Xen timer on bare metal")); + /* + * In order to attach, this driver requires the following: + * - Vector callback support by the hypervisor, in order to deliver + * timer interrupts to the correct CPU for CPUs other than 0. + * - Access to the hypervisor shared info page, in order to look up + * each VCPU's timer information and the Xen wallclock time. + * - The hypervisor must say its PV clock is "safe" to use. + * - The hypervisor must support VCPUOP hypercalls. + * - The maximum number of CPUs supported by FreeBSD must not exceed + * the number of VCPUs supported by the hypervisor. + */ +#define XTREQUIRES(condition, reason...) \ + if (!(condition)) { \ + device_printf(dev, ## reason); \ + device_detach(dev); \ + return (ENXIO); \ + } + + if (xen_hvm_domain()) { + XTREQUIRES(xen_vector_callback_enabled, + "vector callbacks unavailable\n"); + XTREQUIRES(xen_feature(XENFEAT_hvm_safe_pvclock), + "HVM safe pvclock unavailable\n"); + } + XTREQUIRES(HYPERVISOR_shared_info != NULL, + "shared info page unavailable\n"); + XTREQUIRES(HYPERVISOR_vcpu_op(VCPUOP_stop_periodic_timer, 0, NULL) == 0, + "VCPUOPs interface unavailable\n"); +#undef XTREQUIRES + device_set_desc(dev, "Xen PV Clock"); + return (0); +} + +/* + * Scale a 64-bit delta by scaling and multiplying by a 32-bit fraction, + * yielding a 64-bit result. + */ +static inline uint64_t +scale_delta(uint64_t delta, uint32_t mul_frac, int shift) +{ + uint64_t product; + + if (shift < 0) + delta >>= -shift; + else + delta <<= shift; + +#if defined(__i386__) + { + uint32_t tmp1, tmp2; + + /** + * For i386, the formula looks like: + * + * lower = (mul_frac * (delta & UINT_MAX)) >> 32 + * upper = mul_frac * (delta >> 32) + * product = lower + upper + */ + __asm__ ( + "mul %5 ; " + "mov %4,%%eax ; " + "mov %%edx,%4 ; " + "mul %5 ; " + "xor %5,%5 ; " + "add %4,%%eax ; " + "adc %5,%%edx ; " + : "=A" (product), "=r" (tmp1), "=r" (tmp2) + : "a" ((uint32_t)delta), "1" ((uint32_t)(delta >> 32)), + "2" (mul_frac) ); + } +#elif defined(__amd64__) + { + unsigned long tmp; + + __asm__ ( + "mulq %[mul_frac] ; shrd $32, %[hi], %[lo]" + : [lo]"=a" (product), [hi]"=d" (tmp) + : "0" (delta), [mul_frac]"rm"((uint64_t)mul_frac)); + } +#else +#error "xentimer: unsupported architecture" +#endif + + return (product); +} + +static uint64_t +get_nsec_offset(struct vcpu_time_info *tinfo) +{ + + return (scale_delta(rdtsc() - tinfo->tsc_timestamp, + tinfo->tsc_to_system_mul, tinfo->tsc_shift)); +} + +/* + * Read the current hypervisor system uptime value from Xen. + * See for a description of how this works. + */ +static uint32_t +xen_fetch_vcpu_tinfo(struct vcpu_time_info *dst, struct vcpu_time_info *src) +{ + + do { + dst->version = src->version; + rmb(); + dst->tsc_timestamp = src->tsc_timestamp; + dst->system_time = src->system_time; + dst->tsc_to_system_mul = src->tsc_to_system_mul; + dst->tsc_shift = src->tsc_shift; + rmb(); + } while ((src->version & 1) | (dst->version ^ src->version)); + + return (dst->version); +} + +/** + * \brief Get the current time, in nanoseconds, since the hypervisor booted. + * + * \note This function returns the current CPU's idea of this value, unless + * it happens to be less than another CPU's previously determined value. + */ +static uint64_t +xen_fetch_vcpu_time(void) +{ + struct vcpu_time_info dst; + struct vcpu_time_info *src; + uint32_t pre_version; + uint64_t now; + volatile uint64_t last; + struct vcpu_info *vcpu = DPCPU_GET(vcpu_info); + + src = &vcpu->time; + + critical_enter(); + do { + pre_version = xen_fetch_vcpu_tinfo(&dst, src); + barrier(); + now = dst.system_time + get_nsec_offset(&dst); + barrier(); + } while (pre_version != src->version); + + /* + * Enforce a monotonically increasing clock time across all + * VCPUs. If our time is too old, use the last time and return. + * Otherwise, try to update the last time. + */ + do { + last = xen_timer_last_time; + if (last > now) { + now = last; + break; + } + } while (!atomic_cmpset_64(&xen_timer_last_time, last, now)); + + critical_exit(); + + return (now); +} + +static uint32_t +xentimer_get_timecount(struct timecounter *tc) +{ + + return ((uint32_t)xen_fetch_vcpu_time() & UINT_MAX); +} + +/** + * \brief Fetch the hypervisor boot time, known as the "Xen wallclock". + * + * \param ts Timespec to store the current stable value. + * \param version Pointer to store the corresponding wallclock version. + * + * \note This value is updated when Domain-0 shifts its clock to follow + * clock drift, e.g. as detected by NTP. + */ +static void +xen_fetch_wallclock(struct timespec *ts) +{ + shared_info_t *src = HYPERVISOR_shared_info; + uint32_t version = 0; + + do { + version = src->wc_version; + rmb(); + ts->tv_sec = src->wc_sec; + ts->tv_nsec = src->wc_nsec; + rmb(); + } while ((src->wc_version & 1) | (version ^ src->wc_version)); +} + +static void +xen_fetch_uptime(struct timespec *ts) +{ + uint64_t uptime = xen_fetch_vcpu_time(); + ts->tv_sec = uptime / NSEC_IN_SEC; + ts->tv_nsec = uptime % NSEC_IN_SEC; +} + +static int +xentimer_settime(device_t dev __unused, struct timespec *ts) +{ + /* + * Don't return EINVAL here; just silently fail if the domain isn't + * privileged enough to set the TOD. + */ + return(0); +} + +/** + * \brief Return current time according to the Xen Hypervisor wallclock. + * + * \param dev Xentimer device. + * \param ts Pointer to store the wallclock time. + * + * \note The Xen time structures document the hypervisor start time and the + * uptime-since-hypervisor-start (in nsec.) They need to be combined + * in order to calculate a TOD clock. + */ +static int +xentimer_gettime(device_t dev, struct timespec *ts) +{ + struct timespec u_ts; + + timespecclear(ts); + xen_fetch_wallclock(ts); + xen_fetch_uptime(&u_ts); + timespecadd(ts, &u_ts); + + return(0); +} + +/** + * \brief Handle a timer interrupt for the Xen PV timer driver. + * + * \param arg Xen timer driver softc that is expecting the interrupt. + */ +static int +xentimer_intr(void *arg) +{ + struct xentimer_softc *sc = (struct xentimer_softc *)arg; + struct xentimer_pcpu_data *pcpu = DPCPU_PTR(xentimer_pcpu); + + pcpu->last_processed = xen_fetch_vcpu_time(); + if (pcpu->timer != 0 && sc->et.et_active) + sc->et.et_event_cb(&sc->et, sc->et.et_arg); + + return (FILTER_HANDLED); +} + +static int +xentimer_vcpu_start_timer(int vcpu, uint64_t next_time) +{ + struct vcpu_set_singleshot_timer single; + + single.timeout_abs_ns = next_time; + single.flags = VCPU_SSHOTTMR_future; + return (HYPERVISOR_vcpu_op(VCPUOP_set_singleshot_timer, vcpu, &single)); +} + +static int +xentimer_vcpu_stop_timer(int vcpu) +{ + + return (HYPERVISOR_vcpu_op(VCPUOP_stop_singleshot_timer, vcpu, NULL)); +} + +/** + * \brief Set the next oneshot time for the current CPU. + * + * \param et Xen timer driver event timer to schedule on. + * \param first Delta to the next time to schedule the interrupt for. + * \param period Not used. + * + * \note See eventtimers(9) for more information. + * \note + * + * \returns 0 + */ +static int +xentimer_et_start(struct eventtimer *et, + sbintime_t first, sbintime_t period) +{ + int error = 0, i = 0; + struct xentimer_softc *sc = et->et_priv; + int cpu = PCPU_GET(acpi_id); + struct xentimer_pcpu_data *pcpu = DPCPU_PTR(xentimer_pcpu); + uint64_t first_in_ns, next_time; + + /* See sbttots() for this formula. */ + first_in_ns = (((first >> 32) * NSEC_IN_SEC) + + (((uint64_t)NSEC_IN_SEC * (uint32_t)first) >> 32)); + + /* + * Retry any timer scheduling failures, where the hypervisor + * returns -ETIME. Sometimes even a 100us timer period isn't large + * enough, but larger period instances are relatively uncommon. + * + * XXX Remove the panics once et_start() and its consumers are + * equipped to deal with start failures. + */ + do { + if (++i == 60) + panic("can't schedule timer"); + next_time = xen_fetch_vcpu_time() + first_in_ns; + error = xentimer_vcpu_start_timer(cpu, next_time); + } while (error == -ETIME); + + if (error) + panic("%s: Error %d setting singleshot timer to %"PRIu64"\n", + device_get_nameunit(sc->dev), error, next_time); + + pcpu->timer = next_time; + return (error); +} + +/** + * \brief Cancel the event timer's currently running timer, if any. + */ +static int +xentimer_et_stop(struct eventtimer *et) +{ + int cpu = PCPU_GET(acpi_id); + struct xentimer_pcpu_data *pcpu = DPCPU_PTR(xentimer_pcpu); + + pcpu->timer = 0; + return (xentimer_vcpu_stop_timer(cpu)); +} + +/** + * \brief Attach a Xen PV timer driver instance. + * + * \param dev Bus device object to attach. + * + * \note + * \returns EINVAL + */ +static int +xentimer_attach(device_t dev) +{ + struct xentimer_softc *sc = device_get_softc(dev); + int error, i; + + sc->dev = dev; + + /* Bind an event channel to a VIRQ on each VCPU. */ + CPU_FOREACH(i) { + struct xentimer_pcpu_data *pcpu = DPCPU_ID_PTR(i, xentimer_pcpu); + + error = HYPERVISOR_vcpu_op(VCPUOP_stop_periodic_timer, i, NULL); + if (error) { + device_printf(dev, "Error disabling Xen periodic timer " + "on CPU %d\n", i); + return (error); + } + + error = xen_intr_bind_virq(dev, VIRQ_TIMER, i, xentimer_intr, + NULL, sc, INTR_TYPE_CLK, &pcpu->irq_handle); + if (error) { + device_printf(dev, "Error %d binding VIRQ_TIMER " + "to VCPU %d\n", error, i); + return (error); + } + xen_intr_describe(pcpu->irq_handle, "c%d", i); + } + + /* Register the event timer. */ + sc->et.et_name = "XENTIMER"; + sc->et.et_quality = XENTIMER_QUALITY; + sc->et.et_flags = ET_FLAGS_ONESHOT | ET_FLAGS_PERCPU; + sc->et.et_frequency = NSEC_IN_SEC; + /* See tstosbt() for this formula */ + sc->et.et_min_period = (XENTIMER_MIN_PERIOD_IN_NSEC * + (((uint64_t)1 << 63) / 500000000) >> 32); + sc->et.et_max_period = ((sbintime_t)4 << 32); + sc->et.et_start = xentimer_et_start; + sc->et.et_stop = xentimer_et_stop; + sc->et.et_priv = sc; + et_register(&sc->et); + + /* Register the timecounter. */ + sc->tc.tc_name = "XENTIMER"; + sc->tc.tc_quality = XENTIMER_QUALITY; + /* + * The underlying resolution is in nanoseconds, since the timer info + * scales TSC frequencies using a fraction that represents time in + * terms of nanoseconds. + */ + sc->tc.tc_frequency = NSEC_IN_SEC; + sc->tc.tc_counter_mask = ~0u; + sc->tc.tc_get_timecount = xentimer_get_timecount; + sc->tc.tc_priv = sc; + tc_init(&sc->tc); + + /* Register the Hypervisor wall clock */ + clock_register(dev, XENCLOCK_RESOLUTION); + + return (0); +} + +static int +xentimer_detach(device_t dev) +{ + + /* Implement Xen PV clock teardown - XXX see hpet_detach ? */ + /* If possible: + * 1. need to deregister timecounter + * 2. need to deregister event timer + * 3. need to deregister virtual IRQ event channels + */ + return (EBUSY); +} + +/** + * The following device methods are disabled because they wouldn't work + * properly. + */ +#ifdef NOTYET +static int +xentimer_resume(device_t dev) +{ + struct xentimer_softc *sc = device_get_softc(dev); + int error = 0; + int i; + + device_printf(sc->dev, "%s", __func__); + CPU_FOREACH(i) { + struct xentimer_pcpu_data *pcpu = DPCPU_ID_PTR(i, xentimer_pcpu); + + /* Skip inactive timers. */ + if (pcpu->timer == 0) + continue; + + /* + * XXX This won't actually work, because Xen requires that + * singleshot timers be set while running on the given CPU. + */ + error = xentimer_vcpu_start_timer(i, pcpu->timer); + if (error == -ETIME) { + /* Event time has already passed; process. */ + xentimer_intr(sc); + } else if (error != 0) { + panic("%s: error %d restarting vcpu %d\n", + __func__, error, i); + } + } + + return (error); +} + +static int +xentimer_suspend(device_t dev) +{ + struct xentimer_softc *sc = device_get_softc(dev); + int error = 0; + int i; + + device_printf(sc->dev, "%s", __func__); + CPU_FOREACH(i) { + struct xentimer_pcpu_data *pcpu = DPCPU_ID_PTR(i, xentimer_pcpu); + + /* Skip inactive timers. */ + if (pcpu->timer == 0) + continue; + error = xentimer_vcpu_stop_timer(i); + if (error) + panic("Error %d stopping VCPU %d timer\n", error, i); + } + + return (error); +} +#endif + +static device_method_t xentimer_methods[] = { + DEVMETHOD(device_identify, xentimer_identify), + DEVMETHOD(device_probe, xentimer_probe), + DEVMETHOD(device_attach, xentimer_attach), + DEVMETHOD(device_detach, xentimer_detach), +#ifdef NOTYET + DEVMETHOD(device_suspend, xentimer_suspend), + DEVMETHOD(device_resume, xentimer_resume), +#endif + /* clock interface */ + DEVMETHOD(clock_gettime, xentimer_gettime), + DEVMETHOD(clock_settime, xentimer_settime), + DEVMETHOD_END +}; + +static driver_t xentimer_driver = { + "xen_et", + xentimer_methods, + sizeof(struct xentimer_softc), +}; + +DRIVER_MODULE(xentimer, nexus, xentimer_driver, xentimer_devclass, 0, 0); +MODULE_DEPEND(xentimer, nexus, 1, 1, 1); diff --git a/sys/i386/include/xen/xen_clock_util.h b/sys/i386/include/xen/xen_clock_util.h deleted file mode 100644 index ecb8e2c..0000000 --- a/sys/i386/include/xen/xen_clock_util.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * - * Copyright (c) 2009 Adrian Chadd - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * $FreeBSD$ - */ - -#ifndef __XEN_CLOCK_UTIL_H__ -#define __XEN_CLOCK_UTIL_H__ - -extern void xen_fetch_wallclock(struct timespec *ts); -extern void xen_fetch_uptime(struct timespec *ts); - -#endif /* __XEN_CLOCK_UTIL_H__ */ diff --git a/sys/i386/xen/clock.c b/sys/i386/xen/clock.c index 524fa14..075f567 100644 --- a/sys/i386/xen/clock.c +++ b/sys/i386/xen/clock.c @@ -79,7 +79,6 @@ __FBSDID("$FreeBSD$"); #include #include -#include #include #include #include @@ -88,7 +87,7 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include +#include /* * 32-bit time_t's can't reach leap years before 1904 or after 2036, so we @@ -117,6 +116,7 @@ struct mtx clock_lock; mtx_init(&clock_lock, "clk", NULL, MTX_SPIN | MTX_NOPROFILE) #define RTC_LOCK mtx_lock_spin(&clock_lock) #define RTC_UNLOCK mtx_unlock_spin(&clock_lock) +#define NS_PER_TICK (1000000000ULL/hz) int adjkerntz; /* local offset from GMT in seconds */ int clkintr_pending; @@ -124,22 +124,10 @@ int pscnt = 1; int psdiv = 1; int wall_cmos_clock; u_int timer_freq = TIMER_FREQ; -static int independent_wallclock; -static int xen_disable_rtc_set; static u_long cyc2ns_scale; -static struct timespec shadow_tv; -static uint32_t shadow_tv_version; /* XXX: lazy locking */ static uint64_t processed_system_time; /* stime (ns) at last processing. */ -static const u_char daysinmonth[] = {31,28,31,30,31,30,31,31,30,31,30,31}; - -int ap_cpu_initclocks(int cpu); - -SYSCTL_INT(_machdep, OID_AUTO, independent_wallclock, - CTLFLAG_RW, &independent_wallclock, 0, ""); -SYSCTL_INT(_machdep, OID_AUTO, xen_disable_rtc_set, - CTLFLAG_RW, &xen_disable_rtc_set, 1, ""); - +extern volatile uint64_t xen_timer_last_time; #define do_div(n,base) ({ \ unsigned long __upper, __low, __high, __mod, __base; \ @@ -156,12 +144,6 @@ SYSCTL_INT(_machdep, OID_AUTO, xen_disable_rtc_set, }) -#define NS_PER_TICK (1000000000ULL/hz) - -#define rdtscll(val) \ - __asm__ __volatile__("rdtsc" : "=A" (val)) - - /* convert from cycles(64bits) => nanoseconds (64bits) * basic equation: * ns = cycles / (freq / ns_per_sec) @@ -184,208 +166,13 @@ static inline void set_cyc2ns_scale(unsigned long cpu_mhz) static inline unsigned long long cycles_2_ns(unsigned long long cyc) { - return (cyc * cyc2ns_scale) >> CYC2NS_SCALE_FACTOR; -} - -/* - * Scale a 64-bit delta by scaling and multiplying by a 32-bit fraction, - * yielding a 64-bit result. - */ -static inline uint64_t -scale_delta(uint64_t delta, uint32_t mul_frac, int shift) -{ - uint64_t product; - uint32_t tmp1, tmp2; - - if ( shift < 0 ) - delta >>= -shift; - else - delta <<= shift; - - __asm__ ( - "mul %5 ; " - "mov %4,%%eax ; " - "mov %%edx,%4 ; " - "mul %5 ; " - "xor %5,%5 ; " - "add %4,%%eax ; " - "adc %5,%%edx ; " - : "=A" (product), "=r" (tmp1), "=r" (tmp2) - : "a" ((uint32_t)delta), "1" ((uint32_t)(delta >> 32)), "2" (mul_frac) ); - - return product; -} - -static uint64_t -get_nsec_offset(struct shadow_time_info *shadow) -{ - uint64_t now, delta; - rdtscll(now); - delta = now - shadow->tsc_timestamp; - return scale_delta(delta, shadow->tsc_to_nsec_mul, shadow->tsc_shift); -} - -static void update_wallclock(void) -{ - shared_info_t *s = HYPERVISOR_shared_info; - - do { - shadow_tv_version = s->wc_version; - rmb(); - shadow_tv.tv_sec = s->wc_sec; - shadow_tv.tv_nsec = s->wc_nsec; - rmb(); - } - while ((s->wc_version & 1) | (shadow_tv_version ^ s->wc_version)); - -} - -static void -add_uptime_to_wallclock(void) -{ - struct timespec ut; - - xen_fetch_uptime(&ut); - timespecadd(&shadow_tv, &ut); -} - -/* - * Reads a consistent set of time-base values from Xen, into a shadow data - * area. Must be called with the xtime_lock held for writing. - */ -static void __get_time_values_from_xen(void) -{ - shared_info_t *s = HYPERVISOR_shared_info; - struct vcpu_time_info *src; - struct shadow_time_info *dst; - uint32_t pre_version, post_version; - struct pcpu *pc; - - pc = pcpu_find(smp_processor_id()); - src = &s->vcpu_info[smp_processor_id()].time; - dst = &pc->pc_shadow_time; - - spinlock_enter(); - do { - pre_version = dst->version = src->version; - rmb(); - dst->tsc_timestamp = src->tsc_timestamp; - dst->system_timestamp = src->system_time; - dst->tsc_to_nsec_mul = src->tsc_to_system_mul; - dst->tsc_shift = src->tsc_shift; - rmb(); - post_version = src->version; - } - while ((pre_version & 1) | (pre_version ^ post_version)); - - dst->tsc_to_usec_mul = dst->tsc_to_nsec_mul / 1000; - spinlock_exit(); -} - - -static inline int time_values_up_to_date(int cpu) -{ - struct vcpu_time_info *src; - struct shadow_time_info *dst; - struct pcpu *pc; - - src = &HYPERVISOR_shared_info->vcpu_info[cpu].time; - pc = pcpu_find(cpu); - dst = &pc->pc_shadow_time; - - rmb(); - return (dst->version == src->version); + return ((cyc * cyc2ns_scale) >> CYC2NS_SCALE_FACTOR); } -static unsigned xen_get_timecount(struct timecounter *tc); - -static struct timecounter xen_timecounter = { - xen_get_timecount, /* get_timecount */ - 0, /* no poll_pps */ - ~0u, /* counter_mask */ - 0, /* frequency */ - "ixen", /* name */ - 0 /* quality */ -}; - -static struct eventtimer xen_et; - -struct xen_et_state { - int mode; -#define MODE_STOP 0 -#define MODE_PERIODIC 1 -#define MODE_ONESHOT 2 - int64_t period; - int64_t next; -}; - -static DPCPU_DEFINE(struct xen_et_state, et_state); - -static int -clkintr(void *arg) -{ - int64_t now; - int cpu = smp_processor_id(); - struct pcpu *pc = pcpu_find(cpu); - struct shadow_time_info *shadow = &pc->pc_shadow_time; - struct xen_et_state *state = DPCPU_PTR(et_state); - - do { - __get_time_values_from_xen(); - now = shadow->system_timestamp + get_nsec_offset(shadow); - } while (!time_values_up_to_date(cpu)); - - /* Process elapsed ticks since last call. */ - processed_system_time = now; - if (state->mode == MODE_PERIODIC) { - while (now >= state->next) { - state->next += state->period; - if (xen_et.et_active) - xen_et.et_event_cb(&xen_et, xen_et.et_arg); - } - HYPERVISOR_set_timer_op(state->next + 50000); - } else if (state->mode == MODE_ONESHOT) { - if (xen_et.et_active) - xen_et.et_event_cb(&xen_et, xen_et.et_arg); - } - /* - * Take synchronised time from Xen once a minute if we're not - * synchronised ourselves, and we haven't chosen to keep an independent - * time base. - */ - - if (shadow_tv_version != HYPERVISOR_shared_info->wc_version && - !independent_wallclock) { - printf("[XEN] hypervisor wallclock nudged; nudging TOD.\n"); - update_wallclock(); - add_uptime_to_wallclock(); - tc_setclock(&shadow_tv); - } - - /* XXX TODO */ - return (FILTER_HANDLED); -} static uint32_t getit(void) { - struct shadow_time_info *shadow; - uint64_t time; - uint32_t local_time_version; - struct pcpu *pc; - - pc = pcpu_find(smp_processor_id()); - shadow = &pc->pc_shadow_time; - - do { - local_time_version = shadow->version; - barrier(); - time = shadow->system_timestamp + get_nsec_offset(shadow); - if (!time_values_up_to_date(smp_processor_id())) - __get_time_values_from_xen(/*cpu */); - barrier(); - } while (local_time_version != shadow->version); - - return (time); + return (xen_timer_last_time); } @@ -489,43 +276,12 @@ DELAY(int n) #endif } - -/* - * Restore all the timers non-atomically (XXX: should be atomically). - * - * This function is called from pmtimer_resume() to restore all the timers. - * This should not be necessary, but there are broken laptops that do not - * restore all the timers on resume. - */ -void -timer_restore(void) -{ - struct xen_et_state *state = DPCPU_PTR(et_state); - struct pcpu *pc; - - /* Get timebases for new environment. */ - __get_time_values_from_xen(); - - /* Reset our own concept of passage of system time. */ - pc = pcpu_find(0); - processed_system_time = pc->pc_shadow_time.system_timestamp; - state->next = processed_system_time; -} - void startrtclock() { - unsigned long long alarm; uint64_t __cpu_khz; uint32_t cpu_khz; struct vcpu_time_info *info; - struct pcpu *pc; - - pc = pcpu_find(0); - - /* initialize xen values */ - __get_time_values_from_xen(); - processed_system_time = pc->pc_shadow_time.system_timestamp; __cpu_khz = 1000000ULL << 32; info = &HYPERVISOR_shared_info->vcpu_info[0].time; @@ -544,12 +300,6 @@ startrtclock() set_cyc2ns_scale(cpu_khz/1000); tsc_freq = cpu_khz * 1000; - - timer_freq = 1000000000LL; - xen_timecounter.tc_frequency = timer_freq >> 9; - tc_init(&xen_timecounter); - - rdtscll(alarm); } /* @@ -783,116 +533,20 @@ resettodr() } #endif -static int -xen_et_start(struct eventtimer *et, sbintime_t first, sbintime_t period) -{ - struct xen_et_state *state = DPCPU_PTR(et_state); - struct shadow_time_info *shadow; - int64_t fperiod; - struct pcpu *pc; - - __get_time_values_from_xen(); - - if (period != 0) { - state->mode = MODE_PERIODIC; - state->period = (1000000000LLU * period) >> 32; - } else { - state->mode = MODE_ONESHOT; - state->period = 0; - } - if (first != 0) - fperiod = (1000000000LLU * first) >> 32; - else - fperiod = state->period; - - pc = pcpu_find(smp_processor_id()); - shadow = &pc->pc_shadow_time; - state->next = shadow->system_timestamp + get_nsec_offset(shadow); - state->next += fperiod; - HYPERVISOR_set_timer_op(state->next + 50000); - return (0); -} - -static int -xen_et_stop(struct eventtimer *et) -{ - struct xen_et_state *state = DPCPU_PTR(et_state); - - state->mode = MODE_STOP; - HYPERVISOR_set_timer_op(0); - return (0); -} - /* * Start clocks running. */ void cpu_initclocks(void) { - xen_intr_handle_t time_irq; - int error; - - HYPERVISOR_vcpu_op(VCPUOP_stop_periodic_timer, 0, NULL); - error = xen_intr_bind_virq(root_bus, VIRQ_TIMER, 0, - clkintr, NULL, NULL, INTR_TYPE_CLK, &time_irq); - if (error) - panic("failed to register clock interrupt\n"); - /* should fast clock be enabled ? */ - - bzero(&xen_et, sizeof(xen_et)); - xen_et.et_name = "ixen"; - xen_et.et_flags = ET_FLAGS_PERIODIC | ET_FLAGS_ONESHOT | - ET_FLAGS_PERCPU; - xen_et.et_quality = 600; - xen_et.et_frequency = 1000000000; - xen_et.et_min_period = 0x00400000LL; - xen_et.et_max_period = (0xfffffffeLLU << 32) / xen_et.et_frequency; - xen_et.et_start = xen_et_start; - xen_et.et_stop = xen_et_stop; - xen_et.et_priv = NULL; - et_register(&xen_et); - cpu_initclocks_bsp(); } -int -ap_cpu_initclocks(int cpu) -{ - xen_intr_handle_t time_irq; - int error; - - HYPERVISOR_vcpu_op(VCPUOP_stop_periodic_timer, cpu, NULL); - error = xen_intr_bind_virq(root_bus, VIRQ_TIMER, cpu, - clkintr, NULL, NULL, INTR_TYPE_CLK, &time_irq); - if (error) - panic("failed to register clock interrupt\n"); - - return (0); -} - -static uint32_t -xen_get_timecount(struct timecounter *tc) -{ - uint64_t clk; - struct shadow_time_info *shadow; - struct pcpu *pc; - - pc = pcpu_find(smp_processor_id()); - shadow = &pc->pc_shadow_time; - - __get_time_values_from_xen(); - - clk = shadow->system_timestamp + get_nsec_offset(shadow); - - return (uint32_t)(clk >> 9); - -} - /* Return system time offset by ticks */ uint64_t get_system_time(int ticks) { - return processed_system_time + (ticks * NS_PER_TICK); + return (processed_system_time + (ticks * NS_PER_TICK)); } int diff --git a/sys/i386/xen/mp_machdep.c b/sys/i386/xen/mp_machdep.c index 407731a..c070172 100644 --- a/sys/i386/xen/mp_machdep.c +++ b/sys/i386/xen/mp_machdep.c @@ -153,7 +153,6 @@ static cpuset_t hyperthreading_cpus_mask; extern void Xhypervisor_callback(void); extern void failsafe_callback(void); extern void pmap_lazyfix_action(void); -extern int ap_cpu_initclocks(int cpu); DPCPU_DEFINE(xen_intr_handle_t, ipi_port[NR_IPIS]); DPCPU_DEFINE(struct vcpu_info *, vcpu_info); @@ -495,9 +494,6 @@ xen_smp_cpu_init(unsigned int cpu) printf("[XEN] IPI cpu=%d port=%d vector=CALL_FUNCTION_VECTOR (%d)\n", cpu, xen_intr_port(irq_handle), CALL_FUNCTION_VECTOR); - if ((cpu != 0) && ((rc = ap_cpu_initclocks(cpu)) != 0)) - goto fail; - return 0; fail: diff --git a/sys/i386/xen/xen_clock_util.c b/sys/i386/xen/xen_clock_util.c deleted file mode 100644 index c124515..0000000 --- a/sys/i386/xen/xen_clock_util.c +++ /dev/null @@ -1,102 +0,0 @@ -/*- - * Copyright (c) 2009 Adrian Chadd - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#include -__FBSDID("$FreeBSD$"); - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -/* - * Read the current hypervisor start time (wall clock) from Xen. - */ -void -xen_fetch_wallclock(struct timespec *ts) -{ - shared_info_t *s = HYPERVISOR_shared_info; - uint32_t ts_version; - - do { - ts_version = s->wc_version; - rmb(); - ts->tv_sec = s->wc_sec; - ts->tv_nsec = s->wc_nsec; - rmb(); - } - while ((s->wc_version & 1) | (ts_version ^ s->wc_version)); -} - -/* - * Read the current hypervisor system uptime value from Xen. - */ -void -xen_fetch_uptime(struct timespec *ts) -{ - shared_info_t *s = HYPERVISOR_shared_info; - struct vcpu_time_info *src; - struct shadow_time_info dst; - uint32_t pre_version, post_version; - - src = &s->vcpu_info[smp_processor_id()].time; - - spinlock_enter(); - do { - pre_version = dst.version = src->version; - rmb(); - dst.system_timestamp = src->system_time; - rmb(); - post_version = src->version; - } - while ((pre_version & 1) | (pre_version ^ post_version)); - - spinlock_exit(); - - ts->tv_sec = dst.system_timestamp / 1000000000; - ts->tv_nsec = dst.system_timestamp % 1000000000; -} diff --git a/sys/i386/xen/xen_rtc.c b/sys/i386/xen/xen_rtc.c deleted file mode 100644 index 8dc3ecb..0000000 --- a/sys/i386/xen/xen_rtc.c +++ /dev/null @@ -1,146 +0,0 @@ -/*- - * Copyright (c) 2009 Adrian Chadd - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $FreeBSD$ - */ - -#include -__FBSDID("$FreeBSD$"); - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include - -#include - -#include "clock_if.h" - -static int -xen_rtc_probe(device_t dev) -{ - device_set_desc(dev, "Xen Hypervisor Clock"); - printf("[XEN] xen_rtc_probe: probing Hypervisor RTC clock\n"); - if (! HYPERVISOR_shared_info) { - device_printf(dev, "No hypervisor shared page found; RTC can not start.\n"); - return (EINVAL); - } - return (0); -} - -static int -xen_rtc_attach(device_t dev) -{ - printf("[XEN] xen_rtc_attach: attaching Hypervisor RTC clock\n"); - clock_register(dev, 1000000); - return(0); -} - -static int -xen_rtc_settime(device_t dev __unused, struct timespec *ts) -{ - device_printf(dev, "[XEN] xen_rtc_settime\n"); - /* - * Don't return EINVAL here; just silently fail if the domain isn't privileged enough - * to set the TOD. - */ - return(0); -} - -/* - * The Xen time structures document the hypervisor start time and the - * uptime-since-hypervisor-start (in nsec.) They need to be combined - * in order to calculate a TOD clock. - */ -static int -xen_rtc_gettime(device_t dev, struct timespec *ts) -{ - struct timespec w_ts, u_ts; - - device_printf(dev, "[XEN] xen_rtc_gettime\n"); - xen_fetch_wallclock(&w_ts); - device_printf(dev, "[XEN] xen_rtc_gettime: wallclock %ld sec; %ld nsec\n", (long int) w_ts.tv_sec, (long int) w_ts.tv_nsec); - xen_fetch_uptime(&u_ts); - device_printf(dev, "[XEN] xen_rtc_gettime: uptime %ld sec; %ld nsec\n", (long int) u_ts.tv_sec, (long int) u_ts.tv_nsec); - - timespecclear(ts); - timespecadd(ts, &w_ts); - timespecadd(ts, &u_ts); - - device_printf(dev, "[XEN] xen_rtc_gettime: TOD %ld sec; %ld nsec\n", (long int) ts->tv_sec, (long int) ts->tv_nsec); - - return(0); -} - -static void -xen_rtc_identify(driver_t *drv, device_t parent) -{ - BUS_ADD_CHILD(parent, 0, "rtc", 0); -} - -static device_method_t xen_rtc_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, xen_rtc_probe), - DEVMETHOD(device_attach, xen_rtc_attach), - DEVMETHOD(device_identify, xen_rtc_identify), - - DEVMETHOD(device_detach, bus_generic_detach), - DEVMETHOD(device_shutdown, bus_generic_shutdown), - - /* clock interface */ - DEVMETHOD(clock_gettime, xen_rtc_gettime), - DEVMETHOD(clock_settime, xen_rtc_settime), - - { 0, 0 } -}; - - -static driver_t xen_rtc_driver = { - "rtc", - xen_rtc_methods, - 0 -}; - -static devclass_t xen_rtc_devclass; - -DRIVER_MODULE(rtc, nexus, xen_rtc_driver, xen_rtc_devclass, 0, 0); -- cgit v1.1 From b31ce9ec798f31a4e3eb32e171adf40f93209e2b Mon Sep 17 00:00:00 2001 From: np Date: Thu, 29 Aug 2013 23:46:38 +0000 Subject: Add a routine for attaching an mbuf to a buffer with an external refcount. This one is willing to work with buffers that may already be referenced. MEXTADD/m_extadd are suitable only for the first attachment to a cluster -- they initialize the refcount to 1. --- sys/sys/mbuf.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/sys/sys/mbuf.h b/sys/sys/mbuf.h index 930a322..bc2924a 100644 --- a/sys/sys/mbuf.h +++ b/sys/sys/mbuf.h @@ -545,6 +545,28 @@ m_gettype(int size) return (type); } +/* + * Associated an external reference counted buffer with an mbuf. + */ +static __inline void +m_extaddref(struct mbuf *m, caddr_t buf, u_int size, u_int *ref_cnt, + int (*freef)(struct mbuf *, void *, void *), void *arg1, void *arg2) +{ + + KASSERT(ref_cnt != NULL, ("%s: ref_cnt not provided", __func__)); + + atomic_add_int(ref_cnt, 1); + m->m_flags |= M_EXT; + m->m_ext.ext_buf = buf; + m->m_ext.ref_cnt = ref_cnt; + m->m_data = m->m_ext.ext_buf; + m->m_ext.ext_size = size; + m->m_ext.ext_free = freef; + m->m_ext.ext_arg1 = arg1; + m->m_ext.ext_arg2 = arg2; + m->m_ext.ext_type = EXT_EXTREF; +} + static __inline uma_zone_t m_getzone(int size) { -- cgit v1.1 From 8496d415176840eceb5d409dae828b1019b7ab47 Mon Sep 17 00:00:00 2001 From: bdrewery Date: Fri, 30 Aug 2013 01:32:47 +0000 Subject: - Fix LOCAL_MTREE so it properly handles multiple files and quotes its value into submakes PR: conf/179466 Submitted by: Garrett Cooper Approved by: bapt MFC after: 2 weeks Sponsored by: EMC / Isilon Storage Division --- Makefile.inc1 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile.inc1 b/Makefile.inc1 index ee9d14e..5185706 100644 --- a/Makefile.inc1 +++ b/Makefile.inc1 @@ -265,7 +265,7 @@ WMAKEENV= ${CROSSENV} \ PATH=${TMPPATH} # make hierarchy -HMAKE= PATH=${TMPPATH} ${MAKE} LOCAL_MTREE=${LOCAL_MTREE} +HMAKE= PATH=${TMPPATH} ${MAKE} LOCAL_MTREE=${LOCAL_MTREE:Q} .if defined(NO_ROOT) HMAKE+= PATH=${TMPPATH} METALOG=${METALOG} -DNO_ROOT .endif @@ -814,7 +814,7 @@ distributeworld installworld: installcheck installcheck_UGID cd ${.CURDIR}/etc; ${CROSSENV} PATH=${TMPPATH} ${MAKE} \ METALOG=${METALOG} ${IMAKE_INSTALL} ${IMAKE_MTREE} \ DISTBASE=/base DESTDIR=${DESTDIR}/${DISTDIR}/base \ - LOCAL_MTREE=${LOCAL_MTREE} distrib-dirs + LOCAL_MTREE=${LOCAL_MTREE:Q} distrib-dirs .endif ${_+_}cd ${.CURDIR}; ${IMAKE} re${.TARGET:S/world$//}; \ ${IMAKEENV} rm -rf ${INSTALLTMP} @@ -888,7 +888,7 @@ reinstall: @echo ">>> Making hierarchy" @echo "--------------------------------------------------------------" ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 \ - LOCAL_MTREE=${LOCAL_MTREE} hierarchy + LOCAL_MTREE=${LOCAL_MTREE:Q} hierarchy @echo @echo "--------------------------------------------------------------" @echo ">>> Installing everything" -- cgit v1.1 From 053a3cacff702378b4362f2285aae5b54b38cc1a Mon Sep 17 00:00:00 2001 From: np Date: Fri, 30 Aug 2013 01:45:36 +0000 Subject: Implement support for rx buffer packing. Enable it by default for T5 cards. This is a T4 and T5 chip feature which lets the chip deliver multiple Ethernet frames in a single buffer. This is more efficient within the chip, in the driver, and reduces wastage of space in rx buffers. - Always allocate rx buffers from the jumbop zone, no matter what the MTU is. Do not use the normal cluster refcounting mechanism. - Reserve space for an mbuf and a refcount in the cluster itself and let the chip DMA multiple frames in the rest. - Use the embedded mbuf for the first frame and allocate mbufs on the fly for any additional frames delivered in the cluster. Each of these mbufs has a reference on the underlying cluster. --- sys/dev/cxgbe/adapter.h | 33 ++- sys/dev/cxgbe/t4_sge.c | 710 +++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 601 insertions(+), 142 deletions(-) diff --git a/sys/dev/cxgbe/adapter.h b/sys/dev/cxgbe/adapter.h index ba956c4..89358d2 100644 --- a/sys/dev/cxgbe/adapter.h +++ b/sys/dev/cxgbe/adapter.h @@ -128,9 +128,9 @@ enum { RX_FL_ESIZE = EQ_ESIZE, /* 8 64bit addresses */ #if MJUMPAGESIZE != MCLBYTES - FL_BUF_SIZES = 4, /* cluster, jumbop, jumbo9k, jumbo16k */ + FL_BUF_SIZES_MAX = 5, /* cluster, jumbop, jumbo9k, jumbo16k, extra */ #else - FL_BUF_SIZES = 3, /* cluster, jumbo9k, jumbo16k */ + FL_BUF_SIZES_MAX = 4, /* cluster, jumbo9k, jumbo16k, extra */ #endif CTRL_EQ_QSIZE = 128, @@ -165,6 +165,7 @@ enum { MASTER_PF = (1 << 3), ADAP_SYSCTL_CTX = (1 << 4), TOM_INIT_DONE = (1 << 5), + BUF_PACKING_OK = (1 << 6), CXGBE_BUSY = (1 << 9), @@ -232,12 +233,11 @@ struct port_info { }; struct fl_sdesc { - struct mbuf *m; bus_dmamap_t map; caddr_t cl; - uint8_t tag_idx; /* the sc->fl_tag this map comes from */ + uint8_t tag_idx; /* the fl->tag entry this map comes from */ #ifdef INVARIANTS - __be64 ba_tag; + __be64 ba_hwtag; #endif }; @@ -359,9 +359,22 @@ struct sge_eq { uint32_t unstalled; /* recovered from stall */ }; +struct fl_buf_info { + u_int size; + int type; + int hwtag:4; /* tag in low 4 bits of the pa. */ + uma_zone_t zone; +}; +#define FL_BUF_SIZES(sc) (sc->sge.fl_buf_sizes) +#define FL_BUF_SIZE(sc, x) (sc->sge.fl_buf_info[x].size) +#define FL_BUF_TYPE(sc, x) (sc->sge.fl_buf_info[x].type) +#define FL_BUF_HWTAG(sc, x) (sc->sge.fl_buf_info[x].hwtag) +#define FL_BUF_ZONE(sc, x) (sc->sge.fl_buf_info[x].zone) + enum { FL_STARVING = (1 << 0), /* on the adapter's list of starving fl's */ FL_DOOMED = (1 << 1), /* about to be destroyed */ + FL_BUF_PACKING = (1 << 2), /* buffer packing enabled */ }; #define FL_RUNNING_LOW(fl) (fl->cap - fl->needed <= fl->lowat) @@ -370,7 +383,8 @@ enum { struct sge_fl { bus_dma_tag_t desc_tag; bus_dmamap_t desc_map; - bus_dma_tag_t tag[FL_BUF_SIZES]; + bus_dma_tag_t tag[FL_BUF_SIZES_MAX]; /* only first FL_BUF_SIZES(sc) are + valid */ uint8_t tag_idx; struct mtx fl_lock; char lockname[16]; @@ -383,11 +397,13 @@ struct sge_fl { uint16_t qsize; /* size (# of entries) of the queue */ uint16_t cntxt_id; /* SGE context id for the freelist */ uint32_t cidx; /* consumer idx (buffer idx, NOT hw desc idx) */ + uint32_t rx_offset; /* offset in fl buf (when buffer packing) */ uint32_t pidx; /* producer idx (buffer idx, NOT hw desc idx) */ uint32_t needed; /* # of buffers needed to fill up fl. */ uint32_t lowat; /* # of buffers <= this means fl needs help */ uint32_t pending; /* # of bufs allocated since last doorbell */ - unsigned int dmamap_failed; + u_int dmamap_failed; + struct mbuf *mstash[8]; TAILQ_ENTRY(sge_fl) link; /* All starving freelists */ }; @@ -519,6 +535,9 @@ struct sge { int eq_start; struct sge_iq **iqmap; /* iq->cntxt_id to iq mapping */ struct sge_eq **eqmap; /* eq->cntxt_id to eq mapping */ + + u_int fl_buf_sizes __aligned(CACHE_LINE_SIZE); + struct fl_buf_info fl_buf_info[FL_BUF_SIZES_MAX]; }; struct rss_header; diff --git a/sys/dev/cxgbe/t4_sge.c b/sys/dev/cxgbe/t4_sge.c index 34bd27a..b46631e 100644 --- a/sys/dev/cxgbe/t4_sge.c +++ b/sys/dev/cxgbe/t4_sge.c @@ -56,19 +56,6 @@ __FBSDID("$FreeBSD$"); #include "common/t4_regs_values.h" #include "common/t4_msg.h" -struct fl_buf_info { - int size; - int type; - uma_zone_t zone; -}; - -/* Filled up by t4_sge_modload */ -static struct fl_buf_info fl_buf_info[FL_BUF_SIZES]; - -#define FL_BUF_SIZE(x) (fl_buf_info[x].size) -#define FL_BUF_TYPE(x) (fl_buf_info[x].type) -#define FL_BUF_ZONE(x) (fl_buf_info[x].zone) - #ifdef T4_PKT_TIMESTAMP #define RX_COPY_THRESHOLD (MINCLSIZE - 8) #else @@ -85,7 +72,8 @@ TUNABLE_INT("hw.cxgbe.fl_pktshift", &fl_pktshift); /* * Pad ethernet payload up to this boundary. * -1: driver should figure out a good value. - * Any power of 2, from 32 to 4096 (both inclusive) is a valid value. + * 0: disable padding. + * Any power of 2 from 32 to 4096 (both inclusive) is also a valid value. */ static int fl_pad = -1; TUNABLE_INT("hw.cxgbe.fl_pad", &fl_pad); @@ -107,6 +95,33 @@ TUNABLE_INT("hw.cxgbe.spg_len", &spg_len); static int cong_drop = 0; TUNABLE_INT("hw.cxgbe.cong_drop", &cong_drop); +/* + * Deliver multiple frames in the same free list buffer if they fit. + * -1: let the driver decide whether to enable buffer packing or not. + * 0: disable buffer packing. + * 1: enable buffer packing. + */ +static int buffer_packing = -1; +TUNABLE_INT("hw.cxgbe.buffer_packing", &buffer_packing); + +/* + * Start next frame in a packed buffer at this boundary. + * -1: driver should figure out a good value. + * T4: + * --- + * if fl_pad != 0 + * value specified here will be overridden by fl_pad. + * else + * power of 2 from 32 to 4096 (both inclusive) is a valid value here. + * T5: + * --- + * 16, or a power of 2 from 64 to 4096 (both inclusive) is a valid value. + */ +static int fl_pack = -1; +static int t4_fl_pack; +static int t5_fl_pack; +TUNABLE_INT("hw.cxgbe.fl_pack", &fl_pack); + /* Used to track coalesced tx work request */ struct txpkts { uint64_t *flitp; /* ptr to flit where next pkt should start */ @@ -123,12 +138,15 @@ struct sgl { }; static int service_iq(struct sge_iq *, int); -static struct mbuf *get_fl_payload(struct adapter *, struct sge_fl *, uint32_t, +static struct mbuf *get_fl_payload1(struct adapter *, struct sge_fl *, uint32_t, + int *); +static struct mbuf *get_fl_payload2(struct adapter *, struct sge_fl *, uint32_t, int *); static int t4_eth_rx(struct sge_iq *, const struct rss_header *, struct mbuf *); static inline void init_iq(struct sge_iq *, struct adapter *, int, int, int, int); -static inline void init_fl(struct sge_fl *, int, int, char *); +static inline void init_fl(struct adapter *, struct sge_fl *, int, int, int, + char *); static inline void init_eq(struct sge_eq *, int, int, uint8_t, uint16_t, char *); static int alloc_ring(struct adapter *, size_t, bus_dma_tag_t *, bus_dmamap_t *, @@ -170,8 +188,8 @@ static inline void ring_fl_db(struct adapter *, struct sge_fl *); static int refill_fl(struct adapter *, struct sge_fl *, int); static void refill_sfl(void *); static int alloc_fl_sdesc(struct sge_fl *); -static void free_fl_sdesc(struct sge_fl *); -static void set_fl_tag_idx(struct sge_fl *, int); +static void free_fl_sdesc(struct adapter *, struct sge_fl *); +static void set_fl_tag_idx(struct adapter *, struct sge_fl *, int); static void add_fl_to_sfl(struct adapter *, struct sge_fl *); static int get_pkt_sgl(struct sge_txq *, struct mbuf **, struct sgl *, int); @@ -202,27 +220,20 @@ extern u_int cpu_clflush_line_size; #endif /* - * Called on MOD_LOAD. Fills up fl_buf_info[] and validates/calculates the SGE - * tunables. + * Called on MOD_LOAD. Validates and calculates the SGE tunables. */ void t4_sge_modload(void) { - int i; - int bufsize[FL_BUF_SIZES] = { - MCLBYTES, -#if MJUMPAGESIZE != MCLBYTES - MJUMPAGESIZE, -#endif - MJUM9BYTES, - MJUM16BYTES - }; + int pad; - for (i = 0; i < FL_BUF_SIZES; i++) { - FL_BUF_SIZE(i) = bufsize[i]; - FL_BUF_TYPE(i) = m_gettype(bufsize[i]); - FL_BUF_ZONE(i) = m_getzone(bufsize[i]); - } + /* set pad to a reasonable powerof2 between 16 and 4096 (inclusive) */ +#if defined(__i386__) || defined(__amd64__) + pad = max(cpu_clflush_line_size, 16); +#else + pad = max(CACHE_LINE_SIZE, 16); +#endif + pad = min(pad, 4096); if (fl_pktshift < 0 || fl_pktshift > 7) { printf("Invalid hw.cxgbe.fl_pktshift value (%d)," @@ -230,23 +241,35 @@ t4_sge_modload(void) fl_pktshift = 2; } - if (fl_pad < 32 || fl_pad > 4096 || !powerof2(fl_pad)) { - int pad; - -#if defined(__i386__) || defined(__amd64__) - pad = max(cpu_clflush_line_size, 32); -#else - pad = max(CACHE_LINE_SIZE, 32); -#endif - pad = min(pad, 4096); + if (fl_pad != 0 && + (fl_pad < 32 || fl_pad > 4096 || !powerof2(fl_pad))) { if (fl_pad != -1) { printf("Invalid hw.cxgbe.fl_pad value (%d)," - " using %d instead.\n", fl_pad, pad); + " using %d instead.\n", fl_pad, max(pad, 32)); } - fl_pad = pad; + fl_pad = max(pad, 32); } + /* + * T4 has the same pad and pack boundary. If a pad boundary is set, + * pack boundary must be set to the same value. Otherwise take the + * specified value or auto-calculate something reasonable. + */ + if (fl_pad) + t4_fl_pack = fl_pad; + else if (fl_pack < 32 || fl_pack > 4096 || !powerof2(fl_pack)) + t4_fl_pack = max(pad, 32); + else + t4_fl_pack = fl_pack; + + /* T5's pack boundary is independent of the pad boundary. */ + if (fl_pack < 16 || fl_pack == 32 || fl_pack > 4096 || + !powerof2(fl_pack)) + t5_fl_pack = max(pad, 64); + else + t5_fl_pack = fl_pack; + if (spg_len != 64 && spg_len != 128) { int len; @@ -292,17 +315,41 @@ t4_tweak_chip_settings(struct adapter *sc) int timer_max = M_TIMERVALUE0 * 1000 / sc->params.vpd.cclk; int intr_pktcount[SGE_NCOUNTERS] = {1, 8, 16, 32}; /* 63 max */ uint16_t indsz = min(RX_COPY_THRESHOLD - 1, M_INDICATESIZE); + int sw_flbuf_sizes[] = { + MCLBYTES, +#if MJUMPAGESIZE != MCLBYTES + MJUMPAGESIZE, +#endif + MJUM9BYTES, + MJUM16BYTES, + MJUMPAGESIZE - MSIZE + }; KASSERT(sc->flags & MASTER_PF, ("%s: trying to change chip settings when not master.", __func__)); - m = V_PKTSHIFT(M_PKTSHIFT) | F_RXPKTCPLMODE | - V_INGPADBOUNDARY(M_INGPADBOUNDARY) | F_EGRSTATUSPAGESIZE; + m = V_PKTSHIFT(M_PKTSHIFT) | F_RXPKTCPLMODE | F_EGRSTATUSPAGESIZE; v = V_PKTSHIFT(fl_pktshift) | F_RXPKTCPLMODE | - V_INGPADBOUNDARY(ilog2(fl_pad) - 5) | V_EGRSTATUSPAGESIZE(spg_len == 128); + if (is_t4(sc) && (fl_pad || buffer_packing)) { + /* t4_fl_pack has the correct value even when fl_pad = 0 */ + m |= V_INGPADBOUNDARY(M_INGPADBOUNDARY); + v |= V_INGPADBOUNDARY(ilog2(t4_fl_pack) - 5); + } else if (is_t5(sc) && fl_pad) { + m |= V_INGPADBOUNDARY(M_INGPADBOUNDARY); + v |= V_INGPADBOUNDARY(ilog2(fl_pad) - 5); + } t4_set_reg_field(sc, A_SGE_CONTROL, m, v); + if (is_t5(sc) && buffer_packing) { + m = V_INGPACKBOUNDARY(M_INGPACKBOUNDARY); + if (t5_fl_pack == 16) + v = V_INGPACKBOUNDARY(0); + else + v = V_INGPACKBOUNDARY(ilog2(t5_fl_pack) - 5); + t4_set_reg_field(sc, A_SGE_CONTROL2, m, v); + } + v = V_HOSTPAGESIZEPF0(PAGE_SHIFT - 10) | V_HOSTPAGESIZEPF1(PAGE_SHIFT - 10) | V_HOSTPAGESIZEPF2(PAGE_SHIFT - 10) | @@ -313,9 +360,9 @@ t4_tweak_chip_settings(struct adapter *sc) V_HOSTPAGESIZEPF7(PAGE_SHIFT - 10); t4_write_reg(sc, A_SGE_HOST_PAGE_SIZE, v); - for (i = 0; i < FL_BUF_SIZES; i++) { + for (i = 0; i < min(nitems(sw_flbuf_sizes), 16); i++) { t4_write_reg(sc, A_SGE_FL_BUFFER_SIZE0 + (4 * i), - FL_BUF_SIZE(i)); + sw_flbuf_sizes[i]); } v = V_THRESHOLD_0(intr_pktcount[0]) | V_THRESHOLD_1(intr_pktcount[1]) | @@ -376,21 +423,48 @@ int t4_read_chip_settings(struct adapter *sc) { struct sge *s = &sc->sge; - int i, rc = 0; + int i, j, n, rc = 0; uint32_t m, v, r; uint16_t indsz = min(RX_COPY_THRESHOLD - 1, M_INDICATESIZE); + uint32_t sge_flbuf_sizes[16], sw_flbuf_sizes[] = { + MCLBYTES, +#if MJUMPAGESIZE != MCLBYTES + MJUMPAGESIZE, +#endif + MJUM9BYTES, + MJUM16BYTES + }; - m = V_PKTSHIFT(M_PKTSHIFT) | F_RXPKTCPLMODE | - V_INGPADBOUNDARY(M_INGPADBOUNDARY) | F_EGRSTATUSPAGESIZE; + m = V_PKTSHIFT(M_PKTSHIFT) | F_RXPKTCPLMODE | F_EGRSTATUSPAGESIZE; v = V_PKTSHIFT(fl_pktshift) | F_RXPKTCPLMODE | - V_INGPADBOUNDARY(ilog2(fl_pad) - 5) | V_EGRSTATUSPAGESIZE(spg_len == 128); + if (is_t4(sc) && (fl_pad || buffer_packing)) { + m |= V_INGPADBOUNDARY(M_INGPADBOUNDARY); + v |= V_INGPADBOUNDARY(ilog2(t4_fl_pack) - 5); + } else if (is_t5(sc) && fl_pad) { + m |= V_INGPADBOUNDARY(M_INGPADBOUNDARY); + v |= V_INGPADBOUNDARY(ilog2(fl_pad) - 5); + } r = t4_read_reg(sc, A_SGE_CONTROL); if ((r & m) != v) { device_printf(sc->dev, "invalid SGE_CONTROL(0x%x)\n", r); rc = EINVAL; } + if (is_t5(sc) && buffer_packing) { + m = V_INGPACKBOUNDARY(M_INGPACKBOUNDARY); + if (t5_fl_pack == 16) + v = V_INGPACKBOUNDARY(0); + else + v = V_INGPACKBOUNDARY(ilog2(t5_fl_pack) - 5); + r = t4_read_reg(sc, A_SGE_CONTROL2); + if ((r & m) != v) { + device_printf(sc->dev, + "invalid SGE_CONTROL2(0x%x)\n", r); + rc = EINVAL; + } + } + v = V_HOSTPAGESIZEPF0(PAGE_SHIFT - 10) | V_HOSTPAGESIZEPF1(PAGE_SHIFT - 10) | V_HOSTPAGESIZEPF2(PAGE_SHIFT - 10) | @@ -405,14 +479,45 @@ t4_read_chip_settings(struct adapter *sc) rc = EINVAL; } - for (i = 0; i < FL_BUF_SIZES; i++) { - v = t4_read_reg(sc, A_SGE_FL_BUFFER_SIZE0 + (4 * i)); - if (v != FL_BUF_SIZE(i)) { - device_printf(sc->dev, - "invalid SGE_FL_BUFFER_SIZE[%d](0x%x)\n", i, v); - rc = EINVAL; + /* + * Make a list of SGE FL buffer sizes programmed in the chip and tally + * it with the FL buffer sizes that we'd like to use. + */ + n = 0; + for (i = 0; i < nitems(sge_flbuf_sizes); i++) { + r = t4_read_reg(sc, A_SGE_FL_BUFFER_SIZE0 + (4 * i)); + sge_flbuf_sizes[i] = r; + if (r == MJUMPAGESIZE - MSIZE && + (sc->flags & BUF_PACKING_OK) == 0) { + sc->flags |= BUF_PACKING_OK; + FL_BUF_HWTAG(sc, n) = i; + FL_BUF_SIZE(sc, n) = MJUMPAGESIZE - MSIZE; + FL_BUF_TYPE(sc, n) = m_gettype(MJUMPAGESIZE); + FL_BUF_ZONE(sc, n) = m_getzone(MJUMPAGESIZE); + n++; + } + } + for (i = 0; i < nitems(sw_flbuf_sizes); i++) { + for (j = 0; j < nitems(sge_flbuf_sizes); j++) { + if (sw_flbuf_sizes[i] != sge_flbuf_sizes[j]) + continue; + FL_BUF_HWTAG(sc, n) = j; + FL_BUF_SIZE(sc, n) = sw_flbuf_sizes[i]; + FL_BUF_TYPE(sc, n) = m_gettype(sw_flbuf_sizes[i]); + FL_BUF_ZONE(sc, n) = m_getzone(sw_flbuf_sizes[i]); + n++; + break; } } + if (n == 0) { + device_printf(sc->dev, "no usable SGE FL buffer size.\n"); + rc = EINVAL; + } else if (n == 1 && (sc->flags & BUF_PACKING_OK)) { + device_printf(sc->dev, + "no usable SGE FL buffer size when not packing buffers.\n"); + rc = EINVAL; + } + FL_BUF_SIZES(sc) = n; r = t4_read_reg(sc, A_SGE_INGRESS_RX_THRESHOLD); s->counter_val[0] = G_THRESHOLD_0(r); @@ -515,6 +620,14 @@ t4_sge_sysctls(struct adapter *sc, struct sysctl_ctx_list *ctx, SYSCTL_ADD_INT(ctx, children, OID_AUTO, "cong_drop", CTLFLAG_RD, NULL, cong_drop, "congestion drop setting"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, "buffer_packing", CTLFLAG_RD, + NULL, sc->flags & BUF_PACKING_OK ? 1 : 0, + "pack multiple frames in one fl buffer"); + + SYSCTL_ADD_INT(ctx, children, OID_AUTO, "fl_pack", CTLFLAG_RD, + NULL, is_t5(sc) ? t5_fl_pack : t4_fl_pack, + "payload pack boundary (bytes)"); } int @@ -706,7 +819,7 @@ t4_setup_port_queues(struct port_info *pi) struct ifnet *ifp = pi->ifp; struct sysctl_oid *oid = device_get_sysctl_tree(pi->dev); struct sysctl_oid_list *children = SYSCTL_CHILDREN(oid); - int bufsize; + int bufsize, pack; oid = SYSCTL_ADD_NODE(&pi->ctx, children, OID_AUTO, "rxq", CTLFLAG_RD, NULL, "rx queues"); @@ -728,6 +841,12 @@ t4_setup_port_queues(struct port_info *pi) * b) allocate queue iff it will take direct interrupts. */ bufsize = mtu_to_bufsize(ifp->if_mtu); + if (sc->flags & BUF_PACKING_OK && + ((is_t5(sc) && buffer_packing) || /* 1 or -1 both ok for T5 */ + (is_t4(sc) && buffer_packing == 1))) + pack = 1; + else + pack = 0; for_each_rxq(pi, i, rxq) { init_iq(&rxq->iq, sc, pi->tmr_idx, pi->pktc_idx, pi->qsize_rxq, @@ -735,7 +854,7 @@ t4_setup_port_queues(struct port_info *pi) snprintf(name, sizeof(name), "%s rxq%d-fl", device_get_nameunit(pi->dev), i); - init_fl(&rxq->fl, pi->qsize_rxq / 8, bufsize, name); + init_fl(sc, &rxq->fl, pi->qsize_rxq / 8, bufsize, pack, name); if (sc->flags & INTR_DIRECT #ifdef TCP_OFFLOAD @@ -752,6 +871,7 @@ t4_setup_port_queues(struct port_info *pi) #ifdef TCP_OFFLOAD bufsize = mtu_to_bufsize_toe(sc, ifp->if_mtu); + pack = 0; /* XXX: think about this some more */ for_each_ofld_rxq(pi, i, ofld_rxq) { init_iq(&ofld_rxq->iq, sc, pi->tmr_idx, pi->pktc_idx, @@ -759,7 +879,8 @@ t4_setup_port_queues(struct port_info *pi) snprintf(name, sizeof(name), "%s ofld_rxq%d-fl", device_get_nameunit(pi->dev), i); - init_fl(&ofld_rxq->fl, pi->qsize_rxq / 8, bufsize, name); + init_fl(sc, &ofld_rxq->fl, pi->qsize_rxq / 8, bufsize, pack, + name); if (sc->flags & INTR_DIRECT || (sc->intr_count > 1 && pi->nofldrxq > pi->nrxq)) { @@ -1036,7 +1157,12 @@ service_iq(struct sge_iq *iq, int budget) ("%s: data for an iq (%p) with no freelist", __func__, iq)); - m0 = get_fl_payload(sc, fl, lq, &fl_bufs_used); + m0 = fl->flags & FL_BUF_PACKING ? + get_fl_payload1(sc, fl, lq, &fl_bufs_used) : + get_fl_payload2(sc, fl, lq, &fl_bufs_used); + + if (__predict_false(m0 == NULL)) + goto process_iql; #ifdef T4_PKT_TIMESTAMP /* * 60 bit timestamp for the payload is @@ -1136,6 +1262,7 @@ service_iq(struct sge_iq *iq, int budget) } } +process_iql: if (STAILQ_EMPTY(&iql)) break; @@ -1181,13 +1308,102 @@ service_iq(struct sge_iq *iq, int budget) return (0); } +static int +fill_mbuf_stash(struct sge_fl *fl) +{ + int i; + + for (i = 0; i < nitems(fl->mstash); i++) { + if (fl->mstash[i] == NULL) { + struct mbuf *m; + if ((m = m_get(M_NOWAIT, MT_NOINIT)) == NULL) + return (ENOBUFS); + fl->mstash[i] = m; + } + } + return (0); +} + static struct mbuf * -get_fl_payload(struct adapter *sc, struct sge_fl *fl, uint32_t len_newbuf, +get_mbuf_from_stash(struct sge_fl *fl) +{ + int i; + + for (i = 0; i < nitems(fl->mstash); i++) { + if (fl->mstash[i] != NULL) { + struct mbuf *m; + + m = fl->mstash[i]; + fl->mstash[i] = NULL; + return (m); + } else + fl->mstash[i] = m_get(M_NOWAIT, MT_NOINIT); + } + + return (m_get(M_NOWAIT, MT_NOINIT)); +} + +static void +return_mbuf_to_stash(struct sge_fl *fl, struct mbuf *m) +{ + int i; + + if (m == NULL) + return; + + for (i = 0; i < nitems(fl->mstash); i++) { + if (fl->mstash[i] == NULL) { + fl->mstash[i] = m; + return; + } + } + m_init(m, NULL, 0, M_NOWAIT, MT_DATA, 0); + m_free(m); +} + +/* buf can be any address within the buffer */ +static inline u_int * +find_buf_refcnt(caddr_t buf) +{ + uintptr_t ptr = (uintptr_t)buf; + + return ((u_int *)((ptr & ~(MJUMPAGESIZE - 1)) + MSIZE - sizeof(u_int))); +} + +static inline struct mbuf * +find_buf_mbuf(caddr_t buf) +{ + uintptr_t ptr = (uintptr_t)buf; + + return ((struct mbuf *)(ptr & ~(MJUMPAGESIZE - 1))); +} + +static int +rxb_free(struct mbuf *m, void *arg1, void *arg2) +{ + uma_zone_t zone = arg1; + caddr_t cl = arg2; +#ifdef INVARIANTS + u_int refcount; + + refcount = *find_buf_refcnt(cl); + KASSERT(refcount == 0, ("%s: cl %p refcount is %u", __func__, + cl - MSIZE, refcount)); +#endif + cl -= MSIZE; + uma_zfree(zone, cl); + + return (EXT_FREE_OK); +} + +static struct mbuf * +get_fl_payload1(struct adapter *sc, struct sge_fl *fl, uint32_t len_newbuf, int *fl_bufs_used) { struct mbuf *m0, *m; struct fl_sdesc *sd = &fl->sdesc[fl->cidx]; unsigned int nbuf, len; + int pack_boundary = is_t4(sc) ? t4_fl_pack : t5_fl_pack; /* * No assertion for the fl lock because we don't need it. This routine @@ -1198,29 +1414,194 @@ get_fl_payload(struct adapter *sc, struct sge_fl *fl, uint32_t len_newbuf, * lock but this routine does not). */ + KASSERT(fl->flags & FL_BUF_PACKING, + ("%s: buffer packing disabled for fl %p", __func__, fl)); + + len = G_RSPD_LEN(len_newbuf); + + if ((len_newbuf & F_RSPD_NEWBUF) == 0) { + KASSERT(fl->rx_offset > 0, + ("%s: packed frame but driver at offset=0", __func__)); + + /* A packed frame is guaranteed to fit entirely in this buf. */ + KASSERT(FL_BUF_SIZE(sc, sd->tag_idx) - fl->rx_offset >= len, + ("%s: packing error. bufsz=%u, offset=%u, len=%u", + __func__, FL_BUF_SIZE(sc, sd->tag_idx), fl->rx_offset, + len)); + + m0 = get_mbuf_from_stash(fl); + if (m0 == NULL || + m_init(m0, NULL, 0, M_NOWAIT, MT_DATA, M_PKTHDR) != 0) { + return_mbuf_to_stash(fl, m0); + return (NULL); + } + + bus_dmamap_sync(fl->tag[sd->tag_idx], sd->map, + BUS_DMASYNC_POSTREAD); + if (len < RX_COPY_THRESHOLD) { +#ifdef T4_PKT_TIMESTAMP + /* Leave room for a timestamp */ + m0->m_data += 8; +#endif + bcopy(sd->cl + fl->rx_offset, mtod(m0, caddr_t), len); + m0->m_pkthdr.len = len; + m0->m_len = len; + } else { + m0->m_pkthdr.len = len; + m0->m_len = len; + m_extaddref(m0, sd->cl + fl->rx_offset, + roundup2(m0->m_len, fl_pad), + find_buf_refcnt(sd->cl), rxb_free, + FL_BUF_ZONE(sc, sd->tag_idx), sd->cl); + } + fl->rx_offset += len; + fl->rx_offset = roundup2(fl->rx_offset, fl_pad); + fl->rx_offset = roundup2(fl->rx_offset, pack_boundary); + if (fl->rx_offset >= FL_BUF_SIZE(sc, sd->tag_idx)) { + fl->rx_offset = 0; + (*fl_bufs_used) += 1; + if (__predict_false(++fl->cidx == fl->cap)) + fl->cidx = 0; + } + + return (m0); + } + + KASSERT(len_newbuf & F_RSPD_NEWBUF, + ("%s: only new buffer handled here", __func__)); + + nbuf = 0; + + /* + * Move to the start of the next buffer if we are still in the middle of + * some buffer. This is the case where there was some room left in the + * previous buffer but not enough to fit this frame in its entirety. + */ + if (fl->rx_offset > 0) { + KASSERT(roundup2(len, fl_pad) > FL_BUF_SIZE(sc, sd->tag_idx) - + fl->rx_offset, ("%s: frame (%u bytes) should have fit at " + "cidx %u offset %u bufsize %u", __func__, len, fl->cidx, + fl->rx_offset, FL_BUF_SIZE(sc, sd->tag_idx))); + nbuf++; + fl->rx_offset = 0; + sd++; + if (__predict_false(++fl->cidx == fl->cap)) { + sd = fl->sdesc; + fl->cidx = 0; + } + } + + m0 = find_buf_mbuf(sd->cl); + if (m_init(m0, NULL, 0, M_NOWAIT, MT_DATA, M_PKTHDR | M_NOFREE)) + goto done; + bus_dmamap_sync(fl->tag[sd->tag_idx], sd->map, BUS_DMASYNC_POSTREAD); + m0->m_len = min(len, FL_BUF_SIZE(sc, sd->tag_idx)); + m_extaddref(m0, sd->cl, roundup2(m0->m_len, fl_pad), + find_buf_refcnt(sd->cl), rxb_free, FL_BUF_ZONE(sc, sd->tag_idx), + sd->cl); + m0->m_pkthdr.len = len; + + fl->rx_offset = roundup2(m0->m_len, fl_pad); + fl->rx_offset = roundup2(fl->rx_offset, pack_boundary); + if (fl->rx_offset >= FL_BUF_SIZE(sc, sd->tag_idx)) { + fl->rx_offset = 0; + nbuf++; + sd++; + if (__predict_false(++fl->cidx == fl->cap)) { + sd = fl->sdesc; + fl->cidx = 0; + } + } + + m = m0; + len -= m->m_len; + + while (len > 0) { + m->m_next = find_buf_mbuf(sd->cl); + m = m->m_next; + + bus_dmamap_sync(fl->tag[sd->tag_idx], sd->map, + BUS_DMASYNC_POSTREAD); + + /* m_init for !M_PKTHDR can't fail so don't bother */ + m_init(m, NULL, 0, M_NOWAIT, MT_DATA, M_NOFREE); + m->m_len = min(len, FL_BUF_SIZE(sc, sd->tag_idx)); + m_extaddref(m, sd->cl, roundup2(m->m_len, fl_pad), + find_buf_refcnt(sd->cl), rxb_free, + FL_BUF_ZONE(sc, sd->tag_idx), sd->cl); + + fl->rx_offset = roundup2(m->m_len, fl_pad); + fl->rx_offset = roundup2(fl->rx_offset, pack_boundary); + if (fl->rx_offset >= FL_BUF_SIZE(sc, sd->tag_idx)) { + fl->rx_offset = 0; + nbuf++; + sd++; + if (__predict_false(++fl->cidx == fl->cap)) { + sd = fl->sdesc; + fl->cidx = 0; + } + } + + len -= m->m_len; + } +done: + (*fl_bufs_used) += nbuf; + return (m0); +} + +static struct mbuf * +get_fl_payload2(struct adapter *sc, struct sge_fl *fl, uint32_t len_newbuf, + int *fl_bufs_used) +{ + struct mbuf *m0, *m; + struct fl_sdesc *sd = &fl->sdesc[fl->cidx]; + unsigned int nbuf, len; + + /* + * No assertion for the fl lock because we don't need it. This routine + * is called only from the rx interrupt handler and it only updates + * fl->cidx. (Contrast that with fl->pidx/fl->needed which could be + * updated in the rx interrupt handler or the starvation helper routine. + * That's why code that manipulates fl->pidx/fl->needed needs the fl + * lock but this routine does not). + */ + + KASSERT((fl->flags & FL_BUF_PACKING) == 0, + ("%s: buffer packing enabled for fl %p", __func__, fl)); if (__predict_false((len_newbuf & F_RSPD_NEWBUF) == 0)) panic("%s: cannot handle packed frames", __func__); len = G_RSPD_LEN(len_newbuf); - m0 = sd->m; - sd->m = NULL; /* consumed */ + /* + * We never want to run out of mbufs in between a frame when a frame + * spans multiple fl buffers. If the fl's mbuf stash isn't full and + * can't be filled up to the brim then fail early. + */ + if (len > FL_BUF_SIZE(sc, sd->tag_idx) && fill_mbuf_stash(fl) != 0) + return (NULL); + + m0 = get_mbuf_from_stash(fl); + if (m0 == NULL || + m_init(m0, NULL, 0, M_NOWAIT, MT_DATA, M_PKTHDR) != 0) { + return_mbuf_to_stash(fl, m0); + return (NULL); + } bus_dmamap_sync(fl->tag[sd->tag_idx], sd->map, BUS_DMASYNC_POSTREAD); - m_init(m0, NULL, 0, M_NOWAIT, MT_DATA, M_PKTHDR); -#ifdef T4_PKT_TIMESTAMP - /* Leave room for a timestamp */ - m0->m_data += 8; -#endif if (len < RX_COPY_THRESHOLD) { +#ifdef T4_PKT_TIMESTAMP + /* Leave room for a timestamp */ + m0->m_data += 8; +#endif /* copy data to mbuf, buffer will be recycled */ bcopy(sd->cl, mtod(m0, caddr_t), len); m0->m_len = len; } else { bus_dmamap_unload(fl->tag[sd->tag_idx], sd->map); - m_cljset(m0, sd->cl, FL_BUF_TYPE(sd->tag_idx)); + m_cljset(m0, sd->cl, FL_BUF_TYPE(sc, sd->tag_idx)); sd->cl = NULL; /* consumed */ - m0->m_len = min(len, FL_BUF_SIZE(sd->tag_idx)); + m0->m_len = min(len, FL_BUF_SIZE(sc, sd->tag_idx)); } m0->m_pkthdr.len = len; @@ -1235,23 +1616,23 @@ get_fl_payload(struct adapter *sc, struct sge_fl *fl, uint32_t len_newbuf, nbuf = 1; /* # of fl buffers used */ while (len > 0) { - m->m_next = sd->m; - sd->m = NULL; /* consumed */ + /* Can't fail, we checked earlier that the stash was full. */ + m->m_next = get_mbuf_from_stash(fl); m = m->m_next; bus_dmamap_sync(fl->tag[sd->tag_idx], sd->map, BUS_DMASYNC_POSTREAD); + /* m_init for !M_PKTHDR can't fail so don't bother */ m_init(m, NULL, 0, M_NOWAIT, MT_DATA, 0); if (len <= MLEN) { bcopy(sd->cl, mtod(m, caddr_t), len); m->m_len = len; } else { - bus_dmamap_unload(fl->tag[sd->tag_idx], - sd->map); - m_cljset(m, sd->cl, FL_BUF_TYPE(sd->tag_idx)); + bus_dmamap_unload(fl->tag[sd->tag_idx], sd->map); + m_cljset(m, sd->cl, FL_BUF_TYPE(sc, sd->tag_idx)); sd->cl = NULL; /* consumed */ - m->m_len = min(len, FL_BUF_SIZE(sd->tag_idx)); + m->m_len = min(len, FL_BUF_SIZE(sc, sd->tag_idx)); } sd++; @@ -1616,6 +1997,7 @@ void t4_update_fl_bufsize(struct ifnet *ifp) { struct port_info *pi = ifp->if_softc; + struct adapter *sc = pi->adapter; struct sge_rxq *rxq; #ifdef TCP_OFFLOAD struct sge_ofld_rxq *ofld_rxq; @@ -1628,7 +2010,7 @@ t4_update_fl_bufsize(struct ifnet *ifp) fl = &rxq->fl; FL_LOCK(fl); - set_fl_tag_idx(fl, bufsize); + set_fl_tag_idx(sc, fl, bufsize); FL_UNLOCK(fl); } #ifdef TCP_OFFLOAD @@ -1637,7 +2019,7 @@ t4_update_fl_bufsize(struct ifnet *ifp) fl = &ofld_rxq->fl; FL_LOCK(fl); - set_fl_tag_idx(fl, bufsize); + set_fl_tag_idx(sc, fl, bufsize); FL_UNLOCK(fl); } #endif @@ -1671,11 +2053,15 @@ init_iq(struct sge_iq *iq, struct adapter *sc, int tmr_idx, int pktc_idx, } static inline void -init_fl(struct sge_fl *fl, int qsize, int bufsize, char *name) +init_fl(struct adapter *sc, struct sge_fl *fl, int qsize, int bufsize, int pack, + char *name) { + fl->qsize = qsize; strlcpy(fl->lockname, name, sizeof(fl->lockname)); - set_fl_tag_idx(fl, bufsize); + if (pack) + fl->flags |= FL_BUF_PACKING; + set_fl_tag_idx(sc, fl, bufsize); } static inline void @@ -1804,7 +2190,7 @@ alloc_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl, if (fl) { mtx_init(&fl->fl_lock, fl->lockname, NULL, MTX_DEF); - for (i = 0; i < FL_BUF_SIZES; i++) { + for (i = 0; i < FL_BUF_SIZES(sc); i++) { /* * A freelist buffer must be 16 byte aligned as the SGE @@ -1813,8 +2199,8 @@ alloc_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl, */ rc = bus_dma_tag_create(sc->dmat, 16, 0, BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, NULL, - FL_BUF_SIZE(i), 1, FL_BUF_SIZE(i), BUS_DMA_ALLOCNOW, - NULL, NULL, &fl->tag[i]); + FL_BUF_SIZE(sc, i), 1, FL_BUF_SIZE(sc, i), + BUS_DMA_ALLOCNOW, NULL, NULL, &fl->tag[i]); if (rc != 0) { device_printf(sc->dev, "failed to create fl DMA tag[%d]: %d\n", @@ -1843,7 +2229,9 @@ alloc_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl, c.iqns_to_fl0congen |= htobe32(V_FW_IQ_CMD_FL0HOSTFCMODE(X_HOSTFCMODE_NONE) | F_FW_IQ_CMD_FL0FETCHRO | F_FW_IQ_CMD_FL0DATARO | - F_FW_IQ_CMD_FL0PADEN); + (fl_pad ? F_FW_IQ_CMD_FL0PADEN : 0) | + (fl->flags & FL_BUF_PACKING ? F_FW_IQ_CMD_FL0PACKEN : + 0)); if (cong >= 0) { c.iqns_to_fl0congen |= htobe32(V_FW_IQ_CMD_FL0CNGCHMAP(cong) | @@ -1964,12 +2352,21 @@ free_iq_fl(struct port_info *pi, struct sge_iq *iq, struct sge_fl *fl) fl->desc); if (fl->sdesc) - free_fl_sdesc(fl); + free_fl_sdesc(sc, fl); + + for (i = 0; i < nitems(fl->mstash); i++) { + struct mbuf *m = fl->mstash[i]; + + if (m != NULL) { + m_init(m, NULL, 0, M_NOWAIT, MT_DATA, 0); + m_free(m); + } + } if (mtx_initialized(&fl->fl_lock)) mtx_destroy(&fl->fl_lock); - for (i = 0; i < FL_BUF_SIZES; i++) { + for (i = 0; i < FL_BUF_SIZES(sc); i++) { if (fl->tag[i]) bus_dma_tag_destroy(fl->tag[i]); } @@ -2130,6 +2527,10 @@ alloc_rxq(struct port_info *pi, struct sge_rxq *rxq, int intr_idx, int idx, "SGE context id of the queue"); SYSCTL_ADD_UINT(&pi->ctx, children, OID_AUTO, "cidx", CTLFLAG_RD, &rxq->fl.cidx, 0, "consumer index"); + if (rxq->fl.flags & FL_BUF_PACKING) { + SYSCTL_ADD_UINT(&pi->ctx, children, OID_AUTO, "rx_offset", + CTLFLAG_RD, &rxq->fl.rx_offset, 0, "packing rx offset"); + } SYSCTL_ADD_UINT(&pi->ctx, children, OID_AUTO, "pidx", CTLFLAG_RD, &rxq->fl.pidx, 0, "producer index"); @@ -2691,6 +3092,12 @@ refill_fl(struct adapter *sc, struct sge_fl *fl, int nbufs) int rc; FL_LOCK_ASSERT_OWNED(fl); +#ifdef INVARIANTS + if (fl->flags & FL_BUF_PACKING) + KASSERT(sd->tag_idx == 0, + ("%s: expected tag 0 but found tag %d at pidx %u instead", + __func__, sd->tag_idx, fl->pidx)); +#endif if (nbufs > fl->needed) nbufs = fl->needed; @@ -2699,24 +3106,34 @@ refill_fl(struct adapter *sc, struct sge_fl *fl, int nbufs) if (sd->cl != NULL) { - /* - * This happens when a frame small enough to fit - * entirely in an mbuf was received in cl last time. - * We'd held on to cl and can reuse it now. Note that - * we reuse a cluster of the old size if fl->tag_idx is - * no longer the same as sd->tag_idx. - */ - - KASSERT(*d == sd->ba_tag, + KASSERT(*d == sd->ba_hwtag, ("%s: recyling problem at pidx %d", __func__, fl->pidx)); - d++; - goto recycled; - } + if (fl->flags & FL_BUF_PACKING) { + u_int *refcount = find_buf_refcnt(sd->cl); + if (atomic_fetchadd_int(refcount, -1) == 1) { + *refcount = 1; /* reinstate */ + d++; + goto recycled; + } + sd->cl = NULL; /* gave up my reference */ + } else { + /* + * This happens when a frame small enough to fit + * entirely in an mbuf was received in cl last + * time. We'd held on to cl and can reuse it + * now. Note that we reuse a cluster of the old + * size if fl->tag_idx is no longer the same as + * sd->tag_idx. + */ + d++; + goto recycled; + } + } - if (fl->tag_idx != sd->tag_idx) { + if (__predict_false(fl->tag_idx != sd->tag_idx)) { bus_dmamap_t map; bus_dma_tag_t newtag = fl->tag[fl->tag_idx]; bus_dma_tag_t oldtag = fl->tag[sd->tag_idx]; @@ -2736,33 +3153,32 @@ refill_fl(struct adapter *sc, struct sge_fl *fl, int nbufs) tag = fl->tag[sd->tag_idx]; - cl = m_cljget(NULL, M_NOWAIT, FL_BUF_SIZE(sd->tag_idx)); + cl = uma_zalloc(FL_BUF_ZONE(sc, sd->tag_idx), M_NOWAIT); if (cl == NULL) break; + if (fl->flags & FL_BUF_PACKING) { + *find_buf_refcnt(cl) = 1; + cl += MSIZE; + } - rc = bus_dmamap_load(tag, sd->map, cl, FL_BUF_SIZE(sd->tag_idx), - oneseg_dma_callback, &pa, 0); + rc = bus_dmamap_load(tag, sd->map, cl, + FL_BUF_SIZE(sc, sd->tag_idx), oneseg_dma_callback, &pa, 0); if (rc != 0 || pa == 0) { fl->dmamap_failed++; - uma_zfree(FL_BUF_ZONE(sd->tag_idx), cl); + if (fl->flags & FL_BUF_PACKING) + cl -= MSIZE; + uma_zfree(FL_BUF_ZONE(sc, sd->tag_idx), cl); break; } sd->cl = cl; - *d++ = htobe64(pa | sd->tag_idx); + *d++ = htobe64(pa | FL_BUF_HWTAG(sc, sd->tag_idx)); #ifdef INVARIANTS - sd->ba_tag = htobe64(pa | sd->tag_idx); + sd->ba_hwtag = htobe64(pa | FL_BUF_HWTAG(sc, sd->tag_idx)); #endif recycled: - /* sd->m is never recycled, should always be NULL */ - KASSERT(sd->m == NULL, ("%s: stray mbuf", __func__)); - - sd->m = m_gethdr(M_NOWAIT, MT_NOINIT); - if (sd->m == NULL) - break; - fl->pending++; fl->needed--; sd++; @@ -2829,11 +3245,6 @@ failed: while (--i >= 0) { sd--; bus_dmamap_destroy(tag, sd->map); - if (sd->m) { - m_init(sd->m, NULL, 0, M_NOWAIT, MT_DATA, 0); - m_free(sd->m); - sd->m = NULL; - } } KASSERT(sd == fl->sdesc, ("%s: EDOOFUS", __func__)); @@ -2844,7 +3255,7 @@ failed: } static void -free_fl_sdesc(struct sge_fl *fl) +free_fl_sdesc(struct adapter *sc, struct sge_fl *fl) { struct fl_sdesc *sd; int i; @@ -2852,15 +3263,9 @@ free_fl_sdesc(struct sge_fl *fl) sd = fl->sdesc; for (i = 0; i < fl->cap; i++, sd++) { - if (sd->m) { - m_init(sd->m, NULL, 0, M_NOWAIT, MT_DATA, 0); - m_free(sd->m); - sd->m = NULL; - } - if (sd->cl) { bus_dmamap_unload(fl->tag[sd->tag_idx], sd->map); - uma_zfree(FL_BUF_ZONE(sd->tag_idx), sd->cl); + uma_zfree(FL_BUF_ZONE(sc, sd->tag_idx), sd->cl); sd->cl = NULL; } @@ -3715,17 +4120,52 @@ get_flit(bus_dma_segment_t *sgl, int nsegs, int idx) return (0); } +/* + * Find an SGE FL buffer size to use for the given bufsize. Look for the the + * smallest size that is large enough to hold bufsize or pick the largest size + * if all sizes are less than bufsize. + */ static void -set_fl_tag_idx(struct sge_fl *fl, int bufsize) +set_fl_tag_idx(struct adapter *sc, struct sge_fl *fl, int bufsize) { - int i; + int i, largest, best, delta, start; - for (i = 0; i < FL_BUF_SIZES - 1; i++) { - if (FL_BUF_SIZE(i) >= bufsize) - break; + if (fl->flags & FL_BUF_PACKING) { + fl->tag_idx = 0; /* first tag is the one for packing */ + return; } - fl->tag_idx = i; + start = sc->flags & BUF_PACKING_OK ? 1 : 0; + delta = FL_BUF_SIZE(sc, start) - bufsize; + if (delta == 0) { + fl->tag_idx = start; /* ideal fit, look no further */ + return; + } + best = start; + largest = start; + + for (i = start + 1; i < FL_BUF_SIZES(sc); i++) { + int d, fl_buf_size; + + fl_buf_size = FL_BUF_SIZE(sc, i); + d = fl_buf_size - bufsize; + + if (d == 0) { + fl->tag_idx = i; /* ideal fit, look no further */ + return; + } + if (fl_buf_size > FL_BUF_SIZE(sc, largest)) + largest = i; + if (d > 0 && (delta < 0 || delta > d)) { + delta = d; + best = i; + } + } + + if (delta > 0) + fl->tag_idx = best; /* Found a buf bigger than bufsize */ + else + fl->tag_idx = largest; /* No buf large enough for bufsize */ } static void -- cgit v1.1 From 70b405bb1a0f0eb79efc5bbe4242c98baa4e1cbc Mon Sep 17 00:00:00 2001 From: cperciva Date: Fri, 30 Aug 2013 01:46:56 +0000 Subject: If reading a virtual-device value fails, attempt to read a virtual-device-ext value. Some hosts do not publish "extended" disk IDs via virtual-device in an attempt to avoid confusing old blkfront drivers, and without this change we failed to attach such disks. In particular, this commit allows all 24 ephemeral disks on EC2 hs1.8xlarge instances to be used, instead of only the first 15. MFC after: 3 days --- sys/dev/xen/blkfront/blkfront.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sys/dev/xen/blkfront/blkfront.c b/sys/dev/xen/blkfront/blkfront.c index 7d70f42..feb79a1 100644 --- a/sys/dev/xen/blkfront/blkfront.c +++ b/sys/dev/xen/blkfront/blkfront.c @@ -1409,6 +1409,9 @@ xbd_attach(device_t dev) /* FIXME: Use dynamic device id if this is not set. */ error = xs_scanf(XST_NIL, xenbus_get_node(dev), "virtual-device", NULL, "%" PRIu32, &vdevice); + if (error) + error = xs_scanf(XST_NIL, xenbus_get_node(dev), + "virtual-device-ext", NULL, "%" PRIu32, &vdevice); if (error) { xenbus_dev_fatal(dev, error, "reading virtual-device"); device_printf(dev, "Couldn't determine virtual device.\n"); -- cgit v1.1 From 52fb8d39b96999553e323b71edca7c86d9cb64bd Mon Sep 17 00:00:00 2001 From: np Date: Fri, 30 Aug 2013 02:13:36 +0000 Subject: Fix the sysctl that displays whether buffer packing is enabled or not. --- sys/dev/cxgbe/t4_sge.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/sys/dev/cxgbe/t4_sge.c b/sys/dev/cxgbe/t4_sge.c index b46631e..776b6c5 100644 --- a/sys/dev/cxgbe/t4_sge.c +++ b/sys/dev/cxgbe/t4_sge.c @@ -604,6 +604,17 @@ t4_create_dma_tag(struct adapter *sc) return (rc); } +static inline int +enable_buffer_packing(struct adapter *sc) +{ + + if (sc->flags & BUF_PACKING_OK && + ((is_t5(sc) && buffer_packing) || /* 1 or -1 both ok for T5 */ + (is_t4(sc) && buffer_packing == 1))) + return (1); + return (0); +} + void t4_sge_sysctls(struct adapter *sc, struct sysctl_ctx_list *ctx, struct sysctl_oid_list *children) @@ -622,7 +633,7 @@ t4_sge_sysctls(struct adapter *sc, struct sysctl_ctx_list *ctx, NULL, cong_drop, "congestion drop setting"); SYSCTL_ADD_INT(ctx, children, OID_AUTO, "buffer_packing", CTLFLAG_RD, - NULL, sc->flags & BUF_PACKING_OK ? 1 : 0, + NULL, enable_buffer_packing(sc), "pack multiple frames in one fl buffer"); SYSCTL_ADD_INT(ctx, children, OID_AUTO, "fl_pack", CTLFLAG_RD, @@ -841,12 +852,7 @@ t4_setup_port_queues(struct port_info *pi) * b) allocate queue iff it will take direct interrupts. */ bufsize = mtu_to_bufsize(ifp->if_mtu); - if (sc->flags & BUF_PACKING_OK && - ((is_t5(sc) && buffer_packing) || /* 1 or -1 both ok for T5 */ - (is_t4(sc) && buffer_packing == 1))) - pack = 1; - else - pack = 0; + pack = enable_buffer_packing(sc); for_each_rxq(pi, i, rxq) { init_iq(&rxq->iq, sc, pi->tmr_idx, pi->pktc_idx, pi->qsize_rxq, -- cgit v1.1 From 4b0fdddd629f96e1e496db03e429ab1a58c9af60 Mon Sep 17 00:00:00 2001 From: bryanv Date: Fri, 30 Aug 2013 05:53:00 +0000 Subject: Few more minor if_vmx tweaks - Allow the Rx/Tx queue sizes to be configured by tunables - Bail out earlier if the Tx queue unlikely has enough free descriptors to hold the frame - Cleanup some of the offloading capabilities handling --- share/man/man4/vmx.4 | 21 +++++++++- sys/dev/vmware/vmxnet3/if_vmx.c | 83 ++++++++++++++++++++++++++++---------- sys/dev/vmware/vmxnet3/if_vmxvar.h | 13 ++++-- 3 files changed, 92 insertions(+), 25 deletions(-) diff --git a/share/man/man4/vmx.4 b/share/man/man4/vmx.4 index 0e7b7f8..b33f1ed 100644 --- a/share/man/man4/vmx.4 +++ b/share/man/man4/vmx.4 @@ -81,6 +81,25 @@ VMware Fusion 2.0 and newer .Pp For more information on configuring this device, see .Xr ifconfig 8 . +.Sh LOADER TUNABLES +Tunables can be set at the +.Xr loader 8 +prompt before booting the kernel or stored in +.Xr loader.conf 5 . +.Bl -tag -width indent +.It Va hw.vmx.txndesc +.It Va hw.vmx. Ns Ar X Ns Va .txndesc +.Pp +Number of transmit descriptors allocated by the driver. +The default value is 512. +The value must be a multiple of 32, and the maximum is 4096. +.It Va hw.vmx.rxndesc +.It Va hw.vmx. Ns Ar X Ns Va .rxndesc +.Pp +Number of receive descriptors per ring allocated by the driver. +The default value is 256. +The value must be a multiple of 32, and the maximum is 2048. +There are two rings so the actual usage is doubled. .Sh EXAMPLES The following entry must be added to the VMware configuration file to provide the @@ -104,7 +123,7 @@ The .Nm driver was ported from .Ox -by +and significantly rewritten by .An Bryan Venteicher Aq bryanv@freebsd.org . The .Ox diff --git a/sys/dev/vmware/vmxnet3/if_vmx.c b/sys/dev/vmware/vmxnet3/if_vmx.c index 80707ff..1cab2d5 100644 --- a/sys/dev/vmware/vmxnet3/if_vmx.c +++ b/sys/dev/vmware/vmxnet3/if_vmx.c @@ -199,6 +199,8 @@ static int vmxnet3_dma_malloc(struct vmxnet3_softc *, bus_size_t, bus_size_t, struct vmxnet3_dma_alloc *); static void vmxnet3_dma_free(struct vmxnet3_softc *, struct vmxnet3_dma_alloc *); +static int vmxnet3_tunable_int(struct vmxnet3_softc *, + const char *, int); typedef enum { VMXNET3_BARRIER_RD, @@ -208,6 +210,12 @@ typedef enum { static void vmxnet3_barrier(struct vmxnet3_softc *, vmxnet3_barrier_t); +/* Tunables. */ +static int vmxnet3_default_txndesc = VMXNET3_DEF_TX_NDESC; +TUNABLE_INT("hw.vmx.txndesc", &vmxnet3_default_txndesc); +static int vmxnet3_default_rxndesc = VMXNET3_DEF_RX_NDESC; +TUNABLE_INT("hw.vmx.rxndesc", &vmxnet3_default_rxndesc); + static device_method_t vmxnet3_methods[] = { /* Device interface. */ DEVMETHOD(device_probe, vmxnet3_probe), @@ -453,11 +461,28 @@ vmxnet3_check_version(struct vmxnet3_softc *sc) static void vmxnet3_initial_config(struct vmxnet3_softc *sc) { + int ndesc; - sc->vmx_ntxqueues = 1; - sc->vmx_nrxqueues = 1; - sc->vmx_ntxdescs = VMXNET3_MAX_TX_NDESC; - sc->vmx_nrxdescs = VMXNET3_MAX_RX_NDESC; + /* + * BMV Much of the work is already done, but this driver does + * not support multiqueue yet. + */ + sc->vmx_ntxqueues = VMXNET3_TX_QUEUES; + sc->vmx_nrxqueues = VMXNET3_RX_QUEUES; + + ndesc = vmxnet3_tunable_int(sc, "txd", vmxnet3_default_txndesc); + if (ndesc > VMXNET3_MAX_TX_NDESC || ndesc < VMXNET3_MIN_TX_NDESC) + ndesc = VMXNET3_DEF_TX_NDESC; + if (ndesc & VMXNET3_MASK_TX_NDESC) + ndesc &= ~VMXNET3_MASK_TX_NDESC; + sc->vmx_ntxdescs = ndesc; + + ndesc = vmxnet3_tunable_int(sc, "rxd", vmxnet3_default_rxndesc); + if (ndesc > VMXNET3_MAX_RX_NDESC || ndesc < VMXNET3_MIN_RX_NDESC) + ndesc = VMXNET3_DEF_RX_NDESC; + if (ndesc & VMXNET3_MASK_RX_NDESC) + ndesc &= ~VMXNET3_MASK_RX_NDESC; + sc->vmx_nrxdescs = ndesc; sc->vmx_max_rxsegs = VMXNET3_MAX_RX_SEGS; } @@ -1382,10 +1407,10 @@ vmxnet3_reinit_shared_data(struct vmxnet3_softc *sc) ds = sc->vmx_ds; ds->upt_features = 0; - if (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) - ds->upt_features |= UPT1_F_VLAN; if (ifp->if_capenable & (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6)) ds->upt_features |= UPT1_F_CSUM; + if (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) + ds->upt_features |= UPT1_F_VLAN; if (ifp->if_capenable & IFCAP_LRO) ds->upt_features |= UPT1_F_LRO; @@ -1464,18 +1489,13 @@ vmxnet3_setup_interface(struct vmxnet3_softc *sc) ifp->if_capabilities |= IFCAP_RXCSUM | IFCAP_TXCSUM; ifp->if_capabilities |= IFCAP_RXCSUM_IPV6 | IFCAP_TXCSUM_IPV6; ifp->if_capabilities |= IFCAP_TSO4 | IFCAP_TSO6; - ifp->if_capabilities |= IFCAP_VLAN_MTU | IFCAP_VLAN_HWTAGGING; - ifp->if_hwassist |= VMXNET3_CSUM_ALL_OFFLOAD; - + ifp->if_capabilities |= IFCAP_VLAN_MTU | IFCAP_VLAN_HWTAGGING | + IFCAP_VLAN_HWCSUM; ifp->if_capenable = ifp->if_capabilities; - /* - * Capabilities after here are not enabled by default. - */ - - ifp->if_capabilities |= IFCAP_LRO; + /* These capabilities are not enabled by default. */ + ifp->if_capabilities |= IFCAP_LRO | IFCAP_VLAN_HWFILTER; - ifp->if_capabilities |= IFCAP_VLAN_HWFILTER; sc->vmx_vlan_attach = EVENTHANDLER_REGISTER(vlan_config, vmxnet3_register_vlan, sc, EVENTHANDLER_PRI_FIRST); sc->vmx_vlan_detach = EVENTHANDLER_REGISTER(vlan_config, @@ -2517,7 +2537,7 @@ vmxnet3_start_locked(struct ifnet *ifp) struct vmxnet3_txqueue *txq; struct vmxnet3_txring *txr; struct mbuf *m_head; - int tx; + int tx, avail; sc = ifp->if_softc; txq = &sc->vmx_txq[0]; @@ -2530,11 +2550,20 @@ vmxnet3_start_locked(struct ifnet *ifp) sc->vmx_link_active == 0) return; - while (VMXNET3_TXRING_AVAIL(txr) > 0) { + while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) { + if ((avail = VMXNET3_TXRING_AVAIL(txr)) < 2) + break; + IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head); if (m_head == NULL) break; + /* Assume worse case if this mbuf is the head of a chain. */ + if (m_head->m_next != NULL && avail < VMXNET3_TX_MAXSEGS) { + IFQ_DRV_PREPEND(&ifp->if_snd, m_head); + break; + } + if (vmxnet3_txq_encap(txq, &m_head) != 0) { if (m_head != NULL) IFQ_DRV_PREPEND(&ifp->if_snd, m_head); @@ -2752,8 +2781,8 @@ vmxnet3_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) ifp->if_capenable ^= IFCAP_TSO6; if (mask & (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6 | IFCAP_LRO | - IFCAP_VLAN_HWFILTER)) { - /* These Rx features require us to renegotiate. */ + IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_HWFILTER)) { + /* Changing these features requires us to reinit. */ reinit = 1; if (mask & IFCAP_RXCSUM) @@ -2762,6 +2791,8 @@ vmxnet3_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) ifp->if_capenable ^= IFCAP_RXCSUM_IPV6; if (mask & IFCAP_LRO) ifp->if_capenable ^= IFCAP_LRO; + if (mask & IFCAP_VLAN_HWTAGGING) + ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING; if (mask & IFCAP_VLAN_HWFILTER) ifp->if_capenable ^= IFCAP_VLAN_HWFILTER; } else @@ -2769,8 +2800,6 @@ vmxnet3_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) if (mask & IFCAP_VLAN_HWTSO) ifp->if_capenable ^= IFCAP_VLAN_HWTSO; - if (mask & IFCAP_VLAN_HWTAGGING) - ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING; if (reinit && (ifp->if_drv_flags & IFF_DRV_RUNNING)) { ifp->if_drv_flags &= ~IFF_DRV_RUNNING; @@ -3282,6 +3311,18 @@ vmxnet3_dma_free(struct vmxnet3_softc *sc, struct vmxnet3_dma_alloc *dma) bzero(dma, sizeof(struct vmxnet3_dma_alloc)); } +static int +vmxnet3_tunable_int(struct vmxnet3_softc *sc, const char *knob, int def) +{ + char path[64]; + + snprintf(path, sizeof(path), + "hw.vmx.%d.%s", device_get_unit(sc->vmx_dev), knob); + TUNABLE_INT_FETCH(path, &def); + + return (def); +} + /* * Since this is a purely paravirtualized device, we do not have * to worry about DMA coherency. But at times, we must make sure diff --git a/sys/dev/vmware/vmxnet3/if_vmxvar.h b/sys/dev/vmware/vmxnet3/if_vmxvar.h index f2dd52b..bbe5a4a 100644 --- a/sys/dev/vmware/vmxnet3/if_vmxvar.h +++ b/sys/dev/vmware/vmxnet3/if_vmxvar.h @@ -42,10 +42,17 @@ struct vmxnet3_dma_alloc { #define VMXNET3_RXRINGS_PERQ 2 /* - * The maximum number of descriptors in each Rx/Tx ring. + * The number of descriptors in each Rx/Tx ring. */ -#define VMXNET3_MAX_TX_NDESC 512 -#define VMXNET3_MAX_RX_NDESC 256 +#define VMXNET3_DEF_TX_NDESC 512 +#define VMXNET3_MAX_TX_NDESC 4096 +#define VMXNET3_MIN_TX_NDESC 32 +#define VMXNET3_MASK_TX_NDESC 0x1F +#define VMXNET3_DEF_RX_NDESC 256 +#define VMXNET3_MAX_RX_NDESC 2048 +#define VMXNET3_MIN_RX_NDESC 32 +#define VMXNET3_MASK_RX_NDESC 0x1F + #define VMXNET3_MAX_TX_NCOMPDESC VMXNET3_MAX_TX_NDESC #define VMXNET3_MAX_RX_NCOMPDESC \ (VMXNET3_MAX_RX_NDESC * VMXNET3_RXRINGS_PERQ) -- cgit v1.1 From e0b55fed21a8853d524e789d751457cd5920d6f3 Mon Sep 17 00:00:00 2001 From: erwin Date: Fri, 30 Aug 2013 06:21:00 +0000 Subject: Reduce WARNS to 0 for dig, host, and nslookup to make them compile with the optional WITH_BIND_SIGCHASE. Submitted by: Andre Albsmeier Approved by: delphij (mentor, implicit) MFC after: 3 days Sponsored by: DK Hostmaster A/S --- usr.bin/dig/Makefile | 2 +- usr.bin/host/Makefile | 2 +- usr.bin/nslookup/Makefile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/usr.bin/dig/Makefile b/usr.bin/dig/Makefile index ec11dc4..b76a0ca 100644 --- a/usr.bin/dig/Makefile +++ b/usr.bin/dig/Makefile @@ -20,7 +20,7 @@ CFLAGS+= -DWITH_IDN -I/usr/local/include CFLAGS+= -L/usr/local/lib -lidnkit -R/usr/local/lib -liconv .endif -WARNS?= 1 +WARNS?= 0 DPADD+= ${BIND_DPADD} ${CRYPTO_DPADD} ${PTHREAD_DPADD} LDADD+= ${BIND_LDADD} ${CRYPTO_LDADD} ${PTHREAD_LDADD} diff --git a/usr.bin/host/Makefile b/usr.bin/host/Makefile index e2909e1..d168a92 100644 --- a/usr.bin/host/Makefile +++ b/usr.bin/host/Makefile @@ -15,7 +15,7 @@ SRCS+= dighost.c host.c CFLAGS+= -I${SRCDIR}/include CFLAGS+= -I${BIND_DIR}/lib/isc/${ISC_ATOMIC_ARCH}/include -WARNS?= 1 +WARNS?= 0 DPADD+= ${BIND_DPADD} ${CRYPTO_DPADD} ${PTHREAD_DPADD} LDADD+= ${BIND_LDADD} ${CRYPTO_LDADD} ${PTHREAD_LDADD} diff --git a/usr.bin/nslookup/Makefile b/usr.bin/nslookup/Makefile index 9512d15..4ed0e92 100644 --- a/usr.bin/nslookup/Makefile +++ b/usr.bin/nslookup/Makefile @@ -18,7 +18,7 @@ CFLAGS+= -I${BIND_DIR}/lib/isc/${ISC_ATOMIC_ARCH}/include DPADD+= ${BIND_DPADD} ${CRYPTO_DPADD} ${PTHREAD_DPADD} ${LIBEDIT} LDADD+= ${BIND_LDADD} ${CRYPTO_LDADD} ${PTHREAD_LDADD} ${LIBEDIT} -WARNS?= 1 +WARNS?= 0 MANFILTER= sed -e "s@^host \[server\]@\\\fBhost\\\fR \\\fI[server]\\\fR@" -- cgit v1.1 From dc9c173247c790c181a79be41f9f9218a09e91de Mon Sep 17 00:00:00 2001 From: kib Date: Fri, 30 Aug 2013 07:37:45 +0000 Subject: Move the definition of the struct unrhdr into a separate header file, to allow embedding the struct. Add init_unrhdr(9) initializer, which sets up preallocated unrhdr. Reviewed by: alc Tested by: pho, bf --- sys/kern/subr_unit.c | 45 ++++++++++++++++++--------------------------- sys/sys/_unrhdr.h | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ sys/sys/systm.h | 1 + 3 files changed, 70 insertions(+), 27 deletions(-) create mode 100644 sys/sys/_unrhdr.h diff --git a/sys/kern/subr_unit.c b/sys/kern/subr_unit.c index 9cf1781..3bf7aaf 100644 --- a/sys/kern/subr_unit.c +++ b/sys/kern/subr_unit.c @@ -68,8 +68,8 @@ */ #include -#include #include +#include #ifdef _KERNEL @@ -187,22 +187,6 @@ CTASSERT(sizeof(struct unr) == sizeof(struct unrb)); /* Number of bits in the bitmap */ #define NBITS ((int)sizeof(((struct unrb *)NULL)->map) * 8) -/* Header element for a unr number space. */ - -struct unrhdr { - TAILQ_HEAD(unrhd,unr) head; - u_int low; /* Lowest item */ - u_int high; /* Highest item */ - u_int busy; /* Count of allocated items */ - u_int alloc; /* Count of memory allocations */ - u_int first; /* items in allocated from start */ - u_int last; /* items free at end */ - struct mtx *mtx; - TAILQ_HEAD(unrfr,unr) ppfree; /* Items to be freed after mtx - lock dropped */ -}; - - #if defined(DIAGNOSTIC) || !defined(_KERNEL) /* * Consistency check function. @@ -315,20 +299,12 @@ clean_unrhdr(struct unrhdr *uh) mtx_unlock(uh->mtx); } -/* - * Allocate a new unrheader set. - * - * Highest and lowest valid values given as parameters. - */ - -struct unrhdr * -new_unrhdr(int low, int high, struct mtx *mutex) +void +init_unrhdr(struct unrhdr *uh, int low, int high, struct mtx *mutex) { - struct unrhdr *uh; KASSERT(low >= 0 && low <= high, ("UNR: use error: new_unrhdr(%d, %d)", low, high)); - uh = Malloc(sizeof *uh); if (mutex != NULL) uh->mtx = mutex; else @@ -340,6 +316,21 @@ new_unrhdr(int low, int high, struct mtx *mutex) uh->first = 0; uh->last = 1 + (high - low); check_unrhdr(uh, __LINE__); +} + +/* + * Allocate a new unrheader set. + * + * Highest and lowest valid values given as parameters. + */ + +struct unrhdr * +new_unrhdr(int low, int high, struct mtx *mutex) +{ + struct unrhdr *uh; + + uh = Malloc(sizeof *uh); + init_unrhdr(uh, low, high, mutex); return (uh); } diff --git a/sys/sys/_unrhdr.h b/sys/sys/_unrhdr.h new file mode 100644 index 0000000..f3c25d1 --- /dev/null +++ b/sys/sys/_unrhdr.h @@ -0,0 +1,51 @@ +/*- + * Copyright (c) 2004 Poul-Henning Kamp + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _SYS_UNRHDR_H +#define _SYS_UNRHDR_H + +#include + +struct mtx; + +/* Header element for a unr number space. */ + +struct unrhdr { + TAILQ_HEAD(unrhd,unr) head; + u_int low; /* Lowest item */ + u_int high; /* Highest item */ + u_int busy; /* Count of allocated items */ + u_int alloc; /* Count of memory allocations */ + u_int first; /* items in allocated from start */ + u_int last; /* items free at end */ + struct mtx *mtx; + TAILQ_HEAD(unrfr,unr) ppfree; /* Items to be freed after mtx + lock dropped */ +}; + +#endif diff --git a/sys/sys/systm.h b/sys/sys/systm.h index 4887d71..e3ea9cf 100644 --- a/sys/sys/systm.h +++ b/sys/sys/systm.h @@ -396,6 +396,7 @@ int root_mounted(void); */ struct unrhdr; struct unrhdr *new_unrhdr(int low, int high, struct mtx *mutex); +void init_unrhdr(struct unrhdr *uh, int low, int high, struct mtx *mutex); void delete_unrhdr(struct unrhdr *uh); void clean_unrhdr(struct unrhdr *uh); void clean_unrhdrl(struct unrhdr *uh); -- cgit v1.1 From f8c0849efff16d60a8ceaa0515e45d857fdbad0c Mon Sep 17 00:00:00 2001 From: kib Date: Fri, 30 Aug 2013 07:42:38 +0000 Subject: Provide a wrapper for the INVPCID instruction, definition of the descriptor and symbolic names for the operation types. Sponsored by: The FreeBSD Foundation Reviewed by: alc Tested by: pho, bf --- sys/amd64/include/cpufunc.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/sys/amd64/include/cpufunc.h b/sys/amd64/include/cpufunc.h index 881fcd2..3d381c6 100644 --- a/sys/amd64/include/cpufunc.h +++ b/sys/amd64/include/cpufunc.h @@ -472,6 +472,26 @@ invlpg(u_long addr) __asm __volatile("invlpg %0" : : "m" (*(char *)addr) : "memory"); } +#define INVPCID_ADDR 0 +#define INVPCID_CTX 1 +#define INVPCID_CTXGLOB 2 +#define INVPCID_ALLCTX 3 + +struct invpcid_descr { + uint64_t pcid:12 __packed; + uint64_t pad:52 __packed; + uint64_t addr; +} __packed; + +static __inline void +invpcid(struct invpcid_descr *d, int type) +{ + + /* invpcid (%rdx),%rax */ + __asm __volatile(".byte 0x66,0x0f,0x38,0x82,0x02" + : : "d" (d), "a" ((u_long)type) : "memory"); +} + static __inline u_short rfs(void) { -- cgit v1.1 From 748f95c68727abdadaf3ea8816cc19784d05411d Mon Sep 17 00:00:00 2001 From: kib Date: Fri, 30 Aug 2013 07:43:34 +0000 Subject: Add BIT_AND_ATOMIC() and CPU_AND_ATOMIC(). Sponsored by: The FreeBSD Foundation Reviewed by: alc Tested by: pho, bf --- sys/sys/bitset.h | 9 ++++++++- sys/sys/cpuset.h | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/sys/sys/bitset.h b/sys/sys/bitset.h index dee5542..7c24ecd 100644 --- a/sys/sys/bitset.h +++ b/sys/sys/bitset.h @@ -135,7 +135,14 @@ atomic_set_long(&(p)->__bits[__bitset_word(_s, n)], \ __bitset_mask((_s), n)) -/* Convenience functions catering special cases. */ +/* Convenience functions catering special cases. */ +#define BIT_AND_ATOMIC(_s, d, s) do { \ + __size_t __i; \ + for (__i = 0; __i < __bitset_words((_s)); __i++) \ + atomic_clear_long(&(d)->__bits[__i], \ + ~(s)->__bits[__i]); \ +} while (0) + #define BIT_OR_ATOMIC(_s, d, s) do { \ __size_t __i; \ for (__i = 0; __i < __bitset_words((_s)); __i++) \ diff --git a/sys/sys/cpuset.h b/sys/sys/cpuset.h index fc078d3..e1ee37d 100644 --- a/sys/sys/cpuset.h +++ b/sys/sys/cpuset.h @@ -55,6 +55,7 @@ #define CPU_NAND(d, s) BIT_NAND(CPU_SETSIZE, d, s) #define CPU_CLR_ATOMIC(n, p) BIT_CLR_ATOMIC(CPU_SETSIZE, n, p) #define CPU_SET_ATOMIC(n, p) BIT_SET_ATOMIC(CPU_SETSIZE, n, p) +#define CPU_AND_ATOMIC(n, p) BIT_AND_ATOMIC(CPU_SETSIZE, n, p) #define CPU_OR_ATOMIC(d, s) BIT_OR_ATOMIC(CPU_SETSIZE, d, s) #define CPU_COPY_STORE_REL(f, t) BIT_COPY_STORE_REL(CPU_SETSIZE, f, t) #define CPU_FFS(p) BIT_FFS(CPU_SETSIZE, p) -- cgit v1.1 From a2b5da0090b331918b7db2ece8b9ca5d545d4a6c Mon Sep 17 00:00:00 2001 From: kib Date: Fri, 30 Aug 2013 07:59:49 +0000 Subject: Implement support for the process-context identifiers ('PCID') on Intel CPUs. The feature tags TLB entries with the Id of the address space and allows to avoid TLB invalidation on the context switch, it is available only in the long mode. In the microbenchmarks, using the PCID decreased latency of the context switches by ~30% on SandyBridge class desktop CPUs, measured with the lat_ctx program from lmbench. If available, use INVPCID instruction when a TLB entry in non-current address space needs to be invalidated. The instruction is typically available on the Haswell. If needed, the use of PCID can be turned off with the vm.pmap.pcid_enabled loader tunable set to 0. The state of the feature is reported by the vm.pmap.pcid_enabled sysctl. The sysctl vm.pmap.pcid_save_cnt reports the number of context switches which avoided invalidating the TLB; compare with the total number of context switches, available as sysctl vm.stats.sys.v_swtch. Sponsored by: The FreeBSD Foundation Reviewed by: alc Tested by: pho, bf --- sys/amd64/amd64/apic_vector.S | 241 ++++++++++++++++++++++++++++-------- sys/amd64/amd64/cpu_switch.S | 34 ++++-- sys/amd64/amd64/genassym.c | 4 + sys/amd64/amd64/machdep.c | 2 +- sys/amd64/amd64/mp_machdep.c | 62 +++++++--- sys/amd64/amd64/pmap.c | 276 +++++++++++++++++++++++++++++++++++++----- sys/amd64/amd64/vm_machdep.c | 2 + sys/amd64/include/pcpu.h | 2 + sys/amd64/include/pmap.h | 2 + sys/amd64/include/smp.h | 15 ++- 10 files changed, 527 insertions(+), 113 deletions(-) diff --git a/sys/amd64/amd64/apic_vector.S b/sys/amd64/amd64/apic_vector.S index 7551cc5..e868cf5 100644 --- a/sys/amd64/amd64/apic_vector.S +++ b/sys/amd64/amd64/apic_vector.S @@ -43,6 +43,12 @@ #include "assym.s" +#ifdef SMP +#define LK lock ; +#else +#define LK +#endif + /* * I/O Interrupt Entry Point. Rather than having one entry point for * each interrupt source, we use one entry point for each 32-bit word @@ -149,6 +155,38 @@ IDTVEC(xen_intr_upcall) * Global address space TLB shootdown. */ .text + +#define NAKE_INTR_CS 24 + + SUPERALIGN_TEXT +global_invltlb: + movl %cr4,%eax + andl $~0x80,%eax + movl %eax,%cr4 + orl $0x80,%eax + movl %eax,%cr4 +invltlb_ret_clear_pm_save: + movq smp_tlb_pmap,%rdx + testq %rdx,%rdx + jz invltlb_ret + testb $SEL_RPL_MASK,NAKE_INTR_CS(%rsp) + jz 1f + swapgs +1: + movl PCPU(CPUID),%eax + jz 2f + swapgs +2: + LK btcl %eax,PM_SAVE(%rdx) + SUPERALIGN_TEXT +invltlb_ret: + movq lapic, %rax + movl $0, LA_EOI(%rax) /* End Of Interrupt to APIC */ + LK incl smp_tlb_wait + popq %rdx + popq %rax + jmp doreti_iret + SUPERALIGN_TEXT IDTVEC(invltlb) #if defined(COUNT_XINVLTLB_HITS) || defined(COUNT_IPIS) @@ -165,18 +203,44 @@ IDTVEC(invltlb) #endif pushq %rax + pushq %rdx - movq %cr3, %rax /* invalidate the TLB */ - movq %rax, %cr3 - - movq lapic, %rax - movl $0, LA_EOI(%rax) /* End Of Interrupt to APIC */ - - lock - incl smp_tlb_wait - - popq %rax - jmp doreti_iret + movq %cr3,%rax + cmpl $0,pmap_pcid_enabled + je 2f + + movq $smp_tlb_invpcid,%rdx + cmpl $0,(%rdx) + je global_invltlb + cmpl $-1,(%rdx) + je global_invltlb + + /* + * Non-zero smp_tlb_invpcid, only invalidate TLB for entries with + * current PCID. + */ + cmpl $0,invpcid_works + je 1f + /* Use invpcid if available. */ + movl $1,%eax /* INVPCID_CTX */ + /* invpcid (%rdx),%rax */ + .byte 0x66,0x0f,0x38,0x82,0x02 + jmp invltlb_ret_clear_pm_save +1: + /* Otherwise reload %cr3 twice. */ + movq pcid_cr3,%rdx + cmpq %rax,%rdx + je 2f + movq %rdx,%cr3 /* Invalidate, bit 63 is zero. */ + btsq $63,%rax + + /* + * Invalidate the TLB if PCID is not enabled. + * Restore the old address space. + */ +2: + movq %rax,%cr3 + jmp invltlb_ret_clear_pm_save /* * Single page TLB shootdown @@ -198,18 +262,54 @@ IDTVEC(invlpg) #endif pushq %rax - - movq smp_tlb_addr1, %rax - invlpg (%rax) /* invalidate single page */ - - movq lapic, %rax - movl $0, LA_EOI(%rax) /* End Of Interrupt to APIC */ - - lock - incl smp_tlb_wait - - popq %rax - jmp doreti_iret + pushq %rdx + movq $smp_tlb_invpcid,%rdx + cmpl $0,pmap_pcid_enabled + je 3f + cmpl $0,invpcid_works + jne 2f + + /* kernel pmap - use invlpg to invalidate global mapping */ + cmpl $0,(%rdx) + je 3f + cmpl $-1,(%rdx) + je global_invltlb + + /* + * PCID supported, but INVPCID is not. + * Temporarily switch to the target address space and do INVLPG. + */ + pushq %rcx + movq %cr3,%rcx + movq pcid_cr3,%rax + cmp %rcx,%rax + je 1f + btsq $63,%rax + movq %rax,%cr3 +1: movq 8(%rdx),%rax + invlpg (%rax) + btsq $63,%rcx + movq %rcx,%cr3 + popq %rcx + jmp invltlb_ret + + /* + * Invalidate the TLB entry using INVPCID_ADDR. + */ +2: + xorl %eax,%eax +/* invpcid (%rdx),%rax */ + .byte 0x66,0x0f,0x38,0x82,0x02 + jmp invltlb_ret + + /* + * PCID is not supported or kernel pmap. + * Invalidate single page using INVLPG. + */ +3: + movq 8(%rdx),%rax + invlpg (%rax) + jmp invltlb_ret /* * Page range TLB shootdown. @@ -232,23 +332,76 @@ IDTVEC(invlrng) pushq %rax pushq %rdx - - movq smp_tlb_addr1, %rdx - movq smp_tlb_addr2, %rax + movq $smp_tlb_invpcid,%rdx + cmpl $0,pmap_pcid_enabled + jne invlrng_single_page + cmpl $0,invpcid_works + jne invlrng_invpcid + + /* kernel pmap - use invlpg to invalidate global mapping */ + cmpl $0,(%rdx) + je invlrng_single_page + cmpl $-1,(%rdx) + je global_invltlb + + pushq %rcx + movq %cr3,%rcx + movq pcid_cr3,%rax + cmpq %rcx,%rax + je 1f + btsq $63,%rax + movq %rax,%cr3 +1: + movq 8(%rdx),%rdx + movq smp_tlb_addr2,%rax +2: + invlpg (%rdx) + addq $PAGE_SIZE,%rdx + cmpq %rax,%rdx + jb 2b + btsq $63,%rcx + movq %rcx,%cr3 + popq %rcx + jmp invltlb_ret + +invlrng_invpcid: + testb $SEL_RPL_MASK,NAKE_INTR_CS(%rsp) + jz 1f + swapgs +1: + pushq %rcx + movq (%rdx),%rcx + movq %rcx,PCPU(INVPCID_DESCR) + movq 8(%rdx),%rax + movq %rax,PCPU(INVPCID_DESCR)+8 + movq smp_tlb_addr2,%rcx + xorl %eax,%eax + movq $PC_INVPCID_DESCR,%rdx + gs + subq 8(%rdx),%rcx + shrq $PAGE_SHIFT,%rcx +2: + gs +// invpcid (%rdx),%rax + .byte 0x66,0x0f,0x38,0x82,0x02 + gs + addq $PAGE_SIZE,8(%rdx) + dec %rcx + jne 2b + popq %rcx + testb $SEL_RPL_MASK,NAKE_INTR_CS(%rsp) + jz invltlb_ret + swapgs + jmp invltlb_ret + +invlrng_single_page: + movq 8(%rdx),%rdx + movq smp_tlb_addr2,%rax 1: invlpg (%rdx) /* invalidate single page */ - addq $PAGE_SIZE, %rdx - cmpq %rax, %rdx + addq $PAGE_SIZE,%rdx + cmpq %rax,%rdx jb 1b - - movq lapic, %rax - movl $0, LA_EOI(%rax) /* End Of Interrupt to APIC */ - - lock - incl smp_tlb_wait - - popq %rdx - popq %rax - jmp doreti_iret + jmp invltlb_ret /* * Invalidate cache. @@ -265,17 +418,9 @@ IDTVEC(invlcache) #endif pushq %rax - + pushq %rdx wbinvd - - movq lapic, %rax - movl $0, LA_EOI(%rax) /* End Of Interrupt to APIC */ - - lock - incl smp_tlb_wait - - popq %rax - jmp doreti_iret + jmp invltlb_ret /* * Handler for IPIs sent via the per-cpu IPI bitmap. diff --git a/sys/amd64/amd64/cpu_switch.S b/sys/amd64/amd64/cpu_switch.S index ed1ccb5..ac30990 100644 --- a/sys/amd64/amd64/cpu_switch.S +++ b/sys/amd64/amd64/cpu_switch.S @@ -77,8 +77,7 @@ ENTRY(cpu_throw) LK btrl %eax,PM_ACTIVE(%rdx) /* clear old */ 1: movq TD_PCB(%rsi),%r8 /* newtd->td_pcb */ - movq PCB_CR3(%r8),%rdx - movq %rdx,%cr3 /* new address space */ + movq PCB_CR3(%r8),%rcx /* new address space */ jmp swact END(cpu_throw) @@ -145,20 +144,41 @@ ctx_switch_xsave: SETLK %rdx, TD_LOCK(%rdi) /* Release the old thread */ jmp sw1 swinact: - movq %rcx,%cr3 /* new address space */ - movl PCPU(CPUID), %eax + movl PCPU(CPUID),%eax /* Release bit from old pmap->pm_active */ - movq PCPU(CURPMAP),%rcx - LK btrl %eax,PM_ACTIVE(%rcx) /* clear old */ - SETLK %rdx, TD_LOCK(%rdi) /* Release the old thread */ + movq PCPU(CURPMAP),%r12 + LK btrl %eax,PM_ACTIVE(%r12) /* clear old */ + SETLK %rdx,TD_LOCK(%rdi) /* Release the old thread */ swact: /* Set bit in new pmap->pm_active */ movq TD_PROC(%rsi),%rdx /* newproc */ movq P_VMSPACE(%rdx), %rdx addq $VM_PMAP,%rdx + cmpl $-1,PM_PCID(%rdx) + je 1f + LK btsl %eax,PM_SAVE(%rdx) + jnc 1f + btsq $63,%rcx /* CR3_PCID_SAVE */ + incq PCPU(PM_SAVE_CNT) +1: + movq %rcx,%cr3 /* new address space */ LK btsl %eax,PM_ACTIVE(%rdx) /* set new */ movq %rdx,PCPU(CURPMAP) + /* + * We might lose the race and other CPU might have changed + * the pmap after we set our bit in pmap->pm_save. Recheck. + * Reload %cr3 with CR3_PCID_SAVE bit cleared if pmap was + * modified, causing TLB flush for this pcid. + */ + btrq $63,%rcx + jnc 1f + LK btsl %eax,PM_SAVE(%rdx) + jc 1f + decq PCPU(PM_SAVE_CNT) + movq %rcx,%cr3 +1: + sw1: #if defined(SCHED_ULE) && defined(SMP) /* Wait for the new thread to become unblocked */ diff --git a/sys/amd64/amd64/genassym.c b/sys/amd64/amd64/genassym.c index 3043bb5..62017e7 100644 --- a/sys/amd64/amd64/genassym.c +++ b/sys/amd64/amd64/genassym.c @@ -76,6 +76,8 @@ __FBSDID("$FreeBSD$"); ASSYM(P_VMSPACE, offsetof(struct proc, p_vmspace)); ASSYM(VM_PMAP, offsetof(struct vmspace, vm_pmap)); ASSYM(PM_ACTIVE, offsetof(struct pmap, pm_active)); +ASSYM(PM_SAVE, offsetof(struct pmap, pm_save)); +ASSYM(PM_PCID, offsetof(struct pmap, pm_pcid)); ASSYM(P_MD, offsetof(struct proc, p_md)); ASSYM(MD_LDT, offsetof(struct mdproc, md_ldt)); @@ -225,6 +227,8 @@ ASSYM(PC_GS32P, offsetof(struct pcpu, pc_gs32p)); ASSYM(PC_LDT, offsetof(struct pcpu, pc_ldt)); ASSYM(PC_COMMONTSSP, offsetof(struct pcpu, pc_commontssp)); ASSYM(PC_TSS, offsetof(struct pcpu, pc_tss)); +ASSYM(PC_PM_SAVE_CNT, offsetof(struct pcpu, pc_pm_save_cnt)); +ASSYM(PC_INVPCID_DESCR, offsetof(struct pcpu, pc_invpcid_descr)); ASSYM(LA_VER, offsetof(struct LAPIC, version)); ASSYM(LA_TPR, offsetof(struct LAPIC, tpr)); diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c index 7f7e54a..f3969d3 100644 --- a/sys/amd64/amd64/machdep.c +++ b/sys/amd64/amd64/machdep.c @@ -1909,7 +1909,7 @@ hammer_time(u_int64_t modulep, u_int64_t physfree) /* setup proc 0's pcb */ thread0.td_pcb->pcb_flags = 0; - thread0.td_pcb->pcb_cr3 = KPML4phys; + thread0.td_pcb->pcb_cr3 = KPML4phys; /* PCID 0 is reserved for kernel */ thread0.td_frame = &proc0_tf; env = getenv("kernelname"); diff --git a/sys/amd64/amd64/mp_machdep.c b/sys/amd64/amd64/mp_machdep.c index 267b933..530aa61 100644 --- a/sys/amd64/amd64/mp_machdep.c +++ b/sys/amd64/amd64/mp_machdep.c @@ -107,9 +107,11 @@ struct pcb stoppcbs[MAXCPU]; struct pcb **susppcbs; /* Variables needed for SMP tlb shootdown. */ -vm_offset_t smp_tlb_addr1; vm_offset_t smp_tlb_addr2; +struct invpcid_descr smp_tlb_invpcid; volatile int smp_tlb_wait; +uint64_t pcid_cr3; +pmap_t smp_tlb_pmap; #ifdef COUNT_IPIS /* Interrupt counts. */ @@ -603,6 +605,8 @@ cpu_mp_announce(void) } } +extern int pmap_pcid_enabled; + /* * AP CPU's call this to initialize themselves. */ @@ -768,6 +772,8 @@ init_secondary(void) */ load_cr4(rcr4() | CR4_PGE); + if (pmap_pcid_enabled) + load_cr4(rcr4() | CR4_PCIDE); load_ds(_udatasel); load_es(_udatasel); load_fs(_ufssel); @@ -1119,7 +1125,8 @@ ipi_send_cpu(int cpu, u_int ipi) * Flush the TLB on all other CPU's */ static void -smp_tlb_shootdown(u_int vector, vm_offset_t addr1, vm_offset_t addr2) +smp_tlb_shootdown(u_int vector, pmap_t pmap, vm_offset_t addr1, + vm_offset_t addr2) { u_int ncpu; @@ -1129,8 +1136,16 @@ smp_tlb_shootdown(u_int vector, vm_offset_t addr1, vm_offset_t addr2) if (!(read_rflags() & PSL_I)) panic("%s: interrupts disabled", __func__); mtx_lock_spin(&smp_ipi_mtx); - smp_tlb_addr1 = addr1; + smp_tlb_invpcid.addr = addr1; + if (pmap == NULL) { + smp_tlb_invpcid.pcid = 0; + } else { + smp_tlb_invpcid.pcid = pmap->pm_pcid; + pcid_cr3 = DMAP_TO_PHYS((vm_offset_t)pmap->pm_pml4) | + (pmap->pm_pcid == -1 ? 0 : pmap->pm_pcid); + } smp_tlb_addr2 = addr2; + smp_tlb_pmap = pmap; atomic_store_rel_int(&smp_tlb_wait, 0); ipi_all_but_self(vector); while (smp_tlb_wait < ncpu) @@ -1139,7 +1154,8 @@ smp_tlb_shootdown(u_int vector, vm_offset_t addr1, vm_offset_t addr2) } static void -smp_targeted_tlb_shootdown(cpuset_t mask, u_int vector, vm_offset_t addr1, vm_offset_t addr2) +smp_targeted_tlb_shootdown(cpuset_t mask, u_int vector, pmap_t pmap, + vm_offset_t addr1, vm_offset_t addr2) { int cpu, ncpu, othercpus; @@ -1155,8 +1171,16 @@ smp_targeted_tlb_shootdown(cpuset_t mask, u_int vector, vm_offset_t addr1, vm_of if (!(read_rflags() & PSL_I)) panic("%s: interrupts disabled", __func__); mtx_lock_spin(&smp_ipi_mtx); - smp_tlb_addr1 = addr1; + smp_tlb_invpcid.addr = addr1; + if (pmap == NULL) { + smp_tlb_invpcid.pcid = 0; + } else { + smp_tlb_invpcid.pcid = pmap->pm_pcid; + pcid_cr3 = DMAP_TO_PHYS((vm_offset_t)pmap->pm_pml4) | + (pmap->pm_pcid == -1 ? 0 : pmap->pm_pcid); + } smp_tlb_addr2 = addr2; + smp_tlb_pmap = pmap; atomic_store_rel_int(&smp_tlb_wait, 0); if (CPU_ISFULLSET(&mask)) { ncpu = othercpus; @@ -1182,15 +1206,15 @@ smp_cache_flush(void) { if (smp_started) - smp_tlb_shootdown(IPI_INVLCACHE, 0, 0); + smp_tlb_shootdown(IPI_INVLCACHE, NULL, 0, 0); } void -smp_invltlb(void) +smp_invltlb(pmap_t pmap) { if (smp_started) { - smp_tlb_shootdown(IPI_INVLTLB, 0, 0); + smp_tlb_shootdown(IPI_INVLTLB, pmap, 0, 0); #ifdef COUNT_XINVLTLB_HITS ipi_global++; #endif @@ -1198,11 +1222,11 @@ smp_invltlb(void) } void -smp_invlpg(vm_offset_t addr) +smp_invlpg(pmap_t pmap, vm_offset_t addr) { if (smp_started) { - smp_tlb_shootdown(IPI_INVLPG, addr, 0); + smp_tlb_shootdown(IPI_INVLPG, pmap, addr, 0); #ifdef COUNT_XINVLTLB_HITS ipi_page++; #endif @@ -1210,11 +1234,11 @@ smp_invlpg(vm_offset_t addr) } void -smp_invlpg_range(vm_offset_t addr1, vm_offset_t addr2) +smp_invlpg_range(pmap_t pmap, vm_offset_t addr1, vm_offset_t addr2) { if (smp_started) { - smp_tlb_shootdown(IPI_INVLRNG, addr1, addr2); + smp_tlb_shootdown(IPI_INVLRNG, pmap, addr1, addr2); #ifdef COUNT_XINVLTLB_HITS ipi_range++; ipi_range_size += (addr2 - addr1) / PAGE_SIZE; @@ -1223,11 +1247,11 @@ smp_invlpg_range(vm_offset_t addr1, vm_offset_t addr2) } void -smp_masked_invltlb(cpuset_t mask) +smp_masked_invltlb(cpuset_t mask, pmap_t pmap) { if (smp_started) { - smp_targeted_tlb_shootdown(mask, IPI_INVLTLB, 0, 0); + smp_targeted_tlb_shootdown(mask, IPI_INVLTLB, NULL, 0, 0); #ifdef COUNT_XINVLTLB_HITS ipi_masked_global++; #endif @@ -1235,11 +1259,11 @@ smp_masked_invltlb(cpuset_t mask) } void -smp_masked_invlpg(cpuset_t mask, vm_offset_t addr) +smp_masked_invlpg(cpuset_t mask, pmap_t pmap, vm_offset_t addr) { if (smp_started) { - smp_targeted_tlb_shootdown(mask, IPI_INVLPG, addr, 0); + smp_targeted_tlb_shootdown(mask, IPI_INVLPG, pmap, addr, 0); #ifdef COUNT_XINVLTLB_HITS ipi_masked_page++; #endif @@ -1247,11 +1271,13 @@ smp_masked_invlpg(cpuset_t mask, vm_offset_t addr) } void -smp_masked_invlpg_range(cpuset_t mask, vm_offset_t addr1, vm_offset_t addr2) +smp_masked_invlpg_range(cpuset_t mask, pmap_t pmap, vm_offset_t addr1, + vm_offset_t addr2) { if (smp_started) { - smp_targeted_tlb_shootdown(mask, IPI_INVLRNG, addr1, addr2); + smp_targeted_tlb_shootdown(mask, IPI_INVLRNG, pmap, addr1, + addr2); #ifdef COUNT_XINVLTLB_HITS ipi_masked_range++; ipi_masked_range_size += (addr2 - addr1) / PAGE_SIZE; diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index 851f92a..bca40f0 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -116,11 +116,8 @@ __FBSDID("$FreeBSD$"); #include #include #include -#ifdef SMP +#include #include -#else -#include -#endif #include #include @@ -250,6 +247,53 @@ static struct md_page *pv_table; pt_entry_t *CMAP1 = 0; caddr_t CADDR1 = 0; +static struct unrhdr pcid_unr; +static struct mtx pcid_mtx; +int pmap_pcid_enabled = 1; +SYSCTL_INT(_vm_pmap, OID_AUTO, pcid_enabled, CTLFLAG_RDTUN, &pmap_pcid_enabled, + 0, "Is TLB Context ID enabled ?"); +int invpcid_works = 0; + +/* + * Perform the guaranteed invalidation of all TLB entries. This + * includes the global entries, and entries in all PCIDs, not only the + * current context. The function works both on non-PCID CPUs and CPUs + * with the PCID turned off or on. See IA-32 SDM Vol. 3a 4.10.4.1 + * Operations that Invalidate TLBs and Paging-Structure Caches. + */ +static __inline void +invltlb_globpcid(void) +{ + uint64_t cr4; + + cr4 = rcr4(); + load_cr4(cr4 & ~CR4_PGE); + /* + * Although preemption at this point could be detrimental to + * performance, it would not lead to an error. PG_G is simply + * ignored if CR4.PGE is clear. Moreover, in case this block + * is re-entered, the load_cr4() either above or below will + * modify CR4.PGE flushing the TLB. + */ + load_cr4(cr4 | CR4_PGE); +} + +static int +pmap_pcid_save_cnt_proc(SYSCTL_HANDLER_ARGS) +{ + int i; + uint64_t res; + + res = 0; + CPU_FOREACH(i) { + res += cpuid_to_pcpu[i]->pc_pm_save_cnt; + } + return (sysctl_handle_64(oidp, &res, 0, req)); +} +SYSCTL_PROC(_vm_pmap, OID_AUTO, pcid_save_cnt, CTLTYPE_U64 | CTLFLAG_RW | + CTLFLAG_MPSAFE, NULL, 0, pmap_pcid_save_cnt_proc, "QU", + "Count of saved TLB context on switch"); + /* * Crashdump maps. */ @@ -685,6 +729,7 @@ pmap_bootstrap(vm_paddr_t *firstaddr) PMAP_LOCK_INIT(kernel_pmap); kernel_pmap->pm_pml4 = (pdp_entry_t *)PHYS_TO_DMAP(KPML4phys); CPU_FILL(&kernel_pmap->pm_active); /* don't allow deactivation */ + CPU_ZERO(&kernel_pmap->pm_save); TAILQ_INIT(&kernel_pmap->pm_pvchunk); /* @@ -716,6 +761,21 @@ pmap_bootstrap(vm_paddr_t *firstaddr) /* Initialize the PAT MSR. */ pmap_init_pat(); + +#ifdef SMP + /* Initialize TLB Context Id. */ + TUNABLE_INT_FETCH("vm.pmap.pcid_enabled", &pmap_pcid_enabled); + if ((cpu_feature2 & CPUID2_PCID) != 0 && pmap_pcid_enabled) { + load_cr4(rcr4() | CR4_PCIDE); + mtx_init(&pcid_mtx, "pcid", NULL, MTX_DEF); + init_unrhdr(&pcid_unr, 1, (1 << 12) - 1, &pcid_mtx); + /* Check for INVPCID support */ + invpcid_works = (cpu_stdext_feature & CPUID_STDEXT_INVPCID) + != 0; + kernel_pmap->pm_pcid = 0; + } else +#endif + pmap_pcid_enabled = 0; } /* @@ -952,7 +1012,6 @@ pmap_cache_bits(int mode, boolean_t is_pde) static void pmap_update_pde_invalidate(vm_offset_t va, pd_entry_t newpde) { - u_long cr4; if ((newpde & PG_PS) == 0) /* Demotion: flush a specific 2MB page mapping. */ @@ -968,19 +1027,34 @@ pmap_update_pde_invalidate(vm_offset_t va, pd_entry_t newpde) * Promotion: flush every 4KB page mapping from the TLB, * including any global (PG_G) mappings. */ - cr4 = rcr4(); - load_cr4(cr4 & ~CR4_PGE); - /* - * Although preemption at this point could be detrimental to - * performance, it would not lead to an error. PG_G is simply - * ignored if CR4.PGE is clear. Moreover, in case this block - * is re-entered, the load_cr4() either above or below will - * modify CR4.PGE flushing the TLB. - */ - load_cr4(cr4 | CR4_PGE); + invltlb_globpcid(); } } #ifdef SMP + +static void +pmap_invalidate_page_pcid(pmap_t pmap, vm_offset_t va) +{ + struct invpcid_descr d; + uint64_t cr3; + + if (invpcid_works) { + d.pcid = pmap->pm_pcid; + d.pad = 0; + d.addr = va; + invpcid(&d, INVPCID_ADDR); + return; + } + + cr3 = rcr3(); + critical_enter(); + load_cr3(DMAP_TO_PHYS((vm_offset_t)pmap->pm_pml4) | pmap->pm_pcid | + CR3_PCID_SAVE); + invlpg(va); + load_cr3(cr3 | CR3_PCID_SAVE); + critical_exit(); +} + /* * For SMP, these functions have to use the IPI mechanism for coherence. * @@ -1008,21 +1082,68 @@ pmap_invalidate_page(pmap_t pmap, vm_offset_t va) sched_pin(); if (pmap == kernel_pmap || !CPU_CMP(&pmap->pm_active, &all_cpus)) { - invlpg(va); - smp_invlpg(va); + if (!pmap_pcid_enabled) { + invlpg(va); + } else { + if (pmap->pm_pcid != -1 && pmap->pm_pcid != 0) { + if (pmap == PCPU_GET(curpmap)) + invlpg(va); + else + pmap_invalidate_page_pcid(pmap, va); + } else { + invltlb_globpcid(); + } + } + smp_invlpg(pmap, va); } else { cpuid = PCPU_GET(cpuid); other_cpus = all_cpus; CPU_CLR(cpuid, &other_cpus); if (CPU_ISSET(cpuid, &pmap->pm_active)) invlpg(va); - CPU_AND(&other_cpus, &pmap->pm_active); + else if (pmap_pcid_enabled) { + if (pmap->pm_pcid != -1 && pmap->pm_pcid != 0) + pmap_invalidate_page_pcid(pmap, va); + else + invltlb_globpcid(); + } + if (pmap_pcid_enabled) + CPU_AND(&other_cpus, &pmap->pm_save); + else + CPU_AND(&other_cpus, &pmap->pm_active); if (!CPU_EMPTY(&other_cpus)) - smp_masked_invlpg(other_cpus, va); + smp_masked_invlpg(other_cpus, pmap, va); } sched_unpin(); } +static void +pmap_invalidate_range_pcid(pmap_t pmap, vm_offset_t sva, vm_offset_t eva) +{ + struct invpcid_descr d; + uint64_t cr3; + vm_offset_t addr; + + if (invpcid_works) { + d.pcid = pmap->pm_pcid; + d.pad = 0; + for (addr = sva; addr < eva; addr += PAGE_SIZE) { + d.addr = addr; + invpcid(&d, INVPCID_ADDR); + } + return; + } + + cr3 = rcr3(); + critical_enter(); + load_cr3(DMAP_TO_PHYS((vm_offset_t)pmap->pm_pml4) | pmap->pm_pcid | + CR3_PCID_SAVE); + for (addr = sva; addr < eva; addr += PAGE_SIZE) + invlpg(addr); + load_cr3(cr3 | CR3_PCID_SAVE); + critical_exit(); +} + void pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva) { @@ -1032,19 +1153,43 @@ pmap_invalidate_range(pmap_t pmap, vm_offset_t sva, vm_offset_t eva) sched_pin(); if (pmap == kernel_pmap || !CPU_CMP(&pmap->pm_active, &all_cpus)) { - for (addr = sva; addr < eva; addr += PAGE_SIZE) - invlpg(addr); - smp_invlpg_range(sva, eva); + if (!pmap_pcid_enabled) { + for (addr = sva; addr < eva; addr += PAGE_SIZE) + invlpg(addr); + } else { + if (pmap->pm_pcid != -1 && pmap->pm_pcid != 0) { + if (pmap == PCPU_GET(curpmap)) { + for (addr = sva; addr < eva; + addr += PAGE_SIZE) + invlpg(addr); + } else { + pmap_invalidate_range_pcid(pmap, + sva, eva); + } + } else { + invltlb_globpcid(); + } + } + smp_invlpg_range(pmap, sva, eva); } else { cpuid = PCPU_GET(cpuid); other_cpus = all_cpus; CPU_CLR(cpuid, &other_cpus); - if (CPU_ISSET(cpuid, &pmap->pm_active)) + if (CPU_ISSET(cpuid, &pmap->pm_active)) { for (addr = sva; addr < eva; addr += PAGE_SIZE) invlpg(addr); - CPU_AND(&other_cpus, &pmap->pm_active); + } else if (pmap_pcid_enabled) { + if (pmap->pm_pcid != -1 && pmap->pm_pcid != 0) + pmap_invalidate_range_pcid(pmap, sva, eva); + else + invltlb_globpcid(); + } + if (pmap_pcid_enabled) + CPU_AND(&other_cpus, &pmap->pm_save); + else + CPU_AND(&other_cpus, &pmap->pm_active); if (!CPU_EMPTY(&other_cpus)) - smp_masked_invlpg_range(other_cpus, sva, eva); + smp_masked_invlpg_range(other_cpus, pmap, sva, eva); } sched_unpin(); } @@ -1053,21 +1198,63 @@ void pmap_invalidate_all(pmap_t pmap) { cpuset_t other_cpus; + struct invpcid_descr d; + uint64_t cr3; u_int cpuid; sched_pin(); - if (pmap == kernel_pmap || !CPU_CMP(&pmap->pm_active, &all_cpus)) { - invltlb(); - smp_invltlb(); + cpuid = PCPU_GET(cpuid); + if (pmap == kernel_pmap || + (pmap_pcid_enabled && !CPU_CMP(&pmap->pm_save, &all_cpus)) || + !CPU_CMP(&pmap->pm_active, &all_cpus)) { + if (invpcid_works) { + bzero(&d, sizeof(d)); + invpcid(&d, INVPCID_CTXGLOB); + } else { + invltlb_globpcid(); + } + CPU_CLR_ATOMIC(cpuid, &pmap->pm_save); + smp_invltlb(pmap); } else { - cpuid = PCPU_GET(cpuid); other_cpus = all_cpus; CPU_CLR(cpuid, &other_cpus); - if (CPU_ISSET(cpuid, &pmap->pm_active)) + + /* + * This logic is duplicated in the Xinvltlb shootdown + * IPI handler. + */ + if (pmap_pcid_enabled) { + if (pmap->pm_pcid != -1 && pmap->pm_pcid != 0) { + if (invpcid_works) { + d.pcid = pmap->pm_pcid; + d.pad = 0; + d.addr = 0; + invpcid(&d, INVPCID_CTX); + } else { + cr3 = rcr3(); + critical_enter(); + + /* + * Bit 63 is clear, pcid TLB + * entries are invalidated. + */ + load_cr3(DMAP_TO_PHYS((vm_offset_t) + pmap->pm_pml4) | pmap->pm_pcid); + load_cr3(cr3 | CR3_PCID_SAVE); + critical_exit(); + } + } else { + invltlb_globpcid(); + } + } else if (CPU_ISSET(cpuid, &pmap->pm_active)) invltlb(); - CPU_AND(&other_cpus, &pmap->pm_active); + CPU_CLR_ATOMIC(cpuid, &pmap->pm_save); + if (pmap_pcid_enabled) + CPU_AND(&other_cpus, &pmap->pm_save); + else + CPU_AND(&other_cpus, &pmap->pm_active); if (!CPU_EMPTY(&other_cpus)) - smp_masked_invltlb(other_cpus); + smp_masked_invltlb(other_cpus, pmap); } sched_unpin(); } @@ -1129,8 +1316,10 @@ pmap_update_pde(pmap_t pmap, vm_offset_t va, pd_entry_t *pde, pd_entry_t newpde) CPU_CLR(cpuid, &other_cpus); if (pmap == kernel_pmap) active = all_cpus; - else + else { active = pmap->pm_active; + CPU_AND_ATOMIC(&pmap->pm_save, &active); + } if (CPU_OVERLAP(&active, &other_cpus)) { act.store = cpuid; act.invalidate = active; @@ -1193,6 +1382,8 @@ pmap_update_pde(pmap_t pmap, vm_offset_t va, pd_entry_t *pde, pd_entry_t newpde) pde_store(pde, newpde); if (pmap == kernel_pmap || !CPU_EMPTY(&pmap->pm_active)) pmap_update_pde_invalidate(va, newpde); + else + CPU_ZERO(&pmap->pm_save); } #endif /* !SMP */ @@ -1675,6 +1866,8 @@ pmap_pinit0(pmap_t pmap) PCPU_SET(curpmap, pmap); TAILQ_INIT(&pmap->pm_pvchunk); bzero(&pmap->pm_stats, sizeof pmap->pm_stats); + pmap->pm_pcid = pmap_pcid_enabled ? 0 : -1; + CPU_ZERO(&pmap->pm_save); } /* @@ -1716,6 +1909,8 @@ pmap_pinit(pmap_t pmap) CPU_ZERO(&pmap->pm_active); TAILQ_INIT(&pmap->pm_pvchunk); bzero(&pmap->pm_stats, sizeof pmap->pm_stats); + pmap->pm_pcid = pmap_pcid_enabled ? alloc_unr(&pcid_unr) : -1; + CPU_ZERO(&pmap->pm_save); return (1); } @@ -1957,6 +2152,14 @@ pmap_release(pmap_t pmap) KASSERT(vm_radix_is_empty(&pmap->pm_root), ("pmap_release: pmap has reserved page table page(s)")); + if (pmap_pcid_enabled) { + /* + * Invalidate any left TLB entries, to allow the reuse + * of the pcid. + */ + pmap_invalidate_all(pmap); + } + m = PHYS_TO_VM_PAGE(pmap->pm_pml4[PML4PML4I] & PG_FRAME); for (i = 0; i < NKPML4E; i++) /* KVA */ @@ -1968,6 +2171,8 @@ pmap_release(pmap_t pmap) m->wire_count--; atomic_subtract_int(&cnt.v_wire_count, 1); vm_page_free_zero(m); + if (pmap->pm_pcid != -1) + free_unr(&pcid_unr, pmap->pm_pcid); } static int @@ -5734,15 +5939,20 @@ pmap_activate(struct thread *td) critical_enter(); pmap = vmspace_pmap(td->td_proc->p_vmspace); oldpmap = PCPU_GET(curpmap); + CPU_ZERO(&pmap->pm_save); cpuid = PCPU_GET(cpuid); #ifdef SMP CPU_CLR_ATOMIC(cpuid, &oldpmap->pm_active); CPU_SET_ATOMIC(cpuid, &pmap->pm_active); + CPU_SET_ATOMIC(cpuid, &pmap->pm_save); #else CPU_CLR(cpuid, &oldpmap->pm_active); CPU_SET(cpuid, &pmap->pm_active); + CPU_SET(cpuid, &pmap->pm_save); #endif cr3 = DMAP_TO_PHYS((vm_offset_t)pmap->pm_pml4); + if (pmap->pm_pcid != -1) + cr3 |= pmap->pm_pcid; td->td_pcb->pcb_cr3 = cr3; load_cr3(cr3); PCPU_SET(curpmap, pmap); diff --git a/sys/amd64/amd64/vm_machdep.c b/sys/amd64/amd64/vm_machdep.c index ed0e7e9..3764f72 100644 --- a/sys/amd64/amd64/vm_machdep.c +++ b/sys/amd64/amd64/vm_machdep.c @@ -221,6 +221,8 @@ cpu_fork(td1, p2, td2, flags) */ pmap2 = vmspace_pmap(p2->p_vmspace); pcb2->pcb_cr3 = DMAP_TO_PHYS((vm_offset_t)pmap2->pm_pml4); + if (pmap2->pm_pcid != -1) + pcb2->pcb_cr3 |= pmap2->pm_pcid; pcb2->pcb_r12 = (register_t)fork_return; /* fork_trampoline argument */ pcb2->pcb_rbp = 0; pcb2->pcb_rsp = (register_t)td2->td_frame - sizeof(void *); diff --git a/sys/amd64/include/pcpu.h b/sys/amd64/include/pcpu.h index 1c83c2a..0e11975 100644 --- a/sys/amd64/include/pcpu.h +++ b/sys/amd64/include/pcpu.h @@ -67,6 +67,8 @@ struct system_segment_descriptor *pc_ldt; \ /* Pointer to the CPU TSS descriptor */ \ struct system_segment_descriptor *pc_tss; \ + uint64_t pc_pm_save_cnt; \ + char pc_invpcid_descr[16]; \ u_int pc_cmci_mask; /* MCx banks for CMCI */ \ uint64_t pc_dbreg[16]; /* ddb debugging regs */ \ int pc_dbreg_cmd; /* ddb debugging reg cmd */ \ diff --git a/sys/amd64/include/pmap.h b/sys/amd64/include/pmap.h index aacb9ba..fa42389 100644 --- a/sys/amd64/include/pmap.h +++ b/sys/amd64/include/pmap.h @@ -240,6 +240,8 @@ struct pmap { pml4_entry_t *pm_pml4; /* KVA of level 4 page table */ TAILQ_HEAD(,pv_chunk) pm_pvchunk; /* list of mappings in pmap */ cpuset_t pm_active; /* active on cpus */ + cpuset_t pm_save; /* Context valid on cpus mask */ + int pm_pcid; /* context id */ /* spare u_int here due to padding */ struct pmap_statistics pm_stats; /* pmap statistics */ struct vm_radix pm_root; /* spare page table pages */ diff --git a/sys/amd64/include/smp.h b/sys/amd64/include/smp.h index 16d87ea..d6cd476 100644 --- a/sys/amd64/include/smp.h +++ b/sys/amd64/include/smp.h @@ -54,6 +54,8 @@ inthand_t IDTVEC(cpususpend), /* CPU suspends & waits to be resumed */ IDTVEC(rendezvous); /* handle CPU rendezvous */ +struct pmap; + /* functions in mp_machdep.c */ void cpu_add(u_int apic_id, char boot_cpu); void cpustop_handler(void); @@ -67,13 +69,14 @@ int ipi_nmi_handler(void); void ipi_selected(cpuset_t cpus, u_int ipi); u_int mp_bootaddress(u_int); void smp_cache_flush(void); -void smp_invlpg(vm_offset_t addr); -void smp_masked_invlpg(cpuset_t mask, vm_offset_t addr); -void smp_invlpg_range(vm_offset_t startva, vm_offset_t endva); -void smp_masked_invlpg_range(cpuset_t mask, vm_offset_t startva, +void smp_invlpg(struct pmap *pmap, vm_offset_t addr); +void smp_masked_invlpg(cpuset_t mask, struct pmap *pmap, vm_offset_t addr); +void smp_invlpg_range(struct pmap *pmap, vm_offset_t startva, vm_offset_t endva); -void smp_invltlb(void); -void smp_masked_invltlb(cpuset_t mask); +void smp_masked_invlpg_range(cpuset_t mask, struct pmap *pmap, + vm_offset_t startva, vm_offset_t endva); +void smp_invltlb(struct pmap *pmap); +void smp_masked_invltlb(cpuset_t mask, struct pmap *pmap); #endif /* !LOCORE */ #endif /* SMP */ -- cgit v1.1 From 79ac01d192518923ff35984ca6cf99063106d933 Mon Sep 17 00:00:00 2001 From: pluknet Date: Fri, 30 Aug 2013 10:01:19 +0000 Subject: Typo in strtol(3). Noticed by: bde --- sbin/etherswitchcfg/etherswitchcfg.8 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sbin/etherswitchcfg/etherswitchcfg.8 b/sbin/etherswitchcfg/etherswitchcfg.8 index a4ffb0b..a8b8d1a 100644 --- a/sbin/etherswitchcfg/etherswitchcfg.8 +++ b/sbin/etherswitchcfg/etherswitchcfg.8 @@ -69,7 +69,7 @@ is usually the port number, and is the register number. Both can be provided as decimal, octal or hexadecimal numbers in any of the formats understood by -.Xr strtol 4 . +.Xr strtol 3 . To set the register value, use the form instance.register=value. .Ss port The port command selects one of the ports of the switch. -- cgit v1.1 From 5a68ee8757ca1727e386a511decd12b06cc46466 Mon Sep 17 00:00:00 2001 From: hselasky Date: Fri, 30 Aug 2013 10:39:56 +0000 Subject: Simplify pause_sbt() logic. Don't call DELAY() if remainder is less than or equal to zero. --- sys/kern/kern_synch.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c index 0996f4e..b0e1908 100644 --- a/sys/kern/kern_synch.c +++ b/sys/kern/kern_synch.c @@ -356,10 +356,7 @@ msleep_spin_sbt(void *ident, struct mtx *mtx, const char *wmesg, int pause_sbt(const char *wmesg, sbintime_t sbt, sbintime_t pr, int flags) { - int sbt_sec; - - sbt_sec = sbintime_getsec(sbt); - KASSERT(sbt_sec >= 0, ("pause: timo must be >= 0")); + KASSERT(sbt >= 0, ("pause: timeout must be >= 0")); /* silently convert invalid timeouts */ if (sbt == 0) @@ -370,11 +367,14 @@ pause_sbt(const char *wmesg, sbintime_t sbt, sbintime_t pr, int flags) * We delay one second at a time to avoid overflowing the * system specific DELAY() function(s): */ - while (sbt_sec > 0) { + while (sbt >= SBT_1S) { DELAY(1000000); - sbt_sec--; + sbt -= SBT_1S; } - DELAY((sbt & 0xffffffff) / SBT_1US); + /* Do the delay remainder, if any */ + sbt = (sbt + SBT_1US - 1) / SBT_1US; + if (sbt > 0) + DELAY(sbt); return (0); } return (_sleep(&pause_wchan[curcpu], NULL, 0, wmesg, sbt, pr, flags)); -- cgit v1.1 From 415d59b5d8e4982f162fcff84c3f0514a99b8ada Mon Sep 17 00:00:00 2001 From: jilles Date: Fri, 30 Aug 2013 10:45:02 +0000 Subject: sh: Cast -1 to pointer rather than pointer to variable of wrong type. NEOF needs to be a non-null pointer distinct from valid union node pointers. It is not dereferenced. The new NEOF is much like SIG_ERR except that it is an object pointer instead of a function pointer. The variable tokpushback can now be static. --- bin/sh/parser.c | 2 +- bin/sh/parser.h | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/bin/sh/parser.c b/bin/sh/parser.c index 795e3ee..b23f455 100644 --- a/bin/sh/parser.c +++ b/bin/sh/parser.c @@ -96,7 +96,7 @@ static struct heredoc *heredoclist; /* list of here documents to read */ static int doprompt; /* if set, prompt the user */ static int needprompt; /* true if interactive and at start of line */ static int lasttoken; /* last token read */ -int tokpushback; /* last token pushed back */ +static int tokpushback; /* last token pushed back */ static char *wordtext; /* text of last word returned by readtoken */ static int checkkwd; static struct nodelist *backquotelist; diff --git a/bin/sh/parser.h b/bin/sh/parser.h index b803f76..d500d2f 100644 --- a/bin/sh/parser.h +++ b/bin/sh/parser.h @@ -68,11 +68,9 @@ /* * NEOF is returned by parsecmd when it encounters an end of file. It - * must be distinct from NULL, so we use the address of a variable that - * happens to be handy. + * must be distinct from NULL. */ -extern int tokpushback; -#define NEOF ((union node *)&tokpushback) +#define NEOF ((union node *)-1) extern int whichprompt; /* 1 == PS1, 2 == PS2 */ extern const char *const parsekwd[]; -- cgit v1.1 From 0030cdac07df412f040b7616431b47c1265e0e69 Mon Sep 17 00:00:00 2001 From: pluknet Date: Fri, 30 Aug 2013 11:21:52 +0000 Subject: The round of expand_number() cleanups. o Fix range error checking to detect overflow when uint64_t < uintmax_t. o Remove a non-functional check for no valid digits as pointed out by Bruce. o Remove a rather pointless comment describing what the function does. o Clean up a bunch of style bugs. Brucified by: bde --- lib/libutil/expand_number.c | 39 ++++++++++----------------------------- 1 file changed, 10 insertions(+), 29 deletions(-) diff --git a/lib/libutil/expand_number.c b/lib/libutil/expand_number.c index 401e2d9..24bcc39 100644 --- a/lib/libutil/expand_number.c +++ b/lib/libutil/expand_number.c @@ -35,42 +35,24 @@ __FBSDID("$FreeBSD$"); #include #include -/* - * Convert an expression of the following forms to a uint64_t. - * 1) A positive decimal number. - * 2) A positive decimal number followed by a 'b' or 'B' (mult by 1). - * 3) A positive decimal number followed by a 'k' or 'K' (mult by 1 << 10). - * 4) A positive decimal number followed by a 'm' or 'M' (mult by 1 << 20). - * 5) A positive decimal number followed by a 'g' or 'G' (mult by 1 << 30). - * 6) A positive decimal number followed by a 't' or 'T' (mult by 1 << 40). - * 7) A positive decimal number followed by a 'p' or 'P' (mult by 1 << 50). - * 8) A positive decimal number followed by a 'e' or 'E' (mult by 1 << 60). - */ int expand_number(const char *buf, uint64_t *num) { + char *endptr; + uintmax_t umaxval; uint64_t number; - int saved_errno; unsigned shift; - char *endptr; + int serrno; - saved_errno = errno; + serrno = errno; errno = 0; - - number = strtoumax(buf, &endptr, 0); - - if (number == UINTMAX_MAX && errno == ERANGE) { - return (-1); - } - - if (errno == 0) - errno = saved_errno; - - if (endptr == buf) { - /* No valid digits. */ - errno = EINVAL; + umaxval = strtoumax(buf, &endptr, 0); + if (umaxval > UINT64_MAX) + errno = ERANGE; + if (errno != 0) return (-1); - } + errno = serrno; + number = umaxval; switch (tolower((unsigned char)*endptr)) { case 'e': @@ -106,7 +88,6 @@ expand_number(const char *buf, uint64_t *num) errno = ERANGE; return (-1); } - *num = number << shift; return (0); } -- cgit v1.1