From a96afcafad32f02ebaf6c39156d43412cb40c535 Mon Sep 17 00:00:00 2001 From: chhan11 Date: Thu, 29 Jun 2017 16:16:44 +0200 Subject: [PATCH 01/46] NEW: Empty placeholder GitLab issue templates --- .gitlab/issue_templates/Bug.md | 0 .gitlab/issue_templates/Feature.md | 0 .gitlab/issue_templates/Layout Changes.md | 0 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .gitlab/issue_templates/Bug.md create mode 100644 .gitlab/issue_templates/Feature.md create mode 100644 .gitlab/issue_templates/Layout Changes.md diff --git a/.gitlab/issue_templates/Bug.md b/.gitlab/issue_templates/Bug.md new file mode 100644 index 0000000..e69de29 diff --git a/.gitlab/issue_templates/Feature.md b/.gitlab/issue_templates/Feature.md new file mode 100644 index 0000000..e69de29 diff --git a/.gitlab/issue_templates/Layout Changes.md b/.gitlab/issue_templates/Layout Changes.md new file mode 100644 index 0000000..e69de29 From 69f1e43e7f7d5c105f4fc8cb69049b005db24414 Mon Sep 17 00:00:00 2001 From: chhan11 Date: Thu, 29 Jun 2017 16:16:58 +0200 Subject: [PATCH 02/46] NEW: Empty placeholder GitLab merge request templates --- .gitlab/merge_request_templates/Bugfix.md | 0 .gitlab/merge_request_templates/Cherrypick.md | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .gitlab/merge_request_templates/Bugfix.md create mode 100644 .gitlab/merge_request_templates/Cherrypick.md diff --git a/.gitlab/merge_request_templates/Bugfix.md b/.gitlab/merge_request_templates/Bugfix.md new file mode 100644 index 0000000..e69de29 diff --git a/.gitlab/merge_request_templates/Cherrypick.md b/.gitlab/merge_request_templates/Cherrypick.md new file mode 100644 index 0000000..e69de29 From 87a493a4bc8d1327cfe8426a8beb5644c8297be4 Mon Sep 17 00:00:00 2001 From: chhan11 Date: Fri, 30 Jun 2017 08:23:12 +0200 Subject: [PATCH 03/46] base.cfg: updated ntp.cfg --- code/base.cfg/ntp.cfg | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/base.cfg/ntp.cfg b/code/base.cfg/ntp.cfg index 2f8b985..0ea0b4c 100644 --- a/code/base.cfg/ntp.cfg +++ b/code/base.cfg/ntp.cfg @@ -2,8 +2,9 @@ ntp logging ntp authentication-key 1999 md5 1999 ntp authenticate ntp trusted-key 1999 -ntp source Vlan199 -ntp server 10.10.199.2 version 3 prefer source Vlan199 key 1999 +ntp source lo0 +ntp server 213.0.113.2 version 3 prefer source lo0 key 1999 +ntp peer 213.0.113.1 version 3 prefer source lo0 key 1999 ! key chain 1999 key 1999 From c9442381425244684674b94cf7d739bb44975b33 Mon Sep 17 00:00:00 2001 From: chhan11 Date: Fri, 30 Jun 2017 08:23:22 +0200 Subject: [PATCH 04/46] base.cfg: updated ssh.cfg --- code/base.cfg/ssh.cfg | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/code/base.cfg/ssh.cfg b/code/base.cfg/ssh.cfg index 93b7a2e..0d60338 100644 --- a/code/base.cfg/ssh.cfg +++ b/code/base.cfg/ssh.cfg @@ -1,4 +1,17 @@ -ip ssh logging events -ip ssh version 2 +ip ssh authentication-retries 3 ip ssh dh min size 2048 ip ssh dscp 56 +ip ssh logging events +ip ssh source-interface lo0 +ip ssh time-out 10 +ip ssh version 2 +! +username cisco privilege 15 noescape user-maxlinks 1 secret 0 cisco +! +line vty 0 15 + exec-timeout 60 0 + password cisco + logging synchronous + login local + transport preferred none + transport input telnet ssh From 00355f4cfe0dd902ce4e625cadc5385fae7e38ac Mon Sep 17 00:00:00 2001 From: chhan11 Date: Fri, 30 Jun 2017 08:23:50 +0200 Subject: [PATCH 05/46] New xkcd: refresh_types.png --- img/xkcd/refresh_types.png | Bin 0 -> 34430 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/xkcd/refresh_types.png diff --git a/img/xkcd/refresh_types.png b/img/xkcd/refresh_types.png new file mode 100644 index 0000000000000000000000000000000000000000..60503cdda3162d33b34fa31a29779030db251192 GIT binary patch literal 34430 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%0Alsg`U)=_63(fzJi(v>1;#-QtP{ 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 Date: Tue, 18 Jul 2017 19:11:16 +0200 Subject: [PATCH 06/46] Begin writing ipv6 section --- chapter/ip.tex | 13 +++++++++++++ img/ipv6/ipv6_address_leading_zeros.svg.png | Bin 0 -> 41725 bytes main.tex | 1 + 3 files changed, 14 insertions(+) create mode 100644 chapter/ip.tex create mode 100644 img/ipv6/ipv6_address_leading_zeros.svg.png diff --git a/chapter/ip.tex b/chapter/ip.tex new file mode 100644 index 0000000..124b8bc --- /dev/null +++ b/chapter/ip.tex @@ -0,0 +1,13 @@ +\chapter[IP]{Internet Protocol} + +\section[IPv6]{Internet Protocol v6} + +\gls{ipv6} has recently been defined in an updated \rfc{8200} which obsoletes several of the older \gls{rfc} documents regarding \gls{ipv6}. + +\gls{ipv6} came about in 1998 when the original \rfc{2460} was published. It aims to provide globally route-able addresses (i.e. no need for \gls{nat}) and provides a hierarchical way to allocate address prefixes in a way which makes it simple to do route aggregation\footnote{This helps limits the size of the Internet's global routing table!}. + +\fig{ipv6_address_leading_zeros.svg}{ipv6zeroes}{An illustration of an example IPv6 address with leading zeros in the binary rendering} + + + +\section[IPv4]{Internet Protocol v4} \ No newline at end of file diff --git a/img/ipv6/ipv6_address_leading_zeros.svg.png b/img/ipv6/ipv6_address_leading_zeros.svg.png new file mode 100644 index 0000000000000000000000000000000000000000..d21614b5c63fdfff961d0a03ed99572601a660c9 GIT binary patch literal 41725 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 z

*-u*{f|0-~Ry&m*sP!Q1?QY^(ADfPPj=$F#Z5RM0@+LNYrw;reI(=dQBx0kw6A zo<2PDpRp9UDPsX_E|ICf&+LJQSwr?%3mv2L0XW$nizQ<24JVlYdo!B{#~#e1`}0c; z?ZvQD_16;IRqAk8C(Uo!RZdZ@&4$GMr4@g%Ft?GC*fQJ975HmR&qq+O#5pM`ryKG~ zZEV}?v4LQ|ia{w(5ROa|9r-f`@k8L$EV*KR9J@Z;sk-n1;;;SJZ&T2uFgPX1az5v8e`B-=30xYs)V54uw@?O+e&oaELi^7? z`$9EX!4mon|LnYOWS+~L-IF)AjxFg}0J)=M*w^&wyAQPAnmCtn*)b0a0em5wm+EVY zB0_+=AKB36eF;F6Kgxe%14xJG=NXk@fOW*=?7*BhoB}kR*o*6GlJ$EPcTPOxs)kcoq=b@m+U)EGI zKpWYe_*aRogLJW6tiQKMTI@W!*Z9%$bI*`pm(RN*u*li`(Rx{Su8S7w5PS1VHcqDI zApo}!-foMKGCRHo04E$#&?d&*!?6gym^RUn5iQ46OA;5G{ujy?Hmol9H+o1~nS2B* zA1nUOdoZ8ymnVQ>5}E+VEebl*i+!dCpiw430BMCyT&~DyskECiGO^k~L4T zP98g+UV>R~*IO6-f7b%YEB?q!HYAn!OjjZ>xxE->vX}sqIR6K_HQe6Ihvh3&stFd} z#m6gSmQ*7S{I{Dyy0*k<3!NpqhNUep2P&@PbOp7ALvr+sbWI`?+*TGJ0u-kz z;CA)04ve|}0fYV;z0^Wn8L44K8>INbA-qw8Q&Q<6p5Boq!3iwH=h~ye2 z{L=JQu=#I(bH3Vp35jY9>hAiIPUw7*46^N7G8vp+tTvEb$GeFOQmC+0i&RY!wLh<; zji*5*KTDS>vLfFF;bm7Ob5Eqgo$uQUYl%ycHP2k5L1LjIQC{LhEQh$C-C4 z6wh0PU|t8a?OB;`|0g6C!j}ZgL{;z|O!=8Y-Y|%&~metPr4~mLwk7&h$&T(}9}} z5J(utqEiJ4YX@MObH(dI|v;K}uoDGz($lx#p-^NMo zw>|8zm;B$zx_KkCROFIQfLP!!gitAAK*S~@BuK?5XaRpCs|zBy zDpTF5W*kM>&>w?H0KLmB6#*2HQi56{;iwOJ2!9i5KV_l3ShrEwY4-83(js_AUsVqOvuhQ6vZ-_<6%LAM|1QW2#GK

si=Z}n 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 Date: Tue, 18 Jul 2017 23:09:32 +0200 Subject: [PATCH 07/46] Writing ipv6 privacy subsection --- acronyms.tex | 12 ++++++---- chapter/ip.tex | 22 +++++++++++++++++- img/ipv6/Ipv6_header.png | Bin 0 -> 31924 bytes ...svg.png => ipv6_address_leading_zeros.png} | Bin references-wikipedia.bib | 8 +++++++ 5 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 img/ipv6/Ipv6_header.png rename img/ipv6/{ipv6_address_leading_zeros.svg.png => ipv6_address_leading_zeros.png} (100%) diff --git a/acronyms.tex b/acronyms.tex index 4eb4f94..4987899 100644 --- a/acronyms.tex +++ b/acronyms.tex @@ -25,6 +25,7 @@ \newacronym{cwdm}{CWDM}{} \newacronym{db}{DB}{Database} \newacronym{dhcp}{DHCP}{Dynamic Host Control Protocol} +\newacronym{dhcp6}{DHCPv6}{Dynamic Host Control Protocol version 6} \newacronym{dknog}{DKNOG}{Danish Network Operators' Group} \newacronym{dns}{DNS}{Domain Name System} \newacronym{dr}{DR}{Danmarks Radio} @@ -60,16 +61,18 @@ \newacronym{iab}{IAB}{Internet Architecture Board} \newacronym{iana}{IANA}{Internet Assigned Numbers Authority} \newacronym{icann}{ICANN}{Internet Corporation for Assigned Names and Numbers} +\newacronym{icmp}{ICMP}{Internet Control Message Protocoll} +\newacronym{icmp6}{ICMPv6}{Internet Control Message Protocol version 6} \newacronym{ieee}{IEEE}{Institute of Electrical and Electronics Engineers} \newacronym{ietf}{IETF}{Internet Engineering Task Force} \newacronym{igrp}{IGRP}{Interior Gateway Routing Protocol} \newacronym{imap}{IMAP}{Internet Message Access Protocol} \newacronym{ios}{IOS}{Internetwork Operating System} \newacronym{ip}{IP}{Internet Protocol} -\newacronym{ip4}{IPv4}{Internet Protocol v4} -\newacronym{ip6}{IPv6}{Internet Protocol v6} -\newacronym{ipv4}{IPv4}{Internet Protocol v4} -\newacronym{ipv6}{IPv6}{Internet Protocol v6} +\newacronym{ip4}{IPv4}{Internet Protocol version 4} +\newacronym{ip6}{IPv6}{Internet Protocol version 6} +\newacronym{ipv4}{IPv4}{Internet Protocol version 4} +\newacronym{ipv6}{IPv6}{Internet Protocol version 6} \newacronym{irc}{IRC}{Internet Relay Chat} \newacronym{irtf}{IRTF}{Internet Research Task Force} \newacronym{isis}{IS-IS}{Intermediate System to Intermediate System} @@ -133,6 +136,7 @@ \newacronym{sdsl}{SDSL}{Symmetric Digital Subscriber Line} \newacronym{sftp}{SFTP}{Secure Shell File Transfer Protocol} \newacronym{sla}{SLA}{Service Level Agreement} +\newacronym{slaac}{SLAAC}{Stateless Address Autoconfiguration} \newacronym{smtp}{SMTP}{Simpe Mail Transfer Protocol} \newacronym{snmp}{SNMP}{Simple Network Management Protocol} \newacronym{sntp}{SNTP}{Secure Network Time Protocol} diff --git a/chapter/ip.tex b/chapter/ip.tex index 124b8bc..52f80d7 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -6,8 +6,28 @@ \gls{ipv6} came about in 1998 when the original \rfc{2460} was published. It aims to provide globally route-able addresses (i.e. no need for \gls{nat}) and provides a hierarchical way to allocate address prefixes in a way which makes it simple to do route aggregation\footnote{This helps limits the size of the Internet's global routing table!}. -\fig{ipv6_address_leading_zeros.svg}{ipv6zeroes}{An illustration of an example IPv6 address with leading zeros in the binary rendering} +\wikicommons[An illustration of an example IPv6 address with leading zeros in the binary rendering]{ipv6_address_leading_zeros} +\subsection{IP to client} +Several ways to assign a client an address exists. +\begin{itemize} + \item Let the client handle it itself (i.e. \gls{dhcp} server present): \gls{slaac}. + \begin{itemize} + \item \gls{icmp6} router discovery messages is used to detect info 'bout the connected network segment. + \item Upon \textit{link up} client sends link-local solicitation multicast req. for network parameters, + \item router \textit{responds with} router adv. packet cont. \gls{ip} cfg parameters. + \end{itemize} + \item Let the \gls{dhcp} server assign \textit{partial} info to the client. + \item Let the \gls{dhcp} server assign \textit{every} info to the client. +\end{itemize} + +\textbf{Privacy} is a large concern regarding \gls{ipv6} because of the globally unique address the client posses. Implementation to do privacy regarding the host bits of an \gls{ip6} has been done to protect the clients (and users) from being tracked. Alas, if the \gls{isp} do static prefix assignments to end users. This privacy protection may be somewhat unusable. As the network prefix will always remain the same. Regardless of the host-bits being changed often. + +\subsection{Packet Header} + +\wikicommons{Ipv6_header}} + +\subsection{Multicast} \section[IPv4]{Internet Protocol v4} \ No newline at end of file diff --git a/img/ipv6/Ipv6_header.png b/img/ipv6/Ipv6_header.png new file mode 100644 index 0000000000000000000000000000000000000000..5bb2a84263dbf6f07291ee3d6da8d78d8f760ea1 GIT binary patch literal 31924 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 literal 0 HcmV?d00001 diff --git a/img/ipv6/ipv6_address_leading_zeros.svg.png b/img/ipv6/ipv6_address_leading_zeros.png similarity index 100% rename from img/ipv6/ipv6_address_leading_zeros.svg.png rename to img/ipv6/ipv6_address_leading_zeros.png diff --git a/references-wikipedia.bib b/references-wikipedia.bib index 2b626d1..45e0651 100644 --- a/references-wikipedia.bib +++ b/references-wikipedia.bib @@ -72,4 +72,12 @@ year = "2017", howpublished = {\url{http://en.wikipedia.org/w/index.php?title=Border\%20Gateway\%20Protocol&oldid=785954244}}, note = "[Online; accessed 18-June-2017]" +} + +@misc{ wiki:IPv6, + author = "Wikipedia", + title = "{IPv6} --- {W}ikipedia{,} The Free Encyclopedia", + year = "2017", + howpublished = {\url{http://en.wikipedia.org/w/index.php?title=IPv6&oldid=790986104}}, + note = "[Online; accessed 18-July-2017]" } \ No newline at end of file From 479d38393b6dbe282643ef1defdd772014165033 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 00:22:39 +0200 Subject: [PATCH 08/46] ipv6 format --- chapter/ip.tex | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/chapter/ip.tex b/chapter/ip.tex index 52f80d7..f50dd72 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -22,11 +22,20 @@ Several ways to assign a client an address exists. \item Let the \gls{dhcp} server assign \textit{every} info to the client. \end{itemize} -\textbf{Privacy} is a large concern regarding \gls{ipv6} because of the globally unique address the client posses. Implementation to do privacy regarding the host bits of an \gls{ip6} has been done to protect the clients (and users) from being tracked. Alas, if the \gls{isp} do static prefix assignments to end users. This privacy protection may be somewhat unusable. As the network prefix will always remain the same. Regardless of the host-bits being changed often. +\textbf{Privacy} is a large concern regarding \gls{ipv6} because of the globally unique address the client posses. + +Implementation to do privacy regarding the host bits of an \gls{ip6} has been done to protect the clients (and users) from being tracked. Alas, if the \gls{isp} do static prefix assignments to end users. This privacy protection may be somewhat unusable. As the network prefix will always remain the same. Regardless of the host-bits being changed often. + +Have 3 different forms: +\begin{enumerate} + \item 2001:0db8:0000:0000:0000:ff00:0042:8329, + \item 2001:db8:0:0:0:ff00:42:8329, {\footnotesize (i.e. remove leading zeroes per group delimited by colon)} + \item 2001:db8::ff00:42:8329. {\footnotesize (i.e. remove groups containing all zeroes in succession after each other) (only done \textit{once!}} +\end{enumerate} \subsection{Packet Header} -\wikicommons{Ipv6_header}} +\wikicommons{Ipv6_header} \subsection{Multicast} From 73dcd9c45f1de15294ae1136387e011e7678159a Mon Sep 17 00:00:00 2001 From: Christoffer Date: Tue, 18 Jul 2017 22:27:10 +0000 Subject: [PATCH 09/46] Update frontpage.tex --- frontpage.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontpage.tex b/frontpage.tex index 002b9a5..4bc4b0d 100644 --- a/frontpage.tex +++ b/frontpage.tex @@ -5,7 +5,7 @@ \def\theinstitution{ZBC} \author{chhan11 } -\def\thesupervisor{Teacher Mikkel \textsc{Kr\char"00F8ll}} +\def\thesupervisor{none} \def\theversion{v0.3.0} \date{{\footnotesize Last release \theversion\\% From 73936773812541af94ecd9e055ab5ee3ec07632f Mon Sep 17 00:00:00 2001 From: Christoffer Date: Tue, 18 Jul 2017 22:27:44 +0000 Subject: [PATCH 10/46] Update acronyms.tex --- acronyms.tex | 1 - 1 file changed, 1 deletion(-) diff --git a/acronyms.tex b/acronyms.tex index 4eb4f94..920ce99 100644 --- a/acronyms.tex +++ b/acronyms.tex @@ -90,7 +90,6 @@ \newacronym{metdst}{MET-DST}{Middle European Time Daylight Saving Time} \newacronym{mit}{MIT}{Massachusetts Institute of Technology} \newacronym{mhsrp}{MHSRP}{Multigroup Hot-Standby Routing Protocol} -\newacronym{mkc}{MKC}{Mikkel Kr\char"00F8ll} \newacronym{mpls}{MPLS}{Multiprotocol Label Switching} \newacronym{msg}{msg}{message} \newacronym{mst}{MST}{Multiple Spanning Tree} From 6f7793712b878098f58c4a2e2fd9c03152f9018a Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 01:10:24 +0200 Subject: [PATCH 11/46] Writing ipv6 address types --- acronyms.tex | 1 + chapter/ip.tex | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/acronyms.tex b/acronyms.tex index 4987899..3597e53 100644 --- a/acronyms.tex +++ b/acronyms.tex @@ -23,6 +23,7 @@ \newacronym{cix}{CIX}{Commercial Internet Exchange} \newacronym{cph}{CPH}{Copenhagen} \newacronym{cwdm}{CWDM}{} +\newacronym{dad}{DAD}{Duplicate Address Detection} \newacronym{db}{DB}{Database} \newacronym{dhcp}{DHCP}{Dynamic Host Control Protocol} \newacronym{dhcp6}{DHCPv6}{Dynamic Host Control Protocol version 6} diff --git a/chapter/ip.tex b/chapter/ip.tex index f50dd72..8bbb8dc 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -37,6 +37,17 @@ Have 3 different forms: \wikicommons{Ipv6_header} +\subsection{Address Types} + +\begin{itemize} + \item \itemhead[]{Link-Local} + \begin{itemize} + \item Address assigned from the fe80::/7 prefix. + \item Either derived with the EUI-64\footnote{The EUI-64 involves the MAC address and injecting fffe into the middle making it 64 bits and using this as host bits} method or randomly selected. Then assigned after \gls{dad} has been run on the network segment. + \end{itemize} + \item \itemhead[]{Global Addressing} +\end{itemize} + \subsection{Multicast} \section[IPv4]{Internet Protocol v4} \ No newline at end of file From 7abce579c58ef3334e27a843a7cef4a78b4640f7 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 20:29:24 +0200 Subject: [PATCH 12/46] Global v6 address types --- chapter/ip.tex | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/chapter/ip.tex b/chapter/ip.tex index 8bbb8dc..7674a74 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -46,8 +46,22 @@ Have 3 different forms: \item Either derived with the EUI-64\footnote{The EUI-64 involves the MAC address and injecting fffe into the middle making it 64 bits and using this as host bits} method or randomly selected. Then assigned after \gls{dad} has been run on the network segment. \end{itemize} \item \itemhead[]{Global Addressing} + \begin{itemize} + \item Address types + \begin{itemize} + \item Unicast: Identifies each \gls{nic}. + \item Anycast: Identifies a group of \glspl{nic} belonging to the same group and providing the same services/content/applications. Nearest one to source is used. + \item Multicast: Used to deliver content to multiple \glspl{nic} at once. Traffic is a single flow from the source (i.e. not multiple unicast streams). + \item Broadcast: \textit{Not} implemented. Replaced by use of multicast groups. + \end{itemize} + \end{itemize} + \begin{itemize} + \item W + \end{itemize} \end{itemize} \subsection{Multicast} +\subsection{AAAA} + \section[IPv4]{Internet Protocol v4} \ No newline at end of file From ef9ac2a3db3eab61f6a6b960b8e94a407a63b381 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 20:42:49 +0200 Subject: [PATCH 13/46] ip6.arpa --- acronyms.tex | 1 + chapter/ip.tex | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/acronyms.tex b/acronyms.tex index 3597e53..2f847aa 100644 --- a/acronyms.tex +++ b/acronyms.tex @@ -29,6 +29,7 @@ \newacronym{dhcp6}{DHCPv6}{Dynamic Host Control Protocol version 6} \newacronym{dknog}{DKNOG}{Danish Network Operators' Group} \newacronym{dns}{DNS}{Domain Name System} +\newacronym{dns6}{DNSv6}{Domain Name System version 6} \newacronym{dr}{DR}{Danmarks Radio} \newacronym{dsl}{DSL}{Digital Subscriber Line} \newacronym{dst}{dst}{destination} diff --git a/chapter/ip.tex b/chapter/ip.tex index 7674a74..d462aff 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -64,4 +64,10 @@ Have 3 different forms: \subsection{AAAA} +\gls{dns6} had 2 running proposals when first proposed, \rfc{2874} (1st), \rfc{3364} (later discussion), and \rfc{3363} thou deprecated this proposal to experimental status. + +The winning one was \rfc{3596} with the idea of doing \textit{quad}-A records and hierarchically divided by \textit{nibble} {\small (i.e. 4 bits)}. + +The idea is fx. \texttt{2001:db8:ef::2} is noted in ip6.arpa as \texttt{2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.f.e.0.0.8.b.d.0.1.0.0.2.ip6.arpa}. {\small Note the used of '.' between \textit{each} \textit{hexadecimal} character used, and that \textit{all zeroes} has been included. ip6.arpa does not allow any characters to be omitted from the original full-length \gls{ip6} address.}\footnote{Found description \href{https://stackoverflow.com/q/6619682}{here} on stackoverflow.com/q/6619682.} + \section[IPv4]{Internet Protocol v4} \ No newline at end of file From 3f23435b40a65e579c5fb826b950edaba1436db1 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 20:49:29 +0200 Subject: [PATCH 14/46] Fix wrong link-local scope --- chapter/ip.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chapter/ip.tex b/chapter/ip.tex index d462aff..6542ca3 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -42,7 +42,7 @@ Have 3 different forms: \begin{itemize} \item \itemhead[]{Link-Local} \begin{itemize} - \item Address assigned from the fe80::/7 prefix. + \item Address assigned from the fe80::/10 prefix. \item Either derived with the EUI-64\footnote{The EUI-64 involves the MAC address and injecting fffe into the middle making it 64 bits and using this as host bits} method or randomly selected. Then assigned after \gls{dad} has been run on the network segment. \end{itemize} \item \itemhead[]{Global Addressing} From 9b695eb787324a4f68d1585e95906766fac13c51 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 23:01:32 +0200 Subject: [PATCH 15/46] Fix ip6 notation to monospace font --- chapter/ip.tex | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/chapter/ip.tex b/chapter/ip.tex index 6542ca3..74aaf24 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -28,9 +28,9 @@ Implementation to do privacy regarding the host bits of an \gls{ip6} has been do Have 3 different forms: \begin{enumerate} - \item 2001:0db8:0000:0000:0000:ff00:0042:8329, - \item 2001:db8:0:0:0:ff00:42:8329, {\footnotesize (i.e. remove leading zeroes per group delimited by colon)} - \item 2001:db8::ff00:42:8329. {\footnotesize (i.e. remove groups containing all zeroes in succession after each other) (only done \textit{once!}} + \item \texttt{2001:0db8:0000:0000:0000:ff00:0042:8329}, + \item \texttt{2001:db8:0:0:0:ff00:42:8329}, {\footnotesize (i.e. remove leading zeroes per group delimited by colon)} + \item \texttt{2001:db8::ff00:42:8329}. {\footnotesize (i.e. remove groups containing all zeroes in succession after each other) (only done \textit{once!}} \end{enumerate} \subsection{Packet Header} @@ -42,8 +42,20 @@ Have 3 different forms: \begin{itemize} \item \itemhead[]{Link-Local} \begin{itemize} - \item Address assigned from the fe80::/10 prefix. + \item Address assigned from the \texttt{fe80::/10} prefix. \item Either derived with the EUI-64\footnote{The EUI-64 involves the MAC address and injecting fffe into the middle making it 64 bits and using this as host bits} method or randomly selected. Then assigned after \gls{dad} has been run on the network segment. + \item \itemhead[]{Unique Link Local}\cite{wiki:Unique_local_address} + \begin{itemize} + \item Defined as block \texttt{fc00::/7}. See \rfc{4193}. + \item \gls{ula} is \glspl{ip6} counter-part to \glspl{ip4} \rfc{1918} address space. + \item Only usable within a private network. + \item Divided into 2 /8 \gls{ip6} blocks. + \begin{enumerate} + \item \texttt{fc00::/8} -- Not \textit{yet} officially allocated/defined by the \gls{ietf}. + \item \texttt{fd..::/8} -- + \end{enumerate} + \end{itemize} + \item \itemhead[]{Solicited-node multicast address} \end{itemize} \item \itemhead[]{Global Addressing} \begin{itemize} From 73007a105f7fe0d8bf8e4006cc0b615f6f240c34 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 23:01:48 +0200 Subject: [PATCH 16/46] added citation --- chapter/ip.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chapter/ip.tex b/chapter/ip.tex index 74aaf24..c30a599 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -4,7 +4,7 @@ \gls{ipv6} has recently been defined in an updated \rfc{8200} which obsoletes several of the older \gls{rfc} documents regarding \gls{ipv6}. -\gls{ipv6} came about in 1998 when the original \rfc{2460} was published. It aims to provide globally route-able addresses (i.e. no need for \gls{nat}) and provides a hierarchical way to allocate address prefixes in a way which makes it simple to do route aggregation\footnote{This helps limits the size of the Internet's global routing table!}. +\gls{ipv6} came about in 1998 when the original \rfc{2460} was published. It aims to provide globally route-able addresses (i.e. no need for \gls{nat}) and provides a hierarchical way to allocate address prefixes in a way which makes it simple to do route aggregation\footnote{This helps limits the size of the Internet's global routing table!}.\cite{wiki:IPv6} \wikicommons[An illustration of an example IPv6 address with leading zeros in the binary rendering]{ipv6_address_leading_zeros} From df217ca62323a0faecf407e041ab661bd7849ab4 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 23:02:13 +0200 Subject: [PATCH 17/46] Removed subsection multicast --- chapter/ip.tex | 5 ----- 1 file changed, 5 deletions(-) diff --git a/chapter/ip.tex b/chapter/ip.tex index c30a599..f9183bd 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -67,13 +67,8 @@ Have 3 different forms: \item Broadcast: \textit{Not} implemented. Replaced by use of multicast groups. \end{itemize} \end{itemize} - \begin{itemize} - \item W - \end{itemize} \end{itemize} -\subsection{Multicast} - \subsection{AAAA} \gls{dns6} had 2 running proposals when first proposed, \rfc{2874} (1st), \rfc{3364} (later discussion), and \rfc{3363} thou deprecated this proposal to experimental status. From b7e2f7bc77f364e2e42dd9ef03e588d43fd6c7a9 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 23:08:07 +0200 Subject: [PATCH 18/46] ip6 ULA --- acronyms.tex | 1 + chapter/ip.tex | 2 +- references-wikipedia.bib | 8 ++++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/acronyms.tex b/acronyms.tex index 2f847aa..12eef2f 100644 --- a/acronyms.tex +++ b/acronyms.tex @@ -160,6 +160,7 @@ \newacronym{tosdr}{ToS;DR}{Terms of Service; Didn't Read} \newacronym{udld}{UDLD}{Unidirectional Link Detection} \newacronym{udp}{UDP}{User Datagram Protocol} +\newacronym{ula}{ULA}{Unique Local Address} \newacronym{utc}{UTC}{Coordinated Universal Time} \newacronym{vlan}{VLAN}{Virtual Local Area Network} \newacronym{vpn}{VPN}{Virtual Private Network} diff --git a/chapter/ip.tex b/chapter/ip.tex index f9183bd..f1b0d13 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -52,7 +52,7 @@ Have 3 different forms: \item Divided into 2 /8 \gls{ip6} blocks. \begin{enumerate} \item \texttt{fc00::/8} -- Not \textit{yet} officially allocated/defined by the \gls{ietf}. - \item \texttt{fd..::/8} -- + \item \texttt{fd00::/8} -- Defined as /48 prefixes. The last 40 bits is randomly generated and appended to the first 8 significant bits {\small (i.e. \texttt{0xFD} aka. \texttt{11111101})}. \end{enumerate} \end{itemize} \item \itemhead[]{Solicited-node multicast address} diff --git a/references-wikipedia.bib b/references-wikipedia.bib index 45e0651..c28f582 100644 --- a/references-wikipedia.bib +++ b/references-wikipedia.bib @@ -80,4 +80,12 @@ year = "2017", howpublished = {\url{http://en.wikipedia.org/w/index.php?title=IPv6&oldid=790986104}}, note = "[Online; accessed 18-July-2017]" +} + +@misc{ wiki:Plagiarism, + author = "Wikipedia", + title = "{Plagiarism} --- {W}ikipedia{,} The Free Encyclopedia", + year = "2017", + howpublished = {\url{http://en.wikipedia.org/w/index.php?title=Plagiarism&oldid=791022465}}, + note = "[Online; accessed 19-July-2017]" } \ No newline at end of file From b3c88a29bb254bdfd31c948640604d187d9cc891 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 19 Jul 2017 23:35:33 +0200 Subject: [PATCH 19/46] ip6 Solicited-node multicast address --- acronyms.tex | 1 + chapter/ip.tex | 8 +++++++- references-wikipedia.bib | 14 +++++++++++--- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/acronyms.tex b/acronyms.tex index 12eef2f..72651b1 100644 --- a/acronyms.tex +++ b/acronyms.tex @@ -100,6 +100,7 @@ \newacronym{msg}{msg}{message} \newacronym{mst}{MST}{Multiple Spanning Tree} \newacronym{nac}{NAC}{Network Admission Control} +\newacronym{nd}{ND}{Neighbor Discovery} \newacronym{nlri}{NLRI}{Network Layer Reachability Information} \newacronym{nms}{NMS}{Network Management Software} \newacronym{nsa}{NSA}{National Security Agency} diff --git a/chapter/ip.tex b/chapter/ip.tex index f1b0d13..1b80b10 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -55,7 +55,13 @@ Have 3 different forms: \item \texttt{fd00::/8} -- Defined as /48 prefixes. The last 40 bits is randomly generated and appended to the first 8 significant bits {\small (i.e. \texttt{0xFD} aka. \texttt{11111101})}. \end{enumerate} \end{itemize} - \item \itemhead[]{Solicited-node multicast address} + \item \itemhead[]{Solicited-node multicast address}\cite{wiki:Solicited-node_multicast_address} + \begin{itemize} + \item Consist of the prefix \texttt{ff02::1:ff00:0/104} for the first 104 bits. + \item The last 24 bits represents the target address within the prefix. + \item Solicited-node multicast address is segment only traffic. I.e. the traffic does not flow \textit{between \gls{l3} \gls{ip} segments. + \item Used in combination with \gls{nd} to replace \glspl{ip4} \gls{arp} functionality. + \end{itemize} \end{itemize} \item \itemhead[]{Global Addressing} \begin{itemize} diff --git a/references-wikipedia.bib b/references-wikipedia.bib index c28f582..bdfd516 100644 --- a/references-wikipedia.bib +++ b/references-wikipedia.bib @@ -82,10 +82,18 @@ note = "[Online; accessed 18-July-2017]" } -@misc{ wiki:Plagiarism, +@misc{ wiki:Unique_local_address, author = "Wikipedia", - title = "{Plagiarism} --- {W}ikipedia{,} The Free Encyclopedia", + title = "{Unique local address} --- {W}ikipedia{,} The Free Encyclopedia", year = "2017", - howpublished = {\url{http://en.wikipedia.org/w/index.php?title=Plagiarism&oldid=791022465}}, + howpublished = {\url{http://en.wikipedia.org/w/index.php?title=Unique\%20local\%20address&oldid=791265343}}, + note = "[Online; accessed 19-July-2017]" +} + +@misc{ wiki:Solicited-node_multicast_address, + author = "Wikipedia", + title = "{Solicited-node multicast address} --- {W}ikipedia{,} The Free Encyclopedia", + year = "2017", + howpublished = {\url{http://en.wikipedia.org/w/index.php?title=Solicited-node\%20multicast\%20address&oldid=787116453}}, note = "[Online; accessed 19-July-2017]" } \ No newline at end of file From e55901003cb49b5bb570f440c3bfdb4a4319f4bc Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sat, 22 Jul 2017 21:56:39 +0200 Subject: [PATCH 20/46] Bumped to 0.3.1 --- CHANGELOG.md | 3 ++- README.md | 2 +- frontpage.tex | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 311b494..d234408 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -49,7 +49,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Initial version - Section: Spanning Tree -[Unreleased]: https://gitlab.com/netravnen/CiscoLabNotes/compare/v0.3.0...HEAD +[Unreleased]: https://gitlab.com/netravnen/CiscoLabNotes/compare/v0.3.1...HEAD +[0.3.1]: https://gitlab.com/netravnen/CiscoLabNotes/compare/v0.3.0...v0.3.1 [0.3.0]: https://gitlab.com/netravnen/CiscoLabNotes/compare/v0.2.2...v0.3.0 [0.2.2]: https://gitlab.com/netravnen/CiscoLabNotes/compare/v0.2.1...v0.2.2 [0.2.1]: https://gitlab.com/netravnen/CiscoLabNotes/compare/v0.2.0...v0.2.1 diff --git a/README.md b/README.md index 8f4bc9b..1786535 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [![GitHub tag](https://img.shields.io/github/tag/netravnen/CiscoLabNotes.svg)](https://gitlab.com/netravnen/CiscoLabNotes) [![license](https://img.shields.io/github/license/netravnen/CiscoLabNotes.svg)](https://gitlab.com/netravnen/CiscoLabNotes/blob/master/LICENSE.md) -[![GitHub commits](https://img.shields.io/github/commits-since/netravnen/CiscoLabNotes/v0.3.0.svg)](https://gitlab.com/netravnen/CiscoLabNotes/compare/v0.3.0...HEAD) +[![GitHub commits](https://img.shields.io/github/commits-since/netravnen/CiscoLabNotes/v0.3.1.svg)](https://gitlab.com/netravnen/CiscoLabNotes/compare/v0.3.1...HEAD) # URLs - [Gitlab][repo-origin] diff --git a/frontpage.tex b/frontpage.tex index 4bc4b0d..272c9b1 100644 --- a/frontpage.tex +++ b/frontpage.tex @@ -7,7 +7,7 @@ \author{chhan11 } \def\thesupervisor{none} -\def\theversion{v0.3.0} +\def\theversion{v0.3.1} \date{{\footnotesize Last release \theversion\\% \texttt{\color{Gray}Generated \utccurrenttime}}} From 807925dd54f08b9e2659719e0a9689c2d45043ae Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sat, 22 Jul 2017 20:00:27 +0000 Subject: [PATCH 21/46] Update CHANGELOG.md --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d234408..dc979b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Removed -lw from all tags after git history rewrite was done to remove a pdf file - Updated changelog with new tagnames +## [0.3.1] +## Removed +- Removed suporvisor from frontpage + +## [0.3.0] + ## [0.2.2] - 2017-06-05 ### Added - Section: NTP, SNTP From 3f319cd3d3cb699bc490867be6d0bfd4707d1758 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sat, 22 Jul 2017 20:01:18 +0000 Subject: [PATCH 22/46] Update CHANGELOG.md --- CHANGELOG.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dc979b9..eda9923 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - GLBP - VRRP +## [0.3.1] - 2017-07-19 +## Removed +- Removed suporvisor from frontpage + ## [0.3.0] - 2017-06-06 ### Added - DORA sentence to DCHP section @@ -27,12 +31,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Removed -lw from all tags after git history rewrite was done to remove a pdf file - Updated changelog with new tagnames -## [0.3.1] -## Removed -- Removed suporvisor from frontpage - -## [0.3.0] - ## [0.2.2] - 2017-06-05 ### Added - Section: NTP, SNTP From 22cfc73616077f5aa34aac75e37d9067f5a33284 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 18:10:51 +0200 Subject: [PATCH 23/46] ip6 Packet Headers --- chapter/ip.tex | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/chapter/ip.tex b/chapter/ip.tex index 1b80b10..527cc66 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -37,6 +37,17 @@ Have 3 different forms: \wikicommons{Ipv6_header} +\begin{enumerate} + \item Version -- 1-byte field containing '6'. + \item Traffic Class -- 2-bytes hex notation for traffic class. + \item Flow label -- 5-bytes. + \item Payload length -- 4-bytes unsigned integer, which is the rest of the packet that follows the IPv6 header, in octets. + \item Next header -- 4-bytes selector. Identifies the type of header that immediately follows the IPv6 header. Uses the same values as the IPv4 protocol field. + \item Hop limit -- 32-bytes unsigned integer. Decremented by one by each node that forwards the packet. The packet is discarded if the hop limit is decremented to zero. + \item Source address -- 32-bytes. + \item Destination address -- 32-bytes. The intended recipient is not necessarily the recipient if an optional routing header is present. +\end{enumerate} + \subsection{Address Types} \begin{itemize} From 8e7bc2f81eedd037f755a33e2be6432f4c664647 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 18:14:29 +0200 Subject: [PATCH 24/46] ip6 packet headers and extensions headers including citations to oracle sys adm guide for ip services --- chapter/ip.tex | 29 ++++++++++++++++++++--------- img/ipv6/ipv6-packet-header.png | Bin 0 -> 31919 bytes references-websites.bib | 9 +++++++++ 3 files changed, 29 insertions(+), 9 deletions(-) create mode 100644 img/ipv6/ipv6-packet-header.png diff --git a/chapter/ip.tex b/chapter/ip.tex index 527cc66..aae7ecf 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -33,19 +33,30 @@ Have 3 different forms: \item \texttt{2001:db8::ff00:42:8329}. {\footnotesize (i.e. remove groups containing all zeroes in succession after each other) (only done \textit{once!}} \end{enumerate} -\subsection{Packet Header} +\subsection{Packet Headers}\cite{IPv6Pack77:online} \wikicommons{Ipv6_header} \begin{enumerate} - \item Version -- 1-byte field containing '6'. - \item Traffic Class -- 2-bytes hex notation for traffic class. - \item Flow label -- 5-bytes. - \item Payload length -- 4-bytes unsigned integer, which is the rest of the packet that follows the IPv6 header, in octets. - \item Next header -- 4-bytes selector. Identifies the type of header that immediately follows the IPv6 header. Uses the same values as the IPv4 protocol field. - \item Hop limit -- 32-bytes unsigned integer. Decremented by one by each node that forwards the packet. The packet is discarded if the hop limit is decremented to zero. - \item Source address -- 32-bytes. - \item Destination address -- 32-bytes. The intended recipient is not necessarily the recipient if an optional routing header is present. + \item \textbf{Version} -- 1-byte field containing '6'. + \item \textbf{Traffic Class} -- 2-bytes hex notation for traffic class. + \item \textbf{Flow label} -- 5-bytes. + \item \textbf{Payload length} -- 4-bytes unsigned integer, which is the rest of the packet that follows the IPv6 header, in octets. + \item \textbf{Next header} -- 4-bytes selector. Identifies the type of header that immediately follows the IPv6 header. Uses the same values as the IPv4 protocol field. + \item \textbf{Hop limit} -- 32-bytes unsigned integer. Decremented by one by each node that forwards the packet. The packet is discarded if the hop limit is decremented to zero. + \item \textbf{Source address} -- 32-bytes. + \item \textbf{Destination address} -- 32-bytes. The intended recipient is not necessarily the recipient if an optional routing header is present. +\end{enumerate} + +\subsection[EH]{Extension Headers}\cite{IPv6Pack77:online} + +\begin{enumerate} + \item \textbf{Routing} -- Extended routing, such as IPv4 loose source route + \item \textbf{Fragmentation} -- Fragmentation and reassembly + \item \textbf{Authentication} -- Integrity and authentication, and security + \item \textbf{Encapsulating Security Payload} -- Confidentiality + \item \textbf{Hop-by-Hop options} -- Special options that require hop-by-hop processing + \item \textbf{Destination options} -- Optional information to be examined by the destination node \end{enumerate} \subsection{Address Types} diff --git a/img/ipv6/ipv6-packet-header.png b/img/ipv6/ipv6-packet-header.png new file mode 100644 index 0000000000000000000000000000000000000000..2d3bdb0f387672838cc6795ab0516548dabef764 GIT binary patch literal 31919 zcmZ5|bx_n_*e~6k3oPAIOD|H=A<_y6($Yvu=hCor2ug#X0@9@jERA&hXz5ZwO6j=A z_q{WB=KjGj?6BY6J>PSl=Tpzd>1wMH6VMZ&p`j6Ls4MHEp<(Qyp`pj&VSq>4bbghA zU+7-?YKmx|N1;E#A6WJZPZZG5YLf|Xtgyk~`0nZ^UTA1Eod15%HS{@-z=IUtD#qRh zZg$?jR-P}>)I49leC6ff=578I4?HD^OG8<~(9irJ@1^(Coi9ye$%nIa8_46}jX(Q8 ze*c*I;d7WpK=r(|H-XAGUfN~p$B(>6?#_s>U$L8UFtBDHg;|m##PR=poe6kmPpj~J z0ZU}9eWA9`ta{8>&a=arb4@;kMiGxS(w#vc_CLRw|Nq||53&nFu73Xh@zuk_qglnt zS{lmCe7}l{2t5C7Qlu_B=Wf}3xYAKgOsk0ZMiEU%OY=m7MhHBMQQF64vB|Z<&%|Y= z{RP9FCmufj+EWI>NV4D9nVuH|snWi`FANhp5QFa|-RA3F?!_5yuiW4H{`m5`;%UXR z54uJA?=?LRD#$*Dxe8T_J5BTGm#W86a5~L?KCs}7Bx4(~4qrI2yFA%?C+_UC-h*G@ zbZi7G2s+V-z#+C9&L-#A&nYY{WL1jZ94jbjxauaAcNjAuZCVh-z`%&75qMr}-OFoG zHWw}Z6nyeYE}9Pl4(xidYehvxadB~FrXf#ZD zgEU4|_IL@$}YT zKd6%y@$o&l8m2V&!qxT1Q+YvE0n7A{zsMze59#i81h;j3XxDv<-BKqBgs$k27wKf? z?=2(Ay1up1V@JTaHPR)DOG+pyD1zRHEPeGooT)PPJzU-jTj#r)g7JFw_Vx-p(r4gx z7@*u~bLUzT_&VJG{`${(w%X#WPadFusE5<;T>{&05L@~?az0o1?Pk9@5w`#xth*eo1fyg11aH{xFmEBIe6ea zC!VEKz4u+KRrk1UqXSrZu8U1ia^b?Z&Ug=_)tjAXKhM|OkL5|9Zw{t|02l_eHP{MMivuZMenJQ>aN4|aaEAZ_)I=E zY%C%s8HjwZS9ro&cg$F}FgqI?25-IJ@%p#xGYW>0u5UC4-O|~~EBv+1tAU5TMESe4 zG&Ip&?oL(jBN}^FBwd%aV!7<}yEINr@?U=IJYQbS(`^d5y#j^D-5}#)mLL`J@Ak)~ zM`L1OwBO%db3V>eR#DMY$9bPM3qHx(e}+{rzRpk~`{nNV!KHADqi_BSyV)rzVg166y1Ha+ zgX>iSV<>{0U{GlprCmqUua}^o8~BJdbvrs{`D&@9Ht6z% zgz;g6^DGG}-2JlP{<46GPDIRYIX6u^@1by4R4k!b(~ng_V|m6_2_AdNIh`FGf0a5| z;P!CNP$plq(|-?|9Kby>sk0p{kiXxbuUAr1;?{m^+@TQB9YZ=bXF1HxtSRE6D(KK% zsx=bzV|A(3tK)L}UBKU8Rc5VeiZtDPiFD~%cBIR~K}T6h%l4T!CP!J6Y%g{lA~>9n zIR5YAlR0m$Z;!lt{6+x0>TKZQx0s}#bG7XDm|kn2UwloX6W#8LA_NPhSs*8i6PHnI z>@tdITr`Dsmo2SG*Vt-yF6(OxjRhVW9nBz(`f|Yb>1PgID%UBfFscq%+O$6;rM+J_ zm`TVYlJnW0v+j-eKrYo-Vg4BL%A0`tIsb5ts_gla43(<0L?Lp^#b$OyuJEcq!dHLs~;&7@Ml+V4`V`j0{Ud&c((e*Iko>i zh5Tm-C1u26YGiS7v7dAM$RZ`THdH<&m!khG4~HYp(*73ToB3{BdD%kZ z;>gvm7i!AN%Kbfaqhv@PdC$#(!E|o?N(ufba2WW&UHiP$dj01h!Cc`P#ZQr!-+Ko7 zb)d(hm$8xUC)rz8q=5CndFaQvQ@FWY$viC>&$tt+;9P zD@L6Z3iJ5`gL3VOH1YZeV>}&?1W2Q}qpWI}?uE8xN#FESk&}n~;dz%*xnWS004mYb z8m|NhoPGyAE#P>)x7J){`iAziS!9*#35bGefn<$dVI#`plr3NgLdT$3vU=Wu3a2^nt} zp8?D)GAiot?;r1!LOVikk91CXPM%dgZzP}Cz@>UV$ad6UNZxa`S0 zJ33nV{`Za=6kC?l6-GkJ)R)N*JWq3_ypEKvP8L9=2QQgAG5h(&k6=xB_w!w9Hu|$0ra-`)s4B9x`MB@r@;B)hkb(z+Eu#iyoKBAGJ#o2k6I*cFApZAvw>@(CQM}oI8D>ti)W)PT z%g2jV2+zWa?fJ;`W#E0Rs;4!^u&Lu3c_g;&{Dz)YeXx!{-sra( zFMI4lr^5!yEQ8CK1&Zo{;Rnsk2W1rbSTVQT@7!YDE(l#ys3IE$UwpBgyuf&-iK#eq zaIpyg+Zm4O!A63aLB{m2kCG+4P?jC}`VusdF_ZoeXER)MTN!zE=> z{z%4}gCV&;S8L<$4%3UpWHKvD9fEO=)P*xM?< zVW}#lZP~k<{9%Nw`dLOFE!AZ}54t@W5)$_2XnT@uv^n(V@cOXBqS1+ZG%O)HG7{Vg zcDLoW0s4VdcC}PC6?fQDW}9ibcAiM`i2n zM%Iz-UOU=J*co0u_M76)GZ{h_`5zSUVPNCGe=hKsBaF0Hmc!S6P+X1xgCF}#bcybZj0o{-KoT{;LaR6F90+i)+XQ*E!o=R}| zMGXXtxF{EUE}(7k43hB}6>HcF4JRCZe!-iM&|%euIa0Nv8h;XL<3U+d_{BPt$o20z_Npy(s8tj8JnD+CLCuRZJZwAF29RKX&(Hk0kbwFDi(0HF(uFy^Fy6gZ zD@SB4nFrD(B&YZoAw$y3A4$$Z*j@LWM4-hKkczl)vsGOzr_a~thdPy(4Ff}|>NGc0 zp_`cs#*e=G9Hj93QL5qHk6Gq#MJV2An1>^ThYK~_{KQ{%<1;m{m5R76%LGxYgkGM! zgp%TR${!0(5JPDYlw?{xpaa*{p|^xP_;`4ojqZ0>fA>O-K9Kc$P)KZ) zyl{|ln*IRFoc_sSz+d%2vF@qe$6+kO%yL25SpXYwmKdn>Soy5??i7S3O$nN}Wvioj znI-KwZLcbfWb7HSlnK6U5%NN|8wVhal-~mWI$|x}!{1AMK^al5MeU z;8~3kfHWM@`qcFFnnavbY)?XN$#lp{f z@=p9miz7R0W;ZwxTVRE|ZPo{iD`4`r1ok7M_M^IY6Kc#J+ub;DytCbjh@Y{&GW5j) z9<89%elXAH7xf(3u*qvO$`=U4;Dw|vz(X|MyWw%Kp%2tgFJ2_)%U&|`%6qIU%fx1Z zDy67oxsxp^7>0%F1-vv|1F&6eB~D{;$H~a_#Q{C`1R6fglv2*xgeWwh96H*xXeWKVgqs!tW_u9iN~2% zoR?aJ*$qEFr{vaWBuH_$B;-TB{ImCQcs6OjwWtU% z|K{>bRwgGWTL3umJW_XH%8Jj=Y02ng8fU5qGNL``{D-dz(d4Q6MQTbFD}RJ(3A<#} zOr=??NWHs3C7HjnKr)i90DC9{tS*7MB?)5QYjV}^sN?>+BbQPa|AM{{ALe*NKGy4? z#}wJfDDAtd32@?I!hHjkm3xv zIqruV9Z4@`O_56~s)@~jQ~mR>t_=eXGy z(7yptz7l#bn=||toIkGMt3U5GGwZY>(pQgmsgp!5ST&1%4i=`@pPwjhz;%LMa9eJmSAjc#Y zM9BE|kKPYF2C&_B&j zlxGtBdOOHnP_y=~*(L6a53z!hmTgoPRtP@_edDfl^8oL zdzmOJe1jgXO^h>nn?52EOMtC%MSV%WL1^~7^k8S{ZEd}3ka)!}HIPj_CL_?SzT1!H zYVhEc;{P}hgv+d6{P^l?Pm}cUjGVVF?zN}di!a`+e(N<@lr(ma)4+E8&UZ&MNOE4v z?0E!0pK2n#O4Htd6|@z#b|w8t?fc7}U54CxlhbWb3tRy|1n3SRBz2z#=4;N^tZGLZ z3+Z^|!Y!PfJlO=)d{jbuP)T-sO68+R*HRDzSP$W*_U6_=5676BnVK1r#eX9b&OuNH z_GqqRELEwGYF~wEgG2c9uK%Xm5em$OkKyq}5>V`VARhqYM|K!?miO@Wx)1zYkqSI= z;v2wSNeC-kE}i^+J=hB-0~qLe_M-T<>}p9e0C(u%=XY=tXnn7!M>E&c+a+3b*N)F{ zw=kTD&T3O}qTJ)a*8#%q*WI z>%}JWfsJU=t~;6-a2GncAUKYj>Zo|uAd5RdqJSW72tiNbX#6j}i243rYQgs`1#qVY zhDt}p>G`4mLZ7wKvTMeM0YMEAHHxWyT#uH{6?}|bOrT+^BHw5E<6}EeCor29q4A+q(9W#Q zuQqrCZKE%-yF%l!O@HDBvd(Hlb%{Zqqm>En-bqFDJH9&`QM(cZNYsvTM2|_G_h8Lh zH)JWq8k4kvCk&AT&MJFJ)Br!=ZG`%qWV#Bj9uOGeSwuV0!G`$v2%{QlH*W5_{*I{_He#|FLbX?Yf zWwRF?6g>vlg(el$Q5#+lsGCYAB64FSFSF!BL%MdG4i-(A#;%Umx@DBLUoRN~bpkK7 zvu!v@_()67NZH4l2dDeHRKE4pSb!?OJ}7q&k_rN-kmtUsFwf0||F|%*yHR1Q5yzBo z#%ZAc0p_bl9g^sTlEqJ+UQY&KxyKjIzygP(7aQrS1KC$;Mi(*0)F98fb1VATtcD`U zYNA*r*Qqa&*_V~g`VN5&f3vf*+?U*M;BJl(VCwfLeIaiD+sv8~Q-8}OcQ)_mXc5MU zGHX2*uRhk{cDt?={Nl^&y;ulb$X?w5rYyRY-d@Ryt@NIZq*@{35H*M+kEa_^E?rF6- zqw9AsgxQ^jdfIxk@fooQ#uz3t)N->(m+I6!#ML`zf-im-m|#>&aWOM z6Kgm8iqMi^{TdNPn935_4|Kkbvo)= zNkA3J^kYe(ibrq+_wR_Ex-I}KYtXED8?iXG$s;wBp85=E%8XtqtJc3L`F_7|HakK=~!Hm>q5iNg(~N~ zFR$_J|H0GnXm-XQ;52u9G$?1o^(WX>#Gtv3BVpEJ>#@?oFpGRUamk7mSiz>D7P`+%SE-QeWmOGB!Q&wl79M(Z*`Uv8}?r&G_ zpV$<$3g^}HHV-QENA!P>Sml*;na10&5{~6yVix`eaIg9@P$`NNWApjZWK7Sn_;voB z>bd+@4hnRSTuQ*#7Gs$cw*AS2~eYc75w$Mzy{Np&S+)5zIX$xvB>FTSs~2#_oT zrG$;t{M6$9uSE;BoSe-z(M_xknlqQ(`UX)_2W8~PZ@!02cSGX!Mjv#;ZCGcq^l>qS@Z+SnR3C<{=l%Ro-GG_a%$e_L40*wh7^Bpj% z285P!Ldm-`=BLVob@!DjQ^^eC{)F#OKTUr$z`bAkb!+h0%F3#gj}3zxr*G#-*n3x3 zwTzS93l$z=m>AX)a{Evqj;r2o%+4Q)G)+_HRnVK4e72ugC9mSAhizj}@)&+aWs5FYuA!Fx^WXLH5xclLt1*tmrK1}yWb5&<87 zEYPnzGgkHY=i-}-0VFOdba$$plvBq0lfzWI()A@_P-yOW)-i`ZjI9xMHq2>bV{?FM ziTJO+U8Rcq77GM4*0n1Cif>qq6YE#HFi#NjFx$o9|8vf_cp~mg+h4*>ot% zE1>4NzR+FtVX6W-l#o_XCitqMDsxF|hC`#obD(a9$zA(xB2tvTp%+4(jz$>A{q&l_T^YHl0)a=!unJi>uR*E5SinySh1l&iEGAl6o1iSz*# z9$V4Ym2_?$HaR>Eq-y8-bZ_g3EqXFi)>agVGIS$cb5=uRcO_pf_5 zkQ*sp<0lWWYx1WQ7u+aOI>TT8G6b9vSH6dguat1BGDTPQLr>#DjlDAsTdxKs0S>=f zv3iTT-S0L|l~jvCeIBB>wYts`lt9LpndzYAO}A^n6@+T^tTu4J$kD2$_+t84kjGb* zE6Tw7^WAh>MpR~73PRXez?XLCcBA*MqB!@p{_p)v>Pa{kSF|g~jJtG05j&^Z)DMZN zFGpD~USd(I?i0ECIXio4Li(8q*rh3D@hRuqCMG7dvFzFMu_KHv7Om_beHl-q`yHpC$$ie0_2X?KCVzBMWwm|$wT=$O9W0Lu=_h5mY%F9K9eR2FQCQf zYp>uh>Zm8vq~C9z$B3}rp*gCc@XT&Wc_7CzsR(jKJfrkyR79T3>=y;c>6}z)ZWQS< z_vSKHH;cL?g8}mnGjkm?eg1Vlk|!JW+|KwqS*0wY#weMqd9Ql@;qyD%{h73?tmY=s z8@EuY*+89kySv$$IsbQ+?+w-$zmyAfGSk<8n-Q7E(_tRJ=CAB=?B1(RIN!sYnRL1> z_akX|gCG|ot~V!IJio&qjz-m*^Z9>5b*Ezn1O^^`3&r^27k#zG?CsTePPD=yo~JehEcOOzDL)lWlW*lqS-4Q+?JAr z?dPFM7JXL-6Al~B*JdG(fBx8wG4~jqU%yH`dVtMt&c(EM%b1^r+{ymK3^^Jsy6Km^ zuX7GMuUK;`wVWi-hY8XBubr+BbHoOIJM#be z?Nq~$RS8t_Sj`ftw4N&vY;&?>vqzGBRwdx7V!=L5``?v6#UN1a5PI{e@HxQJGc{J- zVPRkt-beM6_V5~jmqUxw(9j9NDUsD7b}`a}(Xz2EfY<=gJ9k7O z{}UUCDlIJqEnUt41;k__9-e`7)lx2wX;20v949$ouoP#DkLuzn58kk`FE+Z#`yH)H z`^w%MmXj&s`3eJt0JH`9Q_*b4sj^gE)G2MH$|uxsX4!xSg$Nu#-GWwco2i4T*a(nY-2!fVNexS;{i{`PE8$FbaX4`QWM3T+JG2LAlSrs(bhq zwk_;iMk$u^4#P*DHJf_iw-t>YF5EHpwuxnypm z=8baG`35p0@=DP}CiQlpW_}3GY^35vfQPC0jbS!@NKp0!^-E*H!#C*{eJ5SY0Ecg9 za_{j?+E6><6sQEa*14~B0Z`3JAe zaK;;;i!Vf}%Ys}=kkR`4&gk;9{A4ECFM1`afQ>tk7otGi=9s~qu1Msl{Q@VI9m^|8HFQ1A})(+UJooyU6OC=Wql-x9LXA`7$zCN!U3U4eh7E1H`t3~H!nDDB^t>> z^MTU;4zZ@Z$49}Is35W`E+exn&8h$J)eC&Jw#GJK<*#>x3 z0NntA#F2(*G9#Wh8!Wg6Dz<^N&h);ngzV!#n{Y!Ng(q1Y`tEtGp&Edg9;KF%452y8|Ii^T)}-3? zezRkz=YoUT)6)|fiPhA->Z&=9RU39}FxUl|xvS+{36#$_$Xtif!e>7Q482}2#Ai*5;T1c_3 zJ->Dt&Fggv!kpkt@~hY-?+4W@Z+j-J2)v3(W4miqrFC1A?sn z)2|`70p8w!((}Vu>L0usH_CAGlO3oxYLoLjVgX(5BjaL#sJ|=~kx$^(cWQH4(mA(V zGXt>CGTA~8xaL<$vIRF*T0Afl0-PeKa7%iRYnOr8a~*GPF{huv;8uw6VB;oznB%DD z`S;gTEkW$DTAcJWLRd|t@|a@|@2ekQ{^G8S3e%Lg1YbAFa?#|}?P-DAC4(a&=Cf}M zZP7^QdUCt_U&ZXr<*6`yAv+F@X5;G>Hbc+-g8MRf_Uq0tbOy;+wmbxMDDLiWb5V_0 zeBSPFFF$=F=4tTUzW^8;XySR|&NSugwQ(f(6$gtL+<&XmU1p<>|h!YL43x7*Xc{0DqT5teN^@V>Znx z4i?sMuGA?wzcb6KO*qlt#4Bfv)_Qrx@?9RqwQ|rAiuUcr5Yc(=jt#B))^7}`ad z(zNZr`mH8G^%i*X<3lM+!!(KU*NBy5S zkgAph)p%=SNgQxRMASG4V)&d?+x6fM#zW zYCpAs77}qy`uCm8{2Z@T!2VpuM}t~AYxJEH;9O1vwq(&B6nM5@o26R!yIS`5Q`o3e z?FWzv^j-Gf0V)Ov!2}u_8d|6A7{;@%Q32WPdObl1D5QN#l2aHADD|_mkK@s>$R4%b zMQ+(=4t-EMI;q>3pMIP)Nvh{(M~^U_9WN}p3BO@$LaXQ7g98Cq@!B44b(t5@Olu{Q zY5aQl-4!l*hw~u&_WB%@;IAOj2prQd!PgR|Rv2#=Eo!Y*fcIqD>==>T_=Dx;mHZZW z0i08ZMh?FW@Z+;2M(MgSND!!{d$ZNaKIc#6wd;gi&!9{p;0I3nhTlX41|y3L1?mu; zs2!lt(U_&xKlhTThHU`+ZU^BcjzB75X~lN6F>7-m?%r;u>%0|n1VIg&dX8k`%e8D; zTCjz3(|`wVKbZEiM~EPr!s6bdMiF=U>Oq@KInA4H%5eg)S$l}ncp<-|9vHyRvI|5- zW=YzAm5U!e^{XKIMCMP;_pH*Sej9;Js4lv>|M2xMI6>d+S{#G_fj==7k)0@5lXGAv z+}{-38x&fGXI4C0ZrhR)IuUz<0@*Wk>~3Ox>lbaw3o%|DW+1JmSnq$jv%!Mwv&v|m zK5^;`;ysxJ(wB!0{}L6_e#v53XdX_|_WnDoiNJ-VyHo3G$UkWWF__98!wVtE!->ue zGa%H?^i`j=O#P*82Q|k5*A2mnnaLv2UWMrj@aH#Kte5Pyk(oiYzjAx1=u$_&n_RNyiinB{IGuZ^Q+g+==k_JX!;X& ze|9IJChB$aa@uA1P(JjJ#MhB1agX53a3A?K?6bZ70@Ql}$U=_<&Z{Vey0HnP~Q>rxg?>HwE<7eu6kFARfUV^8>9o zx7U^sITv;tOBAh~%}LIp92+=+o!gIU^yvn%>DfHXwISUBmE^bHpj}z>`oyLR z0gqsFAeE9!YZV;xsX2&AXR%;hbQm&4%J=RD1krM6$pHrM< zeW(vNF&p+Nrn#%~OZy zUuS0*mPRslbg==SS07j=PX4a5pMNYgI#0-+amq3&3RFCJ-rxWX+Mjpx_65S%=__nG zz^}9X4Ui=0bANDOxNL&t7O>?=nJpVZyE5|{-g57Jvi2Wxj5vu=@@($dW_akB*4LUQ zL+%I2cJ~R4*BMott7n1ka(h~Ef3q4v%EO)HC5=>i#ZI|eu@9kn3Z&S=RhH|vKaIYy z4RKvqE(tj?K;7FDC7K;qzxbvxv!Y)YS;Dw?OgZM7f~6^nfRAsC*B2*jdFhAsRCy7g zm}aLR0r$!B)&=VSxPvv53wb=cLC{W~Z}xkg0y(IbuuYi+c0^O3OFWf88n;gVzi`hm zQPTPA-Ek|BpHudtPY>4kChq)SSAy_9u%z=}LLYj^_SS2+F}y}-Y!QegVO_ z+T=i#nXvZWP~4IkDRu;klBYIw65N~27ItXXb8n)bxG{=Xe}IJ z$c0)j+_&svV%}SyGQlzgfp!jP+ZcXYXS{6i?cdop3NPVGK)0;7z6G4KrLcA~h&iNy z0tVbj(N(~+9Kxur^)Jw3ruj|kRxy>mdZbz9KrPCa-XQBgWs6D1#2CGxSxcC#{m9$K zX9o+$Tn0cnMt3fysZd43P9h#or@c*&v0Ea<89q2Ndsb@J#5SfE-Z%aa-%1na{M&>MRG1AvH9s+Mmw%b48i;GJ7LY83wyz-uUu<jILM{x9fiUc;RxkVQ=k-3s2#8u|bWR55k^J2;DNcV^`ICYq%dUpWa-Ffk ze|qa2Q@LhVEdWM6=Y3D!4U>?I!CAh<(@Ck@997>&V1nLRQ?SVyUCe>!nn*99n3ut4 zkwj(w$&eRAGCtDbrA51C9XUC9w)7P{@U{USQCzb8u54BOV1lM%%Tlf3A4Ua9x7sFv z`HL)T6w_p9RN<+I>CiCOG-3 z0?zEw?bpA*4rGA9%G&}C1DGE@pINOZc7F6J(0kXiv_>WTL!Sm*&jNM+a2BR}j+<6e zt~I{8{qpej-fCjQpI4U*sJ$Y~@tFatYfW+n)#wxV!IclV%O_e=UDo#yiSTz?$*!xq za6C`+uL1^TL=#dEuV}6xk#t7Zh+#w{#YMfl;SSQZecajjSf+ZK^ zQ~y}~D=Etwh-Qs>TiU$drPhd4xPvw(GDVb+DaLozfRIKIA`xUfPO4zImhH!*l**l* z(Ol}?}t554BUFm1AJdB;`qaphMH4 zYgu@w+^K+)5XE94llq!kcubr4710k6_!Pv#dJJ<2RX2NoNsgALt4~T2QY-<^B?w)6AzqB{e}n2J-o}A-y5) z1lPBW#qz2N8f2+@6%dI_ruPUG3oQZ>K}gGsXyCkJSNpyEEkPJY_>=kX80rl#ltBX9 zW&uysj{8_a6Xx=VQagT#MfV6^Nu?nMtlLeI=n-!KRBvWG?xIvtyhrR%^qpb}85yYj z%ctHuN#pASEW_CnX9k2suhQ_Ul6x#_EYUYsxs2u5rx*!$+=ri}%IF$x$~2G&N9EwRz7tZZs2=MU8Juv_^Z8!`U`CO3t3J|2IPG{`2i)C=PEa@|I18CI zd;q}}4id4?)xUQNYAH|fenpDKZy6w7=jdGWL9|Pa=}*_6eLdf2)fFvE_s^jna+#^5 z3t!L#vsbYn(|yM^K4kHm)KmOtv$5Un(G9`?hD`B8>Dz*b_1r%XQe-l`+ z31q`h^hzcC7>HTw?+aEp-iCr~*7RC=tYG?jL)G2+3hspRUyaE~ zlInB>oos-Z2E7m-0ZG@WusTsbj{@~`EYuS*g(3_e>^V%!Gh=LNOME5+ZaVibjmcLo z1Vour0vjwd6MRX;i&6J(2BOlOyO1&)C=QAoNPFQ|Amm*^Cy{PlF(*KQmE0XA98&qV zZ+hXo)KAaEdM|>0IuF^Pm`oUZvD0bR$iYH$w~#TlJr0RPF4?}%Zd9^vuef&b!GgFp z3DE#LTD?71maFLwjmwBxTR1_qgR1wIo;H}Cd4lw?*3O-Q>sy~Phu#RUXaCs!@l|r7 z{psE_rj4MBqw+|s{ZfGQBIWj(c~?LPsFJ*P$Zo-nnl%N~f^=LPbn^uy6@Y`rzz*n*yUK2a9yBMVlA;bhW3tk<&(;{5pb~zhda!D)nQh~ zwZ<^$7Vg7J^8Zuc?}YCIoyLp(0a?UXtKyK{VUN`*UmYzN004MwboI((F+<8=IXAQ#ZW z?2$W>{RMFT3yN18JP?{k=U_5w%`#Un#Q>CUktco8H4^C_OJGJvW#)q(reqmGPFD^Z zalgXSGtadfYz`_xZfu*Uj!^qX9*CksACj)t#}F_1Wc_^tyJ}KlDd4PNS_#F{s^Ai4 zmelBOxCMI%>Os##yJ&o?)6y8+^FuF)r4me$iiiyjy=N7IsmS!vssISn<~r{6FvM6wkSzvTm_nbI}g|6-6z0pYL zPIqkSWR_}xiMU5V4UfD_I})Rp9Ophv44c#&b4b3di)P?pS@r1A%}C#%-OqN-Gqr4N zS_4`l>oGfCN)u2j-0KR%i^_Bg@?qN3oESE&b7OxQIzon{UzJtw(2m=Uf_El$Oy^v_ zgrte+|BM$0B66+Nj8E|KyNJ4}v;ar#>gvjlnvWX*~^LBh7N=64KE2WtO5Sf-macVw1F)3x0L5wP^FszFIF%@m8 zInz(0@gEcR#_jd(<19e|lTRGN-++P^iMeAhhc}W-PG{8(QeDx+*AfaXB1&jH=?%Jed4Igaxv)ArZ6N%r@{6!z2 zhmXb4ydO&?2_6xFO}&5oW}Vv)gY6a!Pb;IX$;$|A;wcI9636y_@Kihqz1s<8D?MTc z_$HqDZGtD9>mf7T@81+*LFk>-dR#`gh`Ur7R|aJpBv%QCr2Er;)>yvmkTnGQUXkn3 zyzb-m9GF!X7*qYoCVca^I#j@{6xL7mOuy1tn1oIF(YEzG57Y0i5RyJBEudn|KbmZ% zq75jPgNOCDB z_2WDQX;#DDUt|Pebd^EGd)FvO)JDpMFv@U(-!raw*shvVyU%KOE5{w{ncy-Og+g-Sux|ByCA5`v{*1} zrP4&yTYymmiZ%J=@2|VD`x{cO$Ye`PTLOf{k6I=EmC?>5E0`m|HVe&eK&MAn_5rEM z)Y(WiTY_#1(Y)cI`p({zZDU$Dx*{NR@xRL%QnD z4^~#nTup;0!mT4}xLephVK>*3zJT}EJEkT^kKn5Y z(9_kD6UhsNNl9wKw>xCN%6pi@& zk+q9f%+K{FGikcW`Hh#OI!KT2z1~1S3%a}UC(v8VFW5{>+!9!$CD(b@RlgjG#s?6R z4;6!i3uMu%<8al@$H&!2Yg(y=YyhdjT>uZc2leEw9&xH4r zNG(;-rgtqMLT~899LjP+0)@k5WO6^KbA+!@zt7#45XP{__*fw?J_X0;KX7OIo&G#`Dt;jNnu?4sH=F0h7r;%psjh z&?p5P?f(X7MaYs|aV<#b__O~!vWO%j6s#A&(=RR2ecR}HHB|K z+M4nMap5_JAK+UvlDj(No>d>;l-SJS*D+0XO&^n&SvujAayFVayY{NpgkJX=21TYM z&d>>4V?EQvua32&Ks&|AqJu)A)YQE!T8Um(b7k5vy=ZGEHaV|6xCh2Tl&Ri8da)aD zv*M8IY{Qw0R_+*G#k~n0kJ@lLw*L)U`q278`_s@daaQG;Bz$EpEKz5Vz+Q=X$QnX1 z73*?#F_2*AhfBi5l3~@5`@6=K;{s^^JghE2)anFBPuS&?uKWkG(G+9G61~R^Cm8Wq z!T+bd@BZhy|Nm_uGb7ouXUHgukUdf;GBPt$Rz=7jrDRJ=$tojdhisw9Ohd>PQf85T z?(ge5-`lyJb8hDk_@3M6`r*>$diQ?6-mlm5`55=d{eFMGNy0+WI+iiY|45itf|pk0 z!Gi8%S+&FJI{R8)@YRIert8lsqNAfZ-KZTtnZ#zY;~<};O}ZIPJnIoB)e?!f-qnPp zcCzqMS;3gYs_4Wx*9E?MisI()1y&Y9X*@e0OGBy@>KZ4za{;r+&k;s==TT4jP(N9cs91J`XH0zGKQVcD_ zdAFLxCH>g@FC1>oDV-x7q#1Z=6-aDDa{OpYer=Gu^YfP@m_x=n;MQ3GDbr2iA(#&OQ{W&ii_MG8o0nD^TvHD4f^4N30?xUd+AZ_{tHQ&GGIl6Rqtj^2ur0PpPaQNKF69 zG!)Mvb{0!&YLFBCdUc65@0;nUoPqw7sy_eIod*k-^KQ8t?{*8C-c_BqFa!P(dC22m z{bkfg9s_QOOI)fx`sz<6ZROrsJ}-4~4X4vwh&^NT?aaX$Bw1&oioNpkAA3DQg3cuA z3oY5*8O+qw#F}lj#rw*Gf<;JzjU0hB)PGk-W99$ zc=i>^J0+8NtYtFUtyN^kZw5B8M?jD6Wr$u5>@l@jucuJ`KXy(HbnjL^E?#&uTD z_f^|*6-T5jiejtAr!7R!hzo@V+Fn=h|o7Mt`*RIT+%rr?_Bj{l_CIa56v;Fm~m5lq6O(b!8%$O>{6(uk6oLh znKZBOaDHyyO5wqpOxU{wFO+IKN!&1ZzPZc-xk8# zoe>YX+1uM29v+T?V6#`iZNn-yII=`6$X;kYrCO0oVPi=MJmIfI7oQNq7Cb zGWmDvF|sfV-#N7(psK0n;$I(*GG)@=bz=wPEmM~8UijTWI5=)OQUArOSpW~;)XP2U zfV`}ALnvl7kgEA3KP0?MR_!Ac&ZzTqK{R`NnjP$gzcy3RU??nnB8zPnw+mLy!MHnG zacgP=^Z)&AP$;i}jeem^&yaLsbXac4Z{?fA6Tfo>R`pObwcrgi@e_ns4JQX&3wky_ z?S#}!rz5%*`C&8{NhmUz1YTjproZ>r@)5y}Tq}e)qiXd(f!#aBTO%f0*UynI$RPtX zLg?WAr>fp>T#5Ua#GUP3yVOB)f{hF2#8<8Plry>f^?5ua@1@%#N|$ZF<#;?d6<{b1 zHCbj8#BVgTwC=QG(*c|L+m=7K-y4a+-R2iw`B%S47{BZ3*rsLV5%12<&W0z2y1Kg0 zu9^!qTe>0J$=2#Vwq(Hs$XD^^O@)c`nPAiaT9I#|*rh?b@HS=-SsCZ~{V(e%J^mqb zX$@jbMNCY*ItXVe8s$tXn3RMDqu$u++201aubki7waRBXU=DIM9^7LR7ZWpIRl6r6 z!0-g&^%r9@hqh(B!wCQT11XG&o}GRSo+aLhR3;5XEW&GMRS4|J|NQ)KbsuCF;GzZV ztI@JLV!hGlH@=OWrW#s*o3;_zN5vJ2%|1IuyZVrkE7U6l1lI<3FGaukn1qCcc?uYA zS*~;*C|By7JUxg)Q!QGh;#1A?d9F}#@bTRCd0q7K`U|)PytOI}9WXu}s=o2XXyvGd zVf^v?ilyT%4Oxqi5<7F&^u4hK1bgbzJ^2J#92)W}Nm(fx|V+QseaJZ{*&k6xuXm;HA7UE*u3b zMdu|SFYnP(^nJe&Qi667`>f3Rfjz>?#k{q9&9bYvum5~jjL|klYO52Kt0HzO_FMR2 zDxr8I$={%D2pi@aAh-dp!wl>qF0(4#9E5^%>8iKu>gr%~Va%AiiTh)7;ljo~QOWQt z9~3KwYKi<8b9aherg=H1=;by!`>ipP_mVdXbb#1hb%Sdv!{Jd;&ps!vr8mN33&952 zQuh;4UZSZO=%_23D?=EHTEqK;-c&R_vfq~Ib64plBk3%Md<&>K?6Tp1c9u2o(Q-+N z7`+87x=gbgpFq23{9>+}qhwNgBxiL+akzSWOtK0{Kc23XRoe4BVtI_Xhq>Yh1i;U_kFGb9ulE7X;EG zYWXK5jloAOqC#&;9b)za00g<0Z5?>Q7^tlO`1CxniFOZG7;aXwtcP%^8JmJHll(&R znVYjZj97MbbkNx4k?rFbZ$L<<!>$GDj}k2ieTh8>?OX^@Ja+YBkpV7qrUlhx0`C6g{H5?IYaVHOYck@zi^PJ z=1@~t@4F_LnVQP^aRgTwqcA{`8@685uc{$tS+g-8%R|5Q-I<*0%zp6GKOBwP@&+b^tQjsdx`sAj1sy?RdRwXav_25Bm;w9 zvHhtJRet2b22NOKHNLA!5hPszKFIZ@KPvnwCO@dE_*njiC$_`y_8(#OCeF|=>#^n$ zW-%hSo4_p_!3GMb0D6!mfE^W!r7pQulEg(NIjW>ZI-(H=O9mA6_ z`7SoZBMR$ajk>4*)unal<5TS&nQ3X2k_iB#U4EAXbf@62^&%X9fMF5twTH?B_d}TT z@YEElISTP|mR&491ZHM$fwfM%OFle}tiNCm=z_dODA@@B3D9_0|of zf>A>*z;$MvOZm@ zO1$=mTVZl`{b#TKGacq4S2wo;Atr6jA5c;yANQ8zxi&Y*z8VKPa*4i~*#P1dMA(UP z*Iim^ca|t#pEbi?)%ry+mx7w@LO6|t!|VX7jB7e83X)dU>7Fdh5=Yv|ClC8x#C%1K z82+2kq+i*i6ms{3N@{gE@i?vZByiKqAY+wkX=!OPgm%EACwfp>_}5@{B^IL~lXPfh z&DE6-fQq!tBL1M-VZ5NMzqvUVpz$(|@U$DM-QGX(TV|Gf1@%-Qgp`D7` zRbYJOdA{vnSGz+$()?9xb`1oGvF7MWl8RHWh+E>gR7h-385{TFI+-8Y6;rNrYLhPH zqGE3#j`<5K#95yJ1x8CX>zJ)yGY39+Le@Ol_TVa*YsVkx=)Blemr%AI+VVr^huP%} z_Jh_&iE2H#5E!bGpQ`VQ+bMT#ia;H<=RMEkLc^y?zRqmn6L#xXhA^Q5f8~7sjKUQs zFsvz$LO!y%wz6Ni3IvOA;m|O@fkhGaeHz4c2b6ANBl+yrU-oZlr@u)tGk)OJCIN6s0Z0?q?_ON2S5VEJh>m z6>3sV?$>TvB8R-1@6O8m*dpV>FYVef@WC^hBa3ZYKID2lza7tCWaQA1V&^t{pLH5# zdCGt{yi$7eEftAq6#5<$@mwP3uAAP zU10xl1)BNK`IZ4oi2|jHf2Zql@!&Ki14;x>1+UA(S|!x}Za^6Hd9Nvv_-${ljN^;s z!%lIwa;|1Z(JF8=+tt`O$!`X`n{SX#B|)Dc^bk(}9&jy(Gr^ zrD*Gq&gJitP%Ap@>dL&Q`^4poeI-KXz`WFl*p6LE)sJBZi}M$f8G1>5(ZimN3|Dg9 zUFoG%lT%|Rv=p$@X!^=|0}MvSDKPJnho z&)LYIZbaVww~8VSuB($kuil`)SzG1xcWNX$O)+jAxInpm`$Lu^P6=Y>K1d^3<_T9zk#iQ3}+2}^_6hKl?J(lLL$2#tBK%Bo5+(}lMz0+_0>TZTNkn0~9 zdmEi^T*w{5V+p8>0qYTbbv!pJ&~*Wu?+E!N!6$NtQk8~#3-c12 zNoij-NoB7X6?Llg78Y8(gvz4rOu8!BY*>xv!B@M? z!xGovY!=Hu+4*F$Mo%0iP-JAp(?e%$ewG&|=sY?an`0szHvzMUwi=YQNQR-eZUG6p zff;@ z#8QlbNMTZVm7E7=UC{#?{zh@EcM38e`T{dUVOi((e;U?t}pW+tC=aWcW_l zD#6&WH?5%g6idLpV^>imWqGA7+~V*zM*1Eew))@;Y~t!f>!)I)L+cga5G{0)#CJM3 zl44K{e?BvO26iY~5D(jZw+CwK;ITz}wJ-^wL)uAj6+?Hqo!c^?vC!lo+Cy=|A(a=t z1)crW3V#E;F@XllAoPkdA9@jPad9^!yQu=G8g4al+I0yISYZ>*e9VE(QA}W9;CIo7 zS)hZVb_`F!VuWGGSt`oe)sB!viCd6ozO^TaS!>i_$``d)Q}T!&%@?xCoY`%K!_qY)O6s{ ztl9i795m`gGzyxr+~GG7#}wzc_LrmLBqDd#T-AfSGth*u*L6R30Gq4{4?zl)!3YjX zjZ*oHCF(xVW9|^lQ%HBk$;R{Z@}{ckoz$sU)oFi+hDcRcoPO=51=HeA7`}F=e!EnAq90Nz>7T+{AYVtPKl)A z#$YlL4%a8(FA$cH>XnQzwB9@PwgEM_fFIjLNR34OHD51Sn8mFamKpm60D$2!0c|nSwpC8p?x&a!wZzzy?JD#;C=MR-z z52eI3OuIa(DY^XhijLJVIB^deRNtJHAXeG^@Yg^^alrQ0HQQd)?BWzfsYstUR(_3n zmYZlh)(vAKZ0o#dFB_>Gee)RtAzzQ}zySpa|Ij&k&I~#aZg}@!zpUZ<_}C5pSx+-# zVjQ+`8+!_E zf^&B|F}uE3=t)_HN$D_}LpupKib&|#=x7rLcSr;rS@Q0qL{4vhhboyyMn?;9^aQFN zfL>9NY{qTov*?wpj*f!PQ||+L$MD>xNF%%V$hZua7+Y05x$>G#-X~!vEtN!J;h^>L zuE1G@6^FwNSCn_V3(xue~)6Ie%mrmS1VwEFP6;M8hLFLNq`qqAz zWEK;Z6%04Uk6c$0E#i@uUPhL@rpqrWsL?6GSq)j31 zk|>=<<=7@Gxl7L8P&wR)fPK!^eON9o=yNFb_8*#@e-tI8VB{2U&&VJ8*9P6f2*2hV zpv5|i{J-7qU;cMJkcp?CQ{$r~Rr1Hb{c14!(WG4mnYN&J$F-C` zhqgb-UTbTSlqqmI`I66Pk=MoXyp*Jd`_SEa+cax)FTbMCxhV>%_p{ECaarvDKb_?N z^WQ);L*4!_hyDL9_eD$Ve_kmo{PE8|!+He*+hDlS>>y4k6C`YI&P5VHTh)i~;_=Uh zP5M+c0dWVy0KL+N^C5S__oulC8}uZ=^Pis^%}qb4uYxf*^3J7$1b{cz-to&TbLib7 z00O|#8H^+WKE4Mo-a7U4&|yb1K7?C6jdGQ#P9h>2L1QhLg!sY7&;QV6)v(?dq6ESy zXnKP1W?WE9o50Jy5SZP^Jd>*!k?3xl6GZN3c2fWIf)6|RPXhGWXd6;%g|1LfFXq3# zLH$alW}5E0c_yUcp3v@iZfX*)otr99q}#G&AK{CvYwBo!tQF=Yywm-(fUo+57yP#Z zWdC!$|J(BlH)=s!Z~)GeH9rgj>(5@?_{h3SJ-^X(y!IUF2suhduX`~X`{L;~w{^9( zwGC-)xLa2E)wHT(E$Ka@?;Urb?&&xaMian9K+VL2p4yzzrG7g24rd<_P)DyLG3)#G z?aRlu00*!7#`5e&7&LZElbr&*ynp+uN$;-uY6ZnVf$S4xG!&qv)Lbb;gCnavQXero z1nHoC_%xeD%Fu$E_m<;nXJ6mrD_&^V&)M;vz9;%;gP6LuqUCgc*5ZaKm#PzHZH>=^ z4153s;_LumMJ20YDAMt^eo$iohx~~16;@5R8WmIq83loKevL zi72AWDl`ww>L2?n>|d`v)jj9K7)R-25H}`Th!HxE{(*`tLd4+SU3)V6CiCC52L3uqt(RC{3&-|kJ?fuE>&T) z+Kum<=~y2eSzMd|8t1#%B7m>~G}0Hb0laF1Dz61#gs@=pK^fD2zU+Vx>v>tCxg83R z=q4L>zU6n2BG$G;2~ODlaCe@Vx{Ib!#_8h}0B+Po#my~iYqh7&5ii@wY9`__!xC12 zlXDoy7$m^=ybAa!<<@gYuhBiHQrOx#oSu9dZV}$5+rDIj8Vz;rY~PC+v{(V!f2X07 z?xlJD8l^k1CBjK1S)RY3IXtM-9KSpG?B9>VL-%M#`CuN1Z*)eEdl)1Uf|K5R%dOzd zB$Vyw=K&ze!U+~)0o%@$YN+m(zIR67xszTP&lAgDSXj6+H&j-()%6`anOp+Lz^SU|e1I{VIizEKoDabdRA|FK5yt|J84up{&WLnjhI9Q1oa~-AluI_c| zOJ0x5qu3XXxPQeq3kwUKK03dObUA%yP2_sgR`_^7)BG-P`RY$06(ds0i z*2H5*!Sy9qGZ8}Resr_b-URIOkR?CI*$&5YvDYJi7sdeCe+6!eBMNf({L+np76L6@ zg?x;fS+dc8W1@{E1^?W~tZ46%I(ig3}&GbK+)|*ci{uOWq$~Q^COzp4WAhEQ3MVKoEPa3J%E;!tun2 zf>e~0B9I)#1^02Q-MRLwZ@>H%A<3dkWiEHO!DfUs#UHQ|P*3AV zrEH65C85?)&h3@>J}TDblowh7(4+b2HMBm|5g2NPeb$Mey?!kL>^n6-&$_u<2KDT)Wnc z^{?6X5gUQdj^JCqI0M`_KjyZ;Dem1;ds)JiFb_KW((D)u2h8;Vl92A@B|XOE9aO{> z!E@9K(Twc&ZGsWKZOq^4lcMo)m}$Lib3(^*7;Pm1t^_lFg8*@zv)cKN)a8e=Y9lt@ z#k;{uP6hV#l+$ecuPlyh88ABCHC;=mq!Fu<6fy|_luyW5qLSs`Nsw{?Qg-Kl%6)Zd zD5^WxDF3wMg+Uw{fddQBzZPiP1GIC86@7UG_~YMQ1J+r4+~1Ru8nE!4i^#P4O7Kvm z6~w{@#-b3RIx8->-m(iAQOIH2`+D}5`ArM#UzpmpCLVFWy6~Y1$wHiQz0(muwL{s1 z$6|R`u{QEVVWtr-u*~3|h{yt4BN`z_D#bbZ1MVjHEBf4~;p(OZYp8V(WGFA?&iA8~itx zv6Ll*q#(yid=wcBjy91=qFGd6FBJY#U^3oK*Z|6le6z={;9?K|#~pX-YlglS+U$8F zDRdS|_Yz@k?W9v|k1?~ou1aD$()#Hj1*2%L+0)i9mI3lM>hm~hAiNlnL-HcQ{OF~b z)-y{83C3(Y9zD47`zu1;ElPIazUR&;Tv~RCbG`2sdFRdr!_t|L7G?hI2MeE^!iPJ+ zc?i9GkfS5)xGxY+YJf^$LM+A-DSMTWn`TXLc)*N?C|7L<&QTez-`&S^3N{(+nM~yN z7#v+DEz^;5+368BW&Ii`ed_U~*}gwB5Zm>7r!+mPxY{Mt7BQ&2RQN!|swIvuoNIOl zJu;v>h!h!j(LQ~*WG8ry8djYnZ?>L@l5w3OLXl)4o!GpwzYXP1ybzNu`Sko)v|bB)1+kx2V<#J`p(zy$s7S#O_;S~7u&TaFk>2vVAdspfW`MXzM!R? zGzv=?>nm0ZRDgGSlwJRptq_&mr-cno&pBcSlOV@bIWc2%dXg6UJSr!A0D@poH^$E zSG+a)g^dJdgL&8W-uV$&(5TUI?fd26*lTe__NS zb`g`?u1TIn@u|m)z?6qY8Wc?YQ;Mlk8?d4tT^?X&X_%y|ohSI%#M0VUp+Tu}l~pJN-z z;vKVfm>io(ohO_}hrC=&y{sa2eRfcZlB)?rfCj3fYO?|X{y;}5oIvM7V66Yy+MIj& z?X~+M0M0fxvHT+b=qz!o4v1Ur`0)au-p}oDS{@o%oO-0TlxEcRnDi7qb^l;M-Hro9 z>ujv7my$Wzc~r^&tq?8iu}>!Bbrmo;=dU=Z{0+NKjBEt3ehu5M=Ips6F2%h@P%oPru2hME8li&2^z;Rjr z+&xkXhMC56zk1zmYX6Q>EY40GH0lz>!UHQ5zD)N(YyJXA4+m1%uFJ9(58YW7N&=~6 z?I6>+a3>|TG+~g;T5_4bDhy+4ae(|LQFO3%&fydFNfs5DV6Qy`z#A3pJ^q!qQ>>5+ z3r|^ny!9TzN+Mg(eliO4<9B9)Ooz!Q==(Z9Jk+sv#*kaBp7Uo6Psvb~-O{%k2TJMp zu@?KSdv@yLKrScpXP6mdu`l|@jT@dsr7mWWt%sa8^ZEHL&*`p08-f(1jZ5X$<$)53 z#VfYJi7U%+azt~!d8M>$+|k=+Dz9;%TOsdFmcx!T>9?q?*&brv+TZYe8lA=+z}2YB zE$e$-&tmf2ntK;jM{Lr9LJ<$0Eiy-V9B2Va{N9Kxig%6GMB zb5V+Yny%=GEy|Eg>&5IP(GM`UiRR|o6TjH48_udx9~0Qpm|_`dTF6HBDchZggexG! zgGS}<=ckwMyDs@fgmOn5I$!gMEt1V1Bwlq%e^Pa zT6h0x4qQIlw#-G|YhJZ7cw?#74SKe4Kw11tE;;T{5{ z>HOXivk%~OwbF1`BuUgxXEt`$QM)txH-hLX{ga`#)F#Jf2Iz{yCYzcUZFiTs7EU2Ka%wz z%!Lu18uVK>!Pqbbl_(}nrJDhi%c8mDhtkf-0S0k1NT{0C;|9NpysxjMd?SsDR#*#9 z)7x!pwoe7|kc&!68HM{PMQ??W+Yx+~JxL!cx8H6enZAc-Att4S=VkMD?>WO)W?u<0 zx8mK9V^m-14AQ1|Lns;LNg^SGY#Op;-`a~y&z`kEv~P)fip7AaGaf~=Pv_3d3*K02 zD#qjO$zN7;?$5}$5M13+C5Mw~)EgH$w1=i*&RW1Vz`hpfz5Zuz1yl%embl>a<6<>` zMA9i&QI}9s2KIO2U7q z0Woy_&&;jw1a8CCw8UO#UQOH=8rvxWmph^aCPHUK|46qlTrp68I&7esEO8yG!5Cve zGA_Jgak3L~mqPuWJD+_bEw2KH=ifwI>rZlZ;llRLO?~mqCDaOW-B|1>ZcOMrQCd}c z%-n2D`wGGn4o~aehjc%7LiYy%H^J5npGX#7e|k#h`(lDOF%mO;VS3MWeQ^{C+I9fh z!0+$KEd&t$#~8gt{j>l}ZGL`UpjPcpL;^%u3snsYfS)311?At{CeeKVA-nnS0t4g~KPU7!YTz5&kSZsfpo@e`)Yk&${>ZG1m9!F$D zr1&n;SVz*MgL|1JLk-z+Y|U+Kb6^VYvyUsS^7W2`TxDai&T#w6I%RWBgG#&Gp`X?` zH7R>yT3n7XFLV>8+`GqkzLg(JA^vbDQAtTDTsfU@Kf}$L?ThaAa6O zPJ)2c#d}-%<>vlAWT6bHzzAfL*h|wn4jgim$+OH7#Tq!BwW#Y0(dhkB3^wRoi;3cL8Y8JG)oL3#(}T;0YXf?zt8+= zN*V{Ct`)_h9n@0`LA73dY=Bf*R9t)>-GwxJep@*PCoXSabAH5z2_3c(Onlo+x1aWe zL1F*p)Nd??I&Y6qWZc=KoecQaNA}0{*icR4e^Ip$ZWT+6VlgQ#ITY0~Cf#D;``7u{ z12kV^tZi27FRvUbCP?xzFu!BnVQATFo1RrAHW@)__W8VjLm~FN$IO>7c5*mgMQw`8 zi46~|Ud{Z0WN!K%llAon)RKjEX7;LV;`~b}s`a$U;LKg36#4B4%7gs>2s?$yS8(k-J@A!Dm6R%socb6Mhg3v+1Y~p zcDjPrYypph&JdU}5ojI`t`8sl)38Mt?C08@l;5qcp&|F)-pM7j^83Yf_US32b6l#e zgi7OiXu|EoS~uf0HV;u+Qn<3dsSV2Sa3ylf&FdOmGYYCEez{rMfBsERRN3Gzv5iZQ z%XBS{Qc=Q9?Voc+^Be1p78><#=6BB}y>~LH1>H1g?g#VI+Ut!gA$wbL+49JJJ#6TO|<0J<@mvz zlbiS-Vwm#HH)Qdfx+$A#%ExaC98t*Z>)|wUx|W-gS1O#<^>Xuh+!1@CtVWijHht$S zJz3;jU$pjjhGhL2`{uX5)*xtZvqyU)Z6JUx1 z;4%sU0@>&h;mqH jBMSeIpVBbM+TP7ne3hg<#$0s={?Sr9t@={gD)@f@yKH#$ literal 0 HcmV?d00001 diff --git a/references-websites.bib b/references-websites.bib index a469821..b997028 100644 --- a/references-websites.bib +++ b/references-websites.bib @@ -13,3 +13,12 @@ howpublished = {\url{https://orhanergun.net/2017/01/tier-1-tier-2-tier-3-service-providers/}}, note = "[Online; accessed 17-June-2017]" } + +@misc{IPv6Pack77:online, + author = {}, + title = {IPv6 Packet Header Format - System Administration Guide: IP Services}, + howpublished = {\url{http://docs.oracle.com/cd/E23823_01/html/816-4554/ipv6-ref-2.html}}, + month = {}, + year = {}, + note = {(Accessed on 07/23/2017)} +} \ No newline at end of file From 6ab81bdf49312f722c01f96f83dd4b72c6454163 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 16:16:35 +0000 Subject: [PATCH 25/46] Update .mailmap --- .mailmap | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.mailmap b/.mailmap index d4fb062..9ca08ed 100644 --- a/.mailmap +++ b/.mailmap @@ -1,3 +1,4 @@ -chhan11 -chhan11 -chhan11 +Christoffer +Christoffer +Christoffer +Christoffer From cf8fed5cc57f703c6c19026bde81c6fd4de56f33 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 19:06:09 +0200 Subject: [PATCH 26/46] New Acronym: NAT --- acronyms.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/acronyms.tex b/acronyms.tex index 72651b1..61f4d75 100644 --- a/acronyms.tex +++ b/acronyms.tex @@ -100,6 +100,7 @@ \newacronym{msg}{msg}{message} \newacronym{mst}{MST}{Multiple Spanning Tree} \newacronym{nac}{NAC}{Network Admission Control} +\newacronym{nat}{NAT}{Network Address Translation} \newacronym{nd}{ND}{Neighbor Discovery} \newacronym{nlri}{NLRI}{Network Layer Reachability Information} \newacronym{nms}{NMS}{Network Management Software} From 18ee98e9cc6b84b3df56fcc23ee8a58847f29860 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 19:06:16 +0200 Subject: [PATCH 27/46] New Acronym: NIC --- acronyms.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/acronyms.tex b/acronyms.tex index 61f4d75..3e83b37 100644 --- a/acronyms.tex +++ b/acronyms.tex @@ -102,6 +102,7 @@ \newacronym{nac}{NAC}{Network Admission Control} \newacronym{nat}{NAT}{Network Address Translation} \newacronym{nd}{ND}{Neighbor Discovery} +\newacronym{nic}{NIC}{Network Interface Card} \newacronym{nlri}{NLRI}{Network Layer Reachability Information} \newacronym{nms}{NMS}{Network Management Software} \newacronym{nsa}{NSA}{National Security Agency} From 34ab3e3a2debef14f1f816f2f4b3c2bd3b33ded4 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 19:06:52 +0200 Subject: [PATCH 28/46] Fixes to get document to compile --- chapter/ip.tex | 6 +++--- chapter/layer2.tex | 1 + chapter/layer3.tex | 6 +++--- .../ipv6_address_leading_zeros.png | Bin .../ipv6_header.png} | Bin references-websites.bib | 4 ++-- 6 files changed, 9 insertions(+), 8 deletions(-) rename img/{ipv6 => wikimediacommons}/ipv6_address_leading_zeros.png (100%) rename img/{ipv6/Ipv6_header.png => wikimediacommons/ipv6_header.png} (100%) diff --git a/chapter/ip.tex b/chapter/ip.tex index aae7ecf..6be7eda 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -4,7 +4,7 @@ \gls{ipv6} has recently been defined in an updated \rfc{8200} which obsoletes several of the older \gls{rfc} documents regarding \gls{ipv6}. -\gls{ipv6} came about in 1998 when the original \rfc{2460} was published. It aims to provide globally route-able addresses (i.e. no need for \gls{nat}) and provides a hierarchical way to allocate address prefixes in a way which makes it simple to do route aggregation\footnote{This helps limits the size of the Internet's global routing table!}.\cite{wiki:IPv6} +\gls{ipv6} came about in 1998 when the original \rfc{2460} was published. It aims to provide globally route-able addresses (i.e. no need for \gls{nat}) and provides a hierarchical way to allocate address prefixes in a way which makes it simple to do route aggregation.\footnote{This helps limits the size of the Internet's global routing table!}\cite{wiki:IPv6} \wikicommons[An illustration of an example IPv6 address with leading zeros in the binary rendering]{ipv6_address_leading_zeros} @@ -35,7 +35,7 @@ Have 3 different forms: \subsection{Packet Headers}\cite{IPv6Pack77:online} -\wikicommons{Ipv6_header} +\wikicommons{ipv6_header} \begin{enumerate} \item \textbf{Version} -- 1-byte field containing '6'. @@ -81,7 +81,7 @@ Have 3 different forms: \begin{itemize} \item Consist of the prefix \texttt{ff02::1:ff00:0/104} for the first 104 bits. \item The last 24 bits represents the target address within the prefix. - \item Solicited-node multicast address is segment only traffic. I.e. the traffic does not flow \textit{between \gls{l3} \gls{ip} segments. + \item Solicited-node multicast address is segment only traffic. I.e. the traffic does not flow \textit{between} \gls{l3} \gls{ip} segments. \item Used in combination with \gls{nd} to replace \glspl{ip4} \gls{arp} functionality. \end{itemize} \end{itemize} diff --git a/chapter/layer2.tex b/chapter/layer2.tex index 84876bc..da6ee4f 100644 --- a/chapter/layer2.tex +++ b/chapter/layer2.tex @@ -17,6 +17,7 @@ Of course you can \textit{disable} \gls{vtp} altogether. Key things to be aware of \textit{before} enabling \gls{vtp} in your environment is to make double sure of only having 1 \gls{vtp} domain. \textbf{If} 2 or more \gls{vtp} domains exists. Be triple sure to separate them! As to avoid having an \gls{vtp} server \gls{db} overridden with data from another \gls{vtp} domain. The three \gls{vtp} modes \textit{operates} as follow + \begin{itemize} \item Transparent \begin{itemize} diff --git a/chapter/layer3.tex b/chapter/layer3.tex index af035a4..e637ddb 100644 --- a/chapter/layer3.tex +++ b/chapter/layer3.tex @@ -12,7 +12,7 @@ \wikicommons{BGP_FSM} The protocol of the internet used since 1994.\cite{wiki:Border_Gateway_Protocol} -Currently based upon \rfc{4271} with updates following in \rcf{6286} \rfc{6608}, \rfc{6793}, \rfc{7606}, \rfc{7607}, \rfc{7705}. +Currently based upon \rfc{4271} with updates following in \rfc{6286} \rfc{6608}, \rfc{6793}, \rfc{7606}, \rfc{7607}, \rfc{7705}. @@ -29,11 +29,11 @@ Currently based upon \rfc{4271} with updates following in \rcf{6286} \rfc{6608}, \begin{itemize} \item Routes can be aggregated between \Glspl{as}. \item Properties can be changed on the fly by mathing - \begin{enumerate*}[label={\alph*)}] + \begin{enumerate}[label={\alph*)}] \item \Gls{bgp} communities, \item \Gls{ip} prefix, \item \Gls{bgp} as-path, - \end{enumerate*} + \end{enumerate} \end{itemize} \item \end{itemize} diff --git a/img/ipv6/ipv6_address_leading_zeros.png b/img/wikimediacommons/ipv6_address_leading_zeros.png similarity index 100% rename from img/ipv6/ipv6_address_leading_zeros.png rename to img/wikimediacommons/ipv6_address_leading_zeros.png diff --git a/img/ipv6/Ipv6_header.png b/img/wikimediacommons/ipv6_header.png similarity index 100% rename from img/ipv6/Ipv6_header.png rename to img/wikimediacommons/ipv6_header.png diff --git a/references-websites.bib b/references-websites.bib index b997028..1494dbe 100644 --- a/references-websites.bib +++ b/references-websites.bib @@ -15,10 +15,10 @@ } @misc{IPv6Pack77:online, - author = {}, + author = {Oracle}, title = {IPv6 Packet Header Format - System Administration Guide: IP Services}, howpublished = {\url{http://docs.oracle.com/cd/E23823_01/html/816-4554/ipv6-ref-2.html}}, month = {}, - year = {}, + year = {2010}, note = {(Accessed on 07/23/2017)} } \ No newline at end of file From c10f94a7893e055925b045fd472e49998b751942 Mon Sep 17 00:00:00 2001 From: chhan11 Date: Sat, 24 Jun 2017 13:17:35 +0200 Subject: [PATCH 29/46] Fix: Wrong use of \url in \rfc{}. Corrected to \href --- commands.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands.tex b/commands.tex index e21dfd8..0857e3b 100644 --- a/commands.tex +++ b/commands.tex @@ -128,4 +128,4 @@ License: \texttt{\href{https://creativecommons.org/licenses/by-sa/3.0/}{CC BY-SA % Usage: -\newcommand{\rfc}[1]{RFC #1\footnote{\url{https://tools.ietf.org/html/rfc#1}{tools.ietf.org/html/rfc#1}}} +\newcommand{\rfc}[1]{RFC #1\footnote{\href{https://tools.ietf.org/html/rfc#1}{tools.ietf.org/html/rfc#1}}} From e5ed97fa563e20d475c1e9c6c02a5da5ce6a5a65 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 19:49:21 +0200 Subject: [PATCH 30/46] ipv6 multicast --- chapter/ip.tex | 25 +++++++++++++++++++++++++ references-websites.bib | 9 +++++++++ 2 files changed, 34 insertions(+) diff --git a/chapter/ip.tex b/chapter/ip.tex index 6be7eda..c620d0e 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -97,6 +97,31 @@ Have 3 different forms: \end{itemize} \end{itemize} +\subsubsection{Multicast} + +\begin{itemize} + \item Address format:\cite{IPv6Addr96:online} + \begin{enumerate} + \item \texttt{8-bits: 1111 1111} -- Identifies the address as multicast. + \item \texttt{4-bits: FLGS} -- Set of 4 flags. + \begin{enumerate} + \item \texttt{0}: Must be zero. + \item \texttt{0}: Must be zero. + \item \texttt{P}: Can be either '1' or '0'. + \begin{itemize} + \item \texttt{0} -- Multicast address that is \textit{not} assigned based on the network prefix. + \item \texttt{1} -- Multicast address that is assigned based on the network prefix. + \end{itemize} + \item \texttt{T}: If the P-flag is '1'. T-flag must be '1', too. + \end{enumerate} + \item \texttt{4-bits: SCOP} + \item \texttt{8-bits: Reserved} -- Reserved value of zero.\footnote{Yet to make sense for me...} + \item \texttt{8-bits: Plen} -- Number of bits in the site prefix that identify the subnet, for a multicast address that is assigned based on a site prefix. + \item \texttt{64-bits: Network prefix} + \item \texttt{32-bits: Group ID} -- Identifier for the multicast group, either permanent or dynamic + \end{enumerate} +\end{itemize} + \subsection{AAAA} \gls{dns6} had 2 running proposals when first proposed, \rfc{2874} (1st), \rfc{3364} (later discussion), and \rfc{3363} thou deprecated this proposal to experimental status. diff --git a/references-websites.bib b/references-websites.bib index 1494dbe..2bd3a4b 100644 --- a/references-websites.bib +++ b/references-websites.bib @@ -21,4 +21,13 @@ month = {}, year = {2010}, note = {(Accessed on 07/23/2017)} +} + +@misc{IPv6Addr96:online, + author = {Oracle}, + title = {IPv6 Addressing Formats Beyond the Basics - System Administration Guide: IP Services}, + howpublished = {\url{http://docs.oracle.com/cd/E23823_01/html/816-4554/ipv6-ref-77.html#ipv6-overview-201}}, + month = {}, + year = {2010}, + note = {(Accessed on 07/23/2017)} } \ No newline at end of file From 69c543098a6aa9d101479317a706613e8de49c48 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 19:49:39 +0200 Subject: [PATCH 31/46] Reformatted text --- chapter/ip.tex | 59 +++++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/chapter/ip.tex b/chapter/ip.tex index c620d0e..fa69d46 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -61,39 +61,40 @@ Have 3 different forms: \subsection{Address Types} +\subsubsection{Link-Local} + \begin{itemize} - \item \itemhead[]{Link-Local} + \item Address assigned from the \texttt{fe80::/10} prefix. + \item Either derived with the EUI-64\footnote{The EUI-64 involves the MAC address and injecting fffe into the middle making it 64 bits and using this as host bits} method or randomly selected. Then assigned after \gls{dad} has been run on the network segment. + \item \itemhead[]{Unique Link Local}\cite{wiki:Unique_local_address} \begin{itemize} - \item Address assigned from the \texttt{fe80::/10} prefix. - \item Either derived with the EUI-64\footnote{The EUI-64 involves the MAC address and injecting fffe into the middle making it 64 bits and using this as host bits} method or randomly selected. Then assigned after \gls{dad} has been run on the network segment. - \item \itemhead[]{Unique Link Local}\cite{wiki:Unique_local_address} - \begin{itemize} - \item Defined as block \texttt{fc00::/7}. See \rfc{4193}. - \item \gls{ula} is \glspl{ip6} counter-part to \glspl{ip4} \rfc{1918} address space. - \item Only usable within a private network. - \item Divided into 2 /8 \gls{ip6} blocks. - \begin{enumerate} - \item \texttt{fc00::/8} -- Not \textit{yet} officially allocated/defined by the \gls{ietf}. - \item \texttt{fd00::/8} -- Defined as /48 prefixes. The last 40 bits is randomly generated and appended to the first 8 significant bits {\small (i.e. \texttt{0xFD} aka. \texttt{11111101})}. - \end{enumerate} - \end{itemize} - \item \itemhead[]{Solicited-node multicast address}\cite{wiki:Solicited-node_multicast_address} - \begin{itemize} - \item Consist of the prefix \texttt{ff02::1:ff00:0/104} for the first 104 bits. - \item The last 24 bits represents the target address within the prefix. - \item Solicited-node multicast address is segment only traffic. I.e. the traffic does not flow \textit{between} \gls{l3} \gls{ip} segments. - \item Used in combination with \gls{nd} to replace \glspl{ip4} \gls{arp} functionality. - \end{itemize} + \item Defined as block \texttt{fc00::/7}. See \rfc{4193}. + \item \gls{ula} is \glspl{ip6} counter-part to \glspl{ip4} \rfc{1918} address space. + \item Only usable within a private network. + \item Divided into 2 /8 \gls{ip6} blocks. + \begin{enumerate} + \item \texttt{fc00::/8} -- Not \textit{yet} officially allocated/defined by the \gls{ietf}. + \item \texttt{fd00::/8} -- Defined as /48 prefixes. The last 40 bits is randomly generated and appended to the first 8 significant bits {\small (i.e. \texttt{0xFD} aka. \texttt{11111101})}. + \end{enumerate} \end{itemize} - \item \itemhead[]{Global Addressing} + \item \itemhead[]{Solicited-node multicast address}\cite{wiki:Solicited-node_multicast_address} \begin{itemize} - \item Address types - \begin{itemize} - \item Unicast: Identifies each \gls{nic}. - \item Anycast: Identifies a group of \glspl{nic} belonging to the same group and providing the same services/content/applications. Nearest one to source is used. - \item Multicast: Used to deliver content to multiple \glspl{nic} at once. Traffic is a single flow from the source (i.e. not multiple unicast streams). - \item Broadcast: \textit{Not} implemented. Replaced by use of multicast groups. - \end{itemize} + \item Consist of the prefix \texttt{ff02::1:ff00:0/104} for the first 104 bits. + \item The last 24 bits represents the target address within the prefix. + \item Solicited-node multicast address is segment only traffic. I.e. the traffic does not flow \textit{between} \gls{l3} \gls{ip} segments. + \item Used in combination with \gls{nd} to replace \glspl{ip4} \gls{arp} functionality. + \end{itemize} +\end{itemize} + +\subsubsection{Global Addressing} + +\begin{itemize} + \item Address types + \begin{itemize} + \item Unicast: Identifies each \gls{nic}. + \item Anycast: Identifies a group of \glspl{nic} belonging to the same group and providing the same services/content/applications. Nearest one to source is used. + \item Multicast: Used to deliver content to multiple \glspl{nic} at once. Traffic is a single flow from the source (i.e. not multiple unicast streams). + \item Broadcast: \textit{Not} implemented. Replaced by use of multicast groups. \end{itemize} \end{itemize} From d68add6e53f42e28a2ccc676b0254dc964f219a9 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 19:50:19 +0200 Subject: [PATCH 32/46] Added italic style to keywords 'is' and 'not' --- chapter/ip.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chapter/ip.tex b/chapter/ip.tex index fa69d46..8a60edd 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -111,7 +111,7 @@ Have 3 different forms: \item \texttt{P}: Can be either '1' or '0'. \begin{itemize} \item \texttt{0} -- Multicast address that is \textit{not} assigned based on the network prefix. - \item \texttt{1} -- Multicast address that is assigned based on the network prefix. + \item \texttt{1} -- Multicast address that \textit{is} assigned based on the network prefix. \end{itemize} \item \texttt{T}: If the P-flag is '1'. T-flag must be '1', too. \end{enumerate} From 0ea4b94c2b91aab9376b6d7a8582e7e814cda80d Mon Sep 17 00:00:00 2001 From: chhan11 Date: Sat, 24 Jun 2017 13:17:35 +0200 Subject: [PATCH 33/46] Fix: Wrong use of \url in \rfc{}. Corrected to \href --- commands.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/commands.tex b/commands.tex index e21dfd8..0857e3b 100644 --- a/commands.tex +++ b/commands.tex @@ -128,4 +128,4 @@ License: \texttt{\href{https://creativecommons.org/licenses/by-sa/3.0/}{CC BY-SA % Usage: -\newcommand{\rfc}[1]{RFC #1\footnote{\url{https://tools.ietf.org/html/rfc#1}{tools.ietf.org/html/rfc#1}}} +\newcommand{\rfc}[1]{RFC #1\footnote{\href{https://tools.ietf.org/html/rfc#1}{tools.ietf.org/html/rfc#1}}} From 60777eebb5a08148fc2cd4ce4c96c8c9fb44e44b Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 20:05:46 +0200 Subject: [PATCH 34/46] updated structure.tex \usepackage{dblfnote} % https://tex.stackexchange.com/a/8180 --- structure.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/structure.tex b/structure.tex index 2d3e50a..30263a5 100644 --- a/structure.tex +++ b/structure.tex @@ -40,6 +40,7 @@ \usepackage[toc,acronym,footnote,nomain]{glossaries} % Load the package with the acronym option \usepackage{chngcntr} \usepackage[toc]{multitoc} +\usepackage{dblfnote} % https://tex.stackexchange.com/a/8180 \usepackage[unicode=false, colorlinks=true, linkcolor=darkgray, From 8873696e2e98b02fa3b6eb190b1381b191a25d5a Mon Sep 17 00:00:00 2001 From: Christoffer Date: Wed, 26 Jul 2017 16:37:44 +0000 Subject: [PATCH 35/46] Update ip.tex something Bout teredo --- chapter/ip.tex | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/chapter/ip.tex b/chapter/ip.tex index 8a60edd..c38794a 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -123,6 +123,10 @@ Have 3 different forms: \end{enumerate} \end{itemize} +\subsubsection[Teredo]{Teredo addressing \& tunneling} + +ip6 has a feature of being able to route by use of teredo tunnels over ip4 addresses. So that clients supporting ip6 on either end, but not the fabric in the middle. Can append the ip4 ip to a special ip6 prefix also called teredo tunneling run ip traffic across ip4. + \subsection{AAAA} \gls{dns6} had 2 running proposals when first proposed, \rfc{2874} (1st), \rfc{3364} (later discussion), and \rfc{3363} thou deprecated this proposal to experimental status. From e8596da80ce34c0367ce09345bb6e16bde9a9f31 Mon Sep 17 00:00:00 2001 From: chhan11 Date: Fri, 28 Jul 2017 18:32:49 +0200 Subject: [PATCH 36/46] Deleted Feature.md --- .gitlab/issue_templates/Feature.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .gitlab/issue_templates/Feature.md diff --git a/.gitlab/issue_templates/Feature.md b/.gitlab/issue_templates/Feature.md deleted file mode 100644 index e69de29..0000000 From 582be1644340b9ea20397d021ce3fa29603ba52d Mon Sep 17 00:00:00 2001 From: chhan11 Date: Fri, 28 Jul 2017 18:32:38 +0200 Subject: [PATCH 37/46] Deleted Bug.md --- .gitlab/issue_templates/Bug.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .gitlab/issue_templates/Bug.md diff --git a/.gitlab/issue_templates/Bug.md b/.gitlab/issue_templates/Bug.md deleted file mode 100644 index e69de29..0000000 From 738bb40243dd70f645517468ca8f8cae39571029 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Sun, 23 Jul 2017 20:10:17 +0200 Subject: [PATCH 40/46] Notes pertaining to future 0.4.0 release --- CHANGELOG.md | 7 ++++++- README.md | 2 +- frontpage.tex | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eda9923..6ec1a0a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - GLBP - VRRP +## [0.4.0] - 2017-xx-xx +### Added +- Section bout IPv6 + ## [0.3.1] - 2017-07-19 ## Removed - Removed suporvisor from frontpage @@ -53,7 +57,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Initial version - Section: Spanning Tree -[Unreleased]: https://gitlab.com/netravnen/CiscoLabNotes/compare/v0.3.1...HEAD +[Unreleased]: https://gitlab.com/netravnen/CiscoLabNotes/compare/v0.4.0...HEAD +[0.4.0]: https://gitlab.com/netravnen/CiscoLabNotes/compare/v0.3.1...v0.4.0 [0.3.1]: https://gitlab.com/netravnen/CiscoLabNotes/compare/v0.3.0...v0.3.1 [0.3.0]: https://gitlab.com/netravnen/CiscoLabNotes/compare/v0.2.2...v0.3.0 [0.2.2]: https://gitlab.com/netravnen/CiscoLabNotes/compare/v0.2.1...v0.2.2 diff --git a/README.md b/README.md index 1786535..3c62024 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [![GitHub tag](https://img.shields.io/github/tag/netravnen/CiscoLabNotes.svg)](https://gitlab.com/netravnen/CiscoLabNotes) [![license](https://img.shields.io/github/license/netravnen/CiscoLabNotes.svg)](https://gitlab.com/netravnen/CiscoLabNotes/blob/master/LICENSE.md) -[![GitHub commits](https://img.shields.io/github/commits-since/netravnen/CiscoLabNotes/v0.3.1.svg)](https://gitlab.com/netravnen/CiscoLabNotes/compare/v0.3.1...HEAD) +[![GitHub commits](https://img.shields.io/github/commits-since/netravnen/CiscoLabNotes/v0.4.0.svg)](https://gitlab.com/netravnen/CiscoLabNotes/compare/v0.4.0...HEAD) # URLs - [Gitlab][repo-origin] diff --git a/frontpage.tex b/frontpage.tex index 272c9b1..b820ea6 100644 --- a/frontpage.tex +++ b/frontpage.tex @@ -1,13 +1,13 @@ \DTMsavenow{now} -\title{r17dinh409} +\title{Networking with switches and routers, automation and IPv4/6} \def\thesubject{My Notes going along with learning Cisco Networking} \def\theinstitution{ZBC} \author{chhan11 } \def\thesupervisor{none} -\def\theversion{v0.3.1} +\def\theversion{v0.4.0} \date{{\footnotesize Last release \theversion\\% \texttt{\color{Gray}Generated \utccurrenttime}}} From c1d95853d33c5dff97567b2a7ba17cf7dde89d0d Mon Sep 17 00:00:00 2001 From: Christoffer Date: Fri, 28 Jul 2017 19:02:51 +0000 Subject: [PATCH 41/46] Delete Layout Changes.md --- .gitlab/issue_templates/Layout Changes.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .gitlab/issue_templates/Layout Changes.md diff --git a/.gitlab/issue_templates/Layout Changes.md b/.gitlab/issue_templates/Layout Changes.md deleted file mode 100644 index e69de29..0000000 From a0075ab6c8e4402c30adc6e782b76ae4f1f5fc34 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Fri, 28 Jul 2017 19:03:16 +0000 Subject: [PATCH 42/46] Delete Cherrypick.md --- .gitlab/merge_request_templates/Cherrypick.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .gitlab/merge_request_templates/Cherrypick.md diff --git a/.gitlab/merge_request_templates/Cherrypick.md b/.gitlab/merge_request_templates/Cherrypick.md deleted file mode 100644 index e69de29..0000000 From cd5cf76350db90e1d99b1fa01cef525c9d834c03 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Fri, 28 Jul 2017 19:03:24 +0000 Subject: [PATCH 43/46] Delete Bugfix.md --- .gitlab/merge_request_templates/Bugfix.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .gitlab/merge_request_templates/Bugfix.md diff --git a/.gitlab/merge_request_templates/Bugfix.md b/.gitlab/merge_request_templates/Bugfix.md deleted file mode 100644 index e69de29..0000000 From a783234203d53a6e5d4d1949a83942ebddff17db Mon Sep 17 00:00:00 2001 From: Christoffer Date: Mon, 7 Aug 2017 22:37:28 +0200 Subject: [PATCH 44/46] Code blocks ip4 and ip6 included --- chapter/ip.tex | 10 +++++++++- code/ipaddressblocks.txt | 13 ------------- code/ipaddressblocks6.txt | 15 +++++++++++++++ commands.tex | 6 ++++++ 4 files changed, 30 insertions(+), 14 deletions(-) create mode 100644 code/ipaddressblocks6.txt diff --git a/chapter/ip.tex b/chapter/ip.tex index c38794a..7a524fe 100644 --- a/chapter/ip.tex +++ b/chapter/ip.tex @@ -135,4 +135,12 @@ The winning one was \rfc{3596} with the idea of doing \textit{quad}-A records an The idea is fx. \texttt{2001:db8:ef::2} is noted in ip6.arpa as \texttt{2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.f.e.0.0.8.b.d.0.1.0.0.2.ip6.arpa}. {\small Note the used of '.' between \textit{each} \textit{hexadecimal} character used, and that \textit{all zeroes} has been included. ip6.arpa does not allow any characters to be omitted from the original full-length \gls{ip6} address.}\footnote{Found description \href{https://stackoverflow.com/q/6619682}{here} on stackoverflow.com/q/6619682.} -\section[IPv4]{Internet Protocol v4} \ No newline at end of file +\subsection{Addresses} + +\plaintextinput{ipaddressblocks6} + +\section[IPv4]{Internet Protocol v4} + +\subsection{Addresses} + +\plaintextinput{ipaddressblocks} \ No newline at end of file diff --git a/code/ipaddressblocks.txt b/code/ipaddressblocks.txt index 12e5fed..0b9dab9 100644 --- a/code/ipaddressblocks.txt +++ b/code/ipaddressblocks.txt @@ -20,16 +20,3 @@ Address Block Present Use Reference 240.0.0.0/4 Reserved for Future Use RFC 1112, Section 4 255.255.255.255/32 Limited Broadcast RFC 0919, Section 7 RFC 0922, Section 7 -::1/128 Loopback Address RFC 4291 -::/128 Unspecified Address RFC 4291 -64:ff9b::/96 IPv4-IPv6 Translat. RFC 6052 -::ffff:0:0/96 IPv4-mapped Address RFC 4291 -100::/64 Discard-Only Address Block RFC 6666 -2001::/23 IETF Protocol Assignments RFC 2928 -2001::/32 TEREDO RFC 4380 -2001:2::/48 Benchmarking RFC 5180 -2001:db8::/32 Documentation RFC 3849 -2001:10::/28 ORCHID RFC 4843 -2002::/16 [2] 6to4 RFC 3056 -fc00::/7 Unique-Local RFC 4193 -fe80::/10 Linked-Scoped Unicast RFC 4291 diff --git a/code/ipaddressblocks6.txt b/code/ipaddressblocks6.txt new file mode 100644 index 0000000..9dd301e --- /dev/null +++ b/code/ipaddressblocks6.txt @@ -0,0 +1,15 @@ +Address Block Present Use Reference +-------------------------------------------------------------------- +::1/128 Loopback Address RFC 4291 +::/128 Unspecified Address RFC 4291 +64:ff9b::/96 IPv4-IPv6 Translat. RFC 6052 +::ffff:0:0/96 IPv4-mapped Address RFC 4291 +100::/64 Discard-Only Address Block RFC 6666 +2001::/23 IETF Protocol Assignments RFC 2928 +2001::/32 TEREDO RFC 4380 +2001:2::/48 Benchmarking RFC 5180 +2001:db8::/32 Documentation RFC 3849 +2001:10::/28 ORCHID RFC 4843 +2002::/16 [2] 6to4 RFC 3056 +fc00::/7 Unique-Local RFC 4193 +fe80::/10 Linked-Scoped Unicast RFC 4291 diff --git a/commands.tex b/commands.tex index 0857e3b..bc88bf2 100644 --- a/commands.tex +++ b/commands.tex @@ -95,6 +95,7 @@ License: \texttt{\href{https://creativecommons.org/licenses/by-sa/3.0/}{CC BY-SA \lstnewenvironment{txt}{\lstset{style=plaintxt}}{} + % Usage: % Enviroment @var cisco \lstnewenvironment{cisco}{\lstset{language=cisco}}{} @@ -129,3 +130,8 @@ License: \texttt{\href{https://creativecommons.org/licenses/by-sa/3.0/}{CC BY-SA % Usage: \newcommand{\rfc}[1]{RFC #1\footnote{\href{https://tools.ietf.org/html/rfc#1}{tools.ietf.org/html/rfc#1}}} + + +% Usage: +% https://tex.stackexchange.com/a/75349 +\newcommand{\plaintextinput}[1]{\lstinputlisting[language={},style=plaintxt]{code/#1.txt}} From 142e46b51d99ffb184ab4debd51649d1c04a12fc Mon Sep 17 00:00:00 2001 From: Christoffer Date: Tue, 8 Aug 2017 13:03:43 +0200 Subject: [PATCH 45/46] New chapter Linux --- main.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/main.tex b/main.tex index 66d2d61..06521e4 100644 --- a/main.tex +++ b/main.tex @@ -33,6 +33,7 @@ \include{chapter/wireless} \include{chapter/voip} \include{chapter/baseconf} +\include{chapter/linux} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % From 292cc891a27bdf2efff5a7eba6c59d7c2b53f948 Mon Sep 17 00:00:00 2001 From: Christoffer Date: Tue, 8 Aug 2017 13:03:59 +0200 Subject: [PATCH 46/46] Linux chapter: 1st section: upgrading the kernel --- chapter/linux.tex | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 chapter/linux.tex diff --git a/chapter/linux.tex b/chapter/linux.tex new file mode 100644 index 0000000..9733274 --- /dev/null +++ b/chapter/linux.tex @@ -0,0 +1,34 @@ +\chapter{Linux} + +\section{Kernel Upgrades} + +\begin{txt} + # LIST KERNELS ON /boot PARTITION + + dpkg --list | grep linux-image + dpkg --list | grep linux-headers +\end{txt} + +\begin{txt} + # REMOVE SELECTED KERNEL VERSIONS FROM BOOT PARTITION + + sudo apt-get purge linux-image-4.4.0-{75,78,79} + sudo apt-get purge linux-image-extra-4.4.0-{75,78,79} + sudo apt-get purge linux-headers-4.4.0-{75,78,79} + + or + + sudo apt autoremove [-f] +\end{txt} + +\begin{txt} + # My one-liner to remove old kernels (this also frees up disk space) + # https://askubuntu.com/a/254585 + + dpkg --list | grep linux-image | awk '{ print \$2 }' | sort -V | sed -n '/'`uname -r`'/q;p' | xargs sudo apt-get -y purge +\end{txt} + +\begin{txt} + # Remember to update grub2 configuration + sudo update-grub2 +\end{txt} \ No newline at end of file