From f69f47a8e61b60a47c4ff575df11269e46a88117 Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Sat, 3 Jun 2023 19:42:05 +0200 Subject: [PATCH] update project --- gui/metrics/ospfv3.py | 218 ++++++++++++++++++++++ gui/wato/ospfv3.py | 373 ++++++++++++++++++++++++++++++++++++++ ospfv3-0.4.0-20230603.mkp | Bin 0 -> 13111 bytes ospfv3.mkp | Bin 13106 -> 13111 bytes packages/ospfv3 | 9 +- 5 files changed, 595 insertions(+), 5 deletions(-) create mode 100644 gui/metrics/ospfv3.py create mode 100644 gui/wato/ospfv3.py create mode 100644 ospfv3-0.4.0-20230603.mkp diff --git a/gui/metrics/ospfv3.py b/gui/metrics/ospfv3.py new file mode 100644 index 0000000..bbb0e8e --- /dev/null +++ b/gui/metrics/ospfv3.py @@ -0,0 +1,218 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# License: GNU General Public License v2 +# +# Author: thl-cmk[at]outlook[dot]com +# URL : https://thl-cmk.hopto.org +# Date : 2019-11-02 +# +# OSPFv3 plugin metrics +# +# 2023-06-03: moved gui files to ~/local/lib/chek_mk/gui/plugins/... +# + +from cmk.gui.i18n import _ + +from cmk.gui.plugins.metrics.utils import ( + metric_info, + graph_info, + perfometer_info +) + + +##################################################################################################################### +# +# define metrics for perfdata +# +##################################################################################################################### + +metric_info['ospfv3_general_lsacount'] = { + 'title': _('LSA count'), + 'unit': 'count', + 'color': '26/a', +} +metric_info['ospfv3_general_rxnewlsas'] = { + 'title': _('receive new LSA count'), + 'unit': 'count', + 'color': '16/a', +} +metric_info['ospfv3_general_extlsacount'] = { + 'title': _('Etxternal LSA count'), + 'unit': 'count', + 'color': '16/a', +} + +metric_info['ospfv3_events'] = { + 'title': _('Events'), + 'unit': 'count', + 'color': '26/a', +} +metric_info['ospfv3_lsretransqlen'] = { + 'title': _('Queue length'), + 'unit': 'count', + 'color': '16/a', +} + +metric_info['ospfv3_interface_events'] = { + 'title': _('Events'), + 'unit': 'count', + 'color': '26/a', +} +metric_info['ospfv3_interface_linkscopelsacount'] = { + 'title': _('Link LSA count'), + 'unit': 'count', + 'color': '16/a', +} + +metric_info['ospfv3_area_spfruns'] = { + 'title': _('SPF runs'), + 'unit': 'count', + 'color': '26/a', +} +metric_info['ospfv3_area_bdrrtcount'] = { + 'title': _('# of ABRs'), + 'unit': 'count', + 'color': '11/a', +} +metric_info['ospfv3_area_asbdrrtrcount'] = { + 'title': _('# of ASBRs'), + 'unit': 'count', + 'color': '22/a', +} +metric_info['ospfv3_area_scopelsacount'] = { + 'title': _('Area LSA count'), + 'unit': 'count', + 'color': '23/a', +} +metric_info['ospfv3_area_nssatranslatorevents'] = { + 'title': _('NSSA translator events'), + 'unit': 'count', + 'color': '11/a', +} + +###################################################################################################################### +# +# how to graph perdata +# +###################################################################################################################### + + +graph_info['ospfv3_general'] = { + 'title': _('LSA count'), + 'metrics': [ + ('ospfv3_general_lsacount', 'line'), + ('ospfv3_general_rxnewlsas', 'line'), + ('ospfv3_general_extlsacount', 'line'), + ], +} + +graph_info['ospfv3_events'] = { + 'title': _('OSPFv3 Events'), + 'metrics': [ + ('ospfv3_events', 'area'), + ], +} +graph_info['ospfv3_lsretransqlen'] = { + 'title': _('Link state retransmission queue length'), + 'metrics': [ + ('ospfv3_lsretransqlen', 'area'), + ], +} +graph_info['ospfv3_interface'] = { + 'title': _('Link scope LSA count'), + 'metrics': [ + ('ospfv3_interface_linkscopelsacount', 'area'), + ], +} +graph_info['ospfv3_area_spfruns'] = { + 'title': _('SPF runs'), + 'metrics': [ + ('ospfv3_area_spfruns', 'area'), + ], +} +graph_info['ospfv3_area_border'] = { + 'title': _('Border router count'), + 'metrics': [ + ('ospfv3_area_bdrrtcount', 'area'), + ('ospfv3_area_asbdrrtrcount', '-area'), + ], +} +graph_info['ospfv3_area_scopelsacount'] = { + 'title': _('Area scope LSA count'), + 'metrics': [ + ('ospfv3_area_scopelsacount', 'area'), + ], +} +graph_info['ospfv3_area_nssatranslatorevents'] = { + 'title': _('NSSA translator events'), + 'metrics': [ + ('ospfv3_area_nssatranslatorevents', 'area'), + ], +} + +###################################################################################################################### +# +# define perf-o-meter +# +###################################################################################################################### + +perfometer_info.append(('stacked', [ + { + 'type': 'linear', + 'segments': ['ospfv3_general_lsacount', + ], + 'total': 100, + }, + { + 'type': 'linear', + 'segments': ['ospfv3_general_extlsacount', + ], + 'total': 100, + } +])) + +perfometer_info.append(('stacked', [ + { + 'type': 'linear', + 'segments': ['ospfv3_events', + ], + 'total': 100, + }, + { + 'type': 'linear', + 'segments': ['ospfv3_lsretransqlen', + ], + 'total': 100, + } +])) + +perfometer_info.append(('stacked', [ + { + 'type': 'linear', + 'segments': ['ospfv3_interface_events', + ], + 'total': 1000, + }, + { + 'type': 'linear', + 'segments': ['ospfv3_interface_linkscopelsacount', + ], + 'total': 1000, + } +])) + +perfometer_info.append(('stacked', [ + { + 'type': 'linear', + 'segments': ['ospfv3_area_spfruns', + ], + 'total': 1000, + }, + { + 'type': 'linear', + 'segments': ['ospfv3_area_scopelsacount', + ], + 'total': 1000, + } +])) diff --git a/gui/wato/ospfv3.py b/gui/wato/ospfv3.py new file mode 100644 index 0000000..ce548ce --- /dev/null +++ b/gui/wato/ospfv3.py @@ -0,0 +1,373 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# License: GNU General Public License v2 +# +# Author: thl-cmk[at]outlook[dot]com +# URL : https://thl-cmk.hopto.org +# Date : 2021-09-28 +# +# wato plugin for ospfv3 check +# +# 2022-11-30: fixed CheckParameterRulespecWithoutItem (from CheckParameterRulespecWithItem) +# 2023-06-03: moved gui files to ~/local/lib/chek_mk/gui/plugins/... +# +from cmk.gui.i18n import _ +from cmk.gui.valuespec import ( + Dictionary, + TextAscii, + ListOf, + Tuple, + TextUnicode, + MonitoringState, + FixedValue, +) + +from cmk.gui.plugins.wato.utils import ( + CheckParameterRulespecWithItem, + CheckParameterRulespecWithoutItem, + rulespec_registry, + RulespecGroupCheckParametersNetworking, + RulespecGroupCheckParametersDiscovery, + HostRulespec, +) + +neighbor_states = ('neighbor_states', + Dictionary( + title=_('State to report for OSPF neighbor state'), + help=_('Map each OSPF state to a CheckMK monitoring state'), + elements=[ + ('1', + MonitoringState( + title=_('1 - down'), + help=_( + 'This is the first OSPF neighbor state. It means that no information (hellos) has ' + 'been received from this neighbor, but hello packets can still be sent to the ' + 'neighbor in this state. During the fully adjacent neighbor state, if a router ' + 'doesn\'t receive hello packet from a neighbor within the RouterDeadInterval time ' + '(RouterDeadInterval = 4*HelloInterval by default) or if the manually configured ' + 'neighbor is being removed from the configuration, then the neighbor state changes ' + 'from Full to Down. Default monitoring state is "CRIT"'), + default_value=2, + )), + ('2', + MonitoringState( + title=_('2 - attempt'), + help=_( + 'This state is only valid for manually configured neighbors in an NBMA ' + 'environment. In Attempt state, the router sends unicast hello packets every poll ' + 'interval to the neighbor, from which hellos have not been received within the ' + 'dead interval. Default monitoring state is "WARN"'), + default_value=1, + )), + ('3', + MonitoringState( + title=_('3 - init'), + help=_( + 'This state specifies that the router has received a hello packet from its ' + 'neighbor, but the receiving router\'s ID was not included in the hello packet. ' + 'When a router receives a hello packet from a neighbor, it should list the ' + 'sender\'s router ID in its hello packet as an acknowledgment that it received a ' + 'valid hello packet. Default monitoring state is "WARN"'), + default_value=1, + )), + ('4', + MonitoringState( + title=_('4 - twoWay'), + help=_( + 'This state designates that bi-directional communication has been established ' + 'between two routers. Bi-directional means that each router has seen the other\'s ' + 'hello packet. This state is attained when the router receiving the hello packet ' + 'sees its own Router ID within the received hello packet\'s neighbor field. At ' + 'this state, a router decides whether to become adjacent with this neighbor. On ' + 'broadcast media and non-broadcast multiaccess networks, a router becomes full ' + 'only with the designated router (DR) and the backup designated router (BDR); it ' + 'stays in the 2-way state with all other neighbors. On Point-to-point and ' + 'Point-to-multipoint networks, a router becomes full with all connected routers. ' + 'At the end of this stage, the DR and BDR for broadcast and non-broadcast ' + 'multiacess networks are elected. For more information on the DR election process, ' + 'refer to DR Election. Note: Receiving a Database Descriptor (DBD) packet from a ' + 'neighbor in the init state will also a cause a transition to 2-way state. Default ' + 'monitoring state is "OK"'), + default_value=0, + )), + ('5', + MonitoringState( + title=_('5 - exchangeStart'), + help=_('Once the DR and BDR are elected, the actual process of exchanging link state ' + 'information can start between the routers and their DR and BDR. In this state, ' + 'the routers and their DR and BDR establish a master-slave relationship and ' + 'choose the initial sequence number for adjacency formation. The router with ' + 'the higher router ID becomes the master and starts the exchange, and as such, ' + 'is the only router that can increment the sequence number. Note that one would ' + 'logically conclude that the DR/BDR with the highest router ID will become the ' + 'master during this process of master-slave relation. Remember that the DR/BDR ' + 'election might be purely by virtue of a higher priority configured on the ' + 'router instead of highest router ID. Thus, it is possible that a DR plays the ' + 'role of slave. And also note that master/slave election is on a per-neighbor ' + 'basis. Default monitoring state is "WARN"'), + default_value=1, + )), + ('6', + MonitoringState( + title=_('6 - exchange'), + help=_( + 'In the exchange state, OSPF routers exchange database descriptor (DBD) packets. ' + 'Database descriptors contain link-state advertisement (LSA) headers only and ' + 'describe the contents of the entire link-state database. Each DBD packet has a ' + 'sequence number which can be incremented only by master which is explicitly ' + 'acknowledged by slave. Routers also send link-state request packets and ' + 'link-state update packets (which contain the entire LSA) in this state. The ' + 'contents of the DBD received are compared to the information contained in the ' + 'routers link-state database to check if new or more current link-state ' + 'information is available with the neighbor. Default monitoring state is "WARN"'), + default_value=1, + )), + ('7', + MonitoringState( + title=_('7 - loading'), + help=_( + 'In this state, the actual exchange of link state information occurs. Based on the ' + 'information provided by the DBDs, routers send link-state request packets. The ' + 'neighbor then provides the requested link-state information in link-state update ' + 'packets. During the adjacency, if a router receives an outdated or missing LSA, ' + 'it requests that LSA by sending a link-state request packet. All link-state ' + 'update packets are acknowledged. Default monitoring state is "WARN"'), + default_value=1, + )), + ('8', + MonitoringState( + title=_('8 - full'), + help=_('In this state, routers are fully adjacent with each other. All the router and ' + 'network LSAs are exchanged and the routers databases are fully synchronized. ' + 'Full is the normal state for an OSPF router. If a router is stuck in another ' + 'state, it\'s an indication that there are problems in forming adjacencies. The ' + 'only exception to this is the 2-way state, which is normal in a broadcast ' + 'network. Routers achieve the full state with their DR and BDR only. Neighbors ' + 'always see each other as 2-way. Default monitoring state is "OK"'), + default_value=0, + )), + ])) + + +# ##################################################### +# +# OSPFv3 General +# +# ##################################################### + + +def _parameter_valuespec_ospfv3_general(): + return Dictionary( + elements=[ + ('state_admin_disabled', + MonitoringState( + title=_('State to report if OSPFv3 is admin disabled'), + help=_('Monitoring state if the OSPFv3 process is admin disabled. Default state is "WARNING"'), + default_value=1, + )), + ], + ) + + +rulespec_registry.register( + CheckParameterRulespecWithoutItem( + check_group_name='ospfv3_general', + group=RulespecGroupCheckParametersNetworking, + match_type='dict', + parameter_valuespec=_parameter_valuespec_ospfv3_general, + title=lambda: _('OSPFv3 general'), + )) + + +def _valuespec_discovery_ospfv3_general(): + return Dictionary( + title=_('OSPFv3 general'), + elements=[ + ('admin_disabled', + FixedValue( + True, + title=_('discover admin disabled OSPFv3 process'), + totext=_('discover admin disabled OSPFv3 process'), + default_value=False, + )), + ], + ) + + +rulespec_registry.register( + HostRulespec( + group=RulespecGroupCheckParametersDiscovery, + match_type='dict', + name='discovery_ospfv3_general', + valuespec=_valuespec_discovery_ospfv3_general, + )) + + +# ##################################################### +# +# OSPFv3 Interface +# +# ##################################################### + + +def _parameter_valuespec_ospfv3_interface(): + return Dictionary( + elements=[ + ('state_admin_disabled', + MonitoringState( + title=_('State to report if OSPFv3 is admin disabled'), + help=_('Monitoring state if OSPFv3 is admin disabled. Default state is "WARNING"'), + default_value=1, + )), + ('state_if_down', + MonitoringState( + title=_('State to report if OSPFv3 is down'), + help=_('Monitoring state if OSPFv3 is down. Default state is "CRITICAL"'), + default_value=2, + )), + ('state_if_wait_stby', + MonitoringState( + title=_('State to report if OSPFv3 is in waiting or standby'), + help=_('Monitoring state if OSPFv3 is waiting/standby. Default state is "WARNING"'), + default_value=1, + )), + ], + ) + + +rulespec_registry.register( + CheckParameterRulespecWithItem( + check_group_name='ospfv3_interface', + group=RulespecGroupCheckParametersNetworking, + item_spec=lambda: TextAscii(title=_('OSPFv3 interface'), ), + match_type='dict', + parameter_valuespec=_parameter_valuespec_ospfv3_interface, + title=lambda: _('OSPFv3 interface'), + )) + + +# ##################################################### +# +# OSPFv3 neighbor +# +# ##################################################### + + +def _parameter_valuespec_ospfv3_neighbor(): + return Dictionary( + elements=[ + ('state_not_found', + MonitoringState( + title=_('State to report if neighbor not found'), + help=_('Default monitoring state if the neighbor is not found in the SNMP data. ' + 'Default state is "UNKNOWN"'), + default_value=3, + )), + neighbor_states, + ('peer_list', + ListOf( + Tuple( + title=_('Neighbors'), + elements=[ + TextUnicode( + title=_('OSPFv3 Neighbor'), + help=_( + 'The configured value must match a OSPFv3 Neighbor item reported by the monitored ' + 'device. For example: "FE80::192:168:10:148 on Vlan1"'), + allow_empty=False, + ), + TextUnicode( + title=_('OSPFv3 Neighbor Alias'), + help=_('You can configure an individual alias here for the OSPF Neighbor matching ' + 'the text configured in the "OSPFv3 Neighbor" field. The alias will ' + 'be shown in the check info (i.e. [your alias])'), + allow_empty=False, + ), + MonitoringState( + default_value=2, + title=_('State if not found'), + help=_('You can configure an individual state if the OSPFv3 Neighbor matching the text ' + 'configured in the "OSPFv3 Neighbor" field is not found. ' + 'Default state is "CRITICAL".') + )]), + add_label=_('Add OSPFv3 Neighbor'), + movable=False, + title=_('Neighbor specific configuration'), + )), + ], + ) + + +rulespec_registry.register( + CheckParameterRulespecWithItem( + check_group_name='ospfv3_neighbor', + group=RulespecGroupCheckParametersNetworking, + item_spec=lambda: TextAscii(title=_('OSPFv3 neighbor'), ), + match_type='dict', + parameter_valuespec=_parameter_valuespec_ospfv3_neighbor, + title=lambda: _('OSPFv3 neighbor'), + )) + + +# ##################################################### +# +# OSPFv3 virtual link +# +# ##################################################### + + +def _parameter_valuespec_ospfv3_virtuallink(): + return Dictionary( + elements=[ + ('state_not_found', + MonitoringState( + title=_('State to report if virtual link not found'), + help=_('Default monitoring state if the virtual link is not found in the SNMP data. ' + 'Default monitoring state is "UNKNOWN"'), + default_value=3, + )), + neighbor_states, + ('peer_list', + ListOf( + Tuple( + title=_('Virtual Link'), + elements=[ + TextUnicode( + title=_('OSPFv3 Virtual-Link'), + help=_( + 'The configured value must match a OSPFv3 Virtual-Link item reported by the monitored ' + 'device. For example: "2003::192:168:0:1"'), + allow_empty=False, + ), + TextUnicode( + title=_('OSPFv3 Virtual-Link Alias'), + help=_('You can configure an individual alias here for the OSPFv3 Virtual-Link matching ' + 'the text configured in the "OSPFv3 Virtual-Link" field. The alias will ' + 'be shown in the check info (i.e. [your alias])'), + allow_empty=False, + ), + MonitoringState( + default_value=2, + title=_('State if not found'), + help=_('You can configure an individual state if the OSPFv3 Virtual-Link matching the ' + 'text configured in the "OSPFv3 Virtual-Link" field is not found. ' + 'Default state is "CRITICAL".') + )]), + add_label=_('Add Virtual-Link'), + movable=False, + title=_('Virtual-Link specific configuration'), + )), + ], + ) + + +rulespec_registry.register( + CheckParameterRulespecWithItem( + check_group_name='ospfv3_virtuallink', + group=RulespecGroupCheckParametersNetworking, + item_spec=lambda: TextAscii(title=_('OSPFv3 virtual link'), ), + match_type='dict', + parameter_valuespec=_parameter_valuespec_ospfv3_virtuallink, + title=lambda: _('OSPFv3 virtual link'), + )) diff --git a/ospfv3-0.4.0-20230603.mkp b/ospfv3-0.4.0-20230603.mkp new file mode 100644 index 0000000000000000000000000000000000000000..1e5393c905409894a73a8314c175e8e8be576335 GIT binary patch literal 13111 zcma)>Lv$q!6K!L6Y+E<BZQHgwwr<d|oenxqI<{>)9ox2b-}leodg~3URt?VJOm}UP z7&tfwKR*iykdvFUl_xtR3lj$u3nLo~8#@aZ3p>+KduOn#fG@WVo`&7e%ia*?a)6v) z1A`h#i$_Vd8})dVJvz<o%+ylaXjviU*l{>{Go|GybJ|NQ2|k#tzgqEU(iCGofBX*) ze37F0EfH>TVFM{)L6`GA4t%7sUY>DK$4nh4g&p@%x@d6E8P2(AaQl>|@@0{|STWg` z)$zUzIQ#hTnd?jubHjY{+kG)$rCIMxu};`HpyzR+(k2B)_3_OWtwj65#?tGV!7n)3 z=dxB^7@=TcRuwg$_tR2R{$g-=w6!(BJ}~q+FGX0~Z#Fr(dU~_9(4xERO1V}w(u^5b zzmoQGkyfed5yn!dNS_vwLBRZsnojy~c<i8#1u3z!q>!YP*2vebcv-4|8*y%6LbN3x zAqg139<yIxl0OlRUg`0E=V>8n>b%1=>UlAG27|JLB3x-`9)_K2#ltz)U^ONn<z<TM z6LUt5Y(nm|;GP?cg1q|Z<y7c_?@{#nzPqjr>EtOw?eX-siyan2yZtf<t#@Fonn^sz zgx(}CECN3gfrqGU#h2>?ueaOF{L|5@<H8S&i$?!2V&e8~NuwrdTH**{Q^29NQTB_} z^bq_M0KVC?{rZaokUH|61AD3SoSPx#|IbNedrqG$lQDju?hkR3B^|m*mp^)oo!^#d zYwOMPW}ws3#Y4$f8i|tmV{IHsicjNK&EnNGA-L7mwD7?h<HSl0T%D{*xdJyCu`mo@ zjM(E<8TFU<_~?7@$1Ej6Z{D|8czhKIMS9S*2$UxY>dk)#4X^svYl3=Db(ndcP(0-R zf%5hoqr0=PcQh@9MTBo^V(}ovM3wF!;7Mw{!2$D~xI};E#BTO`nT;cTaZIp|CM@sq zQzws?C^G=(Vzh~v+cAKgh-SjG$ik!ikiSPpCXCkIU{tWFbW+mpo7jPnJf%P|H4PVo zg8V(OWLq9$N_A%+RxM|L-r5}&g*Nz*-qOH>%o4<q+qI)!H<>`3!`?-H0eAd25TPt4 zvT_Y5cd(!A3kTp``YrvHBz_F!;S;!QXZi#5`n9%;ce2wEnDz71L=~d7`ja`!=zFxE zIts-q&^u^A-##EAF1W7uWnmq((ZiX59q29C!gb~ff^&T~+E4cSCJckuYU$1SvicJ9 zh<tKkNBs2BvfAo^di=GDZ9eIsW|F@%v$NMdx5{=diuAB9kJi^Fc;elAvJ1layeU7n z42LX3i;NNxse|a-9sQWuTaBJKyey+bsHUoUeE2YCY~7$xiE7n@9g`dQ_dbItbU?`P z__2ld4Zpv`>$&RG7Q$JtG%M8ob~OFA>N-LCfkpNKbuv2-qv5neq#r7Z=WGn+Ib8=C z@`~f+76-S^HYS9kyRcRe*{BV(Rtv|A?!s5ZrUHIefOoGV!FP$0^R0^47Stx}o{%8d z;ZJ!VtpC55kHPQOc)&yYVr495sMg522C)!KHD92#p23&eT%hJ$pk=(rdz$Vt-dIcv zVVg0Lw@$!F_&;k0jerrUiC7nO^z7TcCl2TboD-vcP?dZq?1?7wn+u#U>}{wOasTW* z7{ERG>^SkTH4u6A0HKBtvpVJE>0t+s(6%@s4!%sAh;Aebw4pyTKcVMc&W+MVDH?TD zyR4dnt&2(CZF~@H6;}J@(;<y0!WrDXX$YHbFRakf1wZ{I^t2rKvOLbxG}dn%Tk{3= z04502C3458mHC+9mg*3aie(Zo(!e~k4gAEUc*c1Tsib*)d9mP^1cIF3-xb^PdsDXN zI7C`$`x38meYb`Or5B;~sLepeALE3c7cc%!z;Kx1YseIT2;yL5jZ^S7F3)mS`W85! zA%R>m&**|)llL&9a+b9!EhB$s>#}+rYVd8d5f{w-`-Ngsz639+)@l*d5+Sk6px|_a zqW{{M;J$8ynA)O0n}l{JdS8@x4MH`7ca+Axm6N$GEX;Mxeb%6fGE&=({x}U-AdTYt z99K&E{~3`OiG-$!sy{U&uAc840s!7)Wn=uv(n_=Oj)Yl346<FyyqdGDn!|r$j($zI zf=wxjT5S)^C$$%Fw`QiHtK$got)c3_Js$ta<)-6@-P{=La;om;5mk4LS=t}o$vk;z zX$E<bQ!%m1L}VWW_-2Plht-}gxbJCJ^Af}S7$TQku8B!w>rZWPiw7S>r2l-x^PLcR z)bKCoiOJtPczGXR$UI)+mUftDnYD91P<q9tY|JazN#{%<molSzFgwMnd?hE}BV=GN zE}(C6(I?Tsv@fcOZV*A^P;5#hDKpk+XeTJ0Lp`{}eCR`tD>@-hAKBW$F(j>^xq1lh zx0jyc<mqe0)TihrVV#~Is~ap$G;-Y1lPD>m_mo8JM5nUc6>B&(AvIU*&a?}Y)ZtkG zggW$)GHp!h=1mP1k=|=dLhPK6E?f#1QyIY}w2AmgZ5Gm1VH(0x4{X>e09!+3{E+#{ z{z+?$g&bux<L2GFR^)~(-Xj%{r92&Z^8pKXIQJjh(*5L(w|armS{Q#9tcVJw@OSXQ z&VnZHv~*TAPw}li=dIKoXy6J_<ORY{(Cds@F<j%9%bx%pz|b}BbUy{O7C3cfI7BZX z|HsqiAc-{*AXZHvGb$iDsh=bhH5)YtFeKM(l;_V^A2Xi6SeK#hFq{f|y#E7xE0|jx ze5rfNzR5vg2p3Vnp*{seR&;(1hh#^uIQ0PE09ryW(c3LiQcO~HZ|#Ojskow1lCVrp zP}FUmrgo-8&q(ZiSWZ&*Y@G(DimBY6N<B+&IH#WJoKmb5o+@2M1df|bco;%%m(E+6 zT3%?=>^%)TAf*t??3R3Z@rXLd+`n>dpwV%3dEwia|N1$7$HCSR5ASfWme+~lXFk;B zpSplYPMRMK=T4qKIV>C*1ze_vA+1ieJwkr7trdW`{Oc>lGaK;=HcI8`d=zTjYG+!k zGE6kBpS02u$&^1Ja{gmzGJ!oY6&=-WM5?WMM8T1)Qna&#Ao>twW#z-3X%yJwMQh8n zQr+1yp%^#tTG+B#0KNI|2%SQTY@34uN*_ALSm!r2^b(=tx>d{=gec}O@7G}mQZv+5 z1zKe!2{S85EyJ}pNgSn#GKF@P_7aZaUq7}af@8r~qZ-NzRpe7=oT%4KrODv;yiLq5 zlq;NDt1}LVKri3lAB)-ttdfY3-WX;-GtHwuCE40BEl31eZJXia3%Ae2g2-Xz$b(3+ zBzAj{rra~&I1>was>#HVEoDRpBkL$iej0s6)kR3@P|Hf*Qb6a(v7$v24o8{r-pD7$ zBb6iImxt>cg)$JA%K`1v{P*NJVUIY^>=MtBrb8pbm_-38Y0L+NiTL(Yw>tTl%+2tE zU-oNK35z?IEk3d`IUC1X?9F1Q{RVG#N`FP=<B+l+T694arleujxy-)RZ_{~N$BEH~ zQ{twBYlG-+a<LW)$vnUPsfKsF|9XeMSa^f-3B>$r;olbDKrt%$CodqB_wL|B(9H`0 z2zUSj27&VK*a3g>;Y3VxwgYF0^ta7|v6o3`@`QBI;Jp+oq!Ic+5;ty6r^GMekQm<0 zbs-EICfOV851&q>+*OBI8Ul}k7@MY&Z4_&M>t3<uyy>RWQYyz++uJ>tecRk>k-Q~< z{7dcPc8V}d9tkA;f(Xs|302G*yc5%5Td(*Eu0Vq%ImcRZsg?3o>DKdgmrA8Xd73eS za8oVE=NN0DyLmJ%r!R^)iVdvprEAn!F+Uxib~<CsKOP_Fc23+kPq5^@b-5onw<aLq zUTru=ux+d+QFPfhL~GtVyx!h<7pxDs%b14f-5R?ARljg5I<akou6TB?;5F{7@ecAm z&sDjyjqRfdd$-~&<t+Sy`ZfVVZYQZAEgP_`f7UwtAJQ=2Nu$Bu;Xq<uCgE(<+LizJ z5z^Kk`pk5U7aKit4!odm27}ejXWDF9P7&2WQ&y3-QCr&s&Y7Yr%m$}iIHKHoVXNdk zyl|S7G;5<^%WHHarw`rKXxcF)Np0*|cH>H}e-_{8qx+EU8SUbHQfUE2it+6Xbp_3< z_@(*x=;ZJDUUdb@h`f+^F<;_FxzBjH$M~q#-SOQqpEV4Byy~63$LKb8zGXTiB;&E0 z9PaQJNtTyHk(d2GI*R+Dx(Yo!uoH~kQuD&9D{SqFe`r>5Z5O`?i90z8FmiKj##IDD zVi5i@E2Lq>A@Z>D25EjL0shAC<YdFyeB;3Ov*HEsePb6uT~CUHDfAeIQP{$!I@H7u z)MKRBIMU_oaX@4!Pozmts>G2wX8Y&<7E$w$89-<0<o~j~K05SXdrye6JZKrKPy6ZW zzwqFQ`6_?B-qm!rKW1<AyVA~}gma|uRa#zo>vyA7Lla$C_2P>8g+14`!@M?MAG1ns z7vD+Zn0ymc10vc+SZrmueegIwz@kH7lpd}i>pB{-yO-(4`JN?WYvKdKx>P;~<GQg( zgkj^k{A334xxat1nTGkxxBAGeFAHl~tRE#h@zv_<{ro_(n%aa{-@QOz*2?2hk@o&z zV`fZn-f^CTY%C=w0|^nR)^htVu(=^j`M&i2-U-JAx)=?>yna4sHefR011cwxA9R(_ z)fmD7!p{>)WzoVRUTL6VSt*&{cynqEwvMQ1JJ+&~5eYiX?i*tmi2hDxbnD0R*V*^O zDAu96$wn?YU2JE8jK0n(Za85q-}6eTc1C;DAw9rhj6Kai$gG{>r$L-&)Ba75SrUb5 zrIzG`?re<0AX8!3ZFwtPRLgKOfKSZkqG*?EK`w(u^SjP}^3&o!jH`@A)dob3rZ1MC zDze8(LUH|&Dc9Q8Ey;H3CKdJ3Cdk;Pcm=)Ie&?-$PCCB&Rh~ga&+l=d+B?wM7f{Km zw|5v+w*7HeEF{uhwwrj!N;1K<0tf9`l7RJLwJWN5g9Pna*^Z17rCtYfY^vEiLFPiS z+$W&Ml970=QqZUl!?4&6^(xaZzyO)fngK?#QZQ04cY^N9BUrK$s%F!^5z2NLFXzxo zXjI@u*HwvnT!*Pw8mkXc%_MW2O_HwV`jMtx&#p2)xEWNEcFvK+tUALe#1Q6{rVk^R zIbGhYlB-IDw@XOhwxxE;*XXBFxg*{D9$;WEOSJM^S=+D%*(#&xV1eEP-}xMM%j17@ zamuq&{qIKaeX+V(X-f}(iD=0b+e;^ATb!u7)!!XOc$eU<=CP#nG1T89VVLm^DNh2I z#f2t<CbpQqyFY)$Ja1o|U$D$eqqRB^=+1HeL&{ZO4f9v%?|?(>pY7dyWCR)47r^&< zQ2uE1v7OMHSDV1=>yFt9f(2wq@(v`kdvth&w>88XNfFOh-j26vB!qM^I2~xX_t`4& zow{4pC30aq80ye2*Z}QsE%bSe2qfd22o%0ua5(v#3?c`5Fmkg<1Ui9DaJ)pmIpbVC zm;{X)RcW86xZHiCBI+X)HeS+9PfX#{R5mbuBL0m{nnB?5F04l5^fv4()?@Vu4JD@c zEV1^D&pRWvSdn3deR%(MvfSM()CsBQE<^nq8_wK7(Q`#Sgu9haBjllG!8v>JGg?mV z&0ThOAm%k?vBX;*JbW%}H-~9<@zwlN+WW$HcI6uuAw;H|KDe(}YFkYEkre^Lu*aQo z@a&#b?$e&f&uFeuwdWGch$`Cy@0UOC;92rLKK%M_<IdZjwYUi?qsD#+$2|92ym54I zFsIiz>q;7K7zNNOTX_}hL0SEKECD0BlJH)jO|I1(o-|~CM)((&YClaK1hV3x@(450 z2n|t^Fdw<GyG7vXU;nwJ<2;mqri63zQ~sko2f6;G{QF2=?(6_AnrTMr9GSv>G1xI- z!(`MvrElrvKTNx>uyWOo4alEOmR{^2vSP3KO~iZN;Xcnh7l1-kAXjqzZpv+A_}3Ah z(Jik0yf_*YB(yf&%2B<mcH088WL1-m`OhR6LK>rJo@jffdxpEt{n!kdI{D{_M<Su4 z26$#+eGX-C4YNGTvvqWl)N{g(24ojrgr>fKNJe9ednao>Hleecc6WeK&AmoU@9U6A zg|H@_8VCS0p?Usqgo@n-=3(^McLW5ZYxJl~6zFjMeWb)m)qE`YzH{2Q^(<F`-^r8z z(656Mm!s*#qSf(B{cxh8wE~%ck;>W`ASbOXh6`d5Re3A^TH3nrB==VW6Fdn+GXdZ+ z#s0;|kYs`b>9y6e1#7XloIkbyk~AXcyz5p&J=Z2Cu^SY}$T@UHx>t(8r)=e%f|(@K zYh;9io_D%QD{a_I5)l-az7`N3UPf|AaK_j(^X%1c1w%<sQt7tZLDvX=8;YVG)}zQl zIE)kOiW_B+E%8Ou55wzYLfd6s=@rZuX`OjNgpgC3zm9%`ac2fjLL?ZgOm()@_1Ud2 z1r-l_QKKwhmQs6H_W}Yv*@qanuHjC3<7|_mW^uhoyZ#2MQ9v=@oNIK*g^-AQ0wpvx z4)>tW^hmHO?f9193MbJt;ff|r-$Xjd*A;)11AbKUbHFa|St@x(3lJ;X<dStMt>VlJ zn_3t5Ku}3&St6)I6GWO!aKhNd=JZw5U&{PCI!r+DV;DeakO;#T-@qKtFW-&CdiAIY z_LQ`F>VTh4!>IUCP);_l<3wq5E^D!3AS=2TFTta<Z4*S51-Ou}-hW=AFLfTN91y!% zGUj)5*^^H@N*YdU2xu!k(S5V`o-OSv($*YAutkbstz$8^<Agx8<SqHZ$Z+|hm*Fhq zTFo$^g7}_@D~?Rrs4<#e2>?tD<AX;FtYv}qU)=#WAB1KDKoJ)_GX;bo?n~|$AjciB za};!R<0WXdnkThSvMAE!Sew0dtJ;4AR4~6Bk^_ktKQjyE=Kc9%YuWCpkN4G5{^~U+ z>b!MxAF_O&u8xg0bc>&EMxJh-N{f$8i~nyQ$$c`C9NVF8Q7>;`-?&T-ET1d?M<4cS zPj$VBKXUt(4)D{Po68y{W~}bU&CrS{!7I0Qwv2b;^&I^WqeqV{e#$Q?W~90`wpg_c z(&i%nRO~3@*3@?l$@j3J{J}Za>fG9L+<8ct^nnL@AVQE|6V=akNZk#^&%|qDc_Ha3 zp#81i<!6w}*3+`gYY<LU)`np})RW3a4o?9Qfu%5Mt1ag38aD+M9C|@(K$*tU{kC6r zGA3VGSL{bdPE?5&nMN@op8WmUAOQ^IJ^y+uv3{R@dzh?81Z~Se-!j}xnpsOhrbnw( zlV96XhDp<j>Kh6@pZ9;cRy^A~^QibP51D@X4Vx0B4VgxX>N)BrrsGC5yOC;P1U_Bv zY40)oLFX1t29(6BMN2lI$7o`j@|CbAExQ^l+nlQsShNN)7BFJJYN8K$q<7;eB-mQr z^0EMJ)iMd_#s1*eV9hj?Ikge;D$u7ofEP%pJ&5_?Q#mk=@@a}VsHBWc#<Q_$N4F&B zF5!v(CaCvz=S8WRXrLd}vc&4M9M@ik(hLhhn*wd^l{O42o6_WUD6v`+SysHBQhPM; zh0C6wQkSW-(PhG|p~jq&0_lFlddC^~Az3FM(%H3G{9>OiM3Ab`HLixpXVjkhLca8J z=5xP4s;6QB96Tn!R_U?odF(eW=~SC>&}*qH10)>arvloWda;*2t@eCAD|WxEa9j-5 z=xwiTJH%}qkY2~Ziu3VRbrgB5R)XR0bT@Z=i#af(gU`wHp<FV+?aX7{)mSP?EzU1w zCmqeyq#3ca5>y(kX!IDD7a+C!qP6|G#CUtfuEaPLV(FVKYbcxNW;W+}FD72fT}B<k z`zpi)Ga=GkiByQSh9{r!RW)@vf2wG1w@0&TnrVk6(pOX!y30Z2{ACQrsXGmtovddB zpg4r;j{^na{oC}JK_3iqJ7V1exDoqTX7h^;D{!@+U>Euh%*IA8hhXzCF4`%w!Lpe4 zSmriNz0rano|f`*B6w{*7k+l9x<a)H=swHIz6*geaO?7bP76E9gx{tVqI1+fxL%%0 zl(+zOm|xYIg!Pcyj3MkD0He5|n@^dVjQ#6sL=<~rz^(Z8Oj`fydD7-1)B7Nx>v#|e z9|OrLy>=d&;ik)*66b^}LRS{m$9X9ahtQI-pBLw;{pxIFb*l<TvKZb{27c&zENy*A zSk9haqVr*qU}UG69K3N@_U7m0m+o(vsSqzCt>Ks8MpnvS4He7K$w#S}ZR+I2i80bs z43mM`DMMzo1ey27!;CS}1=B{36<E9Ji_8-(ECZRpgH@Pe=tsvT^Y3K55QQh}7fu_0 zZ9v1XQswseQP`*YWLnIqd3+A)-PNe-Vyq%~;|8)oR%KqDPF-PAi-u{36}K@H+cvk= zl17!&z0`t*=?N6pYg0@B#MQ{g0FVKxxV7ePu{b=izd9EyV0?aV+2T>OIpi*ma*eps z?Y6L{PNoZT;LnNUap*tcuTtPGquP2f45}(MPA8eRZ1<aGiw`=aC=YW<2d-KELERt( zSrQNtxA4ABZXa)`T=X!QtvU4nGY55s*{P0pvuem206ZXCD3glfRwm-M_4f1%f6>P* zFNkWvFVl0;npYZgE=3bKW7s}v$ALPY4%`o*QN6!j$xJq`fo^^jbl-?MX^NlP7$8f3 z(D)iUX!zA9&tLX-h}8r+AhW#o2gPaH5?-W7i_jl&5{L7ZC==Jy1H}M!e<fproWVku z!@RGCcp`j0E_XS4B0PGcv?X5b3x@<;x7A4%U$YF4Sr?=)K=ol(>E9;cmtod=SZGc` zJJrwIsT*&`+@tISbRp(y1i!T8ZTyRS7rU=@RXg(JQ3KeKmIj^X<Rg<R`PSR7bu{ZL zz8JoXm1tgbkKwjPB5JvKfyD&!IPNjb8%^iQLI-#}z<J^9JO9X^GZnE<U0}p1I}sBT zM0GFYca_|uu5qN`MO3hkrKyom)9>pYBjR(;B}t!of-Wh=L~XaV<pj4iEsTSIL*7@! z2T%N4Jbe+dOIw+AR7@lE?DS(>7`m6Kf4{Iy=(gomR^?jAuH|cO(n{qHdXan;ZHqaO zV+Ts^eqSQ8hex@bAo5E_yDScb4C6|@S9_zeP+KSiBI54;^>J4f;@y;^Srl3_d@3d! zYZ7S9T*$;OqTz<4P-5tm7Fnjn2TQ*G!2;Td&!s*u1vR-MpPAr4EMbr@YWQkID`8aP zkuOQ)w_t;J(HK{q_G;K<joBv<|9Muk@PSjqfVV@|$o^}u@rV|gDcK~MnO)yO8WvaJ z$oq?0DLOmweZlOm6^}0_K4rNKzAMu2fPLz;{gs<+)IdBgbP+4_LOVWUaWETAJ0XT$ z`){OROagnV=8zhlQcYK33ssy{4lQ5=)q;irooY^rmJ@mdUTzt4XvBWuK9OISW*M&Y zpwdqK=CwvEwnv@sTL#?Q-<UsLTKtBX&}Gzoi}iG-64$<!aY!k1lzOTLzR|CXh5t`; zM>|Z-M-5%~pmGFaG%>DmnRusuPA=M_(w(P5j;@6!Hmg^MlxK7|#;ra1k^2upS~Dd_ zmB_5c=I7m0Uc(rU5J!7AEQ&J?KxdN+YnP)v%@9i`(I`=n3)!y<xhuQa<agD8j(P#g z4&?}^6I$V!%)h9oqoTrcRe1-WIyfCs1jCFg9kMjo`qy6StvC8iJ{SO8b4ZVGc5~<a zbCwNPzns3BjqCWuyZx4ngU1E84Nlk1q^Xw5!zl>2jWk!7wbm=Cc30b{8*IQBgaGlA z5x1t5Ed}%&PrC1XNOUFu5tjo@Sa&L)=bhT&_JeAFjW>Vso-(8NXB@~)N=exV)O_-s z_1a7Qt&9Q6ki0|t4CF!KLbPD~0=qf6{v@rl8e2EHlILzy*z`W!H1=iKP^)QaI=r=& z$I@=oJqE?1@vnwpc-jODrHBR=k*YKQE@Z~#_sI5OP#fXOqKwHg-vgc{A!3#d(U`4W zA_Qc2qU$Ae{3uh5KS~<Jh8fHvm2`B;89YEK@;-vbn(wrFj3*AjFEMgX@XBdi`x+!* zjU|({&%arb0(!c*+&dp0LD8?9z;@#y9WbV}Qc&YS9_(;9Jnj!8-rwwizP)1Fp6ex} zJJa8;&Ww4Xz8Wp<#%2bi*WJrjXbNh+{>*7?6P?e|cSv6_eDTN@`9!PTZXMOZ!fH(t z#aH#}zRk9T)Vv1l*ttZu$@y#IM?jMzy6Nld?YYqYDCQ3A>T}n)Gf#BwGSC#~PJdo8 zi`?ljZvV5}8~y&8(6!DT47_)k64{J9UllNb-TwM9Lx-&JbEq(=?hK}v{bIq$cQxcF zdfQiboHLGi9}#%hIDi?Jb+1e-9n%?D8|+PBiORhi8#^xs`H-Lp(|BAsoPTI;#J^?X zljnLG6oxH&-AU*g?`4<W7en@9Z4hR;14Fzirm(-%(3OVcyJ8d88n1FsOnVoX^3h<8 z^-ZUn?4FDsqjAtRq7qm0k2FMvx*#ZuG<sc`1(uv*HFFH7hQ#M#7?QKtIohjS9)w6Z zN3be!_karISh|9lCyLg;Vp=1j&bQTvSVqcc?9G!jIo+ix^<;+D(1w5+IaK2|`vsUy z>OmnYSc^Y`yMdf%<0`;}3ez<JhX<JKK_^gIH~(C9blSW~@Dn@&&AhIL<rPr~v8N0> zqO9Qa;|_rb)l)oPlxPw#bBf=yAU^A36R}#ArH-$Mc19S$zb~|Of?{tSGb|0?&3E4O zpx!GKbx~FsVOC@+SLz{BL-%zd>YlMKc%Wbx5~qpb#r}Q9NGpO$w5ME-P=m5qKPFbm zN3(T-+S-&&#WB_CS`MI{ZSAr}P<YY^*S9KI^FJlI+S!E~OTozyGf6vBJA@@W95)zs zsqfKghTJTWn2QA9r42OS&`IC`g|R{q8X|*b`n2G$kQiGQ)?A|G*HR-RC=hwKI<umj zeou@g%DT@lD1iF*;@Wj%WND?jO*=A2kl@$C2C!&yh{W^I7_eBz;I~PQD<hY)@ysK~ zhoD~DJ|7Z6n)>m+5WO#H|Ig95<Dk;z=H{BabGHg&Lz67rAx6osvs1TL6iW6-Y80L) zQ!Np)i*)cbzop!^{$?T16Gq`5J=uyRRnjd96gn%(sxfS|wz%pPq|oWDE|htl7Me8w zgAd6%^c%epD!b&CH{uWsiwQGYyC-<^?X*A>a$szc{XHI^_HqPUSAYR5T(-FXIGCIo zFf6VLB|DWFFFDzU2zvgh`-$CUp2-e{xzxIF?IN60I#cgbAx)r|Dh{g=rNsmrFOqFr z@o&Ux!9ylHD~iy-r-k4<D$I*qMB@NP7w<dch5wZjVy*1*IV-|hC5CI+!wIdOmu0xN z;efz^ho4&ldI^oGMkh)a)T%8pNjb@zBhM3h2Ug9>4=d_!GR<xg!?z}Z*e22d<ir2$ z+g8Uc*SW_^F!agSGIVv7yFkC4G^}c))6f^Dw=L$VYS6jIJmPhipGW$MQQIvU;UTN9 zL?}72rC=f0G!^SMaFwqlg}+F-Hp#7BkI2%PPX*W_CspOuh3jkeMMzbVGZKQ1W5L3| zfKMh>9g)~pteOoxsJ0RCyK2=cYUH`cc2lN=P6ITil~q7H7?$J}Cfp_z=Iic#C?>w! zBNy_0eUivo9^QbjG|gU%m7u(thAYf{S}Khry`KhZoPNCL%;JkK16XeotH5~t>xV)p z$hTG(^E}Q}hE%B@4PSo#a@JsLBVD(FBgxpHu_~Ok{?WHU(eGz)j9QwJuz4^cWq_9v zAoEwr?73}|A_o!NkAFUB?XekKH$e}WCmsd(OKiA<tZ@|8ie1q$ln5$efe%7xM>dU? z%)I0f;?3;B-WXizpU@do$Lf48i4?5;S>DL}EA4v|?yd7NGKLKpOSDi!P~7mPT79K@ zAmyZ%lC@M!%~>w1X!rj-&pJyl;&v3fUu8FTdqCloUw%A6J9{5D^QX={gb<siJ46B} zFFS4Hz{R&Rv}9#J$iDO&kfAlt#0hXWcJ~7m2wd_9fe6oPU%wL$E?+i3>ytNnB%O5Y zaha`WzaC%wioT414%LPFO?7p}6faPeTKKx40FmoyKDf`d{!f^IKQ%%mCP9#%Z*QWl z8`I4B5j{bfkGVxGA8k(bX_gtKjZAZhi^JIqwrJhSSw>pKeisDSH=NNKXzf;E7RmY( z#(@bEaBU*;!V-9j<21^1qHSYn6TR}i&ph}>>-z!7i==nQx64rhn*O^v@3ujg^_)Nd zXa5-VW@<q7+^Fnwg@;@|sjS}=kz-!{*QY^&m-@?ApHvcFZF@s=HnGQJy<r<TH&q=( z&K2%p0kW;JABqz_e^$F8*NN*8_mScj2Bh<wyaRH2nn9cSKSC1tYZtSn@$~OZ@7d!T zY!VG_`4g6H2>1uXR1)}$9*d%$*tUO_qM5tcC+$n)vfDbgL>@Fb<S_54wx(#GXlA?T z{8aRXx8>O0K9_v5GW61K)TB=H=g`nsd1~b(qK?w`?^K^ya3+b;?9=;;9COkH5;_k) zug*S2#uQMk$*=Dz8yLX1ubsPZxUH%Bn~6L!JRIlESoD6O!-Y*gc3g8{|NBV`%f@J2 z=2qLHgVUVhh|Q`+_P)_Q^DUs5tFCFTtMrLpFH}awH-Zb&=uLKCy5Na9SBUN^*MHo$ zMCn+pw<(mAt13%CwN#1T(-Fr~Wt|4xG*@Y=&^y>noWv+e%=1E#2z`8A`aB5%Q1Jt) z$2d1uQxc?<Qf*s^>_ei=>u^)j!f0sSTLxiDK(cyyDg9v~{7m!|(L{IYd%=l-Q;qE( z!3{zpIc2eP+d=4WwLJ6_6+mV_7QU06dx}OSnoZITw%JJ^uaPfd?7OnWjas~b*A5hF z!w9KZD<SdIzIt|3VKm>q5dp}qeU53Uaj8A|e#k%pG$Z&uPTNmu=%;T)`ExzjaxLO| zkEG?jbTEYPo_h6XK(L_&7cwWHYnwTz8Bq2E@ZhWW8m%8?GduU&+6j6uj;h^9zzwo( zm-+N%WO)G;g8lgKZ^ByG@rg748~!xt)<v3|&ZqmYq|)=WGuTof1CDr9geWcftd$7L zA*}KE&ub%p<>5;j2a#M#x1BQJz(E#CdX-HhvI_W<{^`M)CEm?LMn+qN!wy7uV1(ze zwwVtQRv~C+O;xFT1{;?P<Fa2{i={;S!kS`w7ufID+Z;*HD}H8(2^<+*L(UckN{NEd zsBB@B!mE3@N_>1}%g|!VZO^buEt9(cLA5L#;zF=1#=@ZmXY3_X0$ZYpHCC_U;js)D zz%sY}>=At)2=oNUZ+%nOZ-AP_YxMn55U!0m*JLnE&AY1MY+%1T^-B663<>S?x(+oL zWPd~G??ndRpN%LtbZU&pb@I7-RWB~-kvZ6!^CTEZLVFr@-J6(IV|Sky{@n78vedTs z3RkgVt(^<m#?KPdjs}ccXQv9TG{I1?DOR=P?0?sFPGbm=u@ubRMgKew9S}?A7=d~5 z6>kelG{Jy+NpF3n;Ywx=OhO`ZRW<h<QLCSq{FQvG%s&kSh>b$t1gr-GEM#vIJ(RM1 z;<})HYTzaX5t%Cgt~<)B1I>PXOA%X-yIH-g6}kP4F^H1SGV&qYybnxxGHQFQ<!1d; zxXz(;%K)xxF5v-@ZJtU&HMJPbz-N-QirpPr$|jEX=ydl8uHH2w4?SDC$18Zc5tBEo zEZqIKA*Z2L_|#9)(I?E4cL2L<@?L^`V3?e|6XR62SVF0jcBm?Ne2@7QIv?M0{5W~L z0bkF$b~{faSJol$%>^@LXgGwXN$E7dffKH3Af42JB}0dxs;^rD8yimJcXK?8xQ4^Z zY=$o7t$9Sl^;TR$Gdz}u&cfCLz)F&LgmI^0AG}r>VDE!C`R(Ew*aA7phhnkzol@^W z(#X(WcMkuCb%_H!qbTj*xd#84Hk(tHG#Qw+gypC4Gf4{0iX2SV4Y(fV@s3Y$4!=k6 zY%)4vb~(_xUA=xzLdxeBHZ+oKGrI3`d0FOs^G>a!bL(kO<fu3%IlzLsOihd?@E8YA z#SsM?g(LVa7<&!TL|R6d`W-m2*k#tJu^dVHj;1}aJFYbWR*UJGuz^vN1}*n_k*M=x z(O~ucJ&<tb7OKOvZ+IRJr*HPue^0i6!qhk9w|!XJk;XFkf&Mo-Vu*+COs{rmna3|> z^=`955tSWp?8v__9%}<jS7ymh$IDm9V8Jf~k8+@6f<Yp97QjrPpsGW;%3$hAlms2t zGPVMhKn#;kASv&y(-4zp`cDcGu~mI65*j-k(fjE+T!0?D!ZG}|t8n0$>INFV#e3x) zRqM~%C5(aq5OIfMw*QxE+w9R`So*d<vR6=qJ21;xuy{*0lFF!A)hw|t(9NK0%(=xV zuT@q#AD1b9v&uuImSq(L0k7$yr+y<e4%OBPJlSG*Bsc7*Mmw4vz$O1h*&1+NHZRn^ zl;U1#=I1l58Ax-gg>Y=xKcXwcl);E?Fl?p#H#%t2zsR!3rNgRp^}>w}N`c=D3HzaH z#((%3H}v)sycS&d(si@u2|IR%R%(En1EKL6m1j(E6wTyJ<0p@ld<P{<GB=VePECZg z`Go)u1aVHk&+V@w$!)F2m0bwO?!c!GM%&HYmXb&v30{i5-wz>BGmOXEFx+RVy^YE+ zk)0Fuh6Nav=z3**!k-<X`<H?$F35QbF39!!m^XaYHNsaYdxYZ(GcM$YVB0xeqEnea z(&6k;PVq78IsZ|IIZ7b3lv)$F?P%4oyG^HBuuUhl6DJE|Fn?BZcm41vIA<lP*>x%Q z7KS$gU={^Ea<|{Da7y4uWpzdsLLKGYnCnrW8WTV@p>S8?86}hIWCmvK=<~XWgr4YS z!FBkGclTe^ME>qa;7!SSM1l&J9uYHsDG*DnSBt<5qHFlQvqZ+qZ%2V2!>OP^m}%Wb z6N$#2mZShhA4%(sX*Mr{^m_gScAm3kbCoMs2s_g$(kPFl@A4Qw6%_{YGLv0%tel`8 zv*HHlv{Ut0e9UF+4~!svdOhlMGuuuvi{m3EEhp|32!H^tj^MIyC_!5U1@nC@S;%vD zEc|kP!jU{Zp_zo~bUmBz8yRt`bW@3#?CzSP*t3a96s@d(n^11-VrU7>tT0vc#*Z-@ zIK0loH26Y}fgE$%Tol?|w}r$;!p%#3Wzm|j3ho$>{JhUh{`&b8x>U3>72*J9PkaP5 z>Xh9>86k`*pFMJRacp1q;*PKvz2Ve8v7jGls-_?AVqspMRm+_*DO|*PtwD}xQCfqU zC5qE3o|HKup<(!$CibP?G-KSkKU(a&gQrP}t*jjS!{;h{Ffcd~1(zWA_{GCMsqFKj z5vY4;b5NFyVZRC42Lt|5$Ec&mVw+pUJPIr})~Srk<89iQpHgEJteIN<=y28HviII6 zmtHUnwS1VE|E*Abi20`Rr6Kc2Ff(UAktX~sjGOe9<kCWu#o5LyI;E~+gs&(sTsj|b z{|yER<L{Dsg>#(E12c1Ut|3Ig<cnkt-TH?l(TmwNSJxpODB<J%YH@#yIyrc08AO8? z5k@wtyU~t1#4x(HIuPz0Uq%q0)>T}?gi}hO4`}@ksWBYc(g9juwpt!7>q)mGP&2VE zI}Xf5!0AyoQL&Ve{#~1>U3J{no<YmX-Y8sb<S`$C+Ac<P4TP9P?7{8RtfwsR+M<^3 zx6rxFMA`2a6){U*h-*ozSsm$rw)wJTkd;VO?DGC*UAdl5sotXK@*Mvl;(Q)j$eL=6 zsoxi%DNG{VN;YTVv)*jC>;6g3j{re!Ix4CF#c-d}UB&#Hc-Jp&GvXl|SN*)#B&(8J zUSPsuQ7R9?8cFoIn9M0_FOIua4K9i+KeP{A4h5o;JA0TQk=>+$)4<~7dMzE!8wV6I z47Dr{a7BjS52_+;@ea_C2Ro83&up^E&1ESu_yy;+zC`ChE`@{pSM#MQAzN>TI&0_k z6#EDb@3X$bl^R@dB>P}<&!F4zod?$&gNG|jQ4sGK+w^wo#Da3h_ok%z<Am^1pB=kQ zror<oHK7ZwYleKZ)JJAp<1>=XkNvk`MqvyjyM$KrDTK+awyd(!KUDvbHnyroT*1Dq zP_3$cJeFz7Lsd%zfJzE?ConkIfmR053jN>s*&4Gi7ri!_KvA8un+Xb)Se-mj)TL4{ z-&9o0Ojx;=Oes;|Ofac;je$=jh}vTSmCUr$GEn@FPWGx!%ia7V{!EsJNh<_+?sK31 zG&V6P*K*lQs@wCK9xcK(Nm6wA#4>pAkx>hd)?w{Pff=S4KlQ83I~1vq^2U@)ElQnA zi)*5dLvB9f5e+pe=No&wZ9!zBFzI8g5aHxuzN#8O2LL_nXll@*qQEc&?&{y2`@~}v z0QCmU3V?hp#wP_WobE`#W}*rfY@XO2GM6nN1}Df7njgAwCNuo9QDB97csxn*(xlzf zDuWV$;8k2$`%+JWoMra2Sty*ZI3ya|IvY$RVo?z8s8*R*q3t;b{w?1<fGLyEv!WLS zbrewnHVglGj@k)FwI^}cZ|&~-J^WP@;HURhBm2X7?~E7!(z|Hc1W%&te*$ZTsw#Vz zQ7!fm=tu{X{~;U9%AelD;|EI0VMxs-UOk`qy1HCxL;>b#>b8F|vMIf<OJN7u|Dr)7 z=d&bVOvvMCqB0h1Zdr|bn_0K%*L)KQ|5&h_1W)TKY<zCLZUK-mZsfJqqSh72{dKD5 zLd}6O8@OjE|4AN#dw@mLADd7SCb*91eld#{XC!7U;GO91(Cz(k{Fj@UfAo44k0>s8 zdliqc-}LDw7>92|8Mlix^12k280f^2>*jebaP+7{6MRFZNi+T}JRjb+b#FVS)b98N zO?c}UG)-P+An!}Al(2q(Jf_f(UPFi+6$VR8C4A>#+nX4EPmb6EB~(B}c88J{s!!JS z&NMa0uC37)Ta~^uOz7-G^3yE(wc^V`-QXs(ZCRVSArWTYfIi7<4{pmRX5z;ihxUu1 z)&YztoyJR5cHDN&7Sr!B0MT04uo=ELJ0@7S5;kIGbfke~YaJHreLVSTqcZjJeuf^x z{f(uLmEEoG)kGcX9mempw--G9>Is#s>rpm(S)EkrFFR#BorduIT$1IM!>Bu%=aQiN zJ+9Ja#=8t|ZlJY9i2P1Z%J6tco$-1YO%vbSbKcCoyI*&psgK#<L#@eAgkm4;7<I=- z_)8^Xpt;|-rh~Ge_7WUh#VnR^@sAEoJuNN~=;-fVDO&3Rfl8u@4OC_87}uf=$9Orz e35A7Yx%&SP;QzmV1O!drfrV3l&%hGF!Tt{#%%)lZ literal 0 HcmV?d00001 diff --git a/ospfv3.mkp b/ospfv3.mkp index acf2054658790d0c83cfe9acd35a5e675828fdf6..1e5393c905409894a73a8314c175e8e8be576335 100644 GIT binary patch literal 13111 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 literal 13106 zcmaiaQ*b4KqGW8_wr$&-oY*!dwrx#p8x!01#I|jockip(&)xm#s{ZKzt_E=o42()s zgee%%@wbzOJ3AvA3mY3ND?1C5I|~!LF_XQm6UepS_wP-froFGLzF_7`dO4paGPNeV z%Sqi+g=Fnj3Z=Z<%u4zMWl7n@8AL@J*~xfAI^d`HVaPDG<fMDDm;6<{DR>;zyp=2W zydp{Lp9y8<94MYRY4QhVrHj7a+c^IRsiCAc;U@v&Qy=iT&CdzkuP4MszNrulk7HIS zTBIB1<lgoHzCI;2kArsN`cKDCCF;I-_fzhCrr<9&?Nilc-%c%x_hW$$XCMCfE|GNs zL`|=ZVU_b!is*TQAD86P$DgmE?9D><KB-6L_58-JLz)RriyJ=KR-GNBa!nd3YZS$t zYzm}DikX}*Jm;DT##Bk9yhh(#4RSa&3>YmOsPSzT*4W>vOd-6Bw#7Udl2-c|B={;L zG~Jzfl;^_>D)&Xx=Q+OZg#5Au+aA@8+u_!|qeIAt%HFG5h2W(G<)FBZ;nSur*wV5M z8FfoAR1bV}n(Id+@Lb>Dmu6|y-xNLG&X^~vEIy)C&nHVUx){vKuH3QMR$&2>&OgEK zNd@}hsFN&0(^{TvkLL{I^I$-~eK__d!)@>e!45Xzf8oq!W$uVV=q>axj}0BOe8|PI zNzet%luoZmGceYGg%7&eW^8U6<)IF(!c&Ye57E5Hie9je!#${hD_C}vddD(fEF=>0 zvBwCm8Vxn{`ubQ#TjJp+Zh|LA=x<|^^cTlL&#a<=+M!g1n#)({?;waqxRd<5D`p(B zdSRZcPquNskQNU8u?!KMD~_mz)%=a88TH8L0ARj0T7dBP?e#Sx=Jze)%QpZRfc_1P zy#QLGpRP-N18YtN(EkbltNaBF7~Q0O@z(LxP5TD<?(Si;fPsO89D%3sZ9jmlkvK4Q z^%Rrui2?R{QeEl?E~i!}(%Pty>Z+uO)z!ckil}<dF*y^hxRj6s7@;v|bZ&50TxQu- zTtq5e{z{bE?+FK*UO<tU$5CO(!NrLLi=l(I3z=GF2%(coxP=!UxM7I)bx@6JLkpLA zqi2*N2j68+1vut^F--*!t9PUUcgZFO_hFxb8HuBt#Mes!uP->2-S<vc`|qzWqo#BC z$fGR4!-Y59*}lUs4&8`_A}|N_cS8<AU;_3fgC8sWAvR5~8{l;fCo+P6E_b`{n(xsJ zbyO4GGMCu{nZ)vxm&pr%RyD`i{B!EuahCa41P}2_GfmDT+vy5*!PszX29J9R82GpQ z3)XEIRlEkWNrt9qJjf`qXG9k`GBAHHK$?@8od5z+L;(T}?7`c^sr~X=IR|6A)Httr zP5VGjxbJg$peRqod|-x7ObKhZ<|g<IefHev+c+RL;NwmBcHXpaA8t13x68-<GjshM zRlFu7Zw)Lj1y6v|N`ZI8&oFLWRbT{LgJT3C>Tn;#CB4KvKom)GJbLzKf(Ke7aVRU% z6t|qa4lFJ4W|Q>Qyu?SV4*|KVpK^Fe5O`NmGzHB@{Pw@Hh!(HQ1};ahkPR7DEBhLQ z>wVMt&coN#5zZP2!WBrul@l#Tt!(q2q)w~qpor(7*NeF|gKu2?)%?arF4N%9;W8gz z&Y6L&kq+!P;nP9Fe%>@`|Er-n)USd}=sWc4#~##)CwQ5M%?1zx7|1_@(JS;1;UkU^ z@f>W!qoLdt2^fdNz-xx3qfu=LFP4O02JuYvotk70=4KiR|Gq)+<FNWcuU>I@5ze5V zEld9NUMn&9KIIUNwZ3Pba3tP0`2~#(W1@nwz*Cx@5xA5e=kO-C)Ml`nIjxuX^Dbm! z_2D0}eCOxbpPzWU;<MXZWrLo0>?e<=&rGQ^EJ>WEE{*z6&o`@1ktu~6U^Pqjki)mZ z)%Dzb!Iqy<aza1(d=Q=>$>yjKr_?bPX+lQ1`uHsClchpmdpU;1Wp*}6k7n~DM`SaM zBkdALl!}`*08M|Gzj#xFBoaVO>fSFRU#Bt)$HIc(dkRd~ll14ibw1vW7;~x<t?GBA zHtQZ+w`FUBt!XT}%88es&|{oiapnp#jU#(JCKH@eCo???KAhHZ6;cMA*<<~}^cyT0 z=~0n;e2#s{&k4vf9~cX+vdpM*nLBnFJi!OCpeA8=+&>%NnZMMXmdmV-A-=a8ul4o) z&YI0m)(5${GTQL~h-MX5Hb`DX9ypRcc&)B~^CzKU<CIV<JW}Rbnk1T3ejL-kqhBeH z4+^GBT$DH=ql{`jAs{TGdli(=`YGo><_WC|o+?*Ty0!X{Jw9W2zc8q8H!C)7Wcelg ztV~?vQngSkTOcoCM|P@nNLBcY%6dh~Pg$SKIN;}wOJj8`Er@mrB4U$oB~j(`iB(n- z<^Cg|9wXd$1TSIff&80jSwY$;p(;Je`7Cpk)nsVmpusq*<Shv>s?t?()~+6B>%a8% zG)uW7WdD*X35`midzKngt46vB{)_?L6y-W7t{w@F!UCWXt}G`>0^M9y!0Su|i849N zrNLM=B9LUV{+gx**^y%MbWV>?u3Asef>cl#I(12=pFACTnqX}yl*mKPN&MNtkOrc6 z&hc%l`R_*1=s3aGqo16ez*M<vM^q$HxkHI~7q|rDGhErYDzbE0HS@NjQ!GSK5)J(Z zU1QFK<(019ddJ-E8@<Y|5-fw^53NjqfqxC)|9*b@CN3AGR&o)@Ab*7*4-sY|U18<X zj7+=e=KJxyN>33jH!d$&LsTcqh*{Ngl^#HlRCz6`Sa7~aQD?Yo7*SH9pp-n#3-CNl zR130o!bG7}#hMnylEpL+JM9$|22{;rS!dZkQ_P$b^$DokK;l;ZvBAVFy(G$S?kssI zm9w_Ngdgp!NrB0Xr)ew!6Kf}bP-iND$O~>evZ4*wRp^^9s+apK24_&>+Nn48JNDM1 z6((mhs@b(~OX(xzSW{D569DA}v>m{g$EE@8qP8RUqm==V`KaE+LCn;JRwnp;9*FxP znQv64&}tQE&)Hxdo^h{V^oMemtLL<}Yu-Go1(A)xeH}p_2Hv_Ga(3yr!n#@}FKy$h z{849>Z>SWT&C{k1sTI-ubd43%5<SBU66OqMr`skVta1Uza3x*$Z(vuap2;xHXtqVD zQT1LVe2lG{2;*Lvy?Z1>qJ(H{gyAd{8C1|z=tEMN%(Pv9RZPC&(|(EXWGZ}`u8z9G z+PoshI8LD8;>#}#o2ZBPXH?-U8cI?EWP*;96uK?@Q(oSCpkMpv&C#)$*uo%)!I&04 zmR7P;5~03KQ$k*bYbS)X_N^JIXc9Oju1GQ*+noxeMW=i?UZqO#N+Rj&FB#dP@dndc zd)4oWhEISNm8|(4IAV?*D{eHw$b=E(Eq!7hTqQhSX}F<&2m?{+q?2iy$v!=&^fKqU zjmpK<Iy5r8VbBUywbm#k3Fk`2exnGlfsORjQ~jZipi;o^t{2KeCkIWfnSXGF(7%_f zd5fVKIob3EHc!6lV}nv#-5by1PTD+mv_)*(8)3o_PeJ6TX<3t5Wf!l`;Awy8#7b?u zsfRwHmry$S?Z@*cfQI2<em+2;6%P*W4{*QX8QAs%gnk3!3O5IL27zFV;$I<sMWHib zS?zy0f8F<_Bsz`N_?LiuDZdCIzkCf1?2JPhFxLb|z}dO@xXb}9e0^HFgR>(1jY2l- zVLb}Gl_T=p7$WGd*5D?)x3f1j3D>#+aIEF7h^a$a9IvSj2nms*^iKx*e{C?r9LG8g ze{b}JbjA^{lq3sRL@m79ye!mrxqo${A1%Q)B^W3C+5A4(q81YBzp(c-ax(jD`m?bM zUOc}|pSzXHEH~Hb<JHle`}!f6WVkl_4e!|ilzyw;moUmQ(TG^IZs@;0H4b-ha$5-L z4s18ADj2@PtxMh~)`^Pb(5)|+*@<_G#jbOZmdttKp!oaOyC8F?%re;$;ymgMF>E$B zg(x+%Z^`I%>3IgBl<KruXa8+0Ie(pCE_3_Z_vIa9dmn9JCdPw}4=D#$&^w#a!f_~D zg@#vLKGd31nmNSN8Jp?hvI(KpHWlGC^{=_(RFSDOU2VLHg^%4G<|C&U>C9N^J_T`o z?D^%AW{*jh_rcTCk@dOt(t>(fVR^FQ!>mOo^_w4_$<NqS=0cyQlB9A@aGsPmYO~T; zp3+lZ+}hp*%D5M6qAzal?*3DBJG=KRtN}v)#BDIQ)RQF3Yof&KLw^+d`*>3oAA!gn zEX<N~N$qvK3f;dXi@5g75(3mNwnAwt-UZb{35Zk9s{BnlODJq7i{BuZU&VlV!ahiD z)cFHuP%$GmF!C=(aoMdg(Ncv*{Wx-K=)ZP_@uQ8>Tnk$ZB5_s}Ou|(FB0_o2@OIlr zH<zH2cdSxMBM*=8slh4QyQW8C>G+sUvN1s2%)RVfmnsHRrtRZkX-sj2mvz03QyLde z%n5O=fScuPR&l93?Nv^97LVau`+HHnTcBYPpT8FsiRvFKb+c2p*58<#;HzLMoJ!NK zUO^gYVu;(ArxpSF3;S2bNL|@`>^YfC&Pv@=@nDU1o27YOBpZ;>_49e1PuVSiNKi|F z4m_o>mDoY`<K-0cX<Sy|@zs3TjoH=(P1gL;*lKMObknwpl~^)0B(pZwkLvQ^>gV!4 zeEyN*^6@U?A)E}klIq`u!jaH{Uw1$1!s$WBkxdm*%-;mX{IMKMDCrxORCLohD?3p( zH9?MXg?0M|rir@VYrRnciY}1Ow7SQ^^zRLWuT-*)Iy>Cxa_i;49iUUUdA055bXWRs z%XIeH&I%<)=cI7fMX6Z~(>#<gi!|!k^l9kOX=h5Pb}{w}akY|vZF*1b1po}S2f`2q z%pS5h_$JH}`IOkK-vRFv2!Q}iT+%vKG-ZN%&82J${1^l~{6s))XR{9XE`(}$bX_Y` zkMtcd%J4hD6qtXDEbUVTbnNb1{Q&9!^Vfl=i0%>iUjZLI#L5@o96oR_vP6%Cb}n%$ zMuzWN&Q{Pw%g?haMtymgPWe2L_(nU`mzwL;4#Q9xV|XWUi`TZUFI9mWe3~G{RvEAV zVbhrX5sDSg6-yn#1Un*^&lPAo*Dn=t9p&ho_2H{$`mndQq3iXb0NO)MkxTgG_mfvT z`uCxY>NWiHBV&jDNjb$Vn)Hf2tljF+*A`tUx{MjyzbZY>=(u~=w(Z|?XH?BT^A)?$ zaUXtbR<eX#naYNSbwn0_LWU;k6!Gq|P_|$Hi|jL=UB`d7QXfl>f0e$a@ct2V8e;|2 zqxQTiJnh^q2z~`R9(_*!xtT<MSnfGZalte0AI`<gV*yklNEHtR`b8sOBXkdlF13aa z-4A%O;8okxs-h5CyfhlN9wWcJthXx|0+$kgq`?b0ckd?psE-E5fJj|{Kx7y>|AgQ* zdi<Rse)RF5#FF=$FTO}q3@<iBnRn)W4Ho#v)pt%g(^O;w8j)Vq@jpS~QU!$w9Bg25 zW(9)e^LYpyTwrnL1%Bl7y@OCv1>m@6^DwS7pbJs|qG%hpi74OC`J$oFVq#@2cc~_9 zu%?A+%_B@Qsj+X6hs6wOpN0oXEeYMdhKCLuy^m~riFPQ>z3^im<4l|fkAHP^k^Y6+ z4V|iVf)C}a3*UWC+@G;WO55wMX4^U`X)j9tC8WLBe8={4WJbHI7D%c<%0oTXEbyHe z4!hI26Vn0=Dxz7amm|5WS7~6u^phzXPp#LRa%%DoYr2D*&BK1O`^DfBr8(iP0a<7; z>(o@zEfvf)eAQ<BHGzgB0pHS2BL1Y<c&K^cXf&e_Gwntzy<d^Pj)m?%@wJpH9DNx2 zKo>!VT(@}5ixyeZ9)oOb{_765CUgkpedxV(?5%|QQCj&VCT|j1Fc;Z-@++p0FBaT8 zJo8rDvRiZ7RXJ}z&)VYnB(-BCG)4B8!5PRqwLIFv68+EkLkgtcjY#G496&Y0V@v3j zSj;<nI;0{)9pNgSxNR^s!;(B(Mkp$gn}A9AK6p%Pl4#P207I`-><{&Z{=QBhN8@5) zoSQiwOpYh%Ax(V;P1DhBG%s_K5%y2S1EJ7y6S=CtyHy@k#fT8?VheeY)iPwOIU$-0 zhgDQHZg;BXAaj%7dU!_lGMXk-HJOF=-5?~YUYM&^9aJ?Ffo(x1Qq?{i^9Wq*2^^lm zJ{sQa=gGZf8{)qEC&k=tKiQ$@}^g(*xMSq~8!+Yu~MN*ct?9{6Lh>RxQIWC}#4 z2$~Drp}a|?m2N7rbBAYr)IyTL-s3P-BYJJ7*b01fNhTPeT4#N`h%Jup^M%4d5mQq5 zn}H3?481Z!3u+;(k_#`CSGhQH@+OW&$T3RodRlPsS=+0Qy00gN%G_d77s+%ZC-^4$ zmPB{Pw&N;ee~3B7FUPeugk>WkFEYADE|_vKFH<B(bXIz`O6_5QHB^H<gv9iWBQniG zZS;3=sG7>(O_N@zZTg)il7l}OkFAUh4Oy+61y=X96Cs>kwXmv}jxqV$2+s0t{Ak{y zrW+Ik+z8#K2LD)WQGzvH-Kz8`N#lcdiB+*Ny?8`BR;0(OvXKyj&)_6D2hZTNSQG1F z-Iv5K=!Py{u7lh>GgESlBF9j4EMe<YUL>EC*Kp74MP!pS^o%cz$Z-|AMnw{mQra~l z2&Wo?zZQ&<&9!9H&*ojMvZ-(pFa<h-+h-Bydl704xsBUh#M(#^I5F_D;~>NZ!>+>V zX=%2C5U9uT!5hSW+xwksd<7YdV9k1J>zwtR*p4wX`&Kp!c<Rw^M&NtTP8kmPa4i$| z)ZhbTOnGX8!ba3=QM4*1X-%z+t^2q;L&cM9HBiH)<|Br2;7GRAa(Q|yYdEm+A!wq_ zY{4P8$AGYNpT3u$!oG8lFUxOzf_*)};yB=@&`-T*-zDqN4+0u65$fO>+RuMT8u1U1 zG_Em){u|tHM-b@g?(#7;?De?8i^Bu{4b1y}HZ*r1l*s$Hjjh#vhX3#CM%!wWCSL=9 zuR)XV7kyNl?^?B}Yqp-FdiNM9ysoW~DoU(HrN;8mJ{QN6ly01DeN`=C3Z)C5d;)e1 zhB>a*^UB5kh5Och7ru%B6E(hWkwa%qR(2fcJ5sR=Uo7W&-VVUNBfe-hD2?ME$!`Dl zXqIC$yTpy<*IXM-of)*LTa#)qvW=0&{NPT&TX>O)!~Ko3>crcqj-?Z>d)A>+4a%q5 zWHf~m3;}?JuwEB_{~ogm9RjH?#WQJn@af}sMt&iQ{6X~1NTh3xC<!2_0!H@Z@e%F& z{oUy9^fc&N_;zkCLg>q<7Ng&`cWx>d7g38&yk)Yzyb+D46w>~AWUU(db*g%^e&I*v zQX4<w`4%(6O$9ZA659G*LsZ9wU}Ysp%l>Vd8@Vsq@;tR2wn>ck`L7y7a*I|?6U-8= za@1eIVbkbR;0DPiq@ApNV}E@#NuBzS0gGT+=D=zHL8+{>afOVRcRN7fP<a=I*Cyjv z%^H|mRMAQ43xeF5LA+a4=vom~?H@vCw$<oXwcLL>1=Dd_LY;aLn)fvujT+rx?F=K6 z;RRJ%Y{4UaK7+qrhH0-b)mQ1uYswYVaJEa70ds7!f=fqFbX1V&LCB4<NN|59`y*G! zJ*b_iWb=wF<fZr?8LEv+!k?FEK|5_m25<ZQq07bVwTSS+nt94Khb=jy7i`eVOUG=| ziWeF;ymiP;<V|j3N<T|WPBfwC4zUq$HQQnj52{O=P0x@D8#(tPz-dG|n;Q7gGPWV8 zMl4|ivXd57XrOGO1Cxgdp*cozGD}G6NzAh@X{T<+%i{U?YH$mUXNYiHw8jwh!08R{ zeM4>h<2FjIc$%u_<9m`9#r|{^!>?%Es-wrRGX!ardN)AQVe%F5)ySn@A{JG7a+<1W zEOcbCYPe{YCel^aB>T#N<y0^RVK-a_GEX)#RwLQP>C*ZO#*4M<*1vsnOzevEkl{oe zT$?T|Icvhyf5BYp+A$mI!5x7tKsjqlOH)#5*DS{tcD#|jUR{<}(}3FVoz&f)6<UsT z3&|a6OP|ZWl9F1@5&BR3Llm?KkAo1+#x&mg%8_9Mlp(<AvO=05ck4n}x@h*|f$qL1 zZIO&^>!uN{kTS!V?$4$z4C5wleKEb0)AXG95a6LBIHuRn^D^8PdDdWIQ+{?+$bs=( zFvB5v$~(<U`Z@5IvA(QUOX6CK;i`c;``DB+-6t$&;Vs+@er4Tz6w8S8@|^eBhY82n ziV$@_b~E+92FDeW{L*NlO{^&>8P0{f57Z+wvCu~93Z_UGU++%^k~wO-BIv)ks278@ z1^dJ94$7EXK#4WuRDhME1W}P~Gkw+c%N5VD8DmozYr1~C#MPj@vQ*}jUcN=Npy?G> zQ8i%Rv3wap@z8EAtZ&jP2IJMk(K;KFEqXf}s-~-{-x#7s$9bBW){CZMORJHO$Ak#U z#jX|#j>6}FFK%1Ag>-Y>{H;ONtD87K)G_Vga9YKiJgy?b13&A9o7C(9eGv(3k<cNm za!Os&^D)b?b#G{YnP*u&QFp#hGIU6z9&Q;6=m11S*dqV9aKCdsb<Ry`acR0dw*wst zb^bX!A}%Md%B2J{N*>`Hw!js)skWyx6jl|rC?vWCw@e~V4&$yMwxB_6N$GrR9QHX3 zaTr3QLKq19!>pBk?tTquMFH{NufHAbzcfcam3PA5m`CTjj^u-><3S(Kh7`n2aRv&C zW@YM{@9zmdjFuW?AyTA?9q~2}eut0l5n#m?{}2G&>~<F$1?!6zgGv`gC3D3)W=|qn z6M7KLsoXVQ1?Cp}CgpnVqv<}mx5_H*dB!)J+sqL1-U;hVmrNd22Ts#8jO*1FbZzxn zmF(Ae<P@bIGA{c!uo5(?wUAaiUEzi82%JZ&nk$-(i!;~(n(_RbCPn|o*&k^hT;uHS z4Jg|fs?rl%ifBLV+Rd*rVJV065!)h#*!R)M=EJiO<}M`i5lh#ag9suuFi$ijvNL}O zF$xWQ%4nFqLsr`nA8eR6Kb)C1ZA`m2aO$s3yZy`Yq2CgdI`KQy&`fIDRYh;|_8Qfj zURDFsJeg&UZP(M=nVXB2v#Mf&O=q07Ns~M*aDU3ntC*+psHk$7?J#Mn6yV{pOmWWJ z4$S*AQUz-Xxu^i(yAAOcO~ulQ6X}gl+=5xF_FA0v<t$3dCOE8#3MQF(NgCc*Sg1aL zA7cd3rHv)<#VX#C2x|s4<!FVab5(ji#X5^9m6V`PDTuo~-;N@nTA?*ty`Z<}#_!By zQW-_63PF`?8N=eH1d&mOV#cAZnq^8_J482n5(H<p!KbA^SW|u1^8$QI+WA~}Y&VM2 z4aL|8yCnoZh=NG7zl`b)`H5x`9HsSynPv?NsoaT(EorNxN&z`~Zjz?*P;s6mwK(#L zxqoH;ittzd!?L5M)z(GHu8^%3zxkEBMslT8V}sCx-lfC-p>+914!IZQcg+im*yH0g zoEzyjRnS#nQL|l!!f#Eq$<oC&eRDr}C9!gWjn{tORrZ7=jLt;kZRDE^d+qM*4p7h? z*<^J-Nz~9D-O9vUr+ZNvbc{@8=X@%N<ZTh9wVD055mJ1rz_<w088@>WTe4JpH92~G z*BO_aICRxY-~lljhEY}Z*Oo;tOZqu;^da#~2)(zq_zS|cNU9(o<eR3^KkwC4|BT8J zgIn*iEJw?(eOGa}*RlObvCb$Ck>h=?W+13@$ZqJ`8Li8qlYe$NCc7?yU4Bk+bsScj zExRtc8Gc$(b5h%Ew+#Qds&u(ew}u4%&hwwowri$&EC$A*R+c2ZjY%Dy(LC6f8EeSH z*=EDQ?Vm`?Q^?$O>W;6tF<_ij`kS!h72^13eJ?lO2l>}$KRyzaKR$4E6o`8O^u!<@ zARc|R>Jgb`i@o!|VTvWQ4A0?Q>2(d68demU{Z1QeBD}VdmqyHYcXbZSHvgH!XbfTG zF^<4GW5+$>hGRo)qWy?%RBzLsBQ>`xmTem6#rpX})FI-m<VzMmRX6VuMqfBn(dD#p z#0$!6XUtLqt9JBfjF;?(N7ga8g35b0euuqyE=3^n=05&6S66^1c{;0^7x>fA=$Z1| zTmo@?cb14b{#C)BA(ovcFMc%_R+gWceyO=UL2}^F_icbjq%E;-NxSWqqcV_=<Sd_1 zSKI*=@UN7=hZNS05UHdr`bH%Jur8=$iCd<fH~l*`<hCx*?|$(7&ByfAQR%+9x{y9# z*NqR1tT0(CZPXZad~jza93VlU1OD!o!Nfx7_Jvb|SFf_X822A@COBCA!7ikJt8Wte zDXw_YILIf%XHRr0=Ho)vRCNl7`#lM+j@?K@V%IrvJKgE}2ej2FtcV+wxua-7++?4b zlzCd!js_SB_qYA>6)KV&Hllsh!YmpKDkGqVcUmqID<m0N^4fRiQ3z`u6`nD8s}1sq z;P&5&YNFW9Tsz!UZyZ>ASjKSWeRnnqQr$e_4xiWrf5EV(=uLH=##_0G?4s->ftunS zo;YVGpcsNIvjmJPnC60Ih#<1Y2%XF@)E{H!5AwgnLE4>CrlC0}5l3V6nK|*V1(h~p zN)MWA*H1H#jG(e>87*EBO+Vq7{`mpo^^KlH6@57zoD}+P8Pqxf=@X%+5(}Sr>K<f? zskKlw6pY7qFf>5_AUu)$EZ(Nm_kbBo4g%B$uxFwWS$GWEgzC@856EhkC(bZ<U=;Q9 zWycZ@GpBeo3;YXyLVQMp`lKCZ|F(E9nBRWqcL0@V+f)<NpzPU~BbeWMX$|yMda!K? z`x!4Poya`{sMc$;8$mF*_4r93L?PbKNO2i(k^Usq1xDm}+TYY(bx(0;H(MS}XK@T5 zPwfT-?!~O)`;W+|V*_b|I=!jWRxPbpJ?A`CY7`h16r*&uU1p6Y$AO`lrRtA{G>TTo zL3hGB?jCV*MhD)eDkzm?wFX%Uu!CMYI=UZ!AKfG`_C*z_92)&S>AZhIjf~$uMT#8l z#!S=&Ow3djsm2<!WFqL<1IDe^QFz^42c0gX2sx@o)p02~y5>+3LDlUX{Y*%pPVoG0 zD9($1FI^kFrA$ri-Tr8{9o3+1n$w2sMJV~S^%>NPK+q!oio$hgawI@<mJXWXH<uIA z+A88eW-rR)({@NyCD}GZrnQi)8OMTckIOZUAHa0jiLheeR*~zC{wC9k@?ac7<DBX; zK^}l*GiSw!`+z{b)e&Y%5-yp*d`Hly!572b5vn5#ogr;BgP`>C42i3Gz0_k^C#RgC zi%PEcIkh|}(&r#DkeicuzYIr|&fvdNNE0Y2jm2z6ZZ*Opkifs?;}W-9@S4udfF?Hf z_e|IsTj*IaHt>w)mhQWs<-Ym*lx0>-RGiVvSLoj98DHeAY2mqSK25&$m;04w$s3J2 z?vq3=u=eCW=|lA@{E?(sci&>$$YRk}jWhBoO?m2Y7={f)M5&o!t?tvVc*m8H$7$y_ zXK7MrjJ?KP0R{0>YD-x)k=i;-qCy)x<cz6()zXV-I0j`<l&DymgXTbWg*<v*5A|>; zqE?-+gZ<+PkN1!5Kh>8~@Mp_Qvte&)nL^9iIoYx)YX%x;(1`Wq6&O|<!O&sMxXuH7 zNAtt4mR+g1*+mMiY4A*pUv<+CVET+kmvq1k-@pJ4$QiiZ+F}7cSd`~;>>m}nVo&7u zLO*wGTR$2k_FutR%)jX@=AnThQoEX#CM!5i29sW&W{~~+G33|;DCeVjKX!5vZ1Hr( zx1Ek;q2(z9&<j%HZ=qYHtmxvbwh-w=usi5%uSVV@<AQ~D45_f|pP?5N7Ruv-{T(O` zZJ3A|in~@xh!xMTw1D>Di-qND8O=OT+rnyjgm*){6p)J4OVl#0;dQ{FddLKRqo6Ng zO<b6OMx(vq<l5tCI^U<5*5zDFYM)|4D9z*88mWDkXw?QW=LS)W!xL9arJ}u!diKV@ zvi~>jwe1vd_9rS)-Uz?@=B7B_{YL$|i3=xp3^?-=ntg@x`FYdz2gY?h;Dlg6zhcW? zwVq;gs6ALafK~Vdq37PL3VMOfeZqEqKp@t6{o7B%={3^VL1Xe}p?Kz+u|TYRH2zHe zim~t$lF5(ij;l1&;h)^*s)y|pjuZnj#d>VzkmZ)USGdxtP`y|&wuzpDxjt#KVXXpl z9C9Vdha@ytlsbdZhug(^!k}>MI$!W1j>%x&ZY8muPRo3XQ)41hj{^n%o6Seli1cQ7 zpDj)aujKYtH&pCcU?kcDWxcS!sPJ5^4f}uV<}D`+YYxfZ7(0W0Q65T5NS<zdfkLPF zqu+d%yZm;$pr*)cX%6X9*8AitI=y!@TN?p&3wQ&k8Jh3U#j&+tsc-mkO?HWT6a2~m zD|G%LOr-?=;wScqWj6h>R#a2a^TY#b9CmAmR+*)4o1D3Q+}6WCmTuWk-HM7(xYiuo zTNhs67JdQh&2Cg_z9&msDu~>igqGSW{`Tq<i%ubt>Vte0urb(wfkGES7qyp1vlHl5 zdZMO&%3)!gD@v8e8vFXXs;q>uF;o0ke1PZG-+BxZiS&8}tBseneDg)gs(Z{6uK1%` z6Xw(NYDbpGEHU^J`bO53UgDQ-f1#2Jo>pw3e9<kmGlpmT6h2CtJT6*FTKKeKz9*4_ z*PQSkB+~dQ*E{S}Ma}amLKXQ~<rg9482vnD;noE?6=h0nh)bpUYHGMx-W>ecRxrPH z6<Z6VsE+&ujvG4ujJ7J|e&@l3+WQ(cH)mfZf3JD`Bc3d4Ag%$>7`XD?9dCW1`>G99 zF#2wT8-^q?f8Fr}|N5e#7T4qsJ@bsef*XFrL+IN}Z3TIaGp5)vBGF%b-&2yQvdH$o z(sS?H4YtYg>I1LEFn=Uhm)(@%yu2nytx+R%ST1yw6xO!(N8ZT%JM}_gD@XxsMi&P5 z4Sjr9)`8ab0zEkJ5J$Iw>}$Kb5s$#a-8^91De&bp;2S)cxII1p=dmsLjw@|TKnaAU z8~G=A-{^p0XwFL1Fz%zDnL{{ab3)VVM>>+fb9UlVlJJ1EVF*;EZDWE2GYOlypy>lZ z-w`P&b6eT{9m!aEXh#(Or0j|P_??VdtBFci=pQ34z|L@}e{Yq12X&2)b8$Og_tjs0 z_CWGC#rv1w(GC=jl+cSDJ$=UF=iNIF?-#S@XIrwWc{xp={GzfaNw#qe_Y}>Ua5BT` zo>~6~x@!1qvVvS=PHMciB_Gnd0pWl{R*r-bSy?0sDh|r5Y;;@tnReLb^}5P{JxJiW zeuIk&OJCVCdpvi+KmXV27d8N-5=PSHo<cn}OeHuo?Jv*@-{ne(^s@uruA}$bXr(HQ zH5h5T)Pz;zQDza!)uXKOZ4V`vQz&Co{2|Dr9~zeD#cU9&mGk*e+Rj<GL|%s;cT1QN zq~8dPXBzpuuBF}7zOA$C`114(<d4&t(5yGeU5Nri=wRq@g!StdtTYVkGNyJ;^(&$9 zFt97CuD1{|0Ve#ohkqvK$=m23Ow+UCn9x#30y=q#YdEO*?h5RnZ~Q2G#Ak7>PcY%I zj^aoe?g`qBiyXQL#lOidpST~2<dWFCPMJsC2wf5wtv{$D_ibK$YHAM5JzJFSF*wVd z!!2RQvx>4MGE9GwP);v}Fz^{=t|9gClyQlpJ~`e!fvR^8%0tdoA0rB!Z8qo6DG3Qx zH|M;C5I!YQ_H~N2;Tb~{se6&3?wg_xFh6*q(W=ffMX}l%xrD-d+m;9EzUeJitD2rZ z9d{jevPapMu_&4(wrkxD&$1F?7>4xI*})FhI%PJGR`HMjG7b_+<E@5ZmzZ%MGRdSw z6Mmt&+|iHF%2rX0pxkEc!3Lz84nEY<6Wx8ddQRbMy(AnqFEMJZ_>fE?<;R*wWSCDd zsw<Dz8})@wp|CDfIw4zCo1B1!=pjAURIU}<#BhkQpo7X}eJ;)9q-d^n&cf_AXmVj8 znPN9S`)>n)APd?w6kO@kJn14vrz{aui>nKRLC~7nPPS4Gz_7vwuKUP6HwOipN?8G! z?z8(_XBX^3NM4n~C*<ErC!E=(O;S_~3GHf9%B^Zro}~>_t9eef3@TU#Bg384DV*>g z*v4|ZFvBjWj*O0x4U_<424b@By%o7`)tS0WU0C*R=AbH1nb?%3-bXbD#Rl#uLgtzc z1lE+GtqSNXt!DkqFtgflH%pYknNE)_lB5;PHWW&s`W`zLN#i7==FoLF39QtOA}w?> zZyYUS490!VaUnps8$KiBmH{m}mKF}vUgd`E0~$m{C+^^5v|RQdfd}&S1HV&0Js*qr zmNd^FEMt)!r>GQ9&G86bnviz_rknWl9}aYHnXVL6`EG~eVG`qStai@<XLo~KH(BKZ z90wo0dIc3`)-@m~tcHiq<DSqV*w$_j{0%O5Qk_vs<b$O(0;*UtJ)g&;*`KXp*-nk- zo}v>)=cH39I4u2vQEdf>P)2OM8H<F<=s<kW6!S*sPLr~=YIZgV1%4BR^v9Yx-<cPj zkjO7k<u{%ysm<O;sMuKw$wexTC@&8f0<+phh=!*NuACxDeKed2+wc-(kIv$#-vF2( z5Tsc!PmcvsWU_GjJ1`G}9^YjRjvK(Hngl~paMIm0q$<=Y)}v8eHbTWEF9rCpKIU58 zzbH3Yd$ru#fNe2nB%%tQ*E|L18{-jLLlqsvfX>@PUbRfUJ&8_`U|uht3|4#w)D@z6 zPP!r63q`o?$W%MUIRU4>Tro?mEZRdhMujk<WWf}guS@Q3ShvaxR^pxh7^!mytN{Rx zB<i`NJ7FDOBnKLgM=k{}9gpzv-|6|j6&NexdPfUS*<d5%4{QHhjA2kj11oE?vn<4C zy!tLSJ1BZHCf;*g7=(n_Frf+YFcQ;JB3cl2Gr>LwF%$QHQXE*e85uk*bDqkHWEOPf zX)wP~RQD)Gi-K_Op7G<8>Fqii?fLxn>(@|v_<TT{b*)sya2OiY2Y!*3I}EE;^cfZ; z2%_>az2V|h1vdPORroiy_yU!bsoAB~w=D+0wKvdz;S8|d>K7#NN@{~f{Y&gbrBzCr z&fMV|nKX<zHhG3Q>Zt;{kd8+gWVwpF9s)|4%mBYX`<rbRBpt7NJ(bgeo2;1B>?)<4 zG;%Q#KEBY^U-VorF+AsZ&qC7^4vz6xpLPxS(AC&hR9wD7VJu|W!<kQGidHh4UT_Mz z7gI*eASAaqmIZrBZ`iBcSn7aSAR?-&ahI!D>6mlQ?B?Sk6Omy<paW{uN`FSF;tYx~ z+U&r97@|T0=kIQGjO>$;YyNs;_Q;5dIL0*;sAmt8CX2!dZxUb2iqt-{YjxFuVeByY zppR;r98-(-`b{%0xZnkoSi7V=XF+)QGyzA_SgtS!lg0sLcKmsb{w9NgE)2+IBz%T! z&7fH`GR*Svv5#`Gi>ra7)Cd7u1!jS*K%fzIb#jn+mwI04GUp2JH-Z4z42lQm8~a`{ zd9Ptc{SpR`W`+8vUHcVl4(1k=u>?^yjjKh6_7Cdu{!hxpkRJo`yW5X48Irs>prI9> zG*Vlsp|KQkpFo+LfF4p?U7tyjyA|Lt1gYN@+tv7U@}DX6m`g`G433J4b;V(HHUdV6 zqJ@&Rl%isNvVPrRL303ACu6f|sae2u6vE&X-o+nm3SJ1WU!#$tvS*u0dcaKUDg#-p zS5(9#c`>dvt!`~};Kl0EyhcVMQL)JLhjsO4Af<L2yxV=E7$5OvcruHjHKy`JfVwD& zU_05Ah0k)Z!=~Auj2{k+%6Lpv0fHeqMQ{hZ4tm(Y{Pq5eZzT1DIpgGG1}%YY^Y6lI z53YEkpfy95h36q-4Te||=NXAp;9^Ms$IOE#xC@j*YdF0B&1{=Qf7hEZ162c2C+TS- z3DWrFe~e!u4noB_HCi?X@D)mnO(qe#RAyj}&f3{8l3P~pH~0^ZYvGGeqOBrw93?@c zg&p>cb%y{O>Gb1z5xb{9o1}r(?qY(48z#ijS4m2&)+3L9Ghksrh}(1^jKX%a{(XF? zm!621i!u1V?7;)!tI+giG>R5!8cln-5I(Snx3n95S>#UpaI!(k^a;ckNymAztqUPV zMIz0*MnuuT-x`d6eLgXLnxZ--Wyx^b?pLjtgp@JrX+M!ps8Rk;@S;+W$WU_Vuz#L` zXby>2#HY-+UGo(PD4z{lI1KD2<D=~Z(?(K^c{YxU<6ccM-W7nXV2KElyIGRN-)7=- zwqo^I85WiXTL7+!msuXc(xFjG#CWXM!kZUkx#&u`%+?H*QWE)H22)8xYn|@!fkHa} zQCfuJ_Xoab#w18(wA4O-3||hjRI@vtQym&cSCI3$SYu-%2+iHI#R_`HGwKl#7Km^r z%PDf-xX>4c)IjPj*1^0;qo<T+`Aw9@voe0@O`$Ebkl_MzGBG#ic&Rd2uMF$i;hc5c z{8>&0ooD#MS0Y}lF>x5TxfDU_Gr;nF)+(kbUij4jEG!d?#Lq#qp3v~V*O!*oXg9Ck z&Rg<B`(12h(mX)=a-v$wBTVP5Mmme{)s8UsxqHs0J(j@G8w1WBSyA#<4Jh;zZc7E9 zAF3H1Pbi&J-t{A)hSw;EuIqLAKleyCz>QN#ta@*&D&!vAzHDfuQrh@aGc~yV1h+~q zqPt0BbE}S%n@|F3Z{voONNJtb&d=z!`*pGTYw;Z>7}qb@=iF>gi1MHeCopO2>`0PP z&tqAZ!(wmagd4E!@ZS=}f96j?3{Z1<=61S;a1^L^3We`Sq0t>#?xmoew7z{XhIdZT z!%3o(yJ$nlc6Aj`gLA!=c?D;kF`%@!WnF-VO;iqTCU|eOtM=`I;6ES@yho|FvdY8f zs=5mVnY3DiEkmS@cm2f})On28mXj)Z_eS!2=o_eLKo$OW%)#ngllZ)jq66~-*Fm9^ zz?e_7T(#jp+m2i#Gx1UQe$Pd4)+jS+XkPg7EV*rGTPg~_{dUa-9THQ;{N_5h&#t?+ zqocYxk{GoZ%2ZjzQRgo`8=Wp9$Fq;HTFC%A3lM@pGZUtO%2HCGK{%ym$nL+oSa~$z zByDZq{Kkc<*tBzhhT`N<NyvZoFD2oWwlEv-#`f|_I0<Hkax}yarg+<E0bai!J)|hw zU$6PKb86tb()2yWs@3g)=M2gLEI8@u)La5UxRo-AEJqXPsyLybZQ27z`?<d8YwMF} zC{d}Ij)RE5qTF&*8&DMz3&dM6m<kz=HWATW!%OQ$gJ)dX#d3ezWjA)fSN=cg{r?*8 R`=mY`JBSRIK@veh{s$`)pV0sS diff --git a/packages/ospfv3 b/packages/ospfv3 index 59c4c4e..8301b31 100644 --- a/packages/ospfv3 +++ b/packages/ospfv3 @@ -14,11 +14,10 @@ 'ospfv3_neighbor.py', 'ospfv3_virtuallink.py', 'utils/ospfv3.py'], - 'web': ['plugins/metrics/ospfv3.py', 'plugins/wato/ospfv3.py']}, + 'gui': ['metrics/ospfv3.py', 'wato/ospfv3.py']}, 'name': 'ospfv3', - 'num_files': 8, 'title': 'Collection of OSPFv3 checks', - 'version': '20221130.v0.3a', - 'version.min_required': '2.0.0', - 'version.packaged': '2021.09.20', + 'version': '0.4.0-20230603', + 'version.min_required': '2.1.0b1', + 'version.packaged': '2.1.0p21', 'version.usable_until': None} \ No newline at end of file -- GitLab