1737
1738
1739
1740
@@ -1464,7 +1409,62 @@ address[0] is the LSB of the address, address[5] is the MSB.
1820
1821
1822
-1823 | class Address:
+1823
+1824
+1825
+1826
+1827
+1828
+1829
+1830
+1831
+1832
+1833
+1834
+1835
+1836
+1837
+1838
+1839
+1840
+1841
+1842
+1843
+1844
+1845
+1846
+1847
+1848
+1849
+1850
+1851
+1852
+1853
+1854
+1855
+1856
+1857
+1858
+1859
+1860
+1861
+1862
+1863
+1864
+1865
+1866
+1867
+1868
+1869
+1870
+1871
+1872
+1873
+1874
+1875
+1876
+1877
+1878
| class Address:
'''
Bluetooth Address (see Bluetooth spec Vol 6, Part B - 1.3 DEVICE ADDRESS)
NOTE: the address bytes are stored in little-endian byte order here, so
@@ -1641,33 +1641,33 @@ the type is set to PUBLIC_DEVICE_ADDRESS.
Source code in bumble/hci.py
- 1738
-1739
-1740
-1741
-1742
-1743
-1744
-1745
-1746
-1747
-1748
-1749
-1750
-1751
-1752
-1753
-1754
-1755
-1756
-1757
-1758
-1759
-1760
-1761
-1762
-1763
-1764 | def __init__(
+ 1793
+1794
+1795
+1796
+1797
+1798
+1799
+1800
+1801
+1802
+1803
+1804
+1805
+1806
+1807
+1808
+1809
+1810
+1811
+1812
+1813
+1814
+1815
+1816
+1817
+1818
+1819 | def __init__(
self, address: Union[bytes, str], address_type: int = RANDOM_DEVICE_ADDRESS
):
'''
@@ -1717,15 +1717,15 @@ qualifier.
Source code in bumble/hci.py
- 1800
-1801
-1802
-1803
-1804
-1805
-1806
-1807
-1808 | def to_string(self, with_type_qualifier=True):
+ 1855
+1856
+1857
+1858
+1859
+1860
+1861
+1862
+1863 | def to_string(self, with_type_qualifier=True):
'''
String representation of the address, MSB first, with an optional type
qualifier.
@@ -1761,36 +1761,36 @@ qualifier.
Source code in bumble/hci.py
- 1854
-1855
-1856
-1857
-1858
-1859
-1860
-1861
-1862
-1863
-1864
-1865
-1866
-1867
-1868
-1869
-1870
-1871
-1872
-1873
-1874
-1875
-1876
-1877
-1878
-1879
-1880
-1881
-1882
-1883 | class HCI_Packet:
+ 1909
+1910
+1911
+1912
+1913
+1914
+1915
+1916
+1917
+1918
+1919
+1920
+1921
+1922
+1923
+1924
+1925
+1926
+1927
+1928
+1929
+1930
+1931
+1932
+1933
+1934
+1935
+1936
+1937
+1938 | class HCI_Packet:
'''
Abstract Base class for HCI packets
'''
@@ -1798,7 +1798,7 @@ qualifier.
hci_packet_type: int
@staticmethod
- def from_bytes(packet):
+ def from_bytes(packet: bytes) -> HCI_Packet:
packet_type = packet[0]
if packet_type == HCI_COMMAND_PACKET:
@@ -1859,62 +1859,7 @@ qualifier.
Source code in bumble/hci.py
- 1898
-1899
-1900
-1901
-1902
-1903
-1904
-1905
-1906
-1907
-1908
-1909
-1910
-1911
-1912
-1913
-1914
-1915
-1916
-1917
-1918
-1919
-1920
-1921
-1922
-1923
-1924
-1925
-1926
-1927
-1928
-1929
-1930
-1931
-1932
-1933
-1934
-1935
-1936
-1937
-1938
-1939
-1940
-1941
-1942
-1943
-1944
-1945
-1946
-1947
-1948
-1949
-1950
-1951
-1952
-1953
+ 1953
1954
1955
1956
@@ -1955,12 +1900,91 @@ qualifier.
1991
1992
1993
-1994 | class HCI_Command(HCI_Packet):
+1994
+1995
+1996
+1997
+1998
+1999
+2000
+2001
+2002
+2003
+2004
+2005
+2006
+2007
+2008
+2009
+2010
+2011
+2012
+2013
+2014
+2015
+2016
+2017
+2018
+2019
+2020
+2021
+2022
+2023
+2024
+2025
+2026
+2027
+2028
+2029
+2030
+2031
+2032
+2033
+2034
+2035
+2036
+2037
+2038
+2039
+2040
+2041
+2042
+2043
+2044
+2045
+2046
+2047
+2048
+2049
+2050
+2051
+2052
+2053
+2054
+2055
+2056
+2057
+2058
+2059
+2060
+2061
+2062
+2063
+2064
+2065
+2066
+2067
+2068
+2069
+2070
+2071
+2072
| class HCI_Command(HCI_Packet):
'''
See Bluetooth spec @ Vol 2, Part E - 5.4.1 HCI Command Packet
'''
hci_packet_type = HCI_COMMAND_PACKET
+ command_names: Dict[int, str] = {}
command_classes: Dict[int, Type[HCI_Command]] = {}
@staticmethod
@@ -1971,9 +1995,9 @@ qualifier.
def inner(cls):
cls.name = cls.__name__.upper()
- cls.op_code = key_with_value(HCI_COMMAND_NAMES, cls.name)
+ cls.op_code = key_with_value(cls.command_names, cls.name)
if cls.op_code is None:
- raise KeyError(f'command {cls.name} not found in HCI_COMMAND_NAMES')
+ raise KeyError(f'command {cls.name} not found in command_names')
cls.fields = fields
cls.return_parameters_fields = return_parameters_fields
@@ -1993,7 +2017,19 @@ qualifier.
return inner
@staticmethod
- def from_bytes(packet):
+ def command_map(symbols: Dict[str, Any]) -> Dict[int, str]:
+ return {
+ command_code: command_name
+ for (command_name, command_code) in symbols.items()
+ if command_name.startswith('HCI_') and command_name.endswith('_COMMAND')
+ }
+
+ @classmethod
+ def register_commands(cls, symbols: Dict[str, Any]) -> None:
+ cls.command_names.update(cls.command_map(symbols))
+
+ @staticmethod
+ def from_bytes(packet: bytes) -> HCI_Command:
op_code, length = struct.unpack_from('<HB', packet, 1)
parameters = packet[4:]
if len(parameters) != length:
@@ -2012,11 +2048,11 @@ qualifier.
HCI_Object.init_from_bytes(self, parameters, 0, fields)
return self
- return cls.from_parameters(parameters)
+ return cls.from_parameters(parameters) # type: ignore
@staticmethod
def command_name(op_code):
- name = HCI_COMMAND_NAMES.get(op_code)
+ name = HCI_Command.command_names.get(op_code)
if name is not None:
return name
return f'[OGF=0x{op_code >> 10:02x}, OCF=0x{op_code & 0x3FF:04x}]'
@@ -2025,6 +2061,16 @@ qualifier.
def create_return_parameters(cls, **kwargs):
return HCI_Object(cls.return_parameters_fields, **kwargs)
+ @classmethod
+ def parse_return_parameters(cls, parameters):
+ if not cls.return_parameters_fields:
+ return None
+ return_parameters = HCI_Object.from_bytes(
+ parameters, 0, cls.return_parameters_fields
+ )
+ return_parameters.fields = cls.return_parameters_fields
+ return return_parameters
+
def __init__(self, op_code, parameters=None, **kwargs):
super().__init__(HCI_Command.command_name(op_code))
if (fields := getattr(self, 'fields', None)) and kwargs:
@@ -2087,34 +2133,34 @@ qualifier.
Source code in bumble/hci.py
- 1906
-1907
-1908
-1909
-1910
-1911
-1912
-1913
-1914
-1915
-1916
-1917
-1918
-1919
-1920
-1921
-1922
-1923
-1924
-1925
-1926
-1927
-1928
-1929
-1930
-1931
-1932
-1933 | @staticmethod
+ 1962
+1963
+1964
+1965
+1966
+1967
+1968
+1969
+1970
+1971
+1972
+1973
+1974
+1975
+1976
+1977
+1978
+1979
+1980
+1981
+1982
+1983
+1984
+1985
+1986
+1987
+1988
+1989 | @staticmethod
def command(fields=(), return_parameters_fields=()):
'''
Decorator used to declare and register subclasses
@@ -2122,9 +2168,9 @@ qualifier.
def inner(cls):
cls.name = cls.__name__.upper()
- cls.op_code = key_with_value(HCI_COMMAND_NAMES, cls.name)
+ cls.op_code = key_with_value(cls.command_names, cls.name)
if cls.op_code is None:
- raise KeyError(f'command {cls.name} not found in HCI_COMMAND_NAMES')
+ raise KeyError(f'command {cls.name} not found in command_names')
cls.fields = fields
cls.return_parameters_fields = return_parameters_fields
@@ -2171,16 +2217,16 @@ qualifier.
Source code in bumble/hci.py
- 2037
-2038
-2039
-2040
-2041
-2042
-2043
-2044
-2045
-2046 | @HCI_Command.command(
+ 2118
+2119
+2120
+2121
+2122
+2123
+2124
+2125
+2126
+2127 | @HCI_Command.command(
[
('connection_handle', 2),
('reason', {'size': 1, 'mapper': HCI_Constant.error_name}),
diff --git a/downloads/zephyr/hci_usb.zip b/downloads/zephyr/hci_usb.zip
new file mode 100644
index 0000000000000000000000000000000000000000..5e1dfc946226588ddf2859e50513d87cd27823cf
GIT binary patch
literal 127126
zcmdSBdstIf_CLJ$IVU#=5D03xs3!?(AgDpKwQ6e!;mEB;Z98M_jmvZz=tb0CupLVf
zwRme$u%l30ly>T+Rlw3pt;JS*u~TOftMe5dM_OBt!gRU=D2D{dyLJK{{r-OM^Zxzv
zJmH+P&%Ug^_S$Q${aJgTg*hx2jp$#?;+Wrm{PN2mZ~hNP^cMnYFFjG}ShZqWVezxh
zJjBm>455ckVWfiVt-nC=TmEfW8hlTaW{uq6^)NzXtQgVj{~v$%w`I4XL}fcN#kc1X
ze+v98h^UWz;8Cidxz7C!5v6oV;yN!~XN+7^>4MS)sD0{nvS7WiSx^efx5fz12{8gP
zTgeyBb+#7onx2e~?B*{#Jd3={;50AWyWN`JrB>Hk^SZ{|x3}d}->_sHjDSc=F
z-lXr$Fm-h6lpg<`+?kyjOvhdiqcGbWyH)HvEr)%>gW^#nSt~Nm%wL&*>>7D>fpAGI5&2Puo5esEvoV
zX?+UG+Qp{t$S8!ip*{)CFtw$fg+>A^OegFVp1sA-#NT_~+8gYzvg}$fPWiVbvkG10p9Yf$FJkv2mM&M%z
zy8*a9AVG;#$UmIc#iqTMk=#*0^THUu7R<})?UaiRK4!=6?r@xz@i!q|V7`~T@6F)O
zv~@G#j&6>{v(dD_xLUiznSyQ>W3PJ9;8pbIcCqY$73fddAzFnm#dM)Vr1Nv?bt&C-
zT|LVsB|9I9vCM49h!DmKG3UqM+vt+k<1h!gd`27mOU(&os;W1qW07JAE;=_OoKP$;fjr?I4_SAJ-@3^
zkT~y}!2P`yp~NW30{6KUE~yIT-Sn?CuakM=Lup>VLgx7sBlDDDj+`5Am0qwI`+hAl
z5(S&ySG6*oVD?=|+b-Q@Vaa^9h?KMI;C{RGnuX?B2iNV=ypj8PmU1JS@~(8olGk_K
z_@z{pViLZ*9`z#JmA)%&E?u_%OKDo^I%#g{^e5hxUR(aIw03zId4G7Fv~c;C(gRyV
zNvvV`U*JTgh8<3GnrBCGloZsNXAU(nmUmz#H`jAJZoZmL9OhzJP?|QJT
z)w}M-Gb(5W8H=CjMMwjZu@;{0a9Oie+YqnGXC}?ho}b6ngdW5-vTdyX^mPWwYtsc(
zt$aiA=OiI?yPOnxQv?M$JJ8T}N0w}BcF*}#RCD?|i%wt1NbzUo8#F&QuzH#|#yhPu
zgiJePEJ5b^edM5uT=oC^>ZEK_CRfAuEYQkpneAKk+Whx?h{Zld3ZJ8>nUEu^p(C%_
z#!O*>k}-k)g+k5#{*J+P;q-O1aE@RSSiPK#576@305Y9+gDhL96s(172gwchox6Yfjv52R0rwpzcZ3yjjBJ}8oFprYNwV012ulp~E
znb70UB?bTb)rD~PjYOZ@q?-XfP}*7zIWFm3`TV11a!h{g(ABqNMph<|w*1Js6)
z$EEREL9GxRrImxm;vF`bpg$8Aiwt<%*lea|Y|ft8MjtbS(Qi{BV~AaKP_;D*xD5PF
zW%XxT`g)ZXdKFVq~ntv^sFj1K5uvVaqi
zXBMuOauKEe;d?JjPgfl8wW9pq_1eu%lx8{6`rsYk`1*sHKNT=!6@#WgI=@v<+k^S@
z;*?U_UiL_PdwqMJ&dqr;|A{!z;S@cyVy?yla&Mt>PneJ?0ZL9w$qoMg0-pwapS-@8R#02A)W^;Gr3L0$KC7QA
zBnhV_5a
zZJn5_sLi`Myqw*7zYwHFMn3WfX^G5^%!&e9>_E%1+h}R?pa{kt8nAsBdZ-Zs_jw#~
z9UYwyJ5-1t|0P1lf5vF-Rg7{k;{dPd`(sludLj{{FHZ*KI{jp^VGGrPb+#={h*UXc
z0xyJ-CBxe#lLea*38`S<|Bw^G|9^trShyTbw-U*Db<2m6#fhdZckkb<^k6wM(y{)i
z1tpcbY6tGJAoKB_^a^BrN7|UO9ejWeh1JvLq|dLVgn6bgDS>vL^F0S1dRoPYU>D8J
zhi%p#Wkr45JMi?Ow00!rrjw?uO_}uCxVF6+i2Urtvp#64mE0CB!SaXPm#&9sLjqp=
zH780$8+A7PQWi#Hrm#GF_KK4ut9dX%q8L18MS>uwEzYnjqsao
z*IPCxxd61+w;+SuO#5wEk9zhx@sw9Y;1Iv87qKX5E%amM#aihF1U?K#L;-$`fAB-F
zEMR*zF?QVZL8Q{YDr-ex#su~GrUBY#kUtw=Y$&L<&1xST>!h}2GUY>s`*)z@%KKh9
zgiH%vF~S6)OsoZ;ge5vwXD;s>e`q(1-Fp3|@pZP7?KKl0j{Q(t6Zu_xeT!DuX+vbQ
z^BrkT3gtMAgI*@y4O(pB^1JAGQK?H0Asy{>9IFC(Zd?ua_f>Zx)Vevv+Vf)?=kiZFNw^}TasB?QyQC=^9&G1RewnD$
z)4M2r&W*2lnz9QH{)Iv+!vEtR&3-Zfq)`LpwQER3J+(JThm
zs8rS-8nIQ2CAu0=*gNdC;OX9L{~+!`JLD8Ds(xN4_bG26@|x4|G}_tt^kr#wGvkX)
zZTv$N**;Vu)Jo5RcWwizt{#%rSJ>q~wpZp;4H%zL-FPn1o}=oSpV;VA-Idq1GoAH?
z5aS=-?PgVtPnRfJ`x|p=Y^HXtaPoSj5gAWPe@bcah2ohbG$|#netzuC%myE8afZl&
z;;AEZBoq(#5BPy%fvIm?$JW0Ca+wJ7`;L_43?nZLm~wV+G25%gANJkot!t^ay#up>
zIkPxcK4)7ChTLoP+UB69nk!@rR8#r;PY>3DhaL3#oGFTc{#E*-Qb0@h{FuI>h4o<%
zwP)%84a5Cy{`s*_iuc(cvwzewL*(j}nP7`?(32VN-yfiEpMdZ90Bqf;-lq1f@?UZ3
z4~_fSU4G&ergkmVG0yS5gsR!{?M>mriC(7`c|gj9F+$W{xnYYm-x3Qp?F}i?dBo$7
z2=iD&m%5e;VV?QeDrm?W|1QYEq|$tPfi*0Wrp*nhk$IFz=HWtONs~|J(XpI?^CaPg
zLTF7adCwPGFN5bfSSQ4S48W6K2X^z~z*FUj%m;r*#y<68E!20Smt*$7xaYO53T$G@
zM0Q(?tRpU!-i4ac`K~r(I3-2%+a=x-vZD}m-8#7Y*?}kPg~`k1q`+r#Ok17^KE)q>
zV*=ci8>03tfj0l>+b5V`1LxbwN(487P2Dxa=~TZl$5FVyuvSXp
zY3&Ti+gY_(E6W{LU(?Ub1?gBsahXuKkV~>l)MKrlDM&I{2Ci~>GK=qY2K6&
z`!+~jqhBO&2E~m}OJj-3XB4zj{PZt+tx@W27Zk`7S&`T0T-jK;6IP{>|L)q>o{wLv}m|+VPP0z=kW%c%yN-y8bM9a0rmC
zkDTgyg6v6>~^jvEa9^BX~h~L#mMVWLW56YRyZNdX1GsHA}TH>k?JARjiw!&P^4Dm3`oVjOOcp=@6^)eDah)t_qJ7L9hQSpbf
zw2u!;**Wj}*nOOk9;joXkR=TFbHhT;M-Cxdu?=d;fcGh%bh9WOd|YeKX|4Rv%9^>w
z;0uR>FK{>y*5|BG7Fqn8uQuHO(~xZDoO^zv-tI!`=cWn<@C=s-GV-f8=#8ah&&ZmQ
znb#+-j3s*qZuJg=9vDla{6QIxB~jjSqTGP=u_VkJFFsYCPOLCr7Q$To#D|U7Dy?AQ
zumQo^DiT_7__m3$+3{I%nf=CC^3rW}|8P}KoZgCz`F*PoMP^4+f3W9y$o1rHxt_g6
ze^A{)^@cSkH{kD8fUie&%Obc^zi(~#fBnIES1{^?=TUpJ3G9swb2SL;Oul88^Z?kJ
zB@M@li!X=!K5J=HLIz>0-k>!%LH7Mra-QGhDtTDUq#Ky7J?{?c`s5xoJFA%B0b
z)Bx6K5bUy*c%4+6j~xhl(2?ZvL0HkdqIYsTW&j172cS*#r6||4|luTKk0~k{itoXGTm27u9yQjO7p=I`M0o19P;#ffp
zYn}xVsAky=BVi$B4!;ik7&@~Ha~NNU7ceZt{dS;6PpzjH^x_)ZyVQDKlFwNjyRGG2
z(1#}Qt8#}H0TQ7m$A=X4fMUT4;5k6!Q3&;U*TFrYTf0NZ2LrbvTOs7Y$n$@Zt&$OB
ziy~TTa=@En{8Hi?zLeAr2lA&B0~^
zCzW(RThu%wJ2fj6X3>Q781VdVoyRgyK9+eNK`i-UP!7K4EZ20$fByJC(gTae95#Wh
zOa9p~2O@@%k>!nr!Imaw>$CXGWtSyQmWw*UMdYivU{euJh_wT23T=Q>?KKv=Tw%ZHqI}P}d)L&2t
zTbejwoD~0dIQR$%ER5U`vNwht1)jt^eTq}P$78w1oV4*3^_QwR+>;9vTq?g$B;LN!$eK?n5;;s^)rz8Nw?K{;p(WJGmX~}
zLCPaod96|}-s;z;0Omktb`+181*PrC)KF*^y7AFMl|>QYEnTq;_YV#PEJ{8P2;uEG(ye$=O_M(%v?g?X
zNDW=rho{OQqOwK0(^@a&5iVq+uv6F}Xb#A0eg}TU?{e6hhy%DL`~a-6YZ#-ZhO1_(
zQ^Cu=lSzc}4wV?w7?-C0uWkP1$*xq#QJc~A36)=0h{r$2pYXVMqnFnG4>3`oGBsb)
z)H7xYN+9#kfQVbO(qQ)YuZ$t9Zo?k@$>-g>q&tz{l<11w=kH$z5s?pF{^antBkMz4
zX)qsEH8L_o3aMwiRZO)_RX^_h5kNriwBG5sB+YBuDeMx>S*GknsNDy(XWv$Plju*L
z=}O2{==TLMaaBsph=e{o0BC2kb>@WZ12>*CHr~*ztg($f9}77_jsZParbLY76b8oT
zH2Ok~Tz8E<`d5wxj+KtPvtk`CSPi{5Lf0l+Ws_4-bSOO6UR2yT
zd#B3dze{oB-4|CnB8x9=pmSU9(Xe}G
zij-1})G*Ss4ryjF^e1^{f$AdFDl%9jG}@-0`6;&1Hu(L_g7Xrx#KPQGv9zQjfUjyt
z${v-*09O=uHgx~l%G)gkEagaLCbaelv=(+tYeBgk?%xBgCB%L$&MZdBZg((0Y9Hkj
z$=a?V#fkbt!0?m-$W)e_N%43qRqUQ6B_6moD4-m4|$
zgBe-Yo`>_bWag0ZC0IEyg}rhuFBn%uk}IG$F8Y@oEqbY5G0{E6F%2|!Bw6Z{+e;jB
zj|yX`=^1}CSs?L(lJLV7@iT-|Ei}*Xd@`Z*C=Yj+yj5+8XPd||3>J8TFRg4%Jc5W_
z@9;mw{FgL46>%N#Ag&ur-kV08XFpfFg&q`ym7-39i4C(OQT4Q9O9uDexX>b|Ygbt11
z%AND+uVe(h9%f2t+@
zzE^WV7r`jK?^`!AN(F-rtB?1lp-GlV((0`U^yF=C02cIMs
zkb50)?3W=8=^sX>+3v>GTB3`1$W2#$(;ZeApOsz(jHUuc6G5r*Aix!j%cMH
zk3ZF773M&`XS`0J%}RDU$F>zgEbTsbkt4miFo#+W#P7;y3Cus!EH@qVD+4YV^8o5!
zL8(0so~Yid0KI62yX2u&WlrIf_}L%@WN4QJt6oEz5KZLLVKFZ|FKZ!;X(-qdzxUQL
z`-e#7XLw*#e!d@iQ%uhmvh0vs4!N)0miwq^g>|1bTei*G(;J0ql-ppH_eWUC{ZU>!
z7myp)0CD6&x{9lJ&B(qJyuZ9YFKEIqZ>wdCs3lJf<%@~gmaHVm@g?N=@U|RDVv&PN
zXNN)t+z-lW`3?D@Nr7?sen3mIe5=HmY(rKo(D}1AhSYi?!U+13N~&^1Qiu8v4#$C{
z#(|`+y{-pq@ie&mw(Nm@z_Rj)`t(0fm^v?|B}uih&|W
zXtS|6r;P(V`tx`yHK&J;U7KyylJw8C&C%I!1~bCOD;O+wt%LhYp}a2
z#u2~bW{Z{l9ikUj@|6>I3904?IRTt6isV6r{G=21c%
z)}G}CiZnI(dV5%3l+x&kE#3$+vL_%TOv>7T^%&}Zb7)y#_McF|A>I;0whqiK|1|&0Uh9}AdNZ_hUxe`=MAK#$sOn!XP|_V(s#m3$
z>MNj&7?yQ`N6&%{Fn;n%Q7>XXc|k^g_DcD)9d`-A2p0HJN5NAf8dB-25N3%Ds~`7n
z@C3Dr22zqmKmo`GXGys_sl2cEU{X2w+tsjN%ZO{vs9@#I(mtL5?Nr`(&mnU;OGnLI
z>VB$RW-h;Z@!%x${F~`Lo95byPQApis=P3E!blR%qx>)9rXLa3)DB<
z?cH@XDqEYS1-*N3cr(B;vn3N|BUDgT3S+
z*L??ray$QK*1^Wr7Zv37q
zbY&@>SDy}CSzV{Vg8dva*<7h*7J=e+NMh#F)z5e-*mF7H<}qZfWC1FTl9nt7KFk6C
z>!`1BwIP$v8@Qr3bk{LvFIgN6!;po10O^D=Rd>z_$V^hZ``o^CF+U7e!#RS@{8XB{I?J5
zg{7HMWZE$GY0TbQX(?X|*z^~@$62VKC;*pGfV}@{fX;EnK+s3k5asZwk4o)R9QZC;
z@{O0?U-lZGqBXD{3)A=%EsgbTw@nsBmiRO5GKgcrCRa#hOp{%lN!^~;_vuQL5$ng>
zqezzDWY>~6yjrqiVD|=DO3>TYkjr568o=AtkUtKc2hWG0etkuVK+&@wHbs!rAZaT^
z9qf%cdwm>c$lqZW&^Rn`1+*#$NaYI43!)xyBLirI2empqOgQNU3(X7cz9^yugcdlW
zi7hMWJ;B75vUQX{kuWQ*Y*FtT99bGgo*oLy%-JC-Gy37%W#;=~Dl`p2TA4+=R
zE|49~5S5)U*l8FXSuI&4jmk;i;HaF?wTuF^!VkBNY|o%f&;>?z)!;%HSsAQjM#nXr
z`~b8!{5EbZjK;gSt)#DxjN9J_qe#Z^<&kk4FzU$Gq5s>c9T0pa?u?|19CRo^mhO2AJrc|qcvS!lyOfOzFGoH-yWZ(uYYemE!2
zp<963H3;#F)=&Xvn1HsjnTSLWuuYFjoDa1p-V@ySB-_LZCPlRnd6r3(5rxc3P6L9j
zBX9Z2n(=J?Ce9Rj{_-_MPH3K4w;ka`b$bTU$TA2on^ai^J80T_m%UDR1!1BH*$=xn
z{^CSa+Jt+A#=sipm@|zivHrK5yB*ZeI_eAyTt9ZYB@W^-i$QXZFF;dYaG4#6!gzs*
zP#e2+B2J1sj|_UEz;g2x$A*@Z*O5Wxo-44Og`4nMA`{iYzT3tg1b{i3m$=1U`TET2jvvHHrXZW{TpLQS{Q
zJ|~M8zFCmiNpl;E(+CH3b5MeV5?7(FdjiPP8gcZ!4BpG&y%OI4W8}RoWQ7>aDGzx@
zGz+hav?aGYkMQiTz|G3ur~pTen~X%s8Y?Gl>XJ`8H;HKAo{r8Ri}jn(wDz0J4k6p9c
z)4vL0%@x9S*mE^bh!@bL*=5Q$ld$B<%kh&;Y>nLY5by$-j`u9A#It-q=m1j;->V~)
zgD;m&g8eecSQfuScuRnN+pxn;BVn@{e6ih5)U(6M!`<6XW8lBJd6#4b-DzdFz?EXc
zGFLE#52So{ONu6t^64!p%0SArkvh1*6D`dWJF=Tt_cGYKN9(0&NlDb(rBCI6xux+o
zf|;E7EpQiGHZ6&!sM`S%))(}qF*LQzy|gST=~)*}MTR^QqK*+FB^=t|vB*`^tUcSE
zP^Ttp+vl)D(AssTG(^Y`l(X`Wbbb=gZrdWIL#t`9hsf%gR`GzuZK8csT!2#0G6yYK
z`ENW(`53&PLf;>tc%rjsas@3#Jsh9`qD1~V@jpyW3UgVK%KM5BVdD}JRs-q>>HqM>
z^uIDs#FOt8!+lJlWey7{0r2{%zj!R_Pd%!L-j1EN*C{_Wk=xEh6!xZJXjijd1dTxZ
z6fTNEPEdN%cqTQr?CGQhF7tUuQi`i2DaVzYw8#}JL`irqyRFPj^U{8yp3j`mm=~Qd
zHlv<4=kLu=o=-Egu8g^`kF2K|_+qnghC3(R*9B5p~9o$b4in2FD0D|
z@L#T1cP=e+1UN5uW8nK&BUF4TGQU0H)X&7FKoxBpyE%Qg$m&UeYMK7ufvZA)O*{tN
zH1rXhfiR4%&uO#4^#e$|EIvE8qXio`S*<;5(n4)_f-jd4vB-U1@yIz!CkyQa>10S5
z+vu_499vFWY-giq2|m?=dE~{O$iBk7TDSEkmZ#XpyCeI!`S$=vZ4irNSSZCO9RoLSGaqgB64gJYfvGWc~_o=#0SuSw11|8nD9N*bmz;Np`x@oqg`=4)E}QJa|dU
zYyhrlDEb|l8mNuN8_l2hp1`T@zfR!H9O!kH=mkNqM@9!u%$}EK#NPP1Nb`jQejibD
zRJ_=7TI9@1cQDUcI1!P<|aD1Bz}Gf~L>!
z``sZlnU0p0Xc*ZxL~5LjkNA_jV&CtS#Av3V99k
zyy09Vw|X`>?`eJr_S;bnU4Btsk7rE~EQVJ)X-m}ur^N93EwKJala+_UJo*sKenY+iw;gT5KzVSTg1F)X7UlGZ`
z>7o5_QYW(JK{0$s_2D4THT#tZkX}c2OUI}*lV9O{1xZf_YZe@V43FSbaB60pr_rc58Fi~@IwNj~8k1ze^>Uif@SG&fYxQ-ToadmwD@vGDF;VjR;|CwQbCU%D~?Kdv{
z`y!r2xqd;8&&DZa=YV@WLH=Gb3;eWba_v*{p*lx>-{U3foWnNu
z`(2ZkTCPINb9Bb({||EG8F2!z}g^KHxr;z)mc;=+Lkc$rWmYi2XL$3P1j4PeY8B?
zuMa-KfW}i6fm{pQWZBe9lSyZ!lNMtaV!wbZ#Pg5Qc9={h_z*f$cm%Z{2!|+PYiLer
zZX=uogZpDKB@@b#fxGKm%Rw7HpOD%k;u(?BjD_oLH{6*25BSleZ7N$;nJla|(zGF|
z3jyDo+l)L)26;4i$AaVO$0L--biyFyr)_eksn<0l&I=*v6etnAIct```78VrchQ@(>RWv8>XO@Bv1!
ztQrTqkI&PdCDA^919v}OK!9MhS;C+;<@cdEaV1YR)BU!Xt}pX+3%VU~&2t1jj0o_5
z*1yF-`s=8DbPQZ(VL3I@Cum7?=zYBKV6&Dy=Ibqv
zYYy`$u#(@g0Cvm6c@8ak8B&qCA2gi;tN5OP{H$zUU$#X;`Rpp&s`%XWF2?wQ#8^%M
zGD0!qEr7y|BNqQzpk4U*AdO2rtJ-W9PvsHSdsg^bc9)#rkSpp
zOONdWlm^!FKAH*y%4-|6&$vV--mmx9{VbcpP
z2C&b6I?>VE0i>DZC@MpV(=N!(YM0VH$#tOZ{!(nzmNG{62P$<}+z?IfEUJnL34s;E
zW@LKG~uY=S+t44MDqMyAhP9pW1j>+BQhTaTOS?*F(cAMf#ZiT)`^gzF-u
z;(sJ`9GTy9Ei2hmRSRcW=L)(qWP026P#KfRxocpZL^4p%HYaQE5jR6@aLzStZiN-D4-8$T6y0e53LaY
zEHTc;sy|C?^^S}#==aVH5vWr{#GjYJnbJ>$O6h1do_tActV++g;BG9-$p~?M2J(T(
ztU*e@X1K}gy!nFaJ2;i;@Bg1+x$w34iGU`bgx&9mhcQdiU7+~kJ%ZLjqE(
zh4|I{zL|$;pXo`i>4)e{fcT0R8DB1q1`Jr~Vxg4rP*D{vJ@F9WI-LbobYFJNp@u4d
z|4UFqd7tc1BzPNh^UM3<4n16znm>3oIH&i6?tu0Yv~Oy^x#AFQH7O{h!TIyTq1y0`5|$8HDSh7UMF
z+CLh?b&U?Ky)plaqdxXZ{!?v*5JCB|s?MgoR4aYM*Z6uobZ>NM8#WrBXPPv}g0VX%
zPoIum(^vt+`XorFr4)kCIMaXCDl?=rnU3H2uhJ+f6Tv<@9*F0KP!&OJ$s!QgQnsG+&{;WZ-J-ZUieB(62_5}aNlw9
z_MRg1Q8%>A!VdHP`=G{ux|>9&soBltTmY2)oI7qcGM{np8_}z>9C>zKp*;Hn{9=pb
z*-HxR3P6i5pgPx`jnKIT2tA((XVKxOX;p#_J7S&LhR7Ak((Lc=^aBESY#DhG`Cx_P
zw@4$pqBkw=UQSq60(&Wle+K+g#}YN{C_9pmrakMPmzi964NgF=15|IN#7)S$2xnJ)
z+=PsaFPC9+f!ntVnICgGgmuz47OLq$!{t-`rzH)Ld&WiQ6bI;5RH`LA;5q4HVirY#
zv%TDego~52X2ZQ5?k8MK09#n=v}f>Om$W2gfSV9~@f>J0Cr^FyFX0aKA=ID>q^9>d
zQ)wE8{ZL0NC?P6yEJ+58Gl(osDM6DB<-IL+)TYfmD=NBAFu#{lHJVj`b9wO{$n>iV
z`Z@E82;AU0;r|%!(x~l{BYsg9LZ|OVXw>#uS|{dgYLe||JsO$L@sJ~0U{5Mj57-Ps
zzdNqXSgHXFi}#L$2wD`}jmaEG4h(7nDeW-kahH^)Bkf9FH5(rY&x+L{9#($yL*D1Q
zwb3-zVoH6=jxEtrbgov4o~JHVnsQ39hr!)$CNmUd6tyn}pJq-H%uuSA
zaBPz>OK291W#+c0a+sNK+IroN%o&|UWioSIU=>o$ep5YuuGPrx-6Cn4K9Hhde4?Ai
zk$Z=%%}Pk6DdUJRq-=(}repAQWjR0$_H*JDn9~EGomMtOG+znPJgG-4an#yWu7p{;
zYy&V#!M*(V-J6$lQ#=5OQ5Wp2;la{gg_9}2x{$$KUT5n*lUUMFhP%JOp{sV-unW)V
z74ei#utzMMo{dKQs#-~Q+}fq)p?y?4z`)sPUyJF2!lQv*by%(TBBJREiJ0sLlmSX;
z5VsfNby~b_9O)jsbRBe9{qZ(9E6MKx^wSxkYuBWPEZ4PPY=P1cm#wpYV$JSiLTVv8
ze#A;^!fu^#LBw}zrXO{GEV9$agGGw)D+EXLIC9X3t23M9Vf^;_aNQak>%L29h#yDV
ze8#e6fQJ33Q^j%J_p@%B_8f*?WW^$y<_Tb0^ZQ;r^bYK4*+6Z5ufn)NVl5lMwseb(
zgg@0vSj9+8*pK3FArIv2Cy=os@I6N5i;l0RRh0v~pN06cwctlS;)rj~G{V^k@ZxX^
z2i|oi>j8V*FMbMocNAerXX$J*il15!dDEn%Kp94!?^&O)76+;|r)Vg9Ye!*Qb}Xj;NN
zH1$L9d$goLYW0y`)~9(8O+5f>P18JTsV#s_Oa8xzc8OQNZI`8nhD<|YdPp}Td)6`5qlt)umd3!oT6rg)$t7b?CjQC2
zjD*TJjUc?>6;faI^$_qG)OD!7q#&%$RItCmDl8)r%$L`hJHM3d)g}2+r1<<&OP0vTbFN%cUBdr~wS96S(Ep3g+
zGzr($aJ@R+I@H{dSkRC1FbzWWXgy5sEd8Y
zl+BpKU7UH0E43LJwN8lD3?QR9Kf04izS(iOj7<&iWRpD|E33FvIECm$=3iWLNVx_n
zCwjwJE>-JHbnI&$n;Wvx2;P*&O>Gkk9-%qk=u~y8LH8$m8*CACw;2CTZ1WZh-h-8|=rOeH2YbQQ(D3qPXi))r(^T;#ITRDhJiO0v>w
zlk^sN^8@On@6;F5Rq`zQhEK(YHP$rA$kVz<>!tZ*IW`r|ald5Xu@PjDXsopE(K`0F
zBTv2+doVuIF3*AQ5JbM;j&2lK5s5&jT0U%#dB7%|
zR*ggD=y+0tn;^(1yn-o7UBn!h;H;;k;(ew0x
zbLSD~N}I&Zvq{Q$WaQ^CPgFihX+HNkeA5bcl~p@Ro3);?5zc32t_F{lsk6z>SK8P!
z6|n1ot|91;(g8S6P8fU%U`IY8UxP=z4k$$WqK|@du?%JyGL9t+eKap_{k2!-Y@ohc
z*Kx#UVY}+ojs?fAVJnlRgtdtJpBNQDP?^iw=~z-+Wn*1z7SOqv%Hn9BOIs)Bj1lTe
zK(|HIl|;8kCTJ2M)(!W%_Naty3b_z+Zpl;dMn3agOmkg{fjF7ELTv)>qzJ^g99j|w
zaz{fsK5#cC;f$O)TVGPI2ssy?^ROdECO?+~bNgk#rr8PoVG>kOZkycJzO=;9hZZj_
ztShk*Khz5vu#^`{VU;uneJ4`c&<0vS<&?Gw{CFO`Ot{yzPvoQe&~$pIhdXEB&Op=V
z(=;PZgS%y2jBQz0l&!8%*PcMR+)nG%w8rEx!j6(ROEi7X$D`ZF@niYuKD6vjD5>M$
zk*Ut@cxp!p;<$6Mw8wo2%E$0(N=ct{8LdB-KO<8^54C;hab0^nFUzheN$)F9uYn$f
zmTHd0@i)X^TcxcTz=4gh=lMjhl0}n8?J)zV$C^Cld6900sFBhX=F%u~+hNr_85!8Q
zfQIp`Sr%ABOn9_l=`5jFLY_R8AIE$uKSJ4y3&oR
z8fG6aj3xa;^qVJ>b1sx@Rs3-FLJ3Ox*ToAZi_yh%ON;jvLo{i{(t^=ByR{44W|RI49Zt2F*MJ5Za6?|uXT$y94bmAOSw(jfaRpW#l`POWPDZaxcaCTrfBy$V
zpo`OBUggv~Ds7=|m@$><&GMY34jasbrTGB~v@Heg&j<7irGv>~v)N1x=lx5M!0h2c
zOYx3>VYKF1S&ns1Y(AH5)t|VIqjdC39K>3Ot
z&x`I-M@)B5OrF}IaKv{hA`;zvvI5QmD33qxT{AqP<3kV18-E_p`_Q|#@1$oU_XqSD
zU{$$YoI3ja6f%*EPPY>c_m#AR|4Mq(noBU;H(2ouJWFjkB`Om{@t%aA!4De4XaoZM
zqV#h)GQ$a}_I4Wp>FvFbzs`UqrSJYb7uZ~EG?e-K8~i*-?iR3Hpo6lJF$&V&@M}P4
zF)n$w!h|j@;Y8&>bvCJKj
zqbmi>(NFR4lhBJrl6syI&RS~&@sg9$o0dhOH7Uk$lGZ!p#{f2RO?(dcP3xv@glA*p
z7m{@r=q?-l7JVU=&2mc?tTZXzZfRzuERj1e&rEwn)%=At`wqyFj-ijvNddjuiLIZ4
z4Te1>IZjO5(FMMrmk;&RoZm~-c4z$V5IwOH)H~U=h
zUJtuEQt9bNx+m&$xJN)0H!CE2G!LCmiY#T$w+^PSvrwD<*ML<-?L%UKl6C~N1jYw>
zWeTtf8i%Q^!;#YbP_e#Q3p$x%L-hX`_zz~6mzid_$^_;4B>m^sQwr{!98i`^;LB**
zP(t98kX~&WOMV%g^g_RQ1pE*h(~t=e9eQCR>^>2osvX#xjg3d9P
zygdj{$NGRyc4J&K1AB8GF4irG0?DGZgA8WJIW+m9%@<+M&N31;(kGgq(m7W6V!VN{
z%<~f>gb!MD`Dn<`i?a-@NEdWPq7kyQanVQSS6YSXa3<^aTHC&
zwPWGjL96YZZUrZUZ+CfMok{zM+Dltyjx|lYn!Cr-)1XiS)-g~5O{f}6YJ9lf+^m3c
zgdOhpOmO0QW4;MiqjY@&u^ES2kO`F|?p4=nC
zsd4BP_-C=zz8?4<1--w2LZrRE#nyZ=9nbz&2YV~-Mu0YLwNbr=?Mx@^W0)J)R%P?L
zsZ3z_!G5NEWj?)zI9LHWs%^4%1pXr8V<8n}>-cvPLcuGi(LfrtHyPq@L&R|J?r<+q)j6
z?1r10KX?3I53ht>7V_>u#OpZ?%
zV#`aqe21}A50>H?|3s)S5oC4ggOMakf|`zL0K=dNF-_HwGjM;_MZZTS?-p=WUQt;T
zX1XhwIrinK`lT~3RoiF_Y8PL2JQmLUFyFW!b_jc9F18p;U7|*ijv0WSZ3@Q41kwOw
zW_K+37I-^KJIFLd+^kz;0B46ahdJK`UliHRR?jnVMl=aH5gO$~scZtAmV8hpp@kvc
zp>a&jB;gT2FfK|a4d6KuiWBA%aY2LbhC`V|Ks6H
zBHmRmO|#TX)A>4(#7)w4z=64%dMO#wrjDddg)~_WzWbLJ|I`B>b?8R;-Vry6eH$fx
z??O}E?j%5ype5Quo`(GN86BU`fS*(jC{J@HTx?n1oHhY^!aGF5b84qXiofR>#
z_NQq|@UijSi!FZm4q397?O_0~tc5QsrNxJvPqi%XKuK3!w8S5v#0=LP!c{RGa9D+z
zBC(o|BOZAK>dC1N#KKp?-$nX{3B0lP{2O+#;P7y0CDemMu_d>Q
zQ9th8oDT)k-
zcZ#7N|J()}Kz#k#(NJz|Z}Iu5063UYaDPcJ^b6N&=#hgIn~nB@di*{XT=uEOFH_<;J-@gRndBX
zYmbAvmI@B2JtfcwEPMpLH~>*hIehQUE$j?%`ZUPr{F~n#v>c{wW5Z#Qj+Z;gMJjEc
z!Z!NVKn`TgEu@Ln@PBu(XUbh-a^MZ6U}m7Uzqm}zw4V9EUAG{Ed`LeR<|938XlZ3%
zkvaV4Xcy>yW|K|U%|uOsS%lQMbEhrT^_HM5tA+RU?K^h*wim3M<=Ao<)d=rv!`iZH
zM|k&r;dx!*6Z~cw#P{U1CRWzXYU><~y)HlBZaMZA@C&K6W$X(-LA!gpu{ypFMQA>(
zbl8hS+{vUox5(aT3p@W4e8tgTP?=9{$%a@xDNoyEQ+7NI=UY7;ad9YN^qt!NQ|xt-
zeuLI@?=dO4l!N+{!^3^tV@iPo>&11aasQGy4emZJmvyg|^_4|}ja**Fc`(e*&4Zm8
zJK!u3QWs=QbuD*r-F7aoi;KbCTr`}tR$@uzEXr5bH|DGAujGf+8w=F+jRleQMTKGY
zR|>-GjfD~QjfI-}D}{`)u=Kq(jiu`)_V~Z9EAQB`zzlvBGBhn{D5GDt#XS8#59}<}
zWvpO*3BHS)@oE!-y#h>yZNixrS@#!Aov;bMnI+q96xg~&j^CAWTaUsCoIkokyK^XA
zIyf`jq?MFSEYODl8}_T$!aRqs5|q|SI$qJOR261)NJ@>aop~eN{r65)tlZruO>llD
zP3WW%_@mAvkNQou!b%q-Fx@t}qFX-U4*V}kiK=YZI+(XkLD^5C#SLIxOJGzt530L!
z)p=d&c)UX)sgXZP?t*fRqMI4_iDPl>C;5BIU@vnin!4Y$zXbS*6HE7%8k(<{KwOxw
zUV!ThA;S8mdw+?cu&bo7koIPWo2}bcHc{Z}sg*8`Zvm@}u(R4o0n
z_F~mqDVZ-R*;Cl%D9lePHWcpP$iUZFhv0+?)sA~A_ZROe=qmm(KdHn}u-~xefcXhX5`$I>K`c?$~*MRuobM+LOB8}{@lT|Nmb<5A!VdeqZ->-}iN2
z*Y{d*)K~-SNLKHi&Q&);?)9`?R?}?43P>K@BafcWHp1HfvCalttSDdXjjhWnw#CJs
zX<<_yayG8qUBXwlwv(0FR{I1CGb7Ex)tzWREyf$_vZKH7PGfgAKTFb~e4iO1l(|!@Tme7;PvjIVGx(@9$xl
zn5?rl!c5??t7B$d?>r1zhGh4qbiSIfbs
z7i|uVpXb(|w5aOjTcfgo37*MblfQzi*KY`}9w(?h_dh19(wSBzOtqX8WesOq7*OP=
zn}T~z1ToXRdcHdBWwz#XF{UA8Tdm01Yeimj8r;!{byho8VodO~E>+?x+ncsUoprI$
zYT%bSFWR;$v%i#s<1Q;#BxVS8cCPNshUcJFwV*r%d9;>1C2|c>&AlZIG>yhmr4*}>
zKBERY|M77{l><1d=V_)m(^5-3N*~fAn=qB7Q|UFfI8lb(%Y3;kvGAgNVrY+i{L#)r
z$9B^hS5^sVj3^CsHcna*n-?e&k2xr3tPA*7Yb$iOPB?l?*sF5ya6vxcU{hXqDiYst
zaDOFjrR3rLw!P+6)}amSY&(pvI+3SA0h{}CXmhXri}hpA-`Z7pd)h9m5ELd@gn}
zGzm}HV|Cu-T5HK`Z?W9i-e*Z}pS3c!eeKFw
zK=j;;l0aXqPNu!PgvGgR!vYqk@SHuQTCpQ9dtWbPpFlXRg?;RIq6(P2UiT@_UUR1y
zeOy*2-_Z!GVPD?cfk?U!c#f-}(Qt>O?sQ%}G$Ff`TR#`4Higzun!`==3f5*(s+A^X=We9C8|fm3
zeK(~EE=FllIvH8ro!?Qs`Zp`qS@xCiS^Lc`mQ^dGvR17~Y7T)0tR=8LvsSQuZl_CFcb%+B46{S>={ulwTm
zRkpP@ek+@{%KCQq8p|}7yzbUmoVpmtVqb$kVPHv-ai~T5z3EV&^qYQY)=DOM-oT7Q
zvs@*}F)nu13TW53xZ3A7FuJ_;G%79S62-mfYmJs?*JJIqEM=niu9S&oVY@p5iEWO2jK!?6#Xh&0O<^3GW_?Li^9pHfG}?--+o-fC
z(=lfd%CD>o-T}WE^Ot4EfU{^!%4)AW-vfM!Cgz&!fU_C9!JACyLLY35Foj^Hk;#Yj
z@Z;my10|`=HIUN2gFOTz94U_zd9^p`SLe+ps{c`Ya9uUH!y_As_k3elo4nv12Q~)R
zc~SCh8$sh$ry&WzzMtWHm?&6FHIQyNBiy-hoN!3|L414TTZL~e3ZBN9Xij6dI;EBD
zv)S@q@AWM7CxEcD@s{k=j^!~+hy!M65H8WMeZe@PN`wwu>_&+Kc;KCtW$rLmn943k
zAEL5swl6b%>1wpSVJ^0+>Q=5KgdNhVy>p0Y33?8OVjGaPn@G0tTU(V4Tzlw2S0man
z4m0r&4w^~HMrkhQ)cCFeQ%=0B>eK~QF{4w|m`$=SHXXpi@kLpYkaCFcZ74{~s?XY!
z-H(x=KHk{-^Ex)Y@zSZZtoX)DudOS}`o*cJ$L!A(7txybXZvpR9;AQBMf#3mhsJu8
zW{%BbT+{BA7gw;TL9rFIguNK`9@W4)q}xEPUN(>|)%449CA3R2gyfA}t#Ze68;G9g
z4Qzjlt7CO{m+;y<&u3hIHO;5BGG0gwKp$LY%5-sccRhBuh2#uO(!7C$L#$4@Rn~I?
zJ8o4CTer+|uPws#jjhEPgHxG@95=LJO{z#^NRrCgx*_%4ufm7u>J_ql+0|@0Y
zT{}!cT}Ld&tfmE(?UO`##!-tmb$ixL4$LI-pdR@|jj4U*a?^B{nb8A%%3mGdAV#-B}U$HV7(u&0%}@hEG%RciCAZ|Tc0w%
zxiV<0U3d+Wi)30Yb+QZi^fLKAJja0#
z5k-2FuXP0XsKR@*^(x9{cv()$z&(3f|Io
zb2}LQlJ$w*;X)!#6vKu89O3G^nqxMsI8PjQ-aznM#7n2(WMbYx@>}$sw7|*+UOm9=
z{CP#V5H`AhgJs2PY0U3BAnT6VaQBML^F^@CJb;}+l<8yaT-Tc(1rm0b^XlARb9TDe
zZTv23ZP`wCd-hfH9nrSz2On)?$FL##JmisWid{R!_{FOFx7(u&Z!|AUn6virwHwSQ
zTh=uzurI&O905y0)tncMm^&C?Kx6&KM1R-P=L~CRA%_mCn_CoI_jnOd+v<)M-LyVj
zXc~F4+_qwP{m6<$$dzf|uRa`{p9<|UX4Y*bcQ-RVc8=*WV&1Uxd$1~0zrzFg!@Pjx
z9ZZK5zU^78H<+5RdbTFKo~t<~-ju=DsOx1l5%uz#$a+OhRK2n$x?WYoObx0TbwBA1
zCY|jL$ng9eAx3bG`khgCG4wmshmVPBgrn!>c!n&c
zkYp*d%`*6%N(FY9>=sB;l(L=$GLoPaSayo()@VpkWIe~jcZqz)F6_vEFHiX~dnauA
zk{pn|RQaVUu|bklMII6)1~(N$n$ls%#2I8-<{aLZvpEjW$C0P@i$Aw;J_krYdW&C-q#4l;Z49BNK84n}FGv#TcwOQ#-~B1EW?vXF$IYI;22{+UPMfk8iJn>h-U#
zP~pYli!Kh~tk9v{3jM{hL>csW)YkE^`3V&^4zsC=R^*U6-f{Pp93~FF-Mnp(G1$c{
z1LXl+3E{m_i~n7QVE}#uWWpkk#{cFE*b`A6>Cjn}Bh@9tiPliz)?tk`9q%xsXhM;K
zV{|XDuBHvD1;seE^XBGF%^^7ooLNQ-lSiNzc`QhJVp1%G}6jy>f?5ZUAHIP=|Xy;Okx!Ife{b{z872tJk
z4x1EqIubbZGGX!1*RB(y%uXx1ldxempiRXW>50|;+qIe@nX*`TbK%^|?MBOK$T}3M
zj=Asw^oxCUDgIWW%)xJ>EL85@Qr?Zm3{$*g)P0Xw0h{QfSXoBl=?>U^<~fdI*R-lM
z*+zaC^01zmTe*4-`$u*zoi@$2e}gk)@x{5YZW_X_pr%T*
zSLc&x>PE^*;zpd%(%$F?Jn5hV+tvI}ghXBqh;M*&MML@JNcla36xq3TEpwr3d&>Ed
zOJRD&wbZ1{Mb3qz?kR6CHp%?=lW?xw1e*OAZEzUBhDiKM?Lp_XPi(}s6;}(c-A^}l
zUSL@M%~AKQl6SS)klZmTYaEa_zsc>B3ID(fg-N{KfmK@6G00`d*$#@q8hN!G*1f@U
zs5b)zNWSBk7|h6k<)*#SWc6roc`&g9H1YCm^LY7
zwgd8zYG`^{krOO>f(>K2?7AwKF5n-^ge6yUS?|xKBtOOyDSYjH*~KH3xKeiR#FQzL
z7Fp`N%?YUqzyJ4Gsu?3d*!v{Md@2lkW0Rg?!2CaD_{SFue1jo
zek-Ij74gNlCg&%bmY42uP0X8|8-tp+qUOqg)_EVe!jXh4eE9&r4F>Ek|LO_?GB)v=
z+wrX@;M->K+r6O2&%jfN*EIQg&1d+f@wx}!x}dJ)!1G~TSeGpLLHw*Ct#Bg{W1lg-
z*(;MX`i~)7_!>0JzB%F+VWCLqUu@kirdV4JcFOxlphuFJ;Y=>wBC?v2(lDGrhQS+T
zJihH5$-2mJ@YTcdrd}soH>s3Oy3RSdzy|!35$FSGCmZnl*r>iTI3=i)-99mwP1D;)
z+-pWj$FFnbxGNf%{^Ox@=PZsEo(!m)zOvgjE;q-NS1Oz7bz4x17--gDee*PxH|olh
z74>XDJ!yQ>xTJRI!bLon+Q8a&M=sF5^f{0mQ4L>|sQXUGEkLRnai@;5wZWy6lNFtd
za#($J2A?t0IWalhQIJ=VyAb8ti*n5jC>Lq>1ea~G+?1SZF*@?fZf$LNIHox>xAB1y
zw|tbm;t>KWdBuY+lVGQv27ae{7GKO_x||`x6j9O-O8&-~mUlz$Y#>|Rv?LnVa958O
z3PCvkx}qW}tpY=*>)O23+(eY993}cWAat$kVavap8T~4AKk(frWByA(s^yu{!l{68
z3gEjdfbTxy?gfTdRkOiz=>cB2*1HGPH&H^h-henq0^)oD>Wd)i>)V8H2Lir*@1k}m
zewf5C^Qhg4?x@|V9~Oh~2#-A#zeI#txQPB_7P~35bvgLv>X();nr516Nk;nzb>5Xr
z?H_fK4W8kQNzQXjOrGG#=zF60Mj#X$z)v0y$eT(1(dnaHP{aZ+sHyp#l(L&r?t>(y
z#Brv13@vpJ+V+-!n8~F@?HRzA9a?gul&&%0E9S9=BcQL~le^h#b?9jqc{MZwy%HD^z!ssi
zr(i)uT4e)wAF{a=;1Wudjz1MX?eP=B#GBks-b
zFdfvdZ0?A=ZtNcKOL0$qOYdLw-;;jp^3o9Nh}-eb7|&6)DPY~|d;8(A9Gv^uH__
zp&4<;!Vu32&kZTfE3L*k{BCIG&^fs|dt4`;9YHo#9@a7aj-}QG%_4XF0KOMxorIsF
z-qXHyB+b9?;0ns0RJyD*##W6`&q8x8FCN}*3@2M^vaxc~*)6ead@D~1pWYT-Py{PQ
zt_#-V$EVqr#Gh%|Md9@I*+Gs-kGxL?FUhGQ#}sAVVlG~T^{#K7*Y^`zb$URnGWs~X
z_j_M`sC^AC|6U*K+E5ec2(fTDGn3_zG#XbLF!zQv7WFY&|H*QLEy2ySCgw~kv$Qtu
z*pBv=N*6{eKge-jBtldjoVCQ*2K+<+qa7
z3w#CBJUyIZi_H5_jB%8#=xL6CMsI|P*VLOw-1iQ{QVaU(jNSs9r$LVr_N&3Lt_T5@
z{cT;8@LB-c-USzFoc`j11dS;`TT`2i;qwY@(-x&!HaCR=cY{f}!BJ}*?*uYIHNT$&
zGApl5$Y(Hu?*oE7b|zRaaVbI0ZOv)G-mN!k9nr0S7N#?VMu(Z=N^3TIc<7n^;-r(R
zYWQBDun`U>^=IG-{Oll91@x_+I6(cT+&3~bbe_SbVFV;#&)O-oF|k@x`4hhZDIMGtrp`_e!N;_x?VEYcf^)*)*2ur(75xh
z!Q{ETmGgwFCA>Y22Yo_uWt>$0!W#;7r7KGHwu+{gj7-(_bow8J5vl@$a0PT!s{U#E
z)D&Cxg9V6Ea_HPCwkogr65&gAwgy|Rak8Xyxt;2(uQlq|jCa6;Rt0SFr=N4)ag=r=
ze~>&Bs5*|ACY4nxPoMfkIqg(+HtX1${e=&I{>6!T%=T(?k|_%QKS$hO0@LDOjwm46
z!i&k}WF82p0oaAdU2JV>GojU~I@(RAT(lE;3uyZ<8NYVCl)cY+%5~KAiHm*ZAO3o#
zqP4CbCyM;o(!0RRUNXuZkl>|lx2T&nWSfOH?Lxa)+oJQLN^dKTux+!|8>gT?td>oC
z-g2g8r&P>Sf1$B297V1a~r<#w{os&
zsn2${aKv4VeY3SKtsrgT?$TE)(-twBO-*{!Uif2CVJ1}#o-N&7YM30GrP8KRod&s=
zXP6pGCy1&LzB;*dpKaA-Xj9zhb=P{Q<%j8FCTD3!+`o$Y{BgKf;oc=`Fq1{YyTjYf
z3BcNkm@?wNe=rX3fKy=VY>xH6TRu1`KSbx%#M-^?3hWzYSd)#>B4qRT8HlipP~7a=2mKRTA$M#Of*1qZvo9CZL{-d7sQyK
zZVD5g9HPC*T@Lu(S~#m9Ef@N}(`MyyID_D(%JiYo|7D`D%Tqm~S|4H!Sqr;K?I?Wo
zF^RLFeaL8&A(MGyFhuwl>IFJ75&!nOZ-I3+p%8@#%cPZXA8dxUNb>MsouNV`H2lFo
z@$P0R+*!Q4SNi%rRy~uXyVFh<-X7-+ed!v*bY7;1mjch#E7*5kBkqeL5I(F8pmmz-
z;SW?Z^Dit@z8<~=9>KX!45RrO?{n}={FmBbOje?9d#Z^OvLISU&7=W9&$cC38{Gjp@@vhts|*VyarEM!MCpUoJYpRWT>5U)8Qsz8MvNE=o_Bhohu
z(@ci>Ux-KAIY0{_OphC!Kzz_Bu(wcWjJiwT^_@W!4rE}COADwKC#0h+?T)0pWMJgO
z8&_JCpbH4W3(ugG2OMMgwzCi-A|S*r_&Ss1PkoQ$8z1oP2s|W7yagU{fG!`fN8Ae!
zN#XF2l+m{W-&_ITUPK$yx{7$GB%{Fn-MFr9)8k!`LA6o;(^@P<=!Z;0-G-eJQBjtx
zE(AXKILNL^D#w(?uB=_jPTkm~$-r0H(v=~=5>_=oYG7d(p*{u+9;`JNq1PJ&%0b^g
zMn0iG`e<3z#^nsVn?}jD;{e`4_w(6`CVex%L1sFEb9tEq_9=3#i9wm{K34c*h^+&v
zeKYxSDDW`Tdm+~g7oHemrd_&W{qOBJ141VLjEwzVXqpHX<-qK!?VT~R`$M`t>Q6D_QZ1lTSi
z|4>h)Q0~D_mu2_DeoQ2dPah32+9(Z^dJg;DRv@wbhX{Qg=%BDdy_eltDax5urF;tK
zOeu|ly?2tdy8jOeyP)$56_VGGTf7dkPD;~C>B=>2qQXv?|MN{8yqd$G8g#Mt4NbYHut;u&pU*aXSp
z2auY50IAsryDOT;T9<=mU?hB}S({~sP{;nf{kaD~^J_tC4+ZSQdo29GXjJPZdm$sV
z+EYsWPxIgbwVaunQgYGq*PK81*QBKs;qR=S`4`OzlGXa+pP6}jXiR4O%xIY;w`5n|
zspP*TTi8#4m}F*nvUc6}n!GwLdm0>xH~1Gjkmyz&b=jpWRvnFrmx3N*7-aiAD_m{lGz%jZ;PEvo&*$AtPRoDQNmKpOYHVReaSTo7ISEEXwMz6vo$Qv%6+98cGppfwlk?`oieo7sQXLrkKGh*JEXYK
zmO<#Tu)Jp2y$PX_KFUAmsvM4b?{T5th8wBgnxn?Z4)&E#&<-p-!u#@J5%&R_3(?Xu
z53$>+j4uqPxGW`9_6Q*cW9zeS84tUB@RH-8`FC*525mori{|mec>VyF1=nYIrg4#;
zhxF4>FQoePTScX8jVyWmX?gN%4)V!2TcQl?v;y{-zqO0mySkf6zTjByO2+w9q%dK4
zD(vLuyGQ~s@6f&7OiG`#sB}q!JSDZ0ef1VmFKl~-Vd$Dx>$_6$OV1Oe)}=qAc0s}HI#^;wi)2M=8D3YIYUGx~a?B85GHC9SCgUmB|~
zwE?vU)mz;bDKv`m0;1R?U>!sWvGAgzhD6}N+r&3$uL8UkpO#a~>@#*k8Z<>ZrWP>M
zK;JsTfBD=S(;h9dHyt%z>!2|KEJ`ERgtC91i7$v>2pz13nWn;v|5RAx6SLq&SNPCN
zq2%I?R#ta?7B{5o8<%o%P3*U98qvC1^7o=Q!_y~rHKF-@&xiasrMe+i?%7X^B)ar^I7?Z>UU(
zbutjFv{6Eim~r`!nY^9VQoZMkJUr#b!Y(}o-)pNOG+(jlPc=oGA`+t@g@qoAI`9V^gwca3q93TW~DZC23`0Hq!
z>k|v38Fe2V%*^+d`JO9f-r7~~C{D4TbvMJ8b%
zjbbnJfK_9?-=5|A)RJIpMXca__?bqp{4zQgGs#Qg`N?x|8f}2D#*al`oMhK5tfxP~
z_#(RCpM9YTo*q+zw$3_DIFX@1MUE6=y}D;BY&(pJUvQP57QWxVS+7c|YPr$=et(cW
ztn(sL1@r{#Hcy`ZpU$(Em`YCg1o%4Xl^0ysPiOk(m#5Z8yV+b!A*fEhzvTu&x1{vB+
z@R7#{VRtwZRKLqrlCUtjrju<1iU}}`ckX4FQe4wa+$9*QQn{iFSb*YhIKE?GOu2*p##Jjt2-Gh52uCX-#|N3?9{wu^fmx<57+;w42SSu4$Fzox6WE*+5}MhUq)p9-fh9T#D(~#7EY)f
zc}--^iB=}@E@zKzxp8?*kM+au*LtUOl-m)1Zv0hcp}h7ZZ~CqEzfZ&OvUKD}SSFcowJ5vF^gY&xx_`2~gEzP0-7+(a5y^~<(eceA#JTS7
zR^siYVWqzevoLlb`4icY5%{@W*d2tg-NQltuX=cog$2K#mzsyo`c-S@cF#wcQ^WK9
zVIrh3WBhi}@cz<^k6o~RDQcNw_-EO_rswe@Ar9O(k-xaMXI)8I&yy>JG9Veqcq1^%
zE?ASED0#H!FD1798|Di-)+lJWV)$4{dc>dpAJ8Q=QOQ>mZ3QtFR~3kMdj0B&g>YY)>_SWj5lHODc7e1HC|<0Q43E*)rs2Q005>I`ba**PRrRAj3fpo1j{Nf$DX0F7
zirbK9e{-shNo9o96-x>k?TwY8rVvv|SG5sm6kI&K1ci6rXrE#Gv}G6cE|*o1t`IvD
z+}qqL@&;zcMF-U=#9yOGA!j%eJ^dg`#cB~^F;V<5
|
|
|
|
|
|
|
|
|
|
|
|
|