openvswitch2.16-devel-2.16.0-112.el8s >  H d !F^(*vQ˗'iy<-W+0^ *PSl(p5e %V,=)uzB llư͉ =!\j~?G4iR}Lj{ :pӤA6ۈ#hu! KD X&7rJVM.I@b^)q2j>f{.F|ipxp q~EUoeuVpP*NRf s?aQ_G";%3LQ}/S[޸X1|)޿="QS9pig.APN7c[т T$༕)ΆI7l*O1Kn"i+)/!|ǮO{Z .>p<u?ud ( e.6 KEE JE E E -E EEUEEx   (8p9p:4pGhEHi,EIj@EXjYj\jE]kE^o!botdpepfplptpEuqEvsws8ExtLEyu` uuuuCopenvswitch2.16-devel2.16.0112.el8sOpen vSwitch OpenFlow development package (library, headers)This provides shared library, libopenswitch.so and the openvswitch header files needed to build an external application.d)mkojid-x86-02.rdu2.centos.org sCentOSCentOS Community Build ServiceASL 2.0CBS System Environment/Daemons daemon/database/utilitieshttp://www.openvswitch.org/linuxx86_64# PQNIn)7@9<&K+* )>U,;) n*< V U yy'#BnL8([ T . nI=4 ' = "d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(d(904813c8078bc01f8a36974f95f21affdbfbda4d71846ef37ccbbe234a6110324271784cc979835a9f97532052f74db6306ce4f94b13d0c5b1d7ba7d6352df393a3f7df6412b97eae22ccd1d42290cfe1c147dc034e8b9480232420295cff8e08f882eca6713b1bd6786dbc4baccc499becf40ace89a10a5e5cbe56e718f8924179f04b61148324280e960fba3abb9661c3697971672ad768ba82e316a43a551b3502c29b0c79f8d9f3cb14b983546d4eaeefc9f552b8dd396ec3b7ed0646a0fda215fa66e48fc2a5c253f392ffd6d959b6621ad6a8621fefe6bf842d6da4dab9956903a5b67f456c17bfb3d49ff1f57a090fbe35f22cb44e5c834f48a1bb36f01d1d77ac382501247ad59c07406ca7b84fe05329e2b04d6959d21e78390f37a357ab39008ce3a063da4a09050235cffb3c09a20bffdd43bf43389ffd27f3da7fd9f783ff0481fc679e7d305d02a48fbb5b8554ac62b3b7330678bc51f494c00dfec2338087062b2773b0a760ed03937afb3a262a522f15461634fc794d459c2a44e32644d49d00b3c8e4d090e7d8e4ca8d067a2807089a841b565a0445526507e318ec3b1c8569aa31035aacdfb2e63ad87773e48d83d5491b32899f25de091f856ef10590a46d3fb75da32f84f4a0072b8fe4e18a1750bc95a7888dfca0e651f669d50f1b1402eb389e6ff5334fdc7a802ff0ca51d551f2689dd5ae304b3a777586aeb31823980b25d473aab521b591b5996c17552ef42eaa757191e80c9d5194bc491ec3589be5d3a57482c949db1fa552d87a86ee412502e0906b9526d6c06ba8d5599a178367d3ce42dd62707b0b1ab8db4440408e1e5c002bcdda8168e2f2e44f977381b381b5d88a7318be098b0e2c9feaf19f959ea5ca58cb19814b2086774c716d7dbcb245e8b3249242e41739172409baa33a07f277d5615a2043aa0428fde81904727986f5b9e202f0c658aae4276c9e786cb4f1e36a8c74803ad0d9a1f68a6fae6d2b8ff510d6ea002b10f9bd415448cfdf60fcd0f61ec4f04b3023fd8a8d238e507e752f649dcd21082d86a8accab7c7999dc1d5eb7e0d57aa6613c00b0d4bc262bce871391f4b99673e6a6b7a8a90cd2f8c54f261ed0a22191c05850a22ce19ffd4a3f5af7b4673610dc9587e7fd3f3c912e2180bb1aeec3b342441e6c6b7edf788b11c8818042bb99bf68ecbb539512fec4c08512039e294f1d07977251481c53eab2aacf2b54db1b98be89c2985aff03d21368d01409c2f3122cd32f8e6c36ec9f07aaf08d8a1fb504d9c222aebe8f301ec2a68984fdf11cfae3a0545efa120a3daac4c1c0724066ecb6f9fe53b90a97fcac95e96f86a17f4190a6d95322edbcb9951e4c5205c63c796e9c63d70d0d47af51341f4a5b4f8654c02456ddaeb31027a539031efd673cb11848405f6f7d7ff78ea87dbff9980839ca3dda40415a80e5e5c31bc1133e9b190a18fc728ac8c368d2fe203cea1b11f8990df4084c2650c2a69c930b5baf93436c335d372669e1cd2a4befe1b1240e249556f2afa09043e3b9b0ae13cb16aa60d1ca83bb40ac6d6ee1884c26ec8332291e8d2e5c293ce0cab4b38b3223da8416e040b5d7e5eb3174a1533784e3eaf41eba0cd83f9f307c60c164a1387129a2d1c42b864551639c947986763c8161aacf8afe6dfbd3c02915479f9da13b27ed716229c6b0d87ff4858e84728c75c118684326319628951ca55c282c1cc462f6f005edde258d5324c68b096913a01ce6c9b93d707e7cae5c3c1440708d1f26c6bfa45d456f6ef8bad03b5f5fee6013571ef3735d5bddf51430cc1bfdc4881411d850788fb55c03ce740a429c607d0ded1aef169b0778a8925e28e70cdda4e40d6fd3c8e7028992cca3aee9c9e0f66022e260322fa76c447c32aa3af013d0c0e8cd0d10577b7c52f331e4edffb7b22a06c509eed3a8b38df67402a0684e7acfbcfb21a19789312202a633baf6a1b3ab5696336ea2a2a434d481a6254216e406a968215933e61ac41bb50c3a81c322fdb05a09c9947f1ecdafe2dc08c990de95679cbb792f2d3432325a54d48ab5db9a834fa3eab5a627ec795b91ab4655e7fd2167ac8d96c6ee292dbe846c424268aaac8aa710d029c10a632f3741affa49a1004b5cdf40260ede39d223b74f429e20e266c9412939375231d20ef8fa2c9d4c49d5a5ca997121aa54840a5af24cec4e7619c3bb7e6532ecbed68097f4cd7c14a50e5e02bece360a6001b10ab4c154ca0cd11d21a66a02472be2cd83949e4589a96a592638a3d8fff0c6c8db00f0c133486b474d2bf06c8b2cf5035f8061a825f62f852b98b45b484bb553c62eca889aca72c32ef5c737560502031af3cb363a5749efeffdb39a8382441317f2365851642b41f61297000368cdfa8fdff267aecf2547775233bf127334cf9b42988082025a38b942d02f32049601d0b9a17ec245b8e7c1338849e2a7223e373f479e2a95a768d4e28b7fe1ba596afbae1af2ea593cff460acb0c6f364b355fbb5a20d2b4f37bd160db3412ef6d5d665cd2afd43195c5a6506cb622f6f9a503d8d0009b4fa1d51b96dd993ef8b9281037a954bcf266ab1e9fb486b40a02ed19ee122cf2be2f667fe2fe435a75069ff45982a4699864eb8a95b534510a078af8b0b1dde1545f821fe9536081adacac18c6f2ccc17cdc58dab3f0f690a54b130c94ba56cc89ab86794396d9a0ee41e5d19b6ac5e0c57b32aff45990595f45be6020776295f33c00f2171a6e1e061d8f54d4024bca0bb277888ebbf886ed7907ba6dec6e864a5f9c3f9c18367999d8318f8b67214d15f181c897cc855fa83251ce96105eb2d96f98fcc7882a96b40110c6c020f99d38b4921d6ec2764fe9e9afddb27d5c7590libofproto-2.16.so.0.0.7libopenvswitch-2.16.so.0.0.7libovsdb-2.16.so.0.0.7libsflow-2.16.so.0.0.7libvtep-2.16.so.0.0.7rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootopenvswitch2.16-2.16.0-112.el8s.src.rpmopenvswitch2.16-developenvswitch2.16-devel(x86-64)pkgconfig(libofproto)pkgconfig(libopenvswitch)pkgconfig(libovsdb)pkgconfig(libsflow)@@@@@@    /usr/bin/pkg-configlibofproto-2.16.so.0()(64bit)libopenvswitch-2.16.so.0()(64bit)libovsdb-2.16.so.0()(64bit)libsflow-2.16.so.0()(64bit)libvtep-2.16.so.0()(64bit)openvswitch2.16rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)2.16.0-112.el8s3.0.4-14.6.0-14.0-15.2-14.14.3c>@cc @cc.c\cr-cb[c^g@cEZc< @c*c(Yc(Yc6@cM@b5@bbL@bbb@bbbޅb@b>b>b@bb@bb=b@bkb@bbrjbjbjbi0@bgbaG@b]RbP#bMbJbDF@bDF@bA@b+9b%b#Pb!@b bbbs@bs@b @b @bbb[@b ar@ar@a a@aaa7a@aNaaZ@a@a@aa@a@@aKa@a@a@ababazay?@av@aqV@an@ahaf@aexaexaUaTU@aTU@aTU@aTU@aTU@aQ@aLl@aC1a8a.a.a.a.a@a@Timothy Redaelli - 2.16.0-112Open vSwitch CI - 2.16.0-111Open vSwitch CI - 2.16.0-110Open vSwitch CI - 2.16.0-109Timothy Redaelli - 2.16.0-108Open vSwitch CI - 2.16.0-107Michael Santana - 2.16.0-106Open vSwitch CI - 2.16.0-105Timothy Redaelli - 2.16.0-104Aaron Conole - 2.16.0-103Timothy Redaelli - 2.16.0-102Timothy Redaelli - 2.16.0-101Open vSwitch CI - 2.16.0-100Open vSwitch CI - 2.16.0-99Timothy Redaelli - 2.16.0-98Open vSwitch CI - 2.16.0-97Open vSwitch CI - 2.16.0-96Timothy Redaelli - 2.16.0-95Open vSwitch CI - 2.16.0-94Open vSwitch CI - 2.16.0-93Open vSwitch CI - 2.16.0-92Open vSwitch CI - 2.16.0-91Open vSwitch CI - 2.16.0-90Open vSwitch CI - 2.16.0-89Open vSwitch CI - 2.16.0-88Open vSwitch CI - 2.16.0-87Open vSwitch CI - 2.16.0-86Open vSwitch CI - 2.16.0-85Open vSwitch CI - 2.16.0-84Open vSwitch CI - 2.16.0-83Open vSwitch CI - 2.16.0-82Open vSwitch CI - 2.16.0-81Open vSwitch CI - 2.16.0-80Open vSwitch CI - 2.16.0-79Ilya Maximets - 2.16.0-78Open vSwitch CI - 2.16.0-77Open vSwitch CI - 2.16.0-76Open vSwitch CI - 2.16.0-75Timothy Redaelli - 2.16.0-74Timothy Redaelli - 2.16.0-73Open vSwitch CI - 2.16.0-72Open vSwitch CI - 2.16.0-71Timothy Redaelli - 2.16.0-70Open vSwitch CI - 2.16.0-69Open vSwitch CI - 2.16.0-68Open vSwitch CI - 2.16.0-67Open vSwitch CI - 2.16.0-66Open vSwitch CI - 2.16.0-65Open vSwitch CI - 2.16.0-64Open vSwitch CI - 2.16.0-63Open vSwitch CI - 2.16.0-62Open vSwitch CI - 2.16.0-61Open vSwitch CI - 2.16.0-60Open vSwitch CI - 2.16.0-59Timothy Redaelli - 2.16.0-58Open vSwitch CI - 2.16.0-57Open vSwitch CI - 2.16.0-56Open vSwitch CI - 2.16.0-55Open vSwitch CI - 2.16.0-54Open vSwitch CI - 2.16.0-53Open vSwitch CI - 2.16.0-52Open vSwitch CI - 2.16.0-51Open vSwitch CI - 2.16.0-50Open vSwitch CI - 2.16.0-49Michael Santana - 2.16.0-48Open vSwitch CI - 2.16.0-47Open vSwitch CI - 2.16.0-46Ilya Maximets - 2.16.0-45Open vSwitch CI - 2.16.0-44Ilya Maximets - 2.16.0-43Ilya Maximets - 2.16.0-42Open vSwitch CI - 2.16.0-41Open vSwitch CI - 2.16.0-40Open vSwitch CI - 2.16.0-39Open vSwitch CI - 2.16.0-38Open vSwitch CI - 2.16.0-37Open vSwitch CI - 2.16.0-36Open vSwitch CI - 2.16.0-35Open vSwitch CI - 2.16.0-34Open vSwitch CI - 2.16.0-33Open vSwitch CI - 2.16.0-32Open vSwitch CI - 2.16.0-31Timothy Redaelli - 2.16.0-30Timothy Redaelli - 2.16.0-29Timothy Redaelli - 2.16.0-28Ilya Maximets - 2.16.0-27Ilya Maximets - 2.16.0-26Open vSwitch CI - 2.16.0-25Open vSwitch CI - 2.16.0-24Open vSwitch CI - 2.16.0-23Open vSwitch CI - 2.16.0-22Open vSwitch CI - 2.16.0-21Open vSwitch CI - 2.16.0-20Open vSwitch CI - 2.16.0-19Open vSwitch CI - 2.16.0-18Open vSwitch CI - 2.16.0-17Open vSwitch CI - 2.16.0-16Dumitru Ceara - 2.16.0-15Dumitru Ceara - 2.16.0-14Dumitru Ceara - 2.16.0-13Dumitru Ceara - 2.16.0-12Dumitru Ceara - 2.16.0-11Open vSwitch CI - 2.16.0-10Timothy Redaelli - 2.16.0-9Open vSwitch CI - 2.16.0-8Open vSwitch CI - 2.16.0-7Ilya Maximets - 2.16.0-6Ilya Maximets - 2.16.0-5Ilya Maximets - 2.16.0-4Ilya Maximets - 2.16.0-3Open vSwitch CI - 2.16.0-2Flavio Leitner - 2.16.0-1- redhat: add a workaround for meson [RH git: 371885ec0f] Currently, fast-datapath-rhel-8 is aligned to RHEL 8.0, with an exception to use a newer meson version. The problem is that, in the meanwhile, _smp_build_ncpus macros was added (and meson macros uses it). This commit just define, if needed, _smp_build_ncpus by stripping the first 2 characters (-j) from _smp_mflags that was present in RHEL 8.0. Signed-off-by: Timothy Redaelli - Merging upstream branch-2.16 [RH git: c5211d025a] Commit list: ac9cce1afc cirrus: Update to use FreeBSD 12.4.- Merging upstream branch-2.16 [RH git: 01d0b688c8] Commit list: 8d9177f6b1 dpif: Fix tunnel key set for IPv6 tunnels with SLOW_ACTION.- Merging upstream branch-2.16 [RH git: 53d801289d] Commit list: 679b27378a ci: Fix overriding OPTS provided from the yml. d5532f81e0 Prepare for 2.16.7. 68a258e86b Set release date for 2.16.6. b4837701b1 hash: Fix compilation error on Fedora 34 with GCC 11 and -O0. 70d64054df lldp: Fix bugs when parsing malformed AutoAttach. b345daf476 rculist: Use rculist_back_protected to access prev.- net/i40e: fix jumbo frame Rx with X722 [RH git: 72e2959a72] For NIC I40E_10G-10G_BASE_T_X722, when the port is configured with link speed, it cannot receive jumbo frame packets. Because it set maximum frame size failed when starts the port that the port link status is still down. This patch fix the error that starts the port will force set maximum frame size. Fixes: 2184f7cdeeaa ("net/i40e: fix max frame size config at port level") Cc: stable@dpdk.org Signed-off-by: Jie Wang Tested-by: Dukai Yuan (cherry picked from commit 719469f13b11dbdc921b74258f2d10bd1c5328d4)- Merging upstream branch-2.16 [RH git: 16b6203b1f] Commit list: 8ed497f6c1 rculist: Fix iteration macros. 76c935cbab learn: Fix parsing immediate value for a field match. b68533b094 datapath-windows: Check the condition to reset pseudo header checksum on Rx side- Merging 5488747abb netdev-offload-dpdk: Enhance the support of.. [RH git: b98298f07b] Commit list: 5488747abb netdev-offload-dpdk: Enhance the support of tunnel pop action a77c5f584a ci: Update meson requirement for DPDK. Resolves conflicts: .ci/linux-prepare.sh- Merging upstream branch-2.16 [RH git: f0d9ff1c0c] Commit list: d28eff1755 netdev-linux: Fix inability to apply QoS on ports with custom qdiscs. (#2138339) 89e1a2c934 vswitch.xml: Fix the name of rstp-path-cost option. df90768de3 bond: Fix crash while logging not yet enabled member.- Merging upstream branch-2.16 [RH git: 02276d0fef] Commit list: 91932ecfc1 unaligned: Correct the stats of packet_count and byte_count on Windows. f9a04f7e6b tests: Fix filtering of whole-second durations. 68fc14a3fd github: Update versions of action dependencies. 3d38056adf Prepare for 2.16.6. 2b931cd850 Set release date for 2.16.5. faeb53076c daemon-unix: Fix file descriptor leak when monitor restarts child. fd59944808 vconn: Allow ECONNREFUSED in refuse connection test. 11cefbb5f6 dpdk: Use DPDK 20.11.6 release.- netdev-linux: Skip some internal kernel stats gathering. [RH git: ce553c99e2] (#2118848) For netdev_linux_update_via_netlink(), hint to the kernel that we do not need it to gather netlink internal stats when we want to update the netlink flags, as those stats are not rendered within OVS. Background: ovs-vswitchd can spend quite a bit of time blocked by the kernel during netlink calls, especially systems with many cores. This time is dominated by the kernel-side internal stats gathering mechanism in netlink, specifically: inet6_fill_link_af inet6_fill_ifla6_attrs __snmp6_fill_stats64 In Linux 4.4+, there exists a hint for netlink requests to not trigger the ipv6 stats gathering mechanism, which greatly reduces the amount of time that ovs-vswitchd is on CPU. Testing and Results: Tested booting 320 VM's and measuring OVS utilization with perf record, then visualized into a flamegraph using a patched version of ovs 2.14.2. Calls under bridge_run() seem to get hit the worst by this issue. Before bridge_run() == 11.3% of samples After bridge_run() == 3.4% of samples Note that there are at least two observed netlink calls under bridge_run that are still kernel stats heavy after this patch: Call 1: bridge_run -> netdev_run -> route_table_run -> route_table_reset -> ovs_router_insert -> ovs_router_insert__ -> get_src_addr -> netdev_ger_addr_list -> netdev_linux_get_addr_list -> getifaddrs Since the actual netlink call is coming from getifaddrs() in glibc, fixing would likely involve either duplicating glibc code in ovs source or patch glibc. Call 2: bridge_run -> iface_refresh_stats -> netdev_get_stats -> netdev_linux_get_stats -> get_stats_via_netlink This does use netlink based stats; however, it isn't immediately clear if just dropping the stats from inet6_fill_link_af would impact anything or not. Given this call is more intermittent, its of lesser concern. Acked-by: Greg Smith Signed-off-by: Jon Kohler Signed-off-by: Ilya Maximets Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=2118848- redhat: get the NVR from spec file directly [RH git: fe9ce6cd83] Fixes: 339efe77c4c7 ("pkgtool: keep .el8s before added bz string")- vhost: fix virtqueue use after free on NUMA reallocation [RH git: 4f951e94df] [ upstream commit 0b2a2ca35037d6a5168f0832c11d9858b8ae946a ] translate_ring_addresses (via numa_realloc) may change a virtio device and virtio queue. The virtqueue object must be refreshed before accessing the lock. Fixes: 04c27cb673b9 ("vhost: fix unsafe vring addresses modifications") Signed-off-by: David Marchand Reviewed-by: Maxime Coquelin - Merging upstream branch-2.16 [RH git: 2a2df330a0] Commit list: 3c5902fa24 python: idl: Fix idl.Row.__str__ method.- Merging upstream branch-2.16 [RH git: 37cbf20177] Commit list: bae84a232f bond: Avoid deadlock while updating post recirculation rules. 58e4668a4f ofproto-dpif-upcall: Add debug commands to pause/resume revalidators. 6b1c9cd084 test-list: Fix false-positive build failure with GCC 12. f459f9b90f cirrus: Upgrade to FreeBSD 13.1 image.- Merging 73655c6414 version: 20.11.6 [RH git: 6bbfe5da8f] Commit list: 73655c6414 version: 20.11.6 ef311075d2 net/mlx5: fix Rx queue recovery mechanism 089e01b375 vhost: fix header spanned across more than two descriptors 8fff8520f3 vhost: discard too small descriptor chains 28596f9ebc vhost: prevent async register ff7d483aaa ethdev: fix RSS update when RSS is disabled 5a6aadbeec kni: fix build 01609d56cb net/virtio-user: fix socket non-blocking mode c5dc4f6eb5 version: 20.11.6-rc1 3e61bd97d9 doc: add more instructions for running as non-root aebfd0d746 net/mlx5: fix MPRQ pool registration ca78fec981 net/hns3: support backplane media type 9a7f5c16d0 net/mlx5: destroy indirect actions on port stop 4a35f74c8a net/mlx5/linux: fix missed Rx packet stats 153cef1fbf net/mlx5: handle MPRQ incompatibility with external buffers 38f1f47db1 vdpa/mlx5: workaround var offset within page 55942e4c4d vdpa/mlx5: fix maximum number of virtqs d702d0a0bd examples/link_status_interrupt: fix stats refresh rate 20f57bfbd7 gro: fix identifying fragmented packets da29560252 service: fix lingering active status edc80cd334 net/igc: support multi-process dcf5529145 vhost: add some trailing newline in log messages ecb5596929 net/vhost: fix deadlock on vring state change e29fe1799c doc: fix readability in vhost guide 9d474a9565 net/netvsc: fix vmbus device reference in multi-process 04e6368ccd app/testpmd: fix supported RSS offload display d3b24b9ea2 eventdev/eth_tx: fix queue delete e00e29a3ef doc: fix grammar and parameters in l2fwd-crypto guide d2384ccb95 doc: fix grammar and formatting in compressdev guide 0e387937c4 crypto/qat: fix DOCSIS crash c24e314609 examples/fips_validation: handle empty payload 4985a6b051 baseband/acc100: remove prefix of internal file 85c979edf5 test/crypto: fix SNOW3G vector IV format c263e1d047 test/crypto: fix ZUC vector IV format c268809192 test/crypto: fix authentication IV for ZUC SGL 21f394a60d net/bnxt: fix setting forced speed 9722929756 net/bnxt: allow Tx only or Rx only 71234d08d2 net/bnxt: fix switch domain allocation 3f6c57b6a3 examples/distributor: fix distributor on Rx core a035314c1e net/hns3: fix descriptors check with SVE 4fef76f744 test: check memory allocation for CRC ef31c19b76 app/procinfo: show all non-owned ports 67350d412d test/hash: fix out of bound access ed1bd718de rib: fix references for IPv6 implementation eb88adfe30 raw/ioat: fix build when ioat dmadev enabled 40538d0b04 net/mlx5: fix stack buffer overflow in drop action f371572a76 net/mlx5: fix RSS expansion for patterns with ICMP item 06375d5c71 net/mlx5: fix build with clang 14 35ab757a02 net/qede: fix build with GCC 12 d26e008757 net/ice/base: fix build with GCC 12 b9db1042c3 net/qede: fix build with GCC 13 ac50182289 net/octeontx: fix port close c9f6c89d9a ci: enable C++ check for Arm and PPC 45eb4af456 config: fix C++ cross compiler for Arm and PPC dbbdee4c12 malloc: fix allocation of almost hugepage size a0f0c7d9c5 vhost/crypto: fix descriptor processing 8aa20e45c6 vhost/crypto: fix build with GCC 12 338b9cbeb4 vhost: fix missing enqueue pseudo-header calculation bbba8ef0cd app/testpmd: revert MAC update in checksum forwarding 9b4779bfac net/txgbe: fix register polling 50c6ddd642 app/testpmd: fix bonding slave devices not released 35768b682b net/hns3: fix return value for unsupported tuple ecb5bc37dd net/hns3: remove duplicate definition 5b5935a922 net/hns3: fix an unreasonable memset 1adbdac76c test/bonding: fix RSS test when disable RSS da86d09eac net/bonding: fix RSS inconsistency between ports a6ae86b161 eventdev/eth_tx: fix adapter creation b39e829bac test/ipsec: fix performance test 8d49e2f6d1 test/crypto: fix cipher offset for ZUC cb03983da4 crypto/scheduler: fix queue pair in scheduler failover df7022dae8 test/ipsec: fix build with GCC 12 5dbe3a6dad common/cpt: fix build with GCC 12 0af3e2fef9 baseband/acc100: remove RTE prefix for internal macros 437389abd9 baseband/acc100: add protection for some negative scenario 34d98de156 baseband/acc100: update companion PF configure function 10cdabfc10 eal/x86: drop export of internal alignment macro a6388c7595 trace: fix init with long file prefix 3582b40156 app/flow-perf: fix build with GCC 12 b089558de0 vdpa/ifc: fix build with GCC 12 03197727fa net/ice: fix build with GCC 12 cd10d48dcc net/mlx5: fix LRO validation in Rx setup c352cf12f3 app/testpmd: fix port status of bonding slave device 93ca5fcf94 crypto/dpaa2_sec: fix crypto operation pointer 40b12a0561 net/mlx5: fix RSS hash types adjustment 145c5b453d net/bnxt: fix tunnel stateless offloads ee29f5fa6b vhost: fix async access c9a4ddc1e8 raw/ifpga: remove virtual devices on close 3590f93137 kni: use dedicated function to set MAC address 628b8d88c4 kni: use dedicated function to set random MAC address 59d08006aa app/testpmd: fix multicast address pool leak 9c1410c9b0 app/testpmd: fix packet segment allocation 641e8b889e doc: fix formatting and link in BPF library guide 8f68d6fdc6 bus/fslmc: fix VFIO setup 30c0b36a01 raw/ifpga: unregister interrupt on close 14a2726331 examples/dma: fix Tx drop statistics 6c17d92697 net/iavf: increase reset complete wait count 4d11ba721d net/ice: fix outer L4 checksum in scalar Rx 2d9b2c2190 doc: update matching versions in i40e guide 789223ef41 net/iavf: fix Rx queue interrupt setting 7ec8629367 net/iavf: fix mbuf release in multi-process 755ea301db net/iavf: fix queue start exception handling 5b55b9b1ea net/i40e: fix max frame size config at port level d731c37a84 net/ice: fix MTU info for DCF e2660944da net/ice/base: fix getting sched node from ID type 43eac062d1 net/ixgbe: add option for link up check on pin SDP3 e0658c3196 net/iavf: fix data path selection 133ec0ce1c kni: fix build with Linux 5.18 8048354bb7 net/mlx5: fix Tx recovery 27dda79b5d examples/vhost: fix crash when no VMDq 63005df100 vhost: fix deadlock when message handling failed 4daae0ccb8 doc: fix vhost multi-queue reconnection ff874e673a net/bnxt: fix compatibility with some old firmwares fa4da49c81 ethdev: fix port close in secondary process ac86ba961e net/nfp: fix disabling VLAN stripping ef9b301421 net/txgbe: fix max number of queues for SR-IOV d096c590de ethdev: fix port state when stop 89f54969e7 net/memif: fix overwriting of head segment 711575cd7f net/bonding: fix mbuf fast free usage bdf2967cd5 app/testpmd: do not poll stopped queues f6060b1689 ethdev: prohibit polling stopped queue b4f13e0fdb app/testpmd: fix metering and policing command for RFC4115 070f2b2b8a app/testpmd: replace hardcoded min mbuf number with macro fe09e56cb5 ethdev: fix possible null pointer access 7386b53220 ethdev: fix memory leak in xstats telemetry 7d17ff9a81 net/axgbe: fix xstats get return if xstats is null 2b88b790c1 net/mvpp2: fix xstats get return if xstats is null 007dfe4102 net/ipn3ke: fix xstats get return if xstats is null 17467579f7 net/hns3: fix xstats get return if xstats is null eb7b05b5de ethdev: clarify null location case in xstats get cf28773c93 app/testpmd: remove useless pointer checks 9463f695d7 app/testpmd: perform SW IP checksum for GRO/GSO packets 3b918bc711 doc: add missing auth algo for IPsec example 5e4a008e4e drivers/crypto: fix warnings for OpenSSL version 387d4b3ca7 test/crypto: fix null check for ZUC authentication b9b994dcf2 examples/ipsec-secgw: fix promiscuous mode option 78059ea5a5 examples/ipsec-secgw: fix uninitialized memory access b4797829e7 devtools: fix null test for NUMA systems 1d5a0d3379 doc: fix API index Markdown syntax de28f76399 mbuf: dump outer VLAN 52822a9dd8 rib: fix traversal with /32 route 3267a37602 acl: fix rules with 8-byte field size 20ee31283d test: avoid hang if queues are full and Tx fails 875e84259c eal/freebsd: fix use of newer cpuset macros 8d8739b082 test/ring: remove excessive inlining 597718802f examples/l3fwd: fix scalar LPM 705be73150 eal/x86: fix unaligned access for small memcpy ca4a019b45 net/bnxt: fix freeing VNIC filters 03a539bf17 net/bnxt: recheck FW readiness if in reset process c105904aaa net/bnxt: fix link status when port is stopped f5cee4b2ca net/bnxt: force PHY update on certain configurations 214e9d80be net/bnxt: fix speed autonegotiation adb37db48f net/bnxt: avoid unnecessary endianness conversion 167d0cbbfd net/bnxt: fix ring group on Rx restart c69db7f7f7 net/bnxt: fix Rx configuration 7ded422e25 net/bnxt: fix device capability reporting ae5516cd7a net/bnxt: remove unused macro 1dc7ed3e26 net/bnxt: fix reordering in NEON Rx 472844ca06 app/testpmd: check statistics query before printing c72194a754 net/hns3: remove unnecessary RSS switch 21c2dd6011 net/hns3: remove redundant RSS tuple field 7bce9bbfb8 net/hns3: fix rollback on RSS hash update 9bf4eb4b1a net/hns3: fix RSS disable 4997f02390 net/bonding: fix slave stop and remove on port close 5f9aca077f net/bonding: fix stopping non-active slaves d18ed4ab86 doc: update matching versions in ice guide ad18b9f42d net/dpaa: fix event queue detach 6111eb8b88 vdpa/mlx5: fix dead loop when process interrupted e8971ff299 vdpa/mlx5: fix interrupt trash that leads to crash 3763af6f3e vhost: fix missing virtqueue lock protection 45f14afcf9 net/vhost: fix TSO feature default disablement 15d4339cfd net/virtio: restore some optimisations with AVX512 e4729f10d0 net/vhost: fix access to freed memory 730c2afc40 net/cxgbe: fix Tx queue stuck with mbuf chain coalescing 063ce7b91c net/cxgbe: fix port ID in Rx mbuf 5e7c16ee76 net/bonding: fix RSS key config with extended key length 72144a630e net/nfp: remove unneeded header inclusion 23bfe0031f test/hash: report non HTM numbers for single thread c29b05c216 examples/l2fwd-crypto: fix stats refresh rate 25165ac241 common/dpaax: fix short MAC-I IV calculation for ZUC 6b38d08f0c crypto/dpaa2_sec: fix operation status for simple FD 45650937b4 crypto/dpaa_sec: fix secondary process probing faf1c3baa8 crypto/dpaa2_sec: fix buffer pool ID check 2a680bbbc7 crypto/dpaa2_sec: fix fle buffer leak 8856e5ecd7 crypto/dpaa_sec: fix digest size c1d1c4fdc3 eal: fix C++ include for device event and DMA ae1ed789dc mem: skip attaching external memory in secondary process 072f7ee470 test/table: fix buffer overflow on lpm entry c4d51b3f05 net/mlx5: fix Rx/Tx stats concurrency 8a2529276a net/mlx5: fix GTP handling in header modify action e8995a2540 net/mlx5: fix Tx when inlining is impossible a61bd9df25 net/netvsc: fix calculation of checksums based on mbuf flag 4d6996d25a net/i40e: populate error in flow director parser 236835c94f net/iavf: fix HW ring scan method selection faca682333 examples/bond: fix invalid use of trylock 9526e5c4a5 eal/windows: add missing C++ include guards 5888f84ccd eal/windows: fix data race when creating threads 3a9281f20e crypto/ipsec_mb: fix GMAC parameters setting 0fb580b1c0 crypto/ipsec_mb: fix length and offset settings abf68ccc8b version: 20.11.5 5ae73012c8 dpaa2: fix build with RTE_LIBRTE_IEEE1588 652658269f pmdinfogen: fix compilation with Clang 3.4.2 on CentOS 7 9b390c4866 Revert "regexdev: fix section attribute of symbols" e0c907be84 net/cxgbe: remove useless address check 576842a59a version: 20.11.5-rc1 fb2e2836bf cryptodev: add backward-compatible enum 5cb14d7436 raw/ifpga: fix build with optimization c93d1201cc doc: fix missing note on UIO module in Linux guide 5bc5bab0dc doc: replace characters for (R) symbol in Linux guide 1d25333ce0 net/mlx5: fix port matching in sample flow rule 6b92223d98 net/qede: fix Rx bulk mbuf allocation 540401728f net/octeontx2: fix flow MCAM priority management 975469beaa cryptodev: fix clang C++ include b16e4220e9 compressdev: fix missing space in log macro eca0c20f67 eal/freebsd: add missing C++ include guards dd8a852944 examples/l3fwd: fix buffer overflow in Tx 63f7788b20 app/testpmd: fix show RSS RETA on Windows 6fc2a8d499 bpf: fix build with some libpcap version on FreeBSD 63f156544d net/mlx5: fix sample flow action on trusted device 8c3269273e vhost: fix FD leak with inflight messages 9bac6ad862 vhost: fix queue number check when setting inflight FD cc761b30f0 net/mlx5: fix initial link status detection 76cfc69e0e net/mlx5: fix link status change detection c885a4871f common/mlx5: add Netlink event helpers 67cb024a79 raw/ifpga: fix interrupt handle allocation 5500586d7b examples/l3fwd: make Rx and Tx queue size configurable 920e858767 examples/l3fwd: share queue size variables d4b61e1bc9 net/iavf: fix potential out-of-bounds access 4c3ee24406 net/mlx5: fix MPLS/GRE Verbs spec ordering 5beedd0836 net/mlx5: remove unused reference counter 6979a661df net/mlx5: fix modify port action validation 093fbd470b net/mlx5: fix NIC egress flow mismatch in switchdev mode 42e5440e3f net/mlx5: fix shared RSS destroy cfcd67541c net/mlx5: fix next protocol RSS expansion f26a66edd5 net/mlx5: fix inet IPIP protocol type 5e42591829 net/bnxt: fix null dereference in session cleanup be45c834db ethdev: fix doxygen comments for device info struct 64452c878f regexdev: fix section attribute of symbols 2087ed6ae6 examples/kni: add missing trailing newline in log 9b1f77b32c examples/flow_classify: fix failure message 2ab2cfb2e8 examples/distributor: reduce Tx queue number to 1 5a62d76f89 app/pdump: abort on multi-core capture limit 40252a4876 raw/ifpga: fix monitor thread 3e06257cf5 raw/ifpga: fix variable initialization in probing a7b346dd4d examples/vhost: fix launch with physical port 76e812e3a5 net/ice: fix Tx offload path choice ee2cc7d349 net/mlx5: fix matcher priority with ICMP or ICMPv6 83781fe25a net/mlx5: fix GRE item translation in Verbs fa1579b29f doc: fix typos and punctuation in flow API guide 910925bc31 net/kni: fix config initialization fbc5f6b5fa net/txgbe: fix queue statistics mapping 63030f8b7b net/iavf: fix function pointer in multi-process f0a47837dd net/ixgbe: fix FSP check for X550EM devices 38dee9e84a net/hns3: increase time waiting for PF reset completion b27dbae232 net/hns3: fix VF RSS TC mode entry ff48dd55d6 net/hns3: fix RSS TC mode entry af3bd943ee net/hns3: remove duplicate macro definition 52e0989cce compressdev: fix socket ID type 6b75eeccec app/compress-perf: fix number of queue pairs to setup 9df88bfefe app/compress-perf: fix socket ID type during init c30254b5da app/compress-perf: optimize operations pool allocation a166f7044b app/compress-perf: fix cycle count operations allocation e4ca3c9295 net/mlx5: workaround ASO memory region creation 14849b1fa2 examples/qos_sched: fix compile failure eb0f31af87 net/mlx5: fix sibling device config check 950554a680 common/octeontx2: update mailbox version to 0xb 8d6bbbc514 kni: fix freeing order in device release 3cb68884dd eal/linux: fix illegal memory access in uevent handler 240dc513c2 distributor: fix potential overflow ffc6e4ea38 efd: fix uninitialized structure 5cd3c071a3 test/efd: fix sockets mask size 3fc564b2d0 app/testpmd: fix build without drivers 2d1c255f30 net/i40e: fix unintentional integer overflow 073988b862 doc: correct name of BlueField-2 in mlx5 guide dc599f85f7 doc: replace broken links in mlx guides d07cbead1d doc: remove obsolete vector Tx explanations from mlx5 guide 15f171576e common/mlx5: fix queue pair ack timeout configuration b94aa34547 net/ena: fix checksum flag for L4 c73e88da70 net/ena: check memory BAR before initializing LLQ abbaa0b9d1 net/ena: fix meta descriptor DF flag setup 5bb3ff7b47 net/ena: fix reset reason being overwritten b1d55a40d6 net/ena: skip timer if reset is triggered 39f6adbf54 net/ena: remove unused offload variables d609358e18 net/ena: remove unused enumeration 2c0325226c net/txgbe: fix debug logs a274e8922f app/testpmd: fix GENEVE parsing in checksum mode 8d5484e7a1 net/mlx5: fix ineffective metadata argument adjustment 1b7f6d2ad9 net/i40e: enable maximum frame size at port level 7eaca36d9c net/ice: fix overwriting of LSE bit by DCF b1b1cd71e9 net/af_xdp: ensure socket is deleted on Rx queue setup error 92f88226d9 net/af_xdp: add missing trailing newline in logs 33f2e37561 vhost: fix unsafe vring addresses modifications 37936eb9ef vhost: fix field naming in guest page struct 85ec94182b app/testpmd: check starting port is not in bonding f85bba14cc net/ixgbe: reset security context pointer on close 3a4dd2649f net/nfb: fix multicast/promiscuous mode switching aa27fa7968 net/nfb: fix array indexes in deinit functions 92d7cb4446 crypto/ipsec_mb: fix ZUC operation overwrite 4bc8222a12 crypto/ipsec_mb: fix ZUC authentication verify 2eb55ed024 crypto/virtio: fix out-of-bounds access dceebf9eeb baseband/acc100: avoid out-of-bounds access ced8638611 examples/l2fwd-crypto: fix port mask overflow 9d1d70c9c8 doc: fix FIPS guide 7b5609a5a0 cryptodev: fix RSA key type name a7aa7d8812 examples/qos_sched: fix core mask overflow b56b636c57 dma/idxd: configure maximum batch size to high value 26bebaab55 ethdev: fix cast for C++ compatibility 20baa98d62 vhost: add missing C++ guards 581dea537e kni: add missing C++ guards 9c5dd18e18 eventdev: add missing C++ guards f85ebc37b1 compressdev: add missing C++ guards 4fd5a95b49 acl: add missing C++ guards 8f9c5d8497 metrics: add missing C++ guards c840104e23 ethdev: add missing C++ guards f749277d08 telemetry: add missing C++ guards 2c2d7d7af1 eal: add missing C++ guards 5d76457095 eventdev/eth_tx: fix queue add error code 40f28803d5 common/mlx5: fix error handling in multi-class probe e08edd8ac6 net/mlx5: fix memory socket selection in ASO management b6b775f223 net/mlx5: fix MPRQ stride devargs adjustment 0d9346a115 net/mlx5: improve stride parameter names 3adcf39013 common/mlx5: add minimum WQE size for striding RQ d8fadb1f7e net/nfp: free HW rings memzone on queue release 8a78f023b7 config: add arch define for Arm c32be7490e net/octeontx2:: fix base rule merge 2bc455ec39 kni: update kernel API to set random MAC address 105b5a4130 raw/ntb: clear all valid doorbell bits on init cf9be04290 crypto/dpaax_sec: fix auth/cipher xform chain checks bdd4b322cf compress/octeontx: fix null pointer dereference 045d6f7c38 net/bnxt: fix ring calculation for representors c9eb38cd06 net/mlx5: fix inline length for multi-segment TSO c45f526d8a net/mlx5: fix committed bucket size 64d94d1e8f net/ice: fix build with 16-byte Rx descriptor dc92390efe net/ice/base: add profile validation on switch filter da0833ea1f net/iavf: count continuous DD bits for Arm in flex Rx 3152179d55 net/iavf: count continuous DD bits for Arm 813b5994cf net/sfc: demand Tx fast free offload on EF10 simple datapath 964a78f4be net/sfc: do not push fast free offload to default TxQ config 3915e71a30 net/memif: remove pointer deference before null check 468cbff3fe vfio: cleanup the multiprocess sync handle 184d1f7ae0 ipc: end multiprocess thread during cleanup b8e818df2a test/mbuf: fix mbuf data content check 32d2194f4f app/fib: fix division by zero 1b84be5c00 mem: check allocation in dynamic hugepage init c7bd2f4354 vhost: fix C++ include b6dd9d6b2c table: fix C++ include 97f298e315 ipsec: fix C++ include 04eb6cecc9 graph: fix C++ include 48735e1e43 eventdev: fix C++ include ae0613e133 eal: fix C++ include 7cabaf23be stack: fix stubs header export c53cb87b51 regex/mlx5: fix memory allocation check 0e63db2022 vhost: fix guest to host physical address mapping 58767a90f4 app/testpmd: fix stack overflow for EEPROM display aea2c5be01 net/tap: fix to populate FDs in secondary process eea12b2874 ethdev: add internal function to device struct from name b040eaa335 app/testpmd: fix bonding mode set c4a4ba788f net/bonding: fix reference count on mbufs 78ee1995c9 net/bonding: fix promiscuous and allmulticast state 8189e99b3a net/ixgbe: check filter init failure 061f2416ab net/hns3: delete duplicated RSS type 3f03bc5d20 net/hns3: fix operating queue when TCAM table is invalid b65114d8a3 net/hns3: fix insecure way to query MAC statistics 73d4297244 net/hns3: fix RSS key with null edfefb90ca net/hns3: fix max packet size rollback in PF 463673460a net/enic: fix dereference before null check cafb0cbdb4 eal/windows: remove useless C++ include guard e9734a61da net/dpaa2: remove useless C++ include guard 6506a4b485 net/cxgbe: remove useless C++ include guard 8650a0c17c bus/dpaa: fix C++ include guard d3f8892862 test/mem: fix error check 2da6c30247 eal/windows: fix error code for not supported API 19746aaeab ring: fix overflow in memory size calculation 6e47aebf24 ring: fix error code when creating ring 6c4c4398a4 ring: optimize corner case for enqueue/dequeue 25f563d388 doc: fix KNI PMD name typo 1b61157ec9 kni: fix ioctl signature 04a29bf8a8 build: remove deprecated Meson functions 3215df7480 build: fix warning about using -Wextra flag 14421740c4 build: fix warnings when running external commands 29649b4590 doc: update matching versions in ice guide 12eaf885f5 net/mlx5: reject jump to root table a133cd9add net/mlx5: fix mark enabling for Rx d8090fd8c4 net/virtio-user: check FD flags getting failure ac0c52244d net/virtio-user: fix resource leak on probing failure 61144dff74 vdpa/ifc: fix log info mismatch 9605f71afa net/virtio: fix Tx queue 0 overriden by queue 128 16ba91d4f3 vdpa/mlx5: workaround queue stop with traffic f3cd5320d8 net/hns3: fix using enum as boolean 90ada5e388 net/bonding: fix RSS with early configure 1ed391676f net/memif: remove unnecessary Rx interrupt stub 1044516947 raw/ifpga/base: fix port feature ID edea3f39dd net/bnxt: fix VF resource allocation strategy 3e0a066400 net/bnxt: fix memzone allocation per VNIC 7ee6d43e5e net/bnxt: handle ring cleanup in case of error e7f6c7629a net/bnxt: fix check for autoneg enablement f05952e7bf raw/ifpga: fix thread closing ab9cde2e72 net/ice: fix link up when starting device 06665489e6 raw/ifpga/base: fix SPI transaction ff474dde7b net/sfc: validate queue span when parsing flow action RSS 238f205dd5 net/nfp: remove useless range checks e977e8ef8e net/nfp: remove duplicated check when setting MAC address f06710409f net/mlx5: fix maximum packet headers size for TSO 1d10966a22 net/dpaa2: fix timestamping for IEEE1588 bab9d520cb net/dpaa2: fix unregistering interrupt handler b5b90b6ea3 net/cxgbe: fix dangling pointer by mailbox access rework a5f8244a5f app/testpmd: fix external buffer allocation a2f86fa32f app/testpmd: fix dereference before null check 239f57b000 net/bonding: fix mode type mismatch 8b6401daed net/af_xdp: fix build with -Wunused-function a5018b1aa6 net/axgbe: use PCI root complex device to distinguish device a26506bce1 app/testpmd: fix Tx scheduling interval 8d0afb3f68 net/bonding: fix offloading configuration e93a5f4479 net/bnxt: check VF representor pointer before access 31080d4c62 net/bnxt: fix xstats query 52d79e8244 net/bnxt: fix PAM4 mask setting 766d7701ba net/bnxt: fix handling of VF configuration change ef80ca417e net/bnxt: get maximum supported multicast filters count 893c784eef net/bnxt: add null check for mark table 5889a24544 net/bnxt: cap maximum number of unicast MAC addresses fa8cc81989 net/bnxt: fix restoring VLAN filtering after recovery 7275db81e8 net/bnxt: restore RSS configuration after reset recovery c612a4bbf3 net/bnxt: fix queue stop operation 3ea46b608a net/bnxt: fix multicast MAC restore during reset recovery 5ee96222ab net/bnxt: fix multicast address set e2c9b9902d net/bnxt: fix xstats names query overrun 66aa6f9467 net/mlx5: relax headroom assertion 0374774e88 net/mlx5: fix GRE protocol type translation for Verbs a5edf85175 net/mlx5: fix RSS expansion with explicit next protocol 1c64873e8d net/mlx5: fix assertion on flags set in packet mbuf 24e61aa014 net/ixgbe: add vector Rx parameter check a02fbcde75 net/ice: fix Tx checksum offload 8577641fca net/ice: track DCF state of PF f7b02e1127 net/ice: fix Tx checksum offload capability 793c820620 net/qede: fix redundant condition in debug code 4ee719c72e devtools: fix comment detection in forbidden token check 33a5d155d0 examples/ipsec-secgw: fix default flow rule creation dff4380aae examples/ipsec-secgw: fix eventdev start sequence 19524c9cb1 examples/l3fwd: fix Rx burst size for event mode 6bfaf85e5b doc: fix dlb2 guide eb5a21b54a eal/linux: log hugepage create errors with filename 0602aa0fd4 dma/idxd: fix paths to driver sysfs directory 4548934a6d bus/ifpga: remove useless check while browsing devices 7c66f7f679 doc: remove dependency on findutils on FreeBSD cf1a7f66a9 maintainers: update for stable branches 269489433c doc: replace deprecated distutils version parsing 0b5a6c7b32 fix spelling in comments and strings b05d183a7f config/ppc: fix build with GCC >= 10 4d47f37431 version: 20.11.4 ebdc786158 common/qat: revert fix queut pairs number 35fb9c4b93 build: disable Windows warnings for insecure funtions 395bb64d1b kni: fix build for SLES15-SP3 c3e1d196e5 table: fix missing headers on ARM64 04d8f7c496 eal/common: exclude code unsupported on Windows bab4318634 version: 20.11.4-rc1 16fd24c265 raw/octeontx2_ep: remove unused variable 66b0d3a2f4 net/mlx5: fix flow shared age action reference counting 930ac3db1a crypto/octeontx2: fix lookaside IPsec IPv6 67992959ee baseband/acc100: fix 4GUL outbound size 86cbc9786f net/mlx5: fix RSS expansion with EtherType 460136f414 net/mlx5: fix RSS expansion for L2/L3 VXLAN fa62ff901f net/mlx5: fix RSS expansion traversal over next nodes 8ab211780c net/mlx5: fix RSS expansion for explicit graph node 519154bdd5 net/mlx5: fix RSS expansion for inner tunnel VLAN d94b467435 doc: fix a typo in EAL guide ab2ec45d52 net/mlx5: fix devargs validation for multi-class probing 368163da05 doc: fix typo in coding style 951ab7b608 doc: capitalise PMD cea3552ab7 fix PMD wording ed9a13b0fa remove repeated 'the' in the code 769cd1d909 net/mlx5: fix GENEVE and VXLAN-GPE flow item matching 62f37b7a5b net/mlx5: fix GRE flow item matching 22dc2d42b2 app/testpmd: fix hexadecimal parser with odd length 585669bf46 doc: fix memif driver acronyms fed3abcad0 net/memif: allow stopping and closing device f489ca40fb net/mlx5: fix multi-segment packet wraparound 14f47af82f net/mlx5: fix flow mark with sampling and metering 03f92022bb net/mlx4: fix empty Ethernet spec with VLAN acf010a8e5 net/mlx5: fix metadata and meter split shared tag f803c82df7 net/bnxt: fix autoneg on PAM4 links 401a4bc91e doc: remove repeated repeated words 62b23da816 examples/ptpclient: fix delay request message e8e74b5804 doc: strip build artefacts for examples file list 47e5dbb3a6 mbuf: fix dump of dynamic fields and flags 07ab7b7d9a kni: restrict bifurcated device support 1f3b7af315 drivers/crypto: fix IPsec TTL decrement option 2aa2b0f1e5 crypto/ipsec_mb: fix cipher key setting 7695cdb5e2 common/mlx5: fix user mode register access attribute 5045cabbec net/mlx5: fix MPLS tunnel outer layer overwrite c897e773f9 net/mlx5: fix partial inline of fine grain packets 81836e2c89 app/testpmd: fix tunnel offload validation 47c838de7c net/failsafe: fix secondary process probe 14bb775f70 net/bnxt: fix Rx next consumer index in mbuf alloc fail b0ecc5765f net/mlx5: fix mutex unlock in Tx packet pacing cleanup 820f954788 net/hns3: optimize Tx performance by mbuf fast free e628b925e5 net/mlx5: fix GRE protocol type translation b831cc80b2 net/mlx5: fix GENEVE protocol type translation 8708f00342 net/mlx5: fix RSS expansion scheme for GRE header 3d4d2600f3 net/mlx5: add Ethernet header to GENEVE RSS expansion 5b82df45c1 net/mlx5: fix VXLAN-GPE next protocol translation 01029bb978 vdpa/mlx5: fix mkey creation check 0da7f8f9f2 doc: fix Doxygen examples build on FreeBSD d3a4e55ca1 app/flow-perf: fix parsing of invalid option 9827b33ea1 examples/ntb: fix build dependency e8a8503d42 config/x86: skip GNU binutils bug check for LLVM 07e1e6e798 fix spelling in comments and doxygen 1967878181 examples/multi_process: fix Rx packets distribution 75af4401a4 examples/l3fwd-power: fix early shutdown 3a8dc3e8dc test/crypto: remove unnecessary stats retrieval cd50e6f438 common/cpt: fix KASUMI input length bc4695a138 test/crypto: fix missing return checks fa912be2c5 test/crypto: fix data lengths 139df45885 test/crypto: skip plain text compare for null cipher 985e9324d9 event/dlb2: fix delayed pop test in selftest 4f17d46380 eventdev/eth_tx: fix queue delete logic 0d266c9fe9 examples/performance-thread: remove unused hits count 9a514a21d8 test/distributor: remove unused counter 7db7d2e658 net/vmxnet3: fix build with clang 13 0c8aa41249 net/qede/base: remove unused message size e72e4962d5 net/nfp: remove unused message length 6fdb54e73f net/liquidio: remove unused counter 415c636992 net/bnxt: remove some unused variables ae0fe7d799 event/sw: remove unused inflight events count 22ebe5378e bus/fslmc: remove unused device count 14e420ac85 net/octeontx: remove unused packet length 0a475878ef net/hinic/base: remove some unused variables 878f71050e test/red: fix typo in test description 0ed3a7333f ethdev: fix typos 5d3a7aab19 app/testpmd: fix DCB in VT configuration 40588e9f6f net/mlx5: fix Tx scheduling check 712ace31c5 net/iavf: fix pointer of meta data 2f5b7df1e4 net/i40e: fix risk in descriptor read in scalar Rx fdb91c91e8 doc: describe timestamp limitations for mlx5 7ae03fc171 common/mlx5: fix build for zero-length headroom array 6d132c0f73 net/mlx5: fix RETA update without stopping device 2a9a0c9d63 net/mlx5: fix tag ID conflict with sample action 5744208d62 net/mlx5: fix tunnel offload validation 180fa49727 power: fix build with clang 13 3088dda469 net/mlx5: workaround MR creation for flow counter 2e7f6f9336 vdpa/mlx5: workaround guest MR registrations 4f691f2c97 vdpa/mlx5: workaround dirty bitmap MR creation 6108eff3be common/mlx5: create wrapped MR 2991d7abc2 common/mlx5: glue MR registration with IOVA dfae8dc0ec net/virtio: fix Tx checksum for tunnel packets 5de5f15c5b net/bnxt: fix VLAN indication in Rx mbuf 8ef3bed388 net/mlx5: do not close stdin on error b99528eb2d net/nfp: cancel delayed LSC work in port close logic 463cd893e2 net/af_packet: fix ignoring full ring on Tx ce48d01167 net/ixgbe: fix port initialization if MTU config fails 6c0517f529 net/iavf: fix multi-process shared data 1d5d3847af net/hns3: fix interrupt vector freeing 5ff9c28131 net/hns3: fix residual MAC after setting default MAC dbf27ac1e7 net/i40e: fix i40evf device initialization 89a78fde25 app/testpmd: remove unused header file 4fd42c0a44 net/hns3: simplify queue DMA address arithmetic 480eecce54 interrupt: fix request notifier interrupt processing e963a3650b vfio: set errno on unsupported OS 1fd6329364 vfio: fix FreeBSD documentation 07e02c596a vfio: fix FreeBSD clear group stub d2a21b149a kni: check error code of allmulticast mode switch e5f58ae926 net/mlx5: remove duplicated reference of Tx doorbell 19c487a7cd common/mlx5: fix UAR allocation diagnostics messages f368f1bbb5 common/mlx5: remove unreachable branch in UAR allocation 87e20726cc app/testpmd: remove double dependency on bitrate lib 3be19a63d4 common/sfc_efx: fix debug compilation control ac08c1ba97 ethdev: fix crash on owner delete 5ec9795c68 net/i40e: fix forward outer IPv6 VXLAN b2d0ed96d5 net/mlx5: fix Rx queue memory allocation return value 63ba41d7ee net/mlx5: fix Altivec Rx 6385edbe1c common/mlx5: fix flex parser DevX creation routine 2f2c2b5b7e common/qat: fix queue pairs number b332923763 examples/ipsec-secgw: move global array from header 01f69bbd74 test/compress-perf: remove unused variable c10c8edfa4 examples/fips_validation: fix device start 13dc08c1ca crypto/qat: fix uncleared cookies after operation 7bacbc5eb3 crypto/qat: fix status in RSA decryption 9120474fcc test/crypto: fix max length for raw data path d5b7c084fc net/txgbe: fix packet statistics 9e127ea969 net/hns3: unregister MP action on close for secondary 5bf8d5b2f7 net/hns3: fix multi-process action register and unregister 69212ae06b net/hns3: fix secondary process reference count 9488e784fc net/ice: fix flow redirect e3632cfa14 net/ice: save rule on switch filter creation 4c5c31b120 net/enic: avoid error message when no advanced filtering 5927fdf154 net/bnxt: fix firmware version query 6b4e43eaaa net/i40e: fix 32-bit build 8d4494154e net/hns3: fix mailbox communication with HW c4d20e838e net/virtio: fix link update in speed feature 1c5f0499f5 net/mlx5: fix RSS RETA update 223d61646c app/testpmd: fix RSS type display 6a4ec07e26 app/testpmd: fix RSS key length a5e3534481 doc: update NIC feature matrix for bnxt e4082697ba net/iavf: fix shared data in multi-process 0e28edc58a net/ice: fix function pointer in multi-process 8c4227ddae mem: fix dynamic hugepage mapping in container e324ec6bc4 malloc: fix allocation with unknown socket ID 394952356a eal/linux: fix uevent message parsing 558953d965 eal/linux: remove unused variable for socket memory 2af8cf0bae eal: fix device iterator when no bus is selected d2f33a2cbe test/mbuf: fix access to freed memory d43921f4af test/cmdline: fix memory leak 7cc4ec4aba eal/freebsd: fix IOVA mode selection e306e6d9b3 test: fix ring PMD initialisation d6f5ee8904 net/i40evf: extend the polling times of vf reset 6b33455411 net/i40e: fix buffer size alignment 982e2c63d1 common/mlx5: fix physical port name recognition e567087a43 eal/windows: fix IOVA mode detection and handling 4272080bb1 rib: fix IPv6 depth mask 9902d7dcb9 lpm6: fix buffer overflow 1729b2c337 hash: fix Doxygen comment of Toeplitz file f1b1f1186a eal: reset lcore task callback and argument 0cab294bc0 eal/x86: avoid cast-align warning in memcpy functions b91dcac711 mbuf: avoid cast-align warning in data offset macro 11895408d9 net: avoid cast-align warning in VLAN insert function 0f1d36a746 doc: fix default mempool option in guides d60f7f0105 usertools/pmdinfo: fix plugin auto scan a0347e7e7e pipeline: fix instruction label check ff1898349e test/event: fix timer adapter creation test 1057ce433c app/testpmd: fix packet burst spreading stats 3d0f003632 ethdev: fix PCI device release in secondary process e880b1c163 net/virtio: fix avail descriptor ID 04bd8e7fcb net/virtio: fix indirect descriptor reconnection abd207e5fa vhost: add sanity check on inflight last index 2074d20561 vdpa/mlx5: retry VAR allocation during vDPA restart 3713e9c370 vdpa/mlx5: workaround FW first completion in start d8ce32c71e net/virtio: fix check scatter on all Rx queues 136944a2cb net/mlx5: close tools socket with last device 8ce5c675a8 net/mlx5: fix Rx queue resource cleanup 829fbd7252 devtools: fix letter case check in commit title 74fb264b05 bpf: allow self-xor operation edb5fcae31 eventdev/eth_rx: fix WRR buffer overrun f7fa666eec app/eventdev: fix terminal colour after control-c exit d95c7a669d mbuf: fix reset on mbuf free 2eb840f1ae test/hash: fix buffer overflow with jhash 869a35948e ethdev: forbid closing started device c95ffe5671 net/i40e: fix risk in descriptor read in NEON Rx dd5334c4ac net/ice: fix generic build on FreeBSD 6e46115943 net/mlx5: support more tunnel types 8a28600abc app/testpmd: add tunnel types 73250dca43 app/testpmd: fix access to DSCP table entries 5d3a512994 net/ena: advertise scattered Rx capability 84a35ce308 net/ena: fix per-queue offload capabilities d1ccc7019d net/ena: fix offload capabilities verification ac9f3ffd5d net: fix aliasing in checksum computation 44cd82b519 doc: fix emulated device names in e1000 guide 6d32420ce9 net/ice: fix deadlock on flow redirect 137ea50f60 drivers/net: remove queue xstats auto-fill flag d19e3bea52 net/txgbe: fix to get interrupt status 349ac4cf40 app/testpmd: fix hex string parser in flow commands 1edd186c4f net/softnic: fix useless address check 2dcdba115e net/enic: fix filter mode detection 8cb630d9e4 net/mlx5: fix tunneling support query 15242b3f60 net/mlx5: fix software parsing support query 7379aa7aa8 net/i40e/base: fix using checksum before check 610b598aa0 net/i40e/base: fix potentially uninitialized variables c1977a22f6 net/i40e/base: fix function name in comments a02cb9ff21 net/i40e/base: fix AOC media type abc841874f net/i40e/base: fix update link data for X722 7dcf2e3db4 net/i40e/base: fix PF reset 37817b554a net/i40e/base: fix PHY identifiers for 2.5G and 5G adapters 63e0206bdb net/ixgbe: fix queue release e69e21048d net/i40e: fix Rx packet statistics ce17996fc6 net/sfc: update comment about representor support f74eaa5869 net/sfc: free MAE lock once switch domain is assigned b391213ff8 app/testpmd: retain all original dev conf when config DCB 710a47c4c6 net/bonding: fix RSS key length e0d9039f2e net/bonding: fix dedicated queue mode in vector burst e788cc2006 app/testpmd: fix txonly forwarding 4a2204af7b app/testpmd: update forward engine beginning 4370d53fb5 net/af_xdp: disable secondary process support 6ec9dcdfed test/bpf: fix undefined behavior with clang 939685eaec cryptodev: fix multi-segment raw vector processing ca9b74af25 app/crypto-perf: fix AAD template copy overrun 386085df05 mempool: deprecate unused physical page defines 3446f6d200 mbuf: enforce no option for dynamic fields and flags a8590be363 test/atomic: fix 128-bit atomic test with many cores 2bd66f32c9 mbuf: fix typo in comment aa4a2ef3fe telemetry: fix JSON output buffer length 341804051a eal/freebsd: ignore in-memory option be9717a4cc bus/vmbus: fix ring buffer mapping in secondary process c41706bb6e eal/x86: fix some CPU extended features definitions cc7ded572d test/service: fix race in attr check 3ee8970823 test/service: fix some comment cd24395f65 test/event_crypto: fix event crypto metadata write de983dfa6d examples/fips_validation: fix resetting pointer 1aab8371d3 examples/fips_validation: remove unused allocation 6d4f5a1639 eal/windows: do not install virt2phys header 822f885986 eal/windows: fix CPU cores counting 449612955b net: fix checksum API documentation 288a450bb9 net/hns3: fix input parameters of MAC functions 2adcdc8cc7 net/ixgbe: fix memzone leak on queue re-configure 4e60a45559 net/i40e: fix memzone leak on queue re-configure 8b56d27644 net/ice: fix memzone leak on queue re-configure b51d3a4970 net/e1000: fix memzone leak on queue re-configure 8f825b3b13 ethdev: fix xstats by ID API documentation b4108eb62c common/dpaax: fix physical address conversion a7bb99fc86 raw/ifpga/base: fix linking with librt 1b8fac0312 test/latency: fix loop boundary a00d38a2e1 bus/vmbus: fix leak on device scan 3df9064884 net/mlx5: fix flow tables double release 95cf6a360f net/bnxt: fix tunnel port accounting 5b3f9bec58 net/bnxt: fix memzone free for Tx and Rx rings f1c89a7edd net/bnxt: fix Tx queue startup state ea39d70a50 net/bnxt: fix function driver register/unregister c9eddf61f5 net/ice: retry getting VF VSI map after failure 90d7fd5b10 common/iavf: fix ARQ resource leak eca9795521 net/iavf: fix Rx queue IRQ resource leak cd90c7a5b2 net/ice: fix double free ACL flow entry 1900a18518 net/iavf: fix high CPU usage on frequent command 49a2b0ca69 net/virtio: do not use PMD log type 758eb05f2b net/virtio: fix Tx completed mbuf leak on device stop 0da178c94e net/virtio: fix Tx cleanup functions to have same signature 9786a89ed4 vhost: clean IOTLB cache on vring stop 192d2f2dcd test/mem: fix memory autotests on FreeBSD 95934ebba9 eal/freebsd: lock memory device to prevent conflicts ad4051ca8f usertools: fix handling EOF for telemetry input pipe 45f9d14e11 bitrate: fix calculation to match API description 102d6df14d bitrate: fix registration to match API description 1e697abcfd ring: fix Doxygen comment of internal function 51a9cd2327 eal: remove Windows-specific list of common files 8a43d7c5f4 eal/windows: export version function 196cda0e31 bus/pci: fix unknown NUMA node value on Windows 7b3cdb7c64 kvargs: fix comments style edfd68842c net/memif: fix chained mbuf determination 39f117c3b5 net/mlx5: fix shared RSS destruction 5d3374aff1 net/mlx5: fix memory leak on context allocation failure 4649ead943 net/octeontx: fix access to indirect buffers 474bbafd6f net/iavf: fix mbuf leak 60974c7c2c net/ice/base: calculate logical PF ID 8532dae4d6 net/bonding: fix memory leak on closing device 25533b38a6 test/compress: fix buffer overflow 8f07dfbc18 examples/ipsec-secgw: fix parsing of flow queue e78d085e36 stack: fix reload head when pop fails 6f7c9fde71 vdpa/mlx5: fix large VM memory region registration bb7f3bc24b sched: get 64-bit greatest common divisor 2a5a421658 bus/pci: fix unknown NUMA node value on Windows d593c0569e doc: fix numbers power of 2 in LPM6 guide 88719f1273 net/iavf: fix Rx queue buffer size alignment 64734ba6e2 net/i40e/base: fix resource leakage 012f9cfceb net/iavf: fix mbuf leak af659df64e net/ice/base: fix PF ID for DCF 4fc96ab6c9 net/i40e: fix device startup resource release 30fcdc4f50 net/i40e: fix mbuf leak c7afc99804 net/octeontx2: fix MTU when PTP is enabled 92569f9804 net/virtio: fix device configure without jumbo Rx offload aafb232afb vhost: log socket path on adding connection e0d08d0c03 net/virtio: fix repeated freeing of virtqueue e543f89ba5 vhost: fix crash on port deletion dd6e6e33c7 net/virtio-user: fix Rx interrupts with multi-queue b00b073569 net/virtio: avoid unneeded link interrupt configuration b954047654 net/virtio: fix split queue vectorized Rx 24ae55b075 net/virtio: fix mbuf count on Rx queue setup 8cbd4cec76 net: fix checksum offload for outer IPv4 7e0a1eee89 ethdev: fix typo in Rx queue setup API comment fcece17c51 eal: fix memory leak when saving arguments 64c6120185 examples/service_cores: fix lcore count check 8192dfc388 test/func_reentrancy: free memzones after test 91f3769c3f build: propagate Windows system dependencies to pkg-config 8404c8c99a net/ice: fix performance with writeback policy d9958c1907 net/ixgbe: fix mbuf leak a1ebe4da32 net/ixgbe: fix MAC resource leak 5787cc1187 net/ixgbe: fix queue resource leak c1723e2d14 net/ixgbe: fix hash handle leak ed49cafb25 net/sfc: set FDIR bit for flow mark in EF100 Rx dd8e8fcf1f net/hns3: fix taskqueue pair reset command 0c355fecc0 net/hns3: fix queue flow action validation 6b6aacee71 net/pcap: fix resource leakage on port probe a202064ef3 net/axgbe: fix unreleased lock in I2C transfer 19acac8cef doc: fix bonding driver name af6efb8cb2 net/af_xdp: fix zero-copy Tx queue drain fc300c1c4a net/bnxt: fix double allocation of ring groups 8516f35456 net/bnxt: fix ring group free ddc5464088 net/bnxt: check FW capability for VLAN offloads 16f8bcc3d8 net/bnxt: fix mbuf VLAN in scalar Rx 9f02c498bf net/ixgbe: fix Rx multicast statistics after reset c660ad64aa net/iavf: fix overflow in maximum packet length config 073599bf92 net/ice: fix queue config in DCF 7722837b52 net/ice: fix deadlock on flow query e244e8c066 net/ice: fix RXDID default value in DCF 34a2e17afc net/ice: fix memzone leak after device init failure 877a05209a net/nfp: fix minimum descriptor sizes 1f83882dac common/dpaax/caamflib: fix IV for short MAC-I in SNOW3G 52ed92cfb6 crypto/openssl: fix CCM processing 0 length source c3672a36e6 config/ppc: ignore GCC 11 psabi warnings 9102608a1c eal/ppc: ignore GCC 10 stringop-overflow warnings e4509540be crypto/octeontx2: fix unaligned access to device memory 6e5dbe1586 app/testpmd: fix dump of Tx offload flags 3dc611ee15 app/testpmd: fix check without outer checksum 8f75f8b588 net/bnxt: fix crash after port stop/start d53332318f app/testpmd: fix Tx retry in flowgen engine 83ec79465d net/bnxt: update ring group after ring stop start 4ba7ab1ebd net/mlx5: fix eCPRI matching f50cec54fd net/mlx5: fix mbuf replenishment check for zipped CQE 05af857e43 net/txgbe: fix reading SFP module SFF-8472 data e2eae48793 net/ice: fix max entry number for ACL normal priority 2cbc3c42d2 net/ice/base: fix typo in comment 39a30eb884 drivers/net: fix vector Rx comments 99e95a04c4 drivers/net: fix typo in vector Rx comment d65672bac2 examples/performance-thread: fix build with clang 12.0.1 cd9f079d87 net/i40e: support 25G AOC/ACC cables cfcca69903 version: 20.11.3 fcdf769a98 test/power: fix CPU frequency when turbo enabled ede02cfc47 net/mlx5: fix imissed statistics c5f4e9dd15 version: 20.11.3-rc1 62ff84ca2a app/testpmd: fix IPv4 checksum bf76709d20 bus: clarify log for non-NUMA-aware devices 53193aeeba net/mlx5: workaround drop action with old kernel 12cc60e507 doc: update atomic operation deprecation 78b8978ef7 doc: remove old deprecation notice for sched cf52376b2d doc: fix spelling 853a987716 crypto/qat: disable asymmetric crypto on GEN3 fb63987b6d crypto/octeontx: fix freeing after device release 151569886c cryptodev: fix freeing after device release 946df43747 eal/windows: cleanup virt2phys handle d06cadbbbd eventdev: fix event port setup in Tx adapter c9c391ea60 app/testpmd: fix Tx checksum calculation for tunnel 3a0ced629f net/softnic: fix memory leak as profile is freed c3e2390817 net/softnic: fix null dereference in arguments parsing d43a754af8 net/memif: fix abstract socket address length 62a186761f net/ena: enable multi-segment in Tx offload flags 72f6920480 net/mlx5: add Tx scheduling check on queue creation f46e2c750a net/mlx5: fix timestamp initialization on empty clock queue 0564825638 net/mlx5: fix flow engine type in function name 4ac789fddc net/mlx5: fix default queue number in RSS flow rule 38779aa845 net/mlx5: fix RSS flow rule with L4 mismatch f67d7c848e net/mlx5: fix queue leaking in hairpin auto bind check 3003560e24 net/mlx5: fix representor interrupt handler ad67a31e0a net/iavf: fix Tx threshold check 13ac5a5101 net/virtio: fix default duplex mode f21bc78175 net/virtio: fix interrupt handle leak dc023498c9 vhost: fix crash on reconnect 47d67fb4bb net/virtio: report maximum MTU in device info 84a32847c9 net/octeontx2: fix default MCAM allocation size 2f39890f4a app/testpmd: fix MAC address after port reset d0eebf4a00 app/testpmd: fix help string for port reset 36c937ac72 sched: rework configuration failure handling 41a170fc81 sched: fix profile allocation failure handling 0cd4f7ee81 net/sfc: fix MAC stats update for stopped device b84a0ebd17 net/sfc: fix xstats query by unsorted list of IDs e4ebfdeb0d net/sfc: fix xstats query by ID according to ethdev 99bcdae014 net/sfc: fix reading adapter state without locking e5e8e0aa61 net/sfc: fix MAC stats lock in xstats query by ID 4b44020ca7 net/dpaa: fix headroom in VSP case b2ac79d89a bus/dpaa: fix freeing in FMAN interface destructor 66d9de1cde net/ena: trigger reset on Tx prepare failure f91f60bb47 net/hinic: fix MTU consistency with firmware 3e6a9fa0e2 net/hinic/base: fix LRO 2ca9d750c9 net/hinic: increase protection of the VLAN 4e210bb141 net/hns3: fix Tx prepare after stop 28a94eea0c net/hns3: fix flow rule list in multi-process fc0e7a4358 net/hns3: fix timing of clearing interrupt source 01dcb16186 net/hns3: fix filter parsing comment 471ed659c1 net/hns3: fix residual MAC address entry 752b19f91f net/softnic: fix memory leak in arguments parsing ce81944f3d eal/windows: check callback parameter of alarm functions 806a18751b net/bnxt: fix null dereference in interrupt handler 3e8a6d6b1d net/bnxt: remove workaround for default VNIC 03348e9bec net/mlx5: export PMD-specific API file d0213e26bb net/mlx5: reject inner ethernet matching in GTP cf3ae2009c net/mlx5: fix RSS expansion for GTP 3fd282e728 net/mlx5: fix RoCE LAG bond device probing 453f8bb235 net/mlx5: fix indirect action modify rollback a20d4d2506 net/mlx5: fix Rx/Tx queue checks da1a6d5e46 regex/mlx5: fix redundancy in device removal 0760fa23a0 net/mlx5: fix overflow in mempool argument c571fde575 vdpa/mlx5: fix overflow in queue attribute 4eb4301b07 regex/mlx5: fix size of setup constants a961df1650 net/virtio: fix Rx scatter offload e1b663f8b3 vhost: fix lock on device readiness notification 12e277dee6 net/virtio: fix refill order in packed ring datapath 2df90802c6 vhost: check header for legacy dequeue offload db878744bc test/crypto: fix mempool size for session-less 89d903beb4 crypto/octeontx2: fix lookaside IPsec IV pointer 48181d181d crypto/octeontx2: fix IPsec session member overlap 7bbe274958 test/power: fix CPU frequency check for intel_pstate 1f4a450852 raw/ioat: fix config script queue size calculation 133edc5f0f distributor: fix 128-bit write alignment fc9d2f0dbe net/bnxt: clear cached statistics 3f2f6be303 net/bnxt: fix nested lock during bonding 5584a03fe9 net/bnxt: fix missing barriers in completion handling f58d25a579 net/octeontx2: fix TM node statistics query 6595f06986 net/mvpp2: fix configured state dependency 9c8609a356 net/mvpp2: fix port speed overflow ef16dc1cc8 net/mlx5: fix typo in vectorized Rx comments 4c8e04c056 net/mlx5: fix threshold for mbuf replenishment in MPRQ a6a787bf7d net/mlx5: fix missing RSS expansion of IPv6 frag 5b34c2ad6f net/mlx5: fix missing RSS expandable items 2a5c46697b net/mlx5: remove redundant operations in NEON Rx a5fb806241 app/testpmd: fix offloads for newly attached port 96ad1e25fc net/softnic: fix connection memory leak 6807067d71 net/bonding: check flow setting 2b916ad7eb net/bonding: fix error message on flow verify e77955f0ed net/bnxt: fix ring allocation and free 2346170dd3 net/bnxt: detect bad opaque in Rx completion d375abc717 table: fix bucket empty check 4b8bd031fe net/hns3: fix Arm SVE build with GCC 8.3 2bf923fc8f net/virtio: fix aarch32 build 39156c3208 net/bnxt: fix aarch32 build 7590791b9e net/sfc: fix aarch32 build 2da39fd204 build: support drivers symlink on Windows fd2f9a4932 doc: fix build on Windows with Meson 0.58 97d5862b30 net/octeontx/base: fix debug build with clang d232a49bf4 net/ixgbe: fix flow entry access after freeing 7cdf5af809 net/i40e: fix descriptor scan on Arm ebe009027c net/ice: fix memzone leak when firmware is missing 386524e3f5 common/mlx5: fix compatibility with OFED port query API 32b98abf1b common/mlx5: use new port query API if available 10beb1ace1 net/mlx5: fix MPLS RSS expansion 29c7cf41a2 net/mlx5: remove unsupported flow item MPLS over IP d709081562 common/mlx5: fix Netlink receive message buffer size 0e61040a35 net/mlx5: fix match MPLS over GRE with key 6452e165df net/mlx5: fix pattern expansion in RSS flow rules c1ed88d89b net/mlx5: fix r/w lock usage in DMA unmap ce3be50034 doc: add limitation for ConnectX-4 with L2 in mlx5 guide 79bd409861 net/mlx5: fix TSO multi-segment inline length 1e2b9848ab common/mlx5: fix memory region leak 06e38e2e83 net/mlx5: fix multi-segment inline for the first segments 98d41069f1 net/bnxt: fix Rx interrupt setting ec202acb1c net/bnxt: fix scalar Tx completion handling 8eb3ca3f92 net/bnxt: fix Tx descriptor status implementation 0e27d70604 net/bnxt: fix ring and context memory allocation 43bcce71fe net/bnxt: invoke device removal event on recovery failure 6d2d072cc1 net/bnxt: fix auto-negociation on Whitney+ 39d5e6fea3 net/bnxt: fix typo in log message a12b17cb05 net/bnxt: cleanup code 8a742f542c ipc: stop mp control thread on cleanup fba329627d crypto/mvsam: fix options parsing 1a3903c0d3 crypto/mvsam: fix session data reset bbfd3f227b crypto/mvsam: fix capabilities 929b5fec9d crypto/mvsam: fix AES-GCM session parameters a3c1ad39e4 test/crypto: fix typo in ESN case cc48322720 test/crypto: fix typo in AES case bb9d13ec90 test/crypto: fix autotest function parameters a1242338e1 crypto/aesni_gcm: fix performance on some AVX512 CPUs a5405a2eba test/crypto: fix mbuf reset after null check 63f28457dc app/crypto-perf: fix out-of-place mempool allocation 1b7530a088 crypto/qat: fix Arm build with special memcpy 85c2f7fed5 app/testpmd: change port link speed without stopping all 55585a5f1a ethdev: fix doc of flow action 4f3fba99a7 app/testpmd: fix type of FEC mode parsing output b4d36b226b net/tap: fix Rx checksum flags on TCP packets 936bdd642b net/tap: fix Rx checksum flags on IP options packets dccbbfc8ee net/sfc: fix outer L4 checksum Rx e942ab2144 net/pfe: remove unnecessary null check 2799483e12 net/hns3: fix maximum queues on configuration failure 2157046ca0 net/hns3: fix VLAN strip log bf6bd022ef net/hns3: fix fake queue rollback 14a0af5994 net/hns3: fix delay for waiting to stop Rx/Tx 24dc86183d net/hns3: increase VF reset retry maximum 21ec6d9eb2 drivers/net: fix memzone allocations for DMA memory 55b7e77a7d net/sfc: fix outer match in MAE backend b19930090a net/sfc: check ID overflow in action port ID 97fcc59a87 mempool/octeontx2: fix shift calculation 7009b90679 vdpa/mlx5: fix TSO offload without checksum cb97272d8e vhost: fix NUMA reallocation with multi-queue 1b6e6c1754 vhost: fix missing guest pages table NUMA realloc 2412914cdb vhost: fix missing memory table NUMA realloc b386dd5b4b net/i40e: fix multi-process shared data 142e3badc2 net/i40e: fix flow director input set conflict ef03fc3f01 net/ice: fix overflow in maximum packet length config 0ac008ccca net/octeontx2: use runtime LSO format indices b1cb0f2fcb net/octeontx2: fix flow creation limit on CN98xx b719b89624 test/mbuf: fix virtual address conversion a2d9e63eec bus/pci: fix leak for unbound devices c24244d08f examples/l2fwd: fix [no-]mac-updating options 8f9f2da7e3 app/test: fix IPv6 header initialization ef0558c8be bus/pci: fix IOVA as VA support for PowerNV f0847028f3 common/mlx5: fix Netlink port name padding in probing 6b23ae0cad net/mlx5: fix IPIP multi-tunnel validation 63c0a9b54e net/mlx5: fix switchdev mode recognition 82758719aa net/mlx5: fix RSS pattern expansion b6690ca0b1 tests/eal: fix memory leak 72bff6df5f tests/cmdline: fix memory leaks d4a803fd53 rib: fix max depth IPv6 lookup 36dbd9df87 flow_classify: fix leaking rules on delete 16d0682d67 kni: fix crash on userspace VA for segmented packets 3fc6330a65 kni: fix mbuf allocation for kernel side use 979fecc857 vhost/crypto: check request pointer before dereference bd03c14aaf devtools: fix file listing in maintainers check 5ca9e6b50d vfio: add stdbool include 24b3c18127 doc: fix default burst size in testpmd 6dfb0b782f doc: fix typo in SPDX tag ac4a67a5f9 net/iavf: fix scalar Rx 5f70ea4e97 net/i40e: fix use after free in FDIR release 1050357ef7 net/ice: fix data path in secondary process 744e86e089 net/ice: fix data path selection in secondary process 18db4a4d84 net/i40e: fix raw packet flow director d5052b1a2e net/iavf: fix handling of unsupported promiscuous ea3ef0c977 net/ice: fix default RSS key generation 58fbfecc2a net/iavf: fix RSS key access out of bound 70b84a4e1b net/bnxt: remove unnecessary comment 386efec380 net/bnxt: improve probing log message a2e10ac19d net/bnxt: fix check for PTP support in FW 92e631ec91 net/bnxt: use common function to free VNIC resource cb99c42fe0 net/bnxt: set flow error after tunnel redirection free 2f6cc4ff5f net/bnxt: fix error handling in VNIC prepare 3d3770a60f net/bnxt: remove unnecessary code da7d8b7da3 net/bnxt: set flow error when free filter not available 78f6a49fd4 net/bnxt: fix error messages in VNIC prepare 47b40639d9 net/bnxt: workaround spurious zero stats in Thor 70314ce028 net/bnxt: fix Rx burst size constraint d19b2017fc net/bnxt: check access to possible null pointer 73b4b37a14 malloc: fix size annotation for NUMA-aware realloc cd12bf5357 bitmap: fix buffer overrun in bitmap init 7af7de2a52 graph: fix null dereference in stats 3d328cf711 graph: fix memory leak in stats a860247483 version: 20.11.2 aac916d95c version: 20.11.2-rc2 8db55d6a07 net/mlx5: fix receiving queue timestamp format 6b3e11c79d net/ice: fix RSS for L2 packet f7b699f8e1 event/octeontx2: fix XAQ pool reconfigure a0481453af event/octeontx2: configure crypto adapter xaq pool a71455d9f5 event/octeontx2: fix crypto adapter queue pair operations ffa8fb5f54 build: fix drivers selection without Python d997326fe3 net/ark: fix leak on thread termination e11b10e00a net/hns3: fix concurrent interrupt handling 621a74d828 test/cmdline: silence clang 12 warning bd41e2bc99 doc: fix runtime options in DLB2 guide 8ba82ed84d event/dlb2: remove references to deferred scheduling 4d182a84d5 test: fix build with GCC 11 0b1753ac72 net/memif: fix Tx bps statistics for zero-copy b1ec8ac5ec common/sfc_efx/base: add missing MCDI response length checks 6f41c82e52 common/sfc_efx/base: limit reported MCDI response length 83fcaa37fe net/mlx5: fix loopback for Direct Verbs queue 91f0c38c0d net/hns3: fix link speed when VF device is down f4a3f4a6b9 net/hns3: fix DCB reconfiguration 0eafb399ba net/hns3: fix DCB configuration aeaba9b829 net/hns3: remove meaningless packet buffer rollback 47af5229ce net/hns3: fix requested FC mode rollback 6442b97894 net/hns3: fix Rx/Tx queue numbers check a6967ee4a8 vdpa/mlx5: fix device unplug 4079bce204 net/vhost: restore pseudo TSO support d565e160b1 net/mlx5: fix counter offset detection 570fa795f0 net/mlx5: fix leak when configured repeatedly 2471e99da3 net/mlx4: fix leak when configured repeatedly 6156da1041 crypto/zuc: fix build with GCC 11 87eec97f52 test/crypto: fix build with GCC 11 18918e1884 devtools: fix orphan symbols check with busybox 934abbb8b8 test: fix division by zero 99755af674 examples/l3fwd-power: fix empty poll thresholds 64ac670fa0 test/table: fix build with GCC 11 61238b46be test/power: fix turbo test 4498bac0f5 test/power: fix low frequency test when turbo enabled c5a5a60d9e test/power: add turbo mode to frequency check c729d4f125 test/power: fix CPU frequency check 9a1044da25 test: check flow classifier creation acf64e9685 examples/skeleton: fix NUMA check of port and core 12822e56a0 examples/l2fwd-cat: fix NUMA check of port and core 110a22070f examples/flow_classify: fix NUMA check of port and core b993ebf7bb examples/rxtx_callbacks: fix port ID format specifier fc88e04a9a app/crypto-perf: check memory allocation cfd635034c crypto/qat: fix null authentication request 010e63f5ee test/crypto: fix return value of a skipped test 975a9831e1 net/mlx5: fix RSS flow item expansion for NVGRE cb97d59428 net/mlx5: fix secondary process initialization ordering 14b6df2399 net/mlx4: fix secondary process initialization ordering 071855618a net/tap: fix build with GCC 11 c2155d8297 net/ice/base: fix build with GCC 11 84c5ec2505 net/bnx2x: fix build with GCC 11 724378c1a1 net/bnx2x: fix build with GCC 11 a83980d079 net/igc: fix speed configuration e0305fc830 net/i40e: fix VF RSS configuration 2e077407fe net/ice: fix VSI array out of bounds access e5c01fbc22 net/ena: indicate Rx RSS hash presence 96883cec2a net/mlx5: fix tunnel offload private items location 6bdf384447 net/enic: enable GENEVE offload via VNIC configuration 1cf7b4c769 net/ice: fix leak on thread termination 18151dfdcb app/testpmd: fix tunnel offload flows cleanup 98f23aad56 net/hns3: fail setting FEC if one bit mode is not supported a6c272ac76 net/hns3: fix ordering in secondary process initialization edd8521ace net/hns3: fix secondary process request start/stop Rx/Tx a795428a29 net/hns3: fix mailbox message ID in log 5244852443 net/hns3: fix TM QCN error event report by MSI-X ec14e37220 net/txgbe: fix QinQ strip 33f33e3e7c net/hns3: fix querying flow director counter for out param 8e72b7a2ee net/hns3: fix VF alive notification after config restore 6ed898b297 net/hns3: clear hash map on flow director clear 8f93ec6288 net/hns3: fix log on flow director clear 9e15a154c5 net/hns3: return error on PCI config write failure 3387f2c95f net/nfp: fix reporting of RSS capabilities c9000c686e net/ena: report default ring size 4a79d25bd1 net/ena: remove endian swap functions 967dcfb168 net/ena: fix crash with unsupported device argument a5c0cca39a net/ena: fix parsing of large LLQ header device argument 1c44277b56 net/ena/base: destroy multiple wait events 74cc4f7d97 net/ena/base: fix type conversions by explicit casting 47ed9f3e81 net/ena/base: improve style and comments 70f1f80edb net/ena: switch memcpy to optimized version 48af30a4c3 net/mlx5/linux: fix firmware version 106f00833d net/mlx5: fix RSS flow item expansion for GRE key 6db31e3304 net/ice/base: fix memory allocation wrapper d8351b6c9f app/eventdev: fix lcore parsing skipping last core d4138b565d event/dpaa2: remove unused macros b7ab9f121d power: fix sanity checks for guest channel read 5d30751003 doc: remove PDF requirements 14e975dea9 test/timer: check memzone allocation 3ce8842e18 examples/timer: fix time interval 764a01e145 ipc: use monotonic clock 45c0d2e47e raw/skeleton: add missing check after setting attribute 3aadd33dd2 eal: fix memory mapping on 32-bit target 3cb6827a32 eal: fix leak in shared lib mode detection 5be4837391 bus/fslmc: remove unused debug macro 07d17061ab test/crypto: copy offset data to OOP destination buffer e5bf617fa8 crypto/dpaa2_sec: fix close and uninit functions 39b13992e9 crypto/dpaa_sec: affine the thread portal affinity 8038030f29 test/crypto: fix auth-cipher compare length in OOP afe3a7f202 compress/qat: enable compression on GEN3 95fd32f696 common/qat: increase IM buffer size for GEN3 6856433bed app/bbdev: fix HARQ error messages 90ca87dd69 app/bbdev: check memory allocation 2194792b3a eal: fix service core list parsing 689d3a982b ipc: check malloc sync reply result 89bbedc455 raw/ntb: check memory allocations 1a62a37afe raw/ntb: check SPAD user index 10ddae775c examples: fix pkg-config override 8ff559890a regex/octeontx2: remove unused include directory a0a21cb0c7 net/bnxt: prevent device access in error state 00b2343239 net/bnxt: fix mismatched type comparison in Rx e00127b777 net/bnxt: check PCI config read 91d4a1731a net/bnxt: fix mismatched type comparison in MAC restore 1cfcaccb0b net/bnxt: fix single PF per port check 85b0241b6b net/bnxt: fix dynamic VNIC count a7375b06e8 net/bnxt: fix Rx timestamp when FIFO pending bit is set 699e70a0b6 net/bnxt: refactor multi-queue Rx configuration ca60f84823 vhost: fix offload flags in Rx path 96c209b1a6 net/virtio: fix vectorized Rx queue rearm b6659faacc telemetry: fix race on callbacks list 31619530c8 test/distributor: fix burst flush on worker quit 8e681713b3 test/distributor: fix worker notification in burst mode 8064f75d9b ethdev: add missing buses in device iterator 8e6d9cfe2d net/hns3: increase readability in logs ce498169d4 net/hns3: remove unused VMDq code 5d84f2b422 net/hns3: remove read when enabling TM QCN error event 29da2a8b3d net/hns3: fix vector Rx burst limitation 88be45dbba net/bnxt: drop unused attribute 15cf480f1a net/sfc: fix mark support in EF100 native Rx datapath 40c046441f net/i40e: fix primary MAC type when starting port 38b01e7fa3 net/iavf: fix primary MAC type when starting port 5c4358f054 raw/ifpga: fix device name format cb6f74724d net/mlx5: fix flow age event triggering 053299cf1d net/hns3: remove unused macros 2f0e34a575 net/hns3: fix time delta calculation 589600a03a net/hns3: log time delta in decimal format 1f6d0c6f6c app/testpmd: verify DCB config during forward config 313bd50dab app/testpmd: fix DCB re-configuration a3da207349 app/testpmd: fix DCB forwarding configuration 95d258ab14 app/testpmd: fix forward lcores number for DCB 9874e06dc5 net/kni: warn on stop failure 3caffc5447 net/tap: check ioctl on restore 6af34d2abd app/testpmd: fix division by zero on socket memory dump 180a37c3ef net/hns3: fix link speed when port is down 3502d412a0 net/hns3: fix link status when port is stopped 47b2b44b9f net/mlx5: fix probing device in legacy bonding mode 1c43f69982 net/mlx4: fix buffer leakage on device close 04475743c8 net/mlx5: remove drop queue function prototypes 8965b66896 net/bnxt: use prefix on global function 52d2337eac net/bnxt: remove unused function parameters 5396d57fc3 net/bnxt: remove unnecessary forward declarations 0f0469489b net/virtio: fix getline memory leakage 24743b77a7 vhost: fix redundant vring status change notification b0a7aab7d8 vhost: fix queue initialization 351bc34645 net/e1000: fix flow error message object 5d2c2857f4 common/iavf: fix duplicated offload bit dc22d3cfab net/iavf: fix VF to PF command failure handling e488fd804d net/ice: fix fast mbuf freeing c7db959613 net/i40e: remove redundant VSI check in Tx queue setup 35e133887c net/i40e: fix negative VEB index 3085e8ab3e common/sfc_efx/base: fix dereferencing null pointer 551f3198b8 net/hns3: fix handling link update adefa69ef3 net/bonding: fix socket ID check 8d04d026a7 doc: fix formatting in testpmd guide 9886a1aed2 app/testpmd: fix segment number check bef47e0c78 net/hns3: fix typos on comments 58155c9ecf net/tap: fix interrupt vector array size 6ca567cc48 app/testpmd: fix max queue number for Tx offloads eaee68d852 test/kni: check init result 3b949ee57a test/kni: fix a comment 448c880b6e net/bonding: fix leak on remove 8abec7f317 net/hns3: remove unused mailbox macro and struct b012ce6634 net/hns3: fix processing link status message on PF b47af28ffd net/hns3: fix mailbox error message 3ab9cfbc6a drivers/net: fix FW version query b65e812dd2 net/kni: check init result bfaab1571e doc: fix multiport syntax in nfp guide 7abfd667da power: save original ACPI governor always 2c6016c807 bpf: fix JSLT validation a5fd2098d6 acl: fix build with GCC 11 efdd260f6e eventdev: fix memory leakage on thread creation failure 78dfdbc90f eventdev: remove redundant thread name setting d173cc85c9 app/eventdev: fix overflow in lcore list parsing 8ad8d124a5 test/mempool: fix object initializer f532cbbedb mbuf: check shared memory before dumping dynamic space 5f90abb232 eal/arm64: fix platform register bit 35ad25c5b1 raw/ioat: fix script for configuring small number of queues 1c96bfbc4c config/ppc: reduce number of cores and NUMA nodes cf948fe9c5 stack: allow lock-free only on relevant architectures ad11991368 version: 20.11.2-rc1 06ed5a2729 app: fix exit messages 3dce6da8bc bus/pci: support I/O port operations with musl 8aeb5c3538 net/bnxt: fix ring count calculation for Thor d225df791f regex/mlx5: support timestamp format 1607156dcd net/mlx5: support timestamp format 2ceb5afbf2 doc: fix build with Sphinx 4 7fbddcaa0e net/bnxt: fix PTP support for Thor 05d828f0b6 net/bnxt: fix Rx queue count 189a17d086 net/bnxt: fix Rx descriptor status 51fef82607 net/sfc: fix outer rule rollback on error 1524a5460b net/hns3: fix verification of NEON support c6bc1e8980 net/hns3: fix timing in mailbox 41b2680227 net/hns3: fix VF handling LSC event in secondary process 58d8850553 net/hns3: fix possible mismatched response of mailbox 595ee1c60a net/virtio: fix interrupt unregistering for listening socket 442a4977a9 net/iavf: fix wrong Tx context descriptor 6a6af19db5 net/hns3: fix setting default MAC address in bonding of VF d24915f072 net/hns3: fix mbuf leakage 67fe9bc80f ci: catch coredumps 0f9f25a1d1 ci: ignore APT update failure in GitHub Actions a93e472781 ci: fix package installation in GitHub Actions 2f415afb56 ci: enable v21 ABI checks bb63ff4aa1 ci: hook to GitHub Actions 92ef3bbc7a kni: fix kernel deadlock with bifurcated device d4d212786a kni: refactor user request processing 0cf8916e01 kni: support async user request 20bbce05a8 doc: fix names of UIO drivers 7d3e01ef10 net/e1000/base: fix timeout for shadow RAM write bd0291a99a net/i40e: fix flow director for common pctypes abb66bf463 net/ice: fix disabling promiscuous mode 32698b8d32 net/hns3: remove unused macro 8d6377e172 net/igc: fix Rx packet size 608d69a62f net/bnxt: fix health check alarm cancellation 8ffdca19f3 net/bnxt: fix resource cleanup 9231460d33 net/bonding: fix adding itself as its slave ba1a310e04 net/hns3: fix flow director lock 5eaa5abcd8 net/hns3: fix VMDq mode check cdffbfb77f net/hns3: fix DCB mode check 2782c994db net/hns3: remove redundant mailbox response 5c61f0e991 doc: fix matching versions in ice guide bd0494c495 net/hns3: remove unused macros f81a67f4b8 doc: fix HiSilicon copyright syntax 1eea3b7a27 examples/ethtool: remove unused parsing aa94d640eb examples: add eal cleanup to examples 8347ba1646 test/power: round CPU frequency to check 2266f65a23 test/power: add delay before checking CPU frequency 323d01cf8d test/bpf: fix error message 79273b13a0 common/dpaax: fix possible null pointer access 1bcde22826 sched: fix traffic class oversubscription parameter 9ffa1fee27 ip_frag: fix fragmenting IPv4 packet with header option b6b219b87c test: check thread creation 7b3cbf5315 test/cmdline: fix inputs array c62ae18b64 examples/l3fwd: fix LPM IPv6 subnets 512393d56e examples/ptpclient: remove wrong comment 51ca4146bb pipeline: fix endianness conversions 6b76e06108 vfio: fix duplicated user mem map 879dc56ebd eventdev: fix case to initiate crypto adapter service 86ec5aeef9 net/iavf: fix lack of MAC type when set MAC address 674d4cb4de net/i40e: fix lack of MAC type when set MAC address 6ac6d7e852 net/hns3: fix flow control mode 20a6184f88 net/hns3: remove VLAN/QinQ ptypes from support list dc7d063415 net/hns3: fix missing outer L4 UDP flag for VXLAN f20ccda35a net/hns3: fix use of command status enumeration a0cffe358d net/ice: fix crash in AVX512 b59be07a77 net/iavf: fix crash in AVX512 5ecc163bf9 ethdev: update flow item GTP QFI definition 42c05be1fe app/testpmd: fix bitmap of link speeds when force speed be168e4fec net/ixgbe: fix Rx errors statistics for UDP checksum 8e59d734a2 net/mlx5: fix resource release for mirror flow 00d769c518 net/mlx4: fix RSS action with null hash key fb455a8129 net/mlx5: fix redundant flow after RSS expansion 1cb30b35c9 net/ice: fix illegal access when removing MAC filter ac002ace6e net/e1000: fix max Rx packet size 9c9d25bce1 common/sfc_efx/base: fix indication of MAE encap support 41111ae623 net/hns3: fix configure FEC when concurrent with reset 33c960aad1 net/hns3: fix queue state when concurrent with reset da8413c234 net/hns3: fix timing in resetting queues 94bb3ef988 net/hns3: fix some packet types 60065a5a61 test: fix TCP header initialization 3d8025a121 buildtools: fix all drivers disabled on Windows acbb986965 crypto/qat: fix offset for out-of-place scatter-gather ce88f40d2c examples/l2fwd-crypto: fix packet length while decryption 9c07408cef examples/l2fwd-crypto: skip masked devices 96d2d64bf1 crypto/octeontx: fix session-less mode 9e520a5a7a eal: add C++ include guard for reciprocal header 45b58e4ac4 raw/octeontx2_dma: assign PCI device in DPI VF d2d434683d test/trace: fix race on collected perf data cf45856b8b license: fix typos eb30365e9e event/octeontx2: fix device reconfigure for single slot dc7e8df00f app/eventdev: fix timeout accuracy 5b91f48bc8 test/event: fix timeout accuracy ba0aecb72a eal/windows: fix return codes of pthread shim layer 2e83b42a99 app/flow-perf: fix encap/decap actions 2b03f8ca36 net/enic: fix flow initialization error handling 44bd01347f net/hns3: delete redundant blank line 7764ed833a net/hns3: support get device version when dump register d0897ad2fb net/hns3: fix VF mailbox head field bb24098f63 net/hns3: fix flow counter value 654aeb2619 net/hns3: fix flow control exception 73db182cb0 net/hns3: fix rollback after setting PVID failure c718e751f4 net/hns3: fix FLR miss detection 539f3b7802 net/hns3: fix copyright date a096b11ef5 ethdev: validate input in EEPROM info 963fcacd95 ethdev: validate input in register info 2e6638d897 ethdev: validate input in module EEPROM dump ec4d4d10f3 vhost: fix initialization of async temporary header de93dc0502 vhost: fix initialization of temporary header d43a7f6be8 net/bnxt: fix configuring LRO bc53c25124 net/bnxt: fix double free in port start failure f30dc57e78 net/mlx5: fix drop action for Direct Rules/Verbs b52bd28182 net/mlx5: fix missing shared RSS hash types 43af55f5bf net/mlx5: fix shared inner RSS 81c1c91037 net/i40e: fix flow director config after flow validate 5a4a7bb830 doc: update recommended versions for i40e b1fab4dc0d net/e1000: fix Rx error counter for bad length fa6df61bf2 net/igc: fix Rx error counter for bad length 13e3e5e93c net/ena: fix releasing Tx ring mbufs 7151983d32 net/hns3: update HiSilicon copyright syntax fdd1a58762 net/hns3: fix MTU config complexity 1324beafba eal: fix hang in control thread creation ea6d0d6561 eal: fix race in control thread creation 5a324f3e4d app/testpmd: fix usage text 7b581788ee app/regex: fix usage text 3ad213dfa7 eal: fix evaluation of log level option 4fc1996894 test: proceed if timer subsystem already initialized 92805a55da drivers: fix log level after loading 6baf95a98d service: clean references to removed symbol e0a41b8c47 mem: fix freeing segments in --huge-unlink mode 8ee0fdee90 power: do not skip saving original P-state governor 4370808640 doc: fix sphinx rtd theme import in GHA 8d3f8b347f vdpa/mlx5: fix virtq cleaning 42ed69a37b examples/vhost_crypto: remove unused short option 429dd55035 vhost: fix batch dequeue potential buffer overflow 358cba78c0 vhost: fix packed ring potential buffer overflow 25d53e1eb8 vhost: fix split ring potential buffer overflow 1716e66878 examples/vhost: check memory table query 42457347e2 vdpa/ifc: check PCI config read f90c6e9d41 net/mlx5: fix using flow tunnel before null check 7f55ac318c net/ixgbe: fix RSS RETA being reset after port start 843b7caa8e net/iavf: fix TSO max segment size eefc6b16bc net/igc: fix Rx RSS hash offload capability 8235f3fdfd net/i40e: announce request queue capability in PF ddb17b5462 net/iavf: fix packet length parsing in AVX512 7f8de73228 net/i40e: fix parsing packet type for NEON 38824647ed app/testpmd: fix Tx/Rx descriptor query error log cd33dd08a7 net/sfc: fix error path inconsistency de81fe259a net/hinic: fix crash in secondary process a1b0bff2d5 net/hns3: fix long task queue pairs reset time 15b6974306 net/hns3: fix link update when failed to get link info 7537fafbc7 net/hns3: fix Tx checksum for UDP packets with special port a7bf8336a2 net/hns3: fix processing Tx offload flags e29b92b998 net/hns3: fix reporting undefined speed 530d228d3e net/mlx5: support RSS expansion for IPv6 GRE 2291013139 net/mlx5: fix flow actions index in cache 162f87fce1 net/ice/base: fix memory allocation for MAC addresses 7b7af2fd73 net/ice: fix RSS hash update fe1461f8b6 net/i40e: fix input set field mask 74fc31b48f net/qede: accept bigger RSS table 50650a3ab2 net/qede: reduce log verbosity 75f780af8b net/bnxt: fix memory allocation for command response 34972cfd96 net/bnxt: check kvargs parsing b1f8911ea3 net/bnxt: fix handling of null flow mask 28e5e8b722 net/bnxt: fix Tx length hint threshold b21daacf92 net/bnxt: fix Rx buffer posting 6260a81282 net/bnxt: fix timesync when PTP is not supported 23f07e5fdc net/bnxt: fix link state operations 88f2faa23c net/bnxt: fix RSS context cleanup 832c6464ce net/bnxt: fix PCI write check 2b68ea0468 net/bnxt: fix Tx timestamp init 763cb5c708 app/testpmd: fix NVGRE encap configuration 516cebd9dd common/sfc_efx: remove GENEVE from supported tunnels b22415b70a net/ark: refactor Rx buffer recovery f6beb20cd9 net/ark: update packet director initial state d1b41662e0 test: fix autotest handling of skipped tests 7c0c441826 pipeline: fix instruction translation a8c9a82b54 examples/packet_ordering: fix port configuration 67becbfe57 table: fix actions with different data size 19bb5235f0 examples/bbdev: fix header include for musl ba7c3d6bef app/testpmd: fix build with musl 0999e13c7a event/dlb: fix header includes for musl c8f64e248d net/igc: remove use of uint type 6bee873fbb net/cxgbe: remove use of uint type fc4664ada5 bus/dpaa: fix build with musl a01c94a0c3 bus/dpaa: fix 64-bit arch detection a4553bb9d2 common/dpaax/caamflib: fix build with musl efa745cbb2 eal: fix build with musl 9c3bb2603c build: remove redundant _GNU_SOURCE definitions 14702af2e5 build: detect execinfo library on Linux 1555f48f85 buildtools: fix build with busybox 838da36866 eal: fix comment of OS-specific header files cf10220946 net/mlx5: fix Rx metadata leftovers cd5184145e vdpa/mlx5: support timestamp format 7ddf9eaed9 common/mlx5: add timestamp format support to DevX 604068df87 net/ice: check some functions return 9a7fd13201 app/testpmd: check MAC address query 211541b614 net/bnxt: fix Rx and Tx timestamps 7c69b27093 net/bnxt: fix xstats get f061789e7c net/bnxt: mute some failure logs 15d81d5f9e net/bnxt: fix HWRM and FW incompatibility handling 274ff8673a net/bnxt: fix VF info allocation 3d051e75a4 net/bnxt: fix device readiness check 2d5c161605 net/bnxt: fix FW readiness check during recovery 3fd1f9e8ec net/bnxt: fix firmware fatal error handling 86e9785dbd net/bnxt: fix queues per VNIC 74451465f7 net/bnxt: fix VNIC configuration 262c0649f5 net/bnxt: remove unused macro 7c078fd0e9 net: fix comment in IPv6 header a7e79f5d2c bus/pci: fix Windows kernel driver categories 75c0d71c9f bus/pci: skip probing some Windows NDIS devices d68bec0b17 eal/windows: fix default thread priority 87af5c7023 eal/windows: add missing SPDX license tag d43987787c log/linux: make default output stderr f59f4e98e4 build: exclude meson files from examples installation b66b37a2b5 net/octeontx2: fix VLAN filter 6f1a03c53e net/mlx5: fix Rx segmented packets on mbuf starvation d0de930b7b net/i40e: fix IPv4 fragment offload 9461039311 net/i40evf: fix packet loss for X722 0d32ae0c6f net/ice/base: cleanup filter list on error 8d88d38931 net/ice/base: fix uninitialized struct d4ef2f169e net/ice/base: fix payload indicator on ptype e3486cbde8 net/e1000: remove MTU setting limitation f9b6f0ca8b net/igc: remove MTU setting limitation f27ac1c009 net/ice: fix VLAN filter with PF 58fc7f65f2 net/txgbe: update packet type 4d4ae30d07 net/txgbe: fix Rx missed packet counter 991c44b257 net/txgbe: remove unused functions 96cc541d11 net/bonding: fix LACP system address check 19922dfa9e net/hns3: remove unused parameter markers 3997b85241 net/hns3: fix HW buffer size on MTU update e4e0a6505d net/hns3: fix device capabilities for copper media type 4371d3b12b common/mlx5: add DevX commands for queue counters 6e06d42907 common/mlx5: add DevX command to query WQ fba807cae9 common/mlx5/linux: add glue function to query WQ 44e87e7c10 net/pcap: fix file descriptor leak on close 82f21305c4 net/mlx5: fix UAR allocation diagnostics messages 1cac75b516 net/mlx5: fix hashed list size for tunnel flow groups cf30b35eb3 net/pcap: fix format string 40313397da net/af_xdp: fix error handling during Rx queue setup 32ae43ccb7 net/sfc: fix buffer size for flow parse 40072bc599 app/testpmd: remove unnecessary UDP tunnel check 7a866f25e6 net/ionic: fix completion type in lif init c725e11eb3 net/dpaa: fix getting link status d287fda7da net/dpaa2: fix getting link status e518710835 bus/dpaa: fix statistics reading 1965f4ee95 bus/fslmc: fix random portal hangs with qbman 5.0 58200ed66a net/mlx5: fix metadata item validation for ingress flows 8d2066d2ec common/mlx5: fix DevX read output buffer size 23b584d6cc net/mlx5: fix external buffer pool registration for Rx queue 7fe1e5cdb9 net/failsafe: report minimum and maximum MTU 9da42b8f93 net/failsafe: fix RSS hash offload reporting 4f140c14a2 fbarray: fix log message on truncation error db950ecec2 vfio: fix API description b8bde7fa4b power: remove duplicated symbols from map file e41a908c66 test/mem: fix page size for external memory 7f904ea0c6 vfio: fix DMA mapping granularity for IOVA as VA 0e42f2b7ea vfio: do not merge contiguous areas- Merging upstream branch-2.16 [RH git: e6de3f5eee] Commit list: 975bd48a00 raft: Fix unnecessary periodic compactions.- Merging upstream branch-2.16 [RH git: ddb62f8750] Commit list: f68ae52392 handlers: Fix handlers mapping. 3cbadc0b74 handlers: Create additional handler threads when using CPU isolation.- pkgtool: keep .el8s before added bz string [RH git: 339efe77c4] Signed-off-by: Timothy Redaelli - Merging upstream branch-2.16 [RH git: 200df9decf] Commit list: 3e1750eee2 github: Move CI to ubuntu 20.04 base image.- Merging upstream branch-2.16 [RH git: 3bb0f66a11] Commit list: c85d35ea1a netdev-offload-tc: Disable offload of IPv6 fragments.- Merging upstream branch-2.16 [RH git: 6cd148d13d] Commit list: b8fc670ae6 system-traffic: Fix IPv4 fragmentation test sequence for check-kernel. 23d514dd25 system-traffic: Fix incorrect neigh entry in ipv6 header modification test. da1f5a95cf system-traffic: Don't run IPv6 header modification test on kernels < 5.19.- Merging upstream branch-2.16 [RH git: ca5dd54f22] Commit list: e7792039e6 netdev-linux: set correct action for packets that passed policer- Merging upstream branch-2.16 [RH git: d31b5a2a53] Commit list: 27936e0f9a python: Fix E275 missing whitespace after keyword. 0d3a67c462 dpif-netlink: Fix incorrect bit shift in compat mode. 4e319c98fa packets: Re-calculate IPv6 checksum only for first frag upon modify.- Merging upstream branch-2.16 [RH git: a9d421666d] Commit list: 2de2ef224e libopenvswitch.pc: Add missing libs for a static build. bdf147c584 rhel: Stop installing internal headers. a48436481a netdev-linux: Do not touch LAG members if master is not attached to OVS. 9cc1335f91 netdev: Clear auto_classified if netdev reopened with the type specified.- Merging upstream branch-2.16 [RH git: 11b35522e2] Commit list: dfc4a324b0 system-traffic: Properly stop dangling ping after geneve test. 1c017da8ed conntrack: Fix conntrack multiple new state.- Merging upstream branch-2.16 [RH git: 092b9c8e76] Commit list: 997ba4ee77 tc: Fix misaligned access while creating pedit actions.- Merging upstream branch-2.16 [RH git: c1bbe117f8] Commit list: 2e6d28fafe dpif-netdev: Fix leak of AVX512 DPIF scratch pad.- Merging upstream branch-2.16 [RH git: df1ebc7699] Commit list: 0fe91ee5b0 dpif-netdev: Refactor AVX512 runtime checks. (#2100393)- Merging upstream branch-2.16 [RH git: 058ebc82c2] Commit list: 19f20b0da7 dpif-netdev-extract-avx512: Protect GCC builtin usage. 1439c72fa3 ovsdb: Fix memory leak on error path in ovsdb_file_read__(). 8456befa34 odp-util: Ignore unknown attributes in parse_key_and_mask_to_match(). (#2089331) 222a52c86e lldp: Fix lldp memory leak. b04b30af65 ipfix: Trigger revalidation if ipfix options changes.- Merging upstream branch-2.16 [RH git: 3a0b236aca] Commit list: 2266e91acd conntrack: Fix incorrect bit shift while hashing nat range. 7cfbd3921c odp-util: Fix unaligned access to tunnel id. b46d9ba9f9 ofpbuf: Fix offsetting a NULL pointer in ofpbuf_reserve.- Merging upstream branch-2.16 [RH git: c4dc313aae] Commit list: 63f21bd205 drop-stats.at: Fix frequent failures of the recursion too deep test.- Merging upstream branch-2.16 [RH git: 4e6f367244] Commit list: 64f289dc97 Prepare for 2.16.5. b614d27ebe Set release date for 2.16.4.- Merging upstream branch-2.16 [RH git: 45dcf738b0] Commit list: 87922569f3 ofproto-dpif-xlate: Fix internal CT state for non-recirc traffic. 51aa8dd106 classifier: Adjust segment boundary to execute prerequisite processing. (#2081773)- Merging upstream branch-2.16 [RH git: c224775aed] Commit list: 840c3fcb12 ofproto-dpif: Fix meter use-after-free. 77c89b0d25 ovs-rcu: Add ovsrcu_barrier.- Merging upstream branch-2.16 [RH git: d7d5f09849] Commit list: c8c78a76e5 ovsdb: raft: Fix transaction double commit due to lost leadership. (#2046340) 2809af022a Revert "odp-util: Always report ODP_FIT_TOO_LITTLE for IGMP." 90e31552be ofproto-dpif: Trigger revalidation if ct tp changes.- Merging upstream branch-2.16 [RH git: 3e3d3725d3] Commit list: 72bad27674 Carefully release NBL in Windows- Merging upstream branch-2.16 [RH git: 72426100fe] Commit list: 6a304c7866 tests: Properly kill ovsdb test processes. 44dfae2991 ovs-save: Get highest ofp version error. 63754ac391 netdev-linux: Properly access 32-bit aligned rtnl_link_stats64 structs.- Merging upstream branch-2.16 [RH git: 0c22edcd05] Commit list: df77b74438 ofproto-dpif-xlate: Remove mirror assert. c81571d602 netdev-dpdk: Fix tx drops statistic for a down netdev.- vhost: fix queue number check when setting inflight FD [RH git: d084ce15a7] [ upstream commit 6442c329b9d2ded0f44b27d2016aaba8ba5844c5 ] In function vhost_user_set_inflight_fd, queue number in inflight message is used to access virtqueue. However, queue number could be larger than VHOST_MAX_VRING and cause write OOB as this number will be used to write inflight info in virtqueue structure. This patch checks the queue number to avoid the issue and also make sure virtqueues are allocated before setting inflight information. Fixes: ad0a4ae491fe ("vhost: checkout resubmit inflight information") Reported-by: Wenxiang Qian Signed-off-by: Chenbo Xia Reviewed-by: Maxime Coquelin - vhost: fix FD leak with inflight messages [RH git: fafbd8f642] [ upstream commit af74f7db384ed149fe42b21dbd7975f8a54ef227 ] Even if unlikely, a buggy vhost-user master might attach fds to inflight messages. Add checks like for other types of vhost-user messages. Fixes: d87f1a1cb7b6 ("vhost: support inflight info sharing") Signed-off-by: David Marchand Reviewed-by: Maxime Coquelin - Merging upstream branch-2.16 [RH git: 1c2e3ff275] Commit list: a51dd4685d ofproto-dpif-xlate: Clear out vlan flow fields while processing native tunnel. (#393566 2060552)- Merging upstream branch-2.16 [RH git: a0490a292c] Commit list: 271bea0ee0 ofproto-xlate: Fix crash when forwarding packet between legacy_l3 tunnels. 9f9d59aeae system-traffic: Fix fragment reassembly with L3 L4 protocol information.- Really set RTE_ETH_MAXPORTS to 1024 [RH git: 104da44ad6] Fixes: 81ff7c5a60f0 ("Change RTE_ETH_MAXPORTS to 1024")- Merging upstream branch-2.16 [RH git: c9969bac2f] Commit list: 2afa9d2285 cirrus: Update FreeBSD versions.- Merging upstream branch-2.16 [RH git: 2ee98fa0ff] Commit list: be8b35fddf Prepare for 2.16.4. d8639f81c1 Set release date for 2.16.3. 71a5a38c83 NEWS: Highlight libopenvswitch API change caused by UB fixes.- Merging upstream branch-2.16 [RH git: 4936a7194b] Commit list: 2c666b9791 netdev-offload-tc: Check for ct_state flag combinations that are not offloadable.- Merging upstream branch-2.16 [RH git: 1418edaf18] Commit list: 26189fd264 dpif-netdev: Fix dp_netdev_get_pmd() function getting correct core_id. a5af081bc6 alb.at: Add tests for cross-numa polling. 78c8f8a7f6 dpif-netdev: Fix PMD auto load balance with pmd-rxq-isolate. 6731e581c4 pmd.at: Add tests for multi non-local numa pmds. 60652bb3eb dpif-netdev: Fix non-local numa selection for more than two numas. c113039503 ofproto-dpif-xlate: Fix NULL pointer dereference in xlate_normal().- Merging upstream branch-2.16 [RH git: b4c45acc47] Commit list: 7644c924e8 sparse: bump recommended version and include headers. 20b87feba9 rculist: use multi-variable helpers for loop macros. 05a440fafb hindex: use multi-variable iterators. 04dca15004 cmap: use multi-variable iterators. 80e64f712d hmap: implement UB-safe hmap pop iterator. 3b4b0af690 hmap: use multi-variable helpers for hmap loops. 05e899ea8f list: use multi-variable helpers for list loops. d2406399ae util: add helpers to overload SAFE macro. f22f9d947a util: add safe multi-variable iterators. 72c3e8627c util: add multi-variable loop iterator macros.- Merging upstream branch-2.16 [RH git: 32008eb008] Commit list: 1570924c3f ovsdb: raft: Fix inability to read the database with DNS host names. (#2055097)- Merging upstream branch-2.16 [RH git: a3c48a5aeb] Commit list: c50a0f080d system-traffic.at: Fix flaky DNAT load balancing test. 9928344ea7 dpif-netdev: Keep orig_in_port as a field of the flow. aee2e66287 tests: Fix incorrect usage of OVS_WAIT_UNTIL. 5881545bd0 odp-util: Fix output for tc to be equal to kernel. 4a80c322f9 netdev-offload-tc: Fix IP and port ranges in flower returns. 49e0bb72bc netdev-offload-tc: Fix use of ICMP values instead of masks defines. 0fb545c7d9 netdev-offload-tc: Always include conntrack information to tc. 13a3f57976 netdev-offload-tc: Check for valid netdev ifindex in flow_put. 6e72fd96d3 netdev-offload-tc: Set the correct VLAN_VID and VLAN_PCP masks. e43157f303 netdev-offload-tc: Add debug logs on tc rule verify failures. 37297e7ee6 tc: Keep header rewrite actions order. 823be413ec dpdk: Use DPDK 20.11.4 release- Merging upstream branch-2.16 [RH git: 561b178a3d] Commit list: 47b5374280 system-dpdk: Fix mfex autovalidator tests. 98a74bd487 ofp-prop: Silence the 'may be uninitialized' warning. ab4f30e02b ovsdb-cluster.at: Avoid test failures due to different hashing.- Merging upstream branch-2.16 [RH git: 0e0cf86cf5] Commit list: d5d2bd3c09 ofproto: Use xlate map for uuid lookups. d158b29fb6 ofproto: Add refcount to ofproto to fix ofproto use-after-free.- Merging upstream branch-2.16 [RH git: 67312d8bee] Commit list: 43882d8372 ofproto-dpif: Trigger revalidation when ipfix config set. 218bb05fb2 system-tso: Skip encap tests when userspace TSO is enabled.- Merging upstream branch-2.16 [RH git: 832e52bea7] Commit list: 1515e085b9 tc: Fix stats byte count on fragmented packets. 7a3b46d517 compat: Add gen_stats include to define tc hw stats.- Change RTE_ETH_MAXPORTS to 1024 [RH git: 81ff7c5a60] (#2059758) Resolves: #2059758- Merging upstream branch-2.16 [RH git: 897937f6d3] Commit list: 9598f0529c ovsdb: raft: Fix inability to join the cluster after interrupted attempt. (#2033514)- Merging upstream branch-2.16 [RH git: e4d6d108a3] Commit list: fb4767b472 dpif-netdev: Fix a race condition in deletion of offloaded flows. 3e72eae031 dpif-netdev: Move port flush after datapath reconfiguration.- Merging upstream branch-2.16 [RH git: 970214133d] Commit list: 0168e7989d reconnect: Fix broken inactivity probe if there is no other reason to wake up.- Merging upstream branch-2.16 [RH git: ac5da61d03] Commit list: dee52795e6 datapath-windows: Fix NXM_OF_IP_TOS issue- Merging upstream branch-2.16 [RH git: b2df459e49] Commit list: dcde9771c5 ovsdb-idl: Fix use-after-free when destroying an IDL loop.- Merging upstream branch-2.16 [RH git: bba08b5363] Commit list: 8e23c06f24 dpif-netdev-dpcls: Make subtable reprobe thread-safe. ac0e3dd3ba ci: Fix typo in variable name. fc25e0397a dp-packet: Ensure packet base is always non-NULL. dbae56e702 bfd: lldp: stp: Fix misaligned packet field access. ee17b06cf9 ovsdb-idlc: Avoid accessing member within NULL idl index cursors. 1d799a5d17 stopwatch: Fix buffer underflow when computing percentiles.- Merging upstream branch-2.16 [RH git: 7b6570c65f] Commit list: 0954c2911d ofproto: Fix ipfix not always sampling on egress. (#2016346)- Merging upstream branch-2.16 [RH git: c5ad7f71c5] Commit list: 867e586b45 tc: Fix incorrect TC rule for decap+encap datapath flow.- Merging upstream branch-2.16 [RH git: 4541c91b99] Commit list: 418e6a0b8e dpif-netdev: fix vlan and ipv4 parsing in avx512- Merging upstream branch-2.16 [RH git: 9d51785142] Commit list: 1ec567a752 ci: Install wheel before installing any other python packages. 031a99cef0 odp-util: Fix tunnel key attr for GTP-U. 558699c73c ovsdb-idl: Only process successful txn in ovsdb_idl_loop_run.- Merging upstream branch-2.16 [RH git: 6e6f66ffd0] Commit list: 0276bdb30a ofproto-dpif-upcall: Fix n_revalidators on upcall show.- Merging upstream branch-2.16 [RH git: 513117cbb0] Commit list: 16575362dc acinclude: Detect avx512 vpopcntdq compiler support.- ovsdb: transaction: Keep one entry in the transaction history. [RH git: 7665f42d12] (#2044621) commit 6e13565dd32fb2cf5517f51ca06956e2052c4bba Author: Ilya Maximets Date: Sun Dec 19 15:09:38 2021 +0100 ovsdb: transaction: Keep one entry in the transaction history. If a single transaction exceeds the size of the whole database (e.g., a lot of rows got removed and new ones added), transaction history will be drained. This leads to sending UUID_ZERO to the clients as the last transaction id in the next monitor update, because monitor doesn't know what was the actual last transaction id. In case of a re-connect that will cause re-downloading of the whole database, since the client's last_id will be out of sync. One solution would be to store the last transaction ID separately from the actual transactions, but that will require a careful management in cases where database gets reset and the history needs to be cleared. Keeping the one last transaction instead to avoid the problem. That should not be a big concern in terms of memory consumption, because this last transaction will be removed from the history once the next transaction appeared. This is also not a concern for a fast re-sync, because this last transaction will not be used for the monitor reply; it's either client already has it, so no need to send, or it's a history miss. The test updated to not check the number of atoms if there is only one transaction in the history. Fixes: 317b1bfd7dd3 ("ovsdb: Don't let transaction history grow larger than the database.") Acked-by: Mike Pattrick Acked-by: Han Zhou Signed-off-by: Ilya Maximets Reported-at: https://bugzilla.redhat.com/2044621 Signed-off-by: Ilya Maximets - Merging upstream branch-2.16 [RH git: d202cd6da1] Commit list: 34c830c540 ovsdb-idl: ovsdb_idl_loop_destroy must also destroy the committing txn. 13009736b2 ovsdb-cs: Clear last_id on reconnect if condition changes in-flight. 017e2ae50e ofp-flow: Skip flow reply if it exceeds the maximum message size. e0c6f92a95 ovsdb-cs: Fix ignoring of the last id from the initial monitor reply. (#2044624)- ovsdb: storage: Randomize should_snapshot checks when the minimum time passed. [RH git: abe61535ca] (#2044614) commit 339f97044e3c2312fbb65b932fa14a181acf40d5 Author: Ilya Maximets Date: Mon Dec 13 16:43:33 2021 +0100 ovsdb: storage: Randomize should_snapshot checks when the minimum time passed. Snapshots are scheduled for every 10-20 minutes. It's a random value in this interval for each server. Once the time is up, but the maximum time (24 hours) not reached yet, ovsdb will start checking if the log grew a lot on every iteration. Once the growth is detected, compaction is triggered. OTOH, it's very common for an OVSDB cluster to not have the log growing very fast. If the log didn't grow 2x in 20 minutes, the randomness of the initial scheduled time is gone and all the servers are checking if they need to create snapshot on every iteration. And since all of them are part of the same cluster, their logs are growing with the same speed. Once the critical mass is reached, all the servers will start creating snapshots at the same time. If the database is big enough, that might leave the cluster unresponsive for an extended period of time (e.g. 10-15 seconds for OVN_Southbound database in a larger scale OVN deployment) until the compaction completed. Fix that by re-scheduling a quick retry if the minimal time already passed. Effectively, this will work as a randomized 1-2 min delay between checks, so the servers will not synchronize. Scheduling function updated to not change the upper limit on quick reschedules to avoid delaying the snapshot creation indefinitely. Currently quick re-schedules are only used for the error cases, and there is always a 'slow' re-schedule after the successful compaction. So, the change of a scheduling function doesn't change the current behavior much. Signed-off-by: Ilya Maximets Acked-by: Han Zhou Acked-by: Dumitru Ceara Reported-at: https://bugzilla.redhat.com/2044614 Signed-off-by: Ilya Maximets - raft: Only allow followers to snapshot. [RH git: 915efc8c00] (#2044614) commit bf07cc9cdb2f37fede8c0363937f1eb9f4cfd730 Author: Dumitru Ceara Date: Mon Dec 13 20:46:03 2021 +0100 raft: Only allow followers to snapshot. Commit 3c2d6274bcee ("raft: Transfer leadership before creating snapshots.") made it such that raft leaders transfer leadership before snapshotting. However, there's still the case when the next leader to be is in the process of snapshotting. To avoid delays in that case too, we now explicitly allow snapshots only on followers. Cluster members will have to wait until the current election is settled before snapshotting. Given the following logs taken from an OVN_Southbound 3-server cluster during a scale test: S1 (old leader): 19:07:51.226Z|raft|INFO|Transferring leadership to write a snapshot. 19:08:03.830Z|ovsdb|INFO|OVN_Southbound: Database compaction took 12601ms 19:08:03.940Z|raft|INFO|server 8b8d is leader for term 43 S2 (follower): 19:08:00.870Z|raft|INFO|server 8b8d is leader for term 43 S3 (new leader): 19:07:51.242Z|raft|INFO|received leadership transfer from f5c9 in term 42 19:07:51.244Z|raft|INFO|term 43: starting election 19:08:00.805Z|ovsdb|INFO|OVN_Southbound: Database compaction took 9559ms 19:08:00.869Z|raft|INFO|term 43: elected leader by 2+ of 3 servers We see that the leader to be (S3) receives the leadership transfer, initiates the election and immediately after starts a snapshot that takes ~9.5 seconds. During this time, S2 votes for S3 electing it as cluster leader but S3 doesn't effectively become leader until it finishes snapshotting, essentially keeping the cluster without a leader for up to ~9.5 seconds. With the current change, S3 will delay compaction and snapshotting until the election is finished. The only exception is the case of single-node clusters for which we allow the node to snapshot regardless of role. Acked-by: Han Zhou Signed-off-by: Dumitru Ceara Signed-off-by: Ilya Maximets Reported-at: https://bugzilla.redhat.com/2044614 Signed-off-by: Ilya Maximets - Merging upstream branch-2.16 [RH git: f1ca7b8ac3] Commit list: 2571b1a464 ofproto-dpif: Fix issue with non-reversible actions on a patch ports.- Merging upstream branch-2.16 [RH git: 60b19f443c] Commit list: 07a115f7d9 ovs-monitor-ipsec: Fix generated strongSwan ipsec.conf for IPv6.- Merging upstream branch-2.16 [RH git: 349d687673] Commit list: f2ee013f73 datapath-windows: Pickup Ct tuple as CT lookup key in function OvsCtSetupLookupCtx- Merging upstream branch-2.16 [RH git: e370e283cf] Commit list: bd8ebcd10c Documentation: Fix Rx/Tx queue configuration section.- Merging upstream branch-2.16 [RH git: c9297f5ef7] Commit list: 29936a853f ofproto-dpif: Fix memory leak in dpif/show-dp-features appctl.- Merging upstream branch-2.16 [RH git: edae801e00] Commit list: ba7fffb832 dpif-netdev: Improve loading of packet data for undersized packets.- Merging upstream branch-2.16 [RH git: 6ad0375ff5] Commit list: 2595b7b3d1 Prepare for 2.16.3. 6caaae525c Set release date for 2.16.2. 443e3657d7 ofproto-dpif-xlate: Snoop ingress packets and update neigh cache if needed. 75d2ef9a60 tnl-neigh-cache: Do not refresh the entry while revalidating. 5d88836566 tnl-neigh-cache: Read/write expires atomically. fb42c99c15 dpif-netdev: Improve handling of IP/TCP in avx512 mfex.- Merging upstream branch-2.16 [RH git: 07b9bf085a] Commit list: f42c484445 compat: handle NF_REPEAT error on nf_conntrack_in.- Merging upstream branch-2.16 [RH git: 8708b55152] Commit list: 3e527f21cf flow: Consider dataofs when parsing TCP packets. b537e049ad tests/flowgen: Fix packet data endianness. 35244b4980 ofproto: Fix resource usage explosion due to removal of large number of flows. a201297639 ofproto: Fix resource usage explosion while processing bundled FLOW_MOD. cd0133402c tests/flowgen: Fix length field of 802.2 data link header. 2d65b8ffd2 ovs-lib: Backup and remove existing DB when joining cluster. ab01177637 docs/dpdk: Fix install doc. 38a2129524 ovs-save: Save igmp flows in ofp_parse syntax. dc77857ce2 faq: Update OVS/DPDK version table for OVS 2.13/2.14.- Merging upstream branch-2.16 [RH git: e90e06a818] Commit list: 1d8e0f861f ofproto-dpif-xlate: Fix check_pkt_larger incomplete translation.- Merging upstream branch-2.16 [RH git: 77a249d38b] Commit list: f8f2f7c9cb datapath-windows: Reset flow key after Ipv4 fragments are reassembled- python: Replace pyOpenSSL with ssl. [RH git: 0cd5867531] (#1988429) Currently, pyOpenSSL is half-deprecated upstream and so it's removed on some distributions (for example on CentOS Stream 9, https://issues.redhat.com/browse/CS-336), but since OVS only supports Python 3 it's possible to replace pyOpenSSL with "import ssl" included in base Python 3. Stream recv and send had to be splitted as _recv and _send, since SSLError is a subclass of socket.error and so it was not possible to except for SSLWantReadError and SSLWantWriteError in recv and send of SSLStream. TCPstream._open cannot be used in SSLStream, since Python ssl module requires the SSL socket to be created before connecting it, so SSLStream._open needs to create the socket, create SSL socket and then connect the SSL socket. Reported-by: Timothy Redaelli Reported-at: https://bugzilla.redhat.com/1988429 Signed-off-by: Timothy Redaelli Acked-by: Terry Wilson Tested-by: Terry Wilson Signed-off-by: Ilya Maximets Signed-off-by: Timothy Redaelli - python: socket-util: Split inet_open_active function and use connect_ex. [RH git: 2e704b371c] In an upcoming patch, PyOpenSSL will be replaced with Python ssl module, but in order to do an async connection with Python ssl module the ssl socket must be created when the socket is created, but before the socket is connected. So, inet_open_active function is splitted in 3 parts: - inet_create_socket_active: creates the socket and returns the family and the socket, or (error, None) if some error needs to be returned. - inet_connect_active: connect the socket and returns the errno (it returns 0 if errno is EINPROGRESS or EWOULDBLOCK). connect is replaced by connect_ex, since Python suggest to use it for asynchronous connects and it's also cleaner since inet_connect_active returns errno that connect_ex already returns, moreover due to a Python limitation connect cannot not be used with ssl module. inet_open_active function is changed in order to use the new functions inet_create_socket_active and inet_connect_active. Signed-off-by: Timothy Redaelli Acked-by: Terry Wilson Tested-by: Terry Wilson Signed-off-by: Ilya Maximets Signed-off-by: Timothy Redaelli - redhat: remove mlx4 support [RH git: 4c846afd24] (#1998122) Resolves: #1998122- ovsdb: Don't let transaction history grow larger than the database. [RH git: 93d1fa0bdf] (#2012949) commit 317b1bfd7dd315e241c158e6d4095002ff391ee3 Author: Ilya Maximets Date: Tue Sep 28 13:17:21 2021 +0200 ovsdb: Don't let transaction history grow larger than the database. If user frequently changes a lot of rows in a database, transaction history could grow way larger than the database itself. This wastes a lot of memory and also makes monitor_cond_since slower than usual monotor_cond if the transaction id is old enough, because re-construction of the changes from a history is slower than just creation of initial database snapshot. This is also the case if user deleted a lot of data, so transaction history still holds all of it while the database itself doesn't. In case of current lb-per-service model in ovn-kubernetes, each load-balancer is added to every logical switch/router. Such a transaction touches more than a half of a OVN_Northbound database. And each of these transactions is added to the transaction history. Since transaction history depth is 100, in worst case scenario, it will hold 100 copies of a database increasing memory consumption dramatically. In tests with 3000 LBs and 120 LSs, memory goes up to 3 GB, while holding at 30 MB if transaction history disabled in the code. Fixing that by keeping count of the number of ovsdb_atom's in the database and not allowing the total number of atoms in transaction history to grow larger than this value. Counting atoms is fairly cheap because we don't need to iterate over them, so it doesn't have significant performance impact. It would be ideal to measure the size of individual atoms, but that will hit the performance. Counting cells instead of atoms is not sufficient, because OVN users are adding hundreds or thousands of atoms to a single cell, so they are largely different in size. Signed-off-by: Ilya Maximets Acked-by: Han Zhou Acked-by: Dumitru Ceara Reported-at: https://bugzilla.redhat.com/2012949 Signed-off-by: Ilya Maximets - ovsdb: transaction: Incremental reassessment of weak refs. [RH git: e8a363db49] (#2005958) commit 4dbff9f0a68579241ac1a040726be3906afb8fe9 Author: Ilya Maximets Date: Sat Oct 16 03:20:23 2021 +0200 ovsdb: transaction: Incremental reassessment of weak refs. The main idea is to not store list of weak references in the source row, so they all don't need to be re-checked/updated on every modification of that source row. The point is that source row already knows UUIDs of all destination rows stored in the data, so there is no much profit in storing this information somewhere else. If needed, destination row can be looked up and reference can be looked up in the destination row. For the fast lookup, destination row now stores references in a hash map. Weak reference structure now contains the table and uuid of a source row instead of a direct pointer. This allows to replace/update the source row without breaking any weak references stored in destination rows. Structure also now contains the key-value pair of atoms that triggered creation of this reference. These atoms can be used to quickly subtract removed references from a source row. During reassessment, ovsdb now only needs to care about new added or removed atoms, and atoms that got removed due to removal of the destination rows, but these are marked for reassessment by the destination row. ovsdb_datum_subtract() is used to remove atoms that points to removed or incorrect rows, so there is no need to re-sort datum in the end. Results of an OVN load-balancer benchmark that adds 3K load-balancers to each of 120 logical switches and 120 logical routers in the OVN sandbox with clustered Northbound database and then removes them: Before: %CPU CPU Time CMD 86.8 00:16:05 ovsdb-server nb1.db 44.1 00:08:11 ovsdb-server nb2.db 43.2 00:08:00 ovsdb-server nb3.db After: %CPU CPU Time CMD 54.9 00:02:58 ovsdb-server nb1.db 33.3 00:01:48 ovsdb-server nb2.db 32.2 00:01:44 ovsdb-server nb3.db So, on a cluster leader the processing time dropped by 5.4x, on followers - by 4.5x. More load-balancers - larger the performance difference. There is a slight increase of memory usage, because new reference structure is larger, but the difference is not significant. Signed-off-by: Ilya Maximets Acked-by: Dumitru Ceara Reported-at: https://bugzilla.redhat.com/2005958 Signed-off-by: Ilya Maximets - Merging upstream branch-2.16 [RH git: f5366890c5] Commit list: c221c8e613 datapath-windows:Reset PseudoChecksum value only for TX direction offload case- Merging upstream branch-2.16 [RH git: 4682b76694] Commit list: b79f0369f2 ci: Make linux-prepare trust system installs.- Merging upstream branch-2.16 [RH git: cce913794e] Commit list: 2a4c87f300 Prepare for 2.16.2. aaa1439b8e Set release date for 2.16.1.- Merging upstream branch-2.16 [RH git: 29f01c4fdb] Commit list: 108176ab5a github: Stick to python 3.9.- Merging upstream branch-2.16 [RH git: 2546fa9646] Commit list: 5c5e34603b datapath-windows: add layers when adding the deferred actions- Merging upstream branch-2.16 [RH git: d572c95f69] Commit list: 458a4f75f3 ofproto-dpif-xlate: Fix zone set from non-frozen-metadata fields.- Merging upstream branch-2.16 [RH git: 557ca689f7] Commit list: 6d8190584a dpif-netdev: Fix use-after-free on PACKET_OUT of IP fragments. 44a66cc1d0 tunnel-push-pop.at: Mask source port in tunnel header.- Merging upstream branch-2.16 [RH git: a6c4770398] Commit list: 27a5848a33 ovs-ctl: Add missing description for --ovs-vswitchd-options and --ovsdb-server-options to usage(). 0300d0c0c2 dpdk-stub: Change the ERR log to DBG. cdd6dd821d dpif-netlink: Fix feature negotiation for older kernels. c2682c42cb dpif-netdev: Fix pmd thread comments to include SMC. 9377f4a465 python: idl: Avoid sending transactions when the DB is not synced up.- Merging upstream branch-2.16 [RH git: c1145b5236] Commit list: 0fd17fbb09 ipf: release unhandled packets from the batch- Merging upstream branch-2.16 [RH git: 5c05133179] Commit list: 3f692fba98 datapath-windows:adjust Offset when processing packet in POP_VLAN action- ovsdb-data: Deduplicate string atoms. [RH git: 24e7d1140e] (#2006839) commit 429b114c5aadee24ccfb16ad7d824f45cdcea75a Author: Ilya Maximets Date: Wed Sep 22 09:28:50 2021 +0200 ovsdb-server spends a lot of time cloning atoms for various reasons, e.g. to create a diff of two rows or to clone a row to the transaction. All atoms, except for strings, contains a simple value that could be copied in efficient way, but duplicating strings every time has a significant performance impact. Introducing a new reference-counted structure 'ovsdb_atom_string' that allows to not copy strings every time, but just increase a reference counter. This change allows to increase transaction throughput in benchmarks up to 2x for standalone databases and 3x for clustered databases, i.e. number of transactions that ovsdb-server can handle per second. It also noticeably reduces memory consumption of ovsdb-server. Next step will be to consolidate this structure with json strings, so we will not need to duplicate strings while converting database objects to json and back. Signed-off-by: Ilya Maximets Acked-by: Dumitru Ceara Acked-by: Mark D. Gray Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=2006839 Signed-off-by: Dumitru Ceara - ovsdb-data: Add function to apply diff in-place. [RH git: df0e4bda98] (#2006851) commit 32b51326ef9c307b4acd0bacafb0218dd1372f3d Author: Ilya Maximets Date: Thu Sep 23 01:47:24 2021 +0200 ovsdb_datum_apply_diff() is heavily used in ovsdb transactions, but it's linear in terms of number of comparisons. And it also clones all the atoms along the way. In most cases size of a diff is much smaller than the size of the original datum, this allows to perform the same operation in-place with only O(diff->n * log2(old->n)) comparisons and O(old->n + diff->n) memory copies with memcpy. Using this function while applying diffs read from the storage gives a significant performance boost and allows to execute much more transactions per second. Signed-off-by: Ilya Maximets Acked-by: Mark D. Gray Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=2006851 Signed-off-by: Dumitru Ceara - ovsdb-data: Optimize subtraction of sets. [RH git: 5bace82405] (#2005483) commit bb12b63176389e516ddfefce20dfa165f24430fb Author: Ilya Maximets Date: Thu Sep 23 01:47:23 2021 +0200 Current algorithm for ovsdb_datum_subtract looks like this: for-each atom in a: if atom in b: swap(atom, ) destroy(atom) quicksort(a) Complexity: Na * log2(Nb) + (Na - Nb) * log2(Na - Nb) Search Comparisons for quicksort It's not optimal, especially because Nb << Na in a vast majority of cases. Reversing the search phase to look up atoms from 'b' in 'a', and closing gaps from deleted elements in 'a' by plain memory copy to avoid quicksort. Resulted complexity: Nb * log2(Na) + (Na - Nb) Search Memory copies Subtraction is heavily used while executing database transactions. For example, to remove one port from a logical switch in OVN. Complexity of such operation if original logical switch had 100 ports goes down from 100 * log2(1) = 100 comparisons for search and 99 * log2(99) = 656 comparisons for quicksort ------------------------------ 756 comparisons in total to only 1 * log2(100) = 7 comparisons for search + memory copy of 99 * sizeof (union ovsdb_atom) bytes. We could use memmove to close the gaps after removing atoms, but it will lead to 2 memory copies inside the call, while we can perform only one to the temporary 'result' and swap pointers. Performance in cases, where sizes of 'a' and 'b' are comparable, should not change. Cases with Nb >> Na should not happen in practice. All in all, this change allows ovsdb-server to perform several times more transactions, that removes elements from sets, per second. Signed-off-by: Ilya Maximets Acked-by: Han Zhou Acked-by: Mark D. Gray Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=2005483 Signed-off-by: Dumitru Ceara - ovsdb-data: Optimize union of sets. [RH git: e2a4c7d794] (#2005483) commit 51946d22274cd591dc061358fb507056fbd91420 Author: Ilya Maximets Date: Thu Sep 23 01:47:22 2021 +0200 Current algorithm of ovsdb_datum_union looks like this: for-each atom in b: if not bin_search(a, atom): push(a, clone(atom)) quicksort(a) So, the complexity looks like this: Nb * log2(Na) + Nb + (Na + Nb) * log2(Na + Nb) Comparisons clones Comparisons for quicksort for search ovsdb_datum_union() is heavily used in database transactions while new element is added to a set. For example, if new logical switch port is added to a logical switch in OVN. This is a very common use case where CMS adds one new port to an existing switch that already has, let's say, 100 ports. For this case ovsdb-server will have to perform: 1 * log2(100) + 1 clone + 101 * log2(101) Comparisons Comparisons for for search quicksort. ~7 1 ~707 Roughly 714 comparisons of atoms and 1 clone. Since binary search can give us position, where new atom should go (it's the 'low' index after the search completion) for free, the logic can be re-worked like this: copied = 0 for-each atom in b: desired_position = bin_search(a, atom) push(result, a[ copied : desired_position - 1 ]) copied = desired_position push(result, clone(atom)) push(result, a[ copied : Na ]) swap(a, result) Complexity of this schema: Nb * log2(Na) + Nb + Na Comparisons clones memory copy on push for search 'swap' is just a swap of a few pointers. 'push' is not a 'clone', but a simple memory copy of 'union ovsdb_atom'. In general, this schema substitutes complexity of a quicksort with complexity of a memory copy of Na atom structures, where we're not even copying strings that these atoms are pointing to. Complexity in the example above goes down from 714 comparisons to 7 comparisons and memcpy of 100 * sizeof (union ovsdb_atom) bytes. General complexity of a memory copy should always be lower than complexity of a quicksort, especially because these copies usually performed in bulk, so this new schema should work faster for any input. All in all, this change allows to execute several times more transactions per second for transactions that adds new entries to sets. Alternatively, union can be implemented as a linear merge of two sorted arrays, but this will result in O(Na) comparisons, which is more than Nb * log2(Na) in common case, since Na is usually far bigger than Nb. Linear merge will also mean per-atom memory copies instead of copying in bulk. 'replace' functionality of ovsdb_datum_union() had no users, so it just removed. But it can easily be added back if needed in the future. Signed-off-by: Ilya Maximets Acked-by: Han Zhou Acked-by: Mark D. Gray Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=2005483 Signed-off-by: Dumitru Ceara - ovsdb: transaction: Use diffs for strong reference counting. [RH git: 85da133eaa] (#2003203) commit b2712d026eae2d9a5150c2805310eaf506e1f162 Author: Ilya Maximets Date: Tue Sep 14 00:19:57 2021 +0200 Currently, even if one reference added to the set of strong references or removed from it, ovsdb-server will walk through the whole set and re-count references to other rows. These referenced rows will also be added to the transaction in order to re-count their references. For example, every time Logical Switch Port added to a Logical Switch, OVN Northbound database server will walk through all ports of this Logical Switch, clone their rows, and re-count references. This is not very efficient. Instead, it can only increase reference counters for added references and reduce for removed ones. In many cases this will be only one row affected in the Logical_Switch_Port table. Introducing new function that generates a diff of two datum objects, but stores added and removed atoms separately, so they can be used to increase or decrease row reference counters accordingly. This change allows to perform several times more transactions that adds or removes strong references to/from sets per second, because ovsdb-server no longer clones and re-counts rows that are irrelevant to current transaction. Acked-by: Dumitru Ceara Signed-off-by: Ilya Maximets Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=2003203 Signed-off-by: Dumitru Ceara - Merging upstream branch-2.16 [RH git: 2114714012] Commit list: 547371ecdb cirrus: Reduce memory requirements for FreeBSD VMs.- redhat: use hugetlbfs group for /var/log/openvswitch when dpdk is enabled [RH git: 4e5928b671] (#2004543) Resolves: #2004543- Merging upstream branch-2.16 [RH git: 7332b410fc] Commit list: facaf5bc71 netdev-linux: Fix a null pointer dereference in netdev_linux_notify_sock(). 6e203d4873 pcap-file: Fix memory leak in ovs_pcap_open(). f50da0b267 odp-util: Fix a null pointer dereference in odp_flow_format(). 7da752e43f odp-util: Fix a null pointer dereference in odp_nsh_key_from_attr__(). bc22b01459 netdev-dpdk: Fix RSS configuration for virtio. 81706c5d43 ipf: Fix only nat the first fragment in the reass process.- Merging upstream branch-2.16 [RH git: e71f31dfd6] Commit list: 242c280f0e dpif-netdev: Fix crash when PACKET_OUT is metered.- ovsdb: monitor: Store serialized json in a json cache. [RH git: bc20330c85] (#1996152) commit 43e66fc27659af2a5c976bdd27fe747b442b5554 Author: Ilya Maximets Date: Tue Aug 24 21:00:39 2021 +0200 Same json from a json cache is typically sent to all the clients, e.g., in case of OVN deployment with ovn-monitor-all=true. There could be hundreds or thousands connected clients and ovsdb will serialize the same json object for each of them before sending. Serializing it once before storing into json cache to speed up processing. This change allows to save a lot of CPU cycles and a bit of memory since we need to store in memory only a string and not the full json object. Testing with ovn-heater on 120 nodes using density-heavy scenario shows reduction of the total CPU time used by Southbound DB processes from 256 minutes to 147. Duration of unreasonably long poll intervals also reduced dramatically from 7 to 2 seconds: Count Min Max Median Mean 95 percentile ------------------------------------------------------------- Before 1934 1012 7480 4302.5 4875.3 7034.3 After 1909 1004 2730 1453.0 1532.5 2053.6 Acked-by: Dumitru Ceara Acked-by: Han Zhou Signed-off-by: Ilya Maximets Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1996152 Signed-off-by: Ilya Maximets - raft: Don't keep full json objects in memory if no longer needed. [RH git: 4606423e8b] (#1990058) commit 0de882954032aa37dc943bafd72c33324aa0c95a Author: Ilya Maximets Date: Tue Aug 24 21:00:38 2021 +0200 raft: Don't keep full json objects in memory if no longer needed. Raft log entries (and raft database snapshot) contains json objects of the data. Follower receives append requests with data that gets parsed and added to the raft log. Leader receives execution requests, parses data out of them and adds to the log. In both cases, later ovsdb-server reads the log with ovsdb_storage_read(), constructs transaction and updates the database. On followers these json objects in common case are never used again. Leader may use them to send append requests or snapshot installation requests to followers. However, all these operations (except for ovsdb_storage_read()) are just serializing the json in order to send it over the network. Json objects are significantly larger than their serialized string representation. For example, the snapshot of the database from one of the ovn-heater scale tests takes 270 MB as a string, but 1.6 GB as a json object from the total 3.8 GB consumed by ovsdb-server process. ovsdb_storage_read() for a given raft entry happens only once in a lifetime, so after this call, we can serialize the json object, store the string representation and free the actual json object that ovsdb will never need again. This can save a lot of memory and can also save serialization time, because each raft entry for append requests and snapshot installation requests serialized only once instead of doing that every time such request needs to be sent. JSON_SERIALIZED_OBJECT can be used in order to seamlessly integrate pre-serialized data into raft_header and similar json objects. One major special case is creation of a database snapshot. Snapshot installation request received over the network will be parsed and read by ovsdb-server just like any other raft log entry. However, snapshots created locally with raft_store_snapshot() will never be read back, because they reflect the current state of the database, hence already applied. For this case we can free the json object right after writing snapshot on disk. Tests performed with ovn-heater on 60 node density-light scenario, where on-disk database goes up to 97 MB, shows average memory consumption of ovsdb-server Southbound DB processes decreased by 58% (from 602 MB to 256 MB per process) and peak memory consumption decreased by 40% (from 1288 MB to 771 MB). Test with 120 nodes on density-heavy scenario with 270 MB on-disk database shows 1.5 GB memory consumption decrease as expected. Also, total CPU time consumed by the Southbound DB process reduced from 296 to 256 minutes. Number of unreasonably long poll intervals reduced from 2896 down to 1934. Deserialization is also implemented just in case. I didn't see this function being invoked in practice. Acked-by: Dumitru Ceara Acked-by: Han Zhou Signed-off-by: Ilya Maximets Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1990058 Signed-off-by: Ilya Maximets - json: Add support for partially serialized json objects. [RH git: 885e5ce1b5] (#1990058) commit b0bca6f27aae845c3ca8b48d66a7dbd3d978162a Author: Ilya Maximets Date: Tue Aug 24 21:00:37 2021 +0200 json: Add support for partially serialized json objects. Introducing a new json type JSON_SERIALIZED_OBJECT. It's not an actual type that can be seen in a json message on a wire, but internal type that is intended to hold a serialized version of some other json object. For this reason it's defined after the JSON_N_TYPES to not confuse parsers and other parts of the code that relies on compliance with RFC 4627. With this JSON type internal users may construct large JSON objects, parts of which are already serialized. This way, while serializing the larger object, data from JSON_SERIALIZED_OBJECT can be added directly to the result, without additional processing. This will be used by next commits to add pre-serialized JSON data to the raft_header structure, that can be converted to a JSON before writing the file transaction on disk or sending to other servers. Same technique can also be used to pre-serialize json_cache for ovsdb monitors, this should allow to not perform serialization for every client and will save some more memory. Since serialized JSON is just a string, reusing the 'json->string' pointer for it. Acked-by: Dumitru Ceara Acked-by: Han Zhou Signed-off-by: Ilya Maximets Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1990058 Signed-off-by: Ilya Maximets - json: Optimize string serialization. [RH git: bb1654da63] (#1990069) commit 748010ff304b7cd2c43f4eb98a554433f0df07f9 Author: Ilya Maximets Date: Tue Aug 24 23:07:22 2021 +0200 json: Optimize string serialization. Current string serialization code puts all characters one by one. This is slow because dynamic string needs to perform length checks on every ds_put_char() and it's also doesn't allow compiler to use better memory copy operations, i.e. doesn't allow copying few bytes at once. Special symbols are rare in a typical database. Quotes are frequent, but not too frequent. In databases created by ovn-kubernetes, for example, usually there are at least 10 to 50 chars between quotes. So, it's better to count characters that doesn't require escaping and use fast data copy for the whole sequential block. Testing with a synthetic benchmark (included) on my laptop shows following performance improvement: Size Q S Before After Diff ----------------------------------------------------- 100000 0 0 : 0.227 ms 0.142 ms -37.4 % 100000 2 1 : 0.277 ms 0.186 ms -32.8 % 100000 10 1 : 0.361 ms 0.309 ms -14.4 % 10000000 0 0 : 22.720 ms 12.160 ms -46.4 % 10000000 2 1 : 27.470 ms 19.300 ms -29.7 % 10000000 10 1 : 37.950 ms 31.250 ms -17.6 % 100000000 0 0 : 239.600 ms 126.700 ms -47.1 % 100000000 2 1 : 292.400 ms 188.600 ms -35.4 % 100000000 10 1 : 387.700 ms 321.200 ms -17.1 % Here Q - probability (%) for a character to be a '\"' and S - probability (%) to be a special character ( < 32). Testing with a closer to real world scenario shows overall decrease of the time needed for database compaction by ~5-10 %. And this change also decreases CPU consumption in general, because string serialization is used in many different places including ovsdb monitors and raft. Signed-off-by: Ilya Maximets Acked-by: Numan Siddique Acked-by: Dumitru Ceara Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=1990069 Signed-off-by: Ilya Maximets - Merging upstream branch-2.16 [RH git: 7d7567e339] Commit list: 0991ea8d19 Prepare for 2.16.1.- redhat: First 2.16.0 release. [RH git: 0a1c4276cc]  !"#$%&'()*+,-./0123456789:;<?BGJMNOPQ2.16.0-112.el8s2.16.0-112.el8s2.16.72.16.72.16.72.16.7intel-ext.hnetronome-ext.hnicira-ext.hopenflow-1.0.hopenflow-1.1.hopenflow-1.2.hopenflow-1.3.hopenflow-1.4.hopenflow-1.5.hopenflow-common.hopenflow.hcompiler.hdynamic-string.hflow.hgeneve.hhmap.hjson.hlist.hmatch.hmeta-flow.hnamemap.hnetdev.hnsh.hofp-actions.hofp-bundle.hofp-connection.hofp-ed-props.hofp-errors.hofp-flow.hofp-group.hofp-ipfix.hofp-match.hofp-meter.hofp-monitor.hofp-msgs.hofp-packet.hofp-parse.hofp-port.hofp-print.hofp-prop.hofp-protocol.hofp-queue.hofp-switch.hofp-table.hofp-util.hofpbuf.hpackets.hpoll-loop.hrconn.hshash.hthread.htoken-bucket.htun-metadata.htype-props.htypes.hutil.huuid.hvconn.hversion.hvlog.hlibofproto.solibopenvswitch.solibovsdb.solibsflow.solibvtep.solibofproto.pclibopenvswitch.pclibovsdb.pclibsflow.pc/usr/include/openflow//usr/include/openvswitch//usr/lib64//usr/lib64/pkgconfig/-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protectioncpioxz2x86_64-redhat-linux-gnuC source, ASCII textpkgconfig file RRRRRPRPRPRPRutf-854938e496437e4b7ee942b5f470ded641a9c7f0e1e979f6b0f0bb02a01028dba?@7zXZ !#,q] b2u Q{LW/tM^\5MPB~6}L/Qlvrp˧wgѡs[K@F Xn?ζrtϟծe9L"~P[ZI Zl[O>N:EcR{HQŝ 232MN:,B+N1ZµًD\g ⚦udI9''//';AT<|r2a ~s"Qxڒ+ɃߖS̔9 ؅tueFVXTm9[9:x[_t&tWT`ENLudYd0?Lb>ڰV3 MdF*]6*^ܜUg/< ̌+7ӝ0>ԓscd_ls? D!T(i*wD*™ 6u Kh 9.&kSdRaÑ3 \t5^Kka̜)Tcr P3_uE]b@oHq\E!t+PR0- DoAM W{:)_E;)ܯ:J>)6ҽH!lf.}(F(/DTx0ːdw)e[`mPUhy/f(g n jbܝUG_enQǛpPsv[Nj, C)i܄<Әs |yYtr9j Y~GO6ʼnq2#'J*  Sdٟu9LRx8 S\8ZǓT++~"ʎ3J0ЪeȐ.I-䙪 M3 }Ӹ5 ~z;- .a`g?$337'U h{7qٛZ9-}4RlLzuv`y9]ɶ*[gt|z%PͲôh풇Ʉ-&uh[`4Y(__a˳lTN35:y04_wVe'v !FX#acp Srdž~XٴsI[?S}Ա6Hmhp¿[`FI4{jl-`Rcc T"8UALYvXc%w -]qM?Bp|2 c–M151h}xn1/mu+{Sd )H'}Mky pA: EH37! vHGcvYrYN51@i 8 G)A!)k#]ll{~ xLmTC~ n%5NTLe3w z{ }+"iJ*ƎHU3 : ݬFԣ瓦vܵg21)@lGiz5=dVulrvtSL_N y/uJsKD' T'19r&fcz-C;8SЏc 'ooJW˸0[=#lS{cb1z^v:;o8u!;z D}Ōy aXnnC&+0D3.+lm&:7@{]_fR傟ڔ59I Ōu<$ O$JAޗ>+)7;[{2 LihK4#v֦:-oMw2 %1O.xaAs|*7=ǂلADX& "<}Ҭ`t;ƦB"K`BK{c-5F6byKk|ty_UyW| u}sX^r20ż&A=ı}rE:S(ei3 Rh,Ї.7?% YDL·@LÏeiL4j~W kjJX%&!bҚѤݞSoX?S[;) ]pCޑue/7j f/xUMBɺK؛%t. (夢;!zy^_?bs萆=͒vH tyC-M>0LNXqkOovJa0nիPf78m\J9sF A#xQ㦷q7 97^̓ItQ|fg}6ςZK86cU|?H 'Y0,;潘Ep 5l=plV*!3+'ZNoSZ}s_&賂ؒMSQ';Vvij:H 0,By0w%J]cvfmS4Պi8-qDh=03czGtK$%G6#R"7>8j`jLN+H@ 4vI(YJQ٠53XM_%V`_ KQ]&(Ĭvya,P7o`*xǖ,*xUsn9+2EDWEaPpGlwm%x<iV[ŕNX畳&>ˤ)x Qj>n%6o˜-3*s:HLeh 3.uqc VCi -Z Wh9-o(ΞÀsZao/*Up~& w\n&e cM2(ޘ`L1˘d,:aEw&& /7^q 5n^3ܑ^}5ޒE$NY:r:ǩv8eO(#Dn$}ȳ ;.[̽M`cܔA${]"4OuCeqe)~fW@zέ|>5D!cRtly>^vQI܏t >ˋl{x\ߐaFE埚T. 3:ͱ(2kj`SK76?mx B`Тѯy)Xq۵6hh e6&H:k-Qt0'*DI]GTH۷\;@\t{!>{l`~=M0.CM.]9g-}hg^F8!ӝ7ovCQhuTF܆r~`1dA:*lr]00r!W4Q[BG3FWVZt6|@6LXj6 9$B/KB^ۀ#FDlJVLœ[~ix7pG7pyߋ29KTVdtEwIP<<Iq`|  (uX'+[r>+" />82(4c{ּe~|+O߳s}/ G05Ի(3WG SD:OUsQS'!.g_0r^ tVuv JQ:&#Z { 0ci5©WeDEIJJ)Z0^vY{ cWm56J,9߹1wAiFM "ru k*Z=nOXV@V}~ț2_WX>N$]߽Q%\ʌ-W_TZy?+qyVL/CENHp%v)f[nhpg&Kjϳ|j%{{.b>AbF FrrB4f+* X#K 2_o]BnTy-xMTηgU#{/?&-#F^fnn%L X'=RU9 Qy,3h66AxQɘ3ǎ1R_܀Q<W !FVx]0[ayGՙ%oՉׂ˸9<(7pX~n;4g~S[[~kʟ:Qџ!JHe/ZVp` 6ijj4ZcJ  YwtҖdQ ҃q 77`*/WIaW-mH*JZ7eqep:X6WU!k=a]BBl[c9:"'Y)?_:Z"C~'\<:kRaS.&tkb/ i ҃} qvZ47wmlmO&=aHJ^]ָD0z0Ywo%!H, g L94૒/Mun?8*沌' |e R)S7~ijE,I#DG"ֆ[f\qb.Q~+jV8>39ri^j6C-7{4="P3%X\H3KT:b ^^5Ǹ9|BZ8-;WHDl Dn C 3V'cMv'b92ЊF< 5LSD[Ąm  =):e<\I4qԃC=sO,111?\yv:w8]7ią%-:h= -YGn!kz(T5Tw0ۘPrhD|W1 6{S]iT.mDOmΏ1 pvl37tЅʝK:rp 9WdBubZY¸F^ ^xY)uqPq竫b EEM_ \E%ix-e"08o:*Z #az/}ǴL0b5?fJD%*&5YptiEXhx{5u Zi#FFh^N#]HDɬIcJ-l_ Y_s>VΑڹ-ӏ,Vqs ]*#kǩ,!L*Y]nѦ 80&cϹHb 1\ЂLGfpfo;`X$˩X#2u~nSCKY?z JNp 8ӨxIrW;S*Hˮ1`/-!.j03H lfI̒ 邎W~Ʀrj,NڄPڛ MO\+Q"~4u,C0v?@0vNK^ɷ(D{Ty:g?MJve^|#em?Fd>hО8=9JU (Sr.2 ?J+vj& 0p~'PXo,"(7d8[(9n3f3.,ʙNvݯ1"Ⲋ~xH|~rc7!4%RJUAߒ<|8H.ivʾgnmv /^rZNkPNVފp|Ui]K#e}W[-h \7#8wW6ބc/{$:=ʸ"^y y*eHD~(Ǻ/[vD}s'W7UߺLht {_nw 8rSd dCLJ4U7 .O z&xpIUgQX1*yh&%=є%4T ΐ,FHsz0cȴ3!~ T.Աټ^CkYΈ9J4U˵Dr *GuI _G ͼ&>Z%Ǟ5>̔Z~-s,H<_"oϺ*y/7% -p(k~TlaHo2 E)z *o+`NjJP )Ė΅Ƞ8C웎`QǵZWXWݛ4aF49TSGFaKRDTIYRF CؗBa;{st.bC,+o>sZS8$$3_wn vWh95̋i׼Xa5䢭;˟uuug2uEX%z,^):AS3dܦw1:ښ\كyٿA^1%: *8wL( }8i]0!OI@VUH孻C^+!+_8>Q= 0Y" tE-`ivj ~cٔT𔂏SiViT4&p,ĶЍmMLMqOs&0vApŨYXSV@h$aKGa&ܴzN<'PRh#ed<9OhuwF GGi{̭R (Bb\@8E'E`Qk68tIQKs;uDgFTd.NnҹT Eg2UbBŽ"H2*)Di"G 0ET$#=kǡn[t ꙜZف E0{Q_~`Ї2Rb-%v&0ggjr UA'd/.w(,v5sV_ )OuHG2'p¸=̘? P4R='\sx,$ 8s[ rڱׯZ^f^Cp1p`7Aq5G` %pmWFUx)BC2]\O7dPH F0Lˌi5T̵THA|q" ]:z 5%_"=djIx2T{BX =oJqJVkTtœ  Bi2 WpIұR,6W>Qc$RJ5rI)*#1f-飓 V]V#L$Z>9mS1!=H䌜﷯)hC]L怳,q9yYtd.RL%cc-ɽ@O  ɮK. {M`Q51S% ٣)ykQ >Wm:8UyslRk'6OwTǭve Vo$[ 8i̷'oGU|g[nA cنmΓXN<d{[\}ьr rp߮J;|܌&FnV/c$4ud +"bC\x0w|. z(,yFjEe)]7r[oML >_92PZbANtw+jsMKyJon)caNyx&sjޯi(wX_9hR3rMU9uvv5(@WaИ[`Y1sJ T7_"2Bc$`Q,m,vʪHU*(c?~]v:Mg}[/`;qO-/@xxlMpQ\>(>K^H foXǿ"\cgx>絯/,{!J|'%sǵ^t@b{)^.7+ɸjoqI \hҶz5Oק=l&orfE:=(bv&5/KWd$2x9M/RӻWGZq9 tgҰ1L< Vkla2@k%dvݚ-P  Ttcx5eZe)вbsHoY DxEף?Fi3|'SZ}+&u YH0]d?o[@y e *=[~Ot@c` !0!(-Pj);Xtkra98FvBPuU^;fntc4'@<0f-Cޖsjdmv,8f>;PPXa4CmO $`L a%SnT[Й9EW]$ PkQ3嚈qGCg#Ch <PO-A` Zv@j2 Տ~!HLZmnd p-7N/ |m( wj9u"YTg'=^:5AA}؇Y"n1D{ v66nn"mk"DA>sh9DSxJ|j{ewFЉR;nlHaM15H?ADIs6h3OivD4ѲmY$M$=n頖>-jBn /*}#ߊ]c=F'ķW'$kO'l;~%h˝ }y`"(/58I͋ %m !7ԃR8* 烰yЩ̣uE<MF #!ء9ҭ! @ET,|}UZOn5&Tʱb'$Ū5Xw~L7}U@[oD. C_8C bQnЯ (.mI1#,wo$rmKk@׼xFtr}*~7̯tpq M ]`>z Sk?t(ya.g}t LPTǧXަ19UmȢ7N$xoF35|+2&@ vqdZG!{V 10¦h3ot.ו\.ux)v*s6U ~uB;V"k58>]}իoy! SqˀSii8,.fV>u|~J9 qO/./a]ܚݝrK-r.YXzF"wu(o²,l$.O-']? eN*?H !p=\B,ޗ uv6˱jҎ|+1O0/B!t26$D]p c; .$D?ie1hYV4'zjև5h=IoE@~xӴIӓ };kc $a zSZׯ{?sKejgies+貮D7F5)T*$ȹ΅hA**d-f|fM (TRl.*e&>G g%:8Q/QaicdnNaHgMgDQ^u&_saQpԔ:3QƓ6-lŔԏ*O R-6P"Yީa/-Xu ^[vVA%Ӻ y5T{8@ d"(eS[gk=K@0'9"goCd#B%)[%crM[[pW~ TXR{3/y&+mܽ)Sp%nvЮEKes1Z̿枮AIyL_L+PHs-mMR'Qq 7HGcQ@kjANdxƨ\@.v[%reVȢИe3uInhIv†K3J2QdH45J:vqYY iY9za ei 77-ʡh֚UbEidC&²@@V9J1ّm}ɩkBP-RXFhIO۩Fgd}+aJOv('.AZ. Gfe<>@ -ܝܳRTD1?Vi*߄g^޾:߷}JFY |7zYᓠU>) .aSD5}vZ%e3:nٛj6Cq(Udbb6sƚ=mvزɤwZ 8󨽕A8"B+=)%EPAUFƦASнk (=[s}lWR\/Q )7 qR͗uFpɻz3߷N4zi\u7ۨ RB,@3!'nB 4OP6pIl4elƢ{T2V]K04wDN~¿YG;ZNы^ȲUuMAXS&]<.u]D^'P>X=F?'.o *$H0z3豄W'm/ɿ2ɚsw=P VgSV?;أ3nd Bt,'5k>GLv/H讏[NhDJ|!`:@n>| WHuo(blރ^cC p,ǴzQ228Ca;`{SWZ#-دV(O i~H4 b.VNoGGGi@LoH^K+(-Lmd>N#\,5T Jae *=h_QAE*=}^fƚOI@ ;7nQ25Gz[kg^l<ݘ$BFu!*`NIѣ.AKP(@tgq{Eт/pO]7bՁMBH(tL;:ţѸ{4ʌkIn%J q~=8aq#%,np."JX".Vki>EŅݚ4R4ݼRc4P@yiwpZ+(#=7nOvĹ]ԗN9C'IK `K&\dFh-ط`jl>5:0 C9'X}((n.= hl3RtYQ.O׫q"PNy(X~ ǘ ɏ*c0g6*;3*i;:i .Gdtb(_-C2]]p5 h`JniLs_É'75tr!n3TP,Qhf 'ꠗBbզ>̧]dm Ϳ' :gu+0S\v]B8.AzPY'v k19q&edVw=?9־-r5E OTeJ}.k/N\ lX^-dZ'GEu(SFKW>4v^YV *ȬGl 뮁#/LŻU-57^X<ɨ<rx8"4&\$1wXR^p7ce{29WȡG:x O*y2O jH>^_-\B (&i}X-&fh҉=za^+!0Z.ci5pMpE<0X]ŨQd;,zMj%T y7|4H(5864j8~KCimkLgg- G-E<\u~q4ouue5kEpՉI駀/ſ]w3#) ٧pCux}$N -^wEi47-JƤ3[oZȈoD:̠/@2lBEz3Ds#"̬ڗ\ #A",mq?U/ \Bj)г8<!p: ǝa<-X2N&36{tpFLcz{cH1K̂le&1Y x:uE^y WnM8CBM2p8$U?⿥%(ѫ/vJk˖D"hS>l"N}srƥz3!qpJWtÇtC_4-$y/#SDP뾔g@d E{S?3W@1X>(HCf@nO TCעՀ.ٰ#˕PUq}˻!(=jzE;L&p#l=r';XDQA|qzOf6-E@6};cHVΰyl,EK(啷^7_m%:`,Bt J'̪ZCf~-Wvݑ H_rMy/zp` 4߇_e5U$)_׼x?8 +cr?C6R1j u8_"LQ s-h\1")J'3FǑ ~3ee퇼5]i޺x5D^7W۸g>0Pa18\iy.{a: 3RJKtJ%޿ߤ"Q"VOvU#%~@݊-JC{(|f!9ެ;KW3)@;6cs20m aURF7pg҆ժ٠ߜJs8:%S BEqgBu/'vH"`7.XW8FrBRiI~F;"& };ԫ6Ż9T2*.)O,U3B}g{qt ΄0_?ɐ>VX0!rķKSJâaABU-H n-QQ lJ+ryTVSdTͧsӇ/YQV!،._!Fy|g>IFoμ wvj"]38e.U \CPfqR<9oJX\κ-P8cejsJAEY&ꬋ!lW ڌ,ոPZTQx._u'lǐZuxBQp& gKlꦨ.m^)Mf!!E^cˌJi1֜Tj M7_>r❻Jrƚ:E1f9rSƞKNrT~mMP=4a?Pahgp*:S19w:ysӡO6f*i>T/kV,È e.M}TQ#̈́c6*I?*/u/k4#6k_ν[H>-@\[He$F, 2L. _ul99 ghHY0c2/tDzтpo)ĿGIXOD :p]lzsu28( Jx9X"6dMٓjQ5ˆs,$I>` C*pX T7,݃d5q*f+bp)3e*V})j}=cGyE!I\&Pb3=9 C..)[}\0e眽4p{؝Bd iKaMѨz 䘚G1cˬV.jd)\V: ubvj:oV6l~yDqeO>?fXtiWvSnGz: gwp=թ;E(j5[ עT쩅烡K6]/X "F5)g?OI z@yWlRiu$c;q(Ҁ*pw'}m?#p0cht4ٓo˴;c,#6npmog%?2o9^%CZ᝸{m"}JrHlىV|FU|8yӻϯ& Ȅ,'v6Mq;x<g8Jm"YA ) a<^W?|xZɎeaEi}I.QE1/ڭ*@Ec+q,OGrCM迤F%? W]Uԉ ^ vy-(@Kgxc /:(٨BGGͤ@\sOhFRs{QV~*AW<p<ÙA|s:wqz<>=t#UcKR|ؗAzO*gd4dXS5r}~'} ,OR. =~Ո  ЖZCD+ť @6sAIIaK"DG^0S{{1R\br]7QeӋ$PҜiqҶg NDZ˺d 3$ǿ/ȁym1=oL6 $b3m|X&Sّ(os鄔%񹂾WLK $UO+Vj0A2(.$'\ofeeهe%$+^XK _4b"rgQEnB /wMPPڍF܊  ?'Qy9n?{.XԭIrBf\81c2Tuݭ5.Ӂ,O+pGflACi72| N A?Y%fW`[k>辂%7$ѕ^#W~ fL-9697/%åff -`5@p}F3Y2֢q@䧇4xlxd5"(ler\'P Bq#W1Psc m ^76LXoȗd%<n;svQs\;85Q LJ?\d4_ zlZ9cYf&+$ϐmH5u(*;IIN"HɸV!`(jCv:;~%NYV%Eӑpv!HDϵNM.O;6/bVkmz rQ''jn ̅ujܗv/mKiV fZMˠ@8:IH EDf{6qŮM?Aز@$ɦd: SX(wL/Fv)< .$IK 0% t,AgFq>snH:rƅk̓-6FD\{]#P[_k`,\џ 3e|So9s MC9 [RŬ\ҚH^Bh|i|,S P=*>Vp2A 9Rͨտj Z/*2Kɚ OEhmuwкf`3qgOFЧzPux]W~2`+X2\VE?N>ͥ!q0u-O8!: G &Ňx[D-%or3T!uwUgsMrb&ݫPs.ڬjDDt0͢J 2 dwҡZJ&M<$Sf]{5b[B9D*dA ܎SUs372QTxˉ"ė?F#Ӯd ҂ A|t@?4U G &g[1]E]`%WT@JFd!/5͆_@{S;0E;|iF\ ئ=( GOGy}46HK[LWPP.#1Oc6F/8ɺA[7: _M'9F]'k Js̯}!YNVC_X.<3 hu0Z#inwl 8&&C&i-;^ !gɨ-/鋆tՍBS󫜺?ͦS^nU} >uýs>xʾWw:8&HizNkQ'i*6mF/7эN<ۭڶgl ;GD`e(J<}fe8pe?k}-evFj]˱sJG5F"unqs^(؞yBT{ 6 ʋS+&m}yY R[}>3Z`W#ߨP7q~m/o}"ÇR7,twVA@1y v.wonΠճג=O* Ɛ,Úom +[;h|\)cSB &%ax7(Dɟo(Bܲ x}s]zXSh~64y:A6l=[ w`ۑ`˃EX傽5ň>.b!|S89=qWqV;c{1B /&^BݚT 0СO)"Ai)+KS,Z|xOr YQq虼]n NtyzEhLD9F),z,eAϣ'\-$(_6eW^IV{ jl?1ƸGԩHyrvf8ɹ* ` 5~/>^}.U@zUe}!Y)LUZ@0n.qӆFyD&|cF26^\-].nH0r06C1^ szEb);L/Yڌ` U8+^H|IL#2=3fk7a8R^(&t:jFlsHIqI2ߢ08ܜude _o^ospm,w?m؊?wL -"Mac8"!R7f"xM+z6^EY ƍ,=bJ24fXoG Fw*W44rE/jTT:Eq*5 n ^ \\Q@hNv&+,x ۚ5яC yC}  `Xz4,h/B\6څ*DA C!U)%(J*1[g3fDoݻ\ilgG=H 0a^]S2se-f ?xw 8&e# w{ |ҠOSB)#LFCf,gE$$aIC - Hp_h:%ϑs1`p]7s fy6H5L9,n7hQz #@D_6B3rߜM!/5×%Բ!0 IoԽ);G;p:XqR?&ޒ3;$x2Y\V52| }]T[~L|R+ڇs͒oQDؘv}=!r nuK@9XD-nH{fxH޽D{u.o(n E]{AFSPC E={Ik&#^ :PꓯSu_:G?)/mk 22uOIWsYx$Ҫ-M@Ly5Op> xá\r׌Q;LFDBL{B!]\<;;|ʹ=P {M VQ[wЮX>k'lmeٹK+148)OnYz) SQ$ G% $lV͹`0Ї <*9WBS3- 7(c+9>~oxC7x-}ޚQ΀zl1^Rq b `(&P\44l`-83.hq:Y¦uUZ='uVk`qtay%o[}_wLҦNui:෻Z. D]HɡMI\NfzeQql֩n+*Ѳ^#KR'k㕛Og/PCnI.`AHO 7pV~ً@mjF=8V[&BPP﫹2n d VM#G ƣz 4M6rwE/Y8ȭ'8Y{%۵ϴ)ֶY_*)C&Rp'RR|]w-eHfh#Q_K446-V7A.CQT("..Kܤdh`$ awX]Rgh/ACBr f&% `=+;~↡JJ}mYFmQĶcn"t˿%_ *zF>JqO$r H8zAo mօP&ѓ~A-\h? -aU2+Ȥ+%m l=YU2V ^1o-Ier[@]\D'dY""aSs5CEcpK Ysi Kd< RhS7i{oS J bkv 3jK)4$_R' 9;gї۾ƃAϒBs!~YO:I91r꯱u+@GuwȑVߡWIN 1/d,Omn&5$<Ҕ}G @| \n3_d6^f'{Jܾ}A_lt=i6_*f,BQgM+'wRr=?ex;ޥp gMy% S./q=0nn2q*юG'O֧#t0Y~Ay; =TOe? ,eHH۱SpSkpb1b~5 f̸-څ T5_$Y;߶T#+5,xD)T6_PAJ(4n8!:Qlc%]X_$aA|Fcʼn?eXxUy닿 Y$t9]D|gO_ak%f[sV 48 4wث]ڒ n k28Z=$K CG}rm~KP_$-nDRV3u[$b,5y?rd]XH}a᭮Osb~XȁfBqZKr¨ HY9̉l팗 B>!Cnb$FGz6%|ktq/ټ]dChy3GGZ ̣&~A>K& riR9Z[m+ ۅ NsŽXk#],Fs;%W(mw!9 ɕM(j9]Io镱` m+9 qe@׸u /( [#UTkD-X1GD7fQN`FtTHPη-΢on4 b'&,ˣ=VxΑўف #.Tq;cdRVjN@*Ǘםuq˭\2Fj\O.c4鄛r'ȉ)*l}_c&.(ElP{ףm?BңW)BU1HLm$mA<5*CkXEc-~"ٰ8^6\33S-2 IIE$DUC)$&S˅TWϪU pjDF5{}# H得B(|PSrK}5P6,qbvBcL7HͭQyUG++7"{qਧf=`AS΀tuߞ4]zS.c^`P%ic*V/Æ'gd0'bgo5x]e1IzQ)70&@Ol)y1LB|eMRtD/G$4}D1GOB , M ZoSj=-oҞus*a?]$h7VJ*ru͉>; Kub*JCjDzRe&.ց${Id_Rg+[Q aՏNWZevN>l8ci< g 13_ сq_+<dϾZ  DA֟˸V֡.U=` 6/88&h1_l8>xL)) AN?5L:ѓ)(z6j $lo B Z3o*bblH5g"k3 sRƋ9\mtjH3Vm&7+["vM$Vڻc oN7|Iǒ?1e}XA0#[I$Ez]|NP;X1Ǻ44o΄GSCbA J$\1/S8;WL=@52P ciS$.YzvgOT 9+>+Ġc>#u8N73˸ţ 9: 8c9dc^@@⧲݃vTp 2(/Դmp?)m[p9+QcohDx#иxF؀t\JJ3_@unQM⟎p. Qƥ z`'vBӹV9 "r)uK(Oݗ+c]!x]jșr/kEM&` yPG)LȯYԻ:44bLB?9=4fdܡuQ\1ehV#9QbX-Kӳ֡NkL+;7*,& V8+Xn\]mIF% :(]dM}+ĩCgR eثʖ|qI((SC00%t%C+Z2'm; pU'ѭ]#i)LZ{HlD_dLAݰLiJ;-*/E}&u;{3DBKΥQB|ls'Wu>4A]/%MX6Ppf!+X/_Alu.e5fLvwbbAPvyG oR˖OZ;VeVx;ua"H\+VlQ /hGNźq#& _Z룂BԚ9k=_26)G6Vvgϰ%Q]¥0us%?[O5ڸ`Ɨ^эY(;sLyb:AoU&<QD-L,çԣ|rޗpHBt]/jl4> pۂD:*8OV'7Qt3K@ثÎ7gjw[Ö^8^)c.Sh9'1+_mZqC< O'/u4 ;fb+7xeWѩ樿1#!*Bao+95.?"]nMi#}m- 3Q%:ڍ?RzB2w#<1x#DWFДdaS4٫ >q> 5t~r}zL!,6uc?{dshX{d^wܭ*PЩdpѱҹ^߫BN90i1cH[œzg:э_3\/9,CK,w% j3;v>#qq%W?Wy R#{e'T^v"5If5N4p=8[0=0v$AyeIDo$ s#)s`[\+e6݊!CxX+Ly ЯCS(Ėm.IH'F*Ֆ:9s =gɛɐPfz1g\Vʢ֨.JK@:/JB:\4S_$c;z8K]5Opo8t>K =A8%  ++z.T`;ک> lUk3}>9Q1 L%\\>VҴWp?񆔱:`*jb?C314WAߒfLHUCI6)kCذy`e;"bH1\?y[/"e$ͶgWK5iS7@2_+s[5FcƨX(;;70| S98Rs 6Fr\Yś!o!GW@{Tez38WFy_UPrYh#t+I]W?8CRzDU6kLѤP+puJf vnGq}DtƋaYj@%0r] *ezxg؄9)-{5R!Vm|K2:dh󈮮ʴM>=*#!~\}aFHW)Mjɏ]{ݝ-Em!yOo1朾4 wյ^j] AVG_ӖVwx&5`bM0 ,Ú Gx jY:њ2\W9_kL4xbR/(m* .v^0Bֲ!Y!i4&a_huLv重@b)~.EsVJ^NXǵ8Y͏*Ky49V.ֲC)Ze, 8n 'hzҁv}6H :kWL5 $A2>fg(.Uztjϩ~u< "{"ڷ:cx;(|NW^mU96.2BOO2u ~c L(%/ά ahIVkik!R:-["#4.gq&&NKcV_b(@#G0sW)i4Qbx,08n|YFUI>Fm*اUɻUώ ʈ@?^Hqp>?rdm>ۉ,&#^:e |LDN %=xͽ3nh=?ޞň}\Tv|k;aQRkҩa|P[ю1Vj'';n!1*LMLCΣբr_{ at:NaW̋N{m{Ҷ"ɥf?|, R[>0I0WlŁrz bBPW|+lx|߫S/<yI keu). ɷ zu`[ٗ݀4 )" KIblZ+E(^0)KN>m9Ip xI/YLvV:hQ捙V63.?ܵi[k L2vh09S̆фOYADܟc0q"k=Ԯ!īȻ.[j]}_+Σxz%85H3UVQzJU[|E@5AeGQf ņWaq˃^(*C !tiMPL{woy61?j߽>*b^qz>vs?fBeQvᒪǬ"{!T[z\KquF!H?/d-:FJ6&8^ӐK{n-wwb)O>R-eˋN܌3Oau\r_~6{,H2uxJd`XiHҚj\2f_|CȊkUΜdq@DMQYhz3GВ6wdHNkƳb EcW9YIՙ1|0x.c֍?8{mDΧ6t;+'3uQЅl+I/01Ὢе\1XN$_H L{la*[xxSic7$fx vmͼi?L4tb!HJL6) *N3C(a^~ܿZ=6SFwBph+3AEެb6FbniOi W}\6oG.bv)`KמQN\$_ae緣K0yl\גhytRzw@U@s m2⻛ M hK[L1QҜ,VR9w+ퟞOƚ+p>-#K/X=z f-x`'!F3OuhB>.K:Șwt{xm2Zϋ) 5x`۾d=3+5$EnxA@]`O]aҁ#^$腲=9~4 ;#y*D6Z.l [g|[l*痫i;#1RЋ\t0ARͽyK `uP})sr׎O؍)/X]T7Hslh)[!jeTHfłzWS/(=r"Ez"ldyx54%Y.t4Ih6nb{2gm2y;uO il1X8TRxZt/W3љdޥY9bhrw5G V"y*Ə2Zt.d{=s>|B.#2V-{ifl>>@MPWFsCgn_q$t1x蚍ɢ$LѪ |a'AYK̠5&ƭ_yG]i4@"XT[xT~"}†Ujn(^Rb;/ګcfy?hK;I|9գæ/Bxgl= (9t1=.U \ߣ-RB Js=槌ͳ?^4/RQ`Y74ljjU\Ӛq< W*A4=O YBrJ|!Ҭ}<IF[Z?l,=fӛa#ɥ򪷷O3:P-k,r@Q"˹!t =|sN1{a$ c9(|5icֺD-&ʑw%eBbCw/8 M<߶3Wsjua7n6C]+O9+?u%-$.h(UNQ3O<(gc:*>$r7W?/}d/#?n_}`ˬOb7`_.N+BIJ3j-`4?|sLıKT!ą*;$26A*U;avVۀbȾ?yo4D1tsFRIf {h)}[ u^V'8N0=,3; 0oF"8gAZ~}.-]h9 hrpxAT(lg85ruB[|GmLj>EGիB1RB`"O6 A%$,$6Th%Wr!P)T 97gW{&/4els64ƋzM%$88YJLl۱B&&̇4z,| /|Qـ.>#,-~W@p{No;*R 9֋T_Y-깕A:ɮ FrLlcJl:b]f8HJ[MV>˔Nxv_!T 8|ݟ`LGu ;}Բ~DqEsyÙȴBAđA6  EմgWY8`L.^( 9QÑϴVϧKy3zX{^Bx/mNOM<5ME/_PJ Bx ~k{4} ;s>RWp `N_,D:-Jk2Sr OzEay`? ;w/ǫ$eVܿ׊]yq4(TG0Dnj/!pej$h=cKނyՄ"0Z>hO0Y}p**%&rrĪN[Qg+/YX RFe1 ce\YswnijKlMl DYHݟ'NDeXL>LHH6Вg^shԑce iĎeAEpda!iLg oȢ"K0<*L^P8ޢXD&޾pͩsz!ٚ}ŃF;2lľjdWmkΕe9r)['7.cc lޗ;5sm$Zk^St.G@p{ȵQ]?B(`|>ȕr% og6|j0Z錢poS;X(AZNnOI?@pʍO魔t8Mm/i>ZcRu@pKLͷ*W7և $Ț!Q?[\?/Zvǩ<|:Gn>1j@9 e*j`\#Y OsAᓨ4~o=4UW1{נ_j%IBeN_J{o\x&>sWx-m@ \tn! p 'g-6[pU6 9LPRЮ#[JX˙K+0 N4ctG3:VwTJ5[VHówq7b aTsORU>LHҨޗݱ$)omC R2mqVބ 4.*EbZe(#&|]Rc%?ߤp%vņr4VS^s+Rr̤ njWMkDvo3WRV9W~p!~`cpY =iI;nA⤾?K~SCBޤ Mw PҸ'H9Vݣ(.?/h>7jF MwUS#np%hUo+j*ϧ|zFI1I7״oB̨rplCMt٥d$G CZL1l{ ?c"NrDZ{N\`8ˁ,mS g+td Fp#sq'}R4E]K!٘tE|Ķ&d)gg` R`_ꕹQ#R+i:iݧd,,R dJJy}ڹm}.k}l/*Á3ʍI4` <}*lWuӥ;8o5 k;/>ll+6u PM3ftG{zn\3e6}^0 d_7Ut<d(pҖDBB`؟i,]tm+@>VNғlqrR@`#^;D6k^X*Mb5}]1rh5'tm/ZN#lx"_9W~gҵ" <7bl( ]yJDNa9f-Օ~l .#z$mdx]>3jW). 5[6Q-$J; `( N"wii \e8ȗc@+J~eukdi@|ȬҶdvNr7k1iwew˴#($3='i?" ,6ꎽ5y`2FY1Xqeu`ߵmO¼ȕP/!uFaOom<os߉Qw$C~i=]㱮W7tqpdrl@*M,!1G yh52ܚ3cben׃g.LLSN\{ԞQN/vpYH`1hQ" 3J`q p)BJƃⲡ6M{ )#Ax2Diu͙"E3 cx>sqgyrp4X:ۊC)nC5d8ENFֈoNMS嘥]˝Nۭ#9ANn2kcUBcvڍz@ [{K6gwG Ş`Cp} 9 3$z`yJaW$N P+N }kƟ. ϙY:^ Z1s?5AC^խO#ŵ{{j`-ÚrޕZZ408Cʜh}] *e,WEW$rhft_u8=\>ڽL8ae Oa X_$Ζ>H)-:^wTf2fgӀ$ jh?oLfbT&yS0U?kbg'pOH) S&ZPԜ'(oD7&}Ŏ=ioE9aS=lկ + /I!L,PVZIyHƵPGjĹ=#Pi]+QDŽ~t 9+ͩvy`xJR7gH pRy6&".MO/R h.HԐ\ZÛ^4Z-sfYJ i)3*)ڑ"B-NePW8p&D xV޾KM|:V 6_t_9n;R$3G!hG3s Y7:ᄸ)'O/rUswc "WPA_zMӂ5xUǃrO>w{'y׷j/r3|Qkv@*D=Wbha"q>8Aɨ)RKۊz9ގV-ZS.Z󃈬f_;NgFf?ߙts )cEX8tv>ܨx T[7s\xr،1dhS#iAmjU^w*3UPYS mbMiy黡FjJ!| |&'.URsW.tc< +,P4^*;V2zh@Yf9ϗIѕXM&z 4-Ѕ-#*VG.E% j$VZ)~4Ks-ď3AW1&+SG\چY_'vF^k>K l0#sbb|J~pF-/ {>JA!5\'~7f~^K{!Ϋ(7~\y&# 8Мn2 9OT M H7‹@d_2ꙿlRY,I4$lѾMşst`s@Hg}G^[[n+w.(cRh5kU4e;ن6{)d9p5ud %H"UvY+5ERѦEDV@&M ;FNqv i|n`ZO|/_-4H#OZ (@F7 tX$H>ӸqYR$>NmcvNJUk5鱺?*CZv{"9{T~kO5A^u [)Hdd%.QEfڽQ ӓMS^I|{إ%Ltք|gCLtWy}t;"?K j[2TЎu xu.O+>7d<"k3flU}*V!S 8 k6ҰIPy1} +c^qgHNe-|>_tu+:'jsV+(\4Rګ" F_hFܬl7h'=)- 5cNkuèT7LZ'gc-!2rr n ɝpwY|ܰ,<) 8P0E/x~g}u$"~9QL{Qhsū'V`Oh}Ad)0бyT.KMp_BY_c ՗@:B븭>j|f0Z'%x" 31sY$հAϛU`c6+j!vLׯ $ d_Y.,I]bQa݆P*<ڵ 6D,!1ϙG 7˔.r\kF~45{,WdC˱ƨ8M.xnDTdVY&Y⍲m2ۗl0Ss-[<ѣѧS1v`VQJ 9t`,Y!?I zs)b4g{/qp.qz Z}U(L%mĀ3EDqI!fDΟ펫ET7lQZakO-(fnhՂT^!!:I_n}qS#[ Qno4".SH1iHgT>[?nTtT'ڡذK(uE ֭ͲPrM=w2X11D@jpԜ6Ėvlt'K(;ߺ\ PSP-ߎnH!a9t|q9[-- 뵕B{.aqہ䋵]W ?qytD*˞J5mXg~/= %O۞mymfm;{Ps`gCQa.R4D/;Ü|{tgfFtQ:R/̛{VbH>>[pOsk2`]Su&g}ҭ L^6)s(Ⴐ i@xI]'D(7 ?98ϰ:cӹ0BlJ &79h!]X3/3#; I ʞٻl .͐K]Q/<4I7Ljdff7*(Z~ wާ:Dq]V(YW \4ƪKl#:{NLC/H7kCfO𧷜LTs޷TnL݇:̩:!c,,ҟo-L"?\CQok NT۩ȧ˃i)w7oh{bfRb\+z+؋xn { ,I%حhrB =]B58MpyPԢV]AY35z3Pă& qyB-Η|{I^A.ycy >R'Y%WDW5cӍahHx͟r-|zޗk@[4Z਺%>O[i}x.BE}A/P^YGg[ y}l|7tO|F#ydӱWaOq օWD䆷gjp:,ajЫ 5 g"1v!?yAChF0ֆض - +LikJH=V8t " l{7)JC=lNfANw`{ \-]FqTp_*_:-a=lXEױr\"$_T{< ךHs]rԢ0V!(ɂɼ.ָ'uMG2]s1HAuymȤy`Lcr0hL;f((Q@H֖Z>E Ԯy:(65fBfS)1Xx3X0薢FW*k`j{yLe";3m܍Ce#DXỲ/ߛ~N_oe0jcc3biw}b.BHb}d,Qϙl{_*Պ>C~1y@sȂAݿvYt,,)Lmm!{I5Վ{>sՐީqsj=޾Il.M39+J4olGR}@ڪ}Ӗ{]>cn'ߑP0w"t=haAʚ:sDL%A#q Xuc=4-8_u$#r~ צAm9o!/+$B{Մ1B Ju{Q>Di{78̿ghdn"U(}jxHJk>#Fԋ% gڑII<@V $9 }YOAf&wN'YЄ){g`ŭJobN*suH'r'o=̺8R ڗn!: W[w$If#>QW˃2H X{=9E ſ+uϹzrh.梁{E{d8qO"1y-}/WM޵z$%w 6g@z.xJn2ceLdM"$ȣ#Jap46ۢ=ah6&OuPlUmb;B"0?)1';z^t);>(ۊX7ܗlp jE`jV@fs>P>G1 TG\ T_Ʃ іh",!"O`smYWZ?ڛ6?ZpE m1J7{rM`Ҁ`Nvފbhփ+80)bt6y Dǿw ,0ƥZaT4qAyGoi&IZ{k_޴^[raO?P5q ? -JaRc#B% A nrʞ#F0¨eNŜ^ޚ i#+!Ņ4V"V@S5%M-rxJŁ { m<ձ~bē 53.bVjb>i^(JS176b޻zX>@{Bx!k"~Hb +`;6cK%{( ~x0ڞaE!Rs-\OQ6:Z")*@I(7.A/UxhCq 7Bq994LD׺ʝSj>p}t^+>\4lM_AP#3_Fv B )7-5$jGUa*)~I/c}Ԫp*=HN/m^9LP݅su0 2q@xO[᳾ul fϠrY'*W%(F|R_X="KoC9#㉋YkY/\׍V=NNɂygjղE//5|y՞n\- k&#ҝW/s"3{w\z"; b04= 1b?sY}*/'gmmչdJFϠk,cʤPE_g)yu a_c#4qZo`CGÏB{ a@ui *ξ@H0?g7pD`XW.-9dR2YwbҪ"\W*7m/*5HA1vt8AhoHWݭYL[AD!#OH /nPWBdNN. $jo8c %t!dֵ6Kv#ZE6ʛcF{_'NO۵/a3#:;u`+\n{_}yԖ? HK/!TTurQ#zho.x1#Y͆F=N (4C=:]{tiho)zTF4i69^}pHi!]6$wOVRNf;Ipt{ۗmawz!.ab.[HEFP"Fp0ia07tiU菽@byZ6hxEȼ{O)FP-;rS0,r7cjD|4dG0 AF,HoūG;"%6ioߨbFwyk õ_fPBnX°`xkث2L]4UYT1LQW%9+iseAj7 PN2VDFsi2{b?pT@ jm7UE, -mN\_57GF^rn" p$ Oj7EwG]x 80}J5gX?P /p(0OH)!RBSɧ"8rٝWv"auNmS㋉\4_kbZfz-^}J\0Rc<™Ҋfl:q虸~-=zaI~\ī']Lih^ܓt=(؟)Z,H:G%wwD\[}B߬~}搪[, h y+*քhR ­CU@@kOMowܰX? 3۩S^Oݞ[dNN2 KX7rLj_R*'cTĭޱ'B3RTy^vBr#u:dd+/I=" 5#4͝ƕfN3*vrj;_^C$2FUR⿫pf請B6b3%a^j86(V)<> |0м8˔kUUQh"9vĪ. :/1-3{99mC4նѦf2.i>.eKk KlG퓓ݹYU@곣N;pOr\vTz Mc23I CҙtiXKYТעF_Cr4:dڀ;T 69pW5TEGo&*gj(vjȠl0PWNOvnKs[Y%ս+$#<" V!m$L@ ("YHgK#\4qmA4bJ `W3efWel..* /?~r7e&)es$HybOMb< ,Ŋ8կ"m&lu~X ; IxyذJ?)S)Rrpqt&yW kqTXSYK#rT <a27Np9 *ZB@ezvJW7S@+4[`Mm1F<h CnTb%{Ê9p.bWhJ Sj򛿨Kvx4k]=׃Rj;񅑩}*ZutV1@\#$Dpd+Te<>NK¹o]F5H l$֖`^0ȡEA8_h@tǥ KUjKuJZ ,P JHxa>64150*zt@ jJp6[`c9k#,hK8t= pK:}Å)jTч%Z@tUq}ahV5HbmJ-/X?R pJ= ?7lt'šӾ$\pdg3|0;Kj%[F֮3;Q}[+ʦK1 5y %Nvi[4 ueadĂ坌L5"u\&(|ӶϲbW}híX$ָ@Z7:TL IG31d6>"QLA_1Ŵ.]kBclb`}o8 Or;La<U~+oz4鰺 CUzI[ \IfF̿KajJzI}u=}>1'-55TH<<Q/) 2B ~ eeD9O,/sFty?)үܘ~hqrg#i8Ms %/I'Z:¾k]y2, m/ưKqH0!j=S?nyufܲX;uVBHm\7?@u6\^q<4XT7U&TX@@ސM@4-q+Hptטo\j;MM: +"0Cc1sW:KO,PeLR&ZY|fWJjd+UBF\HDH #x3Ugעp &Q DAW 0];p_\Ag ˝wocyڪ+޲"aU+XUJx&H^Ԛ@\Wb0[8璝kv² 题GM D/Bgt|E+ɤ' )_9XaկxM" u`@[@d࿿~jٸw3X^j K>uW&7da84~p:^CU f{H^fr<ؐ}Au+uR8WKvÀrDGL$qIhjHM'ԭ ڸ`3xȬonh-t|P|Ʒ tԳM-f}8N! Za$O~🉊6z?m?h{8YUQb@ko1: Έa;7 g_1)՘j/j(4dޥݰSw |ff&II iNE!fU^qK1Uc:pKncqzVH[zVxNW ,ћZ-~ q/tg؁{ aNcU^AxWW*wrƞv,^9=' HS@{l̆kTj!^i"ښ*iS<`mk:{f\{3. _(G#R[9-̨ぜ& pA=î㸀~'*6Ib(Nn77k/"yI`gWPL[&/Km9ȫ/}/aFq>8z\͝Hl [hR[n>O`|ufw;X0CƺC"M9GTLEqD .j;GMtBJ1 {^iI VT+Yo{M5c99gE]KR/AH^1NT4E^AtE#W}󜩋W%v.SftَQ-LʇnfAܔ×S#FQѡq]YaBK5z#\kEb@PлXl yGOr,K]J2K~EmQI!Av8hd2ʀxOyTLkan tM- |^N?cϏDܞaV}a|1o+v:o;vW.PxLy ~\e\V, >( nVe!~nN7D9_fO ц_&_Q=ֆ&Kz\[P(z>_(T^C!6NmSG[|>zB_~}> xjz},@+ʶk5{Rj*U24$y?4RFAcݖwD|n'=cG`[:6+Mm@3RN|qaOMbܜ]gg.ti6Kǡ1㔰th G ӆ>ŷ0Er`E* 0`>+"W =h2sQW(LP Ua >0V[BV Lh@fLɜ{OOOV(R^>+g {NU_.֓NL]EjzD /(6,4V(ຶmgJEb4ǁ) 2ClqRژJAu|…xmcgX I\m|(V08sRI O3~TSI9즭5t7H;A^G:I/_ y!yFt\Hl0Fv WPIڊ˧ Uqo7!2/ޞFŷ2ˇx͒Wc?ĔoMd$s _FNw$-[ێ%Пf ݇oyL i"JNh"PF~F ) i0&0roe`TCܲtߎ?)N٠Ŀ˷ԏae|(<$- l~LbMi6>+=!yu | +֩ D.cVa8m {"4C1]rvm Y8qc|*jM=bςne HKr.*Q 3{uG$6N}@tGY lTȩ[8v~-*U2dBt^mۥJwW…!1[2۝,ztV> v7 WȞw]d )XlѰ84]o,1/)rQtvdUڏĄ#SbvPs8gl<qGXv-w͆9h34 ڨ!&xk*޿7]K8;smD ܄ kΗ9z!㮙޲6 ǣ iȘnY0h0ѿhe١sG(G.#rtq1)왜H`tDXIa߂r&c>7%yy-_ciyx 2NC=LOr Ź+lM[ VK$ქ^'Ic1n<;8yP?[fXPSi듊/)y'ު["mcIBñ)adG黪2!wnryc;au[2.soXOw?.ϳAMj0:(a{ڨ/E;j&:A7)E)T߫ǧ5Q<+D,uKh녠GnMߔ=GqиqSfV[f=5И]1!ͬD䒏;щ.RX/4tKV(^hNpx8PN|Hi4䓗2 nedC^`T Q$D'̾7ty^ ʨ'Bm׍5;C2hwXi2^ >?*٥Sn2H)gLAіAJ!^ȼrރkU}dµfTv"԰]C)m>ͨRڐ[5 ,ǔ/BZ>Za7+&2e}}Ml*f_qc^Rx-yܩqc ͳ[w$8JɆ_[.CUNO<'_˦[//BtNU,am*`7 l/{߭mC!cZwJ%*JVN]0^>/ 6}MTýD 彲Fm:Wu)ʐx*Ƿ^Η_0] uqfdKJ6΃jNAu~qnH%9ԥĦ;+0]q'`. ;Wޏ:lMݯ/}sp;ҕpiN|5[:+hog%, {J7+&)K+s_+U)Ȁ2V~Dإn_) 0kJs-qdVB"[㭊Hq!%ꂙh ^g9k4vS a6/&VfMڸ *WJ U^r@2)y%XJxإHzg]`LROK9;qNOeᵭP6^R^/!yQvQ+[r*6#:#F̿~]-iDL 3DF`iCɣ{K*n>b1Őh2='е WB//* zBf0׋mhI!`+T\T8uol)lҕSf^&(nfMͫLUeO3>#1=ܧf G({jC/FUSطt 8c*ک?PQof-E㒓bGDR2ҟR2CG QәyvJ}2j(Y}`nHh@5Qx%a@jq KiF4*/#Q0BՌM.~G:"҉L. \M}kqU Cd1 0]0]D0ՋcM:'U?-]6u*sj!(%)7$}@a[I_@;T+1rB{h)khzXVFݴYDK&rpN|F*&Pj B-F{fqsyCd{ "|&= Hf䨪.콮I]1xM-0l &;G1Ox.0 ft̬?k0W%4HR$swVbk鵡r33e2TzM:r (GRMAYl7!̱P Y',+E-}2ҙ }E v_(D9kgqJrqE99IL IJ$ɨPPs[vq*ô㕣Hhj"аڏ 1qьrYZ!_s2WĮkSu`*"PY >[-:j@ӝ^Žib]emZfCaA -բ plleh:b8YB?k7BlQ5"Â{Ōc3GdzHמ{I]HE@>ˬsO㐜}mAgi﹎1 ngo:9d\qir6˨n"6C|Q3x \DU P)yp7 yء_[M-7] RfegOMu3 ܚ^GJ 0H^UyTGs,:O*FKA!L|k#$*< ŞᡵYG`p2%|[c4S&egq%|rGw3Ϧ_<أAW+~ 4aSy5Ml,QRowZ( Yee'@!V~XUnn_'(l"W=ZkꙋL*H,Ҍd5,62qНzte{eJ^.7L"wVwCf/o A31y$ELPK#_c-RűЈlR ` 2`<p)&C&@sBFVj=f{?r!i!uOR]p|7Rv NRqh_--!XmXJ'>{h8?36<>M|KɈZ#hY:>0,znJs XO^UQ1yw$aSxVgr+!PSl(=h7,_zDHަZ \ƂU8YX< fOsLѴťfFNېV%U)-ↁZrRGn-n/\U>990&ⶠ;J]r&pj;c!S7ն-ӳ)6GN6{aC4E:jU$`E<_ mk}@e:4kcQc0=i$l)Q4snY2s5dw{b0/LG Ws˃qmf#kc=vj)W$tmq؜LE#i^.LE=RbUzg= t{Fӓ,9ǁ6f8_&e-` {6tKrH,ݑL⦮ <] ÍB5Je<؏嶺MuPHY$R\WU9l])b˸SwgYX85' X!x~]~q4y2u7v=Xڼa4cשּ)iN \Tr]袟}_>*W'^q=5SœtprE0iAtL ).7ePM"J]{7j > j(&ؐ[b#JF1C#!e(O]$Pt䫴̬b[' JwL`qOƆ1͑^Hs}nk `dYo3s?W'm`pyłyx27K69l[oDRA9^՜K+Ý*dw1{P1XR([\ɆOΦ~Aú  Skг0cDKXzT=IDR?~6f7$O;u" a-,YwpLvI^1Ȧ/䎚NfO.yZt׳ 'ѕ)|`׻6j; )dZu L%Q`Pձ ;Rp  t@6*GYT6/G%+1j$0೑XI1,1jdv^M .[.kܖLwuBMiՕO EgN,w!Vw5eD#^,kjewX<I}öc5`-@1I5:ԗ J|x`/:p#ޯe@# `c)yT=0t!'aOH) H[&x|{"i>_]-*UqPn\\!!X,$R5ԨFv5 @au/p:6Cāf>dمq+3Sa%} e8^n)d&OYm =*2ε 5n"(Oy #8#ďE9l@ by{he9x7)n= 6j?3vS;{'ke.\uL&GL A hƗB!d tz`&7";dquCSo>Aذ-#,>sTPer.F`mqT9 vтYn"_v%.ɫ19yd$i*9]/(bӨK҉[#]⣂P'%^Fh`c2?.}X\ȟb*KV e߱@Z~37kC`R`(TWMn)^ k o_kLRGw\ww ,`HZ V{gz#DžݥXD|i L,^fU )FߐbYrsl٬;9Z_3!i g:)fۗR^_ t2 {j|MS: f4nMEgs%agg9]M7?Gfn~796$QXw,>QE ?3ZxrQCFTSc*0a1>*W^0?Nr@cHUo7K&詸{^na'8rW>ZlC}Cf޼Jm`,vX De: urcDmIx+##D%FlxӅJD -rC@L9y: -p~ǜYNXί`&A^yG`IU> KLjb:.x(ؑ NV!,vfs:BcU?!y;wn2P$9,t]L *QHylQMZ&W_} fAjîIWW^njSfq$!I]]S/#ߤլuн㨓~wxA/@T-t藾YFt“wn%zm3!58 )Q1nb:nS蛫>[xdmeR6Gj}P Z.X^niqs P%"gǹal5>w<.]ώ6F[o{ʍrutgp9{ 0P+9Yk8q] 5ə,h7di"EiNzLB†ҠɸB* *K ٍ9$VrYru4[hNt w`5q@ge8s )6?56vE$MfHZ 25_|H] \k߃rs@sW+"m}\,NL}mVdJ%`kjQB>ةoS > P&?܂|kH{L.pY6}0lR?|<2܁)௑uaX-@&k@0?5ꈫon?az2GJR}W+ (կ-aV0ŸtNe/L3l*1UÐ1`XgH}p{ Sg#!P$&9i$j,'/  :]%\TvN^\6*iN5ё|Em:>[_7щ,m^kg'o~˩6@.(N#Nj%QSj-\"20N9`̙7?7w^C  kت0힨km 9D@ '1L ޚH AUN\y6vӷzSC y'[)=HӧtWh%ln@zꝍe/4\5 E|[BXN|=4&\Μ=0+~!MO-{Ls+9 M_}KQVPMJuOQj}F74L?،%i4y]!A_ʅj{٦!`@mB:H@0A)d\0}0T˯1U&`D@34@Dpk衢ٶ1@*ϲaNl_Sh+r4CQzWj=X& ޲kVg~#[+̽Q:Iԥ||7zSD< E -n OM59Ѷ)B|;0[hxı&{&4\XQЫd93˼yKr E)~ LHƋfr̷uD\ cLƧ.5 4}Q̜$eb&3w տ_O@x\wD`,$d,R%!= Bp7`_ٝM*PZ"8cY704vq \ ӷH+5`~ڧ (- sĚQ)<_ei5_c\W 2&Mђp/5ˑ4k(Zۄ]1kBQG¯`Ʊlz 2@Y2J22Ѷd^+ׁԟ<)#H%5\c?Ϻ_Z+wʔ[#PDzj Wu8@Aj) RQp n&6jlKuQl&t$*Awl%)OM\)ef{䳖&?#I\O>i7 ܏yhw"nlƴQI-)64J:γ%ռY 8`DY@ClK¯F91/ K 1|W5 $$Μ-I߀ RFX]mXׅH[fU߃]Lm;Dyypj"qdbb`Ʋ\Юv,+Z֦N<>ߔ!*ԝ8G@[ cjϸ6R@Ρ|>o)0KC tYJ¿y+Oi02_Vְ%0'ZC2e=1uCUVN=%#F۲&@Աqk."Hc1|q^i+t%)z6ğj"V1 z~Lw3[퐡b\pOsUw]TL^:8|)%8(Fd2tjo3"$gddu tUAo'bR59ʔ֣N[7 ({63 f)wT %6p adÊI4YS0@!dɗkOUϯ/ͪ]wF`pZǧnoR :xĻ `rA ,X_l"6[ Ͼj؏^Kf\އP!BtcHn)*9 Qh# W1ŚRQO)8] -XЌg,)||WQі=JZ1J!`7~,-6"%= "7IBбS%@(Fǚp@٩`2gTZR}X V>߫v"yx}wo3ӡ wEY,eǬ˜g4ʴRp5g/igQ]*Ϧoڲ;%Sk&<2Q"e]LV_‘L}w\#+" R3*=w}9iƕIt~T>*!-U/SO}3h9 AWrsR)P0{E=/O!*Xr+[L6dDű.gz< gQBJt)܎'v"W!5LѝMuJ h2DkNo:,A,;; oh~Na~I)r>M]G9GN3(i@Pc)-0.[-z*C?;,$QBrq^>($waN̊jnfs9{πNӱeGd6P4H[I[{ԔתD )Z+PA{7e8 Kq:)r>cZ+vC!9/3¨LCZL`} nTZkyE_`+b)\Ĥw;7f~~gA8:P"2.Bի^!s3%D=X?PLB\M66v=9o@4nrl1f#Jy&5#5߁h lf.(CQC/}I3k, N۪+BH_4F.7MLI9bHR<52+.3G;VƥyM4@Ah;pNN{'׵%$*&,&Y69Z? P|HM0T:+ŪZbfxW6e˃nTB4R2 : 0mˑb<|OW& vd~+QC]:_C`N]_{& u9r!t Mч&(?+9bT`I,}buq2Q NnX*+mMLR,o>_p'H 1g{<{H\kHWy+Tn@)J03N)D{+j?hr|saSVu?q{YAc2OtdYyQ첗!8r$iLSĖYPJG"fGhrr`,CpIo 8}1d_ F@}1Z[qT:kSX ?⑗Lq*]^L%o#3MoŃa s3˟2p,qГ7X=>[VR$z \Q>Ċn\ h t S(ka$9`i oZ;,{Ξdf?ChvA0oW¯kE5BYLJR4J}cv,qx'Aa/W)lPyKr+?C:bp)ٴv8Ii02|Qw[x hzn~Pv .<񱣀wep eGzy1-U,M{fNXБ8r*#2G"Q#Ses itmi>VV'U@U$,OD'Ec~\ڵh_/ETGPfREn2&i=-6e29UKUEdv:Vݓy7Rf77Z[^VH0Q(r Mz# v;(]n:95ܔ*#[N0A\:GREa,9F=/&^-UZIJ 9?=,f,#|F+| *"e' nZ~w5&A:) !ݫ^h=xSŔ,@Ŗz/YVr=%Z|ZO >pxWU;фJrPlL߲VUX_}bltX] Bl4 dNUB n)@ G'.XW#X"Ut3Sn?51(C=mz 7>hj)Lk׃mg#6V;FeT=-DΘj/WGu<ط4ٷe{p~?3 )KW<-3'Katx"fHeqh*ǯD%Ƿh6Yd "OPPĸ wԇ@a0 ]Ee{rg[YI5wrjx Nf+zԥCWt튠 Ӊѿڇ,~Otay}cf"q1:xp)E@Ng@bp zlFG%MBCi'ESg|ei)JDvTp@~,?FuAL?.TPhKR2 |c`WHq&lh<ºߩ`>rz,^V+riVtT ӰhI ~YԿ[o(v轢2fؖ_GB24hj$]u:=?/]01*Wz]6[?j}ݜDϤrL,%9N< |E[P4E%o(UuF0kQe|Do-}Md%eWp9hTY{[w DHv|Ϲ sUbn vIIm3\͘iy:: zo׹QJ\r>Q\i 0] 9^Gl+fyA:fvg< .A=FTthι)ux4Ɋ{#;ޅޘ^YZ"]͖WA;mpgxDeSS=)z?9fe_RإW}ٯbYY茥 ÛJ[8D4ՄJU'DWq&*C( z":LN/@3JfvAE.ڟ-Kr=A'%'&Mƈ^?a^Zgu& abPeAD-Oj1h}{9:TlKPQf2WhuŸ䟭 %s ;jy AcJ hVGj̈d[ёH/Okhq ˛xQ߆|9lz#JQ$E0F͚)bm{"瓻U#xo1 V N[~uKvxRPlƠ;[yj4!P+JL)=#k] Y'owohGͼQvV~~EAg<=df4EmA!@%]AMdhE~vH#P߀ Ja+~t?W UAYg QF5%?$$oxj;WQ95-!DOX  S0]y;ȡ%@6U+ c.$֫-XYx{g[X MF,JzJkuA)ZOʄ!goy`Yi_B>6O/(`J䘐;oQ7 'F[D K[(4P5)Y]/5G~.bFnЋH=YJ:X_sY` Lqs-`‘',|}L+ڛӤ(+P&u: ZZg©sl6NC8k}٧.A%x n[Cv܅iư]uJc5$v@ɧ4^}R$Aՙ@_{F{jŐn|ZR Sq~~pe[g궀Jr%[q2AJG^aCΞZZ=4.פqc, VpѭTY3CK\]/w-?Qi\4<an&o !6LN MZ1Mh!㧢%..Jx; vgc; v%2ΐxp mOu=`xB9BCPA (tGV݇6lTPl)k  debj1woZ ј N|ZprTWg1WJ/>ݺɆ CL7(BuLO?_d̼f"{=XFA?3C<~\'MqB8@Ur3)OyZ+ t]FVZʉz-5p^R G ݥDLD ZS>['5xAir'=x+~鬨})fLjzQ Lk.%9F7^lӰ;ww䞕w#ً@*=G( u@7iw?ajmM0tNjғpup$@ !F> "8u+^LeՎb޼"YWY*ۣgמT4 kɎ V`Gr⧌^nA<`1Qŕ5=3 2pWߧ 0c`دRGW{!`r$iWnjg.36~UB;@S㜎2K|@׮X^WA>N 6V%fZf.%(Y޶4u*$:˩\o?x4-/&PK.}PxJ$萏&"Yߌ1>ia%mCWτ4{љiMq nX" "˺WţU$ Hfƨv~߳S@m(uXl!."4sJK%_u-%M?*baYͱp ]`% يnĨ|!3W.6ޅ _&4L,6pYyMrFGʃ1H_mm=~}bjj%tyJ׋I9UzM&p! .Bf<4\/n< ˜ H+4x$AZIbO o>F~on$m6"[@n:J\ ie٢IʎkͯPqNҌzx'_.zT[ڿSht qOnv>Lr_ xĿЌʄ kE%A,8en$MPު A/X5p(D;T&h[=?S@iI} rG<on ͸??+ƒ>~{A,)tGgN-l;{k*.3\䉫1W Y0`I\RhJ\i]oZE.,.j6*īz.u~PE吵YH(,0/i ocvO^|lw + c3­/,۟kwQ-2zMFmK4)ʠ ~(Y%yJ~!NqziK7ފ{ iL9h@QzWÊU8aJi 9'>/83,}3^X'I{2m%ǃDಷy"'`D%] 8/JBx"&Ҿ{e}3u]r3JTxso iy#كkTq[XEl'ʼ_6wzU{Fܓ@휆+cURza5jV]gK?C  BKE%RkT`B}G>+wu@˪jb el6`\mZ<\_{0 gB[(hEʔW;W Nou7K"CY/5kOu[Y$Knjqo)`+jceo{e]tR|YF/O(xnn rAw^AMKȞ+ΜZ&Hx\.~;yFKbG,h#e~R9[t'f'!N,X\pS[k D pi窱JWWٲ/?A^Rz4LX68GeJH'cwT&|Z *y4EOxы Loo,7CV`7}c2!yC{I0!`I,pk_v丁 i}E B`~› c rMyW &IxV`\Ts_cDm,&٨n(Cы:ij6[:ux!T9#|Q\FxV@ ȏ67H T2oF)rBay@?MpE&uwna:"-G3 K]+OcXtR5dy")V x$VA{|d+9D7)6!/fO_x[; H;67`>Aɯel jGk]Zo[<k]W!Tf:[(l"yA06w*mmsFyf7JJR\.a >ӑ^b#eK ϸv6:f%XHsO^5{Tb/&:"= ˵#(0TEu.o].KF^>0y^Hc*P[I)@I4w:W/x{y킾ĵ-S?-;.jtD"`8K$Znib'B<*pzts+N AJ,`*= zw.DE|*.n9R <qK_ByiGi J?uwWQ<өn~H@~WH#:58kt5Vk6Z>h \¦eASJ}p+ؐ=h)j̑q2I?v?!f<b@[1VaL%sPD]#nJ۷[VKxMp۲.92G銩VDZB/1ͶKbQWDZ|<%ƨŕ%laU9bPCn`F,vaB%нަ䧦j5^y:&2L 'MC_IpW2a .lOLxRM#>c c'"].c^bGB- n)h˄Ja,|\ qϐPb,(Z#C}r}]\~yj_jR4bRUF)L«̋;/BtR5?sQTD.,gH5p9u0SץwffU0WO[l&JxItP8JbNjDK6UKuH22h+ 牢8}H\B9g s9=2_ۖWBmWXQ$Ab!\4|1I^s%u*xo} G1Lݍ 6b =l `2SUmR~yŽfϊxi;z姕1EAG4;m 5, Sw:d(Z*A1 x?(bt|4xIk9*J|j>BQ,r`IY&i|BR$1ܡ.h¿UWB4|e=GSkbڀV}yڣjkM^sb*VXs]ZFq}*> aR|&8Cx )rVU5ire:.ω޸s"qɅzF%Jg mFDJEJ7^<#eJr>c EEB,WB!j+[Aye췒 F*Yz^I%o 8ZĢ@qK {D)"b_hLM6V]6EbeUDëI -w@hQWmCWKrOKmZU$O\H>1/81n4d_සM,CExg(3_d ܐ3iƗnNqI9Y`Pt T/;0?:Y>}1;VT)`fŊ rmE8t59o3z5F>j.UÎBH9'X]zP$m*6>E\.Mkfw)K ٍh[^)nwA?@'}RRI39R+;o!d)gb|u_R&|ԫbTDbth$b~Sr σs0Xےke23ÆJ 9 i8"qdmMb%YEEiVqMWk\5\0z ?Сz촂QIq9=ZԿgiڕzAV"aFBo跼s֌(":pp#CiX >+q[8~4]M2} q sUy<Pcb6-;sVU 7趥3̓Nnd=# Ozp$l3&uMe{ T/&iq_L3-p-5I =J RYyՕI.1fFt݄c/D̴\ coXO'q她áM  S|S[$5/W`}ӶnU|X);@(;C&/mnn$T>7ZbRB.4b"_K8u~0QK=2f,n/ ʦh)6_>n&IgOD2P-p/6N0>0"w |vpcgyp\/:ۛ''EE Ox!*$vz©Ts(c|AI-fp=|s c( ;fwe-Z K~?F &Yo>) ,k>e50j2Jt Sedxo7cC$=ve~ e^o 5K}c|oCDp |kLjg Ѵhi2|mZM[w[a+~F#U(A=V&_LNZ x6lz53VFp8²Ss7\P1WݷON͕93 fA'ׁ.߲-mhqF~.vGDe7^`I/iy8Z3׹{^-+I5w6' DL~ A..ŴB%.'/Vpd/tFo'qg::u6H:Ì*)b(bt6:ER=h1md_b̵/NL,y E %^ÛTzawN7,j<16w{QYi lfzE |gh!C8#x%B.%Hzgbvp=&gTCxufG#GhEˆWF^Y⒒9*X2{y~!9H~n3.$j8C_ATdw=Rxq[r* | ᘟlI'③DhUqQ/3(}P|K0N`zM$S?>V?3/7DDuM9\r LWg Fa#lEh ͎pq_ 3"p;|3֯T!U楩VrԮ"!4 ;U]Btq ݛ /q՗dX$h<ǫZ`>44OZE]AKB-RTKtc[y葡bCiH !kc{)X:$p\^n{D62ir/")? jYվaXE `*F- ባ ȓ |Y  JF, VVv7i;yMǔa \L*vn u%x!zj#E(ԥ|NaJ)}}= +ZCJEtcAO7Z|[<1d=95ahB^ߪZz" .JҖ)#6eSJ׸3 =dV+b9\)ʟ?[:lRۿ1hs̗{ ;W%i㪿&.af?҃a0K ]dp"Snfq? UAy 6{.NqY~IpY'K0.&.܏)KLf#2~e?"ïvD.#vp;,S&ڱ > 6:H. 3Co{zvQ|/RYpt8"V%7+*#ONo`םR ̱93*$g @pJeܑc/)ޠhIP@ qOBKb.|"NIfJ~&RC!Ku s" F=NM8 lD)[zP_{cGa l!(ɃlLG2q[x5lUqhz۬D|2DAꨐ^cj͚vM *4tWW siue*b$ҩ># 5Y8Kxhk;푙5U$-JDRFncOć/L6>~eۼW FŨ3CI?UČ t0ce@el{4^vƫ 1j/pAc @ܷ!>uQ uQȵ[._7I?4.ԠRh\8Ep?j'BAՊJd flY5o} }J{z5~V7V*<")Gy,'E]7oG&3@4:SPW+<> Z"y;r2N4i 0 |߯:OЧMw <﯐6.UT$a  чRm y^|J+Ojq6Gg$dJ'-m aVsbf{ug, QwjTr~I h`,{#~ovX,U4OP'dD ;BXgaVPѷj=cOQu(JC!@GEd _?2ĠG,xolcxV^Ƹt`^BA{}2LuH,aqhLL"U~-κV:|7W\0a/k85ЈkNw-5hH7e"*+Cf7A-*x*?C[Z 1XKk5{-QX!n KԏnQ _iʓ0+-K͞pZUkn*&DmMGY$#O^H_⤜ u 76YFnH"a,;gg:U_f>zo`*/ecs0-VveוB;\W,: r4{50#8p)iM*leŅ _& R$cN e6i9?|}h ǔv_&:wWt:$5̃4'hyr%%A؎ .Ut&ϯk,u⨥2=Hju.(N`KL F1ujuJE.x{PٳxiviIފe:ƔAqqʃ0}?}}b Ǹճ( L7D!xΝ'~8<>-.E SZ^L(h`-{x/JtlYpGO,KaO c?w-d:~ՌLFI*kcFTӏOJѫe^pP~Ra8-2ДIx(eNUkBԸFf| ޵`2:}H/@ `"{YY.*_9ڴ(r˕Q(}[ݙB6exڽ%Ѵ΢2!c;/r:dh#$wt :R~"1|,p8\]~2U BfG#Ȳ=Ƚj. Gqgd\ w25?cK>>n:^Y>`nimnbH01!ק/SBY!l?ʤ}|#ґ1~TO/-[ B e^Yy:a9hb?<~Nʊ6*=ol=b'N-jNT-oR#A8~;Y~Ŕx1k_Jhi0OGQ)觧+9T rxʔu%%3X_lad 4k $T0P:FCr̹02YR#2~V/?/)7An6B} U=JiZn*BFIyx;W?ո=;HIr[e>I'ꁺZ )<[mܛW(BO|%YT=XEPԀ5t=/QtwEk-~Egu{'҇[Nzk'Ɔap e~@*L,@ mMea^~#WjŚ7xp*Y[MNzgC7>Sv,SX@ aw pAGh]j3D@\ ~6!io868t8zF#j\ 8p i^KVU)mFYew٦G׋ O@G , vLc}8B??<c~ XTw#}CW;-Ϧ1Pi`E+{Y`K>60|'Fd̼1$'?;Öa`51?&R1RgXPP,#^ ȧ_7Lk]_pZb|joi@R8p@GCɩKleHS 8ᆥI:88J|kH}p9ԥISG,?sioL}F'<Rh;+=.>hШ7sY; nJ~cٳ<3̓2z䑀H~-ުqn8/<\3mT$mǨ~ugôy+KO }_\MhL/̓>J*} Hi0;\fǕLOZCxhCo/yrrMw+ p3pu3t }; | ~=ze[ᎎ9jRodnnüɝPu֟2Q!f_9XX2^SIƭd@ˣttG!ŶXY3 HUϨb$%`6d@R6>=sEUl ]u ͘7 Mы\0+[i iqo])Wnq$Ub]b֭ |޽ e_Ah磀l&g#Wkprn(e Z5_<\ 2 ĬfH GQ(yoG~]#$/"sտn^TSl**L{Ki~ڱM.]`+LҝxjQȷm c2\YztM2w q_b/ aɄXuFo?ԄPVf\ /b#YhM_N\d!@*£?]].&WZwX" `AJf*mծ\/we_z(a.=_.y7bB\b@Q?$Vsazn\^s]rLd3,L:X1>.\1:Tnί^\!$T-Bz%2V*;RF"ÕKHx&TX5zcRnZQ' :k nWL䍝^%_>0C@ERG[sF`г%QEme fz[õ-N_,jiaE=gG5.Y$4x•6",TJz1<Ә81M|r Uԡ?Vx\c:={sI @)uKX7RB^"ȤN[@\hQp~•; * B 8cCY9]@TxIK>[Me `ީ{a,/8/"AF79&ۦ㸇Ɖvi<|+_ J)`DfIN.tt=p8~ ՜&6=`V$֯15 Hp@N8o.N96Ѿ_C)şKZE"䮲qs!ڥ."c/sHzM@X1Leґm2B܈ @AV Qf!sߡH>@'dT+.ݶO5t݆qRcw߮zz4ubLj9?za&g6q]OeIVr'"W@}:4 eɩ'BgHf;Zr JܺFŒ%wU<mL/\Kѭ)hȹ1t4"m D1+}GI>;AE|Rz~=h~kmβ`g}[O^&E !CfvP0HI%1t|pՈ~[""QZ+ K(1 J" fףmVpxA5@dZg2d]"A[̲fMH\ViBBVvvq˝dǭT2X],)ǎϭyKY haIQ٨ j|q QbL]|T WpGC2;z~ڠ /H&?!@{sI`..[R )UXQaE;J@#j0 fъ]}2SF6X^8=Zvv l>'r4uqr kKqnՉ$P?9~pEQsS*jV*!qFz_HJk!)ǥq] tΘE6Iu gJ$xG{AO#ustN:>7{2Yv|kD!]ݨ;b[aySq56ƝzKD\=vK Py4ipXyIUIr[8JPHrP*OFX- ]X$&7y\#l,i=0xAAq|. ~NG~,k׶Ê,f/Mu|hD^2˧H$ Ao¢40ZSo!6cbfI>MH5EV{(FOm̀ҵg)|X!V$V NSC?yƴ)\)dnO'`q0h n4%@ |8Iп;(_)Tjd\AkKr( < 4!ouLHQSےK|%o -BL@2nef:a Uw$-Lk&iuth~[~*(qJ˕'R ^1W7n$;ߦÿC$\K gYwt]Wk cR! .(8{:N鲝>@6QD\琸.&u9ޑs߱Rhd! 2bqy Q&7H;0qnTmV?m"7ȏ.!Y4vRV6 lV@2t=.ʴݑKDq,AP#Cun^,BPAZwtX“A儿]$ EVh ~<9Q%}ܪ|ݤC j,Dmkus#<cPU'ҭ2Y*+vmxaֿ#w.=%&P㹜0nI8 (T W:3P'MiZeIosK;6e\ےXpg޳J-2J f\U8aI E7 raζ+uD&>@{x5wf%0*`谳,p<+*-#L f }HW뙯4Ɠ G5EwZbVo+H@ bSɣj#"Qr_N˪ ErZ ,j%>7j_(9 u9Q1$2FyD17)t<KQ8[jĥ綫`}t+iIq_7$B}UQjDR٘Y^ yvpV&052%.n8e$#kW e7}wB R$*JXG,{7Ѽ LCwnl:@J+WMμER$†:ȫ^UK"@1K}h 24ut̏LZ Jsc&;p૕8`#^h'4K}( N::j&s piXlLʃzSZ̠1u=p[yدN0F.7-~/ ۼoqcKقn$8߃;5t, P +RI'X?`/ OzHgR#i=-]y6ZX]O!CS'ϋyVu4 N 2pZV]G g4ATP6gؿ÷Q,R321)cԯ8[{Mkbw:K'{x_?~빓zEu{btRSxVg]sJr5g뺩Ip[ ^֦Vkq-5bH `($eF3UaTWsGZQKRü4\f=uQpзrfXe ZnP;K-e9\TB~m.zb䓉|tb1sՃMH?s/`q"ߍ<ߜ=kb#CU:L.ާͻh'cEKc)+l\"d:G { "q6 ȶ0^IUݬE0G95`g gу56!puZ:I S 7?]s#7s0.Aqo>L$CX Uٯ{*~tMѻ 3xA/ […~`ӥ5GMܧǹ24XE;gmyYEflsFZ%J.N<GI4e({\yrˬF};άgtG2 ?eq7CGwύʣYD q\`f2yeduYpuy5..#L[7{x uHY6VyDΩbJzOڕƊT^V[1v(5q>to\oE3;(¥KHuk Gjy- ՙ"@}\fQ&d݋XWH|TA*PfK:𒗳_F>7ᏽ'L86{,+h2n63KӾ9hZ\}_lCwHx@ޔ:'$ ?xZϮ&sk?ع)P__]z ":oںȡ䵇](5~JLx[Z=L#~5b} oFFsӊ'rP`׳?1vxN`~JĬbOq-q@GZIWvz5wEԷ` M`/bGdJZJ95)gXL; l[lawc_FD*?pXB#5iN"Z[M r',F8+`|y_fә.1p~ 0!O?ښF'\NN b_[H ]I7cS,wzq|ڣ;1nr\0P ZN9Xk5d#>z<0ZG1 &ahj䘰; _;zae'Ak;}o\" :">ZڷGLݗ1ҴK8 d J][sdr@&0Ax}/Ù^2ޛDvw>&;!:> D(B$QOa=˥1? m䒕2-<#q>&C4fK[ٱ{ tGZF;⮎x~ݼ:mΫqE̤^QW$fP .>ph*0̸iR#jpK"/ .v,|f`|3Cl"}؁"vGix` ͒:Hw=:[eODul]R0=U2q/nJ8F%ժ׫Kgz]FIB:Tц? ֑,AՂb+ob 1AWdpowUs^'6Qw17](SӺf][Po[U VexU 7˚tg ]j>#n'y+0ǰ2gEsN̚w&>OI.w%.ľ .y*\RIfNO 9O Ƀ?N75 Lhmbh{͡\%=C"Ȯ,__oC>qU+)t-po)."?GՈ]8lQN@qZ>yϙ @dl@"ڳKS VlW̿THz5 au1XRt{Z#X g$MK+n@wɳ 7sqX_,4볣QO,87+{ ~e7Z1pǟM-d{'- l#{ HBbD_;ĸ4p4éj@ewo 0>PP-E*+-j] Ȝi>3>b~h~m*E&,zkY:-fhyKSV\3%DI'6DMט\qf>F!EQ%n/Gf|V &#{Du!]0z*SD:#5M|m-zLAA؂! `81S 0~Vs'Z(QX8]yՉVք}bJ/embX^ ݙ;8Mi!y[ # .E  ׳ɘ)UQL(),8d%2p+!|3\f{ArndFb\VVU]Iq }ikmXY3vace^A9P`-rZgV}18Ӫ;#eyx*R7 2l߷"EɰM&k@u*?(h"$Hd5‰泍C02q3c:wD$O[WctoЋ)Nn r;38`c&ԜR19`0ř},ޠ! .elЀHU`Pܱ:Ba;j-9r$Mj%oen]IkT"x6%_U2DzF3wE6αc^ 2#| - dV~ʱ[\CmQ&O]Ť73i#.|;O,prUێdxS BK5w޸Ē e'w讫Pgs /,,yR_H6`4Bt1jSbXC+);p;ɰ{=zy7aJZ Nq9|8(ɛ ³tKpHf~ɮ3ט \9.5 X11\HMZ|QtM"Ә5g.p :{1ܴh&؂Uz==?hƲf>Xȿw2tǺ)ҥUApz#PC?tU4#?]ۊsI},}f|@k6SRvŴTxU8E\O)KθD>U}{\ʞtJ {&C"A|2>` y1G t,w]@KjgerMh舆ldI3}6X] xxG$аen" 43#?bC$IPtJyIc.Q//osGZ3"Hoٵ0Zj".'6"ބRl] [yJY#c8xj G]k Z|ƀ. ɒ{[ 蠾_H7H5m3;Ң*_ybg>ٜ~'jGAW􊗦 rFjyֻ'$z%Y/Σ?", y-twIT+у>S JDAa@09 ыM[zno)$=T[Q$I0o4K=,힉=[G4nJ.g[B's\Qٜܽ<+DY{#?Qaw`W8u2;۲0GUL+EDX~ >c,ހK5 Ih8{:2^G" [i.yߋlvG1:wEZa #jL PHx݂/ALjj+ .k'dU8^[pACѪPLTG؉f_Nd?,IBl=M`~xF"@vhK\&O_"Yp<̈́__(| tb] Ő2X&m7c2ZRhwJG_ET=uBvc9dI>)9|ީb-'S.7_DRީQy63Jhv ځ7?OU T8M_P3]cI"<8q2;ᕖtuFD`;ϟ>Zl<׮7@*4g!Fkȓc:;or"x-Y<._%SN3Q0ω;_! :^[,$Z?tՑ'wPj{_f֞pFL0霯0Y7`N8\pofS^PF7 $k9QtZIy$pq|Ttl3Mo-g>DOhЬ%|]P0%Rzrm3tL(')8;1>RǓV曫Ya O,b48BM_\> 7)M=KSMhkη  m(2Z ?^<%I tm@R2<̧K={-cоG S |zVvNVsx ")L)![jؘ1Hnm R`G2|6(. XFJŸftd0@y" #xR_c7"9)f84R%Aaɬq#I$4SFLu:>)LHL1t96)1\^RQ!ܝng)1]㾭 ido Uȇi9@%'nrJmILb 9]0kP!a_Kqr2^I9<p @,4ӬzВV!kmʢ:PxLew]cEcaK5+@MP_BS kWRW#2mk%PG#17DqCm4/M`L+jOǢ6ۛMzwqpd#{Ü?*v zc#7^wU]'b A{w q:ZzǺv(; vz =Mz^~9,V&Fmqj=G ^j'`VFJcG as W/aRed[ KoC_C)᷊/NE3 By@ | w4*?R{DK ܸ&ւ f!e v$ǚ^!izx՘v|%  '5!rjOP)v/lYpPՑ&hX,')ʷpq݊hR2CGMc#AP-шIþح]D8=0L,6!NQ2]P:@2ⷅ5#p ?m&Pd#>U-쀎3sIX9 5 alCX.|QׄЄ%(U(:Z)X0Rx@KlI~sH'f|  F1ə[s0@>Pm/$kțT RF|x=,JldE =rM.~sulS. y4^^c.`RHwuIsd2Hq^ ʞ::")H*u 9wFĎwECi3  rOnpz{Z R\l 39X)K(1C IG+@=lk?Lq , xiV M=L[VYqgZ$|+xDy#lx'n&(h@?.by(؍&, kǑΆ'O\3I-62J\H A{bdk9+& }5R<rG tB1ſ_S4-QF*-q R?C,)< !'Yj5TAC5IcP=Fu݉b_ h'q_ӢC@[KAqǴ3);-$ԟB^K$X%OY  N!G$߫~>f),e7BZ>XKog_0 A\ nH*EsvHļ1 ˣ&qAs#ԕƸqU$dYSț^{=rRsOͮc Mw1=nL|ߵ\cwڳ^&Fɗ+͠_\=؈ry[~ؽsM0_6XTwϺ*3#CG;}rBa -et1@,Gwb#"IrR3(& zSdG!Ꝟ]`{)uF?M3Tbr(M c\PNU˙g%hF5$bGBSg$ẗy5Y\Ӓ7>7 jݹE /RqYafP ΗVwsqv/Ǖ?;>UMeߗ ;@1MQorlznb2^$3EHh٨&;"2Kgƽ8Oc\PQ"/uN|87Ilc a"KV%t{w&Pyw4`Rމ.pEBl3hJ!r&ZԛX/F"l.-x׼C3e%IFTSѥ"+P_G0L;ov olqᆪUjk Ak0"O]6gzF&gS'9^SJԌ(۽zǸNlQ)Z !eaOlOYZ5vRYAaNƆ' "y B% x Wp:ENy ]A}&t Q9(`(Ӯ3`٩d +cpi69h\8mU 0׷Iy=Iy 4&(/cɓ' +Qe\ wVY?&DJ~3dp,4N8b8k bW펴uMuI #g=lN^ a18n!u qx%zX!?M.0lA=ߵb>za8#jdEURTGϪ3~3-w YY's*.Bhf:a8r@.MD;FV\g>>].<,y>x*88p:TP@ȒI|tHkoTAEu(:7Q(m 28ij'CC@_uis߫ewlqW -Uwuݔ|֡NWәX3Cq-f3PpJK@Ա'lO0F͞LUB3F2-QJnflPA7'] Mu(i5nʸ1~pTk\q# ;Bb"cUcWx\&|zCMQ%`#8 e&B1ō5ȱG7QED ZlQUz%ZE.k=K _.`6l+]RM;u 8CbJt_;̼q LA#+=Ab!GQ.;H(~hZ &"1}WĒ*ߖlq.{aYlHVH 6YRc 33iVXgm!C]& єKkK&i'5<~K݈SzwW/F rIcΞ2L ):{:Sfkp#w|fXd?Ma_xP@O~csD8zZ *skg!E-ūR#fRW219)(=iUZ.LJH8L&֗%Hl6E^ _L}\)@\1IdQ.vRojd4Ȉqt{WK=aVxFV51 '7sӞ0cELj`hR9Wy~˧r^Yw8+.f1$'eϖOq[ q)> Ƀ ok7ˋ2QFԽ׻2k 9qa}kؚz!>,כ >:&gbUPNPٜH` &Lb`Xxb3`,4AR⊫{>,Ng[3Jsj͔W%a63WQW!8WϘSninB2scCrDRɦ ={rjnchv7%=ԽSdm`ЭMc.Av 5F)<Th𣐚BxVY99U8N7*NjLUVBErƋ` drV]]@!:;:mũXDKnN"`2ؚ"jYC\Fi^Їk"ד,~mPwoD!o'NL"Ȣfdݝ*a@mqŨuGcW4ٔʀ@k^x%CL%tӭ40Cs_}G՜8L~e3vNwUAg%h_-6x`PDf! vX8 zQ%+9ǧaN E?#Q=:z~d~T(3i>0;2 cmb)y=W/Hܝ5十/)z$ա_ϱ@̊!Jfˇ&#)! ^ 0wO~Ш"@,hY串NOOb⾊mxF{8!+rm-KwÕq}OP5`z[)߸Vuyc_=ۓJyy))| $nr@ס86꣙ N_epE"U<[{Վ4b?v[KEe8{-&3z䠇fy TVY')x6pM (j^c0ta#wű~[1TF&!Qo9R"Bڃ́nXĩ/c>n/Ƥot'2vЂ=N^Z+|]y}1f6S!&, p׻dKWM ߁lPM$- << nPSx1[KpNTѤ74&J$@?7\TTA:$"U0Tʮf(/=5Y[+`,#yNtxC_Ҝ2Q5YaKrU: gp:<&ȵ5:?{o:1st94fuX۝/8Z\.q3oXZĬ\^afid%?] েFo%Q@Q?e1/#h# %+*q7yqbcORc5ozMA!vO}oyäAP)J6!Fjׁü-x}eV8\./sOQ,:QDxsE8VC9A\N+;[5mv% ƺtpڡZE6귷b6ſcgt]?x5LJ_: Co YZM&Q {5ƿTR{4?NÄ$[mϼb{ObHK ='i͎S.왫'k.ރ {h\d_]rH!݀<< D](\Lk$1e|*HWߍ(PmbYOB6mZ74WlU P!TV!7-@+5)BWzqD> SKC* h/!Oݤ|}'08,d 1m5AY5u`/I؈Dm-Ho=H#aoxvYQSg?'6ʊlpP@Y"^S6)Tn/.$ŎNu:wG.u䤇sw7R:?v‛$]Ir'q(+ ms@&x ժxGC*ܯ՞.w;6o"P`Dz xW8zQx1[zO_i\bƏ# kT!}8KtUw"92iyR4O-&p:NĿQ3 UHN۔J` b\CAϝS}slIcl%]M_LcQğIla{K=s));>fzDM.Z etn0(.ȍư`(~8Դ)J1Cu2I^iLK'/1Z=幩^粚f_\ڀʨ[RKZcC"cNˤ_~Ar8⓵p@YdȤ)2}!nP(%Jax'h66]z51p k<Syۨg7f{x-ܔp'7 sQgHZ\{&E):yXqrݐzM5E~"+5Տ<f1_Ќ44=sTJ5O SbwG 4˖Q5;Й H8תݯLmf?K0"a*e(͡wVhpdAN =9< ג+"lC7-Nl{ UĄ?pf) !GXxGR?ۚݏx1 y$y00%.Oiaodjڋ OYy!lEF7:l&5S`?jgk};9JNv!dU_Pm#5i|W PѤJP"{ہ?:adu"gRmYJ1eֱ=$HUFkHX'21CJѻAB#*'ov( ?zZGk5^G1?EpkwhJ+I+ܶTCȘrnB@v.J\)Yvˆ÷3GԬ*&[H/Qx0[>M7ǪB"{?퐝:ρw<Hx>e6ں0F̘~W˔v8-B;2&fǍbӑ < o,iv\-418rاQDvVpn}\Bt?g;4}e?o{W&`ޕh-ؘ\DlXć)Pp BL̾oD̜s!+9:FtFMS~e2J3L׀K$ o u<S5jc"qOV1O 2[u6t0Ig ︁<'f^YU5PzX)(gօ.5 #3>s]&UknI&wogƊ/ --4+/mhAC4 V10'R_Q#@ra V9=UyQ{#&[ۅ!Ip,.2% |57H)[6!g1u/_LH/Kf9 05C(qq*ISwQ?:W6&201 ѷm wSWoιbsX߬,ZI颥$vD4$46die'܋ft{}]J-Whἴmj&yd_+ ,ZE-i~( ~&f!\9!\mqgj##Wu!ALʫ^xҊp#Uw.4 q/vp= '.XzLpyk=8up0n]D|7ۊ1#i#r/Ý~3֯}ӎ'.(/rdB[ &Fp~ZR}pTӺ}3r 6|J#/=uE]PLG{Ffx-p'.aD1NVZf4,2#ZhUEbg(fe!5"iie/ۮ3ҧ?(tۭʞ1|i{i?A2P] #v`+/FA|,@b2 bksSn8.zz֙#m]o.OtAZ_U!$""r \sern? ,d}~Wd>(H)2vp]jȂ׈er#yzj5s M ,'[y'"/k/ti-v}@^i\Tٍыɀٖ_[[ۧsg{,*=z) ˳XҰt7, >}:NPyTÌ/c G9@hC3,) }bAQIď=^1=Q>"\ժi[9 k NX2DpMǸx=XOˋSׂ5r%I)rls@ ):TG3`i7{\O1Ͷ)g)a וA:]jisw')Ri(}C,H&D#VpNE4FkJ >2T)E}K \~O!8w{Q} kM,ܭc tzZ&GW4Ÿ+'( x9A:_.5% ??UP>==)缒?' c|Y-9--r!{0Y#QLFԝjP<+v$Bh9(V6+cp>_87 ^Y4T(- LI"ᖳ)3|[EmB ..IUC-P]RgF$"87=FvVNhg܆3Yp|P:/Y7P sl =f؈'  q#¹QG&g=@#Q!&+U!_m  XCDbUcb޿zN@tVf+ڻ&LKμLˑΡ1);A.sjfvmyC҈cg^O;)tw<ā?KLhn_Go9o&e&g-O<&EkȞ~ditșϝZ9 (vlnGZ*h_JҼsqiXmq4WJ`"Ģ o:+ݞa"ij@uR.Pʳ}uvnk8$WР&ظʶ%=G  1\uȲN8\CQF1/Amudƙla&TKS:5vTSqvC;]N>^~:v^R*Witb.KӅ6$/vJ^媮A^?<g痐Xaw# ;Cr-4T k\1FԖ ew tT+Daq]ni!"=f.it{#3o.К_i,Gf3DFd/X˫%QCP(.e+e7c:ZXˆ:Sai)sShqfbcP,l=(w77ru z]QekM1FP;訐iW֍% X~:<&rE,Zw~!{ecnm͜.xf& W;{R x)XT/ ;ySc%$g͙wз|non`ܩ,=d1m (&uC UAlXYn F`m#m\؎=^^j8PAOO. {! %kgvAڄ,a  XKyu6Q amRw\v 2SNVU|-HED>qetŐ'\İ dSVs<V{E=)NAh*uyf-ɲmY}<$!NU[4ȁ50kr]<+@&E("$];I[hrս p\z6@`SKXc]^TK#dk UƿZhq@ɎQl|k~Je7bBQTbީҜ2MWtFLկ|i); 9W:ȕaǝ,LtQ R/UG{hBܞ'^ jGȌ ;Y-<_o M˶ߥDI'(rcNx[dv ZV(K?J5·hx*`GwwG:a!ɢ^a?F?d EDn$˞ŐfYxO2/mKE'\ӍLpI)0( L3t[b<64xo қ_~utɿrǹc@V+_L\eq KzWJ!b?}W1ש)h0:+ {[ciR@xRvm `1S׻gvs(f:7v KЁ.ag bmQLD뀹aC I.}@YE{Ovء#SڮaWCv"t!<4~ÛB+*3~n=Mԫ\BUdUIHvG00v!s{mA"a{شwعi+hawk}t%8e+GXF,&ُHDkD&~~q(H5//wD,4Bgzd?͐2+U!b}TPɵk#}*J5{5 *\ږ=X&Na=-.y}Z? mx},x޹FN7מJ̅D!:1_X%e=2s"I=kN]@~2@N1m?]~NE 0uTSwS>MWְ\}z@y9cnp `?c]x r? zXqyQ%-*K۔yQCts׊%r)A-50qЊ̽>yxZ0|v֓k{n'}FVFN>q \BCG9A'8 :"*ykGXsng zUCJ&]F¨l͂ k[1!1u.ӆ&ejXn< ADhDrThg#!xjgjG’HvUh8?=M혿X5?khWs/_! О5-̽. ˗f-|PJ̡Hϼ0Ja%ʴu%--:`WLZ[YF :߀nA4 `7"*U g~g@ZEWNB6ֽ$P TzGiqh?j@Hvd#?+N;V W`K7yka)E]\prCq3 :=~?4S)qH>=!(=g]Jh@j&(: #3b+rL==AֺYFGL F%ӻS@:)ⳒJlƝ~ro¾L15_" &iDfK@=u9Ȏ_`58ddk# 5if礂` "$u]Sc1Dc|&\۪l5zFwe+zV=撖lk`L},{&tigSqJ5kSGequ_?Fx?=/!M,<{vKw~h`l&CGZŗWfnr,Xhs j8P\S8a ϲ%~C怔wng#YQ ۞;Y$(T\a7#1:t s0,J&W[M=6[wwO I._嗖CDOg! YA=x",|M”y|jiRɹl9/YSeTbcF!1S5D+eD(U)sb_Q:Hr,z5FDY]V_  91 rK[Vw;8^>0{M#Y#oʉb/<[Ѭ U(ҵqזVZZuSڊUBox$kY@ ؾO=\ /v+G\9A J@9<A^;DA ;/ s2,4YzWok-yNߑ1~=K ޡ2bg7[J~xgnjMrM$Q{gIɸQ#5|7 D8U&愚>Ҁ ۝YA?L+=p3F!RRkvm,Oy"ʡ<“dnAqc@Jz#&T~j%GT^!;7 F7rh}yCAՊCrL.6` =a9~}˿ ۜ)hfީz?O`%O(Fϼ( YZ