From 61e5ca436357ce3178d3ac328396fdc7722bfe7f Mon Sep 17 00:00:00 2001 From: Yuxuan Luo Date: Tue, 5 Jul 2022 15:01:49 -0400 Subject: [PATCH] SCTP: Support PAD chunk Add support for printing PAD chunk based on RFC4820 section3. Example: [PAD] Signed-off-by: Yuxuan Luo --- print-sctp.c | 2 + tests/TESTLIST | 5 +++ tests/sctp-pad-v.out | 60 ++++++++++++++++++++++++++ tests/sctp-pad-vv.out | 98 ++++++++++++++++++++++++++++++++++++++++++ tests/sctp-pad.out | 30 +++++++++++++ tests/sctp-pad.pcap | Bin 0 -> 13576 bytes 6 files changed, 195 insertions(+) create mode 100644 tests/sctp-pad-v.out create mode 100644 tests/sctp-pad-vv.out create mode 100644 tests/sctp-pad.out create mode 100644 tests/sctp-pad.pcap diff --git a/print-sctp.c b/print-sctp.c index 2302bacb7d..4aaceba7c0 100644 --- a/print-sctp.c +++ b/print-sctp.c @@ -114,6 +114,7 @@ #define SCTP_I_DATA 0x40 #define SCTP_ASCONF_ACK 0x80 #define SCTP_RE_CONFIG 0x82 +#define SCTP_PAD_CHUNK 0x84 #define SCTP_FORWARD_CUM_TSN 0xc0 #define SCTP_ASCONF 0xc1 #define SCTP_I_FORWARD_TSN 0xc2 @@ -136,6 +137,7 @@ static const struct tok sctp_chunkid_str[] = { { SCTP_SHUTDOWN_COMPLETE, "SHUTDOWN COMPLETE" }, { SCTP_I_DATA, "I-DATA" }, { SCTP_RE_CONFIG, "RE-CONFIG" }, + { SCTP_PAD_CHUNK, "PAD" }, { SCTP_FORWARD_CUM_TSN, "FOR CUM TSN" }, { SCTP_ASCONF, "ASCONF" }, { SCTP_ASCONF_ACK, "ASCONF-ACK" }, diff --git a/tests/TESTLIST b/tests/TESTLIST index a76942ee5f..e60348cc9a 100644 --- a/tests/TESTLIST +++ b/tests/TESTLIST @@ -67,6 +67,11 @@ sctp-asconf-6 sctp-asconf-6.pcap sctp-asconf-6.out sctp-asconf-6-v sctp-asconf-6.pcap sctp-asconf-6-v.out -v sctp-asconf-6-vv sctp-asconf-6.pcap sctp-asconf-6-vv.out -vv +# PAD tests +sctp-pad sctp-pad.pcap sctp-pad.out +sctp-pad-v sctp-pad.pcap sctp-pad-v.out -v +sctp-pad-vv sctp-pad.pcap sctp-pad-vv.out -vv + # BGP tests bgp_vpn_attrset bgp_vpn_attrset.pcap bgp_vpn_attrset.out -v mpbgp-linklocal-nexthop mpbgp-linklocal-nexthop.pcap mpbgp-linklocal-nexthop.out -v diff --git a/tests/sctp-pad-v.out b/tests/sctp-pad-v.out new file mode 100644 index 0000000000..f2abb65503 --- /dev/null +++ b/tests/sctp-pad-v.out @@ -0,0 +1,60 @@ + 1 15:21:08.215897 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 100) + 127.0.0.1.57694 > 127.0.0.1.31337: sctp (1) [INIT] [init tag: 413521971] [rwnd: 106496] [OS: 10] [MIS: 65535] [init TSN: 2253051237] + 2 15:21:08.215923 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 388) + 127.0.0.1.31337 > 127.0.0.1.57694: sctp (1) [INIT ACK] [init tag: 145384071] [rwnd: 106496] [OS: 10] [MIS: 10] [init TSN: 4266748061] + 3 15:21:08.215940 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 328) + 127.0.0.1.57694 > 127.0.0.1.31337: sctp (1) [COOKIE ECHO] + 4 15:21:08.215959 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36) + 127.0.0.1.31337 > 127.0.0.1.57694: sctp (1) [COOKIE ACK] + 5 15:21:09.986643 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 92) + 10.0.0.169.57694 > 10.0.0.169.31337: sctp (1) [HB REQ] + 6 15:21:09.986673 IP (tos 0x2,ECT(0), ttl 64, id 31167, offset 0, flags [DF], proto SCTP (132), length 92) + 10.0.0.169.31337 > 10.0.0.169.57694: sctp (1) [HB ACK] + 7 15:21:10.338722 IP (tos 0x2,ECT(0), ttl 64, id 31168, offset 0, flags [DF], proto SCTP (132), length 92) + 10.0.0.169.31337 > 10.0.0.169.57694: sctp (1) [HB REQ] + 8 15:21:10.338734 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 92) + 10.0.0.169.57694 > 10.0.0.169.31337: sctp (1) [HB ACK] + 9 15:21:11.106508 IP (tos 0x2,ECT(0), ttl 64, id 3, offset 0, flags [DF], proto SCTP (132), length 92) + 192.168.122.1.57694 > 192.168.122.1.31337: sctp (1) [HB REQ] + 10 15:21:11.106570 IP (tos 0x2,ECT(0), ttl 64, id 31169, offset 0, flags [DF], proto SCTP (132), length 92) + 192.168.122.1.31337 > 192.168.122.1.57694: sctp (1) [HB ACK] + 11 15:21:11.618660 IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), length 92) + 10.0.0.192.57694 > 10.0.0.192.31337: sctp (1) [HB REQ] + 12 15:21:11.618665 IP (tos 0x2,ECT(0), ttl 64, id 31170, offset 0, flags [DF], proto SCTP (132), length 92) + 192.168.122.1.31337 > 192.168.122.1.57694: sctp (1) [HB REQ] + 13 15:21:11.618678 IP (tos 0x2,ECT(0), ttl 64, id 31171, offset 0, flags [DF], proto SCTP (132), length 92) + 10.0.0.192.31337 > 10.0.0.192.57694: sctp (1) [HB ACK] + 14 15:21:11.618695 IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), length 92) + 192.168.122.1.57694 > 192.168.122.1.31337: sctp (1) [HB ACK] + 15 15:21:12.642329 IP (tos 0x2,ECT(0), ttl 64, id 31172, offset 0, flags [DF], proto SCTP (132), length 92) + 10.0.0.192.31337 > 10.0.0.192.57694: sctp (1) [HB REQ] + 16 15:21:12.642340 IP (tos 0x2,ECT(0), ttl 64, id 6, offset 0, flags [DF], proto SCTP (132), length 92) + 10.0.0.192.57694 > 10.0.0.192.31337: sctp (1) [HB ACK] + 17 15:21:13.410696 IP (tos 0x2,ECT(0), ttl 64, id 31173, offset 0, flags [DF], proto SCTP (132), length 1220) + 127.0.0.1.31337 > 127.0.0.1.57694: sctp (1) [HB REQ] , (2) [PAD] + 18 15:21:13.410716 IP (tos 0x2,ECT(0), ttl 64, id 7, offset 0, flags [DF], proto SCTP (132), length 1220) + 127.0.0.1.57694 > 127.0.0.1.31337: sctp (1) [HB REQ] , (2) [PAD] + 19 15:21:13.410727 IP (tos 0x2,ECT(0), ttl 64, id 8, offset 0, flags [DF], proto SCTP (132), length 92) + 127.0.0.1.57694 > 127.0.0.1.31337: sctp (1) [HB ACK] + 20 15:21:13.410732 IP (tos 0x2,ECT(0), ttl 64, id 31174, offset 0, flags [DF], proto SCTP (132), length 92) + 127.0.0.1.31337 > 127.0.0.1.57694: sctp (1) [HB ACK] + 21 15:21:13.410736 IP (tos 0x2,ECT(0), ttl 64, id 31175, offset 0, flags [DF], proto SCTP (132), length 1252) + 127.0.0.1.31337 > 127.0.0.1.57694: sctp (1) [HB REQ] , (2) [PAD] + 22 15:21:13.410739 IP (tos 0x2,ECT(0), ttl 64, id 9, offset 0, flags [DF], proto SCTP (132), length 1252) + 127.0.0.1.57694 > 127.0.0.1.31337: sctp (1) [HB REQ] , (2) [PAD] + 23 15:21:13.410743 IP (tos 0x2,ECT(0), ttl 64, id 10, offset 0, flags [DF], proto SCTP (132), length 92) + 127.0.0.1.57694 > 127.0.0.1.31337: sctp (1) [HB ACK] + 24 15:21:13.410746 IP (tos 0x2,ECT(0), ttl 64, id 31176, offset 0, flags [DF], proto SCTP (132), length 92) + 127.0.0.1.31337 > 127.0.0.1.57694: sctp (1) [HB ACK] + 25 15:21:13.410750 IP (tos 0x2,ECT(0), ttl 64, id 31177, offset 0, flags [DF], proto SCTP (132), length 1284) + 127.0.0.1.31337 > 127.0.0.1.57694: sctp (1) [HB REQ] , (2) [PAD] + 26 15:21:13.410754 IP (tos 0x2,ECT(0), ttl 64, id 11, offset 0, flags [DF], proto SCTP (132), length 1284) + 127.0.0.1.57694 > 127.0.0.1.31337: sctp (1) [HB REQ] , (2) [PAD] + 27 15:21:13.410757 IP (tos 0x2,ECT(0), ttl 64, id 12, offset 0, flags [DF], proto SCTP (132), length 92) + 127.0.0.1.57694 > 127.0.0.1.31337: sctp (1) [HB ACK] + 28 15:21:13.410760 IP (tos 0x2,ECT(0), ttl 64, id 31178, offset 0, flags [DF], proto SCTP (132), length 92) + 127.0.0.1.31337 > 127.0.0.1.57694: sctp (1) [HB ACK] + 29 15:21:13.410763 IP (tos 0x2,ECT(0), ttl 64, id 31179, offset 0, flags [DF], proto SCTP (132), length 1316) + 127.0.0.1.31337 > 127.0.0.1.57694: sctp (1) [HB REQ] , (2) [PAD] + 30 15:21:13.410767 IP (tos 0x2,ECT(0), ttl 64, id 13, offset 0, flags [DF], proto SCTP (132), length 1316) + 127.0.0.1.57694 > 127.0.0.1.31337: sctp (1) [HB REQ] , (2) [PAD] diff --git a/tests/sctp-pad-vv.out b/tests/sctp-pad-vv.out new file mode 100644 index 0000000000..17c360caa5 --- /dev/null +++ b/tests/sctp-pad-vv.out @@ -0,0 +1,98 @@ + 1 15:21:08.215897 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 100) + 127.0.0.1.57694 > 127.0.0.1.31337: sctp + 1) [INIT] [init tag: 413521971] [rwnd: 106496] [OS: 10] [MIS: 65535] [init TSN: 2253051237] + 2 15:21:08.215923 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 388) + 127.0.0.1.31337 > 127.0.0.1.57694: sctp + 1) [INIT ACK] [init tag: 145384071] [rwnd: 106496] [OS: 10] [MIS: 10] [init TSN: 4266748061] + 3 15:21:08.215940 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 328) + 127.0.0.1.57694 > 127.0.0.1.31337: sctp + 1) [COOKIE ECHO] + 4 15:21:08.215959 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36) + 127.0.0.1.31337 > 127.0.0.1.57694: sctp + 1) [COOKIE ACK] + 5 15:21:09.986643 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 92) + 10.0.0.169.57694 > 10.0.0.169.31337: sctp + 1) [HB REQ] + 6 15:21:09.986673 IP (tos 0x2,ECT(0), ttl 64, id 31167, offset 0, flags [DF], proto SCTP (132), length 92) + 10.0.0.169.31337 > 10.0.0.169.57694: sctp + 1) [HB ACK] + 7 15:21:10.338722 IP (tos 0x2,ECT(0), ttl 64, id 31168, offset 0, flags [DF], proto SCTP (132), length 92) + 10.0.0.169.31337 > 10.0.0.169.57694: sctp + 1) [HB REQ] + 8 15:21:10.338734 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 92) + 10.0.0.169.57694 > 10.0.0.169.31337: sctp + 1) [HB ACK] + 9 15:21:11.106508 IP (tos 0x2,ECT(0), ttl 64, id 3, offset 0, flags [DF], proto SCTP (132), length 92) + 192.168.122.1.57694 > 192.168.122.1.31337: sctp + 1) [HB REQ] + 10 15:21:11.106570 IP (tos 0x2,ECT(0), ttl 64, id 31169, offset 0, flags [DF], proto SCTP (132), length 92) + 192.168.122.1.31337 > 192.168.122.1.57694: sctp + 1) [HB ACK] + 11 15:21:11.618660 IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), length 92) + 10.0.0.192.57694 > 10.0.0.192.31337: sctp + 1) [HB REQ] + 12 15:21:11.618665 IP (tos 0x2,ECT(0), ttl 64, id 31170, offset 0, flags [DF], proto SCTP (132), length 92) + 192.168.122.1.31337 > 192.168.122.1.57694: sctp + 1) [HB REQ] + 13 15:21:11.618678 IP (tos 0x2,ECT(0), ttl 64, id 31171, offset 0, flags [DF], proto SCTP (132), length 92) + 10.0.0.192.31337 > 10.0.0.192.57694: sctp + 1) [HB ACK] + 14 15:21:11.618695 IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), length 92) + 192.168.122.1.57694 > 192.168.122.1.31337: sctp + 1) [HB ACK] + 15 15:21:12.642329 IP (tos 0x2,ECT(0), ttl 64, id 31172, offset 0, flags [DF], proto SCTP (132), length 92) + 10.0.0.192.31337 > 10.0.0.192.57694: sctp + 1) [HB REQ] + 16 15:21:12.642340 IP (tos 0x2,ECT(0), ttl 64, id 6, offset 0, flags [DF], proto SCTP (132), length 92) + 10.0.0.192.57694 > 10.0.0.192.31337: sctp + 1) [HB ACK] + 17 15:21:13.410696 IP (tos 0x2,ECT(0), ttl 64, id 31173, offset 0, flags [DF], proto SCTP (132), length 1220) + 127.0.0.1.31337 > 127.0.0.1.57694: sctp + 1) [HB REQ] + 2) [PAD] + 18 15:21:13.410716 IP (tos 0x2,ECT(0), ttl 64, id 7, offset 0, flags [DF], proto SCTP (132), length 1220) + 127.0.0.1.57694 > 127.0.0.1.31337: sctp + 1) [HB REQ] + 2) [PAD] + 19 15:21:13.410727 IP (tos 0x2,ECT(0), ttl 64, id 8, offset 0, flags [DF], proto SCTP (132), length 92) + 127.0.0.1.57694 > 127.0.0.1.31337: sctp + 1) [HB ACK] + 20 15:21:13.410732 IP (tos 0x2,ECT(0), ttl 64, id 31174, offset 0, flags [DF], proto SCTP (132), length 92) + 127.0.0.1.31337 > 127.0.0.1.57694: sctp + 1) [HB ACK] + 21 15:21:13.410736 IP (tos 0x2,ECT(0), ttl 64, id 31175, offset 0, flags [DF], proto SCTP (132), length 1252) + 127.0.0.1.31337 > 127.0.0.1.57694: sctp + 1) [HB REQ] + 2) [PAD] + 22 15:21:13.410739 IP (tos 0x2,ECT(0), ttl 64, id 9, offset 0, flags [DF], proto SCTP (132), length 1252) + 127.0.0.1.57694 > 127.0.0.1.31337: sctp + 1) [HB REQ] + 2) [PAD] + 23 15:21:13.410743 IP (tos 0x2,ECT(0), ttl 64, id 10, offset 0, flags [DF], proto SCTP (132), length 92) + 127.0.0.1.57694 > 127.0.0.1.31337: sctp + 1) [HB ACK] + 24 15:21:13.410746 IP (tos 0x2,ECT(0), ttl 64, id 31176, offset 0, flags [DF], proto SCTP (132), length 92) + 127.0.0.1.31337 > 127.0.0.1.57694: sctp + 1) [HB ACK] + 25 15:21:13.410750 IP (tos 0x2,ECT(0), ttl 64, id 31177, offset 0, flags [DF], proto SCTP (132), length 1284) + 127.0.0.1.31337 > 127.0.0.1.57694: sctp + 1) [HB REQ] + 2) [PAD] + 26 15:21:13.410754 IP (tos 0x2,ECT(0), ttl 64, id 11, offset 0, flags [DF], proto SCTP (132), length 1284) + 127.0.0.1.57694 > 127.0.0.1.31337: sctp + 1) [HB REQ] + 2) [PAD] + 27 15:21:13.410757 IP (tos 0x2,ECT(0), ttl 64, id 12, offset 0, flags [DF], proto SCTP (132), length 92) + 127.0.0.1.57694 > 127.0.0.1.31337: sctp + 1) [HB ACK] + 28 15:21:13.410760 IP (tos 0x2,ECT(0), ttl 64, id 31178, offset 0, flags [DF], proto SCTP (132), length 92) + 127.0.0.1.31337 > 127.0.0.1.57694: sctp + 1) [HB ACK] + 29 15:21:13.410763 IP (tos 0x2,ECT(0), ttl 64, id 31179, offset 0, flags [DF], proto SCTP (132), length 1316) + 127.0.0.1.31337 > 127.0.0.1.57694: sctp + 1) [HB REQ] + 2) [PAD] + 30 15:21:13.410767 IP (tos 0x2,ECT(0), ttl 64, id 13, offset 0, flags [DF], proto SCTP (132), length 1316) + 127.0.0.1.57694 > 127.0.0.1.31337: sctp + 1) [HB REQ] + 2) [PAD] diff --git a/tests/sctp-pad.out b/tests/sctp-pad.out new file mode 100644 index 0000000000..86b282704d --- /dev/null +++ b/tests/sctp-pad.out @@ -0,0 +1,30 @@ + 1 15:21:08.215897 IP 127.0.0.1.57694 > 127.0.0.1.31337: sctp (1) [INIT] [init tag: 413521971] [rwnd: 106496] [OS: 10] [MIS: 65535] [init TSN: 2253051237] + 2 15:21:08.215923 IP 127.0.0.1.31337 > 127.0.0.1.57694: sctp (1) [INIT ACK] [init tag: 145384071] [rwnd: 106496] [OS: 10] [MIS: 10] [init TSN: 4266748061] + 3 15:21:08.215940 IP 127.0.0.1.57694 > 127.0.0.1.31337: sctp (1) [COOKIE ECHO] + 4 15:21:08.215959 IP 127.0.0.1.31337 > 127.0.0.1.57694: sctp (1) [COOKIE ACK] + 5 15:21:09.986643 IP 10.0.0.169.57694 > 10.0.0.169.31337: sctp (1) [HB REQ] + 6 15:21:09.986673 IP 10.0.0.169.31337 > 10.0.0.169.57694: sctp (1) [HB ACK] + 7 15:21:10.338722 IP 10.0.0.169.31337 > 10.0.0.169.57694: sctp (1) [HB REQ] + 8 15:21:10.338734 IP 10.0.0.169.57694 > 10.0.0.169.31337: sctp (1) [HB ACK] + 9 15:21:11.106508 IP 192.168.122.1.57694 > 192.168.122.1.31337: sctp (1) [HB REQ] + 10 15:21:11.106570 IP 192.168.122.1.31337 > 192.168.122.1.57694: sctp (1) [HB ACK] + 11 15:21:11.618660 IP 10.0.0.192.57694 > 10.0.0.192.31337: sctp (1) [HB REQ] + 12 15:21:11.618665 IP 192.168.122.1.31337 > 192.168.122.1.57694: sctp (1) [HB REQ] + 13 15:21:11.618678 IP 10.0.0.192.31337 > 10.0.0.192.57694: sctp (1) [HB ACK] + 14 15:21:11.618695 IP 192.168.122.1.57694 > 192.168.122.1.31337: sctp (1) [HB ACK] + 15 15:21:12.642329 IP 10.0.0.192.31337 > 10.0.0.192.57694: sctp (1) [HB REQ] + 16 15:21:12.642340 IP 10.0.0.192.57694 > 10.0.0.192.31337: sctp (1) [HB ACK] + 17 15:21:13.410696 IP 127.0.0.1.31337 > 127.0.0.1.57694: sctp (1) [HB REQ] , (2) [PAD] + 18 15:21:13.410716 IP 127.0.0.1.57694 > 127.0.0.1.31337: sctp (1) [HB REQ] , (2) [PAD] + 19 15:21:13.410727 IP 127.0.0.1.57694 > 127.0.0.1.31337: sctp (1) [HB ACK] + 20 15:21:13.410732 IP 127.0.0.1.31337 > 127.0.0.1.57694: sctp (1) [HB ACK] + 21 15:21:13.410736 IP 127.0.0.1.31337 > 127.0.0.1.57694: sctp (1) [HB REQ] , (2) [PAD] + 22 15:21:13.410739 IP 127.0.0.1.57694 > 127.0.0.1.31337: sctp (1) [HB REQ] , (2) [PAD] + 23 15:21:13.410743 IP 127.0.0.1.57694 > 127.0.0.1.31337: sctp (1) [HB ACK] + 24 15:21:13.410746 IP 127.0.0.1.31337 > 127.0.0.1.57694: sctp (1) [HB ACK] + 25 15:21:13.410750 IP 127.0.0.1.31337 > 127.0.0.1.57694: sctp (1) [HB REQ] , (2) [PAD] + 26 15:21:13.410754 IP 127.0.0.1.57694 > 127.0.0.1.31337: sctp (1) [HB REQ] , (2) [PAD] + 27 15:21:13.410757 IP 127.0.0.1.57694 > 127.0.0.1.31337: sctp (1) [HB ACK] + 28 15:21:13.410760 IP 127.0.0.1.31337 > 127.0.0.1.57694: sctp (1) [HB ACK] + 29 15:21:13.410763 IP 127.0.0.1.31337 > 127.0.0.1.57694: sctp (1) [HB REQ] , (2) [PAD] + 30 15:21:13.410767 IP 127.0.0.1.57694 > 127.0.0.1.31337: sctp (1) [HB REQ] , (2) [PAD] diff --git a/tests/sctp-pad.pcap b/tests/sctp-pad.pcap new file mode 100644 index 0000000000000000000000000000000000000000..8515f8f977f43132c98da37c04d5fac9ad9cd863 GIT binary patch literal 13576 zcmeI0U1$_n6vxl3o9t$irjkB1B^0zQ)glT>?1xPr@~}dPh+RJlf-F@M%myi`7G(CJ zStJ_MlD1fi6$!OcOH4qjV)|6N%|}gAY;7@^(u!=2wS@}BKGc>HJ?G9|_cYAhklh*- z&V|F=ov+_H|2y;N>|7c?^HBhTkQ+g;@W=FXZOvQPErQ)Rr{E(DYXi^>&;Sjc^%Wfe z7DXnWOz5-l4$;aJQ?+0n1F-MhInXrO0!0v}^Jr@WoXl?1v`zOVEhvLxoI?sAn8u(C z_Fx8w@MaWzPzF|~o572>bOy;pCa$P>Y5=U}aQ}`jHv_O|Vy(SIGG-96mVdWw;G1Y& zWB2uvx}|o-#ihHSe&!k{)4Xd(f4Fw)M5W$;=t^(PWcBvPZLp!YH8vA~Ok8pF32d9d zLTRJ|5V^em<|iG~J#P=b`_k#qPsaydji!dqZrO0^T$g>S>gw&k*kzv6CAjzhPX zX3LT^BhKkPIE*US;GBXF^(IDK zmFqWZmHB&6ifeTp@9YfBYT&cFk*hkDt-|iCk?YJ6{lapj4B2?q~*ilYc?-Q!9!LH9KiVw!O%?nlo{~ znxV$6xjFX1>z8AV|LB^Dyvj(1fKq#0leyZtn&(fxf#kAdmZ4@?MC6fC@>>c{&efbu zC_mN(v28kA^Nmc)zwiGz)uj&+xyeX&z9jOxkS6=Bb3Wvc+e=I}2bJ1KQ0+8@U(Iw( z*Tc6BweC7kF1vkm+<660a|hLY(nxlORL#X+HRsgM#Qkd4a-d9}OFD=z%} zXH7Ekp;nv75hEFji5xks$$mA@m;4)&8>7YWJ*H2=2l;kz#2F>>=f8V7Kd+gN^Q-U8 zpLJ^l_Y;ygUPqUOx2)5okM<$|xC?E>l2L;ICwiz7`LgaAI4`_$u-kNi`WMVFd zYpQ!QHM6p+T^#N{ETh~~6c7bG6(EP(i4NC>M=AKo{`U@(!~OR=n*K(@JLb6@Zgvkx z?Kn}Rq*nNVn`rgG} z4wz5hs~wQYNh8@AQ+;ntlMC&8Ir$AFS77=Sd{Ez86m-T_-`nR!&ZqDFBiHx#ahl9U z0Z~8{c+eCeZ{BBgNGMf(@lNfKh4#hbkPq53Ao+*_qJWaqR+ literal 0 HcmV?d00001