From 45e5ec76dde86d3dd5c9cf0cecbf56d160cc63a9 Mon Sep 17 00:00:00 2001 From: pokamest Date: Fri, 14 May 2021 23:30:13 +0300 Subject: [PATCH] Windows 7 tap support improved --- .../windows/tap/x86_64_windows_7/OemVista.inf | 191 ++++++++++++++++++ .../windows/tap/x86_64_windows_7/OpenVPN.cer | Bin 0 -> 1722 bytes .../windows/tap/x86_64_windows_7/tap0901.cat | Bin 0 -> 19458 bytes .../windows/tap/x86_64_windows_7/tap0901.sys | Bin 0 -> 27136 bytes .../tap/x86_64_windows_7/tapinstall.exe | Bin 0 -> 82944 bytes service/server/tapcontroller_win.cpp | 25 ++- 6 files changed, 211 insertions(+), 5 deletions(-) create mode 100644 deploy/data/windows/tap/x86_64_windows_7/OemVista.inf create mode 100644 deploy/data/windows/tap/x86_64_windows_7/OpenVPN.cer create mode 100644 deploy/data/windows/tap/x86_64_windows_7/tap0901.cat create mode 100644 deploy/data/windows/tap/x86_64_windows_7/tap0901.sys create mode 100644 deploy/data/windows/tap/x86_64_windows_7/tapinstall.exe diff --git a/deploy/data/windows/tap/x86_64_windows_7/OemVista.inf b/deploy/data/windows/tap/x86_64_windows_7/OemVista.inf new file mode 100644 index 000000000..d92e2558b --- /dev/null +++ b/deploy/data/windows/tap/x86_64_windows_7/OemVista.inf @@ -0,0 +1,191 @@ +; **************************************************************************** +; * Copyright (C) 2002-2014 OpenVPN Technologies, Inc. * +; * This program is free software; you can redistribute it and/or modify * +; * it under the terms of the GNU General Public License version 2 * +; * as published by the Free Software Foundation. * +; **************************************************************************** + +; SYNTAX CHECKER +; cd \WINDDK\3790\tools\chkinf +; chkinf c:\src\openvpn\tap-win32\i386\oemvista.inf +; OUTPUT -> file:///c:/WINDDK/3790/tools/chkinf/htm/c%23+src+openvpn+tap-win32+i386+__OemWin2k.htm + +; INSTALL/REMOVE DRIVER +; tapinstall install OemVista.inf tapoas +; tapinstall update OemVista.inf tapoas +; tapinstall remove tapoas + +;********************************************************* +; Note to Developers: +; +; If you are bundling the TAP-Windows driver with your app, +; you should try to rename it in such a way that it will +; not collide with other instances of TAP-Windows defined +; by other apps. Multiple versions of the TAP-Windows +; driver, each installed by different apps, can coexist +; on the same machine if you follow these guidelines. +; NOTE: these instructions assume you are editing the +; generated OemWin2k.inf file, not the source +; OemWin2k.inf.in file which is preprocessed by winconfig +; and uses macro definitions from settings.in. +; +; (1) Rename all tapXXXX instances in this file to +; something different (use at least 5 characters +; for this name!) +; (2) Change the "!define TAP" definition in openvpn.nsi +; to match what you changed tapXXXX to. +; (3) Change TARGETNAME in SOURCES to match what you +; changed tapXXXX to. +; (4) Change TAP_COMPONENT_ID in common.h to match what +; you changed tapXXXX to. +; (5) Change SZDEPENDENCIES in service.h to match what +; you changed tapXXXX to. +; (6) Change DeviceDescription and Provider strings. +; (7) Change PRODUCT_TAP_WIN_DEVICE_DESCRIPTION in constants.h to what you +; set DeviceDescription to. +; +;********************************************************* + +[Version] + Signature = "$Windows NT$" + CatalogFile = tap0901.cat + ClassGUID = {4d36e972-e325-11ce-bfc1-08002be10318} + Provider = %Provider% + Class = Net + +; This version number should match the version +; number given in SOURCES. + DriverVer=04/21/2016,9.00.00.21 + +[Strings] + DeviceDescription = "TAP-Windows Adapter V9" + Provider = "TAP-Windows Provider V9" + +;---------------------------------------------------------------- +; Manufacturer + Product Section (Done) +;---------------------------------------------------------------- +[Manufacturer] + %Provider% = tap0901, NTamd64 + +[tap0901.NTamd64] + %DeviceDescription% = tap0901.ndi, root\tap0901 ; Root enumerated + %DeviceDescription% = tap0901.ndi, tap0901 ; Legacy + +;--------------------------------------------------------------- +; Driver Section (Done) +;--------------------------------------------------------------- + +;----------------- Characteristics ------------ +; NCF_PHYSICAL = 0x04 +; NCF_VIRTUAL = 0x01 +; NCF_SOFTWARE_ENUMERATED = 0x02 +; NCF_HIDDEN = 0x08 +; NCF_NO_SERVICE = 0x10 +; NCF_HAS_UI = 0x80 +;----------------- Characteristics ------------ + +[tap0901.ndi] + CopyFiles = tap0901.driver, tap0901.files + AddReg = tap0901.reg + AddReg = tap0901.params.reg + Characteristics = + *IfType = 0x6 ; IF_TYPE_ETHERNET_CSMACD + *MediaType = 0x0 ; NdisMedium802_3 + *PhysicalMediaType = 14 ; NdisPhysicalMedium802_3 + +[tap0901.ndi.Services] + AddService = tap0901, 2, tap0901.service + +[tap0901.reg] + HKR, Ndi, Service, 0, "tap0901" + HKR, Ndi\Interfaces, UpperRange, 0, "ndis5" + HKR, Ndi\Interfaces, LowerRange, 0, "ethernet" + HKR, , Manufacturer, 0, "%Provider%" + HKR, , ProductName, 0, "%DeviceDescription%" + +[tap0901.params.reg] + HKR, Ndi\params\MTU, ParamDesc, 0, "MTU" + HKR, Ndi\params\MTU, Type, 0, "int" + HKR, Ndi\params\MTU, Default, 0, "1500" + HKR, Ndi\params\MTU, Optional, 0, "0" + HKR, Ndi\params\MTU, Min, 0, "100" + HKR, Ndi\params\MTU, Max, 0, "1500" + HKR, Ndi\params\MTU, Step, 0, "1" + HKR, Ndi\params\MediaStatus, ParamDesc, 0, "Media Status" + HKR, Ndi\params\MediaStatus, Type, 0, "enum" + HKR, Ndi\params\MediaStatus, Default, 0, "0" + HKR, Ndi\params\MediaStatus, Optional, 0, "0" + HKR, Ndi\params\MediaStatus\enum, "0", 0, "Application Controlled" + HKR, Ndi\params\MediaStatus\enum, "1", 0, "Always Connected" + HKR, Ndi\params\MAC, ParamDesc, 0, "MAC Address" + HKR, Ndi\params\MAC, Type, 0, "edit" + HKR, Ndi\params\MAC, Optional, 0, "1" + HKR, Ndi\params\AllowNonAdmin, ParamDesc, 0, "Non-Admin Access" + HKR, Ndi\params\AllowNonAdmin, Type, 0, "enum" + HKR, Ndi\params\AllowNonAdmin, Default, 0, "1" + HKR, Ndi\params\AllowNonAdmin, Optional, 0, "0" + HKR, Ndi\params\AllowNonAdmin\enum, "0", 0, "Not Allowed" + HKR, Ndi\params\AllowNonAdmin\enum, "1", 0, "Allowed" + +;---------------------------------------------------------------- +; Service Section +;---------------------------------------------------------------- + +;---------- Service Type ------------- +; SERVICE_KERNEL_DRIVER = 0x01 +; SERVICE_WIN32_OWN_PROCESS = 0x10 +;---------- Service Type ------------- + +;---------- Start Mode --------------- +; SERVICE_BOOT_START = 0x0 +; SERVICE_SYSTEM_START = 0x1 +; SERVICE_AUTO_START = 0x2 +; SERVICE_DEMAND_START = 0x3 +; SERVICE_DISABLED = 0x4 +;---------- Start Mode --------------- + +[tap0901.service] + DisplayName = %DeviceDescription% + ServiceType = 1 + StartType = 3 + ErrorControl = 1 + LoadOrderGroup = NDIS + ServiceBinary = %12%\tap0901.sys + +;----------------------------------------------------------------- +; File Installation +;----------------------------------------------------------------- + +;----------------- Copy Flags ------------ +; COPYFLG_NOSKIP = 0x02 +; COPYFLG_NOVERSIONCHECK = 0x04 +;----------------- Copy Flags ------------ + +; SourceDisksNames +; diskid = description[, [tagfile] [, , subdir]] +; 1 = "Intel Driver Disk 1",e100bex.sys,, + +[SourceDisksNames] + 1 = %DeviceDescription%, tap0901.sys + +; SourceDisksFiles +; filename_on_source = diskID[, [subdir][, size]] +; e100bex.sys = 1,, ; on distribution disk 1 + +[SourceDisksFiles] +tap0901.sys = 1 + +[DestinationDirs] + tap0901.files = 11 + tap0901.driver = 12 + +[tap0901.files] +; TapPanel.cpl,,,6 ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK +; cipsrvr.exe,,,6 ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK + +[tap0901.driver] + tap0901.sys,,,6 ; COPYFLG_NOSKIP | COPYFLG_NOVERSIONCHECK + +;--------------------------------------------------------------- +; End +;--------------------------------------------------------------- diff --git a/deploy/data/windows/tap/x86_64_windows_7/OpenVPN.cer b/deploy/data/windows/tap/x86_64_windows_7/OpenVPN.cer new file mode 100644 index 0000000000000000000000000000000000000000..11d0e3140c265688ab3c676c4bea314d4cbd10a9 GIT binary patch literal 1722 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�f9<8tRW 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 literal 0 HcmV?d00001 diff --git a/deploy/data/windows/tap/x86_64_windows_7/tapinstall.exe b/deploy/data/windows/tap/x86_64_windows_7/tapinstall.exe new file mode 100644 index 0000000000000000000000000000000000000000..7f5f95a61c0d87667e5963e7fc1a1c74d2bc576b GIT binary patch literal 82944 zcmeEv3w%_?_5W;Mgh$x$SP25MNKi0~2DW+S*@#|Id%j zXEXQCoH=vm%$ak}oSAz!cv-@EP^vfkv{ zGbFpPsKQ!SUOKNlcY!r8x1^+0wchNumU~L9MI~0p^epRw(tP*mn3!(y2I?mdy?*Vd z>(@uh@5gncB9Gzz<2qa9ex8ntJk8Stp1)?;mdK+VenVsy(lx^lMt;W2$3%XDbmy{d z#{Ebm9l_HXMR|qPhU`&hI%D~FMY6F&ug{iwE$l+pJ*+EZE0D8Iz|Yi5#-e#Pvx+2u#K1+lA(!llO2*bwW*uXNe?|HXW5qNu z@>6DFRk&W&m$88|@5iKQWH#vP>@!+*FIG{wsuKT*AnJQNcq?N$qw{msTom2Y6aUuY zOWnH*-;hr#s2^P>06FdG1IKk=2oNp-mpZzysW zrE&kLkv?gpwMN=tq;DH(i;=Rs1%@6*YBkbCBTY5ZX-0azk=|mY%ZzlDk*+n;r;PL^ zBYoXS{YLt|k@mbtv>$JziAI`gq_d4QXO)1PWTc5kdcKi%Gt!p(1>D<4`jU~VM!6_u z>;j*-D!5mql}7rQk=7e&s!{(!BaJfBFO0di*GShJ=~^SLG}3${on)kmMjB_N-y3us zHqwno`k0a4W29w9I>SiE8tF8H&S>NQ)0Lt>jYj&skv?jql}1`@q}LkhRYrQgkwzKm zF-_oWFw&=ubd8bTW~A2}=~YH*HPX`teQz77z{c1zgO4kXbd8ag80lk1D&b2EIaq9@ zRYtnXNFO!Q$BgtjBW*O&12qEE4kLZiNY@(aY9p;Q(sCm$Fw&chG}}mBMtZf8USy$}>MpJtBY2qBF~- zO(x4)if`5V`1TYyjyx{lEB_?YsLIN_DwkKnc7@+ndDn`{zLAmX>FL$g)sc)PCRS!v zR>D#Zzj$ostV-5}U747enMpmf4zIiiMKEkRIfaFV(a~KNmz6ClD~paM%NEVLAmtwi zD`NBTRaq`8W>%KP?@Mr}G7l?fZsbh^l`7InNIk5C<)dZ=N(iD1kY%Vd8o9;zqmLCI zet~~kfXiZqfK&ld$`+x1Ch!)qh4>bubRNEpUB$-pDie%~!`LWx1xrLbSE1!$NW1Y8 zc{Q9(U?Y%oJG+DDXRvgZ0Z0Lz$i^}!>L;_sz%vYZg7*TClT8P75I(sbeDGetJAmCD zfcF^GFw~mCuIVtpgcYEt#K%HVNPRBlea=UJ%fZuJwt)AXlMg%uPu$8wjUvF7@B)Xy zE2`r_X$8vZGZS1dcrcq9dB7^7UYTEQlxO($p& zpDefPDZAEPUR1EeSyC{msF(&3pHO-QE|H%PYUcuX2_#_wvcx^{f@FZG4~5G`IY}Ag z5|+=oNOg+@P`iA}tN;!nvw{cWK99{eY6y8Pg!~n8%p}2jjG}CBS z(yWsAvYfb)idLK9)62_C%f}DP7t@q+xx~L|r6tZ1)m@&Or=rOWtjYv_(pX~Ni2Gvj zY7ys}xNoa>7#oS~VVq;4?;QWklA@9dHMh8UdU^(=pGcpBxiJlMZ4UGbX`)Nedy&J~ zj4Vgi;;|1m*8i$u`pTI*%1=%H>jV?( z6{8A@7E^}N(3~r;NKBkldh;y>xK{}u1C;ksqv z*ScPNTGw?&+o4-3ai{n!DZgMWX{T;^?*wkE>(qYfNjqzMfk6BEb$uD*pzlzb783=~ zTH>^B8Gy>;!vLjjT>qED0Q1%l-?E#3YO>>FUE13jHED4fHB+rwGq0Ux&jtaRPG4GF z(s4!m+*y;>fSU$~wi%b}ak&GHCLP$ox-wQ%96ubnPdIDlgUCKaq~?lG)fyGs9yQOl zRlQC-`bJO*h_PbO^nw-nnc<7W!b-4(S#% z!TVzReoIMaqHg)-8>-c8@*G87tE>iaMYl`=MwibKpIK`K<2X0xeW~kU^i7mK8zb;W ztFF@s%tby?m5D+dkvd!P=En~QZ}a1=jGz-ao0J+yeDZeOkrW{vN1lXk87`~qmKSje z(DbCbqytGi0Wv&{nJST5sfuoiBv5a?66l~(GbcV;0qbLFuy$N$Z`@=QTTnaMbTQFwt7!QQeE>zr6$g9`$`=x&<<6HDZavJMcbv++=%h~%jbk% z@otS4O$w4F9r{Snt0+DERGE6r686H{muqqS`bTa~;9r|orf)nk;q z{5$mZPV?QrqMN*}c2a0}rfYj$zJX~~i`ddZQV&|3ve;2vdO_ zmpu#YHO%R)3sbzGm^_Dp*3-@D^@rIv+{U_8rrY)wq}L=az1pem(k-)Ebls`f`-&q? zQ+yF0yHXO()wiH=+oyMQL(34Mf;|Hr2QkKT8qo8i|&t=19K!RlgC zJ!(8A)KZ$%VERoYW`XIqTdCfu#&ZS3rN`My8Ik^@Gto!i)K>qSbb)#S-O}NFb!qQy z2#W=z_DS3M+7dEf9|5Ysd^J~XB{rThS*@6?IlAT7pBa;tLRU0dyO^sff}m{-%+*w& zb7}7e=Bjr~Sjc1@O>}e3pw4a6O3l*1T-~N<2c6n(W3GOJCTXs&&{py`_BZ+LCYr5N z!BswM{day(eBSCYV~(mc3H&c)6SF&=%VO4Y9mkCk7ir9eCWBj2yKTeZ>Vj1uYKOlJ zX!(Sud1$WsGkOkHR>p`sQ*_InpTY)yf=qMua{LE>7I*R7h7m8rocCXh$}a7#Ga18C zTTm+Iw>ndSW-lYfwHOMU6y|WLy_S;pN`*~@{@BtqE8oJnar>pXX96Qh&fg2D%PT(&KqSViltTTWq6Y+ITJzO?q@LZKteiTX+Z5dkMt|UY$`&$*Cn$FDYx)j*9n5&L}JNB0@!G9te)6mmX zw=73(aG+@&6_OcV#WVa0)i{Vu^E$JV@R_pzly1quOtfuLry@(YB;p1a4)eMrx@A5p znb-BijlaOQ%Uo545kw2S)${Rxj|vU7SGSzUF}D9P1L@xM@dr^ZViKzD!eGt#xTvxk39ivs%Vje zmLf@lDXNNJ#dE6SV5mEb0Ls(ptCR=ZoYhr-ZuMaGEenI(GcY03IIPW@RWG<=$wo*$x%qAo>%Dy~DLlbZrgRNFT7%eqz7f`(A{jJN%>*hd2s2 zi5$hePe?3V6mP3;uG#>H&&ACZS+5M+$9Ie)b~!cpymPiPXTtYM$5ZCVs+dK6gsTbB zCJz#Wx{zeryCqKXerEE#Da;>+zJX}g_JWyom52s(OBO(rcG@7TpM&9wkbI^fKMeWiMIYsFWo5e7)N>}n$U`35@0Tt%)b_ayEHBSEnPlxNb2=h(H= zX5SOYr7pO9OSi__;c-;YM~(uY&<~W_%J{z%X3&WpE|&BbI%QwKgEs~qy0oLZB?=6J zLWnM?d6Wa$QwFQIIP^-Qxk{9^bz)1mQBo|hvw%0!ZK0b_`zYkLK@pA-M z^i6hstCNqn3$qMe&#}LRHkoUfch?o+Ny zYw^F0f~1}B(OlXQm+f;k*_qN)z0{ev2Wuv$;wwG~KrECF`ai=WhV#Gr8nlN&i&j#) zd*0{NVV<~b@0qK{p~RWeBi>v!hOT6Pi_u?!Wrrq=bmsM7o32=3aeuJS_ysJY25BF&D#)0_|0(pj6%R?#E;Zx2Xe_fd2u} zx8;<_zFzEYv|q7o z)&*)Z{%5G8@xNRhg#R_Q`0iMQZ>dcKG!mQX6>E`(2niP`Biw?b=+UVG!Yh zzjz&*Z|b+%XkvV+CVsrIm4_;vL_5Cnx_4 zt;t+{lrFvF-=QpXH90R>)~}^u_Qf1Rrfy04fZx<35AlMdoUs&bDX87tmu57~Gk5{v zc#_Ic;2=9o4F0o`k;IE%g@gggbgEzO3`m;ym8sCJqS%Ik*T0 z19Zz8DyWG}0TiLRgxt?emoKuBo8p~h+J^Ip1H}&DrwQ;d0@q&G_V|y%{YGb7mVsog zQB6i*=s2zs7vU|&G~%W<_F~HU`hDtX%r;&;oQl1})>A!XZa_+_9Jqo#Mako$1aq2O zZ0SqEgPkjVSHlm22So7%ct8UX%~XU3)B<_J$_I)#9;^8lu6f|DCkjLJ2?hYZ{0pSf zA@=G;u=(-uR{D|>%7MB7i%1WV!PG4S0ZmXYjAJ2$giJ00k%H%GLWAP-UV)V-Ja6?p zEHAsk->g@A6x5h7^TL#bcWH6?wkJaIHif}YA7ac?lrHr+DqLx^Jx zat0wsw@kn-t$kO<^DaR{{bMqkUS3aqZX226YZ?;ESQ1OCeSHtk-0u)%^AG19D~XDy z7xzENtM&I5xh~=^&-gPmCjvUvZ;7Q;88wATnMh+W7Gz-68DM|Axe&)2MOy$j_)g?ioPTL5Md(0&07HN(@#K{k3ok znln+Z_{R7Ch`2wf4<+XGQ-DX(s9Wwu4HxhM9(}2eL0$g}@;j=JQ%Cmr|1=5MFsX5~ z*Z*I1BYGtRAi{`-^p1Fm9xXpsNdv7#)|DXGLmyEJENyt)@bck1~5HAgq z4ii`v2TqV=&30&M5UuR^Wb*$gZf8i=iubs_yxiLwqjvSS4l`GO2yVSV41{7@jUMQh zr-7_CR&wJhcpci7ro#jQan^P$e~$z~wR)GvC!go(FYC_cb<3%4^Kq!O&Ab3J>>_QK zcG921i?dKn>J?-uiM4*f`CWt`h|RS}%oRg8Yz&9Jm{2tVgb&Iv1MG=twI3+`1h={+ zf91Lv$e;lm^=qACH`l5$u27CCA+v2UL36~R>l*j6-fLR z2l4UI__cJuyq<3nnW70vJ6Bd3~>Ej0sc0P0E+yxIdL?z z%vIZwY1k`coV5n>IiW;ky+_5!E%y3NYA*e=(Z8YIR)jt)QRY)j{zt$8D1fIR)ml~$ z-C_fOnsdnsXZ|}y*ptMO&0(+34n_UU~n6NcmXh80KAUTa#4LP zD_XZSqQ7Fvf$>_B26rF*=F1g`D+c2Y>V~ici1!N~RPBMb2(oM@a%o!SkiS@{Ap%*S z%A=>!c($KY#S3V7`GS>3nj#I~@wtS#mxymNRTvwbR>^39;sGJkYI29uD&a5(to{rP zGuL9Ob}Jv?!eGtTX7zRW(!yv=$Lf}+IGB2eEaKVr^_WhuR`-j-98tfb3(c=V>Y#S8 zE5 z)_D$fT$q}O*k+?A)B8e=_)n4fMbFTir{BhaKiPKT+-vW2;$Toxd5qDC%@pW`2;J0t zz7UXsAO_<1Yd!^Dg+2x$zzgjtBaT!z-~_Kf5(~M!l$2`15va;53axA%NR;0oW7(u)t--vvHm8iof$sS;EL=&uV z93DKxyHfouvQiLcH&_3uJ)#zxG!jumbSNTFBoR$95ETXx-P9h@_BM!mc7n)cAQ~J% zWNDA+mu(Qig$Q;ngrfD0pj+Fc!T9dMrR`mF^=nX|qL;7Wii{k1)6k7N0X>@Tvv(IG zLhKH~6!oSU?}t#yTw5HU9ZUabcW*Q1UEdNwbSe@;wy1B2R4}I{F$p`?1fju&*bc)8ITqV+h^_Q4&LjBhW`BV#Yp;@gT%z=u>o^hadBR1cAiAbEz>` zWe09i%UqR?+qPH{hkAo!F;@*oA=VFkuJ}bL&4Mgaf~nMF(un>Ise}Q}qtQ>gLcVTM zC7SmjUS0(AqC>!l$A!A3MZ&yDA_$|ay|KZ9OVBS%{(xIr)+J*iyL>TG-vu-d{5-oa zGXf*+04EaZA8anPAmZw%Elg8Suu_<_6Wo+tfZmXg1J7t>JZUWAElnujgI^H)`6`?o zcN26ZZxWW=1+hTbH>T!Wa7Hv~NaJ>}nfsT92ATC=U=wQ~WxD0R(H@VEQE2O3VaUVC^1|r1T_Sb3Ml#~ih=n5P zzSTb-%S(qZ9s8wXP1NE~Ku!|655xS8I!Z~o8dU7jPWip)8TR48g4(a7q(4GlLIx_o z?jMU%TDpM-8&fagRWf;%Td2y{vPvPUpfO?W!%?YP_YA-yDW1b#O|aic*l`?oufGuP zByFxy{2;I*Or`A+T0+4!kPbQc$#p=$J+RMOpV$jx-t%e*2X_$EJX{G~U_}WW1b7E8 zlg!h^C?oG+J5+*yEmX}5Tq!`pNI7!9!C!-Hnh0gW3LyMSWfaEJE%w*QJLd-vo`;bq zOR|_-5(8Mbyv!lg!!Mu?ghBWaTi~C+3O?S>mu)wprqsvWl|V?0;L9!Ct-Lxc)k&}Nj`)-EIo>R}fyJ0R@BBuJkR zsC3JpP)2%&btmGmT>BPH`F{;Z1t7O@kSYm+gEJiDI|8{)fK28fxduoB2;m?n31pT4 ziRU0!OAweo4)Q&LBnuD|2N@tiNMRE#rwF7MK*)WcEfs@qS+SpnL%oK$8EY29HXAI3 zlA={Bc>)on4+U3U0(vMq^e}MgmcL<4sLxcDw{x1>`7?Y0S`9XWe-!nD*XS=I^58p| z*PSx2`*Krr?55+fx}^g39U?4%iB_wlHrMz#2jb5I7V_p2sezDjfnu|A{W%FkfUN>r z)^!7ob_5Q>IaPx=R=H|spMs?GfQ$g%N2*)CM@`a@V>!(x0{9vhpOolWE_QZv?a^)( zR!pa7d4*l5P#Xp~s^H%#VF|1|2fLSpJw{;R672V(U@;tw`lMU#Ag~Atc6%sTPYyPY zgI!BtkrFIB6fCx40BEytuuBOnN`j37n4B7pa6M!aApjeUn7!X17Rg7yr*0e5N4E^c z03);tWwXz}4w!Vye&p1iz_{?9?}K)=lMP!LPl|!ujUCBIG1!%Kzr3C_Nk~{;YVUS_ z2c20W-=mDAT#JmDOSri2k;8LDSP)?`2%r%WYy`!K2qJ99mB%TJxOpAzf(m8r%ZMnT zoipU5Yg;o0?5w2)17F&^Xv1v;Rrh(IhFi(Zt5dN?aATGrOzZ!}yOiRHOTC)xO0lXJ z+o5aMb3<|f)oQy)<~DFY;Z+i(1+bH(Za>F-v#&>|(T{@^yNc!dxE-?j99cCXi)(?9#T)NPkPJ_+r5bzRK{Z;CL7VBY(Z zpz1DB{hds%#(8s1D_!pLAH;0rE`n<}F{yX3U(LLv9g`+;tT}|Whs1hQ5bMbk0_&Zq zYbU#A#C9QrjxoZ0AaR2Gkc!h`3Y`u!HirU2NU8|ixW(~t^4#3|RTqJeeXm5%x#hcU z4z7eGR-z>7Ez&?r(g6xexU?n*-&fpAgz$}5IvH^>I)}Zirh{nQ&{vUDiTysy96kz= zzAyL4y|tI=xi;)IP9UvT$<;FjqO^So?}9owc2@!x02k<%nP^CY)ozh2nF{mY+!t^t zt*w{2mm^oU{x#+-T0cw)ZK8Pu#ycb~GU9ETtVb8n@qzhHWa;JZ*-yG`a+k=y8t$;EK%mIq%UQd{}4 zj)i1zd=`aM58i#u%fvyG>vj!ZdCJ}xo>W;UE zu_NkG#4YG%BHbW_{Vlp&yIT@-0-B&1yH7`vOC2c2Sk~^6rH8mR<(4RNC!c_p6_gNf z`*YTrtJXlcW!EKtYe6kcCm+?^U2;_KG}<7J*6x&Tc!&ZpDVOMaMdr@sEw>evTF@r3 zb{AL?T^SLIb-S!Tn6M7lE#2E-?TTES2SVN29TM_uKHt%yXk;t4lSY*Fzzztv?Wl29 z27+-B&5zyw1Ea-^qv?YghqIXTG3$coF@@6}68jCFyEKlgTCt=gg^pR}!oC6KT{?nX zD!HpU2sEY)(r-Z2e7qB~MtheTkjG&l4bDnm9ADJ8W5e9Gn!2yA0+$&l`|e=&jWh~y)B7X-4FuSQ$bj~M9fw1%V}dp>wV!x+vqO7uPJpG*-x=j zj;yCMnugYbbiB+ZMEk_yo7dAfcbUt#=#&#tcz!^LA7`61ik9@pn@8!EqV2{a`foI~ zU?wg=87-6A*652|=scX`Ggti*kX+U9g8&UlJ6+JIPzL-k$p{Dx9SHoR0w$kmq|oYp zJ4r#pkoz7?Xa*Xv$pr)J#RRu&?>JJ5v6*q#Wk70wiJ$7EoxP(x%bq1_xKx=HO* zG=OwDplb<|>rbj`(6Hk4=@1&CB@HGed>=p63K|X)4f_H#j95B?s}dmLy@4cM1y!tD zUPG(;78^##yyD<#V&5sJ?Q5}TR*-;kG;KCll>oqLdox4(#D%JvM2=#`xr6r0DTw~^m@z;4^D{sKariVIHypB!AcpG9$o*2VYW zFAUMfPL%%%j27xNxqv!d`vO(WccmJHCn9*}fJ?XOXar&};6wOfzH^g~y>N;EW>cdY zdc{3e91FCys`0REv#sby(gB>7(YM;QgCuu2=Z8SdBEVurjp!9EW+AWv*~QG^D0x3} z04Dn3nTttdhbT$0wfm-61C_K_LTAqA;LO=<%$$RA=DgzRsw5ngN3mbQ^3Si&``(C`g(4 z9=spbvFh+YgNo3rkQVKoW}NS!r8a!%NQ!}N(OwOX*_O>heZ8%CcX4Ygj_^E&Y(+b1 z*SFbgfgA_yXis9r)>C9*a5_$b04gNh4ktf{7VWb6Nh@WVS02DZ&aQpZ9F8$|+P)Av zVaCNI+CqlJuIWUyAbe+<%A_Tt0Yh4XCVNmzRB-=U9`cb!D4;9gM60y>PKOw9fC&{3 z(bk~$xu=`I-@6D?e+cR!-u~~fqM-%)8@T@_EyASEmWLkrX@(@YgtUc2#|i+B*eIEx zL4jO#goq+0fU!9LvxWG;ZFj91j*CB)G(SwqE$~8sJypdaIgTM5G$11^kg-=}L4}x4p*t;PRs#`Z98!-s0;1HRULQY(zAD>^Ra;R zLI%6>LvBs?pbt={iGcx;-S{4pEHF6Gt^1&tlVNw5zZ>rhP-Nf?bejQLRoA{R_d@lC z_N4?6hJO?~Ab9{g%Ygi=eM#)7FOk%jtKpbwEgkix{^j<4c?o`4XkUI0hz|PlD}bG) zFMOXnbZVgSE_^JSmmtvZ`DzFbiOJa^2cz_4=wR?o;$*~CvG)Y8TWbUg8y^e!{XIYx z)Jv_L7XB_oHr9JzzGRTg%_iccGywi4*mUeqc$@{)96~g{iDhqF z8Vf;68yfRK1<^RYLmJaNqVZpqiGgj%HRPLOTmDOk-VSBrnHSs3#FH?wp)zqFAUco< zFTl>VYP3-Ayi-@ z^+Ow&1UQmX-BMo5m&m=0jYg^syZHjBON-zQ0hHrLKz}%{IsP_CX?KtCfihIRP~e-_ z2H)2ra|YE*ZNDd)BML7(fs+>G461QB!xSf={LKjZY)^|OTAR({Y!kKTe--(9IM0Gw zNEb6hQQ}{oCXimkkD4gmZpj*12kc)2Z>|^LX1uGaqAkcVh zgDjdQi#~*b6-O2MMlEM0#^B9?#L`E_soLfB#PgtwAofy2#$x1TKnqF#>0|K%AB+AV z4XV78vDj!Z`^)uQ?AwpUi$?KlqWEVTi_x&0A!9*8;_n70tL<2VRC6KUJDcr zmPLC|)WKM6?tj*?!22BNz=Gk^T&P=a1LoQl66s8R5gIx_Pr^x0+9x_~uc?N6Ya&f!+qLv_Jg<$Q$`IAB zXk~PDk$U)L+U@0f9Uc)*ZCGyo8{*d6&E8jl2zzhls!g~cS1eVxxKYNRKKl#Li}?%e zjBeTf94*SkGq`l@3bFjBP{5yu7=RjB@6k?M1@Zi zUkbPI1t4q!g&8T5evozm@i53U)Qm4?3E8#=JXZl+&4aQ2L0bEqjA{=i*CPep$KyWc zhoH$2FVUYx4X)HUv!K)>fp;^Y?fwylR|Guxm|tG7{l#u_tSLLypIP2gjo)Mj?g9V;POd1obc(mpYJz(Ws@N z(Je1Hd+Dqlg(jW>muW*J8i4*Dq@huZGVL#rm60HJtc?>|oj$J!NN(p3LYNUu z*)AT02;b$Tw_+U5u)T|;b_u&`DH?0Hy@9|^ig{%?FwuyV86in=;KR;iuEx`$gD@n( zCRY1gMv@L-e@w`OI9&B27YP0Y3%7gOzy}M+PuvIn8IBKjF4GEdJdcDf6P35gp6Hfa zo*^L-T_=JveGV2O4=C*eMl1H4jB05_Hex4lY``Q1x+?^k6ubWtm$g%*w0zDjyCkkOM)<}u$2 z$3sex49N2}f2TOkA-hJ$;h`t~N)rYTU(|U9QS^s%%Zj6dI4*(5(Xi#^fA=IL9}mV_ zo`&V%v+N(JgvSc0l7(+l_23zJ(w$GC<~ly7>^l4`oaO;C9$N@t)LQ)-aAHfck;7n9 zXxGzX&fp{m?NuPErP3+#rSXMORP@Ap@bw6WubUGE!P6oynSexi0GT`o=g0BjAfIRm z8GUY?8B9b5o7d3 zP$!BY5acJ(@S>AxU5op%kYTiw0d~-#7o1{(V%b22y2Z+|spGiT31Bb|`e~v@zkpL4 zLr$&qWFyFvh5JgWRZ@$w{1DQmTLwdFgd@v20I7MX5BjjYo>&xgWZV0(E#m{6>)dx5 zLeskgKXwzh*Y9wurSJ4Lx=Edre(Yw$Ag>dBYj3Z&7{zNu@y}$h4+s5N|LbsT+S=)S zv{l>tGxUk9@XfH=A$EE)3Wd+qS3;x`1nl(4Kv5rAGz>)@*y;1JBKkr96_b(T0ot2< zBhAInOTv2hBSm9H7+bg8@E7h0mANp1Fyc5OfTcSryD6ezvO-5OPaq!m3(Oqfg9{~D z_rdPFFpsUMh+_pfU-J~l1m}GoAZr&(KsNyCgdyR_zGxKeDj-QvOQ2DhdA6vM}B?-w*l3)R`Y$d zL*+z}9IfF!3SrQ^PLOpzp51sD3Y7~2oEcRAg8`_(TY)Q*iqi_j+f1{M9%-PV8jAxk zu9O~ty&fD^w1`dSb#X3VVVL*icu$wx&Dc;6J!h%y^X$guq)Dt#5UuM0>t&w%EguHOG2S zjxtxb03Sf@W>*tYGn;$@40NS#dFu(@6Fgqdd$OAVd68fT-hTi9ew?+AHvVzy;&;g4 zJFRO(RVNX=8uij~7!+h+r;L+<$A^iIuk6q)XL&)=YdyLC=BKQ{o~b~jF0D?X-JTs&wFr}wzw{@X@9lhs5y;4^ch!vC<+Sa%BMwrxD;libr|6p$?Bsek zM^@^ zDO!(@!4ln4`=k^WRXjZfc%FnRs`UFMA(I z;4~>UoI)z_9HVw!Ad3qVPCbDGPJ^6hp{IEENif#_JkFwjTqs&;tD?Pw37f&x^SPp$_$Q7&ef`Q$|7f6fr`SfN#r@-kpe~F1`cfoW(d@i0{4a- ztJ&P&hxbt?yc{#1P{*MzAx6|bJe_-x8lKKtnqzHVW}#cgVH8Qd-Xviins~0RkbBuA zKf)z?6+0jnY|sbLR!|6^qLVmh0M5c^>^?<{_;gB5#FtKe8}?u` zY{!byEncsWlN_NmQR1sA#Jf ztA{;Pz4`Fj{C(g>60hKvufYBWS#aAab5$3vK=%5}z--JiIKAMdz8R0R!!+1!ePK>d zWcbo`h$Y`U%rUQg0K9XhT&jXtQWU4a!v&0934{6B{}146@P&7mdYY7kQ$kCGpTt=_ zC7ezonD1T%NySNisO&w>(KMh|NS`4KGy%x&;Jn#mTn<$?$rV&~Knkb8Bx7?N=kdV= zcp5ZvcvS*kDR*iaJyL%a$`Oymq*b(;B(|e?##@v@XTC5!^wUEPgiVmlB8c2E>pL7!-af-(y0K7w@?+!wq7kw<&^lz?*xWs!>EW&XcmVg+1e zhib+16ClX}CgT_Y0_;3$@&`<0KlwV%S0LD{Fcrbx^Ento&9#roY2Jq*aKcc>NZ0;e z=AMGPhR4-Mpu2)o*o%V)DYRViW$2{Pa%Gf*4y5w`=!S;HH}bg1Q)C^x*rukn#1#!L z9SG#BZX;-s@H@`P5+1mym`6NFC9MUxOwK1lP5Z4?;^hu_iCoeFa3S>JgTHbd^!ldp z)Pq{A+UaOxB5uf|POW_bIouG9K%bJ{qQ3Sa$PF^T7w;=k&U*tL*PYg+(EsR&+)&{D zwDFFHz@|c8BH#ogQc0bHS}SKkCGL{mvg7>~xS$h^;KO87(-%QLz*okA8+;hLmiS<< zdYa0yb#H}NNteEu>o8zA_w!p4V)3Z@Q@p@37Iu((WbaZLRj%g9;s1I+GQmjWWo!*t z>D%$#5g^8o#{pMjQrz#+^%sdr({+oNO7P-QUUC|YtbK_}F30nObhD9ez{?MC!&fJ@ zFC&NZ@*Omv#N}o?K?ZoamB_-QOz;-59{TU!K#KU`GtM4x_F1r$A|sjLi*cR+F}04) z6X0DKILJuirA3|`jYRO7#w6(*E?y42#FC2_ZFcbprQ*XF0yAmm6KI>>C)JfJMCb@n zL~qmSs)X-S@btdt3%u0FT=g+$+&=6tCG1cVzJ;{82#K14=iZty;ZfCm5{LERg(_%r zP&$7PrNg!j@Bh&0^?gjycPimq6x(UfVfu$C*%lrpv%OwWlW68YFF`JVRT80FQa~Mz zDB`5_=8P2(fZ96A+)7yE<{7%Bm~uDC+*`Pfo{c;b9arsUS#S*sXv(a@WldxR<$LSL%19SYADk&%iZ=@*_8e!Qi3SqgiWV^p^9bX- zI2y6(q`DTx{OtHjJo<-sMA^1`x`}tiX&*QD-rxtt*v~>=n&05rTI6&90;e!OAe&I$Vu>mlpXVsaMVN5)v)u3HWIAZktEdMBb0oJDyZE^K>QXyHLE_JN`BaUc$i( zaZ6#lRQ@Vi@<=jy>`uOD5<@h6ea7`TXPFYI-ixO|=tZ{EmAsfg;07X)LrM6Ks8$N?wE4w`Qy8T4W9i;b>0nCAfo5O{wd2_analpSxeNO3%jN)_v7CDkO(~1 zMAktJ{7K*ok^3tQGF~vWhU7N#b(A=9CeBqeX!=+%sb)|n61=5Hi@B2nJPUvtlm9+6 z=^g*^CDdv18i>?y=iA`(@LNab@XA>j=WX^*YbT0=~^6OM=our-Fvjv{taG^pzT-t z*tOK?jJ(W<6OFF${csapL-#xLwoK9b!ii3c)s$!@d}{PJ_HeV>!~DEG+p=d z;YxZ1t7On_y`kwwT{erxX}mHtJ3NsO!nLL-ITr+Ozu;oj}LE2&~ z1}f;F5{@`VMEvrxG_e$O`ey#h&WQNtC^|n!emtD|`Z$SQyc0w_M0#Z08bL1xd50gp z;=~W&j|~^3D08s-+SJ^$z`J-(I2R2yjGt->z9fXNZ;fZFBk#PJ<_LGgULN!NcSk*( zKobIcL&}K;ynw6_#mx)J{NQnhM}9?f7JGDfKN&6^cz7-e!Oqno*Q*Ew&|_uc-NC4VOj;s$ zP3el<^J61{n=A#zd9h;PN3MYmYusm1tr_Po#o8VGSq}opf93RG9g3`U%F-f#LrG1f znUDc~6%kw$8H?QQkspD{T_afC_Q)f+BA*`>z8*#p4s5Pyk)IpaWi;N|za*Z@4zAm09I*Dt;gYd%`gR;A_LBKm`O#dVO8Z33D zZei3$qN#s3)*t=skAC*g?!x*fN3s56P<~!Fc3yTbc3yHUJMV$sEwK$f>w1)R&*3~; z0o+}~Sl2O;s1NuDEOmX#dgt`Yj7{tx--Y$g&tSciU97ih3hQ1b=p_ff|A27T)wGI9 z8fm#?lKq_#Rn~uWcQ#PHh7HWmWCOFOvw_Le*g%tuS?Y{F0|#$^B5);i2ff#W-r20b zX$I?kL{cbVX$93u|68d4{V(gz24}w+F*x~9#9-5bh+q$m`p^&kF9q+C6T=3XE((in z>3O6_L$|uuztxsSikZY%^13+rjZ?=`g>H+tEhDK?tL0!QqO9!F%0g0ByOudBh=2LgO0U%dZ_?r8G? z*3Wbg>xj-og1M+0VB%Q6FWN$oEP*V8S22(k$V@i%8!|IP$V&e)G0dv|fm!o^&#c+M zW7g!g%xZd+_2--vyl9{{xSVFUk<(SwS3Xv=Fjm)MtfrkYRyhQ7G3HwKhbBw%2PTW@ zunF9TvStfmLoBAH?W~}Ft|EEk zyp3hC4+KY3jFAgtG$k-bB(J8v(X21#MPJN|zG%1anAo!Zm&LHb`FW6?o7v#x95&c= zJ&S8O??~T<-gU9Y_|^sLc1PW=s0$o3V#~OWcn-RP_azp6>B-E`p)aH}dP6xc$3PgL zWq08sma!*7@^YYnbC7pWm4sq!V+~`eeK3aA!Mx%3GBzA%Iah_`IgqCyuW>~XF6Vy0 zK!#_B;Cl{vvB1~S=iKio3a*^{9Yw*1bHAe~_;Bub6x(WxzR)%F`LVyF_>^gSnY$#j zyc9nHR*_vg-(A93t7(RN-ZdU~`I2jMi#_i2#k1h^m|Uf$^F3vm_ysZi{?|M=FPeql z3byCp;;B%1)j(kd8*6fw6sbk{&9ST{6{>qdR-s454{MbWvR#Bft+=$pJ=ML0UCsDq zmb;vOhfK*W$*144dz#agm6nlPk~_~`4ho(TIRXs#hX{+qUF=pREs2P=3Cr(DjO7z2GSS0OH}A|6Mh3N%~M{EyX?YpcWypo*KjNbPEgqx zURv7v!oL7+kOswJHcI@VjlWKh%D1F)@Nor7{N^7nK0L0~{-MXBRDS zXP1g`q-(~0Pmt7zJwLx3xEWhOIg>oa#hJNk;k4WZ)K(+s_oSlo3YE|xC!a&%+ODeQ zMK^m?{=0MgIb0eE1Utg7r{PDVMU`);#w-jQew58oRE{AiEvMe!7@k$^c9*fK=`*IK zyW|Le7O^O=BCoKVu_fViaaokN0Di%t2(@%kap@vA^1VF2gcn>9QBdYl>9-Z<&Mhjv zd2WHHB#*Jvgrl60+!#?*u_(8=tT2}`3!5+@DfK%0?96og?9}VoSYCG#dj2M1_mq_p z_CA0b11JKTI~8E8XXK)?@}d&8fN2rN1-l>ZEt=<67vvU|8uDYZQWeX}6=9Q~r z?o>rAa4!HNygrLfpmspI>P{t&%)XxeHhhL!d~H#=>d7shSwg>|$Jp^OX zN=wp9R7^B>(1en-+%nZu?oKPkuLR;3!b?<4QQlM!mgdTGIwqBuF35tAl+0tL#cpGO zGg(^3TnNNm@uP)vosPL&J0+Pgvpi*vB9x^S=T=mpyn>fZ2`Lekpd*SfC6_>aF=i@+ zX^@0*xKU7Q{30TLSg_OuNCtn~z@A>>Ss;*5A=Uy$zL>JX5~{{qw@V1n)wbB-R`ENE zv)C;Xg4A#j1QOmwmhcWu_7vq;5Km}saonS1d9cqFdF4fAoYBy-u8?x^yN^V)Z1-MK zN(zxrP*+h2Cg|<54mu`@;XkyPnOhE_0#$`_1bD5vuF`pPF@yye2CT`cj5Nty=rasa z#ayY)_XxbyM-U-q_64#n$#wqQltHeC$?`P(&?D!8Q~c;7X2Px@K0*dt<$=8V#jj6t zMPf9==1DBnHphbThuI+(E|q#^?V14|9Nm;QvQIa@%Fkjn)GNcuALM z4K_854`)jRR1}^^xg7k#@qCtwuZ}omB~sb|j6)iYuNB`r@eO>|hNT9scSHuSzl#oB zr#{*vaGklu9Jr4Es<*tZ{N#vJa8*V%`?8Ec#o8G_Kn|kXn-*_mkXQXe$Uw@PO?aON&$CvlMfBA|HsV|Q^ z`1n5EIe78rS5r&39a-5_xpQ*ugHPBuR?nY#af_3$je%d>E&k}-SY2Y-4n#di7n=Z-8HSZ~2|IF8hxw zugu+lO1oZb9Cl;Pw{OjR@}br*FMj#=J8pcZvc$FXkzZNw4V#fuKMXqyjP2RI$JjbK zIpNmv-QM^^8U1UWaDBe*-RZtxmGt(0Jz>kMBi;SqpWScW{?8{gn1@zP9x(Z-t$+G- zLh9qs7Zv|C^2ICfYMziZe&fX3K0LVk<<~!+u=&)fy}4Dr7VZA;4<=mdy5YTy`j=Ke z^wG`<57cMbJdQnmU;3}VPB=WTc6CbnUoLod-|7kRL$|%ZvDS83u6Emm+?m&HTJ~(# z(%vu3o$$t|m-?b!dZ5~J(lH@^!XKMb{&?{xcRq2+ggc)4-3J@ZL3P3 z*yZ_$Jy*Up`l_T`2Ob#u)|gM7tFBLZ{O*_PX1)2x6_5Y^A7kDxe6H7@X8hK1-MZM3 z!<-+Cx*~ac*3*0E54-=mh{x&Q_%bDH_vigZLX^6-r_^6Rb> z`5TVm?c(?{Bfm9ES|*&;oJr!N}mYvg0gf|t((j%<8)82PVdiu})k zqXpmf63;av{{-^B!S@LxzhSb--}(s}!)J|=Prt@W?dyO&jqg21{@R;FzVlPW4e%{9 z^3|y#-v`*0_~sb-jdMi)^5f72_+}dU-`_0qd!bLU_@)~9m9U-Et_OK4zQc|Dkp_QG z0r&U##u@pp8wC6y;2wx?w2?mt@gKtTJB-O%d|Ug8`yTi;UCK8R@A35;`8hL0{?7f^Zb^S^)t(E}JO!FTr^kV~W!@GR>bTq{Ty;+u`@rAV!Vu)mM% z;Yc&_R)}O=&qjI?j)o1y^+=?@wL-?0Vh$obfNx*qHzJL?P{8*<8Z#8Kunc8LH^mG1 z9Z1Jt0tS41BJFay$d5(pz;_PlbRoSV1vKJ1AE{*=V~+vnK&12WorAh6(z)XW z{z9a$+HsBiw~^AX990572k9%&H+_*$^4%9YvK4(NU0E^}wBVZb$ivgoCg@y?ba$q} zNqTKHbl587KZ^7^%vZXmc{>ccfv!nMd~RHmK7A0n^B#gndgV-UO?oX7I)LCw7wk8# z8cu3!kh7EZXb;*|8a|>e;fM10)y97AEE7E1lNx{~8l=w{*K-y#_G^5L2|v<7OQ7>{9gnmKUy_+Jq(g6m&cyXd zq#3uv7U6mo(!=@-<86F6u}eP)nMC!j1E-w6DL5n#yYBV?F>Pi5t-h?TH;z*fYHnH!i(SOLS7 zV4FEiB1=YGHwE8hHWB|ByNL}(-88@~z!`;Hz%Kzcxwyk*!)F%9n2+*Bh@V?ArZd}5H<2q8v$s1a6$$6B|Q%0SFk)zXBp@%0z4)!KJDAd0;I}3 zz-eW6mWiH_{8&S9UCZ032*Gg$8_h1m_e$)hB;t?mu0XVMEV~>vZw5BvipsB-u&a=Y zRt5bGIWfRbJX1OD67Zoogd15Hw`?{O)Ch`3qu(z4(WervnQ-j}_o)_fv<$qY5t)Z* zstTAtqs0u|Q~yiBhf<6UQA4ohfTsVs$Pru_jS@RB6(bE|p)n{&D;1o=h4`P3mKjEq zXrFFCk`xdXlJ9gUM)YibxSkCHj!fVv1y&E}R6}}y<`|t#7Vi zw(%n#JMcAO_T&Pm>{(F4phGa$JG_2f0c0yGA?{(F-a4I4=DbZ3C|9h0)va z#S<2M9YU`;UK=TV^apWWhe=241oDTU=_%F{^b)4;ZDM^wF9C`JVdPuWOK5N;i~I5P zf|ylV&^buy*B5tWi}e7#u_8G~_{#JS^SFHB-_wKfF4zR}>FG&w@?mH_L+hIC6=Ll~ zk5oQ-H|Rt9M|>-P3;My4VUTkxfY0+h_b-#A?5Vsr~3 zX(fQannR334ru`@E5Z0*&1;RrT{*B`4Jo6)8zE=izi0DCh7KX9s?R#YlnX`K*i0VsT8~? zeW7BciMk4mLIsl}hD^ zoheERU^)9dw06K-Df12{=H?LSk1?>R6>JEwJJ33{ zNg9^uZp&#&rJTVdfnz56J|AD=<(Z=)A)y-sb4-p~8gGSm?}fyq0Y^|v5uGkhjo>V4 z2C|s>fF@5w%u}i>y@|Xw_(;0QqDXxrWQE2&kLS{ukTw+aqH`&&Fytesch9bENmB`_ zZm)}_M0Fd1o-{3}F{$Sw!wkeVd2= z()bR6ZlYPxxl{@58fuTo&e2@@=kNvl8W%2YkenY9V<@+O`Wzu$OnnSWMO&Rh`u%J@ z{!h*$p}$BMk(Q8tOOPLJeV3o#K8bl8+Mb-lly)|ce~g9_<1VzT)MYoaS~Ihu=Jd4Q`3XVW}f3$%wN`6qu&YJ#?Xl^XTz8lY_*x;vW=$idtab2HRV z$+^+74hYIT^{C_7EN7nj19LZ&+92MJaa!4h+*7>}tq#Xk5?@gZ%QFlsbJ=F$zqw7> z4(YjU?gI*)F1$Ok)q>K?KyPRK=}6O+{S5e|fhOBuy2)7?e#sae1%7Hrk0mwB!TVw9rPF_Z#&ZP~_X%lbo`v#EM2s>KV-RT~B5#R2IzhFSGh~Zoh^!~I zEoyX3L+7NcGQu zMLZ<`%Y#uD;~Dflh#t`&vTO69vjlG);D2z1_@DQxq*nglNZBc0lJxoZ8-TX~8ebu`1;jw6j0$*_oPh5BF==gPwfmvh}m(Fmz2R9uTl zw1^-6=VCFmhCJs@$Teoi>lPui=e&tCZQwa?;+!|}f7zSpJTkK;U?)T4GM)Jkomm>P zE9Ak-sP(^MV}w_+Dzg2$I*Z#P+9e?W^-QZPV@blh6+U!1_gg3uCZfY)T_ACYRaRRo z8M;o89^cQg4yRuIr}i<<+0M|pf6jIa89%oYKQl6LZYAE)N}Sesb2_vWQs>g{E3FWJ zil&t-EFeEa*E@i(i0^`y^H_|Gi*>H`#R^F1ciK%9`(dG{oM^=;&aRM!5PPca*T?^w z_9q=rmPSw^_Hu-bbrgpcYb>#zmX;A!EE z?A*%a+{)x!oRc(LXq*%0(0@R;26f6mui2!w-FSwsox$VW6yYmJ6iCF3JJ++MJI~yM zqL?|IvJ1s=&byYUG5>$r=L(+V3*BY2V#LMYzkX8U$60_M2X$^gjP~VH&+UgnpZ;Ii z4`bMWk$W1Uv6`R{{^Rs=$DXgW5BHp59~8cGDt2pss$HO+SF#ww7RViwa}gKm$N%uD z|DWo;w>^VHXD`mKyUB9@&}mgV+5Mlj2Xkvm-AbRw^_?Os8-t>O!r!fh+j@jeJH?o?;=2Wb7uC<8&HR z?3~kimUFx2=j;$k3dI7?ox!8|()kWVD$35C!INIw&zX`o`>AK}emFMuQ*6Q6R~~p) z_KdYhI%v+tQ-0#<%`;aYq2=Tsgz8|r51#pyTKebM%RN({2V?o67UAsCd^-7>4ND`Q zTnj$C8MHQJeMCf#o*XX6iOu%=?_{0mIa7ING8kzRPZj@^eS+Y#$Ukk(@xS*u*K?~D zI_n)g9UZDoe%#6A&Q3}b&fqD{b0@aXo!BP5N1t)5qZn1Fo^G$DgKLu()D>rv&(!1e zo(j@-bPilv1UkD;IpRrcf)G!HlkYFzJ0SIb=NRcJBsu{bJWotmsXt<^LC=`~7>u-E z>w%@BQ_>PA)oo96u)luvHyhp%!I0*b&#i{iDo;Dh^SZ=^T(m(?b*tQZblis3uq~nd z3ZA(SZJ~m5QS9IZ-zv}<--su~8-fqoED7EA4FRci;^1@<^_Pbw1}Gbo3sKbN<0O z|3JKdf?{Xqp6Cko4}a+TpIc3K<{z}x)SY<QQEt;1 z%%~rH)8dSfl|R`{x%NNXYL?#TK(O=%TVavqi6F|OvnBNGfY?hu^Ar=wxsWG1|4Pr6 z$v3bHD(U?=qK~2HqC)BXaa2m4QM@9wHnmUh7W*+hl{o0ER<;q_3H6S|>Df@eQQV38 zMQ`4dEr~bv3Llo!t)aEtCc(S^aiE2SUcJs38hr_ zgnns`VlSci#T$s)KJ(EYK6FQ2z<1`q5x*T6{ovak1bj!&q>~)bJ2L3}LC^!lyS_WY zAtP}V50u;$PXh}swLP^Q>;t_Yp)E}$mo#pKQP!oHqj<-!%n3aMEwPoIfvfZWh0-bI zts@B$b2hX!@s=2xvm|>R)BeL4&)%b88&$lGwlWbqOT}FNf9;(;j9tYQ$CrEvQb0@; zMHDI4B$8Jc2b7=)MS#}Wj%+D_g-zlpL;>O$kchFs1W<@XNkKuGA_c{JD@sa=6ci~^ zq)17TB4tX-6e)6k_rHIiGxyHj_twT>B>Ty4ci)>k=gj$@GiPQl1bx`WBJ05^x16T+ z>!Bv1S|#tyaW+udTQaH74Vlg=-HF4y*Nj7IXgd<~nY?i2h$YAP`cz4sH)X%r_SHLg z7kkJlx$H;sTs8M3nM*xw{CQ)VmLXvTxR#aem=wQa|~1K~Wjx%WlJ zTf2{X&(~aei?#JUb=f*VJyVZ9XcOav;+cV8x7VI+a*vxE-z%Q4(&kj?FsI*{i#|6G ziL~FlH}G{kc8pT%B(F1V&D^!Mj~dbV9QEmwaW_Of`&e-4V#pb%D+7mJ6k5&jNuSdv zvB{?g?aK4q>nWb%M2?8@jB$jwVc<7^#0fD?d@SE1$hEXwvh89C@uo7Uuq-@wvc3eGm_sudM2D>MxRD zJ7wLYjjGCtOD=Pd#RXm|chPsVB-xwO?zGy*= zyMHEQRRm#)1Bd4ZTsW5mDzXPOHHGmoE=E+V8t|WWgyZN%beUR6+mZ(Yucvln0P;+k z$G1+4bFc26oQ6-tCe~-9`_p#xjqTK#yo$_BH7JC?*C{NvC~-!7JhK%~@YL^i^T@zd zU#^^{dX*SYnmq>}Jb$)EJM{ld^yO2Nk45iD1!GpUm=U{iX=4IW8LW{5aUXAY>B`AY z-wha#N3ZCJd$nvJ$9wgMq+r!q&%1o3$2coLo;wlWp>NI+`t)NcYx&fwD0bBJR=uX= zT_-qL9{%?gG2bd_%9Vym7u*ljgdP{EP z{7n`NuixHEKrfOG^Q6*WT(3AMe*D(QvA1iHXlNZ+H)@3wdd<8?ey+}aTj?g+#KxvB z^<-F@Et_9krhg-zq51%;$=qwIXR;}d9jV%*ZMFV2l1J<8t6LdS|C|+Sd$ax3v5sTS z&+lT>)A0H|kj9WLW1sb|BuUj)qgC8apqi2|TU~(dK-D*Ra--_RjcvO;U#!$zZM|#- z$Fnr_4-2MTnp;&pH@rDJQFUZLR)Tw@6i-P5(O%-pIUU17VQC#@Gh0aAW=@cptkYLM z`&RgV^**j&t&&jbjr1lotkWFUEhVYfeZ0gMiXAm$(^)0HgXC=Z(`pHs5$Ne00LT6@}IygS37v`_t6~j~9^1_UfJ60H} zvuTxXj>M~n7aV11h? zYZ~JOjHJHrF~TatQ*LKE)wH0h4oPX_*rXD^_j1?wJ~nVWqeI2i>8Yl^*mDQrJTF(k zJQ*;LhrIZ79LCjB9~_D2xgX5c4{Q0w%dqaK$iBUw&~Qt?|8$o-m!^$<&m$Eox zOCgP!%Ce<3vxRka?X@BM3lwA;+mKR?UH8-Jb&%h;fuo%l_(Wyd8j>=pGnwBZ&mTd0lbr#H8`e$s`E|FyA;VCnM}>WCTnwb(v$ zJZHt?%sRFpxuAI#oLVQk$iCrIa$6pE9Ajvn0#CtpHCN3&?Yu>%;&rP* zP+8yV8K7|{fmhZtZnVUWrIQ}Ghqfm#HyZzx1A~k3p_gs4erojwuOu7cT%Gidd`;@g z+c9=|1IN#%RS&{me%YMz^DV8>=iVKV)4Vv?r?=mX+YE@)xzj)vppB*83H(#DuYC-w zWM*z0|M)`jK#tLYy5HpLyacxFUpMqvEX`Oi`I4SRZKWvXeYzIZwyg42txeULw}L*> zLo80tFTiXbqrG$oTbXutuXye+S70NF(+Uu@uSbtn(C71MQ_P&F^9hq)(Kryep{ug0 zasPSzy}A1uuQ`s_1z7Xgt1T-;dC#OEu%_*2rt27L!+J-*O|M6-_qhGfgS)SUrPcav zi*dzw+OFSs#rJqvGiGdUuPx1Ln_iEs`54zTfu&adUYYb+X)tcr>-XNTk8`F^2B!9` zy_{+N9$7|ny#B)9#KTCYv}4YHP4iUB=I89E)_gJtpU;ZIeS4xBvy5ezUOvyYllAVk zs+H6?Phh=y(-b;{oNmXvGE1xj-@Iwc*6-SXVq?4(I*uY)A6Iq_&zv_+5i5~{#^<&7 zC|7$pwuTvt@T{_kQ+tW$!A|mS%UffRkK$RyAg=M8-~VFYPG7{(WZUNFO<2UULnKpS zr{!*OB||~G%pKe6);+yBX5uf=YaU3hLtDU-8WVKs z^pJO8<-v1cKGB`mqD=PY>^gag*W-z?m+JW;<*usVktZ`nktSxms+DsbB`QH3Djtu- z7=9Axr#~Gs*3P9Ki3}S4ZTk6UJjttO`h7q2v+?;V_*!d3uE`fq<@(GO8n32`;xFcR zekxCSU-xOP7w!Lf$E=JXWsf*$+LyWD%v@^Or(YY(SvN_< zt5er2UV-oCcSms>V$EnS?B^$5G zRXf%@tugKH8{Zk*(VVTjUhVqAfTo{%~y8#uLsHLo>&5nPuf^#U!%fSuZi( zh5N_ATsv%_@mujf>HDYn>sJx6um=Yoko^FsN8+<81HScnbvxe(?O2HDU6rhPY9v}V z7YkMTxsG+pLq^}jTKe1X`(i+?_`CjpD==gRA+BhpLlkla$dneg6MaZk-jGpbMl+RG zf~AXEvO0O)(R@|cwRknxsBg6aQ;r-xHv0+TG zk1ajM(XZ;lC6S-y$bn4G5v!*v8pg@)1@`J;ku z*ZO)ac*L4+j=F{1j$$=sE1g<9i8ZoL^eGNkDsK9Hjtgz?w({y@d(_YA7$q8MTF;F( z*NLDASqbgPfoI~Nv*fKjy*g0)w*dic6+=`?BwwfuY{#e-VtFjfAaZ|dfQdh^vb_pY z+fR+=I1k|}K|s+b0>v39-Q90?KIGNN7&#%yfqu#VzEOOHN=&L*{E zR`r)LTP?|!R(SD?uwi)E99hp7$o6wTTpKqFW*^s9+vaI&${2r*ksU2ZLiefO*<0!k z2k!M{sU!APRC6sdm%Su~TIx%)zFZR5#tT*c(15+Tx{d@QPgH)jmgKXRy4FvB5i(e% zPLZFmIM~SJW~nq$gj^+ER`}(JIixSlrmof!udmH>)KX@-r{gWP;jJ*fGX@!g*%BL5Fgb@r{N z+ib@6u$$vx^kF&1e^>5Qt|GIl5TVxP(fBV4tb(Hc>w6E1cSQjO4IoAl*T{BAAHYTy zWk2vA-Vkhl9vw#7gKv#Q79AH0ism=SX}`_UeNf_9^l~`(#ZO*f!f25is@G&44#oG> zt!4ECpYYjw6c=BQ49_H-ssm8ceU785Lm?IWgESt|Jf!MN_XDSnK9A~H)`8TH z=)}G$cP=<_c;lDxjx0%!(k;h`rdL%H^eh6pT`w)pM)`2;N^lV^@G?L+AR@UDKFpi__ z@ssOXuTX^3ziUEvJKwRabNc|b7mhhQxH&%xEui)J-P1Mt_bB~1PAa43!Y|;Q3@yR} zC~L(i;Ve|UC#py0&%a*XM~w%xPw0H$D`@b4Yq)s>ExtTxn}9 zMV^S)*{Bk^XZUaU^(W&w6;HLhlN^V#r*qiIZ;(AAOJhy7#X=(G zdA+ifvgwTGk?V|`^tgwa>=V?hJAjSX!L{*vGJ1gHds8aq(9{uc%&EONBi=w`t-(NR zyo&R^%$#}>Bbk#H)woicQ6ozG8tE%B1Zx|)m;c?3UObfEjk>_T-K!qWBNzOu@jJu| z)P+4B`1MAdJ`|3m=dJMud$!I*obzH>C!Oio)G<^arVTN3?) z*!ha3#(Kx-$+q8Hhi{P)?85ntJ4b)_FulEL)Al!|?+yRSfsKuC2a?Y$-dMc7_;B&j zBK~-PBXn+Kkr`-=~v-N%c6E|ELjP&fa5K@|8uQmrI= literal 0 HcmV?d00001 diff --git a/service/server/tapcontroller_win.cpp b/service/server/tapcontroller_win.cpp index e30c20287..44e18165d 100644 --- a/service/server/tapcontroller_win.cpp +++ b/service/server/tapcontroller_win.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "tapcontroller_win.h" @@ -253,7 +254,14 @@ bool TapController::checkOpenVpn() QString TapController::getTapInstallPath() { #ifdef Q_OS_WIN - return qApp->applicationDirPath() + "\\tap\\"+ QSysInfo::currentCpuArchitecture() + "\\tapinstall.exe"; + + if (QOperatingSystemVersion::current() <= QOperatingSystemVersion::Windows7) { + return qApp->applicationDirPath() + "\\tap\\"+ QSysInfo::currentCpuArchitecture() + "_windows_7\\tapinstall.exe"; + } + else { + return qApp->applicationDirPath() + "\\tap\\"+ QSysInfo::currentCpuArchitecture() + "\\tapinstall.exe"; + } + // if (QSysInfo::currentCpuArchitecture() == "i386") { // return qApp->applicationDirPath() + "\\openvpn\\drivers_x32\\tapinstall.exe"; // } @@ -269,16 +277,21 @@ QString TapController::getOpenVpnPath() { #ifdef Q_OS_WIN //return qApp->applicationDirPath() + "\\openvpn\\"+ QSysInfo::currentCpuArchitecture() + "\\openvpn.exe"; - return qApp->applicationDirPath() + "\\openvpn\\i386\\openvpn.exe"; - //return qApp->applicationDirPath() + "\\openvpn\\bin\\openvpn.exe"; + return qApp->applicationDirPath() + "\\openvpn\\i386\\openvpn.exe"; #endif return ""; } QString TapController::getTapDriverDir() { - return qApp->applicationDirPath() + "\\tap\\"+ QSysInfo::currentCpuArchitecture() + "\\"; + if (QOperatingSystemVersion::current() <= QOperatingSystemVersion::Windows7) { + return qApp->applicationDirPath() + "\\tap\\"+ QSysInfo::currentCpuArchitecture() + "_windows_7\\"; + } + else { + return qApp->applicationDirPath() + "\\tap\\"+ QSysInfo::currentCpuArchitecture() + "\\"; + } + // if (QSysInfo::currentCpuArchitecture() == "i386") { // return qApp->applicationDirPath() + "\\openvpn\\drivers_x32\\"; @@ -312,7 +325,9 @@ bool TapController::removeDriver(const QString& tapInstanceId) bool TapController::setupDriver() { - //setupDriverCertificate(); + if (QOperatingSystemVersion::current() <= QOperatingSystemVersion::Windows7) { + setupDriverCertificate(); + } QStringList tapList = getTapList(); for (QString tap : tapList) {